From 403f08e473339858327d244f91e3a0a588b13b69 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 10 Aug 2018 08:51:03 -0230 Subject: [PATCH 001/126] Clang strikes again :) Fix minor warning from clang compiler. --- src/common/SoundSDL2.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index c9749e843..4f8e18ce2 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -66,7 +66,8 @@ SoundSDL2::SoundSDL2(OSystem& osystem, AudioSettings& audioSettings) desired.callback = callback; desired.userdata = static_cast(this); - myDevice = SDL_OpenAudioDevice(0, 0, &desired, &myHardwareSpec, SDL_AUDIO_ALLOW_FREQUENCY_CHANGE); + myDevice = SDL_OpenAudioDevice(nullptr, 0, &desired, &myHardwareSpec, + SDL_AUDIO_ALLOW_FREQUENCY_CHANGE); if(myDevice == 0) { From 1b14b82ab111114535245171bbe6f260f52e4595 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sat, 11 Aug 2018 13:17:47 -0230 Subject: [PATCH 002/126] Bump version number to 6.0 in various files, for upcoming release. The date is still a WIP. --- Announce.txt | 22 +++++++++++----------- debian/changelog | 7 +++++++ docs/debugger.html | 2 +- src/unix/stella.spec | 6 ++++-- src/windows/stella.rc | 8 ++++---- 5 files changed, 27 insertions(+), 18 deletions(-) diff --git a/Announce.txt b/Announce.txt index 191408bd2..d1b751477 100644 --- a/Announce.txt +++ b/Announce.txt @@ -9,7 +9,7 @@ SSSS ttt eeeee llll llll aaaaa =========================================================================== - Release 5.1.1 for Linux, MacOSX and Windows + Release 6.0 for Linux, MacOSX and Windows =========================================================================== The Atari 2600 Video Computer System (VCS), introduced in 1977, was the @@ -21,30 +21,30 @@ all of your favourite Atari 2600 games again! Stella was originally developed for Linux by Bradford W. Mott, however, it has been ported to a number of other platforms and is currently maintained by Stephen Anthony. -This is the 5.1.1 release of Stella for Linux, Mac OSX and Windows. The +This is the 6.0 release of Stella for Linux, Mac OSX and Windows. The distributions currently available are: * Binaries for Windows XP_SP3(*)/Vista/7/8/10 : - Stella-5.1.1-win32.exe (32-bit EXE installer) - Stella-5.1.1-x64.exe (64-bit EXE installer) - Stella-5.1.1-windows.zip (32/64 bit versions) + Stella-6.0-win32.exe (32-bit EXE installer) + Stella-6.0-x64.exe (64-bit EXE installer) + Stella-6.0-windows.zip (32/64 bit versions) (*) Note: Support for Windows XP is problematic on some systems, and will probably be discontinued in a future release. * Binary distribution for MacOS X 10.7 and above : - Stella-5.1.1-macosx.dmg (64-bit Intel) + Stella-6.0-macosx.dmg (64-bit Intel) * Binary distribution in 32-bit & 64-bit Ubuntu DEB format : - stella_5.1.1-1_i386.deb - stella_5.1.1-1_amd64.deb + stella_6.0-1_i386.deb + stella_6.0-1_amd64.deb * Binary distribution in 32-bit & 64-bit RPM format : - stella-5.1.1-2.i386.rpm - stella-5.1.1-2.x86_64.rpm + stella-6.0-2.i386.rpm + stella-6.0-2.x86_64.rpm * Source code distribution for all platforms : - stella-5.1.1-src.tar.xz + stella-6.0-src.tar.xz Distribution Site diff --git a/debian/changelog b/debian/changelog index c27055554..acbbb673c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +stella (6.0-1) stable; urgency=high + + * Version 6.0 release + + -- Stephen Anthony TODO + + stella (5.1.1-1) stable; urgency=high * Version 5.1.1 release diff --git a/docs/debugger.html b/docs/debugger.html index 9fb87cfe9..a0189a47e 100644 --- a/docs/debugger.html +++ b/docs/debugger.html @@ -6,7 +6,7 @@
Stella
-

Release 5.1.1

+

Release 6.0

Integrated Debugger

(a work in progress)


diff --git a/src/unix/stella.spec b/src/unix/stella.spec index 38ebec3b4..157bd88e6 100644 --- a/src/unix/stella.spec +++ b/src/unix/stella.spec @@ -1,5 +1,5 @@ %define name stella -%define version 5.1.1 +%define version 6.0 %define rel 1 %define enable_sound 1 @@ -59,7 +59,6 @@ export CXXFLAGS=$RPM_OPT_FLAGS %else --enable-shared \ %endif - --force-builtin-libpng \ --docdir=%{_docdir}/stella %make @@ -101,6 +100,9 @@ rm -rf $RPM_BUILD_DIR/%{name}-%{version} %_datadir/icons/large/%{name}.png %changelog +* TODO 2018 Stephen Anthony 6.0-1 +- Version 6.0 release + * Wed Feb 21 2018 Stephen Anthony 5.1.1-1 - Version 5.1.1 release diff --git a/src/windows/stella.rc b/src/windows/stella.rc index 4b5e223ed..5b1a7fe44 100755 --- a/src/windows/stella.rc +++ b/src/windows/stella.rc @@ -36,8 +36,8 @@ IDI_ICON ICON "stella.ico" // VS_VERSION_INFO VERSIONINFO - FILEVERSION 5,1,1,0 - PRODUCTVERSION 5,1,1,0 + FILEVERSION 6,0,0,0 + PRODUCTVERSION 6,0,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -55,12 +55,12 @@ BEGIN VALUE "Comments", "The multi-platform Atari 2600 emulator. Stella is released under the GPLv2." VALUE "CompanyName", "The Stella Team (https://stella-emu.github.io)" VALUE "FileDescription", "Stella" - VALUE "FileVersion", "5.1.1" + VALUE "FileVersion", "6.0" VALUE "InternalName", "Stella" VALUE "LegalCopyright", "Copyright (C) 1995-2018 The Stella Team" VALUE "OriginalFilename", "Stella.exe" VALUE "ProductName", "Stella" - VALUE "ProductVersion", "5.1.1" + VALUE "ProductVersion", "6.0" END END BLOCK "VarFileInfo" From 0ef07590378b807acea7195ea84666769734e823 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 11 Aug 2018 19:19:57 +0200 Subject: [PATCH 003/126] updated change log --- Changes.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Changes.txt b/Changes.txt index 9009860af..107129068 100644 --- a/Changes.txt +++ b/Changes.txt @@ -44,7 +44,7 @@ * Changes in 'Game Properties' dialog - 'Default' button now affects only current tab like in all other dialogs. - - 'Display' tab changes are now immediate. + - 'Display' and 'Console' tab changes are now immediate. - Fixed bug when selecting 'Auto-detect' format for 50Hz ROMs * Fixed bug in autodetecting Genesis controllers. @@ -61,6 +61,8 @@ * Fixed missing TV format update in frame stats dialog when switching display type. + * Fixed missing debug color update when switching display type. + * For UNIX systems: in the ROM launcher, when using symlinks use the symlink pathname instead of the underlying filesystem pathname. @@ -68,9 +70,11 @@ * Updated included PNG library to latest stable version. - * For better compatibility, the Windows 32-bit version does not requires SSE2 + * For better compatibility, the Windows 32-bit version does not require SSE2 anymore. + * Simplified first start, ROM path is now set by first played ROM. + -Have fun! From d786f83b8441f2a856c80ca81c0f1cd6e05664a4 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 11 Aug 2018 19:29:51 +0200 Subject: [PATCH 004/126] Updated doc for first start --- docs/graphics/rom_browser.png | Bin 3867 -> 0 bytes docs/graphics/select_romdir.png | Bin 3265 -> 0 bytes docs/index.html | 26 ++++++++++---------------- 3 files changed, 10 insertions(+), 16 deletions(-) delete mode 100644 docs/graphics/rom_browser.png delete mode 100644 docs/graphics/select_romdir.png diff --git a/docs/graphics/rom_browser.png b/docs/graphics/rom_browser.png deleted file mode 100644 index a1602ef1633379b8e0747dc874e34c12194a0803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3867 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 bb+iQIY&0w4H4bprzA0wMEsqr(b-DUailEIT diff --git a/docs/graphics/select_romdir.png b/docs/graphics/select_romdir.png deleted file mode 100644 index 1adfcd084ecb50ab4d8d642a1c221bcc7a44cb12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3265 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 diff --git a/docs/index.html b/docs/index.html index 7445bd288..f85763bb9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -549,16 +549,10 @@ 'ROM Launcher' mode:

-

If this is your first time starting Stella, you will be asked to select the - default ROM directory to use. This is where you have all your ROMs, - collected as described in the previous section. Several dialogs will be shown, similar - to the following:

- - - - - -
  
+

If this is your first time starting Stella, you may have to navigate to your ROMs. + The path of the first ROM you play automatically defines the default ROM path. You + can change it in the Configure Paths dialog. +

The browser should be self-explanatory. The 'Go Up' button moves to the parent folder (if it exists), and the 'Base Dir' button moves to the base directory where, @@ -570,7 +564,7 @@

At this point, you may want to set the locations for snapshots and other external paths. This is described in more detail in Advanced Configuration - Snapshot Settings and - Advanced Configuration - Config Paths. + Advanced Configuration - Configure Paths. These settings are optional, and can be left at the defaults if you won't be using snapshots in the ROM launcher.

@@ -2746,7 +2740,7 @@

-

Config Paths dialog:

+

Configure Paths dialog:

@@ -3079,7 +3073,7 @@

The location of the EEPROM files are configurable through the '-nvramdir' commandline argument and within the application itself - (see Advanced Configuration - Config Paths). + (see Advanced Configuration - Configure Paths). If the path for these files hasn't been set, the default location will depend on the version of Stella, as follows:

@@ -3424,7 +3418,7 @@ Ms Pac-Man (Stella extended codes):

The name of the cheat database file is configurable through the '-cheatfile' commandline argument and within the application itself - (see Advanced Configuration - Config Paths). If the + (see Advanced Configuration - Configure Paths). If the path for this file hasn't been set, the default filename will depend on the version of Stella, as follows:

@@ -3777,7 +3771,7 @@ Ms Pac-Man (Stella extended codes): -->

The name of the properties file is configurable through the '-propsfile' commandline argument and within the application itself - (see Advanced Configuration - Config Paths). If the + (see Advanced Configuration - Configure Paths). If the path for this file hasn't been set, the default filename will depend on the version of Stella, as follows:

@@ -3842,7 +3836,7 @@ Ms Pac-Man (Stella extended codes):

The name of the palette file is configurable through the '-palettefile' commandline argument and within the application itself - (see Advanced Configuration - Config Paths). If the + (see Advanced Configuration - Configure Paths). If the path for this file hasn't been set, the default filename will depend on the version of Stella, as follows:

From b94c042ed2d9322d97e29cee03194f0e2c895082 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 12 Aug 2018 14:18:31 +0200 Subject: [PATCH 005/126] fixes #346 --- src/debugger/gui/TiaOutputWidget.cxx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/debugger/gui/TiaOutputWidget.cxx b/src/debugger/gui/TiaOutputWidget.cxx index 033c7caa7..b7fce2c16 100644 --- a/src/debugger/gui/TiaOutputWidget.cxx +++ b/src/debugger/gui/TiaOutputWidget.cxx @@ -121,7 +121,11 @@ void TiaOutputWidget::handleCommand(CommandSender* sender, int cmd, int data, in ostringstream command; int lines = myClickY + ystart; if(instance().console().tia().isRendering()) + { lines -= instance().console().tia().scanlines(); + if(lines < 0) + lines += instance().console().tia().scanlinesLastFrame(); + } if(lines > 0) { command << "scanline #" << lines; From 867674c8fb71a3b791a92f78b5432ac94aa57577 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 12 Aug 2018 14:33:25 +0200 Subject: [PATCH 006/126] updated docs for #346 enhancement --- Changes.txt | 2 ++ docs/debugger.html | 7 ++----- src/debugger/gui/TiaOutputWidget.cxx | 11 ++++------- 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Changes.txt b/Changes.txt index 107129068..30c463ed8 100644 --- a/Changes.txt +++ b/Changes.txt @@ -63,6 +63,8 @@ * Fixed missing debug color update when switching display type. + * 'Fill to scanline' now works for scanlines above current scanline too + * For UNIX systems: in the ROM launcher, when using symlinks use the symlink pathname instead of the underlying filesystem pathname. diff --git a/docs/debugger.html b/docs/debugger.html index a0189a47e..b8e3e88f0 100644 --- a/docs/debugger.html +++ b/docs/debugger.html @@ -1089,11 +1089,8 @@ as illustrated:

The options are as follows:

    -
  • Fill to scanline: If you've already started a partial frame - draw (ie, the frame is already partially 'greyed' out), selecting this - option will draw all scanlines up to the vertical position where the - mouse was clicked. Note that if you weren't in partial-frame mode, - this option will have no effect.
  • +
  • Fill to scanline: This option will draw all scanlines up to the + vertical position where the mouse was clicked.
  • Toggle breakpoint: Will toggle a conditional breakpoint at the scanline where the mouse was clicked. You can also use the Prompt Tab commands to list and turn off the breakpoint.
  • diff --git a/src/debugger/gui/TiaOutputWidget.cxx b/src/debugger/gui/TiaOutputWidget.cxx index b7fce2c16..2cefc2abf 100644 --- a/src/debugger/gui/TiaOutputWidget.cxx +++ b/src/debugger/gui/TiaOutputWidget.cxx @@ -119,13 +119,10 @@ void TiaOutputWidget::handleCommand(CommandSender* sender, int cmd, int data, in if(rmb == "scanline") { ostringstream command; - int lines = myClickY + ystart; - if(instance().console().tia().isRendering()) - { - lines -= instance().console().tia().scanlines(); - if(lines < 0) - lines += instance().console().tia().scanlinesLastFrame(); - } + int lines = myClickY + ystart - instance().console().tia().scanlines(); + + if(lines < 0) + lines += instance().console().tia().scanlinesLastFrame(); if(lines > 0) { command << "scanline #" << lines; From 1fe5cd2b3f375ab5293d18c2000eeaee284e4523 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 12 Aug 2018 22:48:35 +0200 Subject: [PATCH 007/126] removed non implemented method --- src/emucore/tia/frame-manager/FrameManager.hxx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/emucore/tia/frame-manager/FrameManager.hxx b/src/emucore/tia/frame-manager/FrameManager.hxx index 2f6a156af..5646c0b93 100644 --- a/src/emucore/tia/frame-manager/FrameManager.hxx +++ b/src/emucore/tia/frame-manager/FrameManager.hxx @@ -77,9 +77,7 @@ class FrameManager: public AbstractFrameManager { private: - void updateAutodetectedLayout(); - - void setState(State state); + void setState(State state); void updateIsRendering(); From 4bc3373b374094bd4bc8f1dfe0318b4ac2f13c83 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 12 Aug 2018 23:01:43 +0200 Subject: [PATCH 008/126] made UI theme change immediate --- src/emucore/FrameBuffer.cxx | 24 +++++++++++++++--------- src/emucore/FrameBuffer.hxx | 5 +++++ src/gui/UIDialog.cxx | 11 ++--------- 3 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index bde56ac69..8f38da0fe 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -131,14 +131,27 @@ bool FrameBuffer::initialize() VarList::push_back(myTIAZoomLevels, desc.str(), zoom); } - // Set palette for GUI (upper area of array, doesn't change during execution) + setUIPalette(); + + myGrabMouse = myOSystem.settings().getBool("grabmouse"); + + // Create a TIA surface; we need it for rendering TIA images + myTIASurface = make_unique(myOSystem); + + return true; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void FrameBuffer::setUIPalette() +{ + // Set palette for GUI (upper area of array) int palID = 0; if(myOSystem.settings().getString("uipalette") == "classic") palID = 1; else if(myOSystem.settings().getString("uipalette") == "light") palID = 2; - for(uInt32 i = 0, j = 256; i < kNumColors-256; ++i, ++j) + for(uInt32 i = 0, j = 256; i < kNumColors - 256; ++i, ++j) { uInt8 r = (ourGUIColors[palID][i] >> 16) & 0xff; uInt8 g = (ourGUIColors[palID][i] >> 8) & 0xff; @@ -147,13 +160,6 @@ bool FrameBuffer::initialize() myPalette[j] = mapRGB(r, g, b); } FBSurface::setPalette(myPalette); - - myGrabMouse = myOSystem.settings().getBool("grabmouse"); - - // Create a TIA surface; we need it for rendering TIA images - myTIASurface = make_unique(myOSystem); - - return true; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/FrameBuffer.hxx b/src/emucore/FrameBuffer.hxx index bd91d890a..6f559c739 100644 --- a/src/emucore/FrameBuffer.hxx +++ b/src/emucore/FrameBuffer.hxx @@ -99,6 +99,11 @@ class FrameBuffer */ bool initialize(); + /** + Set palette for user interface + */ + void setUIPalette(); + /** (Re)creates the framebuffer display. This must be called before any calls are made to derived methods. diff --git a/src/gui/UIDialog.cxx b/src/gui/UIDialog.cxx index c4bd59cae..4c3551f9d 100644 --- a/src/gui/UIDialog.cxx +++ b/src/gui/UIDialog.cxx @@ -74,7 +74,7 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, VarList::push_back(items, "Classic", "classic"); VarList::push_back(items, "Light", "light"); myPalettePopup = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight, - items, "Theme (*) ", lwidth); + items, "Theme ", lwidth); wid.push_back(myPalettePopup); ypos += lineHeight + 4 * 4; @@ -99,14 +99,6 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, myWheelLinesPopup->setTickmarkInterval(3); wid.push_back(myWheelLinesPopup); - // Add message concerning usage - xpos = HBORDER; - ypos = myTab->getHeight() - 5 - fontHeight - ifont.getFontHeight() - 10; - lwidth = ifont.getStringWidth("(*) Requires application restart"); - new StaticTextWidget(myTab, ifont, xpos, ypos, std::min(lwidth, _w-20), fontHeight, - "(*) Requires application restart", - TextAlign::Left); - // Add items for tab 0 addToFocusList(wid, myTab, tabID); @@ -247,6 +239,7 @@ void UIDialog::saveConfig() // UI palette instance().settings().setValue("uipalette", myPalettePopup->getSelectedTag().toString()); + instance().frameBuffer().setUIPalette(); // Listwidget quick delay instance().settings().setValue("listdelay", myListDelayPopup->getValue()); From c5662563733b148c4f3b463c0468dd69708731ca Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 13 Aug 2018 13:12:29 +0200 Subject: [PATCH 009/126] display auto-detected values in GameInfoDialog --- src/gui/GameInfoDialog.cxx | 53 ++++++++++++++++++++++++++++++++++++-- src/gui/GameInfoDialog.hxx | 4 +++ 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 11675dd39..a124987cf 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -123,6 +123,11 @@ GameInfoDialog::GameInfoDialog( wid.push_back(myType); ypos += lineHeight + VGAP; + myTypeDetected = new StaticTextWidget(myTab, ifont, xpos+lwidth, ypos, + "( CM (SpectraVideo CompuMate) detected)"); + wid.push_back(myTypeDetected); + ypos += ifont.getLineHeight() + VGAP/2; + mySound = new CheckboxWidget(myTab, font, xpos, ypos + 1, "Stereo sound"); wid.push_back(mySound); @@ -294,9 +299,12 @@ GameInfoDialog::GameInfoDialog( pwidth, lineHeight, items, "", 0, 0); wid.push_back(myFormat); + myFormatDetected = new StaticTextWidget(myTab, ifont, myFormat->getRight() + 4, ypos + 4, "(SECAM60* detected"); + wid.push_back(myFormatDetected); + ypos += lineHeight + VGAP; swidth = myFormat->getWidth(); - t = new StaticTextWidget(myTab, font, HBORDER, ypos+1, "Y-Start "); + t = new StaticTextWidget(myTab, font, HBORDER, ypos+2, "Y-Start "); myYStart = new SliderWidget(myTab, font, t->getRight(), ypos, swidth, lineHeight, "", 0, kYStartChanged, 4 * fontWidth, "px"); myYStart->setMinValue(TIAConstants::minYStart-1); @@ -304,8 +312,11 @@ GameInfoDialog::GameInfoDialog( myYStart->setTickmarkInterval(4); wid.push_back(myYStart); + myYStartDetected = new StaticTextWidget(myTab, ifont, myYStart->getRight() + 4, ypos + 5, " (100px detected)"); + wid.push_back(myYStartDetected); + ypos += lineHeight + VGAP; - t = new StaticTextWidget(myTab, font, HBORDER, ypos+1, "Height "); + t = new StaticTextWidget(myTab, font, HBORDER, ypos+2, "Height "); myHeight = new SliderWidget(myTab, font, t->getRight(), ypos, swidth, lineHeight, "", 0, kHeightChanged, 5 * fontWidth, "px"); myHeight->setMinValue(TIAConstants::minViewableHeight-1); @@ -313,6 +324,10 @@ GameInfoDialog::GameInfoDialog( myHeight->setTickmarkInterval(4); wid.push_back(myHeight); + myHeightDetected = new StaticTextWidget(myTab, ifont, myHeight->getRight() + 4, ypos + 5, "(100px detected)"); + wid.push_back(myYStartDetected); + + // Phosphor ypos += lineHeight + VGAP*4; myPhosphor = new CheckboxWidget(myTab, font, HBORDER, ypos+1, "Phosphor", kPhosphorChanged); @@ -369,6 +384,15 @@ void GameInfoDialog::loadCartridgeProperties(Properties properties) myNote->setText(properties.get(Cartridge_Note)); mySound->setState(properties.get(Cartridge_Sound) == "STEREO"); myType->setSelected(properties.get(Cartridge_Type), "AUTO"); + + if(instance().hasConsole() && myType->getSelectedTag().toString() == "AUTO") + { + stringstream ss; + ss << "(" << instance().console().about().BankSwitch << "detected)"; + myTypeDetected->setLabel(ss.str()); + } + else + myTypeDetected->setLabel(""); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -421,17 +445,42 @@ void GameInfoDialog::loadControllerProperties(Properties properties) void GameInfoDialog::loadDisplayProperties(Properties properties) { myFormat->setSelected(properties.get(Display_Format), "AUTO"); + if(instance().hasConsole() && myFormat->getSelectedTag().toString() == "AUTO") + { + const string& format = instance().console().about().DisplayFormat; + string label = format.substr(0, format.length() - 1); + myFormatDetected->setLabel("(" + label + " detected)"); + } + else + myFormatDetected->setLabel(""); const string& ystart = properties.get(Display_YStart); myYStart->setValue(atoi(ystart.c_str())); myYStart->setValueLabel(ystart == "0" ? "Auto" : ystart); myYStart->setValueUnit(ystart == "0" ? "" : "px"); + if(instance().hasConsole() && ystart == "0") + { + stringstream ss; + ss << " (" << instance().console().tia().ystart() << "px detected)"; + myYStartDetected->setLabel(ss.str()); + } + else + myYStartDetected->setLabel(""); const string& height = properties.get(Display_Height); myHeight->setValue(atoi(height.c_str())); myHeight->setValueLabel(height == "0" ? "Auto" : height); myHeight->setValueUnit(height == "0" ? "" : "px"); + if(instance().hasConsole() && height == "0") + { + stringstream ss; + ss << "(" << instance().console().tia().height() << "px detected)"; + myHeightDetected->setLabel(ss.str()); + } + else + myHeightDetected->setLabel(""); + bool usePhosphor = properties.get(Display_Phosphor) == "YES"; myPhosphor->setState(usePhosphor); myPPBlend->setEnabled(usePhosphor); diff --git a/src/gui/GameInfoDialog.hxx b/src/gui/GameInfoDialog.hxx index 7aac97666..bce9d86d5 100644 --- a/src/gui/GameInfoDialog.hxx +++ b/src/gui/GameInfoDialog.hxx @@ -68,6 +68,7 @@ class GameInfoDialog : public Dialog, public CommandSender EditTextWidget* myRarity; EditTextWidget* myNote; PopUpWidget* myType; + StaticTextWidget* myTypeDetected; CheckboxWidget* mySound; // Console properties @@ -92,8 +93,11 @@ class GameInfoDialog : public Dialog, public CommandSender // Display properties PopUpWidget* myFormat; + StaticTextWidget* myFormatDetected; SliderWidget* myYStart; + StaticTextWidget* myYStartDetected; SliderWidget* myHeight; + StaticTextWidget* myHeightDetected; CheckboxWidget* myPhosphor; SliderWidget* myPPBlend; From 9082eefd62236d5efebc54d429f294f8201e5aae Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 13 Aug 2018 15:45:28 +0200 Subject: [PATCH 010/126] minor polishing to auto-detected value display --- src/gui/GameInfoDialog.cxx | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index a124987cf..8ac2a151a 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -124,7 +124,7 @@ GameInfoDialog::GameInfoDialog( ypos += lineHeight + VGAP; myTypeDetected = new StaticTextWidget(myTab, ifont, xpos+lwidth, ypos, - "( CM (SpectraVideo CompuMate) detected)"); + "(CM (SpectraVideo CompuMate) detected)"); wid.push_back(myTypeDetected); ypos += ifont.getLineHeight() + VGAP/2; @@ -299,32 +299,33 @@ GameInfoDialog::GameInfoDialog( pwidth, lineHeight, items, "", 0, 0); wid.push_back(myFormat); - myFormatDetected = new StaticTextWidget(myTab, ifont, myFormat->getRight() + 4, ypos + 4, "(SECAM60* detected"); + myFormatDetected = new StaticTextWidget(myTab, ifont, myFormat->getRight() + 8, ypos + 4, "SECAM60 detected"); wid.push_back(myFormatDetected); ypos += lineHeight + VGAP; swidth = myFormat->getWidth(); t = new StaticTextWidget(myTab, font, HBORDER, ypos+2, "Y-Start "); myYStart = new SliderWidget(myTab, font, t->getRight(), ypos, swidth, lineHeight, - "", 0, kYStartChanged, 4 * fontWidth, "px"); + " ", 0, kYStartChanged, 5 * fontWidth, "px"); myYStart->setMinValue(TIAConstants::minYStart-1); myYStart->setMaxValue(TIAConstants::maxYStart); myYStart->setTickmarkInterval(4); wid.push_back(myYStart); - myYStartDetected = new StaticTextWidget(myTab, ifont, myYStart->getRight() + 4, ypos + 5, " (100px detected)"); + int iWidth = ifont.getCharWidth('2'); + myYStartDetected = new StaticTextWidget(myTab, ifont, myYStart->getRight() + 8 + iWidth, ypos + 5, "100px detected"); wid.push_back(myYStartDetected); ypos += lineHeight + VGAP; t = new StaticTextWidget(myTab, font, HBORDER, ypos+2, "Height "); myHeight = new SliderWidget(myTab, font, t->getRight(), ypos, swidth, lineHeight, - "", 0, kHeightChanged, 5 * fontWidth, "px"); + " ", 0, kHeightChanged, 5 * fontWidth, "px"); myHeight->setMinValue(TIAConstants::minViewableHeight-1); myHeight->setMaxValue(TIAConstants::maxViewableHeight); myHeight->setTickmarkInterval(4); wid.push_back(myHeight); - myHeightDetected = new StaticTextWidget(myTab, ifont, myHeight->getRight() + 4, ypos + 5, "(100px detected)"); + myHeightDetected = new StaticTextWidget(myTab, ifont, myHeight->getRight() + 8, ypos + 5, "100px detected"); wid.push_back(myYStartDetected); @@ -387,9 +388,12 @@ void GameInfoDialog::loadCartridgeProperties(Properties properties) if(instance().hasConsole() && myType->getSelectedTag().toString() == "AUTO") { - stringstream ss; - ss << "(" << instance().console().about().BankSwitch << "detected)"; - myTypeDetected->setLabel(ss.str()); + string bs = instance().console().about().BankSwitch; + int pos = bs.find_first_of('*'); + // remove '*': + if (pos != string::npos) + bs = bs.substr(0, pos) + bs.substr(pos+1); + myTypeDetected->setLabel(bs + "detected"); } else myTypeDetected->setLabel(""); @@ -449,7 +453,7 @@ void GameInfoDialog::loadDisplayProperties(Properties properties) { const string& format = instance().console().about().DisplayFormat; string label = format.substr(0, format.length() - 1); - myFormatDetected->setLabel("(" + label + " detected)"); + myFormatDetected->setLabel(label + " detected"); } else myFormatDetected->setLabel(""); @@ -461,7 +465,7 @@ void GameInfoDialog::loadDisplayProperties(Properties properties) if(instance().hasConsole() && ystart == "0") { stringstream ss; - ss << " (" << instance().console().tia().ystart() << "px detected)"; + ss << instance().console().tia().ystart() << "px detected"; myYStartDetected->setLabel(ss.str()); } else @@ -475,7 +479,7 @@ void GameInfoDialog::loadDisplayProperties(Properties properties) if(instance().hasConsole() && height == "0") { stringstream ss; - ss << "(" << instance().console().tia().height() << "px detected)"; + ss << instance().console().tia().height() << "px detected"; myHeightDetected->setLabel(ss.str()); } else From f03af75c2c9fb6222f6fc07e297b66201a28746b Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 15 Aug 2018 14:46:37 +0200 Subject: [PATCH 011/126] renamed 'Frame stats' into 'Console info overlay' --- docs/index.html | 2 +- src/gui/DeveloperDialog.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.html b/docs/index.html index f85763bb9..a01b40c5b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3124,7 +3124,7 @@
- + diff --git a/src/gui/DeveloperDialog.cxx b/src/gui/DeveloperDialog.cxx index 4b65f37d3..96960407e 100644 --- a/src/gui/DeveloperDialog.cxx +++ b/src/gui/DeveloperDialog.cxx @@ -98,7 +98,7 @@ void DeveloperDialog::addEmulationTab(const GUI::Font& font) wid.push_back(r); ypos += lineHeight + VGAP * 1; - myFrameStatsWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 1, ypos + 1, "Frame statistics"); + myFrameStatsWidget = new CheckboxWidget(myTab, font, HBORDER + INDENT * 1, ypos + 1, "Console info overlay"); wid.push_back(myFrameStatsWidget); ypos += lineHeight + VGAP; From 9ec6b0816d88c0295d3105ba78d06b939f1e4ecf Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 15 Aug 2018 15:28:09 +0200 Subject: [PATCH 012/126] fixed #351 --- src/emucore/Settings.cxx | 4 ++-- src/gui/DeveloperDialog.cxx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index 6c9700e17..be2cb7ed6 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -153,8 +153,8 @@ Settings::Settings(OSystem& osystem) // player settings setInternal("plr.stats", "false"); setInternal("plr.bankrandom", "false"); - setInternal("plr.ramrandom", "false"); - setInternal("plr.cpurandom", ""); + setInternal("plr.ramrandom", "true"); + setInternal("plr.cpurandom", "AXYP"); setInternal("plr.colorloss", "false"); setInternal("plr.tv.jitter", "true"); setInternal("plr.tv.jitter_recovery", "10"); diff --git a/src/gui/DeveloperDialog.cxx b/src/gui/DeveloperDialog.cxx index 96960407e..fab68e496 100644 --- a/src/gui/DeveloperDialog.cxx +++ b/src/gui/DeveloperDialog.cxx @@ -739,8 +739,8 @@ void DeveloperDialog::setDefaults() myConsole[set] = 0; // Randomization myRandomBank[set] = devSettings ? true : false; - myRandomizeRAM[set] = devSettings ? true : false; - myRandomizeCPU[set] = devSettings ? "SAXYP" : ""; + myRandomizeRAM[set] = true; + myRandomizeCPU[set] = devSettings ? "SAXYP" : "AXYP"; // Undriven TIA pins myUndrivenPins[set] = devSettings ? true : false; // Thumb ARM emulation exception From c2ce29ed78f883e971b8bdd9b7feeca5f38b8e2b Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 15 Aug 2018 12:25:57 -0230 Subject: [PATCH 013/126] Fix minor warning from clang. --- src/gui/GameInfoDialog.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 8ac2a151a..bad62b175 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -389,7 +389,7 @@ void GameInfoDialog::loadCartridgeProperties(Properties properties) if(instance().hasConsole() && myType->getSelectedTag().toString() == "AUTO") { string bs = instance().console().about().BankSwitch; - int pos = bs.find_first_of('*'); + size_t pos = bs.find_first_of('*'); // remove '*': if (pos != string::npos) bs = bs.substr(0, pos) + bs.substr(pos+1); From 31acc92bbece114617e1aa66cd4c74bd1f93f6f9 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 15 Aug 2018 13:33:08 -0230 Subject: [PATCH 014/126] Fix crashes when changing toggling fullscreen/windowed mode. - Only allow such changes when in emulation mode, or a few other common ones (launcher, debugger) The idea is here that some dialogs have to be resized/repositioned when such a mode change occurs, and the UI core doesn't currently support that. - Only render surfaces when they are visible (sounds logical enough, but the code didn't check for it). --- src/emucore/FrameBuffer.cxx | 16 ++++++++++++++++ src/gui/Dialog.cxx | 11 ++++------- src/gui/Rect.hxx | 13 +++++-------- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index 8f38da0fe..4ae7a57fd 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -652,6 +652,22 @@ void FrameBuffer::stateChanged(EventHandlerState state) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FrameBuffer::setFullscreen(bool enable) { + // Switching between fullscreen and windowed modes will invariably mean + // that the 'window' resolution changes. Currently, dialogs are not + // able to resize themselves when they are actively being shown + // (they would have to be closed and then re-opened, etc). + // For now, we simply disallow screen switches in such modes + switch(myOSystem.eventHandler().state()) + { + case EventHandlerState::EMULATION: + case EventHandlerState::LAUNCHER: + case EventHandlerState::DEBUGGER: + case EventHandlerState::PAUSE: + break; // continue with processing (aka, allow a mode switch) + default: + return; + } + const VideoMode& mode = getSavedVidMode(enable); if(setVideoMode(myScreenTitle, mode)) { diff --git a/src/gui/Dialog.cxx b/src/gui/Dialog.cxx index 4f3ffd074..95abfeae3 100644 --- a/src/gui/Dialog.cxx +++ b/src/gui/Dialog.cxx @@ -143,18 +143,15 @@ void Dialog::setTitle(const string& title) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Dialog::center() { - if(_surface) - { - const GUI::Size& screen = instance().frameBuffer().screenSize(); - const GUI::Rect& dst = _surface->dstRect(); - _surface->setDstPos((screen.w - dst.width()) >> 1, (screen.h - dst.height()) >> 1); - } + const GUI::Size& screen = instance().frameBuffer().screenSize(); + const GUI::Rect& dst = _surface->dstRect(); + _surface->setDstPos((screen.w - dst.width()) >> 1, (screen.h - dst.height()) >> 1); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool Dialog::render() { - if(!_dirty) + if(!_dirty || !isVisible()) return false; // Draw this dialog diff --git a/src/gui/Rect.hxx b/src/gui/Rect.hxx index 8336e36ce..03dc4729b 100644 --- a/src/gui/Rect.hxx +++ b/src/gui/Rect.hxx @@ -110,15 +110,12 @@ struct Rect uInt32 top, left; //!< The point at the top left of the rectangle (part of the rect). uInt32 bottom, right; //!< The point at the bottom right of the rectangle (not part of the rect). - Rect() : top(0), left(0), bottom(0), right(0) { } - Rect(const Rect& s) : top(s.top), left(s.left), bottom(s.bottom), right(s.right) { } + Rect() : top(0), left(0), bottom(0), right(0) { assert(valid()); } + Rect(const Rect& s) : top(s.top), left(s.left), bottom(s.bottom), right(s.right) { assert(valid()); } Rect& operator=(const Rect&) = default; - Rect(uInt32 w, uInt32 h) : top(0), left(0), bottom(h), right(w) { } - Rect(const Point& p, uInt32 w, uInt32 h) : top(p.y), left(p.x), bottom(h), right(w) { } - Rect(uInt32 x1, uInt32 y1, uInt32 x2, uInt32 y2) : top(y1), left(x1), bottom(y2), right(x2) - { - assert(valid()); - } + Rect(uInt32 w, uInt32 h) : top(0), left(0), bottom(h), right(w) { assert(valid()); } + Rect(const Point& p, uInt32 w, uInt32 h) : top(p.y), left(p.x), bottom(h), right(w) { assert(valid()); } + Rect(uInt32 x1, uInt32 y1, uInt32 x2, uInt32 y2) : top(y1), left(x1), bottom(y2), right(x2) { assert(valid()); } uInt32 x() const { return left; } uInt32 y() const { return top; } From 77c8da55f369af36a7c926dc881cbcb800e14ab4 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 16 Aug 2018 19:20:14 +0200 Subject: [PATCH 015/126] fixed UI dialog defaults updated UI dialog docs --- docs/graphics/options_misc.png | Bin 3776 -> 3603 bytes docs/graphics/options_misc_classic.png | Bin 3755 -> 3763 bytes docs/graphics/options_misc_light.png | Bin 3741 -> 3592 bytes docs/graphics/options_ui.png | Bin 4226 -> 4707 bytes docs/index.html | 24 ++++++++++++------------ src/gui/UIDialog.cxx | 14 ++++++-------- 6 files changed, 18 insertions(+), 20 deletions(-) diff --git a/docs/graphics/options_misc.png b/docs/graphics/options_misc.png index 6587791346388d059e961622e411478ca7958d5f..f8ecbffb92d45e7cfd2629441c44eb4c62e6988b 100644 GIT binary patch literal 3603 zcmeHJiC5Fd7LFFGkgyatKp;{pC`eGYCInCjJ0%e$?7OTI!jeEhqfulN8?a$j5)hG9 zWEC)q^noHEC5fo)JA@x8J5dA)@KXEU>Fay%FX-u>_&ErtT?Bgz6Hp~ffhXLE1RC2KgFrQDV1bV)2=o=` z+z$?BLOduas6t1&0|YAk(WkSDJj^ayUSd`%RjK)pJle4Jdkuwh`%m%_?8Cw=*-bLkx4i&cpFmcmxeD8@mN4JM26)Tvq zCYaQy8`1N*j5>Cq6cUJ4ZhRUCJ>khgG?sHis}s2A&5=B_fpx>jO?!P-)hZsGXGNLa zoHh=WOGI1L1vCuDq4i9wT-V}sSpFp+LrP7QTq_*v-ySb;h-8Y}DWXn=6h%NzcY3#D zx!7Pv$)lO)ueA%y#I+oQEK>YA_idH@a5p}ZVamzYBGf1jTGGEGQ^qrcwQ>0T^w0Xl zQ~-ceHX1X=_aG>TXBDIvQw0Qr&JBtP_{)lzYC)fasw}pyt!PGU61IUQM!!n+AG8bY zusZ3utsiB`xPG3y=EFJ(p0-nYRzmq?h@_PcI&lZl0d>SXrx9YMvHyYvH1 zs|bl!=dzyNLn2vs2yOSX3}*Xd-kLkr9C=P2HwG>}T2=t~x05t*`<%@IZzZ_Xx7Y%B zed_~ST7%Gu*iaz*!k2*m&8U#)XyDT}v0Jg}8lNKduSfek+f@FTfcx{+T$*~!5HP&` zw$90i#Ef4=P@qN&7+K6Drb{)SFUF3>k3l*F69l6vUx3U~T}HI?33-IAp&gVZP>_XdhR?ayt29Wap*@?I%+#-u_xyO^krQmd_`(jJf5RE)6e6ioGCg!`$cT>>yyIPNNHXx<^UjgY)0?SDr)D4Hu z$d`Zo1iDFy@JtxtegH#MoZypWjKAO0V)aEPI*G|lA*X9gq1va#Lx7`z-YLU}>UmFU znN0EL?PZ$(NbNk}$m&}7&gvbLc~+t1ghg3UXKDq_31PQ7kTpkF_jmTiSDN5|(mOTZ zLV}CYRvlVj#FPl!D+oQ%u3r+-yfiaR>D07iAu(aW<_F(X%s09FX$963YBkX~oB3pQzG!VDH@J(Wn zZo$;}X6*YzpLMrgB(!F{P1WPlLXTx<<>ZRT^ZO@c{emRR3$t37lgieE8969(r2Wkn zFcwqDLO;Ii(x+optUFUY$z$>HgH%%=NOPcKXtJj*AjtgzA5H^2c#svkS8IqqWgUO@ z^v->LZl>2S1V*~ypURD}Jbg);zyavn=51Z(Ao5tutNBxc?~!^e`c)^saztQ;#}+Ly%hvahFVYpQC)v%`3d=E0de0PJvJR7viDuFBGP(b;ydE}q#V%K%3cbGo(J z9?>7=yXWQ8Nixs6j!z9g43Zsl6I||#{$A)QO|EWfI`5B_KFRQl+Jn8BA?yZ}p?jzfU7JT-v7<5KZkw-W)~Y z2S%d%(|)BU*gDrlHt#iYpl9$cezP@E$WByc@LT*ceFF{&u8a#N&V2JcX}I>;LN%1( z>l3fBhQy$@X>VN8e~R4ZV89J3ak?Q*=jHRtBXzpe+NNPKS%fj)g0VETRz{mq6@1)1 z+1gfZI&C=Rh-r{-fs29_K$h;VwLZ-R=S{iK;*s+fs&az~3wB+EQMPuS?lhN_mK z>}2iCLF}Af-qeVhrN8^XY5VJfFE^lZ@$3zWKSfx^pm-*aOd|U;VJ-OUb{zOllpH1k z-}m&|4k01t-+r)4dre;Ba;KYI%n)mn@I0y!bvk{li6PU~&9BZj0ibaD3Y*%T>|J3*| fEe@h(bz|eq&89)9i&{_XZymao8QQec#5?YvCQYoe literal 3776 zcmeHKdpHy7A0I-w9C8=ZPEn^dQXz6}If_FnEY#$(D6}#%n_D{SJ z&XRksv0*MH%q5wzX_%eW@0{oN$M3J-zvnsc^L(H8eLvs#`99D0^M1eI_xs*)b9Gdd z+aU)402EK1JaHBPkbsIsWvi4Ji9=uJi6;rq091ghdcja1y(KUF)t|LYVjZ7^18RgATB~Z{`=rW5ODSIa7+0+MPs86O(mx9tZtJfJO~Sl~jyA?MZw8 zWs2@KWP?~F833s}G*JWBxq>;upy7Hzas0DN4WLivz2K5$JE+YG(9IJLY!z(hEn`-o zZM~KjZEmUVb`O@~U+_p1>|43?7HQWC3agk}8jj`YaMOXQq%W1~&h?Dn-5K8Yq{(JX z^-xhav;TbtiHG8qlHY#r=bp>qSX#+Olv9gP`JMN-wAC7|tI;gGd%17QENTw;(97Us z3%8-FeU6awQfIgJ;_7=LxnxVPuDgBm2IoWezjc~P9pgS$Z*KPn-5wbH{TPEbyh-=M zh7RqYuJ4(KcQac99NN_EgS0hrT*HRiLmH>+h?R+B6n$R>657S%7#$nkoA{fUUq9;E zj)kyw5@q6DyT|q6PWE+ttQ5 z9&OX%ie9;IU`SjKksf2SfI1*I{4>`StGMmo%t_Eu0WWF z0$Z(ZPPNWVUbd!028b;xo5D9}1zk>JQ~GxliKQP#eQ0v{jvTWHFa$gD=>hf~)(EaO zx3j{au_umBG_E-~8--3|Ro<8}4^%fs2(YBL#B<(b%X$U=28Ge;s+Wt?&Rq`$8-NL8 z$<_6JL=~X(@KZ$fY6Q%>Sm{nR$?9EQ!JceM0oBPlH286%A4m_5oGn?3gyj{EiQvB! zrm_F1+K7Z{D#6h-tbi1s$0Xl^ne>3Lh}BiuRs-=ue_c1>4>lkk;rIPo#9Ar=DkO85 zBB^-xNddm=lj`J|)W*^IjjBtfxCYe=Qf!a~VbZ?Vols0x zh=+b#h^4f(GTXFaHiBlkmSLdeI$o4hw>Jr))9RUQhB65H-G#19cA3CJE%IgC&J^cg zGJVFhdD!H%^#Fl!={HZ(QsVtXSjw#YA4hgzM#y~3~%zTQia9e+T7vb%RS?IgtFNi5+xOdaY! z*_Y&cXrfibCe}SPW zJyCJo#joR2s|perKG|<{KC~|g0)1T*$8gqdxRHCH;j4{L3Jq1~!KYT6G$xc@o%R30 zHI7fKNpIlhdeWM8CiPpn>2(>vT-ifa&kTGz2E!K#7M#e>9m1O$vn`=*LD@0j0J3x0 z-E!XMp{%OK2L%lBr50j6&QULCUkF97GK^^CrQ zKG*%Nncdtz_5gma#^Ivivz{K38!L=RXI5FhvzgQ-4%(`%4PqaucB3CnqC|raB7N`y z-Q3}25BW1$78~a~k436Xbg6ZQ-NwwX7D2k;1`xI8I30giDW!zDP^`d^pK!4qhmPJajNRd%sl5I?PFe?+H~m(+ zDW5R+&oqBkM^_03PB{?@R{weYe(bzWyCcjcA`P~3w zif2nlmXVHvFhO6I_G=nK87YyM$x0(`ZZ$R^B5wf0Y6aJZ28VB?LTOss6ID%hqd%`A~WSIitOac*8XjmlE0+nL?sSfJGVK3&u5XcPvlS#hZ&WW+&d zL*dM<{o}Szu)_~O6?!g4Yk4;>z)H&LcqkBugDRTrFh+I8+c;fm8ibT4v1nbI?nn8S zGC&ZdWa%E%!0EUSr-a#DuRWEPvA<_#X$uxKA>aV$1JBoYf^G&8% zG(0hTh~u5UXy58K5dh;QT+z~mn4(o);%_uC!!1+?LUv}REF^2C$x_z}sfAWBQ2A}; z3iH@@;Tte)dH-5j*Q5t7)vFJs0$zDm;h78}LyYc`fu=DNDgC`xjM0grPVkmZ z4JNY9!595wJ}L~Pwkfk!O#1buJ39tIwQ~PkQ*J{=QQqM{>34!_A9ve|q|{{|FrrUx Sx%llnamvB^ZU1bbZ#3#*XOq zLsT@WVA@n~9ag@FD4!`hZD0IyZtIZsXS)RhwaTBXH+#$d6Vn9? zvOJ}==yp8f=xO5pCl@sCn)s?{`4k@!eLQ0-4q><2GmNC8Gif`K`x_^f-l%P|y3T!L zas$R*mHUaVClj4{3qM;#i=0?xPBzR~dvd0KLH($ElJ8XJ2X}s`4N?MK1I@-Ub*HU8 zqk0*~Pxx>Ld7R$cyhd(u!%h$Qbrrrcp>9Y;;|Yhr@Z|uNv_QA=YfQzB2I74kG1lg_ zeFJJ5-+L>#EU%`@)nHOd>WQ-)v?AkYN5sjuJwWTX=E5lkXGy#uZhVlu`k_L#^e}j-_MZoMNJ$ z1L|uQF#}y3y#8*Fixv7%3#(u;e~+x~xNU+2l8N)bL<&1s#o^KI@65y=M~P^ZBJYZD zVsZ$Ua=lsSuXB<=g*d_d6%#XYK?Ns(;8Tb+A^nCw@?;PYNrD!f`~9e`yK_UsYj=sd zn8nB3qQ_jNIm9pns2-WRH?$@q?H_SjvgbsqwX-GYx5 ziF<2#0?#0{-E-TB2MdySv1*YuG?_Tw7>eMI{uGLwK-I%fGO$Z6&2{k>K{sxjk7W7< zg*;P&u7>{_OKDCaOcA${88Qv%I~mz%X-^|+bIPn`3}BiVGPY{01MQ&g5(V-nx3FCV zS26wYtet`AD#7r|oT3b8#d#$Mq3XUc+{6yHM+n%WvFTpAvgk6J`KA1(g2vL54uipf zkkL+E1DauCcXc``4>>Avb#x)xswnJ9;FTE1roPPvBU&o*_qW|>7qm>}!b{=&T8G{m zp^}c^=PY47>iu?3)=upftZX?%HQ>kP#=2hD zEW2vg;T4`Sj}Y8vdZ>NwimPXNev{yPSN}g0KS__;fAH}Z$HxMA-4*--Yjrd{=&6x* zB-frxoAkc0@X>z!G}P2#j4DEb(OuUP@u$Sjzxgeoud1(O%&0`ZKC5Z z+cMAqqmIJvxJR9=SJ@Jz);>;EDK1Y}C6@KBJQ0t13ip4GxUkYMxf(nx^8oLC@2H)R z`REXKB$R^k0S~Wcd5Nk!2Ck$8OS*c_*AK@ZDQyg460Ehb{J8x9r4jN=x_Sfq$Op^D zfyYJG-DlEHsPy4M(r686GUocTO4aHO*zXv81y5?dTGpX78Pq7Mbqn@RUjNP4$UT`h z-$!udfXY^~^xF1VUITGAYT|QJ$YoN2@p)mJN6_|R3($*>-s@3h+JNZ`O}?&=#|MJ* zM%AOL61(r5HZM4%C7&e)?Eh@PC?Yge8ZGgSQ{}@mhN=-wUQgmZxcp-7!gs|7BS(ZGpS8-3yjAUMkvIkO3l9g z^aXX}6ROoIPcMcR>l+cVWwX;56)}LF86d8SN;43aF>522-@m&hKnz|y-?xQ^?$#$; zB`Myt2+bXq6^NxC3!K2U%gxr*e6(In;IrxZuX{{9>ZL*0an!s57orT3P}pCKs({0g5c9jVDm}RoC{v1;%3cB9K5{H zXCkB(B`2@?qo+siCAm^M{NX6}62cW;y9(X%cE!&U&q$s9QgTmVuQTog14~8u)G3&! z=XBu5povR5gENT0$UGWuxaJEfeOsr=43m!GfzP=vPN7ZcPqR+RXWY4h)GUS`6dm4B zrdCF)EqZ1t>j>c45=Yeb{OFugwa8TX*1G?q*571$J90lyb{e&R_`7O@|H!Boo3Vf- zI7Rcu9qde?pa>qX>>xYLL-4DZLtC)!0U>@m@ybV9%?UQD`Jt{I%1aC00D%^zNM9-mV#^G9-PWDnIBrhuA%nvD_hZEDUX&k{ZDqB%?{}vHElu`X9=s9VmsWxsEYG4 z20Ov$a@}#qKGe?Kz=Rm9HZ#W9rS>^>TEH|Rb@V{lSoPD@&>WQZ3|${9YpF)X^dJ|C zM}CtiH$h}r4GvtR5-6INqGh3I7K8)$-K< literal 3755 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 diff --git a/docs/graphics/options_ui.png b/docs/graphics/options_ui.png index 6efd912d5dfde274b497dd55a301c5ee1806fa2c..c5f694623bf509ab23e27a819ca526e99b6fb928 100644 GIT binary patch literal 4707 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 literal 4226 zcmeHK`8!+r8V_acp&g-?qKsOCX_X-;wX3SzRtbt@Evg|#EG4nkQcE>$(J2+9s%9og zktk+_TFMoKT4JevO=BlWP&e&#=DB~seV+R~_qpf!e9!rw_q@M+Kkxf_-}j_lwYL@# zlokYmKq8lHEUtq z=osj#-3?2Q{o=)o0RaJJI$|9l&_4<2^>yme(Gkb~|Lgw@{LeG6WXy};98v&j;}Qk} zfm=Q=uJ({$d^tubl%+GuA>hdI;(XKHZWAhaS~p*WMO(E z%44M(K~B5=FH^Z#$eh$^*5Cm$4Bm` zf0w+eo65oEJvNg!G)bvt9=df4Ub+z8X! z^d8knj578@JMSbRJJga#8!lyevt#5;b`1Gb4r^6QE%(eS5(6|SEI6&HMPdehkS`tG z7(YmEQ z+o`=zI6Tzm|IU@3hPPR`I{?QgG0A_rHS?#mV2PwDDAH6d4|oGc(r%~sUd}TE8}mHjZx2( zT8z#MXSJ^s`j-Kdp7alD!;ujeBz0rec zp=L*vRbN$MpFo8Uhc~}Uf_BhW%(edVn(>U^jbpSLbCdwz`;)qpFX3jCU! zGUpA%@kJ$Nao}F<3}vHr*>zeLClJEBxTMf&O%#2WlXA!^--PZwucGWu<}QL7yaMxi)+BA6v^tu@2Ry8MwsE^qzt{1I zpVW&3DC^a*(Ym?O%B`i_dy5PW6e%537QeRj-B$vgUf1MTze2tuC``gX@kGnKP;ldI zX(+uT5;T-=ww)6SaWD6lhc*qq$B@R?zUVw6rR2^Pujs}TPL+91%RT~k7_2Y3*w8zm zU#g5;4U4BfS%ms@3VhXkD6dJPwr$h?Xzn+N97_l3D}iPV^(yp*oCU_n-;8iJ2X?@Q z5Y#{MW*s#d-5@?61cpb0pHm;A!2`7N&-wT#R@wCnG4MA%Rqx=elzg?Udesjb$?t9q zPc?P$???O4hF%zIr=6Amq2@WZ_N_Wlsb6HGxgxA4`D(QFFil`HoTA{@BANLn+#vW4 zQz}XG1V*_Q|K+n_9sw14C)CU^n0ppO&(t)zCpPVhBkUaM1uK-~c1&2moywLN&B=AP zO*e+C9xpm564@_rKMWeeUtz*r&EEA{02(}_ zluafDzNSN|0uA0u?+O+fw=O3+f=OcE)YcBuYSwXjJCuUqj~F`7OHb>x8C8OZ>1a`- zDF5)jXMBm#>5E0p_#b?r{An^}8_breU4~}x$xYCko=rnccj;dhd)l9!UN~JS5Ik=z zxyiiF3Aq~`hNWzn%vyie$jl>)zk0yuW>8N6xV60waO2123>KP@TaK%lh~DA58)GgZ z>yTzIQe7RRg9~rKm%=*yZGoiEjP{AAgCtJ~zUO>MEcrL$Xsrt# z$v=+63T2Pji6`MbYj>NbcY|nVg!Nx_KMKz=CkR8M$6MV(ZJno}ri#RyR&*H*LNIMG z`chx#K&9Q-Ljf0A!oGn}LYoZQ@53rFzJlKz>XVxFX!JX5K#59);DkW{m&ucKX^X{%uDvg2=}gG9k9z` zC*wjt+0|g$L_R)vw?AK|Sy}(spIX+wA{#QVLT!v3b~;QU95f=tEHjEmhUh)>J*OI? zTVmQn2K6w5ru+9GS<99r_ZQT={NWj%M)r%BluE;K4%nc{g}H!_LE_0aT(I&6do%Se zl)HuC>2}!?x7`n$q~r>Nys0^}jJ%*{9(fe*-T{MB>0eVEg`OArUUlEU@2p|3JZNsR zeD7k9vZN)byS@I$t;5?%iDzU3->TS!X$89Qgd5n9sA?~WzNC2AG1ybLR_|-)3nG)r zHI~I(-Kmd;G8mbI$|CLRdX2$q=R`__C@1Ol>IoCi;w^&21LKPwUwI-YB*t$}Dt#|u zZj~W{Zq$?(34jaAXqO+8zCdM6VvoZr3fHR?pir5U{=ZQk(W>f!{XJ z-r>Pd{Q>RQ&Ys(~?B~8A8m6Ix?S+-cM4&Oebw5yMjSMDx&2joVg*?Fi;x1PwZHAvy zNdH^tgC9KYPk)+5{-ow~I;1}u?0c2G@HfOTZIVPDWP&g<8SadJVYLqF=8-s3Nxo3q z4DA>{eK(oh{gxK@*oFzAMaeNC^sQ_{!e;oruLCcOZNlyP4C?6dzpqo*mr}U9C7meMZfcuq!<=?_DTxC22O*Y0b1Y7gcue%KupYF4ipifV;hT~2ax8)WKi-Vd!I zMEK+{vpRpr&aPM_qV%g>XO9CVy^eP-ImWo_{9!y!L+U9Rl2c}XSFq!`+XXlFbVkqo zHmY=vn6!lvd2?P2Lo#1}En^0sjweJtjr3~|OFjXS?z4D(cSamo(c&C`3MyavDBDCp zvVN)qGE+go!`f-ZnPlTDEY2*U_jN8wB`uTH_I)N;w+L|54le^AF)AOM8n7Gtb0-0f6o7#Q*>R diff --git a/docs/index.html b/docs/index.html index a01b40c5b..90e9df308 100644 --- a/docs/index.html +++ b/docs/index.html @@ -2689,16 +2689,7 @@
ItemBrief descriptionFor more information,
see CommandLine
Player/Developer settingsSelects the active settings set-dev.settings
Frame StatisticsOverlay console info on the TIA image during emulation.-plr.stats
-dev.stats
Console info overlayOverlay console info on the TIA image during emulation.-plr.stats
-dev.stats
ConsoleSelect the console type, this affects Color/B&W/Pause key emulation and zero-page RAM initialzation-plr.console
-dev.console
Random startup bankRandomize the startup bank (only for selected bankswitch types)-plr.bankrandom
-dev.bankrandom
Randomize zero-page ...When loading a ROM, randomize all RAM content instead of initializing with all zeroes (for 'Console' = 'Atari 2600' only)-plr.ramrandom
-dev.ramrandom

-

UI Settings dialog (2 tabs):

- - - - - - -
    
This tab is described in further detail in - Advanced Configuration - ROM Launcher.
-
+

User Interface Settings dialog (2 tabs):

@@ -2706,8 +2697,8 @@ @@ -2719,6 +2710,15 @@


- - + +
ItemBrief descriptionFor more information,
see CommandLine
Interface PalettePalette to use for UI elements (see examples)-uipalette
List quick delayTime to wait between keypresses in list-widgets-listdelay
ThemeTheme to use for UI elements (see examples)-uipalette
List input delayMaximum delay between keypresses in list-widgets before a search string resets. -listdelay
Mouse wheel scrollNumber of lines a mouse scroll will move in list-widgets-mscroll

+ + + + + + +
    
This tab is described in further detail in + Advanced Configuration - ROM Launcher.
+

Snapshot Settings dialog:

diff --git a/src/gui/UIDialog.cxx b/src/gui/UIDialog.cxx index 4c3551f9d..c78cdfc52 100644 --- a/src/gui/UIDialog.cxx +++ b/src/gui/UIDialog.cxx @@ -255,7 +255,12 @@ void UIDialog::setDefaults() { switch(myTab->getActiveTab()) { - case 0: // Launcher options + case 0: // Misc. options + myPalettePopup->setSelected("standard"); + myListDelayPopup->setValue(300); + myWheelLinesPopup->setValue(4); + break; + case 1: // Launcher options { uInt32 w = std::min(instance().frameBuffer().desktopSize().w, 900u); uInt32 h = std::min(instance().frameBuffer().desktopSize().h, 600u); @@ -266,13 +271,6 @@ void UIDialog::setDefaults() myLauncherExitWidget->setState(false); break; } - - case 1: // Misc. options - myPalettePopup->setSelected("standard"); - myListDelayPopup->setValue(300); - myWheelLinesPopup->setValue(4); - break; - default: break; } From 7ae6d84739b796d10cd0ae0da05e8024bbe53d57 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 17 Aug 2018 13:56:08 -0230 Subject: [PATCH 016/126] Completely remove ability to use a per-ROM properties file. This 'feature' now seems unnecessary, and it complicates the code by having it. --- docs/index.html | 6 --- src/common/PKeyboardHandler.cxx | 15 -------- src/emucore/OSystem.cxx | 65 ++------------------------------- src/emucore/OSystem.hxx | 23 +----------- src/emucore/PropsSet.cxx | 7 ---- src/emucore/PropsSet.hxx | 12 ------ src/gui/GameInfoDialog.cxx | 62 +++++++++++++++---------------- src/gui/GameInfoDialog.hxx | 8 ++-- src/gui/LauncherDialog.cxx | 2 +- 9 files changed, 40 insertions(+), 160 deletions(-) diff --git a/docs/index.html b/docs/index.html index 90e9df308..c1d77fd7d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1518,12 +1518,6 @@ - - - - - - diff --git a/src/common/PKeyboardHandler.cxx b/src/common/PKeyboardHandler.cxx index 779a01566..66cc4b970 100644 --- a/src/common/PKeyboardHandler.cxx +++ b/src/common/PKeyboardHandler.cxx @@ -524,21 +524,6 @@ void PhysicalKeyboardHandler::handleEvent(StellaKey key, StellaMod mod, bool sta myOSystem.console().changeHeight(-1); break; - case KBDK_S: // Ctrl-s saves properties to a file - { - string filename = myOSystem.baseDir() + - myOSystem.console().properties().get(Cartridge_Name) + ".pro"; - ofstream out(filename); - if(out) - { - out << myOSystem.console().properties(); - myOSystem.frameBuffer().showMessage("Properties saved"); - } - else - myOSystem.frameBuffer().showMessage("Error saving properties"); - break; - } - default: handled = false; break; diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index f4ef445bc..3363e1e99 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -132,8 +132,8 @@ bool OSystem::create() myEventHandler = MediaFactory::createEventHandler(*this); myEventHandler->initialize(); - // Create a properties set for us to use and set it up - myPropSet = make_unique(propertiesFile()); + // Create the ROM properties database + myPropSet = make_unique(myPropertiesFile); #ifdef CHEATCODE_SUPPORT myCheatManager = make_unique(*this); @@ -220,56 +220,6 @@ void OSystem::setConfigPaths() mySettings->setValue("propsfile", node.getShortPath()); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -PropertiesSet& OSystem::propSet(const string& md5) -{ - FilesystemNode node = FilesystemNode(); - - return propSet(md5, node); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -PropertiesSet& OSystem::propSet(const string& md5, const FilesystemNode& node) -{ - if(md5 == EmptyString) - return *myPropSet; - else if(md5 == myGamePropSetMD5) - return *myGamePropSet; - else if (!node.exists()) - return *myPropSet; - - // Get a valid set of game specific properties - Properties props; - string path = myBaseDir + node.getNameWithExt(".pro"); - - // Create a properties set based on ROM name - FilesystemNode propNode = FilesystemNode(path); - myGamePropertiesFile = propNode.getPath(); - - myGamePropSet = make_unique(myGamePropertiesFile); - - // Check if game specific property file exists and has matching md5 - if(myGamePropSet->size() && myGamePropSet->getMD5(md5, props)) - { - myGamePropSetMD5 = md5; - return *myGamePropSet; - } - else - { - myGamePropSetMD5 = ""; - return *myPropSet; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void OSystem::saveGamePropSet(const string& md5) -{ - if(myGamePropSet->size() && md5 == myGamePropSetMD5) - { - myGamePropSet->save(myGamePropertiesFile); - } -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void OSystem::setBaseDir(const string& basedir) { @@ -504,13 +454,6 @@ unique_ptr OSystem::openConsole(const FilesystemNode& romfile, string& // For initial creation of the Cart, we're only concerned with the BS type Properties props; - // Load and use game specific props if existing - FilesystemNode node = FilesystemNode(romfile); - - string path = myBaseDir + node.getNameWithExt(".pro"); - PropertiesSet& propset = propSet(md5, romfile); - propset.getMD5(md5, props); - // Local helper method auto CMDLINE_PROPS_UPDATE = [&](const string& name, PropertyType prop) { @@ -531,12 +474,12 @@ unique_ptr OSystem::openConsole(const FilesystemNode& romfile, string& // and that the md5 (and hence the cart) has changed if(props.get(Cartridge_MD5) != cartmd5) { - if(!propset.getMD5(cartmd5, props)) + if(!myPropSet->getMD5(cartmd5, props)) { // Cart md5 wasn't found, so we create a new props for it props.set(Cartridge_MD5, cartmd5); props.set(Cartridge_Name, props.get(Cartridge_Name)+cart->multiCartID()); - propset.insert(props, false); + myPropSet->insert(props, false); } } diff --git a/src/emucore/OSystem.hxx b/src/emucore/OSystem.hxx index b192b2b3d..25072c730 100644 --- a/src/emucore/OSystem.hxx +++ b/src/emucore/OSystem.hxx @@ -112,13 +112,7 @@ class OSystem @return The properties set object */ - PropertiesSet& propSet(const string& md5 = EmptyString); - PropertiesSet& propSet(const string& md5, const FilesystemNode& node); - - /** - Save the game specific property file. - */ - void saveGamePropSet(const string& md5); + PropertiesSet& propSet() const { return *myPropSet; } /** Get the console of the system. The console won't always exist, @@ -270,14 +264,6 @@ class OSystem */ const string& paletteFile() const { return myPaletteFile; } - /** - This method should be called to get the full path of the - properties file (stella.pro). - - @return String representing the full path of the properties filename. - */ - const string& propertiesFile() const { return myPropertiesFile; } - /** This method should be called to get the full path of the currently loaded ROM. @@ -448,12 +434,6 @@ class OSystem // Pointer to the PropertiesSet object unique_ptr myPropSet; - // Pointer to the game's PropertiesSet object - unique_ptr myGamePropSet; - - // MD5 of the currently loaded game PropertiesSet object - string myGamePropSetMD5; - // Pointer to the (currently defined) Console object unique_ptr myConsole; @@ -510,7 +490,6 @@ class OSystem string myConfigFile; string myPaletteFile; string myPropertiesFile; - string myGamePropertiesFile; FilesystemNode myRomFile; string myRomMD5; diff --git a/src/emucore/PropsSet.cxx b/src/emucore/PropsSet.cxx index 1bb239fa4..742f51870 100644 --- a/src/emucore/PropsSet.cxx +++ b/src/emucore/PropsSet.cxx @@ -170,13 +170,6 @@ void PropertiesSet::insert(const Properties& properties, bool save) } } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void PropertiesSet::removeMD5(const string& md5) -{ - // We only remove from the external list - myExternalProps.erase(md5); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void PropertiesSet::print() const { diff --git a/src/emucore/PropsSet.hxx b/src/emucore/PropsSet.hxx index 9fc2cf927..12cb722ac 100644 --- a/src/emucore/PropsSet.hxx +++ b/src/emucore/PropsSet.hxx @@ -100,23 +100,11 @@ class PropertiesSet */ void insert(const Properties& properties, bool save = true); - /** - Marks the property with the given MD5 as being removed. - - @param md5 The md5 of the property to remove - */ - void removeMD5(const string& md5); - /** Prints the contents of the PropertiesSet as a flat file. */ void print() const; - /** - Return the size of the myExternalProps list - */ - uInt64 size() const { return myExternalProps.size(); } - private: using PropsList = std::map; diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index bad62b175..89a967b44 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -363,7 +363,7 @@ void GameInfoDialog::loadConfig() else { const string& md5 = instance().launcher().selectedRomMD5(); - instance().propSet(md5).getMD5(md5, myGameProperties); + instance().propSet().getMD5(md5, myGameProperties); } loadCartridgeProperties(myGameProperties); @@ -375,16 +375,16 @@ void GameInfoDialog::loadConfig() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void GameInfoDialog::loadCartridgeProperties(Properties properties) +void GameInfoDialog::loadCartridgeProperties(const Properties& props) { - myName->setText(properties.get(Cartridge_Name)); - myMD5->setText(properties.get(Cartridge_MD5)); - myManufacturer->setText(properties.get(Cartridge_Manufacturer)); - myModelNo->setText(properties.get(Cartridge_ModelNo)); - myRarity->setText(properties.get(Cartridge_Rarity)); - myNote->setText(properties.get(Cartridge_Note)); - mySound->setState(properties.get(Cartridge_Sound) == "STEREO"); - myType->setSelected(properties.get(Cartridge_Type), "AUTO"); + myName->setText(props.get(Cartridge_Name)); + myMD5->setText(props.get(Cartridge_MD5)); + myManufacturer->setText(props.get(Cartridge_Manufacturer)); + myModelNo->setText(props.get(Cartridge_ModelNo)); + myRarity->setText(props.get(Cartridge_Rarity)); + myNote->setText(props.get(Cartridge_Note)); + mySound->setState(props.get(Cartridge_Sound) == "STEREO"); + myType->setSelected(props.get(Cartridge_Type), "AUTO"); if(instance().hasConsole() && myType->getSelectedTag().toString() == "AUTO") { @@ -400,23 +400,23 @@ void GameInfoDialog::loadCartridgeProperties(Properties properties) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void GameInfoDialog::loadConsoleProperties(Properties properties) +void GameInfoDialog::loadConsoleProperties(const Properties& props) { - myLeftDiffGroup->setSelected(properties.get(Console_LeftDifficulty) == "A" ? 0 : 1); - myRightDiffGroup->setSelected(properties.get(Console_RightDifficulty) == "A" ? 0 : 1); - myTVTypeGroup->setSelected(properties.get(Console_TelevisionType) == "BW" ? 1 : 0); + myLeftDiffGroup->setSelected(props.get(Console_LeftDifficulty) == "A" ? 0 : 1); + myRightDiffGroup->setSelected(props.get(Console_RightDifficulty) == "A" ? 0 : 1); + myTVTypeGroup->setSelected(props.get(Console_TelevisionType) == "BW" ? 1 : 0); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void GameInfoDialog::loadControllerProperties(Properties properties) +void GameInfoDialog::loadControllerProperties(const Properties& props) { - myP0Controller->setSelected(properties.get(Controller_Left), "JOYSTICK"); - myP1Controller->setSelected(properties.get(Controller_Right), "JOYSTICK"); - mySwapPorts->setState(properties.get(Console_SwapPorts) == "YES"); - mySwapPaddles->setState(properties.get(Controller_SwapPaddles) == "YES"); + myP0Controller->setSelected(props.get(Controller_Left), "JOYSTICK"); + myP1Controller->setSelected(props.get(Controller_Right), "JOYSTICK"); + mySwapPorts->setState(props.get(Console_SwapPorts) == "YES"); + mySwapPaddles->setState(props.get(Controller_SwapPaddles) == "YES"); // MouseAxis property (potentially contains 'range' information) - istringstream m_axis(properties.get(Controller_MouseAxis)); + istringstream m_axis(props.get(Controller_MouseAxis)); string m_control, m_range; m_axis >> m_control; bool autoAxis = BSPF::equalsIgnoreCase(m_control, "AUTO"); @@ -446,9 +446,9 @@ void GameInfoDialog::loadControllerProperties(Properties properties) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void GameInfoDialog::loadDisplayProperties(Properties properties) +void GameInfoDialog::loadDisplayProperties(const Properties& props) { - myFormat->setSelected(properties.get(Display_Format), "AUTO"); + myFormat->setSelected(props.get(Display_Format), "AUTO"); if(instance().hasConsole() && myFormat->getSelectedTag().toString() == "AUTO") { const string& format = instance().console().about().DisplayFormat; @@ -458,7 +458,7 @@ void GameInfoDialog::loadDisplayProperties(Properties properties) else myFormatDetected->setLabel(""); - const string& ystart = properties.get(Display_YStart); + const string& ystart = props.get(Display_YStart); myYStart->setValue(atoi(ystart.c_str())); myYStart->setValueLabel(ystart == "0" ? "Auto" : ystart); myYStart->setValueUnit(ystart == "0" ? "" : "px"); @@ -471,7 +471,7 @@ void GameInfoDialog::loadDisplayProperties(Properties properties) else myYStartDetected->setLabel(""); - const string& height = properties.get(Display_Height); + const string& height = props.get(Display_Height); myHeight->setValue(atoi(height.c_str())); myHeight->setValueLabel(height == "0" ? "Auto" : height); myHeight->setValueUnit(height == "0" ? "" : "px"); @@ -485,11 +485,11 @@ void GameInfoDialog::loadDisplayProperties(Properties properties) else myHeightDetected->setLabel(""); - bool usePhosphor = properties.get(Display_Phosphor) == "YES"; + bool usePhosphor = props.get(Display_Phosphor) == "YES"; myPhosphor->setState(usePhosphor); myPPBlend->setEnabled(usePhosphor); - const string& blend = properties.get(Display_PPBlend); + const string& blend = props.get(Display_PPBlend); myPPBlend->setValue(atoi(blend.c_str())); myPPBlend->setValueLabel(blend == "0" ? "Default" : blend); myPPBlend->setValueUnit(blend == "0" ? "" : "%"); @@ -539,10 +539,8 @@ void GameInfoDialog::saveConfig() myGameProperties.set(Display_PPBlend, myPPBlend->getValueLabel() == "Default" ? "0" : myPPBlend->getValueLabel()); - const string& md5 = myGameProperties.get(Cartridge_MD5); - // always insert, doesn't hurt - instance().propSet(md5).insert(myGameProperties); - instance().saveGamePropSet(myGameProperties.get(Cartridge_MD5)); + // Always insert; if the properties are already present, nothing will happen + instance().propSet().insert(myGameProperties); // In any event, inform the Console if(instance().hasConsole()) @@ -583,9 +581,9 @@ void GameInfoDialog::setDefaults() { // Load the default properties Properties defaultProperties; - string md5 = myGameProperties.get(Cartridge_MD5); + const string& md5 = myGameProperties.get(Cartridge_MD5); - instance().propSet(md5).getMD5(md5, defaultProperties, true); + instance().propSet().getMD5(md5, defaultProperties, true); switch(myTab->getActiveTab()) { diff --git a/src/gui/GameInfoDialog.hxx b/src/gui/GameInfoDialog.hxx index bce9d86d5..4fa1418ca 100644 --- a/src/gui/GameInfoDialog.hxx +++ b/src/gui/GameInfoDialog.hxx @@ -46,13 +46,13 @@ class GameInfoDialog : public Dialog, public CommandSender void setDefaults() override; // load the properties for the 'Cartridge' tab - void loadCartridgeProperties(Properties properties); + void loadCartridgeProperties(const Properties& props); // load the properties for the 'Console' tab - void loadConsoleProperties(Properties properties); + void loadConsoleProperties(const Properties& props); // load the properties for the 'Controller' tab - void loadControllerProperties(Properties properties); + void loadControllerProperties(const Properties& props); // load the properties for the 'Display' tab - void loadDisplayProperties(Properties properties); + void loadDisplayProperties(const Properties& props); void updateControllerStates(); void eraseEEPROM(); diff --git a/src/gui/LauncherDialog.cxx b/src/gui/LauncherDialog.cxx index fc964af32..58be4f23b 100644 --- a/src/gui/LauncherDialog.cxx +++ b/src/gui/LauncherDialog.cxx @@ -332,7 +332,7 @@ void LauncherDialog::loadRomInfo() // Get the properties for this entry Properties props; - instance().propSet(myGameList->md5(item), node).getMD5WithInsert(node, myGameList->md5(item), props); + instance().propSet().getMD5WithInsert(node, myGameList->md5(item), props); myRomInfoWidget->setProperties(props); } From 13c616c4c8ef22d135141424a7d4f10827026029 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 17 Aug 2018 20:44:50 +0200 Subject: [PATCH 017/126] moved ROM viewer image path settings into UIDialog --- src/gui/EditTextWidget.cxx | 6 +-- src/gui/SnapshotDialog.cxx | 31 ++------------- src/gui/SnapshotDialog.hxx | 3 -- src/gui/UIDialog.cxx | 81 +++++++++++++++++++++++++++++++++++--- src/gui/UIDialog.hxx | 17 ++++++-- 5 files changed, 95 insertions(+), 43 deletions(-) diff --git a/src/gui/EditTextWidget.cxx b/src/gui/EditTextWidget.cxx index 42d64cd9f..58261304d 100644 --- a/src/gui/EditTextWidget.cxx +++ b/src/gui/EditTextWidget.cxx @@ -85,7 +85,7 @@ void EditTextWidget::drawWidget(bool hilite) // Highlight changes if(_changed && onTop) s.fillRect(_x, _y, _w, _h, kDbgChangedColor); - else if(!isEditable()) + else if(!isEditable() || !isEnabled()) s.fillRect(_x, _y, _w, _h, onTop ? kDlgColor : kBGColorLo); // Draw a thin frame around us. @@ -94,9 +94,9 @@ void EditTextWidget::drawWidget(bool hilite) // Draw the text adjustOffset(); s.drawString(_font, editString(), _x + 2, _y + 2, getEditRect().width(), - _changed && onTop + _changed && onTop && isEnabled() ? kDbgChangedTextColor - : onTop ? _textcolor : kColor, + : onTop && isEnabled() ? _textcolor : kColor, TextAlign::Left, -_editScrollOffset, false); // Draw the caret diff --git a/src/gui/SnapshotDialog.cxx b/src/gui/SnapshotDialog.cxx index c3590b04f..e02ba7c14 100644 --- a/src/gui/SnapshotDialog.cxx +++ b/src/gui/SnapshotDialog.cxx @@ -57,16 +57,6 @@ SnapshotDialog::SnapshotDialog(OSystem& osystem, DialogContainer& parent, _w - xpos - HBORDER, lineHeight, ""); wid.push_back(mySnapSavePath); - // Snapshot path (load files) - xpos = HBORDER; ypos += buttonHeight + V_GAP; - b = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight, - "Load path" + ELLIPSIS, kChooseSnapLoadDirCmd); - wid.push_back(b); - xpos += buttonWidth + 8; - mySnapLoadPath = new EditTextWidget(this, font, xpos, ypos + 1, - _w - xpos - HBORDER, lineHeight, ""); - wid.push_back(mySnapLoadPath); - // Snapshot naming xpos = HBORDER; ypos += buttonHeight + V_GAP * 4; fwidth = font.getStringWidth("10 seconds"); @@ -116,8 +106,7 @@ SnapshotDialog::~SnapshotDialog() void SnapshotDialog::loadConfig() { const Settings& settings = instance().settings(); - mySnapSavePath->setText(settings.getString("snapsavedir")); - mySnapLoadPath->setText(settings.getString("snaploaddir")); + mySnapSavePath->setText(settings.getString("snapsavedir")); mySnapInterval->setValue(instance().settings().getInt("ssinterval")); mySnapName->setState(instance().settings().getString("snapname") == "rom"); mySnapSingle->setState(settings.getBool("sssingle")); @@ -127,8 +116,7 @@ void SnapshotDialog::loadConfig() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void SnapshotDialog::saveConfig() { - instance().settings().setValue("snapsavedir", mySnapSavePath->getText()); - instance().settings().setValue("snaploaddir", mySnapLoadPath->getText()); + instance().settings().setValue("snapsavedir", mySnapSavePath->getText()); instance().settings().setValue("ssinterval", mySnapInterval->getValue()); instance().settings().setValue("snapname", mySnapName->getState() ? "rom" : "int"); instance().settings().setValue("sssingle", mySnapSingle->getState()); @@ -142,8 +130,7 @@ void SnapshotDialog::saveConfig() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void SnapshotDialog::setDefaults() { - mySnapSavePath->setText(instance().defaultSaveDir()); - mySnapLoadPath->setText(instance().defaultLoadDir()); + mySnapSavePath->setText(instance().defaultSaveDir()); mySnapInterval->setValue(2); mySnapName->setState(false); mySnapSingle->setState(false); @@ -173,22 +160,10 @@ void SnapshotDialog::handleCommand(CommandSender* sender, int cmd, BrowserDialog::Directories, kSnapSaveDirChosenCmd); break; - case kChooseSnapLoadDirCmd: - // This dialog is resizable under certain conditions, so we need - // to re-create it as necessary - createBrowser("Select snapshot load directory"); - myBrowser->show(mySnapLoadPath->getText(), - BrowserDialog::Directories, kSnapLoadDirChosenCmd); - break; - case kSnapSaveDirChosenCmd: mySnapSavePath->setText(myBrowser->getResult().getShortPath()); break; - case kSnapLoadDirChosenCmd: - mySnapLoadPath->setText(myBrowser->getResult().getShortPath()); - break; - case kSnapshotInterval: if(mySnapInterval->getValue() == 1) mySnapInterval->setValueUnit(" second"); diff --git a/src/gui/SnapshotDialog.hxx b/src/gui/SnapshotDialog.hxx index 4412deffc..861d3ec29 100644 --- a/src/gui/SnapshotDialog.hxx +++ b/src/gui/SnapshotDialog.hxx @@ -48,9 +48,7 @@ class SnapshotDialog : public Dialog private: enum { kChooseSnapSaveDirCmd = 'LOss', // snapshot dir (save files) - kChooseSnapLoadDirCmd = 'LOsl', // snapshot dir (load files) kSnapSaveDirChosenCmd = 'snsc', // snap chosen (save files) - kSnapLoadDirChosenCmd = 'snlc', // snap chosen (load files) kSnapshotInterval = 'SnIn' // snap chosen (load files) }; @@ -58,7 +56,6 @@ class SnapshotDialog : public Dialog // Config paths EditTextWidget* mySnapSavePath; - EditTextWidget* mySnapLoadPath; CheckboxWidget* mySnapName; SliderWidget* mySnapInterval; diff --git a/src/gui/UIDialog.cxx b/src/gui/UIDialog.cxx index c78cdfc52..a848f0ed0 100644 --- a/src/gui/UIDialog.cxx +++ b/src/gui/UIDialog.cxx @@ -16,6 +16,7 @@ //============================================================================ #include "bspf.hxx" +#include "BrowserDialog.hxx" #include "Dialog.hxx" #include "OSystem.hxx" #include "FrameBuffer.hxx" @@ -23,6 +24,7 @@ #include "ListWidget.hxx" #include "PopUpWidget.hxx" #include "ScrollBarWidget.hxx" +#include "EditTextWidget.hxx" #include "Settings.hxx" #include "TabWidget.hxx" #include "Widget.hxx" @@ -35,15 +37,19 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, const GUI::Font& font) - : Dialog(osystem, parent, font, "User interface settings") + : Dialog(osystem, parent, font, "User interface settings"), + myFont(font) { const GUI::Font& ifont = instance().frameBuffer().infoFont(); const int lineHeight = font.getLineHeight(), fontWidth = font.getMaxCharWidth(), fontHeight = font.getFontHeight(), + buttonWidth = font.getStringWidth("Image path" + ELLIPSIS) + 20 + 1, buttonHeight = font.getLineHeight() + 4; + const int VBORDER = 8; const int HBORDER = 10; + const int INDENT = 16; int xpos, ypos, tabID; int lwidth, pwidth = font.getStringWidth("Standard"); WidgetArray wid; @@ -51,8 +57,8 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, const GUI::Size& ds = instance().frameBuffer().desktopSize(); // Set real dimensions - _w = 39 * fontWidth + 10 * 2; - _h = 10 * (lineHeight + 4) + VBORDER + _th; + _w = (39+15) * fontWidth + 10 * 2; + _h = (10+1) * (lineHeight + 4) + VBORDER + _th; // The tab widget xpos = HBORDER; ypos = VBORDER; @@ -138,7 +144,7 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, new PopUpWidget(myTab, font, xpos, ypos + 1, pwidth, lineHeight, items, "Launcher Font ", lwidth); wid.push_back(myLauncherFontPopup); - ypos += lineHeight + 4; + ypos += lineHeight + 4 * 4; // ROM launcher info/snapshot viewer items.clear(); @@ -147,11 +153,25 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, VarList::push_back(items, "2x (1000x760)", "2"); myRomViewerPopup = new PopUpWidget(myTab, font, xpos, ypos + 1, pwidth, lineHeight, items, - "ROM Info viewer ", lwidth); + "ROM Info viewer ", lwidth, kRomViewer); wid.push_back(myRomViewerPopup); - ypos += lineHeight + 4*4; + ypos += lineHeight + 4; + + // Snapshot path (load files) + xpos = HBORDER + INDENT; + myOpenBrowserButton = new ButtonWidget(myTab, font, xpos, ypos, buttonWidth, buttonHeight, + "Image path" + ELLIPSIS, kChooseSnapLoadDirCmd); + wid.push_back(myOpenBrowserButton); + //ypos += lineHeight + 4; + xpos = myOpenBrowserButton->getRight() + 8; + + mySnapLoadPath = new EditTextWidget(myTab, font, xpos, ypos + 1, + _w - xpos - HBORDER, lineHeight, ""); + wid.push_back(mySnapLoadPath); + ypos += lineHeight + 4 * 5; // Exit to Launcher + xpos = HBORDER; myLauncherExitWidget = new CheckboxWidget(myTab, font, xpos + 1, ypos, "Always exit to Launcher"); wid.push_back(myLauncherExitWidget); @@ -198,6 +218,9 @@ void UIDialog::loadConfig() const string& viewer = instance().settings().getString("romviewer"); myRomViewerPopup->setSelected(viewer, "0"); + // ROM launcher info viewer image path + mySnapLoadPath->setText(instance().settings().getString("snaploaddir")); + // Exit to launcher bool exitlauncher = instance().settings().getBool("exitlauncher"); myLauncherExitWidget->setState(exitlauncher); @@ -214,6 +237,8 @@ void UIDialog::loadConfig() int mw = instance().settings().getInt("mwheel"); myWheelLinesPopup->setValue(mw); + handleRomViewer(); + myTab->loadConfig(); } @@ -233,6 +258,9 @@ void UIDialog::saveConfig() instance().settings().setValue("romviewer", myRomViewerPopup->getSelectedTag().toString()); + // ROM launcher info viewer image path + instance().settings().setValue("snaploaddir", mySnapLoadPath->getText()); + // Exit to Launcher instance().settings().setValue("exitlauncher", myLauncherExitWidget->getState()); @@ -268,6 +296,7 @@ void UIDialog::setDefaults() myLauncherHeightSlider->setValue(h); myLauncherFontPopup->setSelected("medium", ""); myRomViewerPopup->setSelected("1", ""); + mySnapLoadPath->setText(instance().defaultLoadDir()); myLauncherExitWidget->setState(false); break; } @@ -313,8 +342,48 @@ void UIDialog::handleCommand(CommandSender* sender, int cmd, int data, int id) myWheelLinesPopup->setValueUnit(" lines"); break; + case kRomViewer: + handleRomViewer(); + break; + + case kChooseSnapLoadDirCmd: + // This dialog is resizable under certain conditions, so we need + // to re-create it as necessary + createBrowser("Select snapshot load directory"); + myBrowser->show(mySnapLoadPath->getText(), + BrowserDialog::Directories, kSnapLoadDirChosenCmd); + break; + + case kSnapLoadDirChosenCmd: + mySnapLoadPath->setText(myBrowser->getResult().getShortPath()); + break; + default: Dialog::handleCommand(sender, cmd, data, 0); break; } } + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void UIDialog::handleRomViewer() +{ + bool enable = myRomViewerPopup->getSelectedName() != "Off"; + + myOpenBrowserButton->setEnabled(enable); + mySnapLoadPath->setEnabled(enable); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void UIDialog::createBrowser(const string& title) +{ + uInt32 w = 0, h = 0; + getResizableBounds(w, h); + + // Create file browser dialog + if(!myBrowser || uInt32(myBrowser->getWidth()) != w || + uInt32(myBrowser->getHeight()) != h) + myBrowser = make_unique(this, myFont, w, h, title); + else + myBrowser->setTitle(title); +} + diff --git a/src/gui/UIDialog.hxx b/src/gui/UIDialog.hxx index e0811b23e..389bece1b 100644 --- a/src/gui/UIDialog.hxx +++ b/src/gui/UIDialog.hxx @@ -26,6 +26,7 @@ class PopUpWidget; class SliderWidget; class StaticTextWidget; class TabWidget; +class BrowserDialog; class OSystem; #include "bspf.hxx" @@ -42,27 +43,37 @@ class UIDialog : public Dialog void setDefaults() override; void handleCommand(CommandSender* sender, int cmd, int data, int id) override; + void handleRomViewer(); + void createBrowser(const string& title); private: enum { kListDelay = 'UILd', kMouseWheel = 'UIMw', + kRomViewer = 'UIRv', + kChooseSnapLoadDirCmd = 'UIsl', // snapshot dir (load files) + kSnapLoadDirChosenCmd = 'UIsc' // snap chosen (load files) }; + const GUI::Font& myFont; TabWidget* myTab; // Launcher options SliderWidget* myLauncherWidthSlider; SliderWidget* myLauncherHeightSlider; - CheckboxWidget* myLauncherExitWidget; PopUpWidget* myLauncherFontPopup; PopUpWidget* myRomViewerPopup; + ButtonWidget* myOpenBrowserButton; + EditTextWidget* mySnapLoadPath; + CheckboxWidget* myLauncherExitWidget; // Misc options PopUpWidget* myPalettePopup; - SliderWidget* myListDelayPopup; - SliderWidget* myWheelLinesPopup; + SliderWidget* myListDelayPopup; + SliderWidget* myWheelLinesPopup; + + unique_ptr myBrowser; private: // Following constructors and assignment operators not supported From c05fa1989f5403920c379141b89c0f490a759571 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 17 Aug 2018 16:31:05 -0230 Subject: [PATCH 018/126] Fix compile error in clang; something to do with unique_ptr can't have default d'tor. --- src/gui/UIDialog.cxx | 7 ++++++- src/gui/UIDialog.hxx | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gui/UIDialog.cxx b/src/gui/UIDialog.cxx index a848f0ed0..e207da052 100644 --- a/src/gui/UIDialog.cxx +++ b/src/gui/UIDialog.cxx @@ -38,7 +38,7 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, const GUI::Font& font) : Dialog(osystem, parent, font, "User interface settings"), - myFont(font) + myFont(font) { const GUI::Font& ifont = instance().frameBuffer().infoFont(); const int lineHeight = font.getLineHeight(), @@ -195,6 +195,11 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, addBGroupToFocusList(wid); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +UIDialog::~UIDialog() +{ +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void UIDialog::loadConfig() { diff --git a/src/gui/UIDialog.hxx b/src/gui/UIDialog.hxx index 389bece1b..ab9138183 100644 --- a/src/gui/UIDialog.hxx +++ b/src/gui/UIDialog.hxx @@ -35,7 +35,7 @@ class UIDialog : public Dialog { public: UIDialog(OSystem& osystem, DialogContainer& parent, const GUI::Font& font); - virtual ~UIDialog() = default; + virtual ~UIDialog(); private: void loadConfig() override; From f12c4bb485758a05892ec078bad7f3e371a8fc0e Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 17 Aug 2018 21:02:31 +0200 Subject: [PATCH 019/126] adjusted SnapshotDialog size to removed widget --- src/gui/SnapshotDialog.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/SnapshotDialog.cxx b/src/gui/SnapshotDialog.cxx index e02ba7c14..a75837eb3 100644 --- a/src/gui/SnapshotDialog.cxx +++ b/src/gui/SnapshotDialog.cxx @@ -44,7 +44,7 @@ SnapshotDialog::SnapshotDialog(OSystem& osystem, DialogContainer& parent, // Set real dimensions _w = std::min(max_w, 64 * fontWidth + HBORDER * 2); - _h = 10 * (lineHeight + 4) + VBORDER + _th; + _h = 9 * (lineHeight + 4) + VBORDER + _th; xpos = HBORDER; ypos = VBORDER + _th; From eefa196f0d294003fcc40639442286732ea6efd7 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 18 Aug 2018 21:56:47 +0200 Subject: [PATCH 020/126] updated doc for moved lauchner snapshot path widgets renamed "image" into "snapshot" (this may have to be repeated when the lib gets updated) --- docs/graphics/launcher_options_snapshots.png | Bin 5263 -> 4679 bytes docs/graphics/options_ui.png | Bin 4707 -> 5477 bytes docs/index.html | 4 ++-- src/common/PNGLibrary.cxx | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/graphics/launcher_options_snapshots.png b/docs/graphics/launcher_options_snapshots.png index 40de9d00340d280d807b4445b2b004788179cbe3..6139b66bc64fbe0fddcaa1b9ec4774c83645181f 100644 GIT binary patch literal 4679 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 XZ?kn4Zn*$`_G51Vf$EfL-;ewo#R*}6 literal 5263 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 diff --git a/docs/graphics/options_ui.png b/docs/graphics/options_ui.png index c5f694623bf509ab23e27a819ca526e99b6fb928..eb2d4a605aa194ec54cde34eb62affccf2a0305b 100644 GIT binary patch literal 5477 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 diff --git a/docs/index.html b/docs/index.html index c1d77fd7d..6fe83e762 100644 --- a/docs/index.html +++ b/docs/index.html @@ -2184,7 +2184,7 @@ - + @@ -2723,7 +2723,7 @@
Shift-Control + f
Save current game's properties to a separate properties fileControl + sControl + s
Switch mouse between controller emulation modes (see Game Properties - Controller) Control + 0
-snaploaddir <path>
The directory to load snapshot files from.The directory to load ROM info viewer snaposhot files from.
- + diff --git a/src/common/PNGLibrary.cxx b/src/common/PNGLibrary.cxx index 0a3f22353..6c1f3d5dd 100644 --- a/src/common/PNGLibrary.cxx +++ b/src/common/PNGLibrary.cxx @@ -49,7 +49,7 @@ void PNGLibrary::loadImage(const string& filename, FBSurface& surface) ifstream in(filename, std::ios_base::binary); if(!in.is_open()) - loadImageERROR("No image found"); + loadImageERROR("No snapshot found"); // Create the PNG loading context structure png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, nullptr, From 67785c34c528bf32b3aee078e0e3db93d6c49e66 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 19 Aug 2018 10:08:11 +0200 Subject: [PATCH 021/126] made upper and lower case more consistent --- src/gui/DeveloperDialog.cxx | 4 ++-- src/gui/GameInfoDialog.cxx | 2 +- src/gui/InputDialog.cxx | 2 +- src/gui/UIDialog.cxx | 29 ++++++++++++++++++++++------- src/gui/UIDialog.hxx | 1 + src/gui/VideoDialog.cxx | 2 +- 6 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/gui/DeveloperDialog.cxx b/src/gui/DeveloperDialog.cxx index fab68e496..79f95d10f 100644 --- a/src/gui/DeveloperDialog.cxx +++ b/src/gui/DeveloperDialog.cxx @@ -413,10 +413,10 @@ void DeveloperDialog::addDebuggerTab(const GUI::Font& font) // Font style (bold label vs. text, etc) items.clear(); - VarList::push_back(items, "All Normal font", "0"); + VarList::push_back(items, "All normal font", "0"); VarList::push_back(items, "Bold labels only", "1"); VarList::push_back(items, "Bold non-labels only", "2"); - VarList::push_back(items, "All Bold font", "3"); + VarList::push_back(items, "All bold font", "3"); pwidth = font.getStringWidth("Bold non-labels only"); myDebuggerFontStyle = new PopUpWidget(myTab, font, HBORDER, ypos + 1, pwidth, lineHeight, items, diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 89a967b44..d2062d011 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -304,7 +304,7 @@ GameInfoDialog::GameInfoDialog( ypos += lineHeight + VGAP; swidth = myFormat->getWidth(); - t = new StaticTextWidget(myTab, font, HBORDER, ypos+2, "Y-Start "); + t = new StaticTextWidget(myTab, font, HBORDER, ypos+2, "Y-start "); myYStart = new SliderWidget(myTab, font, t->getRight(), ypos, swidth, lineHeight, " ", 0, kYStartChanged, 5 * fontWidth, "px"); myYStart->setMinValue(TIAConstants::minYStart-1); diff --git a/src/gui/InputDialog.cxx b/src/gui/InputDialog.cxx index 0cf57cd5b..4bcd1515f 100644 --- a/src/gui/InputDialog.cxx +++ b/src/gui/InputDialog.cxx @@ -204,7 +204,7 @@ void InputDialog::addDevicePortTab(const GUI::Font& font) // Enable/disable control key-combos ypos += lineHeight + VGAP; myCtrlCombo = new CheckboxWidget(myTab, font, HBORDER, ypos, - "Use Control key combos"); + "Use control key combos"); wid.push_back(myCtrlCombo); ypos += lineHeight + VGAP; diff --git a/src/gui/UIDialog.cxx b/src/gui/UIDialog.cxx index e207da052..5b61bf6bc 100644 --- a/src/gui/UIDialog.cxx +++ b/src/gui/UIDialog.cxx @@ -112,12 +112,12 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, // 2) Launcher options wid.clear(); tabID = myTab->addTab(" Launcher "); - lwidth = font.getStringWidth("Launcher Height "); + lwidth = font.getStringWidth("Launcher height "); xpos = HBORDER; ypos = VBORDER; // Launcher width and height - myLauncherWidthSlider = new SliderWidget(myTab, font, xpos, ypos, "Launcher Width ", - lwidth, 0, 6 * fontWidth, "px"); + myLauncherWidthSlider = new SliderWidget(myTab, font, xpos, ypos, "Launcher width ", + lwidth, kLauncherSize, 6 * fontWidth, "px"); myLauncherWidthSlider->setMinValue(FrameBuffer::kFBMinW); myLauncherWidthSlider->setMaxValue(ds.w); myLauncherWidthSlider->setStepValue(10); @@ -125,8 +125,8 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, wid.push_back(myLauncherWidthSlider); ypos += lineHeight + 4; - myLauncherHeightSlider = new SliderWidget(myTab, font, xpos, ypos, "Launcher Height ", - lwidth, 0, 6 * fontWidth, "px"); + myLauncherHeightSlider = new SliderWidget(myTab, font, xpos, ypos, "Launcher height ", + lwidth, kLauncherSize, 6 * fontWidth, "px"); myLauncherHeightSlider->setMinValue(FrameBuffer::kFBMinH); myLauncherHeightSlider->setMaxValue(ds.h); myLauncherHeightSlider->setStepValue(10); @@ -142,7 +142,7 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, VarList::push_back(items, "Large", "large"); myLauncherFontPopup = new PopUpWidget(myTab, font, xpos, ypos + 1, pwidth, lineHeight, items, - "Launcher Font ", lwidth); + "Launcher font ", lwidth); wid.push_back(myLauncherFontPopup); ypos += lineHeight + 4 * 4; @@ -153,7 +153,7 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, VarList::push_back(items, "2x (1000x760)", "2"); myRomViewerPopup = new PopUpWidget(myTab, font, xpos, ypos + 1, pwidth, lineHeight, items, - "ROM Info viewer ", lwidth, kRomViewer); + "ROM info viewer ", lwidth, kRomViewer); wid.push_back(myRomViewerPopup); ypos += lineHeight + 4; @@ -347,6 +347,7 @@ void UIDialog::handleCommand(CommandSender* sender, int cmd, int data, int id) myWheelLinesPopup->setValueUnit(" lines"); break; + case kLauncherSize: case kRomViewer: handleRomViewer(); break; @@ -372,10 +373,24 @@ void UIDialog::handleCommand(CommandSender* sender, int cmd, int data, int id) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void UIDialog::handleRomViewer() { + //string size = myRomViewerPopup->getSelectedName(); bool enable = myRomViewerPopup->getSelectedName() != "Off"; + VariantList items; myOpenBrowserButton->setEnabled(enable); mySnapLoadPath->setEnabled(enable); + + /*items.clear(); + VarList::push_back(items, "Off", "0"); + VarList::push_back(items, "1x (640x480) ", "1"); + if(myLauncherWidthSlider->getValue() >= 1000 && + myLauncherHeightSlider->getValue() >= 760) + { + VarList::push_back(items, "2x (1000x760)", "2"); + } + myRomViewerPopup->addItems(items); + + //myRomViewerPopup->setSelected("1x(640x480) ");*/ } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/gui/UIDialog.hxx b/src/gui/UIDialog.hxx index ab9138183..da0515867 100644 --- a/src/gui/UIDialog.hxx +++ b/src/gui/UIDialog.hxx @@ -51,6 +51,7 @@ class UIDialog : public Dialog { kListDelay = 'UILd', kMouseWheel = 'UIMw', + kLauncherSize = 'UIls', kRomViewer = 'UIRv', kChooseSnapLoadDirCmd = 'UIsl', // snapshot dir (load files) kSnapLoadDirChosenCmd = 'UIsc' // snap chosen (load files) diff --git a/src/gui/VideoDialog.cxx b/src/gui/VideoDialog.cxx index 5ff913799..4b077f184 100644 --- a/src/gui/VideoDialog.cxx +++ b/src/gui/VideoDialog.cxx @@ -310,7 +310,7 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent, CREATE_CLONE_BUTTON(Composite, "Clone Composite"); CREATE_CLONE_BUTTON(Svideo, "Clone S-Video"); CREATE_CLONE_BUTTON(RGB, "Clone RGB"); - CREATE_CLONE_BUTTON(Bad, "Clone Bad Adjust"); + CREATE_CLONE_BUTTON(Bad, "Clone Bad adjust"); CREATE_CLONE_BUTTON(Custom, "Revert"); // Add items for tab 2 From 73733801e48e4154cddca1eee9ae6ccc45e2c5f6 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 19 Aug 2018 10:09:37 +0200 Subject: [PATCH 022/126] small design fixes for GlobalPropsDialog --- src/gui/GlobalPropsDialog.cxx | 93 +++++++++++++++-------------------- 1 file changed, 39 insertions(+), 54 deletions(-) diff --git a/src/gui/GlobalPropsDialog.cxx b/src/gui/GlobalPropsDialog.cxx index 1ead71b93..5c4957b46 100644 --- a/src/gui/GlobalPropsDialog.cxx +++ b/src/gui/GlobalPropsDialog.cxx @@ -38,32 +38,31 @@ GlobalPropsDialog::GlobalPropsDialog(GuiObject* boss, const GUI::Font& font) fontHeight = font.getFontHeight(), buttonHeight = font.getLineHeight() + 4; int xpos, ypos; - int lwidth = font.getStringWidth("Right Difficulty "), + int lwidth = font.getStringWidth("Right difficulty "), pwidth = font.getStringWidth("CM (SpectraVideo CompuMate)"); + const int VGAP = 4; WidgetArray wid; VariantList items; const GUI::Font& infofont = instance().frameBuffer().infoFont(); // Set real dimensions _w = lwidth + pwidth + fontWidth*3 + 15; - _h = 17 * (lineHeight + 4) + buttonHeight + 20 + _th; + _h = 15 * (lineHeight + 4) + buttonHeight + 10 + _th; xpos = 10; ypos = 10 + _th; // Bankswitch type - new StaticTextWidget(this, font, xpos, ypos+1, lwidth, fontHeight, - "Bankswitch type", TextAlign::Left); + new StaticTextWidget(this, font, xpos, ypos+1, "Bankswitch type"); for(int i = 0; i < int(BSType::NumSchemes); ++i) VarList::push_back(items, BSList[i].desc, BSList[i].name); myBSType = new PopUpWidget(this, font, xpos+lwidth, ypos, pwidth, lineHeight, items, "", 0, 0); wid.push_back(myBSType); - ypos += lineHeight + 10; + ypos += lineHeight + VGAP*2; // Left difficulty pwidth = font.getStringWidth("Debugger"); - new StaticTextWidget(this, font, xpos, ypos+1, lwidth, fontHeight, - "Left Difficulty", TextAlign::Left); + new StaticTextWidget(this, font, xpos, ypos+1, "Left difficulty"); items.clear(); VarList::push_back(items, "Default", "DEFAULT"); VarList::push_back(items, "B", "B"); @@ -71,20 +70,18 @@ GlobalPropsDialog::GlobalPropsDialog(GuiObject* boss, const GUI::Font& font) myLeftDiff = new PopUpWidget(this, font, xpos+lwidth, ypos, pwidth, lineHeight, items, "", 0, 0); wid.push_back(myLeftDiff); - ypos += lineHeight + 5; + ypos += lineHeight + VGAP; // Right difficulty - new StaticTextWidget(this, font, xpos, ypos+1, lwidth, fontHeight, - "Right Difficulty", TextAlign::Left); + new StaticTextWidget(this, font, xpos, ypos+1, "Right difficulty"); // ... use same items as above myRightDiff = new PopUpWidget(this, font, xpos+lwidth, ypos, pwidth, lineHeight, items, "", 0, 0); wid.push_back(myRightDiff); - ypos += lineHeight + 5; + ypos += lineHeight + VGAP; // TV type - new StaticTextWidget(this, font, xpos, ypos+1, lwidth, fontHeight, - "TV Type", TextAlign::Left); + new StaticTextWidget(this, font, xpos, ypos+1, "TV type"); items.clear(); VarList::push_back(items, "Default", "DEFAULT"); VarList::push_back(items, "Color", "COLOR"); @@ -92,47 +89,40 @@ GlobalPropsDialog::GlobalPropsDialog(GuiObject* boss, const GUI::Font& font) myTVType = new PopUpWidget(this, font, xpos+lwidth, ypos, pwidth, lineHeight, items, "", 0, 0); wid.push_back(myTVType); - ypos += lineHeight + 10; + ypos += lineHeight + VGAP*2; // Start in debugger mode - new StaticTextWidget(this, font, xpos, ypos+1, lwidth, fontHeight, - "Startup Mode", TextAlign::Left); + new StaticTextWidget(this, font, xpos, ypos+1, "Startup mode"); items.clear(); VarList::push_back(items, "Console", "false"); VarList::push_back(items, "Debugger", "true"); myDebug = new PopUpWidget(this, font, xpos+lwidth, ypos, pwidth, lineHeight, items, "", 0, 0); wid.push_back(myDebug); - ypos += lineHeight + 10; + ypos += lineHeight + VGAP*3; // Start console with buttons held down new StaticTextWidget(this, font, xpos, ypos+1, - font.getStringWidth("Start console with the following held down:"), - fontHeight, "Start console with the following held down:", - TextAlign::Left); - xpos += 10; ypos += lineHeight; - new StaticTextWidget(this, infofont, xpos, ypos+1, _w - 40, infofont.getFontHeight(), - "(*) Buttons are automatically released shortly", - TextAlign::Left); - ypos += infofont.getLineHeight(); - new StaticTextWidget(this, infofont, xpos, ypos+1, _w - 40, infofont.getFontHeight(), - " after emulation has started", - TextAlign::Left); + "Start with the following held down:"); + ypos += lineHeight; + new StaticTextWidget(this, infofont, xpos, ypos+1, + "(automatically released shortly after start)"); // Start with console joystick direction/buttons held down - xpos = 30; ypos += lineHeight + 10; + xpos = 32; ypos += infofont.getLineHeight() + VGAP*2; ypos = addHoldWidgets(font, xpos, ypos, wid); // Add message concerning usage xpos = 10; ypos += 2 * fontHeight; - new StaticTextWidget(this, infofont, xpos, ypos, _w - 20, infofont.getFontHeight(), - "(*) These options are not saved, but apply to all", TextAlign::Left); + ypos = _h - fontHeight * 2 - infofont.getLineHeight() - 24; + new StaticTextWidget(this, infofont, xpos, ypos, + "(*) These options are not saved, but apply to all"); ypos += infofont.getLineHeight(); - new StaticTextWidget(this, infofont, xpos, ypos, _w - 20, infofont.getFontHeight(), - " further ROMs until clicking 'Defaults'", TextAlign::Left); + new StaticTextWidget(this, infofont, xpos, ypos, + " further ROMs until selecting 'Defaults'."); // Add Defaults, OK and Cancel buttons - addDefaultsOKCancelBGroup(wid, font, "Load ROM", "Close"); + addDefaultsOKCancelBGroup(wid, font, "Load ROM", "Cancel"); addToFocusList(wid); } @@ -143,53 +133,48 @@ int GlobalPropsDialog::addHoldWidgets(const GUI::Font& font, int x, int y, { const int fontHeight = font.getFontHeight(); int xpos = x, ypos = y; + const int VGAP = 4; // Left joystick - StaticTextWidget* t = new StaticTextWidget(this, font, xpos, ypos+2, - font.getStringWidth("Left Joy"), fontHeight, "Left Joy", - TextAlign::Left); - xpos += t->getWidth()/2 - 5; ypos += t->getHeight() + 10; + StaticTextWidget* t = new StaticTextWidget(this, font, xpos, ypos+2, "Left joy"); + xpos += t->getWidth()/2 - 7; ypos += t->getHeight() + VGAP; myJoy[kJ0Up] = new CheckboxWidget(this, font, xpos, ypos, "", kJ0Up); - ypos += myJoy[kJ0Up]->getHeight() * 2 + 10; + ypos += myJoy[kJ0Up]->getHeight() * 2 + VGAP * 2; myJoy[kJ0Down] = new CheckboxWidget(this, font, xpos, ypos, "", kJ0Down); xpos -= myJoy[kJ0Up]->getWidth() + 5; - ypos -= myJoy[kJ0Up]->getHeight() + 5; + ypos -= myJoy[kJ0Up]->getHeight() + VGAP; myJoy[kJ0Left] = new CheckboxWidget(this, font, xpos, ypos, "", kJ0Left); xpos += (myJoy[kJ0Up]->getWidth() + 5) * 2; myJoy[kJ0Right] = new CheckboxWidget(this, font, xpos, ypos, "", kJ0Right); xpos -= (myJoy[kJ0Up]->getWidth() + 5) * 2; - ypos += myJoy[kJ0Down]->getHeight() * 2 + 10; + ypos += myJoy[kJ0Down]->getHeight() * 2 + VGAP * 2; myJoy[kJ0Fire] = new CheckboxWidget(this, font, xpos, ypos, "Fire", kJ0Fire); int final_y = ypos; xpos = _w / 3; ypos = y; // Right joystick - t = new StaticTextWidget(this, font, xpos, ypos+2, - font.getStringWidth("Right Joy"), fontHeight, "Right Joy", - TextAlign::Left); - xpos += t->getWidth()/2 - 5; ypos += t->getHeight() + 10; + t = new StaticTextWidget(this, font, xpos, ypos + 2, "Right joy"); + xpos += t->getWidth()/2 - 7; ypos += t->getHeight() + VGAP; myJoy[kJ1Up] = new CheckboxWidget(this, font, xpos, ypos, "", kJ1Up); - ypos += myJoy[kJ1Up]->getHeight() * 2 + 10; + ypos += myJoy[kJ1Up]->getHeight() * 2 + VGAP * 2; myJoy[kJ1Down] = new CheckboxWidget(this, font, xpos, ypos, "", kJ1Down); xpos -= myJoy[kJ1Up]->getWidth() + 5; - ypos -= myJoy[kJ1Up]->getHeight() + 5; + ypos -= myJoy[kJ1Up]->getHeight() + VGAP; myJoy[kJ1Left] = new CheckboxWidget(this, font, xpos, ypos, "", kJ1Left); xpos += (myJoy[kJ1Up]->getWidth() + 5) * 2; myJoy[kJ1Right] = new CheckboxWidget(this, font, xpos, ypos, "", kJ1Right); xpos -= (myJoy[kJ1Up]->getWidth() + 5) * 2; - ypos += myJoy[kJ1Down]->getHeight() * 2 + 10; + ypos += myJoy[kJ1Down]->getHeight() * 2 + VGAP * 2; myJoy[kJ1Fire] = new CheckboxWidget(this, font, xpos, ypos, "Fire", kJ1Fire); - xpos = 2 * _w / 3; ypos = y; + xpos = 2 * _w / 3 + 8; ypos = y; // Console Select/Reset - t = new StaticTextWidget(this, font, xpos, ypos+2, - font.getStringWidth("Console"), fontHeight, "Console", - TextAlign::Left); - xpos -= 10; ypos += t->getHeight() + 10; + t = new StaticTextWidget(this, font, xpos, ypos+2, "Console"); + ypos += t->getHeight() + VGAP; myHoldSelect = new CheckboxWidget(this, font, xpos, ypos, "Select"); - ypos += myHoldSelect->getHeight() + 5; + ypos += myHoldSelect->getHeight() + VGAP; myHoldReset = new CheckboxWidget(this, font, xpos, ypos, "Reset"); for(int i = kJ0Up; i <= kJ1Fire; ++i) From 8b156dc43dac6bea9df3fa71a69ab7e8df09244a Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 19 Aug 2018 13:58:05 +0200 Subject: [PATCH 023/126] minor GlobalPropsDialog polishing --- src/gui/GlobalPropsDialog.cxx | 43 ++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/gui/GlobalPropsDialog.cxx b/src/gui/GlobalPropsDialog.cxx index 5c4957b46..4ac154d93 100644 --- a/src/gui/GlobalPropsDialog.cxx +++ b/src/gui/GlobalPropsDialog.cxx @@ -47,7 +47,7 @@ GlobalPropsDialog::GlobalPropsDialog(GuiObject* boss, const GUI::Font& font) // Set real dimensions _w = lwidth + pwidth + fontWidth*3 + 15; - _h = 15 * (lineHeight + 4) + buttonHeight + 10 + _th; + _h = 15 * (lineHeight + 4) + buttonHeight + 16 + _th; xpos = 10; ypos = 10 + _th; @@ -56,19 +56,31 @@ GlobalPropsDialog::GlobalPropsDialog(GuiObject* boss, const GUI::Font& font) for(int i = 0; i < int(BSType::NumSchemes); ++i) VarList::push_back(items, BSList[i].desc, BSList[i].name); myBSType = new PopUpWidget(this, font, xpos+lwidth, ypos, - pwidth, lineHeight, items, "", 0, 0); + pwidth, lineHeight, items, ""); wid.push_back(myBSType); - ypos += lineHeight + VGAP*2; + ypos += lineHeight + VGAP * 3; + + pwidth = font.getStringWidth("Debugger"); + + // TV type + new StaticTextWidget(this, font, xpos, ypos + 1, "TV type"); + items.clear(); + VarList::push_back(items, "Default", "DEFAULT"); + VarList::push_back(items, "Color", "COLOR"); + VarList::push_back(items, "B/W", "BW"); + myTVType = new PopUpWidget(this, font, xpos + lwidth, ypos, + pwidth, lineHeight, items, ""); + wid.push_back(myTVType); + ypos += lineHeight + VGAP; // Left difficulty - pwidth = font.getStringWidth("Debugger"); new StaticTextWidget(this, font, xpos, ypos+1, "Left difficulty"); items.clear(); VarList::push_back(items, "Default", "DEFAULT"); VarList::push_back(items, "B", "B"); VarList::push_back(items, "A", "A"); myLeftDiff = new PopUpWidget(this, font, xpos+lwidth, ypos, - pwidth, lineHeight, items, "", 0, 0); + pwidth, lineHeight, items, ""); wid.push_back(myLeftDiff); ypos += lineHeight + VGAP; @@ -76,20 +88,9 @@ GlobalPropsDialog::GlobalPropsDialog(GuiObject* boss, const GUI::Font& font) new StaticTextWidget(this, font, xpos, ypos+1, "Right difficulty"); // ... use same items as above myRightDiff = new PopUpWidget(this, font, xpos+lwidth, ypos, - pwidth, lineHeight, items, "", 0, 0); + pwidth, lineHeight, items, ""); wid.push_back(myRightDiff); - ypos += lineHeight + VGAP; - - // TV type - new StaticTextWidget(this, font, xpos, ypos+1, "TV type"); - items.clear(); - VarList::push_back(items, "Default", "DEFAULT"); - VarList::push_back(items, "Color", "COLOR"); - VarList::push_back(items, "B & W", "BW"); - myTVType = new PopUpWidget(this, font, xpos+lwidth, ypos, - pwidth, lineHeight, items, "", 0, 0); - wid.push_back(myTVType); - ypos += lineHeight + VGAP*2; + ypos += lineHeight + VGAP * 3; // Start in debugger mode new StaticTextWidget(this, font, xpos, ypos+1, "Startup mode"); @@ -97,9 +98,9 @@ GlobalPropsDialog::GlobalPropsDialog(GuiObject* boss, const GUI::Font& font) VarList::push_back(items, "Console", "false"); VarList::push_back(items, "Debugger", "true"); myDebug = new PopUpWidget(this, font, xpos+lwidth, ypos, - pwidth, lineHeight, items, "", 0, 0); + pwidth, lineHeight, items, ""); wid.push_back(myDebug); - ypos += lineHeight + VGAP*3; + ypos += lineHeight + VGAP * 3; // Start console with buttons held down new StaticTextWidget(this, font, xpos, ypos+1, @@ -109,7 +110,7 @@ GlobalPropsDialog::GlobalPropsDialog(GuiObject* boss, const GUI::Font& font) "(automatically released shortly after start)"); // Start with console joystick direction/buttons held down - xpos = 32; ypos += infofont.getLineHeight() + VGAP*2; + xpos = 32; ypos += infofont.getLineHeight() + VGAP * 2; ypos = addHoldWidgets(font, xpos, ypos, wid); // Add message concerning usage From 56437c38e6dbee52bd6cf64d2564d2c8c5b58460 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 12:34:40 -0230 Subject: [PATCH 024/126] Increased warning level in Visual Studio compiles. Also fixed some new warnings that VS now finds. --- src/cheat/BankRomCheat.cxx | 4 ++-- src/cheat/CheetahCheat.cxx | 4 ++-- src/common/AudioQueue.cxx | 2 +- src/common/tv_filters/AtariNTSC.cxx | 4 ++-- src/debugger/CartDebug.cxx | 3 ++- src/debugger/Debugger.cxx | 2 +- src/debugger/DebuggerParser.cxx | 5 +++-- src/debugger/DiStella.cxx | 2 +- src/debugger/gui/PromptWidget.cxx | 2 +- src/emucore/CartAR.cxx | 6 +++--- src/emucore/CartDPC.cxx | 5 ++++- src/emucore/CartDPCPlus.cxx | 5 ++++- src/emucore/Console.cxx | 3 ++- src/emucore/KidVid.cxx | 4 ++++ src/emucore/PointingDevice.cxx | 2 +- src/emucore/TIASurface.cxx | 10 +++++----- src/gui/TabWidget.cxx | 8 ++------ src/libpng/pngpriv.h | 4 ++++ src/windows/FSNodeWINDOWS.cxx | 7 +++---- src/windows/Stella.vcxproj | 20 ++++++++++++-------- 20 files changed, 59 insertions(+), 43 deletions(-) diff --git a/src/cheat/BankRomCheat.cxx b/src/cheat/BankRomCheat.cxx index ffe310a38..34ebb00c9 100644 --- a/src/cheat/BankRomCheat.cxx +++ b/src/cheat/BankRomCheat.cxx @@ -29,8 +29,8 @@ BankRomCheat::BankRomCheat(OSystem& os, const string& name, const string& code) bank = unhex(myCode.substr(0, 2)); address = 0xf000 + unhex(myCode.substr(2, 3)); - value = unhex(myCode.substr(5, 2)); - count = unhex(myCode.substr(7, 1)) + 1; + value = uInt8(unhex(myCode.substr(5, 2))); + count = uInt8(unhex(myCode.substr(7, 1)) + 1); // Back up original data; we need this if the cheat is ever disabled for(int i = 0; i < count; ++i) diff --git a/src/cheat/CheetahCheat.cxx b/src/cheat/CheetahCheat.cxx index 30f9c9a0a..e0027037d 100644 --- a/src/cheat/CheetahCheat.cxx +++ b/src/cheat/CheetahCheat.cxx @@ -25,8 +25,8 @@ CheetahCheat::CheetahCheat(OSystem& os, const string& name, const string& code) : Cheat(os, name, code) { address = 0xf000 + unhex(code.substr(0, 3)); - value = unhex(code.substr(3, 2)); - count = unhex(code.substr(5, 1)) + 1; + value = uInt8(unhex(code.substr(3, 2))); + count = uInt8(unhex(code.substr(5, 1)) + 1); // Back up original data; we need this if the cheat is ever disabled for(int i = 0; i < count; ++i) diff --git a/src/common/AudioQueue.cxx b/src/common/AudioQueue.cxx index 251796a9c..1bdb6f133 100644 --- a/src/common/AudioQueue.cxx +++ b/src/common/AudioQueue.cxx @@ -85,7 +85,7 @@ Int16* AudioQueue::enqueue(Int16* fragment) return newFragment; } - const uInt8 capacity = myFragmentQueue.size(); + const uInt8 capacity = uInt8(myFragmentQueue.size()); const uInt8 fragmentIndex = (myNextFragment + mySize) % capacity; newFragment = myFragmentQueue.at(fragmentIndex); diff --git a/src/common/tv_filters/AtariNTSC.cxx b/src/common/tv_filters/AtariNTSC.cxx index 30782f1e8..2bb63d4ab 100644 --- a/src/common/tv_filters/AtariNTSC.cxx +++ b/src/common/tv_filters/AtariNTSC.cxx @@ -383,7 +383,7 @@ void AtariNTSC::initFilters(init_t& impl, const Setup& setup) /* generate luma (y) filter using sinc kernel */ { /* sinc with rolloff (dsf) */ - float const rolloff = 1 + float(setup.sharpness) * 0.032; + float const rolloff = 1 + float(setup.sharpness) * 0.032f; float const maxh = 32; float const pow_a_n = float(pow( rolloff, maxh )); float sum; @@ -406,7 +406,7 @@ void AtariNTSC::initFilters(init_t& impl, const Setup& setup) pow_a_n * rolloff * float(cos( (maxh - 1) * angle )); float den = 1 - rolloff_cos_a - rolloff_cos_a + rolloff * rolloff; float dsf = num / den; - kernels [kernel_size * 3 / 2 - kernel_half + i] = dsf - 0.5; + kernels [kernel_size * 3 / 2 - kernel_half + i] = dsf - 0.5f; } } diff --git a/src/debugger/CartDebug.cxx b/src/debugger/CartDebug.cxx index 3faaa2006..2df4dd8c3 100644 --- a/src/debugger/CartDebug.cxx +++ b/src/debugger/CartDebug.cxx @@ -1101,6 +1101,7 @@ string CartDebug::saveDisassembly() } // Some boilerplate, similar to what DiStella adds +// FIXME - change 'time' to proper C++ way - unsafe function time_t currtime; time(&currtime); out << "; Disassembly of " << myOSystem.romFile().getShortPath() << "\n" @@ -1292,7 +1293,7 @@ string CartDebug::clearConfig(int bank) endbank = startbank + 1; } - uInt32 count = 0; + size_t count = 0; for(uInt32 b = startbank; b < endbank; ++b) { count += myBankInfo[b].directiveList.size(); diff --git a/src/debugger/Debugger.cxx b/src/debugger/Debugger.cxx index 886ea9b76..23f5ebbcf 100644 --- a/src/debugger/Debugger.cxx +++ b/src/debugger/Debugger.cxx @@ -717,7 +717,7 @@ const FunctionDefMap Debugger::getFunctionDefMap() const string Debugger::builtinHelp() const { ostringstream buf; - uInt16 len, c_maxlen = 0, i_maxlen = 0; + size_t len, c_maxlen = 0, i_maxlen = 0; // Get column widths for aligned output (functions) for(uInt32 i = 0; i < NUM_BUILTIN_FUNCS; ++i) diff --git a/src/debugger/DebuggerParser.cxx b/src/debugger/DebuggerParser.cxx index 3640e4584..d16407cf5 100644 --- a/src/debugger/DebuggerParser.cxx +++ b/src/debugger/DebuggerParser.cxx @@ -1235,10 +1235,10 @@ void DebuggerParser::executeHelp() if(argCount == 0) // normal help, show all commands { // Find length of longest command - uInt16 clen = 0; + size_t clen = 0; for(int i = 0; i < kNumCommands; ++i) { - uInt16 len = commands[i].cmdString.length(); + size_t len = commands[i].cmdString.length(); if(len > clen) clen = len; } @@ -1789,6 +1789,7 @@ void DebuggerParser::executeSaveses() struct tm* timeinfo; char buffer[80]; +// FIXME - change 'time' to proper C++ way - unsafe function time(&currtime); timeinfo = localtime(&currtime); strftime(buffer, 80, "session_%F_%H-%M-%S.txt", timeinfo); diff --git a/src/debugger/DiStella.cxx b/src/debugger/DiStella.cxx index 142c4e9e8..9a5235dc4 100644 --- a/src/debugger/DiStella.cxx +++ b/src/debugger/DiStella.cxx @@ -883,7 +883,7 @@ int DiStella::mark(uInt32 address, uInt8 mask, bool directive) return 3; } else if (type == CartDebug::ADDR_ZPRAM && myOffset != 0) { return 5; - } else if (address >= myOffset && address <= myAppData.end + myOffset) { + } else if (address >= uInt32(myOffset) && address <= uInt32(myAppData.end + myOffset)) { myLabels[address - myOffset] = myLabels[address - myOffset] | mask; if (directive) myDirectives[address - myOffset] = mask; return 1; diff --git a/src/debugger/gui/PromptWidget.cxx b/src/debugger/gui/PromptWidget.cxx index e125de801..a9b6ba8ee 100644 --- a/src/debugger/gui/PromptWidget.cxx +++ b/src/debugger/gui/PromptWidget.cxx @@ -689,7 +689,7 @@ void PromptWidget::textPaste() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void PromptWidget::addToHistory(const char* str) { - strncpy(_history[_historyIndex], str, kLineBufferSize-1); + strncpy(_history[_historyIndex], str, kLineBufferSize-1); //FIXME - unsafe function _historyIndex = (_historyIndex + 1) % kHistorySize; _historyLine = 0; diff --git a/src/emucore/CartAR.cxx b/src/emucore/CartAR.cxx index b4b28b525..738759e79 100644 --- a/src/emucore/CartAR.cxx +++ b/src/emucore/CartAR.cxx @@ -116,7 +116,7 @@ uInt8 CartridgeAR::peek(uInt16 addr) // Is the data hold register being set? if(!(addr & 0x0F00) && (!myWriteEnabled || !myWritePending)) { - myDataHoldRegister = addr; + myDataHoldRegister = uInt8(addr); // FIXME - check cast here myNumberOfDistinctAccesses = mySystem->m6502().distinctAccesses(); myWritePending = true; } @@ -163,7 +163,7 @@ bool CartridgeAR::poke(uInt16 addr, uInt8) // Is the data hold register being set? if(!(addr & 0x0F00) && (!myWriteEnabled || !myWritePending)) { - myDataHoldRegister = addr; + myDataHoldRegister = uInt8(addr); // FIXME - check cast here myNumberOfDistinctAccesses = mySystem->m6502().distinctAccesses(); myWritePending = true; } @@ -400,7 +400,7 @@ void CartridgeAR::loadIntoRAM(uInt8 load) bool CartridgeAR::bank(uInt16 bank) { if(!bankLocked()) - return bankConfiguration(bank); + return bankConfiguration(uInt8(bank)); else return false; } diff --git a/src/emucore/CartDPC.cxx b/src/emucore/CartDPC.cxx index 8a7247170..71567551e 100644 --- a/src/emucore/CartDPC.cxx +++ b/src/emucore/CartDPC.cxx @@ -39,7 +39,10 @@ CartridgeDPC::CartridgeDPC(const BytePtr& image, uInt32 size, // Initialize the DPC data fetcher registers for(int i = 0; i < 8; ++i) - myTops[i] = myBottoms[i] = myCounters[i] = myFlags[i] = 0; + { + myTops[i] = myBottoms[i] = myFlags[i] = 0; + myCounters[i] = 0; + } // None of the data fetchers are in music mode myMusicMode[0] = myMusicMode[1] = myMusicMode[2] = false; diff --git a/src/emucore/CartDPCPlus.cxx b/src/emucore/CartDPCPlus.cxx index e457e1d4f..a6200c430 100644 --- a/src/emucore/CartDPCPlus.cxx +++ b/src/emucore/CartDPCPlus.cxx @@ -90,8 +90,11 @@ void CartridgeDPCPlus::setInitialState() // Initialize the DPC data fetcher registers for(int i = 0; i < 8; ++i) - myTops[i] = myBottoms[i] = myCounters[i] = myFractionalIncrements[i] = + { + myTops[i] = myBottoms[i] = myFractionalIncrements[i] = 0; myFractionalCounters[i] = 0; + myCounters[i] = 0; + } // Set waveforms to first waveform entry myMusicWaveforms[0] = myMusicWaveforms[1] = myMusicWaveforms[2] = 0; diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index 38fd9cbbf..5977184ed 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -981,7 +981,8 @@ void Console::generateColorLossPalette() float Console::getFramerate() const { return - (myConsoleTiming == ConsoleTiming::ntsc ? 262. * 60. : 312. * 50.) / myTIA->frameBufferScanlinesLastFrame(); + (myConsoleTiming == ConsoleTiming::ntsc ? 262.f * 60.f : 312.f * 50.f) / + myTIA->frameBufferScanlinesLastFrame(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/KidVid.cxx b/src/emucore/KidVid.cxx index fc8b152ec..35603b2ec 100644 --- a/src/emucore/KidVid.cxx +++ b/src/emucore/KidVid.cxx @@ -162,6 +162,7 @@ cerr << "myTape = " << myTape << endl; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void KidVid::openSampleFile() { +#if 0 static const char* const kvNameTable[6] = { "kvs3.wav", "kvs1.wav", "kvs2.wav", "kvb3.wav", "kvb1.wav", "kvb2.wav" }; @@ -202,17 +203,20 @@ cerr << "opened file: " << "kvshared.wav" << endl; myTapeBusy = false; myFilePointer = StartSong[i]; } +#endif } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void KidVid::closeSampleFile() { +#if 0 if(myFileOpened) { fclose(mySampleFile); fclose(mySharedSampleFile); myFileOpened = false; } +#endif } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/PointingDevice.cxx b/src/emucore/PointingDevice.cxx index c67fc9905..3b299ae57 100644 --- a/src/emucore/PointingDevice.cxx +++ b/src/emucore/PointingDevice.cxx @@ -117,7 +117,7 @@ bool PointingDevice::setMouseControl( void PointingDevice::setSensitivity(int sensitivity) { BSPF::clamp(sensitivity, 1, 20, 10); - TB_SENSITIVITY = sensitivity / 10.0; + TB_SENSITIVITY = sensitivity / 10.0f; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/TIASurface.cxx b/src/emucore/TIASurface.cxx index b080d0f5a..5929f9097 100644 --- a/src/emucore/TIASurface.cxx +++ b/src/emucore/TIASurface.cxx @@ -221,12 +221,12 @@ void TIASurface::enableScanlineInterpolation(bool enable) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void TIASurface::enablePhosphor(bool enable, int blend) { - if(myUsePhosphor == enable && myPhosphorPercent == blend / 100.0) + if(myUsePhosphor == enable && myPhosphorPercent == blend / 100.0f) return; myUsePhosphor = enable; if(blend >= 0) - myPhosphorPercent = blend / 100.0; + myPhosphorPercent = blend / 100.0f; myFilter = Filter(enable ? uInt8(myFilter) | 0x01 : uInt8(myFilter) & 0x10); memset(myRGBFramebuffer, 0, sizeof(myRGBFramebuffer)); @@ -234,9 +234,9 @@ void TIASurface::enablePhosphor(bool enable, int blend) // Precalculate the average colors for the 'phosphor' effect if(myUsePhosphor) { - for(Int16 c = 255; c >= 0; c--) - for(Int16 p = 255; p >= 0; p--) - myPhosphorPalette[c][p] = getPhosphor(c, p); + for(int c = 255; c >= 0; c--) + for(int p = 255; p >= 0; p--) + myPhosphorPalette[c][p] = getPhosphor(uInt8(c), uInt8(p)); myNTSCFilter.setPhosphorPalette(myPhosphorPalette); } diff --git a/src/gui/TabWidget.cxx b/src/gui/TabWidget.cxx index c4a9ac6c5..82d8923d7 100644 --- a/src/gui/TabWidget.cxx +++ b/src/gui/TabWidget.cxx @@ -210,12 +210,8 @@ void TabWidget::handleMouseLeft() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void TabWidget::handleCommand(CommandSender* sender, int cmd, int data, int id) { - switch(cmd) - { - default: - sendCommand(cmd, data, _id); - break; - } + // Command is not inspected; simply forward it to the caller + sendCommand(cmd, data, _id); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/libpng/pngpriv.h b/src/libpng/pngpriv.h index 3581f6791..4fb952562 100644 --- a/src/libpng/pngpriv.h +++ b/src/libpng/pngpriv.h @@ -1,3 +1,7 @@ +// Added by SA: TODO - find a better way to do this +#ifdef BSPF_WINDOWS + #define _CRT_SECURE_NO_WARNINGS +#endif /* pngpriv.h - private declarations for use inside libpng * diff --git a/src/windows/FSNodeWINDOWS.cxx b/src/windows/FSNodeWINDOWS.cxx index 0671d1e05..f65cc7aea 100644 --- a/src/windows/FSNodeWINDOWS.cxx +++ b/src/windows/FSNodeWINDOWS.cxx @@ -251,12 +251,11 @@ bool FilesystemNodeWINDOWS:: // Files enumeration WIN32_FIND_DATA desc; HANDLE handle; - char searchPath[MAX_PATH + 10]; - sprintf(searchPath, "%s*", _path.c_str()); - - handle = FindFirstFile(toUnicode(searchPath), &desc); + ostringstream searchPath; + searchPath << _path << "*"; + handle = FindFirstFile(searchPath.str().c_str(), &desc); if(handle == INVALID_HANDLE_VALUE) return false; diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index 86989ac22..0a095e553 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -108,7 +108,6 @@ - /MP /std:c++latest %(AdditionalOptions) Disabled ..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories) BSPF_WINDOWS;WIN32;NDEBUG;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions) @@ -117,10 +116,12 @@ MultiThreadedDLL - Level2 + Level3 EditAndContinue $(IntDir)%(RelativeDir) StreamingSIMDExtensions + stdcpp17 + true SDL2.lib;SDL2main.lib;SDL2main.lib;%(AdditionalDependencies) @@ -140,7 +141,6 @@ X64 - /MP /std:c++latest %(AdditionalOptions) Disabled ..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories) BSPF_WINDOWS;WIN32;NDEBUG;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions) @@ -149,9 +149,11 @@ MultiThreadedDLL - Level2 + Level3 ProgramDatabase $(IntDir)%(RelativeDir) + stdcpp17 + true SDL2.lib;SDL2main.lib;SDL2main.lib;%(AdditionalDependencies) @@ -168,7 +170,6 @@ - /MP /std:c++latest %(AdditionalOptions) true false ..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories) @@ -177,10 +178,12 @@ false - Level2 + Level3 ProgramDatabase $(IntDir)%(RelativeDir) StreamingSIMDExtensions + stdcpp17 + true SDL2.lib;SDL2main.lib;SDL2main.lib;%(AdditionalDependencies) @@ -201,7 +204,6 @@ X64 - /MP /std:c++latest %(AdditionalOptions) Full Default true @@ -211,9 +213,11 @@ false - Level2 + Level3 ProgramDatabase $(IntDir)%(RelativeDir) + stdcpp17 + true SDL2.lib;SDL2main.lib;%(AdditionalDependencies) From e3bf1ffbd5caa2648710fbc33f7b7e1d70de93a3 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 15:01:03 -0230 Subject: [PATCH 025/126] More updates to Visual Studio compiler settings: - Increase warning level to 4, and fix a few new warnings - Globally, all files are now explictly compiled in C++ mode - For png and zlib code (that we didn't write), drop back to level 2 warnings and explicitly compile in C mode --- src/common/main.cxx | 2 +- src/common/tv_filters/AtariNTSC.cxx | 10 +- src/debugger/gui/DebuggerDialog.cxx | 1 - src/debugger/gui/RamWidget.cxx | 1 - src/emucore/M6502.cxx | 2 +- src/gui/HelpDialog.cxx | 1 - src/gui/LauncherDialog.cxx | 1 - src/libpng/pngpriv.h | 5 - src/windows/Stella.vcxproj | 346 +++++++++++++++++++++++++--- 9 files changed, 320 insertions(+), 49 deletions(-) diff --git a/src/common/main.cxx b/src/common/main.cxx index c275d5bc7..503f46a20 100644 --- a/src/common/main.cxx +++ b/src/common/main.cxx @@ -151,7 +151,7 @@ int main(int argc, char* argv[]) if(initBreak != "") { Debugger& dbg = theOSystem->debugger(); - int bp = dbg.stringToValue(initBreak); + uInt16 bp = uInt16(dbg.stringToValue(initBreak)); dbg.setBreakPoint(bp, true); theOSystem->settings().setValue("break", ""); } diff --git a/src/common/tv_filters/AtariNTSC.cxx b/src/common/tv_filters/AtariNTSC.cxx index 2bb63d4ab..7f5950003 100644 --- a/src/common/tv_filters/AtariNTSC.cxx +++ b/src/common/tv_filters/AtariNTSC.cxx @@ -299,8 +299,10 @@ void AtariNTSC::renderWithPhosphorThread(const uInt8* atari_in, const uInt32 in_ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - inline uInt32 AtariNTSC::getRGBPhosphor(const uInt32 c, const uInt32 p) const { -#define TO_RGB(color, red, green, blue) \ - const uInt8 red = color >> 16; const uInt8 green = color >> 8; const uInt8 blue = color; +#define TO_RGB(color, red, green, blue) \ + const uInt8 red = uInt8(color >> 16); \ + const uInt8 green = uInt8(color >> 8);\ + const uInt8 blue = uInt8(color); TO_RGB(c, rc, gc, bc); TO_RGB(p, rp, gp, bp); @@ -332,7 +334,7 @@ void AtariNTSC::init(init_t& impl, const Setup& setup) initFilters(impl, setup); /* generate gamma table */ - if ( gamma_size > 1 ) + if constexpr( gamma_size > 1 ) { float const to_float = 1.0f / (gamma_size - (gamma_size > 1)); float const gamma = 1.1333f - float(setup.gamma) * 0.5f; @@ -367,7 +369,7 @@ void AtariNTSC::init(init_t& impl, const Setup& setup) *out++ = i * s + q * c; } while ( --n2 ); - if ( burst_count <= 1 ) + if constexpr( burst_count <= 1 ) break; ROTATE_IQ( s, c, 0.866025f, -0.5f ); /* +120 degrees */ } diff --git a/src/debugger/gui/DebuggerDialog.cxx b/src/debugger/gui/DebuggerDialog.cxx index 28c14458e..f867233dd 100644 --- a/src/debugger/gui/DebuggerDialog.cxx +++ b/src/debugger/gui/DebuggerDialog.cxx @@ -482,7 +482,6 @@ void DebuggerDialog::addRomArea() const GUI::Rect& r = getRomBounds(); const int VBORDER = 4; - const string ELLIPSIS = "\x1d"; WidgetArray wid1, wid2; ButtonWidget* b; diff --git a/src/debugger/gui/RamWidget.cxx b/src/debugger/gui/RamWidget.cxx index 9002313dd..529be6348 100644 --- a/src/debugger/gui/RamWidget.cxx +++ b/src/debugger/gui/RamWidget.cxx @@ -42,7 +42,6 @@ RamWidget::RamWidget(GuiObject* boss, const GUI::Font& lfont, const GUI::Font& n myNumRows(numrows), myPageSize(pagesize) { - const string ELLIPSIS = "\x1d"; const int bwidth = lfont.getStringWidth("Compare " + ELLIPSIS), bheight = myLineHeight + 2; const int VGAP = 4; diff --git a/src/emucore/M6502.cxx b/src/emucore/M6502.cxx index 39bd4a1b4..c3755086b 100644 --- a/src/emucore/M6502.cxx +++ b/src/emucore/M6502.cxx @@ -119,7 +119,7 @@ void M6502::reset() myHaltRequested = false; myGhostReadsTrap = mySettings.getBool("dbg.ghostreadstrap"); - myLastBreakCycle = -1; + myLastBreakCycle = ULLONG_MAX; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/gui/HelpDialog.cxx b/src/gui/HelpDialog.cxx index c645df45c..330a56cc1 100644 --- a/src/gui/HelpDialog.cxx +++ b/src/gui/HelpDialog.cxx @@ -28,7 +28,6 @@ HelpDialog::HelpDialog(OSystem& osystem, DialogContainer& parent, myPage(1), myNumPages(5) { - const string ELLIPSIS = "\x1d"; const int lineHeight = font.getLineHeight(), fontWidth = font.getMaxCharWidth(), fontHeight = font.getFontHeight(), diff --git a/src/gui/LauncherDialog.cxx b/src/gui/LauncherDialog.cxx index 58be4f23b..c1bd41cd2 100644 --- a/src/gui/LauncherDialog.cxx +++ b/src/gui/LauncherDialog.cxx @@ -54,7 +54,6 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent, myRomInfoWidget(nullptr), mySelectedItem(0) { - const string ELLIPSIS = "\x1d"; const GUI::Font& font = instance().frameBuffer().launcherFont(); const int HBORDER = 10; diff --git a/src/libpng/pngpriv.h b/src/libpng/pngpriv.h index 4fb952562..cd395c96d 100644 --- a/src/libpng/pngpriv.h +++ b/src/libpng/pngpriv.h @@ -1,8 +1,3 @@ -// Added by SA: TODO - find a better way to do this -#ifdef BSPF_WINDOWS - #define _CRT_SECURE_NO_WARNINGS -#endif - /* pngpriv.h - private declarations for use inside libpng * * Last changed in libpng 1.6.35 [July 15, 2018] diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index 0a095e553..605b4f157 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -116,12 +116,14 @@ MultiThreadedDLL - Level3 + Level4 EditAndContinue $(IntDir)%(RelativeDir) StreamingSIMDExtensions stdcpp17 true + 4100;4244;%(DisableSpecificWarnings) + CompileAsCpp SDL2.lib;SDL2main.lib;SDL2main.lib;%(AdditionalDependencies) @@ -149,11 +151,13 @@ MultiThreadedDLL - Level3 + Level4 ProgramDatabase $(IntDir)%(RelativeDir) stdcpp17 true + 4100;4244;%(DisableSpecificWarnings) + CompileAsCpp SDL2.lib;SDL2main.lib;SDL2main.lib;%(AdditionalDependencies) @@ -178,12 +182,14 @@ false - Level3 + Level4 ProgramDatabase $(IntDir)%(RelativeDir) StreamingSIMDExtensions stdcpp17 true + 4100;4244;%(DisableSpecificWarnings) + CompileAsCpp SDL2.lib;SDL2main.lib;SDL2main.lib;%(AdditionalDependencies) @@ -213,11 +219,13 @@ false - Level3 + Level4 ProgramDatabase $(IntDir)%(RelativeDir) stdcpp17 true + 4100;4244;%(DisableSpecificWarnings) + CompileAsCpp SDL2.lib;SDL2main.lib;%(AdditionalDependencies) @@ -496,36 +504,306 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + CompileAsC + CompileAsC + CompileAsC + CompileAsC + Level2 + Level2 + Level2 + Level2 + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + + + Level2 + Level2 + Level2 + Level2 + CompileAsC + CompileAsC + CompileAsC + CompileAsC + From 51b27340fd4fa68f9996777286bc5f06f273f39b Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 16:27:59 -0230 Subject: [PATCH 026/126] Fix warnings detected by clang. --- src/common/bspf.hxx | 1 + src/emucore/KidVid.cxx | 4 ++-- src/emucore/KidVid.hxx | 2 +- src/emucore/PointingDevice.cxx | 2 -- src/gui/GlobalPropsDialog.cxx | 1 - 5 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/common/bspf.hxx b/src/common/bspf.hxx index a26d9f5a3..8a1d47da6 100644 --- a/src/common/bspf.hxx +++ b/src/common/bspf.hxx @@ -25,6 +25,7 @@ @author Bradford W. Mott and Stephen Anthony */ +#include #include // Types for 8/16/32/64-bit signed and unsigned integers using Int8 = int8_t; diff --git a/src/emucore/KidVid.cxx b/src/emucore/KidVid.cxx index 35603b2ec..f9e387140 100644 --- a/src/emucore/KidVid.cxx +++ b/src/emucore/KidVid.cxx @@ -25,8 +25,8 @@ KidVid::KidVid(Jack jack, const Event& event, const System& system, const string& rommd5) : Controller(jack, event, system, Controller::KidVid), myEnabled(myJack == Right), - mySampleFile(nullptr), - mySharedSampleFile(nullptr), +// mySampleFile(nullptr), +// mySharedSampleFile(nullptr), myFileOpened(false), myTapeBusy(false), myFilePointer(0), diff --git a/src/emucore/KidVid.hxx b/src/emucore/KidVid.hxx index 1647c30a3..8365a3d15 100644 --- a/src/emucore/KidVid.hxx +++ b/src/emucore/KidVid.hxx @@ -83,7 +83,7 @@ class KidVid : public Controller bool myEnabled; // The file handles for the WAV files - FILE *mySampleFile, *mySharedSampleFile; + // FILE *mySampleFile, *mySharedSampleFile; // Indicates if sample files have been successfully opened bool myFileOpened; diff --git a/src/emucore/PointingDevice.cxx b/src/emucore/PointingDevice.cxx index 3b299ae57..62b68ae4d 100644 --- a/src/emucore/PointingDevice.cxx +++ b/src/emucore/PointingDevice.cxx @@ -15,8 +15,6 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include - #include "Control.hxx" #include "Event.hxx" #include "System.hxx" diff --git a/src/gui/GlobalPropsDialog.cxx b/src/gui/GlobalPropsDialog.cxx index 4ac154d93..bc3481e6e 100644 --- a/src/gui/GlobalPropsDialog.cxx +++ b/src/gui/GlobalPropsDialog.cxx @@ -132,7 +132,6 @@ GlobalPropsDialog::GlobalPropsDialog(GuiObject* boss, const GUI::Font& font) int GlobalPropsDialog::addHoldWidgets(const GUI::Font& font, int x, int y, WidgetArray& wid) { - const int fontHeight = font.getFontHeight(); int xpos = x, ypos = y; const int VGAP = 4; From 4a2a07d5a7a696230cc6115c73577cc75d119928 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 17:03:09 -0230 Subject: [PATCH 027/126] Fix warning in VS; make comparison use constexpr. --- src/gui/AudioDialog.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/AudioDialog.cxx b/src/gui/AudioDialog.cxx index 15611489d..ab7450733 100644 --- a/src/gui/AudioDialog.cxx +++ b/src/gui/AudioDialog.cxx @@ -227,7 +227,7 @@ void AudioDialog::setDefaults() mySoundEnableCheckbox->setState(AudioSettings::DEFAULT_ENABLED); myModePopup->setSelected(static_cast(AudioSettings::DEFAULT_PRESET)); - if (AudioSettings::DEFAULT_PRESET == AudioSettings::Preset::custom) { + if constexpr(AudioSettings::DEFAULT_PRESET == AudioSettings::Preset::custom) { myFragsizePopup->setSelected(AudioSettings::DEFAULT_FRAGMENT_SIZE); myFreqPopup->setSelected(AudioSettings::DEFAULT_SAMPLE_RATE); myHeadroomSlider->setValue(AudioSettings::DEFAULT_HEADROOM); From 6cd5c9d3271029269185352525da155ecb660a86 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 17:03:54 -0230 Subject: [PATCH 028/126] Fix API for TogglePixelWidget to properly use ColorId datatypes. --- src/debugger/gui/TiaWidget.cxx | 16 ++++++++-------- src/debugger/gui/TogglePixelWidget.cxx | 2 +- src/debugger/gui/TogglePixelWidget.hxx | 11 +++++------ 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/debugger/gui/TiaWidget.cxx b/src/debugger/gui/TiaWidget.cxx index 0fad9a0d9..40a954b3d 100644 --- a/src/debugger/gui/TiaWidget.cxx +++ b/src/debugger/gui/TiaWidget.cxx @@ -173,7 +173,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont, myGRP0 = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 8, 1); myGRP0->setTarget(this); myGRP0->setID(kGRP0ID); - myGRP0->setBackgroundColor(-1); + myGRP0->clearBackgroundColor(); addFocusWidget(myGRP0); // posP0 @@ -220,7 +220,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont, myGRP0Old = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 8, 1); myGRP0Old->setTarget(this); myGRP0Old->setID(kGRP0OldID); - myGRP0Old->setBackgroundColor(-1); + myGRP0Old->clearBackgroundColor(); addFocusWidget(myGRP0Old); // P0 delay @@ -258,7 +258,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont, myGRP1 = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 8, 1); myGRP1->setTarget(this); myGRP1->setID(kGRP1ID); - myGRP1->setBackgroundColor(-1); + myGRP1->clearBackgroundColor(); addFocusWidget(myGRP1); // posP1 @@ -304,7 +304,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont, myGRP1Old = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 8, 1); myGRP1Old->setTarget(this); myGRP1Old->setID(kGRP1OldID); - myGRP1Old->setBackgroundColor(-1); + myGRP1Old->clearBackgroundColor(); addFocusWidget(myGRP1Old); // P1 delay @@ -342,7 +342,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont, myEnaM0 = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 1, 1); myEnaM0->setTarget(this); myEnaM0->setID(kEnaM0ID); - myEnaM0->setBackgroundColor(-1); + myEnaM0->clearBackgroundColor(); addFocusWidget(myEnaM0); // posM0 @@ -405,7 +405,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont, myEnaM1 = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 1, 1); myEnaM1->setTarget(this); myEnaM1->setID(kEnaM1ID); - myEnaM1->setBackgroundColor(-1); + myEnaM1->clearBackgroundColor(); addFocusWidget(myEnaM1); // posM0 @@ -468,7 +468,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont, myEnaBL = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 1, 1); myEnaBL->setTarget(this); myEnaBL->setID(kEnaBLID); - myEnaBL->setBackgroundColor(-1); + myEnaBL->clearBackgroundColor(); addFocusWidget(myEnaBL); // posBL @@ -517,7 +517,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont, myEnaBLOld = new TogglePixelWidget(boss, nfont, xpos, ypos+1, 1, 1); myEnaBLOld->setTarget(this); myEnaBLOld->setID(kEnaBLOldID); - myEnaBLOld->setBackgroundColor(-1); + myEnaBLOld->clearBackgroundColor(); addFocusWidget(myEnaBLOld); // Ball delay diff --git a/src/debugger/gui/TogglePixelWidget.cxx b/src/debugger/gui/TogglePixelWidget.cxx index c8cba9b84..e42639a3b 100644 --- a/src/debugger/gui/TogglePixelWidget.cxx +++ b/src/debugger/gui/TogglePixelWidget.cxx @@ -26,7 +26,7 @@ TogglePixelWidget::TogglePixelWidget(GuiObject* boss, const GUI::Font& font, int x, int y, int cols, int rows) : ToggleWidget(boss, font, x, y, cols, rows, 1), - _pixelColor(0), + _pixelColor(kNone), _backgroundColor(kDlgColor), _swapBits(false), _crossBits(false) diff --git a/src/debugger/gui/TogglePixelWidget.hxx b/src/debugger/gui/TogglePixelWidget.hxx index e176bb76a..ae9bbb4f7 100644 --- a/src/debugger/gui/TogglePixelWidget.hxx +++ b/src/debugger/gui/TogglePixelWidget.hxx @@ -28,12 +28,11 @@ class TogglePixelWidget : public ToggleWidget int x, int y, int cols, int rows); virtual ~TogglePixelWidget() = default; - void setColor(ColorId color) { - _pixelColor = color <= kNumColors ? color : kDlgColor; - } - void setBackgroundColor(ColorId color) { - _backgroundColor = color <= kNumColors ? color : kDlgColor; - } + void setColor(ColorId color) { _pixelColor = color; } + void clearColor() { _pixelColor = kDlgColor; } + void setBackgroundColor(ColorId color) { _backgroundColor = color; } + void clearBackgroundColor() { _backgroundColor = kDlgColor; } + void setState(const BoolArray& state); void setIntState(int value, bool swap); From e425d8065fa08b4f5fab67e1d2cebbc6b6aaee97 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 19 Aug 2018 22:22:05 +0200 Subject: [PATCH 029/126] fixed warning in AtariNTSC.cxx --- src/common/tv_filters/AtariNTSC.cxx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/common/tv_filters/AtariNTSC.cxx b/src/common/tv_filters/AtariNTSC.cxx index 7f5950003..7abe3b9b3 100644 --- a/src/common/tv_filters/AtariNTSC.cxx +++ b/src/common/tv_filters/AtariNTSC.cxx @@ -369,9 +369,8 @@ void AtariNTSC::init(init_t& impl, const Setup& setup) *out++ = i * s + q * c; } while ( --n2 ); - if constexpr( burst_count <= 1 ) - break; - ROTATE_IQ( s, c, 0.866025f, -0.5f ); /* +120 degrees */ + if constexpr( burst_count > 1 ) + ROTATE_IQ( s, c, 0.866025f, -0.5f ); /* +120 degrees */ } while ( --n ); } From 24cd6cb21911c7175ff25a736e40f3aa36d97f73 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 19:53:47 -0230 Subject: [PATCH 030/126] Use proper C++ code for localtime and related functions. --- src/common/FrameBufferSDL2.cxx | 2 -- src/common/bspf.hxx | 20 ++++++++++++++++---- src/debugger/CartDebug.cxx | 8 ++------ src/debugger/DebuggerParser.cxx | 16 +++++----------- src/windows/Stella.vcxproj | 8 ++++---- 5 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/common/FrameBufferSDL2.cxx b/src/common/FrameBufferSDL2.cxx index 3e4c4840b..e12fb7c62 100644 --- a/src/common/FrameBufferSDL2.cxx +++ b/src/common/FrameBufferSDL2.cxx @@ -15,8 +15,6 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include - #include "SDL_lib.hxx" #include "bspf.hxx" diff --git a/src/common/bspf.hxx b/src/common/bspf.hxx index 8a1d47da6..0b6c6ee6e 100644 --- a/src/common/bspf.hxx +++ b/src/common/bspf.hxx @@ -49,6 +49,7 @@ using uInt64 = uint64_t; #include #include #include +#include #include #include @@ -94,10 +95,6 @@ namespace BSPF #define ATTRIBUTE_FMT_PRINTF __attribute__((__format__ (__printf__, 2, 0))) #elif defined(BSPF_WINDOWS) static const string PATH_SEPARATOR = "\\"; - #pragma warning (disable : 4146) // unary minus operator applied to unsigned type - #pragma warning(2:4264) // no override available for virtual member function from base 'class'; function is hidden - #pragma warning(2:4265) // class has virtual functions, but destructor is not virtual - #pragma warning(2:4266) // no override available for virtual member function from base 'type'; function is hidden #define ATTRIBUTE_FMT_PRINTF #else #error Update src/common/bspf.hxx for path separator @@ -215,6 +212,21 @@ namespace BSPF } return false; } + + // C++11 way to get local time + // Equivalent to the C-style localtime() function, but is thread-safe + inline std::tm localTime() + { + std::time_t currtime; + std::time(&currtime); + std::tm tm_snapshot; + #if defined BSPF_WINDOWS && !defined __GNUG__ + localtime_s(&tm_snapshot, &currtime); + #else + localtime_r(&currtime, &tm_snapshot); + #endif + return tm_snapshot; + } } // namespace BSPF #endif diff --git a/src/debugger/CartDebug.cxx b/src/debugger/CartDebug.cxx index 2df4dd8c3..743be9c7d 100644 --- a/src/debugger/CartDebug.cxx +++ b/src/debugger/CartDebug.cxx @@ -15,8 +15,6 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include - #include "bspf.hxx" #include "System.hxx" #include "M6502.hxx" @@ -1101,11 +1099,9 @@ string CartDebug::saveDisassembly() } // Some boilerplate, similar to what DiStella adds -// FIXME - change 'time' to proper C++ way - unsafe function - time_t currtime; - time(&currtime); + auto timeinfo = BSPF::localTime(); out << "; Disassembly of " << myOSystem.romFile().getShortPath() << "\n" - << "; Disassembled " << ctime(&currtime) + << "; Disassembled " << std::put_time(&timeinfo, "%c\n") << "; Using Stella " << STELLA_VERSION << "\n;\n" << "; ROM properties name : " << myConsole.properties().get(Cartridge_Name) << "\n" << "; ROM properties MD5 : " << myConsole.properties().get(Cartridge_MD5) << "\n" diff --git a/src/debugger/DebuggerParser.cxx b/src/debugger/DebuggerParser.cxx index d16407cf5..30dda84cc 100644 --- a/src/debugger/DebuggerParser.cxx +++ b/src/debugger/DebuggerParser.cxx @@ -1784,17 +1784,11 @@ void DebuggerParser::executeSaverom() // "saveses" void DebuggerParser::executeSaveses() { - // Create a file named with the current date and time - time_t currtime; - struct tm* timeinfo; - char buffer[80]; - -// FIXME - change 'time' to proper C++ way - unsafe function - time(&currtime); - timeinfo = localtime(&currtime); - strftime(buffer, 80, "session_%F_%H-%M-%S.txt", timeinfo); - - FilesystemNode file(debugger.myOSystem.defaultSaveDir() + buffer); + ostringstream filename; + auto timeinfo = BSPF::localTime(); + filename << debugger.myOSystem.defaultSaveDir() + << std::put_time(&timeinfo, "session_%F_%H-%M-%S.txt"); + FilesystemNode file(filename.str()); if(debugger.prompt().saveBuffer(file)) commandResult << "saved " + file.getShortPath() + " OK"; else diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index 605b4f157..eb36c19d3 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -122,7 +122,7 @@ StreamingSIMDExtensions stdcpp17 true - 4100;4244;%(DisableSpecificWarnings) + 4100;4146;4244;%(DisableSpecificWarnings) CompileAsCpp @@ -156,7 +156,7 @@ $(IntDir)%(RelativeDir) stdcpp17 true - 4100;4244;%(DisableSpecificWarnings) + 4100;4146;4244;%(DisableSpecificWarnings) CompileAsCpp @@ -188,7 +188,7 @@ StreamingSIMDExtensions stdcpp17 true - 4100;4244;%(DisableSpecificWarnings) + 4100;4146;4244;%(DisableSpecificWarnings) CompileAsCpp @@ -224,7 +224,7 @@ $(IntDir)%(RelativeDir) stdcpp17 true - 4100;4244;%(DisableSpecificWarnings) + 4100;4146;4244;%(DisableSpecificWarnings) CompileAsCpp From 6d5278fe0ca9b187932da5434937ffc45319f463 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 20:23:43 -0230 Subject: [PATCH 031/126] Well, that solves the problem of 'constexpr' IF. This is not supported in C++14, and this is the maximum we can use for now. --- src/common/tv_filters/AtariNTSC.cxx | 4 ++-- src/gui/AudioDialog.cxx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/common/tv_filters/AtariNTSC.cxx b/src/common/tv_filters/AtariNTSC.cxx index 7abe3b9b3..81dd03b36 100644 --- a/src/common/tv_filters/AtariNTSC.cxx +++ b/src/common/tv_filters/AtariNTSC.cxx @@ -334,7 +334,7 @@ void AtariNTSC::init(init_t& impl, const Setup& setup) initFilters(impl, setup); /* generate gamma table */ - if constexpr( gamma_size > 1 ) + if ( gamma_size > 1 ) { float const to_float = 1.0f / (gamma_size - (gamma_size > 1)); float const gamma = 1.1333f - float(setup.gamma) * 0.5f; @@ -369,7 +369,7 @@ void AtariNTSC::init(init_t& impl, const Setup& setup) *out++ = i * s + q * c; } while ( --n2 ); - if constexpr( burst_count > 1 ) + if ( burst_count > 1 ) ROTATE_IQ( s, c, 0.866025f, -0.5f ); /* +120 degrees */ } while ( --n ); diff --git a/src/gui/AudioDialog.cxx b/src/gui/AudioDialog.cxx index ab7450733..15611489d 100644 --- a/src/gui/AudioDialog.cxx +++ b/src/gui/AudioDialog.cxx @@ -227,7 +227,7 @@ void AudioDialog::setDefaults() mySoundEnableCheckbox->setState(AudioSettings::DEFAULT_ENABLED); myModePopup->setSelected(static_cast(AudioSettings::DEFAULT_PRESET)); - if constexpr(AudioSettings::DEFAULT_PRESET == AudioSettings::Preset::custom) { + if (AudioSettings::DEFAULT_PRESET == AudioSettings::Preset::custom) { myFragsizePopup->setSelected(AudioSettings::DEFAULT_FRAGMENT_SIZE); myFreqPopup->setSelected(AudioSettings::DEFAULT_SAMPLE_RATE); myHeadroomSlider->setValue(AudioSettings::DEFAULT_HEADROOM); From f87e5d73f13824ff7099919571e0a422c9ebb161 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 20:39:55 -0230 Subject: [PATCH 032/126] Remove debugging code; it seems like the testing is complete for redraws. --- src/gui/Dialog.cxx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/gui/Dialog.cxx b/src/gui/Dialog.cxx index 95abfeae3..94fcbc059 100644 --- a/src/gui/Dialog.cxx +++ b/src/gui/Dialog.cxx @@ -318,7 +318,6 @@ void Dialog::addSurface(shared_ptr surface) mySurfaceStack.push(surface); } -static int COUNT = 1; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Dialog::drawDialog() { @@ -327,7 +326,6 @@ void Dialog::drawDialog() FBSurface& s = surface(); -cerr << COUNT++ << " Dialog::drawDialog()\n"; // Dialog is still on top if e.g a ContextMenu is opened _onTop = parent().myDialogStack.top() == this || (parent().myDialogStack.get(parent().myDialogStack.size() - 2) == this From 9037af617d54116c1daceb12b08dcf3fce925d43 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 20:46:05 -0230 Subject: [PATCH 033/126] Fix warning in snprintf and g++7 and above. --- src/common/Base.cxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/common/Base.cxx b/src/common/Base.cxx index 1347300f3..aea0629ce 100644 --- a/src/common/Base.cxx +++ b/src/common/Base.cxx @@ -50,7 +50,7 @@ string Base::toString(int value, Common::Base::Format outputBase) case Base::F_2_16: // base 2: 2 bytes (16 bits) wide { int places = (outputBase == Base::F_2_8 || - (outputBase == Base::F_2 && value < 0x100)) ? 8 : 16; + (outputBase == Base::F_2 && value < 0x100)) ? 8 : 16; vToS_buf[places] = '\0'; int bit = 1; while(--places >= 0) { @@ -63,9 +63,9 @@ string Base::toString(int value, Common::Base::Format outputBase) case Base::F_10: // base 10: 3 or 5 bytes (depending on value) if(value < 0x100) - std::snprintf(vToS_buf, 4, "%3d", value); + std::snprintf(vToS_buf, 4, "%3d", value & 0xff); else - std::snprintf(vToS_buf, 6, "%5d", value); + std::snprintf(vToS_buf, 6, "%5d", value & 0xffff); break; case Base::F_10_02: // base 10: 2 digits (with leading zero) From 6184d8e130ed1c989599eea14ed7f4bc984143e8 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 21:32:47 -0230 Subject: [PATCH 034/126] Improved Common::Base hexadecimal handling: - Fixed warnings generated by clang about 'nonliteral' format specifiers - Upper/lowercase hex output (uhex command) now works for BUS/CDF schemes --- Changes.txt | 16 ++++++++-------- src/common/Base.cxx | 45 +++++++++++---------------------------------- src/common/Base.hxx | 12 ++++-------- 3 files changed, 23 insertions(+), 50 deletions(-) diff --git a/Changes.txt b/Changes.txt index 30c463ed8..4f575eab3 100644 --- a/Changes.txt +++ b/Changes.txt @@ -49,9 +49,6 @@ * Fixed bug in autodetecting Genesis controllers. - * The Linux builds now use the system-installed PNG and ZLIB libraries - by default. - * When starting Stella for the first time, the first ROM selected will determine which path to use by default for subsequent runs. @@ -63,20 +60,23 @@ * Fixed missing debug color update when switching display type. - * 'Fill to scanline' now works for scanlines above current scanline too + * 'Fill to scanline' now works for scanlines above current scanline too. - * For UNIX systems: in the ROM launcher, when using symlinks use the - symlink pathname instead of the underlying filesystem pathname. + * The debugger 'uhex' command is now honoured in CDF and BUS schemes. * Updated PAL palette. * Updated included PNG library to latest stable version. + * For UNIX systems: in the ROM launcher, when using symlinks use the + symlink pathname instead of the underlying filesystem pathname. + + * The Linux builds now use the system-installed PNG and ZLIB libraries + by default. + * For better compatibility, the Windows 32-bit version does not require SSE2 anymore. - * Simplified first start, ROM path is now set by first played ROM. - -Have fun! diff --git a/src/common/Base.cxx b/src/common/Base.cxx index aea0629ce..282e85564 100644 --- a/src/common/Base.cxx +++ b/src/common/Base.cxx @@ -19,21 +19,6 @@ namespace Common { -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Base::setHexUppercase(bool enable) -{ - if(enable) - { - myHexflags |= std::ios_base::uppercase; - myFmt = Base::myUpperFmt; - } - else - { - myHexflags &= ~std::ios_base::uppercase; - myFmt = Base::myLowerFmt; - } -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string Base::toString(int value, Common::Base::Format outputBase) { @@ -42,7 +27,6 @@ string Base::toString(int value, Common::Base::Format outputBase) if(outputBase == Base::F_DEFAULT) outputBase = myDefaultBase; - // Note: generates warnings about 'nonliteral' format switch(outputBase) { case Base::F_2: // base 2: 8 or 16 bits (depending on value) @@ -77,32 +61,34 @@ string Base::toString(int value, Common::Base::Format outputBase) break; case Base::F_16_1: // base 16: 1 byte wide - std::snprintf(vToS_buf, 2, myFmt[0], value); + std::snprintf(vToS_buf, 2, hexUppercase() ? "%1X" : "%1x", value); break; case Base::F_16_2: // base 16: 2 bytes wide - std::snprintf(vToS_buf, 3, myFmt[1], value); + std::snprintf(vToS_buf, 3, hexUppercase() ? "%02X" : "%02x", value); break; case Base::F_16_2_2: - std::snprintf(vToS_buf, 6, "%02X.%02X", value >> 8, value & 0xff ); + std::snprintf(vToS_buf, 6, hexUppercase() ? "%02X.%02X" : "%02x.%02x", + value >> 8, value & 0xff ); break; case Base::F_16_3_2: - std::snprintf(vToS_buf, 7, "%03X.%02X", value >> 8, value & 0xff ); + std::snprintf(vToS_buf, 7, hexUppercase() ? "%03X.%02X" : "%03x.%02x", + value >> 8, value & 0xff ); break; case Base::F_16_4: // base 16: 4 bytes wide - std::snprintf(vToS_buf, 5, myFmt[2], value); + std::snprintf(vToS_buf, 5, hexUppercase() ? "%04X" : "%04x", value); break; case Base::F_16_8: // base 16: 8 bytes wide - std::snprintf(vToS_buf, 9, myFmt[3], value); + std::snprintf(vToS_buf, 9, hexUppercase() ? "%08X" : "%08x", value); break; case Base::F_16: // base 16: 2, 4, 8 bytes (depending on value) default: if(value < 0x100) - std::snprintf(vToS_buf, 3, myFmt[1], value); + std::snprintf(vToS_buf, 3, hexUppercase() ? "%02X" : "%02x", value); else if(value < 0x10000) - std::snprintf(vToS_buf, 5, myFmt[2], value); + std::snprintf(vToS_buf, 5, hexUppercase() ? "%04X" : "%04x", value); else - std::snprintf(vToS_buf, 9, myFmt[3], value); + std::snprintf(vToS_buf, 9, hexUppercase() ? "%08X" : "%08x", value); break; } @@ -115,13 +101,4 @@ Base::Format Base::myDefaultBase = Base::F_16; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - std::ios_base::fmtflags Base::myHexflags = std::ios_base::hex; -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const char* const Base::myLowerFmt[4] = { - "%1x", "%02x", "%04x", "%08x" -}; -const char* const Base::myUpperFmt[4] = { - "%1X", "%02X", "%04X", "%08X" -}; -const char* const* Base::myFmt = Base::myLowerFmt; - } // Namespace Common diff --git a/src/common/Base.hxx b/src/common/Base.hxx index 8ccd739e2..5baa37ea2 100644 --- a/src/common/Base.hxx +++ b/src/common/Base.hxx @@ -61,7 +61,10 @@ class Base static Base::Format format() { return myDefaultBase; } /** Get/set HEX output to be upper/lower case */ - static void setHexUppercase(bool enable); + static void setHexUppercase(bool enable) { + if(enable) myHexflags |= std::ios_base::uppercase; + else myHexflags &= ~std::ios_base::uppercase; + } static bool hexUppercase() { return myHexflags & std::ios_base::uppercase; } /** Output HEX digits in 0.5/1/2/4 byte format */ @@ -98,13 +101,6 @@ class Base // Upper or lower case for HEX digits static std::ios_base::fmtflags myHexflags; - // Format specifiers to use for sprintf (eventually we may convert - // to C++ streams - static ostringstream buf; - static const char* const myLowerFmt[4]; - static const char* const myUpperFmt[4]; - static const char* const* myFmt; - private: // Following constructors and assignment operators not supported Base() = delete; From c006b08a6d7fc9fb1dd2544a831dc1694d469edf Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 21:53:57 -0230 Subject: [PATCH 035/126] Disable suggestion to use 'constexpr' IF in VS. It requires C++17, and we're only up to C++14 for now. --- src/windows/Stella.vcxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index eb36c19d3..78f6645d4 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -122,7 +122,7 @@ StreamingSIMDExtensions stdcpp17 true - 4100;4146;4244;%(DisableSpecificWarnings) + 4100;4127;4146;4244;%(DisableSpecificWarnings) CompileAsCpp @@ -156,7 +156,7 @@ $(IntDir)%(RelativeDir) stdcpp17 true - 4100;4146;4244;%(DisableSpecificWarnings) + 4100;4127;4146;4244;%(DisableSpecificWarnings) CompileAsCpp @@ -188,7 +188,7 @@ StreamingSIMDExtensions stdcpp17 true - 4100;4146;4244;%(DisableSpecificWarnings) + 4100;4127;4146;4244;%(DisableSpecificWarnings) CompileAsCpp @@ -224,7 +224,7 @@ $(IntDir)%(RelativeDir) stdcpp17 true - 4100;4146;4244;%(DisableSpecificWarnings) + 4100;4127;4146;4244;%(DisableSpecificWarnings) CompileAsCpp From 915e62f46696be386892271b35863bb45d395800 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 19 Aug 2018 22:40:57 -0230 Subject: [PATCH 036/126] Fixed a few more warnings, and marked some code for later research. --- src/common/SoundSDL2.cxx | 2 +- src/common/audio/LanczosResampler.cxx | 2 +- src/debugger/gui/Cart3EWidget.cxx | 2 +- src/debugger/gui/PromptWidget.cxx | 4 ++-- src/emucore/tia/DelayQueueMember.hxx | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index 4f8e18ce2..dfd94e869 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -62,7 +62,7 @@ SoundSDL2::SoundSDL2(OSystem& osystem, AudioSettings& audioSettings) desired.freq = myAudioSettings.sampleRate(); desired.format = AUDIO_F32SYS; desired.channels = 2; - desired.samples = myAudioSettings.fragmentSize(); + desired.samples = static_cast(myAudioSettings.fragmentSize()); desired.callback = callback; desired.userdata = static_cast(this); diff --git a/src/common/audio/LanczosResampler.cxx b/src/common/audio/LanczosResampler.cxx index f6cd135f9..80f889ddf 100644 --- a/src/common/audio/LanczosResampler.cxx +++ b/src/common/audio/LanczosResampler.cxx @@ -49,7 +49,7 @@ namespace { ); } - double lanczosKernel(float x, uInt32 a) { + float lanczosKernel(float x, uInt32 a) { return sinc(x) * sinc(x / static_cast(a)); } diff --git a/src/debugger/gui/Cart3EWidget.cxx b/src/debugger/gui/Cart3EWidget.cxx index 86b7c9edd..5338df4ee 100644 --- a/src/debugger/gui/Cart3EWidget.cxx +++ b/src/debugger/gui/Cart3EWidget.cxx @@ -119,7 +119,7 @@ void Cartridge3EWidget::loadConfig() void Cartridge3EWidget::handleCommand(CommandSender* sender, int cmd, int data, int id) { - int bank = -1; + uInt16 bank = 0; if(cmd == kROMBankChanged) { diff --git a/src/debugger/gui/PromptWidget.cxx b/src/debugger/gui/PromptWidget.cxx index a9b6ba8ee..653c98636 100644 --- a/src/debugger/gui/PromptWidget.cxx +++ b/src/debugger/gui/PromptWidget.cxx @@ -715,7 +715,7 @@ void PromptWidget::historyScroll(int direction) { int i; for (i = 0; i < _promptEndPos - _promptStartPos; i++) - _history[_historyIndex][i] = buffer(_promptStartPos + i); + _history[_historyIndex][i] = buffer(_promptStartPos + i); //FIXME: int to char?? _history[_historyIndex][i] = '\0'; } @@ -879,7 +879,7 @@ void PromptWidget::drawCaret() int x = _x + 1 + (_currentPos % _lineWidth) * _kConsoleCharWidth; int y = _y + displayLine * _kConsoleLineHeight; - char c = buffer(_currentPos); + char c = buffer(_currentPos); //FIXME: int to char?? s.fillRect(x, y, _kConsoleCharWidth, _kConsoleLineHeight, onTop ? kTextColor : kColor); s.drawChar(_font, c, x, y + 2, kBGColor); } diff --git a/src/emucore/tia/DelayQueueMember.hxx b/src/emucore/tia/DelayQueueMember.hxx index a280d61ff..6127239a9 100644 --- a/src/emucore/tia/DelayQueueMember.hxx +++ b/src/emucore/tia/DelayQueueMember.hxx @@ -114,7 +114,7 @@ bool DelayQueueMember::save(Serializer& out) const { try { - out.putInt(mySize); + out.putInt(mySize); //FIXME - check datatype for(uInt8 i = 0; i < mySize; ++i) { const Entry& e = myEntries[i]; @@ -137,7 +137,7 @@ bool DelayQueueMember::load(Serializer& in) { try { - mySize = in.getInt(); + mySize = in.getInt(); //FIXME - check datatype if (mySize > capacity) throw new runtime_error("invalid delay queue size"); for(uInt32 i = 0; i < mySize; ++i) { From fb6c8274703d75208a356b852effce8bfa241b6b Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 20 Aug 2018 11:55:13 +0200 Subject: [PATCH 037/126] added global stereo option to AudioDialog (TODO: use it) removed '(*)' from AudioDialog (TODO: make everything immediate) updated -help (this seems broken!) --- src/common/AudioSettings.cxx | 15 ++++++++ src/common/AudioSettings.hxx | 6 ++++ src/emucore/Settings.cxx | 7 ++-- src/gui/AudioDialog.cxx | 70 +++++++++++++++++++++++------------- src/gui/AudioDialog.hxx | 1 + 5 files changed, 72 insertions(+), 27 deletions(-) diff --git a/src/common/AudioSettings.cxx b/src/common/AudioSettings.cxx index f1b87a0cc..599b56849 100644 --- a/src/common/AudioSettings.cxx +++ b/src/common/AudioSettings.cxx @@ -146,6 +146,13 @@ AudioSettings::ResamplingQuality AudioSettings::resamplingQuality() return customSettings() ? normalizeResamplingQuality(mySettings->getInt(SETTING_RESAMPLING_QUALITY)) : myPresetResamplingQuality; } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string AudioSettings::stereo() const +{ + // 0 is a valid value -> keep it + return mySettings->getString(SETTING_STEREO); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 AudioSettings::volume() const { @@ -253,6 +260,14 @@ void AudioSettings::setResamplingQuality(AudioSettings::ResamplingQuality resamp normalize(*mySettings); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void AudioSettings::setStereo(const string& mode) +{ + if(!myIsPersistent) return; + + mySettings->setValue(SETTING_STEREO, mode); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void AudioSettings::setVolume(uInt32 volume) { diff --git a/src/common/AudioSettings.hxx b/src/common/AudioSettings.hxx index 4851cd1ae..07640d8ce 100644 --- a/src/common/AudioSettings.hxx +++ b/src/common/AudioSettings.hxx @@ -46,6 +46,7 @@ class AudioSettings static constexpr const char* SETTING_BUFFER_SIZE = "audio.buffer_size"; static constexpr const char* SETTING_HEADROOM = "audio.headroom"; static constexpr const char* SETTING_RESAMPLING_QUALITY = "audio.resampling_quality"; + static constexpr const char* SETTING_STEREO = "audio.stereo"; static constexpr const char* SETTING_VOLUME = "audio.volume"; static constexpr const char* SETTING_ENABLED = "audio.enabled"; @@ -55,6 +56,7 @@ class AudioSettings static constexpr uInt32 DEFAULT_BUFFER_SIZE = 3; static constexpr uInt32 DEFAULT_HEADROOM = 2; static constexpr ResamplingQuality DEFAULT_RESAMPLING_QUALITY = ResamplingQuality::lanczos_2; + static constexpr const char* DEFAULT_STEREO = "BYROM"; static constexpr uInt32 DEFAULT_VOLUME = 80; static constexpr bool DEFAULT_ENABLED = true; @@ -81,6 +83,8 @@ class AudioSettings ResamplingQuality resamplingQuality(); + string stereo() const; + uInt32 volume() const; bool enabled() const; @@ -97,6 +101,8 @@ class AudioSettings void setResamplingQuality(ResamplingQuality resamplingQuality); + void setStereo(const string& mode); + void setVolume(uInt32 volume); void setEnabled(bool isEnabled); diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index be2cb7ed6..1e38d14fe 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -70,13 +70,14 @@ Settings::Settings(OSystem& osystem) // Sound options setInternal(AudioSettings::SETTING_ENABLED, AudioSettings::DEFAULT_ENABLED); + setInternal(AudioSettings::SETTING_VOLUME, AudioSettings::DEFAULT_VOLUME); + setInternal(AudioSettings::SETTING_STEREO, AudioSettings::DEFAULT_STEREO); setInternal(AudioSettings::SETTING_PRESET, static_cast(AudioSettings::DEFAULT_PRESET)); setInternal(AudioSettings::SETTING_SAMPLE_RATE, AudioSettings::DEFAULT_SAMPLE_RATE); setInternal(AudioSettings::SETTING_FRAGMENT_SIZE, AudioSettings::DEFAULT_FRAGMENT_SIZE); setInternal(AudioSettings::SETTING_BUFFER_SIZE, AudioSettings::DEFAULT_BUFFER_SIZE); setInternal(AudioSettings::SETTING_HEADROOM, AudioSettings::DEFAULT_HEADROOM); setInternal(AudioSettings::SETTING_RESAMPLING_QUALITY, static_cast(AudioSettings::DEFAULT_RESAMPLING_QUALITY)); - setInternal(AudioSettings::SETTING_VOLUME, AudioSettings::DEFAULT_VOLUME); // Input event options setInternal("keymap", ""); @@ -445,13 +446,15 @@ void Settings::usage() const << endl #ifdef SOUND_SUPPORT << " -audio.enabled <1|0> Enable audio\n" + << " -audio.volume Vokume (0 -- 100)\n" + << " -audio.stereo \n" << " -audio.preset <1-5> Audio preset (or 1 for custom)\n" << " -audio.sample_rate Output sample rate (44100|48000|96000)\n" << " -audio.fragment_size Fragment size (128|256|512|1024|2048|4096)\n" << " -audio.buffer_size Max. number of additional half-frames to buffer (0 -- 20)\n" << " -audio.headroom Additional half-frames to prebuffer (0 -- 20)\n" << " -audio.resampling_quality <1-3> Resampling quality\n" - << " -audio.volume Vokume (0 -- 100)\n" << endl #endif << " -tia.zoom Use the specified zoom level (windowed mode) for TIA image\n" diff --git a/src/gui/AudioDialog.cxx b/src/gui/AudioDialog.cxx index 15611489d..1fcae59df 100644 --- a/src/gui/AudioDialog.cxx +++ b/src/gui/AudioDialog.cxx @@ -41,19 +41,20 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, const int VBORDER = 10; const int HBORDER = 10; const int INDENT = 20; + const int VGAP = 4; const int lineHeight = font.getLineHeight(), fontWidth = font.getMaxCharWidth(), fontHeight = font.getFontHeight(); int xpos, ypos; - int lwidth = font.getStringWidth("Resampling quality "), - pwidth = font.getStringWidth("512 bytes"); + int lwidth = font.getStringWidth("Volume "), + pwidth; WidgetArray wid; VariantList items; // Set real dimensions _w = 46 * fontWidth + HBORDER * 2; - _h = 11 * (lineHeight + 4) + VBORDER + _th; + _h = 11 * (lineHeight + VGAP) + VBORDER + _th; xpos = HBORDER; ypos = VBORDER + _th; @@ -62,18 +63,31 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, mySoundEnableCheckbox = new CheckboxWidget(this, font, xpos, ypos, "Enable sound", kSoundEnableChanged); wid.push_back(mySoundEnableCheckbox); - ypos += lineHeight + 4; + ypos += lineHeight + VGAP; xpos += INDENT; // Volume myVolumeSlider = new SliderWidget(this, font, xpos, ypos, - "Volume ", 0, 0, 4 * fontWidth, "%"); + "Volume", lwidth, 0, 4 * fontWidth, "%"); myVolumeSlider->setMinValue(1); myVolumeSlider->setMaxValue(100); myVolumeSlider->setTickmarkInterval(4); wid.push_back(myVolumeSlider); - ypos += lineHeight + 4; + ypos += lineHeight + VGAP; - // + // Stereo sound + VarList::push_back(items, "By ROM", "BYROM"); + VarList::push_back(items, "Off", "MONO"); + VarList::push_back(items, "On", "STEREO"); + pwidth = font.getStringWidth("By ROM"); + + myStereoSoundPopup = new PopUpWidget(this, font, xpos, ypos, + pwidth, lineHeight, + items, "Stereo", lwidth); + wid.push_back(myStereoSoundPopup); + ypos += lineHeight + VGAP; + + // Mode + items.clear(); VarList::push_back(items, "Low quality, medium lag", static_cast(AudioSettings::Preset::lowQualityMediumLag)); VarList::push_back(items, "High quality, medium lag", static_cast(AudioSettings::Preset::highQualityMediumLag)); VarList::push_back(items, "High quality, low lag", static_cast(AudioSettings::Preset::highQualityLowLag)); @@ -81,12 +95,14 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, VarList::push_back(items, "Custom", static_cast(AudioSettings::Preset::custom)); myModePopup = new PopUpWidget(this, font, xpos, ypos, font.getStringWidth("Ultry quality, minimal lag"), lineHeight, - items, "Mode (*) ", 0, kModeChanged); + items, "Mode", lwidth, kModeChanged); wid.push_back(myModePopup); - ypos += lineHeight + 4; + ypos += lineHeight + VGAP; xpos += INDENT; // Fragment size + pwidth = font.getStringWidth("512 bytes"); + lwidth = font.getStringWidth("Resampling quality "); items.clear(); VarList::push_back(items, "128 bytes", 128); VarList::push_back(items, "256 bytes", 256); @@ -98,7 +114,7 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, pwidth, lineHeight, items, "Fragment size (*) ", lwidth); wid.push_back(myFragsizePopup); - ypos += lineHeight + 4; + ypos += lineHeight + VGAP; // Output frequency items.clear(); @@ -109,7 +125,7 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, pwidth, lineHeight, items, "Sample rate (*) ", lwidth); wid.push_back(myFreqPopup); - ypos += lineHeight + 4; + ypos += lineHeight + VGAP; // Resampling quality items.clear(); @@ -120,7 +136,7 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, pwidth, lineHeight, items, "Resampling quality ", lwidth); wid.push_back(myResamplingPopup); - ypos += lineHeight + 4; + ypos += lineHeight + VGAP; // Param 1 int swidth = pwidth+23; @@ -128,9 +144,8 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, "Headroom ", 0, kHeadroomChanged, 10 * fontWidth); myHeadroomSlider->setMinValue(0); myHeadroomSlider->setMaxValue(AudioSettings::MAX_HEADROOM); myHeadroomSlider->setTickmarkInterval(3); - wid.push_back(myHeadroomSlider); - ypos += lineHeight + 4; + ypos += lineHeight + VGAP; // Param 2 myBufferSizeSlider = new SliderWidget(this, font, xpos, ypos, swidth, lineHeight, @@ -139,11 +154,6 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, myBufferSizeSlider->setTickmarkInterval(3); wid.push_back(myBufferSizeSlider); - // Add message concerning usage - ypos = _h - fontHeight * 2 - 24; - const GUI::Font& infofont = instance().frameBuffer().infoFont(); - new StaticTextWidget(this, infofont, HBORDER, ypos, "(*) Requires application restart"); - // Add Defaults, OK and Cancel buttons addDefaultsOKCancelBGroup(wid, font); @@ -155,11 +165,14 @@ void AudioDialog::loadConfig() { AudioSettings& audioSettings = instance().audioSettings(); + // Enable sound + mySoundEnableCheckbox->setState(audioSettings.enabled()); + // Volume myVolumeSlider->setValue(audioSettings.volume()); - // Enable sound - mySoundEnableCheckbox->setState(audioSettings.enabled()); + // Stereo + myStereoSoundPopup->setSelected(audioSettings.stereo()); // Preset / mode myModePopup->setSelected(static_cast(audioSettings.preset())); @@ -193,12 +206,17 @@ void AudioDialog::saveConfig() { AudioSettings& audioSettings = instance().audioSettings(); + // Enabled + audioSettings.setEnabled(mySoundEnableCheckbox->getState()); + instance().sound().setEnabled(mySoundEnableCheckbox->getState()); + // Volume audioSettings.setVolume(myVolumeSlider->getValue()); instance().sound().setVolume(myVolumeSlider->getValue()); - audioSettings.setEnabled(mySoundEnableCheckbox->getState()); - instance().sound().setEnabled(mySoundEnableCheckbox->getState()); + // Stereo + audioSettings.setStereo(myStereoSoundPopup->getSelectedTag().toString()); + //TODO: instance().sound().setStereo(myStereoSoundPopup->getSelectedTag().toString()); AudioSettings::Preset preset = static_cast(myModePopup->getSelectedTag().toInt()); audioSettings.setPreset(preset); @@ -222,12 +240,13 @@ void AudioDialog::saveConfig() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void AudioDialog::setDefaults() { - myResamplingPopup->setSelected(static_cast(AudioSettings::DEFAULT_RESAMPLING_QUALITY)); - myVolumeSlider->setValue(AudioSettings::DEFAULT_VOLUME); mySoundEnableCheckbox->setState(AudioSettings::DEFAULT_ENABLED); + myVolumeSlider->setValue(AudioSettings::DEFAULT_VOLUME); + myStereoSoundPopup->setSelected(AudioSettings::DEFAULT_STEREO); myModePopup->setSelected(static_cast(AudioSettings::DEFAULT_PRESET)); if (AudioSettings::DEFAULT_PRESET == AudioSettings::Preset::custom) { + myResamplingPopup->setSelected(static_cast(AudioSettings::DEFAULT_RESAMPLING_QUALITY)); myFragsizePopup->setSelected(AudioSettings::DEFAULT_FRAGMENT_SIZE); myFreqPopup->setSelected(AudioSettings::DEFAULT_SAMPLE_RATE); myHeadroomSlider->setValue(AudioSettings::DEFAULT_HEADROOM); @@ -246,6 +265,7 @@ void AudioDialog::updateEnabledState() bool userMode = preset == AudioSettings::Preset::custom; myVolumeSlider->setEnabled(active); + myStereoSoundPopup->setEnabled(active); myModePopup->setEnabled(active); myFragsizePopup->setEnabled(active && userMode); diff --git a/src/gui/AudioDialog.hxx b/src/gui/AudioDialog.hxx index ba04bcd30..f63f1d1f0 100644 --- a/src/gui/AudioDialog.hxx +++ b/src/gui/AudioDialog.hxx @@ -62,6 +62,7 @@ class AudioDialog : public Dialog PopUpWidget* myResamplingPopup; SliderWidget* myHeadroomSlider; SliderWidget* myBufferSizeSlider; + PopUpWidget* myStereoSoundPopup; private: // Following constructors and assignment operators not supported From 15e6e502939fd9c833a0f946192cb915bd99f57f Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 20 Aug 2018 12:35:34 +0200 Subject: [PATCH 038/126] fixed #356 --- src/emucore/Settings.cxx | 187 +++++++++++++++++++++++++-------------- 1 file changed, 119 insertions(+), 68 deletions(-) diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index 1e38d14fe..502827660 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -445,91 +445,128 @@ void Settings::usage() const << " -uimessages <1|0> Show onscreen UI messages for different events\n" << endl #ifdef SOUND_SUPPORT - << " -audio.enabled <1|0> Enable audio\n" - << " -audio.volume Vokume (0 -- 100)\n" - << " -audio.stereo Enable audio\n" + << " -audio.volume Vokume (0-100)\n" + << " -audio.stereo \n" - << " -audio.preset <1-5> Audio preset (or 1 for custom)\n" - << " -audio.sample_rate Output sample rate (44100|48000|96000)\n" - << " -audio.fragment_size Fragment size (128|256|512|1024|2048|4096)\n" - << " -audio.buffer_size Max. number of additional half-frames to buffer (0 -- 20)\n" - << " -audio.headroom Additional half-frames to prebuffer (0 -- 20)\n" - << " -audio.resampling_quality <1-3> Resampling quality\n" + << " -audio.preset <1-5> Audio preset (or 1 for custom)\n" + << " -audio.sample_rate Output sample rate (44100|48000|96000)\n" + << " -audio.fragment_size Fragment size (128|256|512|1024|\n" + << " 2048|4096)\n" + << " -audio.buffer_size Max. number of additional half-\n" + << " frames to buffer(0-20)\n" + << " -audio.headroom Additional half-frames to prebuffer\n" + << " (0-20)\n" + << " -audio.resampling_quality <1-3> Resampling quality\n" << endl #endif - << " -tia.zoom Use the specified zoom level (windowed mode) for TIA image\n" - << " -tia.inter <1|0> Enable interpolated (smooth) scaling for TIA image\n" - << " -tia.aspectn Scale TIA width by the given percentage in NTSC mode\n" - << " -tia.aspectp Scale TIA width by the given percentage in PAL mode\n" + << " -tia.zoom Use the specified zoom level (windowed mode)\n" + << " for TIA image\n" + << " -tia.inter <1|0> Enable interpolated (smooth) scaling for TIA\n" + << " image\n" + << " -tia.aspectn Scale TIA width by the given percentage in NTS\n" + << " mode\n" + << " -tia.aspectp Scale TIA width by the given percentage in PAL\n" + << " mode\n" << " -tia.fsfill <1|0> Stretch TIA image to fill fullscreen mode\n" - << " -tia.dbgcolors Debug colors to use for each object (see manual for description)\n" + << " -tia.dbgcolors Debug colors to use for each object (see manual\n" + << " for description)\n" << endl - << " -tv.filter <0-5> Set TV effects off (0) or to specified mode (1-5)\n" - << " -tv.phosphor When to use phosphor mode\n" - << " -tv.phosblend <0-100> Set default blend level in phosphor mode\n" - << " -tv.scanlines <0-100> Set scanline intensity to percentage (0 disables completely)\n" - << " -tv.scaninter <1|0> Enable interpolated (smooth) scanlines\n" - << " -tv.contrast Set TV effects custom contrast to value 1.0 - 1.0\n" - << " -tv.brightness Set TV effects custom brightness to value 1.0 - 1.0\n" - << " -tv.hue Set TV effects custom hue to value 1.0 - 1.0\n" - << " -tv.saturation Set TV effects custom saturation to value 1.0 - 1.0\n" - << " -tv.gamma Set TV effects custom gamma to value 1.0 - 1.0\n" - << " -tv.sharpness Set TV effects custom sharpness to value 1.0 - 1.0\n" - << " -tv.resolution Set TV effects custom resolution to value 1.0 - 1.0\n" - << " -tv.artifacts Set TV effects custom artifacts to value 1.0 - 1.0\n" - << " -tv.fringing Set TV effects custom fringing to value 1.0 - 1.0\n" - << " -tv.bleed Set TV effects custom bleed to value 1.0 - 1.0\n" + << " -tv.filter <0-5> Set TV effects off (0) or to specified mode\n" + << " (1-5)\n" + << " -tv.phosphor When to use phosphor mode\n" + << " -tv.phosblend <0-100> Set default blend level in phosphor mode\n" + << " -tv.scanlines <0-100> Set scanline intensity to percentage\n" + << " (0 disables completely)\n" + << " -tv.scaninter <1|0> Enable interpolated (smooth) scanlines\n" + << " -tv.contrast <-1.0 - 1.0> Set TV effects custom contrast\n" + << " -tv.brightness <-1.0 - 1.0> Set TV effects custom brightness\n" + << " -tv.hue <-1.0 - 1.0> Set TV effects custom hue\n" + << " -tv.saturation <-1.0 - 1.0> Set TV effects custom saturation\n" + << " -tv.gamma <-1.0 - 1.0> Set TV effects custom gamma\n" + << " -tv.sharpness <-1.0 - 1.0> Set TV effects custom sharpness\n" + << " -tv.resolution <-1.0 - 1.0> Set TV effects custom resolution\n" + << " -tv.artifacts <-1.0 - 1.0> Set TV effects custom artifacts\n" + << " -tv.fringing <-1.0 - 1.0> Set TV effects custom fringing\n" + << " -tv.bleed <-1.0 - 1.0> Set TV effects custom bleed\n" << endl - << " -cheat Use the specified cheatcode (see manual for description)\n" + << " -cheat Use the specified cheatcode (see manual for\n" + << " description)\n" << " -loglevel <0|1|2> Set level of logging during application run\n" + << endl << " -logtoconsole <1|0> Log output to console/commandline\n" << " -joydeadzone Sets 'deadzone' area for analog joysticks (0-29)\n" - << " -joyallow4 <1|0> Allow all 4 directions on a joystick to be pressed simultaneously\n" + << " -joyallow4 <1|0> Allow all 4 directions on a joystick to be\n" + << " pressed simultaneously\n" << " -usemouse Use mouse as a controller as specified by ROM properties in given mode(see manual)\n" + << " never> Use mouse as a controller as specified by ROM\n" + << " properties in given mode(see manual)\n" << " -grabmouse <1|0> Locks the mouse cursor in the TIA window\n" << " -cursor <0,1,2,3> Set cursor state in UI/emulation modes\n" - << " -dsense Sensitivity of digital emulated paddle movement (1-20)\n" - << " -msense Sensitivity of mouse emulated paddle movement (1-20)\n" - << " -tsense Sensitivity of mouse emulated trackball movement (1-20)\n" - << " -saport How to assign virtual ports to multiple Stelladaptor/2600-daptors\n" - << " -ctrlcombo <1|0> Use key combos involving the Control key (Control-Q for quit may be disabled!)\n" - << " -autoslot <1|0> Automatically switch to next save slot when state saving\n" + << " -dsense Sensitivity of digital emulated paddle movement\n" + << " (1-20)\n" + << " -msense Sensitivity of mouse emulated paddle movement\n" + << " (1-20)\n" + << " -tsense Sensitivity of mouse emulated trackball movement\n" + << " (1-20)\n" + << " -saport How to assign virtual ports to multiple\n" + << " Stelladaptor/2600-daptors\n" + << " -ctrlcombo <1|0> Use key combos involving the Control key\n" + << " (Control-Q for quit may be disabled!)\n" + << " -autoslot <1|0> Automatically switch to next save slot when\n" + << " state saving\n" << " -fastscbios <1|0> Disable Supercharger BIOS progress loading bars\n" - << " -threads <1|0> Whether to using multi-threading during emulation\n" + << " -threads <1|0> Whether to using multi-threading during\n" + << " emulation\n" << " -snapsavedir The directory to save snapshot files to\n" << " -snaploaddir The directory to load snapshot files from\n" - << " -snapname Name snapshots according to internal database or ROM\n" + << " -snapname Name snapshots according to internal database or\n" + << " ROM\n" << " -sssingle <1|0> Generate single snapshot instead of many\n" - << " -ss1x <1|0> Generate TIA snapshot in 1x mode (ignore scaling/effects)\n" - << " -ssinterval Generate TIA snapshot in 1x mode (ignore\n" + << " scaling/effects)\n" + << " -ssinterval Display detailed information for the given ROM\n" - << " -listrominfo Display contents of stella.pro, one line per ROM entry\n" + << " -listrominfo Display contents of stella.pro, one line per ROM\n" + << " entry\n" + << " \n" << " -exitlauncher <1|0> On exiting a ROM, go back to the ROM launcher\n" << " -launcherres The resolution to use in ROM launcher mode\n" << " -launcherfont \n" - << " -launcherexts Show ROM info viewer at given zoom level in ROM launcher (0 for off)\n" - << " -listdelay Time to wait between keypresses in list widgets (300-1000)\n" - << " -mwheel Number of lines the mouse wheel will scroll in UI\n" + << " -romviewer <0|1|2> Show ROM info viewer at given zoom level in ROM\n" + << " launcher (0 for off)\n" + << " -listdelay Time to wait between keypresses in list widgets\n" + << " (300-1000)\n" + << " -mwheel Number of lines the mouse wheel will scroll in\n" + << " UI\n" << " -romdir Directory in which to load ROM files\n" << " -statedir Directory in which to save/load state files\n" << " -cheatfile Full pathname of cheatfile database\n" << " -palettefile Full pathname of user-defined palette file\n" << " -propsfile Full pathname of ROM properties file\n" - << " -nvramdir Directory in which to save/load flash/EEPROM files\n" + << " -nvramdir Directory in which to save/load flash/EEPROM\n" + << " files\n" << " -cfgdir Directory in which to save Distella config files\n" - << " -avoxport The name of the serial port where an AtariVox is connected\n" - << " -holdreset Start the emulator with the Game Reset switch held down\n" - << " -holdselect Start the emulator with the Game Select switch held down\n" - << " -holdjoy0 Start the emulator with the left joystick direction/fire button held down\n" - << " -holdjoy1 Start the emulator with the right joystick direction/fire button held down\n" - << " -maxres Used by developers to force the maximum size of the application window\n" + << " -avoxport The name of the serial port where an AtariVox is\n" + << " connected\n" + << " -holdreset Start the emulator with the Game Reset switch\n" + << " held down\n" + << " -holdselect Start the emulator with the Game Select switch\n" + << " held down\n" + << " -holdjoy0 Start the emulator with the left joystick\n" + << " direction/fire button held down\n" + << " -holdjoy1 Start the emulator with the right joystick\n" + << " direction/fire button held down\n" + << " -maxres Used by developers to force the maximum size of\n" + << " the application window\n" << " -help Show the text you're now reading\n" #ifdef DEBUGGER_SUPPORT << endl @@ -537,14 +574,17 @@ void Settings::usage() const << " Arguments are more fully explained in the manual\n" << endl << " -dis.resolve <1|0> Attempt to resolve code sections in disassembler\n" - << " -dis.gfxformat <2|16> Set base to use for displaying GFX sections in disassembler\n" + << " -dis.gfxformat <2|16> Set base to use for displaying GFX sections in\n" + << " disassembler\n" << " -dis.showaddr <1|0> Show opcode addresses in disassembler\n" - << " -dis.relocate <1|0> Relocate calls out of address range in disassembler\n" + << " -dis.relocate <1|0> Relocate calls out of address range in\n" + << " disassembler\n" << endl << " -dbg.res The resolution to use in debugger mode\n" << " -dbg.fontsize \n" - << " -dbg.fontstyle <0-3> Font style to use in debugger window (bold vs. normal)\n" + << " -dbg.fontstyle <0-3> Font style to use in debugger window (bold vs.\n" + << " normal)\n" << " -dbg.ghostreadstrap <1|0> Debugger traps on 'ghost' reads\n" << " -dbg.uhex <0|1> lower-/uppercase HEX display\n" << " -break
Set a breakpoint at 'address'\n" @@ -571,34 +611,45 @@ void Settings::usage() const << " Various development related parameters for player settings mode\n" << endl - << " -dev.settings <1|0> Select developer (1) or player (0) settings mode\n" + << " -dev.settings <1|0> Select developer (1) or player (0) settings\n" + << " mode\n" << endl << " -plr.stats <1|0> Overlay console info during emulation\n" - << " -plr.console <2600|7800> Select console for B/W and Pause key handling and RAM initialization\n" + << " -plr.console <2600|7800> Select console for B/W and Pause key\n" + << " handling and RAM initialization\n" << " -plr.bankrandom <1|0> Randomize the startup bank on reset\n" << " -plr.ramrandom <1|0> Randomize the contents of RAM on reset\n" - << " -plr.cpurandom <1|0> Randomize the contents of CPU registers on reset\n" + << " -plr.cpurandom <1|0> Randomize the contents of CPU registers on\n" + << " reset\n" << " -plr.debugcolors <1|0> Enable debug colors\n" << " -plr.colorloss <1|0> Enable PAL color-loss effect\n" << " -plr.tv.jitter <1|0> Enable TV jitter effect\n" << " -plr.tv.jitter_recovery <1-20> Set recovery time for TV jitter effect\n" - << " -plr.tiadriven <1|0> Drive unused TIA pins randomly on a read/peek\n" - << " -plr.thumb.trapfatal <1|0> Determines whether errors in ARM emulation throw an exception\n" - << " -plr.eepromaccess <1|0> Enable messages for AtariVox/SaveKey access messages\n" + << " -plr.tiadriven <1|0> Drive unused TIA pins randomly on a\n" + << " read/peek\n" + << " -plr.thumb.trapfatal <1|0> Determines whether errors in ARM emulation\n" + << " throw an exception\n" + << " -plr.eepromaccess <1|0> Enable messages for AtariVox/SaveKey access\n" + << " messages\n" << endl << " The same parameters but for developer settings mode\n" << " -dev.stats <1|0> Overlay console info during emulation\n" - << " -dev.console <2600|7800> Select console for B/W and Pause key handling and RAM initialization\n" + << " -dev.console <2600|7800> Select console for B/W and Pause key\n" + << " handling and RAM initialization\n" << " -dev.bankrandom <1|0> Randomize the startup bank on reset\n" << " -dev.ramrandom <1|0> Randomize the contents of RAM on reset\n" - << " -dev.cpurandom <1|0> Randomize the contents of CPU registers on reset\n" + << " -dev.cpurandom <1|0> Randomize the contents of CPU registers on\n" + << " reset\n" << " -dev.debugcolors <1|0> Enable debug colors\n" << " -dev.colorloss <1|0> Enable PAL color-loss effect\n" << " -dev.tv.jitter <1|0> Enable TV jitter effect\n" << " -dev.tv.jitter_recovery <1-20> Set recovery time for TV jitter effect\n" - << " -dev.tiadriven <1|0> Drive unused TIA pins randomly on a read/peek\n" - << " -dev.thumb.trapfatal <1|0> Determines whether errors in ARM emulation throw an exception\n" - << " -dev.eepromaccess <1|0> Enable messages for AtariVox/SaveKey access messages\n" + << " -dev.tiadriven <1|0> Drive unused TIA pins randomly on a\n" + << " read/peek\n" + << " -dev.thumb.trapfatal <1|0> Determines whether errors in ARM emulation\n" + << " throw an exception\n" + << " -dev.eepromaccess <1|0> Enable messages for AtariVox/SaveKey access\n" + << " messages\n" << endl << std::flush; } From b61f38d4c2e1239a7012b55abae9b6f22e21088a Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 20 Aug 2018 13:38:18 +0200 Subject: [PATCH 039/126] updated doc --- docs/graphics/launcher_override.png | Bin 7897 -> 7413 bytes docs/graphics/timemachine.png | Bin 2267 -> 2268 bytes docs/index.html | 9 +++++---- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/graphics/launcher_override.png b/docs/graphics/launcher_override.png index bd4e7a21d3f0ee144a8674b4140d01cedd9657e2..585a9fafd7f286265191a0bd5ffe3eb37aa4b284 100644 GIT binary patch literal 7413 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 B7>xh` literal 7897 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 aCq2(VBeeOg?AI@A8g0#+8pZ1OgZ~TMOi!u+ diff --git a/docs/graphics/timemachine.png b/docs/graphics/timemachine.png index ce54e42c1a020cf5fe81831789e35b0547318e54..d3432e7222ddad8b2b35a592df29de8ec8e27b24 100644 GIT binary patch delta 2208 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 Sj?q^@m5ryXpUXO@geCw(Bg`rQ diff --git a/docs/index.html b/docs/index.html index 6fe83e762..ca71bebaa 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1817,13 +1817,14 @@
+ + - - +
ItemBrief descriptionFor more information,
see CommandLine
Save pathSpecifies where to save snapshots-snapsavedir
Load pathSpecifies where to load snapshots-snaploaddir
Continuous snapshot intervalInterval (in seconds) between snapshots-ssinterval
Use actual ROM nameUse the actual ROM filename instead of the internal database name.-snapname
Overwrite existing filesWhether to overwrite old snapshots-sssingle
ItemDescription
Current timeShows the time of the currently selected status, relative to the first one
'Start/Stop' buttonStarts or stops the Time Machine
'Continue' buttonExits the dialog and continues emulation
'Rewind All' buttonNavigates back to the begin of the timeline
'Rewind One' buttonNavigates back by one state
'Continue' buttonExits the dialog and continues emulation.
Navigation infoInforms about the interval of the user's last - Time Machine navigation. The interval can vary if the timeline is compressed.
'Unwind One' buttonNavigates forward by one state
'Unwind All' buttonNavigates forward to the end of the timeline
Navigation infoInforms about the interval of the user's last + Time Machine navigation. The interval can vary if the timeline is compressed.
Total timeShows the total time covered by the save states (aka 'Horizon')
@@ -2936,9 +2937,9 @@ + - From 5f07ad3cdf411380f7f10307f0b8f301542fa8f6 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 20 Aug 2018 14:01:06 +0200 Subject: [PATCH 040/126] more doc updates --- docs/graphics/options_video.png | Bin 6636 -> 6277 bytes docs/graphics/options_video_tv.png | Bin 7280 -> 7980 bytes docs/index.html | 36 +++++++++-------------------- src/emucore/Settings.cxx | 1 - 4 files changed, 11 insertions(+), 26 deletions(-) diff --git a/docs/graphics/options_video.png b/docs/graphics/options_video.png index 37e46856ce2cde7e126502446e7b20f50df210e2..0064ae47e64e278c7d2f98ba9139d6362c673684 100644 GIT binary patch literal 6277 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 E2jo~+?EnA( literal 7280 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 diff --git a/docs/index.html b/docs/index.html index ca71bebaa..9706b261a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1893,21 +1893,8 @@ - - - - - - - + + @@ -2610,20 +2597,19 @@
ItemFor more information,
see Commandline
Bankswitch type-bs
TV Type-tv
Left Difficulty-ld
Right Difficulty-rd
TV Type-tv
Startup Mode-debug
Left Joy items-holdjoy0
Right Joy items-holdjoy1
-framerate <number>
Display the given number of frames per second. Normally, Stella - will determine framerate based on number of scanlines. - Setting this to 0 automatically enables auto-frame - calculation (ie, framerate based on scanlines).
-timing <sleep|busy>
Determines type of wait to perform between processing frames. - Sleep will release the CPU as much as possible, and is the - preferred method on laptops (and other low-powered devices) - and when using VSync. Busy will emulate z26 busy-wait - behaviour, and use all possible CPU time, but may eliminate - graphical 'tearing' in software mode.
-speed <number>
Control the emulation speed (as a percentage, 10 - 1000).
- - - - - - - + + + + + + - + - + - +
ItemBrief descriptionFor more information,
see CommandLine
RendererUse specified rendering mode-video
TIA Zoom(Integral) zoom level for emulation mode -tia.zoom
TIA PalettePalette for emulation mode-palette
TIA InterInterpolation for TIA image-tia.inter
Timing (*)How to wait between frames (requires restart)-timing
NTSC AspectWidth of TIA image in NTSC mode-tia.aspectn
PAL AspectWidth of TIA image in PAL mode-tia.aspectp
FramerateFrames per second in emulation mode-framerate
TIA palettePalette for emulation mode-palette
TIA zoom(Integral) zoom level for emulation mode -tia.zoom
TIA interpolationInterpolation for TIA image-tia.inter
NTSC aspectWidth of TIA image in NTSC mode-tia.aspectn
PAL aspectWidth of TIA image in PAL mode-tia.aspectp
Emul. speedEmulation speed-speed
FullscreenSelf-explanatory-fullscreen
Fullscreen FillCompletely fill TIA image in fullscreen-tia.fsfill
Fullscreen fillCompletely fill TIA image in fullscreen-tia.fsfill
VSyncEnable vertical sync'ed updates-vsync
Fast SC/AR BIOSSkip progress loading bars for SuperCharger ROMs-fastscbios
Fast SuperCharger loadSkip progress loading bars for SuperCharger ROMs-fastscbios
Show UI messagesOverlay UI messages onscreen-uimessages
Center windowAttempt to center application window-center
Use multi-threadingEnable multi-threaded rendering-threads
Multi-threadingEnable multi-threaded rendering-threads
diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index 502827660..4259f546b 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -441,7 +441,6 @@ void Settings::usage() const << " z26|\n" << " user>\n" << " -speed Run emulation at the given speed\n" - << " -timing Use the given type of wait between frames\n" << " -uimessages <1|0> Show onscreen UI messages for different events\n" << endl #ifdef SOUND_SUPPORT From 714a7f60e827881826053282ae52677611dd494d Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 20 Aug 2018 15:47:38 +0200 Subject: [PATCH 041/126] updated screenshots --- docs/graphics/eventmapping.png | Bin 7185 -> 7163 bytes docs/graphics/eventmapping_devsports.png | Bin 8072 -> 8172 bytes docs/graphics/eventmapping_remap.png | Bin 6913 -> 6800 bytes docs/graphics/options_audio.png | Bin 2557 -> 5141 bytes docs/graphics/options_developer.png | Bin 6607 -> 7339 bytes docs/graphics/options_developer_debugger.png | Bin 5260 -> 5485 bytes docs/graphics/options_developer_emulation.png | Bin 7240 -> 7373 bytes .../options_developer_timemachine.png | Bin 4895 -> 5735 bytes docs/graphics/options_developer_video.png | Bin 6726 -> 7051 bytes docs/index.html | 40 +++++++++--------- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/graphics/eventmapping.png b/docs/graphics/eventmapping.png index 630fdcf1e2b3b335c914aef59d932f05f211e8d0..9db1355de326566a02a02156f6c5567037352fb6 100644 GIT binary patch literal 7163 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 diff --git a/docs/graphics/eventmapping_remap.png b/docs/graphics/eventmapping_remap.png index ca04015887c686c07f0a0aa34a6c08930ecafa9e..229e207c613d15849a189136c8170021442f28c1 100644 GIT binary patch literal 6800 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 diff --git a/docs/graphics/options_audio.png b/docs/graphics/options_audio.png index a8706ba65a423de2b64655c3072c8449885ee500..0ac23f7d4b08ad9ecb7e9b8237f390040d059466 100644 GIT binary patch literal 5141 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 PUo=)`XU{w_@lO30!qsEB literal 2557 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 z z)^J1&u4r)+zovWmYaT^9g)QoI$rz^{`UNpf_m!-5 z3Te?%`!_TA%-$_<=C?_Z9L4@orb?>9FmXJn-c6J{0*%A7WrT?Ez(3Z6;{`EkjIZ_QwIysu^5_*qHk+uDm zvL&xh7+m?Oct8*7C-i=37N=Lii^lCPqO=As$bSXDE6Ax3+WJ3)$qUjgd68Rtq-$G?xO(3svm{}kf6(WPzl{$Sl6QK-pH1}Wt zWwcb#?$5|K3T$xX>n8u>M0b6LGDnE|&Y4VxUv;PfLRSu<-*4%dd<@x5CDcRqDlhlF z5le|#_{P+kRkAOx0*U!CBXI`yv64z}mJqm`a|Y;ljN%wOZi~da$>&Emv)DgZo%2wWmpm>=B2&{P{I#yAeincVa=U^iFKcUX6FC(g|k(8B&C z4mceP1lYQ^%SXLgcEx$`{)n1)e9UG3E$jAp@)IN5_Y+YnrhA?$ar97)VOfPY$Y1E z`u(4f0lZ0BjVL5zl2Mg?b)gTIz^Li&vV`)J1liLh%K1KTdwI}YhHo~`vt3ya=&hxs ze8MLRr+J>y59}D>ZtlF+xv1z<5b5Sh+TW-XZY&Qu<4m82W0qab480Xo*hC5HYaq)| zEES8c!wwo*_ST-{eOx!ppxV0P^{m`G6Bw7FEj;Vx9!mgTzBH{XfUec0dTti1jy0Bf zDcf1yXvlO7%BbOit z#dMJ)Wiv%?Zzy}uiP<{t$|la=L-&0T?%AAuF}ZEXR_*v49HFKae4d|klYI)4Q8Q!0 zR@Um}TEWA^KK#sB(K|*W%ckvWtmY}&NXg;{1Z(Cl@)c{af*W?T_+XE;E3l1TD-W=iQh>*hpc{4gq1%JQFj%$uv((pYU)cgs16&8wC=&FHIcLVVM71-IpA9Qk zgSuVXRoDWQ7j~Ckc!0*nrOeQYKGBkIRx(m?bJ?n@rwT=wJ9xxO`UO2QWgHkiS$A$! z_PggfWB*H|&}8J%=WYSk#wu&p%@}5r6ftkN_IN0R%JBK<56L=uRoyA5JP|*=0}xJ>@pnHZL!apeSd%Mj?OT~SiOer5Lq)qPOrLp`>=8C4mp=Ax88 zurc{`y(s(eSa@OPK+au&>V=1=$hvsw6Vn}jhC~vtaNRNYhQjC^fvHQ41mu*v^9+4^ zvvOw`KAz*X$D@tz@wo842-TgV-KhLCWc{;Gp-zngio^A;_C=$jesa7?$3TL*^xg~M z==A5saZgv0p=vm9NeNP)_gpjNmwABQ7?tED1>y@3YTfmqC8Y3Q zS?J%M`Ij5cTH+3)L_*C1WkitONitde1UhKWuKKmZ#-d|R&!=@WRKf8-=kJ_nyk&qf ztlr+7*Qsw*fJn;QZf#X5CQ)Ko^0EU^$|C8OYdOOwPaoD=r$VOOI4rC@~0bmj2 zohL$lqdpvtPZXOf;a5*;C37t@5%+Yx>n$kCj>sxaR4&W!GB|J4LCdWs;qKj;I>JNY zmSVbH(I1r1GlLgAyt~ptdsg)DjGlB#xz3wWo(js1>0urf>vJD_hM)@u;wznz{eFj{ zXMN3Y;{?sq< z8~M(9(44npOjuQNz7@i>PmvdvTsXoSm9hUR$_o~~NBZPh0mDxXPFeoMpYKO9c-XYR z%1%-S+_io&zl`5FE**;uYP)YvW-kt`QX?@!N|2n0!Gv~dZd8w|OI3a9m(n|O0T zoJerU43n|V)wcRB5EW@st1nl(%RI&GF77W(Lu8SmFr$NHneL3(9=}Dr?T=r5x9;

  • Mouse or Stelladaptor/2600-daptor with real paddles required for paddle emulation
  • -
  • Some ROM images (See AtariAge for more information)
  • +
  • Some ROM images (see AtariAge for more information)
  • @@ -2605,7 +2605,7 @@ Emul. speedEmulation speed-speed FullscreenSelf-explanatory-fullscreen Fullscreen fillCompletely fill TIA image in fullscreen-tia.fsfill - VSyncEnable vertical sync'ed updates-vsync + VSyncEnable vertical synced updates-vsync Fast SuperCharger loadSkip progress loading bars for SuperCharger ROMs-fastscbios Show UI messagesOverlay UI messages onscreen-uimessages Center windowAttempt to center application window-center @@ -2624,18 +2624,18 @@ - - - - - + + + + + - +
    ItemBrief descriptionFor more information,
    see CommandLine
    TV ModeDisable TV effects, or select TV preset-tv.filter
    TV PhosphorEnable phosphor mode under what conditions-tv.phosphor
    Phosphor (Default)Default blend level to use in phosphor mode
    - (needs to be manually set for your particular hardware)
    -tv.phosblend
    Scanline IntensitySets scanline black-level intensity.
    - Note: No scanlines in 1x mode snapshots.
    -tv.scanlines
    Scanline InterpolationSmooth/blend scanlines into image-tv.scaninter
    TV modeDisable TV effects, or select TV preset-tv.filter
    Adjustable slidersSet specific attribute in 'Custom' mode-tv.contrast, tv.hue, etc.
    Phosphor for all ROMsEnable phosphor mode for all ROMs-tv.phosphor
    Default (phosphor)Default blend level to use in phosphor mode
    + (needs to be manually set for your particular hardware)
    -tv.phosblend
    Scanline intensitySets scanline black-level intensity.
    + Note: No scanlines in 1x mode snapshots.
    -tv.scanlines
    Scanline interpolationSmooth/blend scanlines into image-tv.scaninter
    Clone CompositeCopy 'Composite' attributes to 'Custom' sliders 
    Clone S-VideoCopy 'S-Video' attributes to 'Custom' sliders 
    Clone RGBCopy 'RGB' attributes to 'Custom' sliders 
    Clone Bad AdjustCopy 'Bad Adjust' attributes to 'Custom' sliders 
    Clone Bad adjustCopy 'Bad Adjust' attributes to 'Custom' sliders 
    RevertRevert attribute sliders to saved 'Custom' settings 
    @@ -2828,7 +2828,6 @@ - @@ -2838,8 +2837,9 @@ - - + + +
    ItemBrief descriptionFor more information,
    see CommandLine
    Stelladaptor port orderSpecifies which virtual port each Stelladaptor/2600-daptor uses (See Advanced Configuration - Stelladaptor/2600-daptor Support)-saport
    Use mouse as ...Allow the mouse to emulate various controllers-usemouse
    Mouse cursor visibilityShow/hide cursor depending on current state-cursor
    Joystick deadzone sizeDeadzone area for axes on joysticks/gamepads-joydeadzone
    Allow all 4 directions ...Allow all 4 joystick directions to be pressed simultaneously-joyallow4
    Grab mouse ...Keep mouse in window in emulation mode
    (only when used as controller)
    Note: The sensitivity may greatly vary when the mouse is not grabbed.
    -grabmouse
    Use Control key combosEnable using Control key in keyboard actions-ctrlcombo
    Joystick DatabaseShow all joysticks that Stella knows about, with the option to remove them 
    Use control key combosEnable using Control key in keyboard actions-ctrlcombo
    Swap Stelladaptor portsSwap the order of the detected Stelladaptors/2600-daptors (see Advanced Configuration - Stelladaptor/2600-daptor Support)-saport
    Joystick databaseShow all joysticks that Stella knows about, with the option to remove them 
    Erase EEPROMErase the whole AtariVox/SaveKey flash memory 
    AVox serial portDescribed in further detail in Advanced Configuration - AtariVox/SaveKey Support -avoxport
    @@ -2913,7 +2913,7 @@ temporarily held down. Selecting options from this dialog will cause all ROMs launched after that to use those properties you specify. Clicking Defaults will disable its functionality, and use ROM properties as defined by the ROM itself. The dialog is as - follows (See Advanced Configuration - Game Properties + follows (see Advanced Configuration - Game Properties for more information concerning ROM properties):

    @@ -2923,12 +2923,12 @@
    - - - - - - + + + + + +
    ItemFor more information,
    see Commandline
    Bankswitch type-bs
    TV Type-tv
    Left Difficulty-ld
    Right Difficulty-rd
    Startup Mode-debug
    Left Joy items-holdjoy0
    Right Joy items-holdjoy1
    TV type-tv
    Left difficulty-ld
    Right difficulty-rd
    Startup mode-debug
    Left joy items-holdjoy0
    Right joy items-holdjoy1
    Console: Select-holdselect
    Console: Reset-holdreset
    From 723d06dbbbf8c14bad560cc67475c3c504f323c8 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 20 Aug 2018 18:13:37 +0200 Subject: [PATCH 042/126] update remaining screenshots for emulator doc --- docs/graphics/eventmapping_remap.png | Bin 6800 -> 7075 bytes docs/graphics/logs.png | Bin 8759 -> 11665 bytes docs/graphics/options_gameinfo.png | Bin 6004 -> 6356 bytes docs/graphics/options_gameinfo_console.png | Bin 4275 -> 4129 bytes docs/graphics/options_gameinfo_controller.png | Bin 6277 -> 6450 bytes docs/graphics/options_gameinfo_display.png | Bin 4431 -> 4708 bytes docs/graphics/romaudit.png | Bin 4139 -> 4037 bytes docs/graphics/rominfo_1x_large.png | Bin 28218 -> 29098 bytes docs/graphics/rominfo_1x_small.png | Bin 19559 -> 19829 bytes docs/graphics/rominfo_2x_small.png | Bin 71168 -> 67854 bytes docs/index.html | 16 +++++++--------- 11 files changed, 7 insertions(+), 9 deletions(-) diff --git a/docs/graphics/eventmapping_remap.png b/docs/graphics/eventmapping_remap.png index 229e207c613d15849a189136c8170021442f28c1..3a7b4203746126ce1c7f713e5a4226b4048314b6 100644 GIT binary patch literal 7075 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 literal 6800 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%0Dh*TeaJQl{E_h#8B|9@E@6}iwzEz

    SV_heO+K*V>DofP|*#09zMEo2j8w?+GXU($hE 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 literal 6004 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 O=Ov@dhP4LH@&5wezEAi7 diff --git a/docs/graphics/options_gameinfo_console.png b/docs/graphics/options_gameinfo_console.png index 7f2f36f437b75199fd448f40316864a8961bebb8..7d7ccad25a925663605355f93d8f5864ebb7ea4d 100644 GIT binary patch literal 4129 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 Mt(~k&4xEbq7gJPQtpET3 literal 4275 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%0A1U}4rL&BPNIpazd$?YdL|M3B zjX<8$(Z{jIuv)Qn!G)T*FJigDjb+~yL=3NqkwaEwC+V~YYsQC)S$W^aAu-={8bw)< zaw(Y$fnuHn=QNn%S$o-TVUTr>_9lgKdzC0Xf?Vkx#xcM2c~Tm8&043mKaH12Wq{42 zvBqnr$8CqQ3zi2rFjWst?~D~jl=~m&g3D~^=9ldANVNvAk4Gk(;V}yLkQAQvQF_2on_yrtrLEFoeBK0XzOD6Lxe zkKCMfpCGOK#b2&@jSTS_#?8qtEQ%8e6RVV4B=WouHQ}_Qo>>&S=AV@o7Z56n?)#(D znDdc!$aU~}gBgre)|YFK^RCCJ>I_rN1QwzC*MOPQxgwWLO)&Sei@S){qi4Mrb8@Ux zV(UtytBtQ+RC&~o9gyaduy_AJzPT*+Lf*iW0c|K9#~b=K6(&#^?Fs59YAkIc&m-U& z4$&-u4}UF9bt+F~3Uu>4VmFE?;60@J@6sOLu&Og zNsaYaPLaV}Hhac@6aKk;SD!DVBy&_!o`e*x1Ad@DttAKgv`{~5GTnLgV6r2v+2NpJ}RlO zeD}jBk|`2%97CJ*Z_hq4ZAP>tPzk#N3Zq{c9%nji0KN+tOa2pz)5xEWY-lHF1AL#J zFyak9I35W7ClI&euZw@XW>0x7K`6JL)eaPx<$k&8sw=Cw!^&W#VzDJv{9%op*@T#V z+m>&i--h!`vQEj4OE1VM;U)CBD;wAbWa5(FRn%4kZi;VF=(DwP<|UT~uEbipyhMgv zGcB9f_}WI=Wq$>bgG-M__G-=%r7&n2VhDp2S@q*#iS=%fb<3}E4Ud?49(etY;9%mf zd(k(QD%R%Dy@sgVbZ!5F;(Yj3mjov93hdP+NbvS{N`vv26j1A53a5s zX4ouna$}ZfrHp80CW}O^D8rWs&hC>1I zxP^bX?=JLKQRV2(Vo_L>*k!G-C5Ekl+gmcWSF?$GNKJKC%cn!QMyc=bgpbS52g;l0 zi_qAj=u~Lf-5J@XwN`s%@GZhjuiT2G?FJX2OXSpkb7wkcnoPGN{f#U+IVc!Y>!~fX z(AUcZ(tG6@;`^>bxkKaLb6u8>)V?spt*D(e)j5cBhF%t(KP6}X4-Xb`cuHwEjZ9Aq z5$VA7M5s?}6ZnTezZ)D1N)BmxPF=?aw&Z;|-)LVtT-03_hjZgQX#;28sdJI#dc=kw zJvpHzJ$C+tlhGmsv+v2~X?#)AcDW`9e2Hm6zJX=cbcvPXV4yVr@uY6Am#{fjl z-$?(}0Ql|u|K}R{&!`{L=YF&wpSUO1{osfVzYCChp$ z8^)?}T(V>{XVuW@VRCJi$r?}9IHiPN5HTJQMH_5>`r4X!e|Ss*QzsLx#{MWr2Y6#Y zi(7xfBBC2QD@gljYDolFCkpS~ z63dpBtZ;)#eVc0MG;KRwpL8!;k5|yt&d+APA53~sH0veuB{5gpC+FIG*mbBlbg>lIA@rxQoX-OOh>v<@NPCbUhxqSax}dbh^;DG zn@Scjj5V;P8sK;ksjrRRTqlLRlNIk;i~uW>LFw~_m9Q{U-3BJ4Uh!$g~T`HAH4 zG3j!=Z&7Kh2oqqx?CjG_pNBFsDMH_Kn ze7I`+8bxZ%zU>hT%}1svP&+WFeV@NkeeK^I{`(4!F9#<$mi*N-{qG7bJmOI8-qGRJ YFUSj&`mDW&zZ%#^`Zx3{b)2IA12|m_<^TWy literal 6277 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 IXm~U6FW|T*EC2ui diff --git a/docs/graphics/romaudit.png b/docs/graphics/romaudit.png index a4017257eb11c3c0de318409656affe28540a095..ffcbf49478ccad707405494704129e6eb85bf553 100644 GIT binary patch literal 4037 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 R?aRI2EK`JqVL2QZ^>5+l?+E|^ literal 4139 zcmeHKi$7HB8XjtnacLMCwXJW$$y^`|Q1c`}_fCuitO2^{sEc-@Cr=eV^z3o|WxHu-zmg zF9Lx;Htn^;xj-O-0NCz^Z2+$TTSoxA2}HQqT0-jj6ehukje!=977)mle9={3CP zrzJ&~EGF^U$F@gZyF$g8+f8k;J=pdXPH^nlv*FsBDJ)tsw6dWMu;hob_vGWsu5eUHtl-l?_X54rlCydtzVvg#}NFK^+qzs zsmbAGKAYtuzLdAM3wbdF8ed zm)FFG_l?D<>sq~FCBD5SnAl0+E2<F8oVXkwGLSPErgyPGYRXobh_y7-dX$sG z$hV)mc&$1*9|3t2ShKxQx~eEWa%<51vZKvCYP;$;Stgbj05Lq7*=y`J>O+vrh~j$j zbE)0i#1uD?j$eVU)DbI4*ZYPcCDb=5CYC~&oT78u{g8yRl$pqoO((7p1@=9(+=4taP|oZ=08_|-sTQ=+ zpvpL?5Ly$}g-UyV_G)N(pCBOj<70ykdcBlQq1o-lX#lZtF!;#5*?wS4aiEqd{NU9c zI17G*pUy@&ceTmg6=g4*E`e0|si(iB1e*U+RL%kIouDCdoN{zq*C@2<@UU%C&Q+?2 z;?vwL5Uwe=@vPpn(*QfCIP0tf8Bw{)F$c%Vv)uTG6+X=(IT?)$xeDmE2Hl^aXI4lt)tG*szlQCHZO2FxB{N^erct& zD`*5|hbIpXxOAFd9_&PWO6irP13E3GD#fvyXw5YDq|_cPPdW{xg;L)8i>ZSXzQ>;l zbWv;GKVLS++d!?X?SN6F@5H1erRK84E>EQM1qs3J$Zv9G>(+@mt)t~~~l6g~je)Q`_tA5LO_m+uXy%*5>6pjOJa_7?n^vKuCe93 zd-f0*hm{8lJI=!lc#`E)2y)GKUH_V-wFAbToA%RL#bS&{x7wfB%A-0EpKebIw?y!Z z@?Q_2-b z@*m>gtuR@|XUnIO)=N`)k7UJc#wnj>xaZxpiHplcP}kCjmasC7#}Z1m)j{2zbyYn^ zW4oLy2Kfr*!Q57s8ltpLFI`7Nq{!XElrwR!9F@9g%$SKr2savS#RN+~NOK%%m{JPg z1Ae;ko5faNDavJ^%%G0-As*TKMK>B~=B?&f+uO$2O;2{iFTqhI5#Ulk5&Zi%?~?_q zUyF~!`<+KQ15j&aEoU1S+;gjwg8Zt!r{%p@_qE{L1gxiV^TT z^f_2oepFxDb!XsVQk6d zCJez!weY+mW*3>O*68Pf&fX6?7Gr!dg_|F6c(JF~^?<|QX?Fai$F;KR@Sc2XMfP8RD zaWcgD)qAw%b?0}0`4%($VIx09BNIABD+U{zDf6oKN5_tT1EIj%RK9XtQH*0`Jo-6U zrYto6zA^z??q3_I4hCCwg4I8~NQC({9{P->y{j(Lpk|~q�g1XJBiKQ^QRwQ zVPuV%jil!4VkE}q3T}J zB|K+lPU(ybcYQMJP}r>SD-^yDan=y!qp0aFxk%ArAm->ZwL_3^n2}dUyM=8VM z6pU##^`G*nY-19P)X+I3MdVU&V7BD&^IG^yBA*te#Vl#R{c!yGc~7R zt^qq7+1k;uE})etar&Fo3$1gaiP8gu0aeIgQLk=$#G{=-4jM{UFEJ@{u<2z`dGw+#89I5UEn+APQ>xMoj%4s+s)T@*|vM7Pav+B@q zS7K9h*a>QxEwoF_bTSiifu8`VF0~zrI}vwtX`#iW@QhBL_5)_|C1J-CXz9ymhVtAF z1xQH?Iyi-=?1Al69qaYN;oUHOH>0d^C*tCx(FY5a11>ZLEMTG+?@Ix}nli!?N~ggh zb{wIniAnrHE}o{*QP{kiG= z9du0ycVxSRcO@6Nrn@4vt)s$t*3f4+PuG%oLj+WLZ?o~%UeI6l>u(_P=K}D5fa{#l zT2jYX=~Zd7aPjh~?4_mtmO{o{yP-MJMCFg75^g&4i&~EDf)W#sjfV>v@G#*^Dc8_= z#t)y{TUq0uCvyzJGN%$#CZZ5OItcJX%BLtsyC^o|si0&Y75$*k3!ApsL1&#SJRj=# z#TRw>&6OPFVrj6aE9!7_8YA8Yj`zoQPK~kM@8)3f7jic?IeA!t4*S`}$=AxpTi5r{ zJcYy&$pug;XesJbl&X4bX`s7IN9c{QK_LD^>|KtMWdK--1IGse&zX;A%All>K3ie0 z%g^<`Sj$iXi*En@C)<`f4(#N0fNj_xIk@J)480S2$Lt|0N$RhHO??2QHOMVUy{{=WlE#CkD diff --git a/docs/graphics/rominfo_1x_large.png b/docs/graphics/rominfo_1x_large.png index c04b9099a76edf8d0354eec059bfacdc9b2408f0..a749cb163c0ccc8625c80884c6eceffc2bf512cd 100644 GIT binary patch literal 29098 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 XkCXz6R2jkXar?B?^i+$KFNOXO+mc{` literal 28218 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 I@p|xo0mVa+1ONa4 diff --git a/docs/graphics/rominfo_1x_small.png b/docs/graphics/rominfo_1x_small.png index 884b8e09a38653e848c6e1bfd8e6cd6e2abd3feb..a70038533aee740d840aabc6fbad9d3e2955f90b 100644 GIT binary patch literal 19829 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 Z1wR%^XI%gT?DDNv(hzy^LQw<%{|f*gE6e}@ literal 19559 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 diff --git a/docs/graphics/rominfo_2x_small.png b/docs/graphics/rominfo_2x_small.png index 7f3ea5df0e91b4deccd4c8ed1a8920e9862c4e41..9c67810dcac238052a3af222716dd7bb3b75bfb9 100644 GIT binary patch literal 67854 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 Info Viewer in 1x mode, UI sized 1000x760, medium launcher font:

    -

    ROM Info Viewer in 2x mode, UI sized 1400x900, large launcher font:

    +

    ROM Info Viewer in 2x mode, UI sized 1280x900, large launcher font:

    The text box in the upper right corner can be used to narrow down the @@ -3615,6 +3615,12 @@ Ms Pac-Man (Stella extended codes): + + + + + - - - - -
    Console.TelevisionType:Indicates the default television setting for the + game. The value must be Color or BW.
    Console.LeftDifficulty: Indicates the default difficulty setting for the left @@ -3626,12 +3632,6 @@ Ms Pac-Man (Stella extended codes): Indicates the default difficulty setting for the right player. The value must be A or B.
    Console.TelevisionType:Indicates the default television setting for the - game. The value must be Color or BW.
    @@ -3659,8 +3659,6 @@ Ms Pac-Man (Stella extended codes): CompuMate Spectravideo CompuMate (if either left or right is set, CompuMate is used for both). Mindlink Mindlink controller. - - https://atariage.com/2600/programming/atarivox_mem_list.html From 797ced56b0dbaccd3680e6635203c56f9de81611 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 21 Aug 2018 21:11:25 +0200 Subject: [PATCH 043/126] fixes #359 --- src/debugger/gui/DebuggerDialog.cxx | 59 +++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/debugger/gui/DebuggerDialog.cxx b/src/debugger/gui/DebuggerDialog.cxx index f867233dd..38cca0cba 100644 --- a/src/debugger/gui/DebuggerDialog.cxx +++ b/src/debugger/gui/DebuggerDialog.cxx @@ -45,6 +45,7 @@ #include "ConsoleMediumBFont.hxx" #include "StellaMediumFont.hxx" #include "OptionsDialog.hxx" +#include "StateManager.hxx" #include "DebuggerDialog.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -117,6 +118,64 @@ void DebuggerDialog::handleKeyDown(StellaKey key, StellaMod mod) case KBDK_UP: // Alt-up rewinds to end of list doUnwindAll(); return; + + case KBDK_Z: + if(StellaModTest::isShift(mod)) + instance().console().toggleP0Collision(); + else + instance().console().toggleP0Bit(); + break; + + case KBDK_X: + if(StellaModTest::isShift(mod)) + instance().console().toggleP1Collision(); + else + instance().console().toggleP1Bit(); + break; + + case KBDK_C: + if(StellaModTest::isShift(mod)) + instance().console().toggleM0Collision(); + else + instance().console().toggleM0Bit(); + break; + + case KBDK_V: + if(StellaModTest::isShift(mod)) + instance().console().toggleM1Collision(); + else + instance().console().toggleM1Bit(); + break; + + case KBDK_B: + if(StellaModTest::isShift(mod)) + instance().console().toggleBLCollision(); + else + instance().console().toggleBLBit(); + break; + + case KBDK_N: + if(StellaModTest::isShift(mod)) + instance().console().togglePFCollision(); + else + instance().console().togglePFBit(); + break; + + case KBDK_COMMA: + instance().console().toggleFixedColors(); + break; + + case KBDK_PERIOD: + if(StellaModTest::isShift(mod)) + instance().console().toggleCollisions(); + else + instance().console().toggleBits(); + break; + + case KBDK_T: // Alt-t toggles Time Machine + instance().state().toggleTimeMachine(); + break; + default: break; } From 59fb2214edefa5bb3fc0bbfdb5bcc01782dfecde Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 21 Aug 2018 20:19:55 -0230 Subject: [PATCH 044/126] Minor code cleanup and fix a warning. --- src/debugger/gui/DebuggerDialog.cxx | 16 ++++++++-------- src/gui/AudioDialog.cxx | 3 +-- src/gui/DialogContainer.cxx | 15 ++++++++------- src/gui/DialogContainer.hxx | 4 ++-- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/debugger/gui/DebuggerDialog.cxx b/src/debugger/gui/DebuggerDialog.cxx index 38cca0cba..c61ed9a18 100644 --- a/src/debugger/gui/DebuggerDialog.cxx +++ b/src/debugger/gui/DebuggerDialog.cxx @@ -124,53 +124,53 @@ void DebuggerDialog::handleKeyDown(StellaKey key, StellaMod mod) instance().console().toggleP0Collision(); else instance().console().toggleP0Bit(); - break; + return; case KBDK_X: if(StellaModTest::isShift(mod)) instance().console().toggleP1Collision(); else instance().console().toggleP1Bit(); - break; + return; case KBDK_C: if(StellaModTest::isShift(mod)) instance().console().toggleM0Collision(); else instance().console().toggleM0Bit(); - break; + return; case KBDK_V: if(StellaModTest::isShift(mod)) instance().console().toggleM1Collision(); else instance().console().toggleM1Bit(); - break; + return; case KBDK_B: if(StellaModTest::isShift(mod)) instance().console().toggleBLCollision(); else instance().console().toggleBLBit(); - break; + return; case KBDK_N: if(StellaModTest::isShift(mod)) instance().console().togglePFCollision(); else instance().console().togglePFBit(); - break; + return; case KBDK_COMMA: instance().console().toggleFixedColors(); - break; + return; case KBDK_PERIOD: if(StellaModTest::isShift(mod)) instance().console().toggleCollisions(); else instance().console().toggleBits(); - break; + return; case KBDK_T: // Alt-t toggles Time Machine instance().state().toggleTimeMachine(); diff --git a/src/gui/AudioDialog.cxx b/src/gui/AudioDialog.cxx index 1fcae59df..6450a973e 100644 --- a/src/gui/AudioDialog.cxx +++ b/src/gui/AudioDialog.cxx @@ -43,8 +43,7 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, const int INDENT = 20; const int VGAP = 4; const int lineHeight = font.getLineHeight(), - fontWidth = font.getMaxCharWidth(), - fontHeight = font.getFontHeight(); + fontWidth = font.getMaxCharWidth(); int xpos, ypos; int lwidth = font.getStringWidth("Volume "), pwidth; diff --git a/src/gui/DialogContainer.cxx b/src/gui/DialogContainer.cxx index 1d3aab8a2..fbd2a92ba 100644 --- a/src/gui/DialogContainer.cxx +++ b/src/gui/DialogContainer.cxx @@ -58,9 +58,9 @@ void DialogContainer::updateTime(uInt64 time) Dialog* activeDialog = myDialogStack.top(); // Key still pressed - if(myCurrentKeyDown.keycode != 0 && myKeyRepeatTime < myTime) + if(myCurrentKeyDown.key != KBDK_UNKNOWN && myKeyRepeatTime < myTime) { - activeDialog->handleKeyDown(myCurrentKeyDown.keycode, myCurrentKeyDown.flags); + activeDialog->handleKeyDown(myCurrentKeyDown.key, myCurrentKeyDown.mod); myKeyRepeatTime = myTime + kRepeatSustainDelay; } @@ -184,8 +184,8 @@ void DialogContainer::handleKeyEvent(StellaKey key, StellaMod mod, bool state) Dialog* activeDialog = myDialogStack.top(); if(state) { - myCurrentKeyDown.keycode = key; - myCurrentKeyDown.flags = mod; + myCurrentKeyDown.key = key; + myCurrentKeyDown.mod = mod; myKeyRepeatTime = myTime + kRepeatInitialDelay; activeDialog->handleKeyDown(key, mod); @@ -195,8 +195,8 @@ void DialogContainer::handleKeyEvent(StellaKey key, StellaMod mod, bool state) activeDialog->handleKeyUp(key, mod); // Only stop firing events if it's the current key - if (key == myCurrentKeyDown.keycode) - myCurrentKeyDown.keycode = KBDK_UNKNOWN; + if(key == myCurrentKeyDown.key) + myCurrentKeyDown.key = KBDK_UNKNOWN; } } @@ -363,7 +363,8 @@ void DialogContainer::handleJoyHatEvent(int stick, int hat, JoyHat value) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void DialogContainer::reset() { - myCurrentKeyDown.keycode = KBDK_UNKNOWN; + myCurrentKeyDown.key = KBDK_UNKNOWN; + myCurrentKeyDown.mod = KBDM_NONE; myCurrentMouseDown.b = MouseButton::NONE; myLastClick.x = myLastClick.y = 0; myLastClick.time = 0; diff --git a/src/gui/DialogContainer.hxx b/src/gui/DialogContainer.hxx index 6905e3c86..b6cfe01ed 100644 --- a/src/gui/DialogContainer.hxx +++ b/src/gui/DialogContainer.hxx @@ -179,8 +179,8 @@ class DialogContainer // For continuous 'key down' events struct { - StellaKey keycode; - StellaMod flags; + StellaKey key; + StellaMod mod; } myCurrentKeyDown; uInt64 myKeyRepeatTime; From 858d6991ca66d46a0af277dacfc10023c543e2cb Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 22 Aug 2018 09:19:07 +0200 Subject: [PATCH 045/126] fixes reversed dev.settings --- src/emucore/CartBUS.cxx | 2 +- src/emucore/CartCDF.cxx | 2 +- src/emucore/CartDPCPlus.cxx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/emucore/CartBUS.cxx b/src/emucore/CartBUS.cxx index 4aeb0123a..4578be1f3 100644 --- a/src/emucore/CartBUS.cxx +++ b/src/emucore/CartBUS.cxx @@ -64,7 +64,7 @@ CartridgeBUS::CartridgeBUS(const BytePtr& image, uInt32 size, myDisplayImage = myBUSRAM + DSRAM; // Create Thumbulator ARM emulator - const string& prefix = settings.getBool("dev.settings") ? "plr." : "dev."; + const string& prefix = settings.getBool("dev.settings") ? "dev." : "plr."; myThumbEmulator = make_unique( reinterpret_cast(myImage), reinterpret_cast(myBUSRAM), settings.getBool(prefix + "thumb.trapfatal"), Thumbulator::ConfigureFor::BUS, this diff --git a/src/emucore/CartCDF.cxx b/src/emucore/CartCDF.cxx index 41a9aa1f7..c6eacab33 100644 --- a/src/emucore/CartCDF.cxx +++ b/src/emucore/CartCDF.cxx @@ -67,7 +67,7 @@ CartridgeCDF::CartridgeCDF(const BytePtr& image, uInt32 size, setVersion(); // Create Thumbulator ARM emulator - const string& prefix = settings.getBool("dev.settings") ? "plr." : "dev."; + const string& prefix = settings.getBool("dev.settings") ? "dev." : "plr."; myThumbEmulator = make_unique( reinterpret_cast(myImage), reinterpret_cast(myCDFRAM), settings.getBool(prefix + "thumb.trapfatal"), myVersion ? diff --git a/src/emucore/CartDPCPlus.cxx b/src/emucore/CartDPCPlus.cxx index a6200c430..47d1c1d06 100644 --- a/src/emucore/CartDPCPlus.cxx +++ b/src/emucore/CartDPCPlus.cxx @@ -53,7 +53,7 @@ CartridgeDPCPlus::CartridgeDPCPlus(const BytePtr& image, uInt32 size, myFrequencyImage = myDisplayImage + 0x1000; // Create Thumbulator ARM emulator - const string& prefix = settings.getBool("dev.settings") ? "plr." : "dev."; + const string& prefix = settings.getBool("dev.settings") ? "dev." : "plr."; myThumbEmulator = make_unique (reinterpret_cast(myImage), reinterpret_cast(myDPCRAM), From 21b8fa133fe662ba216cc2b74d218ed4374f36db Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 22 Aug 2018 11:10:45 +0200 Subject: [PATCH 046/126] dirty fix for #355 --- src/emucore/FrameBuffer.cxx | 22 +++++++++++----------- src/emucore/FrameBufferConstants.hxx | 27 ++++++++++++++++++--------- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index 4ae7a57fd..4799f61c9 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -1068,17 +1068,17 @@ void FrameBuffer::VideoModeList::setZoom(uInt32 zoom) *** Scrollbar colors *** kScrollColor Normal scrollbar color kScrollColorHi Highlighted scrollbar color + *** Debugger colors *** + kDbgChangedColor Background color for changed cells + kDbgChangedTextColor Text color for changed cells + kDbgColorHi Highlighted color in debugger data cells + kDbgColorRed Red color in debugger *** Slider colors *** kSliderColor Enabled slider kSliderColorHi Focussed slider kSliderBGColor Enabled slider background kSliderBGColorHi Focussed slider background kSliderBGColorLo Disabled slider background - *** Debugger colors *** - kDbgChangedColor Background color for changed cells - kDbgChangedTextColor Text color for changed cells - kDbgColorHi Highlighted color in debugger data cells - kDbgColorRed Red color in debugger *** Other colors *** kColorInfo TIA output position color kColorTitleBar Title bar color @@ -1093,9 +1093,9 @@ uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = { 0xc9af7c, 0xf0f0cf, 0xd55941, 0xc80000, // UI elements 0xac3410, 0xd55941, 0x686868, 0xdccfa5, 0xf0f0cf, 0xf0f0cf, // buttons 0xac3410, // checkbox - 0xac3410, 0xd55941, // scrollbar - 0xac3410, 0xd55941, 0xdccfa5, 0xf0f0cf, 0xa38c61, // slider + 0xac3410, 0xd55941, // scrollbar 0xc80000, 0x00ff00, 0xc8c8ff, 0xc80000, // debugger + 0xac3410, 0xd55941, 0xdccfa5, 0xf0f0cf, 0xa38c61, // slider 0xffffff, 0xac3410, 0xf0f0cf, 0x686868, 0xdccfa5 // other }, // Classic @@ -1104,9 +1104,9 @@ uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = { 0x000000, 0x000000, 0x00ff00, 0xc80000, // UI elements 0x000000, 0x000000, 0x686868, 0x00ff00, 0x20a020, 0x00ff00, // buttons 0x20a020, // checkbox - 0x20a020, 0x00ff00, // scrollbar - 0x20a020, 0x00ff00, 0x404040, 0x686868, 0x404040, // slider + 0x20a020, 0x00ff00, // scrollbar 0xc80000, 0x00ff00, 0xc8c8ff, 0xc80000, // debugger + 0x20a020, 0x00ff00, 0x404040, 0x686868, 0x404040, // slider 0x00ff00, 0x20a020, 0x000000, 0x686868, 0x404040 // other }, // Light @@ -1115,9 +1115,9 @@ uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = { 0xf0f0f0, 0xffffff, 0x0078d7, 0x0f0f0f, // UI elements 0xe1e1e1, 0xe5f1fb, 0x808080, 0x0078d7, 0x000000, 0x000000, // buttons 0x333333, // checkbox - 0xc0c0c0, 0x808080, // scrollbar - 0x333333, 0x0078d7, 0xc0c0c0, 0xffffff, 0xc0c0c0, // slider 0xBDDEF9| 0xe1e1e1 | 0xffffff + 0xc0c0c0, 0x808080, // scrollbar 0xffc0c0, 0x000000, 0xe00000, 0xc00000, // debugger + 0x333333, 0x0078d7, 0xc0c0c0, 0xffffff, 0xc0c0c0, // slider 0xBDDEF9| 0xe1e1e1 | 0xffffff 0xffffff, 0x333333, 0xf0f0f0, 0x808080, 0xc0c0c0 // other } }; diff --git a/src/emucore/FrameBufferConstants.hxx b/src/emucore/FrameBufferConstants.hxx index e64a26371..cafa4ac09 100644 --- a/src/emucore/FrameBufferConstants.hxx +++ b/src/emucore/FrameBufferConstants.hxx @@ -46,37 +46,46 @@ enum class MessagePosition { // the future, if necessary using ColorId = uInt32; static constexpr ColorId + // *** Base colors *** kColor = 256, kBGColor = 257, kBGColorLo = 258, kBGColorHi = 259, kShadowColor = 260, + // *** Text colors *** kTextColor = 261, kTextColorHi = 262, kTextColorEm = 263, kTextColorInv = 264, + // *** UI elements(dialog and widgets) *** kDlgColor = 265, kWidColor = 266, kWidColorHi = 267, kWidFrameColor = 268, + // *** Button colors *** kBtnColor = 269, kBtnColorHi = 270, kBtnBorderColor = 271, kBtnBorderColorHi = 272, kBtnTextColor = 273, kBtnTextColorHi = 274, + // *** Checkbox colors *** kCheckColor = 275, + // *** Scrollbar colors *** kScrollColor = 276, kScrollColorHi = 277, - kSliderColor = 278, - kSliderColorHi = 279, - kSliderBGColor = 280, - kSliderBGColorHi = 281, - kSliderBGColorLo = 282, - kDbgChangedColor = 283, - kDbgChangedTextColor = 284, - kDbgColorHi = 285, - kDbgColorRed = 286, + // *** Debugger colors *** + kDbgChangedColor = 278, + kDbgChangedTextColor = 279, + kDbgColorHi = 280, + kDbgColorRed = 281, // Note: this must be < 0x11e (286)! (see PromptWidget::putcharIntern) + // *** Slider colors *** + kSliderColor = 282, + kSliderColorHi = 283, + kSliderBGColor = 284, + kSliderBGColorHi = 285, + kSliderBGColorLo = 286, + // *** Other colors *** kColorInfo = 287, kColorTitleBar = 288, kColorTitleText = 289, From 90f893b71d228c2ad4245f24c797710281a84c37 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 22 Aug 2018 11:54:40 +0200 Subject: [PATCH 047/126] aligned help wording to changed dialog wording --- src/gui/HelpDialog.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/HelpDialog.cxx b/src/gui/HelpDialog.cxx index 330a56cc1..acc52b6df 100644 --- a/src/gui/HelpDialog.cxx +++ b/src/gui/HelpDialog.cxx @@ -163,7 +163,7 @@ void HelpDialog::updateStrings(uInt8 page, uInt8 lines, string& title) ADD_BIND("Remapped Eve", "nts"); ADD_TEXT("Most other commands can be"); ADD_TEXT("remapped. Please consult the"); - ADD_TEXT("'Input Settings" + ELLIPSIS + "' menu for"); + ADD_TEXT("'Options/Input" + ELLIPSIS + "' dialog for"); ADD_TEXT("more information."); break; } From aa9b4fb3b7f9d4368f1da38aa18cd070acbfcded Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 22 Aug 2018 12:15:07 +0200 Subject: [PATCH 048/126] updated some screenshots for debugger doc --- docs/graphics/debugger_audiotab.png | Bin 2394 -> 2303 bytes docs/graphics/debugger_dataops.png | Bin 509 -> 788 bytes docs/graphics/debugger_globalbuttons.png | Bin 1402 -> 1226 bytes docs/graphics/debugger_iotab.png | Bin 10011 -> 9928 bytes docs/graphics/debugger_options.png | Bin 407 -> 386 bytes docs/graphics/debugger_ram.png | Bin 7579 -> 7599 bytes docs/graphics/debugger_ramsearch.png | Bin 6094 -> 5400 bytes docs/graphics/debugger_tiainfo.png | Bin 1732 -> 2612 bytes docs/graphics/debugger_tiatab.png | Bin 12035 -> 12842 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/graphics/debugger_audiotab.png b/docs/graphics/debugger_audiotab.png index 0aaec2f883d73968b8e49430fda1789b06930402..eb6eee1335210f144b41e70084bb35d08b97ea60 100644 GIT binary patch delta 1494 zcmYjRdoERp$nt4s|h<2@$)LMBOhkH}+) z^@ya+hV>c~@+jtbH6D{0?vwZ2Hq5=r{BiHU@`F|q) zc!sC!M}@%zy=~DJP6Q9mqnKM`I^tHNFLu9b_h;n#n2cwpW$Ma=Nsc_%G}?MlqBYKW z?>uk{j-FQzX7_hZqCD^SaQYFgjO7{jiuV`mJdJ$_D|{ZA#I$h7bSyY0=BQOZX`)Z7 zxopXmud+R!Ulx#Y)8}$-&_aAj-h4PmSHZ&eD0t(FUSZhoZ0fw6rar0qxL1f!sL-q; zd~?gAW94o@;R+`VOt!A}@YPJP8O<*;8CRLnEF;8=qUpn4>GkCjp+W_4IT^;9v@6HN zsh(Kdd31A8bzJq%*yEb>m_^mB(R%mhp@_#840_rIxGfUYcg!uA7Dc*DlHeuT)ur|# ziIH>a_~L2oI}CX9ErHuxNSL7`PNY-ndCc3w>*ebPC{+k4JTaHTdlgnp?P=%^&zfCP z-Y@wt7p$ZJq9^Ntbkm&=iVI+B8sD-O&4hr(ByV@8U234lKw1%@Co0&zZT?Mk?0Tmi zOFXiP?tRpa)W0f#$x81jQo$bO4X}Xg}8|n)n+2gZ{ z8BS2#;q_=MQM)9J^xxpzaseFDWHU{kz{rla_npakZM-h^$?006q--U9*!i4!c96$p-U5ZLMd{)=M&pT zJ&2%zWZFG5$boLLr5IW+u#3Q?kpf9tViUT!SdCIYYS8_Ey)6zkcY1Mzf4KEb zB;GyqkUkmD`r!|FsWE>Cp7j*e+0EDbSD>(+)q!SGWH;PLz4ac2T^uj)$M&po-rN3OHxwYl#QprmSc{2|&6&;^QQy zep*Z^uV-NO2cazM5KrMC8V~1hosW{NdI&w>`3w)#S6`6=aoK$a8&h(DSI^En>ZVLR zBMtYwZg(ZCrJX~T?5-8W_2~q$%!pcyX{NYL|GQuLOlUH@JAAw!;S z{Y^w3lT+xU!DrkSkep~e=CBq?&b?Cvj63K*u3wLTPs=FN%fFgA+xL7U$*xDpSgH<# zQst;Sky)lE=G*k5D#P6zKrh#w%$-cB`}mr!9;HNoflX!$5jx;i-&@zY~kVGHCqOR2PmxvqTM@L zg8n(b=2FPl%%O3Sm-)IA?dJUR6-pGhQ$PsPXNFRt8WMZDE_g%%)w78fb0x_kxOR&X za!;;tq_e>|5b Vn$t;K65o5(Fk35obd{xN>|b_j&yN5A delta 1591 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 literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^(Lh|v!2~4Ned6i>Qk(@Ik;M!Q0&_r^QSGdi2?GP; zdQTU}kcwMxZ(htjWFW#C;Fd6h?|=o*#fe&m?#sQFdg*qssQb;6WtTrKA0k?0vGK9^ z{mb9q2G_q)XL0EeP;^?d@5ELw>mCo;zSH^ElTKVezB5DJsfA-=wfsM+iPpy-x36=Z zC$cF3q_l-YaQAvHUs3-Sj}<4DhFPDn%swx3?olU5%A;TN`8&z%Xw7tPAQ@W2{ayfQ zJg1nX+uCI(rY*j+saWMglSjje{}i;^Q&WU@I>Z+EXu;#=J zHQOU^wrJV8U#d@w4Srycnt8t|f=pYD~NtqnrI@yU@v7le|JRyt`V%!^ML7 zb?#?Zt$!5$zQm=f>N0nnsr9lsx+!bUE}gSGeGSxU9aDl&X+E8jAPDlo#HXFlKZ#7@ zm?-DcCa(K;y~D(t0{OpRJmU~ldL^jj(qW>k^mIy*Rrhp1kgp(Gzr;BMy{`0d`P$W& zJA0q+Uh1+f{?0B-q1I1f=^tI)Akgf-t4Ni=1J}Rq-Pz^JNCNSE=mhMDm<~s o%W~Nn{1`ISV`@iy0XB4ude`@%$AjKtah8*NBqf{Irtt#G+J&g2c?c61}|C5(N`I z13e?dj|!Pnfd*N5x;TbZ#J!zyvGksJ5~jJI+@jj8 zeOc~dt%pq1G&!;D?SDUh|J>};9_75?nm}As{d~C_S=ZWLvc3D~`+9!7ef!1Pem4zd zuShX%ZF5+w7?90za!Xz9-^(+;SfyOb3b~f{`jnPX_S%Kl1ZA>?GUt?Rubbx+#l5dX z*>&%oS@YFrhWY9)T6s+5>!nV=Pa_nlc&kFGO89e&dzqixXR9d)QuFh?+2+ zadK06mg!NcyU%Qrl$L+ysEy+OWcPpV>8)N%E|zY|ys*;H_V~+dQ8#K|N3C79Zo1kf zi;E1(QQZF&H)YsL@EWYx`e0A#+G|ZNv(|Ey+P_MTS$#NWtt8wB#CmImX^VHp+#kOS zWn$B#*I$*{{`yP4vtQ|-gz1-eO?#HOJK%cOVw_ST-s0ZTD|PR+6`_?{niww@>Uh41p58GNwV0(#3d>a72v zro0_?|7M0~U7Z?p;^)fJ3C}E--sm~-bc@oY&P?Y(_hlLnChl@{w=1>RDqRw}QuKw# z@)@s1uGoG(a_05Y{>yLPZw^|$F5{2Lg0nMcRPN1DvNbL3Uzaf{bE-#kQt_plB?=ey z{5J3RS6jQRZ>h22=eRlPe{L=BecM-;U?FNZKhHA{9D^D zEZ_QXi}}K9d28Lz1ikLK7Q6Y1)rza;x3B!#(zyG3X6cz%zMk8GX+~g0=wbhCj>h`v z`9AGo!RA+@yq{(=m)ozpDw6$W*}t~(rO~Tbnk)n+IrfENV1J)j61vZTcUgM(x@VuC zT+ZrZFPvw)`K_4$#a9k%-R%pjG>c;yt%Q6I8~ogor|EFfKYLEbjG8FlKxN*ua?c~x zrJjXFaWlW`%ej4e?G`WR&BrURb++y74_k6}TUwyQlP_N;`LA|#Ulx4cG=tgC#7%8& hCxIwptf~9M{%G&6jo)wWs{$4^44$rjF6*2Ung9+pM~MIc literal 1402 zcmXw34OEg>7{*e}wCw0~qcT0^Us!HmUx#E!>Sq3urKSyw1jLU_MkXwE{!UsyOmk-C zXQsO;ts5RkX!7<3pLHemxXk@(h?6Xj0vSbGB4ML&rme?-RtdQ6yEsTt8TKmY!EuY3Xgvw=nia?xyfaL|FwBl_}RinV_0 ztahEUm0PgO+)GPv_xYOSv4GPI3fY^mlv34w*%_j#(FwB23UC; z{z>cW$fms+CNd!cd;$vp zIth$=P$gvSgu8{HHwN&s8Dd@LV;+afI}ca)KU5t`^3>ax`r9B(+0tT>y@F#CvUV3XL;&9$qIV?>r-$ z5xd-iIU60yIt(vj=_`!*QjJ70-12f9#t-@CL@2Jyju?qPk14{DmVd@gV0rtBx*>ef z^c9<9%!3;pz$qFbtqI02YM+m7?=YzRwn2T5Cem)eHC(jr{O4k|_Zc~91&&APv?LM^ zx@-c;#-Ds-q={Slp{&l^%HKuWraMZ~-Opcdp*I>Cp6|#=#@?&A{YyLBYZdX+olhS3bj8> z*E5Q>4+9!naupl%l+$;aqK`Y+E{+$Kfhjjb+aW~3ZjYqGK1^m;R7pXv8&z^4Qcl_t zqIX}c97$5$N#Ko)QE;_6apqbe1aV!RFT?a86p-qrH|CtHVCPt1VlLLDCgjmuy*_Yui?%zTMR}I-A zK7OSPoC2i}vF6xhaiJPfEzYD1MvH}ZoT(b0rZJrfuCz66ZNVgUEghX6rm!TaZXvoZZK!|#Qy=CVFz zW6F9TIOF!2Ef7)%Tct`rCa_S5t-#Ad5M(~T`K|fDTOkv<-Sqb7Q%hRA5En+XoxnfL z7DgUzBi_?F^q3GZk_iasNQJv}ioawOu@di3jd~Ps9Xw#R%i_|~(wzP6=rL7@fG$V= PNmTfrsNg%_Pz(PDTkWV` diff --git a/docs/graphics/debugger_iotab.png b/docs/graphics/debugger_iotab.png index 5520be33d240c56c66c875a1a4e9c5faed12da88..d52047bb153048cd3f342ce172ecd5b8e77f8e3a 100644 GIT binary patch literal 9928 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 HFbn-3cNpv7 diff --git a/docs/graphics/debugger_options.png b/docs/graphics/debugger_options.png index eaf5f6dc9016f46e6769cfe18384c87008b0d867..12d5f224c1fd4a50c5748f9b14dc3c6394b63172 100644 GIT binary patch delta 281 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 NjE&3;Df%w={tJVM{96D3 literal 7579 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 F{{ZE;=6V1C diff --git a/docs/graphics/debugger_ramsearch.png b/docs/graphics/debugger_ramsearch.png index 117455c6905094f760fe708fac20086febff21a9..c5b24e87a4316000bc4bbdf29eb849d4824415ae 100644 GIT binary patch literal 5400 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 literal 6094 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 diff --git a/docs/graphics/debugger_tiainfo.png b/docs/graphics/debugger_tiainfo.png index 449d39716a851cc5dfb105f9bb26d3458d8e8e3f..f3eb3ef34c3fa2de007aa3f3df229e0d7a5b0c8e 100644 GIT binary patch literal 2612 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 literal 12035 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 R?x_ Date: Wed, 22 Aug 2018 10:17:53 -0230 Subject: [PATCH 049/126] Fix issue #363; too eager pruning in previous commit. --- src/emucore/OSystem.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index 3363e1e99..133bcd014 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -453,6 +453,7 @@ unique_ptr OSystem::openConsole(const FilesystemNode& romfile, string& // Get a valid set of properties, including any entered on the commandline // For initial creation of the Cart, we're only concerned with the BS type Properties props; + myPropSet->getMD5(md5, props); // Local helper method auto CMDLINE_PROPS_UPDATE = [&](const string& name, PropertyType prop) From 7a94ad0a8c0ee79a9b652eeb086867e0bdce7ef6 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 22 Aug 2018 15:29:35 +0200 Subject: [PATCH 050/126] fixed a warning --- src/debugger/DebuggerParser.hxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/debugger/DebuggerParser.hxx b/src/debugger/DebuggerParser.hxx index 78bb4c05c..172ecccac 100644 --- a/src/debugger/DebuggerParser.hxx +++ b/src/debugger/DebuggerParser.hxx @@ -51,7 +51,7 @@ class DebuggerParser static inline string red(const string& msg = "") { - return char(kDbgColorRed) + msg; + return char(kDbgColorRed & 0xff) + msg; } static inline string inverse(const string& msg = "") { From 5b6541abf2bd4e4e9c093838e30fbf13cf243108 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 22 Aug 2018 21:05:13 +0200 Subject: [PATCH 051/126] updated some shots --- docs/graphics/options_misc.png | Bin 3603 -> 3763 bytes docs/graphics/options_misc_classic.png | Bin 3763 -> 3922 bytes docs/graphics/options_misc_light.png | Bin 3592 -> 3778 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/graphics/options_misc.png b/docs/graphics/options_misc.png index f8ecbffb92d45e7cfd2629441c44eb4c62e6988b..c21a9dd931fd5eba6d9637b10dc1294bbe2b8917 100644 GIT binary patch literal 3763 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 KR%P;I?7sm$)7xzT literal 3603 zcmeHJiC5Fd7LFFGkgyatKp;{pC`eGYCInCjJ0%e$?7OTI!jeEhqfulN8?a$j5)hG9 zWEC)q^noHEC5fo)JA@x8J5dA)@KXEU>Fay%FX-u>_&ErtT?Bgz6Hp~ffhXLE1RC2KgFrQDV1bV)2=o=` z+z$?BLOduas6t1&0|YAk(WkSDJj^ayUSd`%RjK)pJle4Jdkuwh`%m%_?8Cw=*-bLkx4i&cpFmcmxeD8@mN4JM26)Tvq zCYaQy8`1N*j5>Cq6cUJ4ZhRUCJ>khgG?sHis}s2A&5=B_fpx>jO?!P-)hZsGXGNLa zoHh=WOGI1L1vCuDq4i9wT-V}sSpFp+LrP7QTq_*v-ySb;h-8Y}DWXn=6h%NzcY3#D zx!7Pv$)lO)ueA%y#I+oQEK>YA_idH@a5p}ZVamzYBGf1jTGGEGQ^qrcwQ>0T^w0Xl zQ~-ceHX1X=_aG>TXBDIvQw0Qr&JBtP_{)lzYC)fasw}pyt!PGU61IUQM!!n+AG8bY zusZ3utsiB`xPG3y=EFJ(p0-nYRzmq?h@_PcI&lZl0d>SXrx9YMvHyYvH1 zs|bl!=dzyNLn2vs2yOSX3}*Xd-kLkr9C=P2HwG>}T2=t~x05t*`<%@IZzZ_Xx7Y%B zed_~ST7%Gu*iaz*!k2*m&8U#)XyDT}v0Jg}8lNKduSfek+f@FTfcx{+T$*~!5HP&` zw$90i#Ef4=P@qN&7+K6Drb{)SFUF3>k3l*F69l6vUx3U~T}HI?33-IAp&gVZP>_XdhR?ayt29Wap*@?I%+#-u_xyO^krQmd_`(jJf5RE)6e6ioGCg!`$cT>>yyIPNNHXx<^UjgY)0?SDr)D4Hu z$d`Zo1iDFy@JtxtegH#MoZypWjKAO0V)aEPI*G|lA*X9gq1va#Lx7`z-YLU}>UmFU znN0EL?PZ$(NbNk}$m&}7&gvbLc~+t1ghg3UXKDq_31PQ7kTpkF_jmTiSDN5|(mOTZ zLV}CYRvlVj#FPl!D+oQ%u3r+-yfiaR>D07iAu(aW<_F(X%s09FX$963YBkX~oB3pQzG!VDH@J(Wn zZo$;}X6*YzpLMrgB(!F{P1WPlLXTx<<>ZRT^ZO@c{emRR3$t37lgieE8969(r2Wkn zFcwqDLO;Ii(x+optUFUY$z$>HgH%%=NOPcKXtJj*AjtgzA5H^2c#svkS8IqqWgUO@ z^v->LZl>2S1V*~ypURD}Jbg);zyavn=51Z(Ao5tutNBxc?~!^e`c)^saztQ;#}+Ly%hvahFVYpQC)v%`3d=E0de0PJvJR7viDuFBGP(b;ydE}q#V%K%3cbGo(J z9?>7=yXWQ8Nixs6j!z9g43Zsl6I||#{$A)QO|EWfI`5B_KFRQl+Jn8BA?yZ}p?jzfU7JT-v7<5KZkw-W)~Y z2S%d%(|)BU*gDrlHt#iYpl9$cezP@E$WByc@LT*ceFF{&u8a#N&V2JcX}I>;LN%1( z>l3fBhQy$@X>VN8e~R4ZV89J3ak?Q*=jHRtBXzpe+NNPKS%fj)g0VETRz{mq6@1)1 z+1gfZI&C=Rh-r{-fs29_K$h;VwLZ-R=S{iK;*s+fs&az~3wB+EQMPuS?lhN_mK z>}2iCLF}Af-qeVhrN8^XY5VJfFE^lZ@$3zWKSfx^pm-*aOd|U;VJ-OUb{zOllpH1k z-}m&|4k01t-+r)4dre;Ba;KYI%n)mn@I0y!bvk{li6PU~&9BZj0ibaD3Y*%T>|J3*| fEe@h(bz|eq&89)9i&{_XZymao8QQec#5?YvCQYoe diff --git a/docs/graphics/options_misc_classic.png b/docs/graphics/options_misc_classic.png index e7ef2bdb1d9f56e80352df3f1dd6d69f9c510c94..c56ff1fd0a9f0ce36a2199b864f104e920dc376e 100644 GIT binary patch literal 3922 zcmeH~`#;m|AIB$4$uWg6raL8(HK%TDm?k+NE2$AimP10+grpJ@lEcu5m^s$cL2E57 zIgFI%JjWceET=Xs=DX^?zxUn!%l8lX-k-wP`n@6Y@Cd=ee)EhRQ7 zZUO)R5>|(h&H#WAPtbO66c#86aGIy!CKTpuX%47<3z`xPfTs|42ms(gs@RIxdH_He z;Arb=A<)gt%>4cRRSQ*{1cQICe+m3Q5l9xV3Kr~FH002+FaSW3_Pq%;o+(2MM1^n* zw{Vv;e&LZ`p}v3+FHCT_cCc@_s-E^fZ5`;GDkc*E5PNKeM7W;!VBbl>_V1Rq=no%S z!(}h82R4zE=~*-IM_zjI(xXUws=>hO!U418g@sfzbIyH7xR$GwSSL-;4QH*bBu+>- zTFUX6`aA#?4hB&xVxohIpn~(}c$ml-6z^n8GI`>P56x6J)fdCKl|jJmj~h4Nexn;F zpL+|fC6CBb(<#yuz14~=T$OIRE^{a_UA_{U_Ia^caL7kt&u^XA zu;m)3{C=+xt*o_roh~EFu40JK2!q{*I(Sy-)H_2Hos_M+@}@M{TEV*32RHje+8le| zrQjqM&5X~Gy2N*A8gWQo>>~zo`f&W|mXgduKdk{EPB|WZWDk2AT0I54Ux8#(^I|$D z2nRzb>c`bexTm9o^rle24sKj`Q4Qi2PFycgxXR5@iO#q*{lF>Ki`5M<1a{Kq;jCrD zSar{Pc;<#5I0a-aD17eqmx#Y8&qr`#hms)cWXcn+vb^qM-O5zt$`gEDXJY5zK3c0v z&fH1b2gA|}k+ZulZcc*{UZ_2;yYqoy5xH-2$W-cPNcYJ`c_GnG8mYp>v=E;5_~B8> zXCKYsS?!UgZSh_q^~$YxdGaK}3*^Y#%eHDGwYTseZzv-BM5EGIV@P{9C!S~Hn#BH=A~ix z<0HwJ#s+6N__MX|d{3i3}mUCXK`B+8?9$XIOKz`ErTN(=hkD>mS z(?7a41imRh$#ZQv>moEenzgz{=j~b9Gt@dkq)Jk?8rQ-hOCv68b1ge4w=bEO} z5+iosMOML82g*o`@JoV6Y~lMDY?ll;S=(4X3SCF`IdK87%=jjPGN)*D$YK9fD1-Yy zHF>)@2k4nUI~XA@4%dN%P)%r*sn_hMMD)W!M#){%eW|5;uBsnYkCgV%y2aAutQ zfsFm+2(&PGaO}(LUTPdUkx#FaWx#aWMKVdRR^f4; zC4~W+DOJ$;&kv87&iB9_+WXYNIlVjE&&E0oADt`lbxEymx26Q1Oqsq0KQ#X|T+aHS zOU#&pk}P@;7Fq^`modV8wUze58X)z&_`5c4Bhp#Rop!jI3Cs(L*K|d8OKcjjzd=dyif=JBz&M zD%k9WHtwa?cyvkAdqr+4+gN``XUKoz7;WlSPs19QgIL+qfBaUW?$_aRan?Ab zP2~k~Ko^{6(B7A?EfaAzL2C49I{o}uWmg#dAm=i8pzRAT)sEbE+H*=Va!IxAFf3e! zoa}&Jd6`PpT+Hk0%Co&N%!qTJYD5py6iHhV7+3~n%pmUWfbGAr*(Y_Zp;S%&pkwTU7_A0+BEl^-!f;=_SjdTJ%%=ANW4C)ec-)r) zUmCK?80JVjqvUh9i_{^@dpSvO>LcKNRxTSX*G8CkJ(_H7ta|9y3L6!|y-Jkw)4368 z4Mx`QS5foEtgCIl2^@cQJJb87yhAaQQ52|B2BJ2zIS1stF16n^*)y!3%!sT{c(|G({_NJmB3r#xVct3AAlX3f-H)}*V$B_&&1|Yq)z+b6fYVmaXe|VTz;G2 z#TzQeGq3!0-uxLn!O`En~`9o@m>39*XS5S4U|To;@DZ8y6g(U z+M!{*XfnbcUU$$m#cn{v+%K1zWyG=LSl_$Sq}N+2N0B7jei<(ZJav zIj zuycs6Kn_n5EvIJdMoj$`ZX*ulHDqr6k^}`veZ6dY!>+LKkI%ecb4-IJs%C1sCM*~A W{&3oTG4A(&9V-iaWVQLp%l`qA8zmk9 literal 3763 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 diff --git a/docs/graphics/options_misc_light.png b/docs/graphics/options_misc_light.png index 2cdde2fe73fdd07498dd5dea3c9a64979994cf84..cf944ad68e53fefa4156124020876aaeb29e41f0 100644 GIT binary patch literal 3778 zcmeHKXH-*J7mYNNJ;1* zMKHuM3I+@aBu0uL&1ghI3t%AR3(j)Z%)j~lt$AzR_3qtgpZCt)>)pHWyAF4NNN?S{ z6#xK8pRhaT1ORN}3EROfqCzCaoPrYGHbpu?tN~Ts`@RSVV*XYzD*&K24Y=kd4giP( z;PwbxAub~$qpPd?`|rO$fBt-IY;1ORRv-`v@&B&>6!^baU@TcNS~y9`Fgv$M0AL$s zqiyO4E%OnAzo2bh(axcM=xDD9UqF~wU2h}I_EE_s<>T$#NX~?E19Vodo-?&+QK_}*RMGg zQ^p*KKwg;Wng7K`!p$S!(_t#X_jP>-q(5ELfDYv9_z}j7{o=}E3KlcOsKztz4h1=5 zDkYz)fzKxle{5H1TdD`Li~USMlzRL*=Tz&PcMk@HI@9LCD=&D;l@`}8*3JcclCocP zzFN$T${xCrc_?A2Pf8cqq94>{9>9Wi>vz4r=|FO?S#mP?1Fxv9-(Q>s2O&eOksaw3 zu&gMlffExGCDsOC7&#!n9Qzq17%aWf%Kx#ef@Yk&)gXAqeNkV}{I|$m}>juEq~IDyCAz!@ZH_LQB*T4W6!q_W>Ii6DdFoU;0zYKfhXS7r`J|1n^0O zO-+5Yq4!@xnsCW0sI}!TZR+NQ#%PiN=a!$8KXu1#n9HFw34F$_))p@>RFSpPkQ|Ev zeQXR9bx*yV<$?2vVU7Yhaf#8Sb?YMjQpIkq)G{Uw-vTp`dnL=^q1U&uPd|7%v@T^- zpg0%AZzUKi7J#wgt&1O{N$H2S22V9SVPCQ_xdz8Ko-h8KLP#hxT<)8zGMti|&&Xo- z;VNYk6MQN=Ai3O(*C=~JTzIu6`CU`tf-rc1EgmT^k>n60QLJ!D^!pj@cQgx5+^$Ny zMhMcgt0iveOp(5g!@xn_p3hCOE!H9%G4C(mgqd|jaBzrNP`2o4&axRNF6hAIZ=h<` zHkxj9aaMZPt#h=9bL@%M%Ol(o*}@T|=Se|u-Z75e>B>`qHi1_wWZg-Lu}m^>E?Jn*cYWcd-U1c$dg*2|6;s_`cJqmO7H>#G8>xd=TbNo1L>F)Q=dH@qF29>a3s?ij z>($ljbM+c1r}|sE+AJq2_SCO52XYzBKhN|cIA{(nZ`QFt?`4mU=gk4^NZKjV$0Eu_ z@WQZ{f6kzIPk4$j_on>BaC!5A2?gxh*{9@yU=lTRbEy{nJ{Bf{dYA6JVLj8uja!m| zc@x_l&#U)JyGdQ1HeFKPTTD+0(&e8);X`V6igbOT?QP;wA}ggyinEd6Kn{dEIVs=$voXc!K)cFdVnA%ce)U)cs-9 z`?RR1M<@z4C`{lq#y%eAKwWw(Bh#jq=-BwuKKB~^Ze(4R)9~C?2q8@qnZ4TUfNwG4 zrAAtk(zCLiYEodn+jY>jeVW~mNzxI2GCRuTo{Oy`wzX*@<^| zN?7l%ylTUo{*EV1Xl9n09q5T}rjFQ5%!_(D%K#5o zD5r-7%dssa)|Hmk5Hek*M0LY|TFt*$sekRJ|8Z^Ug6)@~`?1pXp8gdT?s{gPf#9o$i?DOkI(S7b z^%77z!%@5Qc{Yy^IaSiNT%Oak%^a!-I^1yGICm}~1>lOoDH{xwg0(^d*FK&iSgA1w zD#13m3M{cZHlSpm4;MK=0duVtO~AbE-?nxzSfzLRV76y%ZtwEpQeNGQKwuQER_HaT zZl;4y?JVp=Jb3!~(g|@_jOX2!ZMm!?7mq{S&PG_0c3)tZR_u+`mmQROzePgXMm~P2jH#}Tk9v#nc6f2V^9phlbwj$5&gz}Nrl35yJEVMh`4)cO^-PA< z)z6r|R`=>hgdPz5!TyUxrp<9}f_a})_11aTd2JQdt_J_-8R6%?CCe4d`qy8r+H literal 3592 zcmeHJXH-+!8jT}G2*rV+ieVTjqDU2iP%Os4XcPxT5J9?<5QIky z&47SN5RndY0T}@)Dg?Y>0trUI4DDswnm2E~Kkw&zYwlWS-F5c)*8R@edw=JCx6jyH zi3-aL!(cE`>r)nvFxW1DH}>w?%|oL2{G52NU4WyNIjkB~SmaIk0*~7rhry_+@J(-i z7;HD}%nweMJX~B{Tu)E$`t|G2pFf|OnPIcpJ3Bi({O{*)2LA6Em`On3c!v}UKXr~* zJ!0*@j9uMfWqv$R4r7VNoDB=W;JhRKVd37vp%~3jf6TW>HMKQ$bymI&&Vs>&L#!>1 zJ4Jgeky5VE8^kO|@-Q3QVX;DcVLSfT4JWZ!P<3ukf%4ClvzP0*6E$IR9~c`1J~)Z~ z5HP{qy#=le8Rd6z$tW|X&rV+l`9uYd{gE*fUBy{#DzDplAvrsz6RR+2sCbT?hdgba zltF&l7xO4Q|Ex4$j=u11SLQ^Mk z#7lYzxCMnlR>byNn0lL5)xpde17%aI6I&&kTUd7e;r<}<#SJGy8R(Sbkoxjtp2bifYs^psu;52AYKJvWD< zkCD1#Zt%?Ido)(}H+SLei%hw&w{g7Sr={$UM;XmGygLcskC#p1zx8S0gf?7Z+G9?85E zp)9&&S@s~F12Vq7Q}xP?mpyU_4<5(BBMcL~tHS46ir3xpTW&56kewk9Vx zai5#m4az*GRV#1X5H{1?$Uw$c43RZLU~F&$kt`$n6hZUA0L~OzQ_aYb`PkR;6X=gp zv0iKXQ81CCaiL@%nZrch`jXh!^20l~+E5f|dCBy9QZid*!^ZXWP3H?#509P@*=2Q>{) zQ1Gefmg=cwq^n6HQrv&&0hpHy?A|02gnPNCs(zMj0h;?&LRe`| z85EOij1nbt_R}Wta56`34cFwjSoF7$LiYmC+Yz5IXk?XQ0P3+p^H{|Q0{ z$i^N23qkPN&HU)BCZ&3rud*+m4D5_fo2(xIR`anDA?qwI=&6t?j7 z%cmvQx>Y*OQZgpcv%HI_>8{vDB&J1*#8G>L8#FZmidz{QM`|M9UfremBY1k{saCGR zTs_!}_*1uEFZkaSzE;7(ZLbrM-6KY0EP%KZ(A{-Ergiv@M4)KtB<}LqxPkv^AKap+ zV||LAmYSYnPS_&p*~EwYkmkO?sM5SQ`l>8tY>q?MMU52nZ}N%eoTqC zLsKK4?J;*EW^$~4i8WWqNl+tk+WfM70%SH#!nfHt3zkwNGt`)ARf?ANPTm4X(pvp6 zqkcTWK99sz-S!%gXJsaoQWOSiZFHL89`jR;=!Ny73=x0o;9)UCnL@`5VeWy(@AiEC z039T4^~y-mqOQ{Mhvm32Lz$p4&;8Zu0n->-(n9{QRDI9_pT?Je^ zFLQ?IHuKd2EgqB^;_56ALF0wkHZ9z?3L4v$q;t;rI-uEnZzNnRP`|`uV{ov&OklMkfR?5-w&KAeGqYx8|c-Z1HdB_y*-2bE#U(NI;14^1p zLGL+`HoJTej(jVG|16Bo;cKzZ3?c=g_em^DC^3Y zBXk6`gg7=HiEvFm9LlGtW`Yg%R9ES&fBc;wBDSH#j_Ps4DAg^;TQCn?O*gZp)YQaF zU`G3%AAqz3q0Mh5LC@W!#v$%kNR$9+1TRR^`a%M=Izm@Ou*J5I+};yL Date: Thu, 23 Aug 2018 11:48:24 -0230 Subject: [PATCH 052/126] Add timer/callback functionality to OSystem. Previously this was done by SDL_AddTimer, but the new approach is much better: - it is proper C++ (using std::thread and lambdas) - It is not tied to the SDL toolkit, which is C-based Also, re-added logic to reset events ~0.5 seconds after starting ROM emulation; this resets 'hold' events --- Changes.txt | 3 + src/common/TimerManager.cxx | 260 +++++++++++++++++++++++++++++++++++ src/common/TimerManager.hxx | 193 ++++++++++++++++++++++++++ src/common/module.mk | 1 + src/emucore/EventHandler.cxx | 7 + src/emucore/OSystem.cxx | 4 +- src/emucore/OSystem.hxx | 11 ++ 7 files changed, 478 insertions(+), 1 deletion(-) create mode 100644 src/common/TimerManager.cxx create mode 100644 src/common/TimerManager.hxx diff --git a/Changes.txt b/Changes.txt index 4f575eab3..bbba0f6cb 100644 --- a/Changes.txt +++ b/Changes.txt @@ -49,6 +49,9 @@ * Fixed bug in autodetecting Genesis controllers. + * Fixed bug with 'hold' events; they are now released a short time after + starting a ROM. + * When starting Stella for the first time, the first ROM selected will determine which path to use by default for subsequent runs. diff --git a/src/common/TimerManager.cxx b/src/common/TimerManager.cxx new file mode 100644 index 000000000..6e08ad489 --- /dev/null +++ b/src/common/TimerManager.cxx @@ -0,0 +1,260 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2018 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#include +#include "TimerManager.hxx" + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TimerManager::TimerManager() + : nextId(no_timer + 1), + queue(), + done(false) +{ +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TimerManager::~TimerManager() +{ + ScopedLock lock(sync); + + // The worker might not be running + if (worker.joinable()) + { + done = true; + lock.unlock(); + wakeUp.notify_all(); + + // If a timer handler is running, this + // will make sure it has returned before + // allowing any deallocations to happen + worker.join(); + + // Note that any timers still in the queue + // will be destructed properly but they + // will not be invoked + } +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TimerManager::TimerId TimerManager::addTimer( + millisec msDelay, + millisec msPeriod, + const TFunction& func) +{ + ScopedLock lock(sync); + + // Lazily start thread when first timer is requested + if (!worker.joinable()) + worker = std::thread(&TimerManager::timerThreadWorker, this); + + // Assign an ID and insert it into function storage + auto id = nextId++; + auto iter = active.emplace(id, Timer(id, Clock::now() + Duration(msDelay), + Duration(msPeriod), std::move(func))); + + // Insert a reference to the Timer into ordering queue + Queue::iterator place = queue.emplace(iter.first->second); + + // We need to notify the timer thread only if we inserted + // this timer into the front of the timer queue + bool needNotify = (place == queue.begin()); + + lock.unlock(); + + if (needNotify) + wakeUp.notify_all(); + + return id; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool TimerManager::clear(TimerId id) +{ + ScopedLock lock(sync); + auto i = active.find(id); + return destroy_impl(lock, i, true); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void TimerManager::clear() +{ + ScopedLock lock(sync); + while (!active.empty()) + destroy_impl(lock, active.begin(), queue.size() == 1); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +std::size_t TimerManager::size() const noexcept +{ + ScopedLock lock(sync); + return active.size(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool TimerManager::empty() const noexcept +{ + ScopedLock lock(sync); + return active.empty(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TimerManager& TimerManager::global() +{ + static TimerManager singleton; + return singleton; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void TimerManager::timerThreadWorker() +{ + ScopedLock lock(sync); + + while (!done) + { + if (queue.empty()) + { + // Wait for done or work + wakeUp.wait(lock, [this] { return done || !queue.empty(); }); + continue; + } + + auto queueHead = queue.begin(); + Timer& timer = *queueHead; + auto now = Clock::now(); + if (now >= timer.next) + { + queue.erase(queueHead); + + // Mark it as running to handle racing destroy + timer.running = true; + + // Call the handler outside the lock + lock.unlock(); + timer.handler(); + lock.lock(); + + if (timer.running) + { + timer.running = false; + + // If it is periodic, schedule a new one + if (timer.period.count() > 0) + { + timer.next = timer.next + timer.period; + queue.emplace(timer); + } + else + { + // Not rescheduling, destruct it + active.erase(timer.id); + } + } + else + { + // timer.running changed! + // + // Running was set to false, destroy was called + // for this Timer while the callback was in progress + // (this thread was not holding the lock during the callback) + // The thread trying to destroy this timer is waiting on + // a condition variable, so notify it + timer.waitCond->notify_all(); + + // The clearTimer call expects us to remove the instance + // when it detects that it is racing with its callback + active.erase(timer.id); + } + } + else + { + // Wait until the timer is ready or a timer creation notifies + Timestamp next = timer.next; + wakeUp.wait_until(lock, next); + } + } +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +// NOTE: if notify is true, returns with lock unlocked +bool TimerManager::destroy_impl(ScopedLock& lock, TimerMap::iterator i, + bool notify) +{ + assert(lock.owns_lock()); + + if (i == active.end()) + return false; + + Timer& timer = i->second; + if (timer.running) + { + // A callback is in progress for this Timer, + // so flag it for deletion in the worker + timer.running = false; + + // Assign a condition variable to this timer + timer.waitCond.reset(new ConditionVar); + + // Block until the callback is finished + if (std::this_thread::get_id() != worker.get_id()) + timer.waitCond->wait(lock); + } + else + { + queue.erase(timer); + active.erase(i); + + if (notify) + { + lock.unlock(); + wakeUp.notify_all(); + } + } + + return true; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +// TimerManager::Timer implementation +// + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TimerManager::Timer::Timer(TimerId tid) + : id(tid), + running(false) +{ +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TimerManager::Timer::Timer(Timer&& r) noexcept + : id(std::move(r.id)), + next(std::move(r.next)), + period(std::move(r.period)), + handler(std::move(r.handler)), + running(std::move(r.running)) +{ +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +TimerManager::Timer::Timer(TimerId tid, Timestamp tnext, Duration tperiod, + const TFunction& func) noexcept + : id(tid), + next(tnext), + period(tperiod), + handler(std::move(func)), + running(false) +{ +} diff --git a/src/common/TimerManager.hxx b/src/common/TimerManager.hxx new file mode 100644 index 000000000..deff8133f --- /dev/null +++ b/src/common/TimerManager.hxx @@ -0,0 +1,193 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2018 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#ifndef TIMER_MANAGER_HXX +#define TIMER_MANAGER_HXX + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "bspf.hxx" + +/** + This class provides a portable periodic/one-shot timer infrastructure + using worker threads and generic C++11 code. + + @author Doug Gale (doug65536) + From "Code Review" + https://codereview.stackexchange.com/questions/127552/portable-periodic-one-shot-timer-thread-follow-up + + Modifications and cleanup for Stella by Stephen Anthony +*/ +class TimerManager +{ + public: + // Each Timer is assigned a unique ID of type TimerId + using TimerId = uInt64; + + // Function object we actually use + using TFunction = std::function; + + // Values that are a large-range millisecond count + using millisec = uInt64; + + // Constructor does not start worker until there is a Timer. + explicit TimerManager(); + + // Destructor is thread safe, even if a timer callback is running. + // All callbacks are guaranteed to have returned before this + // destructor returns. + ~TimerManager(); + + /** + Create a new timer using milliseconds, and add it to the internal queue. + + @param msDelay Callback starts firing this many milliseconds from now + @param msPeriod If non-zero, callback is fired again after this period + @param func The callback to run at the specified interval + + @return Id used to identify the timer for later use + */ + TimerId addTimer(millisec msDelay, millisec msPeriod, const TFunction& func); + + /** + Convenience function; setInterval API like browser javascript. + + Call function every 'period' ms, starting 'period' ms from now. + */ + TimerId setInterval(const TFunction& func, millisec period) { + return addTimer(period, period, std::move(func)); + } + + /** + Convenience function; setTimeout API like browser javascript. + + Call function once 'timeout' ms from now. + */ + TimerId setTimeout(const TFunction& func, millisec timeout) { + return addTimer(timeout, 0, std::move(func)); + } + + /** + Destroy the specified timer. + + Synchronizes with the worker thread if the callback for this timer + is running, which guarantees that the handler for that callback is + not running before clear() returns. + + You are not required to clear any timers. You can forget their + TimerId if you do not need to cancel them. + + The only time you need this is when you want to stop a timer that + has a repetition period, or you want to cancel a timeout that has + not fired yet. + */ + bool clear(TimerId id); + + /** + Destroy all timers, but preserve id uniqueness. + This carefully makes sure every timer is not executing its callback + before destructing it. + */ + void clear(); + + // Peek at current state + std::size_t size() const noexcept; + bool empty() const noexcept; + + // Returns lazily initialized singleton + static TimerManager& global(); + + private: + using Lock = std::mutex; + using ScopedLock = std::unique_lock; + using ConditionVar = std::condition_variable; + + using Clock = std::chrono::steady_clock; + using Timestamp = std::chrono::time_point; + using Duration = std::chrono::milliseconds; + + struct Timer + { + explicit Timer(TimerId id = 0); + Timer(Timer&& r) noexcept; + Timer& operator=(Timer&& r) noexcept; + + Timer(TimerId id, Timestamp next, Duration period, const TFunction& func) noexcept; + + // Never called + Timer(Timer const& r) = delete; + Timer& operator=(Timer const& r) = delete; + + TimerId id; + Timestamp next; + Duration period; + TFunction handler; + + // You must be holding the 'sync' lock to assign waitCond + std::unique_ptr waitCond; + + bool running; + }; + + // Comparison functor to sort the timer "queue" by Timer::next + struct NextActiveComparator + { + bool operator()(Timer const& a, Timer const& b) const noexcept + { + return a.next < b.next; + } + }; + + // Queue is a set of references to Timer objects, sorted by next + using QueueValue = std::reference_wrapper; + using Queue = std::multiset; + using TimerMap = std::unordered_map; + + void timerThreadWorker(); + bool destroy_impl(ScopedLock& lock, TimerMap::iterator i, bool notify); + + // Inexhaustible source of unique IDs + TimerId nextId; + + // The Timer objects are physically stored in this map + TimerMap active; + + // The ordering queue holds references to items in 'active' + Queue queue; + + // One worker thread for an unlimited number of timers is acceptable + // Lazily started when first timer is started + // TODO: Implement auto-stopping the timer thread when it is idle for + // a configurable period. + mutable Lock sync; + ConditionVar wakeUp; + std::thread worker; + bool done; + + // Valid IDs are guaranteed not to be this value + static TimerId constexpr no_timer = TimerId(0); +}; + +#endif // TIMERTHREAD_H diff --git a/src/common/module.mk b/src/common/module.mk index 347065488..362aeefcc 100644 --- a/src/common/module.mk +++ b/src/common/module.mk @@ -15,6 +15,7 @@ MODULE_OBJS := \ src/common/RewindManager.o \ src/common/SoundSDL2.o \ src/common/StateManager.o \ + src/common/TimerManager.o \ src/common/ZipHandler.o \ src/common/AudioQueue.o \ src/common/AudioSettings.o \ diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx index 32204d804..cf0923523 100644 --- a/src/emucore/EventHandler.cxx +++ b/src/emucore/EventHandler.cxx @@ -41,6 +41,7 @@ #include "Settings.hxx" #include "Sound.hxx" #include "StateManager.hxx" +#include "TimerManager.hxx" #include "Switches.hxx" #include "M6532.hxx" #include "MouseControl.hxx" @@ -120,6 +121,12 @@ void EventHandler::reset(EventHandlerState state) setState(state); myOSystem.state().reset(); myOSystem.png().setContinuousSnapInterval(0); + + // Reset events almost immediately after starting emulation mode + // We wait a little while (0.5s), since 'hold' events may be present, + // and we want time for the ROM to process them + if(state == EventHandlerState::EMULATION) + myOSystem.timer().setTimeout([&ev = myEvent]() { ev.clear(); }, 500); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index 133bcd014..5324d1f2c 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -50,6 +50,7 @@ #include "Random.hxx" #include "SerialPort.hxx" #include "StateManager.hxx" +#include "TimerManager.hxx" #include "Version.hxx" #include "TIA.hxx" #include "DispatchResult.hxx" @@ -140,12 +141,13 @@ bool OSystem::create() myCheatManager->loadCheatDatabase(); #endif - // Create menu and launcher GUI objects + // Create various subsystems (menu and launcher GUI objects, etc) myMenu = make_unique

    (*this); myCommandMenu = make_unique(*this); myTimeMachine = make_unique(*this); myLauncher = make_unique(*this); myStateManager = make_unique(*this); + myTimerManager = make_unique(); // Create the sound object; the sound subsystem isn't actually // opened until needed, so this is non-blocking (on those systems diff --git a/src/emucore/OSystem.hxx b/src/emucore/OSystem.hxx index 25072c730..1f7a6fac6 100644 --- a/src/emucore/OSystem.hxx +++ b/src/emucore/OSystem.hxx @@ -37,6 +37,7 @@ class SerialPort; class Settings; class Sound; class StateManager; +class TimerManager; class VideoDialog; class EmulationWorker; @@ -170,6 +171,13 @@ class OSystem */ StateManager& state() const { return *myStateManager; } + /** + Get the timer/callback manager of the system. + + @return The timermanager object + */ + TimerManager& timer() const { return *myTimerManager; } + /** Get the PNG handler of the system. @@ -466,6 +474,9 @@ class OSystem // Pointer to the StateManager object unique_ptr myStateManager; + // Pointer to the TimerManager object + unique_ptr myTimerManager; + // PNG object responsible for loading/saving PNG images unique_ptr myPNGLib; From f58d28089e4ca92687492f900ea226058ff36fcd Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 23 Aug 2018 16:50:29 +0200 Subject: [PATCH 053/126] updated VS project files --- src/windows/Stella.vcxproj | 2 ++ src/windows/Stella.vcxproj.filters | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index 78f6645d4..3df43e6e4 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -261,6 +261,7 @@ + @@ -831,6 +832,7 @@ + diff --git a/src/windows/Stella.vcxproj.filters b/src/windows/Stella.vcxproj.filters index 67ecd4f4d..8e4694b9a 100644 --- a/src/windows/Stella.vcxproj.filters +++ b/src/windows/Stella.vcxproj.filters @@ -939,6 +939,9 @@ Source Files\audio + + Source Files + @@ -1919,6 +1922,9 @@ Header Files\audio + + Header Files + From 7bc320964ee5c6c7400a2814f6be25659ce65331 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Thu, 23 Aug 2018 20:37:34 -0230 Subject: [PATCH 054/126] Added TimerManager to Xcode project file. Fixed a few warnings. --- src/debugger/Debugger.cxx | 8 ++++---- src/debugger/DebuggerParser.cxx | 4 ++-- src/macosx/stella.xcodeproj/project.pbxproj | 8 ++++++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/debugger/Debugger.cxx b/src/debugger/Debugger.cxx index 23f5ebbcf..345c9622a 100644 --- a/src/debugger/Debugger.cxx +++ b/src/debugger/Debugger.cxx @@ -717,14 +717,14 @@ const FunctionDefMap Debugger::getFunctionDefMap() const string Debugger::builtinHelp() const { ostringstream buf; - size_t len, c_maxlen = 0, i_maxlen = 0; + uInt32 len, c_maxlen = 0, i_maxlen = 0; // Get column widths for aligned output (functions) for(uInt32 i = 0; i < NUM_BUILTIN_FUNCS; ++i) { - len = ourBuiltinFunctions[i].name.size(); + len = uInt32(ourBuiltinFunctions[i].name.size()); if(len > c_maxlen) c_maxlen = len; - len = ourBuiltinFunctions[i].defn.size(); + len = uInt32(ourBuiltinFunctions[i].defn.size()); if(len > i_maxlen) i_maxlen = len; } @@ -743,7 +743,7 @@ string Debugger::builtinHelp() const c_maxlen = 0; for(uInt32 i = 0; i < NUM_PSEUDO_REGS; ++i) { - len = ourPseudoRegisters[i].name.size(); + len = uInt32(ourPseudoRegisters[i].name.size()); if(len > c_maxlen) c_maxlen = len; } diff --git a/src/debugger/DebuggerParser.cxx b/src/debugger/DebuggerParser.cxx index 30dda84cc..bdba5decf 100644 --- a/src/debugger/DebuggerParser.cxx +++ b/src/debugger/DebuggerParser.cxx @@ -1235,10 +1235,10 @@ void DebuggerParser::executeHelp() if(argCount == 0) // normal help, show all commands { // Find length of longest command - size_t clen = 0; + uInt32 clen = 0; for(int i = 0; i < kNumCommands; ++i) { - size_t len = commands[i].cmdString.length(); + uInt32 len = uInt32(commands[i].cmdString.length()); if(len > clen) clen = len; } diff --git a/src/macosx/stella.xcodeproj/project.pbxproj b/src/macosx/stella.xcodeproj/project.pbxproj index 8e12c9b3b..0a28aa75f 100644 --- a/src/macosx/stella.xcodeproj/project.pbxproj +++ b/src/macosx/stella.xcodeproj/project.pbxproj @@ -247,6 +247,8 @@ DC2B85E71EF5EF2300379EB9 /* AtariNTSC.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC2B85E51EF5EF2300379EB9 /* AtariNTSC.cxx */; }; DC2B85E81EF5EF2300379EB9 /* AtariNTSC.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC2B85E61EF5EF2300379EB9 /* AtariNTSC.hxx */; }; DC2C5EDB1F8F2403007D2A09 /* smartmod.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC2C5EDA1F8F2403007D2A09 /* smartmod.hxx */; }; + DC30924C212F74930020DAD0 /* TimerManager.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC30924A212F74930020DAD0 /* TimerManager.cxx */; }; + DC30924D212F74930020DAD0 /* TimerManager.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC30924B212F74930020DAD0 /* TimerManager.hxx */; }; DC368F5618A2FB710084199C /* FrameBufferSDL2.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC368F5018A2FB710084199C /* FrameBufferSDL2.cxx */; }; DC368F5718A2FB710084199C /* FrameBufferSDL2.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC368F5118A2FB710084199C /* FrameBufferSDL2.hxx */; }; DC368F5818A2FB710084199C /* SoundSDL2.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC368F5218A2FB710084199C /* SoundSDL2.cxx */; }; @@ -944,6 +946,8 @@ DC2B85E51EF5EF2300379EB9 /* AtariNTSC.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AtariNTSC.cxx; sourceTree = ""; }; DC2B85E61EF5EF2300379EB9 /* AtariNTSC.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = AtariNTSC.hxx; sourceTree = ""; }; DC2C5EDA1F8F2403007D2A09 /* smartmod.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = smartmod.hxx; sourceTree = ""; }; + DC30924A212F74930020DAD0 /* TimerManager.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TimerManager.cxx; sourceTree = ""; }; + DC30924B212F74930020DAD0 /* TimerManager.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = TimerManager.hxx; sourceTree = ""; }; DC368F5018A2FB710084199C /* FrameBufferSDL2.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameBufferSDL2.cxx; sourceTree = ""; }; DC368F5118A2FB710084199C /* FrameBufferSDL2.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = FrameBufferSDL2.hxx; sourceTree = ""; }; DC368F5218A2FB710084199C /* SoundSDL2.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SoundSDL2.cxx; sourceTree = ""; }; @@ -1668,6 +1672,8 @@ DCDDEAC31F5DBF0400C67366 /* StateManager.hxx */, DC5C768E14C26F7C0031EBC7 /* StellaKeys.hxx */, DC74D6A0138D4D7E00F05C5C /* StringParser.hxx */, + DC30924A212F74930020DAD0 /* TimerManager.cxx */, + DC30924B212F74930020DAD0 /* TimerManager.hxx */, DCC467EA14FBEC9600E15508 /* tv_filters */, DC7A24D4173B1CF600B20FE9 /* Variant.hxx */, DCF490791A0ECE5B00A67AA9 /* Vec.hxx */, @@ -2447,6 +2453,7 @@ DCCF47E014B60DEE00814FAB /* JoystickWidget.hxx in Headers */, DCCF49B814B7544A00814FAB /* PaddleWidget.hxx in Headers */, DCCF4AD214B7E6C300814FAB /* BoosterWidget.hxx in Headers */, + DC30924D212F74930020DAD0 /* TimerManager.hxx in Headers */, DCCF4AD314B7E6C300814FAB /* NullControlWidget.hxx in Headers */, DCCF4ADD14B9433100814FAB /* GenesisWidget.hxx in Headers */, DCF3A6EA1DFC75E3008A8AF3 /* Ball.hxx in Headers */, @@ -2654,6 +2661,7 @@ DC9616321F817830008A2206 /* PointingDeviceWidget.cxx in Sources */, 2D91747F09BA90380026E9FF /* CartF4.cxx in Sources */, DCFCDE7220C9E66500915CBE /* EmulationWorker.cxx in Sources */, + DC30924C212F74930020DAD0 /* TimerManager.cxx in Sources */, 2D91748009BA90380026E9FF /* CartF4SC.cxx in Sources */, 2D91748109BA90380026E9FF /* CartF6.cxx in Sources */, 2D91748209BA90380026E9FF /* CartF6SC.cxx in Sources */, From 2db48ae38b648087c535ba306a1be63b4fe7cc77 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 24 Aug 2018 10:12:34 -0230 Subject: [PATCH 055/126] Fixes #332. --- Changes.txt | 9 ++++++--- src/common/AudioSettings.hxx | 2 +- src/emucore/Console.cxx | 9 ++++++++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Changes.txt b/Changes.txt index bbba0f6cb..7d6eab080 100644 --- a/Changes.txt +++ b/Changes.txt @@ -23,6 +23,9 @@ * Full rewrite of the audio subsystem; resample TIA output to target sample rate directly in Stella. + * Added option to force stereo sound for all ROMs, or to use the setting + on a per-ROM basis. + * Threading: decouple emulation from frame rendering. * Main loop rewritten; emulating speed and timing is now much more faithful @@ -69,17 +72,17 @@ * Updated PAL palette. - * Updated included PNG library to latest stable version. - * For UNIX systems: in the ROM launcher, when using symlinks use the symlink pathname instead of the underlying filesystem pathname. - * The Linux builds now use the system-installed PNG and ZLIB libraries + * The UNIX builds now use the system-installed PNG and ZLIB libraries by default. * For better compatibility, the Windows 32-bit version does not require SSE2 anymore. + * Updated included PNG library to latest stable version. + -Have fun! diff --git a/src/common/AudioSettings.hxx b/src/common/AudioSettings.hxx index 07640d8ce..f120228be 100644 --- a/src/common/AudioSettings.hxx +++ b/src/common/AudioSettings.hxx @@ -56,7 +56,7 @@ class AudioSettings static constexpr uInt32 DEFAULT_BUFFER_SIZE = 3; static constexpr uInt32 DEFAULT_HEADROOM = 2; static constexpr ResamplingQuality DEFAULT_RESAMPLING_QUALITY = ResamplingQuality::lanczos_2; - static constexpr const char* DEFAULT_STEREO = "BYROM"; + static constexpr const char* DEFAULT_STEREO = "byrom"; static constexpr uInt32 DEFAULT_VOLUME = 80; static constexpr bool DEFAULT_ENABLED = true; diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index 5977184ed..446b82c51 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -753,10 +753,17 @@ void Console::setTIAProperties() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Console::createAudioQueue() { + const string& stereo = myOSystem.settings().getString(AudioSettings::SETTING_STEREO); + bool useStereo = false; + if(BSPF::equalsIgnoreCase(stereo, "byrom")) + useStereo = myProperties.get(Cartridge_Sound) == "STEREO"; + else + useStereo = BSPF::equalsIgnoreCase(stereo, "stereo"); + myAudioQueue = make_shared( myEmulationTiming.audioFragmentSize(), myEmulationTiming.audioQueueCapacity(), - myProperties.get(Cartridge_Sound) == "STEREO" + useStereo ); } From eacfb41584f95f68e8b1b2a8e21bd0e37c31cbb8 Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Tue, 14 Aug 2018 18:04:19 +0200 Subject: [PATCH 056/126] Remove debug code. --- src/emucore/EmulationTiming.cxx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/emucore/EmulationTiming.cxx b/src/emucore/EmulationTiming.cxx index e753791a5..8ea92ca02 100644 --- a/src/emucore/EmulationTiming.cxx +++ b/src/emucore/EmulationTiming.cxx @@ -204,6 +204,4 @@ void EmulationTiming::recalculate() myPrebufferFragmentCount, discreteDivCeil(myMaxCyclesPerTimeslice * myAudioSampleRate, myAudioFragmentSize * myCyclesPerSecond) ) + myAudioQueueExtraFragments; - - (cout << myAudioQueueCapacity << " " << myPrebufferFragmentCount << std::endl).flush(); } From 409fa49aaea2c518dfc7f074956a3e27056e60d3 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 26 Aug 2018 09:12:46 -0230 Subject: [PATCH 057/126] Removed WIP experimental code that causes a crash with Ctrl-c/v. --- src/gui/EditableWidget.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/EditableWidget.cxx b/src/gui/EditableWidget.cxx index 47bf5a447..3657d1a3a 100644 --- a/src/gui/EditableWidget.cxx +++ b/src/gui/EditableWidget.cxx @@ -454,13 +454,13 @@ bool EditableWidget::moveWord(int direction) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void EditableWidget::copySelectedText() { - _clippedText = _editString; +// _clippedText = _editString; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void EditableWidget::pasteSelectedText() { - _editString = _clippedText; +// _editString = _clippedText; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 8c7488914da736b3d83010c7ba3dce6c88f3d3d8 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Mon, 27 Aug 2018 11:09:03 -0230 Subject: [PATCH 058/126] Fix some warnings generated by cppcheck (a C++ linter). --- src/common/AudioQueue.cxx | 3 ++- src/common/tv_filters/AtariNTSC.hxx | 6 +++++- src/debugger/CartDebug.cxx | 6 +++--- src/debugger/CpuDebug.hxx | 2 ++ src/debugger/RiotDebug.cxx | 20 ++++++++++---------- src/debugger/RiotDebug.hxx | 8 ++++++++ src/debugger/gui/CartCMWidget.cxx | 8 ++++---- src/debugger/gui/CartDASHWidget.cxx | 2 +- src/debugger/gui/CartRamWidget.cxx | 1 - src/debugger/gui/FlashWidget.cxx | 1 + src/debugger/gui/RomListWidget.cxx | 5 ++--- src/emucore/CartDPC.cxx | 2 +- src/emucore/Control.hxx | 2 +- src/emucore/DispatchResult.hxx | 3 ++- src/emucore/MT24LC256.cxx | 4 +++- src/emucore/tia/AudioChannel.cxx | 7 +++---- src/gui/AudioDialog.cxx | 1 - src/gui/CheckListWidget.cxx | 5 ++--- src/gui/DeveloperDialog.cxx | 2 -- src/gui/GameInfoDialog.cxx | 15 ++++++--------- src/gui/InputDialog.cxx | 1 - src/gui/RomAuditDialog.cxx | 3 ++- src/gui/SnapshotDialog.cxx | 7 +++---- src/gui/UIDialog.cxx | 3 +-- src/gui/VideoDialog.cxx | 2 -- src/windows/FSNodeWINDOWS.cxx | 2 +- 26 files changed, 63 insertions(+), 58 deletions(-) diff --git a/src/common/AudioQueue.cxx b/src/common/AudioQueue.cxx index 1bdb6f133..ee7fa79cd 100644 --- a/src/common/AudioQueue.cxx +++ b/src/common/AudioQueue.cxx @@ -27,7 +27,8 @@ AudioQueue::AudioQueue(uInt32 fragmentSize, uInt32 capacity, bool isStereo) myFragmentQueue(capacity), myAllFragments(capacity + 2), mySize(0), - myNextFragment(0) + myNextFragment(0), + myIgnoreOverflows(true) { const uInt8 sampleSize = myIsStereo ? 2 : 1; diff --git a/src/common/tv_filters/AtariNTSC.hxx b/src/common/tv_filters/AtariNTSC.hxx index f492c6cb3..544333c08 100644 --- a/src/common/tv_filters/AtariNTSC.hxx +++ b/src/common/tv_filters/AtariNTSC.hxx @@ -185,7 +185,11 @@ class AtariNTSC float fringing; float kernel [rescale_out * kernel_size * 2]; - init_t() : contrast(0.0), brightness(0.0), artifacts(0.0), fringing(0.0) { } + init_t() : contrast(0.0), brightness(0.0), artifacts(0.0), fringing(0.0) { + std::fill(to_rgb, to_rgb + burst_count * 6, 0.0); + std::fill(to_float, to_float + gamma_size, 0.0); + std::fill(kernel, kernel + rescale_out * kernel_size * 2, 0.0); + } }; init_t myImpl; diff --git a/src/debugger/CartDebug.cxx b/src/debugger/CartDebug.cxx index 743be9c7d..3b95b4691 100644 --- a/src/debugger/CartDebug.cxx +++ b/src/debugger/CartDebug.cxx @@ -460,7 +460,7 @@ bool CartDebug::addDirective(CartDebug::DisasmType type, i->end = tag.start - 1; // Insert new endpoint - i++; + ++i; list.insert(i, tag2); break; // no need to go further; this is the insertion point } @@ -1179,10 +1179,10 @@ string CartDebug::saveDisassembly() out << "\n"; out << ALIGN(16) << ourZPMnemonic[addr - 0x80] << "= $" << Base::HEX2 << right << (addr) - << (stackUsed|codeUsed ? "; (" : "") + << ((stackUsed|codeUsed) ? "; (" : "") << (codeUsed ? "c" : "") << (stackUsed ? "s" : "") - << (stackUsed | codeUsed ? ")" : "") + << ((stackUsed | codeUsed) ? ")" : "") << "\n"; addLine = false; } else if (ramUsed|codeUsed|stackUsed) { diff --git a/src/debugger/CpuDebug.hxx b/src/debugger/CpuDebug.hxx index e63cdf6d0..5f002038f 100644 --- a/src/debugger/CpuDebug.hxx +++ b/src/debugger/CpuDebug.hxx @@ -33,6 +33,8 @@ class CpuState : public DebuggerState int PC, SP, PS, A, X, Y; int srcS, srcA, srcX, srcY; BoolArray PSbits; + + CpuState() : PC(0), SP(0), PS(0), A(0), X(0), Y(0), srcS(0), srcA(0), srcX(0), srcY(0) { } }; class CpuDebug : public DebuggerSystem diff --git a/src/debugger/RiotDebug.cxx b/src/debugger/RiotDebug.cxx index e218a6c58..1e658236f 100644 --- a/src/debugger/RiotDebug.cxx +++ b/src/debugger/RiotDebug.cxx @@ -293,10 +293,10 @@ string RiotDebug::dirP0String() { uInt8 reg = swcha(); ostringstream buf; - buf << (reg & 0x80 ? "" : "right ") - << (reg & 0x40 ? "" : "left ") - << (reg & 0x20 ? "" : "left ") - << (reg & 0x10 ? "" : "left ") + buf << ((reg & 0x80) ? "" : "right ") + << ((reg & 0x40) ? "" : "left ") + << ((reg & 0x20) ? "" : "left ") + << ((reg & 0x10) ? "" : "left ") << ((reg & 0xf0) == 0xf0 ? "(no directions) " : ""); return buf.str(); } @@ -306,10 +306,10 @@ string RiotDebug::dirP1String() { uInt8 reg = swcha(); ostringstream buf; - buf << (reg & 0x08 ? "" : "right ") - << (reg & 0x04 ? "" : "left ") - << (reg & 0x02 ? "" : "left ") - << (reg & 0x01 ? "" : "left ") + buf << ((reg & 0x08) ? "" : "right ") + << ((reg & 0x04) ? "" : "left ") + << ((reg & 0x02) ? "" : "left ") + << ((reg & 0x01) ? "" : "left ") << ((reg & 0x0f) == 0x0f ? "(no directions) " : ""); return buf.str(); } @@ -336,8 +336,8 @@ string RiotDebug::tvTypeString() string RiotDebug::switchesString() { ostringstream buf; - buf << (swchb() & 0x2 ? "-" : "+") << "select " - << (swchb() & 0x1 ? "-" : "+") << "reset"; + buf << ((swchb() & 0x2) ? "-" : "+") << "select " + << ((swchb() & 0x1) ? "-" : "+") << "reset"; return buf.str(); } diff --git a/src/debugger/RiotDebug.hxx b/src/debugger/RiotDebug.hxx index fc871d722..849e91140 100644 --- a/src/debugger/RiotDebug.hxx +++ b/src/debugger/RiotDebug.hxx @@ -41,6 +41,14 @@ class RiotState : public DebuggerState // These are actually from the TIA, but are I/O related uInt8 INPT0, INPT1, INPT2, INPT3, INPT4, INPT5; bool INPTLatch, INPTDump; + + RiotState() + : SWCHA_R(0), SWCHA_W(0), SWACNT(0), SWCHB_R(0), SWCHB_W(0), SWBCNT(0), + TIM1T(0), TIM8T(0), TIM64T(0), T1024T(0), INTIM(0), TIMINT(0), + TIMCLKS(0), INTIMCLKS(0), TIMDIV(0), + INPT0(0), INPT1(0), INPT2(0), INPT3(0), INPT4(0), INPT5(0), + INPTLatch(false), INPTDump(false) + { } }; class RiotDebug : public DebuggerSystem diff --git a/src/debugger/gui/CartCMWidget.cxx b/src/debugger/gui/CartCMWidget.cxx index c9f2d2819..4a3f0211b 100644 --- a/src/debugger/gui/CartCMWidget.cxx +++ b/src/debugger/gui/CartCMWidget.cxx @@ -196,8 +196,8 @@ void CartridgeCMWidget::loadConfig() myAudOut->setState(swcha & 0x40); // RAM state (several bits from SWCHA) - const string& ram = swcha & 0x10 ? " Inactive" : - swcha & 0x20 ? " Read-only" : " Write-only"; + const string& ram = (swcha & 0x10) ? " Inactive" : + (swcha & 0x20) ? " Read-only" : " Write-only"; myRAM->setText(ram, (swcha & 0x30) != (myOldState.swcha & 0x30)); CartDebugWidget::loadConfig(); @@ -224,8 +224,8 @@ string CartridgeCMWidget::bankState() ostringstream& buf = buffer(); buf << "Bank = " << std::dec << myCart.getBank() - << ", RAM is" << (myCart.mySWCHA & 0x10 ? " Inactive" : - myCart.mySWCHA & 0x20 ? " Read-only" : " Write-only"); + << ", RAM is" << ((myCart.mySWCHA & 0x10) ? " Inactive" : + (myCart.mySWCHA & 0x20) ? " Read-only" : " Write-only"); return buf.str(); } diff --git a/src/debugger/gui/CartDASHWidget.cxx b/src/debugger/gui/CartDASHWidget.cxx index 6df640521..1670193ad 100644 --- a/src/debugger/gui/CartDASHWidget.cxx +++ b/src/debugger/gui/CartDASHWidget.cxx @@ -255,7 +255,7 @@ void CartridgeDASHWidget::updateUIState() else { int bankno = segment & myCart.BIT_BANK_MASK; - const string& banktype = segment & myCart.BITMASK_ROMRAM ? "RAM" : "ROM"; + const string& banktype = (segment & myCart.BITMASK_ROMRAM) ? "RAM" : "ROM"; myBankNumber[i]->setSelected(bankno); myBankType[i]->setSelected(banktype); diff --git a/src/debugger/gui/CartRamWidget.cxx b/src/debugger/gui/CartRamWidget.cxx index 799fe1366..60b7d8901 100644 --- a/src/debugger/gui/CartRamWidget.cxx +++ b/src/debugger/gui/CartRamWidget.cxx @@ -80,7 +80,6 @@ CartRamWidget::CartRamWidget( ypos += myDesc->getHeight() + myFontHeight / 2; // Add RAM widget - xpos = x + _font.getStringWidth("xxxx"); myRam = new InternalRamWidget(boss, lfont, nfont, 2, ypos, w, h-ypos, cartDebug); addToFocusList(myRam->getFocusList()); } diff --git a/src/debugger/gui/FlashWidget.cxx b/src/debugger/gui/FlashWidget.cxx index 31672a7a6..863ad7e5a 100644 --- a/src/debugger/gui/FlashWidget.cxx +++ b/src/debugger/gui/FlashWidget.cxx @@ -25,6 +25,7 @@ FlashWidget::FlashWidget(GuiObject* boss, const GUI::Font& font, : ControllerWidget(boss, font, x, y, controller), myEEPROMEraseCurrent(nullptr) { + std::fill(myPage, myPage + MAX_PAGES, nullptr); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/debugger/gui/RomListWidget.cxx b/src/debugger/gui/RomListWidget.cxx index a65af0641..9634aae0f 100644 --- a/src/debugger/gui/RomListWidget.cxx +++ b/src/debugger/gui/RomListWidget.cxx @@ -80,11 +80,10 @@ RomListWidget::RomListWidget(GuiObject* boss, const GUI::Font& lfont, _rows = h / _fontHeight; // Create a CheckboxWidget for each row in the list - CheckboxWidget* t = nullptr; for(int i = 0; i < _rows; ++i) { - t = new CheckboxWidget(boss, lfont, _x + 2, ypos, "", - CheckboxWidget::kCheckActionCmd); + CheckboxWidget* t = new CheckboxWidget(boss, lfont, _x + 2, ypos, "", + CheckboxWidget::kCheckActionCmd); t->setTarget(this); t->setID(i); t->setFill(CheckboxWidget::Circle); diff --git a/src/emucore/CartDPC.cxx b/src/emucore/CartDPC.cxx index 71567551e..a7b5ed0f2 100644 --- a/src/emucore/CartDPC.cxx +++ b/src/emucore/CartDPC.cxx @@ -242,7 +242,7 @@ uInt8 CartridgeDPC::peek(uInt16 address) } // Clock the selected data fetcher's counter if needed - if((index < 5) || ((index >= 5) && (!myMusicMode[index - 5]))) + if(index < 5 || !myMusicMode[index - 5]) { myCounters[index] = (myCounters[index] - 1) & 0x07ff; } diff --git a/src/emucore/Control.hxx b/src/emucore/Control.hxx index 6d962cb35..6fe17004a 100644 --- a/src/emucore/Control.hxx +++ b/src/emucore/Control.hxx @@ -216,7 +216,7 @@ class Controller : public Serializable */ virtual string about(bool swappedPorts) const { - return name() + " in " + ((myJack == Left) ^ swappedPorts ? + return name() + " in " + (((myJack == Left) ^ swappedPorts) ? "left port" : "right port"); } diff --git a/src/emucore/DispatchResult.hxx b/src/emucore/DispatchResult.hxx index 400f85017..08b3dba08 100644 --- a/src/emucore/DispatchResult.hxx +++ b/src/emucore/DispatchResult.hxx @@ -27,7 +27,8 @@ class DispatchResult public: - DispatchResult() : myStatus(Status::invalid) {} + DispatchResult() + : myStatus(Status::invalid), myCycles(0), myAddress(0), myWasReadTrap(false) { } Status getStatus() const { return myStatus; } diff --git a/src/emucore/MT24LC256.cxx b/src/emucore/MT24LC256.cxx index 6c3ba58db..33bb6786e 100644 --- a/src/emucore/MT24LC256.cxx +++ b/src/emucore/MT24LC256.cxx @@ -88,6 +88,8 @@ MT24LC256::MT24LC256(const string& filename, const System& system) // Then initialize the I2C state jpee_init(); + + systemReset(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -149,7 +151,7 @@ void MT24LC256::update() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void MT24LC256::systemReset() { - memset(myPageHit, false, sizeof(myPageHit)); + std::fill(myPageHit, myPageHit + PAGE_NUM, false); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/tia/AudioChannel.cxx b/src/emucore/tia/AudioChannel.cxx index 0d344c846..cbe231796 100644 --- a/src/emucore/tia/AudioChannel.cxx +++ b/src/emucore/tia/AudioChannel.cxx @@ -63,7 +63,7 @@ void AudioChannel::phase0() default: myNoiseFeedback = - ((myNoiseCounter & 0x04 ? 1 : 0) ^ (myNoiseCounter & 0x01)) || + (((myNoiseCounter & 0x04) ? 1 : 0) ^ (myNoiseCounter & 0x01)) || myNoiseCounter == 0; break; @@ -82,13 +82,12 @@ void AudioChannel::phase0() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt8 AudioChannel::phase1() { - bool pulseFeedback = false; - if (myClockEnable) { + bool pulseFeedback = false; switch (myAudc >> 2) { case 0x00: pulseFeedback = - ((myPulseCounter & 0x02 ? 1 : 0) ^ (myPulseCounter & 0x01)) && + (((myPulseCounter & 0x02) ? 1 : 0) ^ (myPulseCounter & 0x01)) && (myPulseCounter != 0x0a) && (myAudc & 0x03); diff --git a/src/gui/AudioDialog.cxx b/src/gui/AudioDialog.cxx index 6450a973e..0993423ad 100644 --- a/src/gui/AudioDialog.cxx +++ b/src/gui/AudioDialog.cxx @@ -58,7 +58,6 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, xpos = HBORDER; ypos = VBORDER + _th; // Enable sound - xpos = HBORDER; mySoundEnableCheckbox = new CheckboxWidget(this, font, xpos, ypos, "Enable sound", kSoundEnableChanged); wid.push_back(mySoundEnableCheckbox); diff --git a/src/gui/CheckListWidget.cxx b/src/gui/CheckListWidget.cxx index e2cc6eba5..e7b8b696b 100644 --- a/src/gui/CheckListWidget.cxx +++ b/src/gui/CheckListWidget.cxx @@ -33,11 +33,10 @@ CheckListWidget::CheckListWidget(GuiObject* boss, const GUI::Font& font, _rows = h / _fontHeight; // Create a CheckboxWidget for each row in the list - CheckboxWidget* t = nullptr; for(int i = 0; i < _rows; ++i) { - t = new CheckboxWidget(boss, font, _x + 2, ypos, "", - CheckboxWidget::kCheckActionCmd); + CheckboxWidget* t = new CheckboxWidget(boss, font, _x + 2, ypos, "", + CheckboxWidget::kCheckActionCmd); t->setTextColor(kTextColor); t->setTarget(this); t->setID(i); diff --git a/src/gui/DeveloperDialog.cxx b/src/gui/DeveloperDialog.cxx index 79f95d10f..3e8d92e9b 100644 --- a/src/gui/DeveloperDialog.cxx +++ b/src/gui/DeveloperDialog.cxx @@ -131,7 +131,6 @@ void DeveloperDialog::addEmulationTab(const GUI::Font& font) ypos += lineHeight + VGAP; // Randomize CPU - lwidth = font.getStringWidth("Randomize CPU "); myRandomizeCPULabel = new StaticTextWidget(myTab, font, HBORDER + INDENT * 2, ypos + 1, "Randomize CPU "); wid.push_back(myRandomizeCPULabel); @@ -184,7 +183,6 @@ void DeveloperDialog::addVideoTab(const GUI::Font& font) int tabID = myTab->addTab("Video"); wid.clear(); - ypos = VBORDER; // settings set mySettingsGroup1 = new RadioButtonGroup(); diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index d2062d011..dc0ee5f5c 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -614,14 +614,11 @@ void GameInfoDialog::updateControllerStates() const string& contrP0 = myP0Controller->getSelectedTag().toString(); const string& contrP1 = myP1Controller->getSelectedTag().toString(); bool enableEEEraseButton = false; - bool enableSwapPaddles = false; - bool enableSwapPorts = false; // Compumate bankswitching scheme doesn't allow to select controllers bool enableSelectControl = myType->getSelectedTag() != "CM"; - enableSwapPorts = enableSelectControl; - enableSwapPaddles = BSPF::startsWithIgnoreCase(contrP0, "PADDLES") || + bool enableSwapPaddles = BSPF::startsWithIgnoreCase(contrP0, "PADDLES") || BSPF::startsWithIgnoreCase(contrP1, "PADDLES"); if(instance().hasConsole()) @@ -630,10 +627,10 @@ void GameInfoDialog::updateControllerStates() const Controller& rport = instance().console().rightController(); // we only enable the button if we have a valid previous and new controller. - enableEEEraseButton = ((lport.type() == Controller::SaveKey && contrP0 == "SAVEKEY") - || (lport.type() == Controller::AtariVox && contrP0 == "ATARIVOX") - || (rport.type() == Controller::SaveKey && contrP1 == "SAVEKEY") - || (rport.type() == Controller::AtariVox && contrP1 == "ATARIVOX")); + enableEEEraseButton = ((lport.type() == Controller::SaveKey && contrP0 == "SAVEKEY") || + (rport.type() == Controller::SaveKey && contrP1 == "SAVEKEY") || + (lport.type() == Controller::AtariVox && contrP0 == "ATARIVOX") || + (rport.type() == Controller::AtariVox && contrP1 == "ATARIVOX")); } myP0Label->setEnabled(enableSelectControl); @@ -641,7 +638,7 @@ void GameInfoDialog::updateControllerStates() myP0Controller->setEnabled(enableSelectControl); myP1Controller->setEnabled(enableSelectControl); - mySwapPorts->setEnabled(enableSwapPorts); + mySwapPorts->setEnabled(enableSelectControl); mySwapPaddles->setEnabled(enableSwapPaddles); myEraseEEPROMLabel->setEnabled(enableEEEraseButton); diff --git a/src/gui/InputDialog.cxx b/src/gui/InputDialog.cxx index 4bcd1515f..82a1a5b3b 100644 --- a/src/gui/InputDialog.cxx +++ b/src/gui/InputDialog.cxx @@ -141,7 +141,6 @@ void InputDialog::addDevicePortTab(const GUI::Font& font) #endif lwidth = font.getStringWidth("Digital paddle sensitivity "); - pwidth = font.getMaxCharWidth() * 8; // Add joystick deadzone setting ypos += lineHeight + VGAP*3; diff --git a/src/gui/RomAuditDialog.cxx b/src/gui/RomAuditDialog.cxx index 26de177b0..3915d6a2b 100644 --- a/src/gui/RomAuditDialog.cxx +++ b/src/gui/RomAuditDialog.cxx @@ -134,11 +134,12 @@ void RomAuditDialog::auditRoms() int renamed = 0, notfound = 0; for(uInt32 idx = 0; idx < files.size(); idx++) { - bool renameSucceeded = false; string extension; if(files[idx].isFile() && LauncherFilterDialog::isValidRomName(files[idx], extension)) { + bool renameSucceeded = false; + // Calculate the MD5 so we can get the rest of the info // from the PropertiesSet (stella.pro) const string& md5 = MD5::hash(files[idx]); diff --git a/src/gui/SnapshotDialog.cxx b/src/gui/SnapshotDialog.cxx index a75837eb3..96525c7b3 100644 --- a/src/gui/SnapshotDialog.cxx +++ b/src/gui/SnapshotDialog.cxx @@ -59,7 +59,6 @@ SnapshotDialog::SnapshotDialog(OSystem& osystem, DialogContainer& parent, // Snapshot naming xpos = HBORDER; ypos += buttonHeight + V_GAP * 4; - fwidth = font.getStringWidth("10 seconds"); // Snapshot interval (continuous mode) mySnapInterval = new SliderWidget(this, font, xpos, ypos, @@ -106,7 +105,7 @@ SnapshotDialog::~SnapshotDialog() void SnapshotDialog::loadConfig() { const Settings& settings = instance().settings(); - mySnapSavePath->setText(settings.getString("snapsavedir")); + mySnapSavePath->setText(settings.getString("snapsavedir")); mySnapInterval->setValue(instance().settings().getInt("ssinterval")); mySnapName->setState(instance().settings().getString("snapname") == "rom"); mySnapSingle->setState(settings.getBool("sssingle")); @@ -116,7 +115,7 @@ void SnapshotDialog::loadConfig() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void SnapshotDialog::saveConfig() { - instance().settings().setValue("snapsavedir", mySnapSavePath->getText()); + instance().settings().setValue("snapsavedir", mySnapSavePath->getText()); instance().settings().setValue("ssinterval", mySnapInterval->getValue()); instance().settings().setValue("snapname", mySnapName->getState() ? "rom" : "int"); instance().settings().setValue("sssingle", mySnapSingle->getState()); @@ -130,7 +129,7 @@ void SnapshotDialog::saveConfig() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void SnapshotDialog::setDefaults() { - mySnapSavePath->setText(instance().defaultSaveDir()); + mySnapSavePath->setText(instance().defaultSaveDir()); mySnapInterval->setValue(2); mySnapName->setState(false); mySnapSingle->setState(false); diff --git a/src/gui/UIDialog.cxx b/src/gui/UIDialog.cxx index 5b61bf6bc..7ca574954 100644 --- a/src/gui/UIDialog.cxx +++ b/src/gui/UIDialog.cxx @@ -51,7 +51,7 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, const int HBORDER = 10; const int INDENT = 16; int xpos, ypos, tabID; - int lwidth, pwidth = font.getStringWidth("Standard"); + int lwidth, pwidth; WidgetArray wid; VariantList items; const GUI::Size& ds = instance().frameBuffer().desktopSize(); @@ -61,7 +61,6 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, _h = (10+1) * (lineHeight + 4) + VBORDER + _th; // The tab widget - xpos = HBORDER; ypos = VBORDER; myTab = new TabWidget(this, font, 2, 4 + _th, _w - 2*2, _h - _th - buttonHeight - 20); addTabWidget(myTab); diff --git a/src/gui/VideoDialog.cxx b/src/gui/VideoDialog.cxx index 4b077f184..2aee57f02 100644 --- a/src/gui/VideoDialog.cxx +++ b/src/gui/VideoDialog.cxx @@ -244,7 +244,6 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent, // Custom adjustables (using macro voodoo) xpos += INDENT - 2; ypos += 0; - pwidth = lwidth; lwidth = font.getStringWidth("Saturation "); #define CREATE_CUSTOM_SLIDERS(obj, desc) \ @@ -271,7 +270,6 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent, ypos = VBORDER; lwidth = font.getStringWidth("Intensity "); - pwidth = font.getMaxCharWidth() * 6; // TV Phosphor effect myTVPhosphor = new CheckboxWidget(myTab, font, xpos, ypos + 1, "Phosphor for all ROMs"); diff --git a/src/windows/FSNodeWINDOWS.cxx b/src/windows/FSNodeWINDOWS.cxx index f65cc7aea..6c5b48157 100644 --- a/src/windows/FSNodeWINDOWS.cxx +++ b/src/windows/FSNodeWINDOWS.cxx @@ -131,7 +131,7 @@ void FilesystemNodeWINDOWS::addFile(AbstractFSList& list, ListMode mode, if(!strncmp(asciiName, ".", 1) || !strncmp(asciiName, "..", 2)) return; - isDirectory = (find_data->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ? true : false); + isDirectory = ((find_data->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? true : false); isFile = !isDirectory;//(find_data->dwFileAttributes & FILE_ATTRIBUTE_NORMAL ? true : false); if((isFile && mode == FilesystemNode::kListDirectoriesOnly) || From c901f282bbebeb5d91ed7168616938efdc231955 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Mon, 27 Aug 2018 12:17:22 -0230 Subject: [PATCH 059/126] A few micro-optimizations in the 6502 emulation (found by cppcheck). --- src/emucore/M6502.ins | 24 ++++++++++++------------ src/emucore/M6502.m4 | 12 ++++++------ 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/emucore/M6502.ins b/src/emucore/M6502.ins index c9e99e456..58cd8d53e 100644 --- a/src/emucore/M6502.ins +++ b/src/emucore/M6502.ins @@ -616,10 +616,10 @@ case 0x4b: // Set carry flag according to the right-most bit C = A & 0x01; - A = (A >> 1) & 0x7f; + A >>= 1; notZ = A; - N = A & 0x80; + N = 0; } break; @@ -2671,10 +2671,10 @@ case 0x4a: // Set carry flag according to the right-most bit C = A & 0x01; - A = (A >> 1) & 0x7f; + A >>= 1; notZ = A; - N = A & 0x80; + N = 0; } break; @@ -2689,11 +2689,11 @@ case 0x46: // Set carry flag according to the right-most bit in value C = operand & 0x01; - operand = (operand >> 1) & 0x7f; + operand >>= 1; poke(operandAddress, operand, DISASM_WRITE); notZ = operand; - N = operand & 0x80; + N = 0; } break; @@ -2709,11 +2709,11 @@ case 0x56: // Set carry flag according to the right-most bit in value C = operand & 0x01; - operand = (operand >> 1) & 0x7f; + operand >>= 1; poke(operandAddress, operand, DISASM_WRITE); notZ = operand; - N = operand & 0x80; + N = 0; } break; @@ -2728,11 +2728,11 @@ case 0x4e: // Set carry flag according to the right-most bit in value C = operand & 0x01; - operand = (operand >> 1) & 0x7f; + operand >>= 1; poke(operandAddress, operand, DISASM_WRITE); notZ = operand; - N = operand & 0x80; + N = 0; } break; @@ -2749,11 +2749,11 @@ case 0x5e: // Set carry flag according to the right-most bit in value C = operand & 0x01; - operand = (operand >> 1) & 0x7f; + operand >>= 1; poke(operandAddress, operand, DISASM_WRITE); notZ = operand; - N = operand & 0x80; + N = 0; } break; diff --git a/src/emucore/M6502.m4 b/src/emucore/M6502.m4 index 8b6f7d98a..dd1ce577e 100644 --- a/src/emucore/M6502.m4 +++ b/src/emucore/M6502.m4 @@ -482,10 +482,10 @@ define(M6502_ASR, `{ // Set carry flag according to the right-most bit C = A & 0x01; - A = (A >> 1) & 0x7f; + A >>= 1; notZ = A; - N = A & 0x80; + N = 0; }') define(M6502_BIT, `{ @@ -691,21 +691,21 @@ define(M6502_LSR, `{ // Set carry flag according to the right-most bit in value C = operand & 0x01; - operand = (operand >> 1) & 0x7f; + operand >>= 1; poke(operandAddress, operand, DISASM_WRITE); notZ = operand; - N = operand & 0x80; + N = 0; }') define(M6502_LSRA, `{ // Set carry flag according to the right-most bit C = A & 0x01; - A = (A >> 1) & 0x7f; + A >>= 1; notZ = A; - N = A & 0x80; + N = 0; }') define(M6502_LXA, `{ From 13b9bbe5a45a0c6113411595afabcbcc345d46b8 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Mon, 27 Aug 2018 13:47:22 -0230 Subject: [PATCH 060/126] More M6502 micro-optimizations. --- src/emucore/M6502.ins | 18 +++++++++--------- src/emucore/M6502.m4 | 12 ++++++------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/emucore/M6502.ins b/src/emucore/M6502.ins index 58cd8d53e..a14a6264b 100644 --- a/src/emucore/M6502.ins +++ b/src/emucore/M6502.ins @@ -619,7 +619,7 @@ case 0x4b: A >>= 1; notZ = A; - N = 0; + N = false; } break; @@ -829,12 +829,12 @@ case 0x6b: if(((value & 0xf0) + (value & 0x10)) > 0x50) { - A = (A + 0x60) & 0xff; - C = 1; + A += 0x60; + C = true; } else { - C = 0; + C = false; } } } @@ -2674,7 +2674,7 @@ case 0x4a: A >>= 1; notZ = A; - N = 0; + N = false; } break; @@ -2693,7 +2693,7 @@ case 0x46: poke(operandAddress, operand, DISASM_WRITE); notZ = operand; - N = 0; + N = false; } break; @@ -2713,7 +2713,7 @@ case 0x56: poke(operandAddress, operand, DISASM_WRITE); notZ = operand; - N = 0; + N = false; } break; @@ -2732,7 +2732,7 @@ case 0x4e: poke(operandAddress, operand, DISASM_WRITE); notZ = operand; - N = 0; + N = false; } break; @@ -2753,7 +2753,7 @@ case 0x5e: poke(operandAddress, operand, DISASM_WRITE); notZ = operand; - N = 0; + N = false; } break; diff --git a/src/emucore/M6502.m4 b/src/emucore/M6502.m4 index dd1ce577e..0f3d859a5 100644 --- a/src/emucore/M6502.m4 +++ b/src/emucore/M6502.m4 @@ -445,12 +445,12 @@ define(M6502_ARR, `{ if(((value & 0xf0) + (value & 0x10)) > 0x50) { - A = (A + 0x60) & 0xff; - C = 1; + A += 0x60; + C = true; } else { - C = 0; + C = false; } } }') @@ -485,7 +485,7 @@ define(M6502_ASR, `{ A >>= 1; notZ = A; - N = 0; + N = false; }') define(M6502_BIT, `{ @@ -695,7 +695,7 @@ define(M6502_LSR, `{ poke(operandAddress, operand, DISASM_WRITE); notZ = operand; - N = 0; + N = false; }') define(M6502_LSRA, `{ @@ -705,7 +705,7 @@ define(M6502_LSRA, `{ A >>= 1; notZ = A; - N = 0; + N = false; }') define(M6502_LXA, `{ From e5fb0106312792d6fbeb1a8c1b1ff025f6e8259c Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 28 Aug 2018 11:01:52 -0230 Subject: [PATCH 061/126] Allow sound sample rate/fragment size to change dynamically. - Move sound debugging output to logging facilities - This should fix issue #348, but more testing is required Bumped version # for beta release. --- src/common/SoundNull.hxx | 5 -- src/common/SoundSDL2.cxx | 93 ++++++++++++++++++++++--------------- src/common/SoundSDL2.hxx | 11 +++-- src/common/StateManager.cxx | 2 +- src/common/Version.hxx | 4 +- src/emucore/Console.cxx | 8 +--- src/emucore/Sound.hxx | 7 +-- 7 files changed, 67 insertions(+), 63 deletions(-) diff --git a/src/common/SoundNull.hxx b/src/common/SoundNull.hxx index 1670c909d..c81d5df75 100644 --- a/src/common/SoundNull.hxx +++ b/src/common/SoundNull.hxx @@ -84,11 +84,6 @@ class SoundNull : public Sound */ uInt32 getSampleRate() const override { return 31400; } - /** - Reset the sound device. - */ - void reset() override { } - /** Sets the volume of the sound device to the specified level. The volume is given as a percentage from 0 to 100. Values outside diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index dfd94e869..750832c0b 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -54,32 +54,9 @@ SoundSDL2::SoundSDL2(OSystem& osystem, AudioSettings& audioSettings) return; } - // The sound system is opened only once per program run, to eliminate - // issues with opening and closing it multiple times - // This fixes a bug most prevalent with ATI video cards in Windows, - // whereby sound stopped working after the first video change - SDL_AudioSpec desired; - desired.freq = myAudioSettings.sampleRate(); - desired.format = AUDIO_F32SYS; - desired.channels = 2; - desired.samples = static_cast(myAudioSettings.fragmentSize()); - desired.callback = callback; - desired.userdata = static_cast(this); - - myDevice = SDL_OpenAudioDevice(nullptr, 0, &desired, &myHardwareSpec, - SDL_AUDIO_ALLOW_FREQUENCY_CHANGE); - - if(myDevice == 0) - { - ostringstream buf; - - buf << "WARNING: Couldn't open SDL audio device! " << endl - << " " << SDL_GetError() << endl; - myOSystem.logMessage(buf.str(), 0); + SDL_zero(myHardwareSpec); + if(!openDevice()) return; - } - - myIsInitializedFlag = true; mute(true); @@ -95,6 +72,35 @@ SoundSDL2::~SoundSDL2() SDL_QuitSubSystem(SDL_INIT_AUDIO); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool SoundSDL2::openDevice() +{ + SDL_AudioSpec desired; + desired.freq = myAudioSettings.sampleRate(); + desired.format = AUDIO_F32SYS; + desired.channels = 2; + desired.samples = static_cast(myAudioSettings.fragmentSize()); + desired.callback = callback; + desired.userdata = static_cast(this); + + if(myIsInitializedFlag) + SDL_CloseAudioDevice(myDevice); + myDevice = SDL_OpenAudioDevice(nullptr, 0, &desired, &myHardwareSpec, + SDL_AUDIO_ALLOW_FREQUENCY_CHANGE); + + if(myDevice == 0) + { + ostringstream buf; + + buf << "WARNING: Couldn't open SDL audio device! " << endl + << " " << SDL_GetError() << endl; + myOSystem.logMessage(buf.str(), 0); + + return myIsInitializedFlag = false; + } + return myIsInitializedFlag = true; +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void SoundSDL2::setEnabled(bool state) { @@ -109,6 +115,12 @@ void SoundSDL2::setEnabled(bool state) void SoundSDL2::open(shared_ptr audioQueue, EmulationTiming* emulationTiming) { + // Do we need to re-open the sound device? + // Only do this when absolutely necessary + if(myAudioSettings.sampleRate() != uInt32(myHardwareSpec.freq) || + myAudioSettings.fragmentSize() != uInt32(myHardwareSpec.samples)) + openDevice(); + myEmulationTiming = emulationTiming; myOSystem.logMessage("SoundSDL2::open started ...", 2); @@ -128,18 +140,32 @@ void SoundSDL2::open(shared_ptr audioQueue, // Adjust volume to that defined in settings setVolume(myAudioSettings.volume()); + initResampler(); + // Show some info ostringstream buf; buf << "Sound enabled:" << endl << " Volume: " << myVolume << endl << " Frag size: " << uInt32(myHardwareSpec.samples) << endl << " Frequency: " << uInt32(myHardwareSpec.freq) << endl - << " Channels: " << uInt32(myHardwareSpec.channels) - << endl; + << " Channels: " << uInt32(myHardwareSpec.channels) << endl + << " Resampling: "; + switch (myAudioSettings.resamplingQuality()) { + case AudioSettings::ResamplingQuality::nearestNeightbour: + buf << "quality 1, nearest neighbor" << endl; + break; + case AudioSettings::ResamplingQuality::lanczos_2: + buf << "quality 2, nearest Lanczos (a = 2)" << endl; + break; + case AudioSettings::ResamplingQuality::lanczos_3: + buf << "quality 3, nearest Lanczos (a = 3)" << endl; + break; + default: + buf << "unknown resampler" << endl; + break; + } myOSystem.logMessage(buf.str(), 1); - initResampler(); - // And start the SDL sound subsystem ... mute(false); @@ -158,7 +184,6 @@ void SoundSDL2::close() myCurrentFragment = nullptr; myOSystem.logMessage("SoundSDL2::close", 2); - } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -170,11 +195,6 @@ void SoundSDL2::mute(bool state) } } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL2::reset() -{ -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void SoundSDL2::setVolume(uInt32 percent) { @@ -262,16 +282,13 @@ void SoundSDL2::initResampler() switch (myAudioSettings.resamplingQuality()) { case AudioSettings::ResamplingQuality::nearestNeightbour: myResampler = make_unique(formatFrom, formatTo, nextFragmentCallback); - (cerr << "resampling quality 1: using nearest neighbor resampling\n").flush(); break; case AudioSettings::ResamplingQuality::lanczos_2: - (cerr << "resampling quality 2: using nearest Lanczos resampling, a = 2\n").flush(); myResampler = make_unique(formatFrom, formatTo, nextFragmentCallback, 2); break; case AudioSettings::ResamplingQuality::lanczos_3: - (cerr << "resampling quality 3: using nearest Lanczos resampling, a = 3\n").flush(); myResampler = make_unique(formatFrom, formatTo, nextFragmentCallback, 3); break; diff --git a/src/common/SoundSDL2.hxx b/src/common/SoundSDL2.hxx index 9ed0d07c7..9d519bf46 100644 --- a/src/common/SoundSDL2.hxx +++ b/src/common/SoundSDL2.hxx @@ -77,11 +77,6 @@ class SoundSDL2 : public Sound */ void mute(bool state) override; - /** - Reset the sound device. - */ - void reset() override; - /** Sets the volume of the sound device to the specified level. The volume is given as a percentage from 0 to 100. Values outside @@ -115,6 +110,12 @@ class SoundSDL2 : public Sound void processFragment(float* stream, uInt32 length); private: + /** + The actual sound device is opened only when absolutely necessary. + Typically this will only happen once per program run, but it can also + happen dynamically when changing sample rate and/or fragment size. + */ + bool openDevice(); void initResampler(); diff --git a/src/common/StateManager.cxx b/src/common/StateManager.cxx index 61af78d22..751550288 100644 --- a/src/common/StateManager.cxx +++ b/src/common/StateManager.cxx @@ -27,7 +27,7 @@ #include "StateManager.hxx" -#define STATE_HEADER "05099000state" +#define STATE_HEADER "05099100state" // #define MOVIE_HEADER "03030000movie" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/common/Version.hxx b/src/common/Version.hxx index 19c9014d3..de383d198 100644 --- a/src/common/Version.hxx +++ b/src/common/Version.hxx @@ -18,7 +18,7 @@ #ifndef VERSION_HXX #define VERSION_HXX -#define STELLA_VERSION "6.0_pre1" -#define STELLA_BUILD "4434" +#define STELLA_VERSION "6.0_beta1" +#define STELLA_BUILD "4514" #endif diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index 446b82c51..a2e18970b 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -589,16 +589,12 @@ void Console::initializeAudio() myOSystem.sound().close(); myEmulationTiming - .updatePlaybackRate(myOSystem.sound().getSampleRate()) - .updatePlaybackPeriod(myOSystem.sound().getFragmentSize()) + .updatePlaybackRate(myAudioSettings.sampleRate()) + .updatePlaybackPeriod(myAudioSettings.fragmentSize()) .updateAudioQueueExtraFragments(myAudioSettings.bufferSize()) .updateAudioQueueHeadroom(myAudioSettings.headroom()) .updateSpeedFactor(myOSystem.settings().getFloat("speed")); - (cout << "sample rate: " << myOSystem.sound().getSampleRate() << std::endl).flush(); - (cout << "fragment size: " << myOSystem.sound().getFragmentSize() << std::endl).flush(); - (cout << "prebuffer fragment count: " << myEmulationTiming.prebufferFragmentCount() << std::endl).flush(); - createAudioQueue(); myTIA->setAudioQueue(myAudioQueue); diff --git a/src/emucore/Sound.hxx b/src/emucore/Sound.hxx index 44e7b5db0..689618810 100644 --- a/src/emucore/Sound.hxx +++ b/src/emucore/Sound.hxx @@ -34,7 +34,7 @@ class Sound { public: /** - Create a new sound object. The init method must be invoked before + Create a new sound object. The open method must be invoked before using the object. */ Sound(OSystem& osystem) : myOSystem(osystem) { } @@ -77,11 +77,6 @@ class Sound */ virtual uInt32 getSampleRate() const = 0; - /** - Reset the sound device. - */ - virtual void reset() = 0; - /** Sets the volume of the sound device to the specified level. The volume is given as a percentage from 0 to 100. Values outside From 558b071fbb4aaaff8f1fd9c5a2fb8e0c788dbb09 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 28 Aug 2018 14:21:01 -0230 Subject: [PATCH 062/126] Some more fixes for warnings from cppcheck. --- src/cheat/CheatManager.cxx | 6 +-- src/common/AudioQueue.cxx | 6 +-- src/common/RewindManager.hxx | 1 + src/common/StringParser.hxx | 3 +- src/common/audio/ConvolutionBuffer.cxx | 2 +- src/common/audio/LanczosResampler.cxx | 10 ++--- src/common/audio/LanczosResampler.hxx | 2 +- src/common/audio/SimpleResampler.cxx | 2 +- src/common/audio/SimpleResampler.hxx | 2 +- src/common/bspf.hxx | 2 +- src/debugger/DebuggerParser.cxx | 26 ++++++------- src/debugger/DiStella.cxx | 46 +++++++++++------------ src/debugger/TIADebug.cxx | 2 +- src/debugger/gui/AudioWidget.cxx | 6 +-- src/debugger/gui/Cart3EPlusWidget.cxx | 2 +- src/debugger/gui/Cart3EWidget.cxx | 4 +- src/debugger/gui/Cart4KSCWidget.cxx | 4 +- src/debugger/gui/CartBFSCWidget.cxx | 5 +-- src/debugger/gui/CartBUSWidget.cxx | 12 ++---- src/debugger/gui/CartCDFWidget.cxx | 4 +- src/debugger/gui/CartCMWidget.cxx | 2 +- src/debugger/gui/CartCTYWidget.cxx | 5 +-- src/debugger/gui/CartCVPlusWidget.cxx | 3 +- src/debugger/gui/CartCVWidget.cxx | 3 +- src/debugger/gui/CartDASHWidget.cxx | 2 +- src/debugger/gui/CartDFSCWidget.cxx | 4 +- src/debugger/gui/CartE78KWidget.hxx | 4 +- src/debugger/gui/CartE7Widget.hxx | 4 +- src/debugger/gui/CartEFSCWidget.cxx | 4 +- src/debugger/gui/CartF4SCWidget.cxx | 5 +-- src/debugger/gui/CartF6SCWidget.cxx | 4 +- src/debugger/gui/CartF8SCWidget.cxx | 4 +- src/debugger/gui/CartFA2Widget.cxx | 4 +- src/debugger/gui/CartFAWidget.cxx | 4 +- src/debugger/gui/CartMNetworkWidget.cxx | 4 +- src/debugger/gui/CartRamWidget.cxx | 2 +- src/debugger/gui/CartRamWidget.hxx | 12 +++--- src/debugger/gui/PointingDeviceWidget.cxx | 18 ++++----- src/debugger/gui/PromptWidget.cxx | 8 ++-- src/debugger/gui/RiotRamWidget.cxx | 2 +- src/debugger/gui/RiotRamWidget.hxx | 12 +++--- src/debugger/gui/TiaWidget.cxx | 2 +- src/emucore/Cart3EPlus.cxx | 2 +- src/emucore/CartBUS.cxx | 4 +- src/emucore/CartCDF.cxx | 4 +- src/emucore/CartDASH.cxx | 6 +-- src/emucore/Console.cxx | 8 ++-- src/emucore/Control.hxx | 2 +- src/emucore/Driving.cxx | 14 +++---- src/gui/Font.cxx | 2 +- src/gui/Font.hxx | 2 +- 51 files changed, 139 insertions(+), 164 deletions(-) diff --git a/src/cheat/CheatManager.cxx b/src/cheat/CheatManager.cxx index dcb0fb4dd..3abdd6657 100644 --- a/src/cheat/CheatManager.cxx +++ b/src/cheat/CheatManager.cxx @@ -42,7 +42,7 @@ bool CheatManager::add(const string& name, const string& code, return false; // Delete duplicate entries - for(uInt32 i = 0; i < myCheatList.size(); i++) + for(uInt32 i = 0; i < myCheatList.size(); ++i) { if(myCheatList[i]->name() == name || myCheatList[i]->code() == code) { @@ -96,7 +96,7 @@ void CheatManager::addPerFrame(const string& name, const string& code, bool enab // Make sure there are no duplicates bool found = false; uInt32 i; - for(i = 0; i < myPerFrameList.size(); i++) + for(i = 0; i < myPerFrameList.size(); ++i) { if(myPerFrameList[i]->code() == cheat->code()) { @@ -291,7 +291,7 @@ void CheatManager::loadCheats(const string& md5sum) void CheatManager::saveCheats(const string& md5sum) { ostringstream cheats; - for(uInt32 i = 0; i < myCheatList.size(); i++) + for(uInt32 i = 0; i < myCheatList.size(); ++i) { cheats << myCheatList[i]->name() << ":" << myCheatList[i]->code() << ":" diff --git a/src/common/AudioQueue.cxx b/src/common/AudioQueue.cxx index ee7fa79cd..9c1429d22 100644 --- a/src/common/AudioQueue.cxx +++ b/src/common/AudioQueue.cxx @@ -34,7 +34,7 @@ AudioQueue::AudioQueue(uInt32 fragmentSize, uInt32 capacity, bool isStereo) myFragmentBuffer = make_unique(myFragmentSize * sampleSize * (capacity + 2)); - for (uInt32 i = 0; i < capacity; i++) + for (uInt32 i = 0; i < capacity; ++i) myFragmentQueue[i] = myAllFragments[i] = myFragmentBuffer.get() + i * sampleSize * myFragmentSize; myAllFragments[capacity] = myFirstFragmentForEnqueue = @@ -92,7 +92,7 @@ Int16* AudioQueue::enqueue(Int16* fragment) newFragment = myFragmentQueue.at(fragmentIndex); myFragmentQueue.at(fragmentIndex) = fragment; - if (mySize < capacity) mySize++; + if (mySize < capacity) ++mySize; else { myNextFragment = (myNextFragment + 1) % capacity; if (!myIgnoreOverflows) (cerr << "audio buffer overflow\n").flush(); @@ -118,7 +118,7 @@ Int16* AudioQueue::dequeue(Int16* fragment) Int16* nextFragment = myFragmentQueue.at(myNextFragment); myFragmentQueue.at(myNextFragment) = fragment; - mySize--; + --mySize; myNextFragment = (myNextFragment + 1) % myFragmentQueue.size(); return nextFragment; diff --git a/src/common/RewindManager.hxx b/src/common/RewindManager.hxx index 6cd8ee116..9cce38d35 100644 --- a/src/common/RewindManager.hxx +++ b/src/common/RewindManager.hxx @@ -179,6 +179,7 @@ class RewindManager // The goal of LinkedObjectPool is to not do any allocations at all RewindState() : cycles(0) { } RewindState(const RewindState& rs) : cycles(rs.cycles) { } + RewindState& operator= (const RewindState& rs) { cycles = rs.cycles; return *this; } // Output object info; used for debugging only friend ostream& operator<<(ostream& os, const RewindState& s) { diff --git a/src/common/StringParser.hxx b/src/common/StringParser.hxx index 01270a03e..eee0c7084 100644 --- a/src/common/StringParser.hxx +++ b/src/common/StringParser.hxx @@ -57,12 +57,13 @@ class StringParser while(std::getline(buf, line, '\n')) { - size_t beg = 0, len = maxlen, size = line.size(); + size_t len = maxlen, size = line.size(); if(size <= len) myStringList.push_back(line); else { + size_t beg = 0; while((beg+maxlen) < size) { size_t spos = line.find_last_of(' ', beg+len); diff --git a/src/common/audio/ConvolutionBuffer.cxx b/src/common/audio/ConvolutionBuffer.cxx index 983b06209..8629ecf15 100644 --- a/src/common/audio/ConvolutionBuffer.cxx +++ b/src/common/audio/ConvolutionBuffer.cxx @@ -38,7 +38,7 @@ float ConvolutionBuffer::convoluteWith(float* kernel) const { float result = 0.; - for (uInt32 i = 0; i < mySize; i++) { + for (uInt32 i = 0; i < mySize; ++i) { result += kernel[i] * myData[(myFirstIndex + i) % mySize]; } diff --git a/src/common/audio/LanczosResampler.cxx b/src/common/audio/LanczosResampler.cxx index 80f889ddf..cb57a1ed0 100644 --- a/src/common/audio/LanczosResampler.cxx +++ b/src/common/audio/LanczosResampler.cxx @@ -29,7 +29,7 @@ namespace { uInt32 reducedDenominator(uInt32 n, uInt32 d) { - for (uInt32 i = std::min(n ,d); i > 1; i--) { + for (uInt32 i = std::min(n ,d); i > 1; --i) { if ((n % i == 0) && (d % i == 0)) { n /= i; d /= i; @@ -103,13 +103,13 @@ void LanczosResampler::precomputeKernels() // timeIndex = time * formatFrom.sampleRate * formatTo.sampleRAte uInt32 timeIndex = 0; - for (uInt32 i = 0; i < myPrecomputedKernelCount; i++) { + for (uInt32 i = 0; i < myPrecomputedKernelCount; ++i) { float* kernel = myPrecomputedKernels.get() + myKernelSize * i; // The kernel is normalized such to be evaluate on time * formatFrom.sampleRate float center = static_cast(timeIndex) / static_cast(myFormatTo.sampleRate); - for (uInt32 j = 0; j < 2 * myKernelParameter; j++) { + for (uInt32 j = 0; j < 2 * myKernelParameter; ++j) { kernel[j] = lanczosKernel( center - static_cast(j) + static_cast(myKernelParameter) - 1.f, myKernelParameter ) * CLIPPING_FACTOR; @@ -150,7 +150,7 @@ void LanczosResampler::fillFragment(float* fragment, uInt32 length) const uInt32 outputSamples = myFormatTo.stereo ? (length >> 1) : length; - for (uInt32 i = 0; i < outputSamples; i++) { + for (uInt32 i = 0; i < outputSamples; ++i) { float* kernel = myPrecomputedKernels.get() + (myCurrentKernelIndex * myKernelSize); myCurrentKernelIndex = (myCurrentKernelIndex + 1) % myPrecomputedKernelCount; @@ -194,7 +194,7 @@ inline void LanczosResampler::shiftSamples(uInt32 samplesToShift) else myBuffer->shift(myHighPass.apply(myCurrentFragment[myFragmentIndex] / static_cast(0x7fff))); - myFragmentIndex++; + ++myFragmentIndex; if (myFragmentIndex >= myFormatFrom.fragmentSize) { myFragmentIndex %= myFormatFrom.fragmentSize; diff --git a/src/common/audio/LanczosResampler.hxx b/src/common/audio/LanczosResampler.hxx index 17bcfefaa..5581d48d8 100644 --- a/src/common/audio/LanczosResampler.hxx +++ b/src/common/audio/LanczosResampler.hxx @@ -33,7 +33,7 @@ class LanczosResampler : public Resampler uInt32 kernelParameter ); - virtual void fillFragment(float* fragment, uInt32 length); + void fillFragment(float* fragment, uInt32 length) override; virtual ~LanczosResampler() = default; diff --git a/src/common/audio/SimpleResampler.cxx b/src/common/audio/SimpleResampler.cxx index 5e7b4ce65..5992e9577 100644 --- a/src/common/audio/SimpleResampler.cxx +++ b/src/common/audio/SimpleResampler.cxx @@ -51,7 +51,7 @@ void SimpleResampler::fillFragment(float* fragment, uInt32 length) const uInt32 outputSamples = myFormatTo.stereo ? (length >> 1) : length; // For the following math, remember that myTimeIndex = time * myFormatFrom.sampleRate * myFormatTo.sampleRate - for (uInt32 i = 0; i < outputSamples; i++) { + for (uInt32 i = 0; i < outputSamples; ++i) { if (myFormatFrom.stereo) { float sampleL = static_cast(myCurrentFragment[2*myFragmentIndex]) / static_cast(0x7fff); float sampleR = static_cast(myCurrentFragment[2*myFragmentIndex + 1]) / static_cast(0x7fff); diff --git a/src/common/audio/SimpleResampler.hxx b/src/common/audio/SimpleResampler.hxx index 92de9e05f..8db798aab 100644 --- a/src/common/audio/SimpleResampler.hxx +++ b/src/common/audio/SimpleResampler.hxx @@ -30,7 +30,7 @@ class SimpleResampler : public Resampler Resampler::NextFragmentCallback NextFragmentCallback ); - virtual void fillFragment(float* fragment, uInt32 length); + void fillFragment(float* fragment, uInt32 length) override; private: diff --git a/src/common/bspf.hxx b/src/common/bspf.hxx index 0b6c6ee6e..e178bc750 100644 --- a/src/common/bspf.hxx +++ b/src/common/bspf.hxx @@ -201,7 +201,7 @@ namespace BSPF if(BSPF::startsWithIgnoreCase(s1, s2.substr(0, 1))) { size_t pos = 1; - for(uInt32 j = 1; j < s2.size(); j++) + for(uInt32 j = 1; j < s2.size(); ++j) { size_t found = BSPF::findIgnoreCase(s1, s2.substr(j, 1), pos); if(found == string::npos) diff --git a/src/debugger/DebuggerParser.cxx b/src/debugger/DebuggerParser.cxx index bdba5decf..309bbc555 100644 --- a/src/debugger/DebuggerParser.cxx +++ b/src/debugger/DebuggerParser.cxx @@ -426,8 +426,8 @@ bool DebuggerParser::validateArgs(int cmd) uInt32 count = 0, argRequiredCount = 0; while(*p != kARG_END_ARGS && *p != kARG_MULTI_BYTE) { - count++; - p++; + ++count; + ++p; } // Evil hack: some commands intentionally take multiple arguments @@ -500,8 +500,8 @@ bool DebuggerParser::validateArgs(int cmd) case kARG_END_ARGS: break; } - curCount++; - p++; + ++curCount; + ++p; } while(*p != kARG_END_ARGS && curCount < argRequiredCount); @@ -571,7 +571,7 @@ void DebuggerParser::listTraps(bool listCond) StringList names = debugger.m6502().getCondTrapNames(); commandResult << (listCond ? "trapifs:" : "traps:") << endl; - for(uInt32 i = 0; i < names.size(); i++) + for(uInt32 i = 0; i < names.size(); ++i) { bool hasCond = names[i] != ""; if(hasCond == listCond) @@ -753,7 +753,7 @@ void DebuggerParser::executeBreakif() if(res == 0) { string condition = argStrings[0]; - for(uInt32 i = 0; i < debugger.m6502().getCondBreakNames().size(); i++) + for(uInt32 i = 0; i < debugger.m6502().getCondBreakNames().size(); ++i) { if(condition == debugger.m6502().getCondBreakNames()[i]) { @@ -1164,9 +1164,9 @@ void DebuggerParser::executeExec() prefix << std::hex << std::setw(8) << std::setfill('0') << uInt32(debugger.myOSystem.getTicks()/1000); execPrefix = prefix.str(); } - execDepth++; + ++execDepth; commandResult << exec(node); - execDepth--; + --execDepth; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1419,7 +1419,7 @@ void DebuggerParser::executeListbreaks() if(count) commandResult << endl; commandResult << "breakifs:" << endl; - for(uInt32 i = 0; i < conds.size(); i++) + for(uInt32 i = 0; i < conds.size(); ++i) { commandResult << Base::toString(i) << ": " << conds[i]; if(i != (conds.size() - 1)) commandResult << endl; @@ -1465,7 +1465,7 @@ void DebuggerParser::executeListsavestateifs() if(conds.size() > 0) { commandResult << "savestateif:" << endl; - for(uInt32 i = 0; i < conds.size(); i++) + for(uInt32 i = 0; i < conds.size(); ++i) { commandResult << Base::toString(i) << ": " << conds[i]; if(i != (conds.size() - 1)) commandResult << endl; @@ -1492,7 +1492,7 @@ void DebuggerParser::executeListtraps() if (names.size() > 0) { bool trapFound = false, trapifFound = false; - for(uInt32 i = 0; i < names.size(); i++) + for(uInt32 i = 0; i < names.size(); ++i) if(names[i] == "") trapFound = true; else @@ -1820,7 +1820,7 @@ void DebuggerParser::executeSavestateif() if(res == 0) { string condition = argStrings[0]; - for(uInt32 i = 0; i < debugger.m6502().getCondSaveStateNames().size(); i++) + for(uInt32 i = 0; i < debugger.m6502().getCondSaveStateNames().size(); ++i) { if(condition == debugger.m6502().getCondSaveStateNames()[i]) { @@ -1997,7 +1997,7 @@ void DebuggerParser::executeTraps(bool read, bool write, const string& command, { // duplicates will remove each other bool add = true; - for(uInt32 i = 0; i < myTraps.size(); i++) + for(uInt32 i = 0; i < myTraps.size(); ++i) { if(myTraps[i]->begin == begin && myTraps[i]->end == end && myTraps[i]->read == read && myTraps[i]->write == write && diff --git a/src/debugger/DiStella.cxx b/src/debugger/DiStella.cxx index 9a5235dc4..68a2a1370 100644 --- a/src/debugger/DiStella.cxx +++ b/src/debugger/DiStella.cxx @@ -132,7 +132,7 @@ void DiStella::disasm(uInt32 distart, int pass) mark(myPC + myOffset, CartDebug::VALID_ENTRY); if (pass == 3) outputGraphics(); - myPC++; + ++myPC; } else if (checkBits(myPC, CartDebug::DATA, CartDebug::CODE | CartDebug::GFX | CartDebug::PGFX)) { if (pass == 2) @@ -140,7 +140,7 @@ void DiStella::disasm(uInt32 distart, int pass) if (pass == 3) outputBytes(CartDebug::DATA); else - myPC++; + ++myPC; } else if (checkBits(myPC, CartDebug::ROW, CartDebug::CODE | CartDebug::DATA | CartDebug::GFX | CartDebug::PGFX)) { FIX_LAST: @@ -150,7 +150,7 @@ FIX_LAST: if (pass == 3) outputBytes(CartDebug::ROW); else - myPC++; + ++myPC; } else { // The following sections must be CODE @@ -177,7 +177,7 @@ FIX_LAST: else myDisasmBuf << Base::HEX4 << myPC + myOffset << "' '"; } - myPC++; + ++myPC; // detect labels inside instructions (e.g. BIT masks) labelFound = false; @@ -252,7 +252,7 @@ FIX_LAST: else myDisasmBuf << Base::HEX4 << myPC + myOffset << "' '"; - opcode = Debugger::debugger().peek(myPC + myOffset); myPC++; + opcode = Debugger::debugger().peek(myPC + myOffset); ++myPC; myDisasmBuf << ".byte $" << Base::HEX2 << int(opcode) << " $" << Base::HEX4 << myPC + myOffset << "'" << Base::HEX2 << int(opcode); @@ -277,7 +277,7 @@ FIX_LAST: nextLine.str(""); nextLineBytes.str(""); } - myPC++; + ++myPC; myPCEnd = myAppData.end + myOffset; return; } @@ -330,7 +330,7 @@ FIX_LAST: case ZERO_PAGE: { - d1 = Debugger::debugger().peek(myPC + myOffset); myPC++; + d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; labelFound = mark(d1, CartDebug::REFERENCED); if (pass == 3) { nextLine << " "; @@ -342,7 +342,7 @@ FIX_LAST: case IMMEDIATE: { - d1 = Debugger::debugger().peek(myPC + myOffset); myPC++; + d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; if (pass == 3) { nextLine << " #$" << Base::HEX2 << int(d1) << " "; nextLineBytes << Base::HEX2 << int(d1); @@ -430,7 +430,7 @@ FIX_LAST: case INDIRECT_X: { - d1 = Debugger::debugger().peek(myPC + myOffset); myPC++; + d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; if (pass == 3) { labelFound = mark(d1, 0); // dummy call to get address type nextLine << " ("; @@ -443,7 +443,7 @@ FIX_LAST: case INDIRECT_Y: { - d1 = Debugger::debugger().peek(myPC + myOffset); myPC++; + d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; if (pass == 3) { labelFound = mark(d1, 0); // dummy call to get address type nextLine << " ("; @@ -456,7 +456,7 @@ FIX_LAST: case ZERO_PAGE_X: { - d1 = Debugger::debugger().peek(myPC + myOffset); myPC++; + d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; labelFound = mark(d1, CartDebug::REFERENCED); if (pass == 3) { nextLine << " "; @@ -469,7 +469,7 @@ FIX_LAST: case ZERO_PAGE_Y: { - d1 = Debugger::debugger().peek(myPC + myOffset); myPC++; + d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; labelFound = mark(d1, CartDebug::REFERENCED); if (pass == 3) { nextLine << " "; @@ -485,7 +485,7 @@ FIX_LAST: // SA - 04-06-2010: there seemed to be a bug in distella, // where wraparound occurred on a 32-bit int, and subsequent // indexing into the labels array caused a crash - d1 = Debugger::debugger().peek(myPC + myOffset); myPC++; + d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; ad = ((myPC + Int8(d1)) & 0xfff) + myOffset; labelFound = mark(ad, CartDebug::REFERENCED); @@ -607,7 +607,7 @@ void DiStella::disasmPass1(CartDebug::AddressList& debuggerAddresses) // However, addresses *specifically* marked as DATA/GFX/PGFX // in the emulation core indicate that the CODE range has finished // Therefore, we stop at the first such address encountered - for (uInt32 k = pcBeg; k <= myPCEnd; k++) { + for (uInt32 k = pcBeg; k <= myPCEnd; ++k) { if (checkBits(k, CartDebug::CartDebug::DATA | CartDebug::GFX | CartDebug::PGFX, CartDebug::CODE)) { //if (Debugger::debugger().getAccessFlags(k) & @@ -694,7 +694,7 @@ void DiStella::disasmFromAddress(uInt32 distart) // so this should be code now... // get opcode - opcode = Debugger::debugger().peek(myPC + myOffset); myPC++; + opcode = Debugger::debugger().peek(myPC + myOffset); ++myPC; // get address mode for opcode addrMode = ourLookup[opcode].addr_mode; @@ -716,7 +716,7 @@ void DiStella::disasmFromAddress(uInt32 distart) case ZERO_PAGE_Y: case RELATIVE: if (myPC > myAppData.end) { - myPC++; + ++myPC; myPCEnd = myAppData.end + myOffset; return; } @@ -745,7 +745,7 @@ void DiStella::disasmFromAddress(uInt32 distart) break; case ZERO_PAGE: - d1 = Debugger::debugger().peek(myPC + myOffset); myPC++; + d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; mark(d1, CartDebug::REFERENCED); break; @@ -772,12 +772,12 @@ void DiStella::disasmFromAddress(uInt32 distart) break; case ZERO_PAGE_X: - d1 = Debugger::debugger().peek(myPC + myOffset); myPC++; + d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; mark(d1, CartDebug::REFERENCED); break; case ZERO_PAGE_Y: - d1 = Debugger::debugger().peek(myPC + myOffset); myPC++; + d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; mark(d1, CartDebug::REFERENCED); break; @@ -785,7 +785,7 @@ void DiStella::disasmFromAddress(uInt32 distart) // SA - 04-06-2010: there seemed to be a bug in distella, // where wraparound occurred on a 32-bit int, and subsequent // indexing into the labels array caused a crash - d1 = Debugger::debugger().peek(myPC + myOffset); myPC++; + d1 = Debugger::debugger().peek(myPC + myOffset); ++myPC; ad = ((myPC + Int8(d1)) & 0xfff) + myOffset; mark(ad, CartDebug::REFERENCED); // do NOT use flags set by debugger, else known CODE will not analyzed statically. @@ -1079,14 +1079,14 @@ void DiStella::outputBytes(CartDebug::DisasmType type) myDisasmBuf << Base::HEX4 << myPC + myOffset << "'L" << Base::HEX4 << myPC + myOffset << "'.byte " << "$" << Base::HEX2 << int(Debugger::debugger().peek(myPC + myOffset)); - myPC++; + ++myPC; numBytes = 1; lineEmpty = false; } else if (lineEmpty) { // start a new line without a label myDisasmBuf << Base::HEX4 << myPC + myOffset << "' '" << ".byte $" << Base::HEX2 << int(Debugger::debugger().peek(myPC + myOffset)); - myPC++; + ++myPC; numBytes = 1; lineEmpty = false; } @@ -1096,7 +1096,7 @@ void DiStella::outputBytes(CartDebug::DisasmType type) lineEmpty = true; } else { myDisasmBuf << ",$" << Base::HEX2 << int(Debugger::debugger().peek(myPC + myOffset)); - myPC++; + ++myPC; } isType = checkBits(myPC, type, CartDebug::CODE | (type != CartDebug::DATA ? CartDebug::DATA : 0) | CartDebug::GFX | CartDebug::PGFX); diff --git a/src/debugger/TIADebug.cxx b/src/debugger/TIADebug.cxx index f71164753..1b12c38e6 100644 --- a/src/debugger/TIADebug.cxx +++ b/src/debugger/TIADebug.cxx @@ -1061,7 +1061,7 @@ string TIADebug::toString() ostringstream buf; buf << "00: "; - for (uInt8 j = 0; j < 0x010; j++) + for (uInt8 j = 0; j < 0x010; ++j) { buf << Common::Base::HEX2 << int(mySystem.peek(j)) << " "; if(j == 0x07) buf << "- "; diff --git a/src/debugger/gui/AudioWidget.cxx b/src/debugger/gui/AudioWidget.cxx index 3b39023e2..b3347e8a5 100644 --- a/src/debugger/gui/AudioWidget.cxx +++ b/src/debugger/gui/AudioWidget.cxx @@ -98,7 +98,7 @@ void AudioWidget::loadConfig() // AUDF0/1 alist.clear(); vlist.clear(); changed.clear(); - for(uInt32 i = 0; i < 2; i++) + for(uInt32 i = 0; i < 2; ++i) { alist.push_back(i); vlist.push_back(state.aud[i]); @@ -108,7 +108,7 @@ void AudioWidget::loadConfig() // AUDC0/1 alist.clear(); vlist.clear(); changed.clear(); - for(uInt32 i = 2; i < 4; i++) + for(uInt32 i = 2; i < 4; ++i) { alist.push_back(i-2); vlist.push_back(state.aud[i]); @@ -118,7 +118,7 @@ void AudioWidget::loadConfig() // AUDV0/1 alist.clear(); vlist.clear(); changed.clear(); - for(uInt32 i = 4; i < 6; i++) + for(uInt32 i = 4; i < 6; ++i) { alist.push_back(i-4); vlist.push_back(state.aud[i]); diff --git a/src/debugger/gui/Cart3EPlusWidget.cxx b/src/debugger/gui/Cart3EPlusWidget.cxx index dc5173552..abab8ef6e 100644 --- a/src/debugger/gui/Cart3EPlusWidget.cxx +++ b/src/debugger/gui/Cart3EPlusWidget.cxx @@ -122,7 +122,7 @@ void Cartridge3EPlusWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); } diff --git a/src/debugger/gui/Cart3EWidget.cxx b/src/debugger/gui/Cart3EWidget.cxx index 5338df4ee..e6115c2aa 100644 --- a/src/debugger/gui/Cart3EWidget.cxx +++ b/src/debugger/gui/Cart3EWidget.cxx @@ -90,10 +90,8 @@ void Cartridge3EWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } myOldState.bank = myCart.myCurrentBank; } diff --git a/src/debugger/gui/Cart4KSCWidget.cxx b/src/debugger/gui/Cart4KSCWidget.cxx index ec105bdba..d620f890a 100644 --- a/src/debugger/gui/Cart4KSCWidget.cxx +++ b/src/debugger/gui/Cart4KSCWidget.cxx @@ -46,10 +46,8 @@ void Cartridge4KSCWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/debugger/gui/CartBFSCWidget.cxx b/src/debugger/gui/CartBFSCWidget.cxx index cc5fbb32e..08418c25a 100644 --- a/src/debugger/gui/CartBFSCWidget.cxx +++ b/src/debugger/gui/CartBFSCWidget.cxx @@ -127,10 +127,9 @@ void CartridgeBFSCWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } + myOldState.bank = myCart.getBank(); } diff --git a/src/debugger/gui/CartBUSWidget.cxx b/src/debugger/gui/CartBUSWidget.cxx index 0f948fcb2..0b7b876b2 100644 --- a/src/debugger/gui/CartBUSWidget.cxx +++ b/src/debugger/gui/CartBUSWidget.cxx @@ -202,7 +202,7 @@ void CartridgeBUSWidget::saveOldState() myOldState.internalram.clear(); myOldState.samplepointer.clear(); - for(uInt32 i = 0; i < 18; i++) + for(uInt32 i = 0; i < 18; ++i) { // Pointers are stored as: // PPPFF--- @@ -221,20 +221,14 @@ void CartridgeBUSWidget::saveOldState() myOldState.datastreamincrements.push_back(0x100); } - for(uInt32 i = 0; i < 37; i++) // only 37 map values - { + for(uInt32 i = 0; i < 37; ++i) // only 37 map values myOldState.addressmaps.push_back(myCart.getAddressMap(i)); - } - for(uInt32 i = 37; i < 40; i++) // but need 40 for the grid - { + for(uInt32 i = 37; i < 40; ++i) // but need 40 for the grid myOldState.addressmaps.push_back(0); - } for(uInt32 i = 0; i < 3; ++i) - { myOldState.mcounters.push_back(myCart.myMusicCounters[i]); - } for(uInt32 i = 0; i < 3; ++i) { diff --git a/src/debugger/gui/CartCDFWidget.cxx b/src/debugger/gui/CartCDFWidget.cxx index 639d7d7a9..722b85e5f 100644 --- a/src/debugger/gui/CartCDFWidget.cxx +++ b/src/debugger/gui/CartCDFWidget.cxx @@ -193,7 +193,7 @@ void CartridgeCDFWidget::saveOldState() myOldState.internalram.clear(); myOldState.samplepointer.clear(); - for(uInt32 i = 0; i < 34; i++) + for(uInt32 i = 0; i < 34; ++i) { // Pointers are stored as: // PPPFF--- @@ -210,9 +210,7 @@ void CartridgeCDFWidget::saveOldState() } for(uInt32 i = 0; i < 3; ++i) - { myOldState.mcounters.push_back(myCart.myMusicCounters[i]); - } for(uInt32 i = 0; i < 3; ++i) { diff --git a/src/debugger/gui/CartCMWidget.cxx b/src/debugger/gui/CartCMWidget.cxx index 4a3f0211b..ef7615172 100644 --- a/src/debugger/gui/CartCMWidget.cxx +++ b/src/debugger/gui/CartCMWidget.cxx @@ -153,7 +153,7 @@ void CartridgeCMWidget::saveOldState() myOldState.column = myCart.column(); myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); myOldState.bank = myCart.getBank(); diff --git a/src/debugger/gui/CartCTYWidget.cxx b/src/debugger/gui/CartCTYWidget.cxx index ae5bc5964..8ccf50dc9 100644 --- a/src/debugger/gui/CartCTYWidget.cxx +++ b/src/debugger/gui/CartCTYWidget.cxx @@ -60,10 +60,9 @@ void CartridgeCTYWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } + myOldState.bank = myCart.getBank(); } diff --git a/src/debugger/gui/CartCVPlusWidget.cxx b/src/debugger/gui/CartCVPlusWidget.cxx index efa8a3294..50965f016 100644 --- a/src/debugger/gui/CartCVPlusWidget.cxx +++ b/src/debugger/gui/CartCVPlusWidget.cxx @@ -90,7 +90,8 @@ string CartridgeCVPlusWidget::bankState() void CartridgeCVPlusWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) + + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); myOldState.bank = myCart.getBank(); diff --git a/src/debugger/gui/CartCVWidget.cxx b/src/debugger/gui/CartCVWidget.cxx index 1ef881407..b8092675a 100644 --- a/src/debugger/gui/CartCVWidget.cxx +++ b/src/debugger/gui/CartCVWidget.cxx @@ -46,7 +46,8 @@ CartridgeCVWidget::CartridgeCVWidget( void CartridgeCVWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) + + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); } diff --git a/src/debugger/gui/CartDASHWidget.cxx b/src/debugger/gui/CartDASHWidget.cxx index 1670193ad..5b940180c 100644 --- a/src/debugger/gui/CartDASHWidget.cxx +++ b/src/debugger/gui/CartDASHWidget.cxx @@ -122,7 +122,7 @@ void CartridgeDASHWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); } diff --git a/src/debugger/gui/CartDFSCWidget.cxx b/src/debugger/gui/CartDFSCWidget.cxx index 883524b99..fd672f1d1 100644 --- a/src/debugger/gui/CartDFSCWidget.cxx +++ b/src/debugger/gui/CartDFSCWidget.cxx @@ -95,10 +95,8 @@ void CartridgeDFSCWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } myOldState.bank = myCart.getBank(); } diff --git a/src/debugger/gui/CartE78KWidget.hxx b/src/debugger/gui/CartE78KWidget.hxx index 00ce6bf67..436639a28 100644 --- a/src/debugger/gui/CartE78KWidget.hxx +++ b/src/debugger/gui/CartE78KWidget.hxx @@ -30,8 +30,8 @@ class CartridgeE78KWidget : public CartridgeMNetworkWidget virtual ~CartridgeE78KWidget() = default; protected: - const char* getSpotLower(int idx); - const char* getSpotUpper(int idx); + const char* getSpotLower(int idx) override; + const char* getSpotUpper(int idx) override; private: // Following constructors and assignment operators not supported diff --git a/src/debugger/gui/CartE7Widget.hxx b/src/debugger/gui/CartE7Widget.hxx index d2d1642ec..661e76906 100644 --- a/src/debugger/gui/CartE7Widget.hxx +++ b/src/debugger/gui/CartE7Widget.hxx @@ -30,8 +30,8 @@ class CartridgeE7Widget : public CartridgeMNetworkWidget virtual ~CartridgeE7Widget() = default; protected: - const char* getSpotLower(int idx); - const char* getSpotUpper(int idx); + const char* getSpotLower(int idx) override; + const char* getSpotUpper(int idx) override; private: // Following constructors and assignment operators not supported diff --git a/src/debugger/gui/CartEFSCWidget.cxx b/src/debugger/gui/CartEFSCWidget.cxx index 724ea0799..89dbb65f6 100644 --- a/src/debugger/gui/CartEFSCWidget.cxx +++ b/src/debugger/gui/CartEFSCWidget.cxx @@ -79,10 +79,8 @@ void CartridgeEFSCWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } myOldState.bank = myCart.getBank(); } diff --git a/src/debugger/gui/CartF4SCWidget.cxx b/src/debugger/gui/CartF4SCWidget.cxx index 248edf9bb..40924aafa 100644 --- a/src/debugger/gui/CartF4SCWidget.cxx +++ b/src/debugger/gui/CartF4SCWidget.cxx @@ -70,10 +70,9 @@ void CartridgeF4SCWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } + myOldState.bank = myCart.getBank(); } diff --git a/src/debugger/gui/CartF6SCWidget.cxx b/src/debugger/gui/CartF6SCWidget.cxx index d26a9ef2c..93808ea13 100644 --- a/src/debugger/gui/CartF6SCWidget.cxx +++ b/src/debugger/gui/CartF6SCWidget.cxx @@ -66,10 +66,8 @@ void CartridgeF6SCWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } myOldState.bank = myCart.getBank(); } diff --git a/src/debugger/gui/CartF8SCWidget.cxx b/src/debugger/gui/CartF8SCWidget.cxx index 3ed5f541d..de10cd06e 100644 --- a/src/debugger/gui/CartF8SCWidget.cxx +++ b/src/debugger/gui/CartF8SCWidget.cxx @@ -64,10 +64,8 @@ void CartridgeF8SCWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } myOldState.bank = myCart.getBank(); } diff --git a/src/debugger/gui/CartFA2Widget.cxx b/src/debugger/gui/CartFA2Widget.cxx index 806375d25..188c5fd9c 100644 --- a/src/debugger/gui/CartFA2Widget.cxx +++ b/src/debugger/gui/CartFA2Widget.cxx @@ -102,10 +102,8 @@ void CartridgeFA2Widget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } myOldState.bank = myCart.getBank(); } diff --git a/src/debugger/gui/CartFAWidget.cxx b/src/debugger/gui/CartFAWidget.cxx index fe9b37753..c41d418e7 100644 --- a/src/debugger/gui/CartFAWidget.cxx +++ b/src/debugger/gui/CartFAWidget.cxx @@ -65,10 +65,8 @@ void CartridgeFAWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize();i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } myOldState.bank = myCart.getBank(); } diff --git a/src/debugger/gui/CartMNetworkWidget.cxx b/src/debugger/gui/CartMNetworkWidget.cxx index df50a1740..984d73e04 100644 --- a/src/debugger/gui/CartMNetworkWidget.cxx +++ b/src/debugger/gui/CartMNetworkWidget.cxx @@ -68,10 +68,8 @@ void CartridgeMNetworkWidget::saveOldState() { myOldState.internalram.clear(); - for(uInt32 i = 0; i < this->internalRamSize(); i++) - { + for(uInt32 i = 0; i < internalRamSize(); ++i) myOldState.internalram.push_back(myCart.myRAM[i]); - } myOldState.lowerBank = myCart.myCurrentSlice[0]; myOldState.upperBank = myCart.myCurrentRAM; diff --git a/src/debugger/gui/CartRamWidget.cxx b/src/debugger/gui/CartRamWidget.cxx index 60b7d8901..47e59263d 100644 --- a/src/debugger/gui/CartRamWidget.cxx +++ b/src/debugger/gui/CartRamWidget.cxx @@ -148,7 +148,7 @@ void CartRamWidget::InternalRamWidget::fillList(uInt32 start, uInt32 size, const ByteArray& oldRam = myCart.internalRamOld(start, size); const ByteArray& currRam = myCart.internalRamCurrent(start, size); - for(uInt32 i = 0; i < size; i++) + for(uInt32 i = 0; i < size; ++i) { alist.push_back(i+start); vlist.push_back(currRam[i]); diff --git a/src/debugger/gui/CartRamWidget.hxx b/src/debugger/gui/CartRamWidget.hxx index ef319ce30..27a4e9734 100644 --- a/src/debugger/gui/CartRamWidget.hxx +++ b/src/debugger/gui/CartRamWidget.hxx @@ -69,14 +69,14 @@ class CartRamWidget : public Widget, public CommandSender virtual ~InternalRamWidget(); private: - uInt8 getValue(int addr) const; - void setValue(int addr, uInt8 value); - string getLabel(int addr) const; + uInt8 getValue(int addr) const override; + void setValue(int addr, uInt8 value) override; + string getLabel(int addr) const override; void fillList(uInt32 start, uInt32 size, IntArray& alist, - IntArray& vlist, BoolArray& changed) const; - uInt32 readPort(uInt32 start) const; - const ByteArray& currentRam(uInt32 start) const; + IntArray& vlist, BoolArray& changed) const override; + uInt32 readPort(uInt32 start) const override; + const ByteArray& currentRam(uInt32 start) const override; private: CartDebugWidget& myCart; diff --git a/src/debugger/gui/PointingDeviceWidget.cxx b/src/debugger/gui/PointingDeviceWidget.cxx index 250b0f30e..33092b480 100644 --- a/src/debugger/gui/PointingDeviceWidget.cxx +++ b/src/debugger/gui/PointingDeviceWidget.cxx @@ -40,7 +40,7 @@ PointingDeviceWidget::PointingDeviceWidget(GuiObject* boss, const GUI::Font& fon myGrayValueV->setEditable(false); ypos += myGrayValueV->getHeight() + 2; - + myGrayUp = new ButtonWidget(boss, font, xMid, ypos, 17, "+", kTBUp); myGrayUp->setTarget(this); @@ -81,29 +81,29 @@ void PointingDeviceWidget::loadConfig() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void PointingDeviceWidget::handleCommand(CommandSender* sender, int cmd, int data, int id) { - // since the PointingDevice uses its own, internal state (not reading the controller), + // since the PointingDevice uses its own, internal state (not reading the controller), // we have to communicate directly with it PointingDevice& pDev = static_cast(myController); switch(cmd) { case kTBLeft: - pDev.myCountH++; + ++pDev.myCountH; pDev.myTrackBallLeft = false; - setGrayCodeH(); + setGrayCodeH(); break; case kTBRight: - pDev.myCountH--; + --pDev.myCountH; pDev.myTrackBallLeft = true; setGrayCodeH(); break; case kTBUp: - pDev.myCountV++; + ++pDev.myCountV; pDev.myTrackBallDown = true; setGrayCodeV(); break; case kTBDown: - pDev.myCountV--; + --pDev.myCountV; pDev.myTrackBallDown = false; setGrayCodeV(); break; @@ -117,7 +117,7 @@ void PointingDeviceWidget::handleCommand(CommandSender* sender, int cmd, int dat void PointingDeviceWidget::setGrayCodeH() { PointingDevice& pDev = static_cast(myController); - + pDev.myCountH &= 0b11; setValue(myGrayValueH, pDev.myCountH, pDev.myTrackBallLeft); } @@ -126,7 +126,7 @@ void PointingDeviceWidget::setGrayCodeH() void PointingDeviceWidget::setGrayCodeV() { PointingDevice& pDev = static_cast(myController); - + pDev.myCountV &= 0b11; setValue(myGrayValueV, pDev.myCountV, !pDev.myTrackBallDown); } diff --git a/src/debugger/gui/PromptWidget.cxx b/src/debugger/gui/PromptWidget.cxx index 653c98636..f0af913f9 100644 --- a/src/debugger/gui/PromptWidget.cxx +++ b/src/debugger/gui/PromptWidget.cxx @@ -523,7 +523,7 @@ void PromptWidget::loadConfig() // fill the history from the saved breaks, traps and watches commands StringList history; print(instance().debugger().autoExec(&history)); - for(uInt32 i = 0; i < history.size(); i++) + for(uInt32 i = 0; i < history.size(); ++i) { addToHistory(history[i].c_str()); } @@ -931,9 +931,9 @@ bool PromptWidget::saveBuffer(const FilesystemNode& file) string PromptWidget::getCompletionPrefix(const StringList& completions) { // Find the number of characters matching for each of the completions provided - for(uInt32 len = 1;; len++) + for(uInt32 len = 1;; ++len) { - for(uInt32 i = 0; i < completions.size(); i++) + for(uInt32 i = 0; i < completions.size(); ++i) { string s1 = completions[i]; if(s1.length() < len) @@ -942,7 +942,7 @@ string PromptWidget::getCompletionPrefix(const StringList& completions) } string find = s1.substr(0, len); - for(uInt32 j = i + 1; j < completions.size(); j++) + for(uInt32 j = i + 1; j < completions.size(); ++j) { if(!BSPF::startsWithIgnoreCase(completions[j], find)) return s1.substr(0, len - 1); diff --git a/src/debugger/gui/RiotRamWidget.cxx b/src/debugger/gui/RiotRamWidget.cxx index 6ad4174b4..a14054be4 100644 --- a/src/debugger/gui/RiotRamWidget.cxx +++ b/src/debugger/gui/RiotRamWidget.cxx @@ -56,7 +56,7 @@ void RiotRamWidget::fillList(uInt32 start, uInt32 size, IntArray& alist, const CartState& state = static_cast(myDbg.getState()); const CartState& oldstate = static_cast(myDbg.getOldState()); - for(uInt32 i = 0; i < size; i++) + for(uInt32 i = 0; i < size; ++i) { alist.push_back(i+start); vlist.push_back(state.ram[i]); diff --git a/src/debugger/gui/RiotRamWidget.hxx b/src/debugger/gui/RiotRamWidget.hxx index ea0a93e38..7f24b09a1 100644 --- a/src/debugger/gui/RiotRamWidget.hxx +++ b/src/debugger/gui/RiotRamWidget.hxx @@ -37,14 +37,14 @@ class RiotRamWidget : public RamWidget virtual ~RiotRamWidget() = default; private: - uInt8 getValue(int addr) const; - void setValue(int addr, uInt8 value); - string getLabel(int addr) const; + uInt8 getValue(int addr) const override; + void setValue(int addr, uInt8 value) override; + string getLabel(int addr) const override; void fillList(uInt32 start, uInt32 size, IntArray& alist, - IntArray& vlist, BoolArray& changed) const; - uInt32 readPort(uInt32 start) const; - const ByteArray& currentRam(uInt32 start) const; + IntArray& vlist, BoolArray& changed) const override; + uInt32 readPort(uInt32 start) const override; + const ByteArray& currentRam(uInt32 start) const override; private: CartDebug& myDbg; diff --git a/src/debugger/gui/TiaWidget.cxx b/src/debugger/gui/TiaWidget.cxx index 40a954b3d..f91cd9f42 100644 --- a/src/debugger/gui/TiaWidget.cxx +++ b/src/debugger/gui/TiaWidget.cxx @@ -941,7 +941,7 @@ void TiaWidget::loadConfig() // Color registers alist.clear(); vlist.clear(); changed.clear(); - for(uInt32 i = 0; i < 4; i++) + for(uInt32 i = 0; i < 4; ++i) { alist.push_back(i); vlist.push_back(state.coluRegs[i]); diff --git a/src/emucore/Cart3EPlus.cxx b/src/emucore/Cart3EPlus.cxx index 8fce34ea5..de2ead52e 100644 --- a/src/emucore/Cart3EPlus.cxx +++ b/src/emucore/Cart3EPlus.cxx @@ -235,7 +235,7 @@ void Cartridge3EPlus::bankROMSlot(uInt16 bank) void Cartridge3EPlus::initializeBankState() { // Switch in each 512b slot - for(uInt32 b = 0; b < 8; b++) + for(uInt32 b = 0; b < 8; ++b) { if(bankInUse[b] == BANK_UNDEFINED) { diff --git a/src/emucore/CartBUS.cxx b/src/emucore/CartBUS.cxx index 4578be1f3..c889d8066 100644 --- a/src/emucore/CartBUS.cxx +++ b/src/emucore/CartBUS.cxx @@ -212,8 +212,8 @@ uInt8 CartridgeBUS::peek(uInt16 address) uInt32 pointer; uInt8 value; - myFastJumpActive--; - myJMPoperandAddress++; + --myFastJumpActive; + ++myJMPoperandAddress; pointer = getDatastreamPointer(JUMPSTREAM); value = myDisplayImage[ pointer >> 20 ]; diff --git a/src/emucore/CartCDF.cxx b/src/emucore/CartCDF.cxx index c6eacab33..41ed823d4 100644 --- a/src/emucore/CartCDF.cxx +++ b/src/emucore/CartCDF.cxx @@ -196,8 +196,8 @@ uInt8 CartridgeCDF::peek(uInt16 address) uInt32 pointer; uInt8 value; - myFastJumpActive--; - myJMPoperandAddress++; + --myFastJumpActive; + ++myJMPoperandAddress; pointer = getDatastreamPointer(JUMPSTREAM); value = myDisplayImage[ pointer >> 20 ]; diff --git a/src/emucore/CartDASH.cxx b/src/emucore/CartDASH.cxx index 9ea4876c4..fcd94d95b 100644 --- a/src/emucore/CartDASH.cxx +++ b/src/emucore/CartDASH.cxx @@ -44,7 +44,7 @@ void CartridgeDASH::reset() // Initialise bank values for all ROM/RAM access // This is used to reverse-lookup from address to bank location - for(uInt32 b = 0; b < 8; b++) + for(uInt32 b = 0; b < 8; ++b) { bankInUse[b] = BANK_UNDEFINED; // bank is undefined and inaccessible! segmentInUse[b/2] = BANK_UNDEFINED; @@ -69,7 +69,7 @@ void CartridgeDASH::install(System& system) // Initialise bank values for all ROM/RAM access // This is used to reverse-lookup from address to bank location - for (uInt32 b = 0; b < 8; b++) + for (uInt32 b = 0; b < 8; ++b) { bankInUse[b] = BANK_UNDEFINED; // bank is undefined and inaccessible! segmentInUse[b/2] = BANK_UNDEFINED; @@ -240,7 +240,7 @@ void CartridgeDASH::bankROMSlot(uInt16 bank) void CartridgeDASH::initializeBankState() { // Switch in each 512b slot - for(uInt32 b = 0; b < 8; b++) + for(uInt32 b = 0; b < 8; ++b) { if(bankInUse[b] == BANK_UNDEFINED) { diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index a2e18970b..c7d132619 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -639,7 +639,7 @@ void Console::changeYStart(int direction) myOSystem.frameBuffer().showMessage("YStart at maximum"); return; } - ystart++; + ++ystart; } else if(direction == -1) // decrease YStart { @@ -654,7 +654,7 @@ void Console::changeYStart(int direction) return; } - ystart--; + --ystart; } else return; @@ -689,7 +689,7 @@ void Console::changeHeight(int direction) if(direction == +1) // increase Height { - height++; + ++height; if(height > TIAConstants::maxViewableHeight || height > dheight) { myOSystem.frameBuffer().showMessage("Height at maximum"); @@ -698,7 +698,7 @@ void Console::changeHeight(int direction) } else if(direction == -1) // decrease Height { - height--; + --height; if(height < TIAConstants::minViewableHeight) height = 0; } else diff --git a/src/emucore/Control.hxx b/src/emucore/Control.hxx index 6fe17004a..999321331 100644 --- a/src/emucore/Control.hxx +++ b/src/emucore/Control.hxx @@ -62,7 +62,7 @@ class System; class Controller : public Serializable { /** - Riot debug class needs special access to the underlying controller state + Various classes that need special access to the underlying controller state */ friend class M6532; friend class RiotDebug; diff --git a/src/emucore/Driving.cxx b/src/emucore/Driving.cxx index 5ea913efa..16bf51939 100644 --- a/src/emucore/Driving.cxx +++ b/src/emucore/Driving.cxx @@ -61,15 +61,15 @@ void Driving::update() // Digital events (from keyboard or joystick hats & buttons) myDigitalPinState[Six] = (myEvent.get(myFireEvent) == 0); int d_axis = myEvent.get(myXAxisValue); - if(myEvent.get(myCCWEvent) != 0 || d_axis < -16384) myCounter--; - else if(myEvent.get(myCWEvent) != 0 || d_axis > 16384) myCounter++; + if(myEvent.get(myCCWEvent) != 0 || d_axis < -16384) --myCounter; + else if(myEvent.get(myCWEvent) != 0 || d_axis > 16384) ++myCounter; // Mouse motion and button events if(myControlID > -1) { int m_axis = myEvent.get(Event::MouseAxisXValue); - if(m_axis < -2) myCounter--; - else if(m_axis > 2) myCounter++; + if(m_axis < -2) --myCounter; + else if(m_axis > 2) ++myCounter; if(myEvent.get(Event::MouseButtonLeftValue) || myEvent.get(Event::MouseButtonRightValue)) myDigitalPinState[Six] = false; @@ -81,8 +81,8 @@ void Driving::update() if(myControlIDX > -1) { int m_axis = myEvent.get(Event::MouseAxisXValue); - if(m_axis < -2) myCounter--; - else if(m_axis > 2) myCounter++; + if(m_axis < -2) --myCounter; + else if(m_axis > 2) ++myCounter; if(myEvent.get(Event::MouseButtonLeftValue)) myDigitalPinState[Six] = false; } @@ -114,7 +114,7 @@ void Driving::update() myGrayIndex = 1; // down else if(yaxis >= 16384-4096) myGrayIndex = 2; // up + down - else if(yaxis < 16384-4096) + else /* if(yaxis < 16384-4096) */ myGrayIndex = 0; // no movement } diff --git a/src/gui/Font.cxx b/src/gui/Font.cxx index 0593ead3e..02be95d4c 100644 --- a/src/gui/Font.cxx +++ b/src/gui/Font.cxx @@ -23,7 +23,7 @@ namespace GUI { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Font::Font(FontDesc desc) +Font::Font(const FontDesc& desc) : myFontDesc(desc) { } diff --git a/src/gui/Font.hxx b/src/gui/Font.hxx index c253774c0..5d78fdf67 100644 --- a/src/gui/Font.hxx +++ b/src/gui/Font.hxx @@ -55,7 +55,7 @@ namespace GUI { class Font { public: - Font(FontDesc desc); + Font(const FontDesc& desc); const FontDesc& desc() const { return myFontDesc; } From 7e4dc350f0de98308b81e50bff95ce36020b5e3e Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 28 Aug 2018 16:19:50 -0230 Subject: [PATCH 063/126] More fixes for suggestions from cppcheck. --- src/common/FSNodeZIP.hxx | 26 +++++----- src/common/tv_filters/AtariNTSC.cxx | 38 +++++++------- src/common/tv_filters/NTSCFilter.cxx | 2 +- src/debugger/DiStella.cxx | 6 +-- src/emucore/CartDPCPlus.cxx | 2 +- src/emucore/Driving.cxx | 4 +- src/emucore/FrameBuffer.cxx | 8 +-- src/emucore/KidVid.cxx | 8 +-- src/emucore/M6502.cxx | 4 +- src/emucore/MD5.cxx | 4 +- src/emucore/MT24LC256.cxx | 4 +- src/emucore/PointingDevice.cxx | 8 +-- src/emucore/TIASurface.cxx | 4 +- src/emucore/Thumbulator.cxx | 52 +++++++++---------- src/emucore/tia/Audio.cxx | 4 +- src/emucore/tia/AudioChannel.cxx | 2 +- src/emucore/tia/Ball.cxx | 2 +- src/emucore/tia/DelayQueue.hxx | 8 +-- src/emucore/tia/DelayQueueIteratorImpl.hxx | 2 +- src/emucore/tia/DelayQueueMember.hxx | 6 +-- src/emucore/tia/Missile.cxx | 4 +- src/emucore/tia/Player.cxx | 8 +-- src/emucore/tia/TIA.cxx | 14 ++--- .../frame-manager/AbstractFrameManager.cxx | 4 +- .../tia/frame-manager/FrameLayoutDetector.cxx | 6 +-- .../tia/frame-manager/FrameManager.cxx | 6 +-- .../tia/frame-manager/YStartDetector.cxx | 10 ++-- src/gui/DeveloperDialog.cxx | 2 +- src/gui/HelpDialog.cxx | 8 +-- src/gui/RadioButtonWidget.cxx | 5 +- src/gui/Rect.hxx | 6 +-- src/gui/RomAuditDialog.cxx | 2 +- 32 files changed, 134 insertions(+), 135 deletions(-) diff --git a/src/common/FSNodeZIP.hxx b/src/common/FSNodeZIP.hxx index 56d83d378..74eac1c4f 100644 --- a/src/common/FSNodeZIP.hxx +++ b/src/common/FSNodeZIP.hxx @@ -45,25 +45,25 @@ class FilesystemNodeZIP : public AbstractFSNode */ FilesystemNodeZIP(const string& path); - bool exists() const { return _realNode && _realNode->exists(); } - const string& getName() const { return _name; } - const string& getPath() const { return _path; } - string getShortPath() const { return _shortPath; } - bool isDirectory() const { return _isDirectory; } - bool isFile() const { return _isFile; } - bool isReadable() const { return _realNode && _realNode->isReadable(); } - bool isWritable() const { return false; } + bool exists() const override { return _realNode && _realNode->exists(); } + const string& getName() const override { return _name; } + const string& getPath() const override { return _path; } + string getShortPath() const override { return _shortPath; } + bool isDirectory() const override { return _isDirectory; } + bool isFile() const override { return _isFile; } + bool isReadable() const override { return _realNode && _realNode->isReadable(); } + bool isWritable() const override { return false; } ////////////////////////////////////////////////////////// // For now, ZIP files cannot be modified in any way - bool makeDir() { return false; } - bool rename(const string& newfile) { return false; } + bool makeDir() override { return false; } + bool rename(const string& newfile) override { return false; } ////////////////////////////////////////////////////////// - bool getChildren(AbstractFSList& list, ListMode mode, bool hidden) const; - AbstractFSNodePtr getParent() const; + bool getChildren(AbstractFSList& list, ListMode mode, bool hidden) const override; + AbstractFSNodePtr getParent() const override; - uInt32 read(BytePtr& image) const; + uInt32 read(BytePtr& image) const override; private: FilesystemNodeZIP(const string& zipfile, const string& virtualpath, diff --git a/src/common/tv_filters/AtariNTSC.cxx b/src/common/tv_filters/AtariNTSC.cxx index 81dd03b36..2f94024ab 100644 --- a/src/common/tv_filters/AtariNTSC.cxx +++ b/src/common/tv_filters/AtariNTSC.cxx @@ -257,38 +257,38 @@ void AtariNTSC::renderWithPhosphorThread(const uInt8* atari_in, const uInt32 in_ { // Store back into displayed frame buffer (for next frame) rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; } // finish final pixels rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; #if 0 rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; rgb_in[bufofs] = getRGBPhosphor(out[bufofs], rgb_in[bufofs]); - bufofs++; + ++bufofs; #endif atari_in += in_width; @@ -334,9 +334,9 @@ void AtariNTSC::init(init_t& impl, const Setup& setup) initFilters(impl, setup); /* generate gamma table */ - if ( gamma_size > 1 ) + if (true) /* was (gamma_size > 1) */ { - float const to_float = 1.0f / (gamma_size - (gamma_size > 1)); + float const to_float = 1.0f / (gamma_size - 1/*(gamma_size > 1)*/); float const gamma = 1.1333f - float(setup.gamma) * 0.5f; /* match common PC's 2.2 gamma to TV's 2.65 gamma */ int i; @@ -369,8 +369,10 @@ void AtariNTSC::init(init_t& impl, const Setup& setup) *out++ = i * s + q * c; } while ( --n2 ); + #if 0 // burst_count is always 0 if ( burst_count > 1 ) ROTATE_IQ( s, c, 0.866025f, -0.5f ); /* +120 degrees */ + #endif } while ( --n ); } @@ -537,7 +539,7 @@ void AtariNTSC::genKernel(init_t& impl, float y, float i, float q, uInt32* out) } } } - while ( alignment_count > 1 && --alignment_remain ); + while ( /*alignment_count > 1 && */ --alignment_remain ); } while ( --burst_remain ); } diff --git a/src/common/tv_filters/NTSCFilter.cxx b/src/common/tv_filters/NTSCFilter.cxx index 519eeddda..ab6bc6f17 100644 --- a/src/common/tv_filters/NTSCFilter.cxx +++ b/src/common/tv_filters/NTSCFilter.cxx @@ -100,7 +100,7 @@ string NTSCFilter::setPreviousAdjustable() return "'Custom' TV mode not selected"; if(myCurrentAdjustable == 0) myCurrentAdjustable = 9; - else myCurrentAdjustable--; + else --myCurrentAdjustable; ostringstream buf; buf << "Custom adjustable '" << ourCustomAdjustables[myCurrentAdjustable].type << "' selected"; diff --git a/src/debugger/DiStella.cxx b/src/debugger/DiStella.cxx index 68a2a1370..fb61b3fd9 100644 --- a/src/debugger/DiStella.cxx +++ b/src/debugger/DiStella.cxx @@ -750,7 +750,7 @@ void DiStella::disasmFromAddress(uInt32 distart) break; case IMMEDIATE: - myPC++; + ++myPC; break; case ABSOLUTE_X: @@ -764,11 +764,11 @@ void DiStella::disasmFromAddress(uInt32 distart) break; case INDIRECT_X: - myPC++; + ++myPC; break; case INDIRECT_Y: - myPC++; + ++myPC; break; case ZERO_PAGE_X: diff --git a/src/emucore/CartDPCPlus.cxx b/src/emucore/CartDPCPlus.cxx index 47d1c1d06..1d8f67598 100644 --- a/src/emucore/CartDPCPlus.cxx +++ b/src/emucore/CartDPCPlus.cxx @@ -27,6 +27,7 @@ CartridgeDPCPlus::CartridgeDPCPlus(const BytePtr& image, uInt32 size, const Settings& settings) : Cartridge(settings), + mySize(std::min(size, 32768u)), myFastFetch(false), myLDAimmediate(false), myParameterPointer(0), @@ -37,7 +38,6 @@ CartridgeDPCPlus::CartridgeDPCPlus(const BytePtr& image, uInt32 size, { // Image is always 32K, but in the case of ROM > 29K, the image is // copied to the end of the buffer - mySize = std::min(size, 32768u); if(mySize < 32768u) memset(myImage, 0, 32768); memcpy(myImage + (32768u - mySize), image.get(), size); diff --git a/src/emucore/Driving.cxx b/src/emucore/Driving.cxx index 16bf51939..e209b723f 100644 --- a/src/emucore/Driving.cxx +++ b/src/emucore/Driving.cxx @@ -89,8 +89,8 @@ void Driving::update() if(myControlIDY > -1) { int m_axis = myEvent.get(Event::MouseAxisYValue); - if(m_axis < -2) myCounter--; - else if(m_axis > 2) myCounter++; + if(m_axis < -2) --myCounter; + else if(m_axis > 2) ++myCounter; if(myEvent.get(Event::MouseButtonRightValue)) myDigitalPinState[Six] = false; } diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index 4799f61c9..dccc2225f 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -166,7 +166,7 @@ void FrameBuffer::setUIPalette() FBInitStatus FrameBuffer::createDisplay(const string& title, uInt32 width, uInt32 height) { - myInitializedCount++; + ++myInitializedCount; myScreenTitle = title; // A 'windowed' system is defined as one where the window size can be @@ -1093,7 +1093,7 @@ uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = { 0xc9af7c, 0xf0f0cf, 0xd55941, 0xc80000, // UI elements 0xac3410, 0xd55941, 0x686868, 0xdccfa5, 0xf0f0cf, 0xf0f0cf, // buttons 0xac3410, // checkbox - 0xac3410, 0xd55941, // scrollbar + 0xac3410, 0xd55941, // scrollbar 0xc80000, 0x00ff00, 0xc8c8ff, 0xc80000, // debugger 0xac3410, 0xd55941, 0xdccfa5, 0xf0f0cf, 0xa38c61, // slider 0xffffff, 0xac3410, 0xf0f0cf, 0x686868, 0xdccfa5 // other @@ -1104,7 +1104,7 @@ uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = { 0x000000, 0x000000, 0x00ff00, 0xc80000, // UI elements 0x000000, 0x000000, 0x686868, 0x00ff00, 0x20a020, 0x00ff00, // buttons 0x20a020, // checkbox - 0x20a020, 0x00ff00, // scrollbar + 0x20a020, 0x00ff00, // scrollbar 0xc80000, 0x00ff00, 0xc8c8ff, 0xc80000, // debugger 0x20a020, 0x00ff00, 0x404040, 0x686868, 0x404040, // slider 0x00ff00, 0x20a020, 0x000000, 0x686868, 0x404040 // other @@ -1115,7 +1115,7 @@ uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = { 0xf0f0f0, 0xffffff, 0x0078d7, 0x0f0f0f, // UI elements 0xe1e1e1, 0xe5f1fb, 0x808080, 0x0078d7, 0x000000, 0x000000, // buttons 0x333333, // checkbox - 0xc0c0c0, 0x808080, // scrollbar + 0xc0c0c0, 0x808080, // scrollbar 0xffc0c0, 0x000000, 0xe00000, 0xc00000, // debugger 0x333333, 0x0078d7, 0xc0c0c0, 0xffffff, 0xc0c0c0, // slider 0xBDDEF9| 0xe1e1e1 | 0xffffff 0xffffff, 0x333333, 0xf0f0f0, 0x808080, 0xc0c0c0 // other diff --git a/src/emucore/KidVid.cxx b/src/emucore/KidVid.cxx index f9e387140..2d44259c8 100644 --- a/src/emucore/KidVid.cxx +++ b/src/emucore/KidVid.cxx @@ -116,8 +116,8 @@ cerr << "myTape = " << myTape << endl; IOPortA = (IOPortA & 0xf7) | (((ourKVData[myIdx >> 3] << (myIdx & 0x07)) & 0x80) >> 4); // increase to next bit - myIdx++; - myBlockIdx--; + ++myIdx; + --myBlockIdx; // increase to next block (byte) if(myBlockIdx == 0) @@ -147,7 +147,7 @@ cerr << "myTape = " << myTape << endl; } } } - myBlock++; + ++myBlock; myBlockIdx = KVBLOCKBITS; } } @@ -237,7 +237,7 @@ void KidVid::setNextSong() ; // fseek(mySampleFile, ourSongStart[temp], SEEK_SET); #endif - myFilePointer++; + ++myFilePointer; myTapeBusy = true; } else diff --git a/src/emucore/M6502.cxx b/src/emucore/M6502.cxx index c3755086b..d1b2cea3b 100644 --- a/src/emucore/M6502.cxx +++ b/src/emucore/M6502.cxx @@ -131,7 +131,7 @@ inline uInt8 M6502::peek(uInt16 address, uInt8 flags) // TODO - move this logic directly into CartAR if(address != myLastAddress) { - myNumberOfDistinctAccesses++; + ++myNumberOfDistinctAccesses; myLastAddress = address; } //////////////////////////////////////////////// @@ -168,7 +168,7 @@ inline void M6502::poke(uInt16 address, uInt8 value, uInt8 flags) // TODO - move this logic directly into CartAR if(address != myLastAddress) { - myNumberOfDistinctAccesses++; + ++myNumberOfDistinctAccesses; myLastAddress = address; } //////////////////////////////////////////////// diff --git a/src/emucore/MD5.cxx b/src/emucore/MD5.cxx index 600f42ed0..92dda5f0e 100644 --- a/src/emucore/MD5.cxx +++ b/src/emucore/MD5.cxx @@ -287,7 +287,7 @@ static void Encode(uInt8* output, uInt32* input, uInt32 len) { uInt32 i, j; - for (i = 0, j = 0; j < len; i++, j += 4) { + for (i = 0, j = 0; j < len; ++i, j += 4) { output[j] = uInt8(input[i] & 0xff); output[j+1] = uInt8((input[i] >> 8) & 0xff); output[j+2] = uInt8((input[i] >> 16) & 0xff); @@ -301,7 +301,7 @@ static void Decode(uInt32* output, const uInt8* input, uInt32 len) { uInt32 i, j; - for (i = 0, j = 0; j < len; i++, j += 4) + for (i = 0, j = 0; j < len; ++i, j += 4) output[i] = (uInt32(input[j])) | ((uInt32(input[j+1])) << 8) | ((uInt32(input[j+2])) << 16) | ((uInt32(input[j+3])) << 24); } diff --git a/src/emucore/MT24LC256.cxx b/src/emucore/MT24LC256.cxx index 33bb6786e..f20c85795 100644 --- a/src/emucore/MT24LC256.cxx +++ b/src/emucore/MT24LC256.cxx @@ -164,7 +164,7 @@ void MT24LC256::eraseAll() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void MT24LC256::eraseCurrent() { - for(uInt32 page = 0; page < PAGE_NUM; page++) + for(uInt32 page = 0; page < PAGE_NUM; ++page) { if(myPageHit[page]) { @@ -369,7 +369,7 @@ void MT24LC256::jpee_clock_fall() { jpee_state = 4; jpee_sdat = 1; - jpee_address++; + ++jpee_address; } break; diff --git a/src/emucore/PointingDevice.cxx b/src/emucore/PointingDevice.cxx index 62b68ae4d..346e06b5a 100644 --- a/src/emucore/PointingDevice.cxx +++ b/src/emucore/PointingDevice.cxx @@ -49,8 +49,8 @@ uInt8 PointingDevice::read() // Loop over all missed changes while(myScanCountH < scanline) { - if(myTrackBallLeft) myCountH--; - else myCountH++; + if(myTrackBallLeft) --myCountH; + else ++myCountH; // Define scanline of next change myScanCountH += myTrackBallLinesH; @@ -59,8 +59,8 @@ uInt8 PointingDevice::read() // Loop over all missed changes while(myScanCountV < scanline) { - if(myTrackBallDown) myCountV++; - else myCountV--; + if(myTrackBallDown) ++myCountV; + else --myCountV; // Define scanline of next change myScanCountV += myTrackBallLinesV; diff --git a/src/emucore/TIASurface.cxx b/src/emucore/TIASurface.cxx index 5929f9097..a4d31f83c 100644 --- a/src/emucore/TIASurface.cxx +++ b/src/emucore/TIASurface.cxx @@ -350,9 +350,9 @@ void TIASurface::render() { // Store back into displayed frame buffer (for next frame) rgbIn[bufofs] = out[pos++] = getRGBPhosphor(myPalette[tiaIn[bufofs]], rgbIn[bufofs]); - bufofs++; + ++bufofs; rgbIn[bufofs] = out[pos++] = getRGBPhosphor(myPalette[tiaIn[bufofs]], rgbIn[bufofs]); - bufofs++; + ++bufofs; } screenofsY += outPitch; } diff --git a/src/emucore/Thumbulator.cxx b/src/emucore/Thumbulator.cxx index 0e81d6015..5e79c289b 100644 --- a/src/emucore/Thumbulator.cxx +++ b/src/emucore/Thumbulator.cxx @@ -167,7 +167,7 @@ void Thumbulator::dump_regs() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 Thumbulator::fetch16(uInt32 addr) { - fetches++; + ++fetches; uInt32 data; switch(addr & 0xF0000000) @@ -229,7 +229,7 @@ void Thumbulator::write16(uInt32 addr, uInt32 data) if(addr & 1) fatalError("write16", addr, "abort - misaligned"); - writes++; + ++writes; DO_DBUG(statusMsg << "write16(" << Base::HEX8 << addr << "," << Base::HEX8 << data << ")" << endl); @@ -369,7 +369,7 @@ uInt32 Thumbulator::read16(uInt32 addr) if(addr & 1) fatalError("read16", addr, "abort - misaligned"); - reads++; + ++reads; switch(addr & 0xF0000000) { @@ -597,7 +597,7 @@ int Thumbulator::execute() write_register(15, pc); DO_DISS(statusMsg << Base::HEX8 << (pc-5) << ": " << Base::HEX4 << inst << " "); - instructions++; + ++instructions; //ADC if((inst & 0xFFC0) == 0x4140) @@ -609,7 +609,7 @@ int Thumbulator::execute() rb = read_register(rm); rc = ra + rb; if(cpsr & CPSR_C) - rc++; + ++rc; write_register(rd, rc); do_nflag(rc); do_zflag(rc); @@ -909,8 +909,8 @@ int Thumbulator::execute() case 0xA: //b ge N == V DO_DISS(statusMsg << "bge 0x" << Base::HEX8 << (rb-3) << endl); ra = 0; - if( (cpsr & CPSR_N) && (cpsr & CPSR_V) ) ra++; - if((!(cpsr & CPSR_N)) && (!(cpsr & CPSR_V))) ra++; + if( (cpsr & CPSR_N) && (cpsr & CPSR_V) ) ++ra; + if((!(cpsr & CPSR_N)) && (!(cpsr & CPSR_V))) ++ra; if(ra) write_register(15, rb); return 0; @@ -918,8 +918,8 @@ int Thumbulator::execute() case 0xB: //b lt N != V DO_DISS(statusMsg << "blt 0x" << Base::HEX8 << (rb-3) << endl); ra = 0; - if((!(cpsr & CPSR_N)) && (cpsr & CPSR_V)) ra++; - if((!(cpsr & CPSR_V)) && (cpsr & CPSR_N)) ra++; + if((!(cpsr & CPSR_N)) && (cpsr & CPSR_V)) ++ra; + if((!(cpsr & CPSR_V)) && (cpsr & CPSR_N)) ++ra; if(ra) write_register(15, rb); return 0; @@ -927,8 +927,8 @@ int Thumbulator::execute() case 0xC: //b gt Z==0 and N == V DO_DISS(statusMsg << "bgt 0x" << Base::HEX8 << (rb-3) << endl); ra = 0; - if( (cpsr & CPSR_N) && (cpsr & CPSR_V) ) ra++; - if((!(cpsr & CPSR_N)) && (!(cpsr & CPSR_V))) ra++; + if( (cpsr & CPSR_N) && (cpsr & CPSR_V) ) ++ra; + if((!(cpsr & CPSR_N)) && (!(cpsr & CPSR_V))) ++ra; if(cpsr & CPSR_Z) ra = 0; if(ra) write_register(15, rb); @@ -937,9 +937,9 @@ int Thumbulator::execute() case 0xD: //b le Z==1 or N != V DO_DISS(statusMsg << "ble 0x" << Base::HEX8 << (rb-3) << endl); ra = 0; - if((!(cpsr & CPSR_N)) && (cpsr & CPSR_V)) ra++; - if((!(cpsr & CPSR_V)) && (cpsr & CPSR_N)) ra++; - if(cpsr & CPSR_Z) ra++; + if((!(cpsr & CPSR_N)) && (cpsr & CPSR_V)) ++ra; + if((!(cpsr & CPSR_V)) && (cpsr & CPSR_N)) ++ra; + if(cpsr & CPSR_Z) ++ra; if(ra) write_register(15, rb); return 0; @@ -1394,7 +1394,7 @@ int Thumbulator::execute() rn = (inst >> 8) & 0x7; #if defined(THUMB_DISS) statusMsg << "ldmia r" << dec << rn << "!,{"; - for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,ra++) + for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,++ra) { if(inst&rb) { @@ -1406,7 +1406,7 @@ int Thumbulator::execute() statusMsg << "}" << endl; #endif sp = read_register(rn); - for(ra = 0, rb = 0x01; rb; rb = (rb << 1) & 0xFF, ra++) + for(ra = 0, rb = 0x01; rb; rb = (rb << 1) & 0xFF, ++ra) { if(inst & rb) { @@ -1816,7 +1816,7 @@ int Thumbulator::execute() { #if defined(THUMB_DISS) statusMsg << "pop {"; - for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,ra++) + for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,++ra) { if(inst&rb) { @@ -1834,7 +1834,7 @@ int Thumbulator::execute() #endif sp = read_register(13); - for(ra = 0, rb = 0x01; rb; rb = (rb << 1) & 0xFF, ra++) + for(ra = 0, rb = 0x01; rb; rb = (rb << 1) & 0xFF, ++ra) { if(inst & rb) { @@ -1858,7 +1858,7 @@ int Thumbulator::execute() { #if defined(THUMB_DISS) statusMsg << "push {"; - for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,ra++) + for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,++ra) { if(inst&rb) { @@ -1877,18 +1877,18 @@ int Thumbulator::execute() sp = read_register(13); //fprintf(stderr,"sp 0x%08X\n",sp); - for(ra = 0, rb = 0x01, rc = 0; rb; rb = (rb << 1) & 0xFF, ra++) + for(ra = 0, rb = 0x01, rc = 0; rb; rb = (rb << 1) & 0xFF, ++ra) { if(inst & rb) { - rc++; + ++rc; } } - if(inst & 0x100) rc++; + if(inst & 0x100) ++rc; rc <<= 2; sp -= rc; rd = sp; - for(ra = 0, rb = 0x01; rb; rb = (rb << 1) & 0xFF, ra++) + for(ra = 0, rb = 0x01; rb; rb = (rb << 1) & 0xFF, ++ra) { if(inst & rb) { @@ -1996,7 +1996,7 @@ int Thumbulator::execute() ra = read_register(rd); rb = read_register(rm); rc = ra - rb; - if(!(cpsr & CPSR_C)) rc--; + if(!(cpsr & CPSR_C)) --rc; write_register(rd, rc); do_nflag(rc); do_zflag(rc); @@ -2026,7 +2026,7 @@ int Thumbulator::execute() rn = (inst >> 8) & 0x7; #if defined(THUMB_DISS) statusMsg << "stmia r" << dec << rn << "!,{"; - for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,ra++) + for(ra=0,rb=0x01,rc=0;rb;rb=(rb<<1)&0xFF,++ra) { if(inst & rb) { @@ -2039,7 +2039,7 @@ int Thumbulator::execute() #endif sp = read_register(rn); - for(ra = 0, rb = 0x01; rb; rb = (rb << 1) & 0xFF, ra++) + for(ra = 0, rb = 0x01; rb; rb = (rb << 1) & 0xFF, ++ra) { if(inst & rb) { diff --git a/src/emucore/tia/Audio.cxx b/src/emucore/tia/Audio.cxx index 74658f8c5..123f69bd2 100644 --- a/src/emucore/tia/Audio.cxx +++ b/src/emucore/tia/Audio.cxx @@ -38,8 +38,8 @@ Audio::Audio() : myAudioQueue(nullptr), myCurrentFragment(nullptr) { - for (uInt8 i = 0; i <= 0x1e; i++) myMixingTableSum[i] = mixingTableEntry(i, 0x1e); - for (uInt8 i = 0; i <= 0x0f; i++) myMixingTableIndividual[i] = mixingTableEntry(i, 0x0f); + for (uInt8 i = 0; i <= 0x1e; ++i) myMixingTableSum[i] = mixingTableEntry(i, 0x1e); + for (uInt8 i = 0; i <= 0x0f; ++i) myMixingTableIndividual[i] = mixingTableEntry(i, 0x0f); reset(); } diff --git a/src/emucore/tia/AudioChannel.cxx b/src/emucore/tia/AudioChannel.cxx index cbe231796..78afd365b 100644 --- a/src/emucore/tia/AudioChannel.cxx +++ b/src/emucore/tia/AudioChannel.cxx @@ -75,7 +75,7 @@ void AudioChannel::phase0() if (myDivCounter == myAudf || myDivCounter == 0x1f) { myDivCounter = 0; } else { - myDivCounter++; + ++myDivCounter; } } diff --git a/src/emucore/tia/Ball.cxx b/src/emucore/tia/Ball.cxx index c6ff20eed..9dbeba26e 100644 --- a/src/emucore/tia/Ball.cxx +++ b/src/emucore/tia/Ball.cxx @@ -185,7 +185,7 @@ void Ball::tick(bool isReceivingMclock) myRenderCounter = Count::renderCounterOffset; uInt8 starfieldDelta = (myCounter + 160 - myLastMovementTick) % 4; - if (starfieldEffect && starfieldDelta == 3 && myWidth < 4) myRenderCounter++; + if (starfieldEffect && starfieldDelta == 3 && myWidth < 4) ++myRenderCounter; switch (starfieldDelta) { case 3: diff --git a/src/emucore/tia/DelayQueue.hxx b/src/emucore/tia/DelayQueue.hxx index d2d3ce069..c0cd63576 100644 --- a/src/emucore/tia/DelayQueue.hxx +++ b/src/emucore/tia/DelayQueue.hxx @@ -96,7 +96,7 @@ void DelayQueue::push(uInt8 address, uInt8 value, uInt8 delay) template void DelayQueue::reset() { - for (uInt8 i = 0; i < length; i++) + for (uInt8 i = 0; i < length; ++i) myMembers[i].clear(); myIndex = 0; @@ -110,7 +110,7 @@ void DelayQueue::execute(T executor) { DelayQueueMember& currentMember = myMembers[myIndex]; - for (uInt8 i = 0; i < currentMember.mySize; i++) { + for (uInt8 i = 0; i < currentMember.mySize; ++i) { executor(currentMember.myEntries[i].address, currentMember.myEntries[i].value); myIndices[currentMember.myEntries[i].address] = 0xFF; } @@ -128,7 +128,7 @@ bool DelayQueue::save(Serializer& out) const { out.putInt(length); - for (uInt8 i = 0; i < length; i++) + for (uInt8 i = 0; i < length; ++i) myMembers[i].save(out); out.putByte(myIndex); @@ -151,7 +151,7 @@ bool DelayQueue::load(Serializer& in) { if (in.getInt() != length) throw runtime_error("delay queue length mismatch"); - for (uInt8 i = 0; i < length; i++) + for (uInt8 i = 0; i < length; ++i) myMembers[i].load(in); myIndex = in.getByte(); diff --git a/src/emucore/tia/DelayQueueIteratorImpl.hxx b/src/emucore/tia/DelayQueueIteratorImpl.hxx index 4f4ab163c..9e7950535 100644 --- a/src/emucore/tia/DelayQueueIteratorImpl.hxx +++ b/src/emucore/tia/DelayQueueIteratorImpl.hxx @@ -119,7 +119,7 @@ bool DelayQueueIteratorImpl::next() myIndex = 0; do { - myDelayCycle++; + ++myDelayCycle; } while (myDelayQueue.myMembers[currentIndex()].mySize == 0 && isValid()); return isValid(); diff --git a/src/emucore/tia/DelayQueueMember.hxx b/src/emucore/tia/DelayQueueMember.hxx index 6127239a9..09f77b5c6 100644 --- a/src/emucore/tia/DelayQueueMember.hxx +++ b/src/emucore/tia/DelayQueueMember.hxx @@ -88,16 +88,16 @@ void DelayQueueMember::remove(uInt8 address) { uInt8 index; - for (index = 0; index < mySize; index++) { + for (index = 0; index < mySize; ++index) { if (myEntries[index].address == address) break; } if (index < mySize) { - for (uInt8 i = index + 1; i < mySize; i++) { + for (uInt8 i = index + 1; i < mySize; ++i) { myEntries[i-1] = myEntries[i]; } - mySize--; + --mySize; } } diff --git a/src/emucore/tia/Missile.cxx b/src/emucore/tia/Missile.cxx index e6f69a489..b118053b9 100644 --- a/src/emucore/tia/Missile.cxx +++ b/src/emucore/tia/Missile.cxx @@ -100,7 +100,7 @@ void Missile::resm(uInt8 counter, bool hblank) case 2: if (hblank) myIsRendering = myRenderCounter > 1; - else if (myRenderCounter == 0) myRenderCounter++; + else if (myRenderCounter == 0) ++myRenderCounter; break; @@ -193,7 +193,7 @@ void Missile::tick(uInt8 hclock, bool isReceivingMclock) switch ((hclock + 1) % 4) { case 3: myEffectiveWidth = myWidth == 1 ? 2 : myWidth; - if (myWidth < 4) myRenderCounter++; + if (myWidth < 4) ++myRenderCounter; break; case 2: diff --git a/src/emucore/tia/Player.cxx b/src/emucore/tia/Player.cxx index 86af0c66e..c49554921 100644 --- a/src/emucore/tia/Player.cxx +++ b/src/emucore/tia/Player.cxx @@ -140,7 +140,7 @@ void Player::nusiz(uInt8 value, bool hblank) setDivider(myDividerPending); } else if (delta < (hblank ? 6 : 5)) { setDivider(myDividerPending); - myRenderCounter--; + --myRenderCounter; } else { myDividerChangeCounter = (hblank ? 0 : 1); } @@ -282,12 +282,12 @@ void Player::tick() mySampleCounter = 0; myRenderCounter = Count::renderCounterOffset; } else if (myIsRendering) { - myRenderCounter++; + ++myRenderCounter; switch (myDivider) { case 1: if (myRenderCounter > 0) - mySampleCounter++; + ++mySampleCounter; if (myRenderCounter >= 0 && myDividerChangeCounter >= 0 && myDividerChangeCounter-- == 0) setDivider(myDividerPending); @@ -296,7 +296,7 @@ void Player::tick() default: if (myRenderCounter > 1 && (((myRenderCounter - 1) % myDivider) == 0)) - mySampleCounter++; + ++mySampleCounter; if (myRenderCounter > 0 && myDividerChangeCounter >= 0 && myDividerChangeCounter-- == 0) setDivider(myDividerPending); diff --git a/src/emucore/tia/TIA.cxx b/src/emucore/tia/TIA.cxx index 651da546b..3f04698db 100644 --- a/src/emucore/tia/TIA.cxx +++ b/src/emucore/tia/TIA.cxx @@ -410,7 +410,7 @@ void TIA::bindToControllers() } ); - for (uInt8 i = 0; i < 4; i++) + for (uInt8 i = 0; i < 4; ++i) updatePaddle(i); } @@ -1205,7 +1205,7 @@ void TIA::onFrameComplete() myFrontBufferScanlines = scanlinesLastFrame(); - myFramesSinceLastRender++; + ++myFramesSinceLastRender; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1219,7 +1219,7 @@ void TIA::onHalt() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void TIA::cycle(uInt32 colorClocks) { - for (uInt32 i = 0; i < colorClocks; i++) + for (uInt32 i = 0; i < colorClocks; ++i) { myDelayQueue.execute( [this] (uInt8 address, uInt8 value) {delayedWrite(address, value);} @@ -1244,7 +1244,7 @@ void TIA::cycle(uInt32 colorClocks) myAudio.tick(); - myTimestamp++; + ++myTimestamp; } } @@ -1267,7 +1267,7 @@ void TIA::tickMovement() myMovementInProgress = m; myCollisionUpdateRequired = m; - myMovementClock++; + ++myMovementClock; } } @@ -1331,7 +1331,7 @@ void TIA::nextLine() myHctr = 0; - if (!myMovementInProgress && myLinesSinceChange < 2) myLinesSinceChange++; + if (!myMovementInProgress && myLinesSinceChange < 2) ++myLinesSinceChange; myHstate = HState::blank; myHctrDelta = 0; @@ -1448,7 +1448,7 @@ void TIA::flushLineCache() if (wasCaching) { const auto rewindCycles = myHctr; - for (myHctr = 0; myHctr < rewindCycles; myHctr++) { + for (myHctr = 0; myHctr < rewindCycles; ++myHctr) { if (myHstate == HState::blank) tickHblank(); else diff --git a/src/emucore/tia/frame-manager/AbstractFrameManager.cxx b/src/emucore/tia/frame-manager/AbstractFrameManager.cxx index 541065999..85a269057 100644 --- a/src/emucore/tia/frame-manager/AbstractFrameManager.cxx +++ b/src/emucore/tia/frame-manager/AbstractFrameManager.cxx @@ -44,7 +44,7 @@ void AbstractFrameManager::reset() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void AbstractFrameManager::nextLine() { - myCurrentFrameTotalLines++; + ++myCurrentFrameTotalLines; onNextLine(); } @@ -96,7 +96,7 @@ void AbstractFrameManager::notifyFrameComplete() myPreviousFrameFinalLines = myCurrentFrameFinalLines; myCurrentFrameFinalLines = myCurrentFrameTotalLines; myCurrentFrameTotalLines = 0; - myTotalFrames++; + ++myTotalFrames; if (myOnFrameComplete) myOnFrameComplete(); } diff --git a/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx b/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx index 8293f179b..301759843 100644 --- a/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx +++ b/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx @@ -69,7 +69,7 @@ void FrameLayoutDetector::onNextLine() // We start counting the number of "lines spent while waiting for vsync start" from // the "ideal" frame size (corrected by the three scanlines spent in vsync). if (myCurrentFrameTotalLines > frameLines - 3 || myTotalFrames == 0) - myLinesWaitingForVsyncToStart++; + ++myLinesWaitingForVsyncToStart; if (myLinesWaitingForVsyncToStart > Metrics::waitForVsync) setState(State::waitForVsyncEnd); @@ -137,11 +137,11 @@ void FrameLayoutDetector::finalizeFrame() switch (layout()) { case FrameLayout::ntsc: - myNtscFrames++; + ++myNtscFrames; break; case FrameLayout::pal: - myPalFrames++; + ++myPalFrames; break; default: diff --git a/src/emucore/tia/frame-manager/FrameManager.cxx b/src/emucore/tia/frame-manager/FrameManager.cxx index c2010e326..bcbc5685c 100644 --- a/src/emucore/tia/frame-manager/FrameManager.cxx +++ b/src/emucore/tia/frame-manager/FrameManager.cxx @@ -70,13 +70,13 @@ void FrameManager::onNextLine() Int32 jitter; State previousState = myState; - myLineInState++; + ++myLineInState; switch (myState) { case State::waitForVsyncStart: if ((myCurrentFrameTotalLines > myFrameLines - 3) || myTotalFrames == 0) - myVsyncLines++; + ++myVsyncLines; if (myVsyncLines > Metrics::maxLinesVsync) setState(State::waitForFrameStart); @@ -107,7 +107,7 @@ void FrameManager::onNextLine() throw runtime_error("frame manager: invalid state"); } - if (myState == State::frame && previousState == State::frame) myY++; + if (myState == State::frame && previousState == State::frame) ++myY; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/tia/frame-manager/YStartDetector.cxx b/src/emucore/tia/frame-manager/YStartDetector.cxx index 577eae9e3..8673e01b1 100644 --- a/src/emucore/tia/frame-manager/YStartDetector.cxx +++ b/src/emucore/tia/frame-manager/YStartDetector.cxx @@ -84,7 +84,7 @@ void YStartDetector::onNextLine() // We start counting the number of "lines spent while waiting for vsync start" from // the "ideal" frame size (corrected by the three scanlines spent in vsync). if (myCurrentFrameTotalLines > frameLines - 3 || myTotalFrames == 0) - myLinesWaitingForVsyncToStart++; + ++myLinesWaitingForVsyncToStart; if (myLinesWaitingForVsyncToStart > Metrics::waitForVsync) setState(State::waitForVsyncEnd); @@ -97,7 +97,7 @@ void YStartDetector::onNextLine() case State::waitForFrameStart: if (shouldTransitionToFrame()) setState(State::waitForVsyncStart); - else myCurrentVblankLines++; + else ++myCurrentVblankLines; break; @@ -126,7 +126,7 @@ bool YStartDetector::shouldTransitionToFrame() // Is this same scanline in which the transition ocurred last frame? if (myTotalFrames > Metrics::initialGarbageFrames && myCurrentVblankLines == myLastVblankLines) // Yes? -> Increase the number of stable frames - myStableVblankFrames++; + ++myStableVblankFrames; else // No? -> Frame start shifted again, set the number of consecutive stable frames to zero myStableVblankFrames = 0; @@ -160,7 +160,7 @@ bool YStartDetector::shouldTransitionToFrame() myVblankViolations = 0; else { // Record a violation if it wasn't recorded before - if (!myVblankViolated) myVblankViolations++; + if (!myVblankViolated) ++myVblankViolations; myVblankViolated = true; } @@ -169,7 +169,7 @@ bool YStartDetector::shouldTransitionToFrame() // The algorithm tells us to transition although we haven't reached the trip line before } else if (shouldTransition) { // Record a violation if it wasn't recorded before - if (!myVblankViolated) myVblankViolations++; + if (!myVblankViolated) ++myVblankViolations; myVblankViolated = true; } diff --git a/src/gui/DeveloperDialog.cxx b/src/gui/DeveloperDialog.cxx index 3e8d92e9b..a96956031 100644 --- a/src/gui/DeveloperDialog.cxx +++ b/src/gui/DeveloperDialog.cxx @@ -978,7 +978,7 @@ void DeveloperDialog::handleSize() } } if(!found) - interval--; + --interval; } while(!found); if(size < uncompressed) diff --git a/src/gui/HelpDialog.cxx b/src/gui/HelpDialog.cxx index acc52b6df..5c0ea6dbd 100644 --- a/src/gui/HelpDialog.cxx +++ b/src/gui/HelpDialog.cxx @@ -67,7 +67,7 @@ HelpDialog::HelpDialog(OSystem& osystem, DialogContainer& parent, int lwidth = 12 * fontWidth; xpos += 5; ypos += lineHeight + 4; - for(uInt8 i = 0; i < kLINES_PER_PAGE; i++) + for(uInt8 i = 0; i < kLINES_PER_PAGE; ++i) { myKey[i] = new StaticTextWidget(this, font, xpos, ypos, lwidth, @@ -179,7 +179,7 @@ void HelpDialog::displayInfo() updateStrings(myPage, kLINES_PER_PAGE, titleStr); myTitle->setLabel(titleStr); - for(uInt8 i = 0; i < kLINES_PER_PAGE; i++) + for(uInt8 i = 0; i < kLINES_PER_PAGE; ++i) { myKey[i]->setLabel(myKeyStr[i]); myDesc[i]->setLabel(myDescStr[i]); @@ -193,7 +193,7 @@ void HelpDialog::handleCommand(CommandSender* sender, int cmd, switch(cmd) { case GuiObject::kNextCmd: - myPage++; + ++myPage; if(myPage >= myNumPages) myNextButton->clearFlags(WIDGET_ENABLED); if(myPage >= 2) @@ -203,7 +203,7 @@ void HelpDialog::handleCommand(CommandSender* sender, int cmd, break; case GuiObject::kPrevCmd: - myPage--; + --myPage; if(myPage <= myNumPages) myNextButton->setFlags(WIDGET_ENABLED); if(myPage <= 1) diff --git a/src/gui/RadioButtonWidget.cxx b/src/gui/RadioButtonWidget.cxx index 3c38ffbc5..59708b87b 100644 --- a/src/gui/RadioButtonWidget.cxx +++ b/src/gui/RadioButtonWidget.cxx @@ -198,7 +198,7 @@ void RadioButtonGroup::select(RadioButtonWidget* widget) setSelected(i); break; } - i++; + ++i; } } @@ -211,7 +211,6 @@ void RadioButtonGroup::setSelected(uInt32 selected) for(const auto& w : myWidgets) { (static_cast(w))->setState(i == mySelected); - i++; + ++i; } } - diff --git a/src/gui/Rect.hxx b/src/gui/Rect.hxx index 03dc4729b..982f2ddf4 100644 --- a/src/gui/Rect.hxx +++ b/src/gui/Rect.hxx @@ -38,9 +38,8 @@ struct Point Point() : x(0), y(0) { } Point(const Point& p) : x(p.x), y(p.y) { } explicit Point(uInt32 x1, uInt32 y1) : x(x1), y(y1) { } - Point(const string& p) { + Point(const string& p) : x(0), y(0) { char c = '\0'; - x = y = 0; istringstream buf(p); buf >> x >> c >> y; if(c != 'x') @@ -64,9 +63,8 @@ struct Size Size() : w(0), h(0) { } Size(const Size& s) : w(s.w), h(s.h) { } explicit Size(uInt32 w1, uInt32 h1) : w(w1), h(h1) { } - Size(const string& s) { + Size(const string& s) : w(0), h(0) { char c = '\0'; - w = h = 0; istringstream buf(s); buf >> w >> c >> h; if(c != 'x') diff --git a/src/gui/RomAuditDialog.cxx b/src/gui/RomAuditDialog.cxx index 3915d6a2b..744100ae6 100644 --- a/src/gui/RomAuditDialog.cxx +++ b/src/gui/RomAuditDialog.cxx @@ -132,7 +132,7 @@ void RomAuditDialog::auditRoms() // Create a entry for the GameList for each file Properties props; int renamed = 0, notfound = 0; - for(uInt32 idx = 0; idx < files.size(); idx++) + for(uInt32 idx = 0; idx < files.size(); ++idx) { string extension; if(files[idx].isFile() && From 0f8dc1f2bb607efbc4f37adeb6357674826756ac Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 28 Aug 2018 17:00:00 -0230 Subject: [PATCH 064/126] Yet more fixes for warnings from cppcheck. --- src/cheat/CheatManager.hxx | 2 +- src/common/AudioSettings.hxx | 2 +- src/common/EventHandlerSDL2.hxx | 4 ++-- src/common/FSNodeZIP.hxx | 2 +- src/common/FpsMeter.hxx | 2 +- src/common/FrameBufferSDL2.hxx | 2 +- src/common/MouseControl.hxx | 2 +- src/common/PNGLibrary.hxx | 2 +- src/common/SoundNull.hxx | 2 +- src/common/StateManager.hxx | 2 +- src/common/StringParser.hxx | 2 +- src/common/audio/ConvolutionBuffer.hxx | 2 +- src/emucore/FSNode.hxx | 2 +- src/emucore/M6502.hxx | 2 +- src/emucore/PropsSet.hxx | 2 +- src/emucore/Random.hxx | 2 +- src/emucore/Settings.hxx | 2 +- src/emucore/TIASurface.hxx | 2 +- src/emucore/tia/Ball.hxx | 2 +- src/emucore/tia/DelayQueueIteratorImpl.hxx | 2 +- src/emucore/tia/Missile.hxx | 2 +- src/emucore/tia/Player.hxx | 2 +- src/emucore/tia/Playfield.hxx | 2 +- src/gui/Command.hxx | 2 +- src/gui/CommandMenu.hxx | 2 +- src/gui/Dialog.hxx | 4 ++-- src/gui/DialogContainer.hxx | 2 +- src/gui/Font.hxx | 2 +- src/gui/Launcher.hxx | 2 +- src/gui/Menu.hxx | 2 +- src/gui/Rect.hxx | 4 ++-- src/gui/TimeMachine.hxx | 2 +- src/unix/SettingsUNIX.hxx | 2 +- 33 files changed, 36 insertions(+), 36 deletions(-) diff --git a/src/cheat/CheatManager.hxx b/src/cheat/CheatManager.hxx index d676aef65..ebc7e32a3 100644 --- a/src/cheat/CheatManager.hxx +++ b/src/cheat/CheatManager.hxx @@ -37,7 +37,7 @@ using CheatList = vector>; class CheatManager { public: - CheatManager(OSystem& osystem); + explicit CheatManager(OSystem& osystem); /** Adds the specified cheat to an internal list. diff --git a/src/common/AudioSettings.hxx b/src/common/AudioSettings.hxx index f120228be..f529d7512 100644 --- a/src/common/AudioSettings.hxx +++ b/src/common/AudioSettings.hxx @@ -67,7 +67,7 @@ class AudioSettings AudioSettings(); - AudioSettings(Settings* mySettings); + explicit AudioSettings(Settings* mySettings); static void normalize(Settings& settings); diff --git a/src/common/EventHandlerSDL2.hxx b/src/common/EventHandlerSDL2.hxx index 76f4b04f1..b771a220d 100644 --- a/src/common/EventHandlerSDL2.hxx +++ b/src/common/EventHandlerSDL2.hxx @@ -35,7 +35,7 @@ class EventHandlerSDL2 : public EventHandler /** Create a new SDL2 event handler object */ - EventHandlerSDL2(OSystem& osystem); + explicit EventHandlerSDL2(OSystem& osystem); virtual ~EventHandlerSDL2() = default; private: @@ -57,7 +57,7 @@ class EventHandlerSDL2 : public EventHandler class JoystickSDL2 : public PhysicalJoystick { public: - JoystickSDL2(int idx); + explicit JoystickSDL2(int idx); virtual ~JoystickSDL2(); private: diff --git a/src/common/FSNodeZIP.hxx b/src/common/FSNodeZIP.hxx index 74eac1c4f..74641a37d 100644 --- a/src/common/FSNodeZIP.hxx +++ b/src/common/FSNodeZIP.hxx @@ -43,7 +43,7 @@ class FilesystemNodeZIP : public AbstractFSNode * * @param path String with the path the new node should point to. */ - FilesystemNodeZIP(const string& path); + explicit FilesystemNodeZIP(const string& path); bool exists() const override { return _realNode && _realNode->exists(); } const string& getName() const override { return _name; } diff --git a/src/common/FpsMeter.hxx b/src/common/FpsMeter.hxx index ca9672391..bdcff742e 100644 --- a/src/common/FpsMeter.hxx +++ b/src/common/FpsMeter.hxx @@ -26,7 +26,7 @@ class FpsMeter { public: - FpsMeter(uInt32 queueSize); + explicit FpsMeter(uInt32 queueSize); void reset(uInt32 garbageFrameLimit = 0); diff --git a/src/common/FrameBufferSDL2.hxx b/src/common/FrameBufferSDL2.hxx index c6f12d92b..37689d8d6 100644 --- a/src/common/FrameBufferSDL2.hxx +++ b/src/common/FrameBufferSDL2.hxx @@ -40,7 +40,7 @@ class FrameBufferSDL2 : public FrameBuffer /** Creates a new SDL2 framebuffer */ - FrameBufferSDL2(OSystem& osystem); + explicit FrameBufferSDL2(OSystem& osystem); virtual ~FrameBufferSDL2(); ////////////////////////////////////////////////////////////////////// diff --git a/src/common/MouseControl.hxx b/src/common/MouseControl.hxx index 3cc27ffaf..8341ee05b 100644 --- a/src/common/MouseControl.hxx +++ b/src/common/MouseControl.hxx @@ -80,7 +80,7 @@ class MouseControl int xid, yid; string message; - MouseMode(const string& msg = "") + explicit MouseMode(const string& msg = "") : xtype(Controller::Joystick), ytype(Controller::Joystick), xid(-1), diff --git a/src/common/PNGLibrary.hxx b/src/common/PNGLibrary.hxx index b2fc3eb79..be97d5f04 100644 --- a/src/common/PNGLibrary.hxx +++ b/src/common/PNGLibrary.hxx @@ -37,7 +37,7 @@ class Properties; class PNGLibrary { public: - PNGLibrary(OSystem& osystem); + explicit PNGLibrary(OSystem& osystem); /** Read a PNG image from the specified file into a FBSurface structure, diff --git a/src/common/SoundNull.hxx b/src/common/SoundNull.hxx index c81d5df75..4416e2223 100644 --- a/src/common/SoundNull.hxx +++ b/src/common/SoundNull.hxx @@ -37,7 +37,7 @@ class SoundNull : public Sound Create a new sound object. The init method must be invoked before using the object. */ - SoundNull(OSystem& osystem) : Sound(osystem) + explicit SoundNull(OSystem& osystem) : Sound(osystem) { myOSystem.logMessage("Sound disabled.\n", 1); } diff --git a/src/common/StateManager.hxx b/src/common/StateManager.hxx index 851694299..ed055cfa8 100644 --- a/src/common/StateManager.hxx +++ b/src/common/StateManager.hxx @@ -43,7 +43,7 @@ class StateManager /** Create a new statemananger class. */ - StateManager(OSystem& osystem); + explicit StateManager(OSystem& osystem); ~StateManager(); public: diff --git a/src/common/StringParser.hxx b/src/common/StringParser.hxx index eee0c7084..7ad0d53bf 100644 --- a/src/common/StringParser.hxx +++ b/src/common/StringParser.hxx @@ -34,7 +34,7 @@ class StringParser @param str The string to split */ - StringParser(const string& str) + explicit StringParser(const string& str) { istringstream buf(str); string line; diff --git a/src/common/audio/ConvolutionBuffer.hxx b/src/common/audio/ConvolutionBuffer.hxx index d0a71ad3b..0c46404e8 100644 --- a/src/common/audio/ConvolutionBuffer.hxx +++ b/src/common/audio/ConvolutionBuffer.hxx @@ -24,7 +24,7 @@ class ConvolutionBuffer { public: - ConvolutionBuffer(uInt32 size); + explicit ConvolutionBuffer(uInt32 size); void shift(float nextValue); diff --git a/src/emucore/FSNode.hxx b/src/emucore/FSNode.hxx index 9e417e144..d179f8a2d 100644 --- a/src/emucore/FSNode.hxx +++ b/src/emucore/FSNode.hxx @@ -261,7 +261,7 @@ class FilesystemNode private: AbstractFSNodePtr _realNode; - FilesystemNode(AbstractFSNodePtr realNode); + explicit FilesystemNode(AbstractFSNodePtr realNode); }; diff --git a/src/emucore/M6502.hxx b/src/emucore/M6502.hxx index 98fb45b5e..b0e496e1a 100644 --- a/src/emucore/M6502.hxx +++ b/src/emucore/M6502.hxx @@ -62,7 +62,7 @@ class M6502 : public Serializable /** Create a new 6502 microprocessor. */ - M6502(const Settings& settings); + explicit M6502(const Settings& settings); virtual ~M6502() = default; public: diff --git a/src/emucore/PropsSet.hxx b/src/emucore/PropsSet.hxx index 12cb722ac..4a54d4620 100644 --- a/src/emucore/PropsSet.hxx +++ b/src/emucore/PropsSet.hxx @@ -42,7 +42,7 @@ class PropertiesSet /** Create a properties set object from the specified properties file. */ - PropertiesSet(const string& propsfile); + explicit PropertiesSet(const string& propsfile); public: /** diff --git a/src/emucore/Random.hxx b/src/emucore/Random.hxx index 9a2a6e7c9..44510e341 100644 --- a/src/emucore/Random.hxx +++ b/src/emucore/Random.hxx @@ -34,7 +34,7 @@ class Random : public Serializable /** Create a new random number generator */ - Random(uInt32 seed) { initSeed(seed); } + explicit Random(uInt32 seed) { initSeed(seed); } /** Re-initialize the random number generator with a new seed, diff --git a/src/emucore/Settings.hxx b/src/emucore/Settings.hxx index 399d7fa73..610defc83 100644 --- a/src/emucore/Settings.hxx +++ b/src/emucore/Settings.hxx @@ -36,7 +36,7 @@ class Settings /** Create a new settings abstract class */ - Settings(OSystem& osystem); + explicit Settings(OSystem& osystem); virtual ~Settings() = default; public: diff --git a/src/emucore/TIASurface.hxx b/src/emucore/TIASurface.hxx index d7ae17291..4ec22a49b 100644 --- a/src/emucore/TIASurface.hxx +++ b/src/emucore/TIASurface.hxx @@ -47,7 +47,7 @@ class TIASurface /** Creates a new TIASurface object */ - TIASurface(OSystem& system); + explicit TIASurface(OSystem& system); /** Set the TIA object, which is needed for actually rendering the TIA image. diff --git a/src/emucore/tia/Ball.hxx b/src/emucore/tia/Ball.hxx index f6807e792..204479277 100644 --- a/src/emucore/tia/Ball.hxx +++ b/src/emucore/tia/Ball.hxx @@ -27,7 +27,7 @@ class Ball : public Serializable { public: - Ball(uInt32 collisionMask); + explicit Ball(uInt32 collisionMask); public: diff --git a/src/emucore/tia/DelayQueueIteratorImpl.hxx b/src/emucore/tia/DelayQueueIteratorImpl.hxx index 9e7950535..64da63090 100644 --- a/src/emucore/tia/DelayQueueIteratorImpl.hxx +++ b/src/emucore/tia/DelayQueueIteratorImpl.hxx @@ -27,7 +27,7 @@ template class DelayQueueIteratorImpl : public DelayQueueIterator { public: - DelayQueueIteratorImpl(const DelayQueue& delayQueue); + explicit DelayQueueIteratorImpl(const DelayQueue& delayQueue); public: diff --git a/src/emucore/tia/Missile.hxx b/src/emucore/tia/Missile.hxx index 57f0a3eb2..7d55b631b 100644 --- a/src/emucore/tia/Missile.hxx +++ b/src/emucore/tia/Missile.hxx @@ -28,7 +28,7 @@ class Missile : public Serializable { public: - Missile(uInt32 collisionMask); + explicit Missile(uInt32 collisionMask); public: diff --git a/src/emucore/tia/Player.hxx b/src/emucore/tia/Player.hxx index 78a59e37a..4ac7d8de1 100644 --- a/src/emucore/tia/Player.hxx +++ b/src/emucore/tia/Player.hxx @@ -26,7 +26,7 @@ class TIA; class Player : public Serializable { public: - Player(uInt32 collisionMask); + explicit Player(uInt32 collisionMask); public: diff --git a/src/emucore/tia/Playfield.hxx b/src/emucore/tia/Playfield.hxx index d851f8d28..d29e893e0 100644 --- a/src/emucore/tia/Playfield.hxx +++ b/src/emucore/tia/Playfield.hxx @@ -26,7 +26,7 @@ class TIA; class Playfield : public Serializable { public: - Playfield(uInt32 collisionMask); + explicit Playfield(uInt32 collisionMask); public: diff --git a/src/gui/Command.hxx b/src/gui/Command.hxx index 02bf9c34f..d32ffc127 100644 --- a/src/gui/Command.hxx +++ b/src/gui/Command.hxx @@ -47,7 +47,7 @@ class CommandSender // TODO - allow for multiple targets, i.e. store targets in a list // and add methods addTarget/removeTarget. public: - CommandSender(CommandReceiver* target) + explicit CommandSender(CommandReceiver* target) : _target(target) { } virtual ~CommandSender() = default; diff --git a/src/gui/CommandMenu.hxx b/src/gui/CommandMenu.hxx index e9ea26b60..e2ccfe58d 100644 --- a/src/gui/CommandMenu.hxx +++ b/src/gui/CommandMenu.hxx @@ -34,7 +34,7 @@ class CommandMenu : public DialogContainer /** Create a new menu stack */ - CommandMenu(OSystem& osystem); + explicit CommandMenu(OSystem& osystem); virtual ~CommandMenu() = default; private: diff --git a/src/gui/Dialog.hxx b/src/gui/Dialog.hxx index 098cbcb8c..3c7965a2a 100644 --- a/src/gui/Dialog.hxx +++ b/src/gui/Dialog.hxx @@ -165,7 +165,7 @@ class Dialog : public GuiObject Widget* widget; WidgetArray list; - Focus(Widget* w = nullptr) : widget(w) { } + explicit Focus(Widget* w = nullptr) : widget(w) { } virtual ~Focus() = default; Focus(const Focus&) = default; @@ -178,7 +178,7 @@ class Dialog : public GuiObject FocusList focus; uInt32 currentTab; - TabFocus(TabWidget* w = nullptr) : widget(w), currentTab(0) { } + explicit TabFocus(TabWidget* w = nullptr) : widget(w), currentTab(0) { } virtual ~TabFocus() = default; TabFocus(const TabFocus&) = default; diff --git a/src/gui/DialogContainer.hxx b/src/gui/DialogContainer.hxx index b6cfe01ed..1dfe407b0 100644 --- a/src/gui/DialogContainer.hxx +++ b/src/gui/DialogContainer.hxx @@ -46,7 +46,7 @@ class DialogContainer /** Create a new DialogContainer stack */ - DialogContainer(OSystem& osystem); + explicit DialogContainer(OSystem& osystem); virtual ~DialogContainer(); public: diff --git a/src/gui/Font.hxx b/src/gui/Font.hxx index 5d78fdf67..8112df693 100644 --- a/src/gui/Font.hxx +++ b/src/gui/Font.hxx @@ -55,7 +55,7 @@ namespace GUI { class Font { public: - Font(const FontDesc& desc); + explicit Font(const FontDesc& desc); const FontDesc& desc() const { return myFontDesc; } diff --git a/src/gui/Launcher.hxx b/src/gui/Launcher.hxx index 443b5d544..75f88ad29 100644 --- a/src/gui/Launcher.hxx +++ b/src/gui/Launcher.hxx @@ -36,7 +36,7 @@ class Launcher : public DialogContainer /** Create a new menu stack */ - Launcher(OSystem& osystem); + explicit Launcher(OSystem& osystem); virtual ~Launcher() = default; /** diff --git a/src/gui/Menu.hxx b/src/gui/Menu.hxx index b6b0c56d9..3060cbefc 100644 --- a/src/gui/Menu.hxx +++ b/src/gui/Menu.hxx @@ -33,7 +33,7 @@ class Menu : public DialogContainer /** Create a new menu stack */ - Menu(OSystem& osystem); + explicit Menu(OSystem& osystem); virtual ~Menu() = default; private: diff --git a/src/gui/Rect.hxx b/src/gui/Rect.hxx index 982f2ddf4..c6563a311 100644 --- a/src/gui/Rect.hxx +++ b/src/gui/Rect.hxx @@ -38,7 +38,7 @@ struct Point Point() : x(0), y(0) { } Point(const Point& p) : x(p.x), y(p.y) { } explicit Point(uInt32 x1, uInt32 y1) : x(x1), y(y1) { } - Point(const string& p) : x(0), y(0) { + explicit Point(const string& p) : x(0), y(0) { char c = '\0'; istringstream buf(p); buf >> x >> c >> y; @@ -63,7 +63,7 @@ struct Size Size() : w(0), h(0) { } Size(const Size& s) : w(s.w), h(s.h) { } explicit Size(uInt32 w1, uInt32 h1) : w(w1), h(h1) { } - Size(const string& s) : w(0), h(0) { + explicit Size(const string& s) : w(0), h(0) { char c = '\0'; istringstream buf(s); buf >> w >> c >> h; diff --git a/src/gui/TimeMachine.hxx b/src/gui/TimeMachine.hxx index c39568d41..e33639c9e 100644 --- a/src/gui/TimeMachine.hxx +++ b/src/gui/TimeMachine.hxx @@ -30,7 +30,7 @@ class OSystem; class TimeMachine : public DialogContainer { public: - TimeMachine(OSystem& osystem); + explicit TimeMachine(OSystem& osystem); virtual ~TimeMachine() = default; /** diff --git a/src/unix/SettingsUNIX.hxx b/src/unix/SettingsUNIX.hxx index 3375f561f..265c98d5e 100644 --- a/src/unix/SettingsUNIX.hxx +++ b/src/unix/SettingsUNIX.hxx @@ -33,7 +33,7 @@ class SettingsUNIX : public Settings /** Create a new UNIX settings object */ - SettingsUNIX(OSystem& osystem); + explicit SettingsUNIX(OSystem& osystem); virtual ~SettingsUNIX() = default; private: From 46b07d14b51e54747ce3f1b86ecd52c12f06a8a9 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 28 Aug 2018 22:13:02 -0230 Subject: [PATCH 065/126] Fixes for warnings from Coverity. --- src/common/SoundSDL2.cxx | 3 +++ src/emucore/EmulationWorker.cxx | 10 +++++++++- src/emucore/M6502.cxx | 1 + src/emucore/tia/TIA.cxx | 2 +- src/emucore/tia/TIA.hxx | 8 +++++--- 5 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index 750832c0b..c39aa7d86 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -40,7 +40,10 @@ SoundSDL2::SoundSDL2(OSystem& osystem, AudioSettings& audioSettings) myIsInitializedFlag(false), myVolume(100), myVolumeFactor(0xffff), + myDevice(0), + myEmulationTiming(nullptr), myCurrentFragment(nullptr), + myUnderrun(false), myAudioSettings(audioSettings) { myOSystem.logMessage("SoundSDL2::SoundSDL2 started ...", 2); diff --git a/src/emucore/EmulationWorker.cxx b/src/emucore/EmulationWorker.cxx index 0ccdc77c5..337184a79 100644 --- a/src/emucore/EmulationWorker.cxx +++ b/src/emucore/EmulationWorker.cxx @@ -24,7 +24,15 @@ using namespace std::chrono; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -EmulationWorker::EmulationWorker() : myPendingSignal(Signal::none), myState(State::initializing) +EmulationWorker::EmulationWorker() + : myPendingSignal(Signal::none), + myState(State::initializing), + myTia(nullptr), + myCyclesPerSecond(0), + myMaxCycles(0), + myMinCycles(0), + myDispatchResult(nullptr), + myTotalCycles(0) { std::mutex mutex; std::unique_lock lock(mutex); diff --git a/src/emucore/M6502.cxx b/src/emucore/M6502.cxx index d1b2cea3b..48ee7fee0 100644 --- a/src/emucore/M6502.cxx +++ b/src/emucore/M6502.cxx @@ -59,6 +59,7 @@ M6502::M6502(const Settings& settings) icycles(0), myNumberOfDistinctAccesses(0), myLastAddress(0), + myLastBreakCycle(ULLONG_MAX), myLastPeekAddress(0), myLastPokeAddress(0), myLastPeekBaseAddress(0), diff --git a/src/emucore/tia/TIA.cxx b/src/emucore/tia/TIA.cxx index 3f04698db..071e13d99 100644 --- a/src/emucore/tia/TIA.cxx +++ b/src/emucore/tia/TIA.cxx @@ -144,7 +144,7 @@ void TIA::reset() myHstate = HState::blank; myCollisionMask = 0; myLinesSinceChange = 0; - myCollisionUpdateRequired = false; + myCollisionUpdateRequired = myCollisionUpdateScheduled = false; myColorLossEnabled = myColorLossActive = false; myColorHBlank = 0; myLastCycle = 0; diff --git a/src/emucore/tia/TIA.hxx b/src/emucore/tia/TIA.hxx index 41a7191ce..50bf080b6 100644 --- a/src/emucore/tia/TIA.hxx +++ b/src/emucore/tia/TIA.hxx @@ -746,6 +746,11 @@ class TIA : public Device */ bool myCollisionUpdateRequired; + /** + * Force schedule a collision update + */ + bool myCollisionUpdateScheduled; + /** * The collision latches are represented by 15 bits in a bitfield. */ @@ -829,9 +834,6 @@ class TIA : public Device bool myEnableJitter; uInt8 myJitterFactor; - // Force schedule a collision update - bool myCollisionUpdateScheduled; - #ifdef DEBUGGER_SUPPORT // The arrays containing information about every byte of TIA // indicating whether and how (RW) it is used. From 6093bf8375f88adaafca41cf13fdca5e36b570a9 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 28 Aug 2018 22:32:56 -0230 Subject: [PATCH 066/126] Fix signed/unsigned conversion warning in VS. --- src/emucore/Thumbulator.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emucore/Thumbulator.cxx b/src/emucore/Thumbulator.cxx index 5e79c289b..858508928 100644 --- a/src/emucore/Thumbulator.cxx +++ b/src/emucore/Thumbulator.cxx @@ -771,7 +771,7 @@ int Thumbulator::execute() if(rc & 0x80000000) { do_cflag_bit(1); - rc = ~0; + rc = ~0u; } else { From dc4fc5c8d2498b82abd9718bd70c19884fc307b4 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 29 Aug 2018 08:55:07 -0230 Subject: [PATCH 067/126] More fixes from cppcheck. --- src/common/LinkedObjectPool.hxx | 2 +- src/macosx/SettingsMACOSX.hxx | 2 +- src/windows/FSNodeWINDOWS.hxx | 2 +- src/windows/SettingsWINDOWS.hxx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/common/LinkedObjectPool.hxx b/src/common/LinkedObjectPool.hxx index 8dff8dc47..572a4ee51 100644 --- a/src/common/LinkedObjectPool.hxx +++ b/src/common/LinkedObjectPool.hxx @@ -84,7 +84,7 @@ class LinkedObjectPool iter it = myCurrent; uInt32 idx = 1; - while(it-- != myList.begin()) idx++; + while(it-- != myList.begin()) ++idx; return idx; } diff --git a/src/macosx/SettingsMACOSX.hxx b/src/macosx/SettingsMACOSX.hxx index 0f274f869..c71101f2a 100644 --- a/src/macosx/SettingsMACOSX.hxx +++ b/src/macosx/SettingsMACOSX.hxx @@ -33,7 +33,7 @@ class SettingsMACOSX : public Settings /** Create a new UNIX settings object */ - SettingsMACOSX(OSystem& osystem); + explicit SettingsMACOSX(OSystem& osystem); virtual ~SettingsMACOSX() = default; public: diff --git a/src/windows/FSNodeWINDOWS.hxx b/src/windows/FSNodeWINDOWS.hxx index 3a700c6b8..6d550ea2e 100644 --- a/src/windows/FSNodeWINDOWS.hxx +++ b/src/windows/FSNodeWINDOWS.hxx @@ -55,7 +55,7 @@ class FilesystemNodeWINDOWS : public AbstractFSNode * * @param path String with the path the new node should point to. */ - FilesystemNodeWINDOWS(const string& path); + explicit FilesystemNodeWINDOWS(const string& path); bool exists() const override; const string& getName() const override { return _displayName; } diff --git a/src/windows/SettingsWINDOWS.hxx b/src/windows/SettingsWINDOWS.hxx index f054e3396..c8536a24e 100644 --- a/src/windows/SettingsWINDOWS.hxx +++ b/src/windows/SettingsWINDOWS.hxx @@ -28,7 +28,7 @@ class SettingsWINDOWS : public Settings /** Create a new UNIX settings object */ - SettingsWINDOWS(OSystem& osystem); + explicit SettingsWINDOWS(OSystem& osystem); virtual ~SettingsWINDOWS() = default; private: From fb07d250d9151f466b15d4aff7516248bc44fccc Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 29 Aug 2018 09:10:55 -0230 Subject: [PATCH 068/126] Simplify AudioSettings class a little. - Use only one c'tor, which fixes some warnings from Coverity - Fix large compile times when AudioSettings class is changed --- src/common/AudioSettings.cxx | 58 ++++++++++++++++-------------------- src/common/AudioSettings.hxx | 6 ++-- src/emucore/OSystem.cxx | 9 +++--- src/emucore/OSystem.hxx | 16 +++++----- src/gui/AudioDialog.cxx | 1 - 5 files changed, 42 insertions(+), 48 deletions(-) diff --git a/src/common/AudioSettings.cxx b/src/common/AudioSettings.cxx index 599b56849..7e81ebb91 100644 --- a/src/common/AudioSettings.cxx +++ b/src/common/AudioSettings.cxx @@ -42,17 +42,11 @@ namespace { } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AudioSettings::AudioSettings() - : mySettings(), - myIsPersistent(false) -{} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AudioSettings::AudioSettings(Settings* settings) +AudioSettings::AudioSettings(Settings& settings) : mySettings(settings), myIsPersistent(true) { - setPreset(normalizedPreset(mySettings->getInt(SETTING_PRESET))); + setPreset(normalizedPreset(mySettings.getInt(SETTING_PRESET))); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -113,14 +107,14 @@ AudioSettings::Preset AudioSettings::preset() uInt32 AudioSettings::sampleRate() { updatePresetFromSettings(); - return customSettings() ? convertInt(mySettings->getInt(SETTING_SAMPLE_RATE), DEFAULT_SAMPLE_RATE) : myPresetSampleRate; + return customSettings() ? convertInt(mySettings.getInt(SETTING_SAMPLE_RATE), DEFAULT_SAMPLE_RATE) : myPresetSampleRate; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 AudioSettings::fragmentSize() { updatePresetFromSettings(); - return customSettings() ? convertInt(mySettings->getInt(SETTING_FRAGMENT_SIZE), DEFAULT_FRAGMENT_SIZE) : myPresetFragmentSize; + return customSettings() ? convertInt(mySettings.getInt(SETTING_FRAGMENT_SIZE), DEFAULT_FRAGMENT_SIZE) : myPresetFragmentSize; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -128,7 +122,7 @@ uInt32 AudioSettings::bufferSize() { updatePresetFromSettings(); // 0 is a valid value -> keep it - return customSettings() ? convertInt(mySettings->getInt(SETTING_BUFFER_SIZE), 0) : myPresetBufferSize; + return customSettings() ? convertInt(mySettings.getInt(SETTING_BUFFER_SIZE), 0) : myPresetBufferSize; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -136,34 +130,34 @@ uInt32 AudioSettings::headroom() { updatePresetFromSettings(); // 0 is a valid value -> keep it - return customSettings() ? convertInt(mySettings->getInt(SETTING_HEADROOM), 0) : myPresetHeadroom; + return customSettings() ? convertInt(mySettings.getInt(SETTING_HEADROOM), 0) : myPresetHeadroom; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AudioSettings::ResamplingQuality AudioSettings::resamplingQuality() { updatePresetFromSettings(); - return customSettings() ? normalizeResamplingQuality(mySettings->getInt(SETTING_RESAMPLING_QUALITY)) : myPresetResamplingQuality; + return customSettings() ? normalizeResamplingQuality(mySettings.getInt(SETTING_RESAMPLING_QUALITY)) : myPresetResamplingQuality; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string AudioSettings::stereo() const { // 0 is a valid value -> keep it - return mySettings->getString(SETTING_STEREO); + return mySettings.getString(SETTING_STEREO); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 AudioSettings::volume() const { // 0 is a valid value -> keep it - return convertInt(mySettings->getInt(SETTING_VOLUME), 0); + return convertInt(mySettings.getInt(SETTING_VOLUME), 0); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool AudioSettings::enabled() const { - return mySettings->getBool(SETTING_ENABLED); + return mySettings.getBool(SETTING_ENABLED); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -212,7 +206,7 @@ void AudioSettings::setPreset(AudioSettings::Preset preset) throw runtime_error("invalid preset"); } - if (myIsPersistent) mySettings->setValue(SETTING_PRESET, static_cast(myPreset)); + if (myIsPersistent) mySettings.setValue(SETTING_PRESET, static_cast(myPreset)); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -220,8 +214,8 @@ void AudioSettings::setSampleRate(uInt32 sampleRate) { if (!myIsPersistent) return; - mySettings->setValue(SETTING_SAMPLE_RATE, sampleRate); - normalize(*mySettings); + mySettings.setValue(SETTING_SAMPLE_RATE, sampleRate); + normalize(mySettings); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -229,8 +223,8 @@ void AudioSettings::setFragmentSize(uInt32 fragmentSize) { if (!myIsPersistent) return; - mySettings->setValue(SETTING_FRAGMENT_SIZE, fragmentSize); - normalize(*mySettings); + mySettings.setValue(SETTING_FRAGMENT_SIZE, fragmentSize); + normalize(mySettings); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -238,8 +232,8 @@ void AudioSettings::setBufferSize(uInt32 bufferSize) { if (!myIsPersistent) return; - mySettings->setValue(SETTING_BUFFER_SIZE, bufferSize); - normalize(*mySettings); + mySettings.setValue(SETTING_BUFFER_SIZE, bufferSize); + normalize(mySettings); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -247,8 +241,8 @@ void AudioSettings::setHeadroom(uInt32 headroom) { if (!myIsPersistent) return; - mySettings->setValue(SETTING_HEADROOM, headroom); - normalize(*mySettings); + mySettings.setValue(SETTING_HEADROOM, headroom); + normalize(mySettings); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -256,8 +250,8 @@ void AudioSettings::setResamplingQuality(AudioSettings::ResamplingQuality resamp { if (!myIsPersistent) return; - mySettings->setValue(SETTING_RESAMPLING_QUALITY, static_cast(resamplingQuality)); - normalize(*mySettings); + mySettings.setValue(SETTING_RESAMPLING_QUALITY, static_cast(resamplingQuality)); + normalize(mySettings); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -265,7 +259,7 @@ void AudioSettings::setStereo(const string& mode) { if(!myIsPersistent) return; - mySettings->setValue(SETTING_STEREO, mode); + mySettings.setValue(SETTING_STEREO, mode); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -273,8 +267,8 @@ void AudioSettings::setVolume(uInt32 volume) { if (!myIsPersistent) return; - mySettings->setValue(SETTING_VOLUME, volume); - normalize(*mySettings); + mySettings.setValue(SETTING_VOLUME, volume); + normalize(mySettings); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -282,7 +276,7 @@ void AudioSettings::setEnabled(bool isEnabled) { if (!myIsPersistent) return; - mySettings->setValue(SETTING_ENABLED, isEnabled); + mySettings.setValue(SETTING_ENABLED, isEnabled); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -302,5 +296,5 @@ void AudioSettings::updatePresetFromSettings() { if (!myIsPersistent) return; - setPreset(normalizedPreset(mySettings->getInt(SETTING_PRESET))); + setPreset(normalizedPreset(mySettings.getInt(SETTING_PRESET))); } diff --git a/src/common/AudioSettings.hxx b/src/common/AudioSettings.hxx index f529d7512..c9efaa8fc 100644 --- a/src/common/AudioSettings.hxx +++ b/src/common/AudioSettings.hxx @@ -65,9 +65,7 @@ class AudioSettings public: - AudioSettings(); - - explicit AudioSettings(Settings* mySettings); + explicit AudioSettings(Settings& mySettings); static void normalize(Settings& settings); @@ -117,7 +115,7 @@ class AudioSettings private: - Settings* mySettings; + Settings& mySettings; Preset myPreset; diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index 5324d1f2c..418c55e7e 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -55,6 +55,7 @@ #include "TIA.hxx" #include "DispatchResult.hxx" #include "EmulationWorker.hxx" +#include "AudioSettings.hxx" #include "OSystem.hxx" @@ -95,7 +96,6 @@ OSystem::OSystem() myBuildInfo = info.str(); mySettings = MediaFactory::createSettings(*this); - myAudioSettings = AudioSettings(mySettings.get()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -148,6 +148,7 @@ bool OSystem::create() myLauncher = make_unique(*this); myStateManager = make_unique(*this); myTimerManager = make_unique(); + myAudioSettings = make_unique(*mySettings); // Create the sound object; the sound subsystem isn't actually // opened until needed, so this is non-blocking (on those systems @@ -277,9 +278,9 @@ FBInitStatus OSystem::createFrameBuffer() void OSystem::createSound() { if(!mySound) - mySound = MediaFactory::createAudio(*this, myAudioSettings); + mySound = MediaFactory::createAudio(*this, *myAudioSettings); #ifndef SOUND_SUPPORT - myAudioSettings.setEnabled(false); + myAudioSettings->setEnabled(false); #endif } @@ -505,7 +506,7 @@ unique_ptr OSystem::openConsole(const FilesystemNode& romfile, string& // Finally, create the cart with the correct properties if(cart) - console = make_unique(*this, cart, props, myAudioSettings); + console = make_unique(*this, cart, props, *myAudioSettings); } return console; diff --git a/src/emucore/OSystem.hxx b/src/emucore/OSystem.hxx index 1f7a6fac6..21be6e145 100644 --- a/src/emucore/OSystem.hxx +++ b/src/emucore/OSystem.hxx @@ -40,6 +40,7 @@ class StateManager; class TimerManager; class VideoDialog; class EmulationWorker; +class AudioSettings; #include @@ -48,7 +49,6 @@ class EmulationWorker; #include "EventHandlerConstants.hxx" #include "FpsMeter.hxx" #include "bspf.hxx" -#include "AudioSettings.hxx" /** This class provides an interface for accessing operating system specific @@ -125,9 +125,11 @@ class OSystem bool hasConsole() const; /** - Get the audio settings ovject. - */ - AudioSettings& audioSettings() { return myAudioSettings; } + Get the audio settings object of the system. + + @return The audio settings object + */ + AudioSettings& audioSettings() { return *myAudioSettings; } /** Get the serial port of the system. @@ -445,6 +447,9 @@ class OSystem // Pointer to the (currently defined) Console object unique_ptr myConsole; + // Pointer to audio settings object + unique_ptr myAudioSettings; + // Pointer to the serial port object unique_ptr mySerialPort; @@ -486,9 +491,6 @@ class OSystem // Indicates whether to stop the main loop bool myQuitLoop; - // Audio settings - AudioSettings myAudioSettings; - private: string myBaseDir; string myStateDir; diff --git a/src/gui/AudioDialog.cxx b/src/gui/AudioDialog.cxx index 0993423ad..d89a696d3 100644 --- a/src/gui/AudioDialog.cxx +++ b/src/gui/AudioDialog.cxx @@ -214,7 +214,6 @@ void AudioDialog::saveConfig() // Stereo audioSettings.setStereo(myStereoSoundPopup->getSelectedTag().toString()); - //TODO: instance().sound().setStereo(myStereoSoundPopup->getSelectedTag().toString()); AudioSettings::Preset preset = static_cast(myModePopup->getSelectedTag().toInt()); audioSettings.setPreset(preset); From 5365fc5c5efb34ec5a1e5c470361264b3d83190c Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 29 Aug 2018 14:04:16 +0200 Subject: [PATCH 069/126] removed (*) in AudioDialog and screenshots --- docs/graphics/options_audio.png | Bin 5141 -> 5023 bytes src/gui/AudioDialog.cxx | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/graphics/options_audio.png b/docs/graphics/options_audio.png index 0ac23f7d4b08ad9ecb7e9b8237f390040d059466..e54e9bc75b23d3ceb10497649ec5a45c6575b28e 100644 GIT binary patch delta 3669 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 ArT_o{ delta 3836 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 GJMn*)H(6K! diff --git a/src/gui/AudioDialog.cxx b/src/gui/AudioDialog.cxx index d89a696d3..30182785f 100644 --- a/src/gui/AudioDialog.cxx +++ b/src/gui/AudioDialog.cxx @@ -110,7 +110,7 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, VarList::push_back(items, "4 KB", 4096); myFragsizePopup = new PopUpWidget(this, font, xpos, ypos, pwidth, lineHeight, - items, "Fragment size (*) ", lwidth); + items, "Fragment size", lwidth); wid.push_back(myFragsizePopup); ypos += lineHeight + VGAP; @@ -121,7 +121,7 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, VarList::push_back(items, "96000 Hz", 96000); myFreqPopup = new PopUpWidget(this, font, xpos, ypos, pwidth, lineHeight, - items, "Sample rate (*) ", lwidth); + items, "Sample rate", lwidth); wid.push_back(myFreqPopup); ypos += lineHeight + VGAP; From 79fd588f8a4a9e48fb35fdc3290f179d7e42c4fc Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 29 Aug 2018 14:50:31 +0200 Subject: [PATCH 070/126] fixed #367 made logger dialog slightly smaller (95%) --- src/gui/LoggerDialog.cxx | 6 +++--- src/gui/OptionsDialog.cxx | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gui/LoggerDialog.cxx b/src/gui/LoggerDialog.cxx index 18fb3b913..35b6cf4c6 100644 --- a/src/gui/LoggerDialog.cxx +++ b/src/gui/LoggerDialog.cxx @@ -43,9 +43,9 @@ LoggerDialog::LoggerDialog(OSystem& osystem, DialogContainer& parent, WidgetArray wid; // Set real dimensions - // This is one dialog that can take as much space as is available - _w = max_w; - _h = max_h; + // This is one dialog that can take as much space as is available, use 95% + _w = max_w * 0.95; + _h = max_h * 0.95; // Test listing of the log output xpos = 10; ypos = 10 + _th; diff --git a/src/gui/OptionsDialog.cxx b/src/gui/OptionsDialog.cxx index 584e414b0..afcbde585 100644 --- a/src/gui/OptionsDialog.cxx +++ b/src/gui/OptionsDialog.cxx @@ -260,9 +260,10 @@ void OptionsDialog::handleCommand(CommandSender* sender, int cmd, { uInt32 w = 0, h = 0; bool uselargefont = getResizableBounds(w, h); + const GUI::Rect& r = instance().frameBuffer().imageRect(); myLoggerDialog = make_unique(instance(), parent(), - instance().frameBuffer().font(), w, h, uselargefont); + instance().frameBuffer().font(), r.width(), r.height(), uselargefont); } myLoggerDialog->open(); break; From 7dd433a1165509de4b7093ca1e8cca6a4756a56b Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 29 Aug 2018 15:05:36 +0200 Subject: [PATCH 071/126] fixed size of `BrowserDialog` (may be refactored) --- src/gui/ConfigPathDialog.cxx | 4 +++- src/gui/SnapshotDialog.cxx | 4 +++- src/gui/UIDialog.cxx | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/gui/ConfigPathDialog.cxx b/src/gui/ConfigPathDialog.cxx index 90c4ab7b7..272a0689f 100644 --- a/src/gui/ConfigPathDialog.cxx +++ b/src/gui/ConfigPathDialog.cxx @@ -23,6 +23,7 @@ #include "LauncherDialog.hxx" #include "PopUpWidget.hxx" #include "Settings.hxx" +#include "FrameBuffer.hxx" #include "ConfigPathDialog.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -292,11 +293,12 @@ void ConfigPathDialog::createBrowser(const string& title) { uInt32 w = 0, h = 0; getResizableBounds(w, h); + const GUI::Rect& r = instance().frameBuffer().imageRect(); // Create file browser dialog if(!myBrowser || uInt32(myBrowser->getWidth()) != w || uInt32(myBrowser->getHeight()) != h) - myBrowser = make_unique(this, myFont, w, h, title); + myBrowser = make_unique(this, myFont, r.width()*0.95, r.height()*0.95, title); else myBrowser->setTitle(title); } diff --git a/src/gui/SnapshotDialog.cxx b/src/gui/SnapshotDialog.cxx index 96525c7b3..40c9a0a6d 100644 --- a/src/gui/SnapshotDialog.cxx +++ b/src/gui/SnapshotDialog.cxx @@ -22,6 +22,7 @@ #include "Font.hxx" #include "LauncherDialog.hxx" #include "Settings.hxx" +#include "FrameBuffer.hxx" #include "SnapshotDialog.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -181,11 +182,12 @@ void SnapshotDialog::createBrowser(const string& title) { uInt32 w = 0, h = 0; getResizableBounds(w, h); + const GUI::Rect& r = instance().frameBuffer().imageRect(); // Create file browser dialog if(!myBrowser || uInt32(myBrowser->getWidth()) != w || uInt32(myBrowser->getHeight()) != h) - myBrowser = make_unique(this, myFont, w, h, title); + myBrowser = make_unique(this, myFont, r.width()*0.95, r.height()*0.95, title); else myBrowser->setTitle(title); } diff --git a/src/gui/UIDialog.cxx b/src/gui/UIDialog.cxx index 7ca574954..1a7f56ebf 100644 --- a/src/gui/UIDialog.cxx +++ b/src/gui/UIDialog.cxx @@ -397,11 +397,12 @@ void UIDialog::createBrowser(const string& title) { uInt32 w = 0, h = 0; getResizableBounds(w, h); + const GUI::Rect& r = instance().frameBuffer().imageRect(); // Create file browser dialog if(!myBrowser || uInt32(myBrowser->getWidth()) != w || uInt32(myBrowser->getHeight()) != h) - myBrowser = make_unique(this, myFont, w, h, title); + myBrowser = make_unique(this, myFont, r.width()*0.95, r.height()*0.95, title); else myBrowser->setTitle(title); } From e9a6deee707496ee425c31e51b1272f9e701c7aa Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 29 Aug 2018 15:28:24 +0200 Subject: [PATCH 072/126] reversed aspect ratio settings for NTSC50, PAL60 and SECAM60 --- src/emucore/FrameBuffer.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index dccc2225f..f408941f5 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -812,8 +812,8 @@ void FrameBuffer::setAvailableVidModes(uInt32 baseWidth, uInt32 baseHeight) myDesktopSize.w, myDesktopSize.h); // Aspect ratio - uInt32 aspect = myOSystem.settings().getInt(myOSystem.console().timing() == ConsoleTiming::ntsc ? - "tia.aspectn" : "tia.aspectp"); + uInt32 aspect = myOSystem.settings().getInt(myOSystem.console().tia().frameLayout() == FrameLayout::ntsc ? + "tia.aspectn" : "tia.aspectp"); // Figure our the smallest zoom level we can use uInt32 firstZoom = 2; From dc630b4dd65062ead3f1fb9197a451e6948b3b72 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 29 Aug 2018 15:37:10 +0200 Subject: [PATCH 073/126] Revert "fixed #367" This reverts commit 79fd588f8a4a9e48fb35fdc3290f179d7e42c4fc. --- src/gui/ConfigPathDialog.cxx | 4 +--- src/gui/LoggerDialog.cxx | 6 +++--- src/gui/OptionsDialog.cxx | 3 +-- src/gui/SnapshotDialog.cxx | 4 +--- src/gui/UIDialog.cxx | 3 +-- 5 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/gui/ConfigPathDialog.cxx b/src/gui/ConfigPathDialog.cxx index 272a0689f..90c4ab7b7 100644 --- a/src/gui/ConfigPathDialog.cxx +++ b/src/gui/ConfigPathDialog.cxx @@ -23,7 +23,6 @@ #include "LauncherDialog.hxx" #include "PopUpWidget.hxx" #include "Settings.hxx" -#include "FrameBuffer.hxx" #include "ConfigPathDialog.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -293,12 +292,11 @@ void ConfigPathDialog::createBrowser(const string& title) { uInt32 w = 0, h = 0; getResizableBounds(w, h); - const GUI::Rect& r = instance().frameBuffer().imageRect(); // Create file browser dialog if(!myBrowser || uInt32(myBrowser->getWidth()) != w || uInt32(myBrowser->getHeight()) != h) - myBrowser = make_unique(this, myFont, r.width()*0.95, r.height()*0.95, title); + myBrowser = make_unique(this, myFont, w, h, title); else myBrowser->setTitle(title); } diff --git a/src/gui/LoggerDialog.cxx b/src/gui/LoggerDialog.cxx index 35b6cf4c6..18fb3b913 100644 --- a/src/gui/LoggerDialog.cxx +++ b/src/gui/LoggerDialog.cxx @@ -43,9 +43,9 @@ LoggerDialog::LoggerDialog(OSystem& osystem, DialogContainer& parent, WidgetArray wid; // Set real dimensions - // This is one dialog that can take as much space as is available, use 95% - _w = max_w * 0.95; - _h = max_h * 0.95; + // This is one dialog that can take as much space as is available + _w = max_w; + _h = max_h; // Test listing of the log output xpos = 10; ypos = 10 + _th; diff --git a/src/gui/OptionsDialog.cxx b/src/gui/OptionsDialog.cxx index afcbde585..584e414b0 100644 --- a/src/gui/OptionsDialog.cxx +++ b/src/gui/OptionsDialog.cxx @@ -260,10 +260,9 @@ void OptionsDialog::handleCommand(CommandSender* sender, int cmd, { uInt32 w = 0, h = 0; bool uselargefont = getResizableBounds(w, h); - const GUI::Rect& r = instance().frameBuffer().imageRect(); myLoggerDialog = make_unique(instance(), parent(), - instance().frameBuffer().font(), r.width(), r.height(), uselargefont); + instance().frameBuffer().font(), w, h, uselargefont); } myLoggerDialog->open(); break; diff --git a/src/gui/SnapshotDialog.cxx b/src/gui/SnapshotDialog.cxx index 40c9a0a6d..96525c7b3 100644 --- a/src/gui/SnapshotDialog.cxx +++ b/src/gui/SnapshotDialog.cxx @@ -22,7 +22,6 @@ #include "Font.hxx" #include "LauncherDialog.hxx" #include "Settings.hxx" -#include "FrameBuffer.hxx" #include "SnapshotDialog.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -182,12 +181,11 @@ void SnapshotDialog::createBrowser(const string& title) { uInt32 w = 0, h = 0; getResizableBounds(w, h); - const GUI::Rect& r = instance().frameBuffer().imageRect(); // Create file browser dialog if(!myBrowser || uInt32(myBrowser->getWidth()) != w || uInt32(myBrowser->getHeight()) != h) - myBrowser = make_unique(this, myFont, r.width()*0.95, r.height()*0.95, title); + myBrowser = make_unique(this, myFont, w, h, title); else myBrowser->setTitle(title); } diff --git a/src/gui/UIDialog.cxx b/src/gui/UIDialog.cxx index 1a7f56ebf..7ca574954 100644 --- a/src/gui/UIDialog.cxx +++ b/src/gui/UIDialog.cxx @@ -397,12 +397,11 @@ void UIDialog::createBrowser(const string& title) { uInt32 w = 0, h = 0; getResizableBounds(w, h); - const GUI::Rect& r = instance().frameBuffer().imageRect(); // Create file browser dialog if(!myBrowser || uInt32(myBrowser->getWidth()) != w || uInt32(myBrowser->getHeight()) != h) - myBrowser = make_unique(this, myFont, r.width()*0.95, r.height()*0.95, title); + myBrowser = make_unique(this, myFont, w, h, title); else myBrowser->setTitle(title); } From 0b61a71e58c3b3b2e6955a9acab3f57cd50f2176 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 29 Aug 2018 16:01:01 +0200 Subject: [PATCH 074/126] aspect ration now affects height instead of width fixes #368 --- Changes.txt | 2 ++ src/emucore/FrameBuffer.cxx | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Changes.txt b/Changes.txt index 7d6eab080..9e1ea0f24 100644 --- a/Changes.txt +++ b/Changes.txt @@ -72,6 +72,8 @@ * Updated PAL palette. + * Aspect ratio now affects height instead of width (like on a real CRT) + * For UNIX systems: in the ROM launcher, when using symlinks use the symlink pathname instead of the underlying filesystem pathname. diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index f408941f5..e032c6066 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -917,9 +917,9 @@ VideoMode::VideoMode(uInt32 iw, uInt32 ih, uInt32 sw, uInt32 sh, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void VideoMode::applyAspectCorrection(uInt32 aspect, bool stretch) { - // Width is modified by aspect ratio; other factors may be applied below - uInt32 iw = uInt32(float(image.width() * aspect) / 100.0); - uInt32 ih = image.height(); + // Height is modified by aspect ratio; other factors may be applied below + uInt32 iw = image.width(); + uInt32 ih = image.height() / aspect * 100.0; if(fsIndex != -1) { From a2d7ac188b3e6a625a32edc5a8d3b4b71f8f92a1 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 29 Aug 2018 11:40:21 -0230 Subject: [PATCH 075/126] Dynamic dialogs are now correctly sized according to the current window size. - This fixes issue 367, and allows Logger and Browser dialogs to be displayed --- Changes.txt | 2 +- src/gui/ConfigPathDialog.cxx | 2 +- src/gui/Dialog.cxx | 18 ++++--------- src/gui/Dialog.hxx | 19 ++++++++++--- src/gui/OptionsDialog.cxx | 52 +++++++++++++++++++++++------------- src/gui/SnapshotDialog.cxx | 2 +- src/gui/TimeMachine.cxx | 16 +++-------- src/gui/TimeMachine.hxx | 2 +- src/gui/UIDialog.cxx | 3 +-- 9 files changed, 64 insertions(+), 52 deletions(-) diff --git a/Changes.txt b/Changes.txt index 9e1ea0f24..e5c335a76 100644 --- a/Changes.txt +++ b/Changes.txt @@ -72,7 +72,7 @@ * Updated PAL palette. - * Aspect ratio now affects height instead of width (like on a real CRT) + * Aspect ratio now affects height instead of width (like on a real CRT). * For UNIX systems: in the ROM launcher, when using symlinks use the symlink pathname instead of the underlying filesystem pathname. diff --git a/src/gui/ConfigPathDialog.cxx b/src/gui/ConfigPathDialog.cxx index 90c4ab7b7..9b509253f 100644 --- a/src/gui/ConfigPathDialog.cxx +++ b/src/gui/ConfigPathDialog.cxx @@ -291,7 +291,7 @@ void ConfigPathDialog::handleCommand(CommandSender* sender, int cmd, void ConfigPathDialog::createBrowser(const string& title) { uInt32 w = 0, h = 0; - getResizableBounds(w, h); + getDynamicBounds(w, h); // Create file browser dialog if(!myBrowser || uInt32(myBrowser->getWidth()) != w || diff --git a/src/gui/Dialog.cxx b/src/gui/Dialog.cxx index 94fcbc059..16599262e 100644 --- a/src/gui/Dialog.cxx +++ b/src/gui/Dialog.cxx @@ -798,28 +798,20 @@ Widget* Dialog::TabFocus::getNewFocus() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Dialog::getResizableBounds(uInt32& w, uInt32& h) const +bool Dialog::getDynamicBounds(uInt32& w, uInt32& h) const { const GUI::Rect& r = instance().frameBuffer().imageRect(); - bool ntsc = true; - - if(instance().hasConsole()) - { - ntsc = instance().console().tia().frameLayout() == FrameLayout::ntsc; - } - - uInt32 aspect = instance().settings().getInt(ntsc ?"tia.aspectn" : "tia.aspectp"); if(r.width() <= FrameBuffer::kFBMinW || r.height() <= FrameBuffer::kFBMinH) { - w = uInt32(aspect * FrameBuffer::kTIAMinW) * 2 / 100; - h = FrameBuffer::kTIAMinH * 2; + w = r.width(); + h = r.height(); return false; } else { - w = std::max(uInt32(aspect * r.width() / 100), uInt32(FrameBuffer::kFBMinW)); - h = std::max(uInt32(aspect * r.height() / 100), uInt32(FrameBuffer::kFBMinH)); + w = uInt32(0.9 * r.width()); + h = uInt32(0.9 * r.height()); return true; } } diff --git a/src/gui/Dialog.hxx b/src/gui/Dialog.hxx index 3c7965a2a..ba0de57d9 100644 --- a/src/gui/Dialog.hxx +++ b/src/gui/Dialog.hxx @@ -97,10 +97,23 @@ class Dialog : public GuiObject void setTitle(const string& title); bool hasTitle() { return !_title.empty(); } - /** Determine the maximum bounds based on the given width and height - Returns whether or not a large font can be used within these bounds. + /** + Determine the maximum width/height of a dialog based on the minimum + allowable bounds, also taking into account the current window size. + Currently scales the width/height to 90% of allowable area when possible. + + NOTE: This method is meant to be used for dynamic, resizeable dialogs. + That is, those that can change size during a program run, and + *have* to take the current window size into account. + + @param w The resulting width to use for the dialog + @param h The resulting height to use for the dialog + + @return True if the dialog fits in the current window (scaled to 90%) + False if the dialog is smaller than the current window, and + has to be scaled down */ - bool getResizableBounds(uInt32& w, uInt32& h) const; + bool getDynamicBounds(uInt32& w, uInt32& h) const; protected: virtual void draw() override { } diff --git a/src/gui/OptionsDialog.cxx b/src/gui/OptionsDialog.cxx index 584e414b0..b8685fb5f 100644 --- a/src/gui/OptionsDialog.cxx +++ b/src/gui/OptionsDialog.cxx @@ -136,7 +136,6 @@ OptionsDialog::OptionsDialog(OSystem& osystem, DialogContainer& parent, #ifdef CHEATCODE_SUPPORT myCheatCodeDialog = make_unique(osystem, parent, _font); #endif - myLoggerDialog = make_unique(osystem, parent, _font, max_w, max_h); myDeveloperDialog = make_unique(osystem, parent, _font, max_w, max_h); myHelpDialog = make_unique(osystem, parent, _font); myAboutDialog = make_unique(osystem, parent, _font); @@ -188,17 +187,21 @@ void OptionsDialog::handleCommand(CommandSender* sender, int cmd, switch(cmd) { case kVidCmd: + { // This dialog is resizable under certain conditions, so we need // to re-create it as necessary - if(myMode != launcher) - { - uInt32 w = 0, h = 0; + uInt32 w = 0, h = 0; + getDynamicBounds(w, h); - getResizableBounds(w, h); + if(myVideoDialog == nullptr || + uInt32(myVideoDialog->getWidth()) != w || + uInt32(myVideoDialog->getHeight()) != h) + { myVideoDialog = make_unique(instance(), parent(), instance().frameBuffer().font(), w, h); } myVideoDialog->open(); break; + } case kAudCmd: myAudioDialog->open(); @@ -213,31 +216,39 @@ void OptionsDialog::handleCommand(CommandSender* sender, int cmd, break; case kSnapCmd: + { // This dialog is resizable under certain conditions, so we need // to re-create it as necessary - if(myMode != launcher) - { - uInt32 w = 0, h = 0; + uInt32 w = 0, h = 0; + getDynamicBounds(w, h); - getResizableBounds(w, h); + if(mySnapshotDialog == nullptr || + uInt32(mySnapshotDialog->getWidth()) != w || + uInt32(mySnapshotDialog->getHeight()) != h) + { mySnapshotDialog = make_unique(instance(), parent(), instance().frameBuffer().font(), w, h); } mySnapshotDialog->open(); break; + } case kCfgPathsCmd: + { // This dialog is resizable under certain conditions, so we need // to re-create it as necessary - if(myMode != launcher) - { - uInt32 w = 0, h = 0; + uInt32 w = 0, h = 0; + getDynamicBounds(w, h); - getResizableBounds(w, h); + if(myConfigPathDialog == nullptr || + uInt32(myConfigPathDialog->getWidth()) != w || + uInt32(myConfigPathDialog->getHeight()) != h) + { myConfigPathDialog = make_unique(instance(), parent(), - instance().frameBuffer().font(), _boss, w, h); + instance().frameBuffer().font(), _boss, w, h); } myConfigPathDialog->open(); break; + } case kAuditCmd: myRomAuditDialog->open(); @@ -254,18 +265,23 @@ void OptionsDialog::handleCommand(CommandSender* sender, int cmd, #endif case kLoggerCmd: + { // This dialog is resizable under certain conditions, so we need // to re-create it as necessary - if(myMode != launcher) - { - uInt32 w = 0, h = 0; - bool uselargefont = getResizableBounds(w, h); + uInt32 w = 0, h = 0; + bool uselargefont = getDynamicBounds(w, h); + if(myLoggerDialog == nullptr || + uInt32(myLoggerDialog->getWidth()) != w || + uInt32(myLoggerDialog->getHeight()) != h) + { myLoggerDialog = make_unique(instance(), parent(), instance().frameBuffer().font(), w, h, uselargefont); } + myLoggerDialog->open(); break; + } case kDevelopCmd: myDeveloperDialog->open(); diff --git a/src/gui/SnapshotDialog.cxx b/src/gui/SnapshotDialog.cxx index 96525c7b3..155c5a3b8 100644 --- a/src/gui/SnapshotDialog.cxx +++ b/src/gui/SnapshotDialog.cxx @@ -180,7 +180,7 @@ void SnapshotDialog::handleCommand(CommandSender* sender, int cmd, void SnapshotDialog::createBrowser(const string& title) { uInt32 w = 0, h = 0; - getResizableBounds(w, h); + getDynamicBounds(w, h); // Create file browser dialog if(!myBrowser || uInt32(myBrowser->getWidth()) != w || diff --git a/src/gui/TimeMachine.cxx b/src/gui/TimeMachine.cxx index 6df6cd5cf..c34fab0be 100644 --- a/src/gui/TimeMachine.cxx +++ b/src/gui/TimeMachine.cxx @@ -31,21 +31,13 @@ TimeMachine::TimeMachine(OSystem& osystem) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void TimeMachine::requestResize() { - uInt32 w, h; - myBaseDialog->getResizableBounds(w, h); - - // If dialog is too large for given area, we need to resize it - // Otherwise, make it 80% of the allowable width - int newWidth = myWidth; - if(w < FrameBuffer::kFBMinW) - newWidth = w; - else if(myBaseDialog->getWidth() != 0.8 * w) - newWidth = uInt32(0.8 * w); + uInt32 w = 0, h = 0; + myBaseDialog->getDynamicBounds(w, h); // Only re-create when absolutely necessary - if(myWidth != newWidth) + if(myWidth != w) { - myWidth = newWidth; + myWidth = w; Dialog* oldPtr = myBaseDialog; Int32 enterWinds = static_cast(myBaseDialog)->getEnterWinds(); delete myBaseDialog; diff --git a/src/gui/TimeMachine.hxx b/src/gui/TimeMachine.hxx index e33639c9e..10adfb063 100644 --- a/src/gui/TimeMachine.hxx +++ b/src/gui/TimeMachine.hxx @@ -45,7 +45,7 @@ class TimeMachine : public DialogContainer void setEnterWinds(Int32 numWinds); private: - int myWidth; + uInt32 myWidth; private: // Following constructors and assignment operators not supported diff --git a/src/gui/UIDialog.cxx b/src/gui/UIDialog.cxx index 7ca574954..dc1303b13 100644 --- a/src/gui/UIDialog.cxx +++ b/src/gui/UIDialog.cxx @@ -396,7 +396,7 @@ void UIDialog::handleRomViewer() void UIDialog::createBrowser(const string& title) { uInt32 w = 0, h = 0; - getResizableBounds(w, h); + getDynamicBounds(w, h); // Create file browser dialog if(!myBrowser || uInt32(myBrowser->getWidth()) != w || @@ -405,4 +405,3 @@ void UIDialog::createBrowser(const string& title) else myBrowser->setTitle(title); } - From 3b00fe45cd2faf00e280bdd9a80153351eff99d5 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 29 Aug 2018 16:39:18 +0200 Subject: [PATCH 076/126] Revert "aspect ration now affects height instead of width" This reverts commit 0b61a71e58c3b3b2e6955a9acab3f57cd50f2176. --- Changes.txt | 2 -- src/emucore/FrameBuffer.cxx | 6 +++--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Changes.txt b/Changes.txt index 9e1ea0f24..7d6eab080 100644 --- a/Changes.txt +++ b/Changes.txt @@ -72,8 +72,6 @@ * Updated PAL palette. - * Aspect ratio now affects height instead of width (like on a real CRT) - * For UNIX systems: in the ROM launcher, when using symlinks use the symlink pathname instead of the underlying filesystem pathname. diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index e032c6066..f408941f5 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -917,9 +917,9 @@ VideoMode::VideoMode(uInt32 iw, uInt32 ih, uInt32 sw, uInt32 sh, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void VideoMode::applyAspectCorrection(uInt32 aspect, bool stretch) { - // Height is modified by aspect ratio; other factors may be applied below - uInt32 iw = image.width(); - uInt32 ih = image.height() / aspect * 100.0; + // Width is modified by aspect ratio; other factors may be applied below + uInt32 iw = uInt32(float(image.width() * aspect) / 100.0); + uInt32 ih = image.height(); if(fsIndex != -1) { From 731a76e1a9ae75f07047714ea629d07a5ce50bcf Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 29 Aug 2018 13:36:01 -0230 Subject: [PATCH 077/126] Make dynamically resizeable dialogs take 95% of available space. --- src/gui/Dialog.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/Dialog.cxx b/src/gui/Dialog.cxx index 16599262e..93c983549 100644 --- a/src/gui/Dialog.cxx +++ b/src/gui/Dialog.cxx @@ -810,8 +810,8 @@ bool Dialog::getDynamicBounds(uInt32& w, uInt32& h) const } else { - w = uInt32(0.9 * r.width()); - h = uInt32(0.9 * r.height()); + w = uInt32(0.95 * r.width()); + h = uInt32(0.95 * r.height()); return true; } } From f0986369657f2e717b6806bdeb4fdfa845e31b24 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 09:18:35 -0230 Subject: [PATCH 078/126] Fairly large restructuring of the 'BSType' code - class has been renamed to 'Bankswitch' - it is now a proper (static) class with namespacing 'Bankswitch' now contains all logic for determing what a proper ROM filename is. So some functions have moved from LauncherFilterDialog to here (that class will be removed soon). In the process, implemented issue 261 (file extension determines BS type to use). --- src/emucore/BSType.hxx | 127 --------------- src/emucore/Bankswitch.cxx | 186 ++++++++++++++++++++++ src/emucore/Bankswitch.hxx | 106 +++++++++++++ src/emucore/CartDetector.cxx | 261 ++++++++++++++++--------------- src/emucore/CartDetector.hxx | 19 +-- src/emucore/OSystem.cxx | 2 +- src/emucore/module.mk | 1 + src/gui/GameInfoDialog.cxx | 6 +- src/gui/GlobalPropsDialog.cxx | 6 +- src/gui/LauncherDialog.cxx | 7 +- src/gui/LauncherFilterDialog.cxx | 21 --- src/gui/LauncherFilterDialog.hxx | 8 - src/gui/RomAuditDialog.cxx | 4 +- 13 files changed, 449 insertions(+), 305 deletions(-) delete mode 100644 src/emucore/BSType.hxx create mode 100644 src/emucore/Bankswitch.cxx create mode 100644 src/emucore/Bankswitch.hxx diff --git a/src/emucore/BSType.hxx b/src/emucore/BSType.hxx deleted file mode 100644 index 8600f92ea..000000000 --- a/src/emucore/BSType.hxx +++ /dev/null @@ -1,127 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2018 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -#ifndef BSTYPE_HXX -#define BSTYPE_HXX - -#include "bspf.hxx" - -// Currently supported bankswitch schemes -enum class BSType { - _AUTO, _0840, _2IN1, _4IN1, _8IN1, _16IN1, _32IN1, - _64IN1, _128IN1, _2K, _3E, _3EP, _3F, _4A50, - _4K, _4KSC, _AR, _BF, _BFSC, _BUS, _CDF, - _CM, _CTY, _CV, _CVP, _DASH, _DF, _DFSC, - _DPC, _DPCP, _E0, _E7, _E78K, _EF, _EFSC, - _F0, _F4, _F4SC, _F6, _F6SC, _F8, _F8SC, - _FA, _FA2, _FE, _MDM, _SB, _UA, _WD, - _X07, -#ifdef CUSTOM_ARM - _CUSTOM, -#endif - NumSchemes -}; - -// Info about the various bankswitch schemes, useful for displaying -// in GUI dropdown boxes, etc -struct BSDescription { - const char* const name; - const char* const desc; -}; - -static BSDescription BSList[int(BSType::NumSchemes)] = { - { "AUTO", "Auto-detect" }, - { "0840", "0840 (8K ECONObank)" }, - { "2IN1", "2IN1 Multicart (4-32K)" }, - { "4IN1", "4IN1 Multicart (8-32K)" }, - { "8IN1", "8IN1 Multicart (16-64K)" }, - { "16IN1", "16IN1 Multicart (32-128K)" }, - { "32IN1", "32IN1 Multicart (64/128K)" }, - { "64IN1", "64IN1 Multicart (128/256K)" }, - { "128IN1", "128IN1 Multicart (256/512K)" }, - { "2K", "2K (64-2048 bytes Atari)" }, - { "3E", "3E (32K Tigervision)" }, - { "3E+", "3E+ (TJ modified DASH)" }, - { "3F", "3F (512K Tigervision)" }, - { "4A50", "4A50 (64K 4A50 + ram)" }, - { "4K", "4K (4K Atari)" }, - { "4KSC", "4KSC (CPUWIZ 4K + ram)" }, - { "AR", "AR (Supercharger)" }, - { "BF", "BF (CPUWIZ 256K)" }, - { "BFSC", "BFSC (CPUWIZ 256K + ram)" }, - { "BUS", "BUS (Experimental)" }, - { "CDF", "CDF (Chris, Darrell, Fred)" }, - { "CM", "CM (SpectraVideo CompuMate)" }, - { "CTY", "CTY (CDW - Chetiry)" }, - { "CV", "CV (Commavid extra ram)" }, - { "CV+", "CV+ (Extended Commavid)" }, - { "DASH", "DASH (Experimental)" }, - { "DF", "DF (CPUWIZ 128K)" }, - { "DFSC", "DFSC (CPUWIZ 128K + ram)" }, - { "DPC", "DPC (Pitfall II)" }, - { "DPC+", "DPC+ (Enhanced DPC)" }, - { "E0", "E0 (8K Parker Bros)" }, - { "E7", "E7 (16K M-network)" }, - { "E78K", "E78K (8K M-network)" }, - { "EF", "EF (64K H. Runner)" }, - { "EFSC", "EFSC (64K H. Runner + ram)" }, - { "F0", "F0 (Dynacom Megaboy)" }, - { "F4", "F4 (32K Atari)" }, - { "F4SC", "F4SC (32K Atari + ram)" }, - { "F6", "F6 (16K Atari)" }, - { "F6SC", "F6SC (16K Atari + ram)" }, - { "F8", "F8 (8K Atari)" }, - { "F8SC", "F8SC (8K Atari + ram)" }, - { "FA", "FA (CBS RAM Plus)" }, - { "FA2", "FA2 (CBS RAM Plus 24/28K)" }, - { "FE", "FE (8K Decathlon)" }, - { "MDM", "MDM (Menu Driven Megacart)" }, - { "SB", "SB (128-256K SUPERbank)" }, - { "UA", "UA (8K UA Ltd.)" }, - { "WD", "WD (Experimental)" }, - { "X07", "X07 (64K AtariAge)" }, -#ifdef CUSTOM_ARM - { "CUSTOM", "CUSTOM (ARM)" } -#endif -}; - -class Bankswitch -{ - public: - // Convert BSType enum to string - static string typeToName(BSType type) { return BSList[int(type)].name; } - - // Convert string to BSType enum - static BSType nameToType(const string& name) - { - for(int i = 0; i < int(BSType::NumSchemes); ++i) - if(BSPF::equalsIgnoreCase(BSList[i].name, name)) - return BSType(i); - - return BSType::_AUTO; - } - - private: - // Following constructors and assignment operators not supported - Bankswitch() = delete; - Bankswitch(const Bankswitch&) = delete; - Bankswitch(Bankswitch&&) = delete; - Bankswitch& operator=(const Bankswitch&) = delete; - Bankswitch& operator=(Bankswitch&&) = delete; -}; - -#endif diff --git a/src/emucore/Bankswitch.cxx b/src/emucore/Bankswitch.cxx new file mode 100644 index 000000000..766cf401b --- /dev/null +++ b/src/emucore/Bankswitch.cxx @@ -0,0 +1,186 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2018 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#include "Bankswitch.hxx" + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string Bankswitch::typeToName(Bankswitch::Type type) +{ + return BSList[int(type)].name; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Bankswitch::Type Bankswitch::nameToType(const string& name) +{ + for(int i = 0; i < int(Bankswitch::Type::NumSchemes); ++i) + if(BSPF::equalsIgnoreCase(BSList[i].name, name)) + return Bankswitch::Type(i); + + return Bankswitch::Type::_AUTO; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Bankswitch::Type Bankswitch::typeFromExtension(const FilesystemNode& file) +{ + const string& name = file.getPath(); + string::size_type idx = name.find_last_of('.'); + if(idx != string::npos) + { + auto it = ourExtensions.find(name.c_str() + idx + 1); + if(it != ourExtensions.end()) + return it->second; + } + + return Bankswitch::Type::_AUTO; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool Bankswitch::isValidRomName(const FilesystemNode& file, string& ext) +{ + const string& name = file.getPath(); + string::size_type idx = name.find_last_of('.'); + if(idx != string::npos) + { + const char* const e = name.c_str() + idx + 1; + auto it = ourExtensions.find(e); + if(it != ourExtensions.end()) + { + ext = e; + return true; + } + } + return false; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool Bankswitch::isValidRomName(const FilesystemNode& file) +{ + string extension; // not actually used + return isValidRomName(file, extension); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Bankswitch::Description Bankswitch::BSList[int(Bankswitch::Type::NumSchemes)] = { + { "AUTO", "Auto-detect" }, + { "0840", "0840 (8K ECONObank)" }, + { "2IN1", "2IN1 Multicart (4-32K)" }, + { "4IN1", "4IN1 Multicart (8-32K)" }, + { "8IN1", "8IN1 Multicart (16-64K)" }, + { "16IN1", "16IN1 Multicart (32-128K)" }, + { "32IN1", "32IN1 Multicart (64/128K)" }, + { "64IN1", "64IN1 Multicart (128/256K)" }, + { "128IN1", "128IN1 Multicart (256/512K)" }, + { "2K", "2K (64-2048 bytes Atari)" }, + { "3E", "3E (32K Tigervision)" }, + { "3E+", "3E+ (TJ modified DASH)" }, + { "3F", "3F (512K Tigervision)" }, + { "4A50", "4A50 (64K 4A50 + ram)" }, + { "4K", "4K (4K Atari)" }, + { "4KSC", "4KSC (CPUWIZ 4K + ram)" }, + { "AR", "AR (Supercharger)" }, + { "BF", "BF (CPUWIZ 256K)" }, + { "BFSC", "BFSC (CPUWIZ 256K + ram)" }, + { "BUS", "BUS (Experimental)" }, + { "CDF", "CDF (Chris, Darrell, Fred)" }, + { "CM", "CM (SpectraVideo CompuMate)" }, + { "CTY", "CTY (CDW - Chetiry)" }, + { "CV", "CV (Commavid extra ram)" }, + { "CV+", "CV+ (Extended Commavid)" }, + { "DASH", "DASH (Experimental)" }, + { "DF", "DF (CPUWIZ 128K)" }, + { "DFSC", "DFSC (CPUWIZ 128K + ram)" }, + { "DPC", "DPC (Pitfall II)" }, + { "DPC+", "DPC+ (Enhanced DPC)" }, + { "E0", "E0 (8K Parker Bros)" }, + { "E7", "E7 (16K M-network)" }, + { "E78K", "E78K (8K M-network)" }, + { "EF", "EF (64K H. Runner)" }, + { "EFSC", "EFSC (64K H. Runner + ram)" }, + { "F0", "F0 (Dynacom Megaboy)" }, + { "F4", "F4 (32K Atari)" }, + { "F4SC", "F4SC (32K Atari + ram)" }, + { "F6", "F6 (16K Atari)" }, + { "F6SC", "F6SC (16K Atari + ram)" }, + { "F8", "F8 (8K Atari)" }, + { "F8SC", "F8SC (8K Atari + ram)" }, + { "FA", "FA (CBS RAM Plus)" }, + { "FA2", "FA2 (CBS RAM Plus 24/28K)" }, + { "FE", "FE (8K Decathlon)" }, + { "MDM", "MDM (Menu Driven Megacart)" }, + { "SB", "SB (128-256K SUPERbank)" }, + { "UA", "UA (8K UA Ltd.)" }, + { "WD", "WD (Experimental)" }, + { "X07", "X07 (64K AtariAge)" }, +#ifdef CUSTOM_ARM + { "CUSTOM", "CUSTOM (ARM)" } +#endif +}; + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Bankswitch::ExtensionMap Bankswitch::ourExtensions = { + // Normal file extensions that don't actually tell us anything + // about the bankswitch type to use + { "a26", Bankswitch::Type::_AUTO }, + { "bin", Bankswitch::Type::_AUTO }, + { "rom", Bankswitch::Type::_AUTO }, + { "gz", Bankswitch::Type::_AUTO }, + { "zip", Bankswitch::Type::_AUTO }, + { "cu", Bankswitch::Type::_AUTO }, + + // Types from UnoCart and HarmonyCart + { "084", Bankswitch::Type::_0840 }, + { "2K", Bankswitch::Type::_2K }, + { "3E", Bankswitch::Type::_3E }, + { "3EP", Bankswitch::Type::_3EP }, + { "3F", Bankswitch::Type::_3F }, + { "4A5", Bankswitch::Type::_4A50 }, + { "4K", Bankswitch::Type::_4K }, + { "4KS", Bankswitch::Type::_4KSC }, + { "AR", Bankswitch::Type::_AR }, + { "BF", Bankswitch::Type::_BF }, + { "BFS", Bankswitch::Type::_BFSC }, + { "BUS", Bankswitch::Type::_BUS }, + { "CDF", Bankswitch::Type::_CDF }, + { "CM", Bankswitch::Type::_CM }, + { "CTY", Bankswitch::Type::_CTY }, + { "CV", Bankswitch::Type::_CV }, + { "CVP", Bankswitch::Type::_CVP }, + { "DAS", Bankswitch::Type::_DASH }, + { "DF", Bankswitch::Type::_DF }, + { "DFS", Bankswitch::Type::_DFSC }, + { "DPC", Bankswitch::Type::_DPC }, + { "DPP", Bankswitch::Type::_DPCP }, + { "E0", Bankswitch::Type::_E0 }, + { "E7", Bankswitch::Type::_E7 }, + { "E78", Bankswitch::Type::_E78K }, + { "EF", Bankswitch::Type::_EF }, + { "EFS", Bankswitch::Type::_EFSC }, + { "F0", Bankswitch::Type::_F0 }, + { "F4", Bankswitch::Type::_F4 }, + { "F4S", Bankswitch::Type::_F4SC }, + { "F6", Bankswitch::Type::_F6 }, + { "F6S", Bankswitch::Type::_F6SC }, + { "F8", Bankswitch::Type::_F8 }, + { "F8S", Bankswitch::Type::_F8SC }, + { "FA", Bankswitch::Type::_FA }, + { "FA2", Bankswitch::Type::_FA2 }, + { "FE", Bankswitch::Type::_FE }, + { "MDM", Bankswitch::Type::_MDM }, + { "SB", Bankswitch::Type::_SB }, + { "UA", Bankswitch::Type::_UA }, + { "WD", Bankswitch::Type::_WD } +}; diff --git a/src/emucore/Bankswitch.hxx b/src/emucore/Bankswitch.hxx new file mode 100644 index 000000000..1f118bfd3 --- /dev/null +++ b/src/emucore/Bankswitch.hxx @@ -0,0 +1,106 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-2018 by Bradford W. Mott, Stephen Anthony +// and the Stella Team +// +// See the file "License.txt" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +//============================================================================ + +#ifndef BANKSWITCH_HXX +#define BANKSWITCH_HXX + +#include + +#include "FSNode.hxx" +#include "bspf.hxx" + +/** + This class contains all information about the bankswitch schemes supported + by Stella, as well as convenience functions to map from scheme type to + readable string, and vice-versa. + + It also includes all logic that determines what a 'valid' rom filename is. + That is, all extensions that represent valid schemes. + + @author Stephen Anthony +*/ +class Bankswitch +{ + public: + // Currently supported bankswitch schemes + enum class Type { + _AUTO, _0840, _2IN1, _4IN1, _8IN1, _16IN1, _32IN1, + _64IN1, _128IN1, _2K, _3E, _3EP, _3F, _4A50, + _4K, _4KSC, _AR, _BF, _BFSC, _BUS, _CDF, + _CM, _CTY, _CV, _CVP, _DASH, _DF, _DFSC, + _DPC, _DPCP, _E0, _E7, _E78K, _EF, _EFSC, + _F0, _F4, _F4SC, _F6, _F6SC, _F8, _F8SC, + _FA, _FA2, _FE, _MDM, _SB, _UA, _WD, + _X07, + #ifdef CUSTOM_ARM + _CUSTOM, + #endif + NumSchemes + }; + + // Info about the various bankswitch schemes, useful for displaying + // in GUI dropdown boxes, etc + struct Description { + const char* const name; + const char* const desc; + }; + static Description BSList[int(Type::NumSchemes)]; + + public: + // Convert BSType enum to string + static string typeToName(Bankswitch::Type type); + + // Convert string to BSType enum + static Bankswitch::Type nameToType(const string& name); + + // Determine bankswitch type by filename extension + // Use '_AUTO' if unknown + static Bankswitch::Type typeFromExtension(const FilesystemNode& file); + + /** + Is this a valid ROM filename (does it have a valid extension?). + + @param name File node of potential ROM file + @param ext The extension extracted from the given file + */ + static bool isValidRomName(const FilesystemNode& name, string& ext); + + /** + Convenience function when extension isn't needed. + */ + static bool isValidRomName(const FilesystemNode& name); + + private: + struct TypeComparator { + bool operator() (const string& a, const string& b) const { + return BSPF::compareIgnoreCase(a, b) < 0; + } + }; + using ExtensionMap = std::map; + + static ExtensionMap ourExtensions; + + private: + // Following constructors and assignment operators not supported + Bankswitch() = delete; + Bankswitch(const Bankswitch&) = delete; + Bankswitch(Bankswitch&&) = delete; + Bankswitch& operator=(const Bankswitch&) = delete; + Bankswitch& operator=(Bankswitch&&) = delete; +}; + +#endif diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx index 7541717a8..8eea8ef58 100644 --- a/src/emucore/CartDetector.cxx +++ b/src/emucore/CartDetector.cxx @@ -66,23 +66,30 @@ #include "CartDetector.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -unique_ptr CartDetector::create(const BytePtr& image, uInt32 size, - string& md5, const string& propertiesType, const OSystem& osystem) +unique_ptr CartDetector::create(const FilesystemNode& file, + const BytePtr& image, uInt32 size, string& md5, + const string& propertiesType, const OSystem& osystem) { unique_ptr cartridge; - BSType type = Bankswitch::nameToType(propertiesType), + Bankswitch::Type type = Bankswitch::nameToType(propertiesType), detectedType = type; string id; // Collect some info about the ROM ostringstream buf; + // First inspect the file extension itself + // If a valid type is found, it will override the one passed into this method + Bankswitch::Type typeByName = Bankswitch::typeFromExtension(file); + if(typeByName != Bankswitch::Type::_AUTO) + type = detectedType = typeByName; + // See if we should try to auto-detect the cartridge type // If we ask for extended info, always do an autodetect - if(type == BSType::_AUTO || osystem.settings().getBool("rominfo")) + if(type == Bankswitch::Type::_AUTO || osystem.settings().getBool("rominfo")) { detectedType = autodetectType(image, size); - if(type != BSType::_AUTO && type != detectedType) + if(type != Bankswitch::Type::_AUTO && type != detectedType) cerr << "Auto-detection not consistent: " << Bankswitch::typeToName(type) << ", " << Bankswitch::typeToName(detectedType) << endl; @@ -96,7 +103,7 @@ unique_ptr CartDetector::create(const BytePtr& image, uInt32 size, // Check for multicart first; if found, get the correct part of the image switch(type) { - case BSType::_2IN1: + case Bankswitch::Type::_2IN1: // Make sure we have a valid sized image if(size == 2*2048 || size == 2*4096 || size == 2*8192 || size == 2*16384) { @@ -109,7 +116,7 @@ unique_ptr CartDetector::create(const BytePtr& image, uInt32 size, Bankswitch::typeToName(type) + "'"); break; - case BSType::_4IN1: + case Bankswitch::Type::_4IN1: // Make sure we have a valid sized image if(size == 4*2048 || size == 4*4096 || size == 4*8192) { @@ -122,7 +129,7 @@ unique_ptr CartDetector::create(const BytePtr& image, uInt32 size, Bankswitch::typeToName(type) + "'"); break; - case BSType::_8IN1: + case Bankswitch::Type::_8IN1: // Make sure we have a valid sized image if(size == 8*2048 || size == 8*4096 || size == 8*8192) { @@ -135,7 +142,7 @@ unique_ptr CartDetector::create(const BytePtr& image, uInt32 size, Bankswitch::typeToName(type) + "'"); break; - case BSType::_16IN1: + case Bankswitch::Type::_16IN1: // Make sure we have a valid sized image if(size == 16*2048 || size == 16*4096 || size == 16*8192) { @@ -148,7 +155,7 @@ unique_ptr CartDetector::create(const BytePtr& image, uInt32 size, Bankswitch::typeToName(type) + "'"); break; - case BSType::_32IN1: + case Bankswitch::Type::_32IN1: // Make sure we have a valid sized image if(size == 32*2048 || size == 32*4096) { @@ -161,7 +168,7 @@ unique_ptr CartDetector::create(const BytePtr& image, uInt32 size, Bankswitch::typeToName(type) + "'"); break; - case BSType::_64IN1: + case Bankswitch::Type::_64IN1: // Make sure we have a valid sized image if(size == 64*2048 || size == 64*4096) { @@ -174,7 +181,7 @@ unique_ptr CartDetector::create(const BytePtr& image, uInt32 size, Bankswitch::typeToName(type) + "'"); break; - case BSType::_128IN1: + case Bankswitch::Type::_128IN1: // Make sure we have a valid sized image if(size == 128*2048 || size == 128*4096) { @@ -205,7 +212,7 @@ unique_ptr CartDetector::create(const BytePtr& image, uInt32 size, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - unique_ptr CartDetector::createFromMultiCart(const BytePtr& image, uInt32& size, - uInt32 numroms, string& md5, BSType type, string& id, const OSystem& osystem) + uInt32 numroms, string& md5, Bankswitch::Type type, string& id, const OSystem& osystem) { // Get a piece of the larger image uInt32 i = osystem.settings().getInt("romloadcount"); @@ -222,105 +229,105 @@ CartDetector::createFromMultiCart(const BytePtr& image, uInt32& size, // Move to the next game the next time this ROM is loaded osystem.settings().setValue("romloadcount", (i+1)%numroms); - if(size <= 2048) type = BSType::_2K; - else if(size == 4096) type = BSType::_4K; - else if(size == 8192) type = BSType::_F8; - else /* default */ type = BSType::_4K; + if(size <= 2048) type = Bankswitch::Type::_2K; + else if(size == 4096) type = Bankswitch::Type::_4K; + else if(size == 8192) type = Bankswitch::Type::_F8; + else /* default */ type = Bankswitch::Type::_4K; return createFromImage(slice, size, type, md5, osystem); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - unique_ptr -CartDetector::createFromImage(const BytePtr& image, uInt32 size, BSType type, +CartDetector::createFromImage(const BytePtr& image, uInt32 size, Bankswitch::Type type, const string& md5, const OSystem& osystem) { // We should know the cart's type by now so let's create it switch(type) { - case BSType::_0840: + case Bankswitch::Type::_0840: return make_unique(image, size, osystem.settings()); - case BSType::_2K: + case Bankswitch::Type::_2K: return make_unique(image, size, osystem.settings()); - case BSType::_3E: + case Bankswitch::Type::_3E: return make_unique(image, size, osystem.settings()); - case BSType::_3EP: + case Bankswitch::Type::_3EP: return make_unique(image, size, osystem.settings()); - case BSType::_3F: + case Bankswitch::Type::_3F: return make_unique(image, size, osystem.settings()); - case BSType::_4A50: + case Bankswitch::Type::_4A50: return make_unique(image, size, osystem.settings()); - case BSType::_4K: + case Bankswitch::Type::_4K: return make_unique(image, size, osystem.settings()); - case BSType::_4KSC: + case Bankswitch::Type::_4KSC: return make_unique(image, size, osystem.settings()); - case BSType::_AR: + case Bankswitch::Type::_AR: return make_unique(image, size, osystem.settings()); - case BSType::_BUS: + case Bankswitch::Type::_BUS: return make_unique(image, size, osystem.settings()); - case BSType::_CDF: + case Bankswitch::Type::_CDF: return make_unique(image, size, osystem.settings()); - case BSType::_CM: + case Bankswitch::Type::_CM: return make_unique(image, size, osystem.settings()); - case BSType::_CTY: + case Bankswitch::Type::_CTY: return make_unique(image, size, osystem); - case BSType::_CV: + case Bankswitch::Type::_CV: return make_unique(image, size, osystem.settings()); - case BSType::_CVP: + case Bankswitch::Type::_CVP: return make_unique(image, size, osystem.settings()); - case BSType::_DASH: + case Bankswitch::Type::_DASH: return make_unique(image, size, osystem.settings()); - case BSType::_DPC: + case Bankswitch::Type::_DPC: return make_unique(image, size, osystem.settings()); - case BSType::_DPCP: + case Bankswitch::Type::_DPCP: return make_unique(image, size, osystem.settings()); - case BSType::_E0: + case Bankswitch::Type::_E0: return make_unique(image, size, osystem.settings()); - case BSType::_E7: + case Bankswitch::Type::_E7: return make_unique(image, size, osystem.settings()); - case BSType::_E78K: + case Bankswitch::Type::_E78K: return make_unique(image, size, osystem.settings()); - case BSType::_EF: + case Bankswitch::Type::_EF: return make_unique(image, size, osystem.settings()); - case BSType::_EFSC: + case Bankswitch::Type::_EFSC: return make_unique(image, size, osystem.settings()); - case BSType::_BF: + case Bankswitch::Type::_BF: return make_unique(image, size, osystem.settings()); - case BSType::_BFSC: + case Bankswitch::Type::_BFSC: return make_unique(image, size, osystem.settings()); - case BSType::_DF: + case Bankswitch::Type::_DF: return make_unique(image, size, osystem.settings()); - case BSType::_DFSC: + case Bankswitch::Type::_DFSC: return make_unique(image, size, osystem.settings()); - case BSType::_F0: + case Bankswitch::Type::_F0: return make_unique(image, size, osystem.settings()); - case BSType::_F4: + case Bankswitch::Type::_F4: return make_unique(image, size, osystem.settings()); - case BSType::_F4SC: + case Bankswitch::Type::_F4SC: return make_unique(image, size, osystem.settings()); - case BSType::_F6: + case Bankswitch::Type::_F6: return make_unique(image, size, osystem.settings()); - case BSType::_F6SC: + case Bankswitch::Type::_F6SC: return make_unique(image, size, osystem.settings()); - case BSType::_F8: + case Bankswitch::Type::_F8: return make_unique(image, size, md5, osystem.settings()); - case BSType::_F8SC: + case Bankswitch::Type::_F8SC: return make_unique(image, size, osystem.settings()); - case BSType::_FA: + case Bankswitch::Type::_FA: return make_unique(image, size, osystem.settings()); - case BSType::_FA2: + case Bankswitch::Type::_FA2: return make_unique(image, size, osystem); - case BSType::_FE: + case Bankswitch::Type::_FE: return make_unique(image, size, osystem.settings()); - case BSType::_MDM: + case Bankswitch::Type::_MDM: return make_unique(image, size, osystem.settings()); - case BSType::_UA: + case Bankswitch::Type::_UA: return make_unique(image, size, osystem.settings()); - case BSType::_SB: + case Bankswitch::Type::_SB: return make_unique(image, size, osystem.settings()); - case BSType::_WD: + case Bankswitch::Type::_WD: return make_unique(image, size, osystem.settings()); - case BSType::_X07: + case Bankswitch::Type::_X07: return make_unique(image, size, osystem.settings()); default: return nullptr; // The remaining types have already been handled @@ -328,36 +335,36 @@ CartDetector::createFromImage(const BytePtr& image, uInt32 size, BSType type, } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -BSType CartDetector::autodetectType(const BytePtr& image, uInt32 size) +Bankswitch::Type CartDetector::autodetectType(const BytePtr& image, uInt32 size) { // Guess type based on size - BSType type = BSType::_AUTO; + Bankswitch::Type type = Bankswitch::Type::_AUTO; if(isProbablyCVPlus(image,size)) { - type = BSType::_CVP; + type = Bankswitch::Type::_CVP; } else if((size % 8448) == 0 || size == 6144) { - type = BSType::_AR; + type = Bankswitch::Type::_AR; } else if(size < 2048) // Sub2K images { - type = BSType::_2K; + type = Bankswitch::Type::_2K; } else if((size == 2048) || (size == 4096 && memcmp(image.get(), image.get() + 2048, 2048) == 0)) { - type = isProbablyCV(image, size) ? BSType::_CV : BSType::_2K; + type = isProbablyCV(image, size) ? Bankswitch::Type::_CV : Bankswitch::Type::_2K; } else if(size == 4096) { if(isProbablyCV(image, size)) - type = BSType::_CV; + type = Bankswitch::Type::_CV; else if(isProbably4KSC(image, size)) - type = BSType::_4KSC; + type = Bankswitch::Type::_4KSC; else - type = BSType::_4K; + type = Bankswitch::Type::_4K; } else if(size == 8*1024) // 8K { @@ -366,141 +373,141 @@ BSType CartDetector::autodetectType(const BytePtr& image, uInt32 size) bool f8 = searchForBytes(image.get(), size, signature, 3, 2); if(isProbablySC(image, size)) - type = BSType::_F8SC; + type = Bankswitch::Type::_F8SC; else if(memcmp(image.get(), image.get() + 4096, 4096) == 0) - type = BSType::_4K; + type = Bankswitch::Type::_4K; else if(isProbablyE0(image, size)) - type = BSType::_E0; + type = Bankswitch::Type::_E0; else if(isProbably3E(image, size)) - type = BSType::_3E; + type = Bankswitch::Type::_3E; else if(isProbably3F(image, size)) - type = BSType::_3F; + type = Bankswitch::Type::_3F; else if(isProbablyUA(image, size)) - type = BSType::_UA; + type = Bankswitch::Type::_UA; else if(isProbablyFE(image, size) && !f8) - type = BSType::_FE; + type = Bankswitch::Type::_FE; else if(isProbably0840(image, size)) - type = BSType::_0840; + type = Bankswitch::Type::_0840; else if(isProbablyE78K(image, size)) - type = BSType::_E78K; + type = Bankswitch::Type::_E78K; else - type = BSType::_F8; + type = Bankswitch::Type::_F8; } else if(size == 8*1024 + 3) // 8195 bytes (Experimental) { - type = BSType::_WD; + type = Bankswitch::Type::_WD; } else if(size >= 10240 && size <= 10496) // ~10K - Pitfall2 { - type = BSType::_DPC; + type = Bankswitch::Type::_DPC; } else if(size == 12*1024) // 12K { - type = BSType::_FA; + type = Bankswitch::Type::_FA; } else if(size == 16*1024) // 16K { if(isProbablySC(image, size)) - type = BSType::_F6SC; + type = Bankswitch::Type::_F6SC; else if(isProbablyE7(image, size)) - type = BSType::_E7; + type = Bankswitch::Type::_E7; else if(isProbably3E(image, size)) - type = BSType::_3E; + type = Bankswitch::Type::_3E; /* no known 16K 3F ROMS else if(isProbably3F(image, size)) - type = BSType::_3F; + type = Bankswitch::Type::_3F; */ else - type = BSType::_F6; + type = Bankswitch::Type::_F6; } else if(size == 24*1024 || size == 28*1024) // 24K & 28K { - type = BSType::_FA2; + type = Bankswitch::Type::_FA2; } else if(size == 29*1024) // 29K { if(isProbablyARM(image, size)) - type = BSType::_FA2; + type = Bankswitch::Type::_FA2; else /*if(isProbablyDPCplus(image, size))*/ - type = BSType::_DPCP; + type = Bankswitch::Type::_DPCP; } else if(size == 32*1024) // 32K { if(isProbablySC(image, size)) - type = BSType::_F4SC; + type = Bankswitch::Type::_F4SC; else if(isProbably3E(image, size)) - type = BSType::_3E; + type = Bankswitch::Type::_3E; else if(isProbably3F(image, size)) - type = BSType::_3F; + type = Bankswitch::Type::_3F; else if (isProbablyBUS(image, size)) - type = BSType::_BUS; + type = Bankswitch::Type::_BUS; else if (isProbablyCDF(image, size)) - type = BSType::_CDF; + type = Bankswitch::Type::_CDF; else if(isProbablyDPCplus(image, size)) - type = BSType::_DPCP; + type = Bankswitch::Type::_DPCP; else if(isProbablyCTY(image, size)) - type = BSType::_CTY; + type = Bankswitch::Type::_CTY; else if(isProbablyFA2(image, size)) - type = BSType::_FA2; + type = Bankswitch::Type::_FA2; else - type = BSType::_F4; + type = Bankswitch::Type::_F4; } else if(size == 64*1024) // 64K { if(isProbably3E(image, size)) - type = BSType::_3E; + type = Bankswitch::Type::_3E; else if(isProbably3F(image, size)) - type = BSType::_3F; + type = Bankswitch::Type::_3F; else if(isProbably4A50(image, size)) - type = BSType::_4A50; + type = Bankswitch::Type::_4A50; else if(isProbablyEF(image, size, type)) ; // type has been set directly in the function else if(isProbablyX07(image, size)) - type = BSType::_X07; + type = Bankswitch::Type::_X07; else - type = BSType::_F0; + type = Bankswitch::Type::_F0; } else if(size == 128*1024) // 128K { if(isProbably3E(image, size)) - type = BSType::_3E; + type = Bankswitch::Type::_3E; else if(isProbablyDF(image, size, type)) ; // type has been set directly in the function else if(isProbably3F(image, size)) - type = BSType::_3F; + type = Bankswitch::Type::_3F; else if(isProbably4A50(image, size)) - type = BSType::_4A50; + type = Bankswitch::Type::_4A50; else if(isProbablySB(image, size)) - type = BSType::_SB; + type = Bankswitch::Type::_SB; } else if(size == 256*1024) // 256K { if(isProbably3E(image, size)) - type = BSType::_3E; + type = Bankswitch::Type::_3E; else if(isProbablyBF(image, size, type)) ; // type has been set directly in the function else if(isProbably3F(image, size)) - type = BSType::_3F; + type = Bankswitch::Type::_3F; else /*if(isProbablySB(image, size))*/ - type = BSType::_SB; + type = Bankswitch::Type::_SB; } else // what else can we do? { if(isProbably3E(image, size)) - type = BSType::_3E; + type = Bankswitch::Type::_3E; else if(isProbably3F(image, size)) - type = BSType::_3F; + type = Bankswitch::Type::_3F; else - type = BSType::_4K; // Most common bankswitching type + type = Bankswitch::Type::_4K; // Most common bankswitching type } // Variable sized ROM formats are independent of image size and come last if(isProbablyDASH(image, size)) - type = BSType::_DASH; + type = Bankswitch::Type::_DASH; else if(isProbably3EPlus(image, size)) - type = BSType::_3EP; + type = Bankswitch::Type::_3EP; else if(isProbablyMDM(image, size)) - type = BSType::_MDM; + type = Bankswitch::Type::_MDM; return type; } @@ -774,7 +781,7 @@ bool CartDetector::isProbablyE78K(const BytePtr& image, uInt32 size) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDetector::isProbablyEF(const BytePtr& image, uInt32 size, BSType& type) +bool CartDetector::isProbablyEF(const BytePtr& image, uInt32 size, Bankswitch::Type& type) { // Newer EF carts store strings 'EFEF' and 'EFSC' starting at address $FFF8 // This signature is attributed to "RevEng" of AtariAge @@ -782,12 +789,12 @@ bool CartDetector::isProbablyEF(const BytePtr& image, uInt32 size, BSType& type) uInt8 efsc[] = { 'E', 'F', 'S', 'C' }; if(searchForBytes(image.get()+size-8, 8, efef, 4, 1)) { - type = BSType::_EF; + type = Bankswitch::Type::_EF; return true; } else if(searchForBytes(image.get()+size-8, 8, efsc, 4, 1)) { - type = BSType::_EFSC; + type = Bankswitch::Type::_EFSC; return true; } @@ -814,7 +821,7 @@ bool CartDetector::isProbablyEF(const BytePtr& image, uInt32 size, BSType& type) // the SC variant if(isEF) { - type = isProbablySC(image, size) ? BSType::_EFSC : BSType::_EF; + type = isProbablySC(image, size) ? Bankswitch::Type::_EFSC : Bankswitch::Type::_EF; return true; } @@ -822,7 +829,7 @@ bool CartDetector::isProbablyEF(const BytePtr& image, uInt32 size, BSType& type) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDetector::isProbablyBF(const BytePtr& image, uInt32 size, BSType& type) +bool CartDetector::isProbablyBF(const BytePtr& image, uInt32 size, Bankswitch::Type& type) { // BF carts store strings 'BFBF' and 'BFSC' starting at address $FFF8 // This signature is attributed to "RevEng" of AtariAge @@ -830,12 +837,12 @@ bool CartDetector::isProbablyBF(const BytePtr& image, uInt32 size, BSType& type) uInt8 bfsc[] = { 'B', 'F', 'S', 'C' }; if(searchForBytes(image.get()+size-8, 8, bf, 4, 1)) { - type = BSType::_BF; + type = Bankswitch::Type::_BF; return true; } else if(searchForBytes(image.get()+size-8, 8, bfsc, 4, 1)) { - type = BSType::_BFSC; + type = Bankswitch::Type::_BFSC; return true; } @@ -863,7 +870,7 @@ bool CartDetector::isProbablyCDF(const BytePtr& image, uInt32 size) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDetector::isProbablyDF(const BytePtr& image, uInt32 size, BSType& type) +bool CartDetector::isProbablyDF(const BytePtr& image, uInt32 size, Bankswitch::Type& type) { // BF carts store strings 'DFDF' and 'DFSC' starting at address $FFF8 @@ -872,12 +879,12 @@ bool CartDetector::isProbablyDF(const BytePtr& image, uInt32 size, BSType& type) uInt8 dfsc[] = { 'D', 'F', 'S', 'C' }; if(searchForBytes(image.get()+size-8, 8, df, 4, 1)) { - type = BSType::_DF; + type = Bankswitch::Type::_DF; return true; } else if(searchForBytes(image.get()+size-8, 8, dfsc, 4, 1)) { - type = BSType::_DFSC; + type = Bankswitch::Type::_DFSC; return true; } diff --git a/src/emucore/CartDetector.hxx b/src/emucore/CartDetector.hxx index b11097437..0799e4121 100644 --- a/src/emucore/CartDetector.hxx +++ b/src/emucore/CartDetector.hxx @@ -22,8 +22,8 @@ class Cartridge; class Properties; class OSystem; +#include "Bankswitch.hxx" #include "bspf.hxx" -#include "BSType.hxx" /** Auto-detect cart type based on various attributes (file size, signatures, @@ -45,8 +45,9 @@ class CartDetector @param system The osystem associated with the system @return Pointer to the new cartridge object allocated on the heap */ - static unique_ptr create(const BytePtr& image, uInt32 size, - string& md5, const string& dtype, const OSystem& system); + static unique_ptr create(const FilesystemNode& file, + const BytePtr& image, uInt32 size, string& md5, + const string& dtype, const OSystem& system); private: /** @@ -65,7 +66,7 @@ class CartDetector */ static unique_ptr createFromMultiCart(const BytePtr& image, uInt32& size, - uInt32 numroms, string& md5, BSType type, string& id, + uInt32 numroms, string& md5, Bankswitch::Type type, string& id, const OSystem& osystem); /** @@ -80,7 +81,7 @@ class CartDetector @return Pointer to the new cartridge object allocated on the heap */ static unique_ptr - createFromImage(const BytePtr& image, uInt32 size, BSType type, + createFromImage(const BytePtr& image, uInt32 size, Bankswitch::Type type, const string& md5, const OSystem& osystem); /** @@ -91,7 +92,7 @@ class CartDetector @return The "best guess" for the cartridge type */ - static BSType autodetectType(const BytePtr& image, uInt32 size); + static Bankswitch::Type autodetectType(const BytePtr& image, uInt32 size); /** Search the image for the specified byte signature @@ -152,7 +153,7 @@ class CartDetector /** Returns true if the image is probably a BF/BFSC bankswitching cartridge */ - static bool isProbablyBF(const BytePtr& image, uInt32 size, BSType& type); + static bool isProbablyBF(const BytePtr& image, uInt32 size, Bankswitch::Type& type); /** Returns true if the image is probably a BUS bankswitching cartridge @@ -187,7 +188,7 @@ class CartDetector /** Returns true if the image is probably a DF/DFSC bankswitching cartridge */ - static bool isProbablyDF(const BytePtr& image, uInt32 size, BSType& type); + static bool isProbablyDF(const BytePtr& image, uInt32 size, Bankswitch::Type& type); /** Returns true if the image is probably a DPC+ bankswitching cartridge @@ -212,7 +213,7 @@ class CartDetector /** Returns true if the image is probably an EF/EFSC bankswitching cartridge */ - static bool isProbablyEF(const BytePtr& image, uInt32 size, BSType& type); + static bool isProbablyEF(const BytePtr& image, uInt32 size, Bankswitch::Type& type); /** Returns true if the image is probably an F6 bankswitching cartridge diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index 418c55e7e..7fce086db 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -472,7 +472,7 @@ unique_ptr OSystem::openConsole(const FilesystemNode& romfile, string& string cartmd5 = md5; const string& type = props.get(Cartridge_Type); unique_ptr cart = - CartDetector::create(image, size, cartmd5, type, *this); + CartDetector::create(romfile, image, size, cartmd5, type, *this); // It's possible that the cart created was from a piece of the image, // and that the md5 (and hence the cart) has changed diff --git a/src/emucore/module.mk b/src/emucore/module.mk index 57b8fb133..778b747b1 100644 --- a/src/emucore/module.mk +++ b/src/emucore/module.mk @@ -2,6 +2,7 @@ MODULE := src/emucore MODULE_OBJS := \ src/emucore/AtariVox.o \ + src/emucore/Bankswitch.o \ src/emucore/Booster.o \ src/emucore/Cart.o \ src/emucore/CartDetector.o \ diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index dc0ee5f5c..4ae887c8a 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -15,7 +15,7 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include "BSType.hxx" +#include "Bankswitch.hxx" #include "Console.hxx" #include "MouseControl.hxx" #include "SaveKey.hxx" @@ -116,8 +116,8 @@ GameInfoDialog::GameInfoDialog( new StaticTextWidget(myTab, font, xpos, ypos+1, lwidth, fontHeight, "Type (*)"); pwidth = font.getStringWidth("CM (SpectraVideo CompuMate)"); items.clear(); - for(int i = 0; i < int(BSType::NumSchemes); ++i) - VarList::push_back(items, BSList[i].desc, BSList[i].name); + for(uInt32 i = 0; i < uInt32(Bankswitch::Type::NumSchemes); ++i) + VarList::push_back(items, Bankswitch::BSList[i].desc, Bankswitch::BSList[i].name); myType = new PopUpWidget(myTab, font, xpos+lwidth, ypos, pwidth, lineHeight, items, ""); wid.push_back(myType); diff --git a/src/gui/GlobalPropsDialog.cxx b/src/gui/GlobalPropsDialog.cxx index bc3481e6e..1f5bf6ccd 100644 --- a/src/gui/GlobalPropsDialog.cxx +++ b/src/gui/GlobalPropsDialog.cxx @@ -16,7 +16,7 @@ //============================================================================ #include "bspf.hxx" -#include "BSType.hxx" +#include "Bankswitch.hxx" #include "Control.hxx" #include "Dialog.hxx" #include "OSystem.hxx" @@ -53,8 +53,8 @@ GlobalPropsDialog::GlobalPropsDialog(GuiObject* boss, const GUI::Font& font) // Bankswitch type new StaticTextWidget(this, font, xpos, ypos+1, "Bankswitch type"); - for(int i = 0; i < int(BSType::NumSchemes); ++i) - VarList::push_back(items, BSList[i].desc, BSList[i].name); + for(uInt32 i = 0; i < uInt32(Bankswitch::Type::NumSchemes); ++i) + VarList::push_back(items, Bankswitch::BSList[i].desc, Bankswitch::BSList[i].name); myBSType = new PopUpWidget(this, font, xpos+lwidth, ypos, pwidth, lineHeight, items, ""); wid.push_back(myBSType); diff --git a/src/gui/LauncherDialog.cxx b/src/gui/LauncherDialog.cxx index c1bd41cd2..15baad793 100644 --- a/src/gui/LauncherDialog.cxx +++ b/src/gui/LauncherDialog.cxx @@ -16,6 +16,7 @@ //============================================================================ #include "bspf.hxx" +#include "Bankswitch.hxx" #include "BrowserDialog.hxx" #include "ContextMenu.hxx" #include "DialogContainer.hxx" @@ -200,9 +201,8 @@ const string& LauncherDialog::selectedRomMD5() if(item < 0) return EmptyString; - string extension; const FilesystemNode node(myGameList->path(item)); - if(node.isDirectory() || !LauncherFilterDialog::isValidRomName(node, extension)) + if(node.isDirectory() || !Bankswitch::isValidRomName(node)) return EmptyString; // Make sure we have a valid md5 for this ROM @@ -321,9 +321,8 @@ void LauncherDialog::loadRomInfo() int item = myList->getSelected(); if(item < 0) return; - string extension; const FilesystemNode node(myGameList->path(item)); - if(!node.isDirectory() && LauncherFilterDialog::isValidRomName(node, extension)) + if(!node.isDirectory() && Bankswitch::isValidRomName(node)) { // Make sure we have a valid md5 for this ROM if(myGameList->md5(item) == "") diff --git a/src/gui/LauncherFilterDialog.cxx b/src/gui/LauncherFilterDialog.cxx index 7467a5e6e..856e98c48 100644 --- a/src/gui/LauncherFilterDialog.cxx +++ b/src/gui/LauncherFilterDialog.cxx @@ -123,27 +123,6 @@ bool LauncherFilterDialog::isValidRomName(const string& name, return false; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool LauncherFilterDialog::isValidRomName(const FilesystemNode& node, string& ext) -{ - const string& name = node.getPath(); - string::size_type idx = name.find_last_of('.'); - if(idx != string::npos) - { - const char* const e = name.c_str() + idx + 1; - - for(uInt32 i = 0; i < 5; ++i) - { - if(BSPF::equalsIgnoreCase(e, ourRomTypes[1][i])) - { - ext = e; - return true; - } - } - } - return false; -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void LauncherFilterDialog::loadConfig() { diff --git a/src/gui/LauncherFilterDialog.hxx b/src/gui/LauncherFilterDialog.hxx index 58855bd3c..e00969040 100644 --- a/src/gui/LauncherFilterDialog.hxx +++ b/src/gui/LauncherFilterDialog.hxx @@ -47,14 +47,6 @@ class LauncherFilterDialog : public Dialog, public CommandSender */ static bool isValidRomName(const string& name, const StringList& exts); - /** - Is this a valid ROM filename (does it have a valid extension?). - - @param name File node of potential ROM file - @param ext The extension extracted from the given file - */ - static bool isValidRomName(const FilesystemNode& name, string& ext); - private: void loadConfig() override; void saveConfig() override; diff --git a/src/gui/RomAuditDialog.cxx b/src/gui/RomAuditDialog.cxx index 744100ae6..996e8d6fe 100644 --- a/src/gui/RomAuditDialog.cxx +++ b/src/gui/RomAuditDialog.cxx @@ -17,7 +17,7 @@ #include "bspf.hxx" #include "Launcher.hxx" -#include "LauncherFilterDialog.hxx" +#include "Bankswitch.hxx" #include "BrowserDialog.hxx" #include "DialogContainer.hxx" #include "EditTextWidget.hxx" @@ -136,7 +136,7 @@ void RomAuditDialog::auditRoms() { string extension; if(files[idx].isFile() && - LauncherFilterDialog::isValidRomName(files[idx], extension)) + Bankswitch::isValidRomName(files[idx], extension)) { bool renameSucceeded = false; From 70ec216d1a92178db90fff1dfc4317859c8471ab Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 31 Aug 2018 14:46:00 +0200 Subject: [PATCH 079/126] updated VS project file --- src/windows/Stella.vcxproj | 2 ++ src/windows/Stella.vcxproj.filters | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index 3df43e6e4..8457f8149 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -326,6 +326,7 @@ + @@ -904,6 +905,7 @@ + diff --git a/src/windows/Stella.vcxproj.filters b/src/windows/Stella.vcxproj.filters index 8e4694b9a..c14853032 100644 --- a/src/windows/Stella.vcxproj.filters +++ b/src/windows/Stella.vcxproj.filters @@ -942,6 +942,9 @@ Source Files + + Source Files\emucore + @@ -1925,6 +1928,9 @@ Header Files + + Header Files\emucore + From 65d23b4a6e81838781e0e179dd4e816b967ad4e5 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 13:51:42 -0230 Subject: [PATCH 080/126] Removed 'launcherexts' and associated LauncherFilterDialog. Introduced 'launcherroms' argument, which specifies to show only ROMs or all files in the launcher. This functionality is tied to a RMB context menu in the launcher; eventually we may add a checkbox to the UI for it. --- Changes.txt | 35 +++-- docs/graphics/launcher_filter.png | Bin 2598 -> 0 bytes docs/index.html | 42 +++--- src/emucore/Settings.cxx | 7 +- src/gui/LauncherDialog.cxx | 40 ++---- src/gui/LauncherDialog.hxx | 14 +- src/gui/LauncherFilterDialog.cxx | 224 ------------------------------ src/gui/LauncherFilterDialog.hxx | 78 ----------- src/gui/module.mk | 1 - 9 files changed, 63 insertions(+), 378 deletions(-) delete mode 100644 docs/graphics/launcher_filter.png delete mode 100644 src/gui/LauncherFilterDialog.cxx delete mode 100644 src/gui/LauncherFilterDialog.hxx diff --git a/Changes.txt b/Changes.txt index 7d6eab080..9d056c5dd 100644 --- a/Changes.txt +++ b/Changes.txt @@ -17,19 +17,19 @@ * Note: because of major TIA sound changes, the state file format has changed, and old state files will not work with this release. - * New cycle exact audio core based on work by Chris Brenner (crispy); greatly - improved audio emulation accuracy (i.e. E.T., Ms. Pacman). + * New cycle exact audio core based on work by Chris Brenner (crispy); + greatly improved audio emulation accuracy (i.e. E.T., Ms. Pacman). - * Full rewrite of the audio subsystem; resample TIA output to target sample - rate directly in Stella. + * Full rewrite of the audio subsystem; resample TIA output to target + sample rate directly in Stella. - * Added option to force stereo sound for all ROMs, or to use the setting - on a per-ROM basis. + * Added option to force stereo sound for all ROMs, or to use the + setting on a per-ROM basis. * Threading: decouple emulation from frame rendering. - * Main loop rewritten; emulating speed and timing is now much more faithful - (i.e. speed in Pick'n'Pile). + * Main loop rewritten; emulating speed and timing is now much more + faithful (i.e. speed in Pick'n'Pile). * Audio settings replaced with new 'audio.xxx' settings. @@ -43,10 +43,21 @@ * UI modernization (new widget look, dialog titles added, dialogs refactored). - * Fixed excessive CPU usage while in UI modes (ROM launcher, debugger, etc). + * Fixed excessive CPU usage while in UI modes (ROM launcher, debugger, + etc). + + * The bankswitch scheme can now be forced by naming the ROM with a + specific extension (ie: .f8s for F8SC, .fe for FE, etc). The + supported extensions are the same as the ones from HarmonyCart and + UnoCart. + + * The 'launcherexts' option has been replaced by a true/false option + named 'launcherroms', which specifies to show only ROMs or all files + in the ROM launcher. * Changes in 'Game Properties' dialog - - 'Default' button now affects only current tab like in all other dialogs. + - 'Default' button now affects only current tab like in all other + dialogs. - 'Display' and 'Console' tab changes are now immediate. - Fixed bug when selecting 'Auto-detect' format for 50Hz ROMs @@ -78,8 +89,8 @@ * The UNIX builds now use the system-installed PNG and ZLIB libraries by default. - * For better compatibility, the Windows 32-bit version does not require SSE2 - anymore. + * For better compatibility, the Windows 32-bit version does not require + SSE2 anymore. * Updated included PNG library to latest stable version. diff --git a/docs/graphics/launcher_filter.png b/docs/graphics/launcher_filter.png deleted file mode 100644 index 6549c986e5fa2c5275aaa44be87aa921200d8f99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2598 zcmeHI2~$&97JkIA?}-f^LSd4gfoV z!!AdNB0MxSw8Tt_4*>b>z$fLujP=}ETm13|G8k(7>rC}#mc;nC+V z)_(dfRRm%f#A6Kd>0rkBz(^Vp5g2xgVRVYd&@?mJXJl$3)C|i60EuL0(BVk5|9rM= z(5R&xcm?0s{3%r*;h5fk`RdFqo%-eMbWJITLH#MSoXriDoev(wN+VFt2eHl&PMU?& zf^lkath%E1@fO?L8^W1^LGt~&z58LQ;zdq--ro=36BLtN1;xB79n;r@cg!NH|3LlQ zp+QfIYW>HCA2Et&_sR2-F)SIyWrA_H4^8{U5JCR|p>vh5zR@Ig^56UH;%MI~BXUM2 z{kuw*6bPFdVPs5rM}Xt7V?|U;c8cbkys+S#$pce!+n=bD)~1`LSUi zU(ahVzSk(v49G163x)=1p?aJor4qm1B2L>-v-I!S`IM(OWG}W~i%f6JF77*l)$^hm zR8r6_^iVK)>Q8#Oj07+v9YS56%XTWIOJ%A>}VK z`ETUKcy-sEP;d4;XQZz33EbfzHVMVatz#*fS{(n~jDgs*$COhe>|Yp}C{>u$j)2iC z8;{z3*_jEIW;J3t?=`G`Q^LD#o~KsP+TLo~GB`eK%Un*XIjO~!M0ICY zD%g8xHAH15#U-#>V+adiFkJ_V*UddLL(u9=B>mb-oLv|z%;OvIbnT+LJLN>YC~sM zax+Ht^1~Wp%C_=fW!tv+mIf%hP6RFhNCh%1M5)MD#WZd<)cDv(rlxpn7)6dO&r2eD zr8Mi?;%!4ryt(u{6VI0OmF<_D*r;J@fGURK!av54ce>7p3V&*RTDb{4k)ZO5Mi;x9 z9JyU-8tS5Z&0Q^AniEe4zs`#K4`1{5~T9aUvm>wv-`I!lXV+pb6nV$_N zF1V^|9_c}{Ue1@qak5rPoTZr0a5pCP=|t7<(V@->Axx$|aL z@CVl1d&?_1Ni}pN-cO+xYQ-N7yh3^Wftp@Z<5v4N$}%eu3zsqpB~zC$IK#XUhJA#& z#Dy?BMKv+p4(R=39T-AgCO+VJHhWDPVU5$i6|B}kcqQK{ZrYCh#VUugqD2md@HVIu z`6Oyb%gruZ%Itno1^wFG6hxNX7vifOU=7_j) zvdevFRqv6)26nY6y!VF-29d&_3ul5GhlWa`UAgyM9k<4aUen~fTK(0eTtAyq{OIGh zU~#wUSwofg;JbyOlUEm1Isd$Oj^%GfPHYM}0BQ1j!CHFb9GVmG*6e0X_rEmhWz{}Z zB)vR}H>Y*C7I5Q+tW>yBvEG6nJby~2Cx!h`J%704xOC9&MbOCm^im1m8UhPCx?&D; zVKOVXsA|CfdMVc)jkzEF)D~XxXg)XgNVwaFc&ZzXwQ;{4)ma@=jzphx**Uy2U-={T zc>|Iqm0dwggBqjp{V98MRz3EOB0!ivrCs{reg#9;#>oUQ04MoXY<6KKnLY-;t|&#MtbVdS+7$OC j4ZZ}Y73ZO}wzVbe#ana>70iZz{ROM Launcher
  • ROM Audit Mode
  • Stelladaptor/2600-daptor Support
  • @@ -255,8 +255,10 @@
  • Supports high quality TIA emulation using the TIA core from 6502.ts by Christian Speckner
  • -
  • Supports high quality sound emulation using code derived from Ron Fries' - TIA Sound Emulation library, including stereo sound support
  • +
  • Supports high quality sound emulation using code derived from Chris Brenner's + Atari 2600 FPGA project, including cycle-accurate audio, analog interference + from mixing of audio channels, as well as stereo sound support; dynamic + sound resampling is also included
  • Emulates the Atari 2600 Joystick Controllers using your computer's keyboard, joysticks or mouse
  • Emulates the Atari 2600 Keyboard Controllers using your computer's keyboard
  • @@ -287,6 +289,7 @@
  • Supports DPC+/CDF bankswitching schemes from the Harmony Cart, including partial emulation of the ARM processor
  • Supports cartridge autodetection for almost all bankswitching schemes
  • +
  • Supports using ROM filename extensions to force specific bankswitching schemes
  • Supports Supercharger single-load and multi-load games
  • Supports ROMs stored in ZIP and GZIP format, as well as the usual raw A26/BIN/ROM formats
  • Supports property file for setting the properties associated with games
  • @@ -2227,11 +2230,9 @@ -
    -launcherexts <allfiles|allroms|LIST>
    - Specifies which files to show in the ROM launcher - ('allfiles' is self-explanatory, 'allroms' is all files - with valid rom extensions (currently: a26, bin, rom, - gz, zip), 'LIST' is a ':' separated list of valid rom extensions. +
    -launcherroms <1|0>
    + Specifies whether to show ROMs only (the default) or all + files in the ROM launcher. @@ -2901,7 +2902,7 @@ case sensitive, so you don't need to worry about capital or lower-case letters.

    -

    ROM Lauchner Context Menu

    +

    ROM Launcher Context Menu

    The ROM launcher also contains a context menu, selected by clicking the right mouse button anywhere in the current window. This context menu @@ -2938,23 +2939,14 @@ -

  • Filter listing: Selecting this option shows a dialog whereby - one can filter the types of files shown in the listing. The dialog is as - follows:

    -

    -

    Currently, the choices are as follows:

    -

      -
    • All files - self explanatory, show all files in the ROM - listing. This is the default, and emulates the behaviour of - all previous versions of Stella.
    • -
    • All roms - show only files with a valid ROM extension. - Currently, this means extensions .a26, .bin, .rom, .gz, .zip.
    • -
    • ROMs ending with - show only files with a ROM extension - as selected from the checkboxes.
    • -

    -
  • -
  • Reload listing: Selecting this performs a reload of the +
  • Show only ROM files: Selecting this reloads the current listing, + showing only files that have a valid ROM extension.
  • + +
  • Show all files: Selecting this reloads the current listing, + showing all files (with no restriction on file name).
  • + +
  • Reload listing: Selecting this performs a reload of the current listing. It is an alternative to pressing the Control-r key combo.
  • diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index 4259f546b..20f0dc72d 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -115,7 +115,7 @@ Settings::Settings(OSystem& osystem) setInternal("exitlauncher", "false"); setInternal("launcherres", GUI::Size(900, 600)); setInternal("launcherfont", "medium"); - setInternal("launcherexts", "allroms"); + setInternal("launcherroms", "true"); setInternal("romviewer", "1"); setInternal("lastrom", ""); @@ -536,10 +536,7 @@ void Settings::usage() const << " -launcherres The resolution to use in ROM launcher mode\n" << " -launcherfont \n" - << " -launcherexts Show only ROMs in the launcher (vs. all files)\n" << " -romviewer <0|1|2> Show ROM info viewer at given zoom level in ROM\n" << " launcher (0 for off)\n" << " -listdelay Time to wait between keypresses in list widgets\n" diff --git a/src/gui/LauncherDialog.cxx b/src/gui/LauncherDialog.cxx index 15baad793..da81bc231 100644 --- a/src/gui/LauncherDialog.cxx +++ b/src/gui/LauncherDialog.cxx @@ -27,7 +27,6 @@ #include "MD5.hxx" #include "OptionsDialog.hxx" #include "GlobalPropsDialog.hxx" -#include "LauncherFilterDialog.hxx" #include "MessageBox.hxx" #include "OSystem.hxx" #include "FrameBuffer.hxx" @@ -179,7 +178,8 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent, // Create context menu for ROM list options VariantList l; VarList::push_back(l, "Power-on options" + ELLIPSIS, "override"); - VarList::push_back(l, "Filter listing" + ELLIPSIS, "filter"); + VarList::push_back(l, "Show only ROM files" + ELLIPSIS, "roms"); + VarList::push_back(l, "Show all files" + ELLIPSIS, "allfiles"); VarList::push_back(l, "Reload listing", "reload"); myMenu = make_unique(this, osystem.frameBuffer().font(), l); @@ -187,11 +187,8 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent, // ROM properties myGlobalProps = make_unique(this, osystem.frameBuffer().font()); - // Create dialog whereby the files shown in the ROM listing can be customized - myFilters = make_unique(this, osystem.frameBuffer().font()); - - // Figure out which filters are needed for the ROM listing - setListFilters(); + // Do we show only ROMs or all files? + showOnlyROMs(instance().settings().getBool("launcherroms")); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -292,16 +289,9 @@ void LauncherDialog::loadDirListing() bool isDir = f.isDirectory(); const string& name = isDir ? (" [" + f.getName() + "]") : f.getName(); - // Honour the filtering settings - // Showing only certain ROM extensions is determined by the extension - // that we want - if there are no extensions, it implies show all files - // In this way, showing all files is on the 'fast code path' - if(!isDir && myRomExts.size() > 0) - { - // Skip over those names we've filtered out - if(!LauncherFilterDialog::isValidRomName(name, myRomExts)) - continue; - } + // Do we want to show only ROMs or all files? + if(!isDir && myShowOnlyROMs && !Bankswitch::isValidRomName(f)) + continue; // Skip over files that don't match the pattern in the 'pattern' textbox if(domatch && !isDir && !matchPattern(name, myPattern->getText())) @@ -347,9 +337,10 @@ void LauncherDialog::handleContextMenu() { myGlobalProps->open(); } - else if(cmd == "filter") + else if(cmd == "roms" || cmd == "allfiles") { - myFilters->open(); + showOnlyROMs(cmd == "roms"); + updateListing(); } else if(cmd == "reload") { @@ -358,11 +349,10 @@ void LauncherDialog::handleContextMenu() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void LauncherDialog::setListFilters() +void LauncherDialog::showOnlyROMs(bool state) { - const string& exts = instance().settings().getString("launcherexts"); - myRomExts.clear(); - LauncherFilterDialog::parseExts(myRomExts, exts); + myShowOnlyROMs = state; + instance().settings().setValue("launcherroms", state); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -511,8 +501,8 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd, updateListing(); break; - case kReloadFiltersCmd: - setListFilters(); + case kOnlyROMsCmd: + showOnlyROMs(data); // NOTE: present for when we add a widget for this updateListing(); break; diff --git a/src/gui/LauncherDialog.hxx b/src/gui/LauncherDialog.hxx index 0b60e0c2f..1d5b67763 100644 --- a/src/gui/LauncherDialog.hxx +++ b/src/gui/LauncherDialog.hxx @@ -26,7 +26,6 @@ class GameList; class BrowserDialog; class OptionsDialog; class GlobalPropsDialog; -class LauncherFilterDialog; class OSystem; class Properties; class EditTextWidget; @@ -47,10 +46,10 @@ class LauncherDialog : public Dialog public: // These must be accessible from dialogs created by this class enum { - kLoadROMCmd = 'STRT', // load currently selected ROM - kRomDirChosenCmd = 'romc', // rom dir chosen - kReloadRomDirCmd = 'rdrl', // reload the current listing - kReloadFiltersCmd = 'rlfl' // reload filtering options and current listing + kLoadROMCmd = 'STRT', // load currently selected ROM + kRomDirChosenCmd = 'romc', // rom dir chosen + kReloadRomDirCmd = 'rdrl', // reload the current listing + kOnlyROMsCmd = 'rdor' // what to show has changed (ROMs vs. all files) }; public: @@ -88,7 +87,7 @@ class LauncherDialog : public Dialog void loadDirListing(); void loadRomInfo(); void handleContextMenu(); - void setListFilters(); + void showOnlyROMs(bool state); bool matchPattern(const string& s, const string& pattern) const; private: @@ -96,7 +95,6 @@ class LauncherDialog : public Dialog unique_ptr myGameList; unique_ptr myMenu; unique_ptr myGlobalProps; - unique_ptr myFilters; unique_ptr myRomDir; ButtonWidget* myStartButton; @@ -116,7 +114,7 @@ class LauncherDialog : public Dialog FilesystemNode myCurrentNode; Common::FixedStack myNodeNames; - StringList myRomExts; + bool myShowOnlyROMs; enum { kPrevDirCmd = 'PRVD', diff --git a/src/gui/LauncherFilterDialog.cxx b/src/gui/LauncherFilterDialog.cxx deleted file mode 100644 index 856e98c48..000000000 --- a/src/gui/LauncherFilterDialog.cxx +++ /dev/null @@ -1,224 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2018 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -#include "bspf.hxx" -#include "Dialog.hxx" -#include "OSystem.hxx" -#include "FSNode.hxx" -#include "PopUpWidget.hxx" -#include "Settings.hxx" -#include "Widget.hxx" -#include "Font.hxx" -#include "LauncherDialog.hxx" -#include "LauncherFilterDialog.hxx" - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -LauncherFilterDialog::LauncherFilterDialog(GuiObject* boss, const GUI::Font& font) - : Dialog(boss->instance(), boss->parent(), font, "Filter file list"), - CommandSender(boss) -{ - const int lineHeight = font.getLineHeight(), - buttonWidth = font.getStringWidth("Defaults") + 20, - buttonHeight = font.getLineHeight() + 4; - int xpos, ypos; - int lwidth = font.getStringWidth("Show "), - pwidth = font.getStringWidth("ROMs ending with"); - WidgetArray wid; - VariantList items; - - // Set real dimensions - _w = 3 * buttonWidth + 20 + 4 * 8; - - xpos = 10; ypos = 10 + _th; - - // Types of files to show - VarList::push_back(items, "All files", "allfiles"); - VarList::push_back(items, "All ROMs", "allroms"); - VarList::push_back(items, "ROMs ending with", "__EXTS"); - myFileType = - new PopUpWidget(this, font, xpos, ypos, pwidth, lineHeight, items, - "Show ", lwidth, kFileTypeChanged); - wid.push_back(myFileType); - ypos += lineHeight + 10; - - // Different types of ROM extensions - xpos += font.getStringWidth("Show "); - myRomType[0] = new CheckboxWidget(this, font, xpos, ypos, ourRomTypes[0][0]); - int rightcol = xpos + myRomType[0]->getWidth() + 8 * 3; - myRomType[3] = new CheckboxWidget(this, font, rightcol, ypos, ourRomTypes[0][3]); - ypos += lineHeight + 4; - myRomType[1] = new CheckboxWidget(this, font, xpos, ypos, ourRomTypes[0][1]); - myRomType[4] = new CheckboxWidget(this, font, rightcol, ypos, ourRomTypes[0][4]); - ypos += lineHeight + 4; - myRomType[2] = new CheckboxWidget(this, font, xpos, ypos, ourRomTypes[0][2]); - ypos += lineHeight + 10; - - _h = ypos + buttonHeight + 20; - - // Add Defaults, OK and Cancel buttons - addDefaultsOKCancelBGroup(wid, font); - - addToFocusList(wid); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void LauncherFilterDialog::parseExts(StringList& list, const string& type) -{ - // Assume the list is empty before this method is called - if(type == "allroms") - { - for(uInt32 i = 0; i < 5; ++i) - list.push_back(ourRomTypes[1][i]); - } - else if(type != "allfiles") - { - // Since istringstream swallows whitespace, we have to make the - // delimiters be spaces - string exts = type, ext; - replace(exts.begin(), exts.end(), ':', ' '); - istringstream buf(exts); - - while(buf >> ext) - { - for(uInt32 i = 0; i < 5; ++i) - { - if(ourRomTypes[1][i] == ext) - { - list.push_back(ext); - break; - } - } - } - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool LauncherFilterDialog::isValidRomName(const string& name, - const StringList& exts) -{ - string::size_type idx = name.find_last_of('.'); - if(idx != string::npos) - { - const char* const ext = name.c_str() + idx + 1; - - for(const auto& s: exts) - if(BSPF::equalsIgnoreCase(ext, s)) - return true; - } - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void LauncherFilterDialog::loadConfig() -{ - handleFileTypeChange(instance().settings().getString("launcherexts")); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void LauncherFilterDialog::saveConfig() -{ - const string& type = myFileType->getSelectedTag().toString(); - if(type == "allfiles" || type == "allroms") - instance().settings().setValue("launcherexts", type); - else - { - ostringstream buf; - for(uInt32 i = 0; i < 5; ++i) - if(myRomType[i]->getState()) - buf << ourRomTypes[1][i] << ":"; - - // No ROMs selected means use all files - if(buf.str() == "") - instance().settings().setValue("launcherexts", "allfiles"); - else - instance().settings().setValue("launcherexts", buf.str()); - } - - // Let parent know about the changes - sendCommand(LauncherDialog::kReloadFiltersCmd, 0, 0); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void LauncherFilterDialog::setDefaults() -{ - handleFileTypeChange("allroms"); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void LauncherFilterDialog::handleFileTypeChange(const string& type) -{ - bool enable = (type != "allfiles" && type != "allroms"); - for(uInt32 i = 0; i < 5; ++i) - myRomType[i]->setEnabled(enable); - - if(enable) - { - myFileType->setSelected("__EXTS", ""); - - // Since istringstream swallows whitespace, we have to make the - // delimiters be spaces - string exts = type, ext; - replace(exts.begin(), exts.end(), ':', ' '); - istringstream buf(exts); - - while(buf >> ext) - { - for(uInt32 i = 0; i < 5; ++i) - { - if(ourRomTypes[1][i] == ext) - { - myRomType[i]->setState(true); - break; - } - } - } - } - else - myFileType->setSelected(type, ""); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void LauncherFilterDialog::handleCommand(CommandSender* sender, int cmd, - int data, int id) -{ - switch(cmd) - { - case GuiObject::kOKCmd: - saveConfig(); - close(); - break; - - case GuiObject::kDefaultsCmd: - setDefaults(); - break; - - case kFileTypeChanged: - handleFileTypeChange(myFileType->getSelectedTag().toString()); - break; - - default: - Dialog::handleCommand(sender, cmd, data, 0); - break; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -const char* const LauncherFilterDialog::ourRomTypes[2][5] = { - { ".a26", ".bin", ".rom", ".zip", ".gz" }, - { "a26", "bin", "rom", "zip", "gz" } -}; diff --git a/src/gui/LauncherFilterDialog.hxx b/src/gui/LauncherFilterDialog.hxx deleted file mode 100644 index e00969040..000000000 --- a/src/gui/LauncherFilterDialog.hxx +++ /dev/null @@ -1,78 +0,0 @@ -//============================================================================ -// -// SSSS tt lll lll -// SS SS tt ll ll -// SS tttttt eeee ll ll aaaa -// SSSS tt ee ee ll ll aa -// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" -// SS SS tt ee ll ll aa aa -// SSSS ttt eeeee llll llll aaaaa -// -// Copyright (c) 1995-2018 by Bradford W. Mott, Stephen Anthony -// and the Stella Team -// -// See the file "License.txt" for information on usage and redistribution of -// this file, and for a DISCLAIMER OF ALL WARRANTIES. -//============================================================================ - -#ifndef LAUNCHER_FILTER_DIALOG_HXX -#define LAUNCHER_FILTER_DIALOG_HXX - -class CommandSender; -class DialogContainer; -class FilesystemNode; -class CheckboxWidget; -class PopUpWidget; -class OSystem; - -#include "bspf.hxx" -#include "Dialog.hxx" -#include "Settings.hxx" - -class LauncherFilterDialog : public Dialog, public CommandSender -{ - public: - LauncherFilterDialog(GuiObject* boss, const GUI::Font& font); - virtual ~LauncherFilterDialog() = default; - - /** Add valid extensions from 'exts' to the given StringList */ - static void parseExts(StringList& list, const string& exts); - - /** - Is this a valid ROM filename (does it have a valid extension from - those specified in the list of extensions). - - @param name Filename of potential ROM file - @param exts The list of extensions to consult - */ - static bool isValidRomName(const string& name, const StringList& exts); - - private: - void loadConfig() override; - void saveConfig() override; - void setDefaults() override; - - void handleFileTypeChange(const string& type); - void handleCommand(CommandSender* sender, int cmd, int data, int id) override; - - private: - PopUpWidget* myFileType; - CheckboxWidget* myRomType[5]; - - enum { - kFileTypeChanged = 'LFDc' - }; - - // Holds static strings representing ROM types - static const char* const ourRomTypes[2][5]; - - private: - // Following constructors and assignment operators not supported - LauncherFilterDialog() = delete; - LauncherFilterDialog(const LauncherFilterDialog&) = delete; - LauncherFilterDialog(LauncherFilterDialog&&) = delete; - LauncherFilterDialog& operator=(const LauncherFilterDialog&) = delete; - LauncherFilterDialog& operator=(LauncherFilterDialog&&) = delete; -}; - -#endif diff --git a/src/gui/module.mk b/src/gui/module.mk index b598334c7..44e5d33f6 100644 --- a/src/gui/module.mk +++ b/src/gui/module.mk @@ -27,7 +27,6 @@ MODULE_OBJS := \ src/gui/InputTextDialog.o \ src/gui/JoystickDialog.o \ src/gui/LauncherDialog.o \ - src/gui/LauncherFilterDialog.o \ src/gui/Launcher.o \ src/gui/ListWidget.o \ src/gui/LoggerDialog.o \ From 020d8b18c2e6e808f36d295626cacdc828fa86ee Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 15:46:33 -0230 Subject: [PATCH 081/126] Remove ellipses from LauncherDialog options that don't lead to a dialog. --- src/gui/LauncherDialog.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/LauncherDialog.cxx b/src/gui/LauncherDialog.cxx index da81bc231..9280e8288 100644 --- a/src/gui/LauncherDialog.cxx +++ b/src/gui/LauncherDialog.cxx @@ -178,8 +178,8 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent, // Create context menu for ROM list options VariantList l; VarList::push_back(l, "Power-on options" + ELLIPSIS, "override"); - VarList::push_back(l, "Show only ROM files" + ELLIPSIS, "roms"); - VarList::push_back(l, "Show all files" + ELLIPSIS, "allfiles"); + VarList::push_back(l, "Show only ROM files", "roms"); + VarList::push_back(l, "Show all files", "allfiles"); VarList::push_back(l, "Reload listing", "reload"); myMenu = make_unique(this, osystem.frameBuffer().font(), l); From 6b760312348c8f293a506aed7972a4b255e5f2d2 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 16:15:38 -0230 Subject: [PATCH 082/126] Fix error in parsing settings file for 'empty' values. --- src/emucore/Settings.cxx | 4 ++-- src/gui/DeveloperDialog.cxx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index 20f0dc72d..38ae2eeb7 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -226,8 +226,8 @@ void Settings::loadConfig() key = trim(key); value = trim(value); - // Check for absent key or value - if((key.length() == 0) || (value.length() == 0)) + // Skip absent key + if(key.length() == 0) continue; // Only settings which have been previously set are valid diff --git a/src/gui/DeveloperDialog.cxx b/src/gui/DeveloperDialog.cxx index a96956031..2f0b42b26 100644 --- a/src/gui/DeveloperDialog.cxx +++ b/src/gui/DeveloperDialog.cxx @@ -475,7 +475,7 @@ void DeveloperDialog::addDebuggerTab(const GUI::Font& font) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void DeveloperDialog::loadSettings(SettingsSet set) { - string prefix = set == SettingsSet::player ? "plr." : "dev."; + const string& prefix = set == SettingsSet::player ? "plr." : "dev."; myFrameStats[set] = instance().settings().getBool(prefix + "stats"); myConsole[set] = instance().settings().getString(prefix + "console") == "7800" ? 1 : 0; @@ -509,7 +509,7 @@ void DeveloperDialog::loadSettings(SettingsSet set) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void DeveloperDialog::saveSettings(SettingsSet set) { - string prefix = set == SettingsSet::player ? "plr." : "dev."; + const string& prefix = set == SettingsSet::player ? "plr." : "dev."; instance().settings().setValue(prefix + "stats", myFrameStats[set]); instance().settings().setValue(prefix + "console", myConsole[set] == 1 ? "7800" : "2600"); From 72f6096ba84e2b24c35edf914a36109f80be9a48 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 16:21:07 -0230 Subject: [PATCH 083/126] Add to changelog for the last commit on settings parsing bug. --- Changes.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Changes.txt b/Changes.txt index 9d056c5dd..3a5be8dd5 100644 --- a/Changes.txt +++ b/Changes.txt @@ -63,6 +63,11 @@ * Fixed bug in autodetecting Genesis controllers. + * Fixed bug in reading from settings file with entries that were empty; + the parsing was failing. This affected the 'cpurandom' argument; when + all options in it were turned off, they were all turned on again during + the next program run. + * Fixed bug with 'hold' events; they are now released a short time after starting a ROM. From 404ab8ffcc209be284a8459d99ce1c557313e0d8 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 16:32:12 -0230 Subject: [PATCH 084/126] Minor optimization in settings file parsing; don't copy a few strings. --- src/emucore/Settings.cxx | 6 ++---- src/emucore/Settings.hxx | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index 38ae2eeb7..7852cc796 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -221,10 +221,8 @@ void Settings::loadConfig() continue; // Split the line into key/value pairs and trim any whitespace - key = line.substr(0, equalPos); - value = line.substr(equalPos + 1, line.length() - key.length() - 1); - key = trim(key); - value = trim(value); + key = trim(line.substr(0, equalPos)); + value = trim(line.substr(equalPos + 1, line.length() - key.length() - 1)); // Skip absent key if(key.length() == 0) diff --git a/src/emucore/Settings.hxx b/src/emucore/Settings.hxx index 610defc83..ee83e55a0 100644 --- a/src/emucore/Settings.hxx +++ b/src/emucore/Settings.hxx @@ -98,7 +98,7 @@ class Settings virtual void saveConfig(); // Trim leading and following whitespace from a string - static string trim(string& str) + static string trim(const string& str) { string::size_type first = str.find_first_not_of(' '); return (first == string::npos) ? EmptyString : From 01a7e71faf80b7d38fa7754733d5d19a8552d97f Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 20:07:56 -0230 Subject: [PATCH 085/126] Updated Xcode project file for recent classes. --- src/macosx/stella.xcodeproj/project.pbxproj | 24 +++++++++------------ 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/macosx/stella.xcodeproj/project.pbxproj b/src/macosx/stella.xcodeproj/project.pbxproj index 0a28aa75f..8615bdffa 100644 --- a/src/macosx/stella.xcodeproj/project.pbxproj +++ b/src/macosx/stella.xcodeproj/project.pbxproj @@ -306,6 +306,8 @@ DC53B6AE1F3622DA00AA6BFB /* PointingDevice.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC53B6AD1F3622DA00AA6BFB /* PointingDevice.cxx */; }; DC56FCDE14CCCC4900A31CC3 /* MouseControl.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC56FCDC14CCCC4900A31CC3 /* MouseControl.cxx */; }; DC56FCDF14CCCC4900A31CC3 /* MouseControl.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC56FCDD14CCCC4900A31CC3 /* MouseControl.hxx */; }; + DC5963132139FA14002736F2 /* Bankswitch.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC5963112139FA14002736F2 /* Bankswitch.cxx */; }; + DC5963142139FA14002736F2 /* Bankswitch.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC5963122139FA14002736F2 /* Bankswitch.hxx */; }; DC5AAC281FCB24AB00C420A6 /* EventHandlerConstants.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC5AAC261FCB24AB00C420A6 /* EventHandlerConstants.hxx */; }; DC5AAC291FCB24AB00C420A6 /* FrameBufferConstants.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC5AAC271FCB24AB00C420A6 /* FrameBufferConstants.hxx */; }; DC5AAC2C1FCB24DF00C420A6 /* RadioButtonWidget.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC5AAC2A1FCB24DF00C420A6 /* RadioButtonWidget.cxx */; }; @@ -321,8 +323,6 @@ DC5D2C530F117CFD004D1660 /* StellaFont.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC5D2C4F0F117CFD004D1660 /* StellaFont.hxx */; }; DC5D2C540F117CFD004D1660 /* StellaLargeFont.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC5D2C500F117CFD004D1660 /* StellaLargeFont.hxx */; }; DC5D2C550F117CFD004D1660 /* StellaMediumFont.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC5D2C510F117CFD004D1660 /* StellaMediumFont.hxx */; }; - DC5D2C600F129B1E004D1660 /* LauncherFilterDialog.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC5D2C5E0F129B1E004D1660 /* LauncherFilterDialog.cxx */; }; - DC5D2C610F129B1E004D1660 /* LauncherFilterDialog.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC5D2C5F0F129B1E004D1660 /* LauncherFilterDialog.hxx */; }; DC5EE7C214F7C165001C628C /* NTSCFilter.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC5EE7C014F7C165001C628C /* NTSCFilter.cxx */; }; DC5EE7C314F7C165001C628C /* NTSCFilter.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC5EE7C114F7C165001C628C /* NTSCFilter.hxx */; }; DC62E6471960E87B007AEF05 /* AtariVoxWidget.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC62E6431960E87B007AEF05 /* AtariVoxWidget.cxx */; }; @@ -496,7 +496,6 @@ DCAD60A81152F8BD00BC4184 /* CartDPCPlus.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCAD60A61152F8BD00BC4184 /* CartDPCPlus.cxx */; }; DCAD60A91152F8BD00BC4184 /* CartDPCPlus.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCAD60A71152F8BD00BC4184 /* CartDPCPlus.hxx */; }; DCB20EC71A0C506C0048F595 /* main.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCB20EC61A0C506C0048F595 /* main.cxx */; }; - DCB2ECAE1F0AECA3009738A6 /* BSType.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCB2ECAB1F0AECA3009738A6 /* BSType.hxx */; }; DCB2ECAF1F0AECA3009738A6 /* CartDetector.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCB2ECAC1F0AECA3009738A6 /* CartDetector.cxx */; }; DCB2ECB01F0AECA3009738A6 /* CartDetector.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCB2ECAD1F0AECA3009738A6 /* CartDetector.hxx */; }; DCB87E581A104C1E00BF2A3B /* MediaFactory.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCB87E571A104C1E00BF2A3B /* MediaFactory.hxx */; }; @@ -1005,6 +1004,8 @@ DC53B6AD1F3622DA00AA6BFB /* PointingDevice.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PointingDevice.cxx; sourceTree = ""; }; DC56FCDC14CCCC4900A31CC3 /* MouseControl.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseControl.cxx; sourceTree = ""; }; DC56FCDD14CCCC4900A31CC3 /* MouseControl.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = MouseControl.hxx; sourceTree = ""; }; + DC5963112139FA14002736F2 /* Bankswitch.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Bankswitch.cxx; sourceTree = ""; }; + DC5963122139FA14002736F2 /* Bankswitch.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Bankswitch.hxx; sourceTree = ""; }; DC5AAC261FCB24AB00C420A6 /* EventHandlerConstants.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = EventHandlerConstants.hxx; sourceTree = ""; }; DC5AAC271FCB24AB00C420A6 /* FrameBufferConstants.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = FrameBufferConstants.hxx; sourceTree = ""; }; DC5AAC2A1FCB24DF00C420A6 /* RadioButtonWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RadioButtonWidget.cxx; sourceTree = ""; }; @@ -1020,8 +1021,6 @@ DC5D2C4F0F117CFD004D1660 /* StellaFont.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StellaFont.hxx; sourceTree = ""; }; DC5D2C500F117CFD004D1660 /* StellaLargeFont.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StellaLargeFont.hxx; sourceTree = ""; }; DC5D2C510F117CFD004D1660 /* StellaMediumFont.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = StellaMediumFont.hxx; sourceTree = ""; }; - DC5D2C5E0F129B1E004D1660 /* LauncherFilterDialog.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LauncherFilterDialog.cxx; sourceTree = ""; }; - DC5D2C5F0F129B1E004D1660 /* LauncherFilterDialog.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = LauncherFilterDialog.hxx; sourceTree = ""; }; DC5EE7C014F7C165001C628C /* NTSCFilter.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NTSCFilter.cxx; sourceTree = ""; }; DC5EE7C114F7C165001C628C /* NTSCFilter.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = NTSCFilter.hxx; sourceTree = ""; }; DC62E6431960E87B007AEF05 /* AtariVoxWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AtariVoxWidget.cxx; sourceTree = ""; }; @@ -1196,7 +1195,6 @@ DCAD60A61152F8BD00BC4184 /* CartDPCPlus.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartDPCPlus.cxx; sourceTree = ""; }; DCAD60A71152F8BD00BC4184 /* CartDPCPlus.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartDPCPlus.hxx; sourceTree = ""; }; DCB20EC61A0C506C0048F595 /* main.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cxx; sourceTree = ""; }; - DCB2ECAB1F0AECA3009738A6 /* BSType.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = BSType.hxx; sourceTree = ""; }; DCB2ECAC1F0AECA3009738A6 /* CartDetector.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartDetector.cxx; sourceTree = ""; }; DCB2ECAD1F0AECA3009738A6 /* CartDetector.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartDetector.hxx; sourceTree = ""; }; DCB87E571A104C1E00BF2A3B /* MediaFactory.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = MediaFactory.hxx; sourceTree = ""; }; @@ -1713,9 +1711,10 @@ DC1B2EC01E50036100F62837 /* AtariMouse.hxx */, DC487FB40DA5350900E12499 /* AtariVox.cxx */, DC487FB50DA5350900E12499 /* AtariVox.hxx */, + DC5963112139FA14002736F2 /* Bankswitch.cxx */, + DC5963122139FA14002736F2 /* Bankswitch.hxx */, 2DE2DF100627AE07006BEC99 /* Booster.cxx */, 2DE2DF110627AE07006BEC99 /* Booster.hxx */, - DCB2ECAB1F0AECA3009738A6 /* BSType.hxx */, 2DE2DF120627AE07006BEC99 /* Cart.cxx */, 2DE2DF130627AE07006BEC99 /* Cart.hxx */, 2DE2DF140627AE07006BEC99 /* Cart2K.cxx */, @@ -1951,8 +1950,6 @@ 2DDBEABB084578BF00812C11 /* Launcher.hxx */, 2DDBEABC084578BF00812C11 /* LauncherDialog.cxx */, 2DDBEABD084578BF00812C11 /* LauncherDialog.hxx */, - DC5D2C5E0F129B1E004D1660 /* LauncherFilterDialog.cxx */, - DC5D2C5F0F129B1E004D1660 /* LauncherFilterDialog.hxx */, 2DDBEAC0084578BF00812C11 /* ListWidget.cxx */, 2DDBEAC1084578BF00812C11 /* ListWidget.hxx */, DC6C726013CDEA0A008A5975 /* LoggerDialog.cxx */, @@ -2086,10 +2083,10 @@ DCC6A4AD20A2620D00863C59 /* audio */ = { isa = PBXGroup; children = ( - E0893AF0211B9841008B170D /* HighPass.cxx */, - E0893AF1211B9841008B170D /* HighPass.hxx */, E0DCD3A620A64E96000B614E /* ConvolutionBuffer.cxx */, E0DCD3A520A64E96000B614E /* ConvolutionBuffer.hxx */, + E0893AF0211B9841008B170D /* HighPass.cxx */, + E0893AF1211B9841008B170D /* HighPass.hxx */, E0DCD3A420A64E95000B614E /* LanczosResampler.cxx */, E0DCD3A320A64E95000B614E /* LanczosResampler.hxx */, DCC6A4AE20A2622500863C59 /* Resampler.hxx */, @@ -2332,7 +2329,6 @@ DC62E64A1960E87B007AEF05 /* SaveKeyWidget.hxx in Headers */, 2D91745209BA90380026E9FF /* CommandDialog.hxx in Headers */, 2D91745309BA90380026E9FF /* CommandMenu.hxx in Headers */, - DCB2ECAE1F0AECA3009738A6 /* BSType.hxx in Headers */, E0306E111F93E916003DDD52 /* JitterEmulation.hxx in Headers */, 2D91745509BA90380026E9FF /* CpuWidget.hxx in Headers */, 2D91745609BA90380026E9FF /* DataGridOpsWidget.hxx in Headers */, @@ -2396,7 +2392,6 @@ DC5D2C530F117CFD004D1660 /* StellaFont.hxx in Headers */, DC5D2C540F117CFD004D1660 /* StellaLargeFont.hxx in Headers */, DC5D2C550F117CFD004D1660 /* StellaMediumFont.hxx in Headers */, - DC5D2C610F129B1E004D1660 /* LauncherFilterDialog.hxx in Headers */, DC3EE8681E2C0E6D00905161 /* inftrees.h in Headers */, DC932D440F278A5200FEFEFC /* DefProps.hxx in Headers */, DC932D450F278A5200FEFEFC /* Serializable.hxx in Headers */, @@ -2485,6 +2480,7 @@ DCAAE5E31715887B0080BB82 /* CartF0Widget.hxx in Headers */, DCAAE5E51715887B0080BB82 /* CartF4SCWidget.hxx in Headers */, DCAAE5E71715887B0080BB82 /* CartF4Widget.hxx in Headers */, + DC5963142139FA14002736F2 /* Bankswitch.hxx in Headers */, DCAAE5E91715887B0080BB82 /* CartF6SCWidget.hxx in Headers */, DCAAE5EB1715887B0080BB82 /* CartF6Widget.hxx in Headers */, DCAAE5ED1715887B0080BB82 /* CartF8SCWidget.hxx in Headers */, @@ -2751,6 +2747,7 @@ 2D9174FA09BA90380026E9FF /* DebuggerDialog.cxx in Sources */, DCF3A6E91DFC75E3008A8AF3 /* Ball.cxx in Sources */, 2D9174FB09BA90380026E9FF /* PromptWidget.cxx in Sources */, + DC5963132139FA14002736F2 /* Bankswitch.cxx in Sources */, DCDFF08120B781B0001227C0 /* DispatchResult.cxx in Sources */, 2D9174FC09BA90380026E9FF /* RamWidget.cxx in Sources */, DC2AADAE194F389C0026C7A4 /* CartDASH.cxx in Sources */, @@ -2808,7 +2805,6 @@ DC173F760E2CAC1E00320F94 /* ContextMenu.cxx in Sources */, DC2AADB4194F390F0026C7A4 /* CartRamWidget.cxx in Sources */, DC0DF8690F0DAAF500B0F1F3 /* GlobalPropsDialog.cxx in Sources */, - DC5D2C600F129B1E004D1660 /* LauncherFilterDialog.cxx in Sources */, DCF3A6EF1DFC75E3008A8AF3 /* DrawCounterDecodes.cxx in Sources */, DC5AAC2C1FCB24DF00C420A6 /* RadioButtonWidget.cxx in Sources */, DC9EA8870F729A36000452B5 /* KidVid.cxx in Sources */, From baadecc86650a52b994589491a989c3c3a973ae5 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 20:19:13 -0230 Subject: [PATCH 086/126] Update VS project file for recent classes. --- src/windows/Stella.vcxproj | 2 -- src/windows/Stella.vcxproj.filters | 6 ------ 2 files changed, 8 deletions(-) diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index 8457f8149..7b012ca3c 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -491,7 +491,6 @@ - @@ -1105,7 +1104,6 @@ - diff --git a/src/windows/Stella.vcxproj.filters b/src/windows/Stella.vcxproj.filters index c14853032..6748e7446 100644 --- a/src/windows/Stella.vcxproj.filters +++ b/src/windows/Stella.vcxproj.filters @@ -402,9 +402,6 @@ Source Files\gui - - Source Files\gui - Source Files\gui @@ -1337,9 +1334,6 @@ Header Files\gui - - Header Files\gui - Header Files\gui From 09b3d980f3a3d4b729c2905db50f82d3bcef56fe Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 20:52:56 -0230 Subject: [PATCH 087/126] Fixed 'stuck' notes when changing video modes. This is most apparent in OSX, where toggling windowed/fullscreen mode can sometimes take up to one second, and any sounds playing from the ROM become stuck until the operation completes. Also present on other systems to some extent. Sound is now muted until the operation is complete. --- Changes.txt | 4 ++++ src/common/SoundNull.hxx | 12 ++---------- src/common/SoundSDL2.cxx | 19 ++++--------------- src/common/SoundSDL2.hxx | 10 ++++------ src/emucore/FrameBuffer.cxx | 20 ++++++++++++++++++++ src/emucore/Sound.hxx | 12 ++---------- 6 files changed, 36 insertions(+), 41 deletions(-) diff --git a/Changes.txt b/Changes.txt index 3a5be8dd5..8114512a8 100644 --- a/Changes.txt +++ b/Changes.txt @@ -86,6 +86,10 @@ * The debugger 'uhex' command is now honoured in CDF and BUS schemes. + * When switching screenmodes, the sound is now paused and later resumed. + This fixes popping and cracking sounds apparent on some systems, notably + OSX when toggling windowed/fullscreen mode. + * Updated PAL palette. * For UNIX systems: in the ROM launcher, when using symlinks use the diff --git a/src/common/SoundNull.hxx b/src/common/SoundNull.hxx index 4416e2223..1ebc4426a 100644 --- a/src/common/SoundNull.hxx +++ b/src/common/SoundNull.hxx @@ -71,18 +71,10 @@ class SoundNull : public Sound Set the mute state of the sound object. While muted no sound is played. @param state Mutes sound if true, unmute if false - */ - void mute(bool state) override { } - /** - Get the fragment size. + @return The previous (old) mute state */ - uInt32 getFragmentSize() const override { return 512; } - - /** - Get the sample rate. - */ - uInt32 getSampleRate() const override { return 31400; } + bool mute(bool state) override { return true; } /** Sets the volume of the sound device to the specified level. The diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index c39aa7d86..cc9c08c41 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -190,12 +190,13 @@ void SoundSDL2::close() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void SoundSDL2::mute(bool state) +bool SoundSDL2::mute(bool state) { + bool oldstate = SDL_GetAudioDeviceStatus(myDevice) == SDL_AUDIO_PAUSED; if(myIsInitializedFlag) - { SDL_PauseAudioDevice(myDevice, state ? 1 : 0); - } + + return oldstate; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -238,18 +239,6 @@ void SoundSDL2::adjustVolume(Int8 direction) myOSystem.frameBuffer().showMessage(message); } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 SoundSDL2::getFragmentSize() const -{ - return myHardwareSpec.samples; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 SoundSDL2::getSampleRate() const -{ - return myHardwareSpec.freq; -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void SoundSDL2::processFragment(float* stream, uInt32 length) { diff --git a/src/common/SoundSDL2.hxx b/src/common/SoundSDL2.hxx index 9d519bf46..46c9f685e 100644 --- a/src/common/SoundSDL2.hxx +++ b/src/common/SoundSDL2.hxx @@ -73,9 +73,11 @@ class SoundSDL2 : public Sound /** Set the mute state of the sound object. While muted no sound is played. - @param state Mutes sound if true, unmute if false + @param state Mutes sound if true, unmute if false + + @return The previous (old) mute state */ - void mute(bool state) override; + bool mute(bool state) override; /** Sets the volume of the sound device to the specified level. The @@ -94,10 +96,6 @@ class SoundSDL2 : public Sound */ void adjustVolume(Int8 direction) override; - uInt32 getFragmentSize() const override; - - uInt32 getSampleRate() const override; - protected: /** Invoked by the sound callback to process the next sound fragment. diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index f408941f5..6d899aaa5 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -32,6 +32,7 @@ #include "OSystem.hxx" #include "Settings.hxx" #include "TIA.hxx" +#include "Sound.hxx" #include "FBSurface.hxx" #include "TIASurface.hxx" @@ -206,6 +207,10 @@ FBInitStatus FrameBuffer::createDisplay(const string& title, const VideoMode& mode = getSavedVidMode(useFullscreen); if(width <= mode.screen.w && height <= mode.screen.h) { + // Changing the video mode can take some time, during which the last + // sound played may get 'stuck' + // So we mute the sound until the operation completes + bool oldMuteState = myOSystem.sound().mute(true); if(setVideoMode(myScreenTitle, mode)) { myImageRect = mode.image; @@ -220,6 +225,8 @@ FBInitStatus FrameBuffer::createDisplay(const string& title, myOSystem.settings().setValue("fullscreen", fullScreen()); resetSurfaces(); setCursorState(); + + myOSystem.sound().mute(oldMuteState); } else { @@ -668,6 +675,11 @@ void FrameBuffer::setFullscreen(bool enable) return; } + // Changing the video mode can take some time, during which the last + // sound played may get 'stuck' + // So we mute the sound until the operation completes + bool oldMuteState = myOSystem.sound().mute(true); + const VideoMode& mode = getSavedVidMode(enable); if(setVideoMode(myScreenTitle, mode)) { @@ -684,6 +696,7 @@ void FrameBuffer::setFullscreen(bool enable) resetSurfaces(); setCursorState(); } + myOSystem.sound().mute(oldMuteState); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -711,6 +724,11 @@ bool FrameBuffer::changeWindowedVidMode(int direction) else return false; + // Changing the video mode can take some time, during which the last + // sound played may get 'stuck' + // So we mute the sound until the operation completes + bool oldMuteState = myOSystem.sound().mute(true); + const VideoMode& mode = myCurrentModeList->current(); if(setVideoMode(myScreenTitle, mode)) { @@ -723,8 +741,10 @@ bool FrameBuffer::changeWindowedVidMode(int direction) resetSurfaces(); showMessage(mode.description); myOSystem.settings().setValue("tia.zoom", mode.zoom); + myOSystem.sound().mute(oldMuteState); return true; } + myOSystem.sound().mute(oldMuteState); #endif return false; } diff --git a/src/emucore/Sound.hxx b/src/emucore/Sound.hxx index 689618810..24a42e832 100644 --- a/src/emucore/Sound.hxx +++ b/src/emucore/Sound.hxx @@ -64,18 +64,10 @@ class Sound Set the mute state of the sound object. While muted no sound is played. @param state Mutes sound if true, unmute if false - */ - virtual void mute(bool state) = 0; - /** - Get the fragment size. + @return The previous (old) mute state */ - virtual uInt32 getFragmentSize() const = 0; - - /** - Get the sample rate. - */ - virtual uInt32 getSampleRate() const = 0; + virtual bool mute(bool state) = 0; /** Sets the volume of the sound device to the specified level. The From dce16d6f7cb9dc0da71df5352838736b3e9d30cc Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 22:04:31 -0230 Subject: [PATCH 088/126] Make all Bankswitch types detectable with specific ROM filename extensions. Use a map instead of linear search in Bankswitch class. --- src/emucore/Bankswitch.cxx | 154 ++++++++++++++++++++++++++----------- src/emucore/Bankswitch.hxx | 4 +- 2 files changed, 111 insertions(+), 47 deletions(-) diff --git a/src/emucore/Bankswitch.cxx b/src/emucore/Bankswitch.cxx index 766cf401b..4f8efca28 100644 --- a/src/emucore/Bankswitch.cxx +++ b/src/emucore/Bankswitch.cxx @@ -26,11 +26,11 @@ string Bankswitch::typeToName(Bankswitch::Type type) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Bankswitch::Type Bankswitch::nameToType(const string& name) { - for(int i = 0; i < int(Bankswitch::Type::NumSchemes); ++i) - if(BSPF::equalsIgnoreCase(BSList[i].name, name)) - return Bankswitch::Type(i); + auto it = ourNameToTypes.find(name); + if(it != ourNameToTypes.end()) + return it->second; - return Bankswitch::Type::_AUTO; + return Bankswitch::Type::_AUTO; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -141,46 +141,108 @@ Bankswitch::ExtensionMap Bankswitch::ourExtensions = { { "zip", Bankswitch::Type::_AUTO }, { "cu", Bankswitch::Type::_AUTO }, - // Types from UnoCart and HarmonyCart - { "084", Bankswitch::Type::_0840 }, - { "2K", Bankswitch::Type::_2K }, - { "3E", Bankswitch::Type::_3E }, - { "3EP", Bankswitch::Type::_3EP }, - { "3F", Bankswitch::Type::_3F }, - { "4A5", Bankswitch::Type::_4A50 }, - { "4K", Bankswitch::Type::_4K }, - { "4KS", Bankswitch::Type::_4KSC }, - { "AR", Bankswitch::Type::_AR }, - { "BF", Bankswitch::Type::_BF }, - { "BFS", Bankswitch::Type::_BFSC }, - { "BUS", Bankswitch::Type::_BUS }, - { "CDF", Bankswitch::Type::_CDF }, - { "CM", Bankswitch::Type::_CM }, - { "CTY", Bankswitch::Type::_CTY }, - { "CV", Bankswitch::Type::_CV }, - { "CVP", Bankswitch::Type::_CVP }, - { "DAS", Bankswitch::Type::_DASH }, - { "DF", Bankswitch::Type::_DF }, - { "DFS", Bankswitch::Type::_DFSC }, - { "DPC", Bankswitch::Type::_DPC }, - { "DPP", Bankswitch::Type::_DPCP }, - { "E0", Bankswitch::Type::_E0 }, - { "E7", Bankswitch::Type::_E7 }, - { "E78", Bankswitch::Type::_E78K }, - { "EF", Bankswitch::Type::_EF }, - { "EFS", Bankswitch::Type::_EFSC }, - { "F0", Bankswitch::Type::_F0 }, - { "F4", Bankswitch::Type::_F4 }, - { "F4S", Bankswitch::Type::_F4SC }, - { "F6", Bankswitch::Type::_F6 }, - { "F6S", Bankswitch::Type::_F6SC }, - { "F8", Bankswitch::Type::_F8 }, - { "F8S", Bankswitch::Type::_F8SC }, - { "FA", Bankswitch::Type::_FA }, - { "FA2", Bankswitch::Type::_FA2 }, - { "FE", Bankswitch::Type::_FE }, - { "MDM", Bankswitch::Type::_MDM }, - { "SB", Bankswitch::Type::_SB }, - { "UA", Bankswitch::Type::_UA }, - { "WD", Bankswitch::Type::_WD } + // All bankswitch types (tose that UnoCart and HarmonyCart support have the same name) + { "084", Bankswitch::Type::_0840 }, + { "2N1", Bankswitch::Type::_2IN1 }, + { "4N1", Bankswitch::Type::_4IN1 }, + { "8N1", Bankswitch::Type::_8IN1 }, + { "16N", Bankswitch::Type::_16IN1 }, + { "32N", Bankswitch::Type::_32IN1 }, + { "64N", Bankswitch::Type::_64IN1 }, + { "128", Bankswitch::Type::_128IN1 }, + { "2K", Bankswitch::Type::_2K }, + { "3E", Bankswitch::Type::_3E }, + { "3EP", Bankswitch::Type::_3EP }, + { "3F", Bankswitch::Type::_3F }, + { "4A5", Bankswitch::Type::_4A50 }, + { "4K", Bankswitch::Type::_4K }, + { "4KS", Bankswitch::Type::_4KSC }, + { "AR", Bankswitch::Type::_AR }, + { "BF", Bankswitch::Type::_BF }, + { "BFS", Bankswitch::Type::_BFSC }, + { "BUS", Bankswitch::Type::_BUS }, + { "CDF", Bankswitch::Type::_CDF }, + { "CM", Bankswitch::Type::_CM }, + { "CTY", Bankswitch::Type::_CTY }, + { "CV", Bankswitch::Type::_CV }, + { "CVP", Bankswitch::Type::_CVP }, + { "DAS", Bankswitch::Type::_DASH }, + { "DF", Bankswitch::Type::_DF }, + { "DFS", Bankswitch::Type::_DFSC }, + { "DPC", Bankswitch::Type::_DPC }, + { "DPP", Bankswitch::Type::_DPCP }, + { "E0", Bankswitch::Type::_E0 }, + { "E7", Bankswitch::Type::_E7 }, + { "E78", Bankswitch::Type::_E78K }, + { "EF", Bankswitch::Type::_EF }, + { "EFS", Bankswitch::Type::_EFSC }, + { "F0", Bankswitch::Type::_F0 }, + { "F4", Bankswitch::Type::_F4 }, + { "F4S", Bankswitch::Type::_F4SC }, + { "F6", Bankswitch::Type::_F6 }, + { "F6S", Bankswitch::Type::_F6SC }, + { "F8", Bankswitch::Type::_F8 }, + { "F8S", Bankswitch::Type::_F8SC }, + { "FA", Bankswitch::Type::_FA }, + { "FA2", Bankswitch::Type::_FA2 }, + { "FE", Bankswitch::Type::_FE }, + { "MDM", Bankswitch::Type::_MDM }, + { "SB", Bankswitch::Type::_SB }, + { "UA", Bankswitch::Type::_UA }, + { "WD", Bankswitch::Type::_WD }, + { "X07", Bankswitch::Type::_X07 } +}; + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +Bankswitch::NameToTypeMap Bankswitch::ourNameToTypes = { + { "AUTO", Bankswitch::Type::_AUTO }, + { "0840", Bankswitch::Type::_0840 }, + { "2IN1", Bankswitch::Type::_2IN1 }, + { "4IN1", Bankswitch::Type::_4IN1 }, + { "8IN1", Bankswitch::Type::_8IN1 }, + { "16IN1", Bankswitch::Type::_16IN1 }, + { "32IN1", Bankswitch::Type::_32IN1 }, + { "64IN1", Bankswitch::Type::_64IN1 }, + { "128IN1", Bankswitch::Type::_128IN1 }, + { "2K", Bankswitch::Type::_2K }, + { "3E", Bankswitch::Type::_3E }, + { "3E+", Bankswitch::Type::_3EP }, + { "3F", Bankswitch::Type::_3F }, + { "4A50", Bankswitch::Type::_4A50 }, + { "4K", Bankswitch::Type::_4K }, + { "4KSC", Bankswitch::Type::_4KSC }, + { "AR", Bankswitch::Type::_AR }, + { "BF", Bankswitch::Type::_BF }, + { "BFSC", Bankswitch::Type::_BFSC }, + { "BUS", Bankswitch::Type::_BUS }, + { "CDF", Bankswitch::Type::_CDF }, + { "CM", Bankswitch::Type::_CM }, + { "CTY", Bankswitch::Type::_CTY }, + { "CV", Bankswitch::Type::_CV }, + { "CV+", Bankswitch::Type::_CVP }, + { "DASH", Bankswitch::Type::_DASH }, + { "DF", Bankswitch::Type::_DF }, + { "DFSC", Bankswitch::Type::_DFSC }, + { "DPC", Bankswitch::Type::_DPC }, + { "DPC+", Bankswitch::Type::_DPCP }, + { "E0", Bankswitch::Type::_E0 }, + { "E7", Bankswitch::Type::_E7 }, + { "E78K", Bankswitch::Type::_E78K }, + { "EF", Bankswitch::Type::_EF }, + { "EFSC", Bankswitch::Type::_EFSC }, + { "F0", Bankswitch::Type::_F0 }, + { "F4", Bankswitch::Type::_F4 }, + { "F4SC", Bankswitch::Type::_F4SC }, + { "F6", Bankswitch::Type::_F6 }, + { "F6SC", Bankswitch::Type::_F6SC }, + { "F8", Bankswitch::Type::_F8 }, + { "F8SC", Bankswitch::Type::_F8SC }, + { "FA", Bankswitch::Type::_FA }, + { "FA2", Bankswitch::Type::_FA2 }, + { "FE", Bankswitch::Type::_FE }, + { "MDM", Bankswitch::Type::_MDM }, + { "SB", Bankswitch::Type::_SB }, + { "UA", Bankswitch::Type::_UA }, + { "WD", Bankswitch::Type::_WD }, + { "X07", Bankswitch::Type::_X07 } }; diff --git a/src/emucore/Bankswitch.hxx b/src/emucore/Bankswitch.hxx index 1f118bfd3..7ec11596d 100644 --- a/src/emucore/Bankswitch.hxx +++ b/src/emucore/Bankswitch.hxx @@ -91,9 +91,11 @@ class Bankswitch } }; using ExtensionMap = std::map; - static ExtensionMap ourExtensions; + using NameToTypeMap = std::map; + static NameToTypeMap ourNameToTypes; + private: // Following constructors and assignment operators not supported Bankswitch() = delete; From a84f76fd5f141478d49078d9308d0b50819985e6 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 22:50:25 -0230 Subject: [PATCH 089/126] Documentation updates. --- docs/index.html | 171 +++++++++++++++++++++++++----------------------- 1 file changed, 89 insertions(+), 82 deletions(-) diff --git a/docs/index.html b/docs/index.html index 40d704216..acb02943c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -252,11 +252,11 @@
    • High speed emulation using optimized C++14 code
    • -
    • Supports high quality TIA emulation using the TIA core from +
    • Supports high quality TIA emulation using the cycle-exact TIA core from 6502.ts by Christian Speckner
    • Supports high quality sound emulation using code derived from Chris Brenner's - Atari 2600 FPGA project, including cycle-accurate audio, analog interference + Atari 2600 FPGA project, including cycle-exact audio, analog interference from mixing of audio channels, as well as stereo sound support; dynamic sound resampling is also included
    • Emulates the Atari 2600 Joystick Controllers using your computer's keyboard, @@ -295,7 +295,7 @@
    • Supports property file for setting the properties associated with games
    • Supports the NTSC, PAL and SECAM television standards in 50Hz and 60Hz mode
    • Supports autodetection of display format for 50Hz vs. 60Hz modes
    • -
    • Supports several "undocumented features" of the TIA graphics chip used by +
    • Supports most "undocumented features" of the TIA graphics chip used by some games
    • TIA emulation supports full collision checking, with ability to disable TIA sprites and collisions for each object separately
    • @@ -490,12 +490,11 @@ their ROM images
    • If you're handy with a soldering iron then you can design and build a - device that plugs into the printer port of a PC and read the data from the - cartridge
    • + device that plugs into a PC and read the data from the cartridge
    -

    WARNING: It is illegal to use ROM images of games that you do not - actually own since these games are still copyrighted.

    +

    WARNING: It may be illegal to use ROM images of games that you do not + actually own since these games may still be copyrighted.

    Supercharger Cassettes

    @@ -533,8 +532,24 @@

    Stella supports ROMs ending with extensions .a26, .bin, .rom, .gz, and .zip. For the last two compressed formats (GZIP and ZIP, respectively), Stella will automatically decompress the archive, and use the first ROM image it finds in - it (ie, the first one ending in a valid extension).

    - + it (ie, the first one ending in a valid extension). If a ZIP archive contains + many such files, Stella will display a virtual filesystem of the contents + of the archive.

    + +

    Other extensions are also possible, namely to force a specific bankswitch scheme. + Normally, the bankswitching scheme for a ROM is determined automatically, + or manually by setting a ROM property, and you never + have to do anything yourself. However, it is also possible to force the + bankswitch type to use by adding a special filename extension. These extensions + are listed in the ROM properties section under + Cartridge.Type -> File Extension.

    + +

    Note: These extensions are the same as those used by the Harmony Cart + and Unocart and are not case-sensitive, so you can name your files and have them + work across all applications. Again, to be clear, this is only necessary when + you want to override the default bankswitching scheme for a ROM. This will + not normally be necessary.

    +

    Playing a Game

    @@ -554,16 +569,9 @@

    If this is your first time starting Stella, you may have to navigate to your ROMs. The path of the first ROM you play automatically defines the default ROM path. You - can change it in the Configure Paths dialog. + can change it later in the Configure Paths dialog.

    -

    The browser should be self-explanatory. The 'Go Up' button moves to the parent - folder (if it exists), and the 'Base Dir' button moves to the base directory where, - by default, all Stella-related files are stored. Double-clicking an item will - enter that directory. Click 'Choose' to select the location, or 'Cancel' to exit - the browser. Note that if you don't select a ROM directory now, you will be prompted - again the next time Stella is started.

    -

    At this point, you may want to set the locations for snapshots and other external paths. This is described in more detail in Advanced Configuration - Snapshot Settings and @@ -571,13 +579,12 @@ These settings are optional, and can be left at the defaults if you won't be using snapshots in the ROM launcher.

    -

    Once you've correctly set the default ROM directory, you can start emulation by - selecting a ROM and pressing 'Enter' or clicking 'Select', or double-clicking a ROM. - Note that some games require you to 'Reset' the console before you start playing. In this - case, you need to hit the virtual reset switch, which by default is the F2 key. - Also, some games may require that you press the joystick fire button to begin, - which by default is the Left Control or Space key(s). If a game uses a - more complex controller, see +

    you can start emulation by selecting a ROM and pressing 'Enter' or clicking 'Select', + or double-clicking a ROM. Note that some games require you to 'Reset' the console + before you start playing. In this case, you need to hit the virtual reset switch, + which by default is the F2 key. Also, some games may require that you press the + joystick fire button to begin, which by default is the Left Control or Space key(s), + or button 0 on your joystick. If a game uses a more complex controller, see Getting Started - Keyboard Layout for more information. To exit a game and re-enter the ROM launcher, press the 'Escape' key.

    @@ -1785,7 +1792,6 @@ -

    Stella's 'Time Machine'

    @@ -1836,6 +1842,7 @@

    The 'Time Machine' mode can be configured by the user. For details see Developer Options - Time Machine tab.

    +

    @@ -2977,9 +2984,9 @@ don't use this function. There is no undo feature, and one won't be added.
  • Only filenames that Stella considers to be valid ROMs will be - considered. Currently, this means files that end in '.a26', - '.bin', '.rom', '.gz' and '.zip'. Files which don't have these - extensions will be ignored.
  • + considered. Currently, this means files with extensions described in + "Supported File formats". Files which don't have these extensions will + be ignored.
  • If a valid ROM doesn't have a properties entry, it will be ignored.
  • @@ -3098,7 +3105,7 @@ ItemBrief descriptionFor more information,
    see CommandLine Player/Developer settingsSelects the active settings set-dev.settings Console info overlayOverlay console info on the TIA image during emulation.-plr.stats
    -dev.stats - ConsoleSelect the console type, this affects Color/B&W/Pause key emulation and zero-page RAM initialzation-plr.console
    -dev.console + ConsoleSelect the console type, this affects Color/B&W/Pause key emulation and zero-page RAM initialization-plr.console
    -dev.console Random startup bankRandomize the startup bank (only for selected bankswitch types)-plr.bankrandom
    -dev.bankrandom Randomize zero-page ...When loading a ROM, randomize all RAM content instead of initializing with all zeroes (for 'Console' = 'Atari 2600' only)-plr.ramrandom
    -dev.ramrandom Randomize CPUWhen loading a ROM, randomize the content of the specified CPU registers-plr.cpurandom
    -dev.cpurandom @@ -3186,7 +3193,7 @@ will be compressed (*). This means that more and more intermediate states will be removed and the interval between save states becomes larger the further they are back in time.
    - (*) Compresion only works if 'Uncompressed size' is smaller than + (*) Compression only works if 'Uncompressed size' is smaller than 'Buffer size'. -plr.tm.horizon
    -dev.tm.horizon @@ -3207,7 +3214,7 @@ Font sizeSelf-explanatory-dbg.fontsize Font styleSelf-explanatory-dbg.fontstyle Debugger width/heightSelf-explanatory-dbg.res - Trap on 'ghost' readsDefines whether the debugger should consider CPU 'ghost' reads for trap adresses.-dbg.ghostreadstrap + Trap on 'ghost' readsDefines whether the debugger should consider CPU 'ghost' reads for trap addresses.-dbg.ghostreadstrap @@ -3543,7 +3550,7 @@ Ms Pac-Man (Stella extended codes): - Cartridge.Type: + Cartridge.Type: Indicates the bank-switching type for the game. The value of this property must be either Auto or one of the following (for more information about bank-switching see Kevin Horton's 2600 bankswitching @@ -3551,56 +3558,56 @@ Ms Pac-Man (Stella extended codes): as (¹) do not currently have reliable auto-detection, those marked as (²) are not fully supported in the debugger: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     Type Description
    0840 8K ECONObanking
    2IN1 ¹4-32K Multicart (2 games)
    4IN1 ¹8-32K Multicart (4 games)
    8IN1 ¹16-64K Multicart (8 games)
    16IN1 ¹32-128K Multicart (16 games)
    32IN1 ¹64-128K Multicart (32 games)
    64IN1 ¹64/128K Multicart
    128IN1 ¹256/512K Multicart
    2K 64-2048 byte Atari
    3E 32K Tigervision
    3E+ 3E+ (TJ modified DASH)
    3F 512K Tigervision
    4A50 ²64K 4A50 + ram
    4K 4K Atari
    4KSC CPUWIZ 4K + ram
    AR Supercharger
    BF CPUWIZ 256K
    BFSC CPUWIZ 256K + ram
    BUS Experimental
    CDF Chris, Darrell, Fred
    CM ¹Spectravideo CompuMate
    CTY ¹²CDW - Chetiry
    CV Commavid extra ram
    CV+ Extended Commavid extra ram
    DASH Boulder Dash 2
    DF CPUWIZ 128K
    DFSC CPUWIZ 128K + ram
    DPC Pitfall II
    DPC+Enhanced DPC
    E0 8K Parker Bros
    E7 16K M-network
    E78K 8K M-network
    EF 64K Homestar Runner
    EFSC 64K Homestar Runner + ram
    F0 Dynacom Megaboy
    F4 32K Atari
    F4SC 32K Atari + ram
    F6 16K Atari
    F6SC 16K Atari + ram
    F8 8K Atari
    F8SC 8K Atari + ram
    FA CBS RAM Plus
    FA2 CBS RAM Plus 24/28K
    FE 8K Decathlon
    MDM Menu Driven Megacart
    SB 128-256k SUPERbanking
    UA 8K UA Ltd.
    WD Wickstead Design
    X07 ¹64K AtariAge
     Type DescriptionFile Extension
    (to force type)
    0840 8K ECONObanking .084
    2IN1 ¹4-32K Multicart (2 games) .2N1
    4IN1 ¹8-32K Multicart (4 games) .4N1
    8IN1 ¹16-64K Multicart (8 games) .8N1
    16IN1 ¹32-128K Multicart (16 games) .16N
    32IN1 ¹64-128K Multicart (32 games) .32N
    64IN1 ¹64/128K Multicart .64N
    128IN1 ¹256/512K Multicart .128
    2K 64-2048 byte Atari .2K
    3E 32K Tigervision .3E
    3E+ 3E+ (TJ modified DASH) .3EP
    3F 512K Tigervision .3F
    4A50 ²64K 4A50 + ram .4A5
    4K 4K Atari .4K
    4KSC CPUWIZ 4K + ram .4KS
    AR Supercharger .AR
    BF CPUWIZ 256K .BF
    BFSC CPUWIZ 256K + ram.BFS
    BUS Experimental.BUS
    CDF Chris, Darrell, Fred.CDF
    CM ¹Spectravideo CompuMate .CM
    CTY ¹²CDW - Chetiry .CTY
    CV Commavid extra ram .CV
    CV+ Extended Commavid extra ram.CVP
    DASH Boulder Dash 2 .DAS
    DF CPUWIZ 128K .DF
    DFSC CPUWIZ 128K + ram.DFS
    DPC Pitfall II .DPC
    DPC+Enhanced DPC .DPP
    E0 8K Parker Bros .E0
    E7 16K M-network .E7
    E78K 8K M-network .E78
    EF 64K Homestar Runner .EF
    EFSC 64K Homestar Runner + ram.EFS
    F0 Dynacom Megaboy .F0
    F4 32K Atari .F4
    F4SC 32K Atari + ram .F4S
    F6 16K Atari .F6
    F6SC 16K Atari + ram .F6S
    F8 8K Atari .F8
    F8SC 8K Atari + ram .F8S
    FA CBS RAM Plus .FA
    FA2 CBS RAM Plus 24/28K .FA2
    FE 8K Decathlon .FE
    MDM Menu Driven Megacart .MDM
    SB 128-256k SUPERbanking .SB
    UA 8K UA Ltd. .UA
    WD Wickstead Design .WD
    X07 ¹64K AtariAge .X07
    From fe0d29a795b62f9fdd14a5c5652ea8dfbf6a4d3a Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 31 Aug 2018 23:29:19 -0230 Subject: [PATCH 090/126] Fix ZIP handling wrt what is a valid filename (take new extensions into account). --- src/common/FSNodeZIP.cxx | 13 +++---------- src/common/ZipHandler.cxx | 8 ++------ src/emucore/Bankswitch.cxx | 22 +++++++++++++++++----- src/emucore/Bankswitch.hxx | 8 +++++--- 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/common/FSNodeZIP.cxx b/src/common/FSNodeZIP.cxx index 0af148608..73c48aee0 100644 --- a/src/common/FSNodeZIP.cxx +++ b/src/common/FSNodeZIP.cxx @@ -18,6 +18,7 @@ #include #include "bspf.hxx" +#include "Bankswitch.hxx" #include "OSystem.hxx" #include "FSNodeFactory.hxx" #include "FSNodeZIP.hxx" @@ -38,14 +39,6 @@ FilesystemNodeZIP::FilesystemNodeZIP(const string& p) _isDirectory(false), _isFile(false) { - // Is this a valid file? - auto isFile = [](const string& file) - { - return BSPF::endsWithIgnoreCase(file, ".a26") || - BSPF::endsWithIgnoreCase(file, ".bin") || - BSPF::endsWithIgnoreCase(file, ".rom"); - }; - // Extract ZIP file and virtual file (if specified) size_t pos = BSPF::findIgnoreCase(p, ".zip"); if(pos == string::npos) @@ -67,7 +60,7 @@ FilesystemNodeZIP::FilesystemNodeZIP(const string& p) if(pos+5 < p.length()) { _virtualPath = p.substr(pos+5); - _isFile = isFile(_virtualPath); + _isFile = Bankswitch::isValidRomName(_virtualPath); _isDirectory = !_isFile; } else if(_numFiles == 1) @@ -76,7 +69,7 @@ FilesystemNodeZIP::FilesystemNodeZIP(const string& p) while(zip.hasNext() && !found) { const string& file = zip.next(); - if(isFile(file)) + if(Bankswitch::isValidRomName(file)) { _virtualPath = file; _isFile = true; diff --git a/src/common/ZipHandler.cxx b/src/common/ZipHandler.cxx index 673e5784e..903404a3e 100644 --- a/src/common/ZipHandler.cxx +++ b/src/common/ZipHandler.cxx @@ -19,6 +19,7 @@ #include #include +#include "Bankswitch.hxx" #include "ZipHandler.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -261,13 +262,8 @@ ZipHandler::zip_error ZipHandler::zip_file_open(const char* filename, zip_file** // Count ROM files (we do it at this level so it will be cached) while(hasNext()) - { - const std::string& file = next(); - if(BSPF::endsWithIgnoreCase(file, ".a26") || - BSPF::endsWithIgnoreCase(file, ".bin") || - BSPF::endsWithIgnoreCase(file, ".rom")) + if(Bankswitch::isValidRomName(next())) (*zip)->romfiles++; - } return ZIPERR_NONE; diff --git a/src/emucore/Bankswitch.cxx b/src/emucore/Bankswitch.cxx index 4f8efca28..36efe39c8 100644 --- a/src/emucore/Bankswitch.cxx +++ b/src/emucore/Bankswitch.cxx @@ -49,9 +49,8 @@ Bankswitch::Type Bankswitch::typeFromExtension(const FilesystemNode& file) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Bankswitch::isValidRomName(const FilesystemNode& file, string& ext) +bool Bankswitch::isValidRomName(const string& name, string& ext) { - const string& name = file.getPath(); string::size_type idx = name.find_last_of('.'); if(idx != string::npos) { @@ -67,10 +66,23 @@ bool Bankswitch::isValidRomName(const FilesystemNode& file, string& ext) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Bankswitch::isValidRomName(const FilesystemNode& file) +bool Bankswitch::isValidRomName(const FilesystemNode& name, string& ext) { - string extension; // not actually used - return isValidRomName(file, extension); + return isValidRomName(name.getPath(), ext); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool Bankswitch::isValidRomName(const FilesystemNode& name) +{ + string ext; // extension not used + return isValidRomName(name.getPath(), ext); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool Bankswitch::isValidRomName(const string& name) +{ + string ext; // extension not used + return isValidRomName(name, ext); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/Bankswitch.hxx b/src/emucore/Bankswitch.hxx index 7ec11596d..2f8b386c8 100644 --- a/src/emucore/Bankswitch.hxx +++ b/src/emucore/Bankswitch.hxx @@ -74,15 +74,17 @@ class Bankswitch /** Is this a valid ROM filename (does it have a valid extension?). - @param name File node of potential ROM file + @param name Filename of potential ROM file @param ext The extension extracted from the given file */ - static bool isValidRomName(const FilesystemNode& name, string& ext); + static bool isValidRomName(const string& name, string& ext); /** - Convenience function when extension isn't needed. + Convenience functions for different parameter types. */ + static bool isValidRomName(const FilesystemNode& name, string& ext); static bool isValidRomName(const FilesystemNode& name); + static bool isValidRomName(const string& name); private: struct TypeComparator { From 8ee2c569802b5771ed68066bef9be43d48a0f12e Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 1 Sep 2018 09:30:14 +0200 Subject: [PATCH 091/126] updated docs --- docs/graphics/developer_stats.png | Bin 3292 -> 7161 bytes docs/graphics/options_misc_light.png | Bin 3778 -> 3741 bytes docs/index.html | 4 +++- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/graphics/developer_stats.png b/docs/graphics/developer_stats.png index fff0b07cd131579b4185082527da4d239e275eb8..d5738fd2e2a93b0dd16df311d0c2c583918f1129 100644 GIT binary patch literal 7161 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 literal 3292 zcmb7GeLT}^8~@EPM~U(gMVq4|r&eC7<0zRCIh`nvUgYV>*h!~DI8BtX4aHN*oZcue zOXbK*zmZgErcSIUhozjbVM?qrTN+zlX3uZ-+c{CEPtX3@=f3Xyy6*4wy}s9V|Bm@? z_A=04s1E>u!N%`A`~X0U1^|dFdb*G$-|S2t^ryYo&BqM@%IUKvf_0!Zg5>Ar4uH)T zuK-|n%0>^jZHIV+T}*n8r$ybf-6r#X+|zgIxFw=v|2x!e%Vqr2)+T*PKQH^vq3K_q zCRICrEiSpAv3rkBQZeYU!|LuLx78g9HO|szX9=_8aNY|nK@!-_XZ7OF=XS~87HrD2 zO><~4BYL}#M&|**_PG$cN>opMeSJf?aW$)H=*ub&r#Vs~14B5sSS~_~lngSihJwE7 z!mL3jw@U^6vf5eDw7XKMU^@5C-F={UR?Zg%LD23+#sn8OkB7Y*Czvo_GiB2 z7LMkGlhZ@E)NBS_t`sZUz+FF(_oX?onsN&_5s&9K20q^lh6vm4u);2i*VZ;FxPwD~ zoUE%wu9Ur7jl4b@zf(t>_CTKykv6~r`s`+bs}U` z8@hPs#T#pCH`yOFpsf*?ho!WG%wsx!*-UPNh$MEl(IVxs`}Hk>M^*r_B(mJKxT+*} zVCYdF?tA5BK`6K9rcpRquz$CfIE+~cAZc1!_HsiiBXV9q(29XgA|LZ|y-f*EyfQhL zM_2wN^_jzWx9_VZ+99@#ZeW1eS^&QRs8uFchaLTikG{4a(Q**uFGiO+3QfndGDa@` z$Fm3QCEhAb`S)vira56N$g8hq=d-E6)s+Ch)Tp5IXjG z!`SW)MFx*2ByT?Jnkr0-wLkr z`f6oMa1=%HymzBb45bRzC}2%~CkcpxHP;@wHj!45T717{BO6+scR&MCb=Uuwu(~1Adne>1;vXLCyC&wC zZI!4}E7SToNy`lDxc&`UMJd&zi|l{nl|#n}I+~F$YCO#sHe?+O9qCUgI`m#FC-5}K z2KtUla|pe!alu7L53F;7JJNR^HXcSUs(7-u@gzLerfLYE`ABLsTR*0bh<6uuJ#*#o zik{XPt_`GkNqbfcJVyyX+t9ZpohHY>+Bz=h%ek|r^M&{CF3?x&w66NGVB~zw^UN{D zxyhA2FNmvOdGnr-^cHUF{-#R8?{u#xojWG{7|i5kQ*(Gw`exTMS2*8j zKOQI^EEpU*;S$t6GD}@{-*c@djjbkZp4>xAZ4qTB?0WXFtJj}**00nzN&R#m862-n zlq-1b0$0sM4_`P=nkX%UN70#UH@GZwvS)KmIQ(!tJQZhsk|(>)xg(z zxC#L&>W!6?%n6Q7%B(5mnvwBt({yvSzU7*Je6I@o;Y{C4PZ?RQ@h`iVXLJ5b_m2 zxo;nu5l5{G!Z_pP1F1MhxvM<#rAq>7d=#lpHY>YoaP&ILK#f1~;CiZ<-`aMs(q_t{ zSGUwc;Osah$HnO;(02uv_L(0Cf6b5gRdZa9Y0)*l>LE((1fbtW&&?j7J0aoA!}t^JUk;5eyrJen0$DDaC=kD=Gn{PDrWxT6PlTN?MkA9OY>3*$sF%8 zyla)BERm4H@%}O?V?j z$A;xO_#tWV(^@d|tVLkgkHD6hu8K^J^#I(~MzSthMe|6jQsS_>c{2iO
    6VtRK% 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 diff --git a/docs/index.html b/docs/index.html index acb02943c..50bd1e81f 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3238,7 +3238,7 @@ frames per second, bankswitch and display formats, etc. The following shows an example of this information:

    -

    The two lines of output describe the following: +

    The three lines of output describe the following:

    1. Number of scanlines in current frame, associated framerate, and resulting display format. Note that the framerate shown is the @@ -3246,6 +3246,8 @@ number of scanlines). If the '*' character is present, it means the display format was auto-detected as shown. For the given example, the format was auto-detected as 'NTSC'.
    2. +
    3. Effective emulation speed displayed as frames per seconds and user + defined emulation speed displayed as percentage relative to normal speed.
    4. Cartridge information. If the '*' character is present, it means the bankswitch format was auto-detected as shown. The item in round brackets indicates ROM size. For the given example, From 2c8a567810c53a0e1fb0801ac37016b015c27fc4 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 1 Sep 2018 12:08:14 +0200 Subject: [PATCH 092/126] typo --- docs/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.html b/docs/index.html index 50bd1e81f..1c34d286a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3246,7 +3246,7 @@ number of scanlines). If the '*' character is present, it means the display format was auto-detected as shown. For the given example, the format was auto-detected as 'NTSC'.
    5. -
    6. Effective emulation speed displayed as frames per seconds and user +
    7. Effective emulation speed displayed as frames per second and user defined emulation speed displayed as percentage relative to normal speed.
    8. Cartridge information. If the '*' character is present, it means the bankswitch format was auto-detected as shown. The item From 492596011aa70eaa8749d185f6d5ae1cd96d3cf3 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sat, 1 Sep 2018 14:20:30 +0200 Subject: [PATCH 093/126] fixed two warnings --- src/common/ZipHandler.cxx | 2 +- src/debugger/gui/PromptWidget.cxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/ZipHandler.cxx b/src/common/ZipHandler.cxx index 903404a3e..06bdfd3a8 100644 --- a/src/common/ZipHandler.cxx +++ b/src/common/ZipHandler.cxx @@ -256,7 +256,7 @@ ZipHandler::zip_error ZipHandler::zip_file_open(const char* filename, zip_file** goto error; } - strcpy(string, filename); + strcpy_s(string, strlen(filename) + 1, filename); newzip->filename = string; *zip = newzip; diff --git a/src/debugger/gui/PromptWidget.cxx b/src/debugger/gui/PromptWidget.cxx index f0af913f9..431c3f817 100644 --- a/src/debugger/gui/PromptWidget.cxx +++ b/src/debugger/gui/PromptWidget.cxx @@ -689,7 +689,7 @@ void PromptWidget::textPaste() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void PromptWidget::addToHistory(const char* str) { - strncpy(_history[_historyIndex], str, kLineBufferSize-1); //FIXME - unsafe function + strncpy_s(_history[_historyIndex], str, kLineBufferSize - 1); _historyIndex = (_historyIndex + 1) % kHistorySize; _historyLine = 0; From 28f8dcc312a4f3b5a6784a508772758799c91633 Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Sat, 1 Sep 2018 23:12:52 +0200 Subject: [PATCH 094/126] Get rid of strlen_s and strnlen_s, don't drive audio if sound is disabled. --- .vscode/settings.json | 3 ++- src/common/ZipHandler.cxx | 2 +- src/debugger/gui/PromptWidget.cxx | 2 +- src/emucore/tia/TIA.cxx | 4 +++- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 7d0543e6c..66d6c8112 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -59,6 +59,7 @@ "iostream": "cpp", "cstdint": "cpp", "ostream": "cpp", - "__memory": "cpp" + "__memory": "cpp", + "iosfwd": "cpp" } } diff --git a/src/common/ZipHandler.cxx b/src/common/ZipHandler.cxx index 06bdfd3a8..b017b0b80 100644 --- a/src/common/ZipHandler.cxx +++ b/src/common/ZipHandler.cxx @@ -256,7 +256,7 @@ ZipHandler::zip_error ZipHandler::zip_file_open(const char* filename, zip_file** goto error; } - strcpy_s(string, strlen(filename) + 1, filename); + strncpy(string, filename, strlen(filename) + 1); newzip->filename = string; *zip = newzip; diff --git a/src/debugger/gui/PromptWidget.cxx b/src/debugger/gui/PromptWidget.cxx index 431c3f817..2713d2d89 100644 --- a/src/debugger/gui/PromptWidget.cxx +++ b/src/debugger/gui/PromptWidget.cxx @@ -689,7 +689,7 @@ void PromptWidget::textPaste() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void PromptWidget::addToHistory(const char* str) { - strncpy_s(_history[_historyIndex], str, kLineBufferSize - 1); + strncpy(_history[_historyIndex], str, kLineBufferSize - 1); _historyIndex = (_historyIndex + 1) % kHistorySize; _historyLine = 0; diff --git a/src/emucore/tia/TIA.cxx b/src/emucore/tia/TIA.cxx index 071e13d99..f6faa9482 100644 --- a/src/emucore/tia/TIA.cxx +++ b/src/emucore/tia/TIA.cxx @@ -1242,7 +1242,9 @@ void TIA::cycle(uInt32 colorClocks) if (++myHctr >= 228) nextLine(); - myAudio.tick(); + #ifdef SOUND_SUPPORT + myAudio.tick(); + #endif ++myTimestamp; } From 2130498727b663a095a9aee50d1940888ca4476c Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 2 Sep 2018 17:47:26 +0200 Subject: [PATCH 095/126] updated debugger screenshots --- docs/graphics/debugger_bankcomplex.png | Bin 10569 -> 10574 bytes docs/graphics/debugger_banksimple.png | Bin 3770 -> 3555 bytes docs/graphics/debugger_ram-dpc.png | Bin 14221 -> 14858 bytes docs/graphics/debugger_ram-f8sc.png | Bin 6860 -> 7220 bytes docs/graphics/debugger_rom.png | Bin 14986 -> 14402 bytes docs/graphics/debugger_romcmenu.png | Bin 10879 -> 15608 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/graphics/debugger_bankcomplex.png b/docs/graphics/debugger_bankcomplex.png index 8f8501a9da58964eb8a90d97d01583313443cdfa..717016e46e2ef723089326dbd090b99b5cbd4d27 100644 GIT binary patch literal 10574 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 Q`xiG&H9gfTWxI&~0$vfM00000 literal 10569 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 x`Mq?Edr9#r+cDP8DCSzVmd1ln}U}4AH`s z=oI2hyoe9;0fpiNf{9weKEy-6X&uqh)mc3hkOl$?S)t5LF%f6pX9>qn>hCdsUfj5o zMmu4OE>xO$P^`Ze2u6ZZ0>YPT@76xN0C&$52;4kX)~J#+?ibt>-T-{3f)GY=oF;&4DA`1|iCJmg1HDAQL|$;H&H6!sVb` zWHH(3#JXcfpXS^7Nbso4p~bC~fYgcxNNxnQky;?6?DYOmU-7NZws6mE9z1MYsfF;- z-8#iaAYJ+PLGMi{TCO6uF|B1Bt8|{Th>xE$tn9x^WRtD>71XmSRv3kaZr;hoKR2S@ z_mUhjE{TTG2c4C&cL95(p?|Q;N`_<2jOpS-o2p|b>r;B=5^$TXrA21+SNxPv?!!|@6 z?zM3D#vnEQXyh7qX6X~J4OWP+3O8(&AVY~ZEtG98Wgs~gEY!|1hZbS3Oc!wR<}%p* zHKCL^HI#yt>1w+}6FnWzT?c609JvphW_xyiMxvD8+Nm2Nn%KZ<5PtGoqjEu7d_Tp0BkkD`A+^ zH3xAvI)U(^ytz+qRwtUi?L!V1mMYD&H(ndoDz=(ymBmh#KE(INaU#Zq?)c=?BsV+j z@x?j;-#W(2)oW)z>rc;)A@;qIE|5%>5gP4IyjBjM!1cy^1SuaNX1Q6JX~$x!B5R!h zgcmHo#nc0D6CX=b7{81`^#!B{Wadnyj`i`((Mf8Z9g&~Tr#r*xB>u^pFT22Pbk>m~ zvquP$E(7~Atgu_Y-BUE{)S?6d2u-R1;IYhRKbS1lnUaU&^+`saiUI34K#Dr++rC^% zGU^L0@sB^kurTcwo2Sp2R#uUm*@n@oCpr=DD+n`Z*HP1m(Ef&xx0v8oNv@LB`6M>7 z5cuor(qwC(O=KkJ?l3|n7+_f{ledh=3TWk1rO2D0;XFj0r_l-Ltn z>X}Ur4TL>)2Di2&_OsmXAB#}*8_jQm-gKkDwZc53RO03XlXGxGInL!?oyl}eU7(64 zXKxlx6(%NZ=oDQ%GpzX`O~_+_USW_?4mRnz416*x6w`cCSSZejcgYHZwO&N0l>43K z=&*2Pd#VK{jJC_EPfevK>nl;;1^P;Cgqig~f2Cz=*Ytn|U>ldv%-Mz4#SOvrEDi_4 z>aZ^*kGG0OX?ys>%F#?X&V*smF^%vlj%-%r2x{R}lUWr@RFq_&x@IYZjO|3^!HQ5o zI#rTFXRBtqElLna@s8>^U+S)0&x?RViiQWe)Lm!>8598H@Nx@4;J?*DKmu3Ep8WMU zNbKiVxsLgbPk5>w5~K)h@!Unr?PY?sz}%u);aXaVj-7ACG}k24FO4>aFYy;R#*nUn zE|!OP7{P>JeB7R&v^!?tqdQzz=n9sJe>dRt_iVi-ZHKWm9zYkMyle$`1 zEw)BS?=Ke}r}@lVAr#)RgHMqKhu|ni!Haq`A_3sU0FU|N-G@>ZS(4WFVW(BSM&o-o zLOt>c4A`?Nq)*5xJIQO>Uvj9KuN~^5^7%$5y7c(dFt|8aTdU&-_xj{R@Bw2sQT_9e z@i?q`i-?*+B|&D<%D}Ta$>@o5G}MT@@A7NuXVe!Ds7jD++kC|@y^pG0pds*ydYQ;T zq*qI|Yn&29qACfe8Vegs3(3x75p7bIm+HzzVa;&MX~LDVkxdbKOj*+t&SM5PyX1v_ zA&uT-)4Q%0pX?74l*h&~=-~QFrpO32F|sdze-8yutp>}w-GheJF?y(_{=cJr0JYS? zuproa+}fsynC9s}zQpG#V)Fe)I>Swz(w3p>-#dc#hmwS|VyV<=RrMxtvO2s=#ork@F4g7-{S^&cQ7-{13Iy9GtnpzD7BZg4=*(Qx_JGW@22xvDy} zr6g4Cz+`e&0AOCO zzTnt&Awo6)b2<`r2}`}_)%#$jM*hSY!m{ZCQI_?*Cg+n`x6U|4XLy9%(-^VuMz!6B z(KpODoUoR18vdHpN0-v`$_Y*jgEXDt&oRGIHvA^7r$IY&O3JO6=QfBBmN3x8i2h zZ8V~~C*;qy*Z!-iCfPP1y~r2RlKJeFpUS}}V5Xv+2DxUS`S2tf?a>wb$lf5Y2-6Iu zow3c2i40XZ_+*Y5j*ZB2NeX=AU@BL-7!TGlS0$*asLncaW7NLco*j&}iIk7Qk~+E) ze^^xK8BIPaW5GmXRqdc>w#X`LEvi^s3-q5x`-{(fk72*i`*#!i{*W`Yv`VQ4Un8*( zdu58hV|&6vsZ9$LJ4-tfY{aC36|z-~E87er^0x)3E5Cb3^3z)|X(rgN^v3Q{o{V3@ tUQh^(Bl?d0r3w;p;Aj5(Iq~Y|*PW`jwB4!xg0lJ z=Go27%}<>=)dGXHJ|&N`?s2&+p7HPPZw3Az6hLiAKjeLUdA-V(4 zh={ayk90W~7#U3n4}cK~!Dk~;X9FVl96;%!^e}w`W&SW2T*(f!a3y)q(XaXzR7)lq zqhGH4u{-9mk5`qR>K$v*sgXUq9TId`LvQCs)z$H}!0003Fl2&aEd=}sv|-8AGA|h7 zZ<=VG&th+9LUH;oojOatP0;-YT%Q_Cj7}2ngNh^gkz)de3ju7VOFZBsgfmHE5jn>! zCQZ-GET298fWSv5iIHza)3Gzfk4m3uI*_MQC=m@%WW{5Zw6%lfF-qadatFP{4Hx8A z^}iT(5Bf!WxE(MyBhoJ-QBqa0_a8sptUuCtK8_z}B3RccOedYRjtZ7sXy{f7Q$}E& z2bkI}LPsxNqgZ!6I^zvP=JES{F2EJTtx_lJ*q6{K?106Re0r?`9Ut!09}5~e(A2bZ>zypkrofcIJScx# zTugI8|4kDP7%s^gc2ztP!#Jb%dH!lfo9q_P$ZVFWzi9s;;{^pp(r)vqwd-mrXx*q11%KJHOdHh3Z}iu=uT^(|V-BYT(=5B#oi-u-9?{w1?~xaZ(ocflEH`37EA zj>QZ@FU++citXDaOaPp^+65hyo?$r5n_VuMt-uxoUhbH#nv=6b_~+tN9HxY#+ktAB&oVK`zhpeU`hLx7WoEzP3Uv}6u4CwaOY`W zwftEx4bUE8qH+u0|3YFVu=MnN!&NGy{`n~MLm*lhw+#~ySV-C+7oEE!8bOJ)8|xd_ z8laP(K#8lj#}Ck!-N`bBGK!JPua53@#F^)=F5OF{SQN=}X7?tazgEGB+?0;uAWSl8a55 zu&|Q5q=#l*{dQu>>7Fl|JEC3ZyHG+vwf2$GyKfC<03G5=`64ZtvMx3PZ*kxoq(622 z*)+vq)v1sH<=#II<~*_CuBUf|qyoW9k0i9Ot8}+mC9YJL81BcsubArr^<$TCY+e%JpmCYv;_#B&qryF={a9iYuIigyM3b$M z6;^BaZDnf7} zTJhCY0`mAA2-{{TGr?Z0L0A8>nkqN}`&UAzrD9tBuRTqPTMQATiv;3k<7#5~SBmCi z8ViWZ*+$f^At5skQy?yhQXjbKUKkxzNyB97s}GyIr^A)3e1=q23|ddy5Rh4NjGnf$ zM9!PC6*@NIgr65caWC`i=-O0mri8tN*nYg^<4as?Rf{I>BbS zQ~uHc{;dbUolZ2yyZb!1uGG4*QUHq1sMrj=Ojis}e_fjP(rLW1bdWYh)?{I*L_JL< z@WNxA=Q~d2VmGM}Bs)yG8>(n8IY^?cC9LGIy+f4H0f+k!wHhAjaqB5<)u<@%2T4*% zhsz*Uti!!IntzU~Wy>Xhu!_T(*NzjR4Phmiw{u<$u4i81GXi1(qxyW(No>Sem1jR< zzqgNaPUtOl-||Ct&5Qq>0S1Hy7A+wyORrcP>v5q?T`(=IuvAP*LmRYDGseqWwu`3< zcYDt`pw4g97>0KYYbl`a!`0h;q1#ZPRh{(Iu zZyYf&zU(9sl^t&1VW36593*dPX%^OO+KetgkN0a97V};Zw{{S#bhXTOH9;$w-ZB4# zY;z3P#C|2)-c@A)YxA=TIrk)srza~Mwe0tp^d9l@ZN1JwN~~T=S0d(3QBla=sJ1y`_EfDpyjo2@ZE7) z^_Zd#dm1;+z?N2>E+SUIBUQfIBH1y3xAqIZF^0<8Ptca#8$Q^Wa?Lb3o6?g}bSFN_ zT^3Yzr0zKW@D2ym%b+Zo)cIU@b^Rq(xL5&k)zK>1MSn4JUp)02rnFd2XCPDp;gY9J zIN=%fVE;o}zA!ReK}vtS1wqcC@C^-qa)ONemNe?sgnI0v)a(dX>(jlVe}kOs6{M4O zUFh7vS{BTva|-m<5R($UGDDG72klxO?F;r*KS-54z1W=er&nVA)vxAULxsvAgg!mv zr7E7Ag%7o~h2D6GoK(Gtt4%K7;A8w^!HYyR3pYh3e5ZcJ$c#$;hv+0;<8O#iZn?CH zRu#(wULCz0@TUHX07``cghkgOyCELo7?lN88;@Trn_cf0+ZV-87eVd$>8_X!1bN|R zTBg9!+%KX!H9KWk5Zh=GBNIJ!LHRAph8dw;okqqn->>EI0`manCjgNgjLdOsQ)KLq zKLpN-Tokz9h^t;lmu`HCm+<;9&H6c?{_3{>)qMXA5v!Yz zA_@cyQk0?~DC*sKJm-7g_kQ>O`TpH;8H16q_FB8FHJ>@>^Q=vRnW+IQ6CV==1qG{- zp{@l51r-ALJ;6W?wD_>nM*<&|SPKJfin=lA8t?~=yVeCQ3W~-Q<|8yM1qC&QnTeGi z(C*>kQKQ5@L_txKh<;WdIzL{zy*&=J|No!=KLh{I&%iyZOGw}$8T}0}VJRp;{l~wQ zgMJlPfkxf{J=*|FKevD&^mSJXfAlrq06AaR03jtgxSWFgj?lFX3JMipBV8@4V26+R zyUwywb*|N``+0}IGzHH-i4Hc7zxWArtzP+{mv165miB-D03F2LX_ExK zHCevl6CX$#bq^E6T)pq+`HP{z{$&TjEw07puFl|#U?j)fq!h=znKx@UYhWt8+G zb$G^tIz($fd&E-O*tVwNj*9+?`3i)sSpkY5CnBJ_Z*4H|@1Epv)!>Idk3=* z;fn(4wu*Nt>zEotCsdjPDux8*^RfU`Le%69p?%&-i;u+x#-8Mb#81uNNGCl3Gcc` zqgwVsFYq7)+I6|9-H>;Xf7g)KfYkbd6)BG4c@j0vM>ea!tyGNmxiIg43PXS;IoWVa zEi2jev1hIiadr&}hLpUoeSkV|b8;t{AEi#3c9C`&8RVqT4Ry-Dhq&FeDv`ZEzPKt$@;G z*46b-@4mfCGHKgoTwTaTq$|;Eavyp@R;OgXPYMh_kNCmUHFWN#~!l9)9e@^3esn^njUqgMQe@>W6nm*C_>>kW9`>EBA;iId0h+vGT zk>7?&{bmMR`PTVjTN9x&_47ILKY zr+$6OCa7Qn4QhSyu42H6JvLFS90L(x(c4$&%dqn1H1M0tC0TnANIth|y>-fhT^y&X z(DCl94`(sd-OhZUy(1(872GosQ(t1aMB+Q34^OoxHGoui$Di`aMRFF=;exVC9}p4; zAWHhR{L2_4Vs(N}{!@W9nf_AdAr&}Jb-V!dE`v3X@!N>uYH{%q&L*X2IBU|8NGI!U zyQ{i(b}0;`Y&zN~`|JIcP@=ZRY|_iInHv<98d~Ums;C8rKbaFk-1h3iCMQFQ^ z6nM2dT=w(O;0b}QCZ@6QO57Q@tFpZe*S_~^K{4pC_oRmLC_*F1uMTbueM*}UM5pXl zF~L$PCjVHGdBQh1y*sg1-n{|T{~$!Xv!@KD$jrybFrbZ7>X#e)Mv)``-CWJ9;-y!)`2^Vbsd3(Z?M_+3Di-^vB;kwn`?#SdOe;T;2kccxf6 z5F6BneM2e!gq~cP^j8T%^L&Z?UE+Cjb&v1y$BKhQ1yq@VkvwLsb$I8^#R!`oDrl8B zO(*w@TdWxa97g>`nZmwM>Q!d>pUiVQOw@T7t?uL? z*_i>5;0#;FomzrV!fYn-PMk|aLInrCRg`A3M6zlyHfHzC#@Eg1w6S}pKEH>zIG?t> z?0X`%|2}*it_cFA4f|iskduwjNN&h|mn7EPCvU?VD4JYhaGTF4(|HM)fQ=eQ%=;NM z?Sto2m9z`grIe3^JB9sD4BQJ8C?F}mwOziSyF+S+Z7ZHVlgj=i%Xtz$V30l}}A%;bP%03{90nn3cJec9j86z6q8Aa6qpur`rq{;e{DE)JZ&pK{=i> zbG|`E-*o8~NnMoO?@H>nzS*r%_JM)ditg1FxXrB4S~ah5WUImEb7w7*jZWuHgkSkOZYlNxddn- z!+XtDjx?h6qN2 zX$jbjrSU6D!OI2;n%lY5vL7}y!f42t@)NldJ+fCx_O1sin{LEQB$qmtr?e+nHsl25 zGfkvKhpO;66MUveJvKR|Q{%lL`Ylnk%%WRUeq@8}O0w_wQoaF45*|G10<*4#r3W=c zq_nwY)l({#%0#g;9{8`Z26^>&x&=s#-SEG0eQ7^NNNiI28LQV_j)x2e_U+EL9mxo? zg`*7KoRc9|`5mnSrjD~dm0#7qD#TazTq`df?dwG|RjZ`Nm9i9GJ$xl0nI4yzDq|`! zW=(=zUyeOrG^qLHgwQ-oRMbd7QzWI)DYiy*iBLy^a6?i!yh7AFI)0Ej8-eP5e|V#P z$>J5a3ww#iP;~HoaI0#x1PiKNV`_qp?nZPH`%W-mN~BxWyG?&zd_MIhtE(+bYn$uw zEv{S+t~>WA{t%Llc(q-1lArZbN&}x@gm4+Hl5^K`&K`w9(Kp_XCqp&pWgg=smsH+qVhpw zK{zdMCvSMzWBRM4dAA+1a65-=Ifgl^aijNCret@N3I40_X^4KRd)#8<0LGVg;!6>tTSea8WQ?F z3Fb42x9pW$Gv{G*&jI{I*Fjr+Gd0I(ebxC^JjGs&z2xvPY2py4nl~2*fjDy%1|DZV zBedb(b@G%}J472C_j+hfOI#XYJ;^T8lgFME^>(o=QR-ziaI*K8NlNByF0N{55rRg(*+^q~EdiRpBT_XhopYW<7Mf{?Xrm z@uB}Y<$oL1G5+8Mw%zVH6TIq##n1lB@0nf>Zg6R0;`zvs4`zI$_!V0caY*PdZ}I^FN~ z;aqN|J5Hs&+U~;qoCBe%If}p1>P_&p`%j+Ro#tg%)bi0KIq{gh50%_Zj2h zS}nM}*e36;aaAKoC62_>`Jk~ON0IC5Kq#o@L7T$zKFxCP{d|pe*S@H0TA`rYTN8-y^g?Av3lvaU3GLxyCOHy&CfVbc zOmdhW_8d^WpM1pZJHM#^&6&c|z@%?DU@Ww@vAKOTTiYaK4T@X1axt>I(4@Fq=Vr4X zd~>?KrmX}1(1r5^dCqp}gWc)~4Q{+tRdOtK6rZ5rxHTwsai4V{uYEI?J+9fLZ$z8V zYj=v=B!R72%RcouM<+33?H#$=M^HXnF=WiSt)N_euH_S5%S3KooUp)sxI8MpvNcON zT?~<}Wap(E$0Pk2$?rOJA1Sjo$e2>*^TG5)>?AEy)4}B|9G9znTwl|S+s+LBwQK^Y zbiqPmazR+5z4r7|S5>ALq{^P85lEWTzR5!(K7*>n<&67Js7>sg)g77+{q!Owh+)JI zrN+UBmE32)ss3MLSHQ-`PCCotu>2?jNIl)ponWT>>+ik)f)VA9U zMRUh}z>Ww=k-4}bAwH#*V5R^Zqp_mFnNkaeo%2zIrP6@5^N_fwKdaZYuQayu?_MUF z&wofh{5{-!{;rNaM^Itbb9+kyd4QEvC8ArZn{6zQx(qXfddXQsjX1yW>VFd+mr4Hh zVu>z-`QQ{WXTlF0w9F2ZpN07|HmTqc^Q~I;*7L%JS?8^oik>#7Dq#pK`<}#XUY(!D zM2t_#GAJ#=~kCMmcQ&vF~NFEZgs&~6RY5EYgr+IO%;rWH3o6bxffYV@;~RI z3Qjp-hi!TkT2~}N52|216=vMP0vlOEzuSUr6TVhZiN;(7%mcn=bH;ANZ(plY%6ZViIqXgOAk z_;x6TOs_$F2(h>%)sOq^tHiylIF_|#r4LyxAHpfFsAZTF52YTFSPo6aWkBEZt!##o zkn(RyQ7Gsy-k?Kt5Hc}VA2$VCQ2^iuAEfp($EOt+=?iB@JQHZVbir-j{z6PzALT~_ zCMrE%YiQ`hu#@)~a|uPKdO44Q*lw+Q1drB@#reA=)4wZ5=;(>4LW-W}+cgC-+pX0b&0oFd6N=Hte0xvx(R)bwAH7i6h9O!Bq z$cjh{LP~OU(w$0rTqCvJ*sGAv*kwA5F)?jE!JAW(&QmW-YTejQN+rCGfg2J_&6$X! zKNEB3xsvfjF^N~)N7211T6PosF}osuG>M-e42k2hhIV9oKHo#n3vW)5ao?u2`#gax z)rG9jfeaQ zkPTbR7*xOFKAr2E(A_y#-fGZlT`y4%;%Z)70WGYl4FENJ*i_RDEbI90^W2*C87z0H;>OI5~(*NxWZD0zd821lJE}KP1WA%enhM@*c5bYKfUucme9St)DY3O5LyN-L0ln)O#7(gpzgI>H3Z6J?KX} zJ(efa9yS}0-2SsB=8Kj+tgz@dVyiV~Gvp=QnNB3l3sSDd-)wq4F(!Lr26S00_aIO*m8_)nbT%a2jddT>VosxL{5sCfwg|>a(awCue zQ7$d*y?QkwC;eHG`e9=KsrD+4A?f7bF){oY=fcVvYZ7pRv5n+{cZbmPZyp|%mR^6a zIJR+>DEu?$Q9Yvm{_pUyfqpq#S(A>H9@E@AU7d=EIvKbOm(lxf^BeIywu}+CORk#` zi<%R%qi{Okr)%5MahIh0)nd|y?7(bCG8t&%P1PLc=Y+I}3E83vq8%#(tlFR^i^UsE zmXW7rR*vre4!8%9IL3q$$Y2m(i)>uB^wmBui2mC&&PZ+u;+F*w65%*NT{=mvs#XL6 znEw{c|7Yp25v2TA;<8$j-GlxS$X7aJ78P8(YWiUd;dab*Gh)Kc&pME}#h!B!K?V_@ zPg{>wB5u4pvLdGa(~^ALQb^jCyHVmB-ERU8vWpR5Z5|FC)0W>_s7(A>U7|^p#vFWy zQPv-=WH~2A^pAjdY4#^M0x6e~(cfP|f_`NTf9S>@S<1?op6{xU7j)B=?k>k$U@q5? zSPp;*y$6wmkP_}e=)*2b%e0tbu8gElj^9TKngax}1`afaOA8(#-xuO6-(RRil*TP*+I&la=`uRlO#46-mL3~32H=og zq=>dY*65E|9)7O@BqZ)_NN)*}fIDwgTdGe; zk-y*o3S{?>lCMG>bWe7%J&O)W_{>^>S$u2pTdIKbn97%<)VEI%yPQ~LOn23(qbiHMqKA zvr?q=+UrtN&ei(k(I*9#s##YXP77ed#;9ZLC3px@kn)muD4IcN>hPA-pcS6Z3eQo{ z-E8%U^iW&f{3XP|xgltT-tBjA)FAFLqZC)W60lzukOOV{PJ{*bOBgv6KiSa=<6pd!-`H!vxp36=lB$tP|(;d#;Rc7`1LNnPkMj%g{|vJJ zspzZ90Hu3pX5PZ%XX7tt%cqliif^dm*(vOeSJE^@YTvA4;k9X3a>szD^DFycPp9fc-$A^>4&ZLP4P8>y~gG<%@vy{>L5nBTtkh3;7hB(vHguEZUyO9tyj&`c- z^LIj&uV)|D=_TmoeM3$*%=F35Zs0^4-#ITu)YU;}V`N}J-$R4&h0*QW*{e2u!kCno} zyapid!90)Xbg!7IV-G*vfE*ArGG%>u5F8m|l;Z@PmGt#;0#@@K}JEo0+KI zLfH(NeV%Sy<|x*-?YwE4WmaP;ZJLX4z=W1_gO+i4`@V_w^C8x~ZN`1m3H?rDXNuoE z&aFyyr#u;jL|Z7w2{5L+J^npBc>WZu%ioO1vB)u->DRp3b=IVu9eN)@_%`KW?O&($ zE|}y5lVJZ?$2hx(%^$%;wN{z+`+I-I7p4mjh7JhpL);tQAEFEYWz4&SV!|5uYjlD| zEQ`!o$E1C02BO{?%4+VFBP|$g-Uyw1dLAkmTclC~JkXTJ;PR_g;BLIk2|%9f{1qB> zSH1?JN#vJFet9Wr2IuMAP^#Z{rv;WT(vVA7N>fi)({~=No0R{7ZDzym-ABr1DJ?vP zDLl$+4o^-Loee_U0<3$5WHtRAx0pp8eqQTdVo!Yj_|~^BfO#c3!>`Zp9-i0vr|~y| zVQGyN{swpnE-IyYOGiOiW-R)*zq0&w#v$$Y>VbDGgg$dy?x#J`==};VN?ai+}&7wR8e2{!?2e{OMB1LH>)o`rO>SYM502u%Xg?_f0E3&*29r( z8@#GDKlw7LhoS<}Z2sEob%SFP;PYYhs#Zk}(!SBvYZV1L4|1RIQBjxXNM5;_d_Jl8 zd3wTIPhY~!<-qZ_1~1iNPaY`QM8?z*`r`p{p)JytNrVU7+;^Wai4*<4Qs&JQ2RIjh z7+s7)9KR|17x_{EUhVTa&=w@h#zspE_{f|NC;lgP;F+)99tOHG_dY-0Qy zZHDgO@fMPfr;BPp@~jVhLSB87sIb_FH940xi-JC<1@=KocRd;H&qJx66n?+gHJo3{ ztTCl8IMxa?N@=ru|9DsXq!K0cf?Kg#f0GFyN#e^4oR;P_5q z5aB7wR_@?rihtCW$y6{!GDaMem4)2*vyS3k%_NssfCKI2y|BtuR9#dHH!SBEY4R

      Y*dXTyL0V^eei8q@FU_zcL=XtX_0>QLlqVABMi<$tdkipwu{E$irT#%6 zVl}wX8h1MkBwREVJu@9d{W}fwE>N@{dX>trF-UJ0YKNDE{2I@?zU>8VU#0OhxUjs<;%5Pwx&{dWbJ>N6{jNwe+nSMxtys;t1Yj}G zq&k1dMe=OKO0_4N2#GaRAS}bhFqhZE^p4;Hl}Gu21-r&jfVq5Z5&^LZdUhN}?~RCU z=YMC@e`PwpHqgVbO)LMA>j3#r>K34LzZ31NM6HGU!^Zz)E|)M8q2&ryh=Rjcn4f4B z6T0t@3jDun(*5e}6TU{nIE}U9k?K9LaJ9t%nLDwRQ2A&;2K3RgWj$7a{Fy0^ojv0k z8SWwuWK-|caW7U_rIR=B0TYe{T+9Aq$HWLG?jS-S)C$NRn*sah-uix2{n0z9v%QPU{?^_}MnRnBB}Q~ZJ@jdGjoI#T;A z{RQZ5-tY|0WfT`AG4>hv*^Y_&q=5N22MLNI0dw=o2Kp<1hIi`x!}rJXLWqniSe`g` zjf-%47!B14zg2&ixr>{N_lHMuP4JqJeVOEx3OcH5f!p_8^-rjAYmEy8_pV z@+2im8Zl>fEVT_jsHCmI#JKj}kpiq4v65*_3Stm%KCs&AR6Hg>?g|JW0&uZ*ILU&& zeW?EG0lVeAA344nJEB%avP!^O5VhFReX9rlFA95ZWY2!0cy~?X5aPQXf=UhxN2A^a!hvqWk7!6&7|td1S4*+LCj=dDnkw4lTnq%~9od~$ANr^uIm z)e3(G17sN6osxyoS-e$NmW!MD)Po^zimQ<%w040@1pJ|SJ5pnsm9&ZL@0d<%M-Lw9 z>0$c8#a!Q!dBqWFz;kkwH^C__q7PLJm4=pJo3E_h;jO6-55M==SFzvYd2e`D={wJKs?Qf85Pt-9lD!4`dsEQe$MLYLlWWCI9rqXP_Ok} z4#>djokx8B9S*fhuF9<{(XeWuW?(M$jlQOUD|U{(xWkQFqT!rhTJ9_b(3ae`E6)0X6WK4Ar|DSB1rs#EaD(h z=Qrq3pU-g|yODyDRP>Yav^)I3!>j3P4vO7Q{^lEi8*CZJsDdhkdQL^VDXYelk?{)O zpiCYkNdWu0n@)d}9JEotYcBWkiS|={f*ETjnKD2(+mgS3Moa-uZ3#&Rw$rzR^|hCf zWk$LXMlRoW&bW5@%eA@vlpjkhPGFYtxEB`x6zzZ*OR~mO{#TOqcdgeBvmIo2U-20( z3aA!m+$;FEO7P!^{p;X$Q{rLyw~Q!j=uu+s8GY@KXj#Dwh4c2-vwQK4mudy%oRZmm z$kR+UAEDYhqtHMOErWDqVqC&LGUg*lZbaBg5GX7=UN0t1$UV3{vMNTI$i+xYO#RLwhEQ#t)Xt#7+i$QgIqs|k}rEWr5Dz*`W;qbmGMf5liEZUn=n9@gmzMvdGcDo@jL}mYEkatVLmn? z#jTRM$Cq#d$y=#!Q#18|*ms2qfI6Ij9zo***E)#Fxi0NGN=(Xm7L_KNgB2MSxIO^A z_7-?!j=>z$$sR)~g@?E3v86nje8ikXPLQs-68Q>HIsn;vF!XlJkU>!9}!T z$cVnwd0O~jTwry^on_p91oQAda-j(702GYh=D&xB-$Bp}DqSueVf+9+IX9L-IhY>a z)fG82e_-=|6DQiyeD=+Q_i!>n7*RGUr6Fkn_8q{o`xiE&ovQ&hIWT>nh3jt-plgN< zCI$1TE+%M$gu9eA=y7bq-XQ(m@+Q^^V4N zrA>-=tVHUCdO!tM#9JVe-j^1$1oh2m=>W78)mreKy#8Y<2dVKXRzw9@{)I{)BE;O= zaa=*`T~Pf+L#V|cV6=em2nYq}q*46cYmU(C4xJNMSyz*bn>@#3aq@+LGgf)CVoSd| zeE|IV6YSWYw@3py^<)*O{AguX`Yif^z`&8hLl|dcKD!0gd<;s|} z%mKx`2%TVJZ?fKrjYHZI2vy?}wsmdQj9~53#3yea%Ap#cq%HKaPTvIVNMI#B!zNb& zM!Mm&x7FoM-oXG`x*glJ)WDYqP^Gs}R@@|vb80Myc^pFvRM*8G<|%i7#g}L-M-!w9 zFeG1Es3NRP!-fZCvWuLW<;Hp`H<%+9ag~yqt6y+BgeZ9UNb$Mw8ipzck{_yn!j!|F zl3$Oi?%X?Aq|9PVJ~o`V_T=b*ii}%iYK526*y&L*Fr^eIqG(V(z%*^*EDNZ=zwA#f zdCGqpwrN!PWQDJ>ok{P#`IEYuB-kYp$4q#yoLLZW3x8ENyS6fYK%PM?Q`zT)9pF&G39p3Emm@_sp zpIQZ*e~hUw5qr>AnMjWBxCh)fyz=C}6`Rl)fKVqISai$R7|AAF%$9CC_== z^w%&b=D53!@SAykbA4=Ijj8Ye4&mWoVOoi}r&xk3;Xf7fwSSR873^Fb+#|`w4X#Mi z_MlM6ed|d+ga%W`ES@W$?yX>72Xc7_YhaKMDVR7JHgL*M&ZmxjT?F<8<+4s&YLTrr zE)SvF!RSVy}a0Ttuh&ypCjN!)2D2OzHuBPRc+sYQf$qKRDQ36?%av^~8bo zSjJEz8K8aU>eqZ-RH!qvd!Aj+4)r~}z^2JdrcMXpavDc7;8xR>Snzcuvx^mLC`&Qr zI@rsOFMXa+?N_4!B-|eBb7aCTY4SvWnxT~@WXQ?jJx42Gkigzkk??E(RBkkpzQ-GI z|G8fj)%_+1Z}ewp=qT|oKl~RW{$tyyNhbLy{!RFh&jGq`yq5?k{%EsktqZ8eFkC4G zB*&!$zC0tgIG}tC6xU>?KlnL)tTq@EHHTE|q8?L5dz;9oZz#DU`y6gAspkPSvxo&3 zbfS1ry@v&uIe|CmZ8oiRy`2yC3HH{-?XM}hqWWxp_aqdWkz4;l&!83bX$!nZ1{5g! z$QHqJlQUjYn!9JzzNpOMW2CdWTN5=^W1zBgS*j%EUBC?=3(-DO!-^%CKgL|MCeRpo zPb3VwIhzBNCV$8-QCa27kl&iqRcrZx8LzpI+MxM+-IPz>()q1L`0q@UGC;7YV20iC zt#-YqM}hrO27_9i*JA_{Ap_PWx09do$C#-~uUbJV1s6L+=xSFq$~Bg9OSP%osK(sn*lYTL7RF z0%&F_QlxjvI|zO(OU%{1I+FMwyyY77`yWvy8jslvgPp3<$?X=2A3?Ke=dL|rI&OTT zmL+{GSf^{qGKTcu({UvW)lOU$2nSxh6VE|h$<#$qu82zQE~Cs0XYZgzFF>%$+4b)I z>;siC9r8I*Pko+&Idz@?n_t|1yU}BQ`5(*G?;Jm$>-+A>a8*sZ%#-0>3<41@W8|X; z$6DoHQenei4%@s%K$MZp<`QqC#Lw~`8T80ACIkTcrG8S0dWm_YNuh#bxbU&u>AU><_-vCs@~4pN`2Ms!}v ziu_>*dGf3)8*cSS8RU zhCPs>I6xlGX)bSTZgHw_D1suojOj!Cvo1$`)rwi9i0so(yCajz28a!X22|8<>_?(b zS9Z9`?@eMqspFLdwv6}QBJ|M)RHZwF-qq#hpS8wIc}1d|StlwW$%=qZgj<@AvKp$D z%8~};e=p)aanQly#bkbV} zoHK<%AJ2eDV`DsLGdhGLZ zk67XLa?g5XLer~KHR~n`-k$QZ!6ubZq*e0}EW79*eP;F^mFHr=byz_h;#3?v;`dg(Bd ziG<3B3L;s({?C#wue18z>YsC-)=>3rjsJAxNkU1)w}{)yn1@<21i})XMI-orsUEk; z{E2>XRS8Z@J?TM$)ATJ@TYk}c`P;qkIUXATyP>D6LcGSg;xZ?!=eMo7r+RqAk{4~( z(6o9LoN?lxq|c`z`68V-Hu~9{YW&1M&2or2N1bKQaQ>3BS0aB}A*A<7yPYrl1tPjs zg`Cho9ji?9Qe2!*Asxn{DrU;UQg#9VCh_79(ap`ROq{X%+_`*=eNScR)Ih=J=D_LcDe&w6|NH+l@c-}(?5E4`0>h*A z(lGZqcaFZ}>_ygfzt{pdv{M?VNYjYE^%R)u*mJvu^PZg zY)eyB$vDtvJ@ZNMjk|4?c+PRGKYg>y8tt>AY-~QJbJ`lqu0xV274EbXQ^E*3uI^RY1h`t6r@$ z=5QK4)l#Y`mLB}=XJt6ozuzbh7x9NGTvIGXo-ejqB<{$t>6$bbA?KO8R^Fj+2_IS8 znZoNNo)~p~43uHwToV?l1lzzZKdm^r_{k~P_O}hyr)O?kBOKLhe~7ftLykP~{OlF^ z16_TA&o@?-;?O#!F4ZnjNs~AIf`|^UiLDlV8(TJyhqq&$A4y2k!q(Y?@1rht>)Uv35M-ND|JbbDBRr{L@D0%UR5J&hcj5QbMp-KX6zCEN_cnKIiJ9Y#9HvcL7@olaU2^~upQ6C)=jGdZ9C6Qxu>ZUd_ ziL-i8jpV(CwKIGvxbse60pBl_YJ$BFl}S;{DIN&y!a@e5b~CQCZUXZe>9F$EZ#F`9 zp`7wE(aaQkU+CyxR_WIlC_WfDE+bS*eL41tg&8AyYR+02Wnr{*tA?;yYebZawn5%? z=dddi=V&>DxN?8`NFbo;=1-@CuGJ?QrZEekHX?T~dfhNX_T?e7$h(Hx#F~nbElIyi zYf5oNfgh54@P{s&98NuzI$3j@_%oOqgHFI9+ZVS3_5N}VWzr8<(GTY{hxdg22evhT?EFSVJ)P_68a#cq z214x2EWYl>YyL<^Bu}|oz_%f?Pu?t5oRr(7?eyJ0szJ(Q?~u$o-q>eeioZ*o+Y>o! z2?0AVy?n4=z*H6IYCo%_$jAiM6!`KF|y;`8LzkE)jBS^KrF zn{2=XS1&&=R2Iup=VB<&mUS|N%g^eC+E!sd-sxo9TVb(+b?4rRlbA=w68KWn##|=7vF!<=IO5sFG&i zU(%DOl5J?;H`U!f3=JV2AI%)@dfNv2_wSp6PN3AA4z2K~MRS)f`viP;B88Hhmb#oaQT#R@@CX3FdG06o?+YARR%8Qa zS-aSpuk|e^dfO{cGh!)JpV%oiGWhjfGke4~yq6rs?rk5jG+#?mZwWtU)~LBqT&;LV ztl%y)(lxPtCO7bfLi|0LYZXIB;!~~Q$eWcWm&M_X1m!z8_baB&6oOYyUV45toymP= zPB}Ue(UVi|%UwqPjc@VJ2QAWIX+gwKzt5CD-QTi`kxP>2J-5nhkC&aFj|#wL-FtWtQM z{ZoOqcHRJVJvRW#XC}Rj@8RrZ+g+ z=}v#i7~ABsZE^1rpLlK>hHq85ink1ZrCY|%72S}d4EyF&;qLRT)<;Y6(vK9hYS87A=E0hClq_$8fO zHi;gABeQpmLW5y$c{&xQ7YpR_2J3oxew?q6-PGjvIqyg6Yf+ISrrx zRT*Y>X=>?4=`uH-B24s2`$V{p97iZKRp5h|GF+_rB|_{K;^~R;6-K}5*YdW=?n9Ds)$-^58rXUuDSw)vnKoV~>1FzfS!QerGRX83sznm6>_ zPc*~#RyCpr4{#5%%Jinmy%^q!cr{ntS)n+=C=lnzAk7q-<0L zqpgCctQTT`%Iwi5Oy~UMtg$2_s(O2H1tZ#Tyw%Eb2f9@F?BDG!1s_wOXxlqrx7`XY zFOgrv%6^C>KH6h6Vubv5GH{imVH=8<%?6U^J$F%l9gcE?DL3 zFC7&Hwox{EWx`J6v6atXO%F~if@kqR8nzTI7*ggwpOdU3M~$<^qF-b|u6>-S=T{hC z+mbw*aO(|z1>dA2r@fiW_MIbO%$D}mRchx4t)ki#m&n(lhYia&F`OT$6SGlY6!$si zN4f{#8?zlxfbP5uz~lc}mPPshvQit1Bd6HUfN@=_y#I+|lN5vaX!pde_m6bG=)7qR7YSXxi$&XzB6lPFv{#7IW>+zDWsZ+@{$hp-> zSx}nw$W<2N3m+*?5}hSbWHXAkQgcHDLRxjxjPi})*^gy;FP>T3>01PQw&$y_YFW^0sf`e4^Up4RLVt(si=)u9 zmR`5GesWJf#pRKq*jIPXW}0W<#PwpU3UJlzEeJp;is2Ovy-yEqc36uLM1})w`>mX_ zaV1;L)#49VY$N!(I!=eJTa#~uo`!%fd4`9LnRe~JALq^1HvuNF47Vu%pEcB(S`sJ) znCJhVfek$3gzKkWe`s&$x(8^94P!xYc;mwF^dS_K_o5-qJ0xw)rjnnhJ!u%ExeSJ1qr&KEzk2 zdDg=E9O`m$>9-||uKW;wb;w}*-Q3H%L0nbzVlA60K|CPgPoUOBGYP_|rYhmFf zIk6r1lRHLARBe#ff+d=%z*g)}zH=_>I>Wub#L&uWi{=zD6&<24XldhzK+klBENT$HubOq$E3^4o*q(1!*DUB!-imQ65Xe=wA90JTl$K%q9b3us4clDm|^H!3Z0sE{!`}7jUUY55JyvIV9meUGJeM z1*B>2g=}iqZ3u>O9pYMPCAnDGo?+c zFM(ed9ee&wBmZ}+K3+<7s!!MBx_N0pXV1wKP~Q=@!NctK*ZK5W8IBOgyDu-2Cn836 zatrSkW?+ZdKN#gG%I)Vg0Q~C?ILe?!+RH(QE zIy?AbqRG>|F7M!3t79}Y4bTcxV#JA~?wxG+`nzyrF~q0U+|_6PR+RovT_JQb9U9Bd zYV|Dyswlvo4w~ksx;64VQMTrOCAcKjOrlZdkRM9nDa-YiD!(7bcX%F(0SQP)1=2!kT20)ZdnXfBkwocHWO~-m`N94<^r-`hcaQCZPM^P!UN^MpG=KZjb2m z>fBlvv#$$Fz(d_5X|RY+X(-Ik;kP1$=M}hSJj!T)6AoZ{k?}nQI}Nj1ku!Rn$8V95 zIjZD|Mkf@+%;Vb@3ThgD*@#_GJASqg4uBXHF?BFzu(D!ko=TvzU&|sjJKA#6(uY6! zg-)a)$>z&&F^SduPbOLQqXk`P^yui+xF^!2pBjox^oAuc02+YIWWBMJ0bUgY7 z|79W&PSX;nVOd*(Fxf#>6dq0>bWebj12DPcTdJyw z37A-66*kQtNs5U#Z4>MP(biqe<++s7O7oe5j^A%UO9=IYikan!o_1E%D!%#1V%RHD zhiVuu{SxsF-o2O}k+@7_RN_aHRXalme7m~_ISjjC1br%0$`5)CL&UQi!F%Rr=gwQe zBbr$SDS2j4!SbU&5jzZ=d!^6h(#mjI4DcxY;q@9M(C$Q{(|j#%4p$i#BC;WjPL|zXOZAOQY z40`(Tg+Kjm+zqIK!MIB|-JQ8V?V6K+B+zP`@H(l2WllwC&0^w6_8f3>lWv)cWcUcb#F{Z_gY)O z+komHNK%_(n}v3R8scd;y!Si%R?RGm*Zp7)LQ|}fVo5RWVDU_D7_SgM;7Kz?Go^6) zo|A_aIqQI=8r4*wV(4)QR=0h6XMsH(02$G5ijngNHcN5X%RzRC?J5%|sZsM09T_ks&lZ3!CCSV(U#tTO5d{b(9i}dIp3*^y>tWNV`$;T#g1HVBQ@)^ZZ(oip9 z9d~~St1^oQi>dxBnGzpQGpquP5*``|Z9z&^)wd*zI-|7E!51XQOEA?UqHhU{1TK!? zJX^>5A@(=?N7L6kD0Izm6B!R#S_q3V`#{$%4bp0(mk_(cEw1=(I>+XBnYk%@YmDoa zP>vP0_8`Sd5q6x%pZeEv!^|4a)TX|FRLR!kwb&sUUsl1$FuJ#_^%4% z2O_0A55y$p!KtYp82bCEhXL&~_Vgt3x#oI;CZ*5 zm%cg2NByR-N?f5^E%G2PSc{=OQwPIf2`pYM;LGeiergkG5gju!v=|z>TO7DyP!>O%pn%8u$Mo=*x@h1EZoft*z3$mRo3Fncdhl#X zF7E%ZTaLyb=G&>xHl?7*8Sf=t88HQM+#UEDIo)#vf~LJp z-L#XA>NE$2T@t=-on0rsp4l|OSSe;KE)8ZC&zw`zR9lF@B_3<6`#XT|*iW!I({yql zlE-@s!toZZjIl6c&a76tFDoKBrRY)FF<~X?Y7F|_f!3I45~gN_d=U-QX2T8NS%~kS z$dSxSg?Pf>zo%bFCT1LQAa`4Sd#bE%X3_Rc+Ksa514K>{<>FZ%IZra;(RRl00}$yCQ-XDYp8xUV!8OW!d|OBOr7I^-tc6og zWQ_f+p6H9nH+cr;#Errw!sy@1HK@JY7r`lF-56)6%a7g z5YjIutEPV7*#Vb*kx<{VOs1m3PwA0RjJrJ5^H5wp^$%qKUIKFj@l+%(Ku5rZbgcNg z7%UiF>bx_F*X(yOg_{CvHRB|Vz($nTJj4k{Q|M(WCRItLp80uHT_+ zx65rz>$$3Z`cNC8q7E_94T1Xa&*_1q0Ed19%Mj-vzBx$8%=dm8TOu@KLrrG5u}o%I z89zE6Pc{~f@bsU_&05w1yuws5__2CGJC?3~>)`=8lxr@`Jij>xsg<{QuTJU{`TGRk zcX0dgpsEjE3xG;6l5?wM2^JCG^fpvC2ATF%A&*;0nT$(%fRhW7;{^#2SZ;}sGp~kX z6&S9(C0sd3aS$2;1DD8pcA1`vI7KtW_~L#A%jJ~SA_NG#^p@}M9(05+0fd;eq)h`5 zR%p)0qpqgdqJu&+g+EoTPAv|-*`y9@mMTC}V&e9imS!zgy!5u8IRGwF#cnk$W6e&iXeccQxxIjGi9zqLLmb$Zppx)k@A_#c+lhc9A%YKM_K_szctFx5uS|Tea4=MHf{fdT!mC8y% z-MVyY*qLl{2;jK-!p;nC`=J!CHe&-fh4?Xhy;5p88fOEGf**V|7GTuZNB|L*c@^Fz z?6sLGn0K@rzqfp&=JNK**mzz*dHySYeIY`t}Rv!KECbi`Rnh^b4qL^*G@KKLx95N_raWaa7K{;k?FsZjyvf%_SvlFnRiG-fL``#_bw}w zW{bvHnWSzl4T>Z&FVHgd!Ir3Ja=zT8Y&6x881Hd5n$bN)_6?;8M;~?a4b0S(s`AD*sD4<(%Kw;!2go z*tZa73ZwGm3ac)Jqi=dm)n{Tl|F%z7jR*u)qv|K=u13e-FA1q`a2NN z*u}z(%K`K8{a)AkW7<4Z9V@l^<)2KjDbap$i`t2C+8;(f(9T%GQ-*kFc-MaTZIy6}kLP|-1|+(Ud8b(!+RGdQ z)>Niv1l4eJd4LLos~YJ)yv@_8_u>E)z-N55GEiwT#2c2UlxCwCFU&PPu=`3m1!d-B z4ByYHcH4gk(-`IV*!VJ5dw~Y-Y^B_&_nu~4sZhL4{N37ee1C0_Wb=e|SMnDoeFQdC zVLMR(cJ2xuUD8X~s18Byy-Tqyrel~gs|~WIrofZG{$9wvjbcE z@2I*?Hl^FFRV-+3#JS=L6!(;`HkiQ?pVn+&#wSWAM^k?uFVNY|c~3t~i4m|cBD@@5 z^%E2b(g1uyZe)dE+n%%!R0Ys!cA+7!;>}6M&XM)1+aw8ZMcZF1>80pIZ+GD)VK-^0 z8@W3m`=GrDHvNJ+kYmiX3z+ZPrP!bYlA2yHc~VqW`YTzt3aGpC0}t5p z6*KP+J?T8vaPsw#DC3E;vbG6|_w+1L(|*1@OM{Xq*f@pQJFE~FueTbh_8>^+-`(;N z!YBERy#Zl;`fJ@;gPZZ+_D|42M2LCh`%GL$@0scdt^9gukc<%HB@X{n$LAn7<5v*f zSvn@V1F^UkUHr$38?)6RMGClkec9yjcP$>x0876c8rv z-p?&Vu09LaV_4Jsa$hPY+N{vL1EZU|oeQ{s_a|zlY6;x{$#A39SsUHP4jvvnVrd#b zF2n!r&0n%|+O6f88@>D9=tp3QO%ubT6@_F&pUNiLyUK2fMpf?V8rCkHQzm(R=*%0!&q2Ql z%C%;)+tKg}%~Z@0rc5(t%a=_^LgXl!3S$sShi|vZS0iJXVycG>ZBz}#!AB)g%Z*{U zhF$jwNaeF6;Rc*G;$L$1z{WAg@SDI-{)Y8#{9)wsw}5M-ar_tcZ@lq6W2~UBD_{`t zSb(xcz()`2@+F=bL_I!}vFSGuI~UKy>)#yt&*h5(M8oer(N~Ode}c3yQs`+!$f0^$ zTx*cvI1uZrvwk$&eEj`l)@NNY;l9A$q7?Y#J}R`3x&sL3#x~$#q`|+nE4w{rd3V2r za|#w&ygDD3MxFhn31EyQI<%c;3;*n zXXQ=g55?+BQb*;Y974!3R8&OWC=uyA3H!%57%7V6*I$f#=SGhQ(+!ENgCl*+9F4-x zS2xmAjY>8i8Z*R|5=JQL-ZB_@JraFm32271Ylbe$8CGtQ<)ZLHRE^*5X60U+`?Lk( z2EQ|YP;NgMb;0WIK9s8eTS>2Rz8|{A>5CG-{0p8r)Y+ZF8Fc~WPuOvx(S0uH5{hgj z6a_0T&*F1c=2JLRLXPQGRMdDlFRbHuNS#eFjVuSxqCYgkEmg|71X=s@o}her3I5W+mrxAGr{O(*0#KGKqV^YfntJ}4SfHE- z88<&B-UXCXrhB8%#*I+qk9xHAyzzTb}3D-7Q-I91C9UI{ypZh7f>$IVIq4 za$PSKUT~J|pxX8H&P_*h82K+0TC&g$cP;}ry=e58YI8bcfY1EfUBBx)WE*f&P{URy zNQFX{nHFiJd!^U2bs@N}-T=#R@4TV^0>H7Nzo^$L7tAx2Q>O6`ivva!{Tx%>c$WdS z!y-R!ys`vHE-{T4rt}1sOj_)15%24TR?=k58Y~l7*tAvb=BJ@SagJccQ4}x7IF0;m zaP~K{Ez}p(SmE2~tcO*q_d@0C_B?*UFI!8Ub!tgZe==_G)Q8nA3GmUa9d{o)0MKH) z)1YSaGhI#5p+=3hlGdn-3QMhePgZx;(>^&E6ltG&H(N33d3A{oG}jkkbc*>a2y7=s zM~V|l$Pl7`z5|}LHdcl$0{q0e@wRJvhrKM(f>*aV@RWP+WbK?n}Xnn9NazM17?$EuF)hp_wSKLZ-S4V*n$RszZ+g0tdMc2zn!BBvh~ z#qUYS5NUnQ&=D@ zk0cA`Ab@JwIQ&ssk9Z)fV40+!*tXFzyKtJgNdu!wrpIkKpB9yyc!Hixy?Q{sI$ep% zmvJucd(CKo;^dTQkt{{ER9AR^eNTb zJAP{iX=SrFNt5wxaq1kr#nOOC8>)rsO)2MwIf2D&#l-wy^`}JZawClj=|EL1Zv91! zS1sVoQErra8V@`beKK>9EbD;4SH2h519ku$1Y0qxaH}NKP48Ch^d<({CYFy49S`dtvZ<|V)9mWl(-(DQ?LWmcGrSmz5 zXIwvKasfGmgZX~1bC>)VFqIFznRv?PbXeBtKy0cR+`Y8CZsQ(wMP;ry7D`eoGu^nx zD>XvW*26xLnOvU#qW=H(Y#Bf)j1Ha$a`HNowKLbwByeP&Lv)d514yT=nssOA{3>b)hcHnM;^gAu<8gWWU-6Hqt!MNDj%Vcxu)d_^{;y z$}aT0Jqk7w704k@!ojv`hGc>4+ErviP-WU_xsZYwS=7p$QCu)ca&Hjaq1pjmlrw8~ z7@k~3Z*?-jvd!QaOQT(|XQc@UEr>lcRb^$5IGI zLV$F61Q1aZ|j!9+C0gwBFOp5HTB!>4akTuweM*wLa zgU@UO7~KpWG_~|z4!l6bF<%BvCA~N6NNkwNUBzIcmzstNvXAU|9p$*yq9Ib&MiN^& z@Fw!dSUTDZcRc9k92w+E>^tsKkN%|N{%dxp56CO<&!GN2YxYlH^mi7B1FSoJ&^Hj8MF9v(ocE7Q|0Ri=0c|P`9Nx?Jq*~L)o z<2GZ#Qo)Z07Uy@sj>w1dJ!3L}A- z8{;M94vwi?o_!O20qKy!nRN`_9%i@JBvs)S&-wnSf%_T6CN@1BEV^djYIw|IJzXN$GmXA~`9|Q|NM0!8+3JlYBoqWWbI zEoO3Rng$ukKJt^;D=HN@R->SsfA*tJe%&OXcIYnOXaNSg%{AETr; z_&hBYQz6kpO>LlW<%)DGqovPjS(g?t)}{X8q=5{AOzIw)vVujEyh1^$X;mT_w*+BkQEUtl&R~Mn z@8&|8TftK_Z%A@4q6^{)lzm)R3qxbK+|dh=gZumq5_nkqIKQv zWFuc0q|?w1d-q;prCJ~#(~vb2lf+m$R#C}%q^4f%F9wH~m}v;V`M*!jIwarsu}Rr>M^Ed>&i4EtJQ$1xK6FC?h!mCmi5dD~;*}p} z*XUC9t%PMtWW@vvYY7>+Yq!-8^Ng%CWcu0fg>=Ec8eF>!8(H2*sg-8kZoBE@Pr__; zzGk+o6~S2Mm(B5i!_K8xE`0OjflWVN$Iamd^z3x)>;W|!PIegqH6hID$+o&VvT`s4 zED&n?2wsG8?_KHg+zB++Pz}|N?`L#`Qiuu?QWNYS=!o^zQ_@7C}} zxEeY-hQ}9+iA4{o-uI9al@1?c2NwP0o$ssL?f=LO{Jr~qTu8jG$s1=SzkkxfKkSGA zcPq5L&9;Yx3(R#*F{f^AO4=50~zUel?4_XxjwrdapoIZPyzar9<_bgx5YS z4amIdjEC`>_Nc7-?0%StU<#b`4=5He__-@LEo5#b+_2!8qQ&wu-7lJwlk`#1ZT|e1 zqq&O@IeCM>q=SnaFYQM_BKCnItwK1mual`kI##8A_$!n80B%S?>DH_B{#I+BF3o~K zrbVKr?I2LW^|DXkghUVjof1jRtJ>Fu@hQp9)(k87uHj!(jxd+$Kz~n+3}J1V5(9B` zl$s-~#js#N3uCL5j=_#J940_Li3!GY{9`Fq3jZ+VB2H$GzyhK0WLqWDQcBu6E;k0v zqnV~23ix+)GiYW2{^!$_9JFV6D%865CPnk@$X38DTu@6Y_>^VmNhvuSKMhkBU_a)- zx6rar+Fs!>x;cMmL~_3sNClrUf&SXEj7IE19DeA&VH{f{ zi$c{Me}Oq0u3kAF5%_5OI}fcYxyX$+veACVJDL%5ltwC!x?bmY4?I(ho~Y<#_xpz&J#d9WqvxFjMnUgdD$ZF=^Dj{|SvF$oi8Kv7#ojk%vtTpDF` zhLH?I;K;$kjEbf{*(p=6H{VFwA#Oty zqP*=LWg)xV=y=V@(&hV#P}w(?_U7o7gBjxz+AYnya9nUm`Z*(fW@KwswN=b7LC5 zOl*cx^`EgwJNA4=J$$-x>@TNCHj=d~u`E;}Z11@J=aSb)b|~Q~>1z0@b(! zz5ITP;!MHxKrc*gHNVtD>3pPxmjK1tA&}a$&B!@Bw zB5gZ%@tVxg|KlS>D?`BfZ&vMK&R^M`9g}>i!54(WIBLFk0Oz`$+8q&5?>8D}tMP5~ zriq9h;QtwPdhlsU2r<4=7cCQFN*PY@eGzihar0k?*?o0r;=D<#l+nY8gO*7J$W$fnx?~B?QlCrqHYFEE z9rELr==7&gR`YBw2(fV8NO|jE>FtM9Pf<4TF}k|Cu{3L>%S216_)LTky}x){eaapg#sjWHQNCm75~nHB%q03NZK-wSvAGb8oOd*X&NkKC>ozFULhqn=*_}%S1S>y&Ur2_ZarS6pyB=al2 zyp$LU%c4vD5Q62*1C?F+DRVJ9#YP~0@e-tEEu%K*F%{8Z&Wu3HkcWDC*z#>waGLf! zQ<8Veax{X6wE|VY)pKMbrC=&<>CYLhEiFBNM$+;scU;SMW3JS*rQ78J6Zm62Zp4)` z!TRjvXQ3O7eqF?SSa!>!ITlS|F1XkQF#tc4{@{%*r!NS6q zyW<|MRS?Wj=XnVgzly=p^(qOMEMNha3d+=@<*h@cr?l6|yd6k1oX zzX95XUnc(tq)kOBZVfRk58*Y##r|<3FW_(``;^++lR||(voGW9zoInn=&4pH+dcYk DGM#$i diff --git a/docs/graphics/debugger_ram-f8sc.png b/docs/graphics/debugger_ram-f8sc.png index 6bf31567acf32758f689dbf5f7baf47105992994..97012831c19648278f612100139724fdb511c0af 100644 GIT binary patch literal 7220 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 Bs~`XX diff --git a/docs/graphics/debugger_rom.png b/docs/graphics/debugger_rom.png index c69d2de78a6e81548378f0c77b7bd6bd86bc3394..bf6a74611879f25a79efd885976a67804c179236 100644 GIT binary patch literal 14402 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 HCi4FP0^1zw literal 10879 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 Date: Sun, 2 Sep 2018 17:53:35 +0200 Subject: [PATCH 096/126] fixed merge error --- src/debugger/gui/PromptWidget.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/debugger/gui/PromptWidget.cxx b/src/debugger/gui/PromptWidget.cxx index 2713d2d89..81886b1d9 100644 --- a/src/debugger/gui/PromptWidget.cxx +++ b/src/debugger/gui/PromptWidget.cxx @@ -689,7 +689,7 @@ void PromptWidget::textPaste() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void PromptWidget::addToHistory(const char* str) { - strncpy(_history[_historyIndex], str, kLineBufferSize - 1); + strncpy_s(_history[_historyIndex], str, kLineBufferSize - 1); _historyIndex = (_historyIndex + 1) % kHistorySize; _historyLine = 0; From eee99a43dc956fe7dea2f238d061be2187250318 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 2 Sep 2018 18:41:52 +0200 Subject: [PATCH 097/126] Revert "fixed merge error" This reverts commit 00544ddbe9303f32d5f8270d17b6aab09939e4ac. --- src/debugger/gui/PromptWidget.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/debugger/gui/PromptWidget.cxx b/src/debugger/gui/PromptWidget.cxx index 81886b1d9..2713d2d89 100644 --- a/src/debugger/gui/PromptWidget.cxx +++ b/src/debugger/gui/PromptWidget.cxx @@ -689,7 +689,7 @@ void PromptWidget::textPaste() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void PromptWidget::addToHistory(const char* str) { - strncpy_s(_history[_historyIndex], str, kLineBufferSize - 1); + strncpy(_history[_historyIndex], str, kLineBufferSize - 1); _historyIndex = (_historyIndex + 1) % kHistorySize; _historyLine = 0; From d194de080d86fba7ff2e780c2ec5cf973f84bf8c Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 2 Sep 2018 19:56:38 +0200 Subject: [PATCH 098/126] one more screenshot --- docs/graphics/debugger_main.png | Bin 86508 -> 87671 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/graphics/debugger_main.png b/docs/graphics/debugger_main.png index 0543f3ec6d595f79405940ac10e5c6a430b3ca42..9300d2c383948a772e0da5cb93e94fbf01c2ac2d 100644 GIT binary patch literal 87671 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 g2N}a3a)vxE&0j5XW#=3bxHTR Date: Sun, 2 Sep 2018 21:59:59 +0200 Subject: [PATCH 099/126] and another screenshot --- docs/graphics/debugger_bpstatus.png | Bin 334 -> 508 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/graphics/debugger_bpstatus.png b/docs/graphics/debugger_bpstatus.png index 231ecf8849c5b7434bacfccb43d9e0444114e56b..035329e3931bae2f1a74da64169d0433a1f050d3 100644 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0y~yV6+CZl{lDyhT|5}cn_Ql40p%21G)nOCBhms+A= zqGzCIWcX1bb1Kl(98VX=kczmsR}c0cHsEo&IAyo%lIc?>SZ!Nv>d>Izak22t)~Ag7 zKJb0&2=Z&Tsk`sbpp~Jspye2o7lKN;b3OP?P5N z*4oN-o-g_7sJ(vepKHe#i!hm&uh=;6`1!p3vu%a0UfyxDZi>@`f9G;@{{ER3zkYU} z!qcypzZo)y_++e6)qL|KrF`jW@j8+8w#1a3-pdcfv`b0<^!elCZn&oM`1AJgU3cE> z%h+~?A>8V<{k5NG1n)M-=Gn;e@f=P$%~P;+v(#(%|3~Mo?Z19x$)3KeMY>GS1U!s9pq@fCfX~_s{&s XLCx8ptEX83BZtA$)z4*}Q$iB}eF@l1 literal 334 zcmeAS@N?(olHy`uVBq!ia0y~yV6+3W6*!oHB+JKU3n0Z=;1OBOz#uROgc;S&TA2V< zF?hN-hE&{od*>i;lL3Rn#lCBWGKXSi4qDpmuQZkhQ$^4h-j->TQ% z%oM)vb>DgN?dH!*cSoGK^?dHjw0<$wxwc%+%Wp5ams8hydxGAj+-Z54#-f|^lC-Aj zUGiO9Dtz_o(%G>W#MYK>-@>bWZr9oEE48lex>@48$7B1)YghhlT^A|-GEVpIGwDnN zmtE{R!JgtT-`!efrEvGCu%6w~kNfwpKhQj(p~P|5CDxZrK%D1kF4cDN{s*J*4{~V^ eyFfAy>2|N;uKU|gttbQr5QC?ypUXO@geCw-y^z8H From a780e9542ebbb9abf9b4a78b0360dd4639132f38 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 2 Sep 2018 22:03:53 +0200 Subject: [PATCH 100/126] spelling --- docs/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/index.html b/docs/index.html index 1c34d286a..9c6dbefce 100644 --- a/docs/index.html +++ b/docs/index.html @@ -26,7 +26,7 @@

      -

      Locating Game Images (aka, ROMs)

      +

      Locating Game Images (aka ROMs)

      From 4edd626a3ac690d1033cb49b163e8b7c864c277f Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 4 Sep 2018 10:17:55 -0230 Subject: [PATCH 101/126] Ignore '__MACOSX' directories stored in ZIP files. Note that this seems to duplicate functionality in ZipHandler; that code is in the process of being rewritten. --- src/common/FSNodeZIP.cxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/common/FSNodeZIP.cxx b/src/common/FSNodeZIP.cxx index 73c48aee0..2f0db35e7 100644 --- a/src/common/FSNodeZIP.cxx +++ b/src/common/FSNodeZIP.cxx @@ -140,7 +140,10 @@ bool FilesystemNodeZIP::getChildren(AbstractFSList& myList, ListMode mode, while(zip.hasNext()) { // Only consider entries that start with '_virtualPath' + // Ignore empty filenames and '__MACOSX' virtual directories const string& next = zip.next(); + if(BSPF::startsWithIgnoreCase(next, "__MACOSX") || next == EmptyString) + continue; if(BSPF::startsWithIgnoreCase(next, _virtualPath)) { // First strip off the leading directory From b0aba8ae266be069a8ecb6ef0f972c2f59253070 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 4 Sep 2018 11:23:10 -0230 Subject: [PATCH 102/126] Fix crash when opening ZIP files containing errors (including zero-byte files). This fixes a regression in behaviour from 5.1. --- src/common/FSNodeZIP.cxx | 32 +++++++++++++++++++++----------- src/common/FSNodeZIP.hxx | 5 ----- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/src/common/FSNodeZIP.cxx b/src/common/FSNodeZIP.cxx index 2f0db35e7..b61799d9f 100644 --- a/src/common/FSNodeZIP.cxx +++ b/src/common/FSNodeZIP.cxx @@ -47,8 +47,18 @@ FilesystemNodeZIP::FilesystemNodeZIP(const string& p) _zipFile = p.substr(0, pos+4); // Open file at least once to initialize the virtual file count - ZipHandler& zip = open(_zipFile); - _numFiles = zip.romFiles(); + try + { + myZipHandler->open(_zipFile); + } + catch(const runtime_error&) + { + // TODO: Actually present the error passed in back to the user + // For now, we just indicate that no ROMs were found + _error = ZIPERR_NO_ROMS; + return; + } + _numFiles = myZipHandler->romFiles(); if(_numFiles == 0) { _error = ZIPERR_NO_ROMS; @@ -66,9 +76,9 @@ FilesystemNodeZIP::FilesystemNodeZIP(const string& p) else if(_numFiles == 1) { bool found = false; - while(zip.hasNext() && !found) + while(myZipHandler->hasNext() && !found) { - const string& file = zip.next(); + const string& file = myZipHandler->next(); if(Bankswitch::isValidRomName(file)) { _virtualPath = file; @@ -136,12 +146,12 @@ bool FilesystemNodeZIP::getChildren(AbstractFSList& myList, ListMode mode, return false; std::set dirs; - ZipHandler& zip = open(_zipFile); - while(zip.hasNext()) + myZipHandler->open(_zipFile); + while(myZipHandler->hasNext()) { // Only consider entries that start with '_virtualPath' // Ignore empty filenames and '__MACOSX' virtual directories - const string& next = zip.next(); + const string& next = myZipHandler->next(); if(BSPF::startsWithIgnoreCase(next, "__MACOSX") || next == EmptyString) continue; if(BSPF::startsWithIgnoreCase(next, _virtualPath)) @@ -177,13 +187,13 @@ uInt32 FilesystemNodeZIP::read(BytePtr& image) const case ZIPERR_NO_ROMS: throw runtime_error("ZIP file doesn't contain any ROMs"); } - ZipHandler& zip = open(_zipFile); + myZipHandler->open(_zipFile); bool found = false; - while(zip.hasNext() && !found) - found = zip.next() == _virtualPath; + while(myZipHandler->hasNext() && !found) + found = myZipHandler->next() == _virtualPath; - return found ? zip.decompress(image) : 0; + return found ? myZipHandler->decompress(image) : 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/common/FSNodeZIP.hxx b/src/common/FSNodeZIP.hxx index 74641a37d..e09ddcb4c 100644 --- a/src/common/FSNodeZIP.hxx +++ b/src/common/FSNodeZIP.hxx @@ -101,11 +101,6 @@ class FilesystemNodeZIP : public AbstractFSNode // ZipHandler static reference variable responsible for accessing ZIP files static unique_ptr myZipHandler; - inline static ZipHandler& open(const string& file) - { - myZipHandler->open(file); - return *myZipHandler; - } // Get last component of path static const char* lastPathComponent(const string& str) From e625a2f8ab44a157ce85628d922a062089a69f11 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 4 Sep 2018 17:15:01 -0230 Subject: [PATCH 103/126] Added C++ version of ZipHandler. - code is almost completely rewritten, making use of proper C++11 - fixes warning in VS compile about unsafe 'strncpy' function --- src/common/ZipHandler.cxx | 860 ++++++++++++++++---------------------- src/common/ZipHandler.hxx | 357 ++++++++-------- 2 files changed, 533 insertions(+), 684 deletions(-) diff --git a/src/common/ZipHandler.cxx b/src/common/ZipHandler.cxx index b017b0b80..ab8ef1773 100644 --- a/src/common/ZipHandler.cxx +++ b/src/common/ZipHandler.cxx @@ -15,8 +15,6 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include -#include #include #include "Bankswitch.hxx" @@ -24,29 +22,56 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ZipHandler::ZipHandler() - : myZip(nullptr) { - for(int cachenum = 0; cachenum < ZIP_CACHE_SIZE; ++cachenum) - myZipCache[cachenum] = nullptr; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -ZipHandler::~ZipHandler() -{ - zip_file_cache_clear(); - free_zip_file(myZip); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void ZipHandler::open(const string& filename) { - // Close already open file - if(myZip) - zip_file_close(myZip); + // Close already open file (if any) and add to cache + addToCache(); - // And open a new one - zip_file_open(filename.c_str(), &myZip); - reset(); + // Ensure we start with a nullptr result + myZip.reset(); + + ZipFilePtr ptr = findCached(filename); + if(ptr) + { + // Only a previously used entry will exist in the cache, so we know it's valid + myZip = std::move(ptr); + + // Was already initialized; we just need to re-open it + if(!myZip->open()) + throw runtime_error(errorMessage(ZipError::FILE_ERROR)); + } + else + { + // Allocate memory for the ZipFile structure + ptr = make_unique(filename); + if(ptr == nullptr) + throw runtime_error(errorMessage(ZipError::OUT_OF_MEMORY)); + + // Open the file and initialize it + if(!ptr->open()) + throw runtime_error(errorMessage(ZipError::FILE_ERROR)); + try + { + ptr->initialize(); + } + catch(const ZipError& err) + { + throw runtime_error(errorMessage(err)); + } + + myZip = std::move(ptr); + + // Count ROM files (we do it here so it will be cached) + while(hasNext()) + if(Bankswitch::isValidRomName(next())) + myZip->myRomfiles++; + } + + reset(); // Reset iterator to beginning for subsequent use } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -54,115 +79,257 @@ void ZipHandler::reset() { // Reset the position and go from there if(myZip) - myZip->cd_pos = 0; + myZip->myCdPos = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool ZipHandler::hasNext() +bool ZipHandler::hasNext() const { - return myZip && (myZip->cd_pos < myZip->ecd.cd_size); + return myZip && (myZip->myCdPos < myZip->myEcd.cdSize); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string ZipHandler::next() +const string& ZipHandler::next() { - if(myZip) + if(hasNext()) { - bool valid = false; - const zip_file_header* header = nullptr; - do { - header = zip_file_next_file(myZip); - - // Ignore zero-length files and '__MACOSX' virtual directories - valid = header && (header->uncompressed_length > 0) && - !BSPF::startsWithIgnoreCase(header->filename, "__MACOSX"); - } - while(!valid && myZip->cd_pos < myZip->ecd.cd_size); - - return valid ? header->filename : EmptyString; + const ZipHeader* header = myZip->nextFile(); + if(!header || header->uncompressedLength == 0) + return next(); + else + return header->filename; } - else - return EmptyString; + return EmptyString; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 ZipHandler::decompress(BytePtr& image) { - static const char* const zip_error_s[] = { - "ZIPERR_NONE", - "ZIPERR_OUT_OF_MEMORY", - "ZIPERR_FILE_ERROR", - "ZIPERR_BAD_SIGNATURE", - "ZIPERR_DECOMPRESS_ERROR", - "ZIPERR_FILE_TRUNCATED", - "ZIPERR_FILE_CORRUPT", - "ZIPERR_UNSUPPORTED", - "ZIPERR_BUFFER_TOO_SMALL" - }; - - if(myZip) + if(myZip && myZip->myHeader.uncompressedLength > 0) { - uInt32 length = myZip->header.uncompressed_length; + uInt32 length = myZip->myHeader.uncompressedLength; image = make_unique(length); + if(image == nullptr) + throw runtime_error(errorMessage(ZipError::OUT_OF_MEMORY)); - ZipHandler::zip_error err = zip_file_decompress(myZip, image.get(), length); - if(err == ZIPERR_NONE) + try + { + myZip->decompress(image, length); return length; - else - throw runtime_error(zip_error_s[err]); + } + catch(const ZipError& err) + { + throw runtime_error(errorMessage(err)); + } } else throw runtime_error("Invalid ZIP archive"); } -/*------------------------------------------------- - replaces functionality of various osd_xxx - file access functions --------------------------------------------------*/ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool ZipHandler::stream_open(const char* filename, fstream** stream, - uInt64& length) +string ZipHandler::errorMessage(ZipError err) const { - fstream* in = new fstream(filename, fstream::in | fstream::binary); - if(!in || !in->is_open()) + static const char* const zip_error_s[] = { + "ZIP NONE", + "ZIP OUT_OF_MEMORY", + "ZIP FILE_ERROR", + "ZIP BAD_SIGNATURE", + "ZIP DECOMPRESS_ERROR", + "ZIP FILE_TRUNCATED", + "ZIP FILE_CORRUPT", + "ZIP UNSUPPORTED", + "ZIP LZMA_UNSUPPORTED", + "ZIP BUFFER_TOO_SMALL" + }; + return zip_error_s[int(err)]; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ZipHandler::ZipFilePtr ZipHandler::findCached(const string& filename) +{ + for(size_t cachenum = 0; cachenum < myZipCache.size(); ++cachenum) { - *stream = nullptr; - length = 0; + // If we have a valid entry and it matches our filename, + // use it and remove from the cache + if(myZipCache[cachenum] && (filename == myZipCache[cachenum]->myFilename)) + { + ZipFilePtr result; + std::swap(myZipCache[cachenum], result); + return result; + } + } + return ZipFilePtr(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void ZipHandler::addToCache() +{ + if(myZip == nullptr) + return; + + // Close the open file + myZip->close(); + + // Find the first nullptr entry in the cache + size_t cachenum; + for(cachenum = 0; cachenum < myZipCache.size(); ++cachenum) + if(myZipCache[cachenum] == nullptr) + break; + + // If no room left in the cache, free the bottommost entry + if(cachenum == myZipCache.size()) + { + cachenum--; + myZipCache[cachenum].reset(); + } + + for( ; cachenum > 0; --cachenum) + myZipCache[cachenum] = std::move(myZipCache[cachenum - 1]); + myZipCache[0] = std::move(myZip); + +#if 0 + cerr << "\nCACHE contents:\n"; + for(cachenum = 0; cachenum < myZipCache.size(); ++cachenum) + if(myZipCache[cachenum] != nullptr) + cerr << " " << cachenum << " : " << myZipCache[cachenum]->filename << endl; + cerr << endl; +#endif +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ZipHandler::ZipFile::ZipFile(const string& filename) + : myFilename(filename), + myLength(0), + myRomfiles(0), + myCdPos(0), + myBuffer(make_unique(DECOMPRESS_BUFSIZE)) +{ + std::fill(myBuffer.get(), myBuffer.get() + DECOMPRESS_BUFSIZE, 0); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool ZipHandler::ZipFile::open() +{ + myStream.open(myFilename, fstream::in | fstream::binary); + if(!myStream.is_open()) + { + myLength = 0; return false; } - else - { - in->exceptions( std::ios_base::failbit | std::ios_base::badbit | std::ios_base::eofbit ); - *stream = in; - in->seekg(0, std::ios::end); - length = in->tellg(); - in->seekg(0, std::ios::beg); - return true; - } + myStream.exceptions( std::ios_base::failbit | std::ios_base::badbit | std::ios_base::eofbit ); + myStream.seekg(0, std::ios::end); + myLength = myStream.tellg(); + myStream.seekg(0, std::ios::beg); + + return true; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void ZipHandler::stream_close(fstream** stream) -{ - if(*stream) - { - if((*stream)->is_open()) - (*stream)->close(); - delete *stream; - *stream = nullptr; - } -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool ZipHandler::stream_read(fstream* stream, void* buffer, uInt64 offset, - uInt32 length, uInt32& actual) +void ZipHandler::ZipFile::initialize() { try { - stream->seekg(offset); - stream->read((char*)buffer, length); + // Read ecd data + readEcd(); - actual = (uInt32)stream->gcount(); + // Verify that we can work with this zipfile (no disk spanning allowed) + if(myEcd.diskNumber != myEcd.cdStartDiskNumber || + myEcd.cdDiskEntries != myEcd.cdTotalEntries) + throw ZipError::UNSUPPORTED; + + // Allocate memory for the central directory + myCd = make_unique(myEcd.cdSize + 1); + if(myCd == nullptr) + throw ZipError::OUT_OF_MEMORY; + + // Read the central directory + uInt32 read_length = 0; + bool success = readStream(myCd, myEcd.cdStartDiskOffset, myEcd.cdSize, read_length); + if(!success) + throw ZipError::FILE_ERROR; + else if(read_length != myEcd.cdSize) + throw ZipError::FILE_TRUNCATED; + } + catch(const ZipError&) + { + throw; + } +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void ZipHandler::ZipFile::close() +{ + if(myStream.is_open()) + myStream.close(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void ZipHandler::ZipFile::readEcd() +{ + uInt32 buflen = 1024; + BytePtr buffer; + + // We may need multiple tries + while(buflen < 65536) + { + uInt32 read_length; + + // Max out the buf length at the size of the file + if(buflen > myLength) + buflen = myLength; + + // Allocate buffer + buffer = make_unique(buflen + 1); + if(buffer == nullptr) + throw ZipError::OUT_OF_MEMORY; + + // Read in one buffers' worth of data + bool success = readStream(buffer, myLength - buflen, buflen, read_length); + if(!success || read_length != buflen) + throw ZipError::FILE_ERROR; + + // Find the ECD signature + size_t offset; + for(offset = buflen - EcdReader::minimumLength(); offset >= 0; --offset) + { + EcdReader reader(buffer.get() + offset); + if(reader.signatureCorrect() && ((reader.totalLength() + offset) <= buflen)) + break; + } + + // If we found it, fill out the data + if(offset >= 0) + { + // Extract ECD info + EcdReader const reader(buffer.get() + offset); + myEcd.diskNumber = reader.thisDiskNo(); + myEcd.cdStartDiskNumber = reader.dirStartDisk(); + myEcd.cdDiskEntries = reader.dirDiskEntries(); + myEcd.cdTotalEntries = reader.dirTotalEntries(); + myEcd.cdSize = reader.dirSize(); + myEcd.cdStartDiskOffset = reader.dirOffset(); + return; + } + + // Didn't find it; expand our search + if(buflen < myLength) + buflen *= 2; + else + throw ZipError::BAD_SIGNATURE; + } + throw ZipError::OUT_OF_MEMORY; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool ZipHandler::ZipFile::readStream(BytePtr& out, uInt32 offset, + uInt32 length, uInt32& actual) +{ + try + { + myStream.seekg(offset); + myStream.read(reinterpret_cast(out.get()), length); + + actual = uInt32(myStream.gcount()); return true; } catch(...) @@ -171,450 +338,130 @@ bool ZipHandler::stream_read(fstream* stream, void* buffer, uInt64 offset, } } - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -/*------------------------------------------------- - zip_file_open - opens a ZIP file for reading --------------------------------------------------*/ -ZipHandler::zip_error ZipHandler::zip_file_open(const char* filename, zip_file** zip) +const ZipHandler::ZipHeader* const ZipHandler::ZipFile::nextFile() { - zip_error ziperr = ZIPERR_NONE; - uInt32 read_length; - zip_file* newzip; - char* string; - int cachenum; - bool success; - - // Ensure we start with a NULL result - *zip = nullptr; - - // See if we are in the cache, and reopen if so - for(cachenum = 0; cachenum < ZIP_CACHE_SIZE; ++cachenum) - { - zip_file* cached = myZipCache[cachenum]; - - // If we have a valid entry and it matches our filename, use it and remove - // from the cache - if(cached != nullptr && cached->filename != nullptr && - strcmp(filename, cached->filename) == 0) - { - *zip = cached; - myZipCache[cachenum] = nullptr; - return ZIPERR_NONE; - } - } - - // Allocate memory for the zip_file structure - newzip = (zip_file*)malloc(sizeof(*newzip)); - if (newzip == nullptr) - return ZIPERR_OUT_OF_MEMORY; - memset(newzip, 0, sizeof(*newzip)); - - // Open the file - if(!stream_open(filename, &newzip->file, newzip->length)) - { - ziperr = ZIPERR_FILE_ERROR; - goto error; - } - - // Read ecd data - ziperr = read_ecd(newzip); - if(ziperr != ZIPERR_NONE) - goto error; - - // Verify that we can work with this zipfile (no disk spanning allowed) - if (newzip->ecd.disk_number != newzip->ecd.cd_start_disk_number || - newzip->ecd.cd_disk_entries != newzip->ecd.cd_total_entries) - { - ziperr = ZIPERR_UNSUPPORTED; - goto error; - } - - // Allocate memory for the central directory - newzip->cd = (uInt8*)malloc(newzip->ecd.cd_size + 1); - if(newzip->cd == nullptr) - { - ziperr = ZIPERR_OUT_OF_MEMORY; - goto error; - } - - // Read the central directory - success = stream_read(newzip->file, newzip->cd, newzip->ecd.cd_start_disk_offset, - newzip->ecd.cd_size, read_length); - if(!success || read_length != newzip->ecd.cd_size) - { - ziperr = success ? ZIPERR_FILE_TRUNCATED : ZIPERR_FILE_ERROR; - goto error; - } - - // Make a copy of the filename for caching purposes - string = (char*)malloc(strlen(filename) + 1); - if (string == nullptr) - { - ziperr = ZIPERR_OUT_OF_MEMORY; - goto error; - } - - strncpy(string, filename, strlen(filename) + 1); - newzip->filename = string; - *zip = newzip; - - // Count ROM files (we do it at this level so it will be cached) - while(hasNext()) - if(Bankswitch::isValidRomName(next())) - (*zip)->romfiles++; - - return ZIPERR_NONE; - -error: - free_zip_file(newzip); - return ziperr; -} - - -/*------------------------------------------------- - zip_file_close - close a ZIP file and add it - to the cache --------------------------------------------------*/ -void ZipHandler::zip_file_close(zip_file* zip) -{ - int cachenum; - - // Close the open files - if(zip->file) - stream_close(&zip->file); - - // Find the first NULL entry in the cache - for(cachenum = 0; cachenum < ZIP_CACHE_SIZE; ++cachenum) - if(myZipCache[cachenum] == nullptr) - break; - - // If no room left in the cache, free the bottommost entry - if(cachenum == ZIP_CACHE_SIZE) - free_zip_file(myZipCache[--cachenum]); - - // Move everyone else down and place us at the top - if(cachenum != 0) - memmove(&myZipCache[1], &myZipCache[0], cachenum * sizeof(myZipCache[0])); - myZipCache[0] = zip; -} - - -/*------------------------------------------------- - zip_file_cache_clear - clear the ZIP file - cache and free all memory --------------------------------------------------*/ -void ZipHandler::zip_file_cache_clear() -{ - // Clear call cache entries - for(int cachenum = 0; cachenum < ZIP_CACHE_SIZE; ++cachenum) - { - if(myZipCache[cachenum] != nullptr) - { - free_zip_file(myZipCache[cachenum]); - myZipCache[cachenum] = nullptr; - } - } -} - - -/*************************************************************************** - CONTAINED FILE ACCESS -***************************************************************************/ - -/*------------------------------------------------- - zip_file_next_entry - return the next entry - in the ZIP --------------------------------------------------*/ -const ZipHandler::zip_file_header* ZipHandler::zip_file_next_file(zip_file* zip) -{ - // Fix up any modified data - if(zip->header.raw != nullptr) - { - zip->header.raw[ZIPCFN + zip->header.filename_length] = zip->header.saved; - zip->header.raw = nullptr; - } - + // Make sure we have enough data // If we're at or past the end, we're done - if(zip->cd_pos >= zip->ecd.cd_size) + CentralDirEntryReader const reader(myCd.get() + myCdPos); + if(!reader.signatureCorrect() || ((myCdPos + reader.totalLength()) > myEcd.cdSize)) return nullptr; // Extract file header info - zip->header.raw = zip->cd + zip->cd_pos; - zip->header.rawlength = ZIPCFN; - zip->header.signature = read_dword(zip->header.raw + ZIPCENSIG); - zip->header.version_created = read_word (zip->header.raw + ZIPCVER); - zip->header.version_needed = read_word (zip->header.raw + ZIPCVXT); - zip->header.bit_flag = read_word (zip->header.raw + ZIPCFLG); - zip->header.compression = read_word (zip->header.raw + ZIPCMTHD); - zip->header.file_time = read_word (zip->header.raw + ZIPCTIM); - zip->header.file_date = read_word (zip->header.raw + ZIPCDAT); - zip->header.crc = read_dword(zip->header.raw + ZIPCCRC); - zip->header.compressed_length = read_dword(zip->header.raw + ZIPCSIZ); - zip->header.uncompressed_length = read_dword(zip->header.raw + ZIPCUNC); - zip->header.filename_length = read_word (zip->header.raw + ZIPCFNL); - zip->header.extra_field_length = read_word (zip->header.raw + ZIPCXTL); - zip->header.file_comment_length = read_word (zip->header.raw + ZIPCCML); - zip->header.start_disk_number = read_word (zip->header.raw + ZIPDSK); - zip->header.internal_attributes = read_word (zip->header.raw + ZIPINT); - zip->header.external_attributes = read_dword(zip->header.raw + ZIPEXT); - zip->header.local_header_offset = read_dword(zip->header.raw + ZIPOFST); - zip->header.filename = (char*)zip->header.raw + ZIPCFN; - - // Make sure we have enough data - zip->header.rawlength += zip->header.filename_length; - zip->header.rawlength += zip->header.extra_field_length; - zip->header.rawlength += zip->header.file_comment_length; - if(zip->cd_pos + zip->header.rawlength > zip->ecd.cd_size) - return nullptr; - - // NULL terminate the filename - uInt32 size = ZIPCFN + zip->header.filename_length; - zip->header.saved = zip->header.raw[size]; - zip->header.raw[size] = 0; + myHeader.versionCreated = reader.versionCreated(); + myHeader.versionNeeded = reader.versionNeeded(); + myHeader.bitFlag = reader.generalFlag(); + myHeader.compression = reader.compressionMethod(); + myHeader.crc = reader.crc32(); + myHeader.compressedLength = reader.compressedSize(); + myHeader.uncompressedLength = reader.uncompressedSize(); + myHeader.startDiskNumber = reader.startDisk(); + myHeader.localHeaderOffset = reader.headerOffset(); + myHeader.filename = reader.filename(); // Advance the position - zip->cd_pos += zip->header.rawlength; - return &zip->header; + myCdPos += reader.totalLength(); + return &myHeader; } -/*------------------------------------------------- - zip_file_decompress - decompress a file - from a ZIP into the target buffer --------------------------------------------------*/ -ZipHandler::zip_error - ZipHandler::zip_file_decompress(zip_file* zip, void* buffer, uInt32 length) +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void ZipHandler::ZipFile::decompress(BytePtr& out, uInt32 length) { - zip_error ziperr; - uInt64 offset; - // If we don't have enough buffer, error - if(length < zip->header.uncompressed_length) - return ZIPERR_BUFFER_TOO_SMALL; + if(length < myHeader.uncompressedLength) + throw ZipError::BUFFER_TOO_SMALL; // Make sure the info in the header aligns with what we know - if(zip->header.start_disk_number != zip->ecd.disk_number) - return ZIPERR_UNSUPPORTED; + if(myHeader.startDiskNumber != myEcd.diskNumber) + throw ZipError::UNSUPPORTED; - // Get the compressed data offset - ziperr = get_compressed_data_offset(zip, offset); - if(ziperr != ZIPERR_NONE) - return ziperr; - - // Handle compression types - switch(zip->header.compression) + try { - case 0: - ziperr = decompress_data_type_0(zip, offset, buffer, length); - break; + // Get the compressed data offset + uInt32 offset = getCompressedDataOffset(); - case 8: - ziperr = decompress_data_type_8(zip, offset, buffer, length); - break; - - default: - ziperr = ZIPERR_UNSUPPORTED; - break; - } - return ziperr; -} - -/*************************************************************************** - CACHE MANAGEMENT -***************************************************************************/ - -/*------------------------------------------------- - free_zip_file - free all the data for a - zip_file --------------------------------------------------*/ -void ZipHandler::free_zip_file(zip_file* zip) -{ - if(zip != nullptr) - { - if(zip->file) - stream_close(&zip->file); - if(zip->filename != nullptr) - free((void*)zip->filename); - if(zip->ecd.raw != nullptr) - free(zip->ecd.raw); - if(zip->cd != nullptr) - free(zip->cd); - free(zip); - } -} - -/*************************************************************************** - ZIP FILE PARSING -***************************************************************************/ - -/*------------------------------------------------- - read_ecd - read the ECD data --------------------------------------------------*/ - -ZipHandler::zip_error ZipHandler::read_ecd(zip_file* zip) -{ - uInt32 buflen = 1024; - uInt8* buffer; - - // We may need multiple tries - while(buflen < 65536) - { - uInt32 read_length; - Int32 offset; - - // Max out the buffer length at the size of the file - if(buflen > zip->length) - buflen = (uInt32)zip->length; - - // Allocate buffer - buffer = (uInt8*)malloc(buflen + 1); - if(buffer == nullptr) - return ZIPERR_OUT_OF_MEMORY; - - // Read in one buffers' worth of data - bool success = stream_read(zip->file, buffer, zip->length - buflen, - buflen, read_length); - if(!success || read_length != buflen) + // Handle compression types + switch(myHeader.compression) { - free(buffer); - return ZIPERR_FILE_ERROR; - } - - // Find the ECD signature - for(offset = buflen - 22; offset >= 0; offset--) - if(buffer[offset + 0] == 'P' && buffer[offset + 1] == 'K' && - buffer[offset + 2] == 0x05 && buffer[offset + 3] == 0x06) + case 0: + decompressDataType0(offset, out, length); break; - // If we found it, fill out the data - if(offset >= 0) - { - // Reuse the buffer as our ECD buffer - zip->ecd.raw = buffer; - zip->ecd.rawlength = buflen - offset; + case 8: + decompressDataType8(offset, out, length); + break; - // Append a NULL terminator to the comment - memmove(&buffer[0], &buffer[offset], zip->ecd.rawlength); - zip->ecd.raw[zip->ecd.rawlength] = 0; - - // Extract ecd info - zip->ecd.signature = read_dword(zip->ecd.raw + ZIPESIG); - zip->ecd.disk_number = read_word (zip->ecd.raw + ZIPEDSK); - zip->ecd.cd_start_disk_number = read_word (zip->ecd.raw + ZIPECEN); - zip->ecd.cd_disk_entries = read_word (zip->ecd.raw + ZIPENUM); - zip->ecd.cd_total_entries = read_word (zip->ecd.raw + ZIPECENN); - zip->ecd.cd_size = read_dword(zip->ecd.raw + ZIPECSZ); - zip->ecd.cd_start_disk_offset = read_dword(zip->ecd.raw + ZIPEOFST); - zip->ecd.comment_length = read_word (zip->ecd.raw + ZIPECOML); - zip->ecd.comment = (const char *)(zip->ecd.raw + ZIPECOM); - return ZIPERR_NONE; + case 14: + throw ZipError::LZMA_UNSUPPORTED; // FIXME - LZMA format not yet supported } - - // Didn't find it; free this buffer and expand our search - free(buffer); - if(buflen < zip->length) - buflen *= 2; - else - return ZIPERR_BAD_SIGNATURE; } - return ZIPERR_OUT_OF_MEMORY; + catch(const ZipError&) + { + throw; + } } -/*------------------------------------------------- - get_compressed_data_offset - return the - offset of the compressed data --------------------------------------------------*/ -ZipHandler::zip_error - ZipHandler::get_compressed_data_offset(zip_file* zip, uInt64& offset) +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +uInt32 ZipHandler::ZipFile::getCompressedDataOffset() { - uInt32 read_length; - - // Make sure the file handle is open - if(zip->file == nullptr && !stream_open(zip->filename, &zip->file, zip->length)) - return ZIPERR_FILE_ERROR; - - // Now go read the fixed-sized part of the local file header - bool success = stream_read(zip->file, zip->buffer, zip->header.local_header_offset, - ZIPNAME, read_length); - if(!success || read_length != ZIPNAME) - return success ? ZIPERR_FILE_TRUNCATED : ZIPERR_FILE_ERROR; + // Read the fixed-sized part of the local file header + uInt32 read_length = 0; + bool success = readStream(myBuffer, myHeader.localHeaderOffset, 0x1e, read_length); + if(!success) + throw ZipError::FILE_ERROR; + else if(read_length != 0x1e) + throw ZipError::FILE_TRUNCATED; // Compute the final offset - offset = zip->header.local_header_offset + ZIPNAME; - offset += read_word(zip->buffer + ZIPFNLN); - offset += read_word(zip->buffer + ZIPXTRALN); - - return ZIPERR_NONE; + return myHeader.localHeaderOffset + 0x1e + + read_word(myBuffer.get() + 0x1a) + + read_word(myBuffer.get() + 0x1c); } -/*************************************************************************** - DECOMPRESSION INTERFACES -***************************************************************************/ - -/*------------------------------------------------- - decompress_data_type_0 - "decompress" - type 0 data (which is uncompressed) --------------------------------------------------*/ -ZipHandler::zip_error - ZipHandler::decompress_data_type_0(zip_file* zip, uInt64 offset, - void* buffer, uInt32 length) +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void ZipHandler::ZipFile::decompressDataType0( + uInt32 offset, BytePtr& out, uInt32 length) { - uInt32 read_length; - // The data is uncompressed; just read it - bool success = stream_read(zip->file, buffer, offset, - zip->header.compressed_length, read_length); + uInt32 read_length = 0; + bool success = readStream(out, offset, myHeader.compressedLength, read_length); if(!success) - return ZIPERR_FILE_ERROR; - else if(read_length != zip->header.compressed_length) - return ZIPERR_FILE_TRUNCATED; - else - return ZIPERR_NONE; + throw ZipError::FILE_ERROR; + else if(read_length != myHeader.compressedLength) + throw ZipError::FILE_TRUNCATED; } -/*------------------------------------------------- - decompress_data_type_8 - decompress - type 8 data (which is deflated) --------------------------------------------------*/ -ZipHandler::zip_error - ZipHandler::decompress_data_type_8(zip_file* zip, uInt64 offset, - void* buffer, uInt32 length) +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void ZipHandler::ZipFile::decompressDataType8( + uInt32 offset, BytePtr& out, uInt32 length) { - uInt32 input_remaining = zip->header.compressed_length; - uInt32 read_length; - z_stream stream; - int zerr; - -#if 0 - // TODO - check newer versions of ZIP, and determine why this specific - // version (0x14) is important - // Make sure we don't need a newer mechanism - if (zip->header.version_needed > 0x14) - return ZIPERR_UNSUPPORTED; -#endif + uInt32 input_remaining = myHeader.compressedLength; // Reset the stream - memset(&stream, 0, sizeof(stream)); - stream.next_out = (Bytef *)buffer; - stream.avail_out = length; + z_stream stream; + stream.zalloc = Z_NULL; + stream.zfree = Z_NULL; + stream.opaque = Z_NULL; + stream.avail_in = 0; + stream.next_out = reinterpret_cast(out.get()); + stream.avail_out = length; // Initialize the decompressor - zerr = inflateInit2(&stream, -MAX_WBITS); + int zerr = inflateInit2(&stream, -MAX_WBITS); if(zerr != Z_OK) - return ZIPERR_DECOMPRESS_ERROR; + throw ZipError::DECOMPRESS_ERROR; // Loop until we're done for(;;) { // Read in the next chunk of data - bool success = stream_read(zip->file, zip->buffer, offset, - std::min(input_remaining, (uInt32)sizeof(zip->buffer)), - read_length); + uInt32 read_length = 0; + bool success = readStream(myBuffer, offset, + std::min(input_remaining, uInt32(sizeof(myBuffer.get()))), read_length); if(!success) { inflateEnd(&stream); - return ZIPERR_FILE_ERROR; + throw ZipError::FILE_ERROR; } offset += read_length; @@ -622,11 +469,11 @@ ZipHandler::zip_error if(read_length == 0 && input_remaining > 0) { inflateEnd(&stream); - return ZIPERR_FILE_TRUNCATED; + throw ZipError::FILE_TRUNCATED; } // Fill out the input data - stream.next_in = zip->buffer; + stream.next_in = myBuffer.get(); stream.avail_in = read_length; input_remaining -= read_length; @@ -638,21 +485,46 @@ ZipHandler::zip_error zerr = inflate(&stream, Z_NO_FLUSH); if(zerr == Z_STREAM_END) break; - if(zerr != Z_OK) + else if(zerr != Z_OK) { inflateEnd(&stream); - return ZIPERR_DECOMPRESS_ERROR; + throw ZipError::DECOMPRESS_ERROR; } } // Finish decompression zerr = inflateEnd(&stream); if(zerr != Z_OK) - return ZIPERR_DECOMPRESS_ERROR; + throw ZipError::DECOMPRESS_ERROR; // If anything looks funny, report an error if(stream.avail_out > 0 || input_remaining > 0) - return ZIPERR_DECOMPRESS_ERROR; - - return ZIPERR_NONE; + throw ZipError::DECOMPRESS_ERROR; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ZipHandler::ZipHeader::ZipHeader() + : versionCreated(0), + versionNeeded(0), + bitFlag(0), + compression(0), + fileTime(0), + fileDate(0), + crc(0), + compressedLength(0), + uncompressedLength(0), + startDiskNumber(0), + localHeaderOffset(0) +{ +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +ZipHandler::ZipEcd::ZipEcd() + : diskNumber(0), + cdStartDiskNumber(0), + cdDiskEntries(0), + cdTotalEntries(0), + cdSize(0), + cdStartDiskOffset(0) +{ } diff --git a/src/common/ZipHandler.hxx b/src/common/ZipHandler.hxx index e1f669110..275ff9f7f 100644 --- a/src/common/ZipHandler.hxx +++ b/src/common/ZipHandler.hxx @@ -18,254 +18,231 @@ #ifndef ZIP_HANDLER_HXX #define ZIP_HANDLER_HXX +#include + #include "bspf.hxx" -/*************************************************************************** - - Copyright Aaron Giles - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - * Neither the name 'MAME' nor the names of its contributors may be - used to endorse or promote products derived from this software - without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY AARON GILES ''AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL AARON GILES BE LIABLE FOR ANY DIRECT, - INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - -***************************************************************************/ - -#define ZIP_DECOMPRESS_BUFSIZE 16384 - /** This class implements a thin wrapper around the zip file management code from the MAME project. - @author Wrapper class by Stephen Anthony, with main functionality - by Aaron Giles + @author Original code by Aaron Giles, ZipHandler wrapper class and heavy + modifications/refactoring by Stephen Anthony. */ class ZipHandler { public: ZipHandler(); - ~ZipHandler(); // Open ZIP file for processing + // An exception will be thrown on any errors void open(const string& filename); // The following form an iterator for processing the filenames in the ZIP file - void reset(); // Reset iterator to first file - bool hasNext(); // Answer whether there are more files present - string next(); // Get next file + void reset(); // Reset iterator to first file + bool hasNext() const; // Answer whether there are more files present + const string& next(); // Get next file // Decompress the currently selected file and return its length // An exception will be thrown on any errors uInt32 decompress(BytePtr& image); - // Answer the number of ROM files found in the archive - // Currently, this means files with extension a26/bin/rom - uInt16 romFiles() const { return myZip ? myZip->romfiles : 0; } + // Answer the number of ROM files (with a valid extension) found + uInt16 romFiles() const { return myZip ? myZip->myRomfiles : 0; } private: - // Replaces functionaity of various osd_xxxx functions - static bool stream_open(const char* filename, fstream** stream, uInt64& length); - static void stream_close(fstream** stream); - static bool stream_read(fstream* stream, void* buffer, uInt64 offset, - uInt32 length, uInt32& actual); - - /* Error types */ - enum zip_error + // Error types + enum class ZipError { - ZIPERR_NONE = 0, - ZIPERR_OUT_OF_MEMORY, - ZIPERR_FILE_ERROR, - ZIPERR_BAD_SIGNATURE, - ZIPERR_DECOMPRESS_ERROR, - ZIPERR_FILE_TRUNCATED, - ZIPERR_FILE_CORRUPT, - ZIPERR_UNSUPPORTED, - ZIPERR_BUFFER_TOO_SMALL + NONE = 0, + OUT_OF_MEMORY, + FILE_ERROR, + BAD_SIGNATURE, + DECOMPRESS_ERROR, + FILE_TRUNCATED, + FILE_CORRUPT, + UNSUPPORTED, + LZMA_UNSUPPORTED, + BUFFER_TOO_SMALL }; - /* contains extracted file header information */ - struct zip_file_header + // Contains extracted file header information + struct ZipHeader { - uInt32 signature; /* central file header signature */ - uInt16 version_created; /* version made by */ - uInt16 version_needed; /* version needed to extract */ - uInt16 bit_flag; /* general purpose bit flag */ - uInt16 compression; /* compression method */ - uInt16 file_time; /* last mod file time */ - uInt16 file_date; /* last mod file date */ - uInt32 crc; /* crc-32 */ - uInt32 compressed_length; /* compressed size */ - uInt32 uncompressed_length; /* uncompressed size */ - uInt16 filename_length; /* filename length */ - uInt16 extra_field_length; /* extra field length */ - uInt16 file_comment_length; /* file comment length */ - uInt16 start_disk_number; /* disk number start */ - uInt16 internal_attributes; /* internal file attributes */ - uInt32 external_attributes; /* external file attributes */ - uInt32 local_header_offset; /* relative offset of local header */ - const char* filename; /* filename */ + uInt16 versionCreated; // version made by + uInt16 versionNeeded; // version needed to extract + uInt16 bitFlag; // general purpose bit flag + uInt16 compression; // compression method + uInt16 fileTime; // last mod file time + uInt16 fileDate; // last mod file date + uInt32 crc; // crc-32 + uInt64 compressedLength; // compressed size + uInt64 uncompressedLength; // uncompressed size + uInt32 startDiskNumber; // disk number start + uInt64 localHeaderOffset; // relative offset of local header + string filename; // filename - uInt8* raw; /* pointer to the raw data */ - uInt32 rawlength; /* length of the raw data */ - uInt8 saved; /* saved byte from after filename */ + /** Constructor */ + ZipHeader(); }; - /* contains extracted end of central directory information */ - struct zip_ecd + // Contains extracted end of central directory information + struct ZipEcd { - uInt32 signature; /* end of central dir signature */ - uInt16 disk_number; /* number of this disk */ - uInt16 cd_start_disk_number; /* number of the disk with the start of the central directory */ - uInt16 cd_disk_entries; /* total number of entries in the central directory on this disk */ - uInt16 cd_total_entries; /* total number of entries in the central directory */ - uInt32 cd_size; /* size of the central directory */ - uInt32 cd_start_disk_offset; /* offset of start of central directory with respect to the starting disk number */ - uInt16 comment_length; /* .ZIP file comment length */ - const char* comment; /* .ZIP file comment */ + uInt32 diskNumber; // number of this disk + uInt32 cdStartDiskNumber; // number of the disk with the start of the central directory + uInt64 cdDiskEntries; // total number of entries in the central directory on this disk + uInt64 cdTotalEntries; // total number of entries in the central directory + uInt64 cdSize; // size of the central directory + uInt64 cdStartDiskOffset; // offset of start of central directory with respect to the starting disk number - uInt8* raw; /* pointer to the raw data */ - uInt32 rawlength; /* length of the raw data */ + /** Constructor */ + ZipEcd(); }; - /* describes an open ZIP file */ - struct zip_file + // Describes an open ZIP file + struct ZipFile { - const char* filename; /* copy of ZIP filename (for caching) */ - fstream* file; /* C++ fstream file handle */ - uInt64 length; /* length of zip file */ - uInt16 romfiles; /* number of ROM files in central directory */ + string myFilename; // copy of ZIP filename (for caching) + fstream myStream; // C++ fstream file handle + uInt32 myLength; // length of zip file + uInt16 myRomfiles; // number of ROM files in central directory - zip_ecd ecd; /* end of central directory */ + ZipEcd myEcd; // end of central directory - uInt8* cd; /* central directory raw data */ - uInt32 cd_pos; /* position in central directory */ - zip_file_header header; /* current file header */ + BytePtr myCd; // central directory raw data + uInt64 myCdPos; // position in central directory + ZipHeader myHeader; // current file header - uInt8 buffer[ZIP_DECOMPRESS_BUFSIZE]; /* buffer for decompression */ + BytePtr myBuffer; // buffer for decompression + + /** Constructor */ + explicit ZipFile(const string& filename); + + /** Open the file and set up the internal stream buffer*/ + bool open(); + + /** Read the ZIP contents from the internal stream buffer */ + void initialize(); + + /** Close previously opened internal stream buffer */ + void close(); + + /** Read the ECD data */ + void readEcd(); + + /** Read data from stream */ + bool readStream(BytePtr& out, uInt32 offset, uInt32 length, uInt32& actual); + + /** Return the next entry in the ZIP file */ + const ZipHeader* const nextFile(); + + /** Decompress the most recently found file in the ZIP into target buffer */ + void decompress(BytePtr& out, uInt32 length); + + /** Return the offset of the compressed data */ + uInt32 getCompressedDataOffset(); + + /** Decompress type 0 data (which is uncompressed) */ + void decompressDataType0(uInt32 offset, BytePtr& out, uInt32 length); + + /** Decompress type 8 data (which is deflated) */ + void decompressDataType8(uInt32 offset, BytePtr& out, uInt32 length); + }; + using ZipFilePtr = unique_ptr; + + class EcdReader + { + public: + explicit EcdReader(const uInt8* const b) : myBuf(b) { } + + uInt32 signature() const { return read_dword(myBuf + 0x00); } + uInt16 thisDiskNo() const { return read_word(myBuf + 0x04); } + uInt16 dirStartDisk() const { return read_word(myBuf + 0x06); } + uInt16 dirDiskEntries() const { return read_word(myBuf + 0x08); } + uInt16 dirTotalEntries() const { return read_word(myBuf + 0x0a); } + uInt32 dirSize() const { return read_dword(myBuf + 0x0c); } + uInt32 dirOffset() const { return read_dword(myBuf + 0x10); } + uInt16 commentLength() const { return read_word(myBuf + 0x14); } + string comment() const { return read_string(myBuf + 0x16, commentLength()); } + + bool signatureCorrect() const { return signature() == 0x06054b50; } + + size_t totalLength() const { return minimumLength() + commentLength(); } + static size_t minimumLength() { return 0x16; } + + private: + const uInt8* const myBuf; }; - enum { - /* number of open files to cache */ - ZIP_CACHE_SIZE = 8, + class CentralDirEntryReader + { + public: + explicit CentralDirEntryReader(const uInt8* const b) : myBuf(b) { } - /* offsets in end of central directory structure */ - ZIPESIG = 0x00, - ZIPEDSK = 0x04, - ZIPECEN = 0x06, - ZIPENUM = 0x08, - ZIPECENN = 0x0a, - ZIPECSZ = 0x0c, - ZIPEOFST = 0x10, - ZIPECOML = 0x14, - ZIPECOM = 0x16, + uInt32 signature() const { return read_dword(myBuf + 0x00); } + uInt8 versionCreated() const { return myBuf[0x04]; } + uInt8 osCreated() const { return myBuf[0x05]; } + uInt8 versionNeeded() const { return myBuf[0x06]; } + uInt8 osNeeded() const { return myBuf[0x07]; } + uInt16 generalFlag() const { return read_word(myBuf + 0x08); } + uInt16 compressionMethod() const { return read_word(myBuf + 0x0a); } + uInt16 modifiedTime() const { return read_word(myBuf + 0x0c); } + uInt16 modifiedDate() const { return read_word(myBuf + 0x0e); } + uInt32 crc32() const { return read_dword(myBuf + 0x10); } + uInt32 compressedSize() const { return read_dword(myBuf + 0x14); } + uInt32 uncompressedSize() const { return read_dword(myBuf + 0x18); } + uInt16 filenameLength() const { return read_word(myBuf + 0x1c); } + uInt16 extraFieldLength() const { return read_word(myBuf + 0x1e); } + uInt16 fileCommentLength() const { return read_word(myBuf + 0x20); } + uInt16 startDisk() const { return read_word(myBuf + 0x22); } + uInt16 intFileAttr() const { return read_word(myBuf + 0x24); } + uInt32 extFileAttr() const { return read_dword(myBuf + 0x26); } + uInt32 headerOffset() const { return read_dword(myBuf + 0x2a); } + string filename() const { return read_string(myBuf + 0x2e, filenameLength()); } + string fileComment() const { return read_string(myBuf + 0x2e + filenameLength() + extraFieldLength(), fileCommentLength()); } - /* offsets in central directory entry structure */ - ZIPCENSIG = 0x00, - ZIPCVER = 0x04, - ZIPCOS = 0x05, - ZIPCVXT = 0x06, - ZIPCEXOS = 0x07, - ZIPCFLG = 0x08, - ZIPCMTHD = 0x0a, - ZIPCTIM = 0x0c, - ZIPCDAT = 0x0e, - ZIPCCRC = 0x10, - ZIPCSIZ = 0x14, - ZIPCUNC = 0x18, - ZIPCFNL = 0x1c, - ZIPCXTL = 0x1e, - ZIPCCML = 0x20, - ZIPDSK = 0x22, - ZIPINT = 0x24, - ZIPEXT = 0x26, - ZIPOFST = 0x2a, - ZIPCFN = 0x2e, + bool signatureCorrect() const { return signature() == 0x02014b50; } - /* offsets in local file header structure */ - ZIPLOCSIG = 0x00, - ZIPVER = 0x04, - ZIPGENFLG = 0x06, - ZIPMTHD = 0x08, - ZIPTIME = 0x0a, - ZIPDATE = 0x0c, - ZIPCRC = 0x0e, - ZIPSIZE = 0x12, - ZIPUNCMP = 0x16, - ZIPFNLN = 0x1a, - ZIPXTRALN = 0x1c, - ZIPNAME = 0x1e + size_t totalLength() const { return minimumLength() + filenameLength() + extraFieldLength() + fileCommentLength(); } + static size_t minimumLength() { return 0x2e; } + + private: + const uInt8* const myBuf; }; private: - /* ----- ZIP file access ----- */ + /** Get message for given ZipError enumeration */ + string errorMessage(ZipError err) const; - /* open a ZIP file and parse its central directory */ - zip_error zip_file_open(const char* filename, zip_file** zip); + /** Search cache for given ZIP file */ + ZipFilePtr findCached(const string& filename); - /* close a ZIP file (may actually be left open due to caching) */ - void zip_file_close(zip_file* zip); + /** Close a ZIP file and add it to the cache */ + void addToCache(); - /* clear out all open ZIP files from the cache */ - void zip_file_cache_clear(); - - - /* ----- contained file access ----- */ - - /* find the next file in the ZIP */ - const zip_file_header* zip_file_next_file(zip_file* zip); - - /* decompress the most recently found file in the ZIP */ - zip_error zip_file_decompress(zip_file* zip, void* buffer, uInt32 length); - - inline static uInt16 read_word(uInt8* buf) + /** Convenience functions to read specific datatypes */ + static inline uInt16 read_word(const uInt8* const buf) { uInt16 p0 = uInt16(buf[0]), p1 = uInt16(buf[1]); return (p1 << 8) | p0; } - - inline static uInt32 read_dword(uInt8* buf) + static inline uInt32 read_dword(const uInt8* const buf) { return (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; } - - /* cache management */ - static void free_zip_file(zip_file* zip); - - /* ZIP file parsing */ - static zip_error read_ecd(zip_file* zip); - static zip_error get_compressed_data_offset(zip_file* zip, uInt64& offset); - - /* decompression interfaces */ - static zip_error decompress_data_type_0(zip_file* zip, uInt64 offset, - void* buffer, uInt32 length); - static zip_error decompress_data_type_8(zip_file* zip, uInt64 offset, - void* buffer, uInt32 length); + static inline string read_string(const uInt8* const buf, size_t len = string::npos) + { + return (buf == nullptr || *buf == '\0') ? "" : + string(reinterpret_cast(buf), len); + } private: - zip_file* myZip; - zip_file* myZipCache[ZIP_CACHE_SIZE]; + static constexpr uInt32 DECOMPRESS_BUFSIZE = 16384; + static constexpr uInt32 CACHE_SIZE = 8; // number of open files to cache + + ZipFilePtr myZip; + std::array myZipCache; private: // Following constructors and assignment operators not supported From d04dc49c3d1ed3d675ba5bfe448fec94ee811615 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 4 Sep 2018 17:23:39 -0230 Subject: [PATCH 104/126] Fix signed/unsigned warning. --- src/common/ZipHandler.cxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/ZipHandler.cxx b/src/common/ZipHandler.cxx index ab8ef1773..049eb86d3 100644 --- a/src/common/ZipHandler.cxx +++ b/src/common/ZipHandler.cxx @@ -289,8 +289,8 @@ void ZipHandler::ZipFile::readEcd() throw ZipError::FILE_ERROR; // Find the ECD signature - size_t offset; - for(offset = buflen - EcdReader::minimumLength(); offset >= 0; --offset) + Int32 offset; + for(offset = Int32(buflen - EcdReader::minimumLength()); offset >= 0; --offset) { EcdReader reader(buffer.get() + offset); if(reader.signatureCorrect() && ((reader.totalLength() + offset) <= buflen)) From cacb1e334110e0eb341db9b724994ab640ffc883 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 5 Sep 2018 11:14:28 -0230 Subject: [PATCH 105/126] Make ZipHandler 64-bit throughout. - although we will probably never deal with 4GB+ files, the underlying stream-reading code is 64-bit anyway - fixes warnings in 32 <-> 64 bit conversions in OSX. --- src/common/FSNodeZIP.cxx | 2 +- src/common/ZipHandler.cxx | 40 +++++++++++++++++++-------------------- src/common/ZipHandler.hxx | 14 +++++++------- 3 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/common/FSNodeZIP.cxx b/src/common/FSNodeZIP.cxx index b61799d9f..7a171e68a 100644 --- a/src/common/FSNodeZIP.cxx +++ b/src/common/FSNodeZIP.cxx @@ -193,7 +193,7 @@ uInt32 FilesystemNodeZIP::read(BytePtr& image) const while(myZipHandler->hasNext() && !found) found = myZipHandler->next() == _virtualPath; - return found ? myZipHandler->decompress(image) : 0; + return found ? uInt32(myZipHandler->decompress(image)) : 0; // TODO: 64bit } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/common/ZipHandler.cxx b/src/common/ZipHandler.cxx index 049eb86d3..72e345d98 100644 --- a/src/common/ZipHandler.cxx +++ b/src/common/ZipHandler.cxx @@ -103,11 +103,11 @@ const string& ZipHandler::next() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 ZipHandler::decompress(BytePtr& image) +uInt64 ZipHandler::decompress(BytePtr& image) { if(myZip && myZip->myHeader.uncompressedLength > 0) { - uInt32 length = myZip->myHeader.uncompressedLength; + uInt64 length = myZip->myHeader.uncompressedLength; image = make_unique(length); if(image == nullptr) throw runtime_error(errorMessage(ZipError::OUT_OF_MEMORY)); @@ -243,7 +243,7 @@ void ZipHandler::ZipFile::initialize() throw ZipError::OUT_OF_MEMORY; // Read the central directory - uInt32 read_length = 0; + uInt64 read_length = 0; bool success = readStream(myCd, myEcd.cdStartDiskOffset, myEcd.cdSize, read_length); if(!success) throw ZipError::FILE_ERROR; @@ -266,13 +266,13 @@ void ZipHandler::ZipFile::close() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void ZipHandler::ZipFile::readEcd() { - uInt32 buflen = 1024; + uInt64 buflen = 1024; BytePtr buffer; // We may need multiple tries while(buflen < 65536) { - uInt32 read_length; + uInt64 read_length; // Max out the buf length at the size of the file if(buflen > myLength) @@ -321,15 +321,15 @@ void ZipHandler::ZipFile::readEcd() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool ZipHandler::ZipFile::readStream(BytePtr& out, uInt32 offset, - uInt32 length, uInt32& actual) +bool ZipHandler::ZipFile::readStream(BytePtr& out, uInt64 offset, + uInt64 length, uInt64& actual) { try { myStream.seekg(offset); myStream.read(reinterpret_cast(out.get()), length); - actual = uInt32(myStream.gcount()); + actual = myStream.gcount(); return true; } catch(...) @@ -365,7 +365,7 @@ const ZipHandler::ZipHeader* const ZipHandler::ZipFile::nextFile() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void ZipHandler::ZipFile::decompress(BytePtr& out, uInt32 length) +void ZipHandler::ZipFile::decompress(BytePtr& out, uInt64 length) { // If we don't have enough buffer, error if(length < myHeader.uncompressedLength) @@ -378,7 +378,7 @@ void ZipHandler::ZipFile::decompress(BytePtr& out, uInt32 length) try { // Get the compressed data offset - uInt32 offset = getCompressedDataOffset(); + uInt64 offset = getCompressedDataOffset(); // Handle compression types switch(myHeader.compression) @@ -402,10 +402,10 @@ void ZipHandler::ZipFile::decompress(BytePtr& out, uInt32 length) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -uInt32 ZipHandler::ZipFile::getCompressedDataOffset() +uInt64 ZipHandler::ZipFile::getCompressedDataOffset() { // Read the fixed-sized part of the local file header - uInt32 read_length = 0; + uInt64 read_length = 0; bool success = readStream(myBuffer, myHeader.localHeaderOffset, 0x1e, read_length); if(!success) throw ZipError::FILE_ERROR; @@ -420,10 +420,10 @@ uInt32 ZipHandler::ZipFile::getCompressedDataOffset() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void ZipHandler::ZipFile::decompressDataType0( - uInt32 offset, BytePtr& out, uInt32 length) + uInt64 offset, BytePtr& out, uInt64 length) { // The data is uncompressed; just read it - uInt32 read_length = 0; + uInt64 read_length = 0; bool success = readStream(out, offset, myHeader.compressedLength, read_length); if(!success) throw ZipError::FILE_ERROR; @@ -433,9 +433,9 @@ void ZipHandler::ZipFile::decompressDataType0( // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void ZipHandler::ZipFile::decompressDataType8( - uInt32 offset, BytePtr& out, uInt32 length) + uInt64 offset, BytePtr& out, uInt64 length) { - uInt32 input_remaining = myHeader.compressedLength; + uInt64 input_remaining = myHeader.compressedLength; // Reset the stream z_stream stream; @@ -444,7 +444,7 @@ void ZipHandler::ZipFile::decompressDataType8( stream.opaque = Z_NULL; stream.avail_in = 0; stream.next_out = reinterpret_cast(out.get()); - stream.avail_out = length; + stream.avail_out = uInt32(length); // TODO - use zip64 // Initialize the decompressor int zerr = inflateInit2(&stream, -MAX_WBITS); @@ -455,9 +455,9 @@ void ZipHandler::ZipFile::decompressDataType8( for(;;) { // Read in the next chunk of data - uInt32 read_length = 0; + uInt64 read_length = 0; bool success = readStream(myBuffer, offset, - std::min(input_remaining, uInt32(sizeof(myBuffer.get()))), read_length); + std::min(input_remaining, uInt64(sizeof(myBuffer.get()))), read_length); if(!success) { inflateEnd(&stream); @@ -474,7 +474,7 @@ void ZipHandler::ZipFile::decompressDataType8( // Fill out the input data stream.next_in = myBuffer.get(); - stream.avail_in = read_length; + stream.avail_in = uInt32(read_length); // TODO - use zip64 input_remaining -= read_length; // Add a dummy byte at end of compressed data diff --git a/src/common/ZipHandler.hxx b/src/common/ZipHandler.hxx index 275ff9f7f..7ba453c2d 100644 --- a/src/common/ZipHandler.hxx +++ b/src/common/ZipHandler.hxx @@ -45,7 +45,7 @@ class ZipHandler // Decompress the currently selected file and return its length // An exception will be thrown on any errors - uInt32 decompress(BytePtr& image); + uInt64 decompress(BytePtr& image); // Answer the number of ROM files (with a valid extension) found uInt16 romFiles() const { return myZip ? myZip->myRomfiles : 0; } @@ -105,7 +105,7 @@ class ZipHandler { string myFilename; // copy of ZIP filename (for caching) fstream myStream; // C++ fstream file handle - uInt32 myLength; // length of zip file + uInt64 myLength; // length of zip file uInt16 myRomfiles; // number of ROM files in central directory ZipEcd myEcd; // end of central directory @@ -132,22 +132,22 @@ class ZipHandler void readEcd(); /** Read data from stream */ - bool readStream(BytePtr& out, uInt32 offset, uInt32 length, uInt32& actual); + bool readStream(BytePtr& out, uInt64 offset, uInt64 length, uInt64& actual); /** Return the next entry in the ZIP file */ const ZipHeader* const nextFile(); /** Decompress the most recently found file in the ZIP into target buffer */ - void decompress(BytePtr& out, uInt32 length); + void decompress(BytePtr& out, uInt64 length); /** Return the offset of the compressed data */ - uInt32 getCompressedDataOffset(); + uInt64 getCompressedDataOffset(); /** Decompress type 0 data (which is uncompressed) */ - void decompressDataType0(uInt32 offset, BytePtr& out, uInt32 length); + void decompressDataType0(uInt64 offset, BytePtr& out, uInt64 length); /** Decompress type 8 data (which is deflated) */ - void decompressDataType8(uInt32 offset, BytePtr& out, uInt32 length); + void decompressDataType8(uInt64 offset, BytePtr& out, uInt64 length); }; using ZipFilePtr = unique_ptr; From ee643e818b482cd18d9112e722af08447de59428 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 5 Sep 2018 12:21:55 -0230 Subject: [PATCH 106/126] Final refactoring of ZipHandler class. --- src/common/ZipHandler.cxx | 20 ++++- src/common/ZipHandler.hxx | 179 ++++++++++++++++++++++++++------------ 2 files changed, 138 insertions(+), 61 deletions(-) diff --git a/src/common/ZipHandler.cxx b/src/common/ZipHandler.cxx index 72e345d98..ca6f9977e 100644 --- a/src/common/ZipHandler.cxx +++ b/src/common/ZipHandler.cxx @@ -393,6 +393,9 @@ void ZipHandler::ZipFile::decompress(BytePtr& out, uInt64 length) case 14: throw ZipError::LZMA_UNSUPPORTED; // FIXME - LZMA format not yet supported + + default: + throw ZipError::UNSUPPORTED; } } catch(const ZipError&) @@ -404,18 +407,27 @@ void ZipHandler::ZipFile::decompress(BytePtr& out, uInt64 length) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt64 ZipHandler::ZipFile::getCompressedDataOffset() { + // Don't support a number of features + GeneralFlagReader const flags(myHeader.bitFlag); + if(myHeader.startDiskNumber != myEcd.diskNumber || + myHeader.versionNeeded > 63 || flags.patchData() || + flags.encrypted() || flags.strongEncryption()) + throw ZipError::UNSUPPORTED; + // Read the fixed-sized part of the local file header uInt64 read_length = 0; bool success = readStream(myBuffer, myHeader.localHeaderOffset, 0x1e, read_length); if(!success) throw ZipError::FILE_ERROR; - else if(read_length != 0x1e) + else if(read_length != LocalFileHeaderReader::minimumLength()) throw ZipError::FILE_TRUNCATED; // Compute the final offset - return myHeader.localHeaderOffset + 0x1e + - read_word(myBuffer.get() + 0x1a) + - read_word(myBuffer.get() + 0x1c); + LocalFileHeaderReader reader(&myBuffer[0]); + if(!reader.signatureCorrect()) + throw ZipError::BAD_SIGNATURE; + + return myHeader.localHeaderOffset + reader.totalLength(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/common/ZipHandler.hxx b/src/common/ZipHandler.hxx index 7ba453c2d..c07ad61b2 100644 --- a/src/common/ZipHandler.hxx +++ b/src/common/ZipHandler.hxx @@ -151,64 +151,145 @@ class ZipHandler }; using ZipFilePtr = unique_ptr; - class EcdReader + /** Classes to parse the ZIP metadata in an abstracted way */ + class ReaderBase { - public: - explicit EcdReader(const uInt8* const b) : myBuf(b) { } + protected: + explicit ReaderBase(const uInt8* const b) : myBuf(b) { } - uInt32 signature() const { return read_dword(myBuf + 0x00); } - uInt16 thisDiskNo() const { return read_word(myBuf + 0x04); } - uInt16 dirStartDisk() const { return read_word(myBuf + 0x06); } - uInt16 dirDiskEntries() const { return read_word(myBuf + 0x08); } - uInt16 dirTotalEntries() const { return read_word(myBuf + 0x0a); } - uInt32 dirSize() const { return read_dword(myBuf + 0x0c); } - uInt32 dirOffset() const { return read_dword(myBuf + 0x10); } - uInt16 commentLength() const { return read_word(myBuf + 0x14); } - string comment() const { return read_string(myBuf + 0x16, commentLength()); } - - bool signatureCorrect() const { return signature() == 0x06054b50; } - - size_t totalLength() const { return minimumLength() + commentLength(); } - static size_t minimumLength() { return 0x16; } + uInt8 read_byte(size_t offs) const + { + return myBuf[offs]; + } + uInt16 read_word(size_t offs) const + { + return (uInt16(myBuf[offs + 1]) << 8) | + (uInt16(myBuf[offs + 0]) << 0); + } + uInt32 read_dword(std::size_t offs) const + { + return (uInt32(myBuf[offs + 3]) << 24) | + (uInt32(myBuf[offs + 2]) << 16) | + (uInt32(myBuf[offs + 1]) << 8) | + (uInt32(myBuf[offs + 0]) << 0); + } + uInt64 read_qword(size_t offs) const + { + return (uInt64(myBuf[offs + 7]) << 56) | + (uInt64(myBuf[offs + 6]) << 48) | + (uInt64(myBuf[offs + 5]) << 40) | + (uInt64(myBuf[offs + 4]) << 32) | + (uInt64(myBuf[offs + 3]) << 24) | + (uInt64(myBuf[offs + 2]) << 16) | + (uInt64(myBuf[offs + 1]) << 8) | + (uInt64(myBuf[offs + 0]) << 0); + } + string read_string(size_t offs, size_t len = string::npos) const + { + return string(reinterpret_cast(myBuf + offs), len); + } private: const uInt8* const myBuf; }; - class CentralDirEntryReader + class LocalFileHeaderReader : public ReaderBase { public: - explicit CentralDirEntryReader(const uInt8* const b) : myBuf(b) { } + explicit LocalFileHeaderReader(const uInt8* const b) : ReaderBase(b) { } - uInt32 signature() const { return read_dword(myBuf + 0x00); } - uInt8 versionCreated() const { return myBuf[0x04]; } - uInt8 osCreated() const { return myBuf[0x05]; } - uInt8 versionNeeded() const { return myBuf[0x06]; } - uInt8 osNeeded() const { return myBuf[0x07]; } - uInt16 generalFlag() const { return read_word(myBuf + 0x08); } - uInt16 compressionMethod() const { return read_word(myBuf + 0x0a); } - uInt16 modifiedTime() const { return read_word(myBuf + 0x0c); } - uInt16 modifiedDate() const { return read_word(myBuf + 0x0e); } - uInt32 crc32() const { return read_dword(myBuf + 0x10); } - uInt32 compressedSize() const { return read_dword(myBuf + 0x14); } - uInt32 uncompressedSize() const { return read_dword(myBuf + 0x18); } - uInt16 filenameLength() const { return read_word(myBuf + 0x1c); } - uInt16 extraFieldLength() const { return read_word(myBuf + 0x1e); } - uInt16 fileCommentLength() const { return read_word(myBuf + 0x20); } - uInt16 startDisk() const { return read_word(myBuf + 0x22); } - uInt16 intFileAttr() const { return read_word(myBuf + 0x24); } - uInt32 extFileAttr() const { return read_dword(myBuf + 0x26); } - uInt32 headerOffset() const { return read_dword(myBuf + 0x2a); } - string filename() const { return read_string(myBuf + 0x2e, filenameLength()); } - string fileComment() const { return read_string(myBuf + 0x2e + filenameLength() + extraFieldLength(), fileCommentLength()); } + uInt32 signature() const { return read_dword(0x00); } + uInt8 versionNeeded() const { return read_byte(0x04); } + uInt8 osNeeded() const { return read_byte(0x05); } + uInt16 generalFlag() const { return read_word(0x06); } + uInt16 compressionMethod() const { return read_word(0x08); } + uInt16 modifiedTime() const { return read_word(0x0a); } + uInt16 modifiedDate() const { return read_word(0x0c); } + uInt32 crc32() const { return read_dword(0x0e); } + uInt32 compressedSize() const { return read_dword(0x12); } + uInt32 uncompressedSize() const { return read_dword(0x16); } + uInt16 filenameLength() const { return read_word(0x1a); } + uInt16 extraFieldLength() const { return read_word(0x1c); } + string filename() const { return read_string(0x1e, filenameLength()); } + + bool signatureCorrect() const { return signature() == 0x04034b50; } + + size_t totalLength() const { return minimumLength() + filenameLength() + extraFieldLength(); } + static size_t minimumLength() { return 0x1e; } + }; + + class CentralDirEntryReader : public ReaderBase + { + public: + explicit CentralDirEntryReader(const uInt8* const b) : ReaderBase(b) { } + + uInt32 signature() const { return read_dword(0x00); } + uInt8 versionCreated() const { return read_byte(0x04); } + uInt8 osCreated() const { return read_byte(0x05); } + uInt8 versionNeeded() const { return read_byte(0x06); } + uInt8 osNeeded() const { return read_byte(0x07); } + uInt16 generalFlag() const { return read_word(0x08); } + uInt16 compressionMethod() const { return read_word(0x0a); } + uInt16 modifiedTime() const { return read_word(0x0c); } + uInt16 modifiedDate() const { return read_word(0x0e); } + uInt32 crc32() const { return read_dword(0x10); } + uInt32 compressedSize() const { return read_dword(0x14); } + uInt32 uncompressedSize() const { return read_dword(0x18); } + uInt16 filenameLength() const { return read_word(0x1c); } + uInt16 extraFieldLength() const { return read_word(0x1e); } + uInt16 fileCommentLength() const { return read_word(0x20); } + uInt16 startDisk() const { return read_word(0x22); } + uInt16 intFileAttr() const { return read_word(0x24); } + uInt32 extFileAttr() const { return read_dword(0x26); } + uInt32 headerOffset() const { return read_dword(0x2a); } + string filename() const { return read_string(0x2e, filenameLength()); } + string fileComment() const { return read_string(0x2e + filenameLength() + extraFieldLength(), fileCommentLength()); } bool signatureCorrect() const { return signature() == 0x02014b50; } size_t totalLength() const { return minimumLength() + filenameLength() + extraFieldLength() + fileCommentLength(); } static size_t minimumLength() { return 0x2e; } + }; + + class EcdReader : public ReaderBase + { + public: + explicit EcdReader(const uInt8* const b) : ReaderBase(b) { } + + uInt32 signature() const { return read_dword(0x00); } + uInt16 thisDiskNo() const { return read_word(0x04); } + uInt16 dirStartDisk() const { return read_word(0x06); } + uInt16 dirDiskEntries() const { return read_word(0x08); } + uInt16 dirTotalEntries() const { return read_word(0x0a); } + uInt32 dirSize() const { return read_dword(0x0c); } + uInt32 dirOffset() const { return read_dword(0x10); } + uInt16 commentLength() const { return read_word(0x14); } + string comment() const { return read_string(0x16, commentLength()); } + + bool signatureCorrect() const { return signature() == 0x06054b50; } + + size_t totalLength() const { return minimumLength() + commentLength(); } + static size_t minimumLength() { return 0x16; } + }; + + class GeneralFlagReader + { + public: + explicit GeneralFlagReader(uInt16 val) : myValue(val) { } + + bool encrypted() const { return bool(myValue & 0x0001); } + bool implode8kDict() const { return bool(myValue & 0x0002); } + bool implode3Trees() const { return bool(myValue & 0x0004); } + uInt32 deflateOption() const { return uInt32((myValue >> 1) & 0x0003); } + bool lzmaEosMark() const { return bool(myValue & 0x0002); } + bool useDescriptor() const { return bool(myValue & 0x0008); } + bool patchData() const { return bool(myValue & 0x0020); } + bool strongEncryption() const { return bool(myValue & 0x0040); } + bool utf8Encoding() const { return bool(myValue & 0x0800); } + bool directoryEncryption() const { return bool(myValue & 0x2000); } private: - const uInt8* const myBuf; + uInt16 myValue; }; private: @@ -221,22 +302,6 @@ class ZipHandler /** Close a ZIP file and add it to the cache */ void addToCache(); - /** Convenience functions to read specific datatypes */ - static inline uInt16 read_word(const uInt8* const buf) - { - uInt16 p0 = uInt16(buf[0]), p1 = uInt16(buf[1]); - return (p1 << 8) | p0; - } - static inline uInt32 read_dword(const uInt8* const buf) - { - return (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0]; - } - static inline string read_string(const uInt8* const buf, size_t len = string::npos) - { - return (buf == nullptr || *buf == '\0') ? "" : - string(reinterpret_cast(buf), len); - } - private: static constexpr uInt32 DECOMPRESS_BUFSIZE = 16384; static constexpr uInt32 CACHE_SIZE = 8; // number of open files to cache From b4dc729559bc79b6b00b8d2d775ac40ed393ecf6 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 5 Sep 2018 12:48:11 -0230 Subject: [PATCH 107/126] Added 'Arkyology' prototype ROM to properties database. --- Changes.txt | 2 ++ src/emucore/CartF8.cxx | 3 ++- src/emucore/DefProps.hxx | 4 +++- src/emucore/stella.pro | 13 +++++++++++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Changes.txt b/Changes.txt index 8114512a8..c90164f26 100644 --- a/Changes.txt +++ b/Changes.txt @@ -92,6 +92,8 @@ * Updated PAL palette. + * Added recently released 'Arkyology' prototype ROM to the database. + * For UNIX systems: in the ROM launcher, when using symlinks use the symlink pathname instead of the underlying filesystem pathname. diff --git a/src/emucore/CartF8.cxx b/src/emucore/CartF8.cxx index b0bf77e9b..1b2cd27e5 100644 --- a/src/emucore/CartF8.cxx +++ b/src/emucore/CartF8.cxx @@ -36,7 +36,8 @@ CartridgeF8::CartridgeF8(const BytePtr& image, uInt32 size, const string& md5, md5 == "75ee371ccfc4f43e7d9b8f24e1266b55" || // Snow White md5 == "74c8a6f20f8adaa7e05183f796eda796" || // Tricade Demo md5 == "9905f9f4706223dadee84f6867ede8e3" || // Challenge - md5 == "3c7a7b3a0a7e6319b2fa0f923ef6c9af") // Racer Prototype + md5 == "3c7a7b3a0a7e6319b2fa0f923ef6c9af" || // Racer Prototype + md5 == "2434102f30eeb47792cf0825e368229b") // Arkyology ? 0 : 1; } diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index c5811a0a8..c6ad40397 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -25,7 +25,7 @@ regenerated and the application recompiled. */ -#define DEF_PROPS_SIZE 3316 +#define DEF_PROPS_SIZE 3318 static const char* const DefProps[DEF_PROPS_SIZE][21] = { { "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -481,6 +481,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = { { "23fad5a125bcd4463701c8ad8a0043a9", "CCE", "C-840", "Stone Age (1983) (CCE)", "Uses the Joystick Controllers (swapped)", "", "", "", "A", "A", "", "YES", "", "", "", "", "", "", "220", "YES", "" }, { "240bfbac5163af4df5ae713985386f92", "Activision, Steve Cartwright", "AX-022", "Seaquest (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2432f33fd278dea5fe6ae94073627fcc", "CBS Electronics, Tom DiDomenico", "4L2477, 4L2482, 4L2485, 4L4171", "Blueprint (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2434102f30eeb47792cf0825e368229b", "Sparrow - Enter-Tech, Paul Walters, Rick Harris, George Hefner, Barbara Ultis", "", "Arkyology (1983) (Sparrow) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "24385ba7f5109fbe76aadc0a375de573", "CCE", "", "Xevious (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "2447e17a4e18e6b609de498fe4ab52ba", "CCE", "", "Super Futebol (CCE)", "AKA RealSports Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "244c6de27faff527886fc7699a41c3be", "", "", "Matt Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1949,6 +1950,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][21] = { { "939ce554f5c0e74cc6e4e62810ec2111", "ZiMAG - Emag - Vidco", "711-111 - GN-020", "Dishaster (1983) (ZiMAG)", "AKA Dancing Plate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "93acd5020ae8eb5673601e2edecbc158", "Chris Cracknell", "", "Video Time Machine (Chris Cracknell)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "93b9229fc0ea4fb959d604f83f8f603c", "Thomas Jentzsch", "", "Amidar DS (Fast Enemies) (2003) (TJ) (Hack)", "Hack of Amidar", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "93c4b910f7649b3e998bb6d8527c6f4a", "Sparrow - Enter-Tech, Paul Walters, Rick Harris, George Hefner, Barbara Ultis", "", "Arkyology (1983) (Sparrow) (Prototype) [fixed]", "Fix for un-initialized 'X' register", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "93c52141d3c4e1b5574d072f1afde6cd", "Imagic, Mark Klein", "720112-1A, 03213", "Subterranea (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "93c8d9d24f9c5f1f570694848d087df7", "Digivision", "", "Galaxian (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "93c9f9239a4e5c956663dd7affa70da2", "Quelle", "626.610 0", "Billard (1983) (Quelle) (PAL)", "AKA Trick Shot", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, diff --git a/src/emucore/stella.pro b/src/emucore/stella.pro index 6b100b49e..800f89e91 100644 --- a/src/emucore/stella.pro +++ b/src/emucore/stella.pro @@ -20430,3 +20430,16 @@ "Cartridge.Name" "Spitfire Attack (1983) (Milton Bradley) [h1]" "" +"Cartridge.MD5" "2434102f30eeb47792cf0825e368229b" +"Cartridge.Manufacturer" "Sparrow - Enter-Tech, Paul Walters, Rick Harris, George Hefner, Barbara Ultis" +"Cartridge.Name" "Arkyology (1983) (Sparrow) (Prototype)" +"Cartridge.Note" "ROM must be started in bank 0" +"Cartridge.Rarity" "Prototype" +"" + +"Cartridge.MD5" "93c4b910f7649b3e998bb6d8527c6f4a" +"Cartridge.Manufacturer" "Sparrow - Enter-Tech, Paul Walters, Rick Harris, George Hefner, Barbara Ultis" +"Cartridge.Name" "Arkyology (1983) (Sparrow) (Prototype) [fixed]" +"Cartridge.Note" "Fix for un-initialized 'X' register" +"Cartridge.Rarity" "Prototype" +"" From ce9b832f68db78fd6a4e3ac748ff82c19f46d3ec Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Wed, 5 Sep 2018 14:05:56 -0230 Subject: [PATCH 108/126] Improvements to logging for sound settings. - Now shows all settings from AudioSettings (preset, resampler, etc) - Only logs sound info when the settings have actually changed (similar to Framebuffer info) --- src/common/SoundNull.hxx | 5 +++ src/common/SoundSDL2.cxx | 73 +++++++++++++++++++++++++++------------- src/common/SoundSDL2.hxx | 7 ++++ src/emucore/OSystem.cxx | 2 +- src/emucore/Sound.hxx | 5 +++ 5 files changed, 68 insertions(+), 24 deletions(-) diff --git a/src/common/SoundNull.hxx b/src/common/SoundNull.hxx index 1ebc4426a..f487eb983 100644 --- a/src/common/SoundNull.hxx +++ b/src/common/SoundNull.hxx @@ -93,6 +93,11 @@ class SoundNull : public Sound */ void adjustVolume(Int8 direction) override { } + /** + This method is called to provide information about the sound device. + */ + string about() const override { return "Sound disabled"; } + private: // Following constructors and assignment operators not supported SoundNull() = delete; diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index cc9c08c41..86ee5be31 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -118,6 +118,8 @@ void SoundSDL2::setEnabled(bool state) void SoundSDL2::open(shared_ptr audioQueue, EmulationTiming* emulationTiming) { + string pre_about = myAboutString; + // Do we need to re-open the sound device? // Only do this when absolutely necessary if(myAudioSettings.sampleRate() != uInt32(myHardwareSpec.freq) || @@ -146,28 +148,9 @@ void SoundSDL2::open(shared_ptr audioQueue, initResampler(); // Show some info - ostringstream buf; - buf << "Sound enabled:" << endl - << " Volume: " << myVolume << endl - << " Frag size: " << uInt32(myHardwareSpec.samples) << endl - << " Frequency: " << uInt32(myHardwareSpec.freq) << endl - << " Channels: " << uInt32(myHardwareSpec.channels) << endl - << " Resampling: "; - switch (myAudioSettings.resamplingQuality()) { - case AudioSettings::ResamplingQuality::nearestNeightbour: - buf << "quality 1, nearest neighbor" << endl; - break; - case AudioSettings::ResamplingQuality::lanczos_2: - buf << "quality 2, nearest Lanczos (a = 2)" << endl; - break; - case AudioSettings::ResamplingQuality::lanczos_3: - buf << "quality 3, nearest Lanczos (a = 3)" << endl; - break; - default: - buf << "unknown resampler" << endl; - break; - } - myOSystem.logMessage(buf.str(), 1); + myAboutString = about(); + if(myAboutString != pre_about) + myOSystem.logMessage(myAboutString, 1); // And start the SDL sound subsystem ... mute(false); @@ -239,6 +222,51 @@ void SoundSDL2::adjustVolume(Int8 direction) myOSystem.frameBuffer().showMessage(message); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +string SoundSDL2::about() const +{ + ostringstream buf; + buf << "Sound enabled:" << endl + << " Volume: " << myVolume << endl + << " Channels: " << uInt32(myHardwareSpec.channels) << endl + << " Preset: "; + switch (myAudioSettings.preset()) { + case AudioSettings::Preset::custom: + buf << "Custom" << endl; + break; + case AudioSettings::Preset::lowQualityMediumLag: + buf << "Low quality, medium lag" << endl; + break; + case AudioSettings::Preset::highQualityMediumLag: + buf << "High quality, medium lag" << endl; + break; + case AudioSettings::Preset::highQualityLowLag: + buf << "High quality, low lag" << endl; + break; + case AudioSettings::Preset::veryHighQualityVeryLowLag: + buf << "Very high quality, very low lag" << endl; + break; + } + buf << " Sample rate: " << uInt32(myHardwareSpec.freq) << endl + << " Frag size: " << uInt32(myHardwareSpec.samples) << endl + << " Buffer size: " << myAudioSettings.bufferSize() << endl + << " Head room: " << myAudioSettings.headroom() << endl + << " Resampling: "; + switch (myAudioSettings.resamplingQuality()) { + case AudioSettings::ResamplingQuality::nearestNeightbour: + buf << "quality 1, nearest neighbor" << endl; + break; + case AudioSettings::ResamplingQuality::lanczos_2: + buf << "quality 2, Lanczos (a = 2)" << endl; + break; + case AudioSettings::ResamplingQuality::lanczos_3: + buf << "quality 3, Lanczos (a = 3)" << endl; + break; + } + + return buf.str(); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void SoundSDL2::processFragment(float* stream, uInt32 length) { @@ -270,7 +298,6 @@ void SoundSDL2::initResampler() Resampler::Format formatTo = Resampler::Format(myHardwareSpec.freq, myHardwareSpec.samples, myHardwareSpec.channels > 1); - switch (myAudioSettings.resamplingQuality()) { case AudioSettings::ResamplingQuality::nearestNeightbour: myResampler = make_unique(formatFrom, formatTo, nextFragmentCallback); diff --git a/src/common/SoundSDL2.hxx b/src/common/SoundSDL2.hxx index 46c9f685e..0c3fae7e0 100644 --- a/src/common/SoundSDL2.hxx +++ b/src/common/SoundSDL2.hxx @@ -96,6 +96,11 @@ class SoundSDL2 : public Sound */ void adjustVolume(Int8 direction) override; + /** + This method is called to provide information about the sound device. + */ + string about() const override; + protected: /** Invoked by the sound callback to process the next sound fragment. @@ -141,6 +146,8 @@ class SoundSDL2 : public Sound AudioSettings& myAudioSettings; + string myAboutString; + private: // Callback function invoked by the SDL Audio library when it needs data static void callback(void* udata, uInt8* stream, int len); diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index 7fce086db..273264aca 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -351,7 +351,7 @@ string OSystem::createConsole(const FilesystemNode& rom, const string& md5sum, } buf << "Game console created:" << endl << " ROM file: " << myRomFile.getShortPath() << endl << endl - << getROMInfo(*myConsole) << endl; + << getROMInfo(*myConsole); logMessage(buf.str(), 1); myFrameBuffer->setCursorState(); diff --git a/src/emucore/Sound.hxx b/src/emucore/Sound.hxx index 24a42e832..426521901 100644 --- a/src/emucore/Sound.hxx +++ b/src/emucore/Sound.hxx @@ -86,6 +86,11 @@ class Sound */ virtual void adjustVolume(Int8 direction) = 0; + /** + This method is called to provide information about the sound device. + */ + virtual string about() const = 0; + protected: // The OSystem for this sound object OSystem& myOSystem; From 3df644ecff878883e90b9efae16778ac5c9466ae Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Thu, 6 Sep 2018 10:38:32 -0230 Subject: [PATCH 109/126] Buffer size and headrom in sound logging now match that shown in AudioDialog. --- src/common/SoundSDL2.cxx | 6 ++++-- src/gui/AudioDialog.cxx | 3 +-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index 86ee5be31..cf071e3f1 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -249,8 +249,10 @@ string SoundSDL2::about() const } buf << " Sample rate: " << uInt32(myHardwareSpec.freq) << endl << " Frag size: " << uInt32(myHardwareSpec.samples) << endl - << " Buffer size: " << myAudioSettings.bufferSize() << endl - << " Head room: " << myAudioSettings.headroom() << endl + << " Head room: " << std::fixed << std::setprecision(1) + << (0.5 * myAudioSettings.headroom()) << " frames" << endl + << " Buffer size: " << std::fixed << std::setprecision(1) + << (0.5 * myAudioSettings.bufferSize()) << " frames" << endl << " Resampling: "; switch (myAudioSettings.resamplingQuality()) { case AudioSettings::ResamplingQuality::nearestNeightbour: diff --git a/src/gui/AudioDialog.cxx b/src/gui/AudioDialog.cxx index 30182785f..f890c2410 100644 --- a/src/gui/AudioDialog.cxx +++ b/src/gui/AudioDialog.cxx @@ -219,8 +219,7 @@ void AudioDialog::saveConfig() audioSettings.setPreset(preset); if (preset == AudioSettings::Preset::custom) { - - // Fragsize + // Fragsize audioSettings.setFragmentSize(myFragsizePopup->getSelectedTag().toInt()); audioSettings.setSampleRate(myFreqPopup->getSelectedTag().toInt()); audioSettings.setHeadroom(myHeadroomSlider->getValue()); From 503d861c2e6c03321546218adf27195365cf9283 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 6 Sep 2018 15:39:08 +0200 Subject: [PATCH 110/126] optimized some tickmarks (number now based on value range) --- src/gui/AudioDialog.cxx | 4 ++-- src/gui/DeveloperDialog.cxx | 6 ++++-- src/gui/GameInfoDialog.cxx | 6 ++++-- src/gui/UIDialog.cxx | 6 ++++-- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/gui/AudioDialog.cxx b/src/gui/AudioDialog.cxx index 30182785f..21a1ba037 100644 --- a/src/gui/AudioDialog.cxx +++ b/src/gui/AudioDialog.cxx @@ -141,7 +141,7 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, myHeadroomSlider = new SliderWidget(this, font, xpos, ypos, swidth, lineHeight, "Headroom ", 0, kHeadroomChanged, 10 * fontWidth); myHeadroomSlider->setMinValue(0); myHeadroomSlider->setMaxValue(AudioSettings::MAX_HEADROOM); - myHeadroomSlider->setTickmarkInterval(3); + myHeadroomSlider->setTickmarkInterval(5); wid.push_back(myHeadroomSlider); ypos += lineHeight + VGAP; @@ -149,7 +149,7 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, myBufferSizeSlider = new SliderWidget(this, font, xpos, ypos, swidth, lineHeight, "Buffer size ", 0, kBufferSizeChanged, 10 * fontWidth); myBufferSizeSlider->setMinValue(0); myBufferSizeSlider->setMaxValue(AudioSettings::MAX_BUFFER_SIZE); - myBufferSizeSlider->setTickmarkInterval(3); + myBufferSizeSlider->setTickmarkInterval(5); wid.push_back(myBufferSizeSlider); // Add Defaults, OK and Cancel buttons diff --git a/src/gui/DeveloperDialog.cxx b/src/gui/DeveloperDialog.cxx index 2f0b42b26..982330b06 100644 --- a/src/gui/DeveloperDialog.cxx +++ b/src/gui/DeveloperDialog.cxx @@ -429,7 +429,8 @@ void DeveloperDialog::addDebuggerTab(const GUI::Font& font) myDebuggerWidthSlider->setMinValue(DebuggerDialog::kSmallFontMinW); myDebuggerWidthSlider->setMaxValue(ds.w); myDebuggerWidthSlider->setStepValue(10); - myDebuggerWidthSlider->setTickmarkInterval(5); + // one tickmark every ~100 pixel + myDebuggerWidthSlider->setTickmarkInterval((ds.w - DebuggerDialog::kSmallFontMinW + 50) / 100); wid.push_back(myDebuggerWidthSlider); ypos += lineHeight + VGAP; @@ -438,7 +439,8 @@ void DeveloperDialog::addDebuggerTab(const GUI::Font& font) myDebuggerHeightSlider->setMinValue(DebuggerDialog::kSmallFontMinH); myDebuggerHeightSlider->setMaxValue(ds.h); myDebuggerHeightSlider->setStepValue(10); - myDebuggerHeightSlider->setTickmarkInterval(5); + // one tickmark every ~100 pixel + myDebuggerHeightSlider->setTickmarkInterval((ds.h - DebuggerDialog::kSmallFontMinH + 50) / 100); wid.push_back(myDebuggerHeightSlider); ypos += lineHeight + VGAP * 4; diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 4ae887c8a..5b3a24324 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -309,7 +309,8 @@ GameInfoDialog::GameInfoDialog( " ", 0, kYStartChanged, 5 * fontWidth, "px"); myYStart->setMinValue(TIAConstants::minYStart-1); myYStart->setMaxValue(TIAConstants::maxYStart); - myYStart->setTickmarkInterval(4); + // one tickmark every ~10 pixel + myYStart->setTickmarkInterval((TIAConstants::maxYStart - (TIAConstants::minYStart-1) + 5) / 10); wid.push_back(myYStart); int iWidth = ifont.getCharWidth('2'); @@ -322,7 +323,8 @@ GameInfoDialog::GameInfoDialog( " ", 0, kHeightChanged, 5 * fontWidth, "px"); myHeight->setMinValue(TIAConstants::minViewableHeight-1); myHeight->setMaxValue(TIAConstants::maxViewableHeight); - myHeight->setTickmarkInterval(4); + // one tickmark every ~10 pixel + myHeight->setTickmarkInterval((TIAConstants::maxViewableHeight - (TIAConstants::minViewableHeight - 1) + 5) / 10); wid.push_back(myHeight); myHeightDetected = new StaticTextWidget(myTab, ifont, myHeight->getRight() + 8, ypos + 5, "100px detected"); diff --git a/src/gui/UIDialog.cxx b/src/gui/UIDialog.cxx index dc1303b13..52c213114 100644 --- a/src/gui/UIDialog.cxx +++ b/src/gui/UIDialog.cxx @@ -120,7 +120,8 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, myLauncherWidthSlider->setMinValue(FrameBuffer::kFBMinW); myLauncherWidthSlider->setMaxValue(ds.w); myLauncherWidthSlider->setStepValue(10); - myLauncherWidthSlider->setTickmarkInterval(5); + // one tickmark every ~100 pixel + myLauncherWidthSlider->setTickmarkInterval((ds.w - FrameBuffer::kFBMinW + 50) / 100); wid.push_back(myLauncherWidthSlider); ypos += lineHeight + 4; @@ -129,7 +130,8 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent, myLauncherHeightSlider->setMinValue(FrameBuffer::kFBMinH); myLauncherHeightSlider->setMaxValue(ds.h); myLauncherHeightSlider->setStepValue(10); - myLauncherHeightSlider->setTickmarkInterval(5); + // one tickmark every ~100 pixel + myLauncherHeightSlider->setTickmarkInterval((ds.h - FrameBuffer::kFBMinH + 50) / 100); wid.push_back(myLauncherHeightSlider); ypos += lineHeight + 4; From 71eeba70aea37adef3ab3cfe8c9371bbfaa24307 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 6 Sep 2018 16:39:18 +0200 Subject: [PATCH 111/126] aligned the log order to AudioDialog --- src/common/SoundSDL2.cxx | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index cf071e3f1..6c2fab68c 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -247,25 +247,25 @@ string SoundSDL2::about() const buf << "Very high quality, very low lag" << endl; break; } - buf << " Sample rate: " << uInt32(myHardwareSpec.freq) << endl - << " Frag size: " << uInt32(myHardwareSpec.samples) << endl - << " Head room: " << std::fixed << std::setprecision(1) - << (0.5 * myAudioSettings.headroom()) << " frames" << endl - << " Buffer size: " << std::fixed << std::setprecision(1) - << (0.5 * myAudioSettings.bufferSize()) << " frames" << endl - << " Resampling: "; - switch (myAudioSettings.resamplingQuality()) { + buf << " Fragment size: " << uInt32(myHardwareSpec.samples) << endl + << " Sample rate: " << uInt32(myHardwareSpec.freq) << endl; + buf << " Resampling: "; + switch(myAudioSettings.resamplingQuality()) + { case AudioSettings::ResamplingQuality::nearestNeightbour: - buf << "quality 1, nearest neighbor" << endl; + buf << "Quality 1, nearest neighbor" << endl; break; case AudioSettings::ResamplingQuality::lanczos_2: - buf << "quality 2, Lanczos (a = 2)" << endl; + buf << "Quality 2, Lanczos (a = 2)" << endl; break; case AudioSettings::ResamplingQuality::lanczos_3: - buf << "quality 3, Lanczos (a = 3)" << endl; + buf << "Quality 3, Lanczos (a = 3)" << endl; break; } - + buf << " Headroom: " << std::fixed << std::setprecision(1) + << (0.5 * myAudioSettings.headroom()) << " frames" << endl + << " Buffer size: " << std::fixed << std::setprecision(1) + << (0.5 * myAudioSettings.bufferSize()) << " frames" << endl; return buf.str(); } From 76e3e8305a2946ca70234cec9255db7f24effffd Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 6 Sep 2018 16:49:18 +0200 Subject: [PATCH 112/126] added current stereo mode and units to logging --- src/common/SoundSDL2.cxx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index 6c2fab68c..40558b826 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -227,8 +227,9 @@ string SoundSDL2::about() const { ostringstream buf; buf << "Sound enabled:" << endl - << " Volume: " << myVolume << endl - << " Channels: " << uInt32(myHardwareSpec.channels) << endl + << " Volume: " << myVolume << "%" << endl + << " Channels: " << uInt32(myHardwareSpec.channels) + << (myAudioQueue->isStereo() ? " (Stereo)" : " (Mono)") << endl << " Preset: "; switch (myAudioSettings.preset()) { case AudioSettings::Preset::custom: @@ -247,8 +248,8 @@ string SoundSDL2::about() const buf << "Very high quality, very low lag" << endl; break; } - buf << " Fragment size: " << uInt32(myHardwareSpec.samples) << endl - << " Sample rate: " << uInt32(myHardwareSpec.freq) << endl; + buf << " Fragment size: " << uInt32(myHardwareSpec.samples) << " bytes" << endl + << " Sample rate: " << uInt32(myHardwareSpec.freq) << "Hz" << endl; buf << " Resampling: "; switch(myAudioSettings.resamplingQuality()) { From adc948d806fec5b31f85c2260ac3bb98f58697e4 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 6 Sep 2018 17:28:45 +0200 Subject: [PATCH 113/126] missed a blank --- src/common/SoundSDL2.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index 40558b826..80a3511d0 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -249,7 +249,7 @@ string SoundSDL2::about() const break; } buf << " Fragment size: " << uInt32(myHardwareSpec.samples) << " bytes" << endl - << " Sample rate: " << uInt32(myHardwareSpec.freq) << "Hz" << endl; + << " Sample rate: " << uInt32(myHardwareSpec.freq) << " Hz" << endl; buf << " Resampling: "; switch(myAudioSettings.resamplingQuality()) { From ab0e4d6bba75acc413cf05a5693a58c479e098a8 Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Thu, 6 Sep 2018 23:47:17 +0200 Subject: [PATCH 114/126] Properly handle TV and ystart autodetection during runtime. --- .vscode/settings.json | 6 ++++- src/emucore/Console.cxx | 53 ++++++++++++++++++++++++++++++++++------- src/emucore/Console.hxx | 13 ++++++++++ 3 files changed, 63 insertions(+), 9 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 66d6c8112..ee4e3bcc3 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -60,6 +60,10 @@ "cstdint": "cpp", "ostream": "cpp", "__memory": "cpp", - "iosfwd": "cpp" + "iosfwd": "cpp", + "__hash_table": "cpp", + "array": "cpp", + "queue": "cpp", + "unordered_map": "cpp" } } diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index c7d132619..c3dd0082e 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -52,6 +52,7 @@ #include "Menu.hxx" #include "CommandMenu.hxx" #include "Serializable.hxx" +#include "Serializer.hxx" #include "Version.hxx" #include "TIAConstants.hxx" #include "FrameLayout.hxx" @@ -85,6 +86,7 @@ Console::Console(OSystem& osystem, unique_ptr& cart, myDisplayFormat(""), // Unknown TV format @ start myCurrentFormat(0), // Unknown format @ start, myAutodetectedYstart(0), + myYStartAutodetected(false), myUserPaletteDefined(false), myConsoleTiming(ConsoleTiming::ntsc), myAudioSettings(audioSettings) @@ -237,6 +239,21 @@ void Console::autodetectFrameLayout() myOSystem.settings().setValue("fastscbios", fastscbios); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Console::redetectFrameLayout() +{ + Serializer s; + + myOSystem.sound().close(); + save(s); + + autodetectFrameLayout(); + if (myYStartAutodetected) autodetectYStart(); + + load(s); + initializeAudio(); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Console::autodetectYStart() { @@ -259,6 +276,22 @@ void Console::autodetectYStart() // Don't forget to reset the SC progress bars again myOSystem.settings().setValue("fastscbios", fastscbios); + + myYStartAutodetected = true; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Console::redetectYStart() +{ + Serializer s; + + myOSystem.sound().close(); + save(s); + + autodetectYStart(); + + load(s); + initializeAudio(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -337,7 +370,7 @@ void Console::setFormat(uInt32 format) case 0: // auto-detect { string oldDisplayFormat = myDisplayFormat; - autodetectFrameLayout(); + redetectFrameLayout(); myTIA->update(); reset = oldDisplayFormat != myDisplayFormat; saveformat = "AUTO"; @@ -639,15 +672,12 @@ void Console::changeYStart(int direction) myOSystem.frameBuffer().showMessage("YStart at maximum"); return; } + ++ystart; + myYStartAutodetected = false; } else if(direction == -1) // decrease YStart { - if (ystart == TIAConstants::minYStart && myAutodetectedYstart == 0) { - myOSystem.frameBuffer().showMessage("Autodetected YStart not available"); - return; - } - if(ystart == TIAConstants::minYStart-1 && myAutodetectedYstart > 0) { myOSystem.frameBuffer().showMessage("YStart at minimum"); @@ -655,14 +685,19 @@ void Console::changeYStart(int direction) } --ystart; + myYStartAutodetected = false; } else return; ostringstream val; val << ystart; - if(ystart == TIAConstants::minYStart-1) + if(ystart == TIAConstants::minYStart-1) { + redetectYStart(); + ystart = myAutodetectedYstart; + myOSystem.frameBuffer().showMessage("YStart autodetected"); + } else { if(myAutodetectedYstart > 0 && myAutodetectedYstart == ystart) @@ -674,6 +709,8 @@ void Console::changeYStart(int direction) } else myOSystem.frameBuffer().showMessage("YStart " + val.str()); + + myAutodetectedYstart = false; } myProperties.set(Display_YStart, val.str()); @@ -739,7 +776,7 @@ void Console::setTIAProperties() myTIA->setLayout(FrameLayout::pal); } - myTIA->setYStart(ystart != 0 ? ystart : myAutodetectedYstart); + myTIA->setYStart(myAutodetectedYstart ? myAutodetectedYstart : ystart); myTIA->setHeight(height); myEmulationTiming.updateFrameLayout(myTIA->frameLayout()); diff --git a/src/emucore/Console.hxx b/src/emucore/Console.hxx index 5ab23fa84..11166b3ca 100644 --- a/src/emucore/Console.hxx +++ b/src/emucore/Console.hxx @@ -315,6 +315,16 @@ class Console : public Serializable */ void autodetectYStart(); + /** + * Rerun frame layout autodetection + */ + void redetectFrameLayout(); + + /** + * Rerun ystart autodetection. + */ + void redetectYStart(); + /** Sets various properties of the TIA (YStart, Height, etc) based on the current display format. @@ -409,6 +419,9 @@ class Console : public Serializable // Autodetected ystart. uInt32 myAutodetectedYstart; + // Is ystart currently autodetected? + bool myYStartAutodetected; + // Indicates whether an external palette was found and // successfully loaded bool myUserPaletteDefined; From e129391dbdac8b89e8c4608c90f187c50ce75c5c Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Sun, 9 Sep 2018 23:30:20 +0200 Subject: [PATCH 115/126] Fixes, properly handle TV format any ystart changes from GUI. --- src/emucore/Console.cxx | 28 +++++++++++++++---- src/emucore/Console.hxx | 9 ++++-- .../frame-manager/AbstractFrameManager.cxx | 1 - .../tia/frame-manager/FrameLayoutDetector.cxx | 6 ++++ .../tia/frame-manager/FrameLayoutDetector.hxx | 2 +- .../tia/frame-manager/FrameManager.cxx | 1 + .../tia/frame-manager/YStartDetector.cxx | 6 ++++ .../tia/frame-manager/YStartDetector.hxx | 2 +- src/gui/GameInfoDialog.cxx | 8 ++---- 9 files changed, 46 insertions(+), 17 deletions(-) diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index c3dd0082e..c79f76780 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -216,7 +216,7 @@ Console::~Console() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::autodetectFrameLayout() +void Console::autodetectFrameLayout(bool reset) { // Run the TIA, looking for PAL scanline patterns // We turn off the SuperCharger progress bars, otherwise the SC BIOS @@ -227,7 +227,8 @@ void Console::autodetectFrameLayout() FrameLayoutDetector frameLayoutDetector; myTIA->setFrameManager(&frameLayoutDetector); - mySystem->reset(true); + + if (reset) mySystem->reset(true); for(int i = 0; i < 60; ++i) myTIA->update(); @@ -247,7 +248,7 @@ void Console::redetectFrameLayout() myOSystem.sound().close(); save(s); - autodetectFrameLayout(); + autodetectFrameLayout(false); if (myYStartAutodetected) autodetectYStart(); load(s); @@ -255,7 +256,7 @@ void Console::redetectFrameLayout() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Console::autodetectYStart() +void Console::autodetectYStart(bool reset) { // We turn off the SuperCharger progress bars, otherwise the SC BIOS // will take over 250 frames! @@ -266,7 +267,8 @@ void Console::autodetectYStart() YStartDetector ystartDetector; ystartDetector.setLayout(myDisplayFormat == "PAL" ? FrameLayout::pal : FrameLayout::ntsc); myTIA->setFrameManager(&ystartDetector); - mySystem->reset(true); + + if (reset) mySystem->reset(true); for (int i = 0; i < 80; i++) myTIA->update(); @@ -288,7 +290,7 @@ void Console::redetectYStart() myOSystem.sound().close(); save(s); - autodetectYStart(); + autodetectYStart(false); load(s); initializeAudio(); @@ -718,6 +720,20 @@ void Console::changeYStart(int direction) myTIA->frameReset(); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void Console::updateYStart(uInt32 ystart) +{ + if (ystart == TIAConstants::minYStart-1 && !myYStartAutodetected) { + redetectYStart(); + ystart = myAutodetectedYstart; + } else if (ystart <= TIAConstants::maxYStart) myYStartAutodetected = false; + + if (ystart <= TIAConstants::maxYStart) { + myTIA->setYStart(ystart); + myTIA->frameReset(); + } +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Console::changeHeight(int direction) { diff --git a/src/emucore/Console.hxx b/src/emucore/Console.hxx index 11166b3ca..fdf37de64 100644 --- a/src/emucore/Console.hxx +++ b/src/emucore/Console.hxx @@ -304,16 +304,21 @@ class Console : public Serializable */ void toggleJitter() const; + /** + * Update yatart and run autodetection if necessary. + */ + void updateYStart(uInt32 ystart); + private: /** * Dry-run the emulation and detect the frame layout (PAL / NTSC). */ - void autodetectFrameLayout(); + void autodetectFrameLayout(bool reset = true); /** * Dryrun the emulation and detect ystart (the first visible scanline). */ - void autodetectYStart(); + void autodetectYStart(bool reset = true); /** * Rerun frame layout autodetection diff --git a/src/emucore/tia/frame-manager/AbstractFrameManager.cxx b/src/emucore/tia/frame-manager/AbstractFrameManager.cxx index 85a269057..b82042ae3 100644 --- a/src/emucore/tia/frame-manager/AbstractFrameManager.cxx +++ b/src/emucore/tia/frame-manager/AbstractFrameManager.cxx @@ -24,7 +24,6 @@ AbstractFrameManager::AbstractFrameManager() : myOnFrameComplete(nullptr) { layout(FrameLayout::ntsc); - reset(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx b/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx index 301759843..1168a51cb 100644 --- a/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx +++ b/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx @@ -42,6 +42,12 @@ FrameLayout FrameLayoutDetector::detectedLayout() const{ return myPalFrames > myNtscFrames ? FrameLayout::pal : FrameLayout::ntsc; } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +FrameLayoutDetector::FrameLayoutDetector() +{ + reset(); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FrameLayoutDetector::onReset() { diff --git a/src/emucore/tia/frame-manager/FrameLayoutDetector.hxx b/src/emucore/tia/frame-manager/FrameLayoutDetector.hxx index 42c0ca030..39fbc51b5 100644 --- a/src/emucore/tia/frame-manager/FrameLayoutDetector.hxx +++ b/src/emucore/tia/frame-manager/FrameLayoutDetector.hxx @@ -28,7 +28,7 @@ class FrameLayoutDetector: public AbstractFrameManager { public: - FrameLayoutDetector() = default; + FrameLayoutDetector(); public: diff --git a/src/emucore/tia/frame-manager/FrameManager.cxx b/src/emucore/tia/frame-manager/FrameManager.cxx index bcbc5685c..da6f1b040 100644 --- a/src/emucore/tia/frame-manager/FrameManager.cxx +++ b/src/emucore/tia/frame-manager/FrameManager.cxx @@ -49,6 +49,7 @@ FrameManager::FrameManager() myYStart(0), myJitterEnabled(false) { + reset(); onLayoutChange(); } diff --git a/src/emucore/tia/frame-manager/YStartDetector.cxx b/src/emucore/tia/frame-manager/YStartDetector.cxx index 8673e01b1..5d7fe50b0 100644 --- a/src/emucore/tia/frame-manager/YStartDetector.cxx +++ b/src/emucore/tia/frame-manager/YStartDetector.cxx @@ -46,6 +46,12 @@ enum Metrics: uInt32 { initialGarbageFrames = TIAConstants::initialGarbageFrames }; +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +YStartDetector::YStartDetector() +{ + reset(); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 YStartDetector::detectedYStart() const { diff --git a/src/emucore/tia/frame-manager/YStartDetector.hxx b/src/emucore/tia/frame-manager/YStartDetector.hxx index 3d6003814..f5f4bc164 100644 --- a/src/emucore/tia/frame-manager/YStartDetector.hxx +++ b/src/emucore/tia/frame-manager/YStartDetector.hxx @@ -28,7 +28,7 @@ class YStartDetector: public AbstractFrameManager { public: - YStartDetector() = default; + YStartDetector(); public: diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 5b3a24324..798ffa941 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -560,12 +560,8 @@ void GameInfoDialog::saveConfig() // update 'Display' tab settings immediately bool reset = false; instance().console().setFormat(myFormat->getSelected()); - if(uInt32(myYStart->getValue()) != TIAConstants::minYStart - 1 && - uInt32(myYStart->getValue()) != instance().console().tia().ystart()) - { - instance().console().tia().setYStart(myYStart->getValue()); - reset = true; - } + instance().console().updateYStart(myYStart->getValue()); + if(uInt32(myHeight->getValue()) != TIAConstants::minViewableHeight - 1 && uInt32(myHeight->getValue()) != instance().console().tia().height()) { From 27022ad3a90fe71b2fa783e27a8cbf7555590df6 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 11 Sep 2018 10:54:39 +0200 Subject: [PATCH 116/126] fixes #376 --- src/common/StringParser.hxx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/common/StringParser.hxx b/src/common/StringParser.hxx index 7ad0d53bf..06ff6ad18 100644 --- a/src/common/StringParser.hxx +++ b/src/common/StringParser.hxx @@ -64,10 +64,10 @@ class StringParser else { size_t beg = 0; - while((beg+maxlen) < size) + while((beg + maxlen) < size) { - size_t spos = line.find_last_of(' ', beg+len); - if(spos > beg) + size_t spos = line.find_last_of(' ', beg + len); + if(spos != string::npos && spos > beg) len = spos - beg; myStringList.push_back(line.substr(beg, len)); From 5bc84bca520a09557a68cc646841576c45449e25 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 11 Sep 2018 10:23:39 -0230 Subject: [PATCH 117/126] Add 'Cartridge.StartBank' ROM property, to specify the startup bank for a ROM to use. For now, this only modifies the properties database. Still TODO is have the app use the information. --- src/emucore/DefProps.hxx | 6638 +++++++++++++++++++------------------- src/emucore/Props.cxx | 4 + src/emucore/Props.hxx | 1 + src/tools/PropSet.pm | 31 +- 4 files changed, 3341 insertions(+), 3333 deletions(-) diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index c6ad40397..3fbe22479 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -27,3325 +27,3325 @@ #define DEF_PROPS_SIZE 3318 -static const char* const DefProps[DEF_PROPS_SIZE][21] = { - { "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0060a89b4c956b9c703a59b181cb3018", "CommaVid, Irwin Gaines - Ariola", "CM-008 - 712 008-720", "Cakewalk (1983) (CommaVid) (PAL)", "AKA Alarm in der Backstube", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "007d18dedc1f0565f09c42aa61a6f585", "CCE", "C-843", "Worm War I (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "008543ae43497af015e9428a5e3e874e", "Retroactive", "", "Qb (V2.09) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "00b7b4cbec81570642283e7fc1ef17af", "Sega - Beck-Tech, Steve Beck, Phat Ho", "006-01", "Congo Bongo (1983) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "26", "220", "", "" }, - { "00ce0bdd43aed84a983bef38fe7f5ee3", "20th Century Fox, Bill Aspromonte", "11012", "Bank Heist (1983) (20th Century Fox)", "AKA Bonnie and Clyde, Cops 'n' Robbers, Holdup, Rooring 20's", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00ce76ad69cdc2fa36ada01ae092d5a6", "Bit Corporation", "PGP214", "Cosmic Avenger (4 Game in One) (1983) (BitCorp) (PAL)", "AKA StarMaster", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00dc28b881989c39a6cf87a892bd3c6b", "CCE", "", "Krull (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00e19ebf9d0817ccfb057e262be1e5af", "Atari, Ed Logg, Carol Shaw", "CX2639, CX2639P", "Othello (1981) (Atari) (PAL) [no grid markers]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00e55b27fe2e96354cd21b8b698d1e31", "", "", "Phoenix (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "00eaee22034aff602f899b684c107d77", "Rainbow Vision - Suntek - Sunteck Corp", "SS-001", "Time Race (Rainbow Vision) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, - { "00f7985c20b8bdf3c557fac4d3f26775", "Aaron Curtis", "", "AStar (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "012020625a3227815e47b37fd025e480", "Rob Kudla", "", "Better Space Invaders (1999) (Rob Kudla) (Hack) [a]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01293bd90a4579abb7aed2f7d440681f", "Century", "", "Snoopy (1983) (Century) (PAL)", "AKA Snoopy and the Red Baron", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01297d9b450455dd716db9658efb2fae", "TechnoVision - Video Technology", "TVS1002", "Save Our Ship (1983) (TechnoVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "45", "", "", "" }, - { "012b8e6ef3b5fd5aabc94075c527709d", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (1983) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 56", "", "", "", "", "" }, - { "0164f26f6b38a34208cd4a2d0212afc3", "Coleco, Ed English", "2656", "Mr. Do! (1983) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0173675d40a8d975763ee493377ca87d", "CBS Electronics, Ed English", "4L1751", "Roc 'n Rope (1984) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01abcc1d2d3cba87a3aa0eb97a9d7b9c", "Jone Yuan Telephonic Enterprise Co", "", "Topy (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01b09872dcd9556427761f0ed64aa42a", "Galaga Games", "", "River Raid (1984) (Galaga Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01cb3e8dfab7203a9c62ba3b94b4e59f", "Atari, Mimi Nyden, Scott Smith, Robert Vieira", "CX26127", "Gremlins (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01e5c81258860dd82f77339d58bc5f5c", "CCE", "", "Corrida da Matematica (CCE)", "AKA Math Gran Prix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01e60a109a6a67c70d3c0528381d0187", "ITT Family Games, Perry Rhodan-Serie", "554-33 383", "Fire Birds (1983) (ITT Family Games) (PAL)", "AKA Sky Alien", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "01f584bf67b0e464014a8c8b5ea470e3", "Arcadia Corporation, Dennis Caswell", "5 AR-4200", "Labyrinth (Escape from the Mindmaster Beta) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02066b17f29082412c6754c1a2d6302e", "", "", "Demo Image Series #3 - Baboon (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "024365007a87f213cbe8ef5f2e8e1333", "Atari, Frank Hausman, Mimi Nyden, Steve Woita", "CX2686", "Quadrun (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "025668e36a788e8af8ac4f1be7e72043", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2659", "Raiders of the Lost Ark (06-14-82) (Atari) (Prototype)", "Console ports are swapped", "Prototype", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "026180bf641ff17d8577c33facf0edea", "Activision, Steve Cartwright", "AX-022", "Seaquest (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0277c449fae63f6f1c8f94dedfcf0058", "", "", "Laser Demo (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "027a59a575b78860aed780b2ae7d001d", "CCE", "", "Pressure Cooker (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "028024fb8e5e5f18ea586652f9799c96", "Coleco - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen", "2468", "Carnival (1982) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02811151906e477d47c135db5b1699c6", "", "", "FlickerSort Demo (Updated) (20-04-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02a5fc90a0d183f870e8eebac1f16591", "HES", "771-422", "2 Pak Special - Star Warrior, Frogger (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02ab2c47bc21e7feafa015f90d7df776", "Atari", "MA017600", "Diagnostic Test Cartridge 2.6 (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02ced7ea2b7cb509748db6bfa227ebec", "Parker Brothers, Ed English, David Lamkins", "931502", "Frogger (1982) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02cee0b140d2f1a1efcfb1d482a5c392", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02dcba28c614fec7ca25955327128abb", "Andrew Wallace", "", "Laseresal 2002 (PAL) (PD) [a]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "02e3f4ba156fb578bef7d7a0bf3400c1", "", "", "Booster (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "033e21521e0bf4e54e8816873943406d", "20th Century Fox Video Games - Sirius Software, Dan Thompson", "11020", "Earth Dies Screaming, The (1983) (20th Century Fox)", "The Day the Earth Stood Still", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "034c1434280b0f2c9f229777d790d1e1", "Telegames", "5665 A016", "Baseball (1988) (Telegames) (PAL)", "AKA Super Challenge Baseball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0375f589f7da06d2d2be532e0d4d4b94", "", "", "Push (V0.04) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0383dc02cb82302da3d155fd108bfe3a", "AtariAge, Chris Spry", "CX26200", "Princess Rescue (2013) (Sprybug) (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "YES", "" }, - { "038e1e79c3d4410defde4bfe0b99cc32", "Atari, Tod Frye, Gary Shannon", "", "Aquaventure (08-12-1983) (Atari) (Prototype)", "AKA Sea Sentinel", "Unbelievably Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "039cf18b459d33b8a8fca31d06c4c244", "", "", "Demo Image Series #0 (12-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "03b1051c9374678363c899914412cfc5", "", "", "Incoming (30-10-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "03c3f7ba4585e349dd12bfa7b34b7729", "Sega, Jeff Lorenz", "004-01", "Star Trek - Strategic Operations Simulator (1983) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "03ff9e8a7af437f16447fe88cea3226c", "Bomb - Onbase", "CA285", "Wall-Defender (1983) (Bomb)", "AKA Wall Break", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "04014d563b094e79ac8974366f616308", "Atari, Andrew Fuchs, Courtney Granner, Jeffrey Gusman, Mark R. Hahn", "CX2690", "Pengo (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "041b5e56bbc650db574bd8db3fae2696", "", "", "Thrust (V1.0) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "043f165f384fbea3ea89393597951512", "Spectravision - Spectravideo", "SA-202", "Planet Patrol (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0443cfa9872cdb49069186413275fa21", "M Network, Patricia Lewis Du Long, Ron Surratt - INTV", "MT4518", "BurgerTime (1983) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "045035f995272eb2deb8820111745a07", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1983) (Arcadia)", "AKA Jungle Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "047ac3b9faea64522b7a23c4465a7aa8", "", "", "Defender (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "04856e3006a4f5f7b4638da71dad3d88", "Atari, Douglas Neubauer", "CX26176", "Radar Lock (1989) (Atari) (PAL)", "AKA Dog Fight", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "049626cbfb1a5f7a5dc885a0c4bb758e", "", "", "MegaMania (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "04b488d4eef622d022a0021375e7e339", "Home Vision - Gem International Corp. - VDI", "VCS83107", "Tennis (1983) (Home Vision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "04dfb4acac1d0909e4c360fd2ac04480", "", "", "Jammed (2001) (XYPE) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "04e737c9d53cd84bfd5ee679954e4706", "Jone Yuan Telephonic Enterprise Co", "", "Checkers (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "04fccc7735155a6c1373d453b110c640", "HES - Imagineering, David Lubar", "535", "My Golf (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0519f395d5f7d76be813b834aa51c0be", "Atari, Ian Shepard", "CX2604", "Space War (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0546f4e6b946f38956799dd00caab3b1", "Thomas Jentzsch", "", "My Golf (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "056f5d886a4e7e6fdd83650554997d0d", "Parker Brothers, Ed Temple", "931504", "Amidar (1982) (Parker Bros) (PAL)", "", "Uncommon", "", "", "A", "A", "", "", "", "", "", "", "", "", "", "", "" }, - { "056ff67dd9715fafa91fb8b0ddcc4a46", "", "", "Frisco (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05824fcbe615dbca836d061a140a50e0", "Jeffry Johnston", "", "Radial Pong - Version 9 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05aedf04803c43eb5e09dfd098d3fd01", "", "", "Keystone Kapers (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05aff8f626ef870432ae3b3d9d5aa301", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05b45ba09c05befa75ac70476829eda0", "Parker Brothers, Rex Bradford", "931507", "Star Wars - Jedi Arena (1983) (Parker Bros) (PAL)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 50", "", "", "", "", "" }, - { "05c60458ec69e7fe8b1be973852d84f1", "", "", "Test (1996) (J.V. Matthews) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05ccf96247af12eef59698f1a060a54f", "Otto Versand", "600273", "King Arthur (1983) (Otto Versand) (PAL)", "AKA Dragonfire (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05d61b925d3d2474bab83f0a79bb5df1", "Eckhard Stolberg", "", "Cosmic Ark Stars (1997) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05eb4347f0ec8f4783983ca35ffd8d1b", "", "", "Qb (2.06) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "05ebd183ea854c0a1b56c218246fbbae", "Atari, Dan Hitchens", "CX2656", "SwordQuest - EarthWorld (1982) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "05f11fb2e45c4e47424d3cb25414d278", "", "", "Boring (NTSC) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "060c865c782debb047e6fd101c8923fc", "Atari", "CX26163P", "Freeway Rabbit (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0614ed51acd027d531e7c85c4f435292", "", "", "Narnia (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0651216c4a4a9c9ac5ada3013a317c72", "Jone Yuan Telephonic Enterprise Co", "", "Fishing Derby (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06742cf522f23797157f215a1dc8a1a9", "", "", "Healthbars (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0685bd0bcb975ceef7041749a5454a48", "Piero Cavina", "", "11 Sprite Demo (Piero Cavina) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06953ed762220dba63d63930d4ad0cc3", "", "", "Star Fire - Eckhard WIP (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "069c17beb1e8e0557adb8539fdcf6cba", "", "", "Phantom II & Pirate (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "06b0194ce992584c365278e0d7323279", "Activision", "", "Unknown Activision Game #2 (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06b6c5031b8353f3a424a5b86b8fe409", "Activision, Mike Lorenzen - Ariola", "EAX-023 - 711 023-720", "Oink! (1983) (Activision) (PAL)", "AKA Das Schweinchen und der Wolf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06cfd57f0559f38b9293adae9128ff88", "Telegames", "4317 A009", "Adventures on GX-12 (1988) (Telegames) (PAL)", "AKA Adventures of Tron", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06db908011065e5ebb37f4e253c2a0b0", "", "", "Gopher (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "06e5dc181a8eda1c31cc7c581c68b6ef", "", "", "Tac-Scan (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "071f84d10b343c7c05ce3e32af631687", "Videospielkassette - Ariola", "PGP233", "Krieg der Sterne (Ariola) (PAL)", "AKA Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "072a6ea2181ca0df88ac0dedc67b239d", "", "", "Multiple Missiles Demo (19-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "073cb76b006af034fd150be3f5e0e7e6", "", "", "Mobile 48 Sprite Kernel (Bug Fixed) (10-01-2003) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "073d7aff37b7601431e4f742c36c0dc1", "", "", "Bermuda (Unknown) (PAL)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "074ec425ec20579e64a7ded592155d48", "Atari - Sculptured Software, Steve Aguirre", "CX26162", "Fatal Run (Ultimate Driving) (1991) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "075069ad80cde15eca69e3c98bd66714", "CCE", "C-803", "Bobby Is Going Home (1983) (CCE)", "AKA Bobby Vai Para Casa", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0751f342ee4cf28f2c9a6e8467c901be", "Atari, Mimi Nyden, Joseph Tung", "CX26152", "Super Baseball (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07973be3ecfd55235bf59aa56bdef28c", "Quelle", "732.052 6", "Eddy Langfinger, der Museumsdieb (1983) (Quelle) (PAL)", "AKA A Mysterious Thief", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "079fe9103515d15bc108577e234a484d", "", "", "Multi-Color Demo 0 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07a3af1e18b63765b6807876366f5e8a", "Joe Grand", "", "SCSIcide Pre-release 2 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07c76f2d88552d20ad2c0ed7aef406c6", "Cody Pittman", "", "Blob (Cody Pittman) (Hack)", "Hack of Halloween", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07f42847a79e4f5ae55cc03304b18c25", "Zellers", "", "Sea Hawk (Zellers)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07f84db31e97ef8d08dc9fa8a5250755", "Supergame", "", "Enduro (1984) (Supergame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "07f91e33e76f53bb9d2731fd5d8a35a5", "Atari", "CX2632", "Space Invaders (1978) (Atari) [t1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0805366f1b165a64b6d4df20d2c39d25", "Atari, Dan Hitchens", "CX2650", "Berzerk (1982) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08188785e2b8300983529946dbeff4d2", "Atari, Carla Meninsky, Ed Riddle - Sears", "CX2611 - 99821, 49-75149", "Indy 500 (1977) (Atari) (4K)", "Uses the Driving Controllers", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "28", "", "", "" }, - { "081e2c114c9c20b61acf25fc95c71bf4", "Parker Brothers, Ed English, David Lamkins", "PB5300", "Frogger (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "082fdc8bd47fef01482ce5883c4ffdb8", "Charles Morgan", "", "Tanks DX (Charles Morgan) (Hack)", "Hack of Tanks But No Tanks", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0832fb2ee654bf9382bc57d2b16d2ffc", "Apollo, Ed Salvo", "AP-1001", "Skeet Shoot (1981) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "083e7cae41a874b2f9b61736c37d2ffe", "Imagic, Rob Fulop, Bob Smith", "720106-2A, IA3600P, EIX-009-04I", "Riddle of the Sphinx (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "085322bae40d904f53bdcc56df0593fc", "Parker Brothers, Dave Engman, Dawn Stockbridge", "PB5340", "Tutankham (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0856f202b18cd46e44fd1dc3b42e9bfb", "", "", "Frame Counter 1 (2001) (Jake Patterson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0866e22f6f56f92ea1a14c8d8d01d29c", "Androbot - Western Technologies, Michael Case, Lenny Carlson", "", "AndroMan on the Moon (1984) (Western Tech) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0890a5b089191f45d0f08dd1e3235687", "", "", "Star Fire - 4K Version (25-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0894aa7be77521f9df562be8d9555fe6", "CBS Electronics, Dan Kitchen, Garry Kitchen", "4L1700, 4L1701, 4L1702, 4L1802, 4L2274", "Donkey Kong (1982) (CBS Electronics) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08989fa4ff537f5dbd611aff4019521a", "Atari, Gary Palmer", "CX26163P", "Fun with Numbers (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08bd4c1dcc843f6a0b563d9fd80b3b11", "Quelle", "343.273 9", "Phantompanzer II (1983) (Quelle) (PAL)", "AKA Thunderground", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08bf437d012db07b05ff57a0c745c49e", "Arcadia Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Meteoroids (1982) (Arcadia) (Prototype)", "Suicide Mission Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "08d1b6d75206edb999252caf542a2c7f", "Larry Petit", "", "Super Home Run (2003) (Larry Petit) (Hack)", "Hack of Home Run", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08d60a58a691c7f690162850302dc0e1", "", "", "Poker Squares (V0.27) (PAL) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "08e5960bb52d9a3e2c9954677b5e4472", "Atari - CCW, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (10-20-1982) (Atari) (Prototype)", "Uses the Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "34", "", "", "" }, - { "08f4dc6f118f7c98e2406c180c08e78e", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Tug of War (2 of 3) (1983) (Arcadia) (PAL)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "02", "", "", "", "", "" }, - { "08f853e8e01e711919e734d85349220d", "Atari, Jerome Domurat, Michael Sierchio", "CX2667", "RealSports Soccer (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0906c6e0e4bda9c10cfa4c5fc64d2f4b", "Retroactive", "", "Qb (V0.12) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "090f0a7ef8a3f885048d213faa59b2f8", "Carrere Video - Western Technologies - Teldec - Prism", "USC1012", "M.A.D. (1983) (Carrere Video) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "09274c3fc1c43bf1e362fda436651fd8", "Thomas Jentzsch", "", "Acid Drop (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "6", "240", "", "" }, - { "09388bf390cd9a86dc0849697b96c7dc", "Absolute Entertainment, Alex DeMeo", "AG-045-04, AK-045-04", "Pete Rose Baseball (1988) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0945081a6bd00345ff3d58eb7a07330a", "", "", "Stampede (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0956285e24a18efa10c68a33846ca84d", "Dismac", "", "Viagem Espacial (Dismac)", "AKA Star Voyager", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0963aa9f7f6cf5a36ff700001583624e", "Franklin Cruz", "", "Space Invaders 2 (Hack) [o1]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "096649575e451508006b17e0353259a5", "Justin J. Scott", "", "Yar Vs. Yar (2002) (Justin J. Scott) (Hack)", "Hack of Yars' Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "097074f24cde141fe6a0f26a10333265", "", "", "Marble Craze (V0.90) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "097936b07e0e0117b9026ae6835eb168", "Imagic, Dennis Koble", "720100-2B, IA3000P", "Trick Shot (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "09abfe9a312ce7c9f661582fdf12eab6", "Atari, Douglas Neubauer", "CX26154", "Super Football (1988) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "09d19274c20768f842e8fae84b766abe", "", "", "Star Fire - Animated Patricles (06-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "09e1ecf9bd2a3030d5670dba7a65e78d", "Atari, James Andreasen", "CX2654", "Haunted House (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "09f89bbfa2ab00f1964d200e12d7ced0", "Atari", "MA017600", "Diagnostic Test Cartridge 2.6 (1982) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0a1b98937911d621b004b1617446d124", "", "", "Hangman Pac-Man Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0a981c03204ac2b278ba392674682560", "Atari, Bob Whitehead - Sears", "CX2651 - 99805, 49-75602", "Blackjack (1977) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, - { "0aa208060d7c140f20571e3341f5a3f8", "U.S. Games Corporation - Western Technologies, Jeff Corsiglia, Paul Allen Newell, Tom Sloper", "VC1009", "Towering Inferno (1982) (U.S. Games)", "Uses the Joystick Controllers (swapped)", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "220", "YES", "" }, - { "0abf64ca504a116adca80f77f85e00fb", "", "", "Cube Conquest (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0ac0d491763153fac75f5337ce32a9d6", "", "", "SPAM Image Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0acaf71e60b89f6b6eab63db6ab84510", "", "", "This Planet Sucks (Greg Troutman) [a2]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "0aceb7c3bd13fe048b77a1928ed4267d", "Imagic, Bob Smith", "720102-2B, IA3201P, EIX-011-04I", "Star Voyager (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0ad9a358e361256b94f3fb4f2fa5a3b1", "Atari, Carol Shaw, Nick 'Sandy Maiwald' Turner - Sears", "CX2608 - 49-75165", "Super Breakout (1982 - 1981) (Atari) [a]", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, - { "0adb21206de92e8aec5ef295805ebb90", "", "", "Solaris (Genesis)", "Genesis controller (C switches to map mode)", "Hack of Solaris", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "0ae3497e731ca0bf6a77b23441d9d9f9", "", "", "Analog Clock (V0.0) (20-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0af51ceb4aecc7a8fc89781ac44a1973", "Barry Laws Jr.", "", "Face Invaders Deluxe (Barry Laws Jr.) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0afe6ae18966795b89314c3797dd2b1e", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692, CX2692P", "Moon Patrol (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b01909ba84512fdaf224d3c3fd0cf8d", "", "", "Revenge of the Apes (Hack)", "Hack of Planet of the Apes", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b1056f1091cfdc5eb0e2301f47ac6c3", "Tigervision - Software Electronics Corp., Karl T. Olinger - Teldec", "7-001 - 3.60001 VE", "King Kong (1982) (Tigervision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b17ed42984000da8b727ca46143f87a", "Atari - CCW, Christopher H. Omarzu", "CX26104", "Big Bird's Egg Catch (05-17-1983) (Atari) (Prototype)", "Uses the Keypad Controller", "Prototype", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, - { "0b24658714f8dff110a693a2052cc207", "CCE", "C-815", "Seaquest (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b33252b680b65001e91a411e56e72e9", "CCE", "C-832", "Atlantis (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b4e793c9425175498f5a65a3e960086", "CCE", "", "Kung Fu Master (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b55399cf640a2a00ba72dd155a0c140", "Imagic, Wilfredo Aguilar, Michael Becker, Rob Fulop", "720111-1A, 03205", "Fathom (1983) (Imagic)", "AKA Scuba", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0b577e63b0c64f9779f315dca8967587", "Videospielkassette - Ariola", "PGP236", "Raketen-Angriff (Ariola) (PAL)", "AKA Missile Control", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0b8d3002d8f744a753ba434a4d39249a", "Sears Tele-Games, Robert Zdybel", "CX2619 - 49-75159", "Stellar Track (1981) (Sears)", "AKA Stella Trak", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0bf19e40d5cd8aa5afb33b16569313e6", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (01-04-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0bf1e354304f46c0caf8fc0f6f5e9525", "Arcadia Corporation, Stephen Harland Landrum", "AR-4105", "Official Frogger (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "0bfabf1e98bdb180643f35f2165995d0", "Atari, Bob Whitehead - Sears", "CX2623 - 6-99819, 49-75108, 49-75125", "Home Run (1978) (Atari)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "0c0392db94a20e4d006d885abbe60d8e", "", "", "Dodge Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0c35806ff0019a270a7acae68de89d28", "Froggo", "FG1003", "Task Force (1987) (Froggo)", "AKA Gangster Alley", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0c48e820301251fbb6bcdc89bd3555d9", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Stargate (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0c54811cf3b1f1573c9164d5f19eca65", "Activision, David Crane - Ariola", "EAG-001, PAG-001, EAG-001-04B, EAG-001-04I - 711 001-715", "Dragster (1980) (Activision) (PAL)", "AKA Dragster Rennen, Drag Strip", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0c7926d660f903a2d6910c254660c32c", "Atari, Larry Kaplan", "CX2602, CX2602P", "Air-Sea Battle (1977) (Atari) (PAL)", "AKA Anti-Aircraft", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "0c7bd935d9a7f2522155e48315f44fa0", "Carrere Video - Western Technologies, Jeff Corsiglia, Paul Allen Newell, Tom Sloper - Teldec - Prism", "USC1009", "Infernal Tower (1983) (Carrere Video) (PAL)", "AKA Towering Inferno", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "YES", "" }, - { "0c80751f6f7a3b370cc9e9f39ad533a7", "Atari, Carla Meninsky", "CX2610", "Warlords (1981) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 50", "", "", "", "", "" }, - { "0cb7af80fd0ddef84844481d85e5d29b", "", "", "Mr. Pac-Man (El Destructo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0cc8224ff1edfe458e8629e9e5fe3f5b", "", "", "Trick 12 (2001) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0cdd9cc692e8b04ba8eb31fc31d72e5e", "Thomas Jentzsch", "", "Wing War (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0cebb0bb45a856b23f56d21ce7d1bc34", "20th Century Fox Video Games, Bill Aspromonte", "11131", "Crash Dive (1983) (20th Century Fox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0cfdd2f3b243cac21f38a0f09f54bead", "", "", "Overhead Adventure Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d07d2c1be1a5eaaea235a533bcda781", "", "", "Scrolling Playfield 1 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d09cff0d28033c02c3290edfc3a5cea", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d1b3abf681a2fc9a6aa31a9b0e8b445", "Atari", "CX26163P", "Laser Blast (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d27c7f5db349b592f70f68daf5e8f3b", "", "", "Space Instigators (21-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d35618b6d76ddd46d2626e9e3e40db5", "", "", "X-Doom V.26 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d5af65ad3f19558e6f8e29bf2a9d0f8", "Atari - Sculptured Software, Adam Clayton", "CX26151, CX26151P", "Dark Chambers (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0d6b974fe58a1bdd453600401c407856", "Atari", "", "128-in-1 Junior Console (Chip 3 or 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d786a41695e5fc8cffd05a6dbb3f659", "", "", "Scrolling Playfield With Score (10-02-2003) (Aaron Bergstrom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d7e630a14856f4d52c9666040961d4d", "", "", "Wavy Line Test (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0d90a0ee73d55539b7def24c88caa651", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0db4f4150fecf77e4ce72ca4d04c052f", "Atari, Carol Shaw - Sears", "CX2618 - 49-75123", "3-D Tic-Tac-Toe (1980) (Atari)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0dd4c69b5f9a7ae96a7a08329496779a", "Tigervision - Software Electronics Corp., Karl T. Olinger - Teldec", "7-001 - 3.60001 VE", "King Kong (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0de53160a8b54c3aa5aed8d68c970b62", "Quelle", "806.174 9", "Fuchs & Schweinchen Schlau (1983) (Quelle) (PAL)", "AKA Oink!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0dfbdadf8f1bc718e7e1bb3ccd5fef3d", "", "", "Mr. Pac-Man (New start tune) (El Destructo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0e0808227ef41f6825c06f25082c2e56", "", "", "Candi (Hack) [a]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0e08cd2c5bcf11c6a7e5a009a7715b6a", "", "", "Boing! (PD) [a1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0e224ea74310da4e7e2103400eb1b4bf", "Atari, Gary Shannon, Howard Scott Warshaw", "", "Mind Maze (10-10-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "MINDLINK", "", "", "", "", "", "", "" }, - { "0e4b2b6e014a93ef8be896823da0d4ec", "", "", "Skiing (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0e713d4e272ea7322c5b27d645f56dd0", "Home Vision - Gem International Corp. - VDI", "VCS83105", "Panda Chase (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "0e7e73421606873b544e858c59dc283e", "Digivision", "", "Super Soccer (Digivision)", "AKA RealSports Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0e86470791b26292abe1c64545c47985", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Down on the Line (3 of 3) (1983) (Arcadia) (PAL)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "01 70", "", "", "", "", "" }, - { "0ec93f519bb769e0d9f80e61f6cc8023", "Atari - GCC, John Allred, Mike Feinstein", "CX2688", "Jungle Hunt (02-25-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0eebfb60d437796d536039701ec43845", "Fabrizio Zavagli", "", "Cakewalk (Fabrizio Zavagli)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0eecb5f58f55de9db4eedb3a0f6b74a8", "Xonox - Beck-Tech", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "0ef64cdbecccb7049752a3de0b7ade14", "Atari, Joe Decuir, Larry Caplan, Steve Mayer, Larry Wagner", "CX26163P", "Combat (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "0f14c03050b35d6b1d8850b07578722d", "Jeffry Johnston", "", "Radial Pong - Version 10 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f24ca5668b4ab5dfaf217933c505926", "", "", "Fantastic Voyage (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f2e09c71cc216f79d22a804152ba24b", "Bob Colbert", "", "Scroller Demo (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0f341d1f4e144e3163d9a5fc5a662b79", "", "", "RUN Platform Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "0f39fc03d579d0d93a6b729a3746843e", "Atari, Sam Comstock, Richard Dobbis, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (05-27-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f643c34e40e3f1daafd9c524d3ffe64", "Atari, Robert C. Polaro, Alan J. Murphy - Sears", "CX2609 - 49-75186", "Defender (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f6676b05621f80c670966e2995b227a", "", "", "Globe Trotter Demo 1 (24-03-2003) (Weston)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f738dc44437557624eb277ed7ad91c9", "", "", "Grand Prix (Unknown) (PAL)", "AKA Grand Prix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0f8043715d66a4bbed394ef801d99862", "Quelle", "684.733 9", "Robin Hood (1983) (Quelle) (PAL)", "AKA Save Our Ship", "", "", "", "", "", "", "", "", "", "", "", "", "45", "", "", "" }, - { "0f95264089c99fc2a839a19872552004", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0fba7d8c3520bdb681f75494e498ec36", "", "", "Gunfight 2600 - Final Run (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0fbf618be43d4396856d4244126fe7dc", "Quelle", "805.784 6", "Labyrinth (1983) (Quelle) (PAL)", "AKA Maze Craze", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "" }, - { "0fc161704c46e16f7483f92b06c1558d", "CCE", "C-853", "Spider Fighter (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "0fcff6fe3b0769ad5d0cf82814d2a6d9", "Suntek", "SS-027", "Zoo Fun (Suntek) (PAL)", "AKA Panda Chase", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "0fd72a13b3b6103fc825a692c71963b4", "Imagic, Rob Fulop", "720104-2A, IA3204P, EIX-008-04I", "Cosmic Ark (1982) (Imagic) (PAL) [selectable starfield]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "101ab60f4000a5d13792ef0abad5f74b", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "102672bbd7e25cd79f4384dd7214c32b", "Atari, Alan Miller - Sears", "CX2642 - 6-99814", "Hunt & Score - Memory Match (1978) (Atari)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "103d4c890c2108cb536372c98d093e5f", "", "", "Star Fire - Star Background (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "103e9d616328969f5d7b4e0a381b25d5", "", "", "Playfield Illustration and Logo Demo (2001) (Jake Patterson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "103f1756d9dc0dd2b16b53ad0f0f1859", "Home Vision, Gem International Corp.", "", "Go Go Home Monster (1983) (Home Vision) (PAL)", "AKA Go Go Home", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "104468e44898b8e9fa4a1500fde8d4cb", "AtariAge, Chris Spry", "CX26200", "Princess Rescue (2013) (Sprybug)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "106326c262dfd3e8eaeabd961d2a0519", "", "", "PAL-NTSC Detector (15-11-2002) (CT)[a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "106855474c69d08c8ffa308d47337269", "Atari - Sculptured Software, Adam Clayton", "CX26151", "Dark Chambers (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "107cc025334211e6d29da0b6be46aec7", "Atari, Bob Smith - Sears", "CX2648 - 49-75161", "Video Pinball (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1086ff69f82b68d6776634f336fb4857", "Activision, David Crane", "AG-009", "Bloody Human Freeway (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10958cd0a1a81d599005f1797ab0e51d", "", "", "Centipede 2k (2000) (PD) (Hack)", "Hack of Centipede", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10a3cd14e5dcfdde6ff216a14ce7b7dd", "Atari", "CX262, CX2627P", "Human Cannonball (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10af8728f975aa35a99d0965de8f714c", "Dinatronic", "", "Seaquest (Dinatronic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10c8cfd8c37522f11d47540ff024e5f9", "Canal 3 - Intellivision", "C 3016", "Demon Attack (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10eae73a07b3da044b72473d8d366267", "Funvision - Fund. Int'l Co.", "", "Karate (1982) (Funvision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "10f0ecaf962aef1fc28abed870b01b65", "Atari, Paul Donaldson", "", "Bionic Breakthrough (06-22-1984) (Atari) (Prototype)", "Uses the Mindlink Controller", "Prototype", "", "", "", "", "", "", "MINDLINK", "", "", "", "", "", "", "", "" }, - { "10f62443f1ae087dc588a77f9e8f43e9", "Atari, Carla Meninsky", "CX2637, CX2637P", "Dodge 'Em (1980) (Atari) (PAL) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "110ac8ecaf1b69f41bc94c59dfcb8b2d", "", "", "Demon Attack (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "111029770226b319524134193886a10e", "Hozer Video Games", "", "Gunfight 2600 - One Limit Reached! (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "11330eaa5dd2629052fac37cfe1a0b7d", "128-in-1 Junior Console", "", "Human Cannonball (128-in-1 Junior Console) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "113cd09c9771ac278544b7e90efe7df2", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari) [no grid markers]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "114c599454d32f74c728a6e1f71012ba", "Activision, Bob Whitehead - Ariola", "EAX-015, EAX-015-04I - 711 015-725", "Chopper Command (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "11bcf5c752088b5aaf86d6c7a6a11e8d", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "11cf751bc8173db105eabd119c5844ba", "", "", "Star Fire - Crosshair (12-02-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "11e7e0d9437ec98fa085284cf16d0eb4", "", "", "Bowling (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "11f9532557e4c9569f4b242164006161", "Chris Walton, Justin Hairgrove, Tony Morse", "", "Hunchy II (2005) (PAL)", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1201c18cf00d2c236f42e4d7d8c86aa1", "", "", "Nick Bensema Demo (Nick Bensema)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "12123b534bdee79ed7563b9ad74f1cbd", "Absolute Entertainment, Alex DeMeo", "AG-041-04", "Title Match Pro Wrestling (1987) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1228c01cd3c4b9c477540c5adb306d2a", "Atari, Alan Miller", "CX26163P", "Basketball (32 in 1) (1988) (Atari) (PAL)", "Console ports are swapped", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "1266b3fd632c981f3ef9bdbf9f86ce9a", "Activision, Bob Whitehead", "EAZ-034-04, EAZ-034-04I", "Private Eye (1984) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1267e3c6ca951ff1df6f222c8f813d97", "", "", "Dragonfire (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1278f74ca1dfaa9122df3eca3c5bcaad", "Quelle", "719.013 5", "Ungeheuer der Tiefe (Quelle) (PAL)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1287535256bf5dff404839ac9e25c3e7", "PacManPlus", "Rev 2", "Alien Pac-Man (PacManPlus) (Hack)", "Hack of Alien", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "12937db3d4a80da5c4452b752891252d", "Digitel", "", "Megamania (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "12bca8305d5ab8ea51fe1cfd95d7ab0e", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00250", "Summer Games (1987) (Epyx) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "12d7e0d6b187889f8d150bf7034d1db2", "", "", "Poker Squares (V0.0e) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "130c5742cd6cbe4877704d733d5b08ca", "Home Vision - Gem International Corp. - VDI", "VCS83109", "World End (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1323c45d660f5a5b6d5ea45c6c4cbe4a", "Canal 3 - Intellivision", "", "Enduro (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "133456269a03e3fdae6cddd65754c50d", "Tigervision - Software Electronics Corporation - Teldec", "7-006 - 3.60008 VG", "Springer (1983) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "133a4234512e8c4e9e8c5651469d4a09", "Atari, Andrew Fuchs, Jeffrey Gusman, Dave Jolly, Suki Lee", "CX26117", "Obelix (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "133b56de011d562cbab665968bde352b", "Activision, John Van Ryzin", "AG-038-04", "Cosmic Commuter (1984) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1343de49c2a50d99176255f99f0d0234", "Gray Games & AtariAge", "", "E.T. Book Cart (PAL)", "Charles F. Gray & Michael Rideout", "", "", "", "", "", "", "", "", "", "", "", "", "24", "280", "YES", "55" }, - { "13448eb5ba575e8d7b8d5b280ea6788f", "Digivision", "", "Crackpots (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1345e972dbe08ea3e70850902e20e1a5", "Greg Troutman", "", "Dark Mage (rough beta) (Greg Troutman) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "1351c67b42770c1bd758c3e42f553fea", "Digivision", "", "Keystone Kapers (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "135708b9a7dd20576c1b66ab2a41860d", "", "", "Hangman Man Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13584411da0a8d431991035423fdc0dc", "Jone Yuan Telephonic Enterprise Co", "", "Skiing (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1367e41858be525710eb04d0dab53505", "Kyle Pittman", "", "Zelda (2003) (Kyle Pittman) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "136f75c4dd02c29283752b7e5799f978", "Atari, Dan Hitchens - Sears", "CX2650 - 49-75168", "Berzerk (1982) (Atari)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13895ef15610af0d0f89d588f376b3fe", "Tigervision, Rorke Weigandt", "7-005", "Marauder (1982) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13a37cf8170a3a34ce311b89bde82032", "Atari - GCC, Mark Ackerman, Tom Calderwood, Glenn Parker", "CX2684, CX2684P", "Galaxian (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13a991bc9c2ff03753aeb322d3e3e2e5", "Funvision - Fund. International Co.", "", "Galactic (Funvision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13aa1f9ac4249947e4af61319d9a08f2", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13abc32f803165c458bb086fa57195fb", "Christian Samuel", "", "E.T. The Extra-Testical (Christian Samuel) (Hack)", "Hack of E.T. The Extra-Terrestrial", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13ccc692f111d52fec75d83df16192e2", "Canal 3 - Intellivision", "", "Fishing Derby (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13d8326bf5648db4dafce45d25e62ddd", "", "", "Atari Logo Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "13dfb095e519a555a5b60b7d9d7169f9", "", "", "Red Line Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "140909d204abd6841c64cdad4d7765b4", "", "", "Moving Blue Ladder Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "14163eb2a3ddd35576bd8527eae3b45e", "", "", "Multi-Color Demo 6 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1423f560062c4f3c669d55891a2bcbe7", "CCE", "C-859", "MASH (1983) (CCE) [a]", "AKA M.A.S.H", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1428029e762797069ad795ce7c6a1a93", "", "", "Thunderground (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "143918368f4f4dfff90999188c0197c9", "", "", "Unknown Title (bin00016 (200110)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1442d1b35a6478fba22ae7dd1fcb5634", "", "", "Thrust (V0.2) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "148471144ccebd7f6aa9aa9215896533", "Parker Brothers - JWDA, Todd Marshall", "PB5550", "Q-bert's Qubes (1984) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "149b543c917c180a1b02d33c12415206", "CCE", "C-857", "Superman (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "14a56b493a8d9d10e94a3e100362e3a2", "Hozer Video Games", "", "Gunfight 2600 - Early Play-kernel (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "14b1e30982962c72f426e2e763eb4274", "Atari, Carol Shaw - Ralph Lauren", "", "Polo (1978) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "14c2548712099c220964d7f044c59fd9", "First Star Software, Alex Leavens, Shirley Ann Russell", "", "Boing! (1983) (First Star Software)", "AKA Bubbles, Soap Suds, The Emphysema Game", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "14d365bbfaac3d20c6119591f57acca4", "", "", "Video Life (Unknown) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "14dbb3686dd31964332dc2ef0c55cad0", "", "", "Demo Image Series #15 - Three Marios (PAL) (Non-Interleave) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "151c33a71b99e6bcffb34b43c6f0ec23", "Parker Brothers, Laura Nikolich", "", "Care Bears (1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "151fa3218d8d7600114eb5bcd79c85cb", "Atari - CCW, Christopher H. Omarzu", "CX26104", "Big Bird's Egg Catch (05-02-1983) (Atari) (Prototype)", "Uses the Keypad Controller", "Prototype", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, - { "152c253478b009c275e18cd731b48561", "", "", "Quest (11-10-2002) (Chris Larkin)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "153f40e335e5cb90f5ce02e54934ab62", "Absolute Entertainment, Alex DeMeo", "EAZ-041-04I", "Title Match Pro Wrestling (1987) (Absolute) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1542662f665d2ffaa77b4b897dd2e2af", "", "", "Starfield (V1.0) (2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "155fa7f479dcba3b10b1494e236d6010", "Skyworks", "", "Tomcat (2002) (Skyworks) (PAL)", "AKA The F-14 Flight Simulator", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "157356f80c709ab675961d8b8b207e20", "", "", "Multi-Sprite Game V2.5 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "157bddb7192754a45372be196797f284", "Atari, Warren Robinett - Sears", "CX2613, 49-75154", "Adventure (1980) (Atari)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "159e5cd6ccb968015f49aed5adbc91eb", "Justin J. Scott", "", "Yar's Defeat (2002) (Justin J. Scott) (Hack)", "Hack of Yars' Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "15b498199ed0ed28057bf0dbdce9b8d8", "Hozer Video Games", "", "Jammed (V0.2) (Demo) (2001) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "15bcd74f2f1f2a63e1aa93e90d2c0555", "", "", "Incoming (22-08-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "15bf2ef7583bfcbbba630847a1dc5539", "Erik Eid", "", "Euchre (Jul 15) (2002) (Eric Eid) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "15c11ab6e4502b2010b18366133fc322", "Atari - Axlon, Tod Frye - Heuristica, Augustin Ortiz", "CX26169", "Shooting Arcade (09-19-1989) (Atari) (Prototype)", "Uses the Light Gun Controller (left only)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "15dd21c2608e0d7d9f54c0d3f08cca1f", "Data Age, J. Ray Dettling", "112-008", "Frankenstein's Monster (1983) (Data Age)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "15fe28d0c8893be9223e8cb2d032e557", "", "", "Towering Inferno (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "1619bc27632f9148d8480cd813aa74c3", "Thomas Jentzsch", "", "Steeple Chase (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "A", "", "", "", "", "", "", "", "", "220", "YES", "" }, - { "161ded4a85d3c78e44fffd40426f537f", "", "", "JtzBall (Alpha) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "163e7e757e2dc44469123ff0e5daec5e", "", "", "Many Blue Bars and Text Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "169d4c7bd3a4d09e184a3b993823d048", "", "", "Superman (Unknown) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "16cb43492987d2f32b423817cdaaf7c4", "Atari, Larry Kaplan - Sears", "CX2602 - 99802, 6-99802, 49-75102", "Air-Sea Battle (1977) (Atari)", "AKA Target Fun (Anti-Aircraft)", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "16cc6d1b4ddce51c767a1ba8e5ff196c", "", "", "Big - Move This Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "16e04823887c547dc24bc70dff693df4", "Atari", "CX26163P", "Tennis (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "16ee443c990215f61f7dd1e55a0d2256", "Spectravideo, David Lubar", "SA-218, SA-218C", "Bumper Bash (1983) (Spectravideo) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "54", "", "", "" }, - { "16f494f20af5dc803bc35939ef924020", "Mark De Smet", "", "Video Simon (Mark De Smet)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "16fbb36a6124567405a235821e8f69ee", "", "", "Star Fire (28-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "170e7589a48739cfb9cc782cbb0fe25a", "M Network - APh Technological Consulting, Hal Finney - INTV", "MT5666", "Astroblast (1982) (M Network) [fixed]", "Can also use left joystick", "Uncommon", "", "", "", "", "", "", "PADDLES", "", "YES", "AUTO 55", "", "", "", "", "" }, - { "171cd6b55267573e6a9c2921fb720794", "Kurt Howe", "", "Adventure 34 (Kurt Howe) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1733772165d7b886a94e2b4ed0f74ccd", "", "", "Boring Journey Escape (Hack)", "Hack of Journey - Escape", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, - { "1738b2e3f25ab3eef3cecb95e1d0d957", "", "", "Hangman Monkey Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17512d0c38f448712f49f36f9d185c4e", "Retroactive", "", "Qb (Release Candidate #1) (Retroactive)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "17515a4d0b7ea5029ffff7dfa8456671", "Piero Cavina", "", "Multi-Sprite Demo V1.1 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "176d3fba7d687f2b23158098e103c34a", "Zach Matley", "", "Combat AI (16-02-2003) (Zach Matley)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "34", "", "", "" }, - { "177504abd4260c4265e1338955e9fa47", "HCC Software", "", "Pitfall! (Steroids Hack)", "Hack of Pitfall! (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1782929e1c214b70fb6884f77c207a55", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (Prototype)", "Pitfall Harry's Jungle Adventure (Jungle Runner)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17ba72433dd41383065d4aa6dedb3d91", "", "", "SCSIcide (09-06-2001) (Joe Grand)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17badbb3f54d1fc01ee68726882f26a6", "M Network - APh Technological Consulting, Hal Finney, Bruce Pedersen - INTV", "MT5659", "Space Attack (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17bbe288c3855c235950fea91c9504e9", "Dismac", "", "Pega Ladrao (Dismac)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17c0a63f9a680e7a61beba81692d9297", "U.S. Games Corporation - Western Technologies, Tom Sloper", "VC2004", "Picnic (1983) (U.S. Games)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, - { "17d000a2882f9fdaa8b4a391ad367f00", "Atari - GCC", "CX2676", "Centipede (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "17ee158d15e4a34f57a837bc1ce2b0ce", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691, CX2691P", "Joust (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "17ee23e5da931be82f733917adcb6386", "Salu, Dennis M. Kiss", "460758", "Acid Drop (1992) (Salu) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "50", "256", "", "" }, - { "1802cc46b879b229272501998c5de04f", "Atari - CCW, Christopher H. Omarzu", "CX26104", "Big Bird's Egg Catch (1983) (Atari)", "Uses Kids/Keypad Controllers", "Rare", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "183020a80848e06a1238a1ab74079d52", "Thomas Jentzsch", "", "Missile Command (Amiga Mouse) (2002) (TJ) (PAL)", "Uses Amiga Mouse Controller", "Homebrew", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "YES", "" }, - { "1862fca4f98e66f363308b859b5863af", "Atari", "", "128-in-1 Junior Console (Chip 1 of 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18760f1f9ca5e18610115cf7b815b824", "", "", "Star Fire (23-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18a970bea7ac4d29707c8d5cd559d03a", "", "", "Bridge (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18b28b386abdadb3a700ac8fb68e639a", "Manuel Polik", "", "Gunfight 2600 (MP) (PAL)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18bebbbd41c234f82b1717b1905e6027", "", "", "Space Instigators (Public Release) (02-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18d26111cef66dff0c8af8cf0e117843", "", "", "Tunnel Demo (Cycling Colours 2) (29-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18dc28bc22402f21e1c9b81344b3b8c5", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2684, CX2684P", "Galaxian (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "18ed63e3ce5bc3dd2d8bd188b807f1a2", "", "", "Stell-A-Sketch (Bob Colbert) (PD) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "18f299edb5ba709a64c80c8c9cec24f2", "Home Vision - Gem International Corp. - VDI", "VCS83111", "Asteroid Fire (1983) (Home Vision) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "19098c46da0640f2b5763167dea6c716", "Andrew Wallace", "", "Laseresal 2002 (NTSC) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "191449e40b0c56411c70772706f79224", "", "", "Multi-Color Demo 2 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "19162393786098d50587827588198a86", "Jone Yuan Telephonic Enterprise Co", "", "Flag Capture (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "191ac4eec767358ee3ec3756c120423a", "", "", "Checkers (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "192aa2e8c795c9e10a7913e5d41feb81", "Atari - GCC, Jaques Hugon, Seth Lipkin", "CX26125", "Los Angeles 1984 Games (1984) (Atari) (Prototype) (PAL)", "AKA Track and Field (Uses Track & Field Controller)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "193f060553ba0a2a2676f91d9ec0c555", "Atari, Carol Shaw", "CX2636, CX2636P", "Video Checkers (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "199985cae1c0123ab1aef921daace8be", "", "", "Euchre (Release Candidate 2) (PAL) (01-10-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "199eb0b8dce1408f3f7d46411b715ca9", "Parker Brothers, David Lamkins, Laura Nikolich", "PB5900", "Spider-Man (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "19a9d3f9fa1b1358fb53009444247aaf", "", "", "Blackjack (Unknown) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "56", "", "", "" }, - { "19abaf2144b6a7b281c4112cff154904", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "19d6956ff17a959c48fcd8f4706a848d", "PlayAround - J.H.M.", "202", "Burning Desire (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "19d9b5f8428947eae6f8e97c7f33bf44", "", "", "Fortress (Dual Version) (20-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "19e739c2764a5ab9ed08f9095aa2af0b", "Atari, Andrew Fuchs, Jeffrey Gusman, Dave Jolly, Suki Lee", "CX26117", "Obelix (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "19e761e53e5ec8e9f2fceea62715ca06", "Panda", "104", "Scuba Diver (1983) (Panda)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1a23540d91f87584a04f184304a00648", "", "", "Race Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1a613ce60fc834d4970e1e674b9196b3", "Home Vision - Gem International Corp. - VDI", "VCS83135", "Tanks War (1983) (Home Vision) (PAL)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1a624e236526c4c8f31175e9c89b2a22", "Rainbow Vision - Suntek", "SS-007", "Space Raid (Rainbow Vision) (PAL) [a]", "AKA MegaMania", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1a8204a2bcd793f539168773d9ad6230", "Atari, Rob Fulop - Sears", "CX2638 - 49-75166", "Missile Command (1981) (Atari) [no initials]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1aa7344b563c597eecfbfcf8e7093c27", "David Marli", "", "Slot Invaders (David Marli) (Hack)", "Hack of Slot Machine", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1b0f3d7af668eeea38ddd6182d8f48fb", "Jone Yuan Telephonic Enterprise Co", "", "Cosmic Swarm (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "YES", "" }, - { "1b1daaa9aa5cded3d633bfcbeb06479c", "", "", "Ship Demo (V 1502) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1b22a3d79ddd79335b69c94dd9b3e44e", "Tron", "", "Moon Patrol (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1b4b06c2a14ed3ee73b7d0fd61b6aaf5", "Arcadia Corporation, Stephen H. Landrum", "AR-4400", "Excalibur (Dragonstomper Beta) (1982) (Arcadia) (Prototype) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1b8c3c0bfb815b2a1010bba95998b66e", "Telegames", "", "Frogs and Flies (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1b8d35d93697450ea26ebf7ff17bd4d1", "Quelle - Otto Versand", "176.764 9 - 781644", "Marineflieger (1983) (Quelle) (PAL)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1bb91bae919ddbd655fa25c54ea6f532", "Suntek", "SS-026", "Treasure Island (Suntek) (PAL)", "AKA Treasure Discovery", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1bc2427ac9b032a52fe527c7b26ce22c", "Intellivision Productions - M Network - APh Technological Consulting, Bruce Pedersen, Larry Zwick", "MT5860", "Sea Battle (1983) (M Network)", "High Seas", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1bef389e3dd2d4ca4f2f60d42c932509", "Dimax - Sinmax", "SM8001", "Space Robot (1983) (Dimax - Sinmax) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "1bf503c724001b09be79c515ecfcbd03", "", "", "Bumper Bash (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "54", "", "", "" }, - { "1c3f3133a3e5b023c77ecba94fd65995", "CCE", "C-830", "Planet Patrol (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1c5796d277d9e4df3f6648f7012884c4", "Quelle", "715.853 5", "Wachroboter jagt Jupy (Quelle) (PAL)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1c6eb740d3c485766cade566abab8208", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1c85c0fc480bbd69dc301591b6ecb422", "CCE", "", "Super Box (CCE)", "AKA RealSports Boxing", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1c8c42d1aee5010b30e7f1992d69216e", "PlayAround - J.H.M.", "205", "Gigolo (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "1cad3b56cc0e6e858554e46d08952861", "Jone Yuan Telephonic Enterprise Co", "", "Chopper Command (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1cafa9f3f9a2fce4af6e4b85a2bbd254", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2659", "Raiders of the Lost Ark (1982) (Atari) (PAL)", "Console ports are swapped", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "1cca2197d95c5a41f2add49a13738055", "Atari, Larry Kaplan - Sears", "CX2664 - 6-99818", "Brain Games (1978) (Atari)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "1cf59fc7b11cdbcefe931e41641772f6", "Sega", "005-01", "Buck Rogers - Planet of Zoom (1983) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "1d1d2603ec139867c1d1f5ddf83093f1", "Atari, Larry Kaplan - Sears", "CX2602 - 99802, 6-99802, 49-75102", "Air-Sea Battle (1977) (Atari) (4K)", "AKA Target Fun (Anti-Aircraft)", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1d284d6a3f850bafb25635a12b316f3d", "CCE", "", "H.E.R.O. (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1d2a28eb8c95da0d6d6b18294211839f", "", "", "Fishing Derby (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1d4e0a034ad1275bc4d75165ae236105", "20th Century Fox Video Games, Mark Klein", "11034", "Pick Up (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1d5eac85e67b8cff1377c8dba1136929", "", "", "Chronocolor Donkey Kong Sideways (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1d6ed6fe9dfbde32708e8353548cbb80", "Jone Yuan Telephonic Enterprise Co", "", "Super Challenge Baseball (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1da2da7974d2ca73a823523f82f517b3", "Spectravision - Spectravideo - Sirius Software, David Lubar", "SA-206", "Challenge of.... Nexar, The (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1db3bc4601f22cf43be7ce015d74f59a", "", "", "Ship Demo (V 10) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e060a8025512ad2127e3da11e212ccc", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (3 of 3) (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, - { "1e0ef01e330e5b91387f75f700ccaf8f", "Quelle - Otto Versand", "686.561 2 - 781627", "Mein Weg (1983) (Quelle) (PAL)", "AKA Challenge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e1290ea102e12d7ac52820961457e2b", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (12-15-1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "1e1817d9cbcc3ba75043b7db4e6c228f", "", "", "Star Fire (07-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e272d09c0e55f5ef14fcb76a735f6d7", "Atari, David Crane", "CX26163P", "Slot Machine (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e587ca91518a47753a28217cd4fd586", "Telesys, Jim Rupp, Jack Woodman", "1001", "Coco Nuts (1982) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e750000af77cc76232f4d040f4ab060", "Jone Yuan Telephonic Enterprise Co", "", "Raft Rider (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e85f8bccb4b866d4daa9fcf89306474", "Atari, Lou Harp", "CX26122", "Sinistar (02-13-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1e89f722494608d6ea15a00d99f81337", "", "", "River Raid (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "NTSC50", "", "", "", "" }, - { "1ea1abcd2d3d3d628f59a99a9d41b13b", "Jone Yuan Telephonic Enterprise Co", "", "Stampede (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1ea980574416bfd504f62575ba524005", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675", "Ms. Pac-Man (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1ec57bbd27bdbd08b60c391c4895c1cf", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (09-02-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1ec5bef77b91e59313cba205f15b06d7", "", "", "Overhead Adventure Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "60", "", "", "" }, - { "1ede4f365ce1386d58f121b15a775e24", "Parker Brothers, Dave Hampton, Tom Sloper", "931517", "Q-bert (1983) (Parker Bros) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1ee2cfc7d0333b96bd11f7f3ec8ce8bc", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (4 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1ee9c1ba95cef2cf987d63f176c54ac3", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675, CX2675P", "Ms. Pac-Man (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1ef04e7e508296a8d9eb61cc7dae2e5d", "SOLID Corp. (D. Scott Williamson)", "CX2655-069", "Star Castle 2600 (SolidCorp) [069]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "1f21666b8f78b65051b7a609f1d48608", "K-Tel Vision", "", "Vulture Attack (1982) (K-Tel Vision)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f2ae0c70a04c980c838c2cdc412cf45", "Atari - GCC", "CX2698", "Rubik's Cube (1984) (Atari)", "AKA Atari Video Cube", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f349dd41c3f93c4214e5e308dccb056", "", "", "Virtual Pet Demo 2 (CRACKERS) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f40eefc7447336ae6cd8ffa5eb325be", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype) (4K) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f562b89d081e36d58e6fc943512ec05", "", "", "Hangman Man Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f5a2927a0b2faf87540b01d9d7d7fd1", "Pet Boat", "", "Tennis (Pet Boat) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1f60e48ad98b659a05ce0c1a8e999ad9", "", "", "Mondo Pong V2 (Piero Cavina) (PD)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "01", "", "", "", "", "" }, - { "1f773a94d919b2a3c647172bbb97f6b4", "Atari, Jerome Domurat, Peter C. Niday", "CX26115", "Dumbo's Flying Circus (07-11-1983) (Atari) (Prototype) (PAL)", "AKA Dumbo Flies Home", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1fa58679d4a39052bd9db059e8cda4ad", "Imagic, Dan Oliver", "720118-1A, 03208", "Laser Gates (1983) (Imagic)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1fa7a42c2c7d6b7a0c6a05d38c7508f4", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (09-04-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "1fa86282403fa35d103ab88a9d603c31", "SpiceWare - Darrell Spice Jr.", "", "Stay Frosty (SpiceWare) (PAL60)", "Part of Stella's Stocking 2007 Xmas compilation", "Homebrew", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "YES", "" }, - { "1fab68fd67fe5a86b2c0a9227a59bb95", "20th Century Fox Video Games - Videa, Lee Actor", "", "Lasercade (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "200309c8fba0f248c13751ed4fc69bab", "Jeffry Johnston", "", "Radial Pong - Version 1 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2008c76deba5953201ef75a09b2ff7dc", "", "", "Fortress (21-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "200a9d2a7cb4441ce4f002df6aa47e38", "", "", "Doomzerk (PD) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2016726db38ad6a68b4c48ba6fe51557", "Piero Cavina, Erik Mooney", "", "INV 2 (Piero Cavina, Erik Mooney)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "203049f4d8290bb4521cc4402415e737", "Tigervision, Robert H. O'Neil - Teldec", "7-007 - 3.60005 VG", "Polaris (1983) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "203abb713c00b0884206dcc656caa48f", "Imagic, Bob Smith", "720114-1A, 03207, IZ-001-04", "Moonsweeper (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "203b1efc6101d4b9d83bb6cc1c71f67f", "Quelle", "685.996 1", "Teller-Jonglieren! (1983) (Quelle) (PAL)", "AKA Dishaster", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "205070b6a0d454961dd9196a8e81d877", "", "", "Hangman Monkey Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2091af29b4e7b86914d79d9aaa4cbd20", "CBS Electronics - Woodside Design Associates, Harley H. Puthuff Jr.", "4L1802", "Donkey Kong Junior (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "251", "", "" }, - { "20ae62fb69c6cc6e8098cca8cd080487", "Zirok", "", "Tennis (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "20d4457ba22517253fcb62967af11b37", "Atari, Eric Manghise, Mimi Nyden, Joseph Tung", "CX2640", "RealSports Baseball (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "20dca534b997bf607d658e77fbb3c0ee", "Mythicon, Bill Bryner, Bruce de Graaf", "MA1002", "Fire Fly (1983) (Mythicon)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "20edcc3aa6c189259fa7e2f044a99c49", "Spectravision - Spectravideo", "SA-201", "Gangster Alley (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "211774f4c5739042618be8ff67351177", "Atari - GCC, Mark Ackerman, Tom Calderwood, Glenn Parker", "CX2684", "Galaxian (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "211f76dff0b7dad3f6fcac9d938ee61a", "JSK", "", "Custer's Viagra (JSK) (Hack) [a]", "Hack of Custer's Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "211fbbdbbca1102dc5b43dc8157c09b3", "Apollo", "AP-2009", "Final Approach (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2124cf92978c46684b6c39ccc2e33713", "", "", "Sea Monster (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "21299c8c3ac1d54f8289d88702a738fd", "K-Tel Vision", "", "Spider Maze (1982) (K-Tel Vision)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "212d0b200ed8b45d8795ad899734d7d7", "Atari, Richard Maurer, Christopher H. Omarzu - Coca Cola", "", "Pepsi Invaders (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "213e5e82ecb42af237cfed8612c128ac", "Sancho - Tang's Electronic Co.", "TEC006", "Forest (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "YES", "" }, - { "2162266b906c939b35c84ff9a0f50ad1", "Atari, Larry Kaplan", "CX2664, CX2664P", "Brain Games (1978) (Atari) (PAL) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "2179dfd7edee76efafe698c1bc763735", "", "", "Yellow Submarine (Cody Pittman) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "218b76f5a4142dc2ea9051a768583d70", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2684, CX2684P", "Galaxian (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "218c0fe53dfaaa37f3c823f66eafd3fc", "Atari, Alan Miller", "CX2624, CX2624P", "Basketball (1978) (Atari) (PAL)", "Console ports are swapped", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "21a96301bb0df27fde2e7eefa49e0397", "Data Age", "DA1003", "Sssnake (1982) (Data Age)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "21b09c40295c2d7074a83ae040f22edf", "", "", "Marble Craze (V0.90) (Easy Version) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "21d2c435bcccde7792d82844b3cf60f4", "Atari - GCC, Doug Macrae", "CX2677, CX2677P", "Dig Dug (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "21d7334e406c2407e69dbddd7cec3583", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2228c67d25e507603d4873d3934f0757", "", "", "Fu Kung! (V0.10) (28-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "22319be7a640af5314ec3c482cceb676", "", "", "Joustpong (05-07-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2240655247d6de1c585564004a853ab7", "", "", "Fu Kung! (V0.17) (07-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "225522777dc7155627808bde0c1d0ef0", "", "", "This Planet Sucks Demo 1 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "22675cacd9b71dea21800cbf8597f000", "Atari, David Crane", "CX2605, CX2605P", "Outlaw (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "227532d82505c3c185a878273c285d5f", "", "", "Hangman Man Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "22abbdcb094d014388d529352abe9b4b", "Apollo", "AP-2012", "Squoosh (1983) (Apollo) (Prototype) [a]", "AKA Vat's Incredible!, The Grape Escape", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "22b22c4ce240303012e8a9596ae8d189", "", "", "Skeleton+ (03-05-2003) (Eric Ball) (PAL)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "22f6b40fc82110d68e50a1208ae0bb97", "", "", "Purple Bar Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2319922df4d0c820b3e5f15faa870cc3", "Atari - GCC, Mike Feinstein", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2327456f86d7e0deda94758c518d05b3", "Digitel", "", "Mr. Postman (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2351d26d0bfdee3095bec9c05cbcf7b0", "", "", "Warring Worms (19-01-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2353725ec98e0f0073462109e886efd7", "Champ Games", "CG-03-P", "Scramble (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "SAVEKEY", "", "", "PAL60", "", "", "YES", "" }, - { "235436ab0832370e73677c9c6f0c8b06", "", "", "Beast Invaders (Double Shot) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2365e1534d67f94d8670394ab99150ce", "Thomas Jentzsch", "", "Missile Command (Atari Mouse) (2002) (TJ)", "Uses Atari ST Mouse Controller", "Homebrew", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "YES", "" }, - { "23d445ea19a18fb78d5035878d9fb649", "CBS Electronics - JWDA, Sylvia Day, Todd Marshall, Henry Will IV", "4L1818, 4L1819, 4L1820, 4L1821", "Mouse Trap (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "23e4ca038aba11982e1694559f3be10f", "", "", "Big Dig (V3) (20-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "23fad5a125bcd4463701c8ad8a0043a9", "CCE", "C-840", "Stone Age (1983) (CCE)", "Uses the Joystick Controllers (swapped)", "", "", "", "A", "A", "", "YES", "", "", "", "", "", "", "220", "YES", "" }, - { "240bfbac5163af4df5ae713985386f92", "Activision, Steve Cartwright", "AX-022", "Seaquest (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2432f33fd278dea5fe6ae94073627fcc", "CBS Electronics, Tom DiDomenico", "4L2477, 4L2482, 4L2485, 4L4171", "Blueprint (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2434102f30eeb47792cf0825e368229b", "Sparrow - Enter-Tech, Paul Walters, Rick Harris, George Hefner, Barbara Ultis", "", "Arkyology (1983) (Sparrow) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24385ba7f5109fbe76aadc0a375de573", "CCE", "", "Xevious (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2447e17a4e18e6b609de498fe4ab52ba", "CCE", "", "Super Futebol (CCE)", "AKA RealSports Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "244c6de27faff527886fc7699a41c3be", "", "", "Matt Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2450dfa1df70d12b60683185775efed8", "Jeffry Johnston", "", "Radial Pong - Version 7 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24544ee5d76f579992d9522e9b238955", "Carrere Video - Western Technologies, Tom Sloper - Teldec - Prism", "USC2004", "Picnic (1983) (Carrere Video) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, - { "245f07c8603077a0caf5f83ee6cf8b43", "Home Vision - Thomas Jentzsch", "", "Parachute (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, - { "24759be31e8fe55d2829fd86bdf3181f", "Hozer Video Games", "", "Gunfight 2600 - Worst Nightmare... (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "247fa1a29ad90e64069ee13d96fea6d6", "CCE", "C-867", "Radar (1983) (CCE)", "AKA Exocet", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2496d404bfc561a40a80bea6a69695c3", "CCE", "C-1007", "Jungle Hunt (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24ad538291eb5f5cac4b9998f3b851c3", "", "", "Gunfight 2600 - This time it's your decission! (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24aff972d58990f9b88a6d787c796f1e", "CBS Electronics", "4L1767, 4L1768, 4L1769, 4L1770", "Smurf (1982) (CBS Electronics) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24b5f4bbdb853eca38ea0cae2dfe73a1", "", "", "Home Run (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "24b9adac1b4f85b0bac9bf9b9e180906", "Angelino", "", "Space 2002 (Angelino) (Hack)", "Hack of Space Jockey", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24d018c4a6de7e5bd19a36f2b879b335", "Activision, Larry Miller", "AX-021", "Spider Fighter (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "24d9a55d8f0633e886a1b33ee1e0e797", "Thomas Jentzsch", "", "Dragon Defender (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "15", "240", "YES", "" }, - { "24df052902aa9de21c2b2525eb84a255", "Imagic, Dennis Koble", "720000-100, 720100-1B, IA3000, IA3000C", "Trick Shot (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "24fbf8250a71611e40ef18552e61b009", "", "", "Movable Grid Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2516f4f4b811ede4ecf6fbeb5d54a299", "Quelle", "701.134 9", "Schiessbude (1983) (Quelle) (PAL)", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2517827950fee41a3b9de60275c8aa6a", "Atari", "CX26163P", "Fishing (32 in 1) (1988) (Atari) (PAL)", "AKA Fishing Derby", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25265d0e7f88b3026003809f25ee025e", "Atari - GCC, Ava-Robin Cohen", "CX26123", "Jr. Pac-Man (1984) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25472dfdeef6a42581a231d631d6b04d", "", "", "Gunfight 2600 - Design thoughts (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25710bde8fa181b0c5cf0846b983bec1", "", "", "Demo Image Series #15 - Three Marios (NTSC) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "257bc3b72a6b5db3fd0d47619125b387", "CBS Electronics", "4L 2737 0000", "Omega Race (1983) (CBS Electronics) [a]", "Set right difficulty to 'A' for BoosterGrip in both ports", "", "", "", "", "", "", "", "BOOSTERGRIP", "BOOSTERGRIP", "", "", "", "", "", "", "" }, - { "25a21c47afe925a3ca0806876a2b4f3f", "Quelle", "685.640 5", "Der kleine Baer (1983) (Quelle) (PAL)", "AKA Frostbite", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25b52bf8dd215bcbd59c9abdb55c44f8", "Atari - GCC, Betty Ryan Tylko, Doug Macrae", "CX2694, CX2694P", "Pole Position (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25b6dc012cdba63704ea9535c6987beb", "Avalon Hill, Jean Baer, Bill Hood", "5004002", "Shuttle Orbiter (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25bb080457351be724aac8a02021aa92", "CBS Electronics", "4L1784, 4L1786, 4L1787, 4L2277", "Zaxxon (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25d4be3309b89583c6b39d9f93bf654f", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25e73efb9a6edf119114718bd2f646ba", "Atari, Suki Lee", "CX26113", "Miss Piggy's Wedding (1983) (Atari) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "25f2e760cd7f56b88aac88d63757d41b", "Activision, Bob Whitehead - Ariola", "EAG-002, EAG-002-04I, PAG-002 - 711 002-715", "Boxing (1980) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "25f879ff678130fea615ac418e7943f1", "Activision, Garry Kitchen", "EAX-025", "Keystone Kapers (1983) (Activision) (SECAM)", "", "", "", "", "", "", "", "", "", "", "", "", "SECAM", "", "", "", "" }, - { "25f9cf703575c5d63048c222f5463758", "", "", "Multi-Sprite Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "260c787e8925bf3649c8aeae5b97dcc0", "Thomas Jentzsch", "", "Hell Driver (Thomas Jentzsch)", "NTSC Conversion, joystick ports swapped", "Homebrew", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "262ccb882ff617d9b4b51f24aee02cbe", "Atari, Douglas Neubauer", "CX26154, CX26154P", "Super Football (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "265a85f66544eaf95fda06c3d9e48abf", "", "", "Tunnel Demo (Cycling Colours) (29-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "265c74a956500bd31efd24adc6d5ccf6", "Activision, Larry Miller", "AX-026, AX-026-04", "Enduro (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2683d29a282dd059535ac3bb250f540d", "", "", "Space Treat (12-01-2003) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "268f46038e29301568fa9e443e16e960", "Atarius Maximum", "", "Pitfall Unlimited (Atarius Maximus) (Hack)", "Hack of Pitfall", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "26bc2bdf447a17376aea7ef187ff6e44", "", "", "Amanda Invaders (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "26f4f8b098609164effef7809e0121e1", "", "", "Oystron (V2.7) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "270229c6d5578446e6a588492e4e5910", "", "", "Space Invaders 2 (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "271bfd5dc2673d382019f1fb6cab9332", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (Preview) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "273ce50db5a0d6da7ea827a54f44dee9", "", "", "Island Flyer Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "274d17ccd825ef9c728d68394b4569d2", "Playaround - J.H.M.", "202", "Bachelorette Party (1982) (Playaround)", "AKA Bachelor Party, Uses the paddle controllers", "Extremely Rare", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "AUTO 65", "", "22", "222", "YES", "" }, - { "277c7281ac945b8331e2e6fcad560c11", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (2 of 3) (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "277cca62014fceebb46c549bac25a2e3", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "277fa4b9a6bb7a8dcea2c5f38a4c25f0", "Atari, Alan J. Murphy, Robert Zdybel", "CX2668", "RealSports Football (1982) (Atari) (Prototype)", "AKA Football II", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "278155fc9956e9b6ef2359eb238f7c7f", "", "", "Donkey Kong Junior (Unknown) (Hack)", "Hack of Donkey Kong Junior", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2783006ee6519f15cbc96adae031c9a9", "Telegames", "", "Night Stalker (1989) (Telegames) (PAL) [a]", "AKA Dark Cavern", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "278531cc31915747018d22145823d2c9", "", "", "Defender MegaDrive (PAL) (Genesis)", "Genesis controller (C is smartbomb)", "Hack of Defender", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "278f14887d601b5e5b620f1870bc09f6", "Thomas Jentzsch", "", "SWOOPS! (v0.96) (TJ)", "Uses the Joystick (L) and Paddle (R) Controllers", "Homebrew", "", "", "", "", "", "", "", "PADDLES", "", "", "", "28", "", "", "" }, - { "27c4c2af4b46394bb98638af8e0f6e9d", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "27c6a2ca16ad7d814626ceea62fa8fb4", "Parker Brothers, Mark Lesser", "PB5590", "Frogger II (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "27f9e2e1b92af9dc17c6155605c38e49", "CCE", "", "Nightmare (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2808dc745ff4321dc5c8122abef6711f", "Retroactive", "", "Qb (2.11) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "28148a52b1955ce12c7a74d3a3e620a4", "CCE", "", "Freeway (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "281ff9bd0470643853de5cbd6d9e17f5", "Eckhard Stolberg", "", "Cubis (EM) (1997) (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2823364702595feea24a3fbee138a243", "Bit Corporation", "PG206", "Bobby Is Going Home (1983) (BitCorp) (PAL)", "AKA Bobby geht Heim", "Rare", "", "", "", "", "", "", "", "", "", "", "", "42", "", "", "" }, - { "2825f4d068feba6973e61c84649489fe", "", "", "Boom Bang (Unknown) (PAL)", "AKA Crackpots", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "282a77841cb3d33af5b56151acba770e", "Otto Versand", "311388", "Black Hole (1983) (Otto Versand) (PAL)", "AKA Cosmic Ark (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "283dee88f295834c4c077d788f151125", "Retroactive", "", "Qb (2.11) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "284ca61b2407bdba3938048b0a559015", "Atari, Tod Frye", "CX2695", "Xevious (05-25-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2854e5dfb84173fafc5bf485c3e69d5a", "Canal 3 - Intellivision", "C 3004", "Moon Patrol (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2880c6b59bd54b153174676e465167c7", "Tron", "", "Donkey Kong Jr. (Tron)", "AKA Donkey Kong Junior", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "28a2bea8f84936cb2e063f857414cda0", "Thiago Paiva", "", "Mega Mania Raid (1999) (Thiago Paiva) (Hack)", "Hack of Megamania", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "28a4cd87fb9de4ee91693a38611cb53c", "", "", "Skeleton (V1.1) (NTSC) (24-10-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "28d5df3ed036ed63d33a31d0d8b85c47", "Bit Corporation", "PG204", "Open, Sesame! (1983) (BitCorp) (PAL) [a]", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "38", "256", "YES", "" }, - { "2903896d88a341511586d69fcfc20f7d", "Activision, David Crane", "AX-014, AX-014-04", "Grand Prix (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "291bcdb05f2b37cdf9452d2bf08e0321", "Atari", "CX26163P", "32 in 1 Game Cartridge (1988) (Atari) (Prototype) (PAL)", "", "Prototype", "", "32IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "291cc37604bc899e8e065c30153fc4b9", "Activision, Carol Shaw", "AX-020, AX-020-04", "River Raid (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "291dd47588b9158beebe4accc3a093a6", "Atari", "", "32 in 1 Console ROM (02-10-1989) (Atari) (Prototype) (PAL)", "", "Prototype", "", "32IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "292a0bb975b2587f9ac784c960e1b453", "", "", "Qb (05-02-2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "292f2446a0325b7b423e88a2ebfeb5a0", "", "", "Cube Conquest (Non Interlaced) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "29396db58406084e416032c372734a3e", "", "", "Gunfight 2600 - Fixed Beta Release! (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2942680c47beb9bf713a910706ffabfe", "", "", "Blue Line Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "294762000e853b4319f9991c1ced5dfc", "", "", "T.F. Space Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "295f3679bdf91ca5e37da3f787b29997", "", "", "Exorcise (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "29630a20d356fb58685b150bfa8f00c3", "M Network, Kevin Miller", "MT5687", "International Soccer (1982) (Mattel) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "297236cb9156be35679f83c4e38ee169", "Exus Corporation", "", "Video Reflex (1983) (Exus) [no roman numbers]", "AKA Foot Craz (no roman numbers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "297c405afd01f3ac48cdb67b00d273fe", "Atari - GCC, Ava-Robin Cohen", "CX26123, CX26123P", "Jr. Pac-Man (1986) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2982e655dffc89d218a0a3072cfc6811", "", "", "Mini Golf 812631 (Hack)", "Hack of Miniature Golf", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "298387b0637173d2002770a649b4fbca", "", "", "S.I.PLIX 2 (Hack) [a]", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "29843f43b81f3736bf35c00b1bb88fb2", "Gray Games & AtariAge", "", "E.T. Book Cart (NTSC)", "Charles F. Gray & Michael Rideout", "", "", "", "", "", "", "", "", "", "", "", "", "15", "240", "YES", "55" }, - { "29949f893ef6cb9e8ecb368b9e99eee4", "Erik Eid", "", "Euchre (Alpha) (NTSC) (31-08-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "29dfa26b7988af9984d617708e4fc6e2", "", "", "Boulderdash Demo (05-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2a0ba55e56e7a596146fa729acf0e109", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2a10053fd08664c7cfbbb104386ed77f", "", "", "Alpha Demo - The Beta Demo (2000) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2a1b454a5c3832b0240111e7fd73de8a", "Tigervision, Bill Hogue", "7-011", "Miner 2049er Volume II (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2a2f46b3f4000495239cbdad70f17c59", "CommaVid, John Bronstein - Ariola", "CM-003 - 712 003-720", "Cosmic Swarm (1982) (CommaVid) (PAL)", "AKA Angriff der Termiten", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2a33e21447bf9e13dcfed85077ff6b40", "", "", "Backwards Cannonball v2 (Hack)", "Hack of Human Cannonball", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2a360bc85bf22de438651cf92ffda1de", "Bit Corporation", "PGP213", "Spy Vs. Spy (4 Game in One) (1983) (BitCorp) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2a9f9001540c55a302befd8e9d54b47b", "Atari, Dan Hitchens", "CX2697, CX2697P", "Mario Bros. (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2aa5e56d36c2e58b6f2856109f2099a9", "Atari, Larry Kaplan - Sears", "CX2628 - 6-99842, 49-75117", "Bowling (1979) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2aba6a1b01a5859e96d6a66d2286772f", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2abc3d46b3f2140160759e2e10bc86d9", "", "", "Gunfight 2600 - Beta Release! (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2ac3a08cfbf1942ba169c3e9e6c47e09", "Activision, Dan Kitchen", "EAK-046-04B", "Fighter Pilot (1988) (Activision) (PAL)", "AKA Tomcat - The F-14 Fighter Simulator", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2ae700c9dba843a68dfdca40d7d86bd6", "TechnoVision - Thomas Jentzsch", "", "Pharaoh's Curse (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "40", "240", "YES", "" }, - { "2aeedcc6eb1602efb77161b0cef832ab", "SOLID Corp. (D. Scott Williamson)", "CX2655-025", "Star Castle 2600 (SolidCorp) [025]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2b1589c7e1f394ae6a1c046944f06688", "Carrere Video - JWDA, Todd Marshall, Robin McDaniel, Wes Trager, Henry Will IV - Teldec - Prism", "USC2003", "Eggomania (1983) (Carrere Video) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 60", "", "", "", "", "" }, - { "2b27eb194e13f3b38d23c879cc1e3abf", "Quelle", "402.272 9", "Super-Ferrari (1983) (Quelle) (PAL)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2b42da79a682ed6e2d735facbf70107e", "", "", "DKjr Improved (Hack)", "Hack of Donkey Kong Jr.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2b430c00dc79e495762ac59b2f9b4fcd", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2b71a59a53be5883399917bf582b7772", "Greg Troutman", "", "Dark Mage (final beta) (Greg Troutman) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2ba02f509a4991aa176ba8d9e540df3d", "Atari, Mark R. Hahn", "CX2678", "Dukes of Hazzard (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2bb0a1f1dee5226de648eb5f1c97f067", "Robby", "", "Enduro (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2bb9f4686f7e08c5fcc69ec1a1c66fe7", "Atari - GCC, John Allred, Mike Feinstein", "CX2688", "Jungle Hunt (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2bc26619e31710a9884c110d8430c1da", "Atari, Bob Whitehead", "CX2652, CX2652P", "Casino (1979) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, - { "2bc6c53b19e0097a242f22375a6a60ff", "", "", "Droid Demo 2 (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2bee7f226d506c217163bad4ab1768c0", "Xonox - K-Tel Software - Beck-Tech, Steve Beck", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2bf34b6ad7d2317a2d0808b3fb93571b", "", "", "Easy Playfield Graphics (1997) (Chris Cracknell)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c0dc885d5ede94aa664bf3081add34e", "", "", "Earth Dies Screaming, The (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c29182edf0965a7f56fe0897d2f84ba", "Atari - Axlon, Steve DeFrisco", "CX26192", "Klax (08-18-1990) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c2aea31b01c6126c1a43e10cacbfd58", "Paul Slocum", "", "Synthcart (2002) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, - { "2c3b2843295c9d6b16996971180a3fe9", "HES - Activision", "", "Sports Action Pak - Enduro, Ice Hockey, Fishing Derby, Dragster (1988) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c3b9c171e214e9e46bbaa12bdf8977e", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c45c3eb819a797237820a1816c532eb", "Atari", "CX26163P", "Boxing (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c8835aed7f52a0da9ade5226ee5aa75", "Arcadia Corporation, Stephen H. Landrum", "AR-4101", "Communist Mutants from Space (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2c8c11295d8613f875b7bcf5253ab9bb", "Fabrizio Zavagli", "", "Kool Aid Man (PAL Conversion) (16-11-2002) (Fabrizio Zavagli) (PAL60)", "PAL60 Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "2c9fadd510509cc7f28f1ccba931855f", "", "", "Hangman Invader Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2ca6445204ffb7686ddee3e33ba64d5b", "Alex Herbert", "", "AtariVox Test ROM", "Uses the AtariVox controller", "", "", "", "", "", "", "", "", "ATARIVOX", "", "", "", "", "", "", "" }, - { "2cb42cf62b2f25f59f909b5447821b14", "Atari, Christopher H. Omarzu - Children's Computer Workshop", "CX26104", "Big Bird's Egg Catch (1983) (Atari) (PAL) [a]", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "2cccc079c15e9af94246f867ffc7e9bf", "PlayAround - J.H.M.", "203", "Jungle Fever (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2cefa695df2ed020899a7df7bb1e3a95", "Manuel Polik, Fabrizio Zavagli", "", "A-Team (2002) (Manuel Polik) (Hack)", "Hack of A-Team", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2cf20f82abcae2decff88db99331e071", "Activision, Mike Lorenzen", "AX-023", "Oink! (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2cfb188c1091cc7ec2a7e60064d2a758", "", "", "Space Invaders Hack Demo (2003) (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d15b092e8350912ec4b2e5e750fa1c6", "Wizard Video Games, Bob Davis, Robert H. O'Neil", "", "Texas Chainsaw Massacre, The (1982) (Wizard Video Games) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d16a8b59a225ea551667be45f554652", "Quelle", "802.744 3", "Der Geheimkurier (1983) (Quelle) (PAL)", "AKA Mr. Postman", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d1cf85fbc732856bf76470cd4060f4a", "", "", "Daredevil (V1) (Stunt_Cycle_Rules!) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "216", "", "" }, - { "2d2c5f0761e609e3c5228766f446f7f8", "Atari - Axlon, Steve DeFrisco", "CX26170, CX26170P", "Secret Quest (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d405da70af82b20a6b3ecc3d1d2c4ec", "Genus", "", "Pitfall (Genus)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d6741cda3000230f6bbdd5e31941c01", "CBS Electronics - VSS", "80110", "Targ (1983) (CBS Electronics) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d69a5f23784f1c2230143292a073b53", "", "", "Qb (Fixed background animation) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2d6da0eb85eabc93270e5bb8a466ca51", "", "", "Sprite Demo 7 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d76c5d1aad506442b9e9fb67765e051", "Apollo - Games by Apollo, Larry Minor, Ernie Runyon, Ed Salvo", "AP-2004", "Lost Luggage (1982) (Apollo) [no opening scene]", "AKA Airport Mayhem", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d9e5d8d083b6367eda880e80dfdfaeb", "QDI, Mike Montana, Rich Montana - Selchow & Righter", "87", "Glib (1983) (QDI)", "AKA Video Word Game", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2d9e65959808a6098c16c82a59c9d9dc", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (1 of 3) (1982) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2dbc92688f9ba92a7e086d62be9df79d", "", "", "How to Draw a Playfield (1997) (Jim Crawford) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2dbdca3058035d2b40c734dcf06a86d9", "Thomas Jentzsch", "", "Asteroids DC+ (Thomas Jentzsch) (Hack)", "Uses the Joystick (left) or Steering (right) Controller", "Hack", "", "", "", "", "", "", "", "DRIVING", "", "58", "", "", "", "YES", "" }, - { "2dcf9ce486393cd36ca0928cd53b96cb", "Atari - GCC, Mike Feinstein, John Allred", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2de41a11c6767e54a5ee9ebaffec72af", "Gray Games & AtariAge", "", "E.T. Book Cart (PAL60)", "Charles F. Gray & Michael Rideout", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "15", "240", "YES", "55" }, - { "2dfec1615c49501fefc02165c81955e6", "", "", "Song (05-11-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2e0aed5bb619edcefa3fafb4fbe7c551", "", "", "Qb (2.06) (Retroactive) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2e2885e68fa1045871ce1382b68f6efc", "", "", "Star Fire - Return of the Crosshair (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e2acef8513edcca991e7e5149412e11", "Parker Brothers, Larry Gelberg, Gary Goltz", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (16K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e3728f3086dc3e71047ffd6b2d9f015", "Atari, David Crane", "CX26163P", "Outlaw (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e5b184da8a27c4d362b5a81f0b4a68f", "Atari", "", "Rabbit Transit (08-29-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e663eaa0d6b723b645e643750b942fd", "Atari, Tom Rudadahl - Sears", "CX2634 - 49-75121", "Golf (1980) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e7e9c6dcfcceaffc6fa73f0d08a402a", "CCE", "C-818", "Star Voyager (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e82a1628ef6c735c0ab8fa92927e9b0", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2e842c2ee22e9dad9df16eed091315c4", "HES", "701-157", "2 Pak Special - Motocross, Boom Bang (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2eaf8fa9e9fdf1fcfc896926a4bdbf85", "Arcadia Corporation, Stephen H. Landrum", "AR-4400", "Excalibur Version 39 (Dragonstomper Beta) (1982) (Arcadia) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2ec6b045cfd7bc52d9cdfd1b1447d1e5", "Activision, David Crane - Ariola", "EAG-009, PAG-009 - 711 009-720", "Freeway (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2eda6a49a49fcb2b674ea9e160b6a617", "Kyle Pittman", "", "Rambo in Afghanistan (Kyle Pittman) (Hack)", "Hack of Riddle of the Sphinx", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2ef36341d1bf42e02c7ea2f71e024982", "", "", "Space Invaders (Explosion Hack)", "Hack of Space Invaders (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f0546c4d238551c7d64d884b618100c", "Sega, Jeff Lorenz", "", "Ixion (1984) (Sega) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f0a8bb4e18839f9b1dcaa2f5d02fd1d", "CCE", "", "Super Futebol (CCE) [a]", "AKA RealSports Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2f11ba54609777e2c6a5da9b302c98e8", "Atari - GCC", "CX2676", "Centipede (1982) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f16663b01591539624d0ef52934a17d", "M Network", "", "Rocky and Bullwinkle", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f2f9061398a74c80420b99ddecf6448", "Rentacom - Brazil", "", "Bobby Is Going Home (Rentacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f66ebf037321ed0442ac4b89ce22633", "Baroque Gaming (Brian Eno)", "", "Warring Worms (Beta 2) (2002) (Baroque Gaming)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f7772879a1ed04f660aa9d77a86a4bd", "", "", "Yars' Revenge (Genesis)", "Genesis controller (C is zorlon cannon)", "Hack of Yars' Revenge", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "YES", "" }, - { "2f77f015fc880b05f28e84156f989a0c", "", "", "Plane Demo (Gonzalo) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2f7949f71076db42480d3f5036b4a332", "", "", "Name This Game (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "2facd460a6828e0e476d3ac4b8c5f4f7", "Sancho - Tang's Electronic Co.", "", "Words-Attack (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3025bdc30b5aec9fb40668787f67d24c", "", "", "Demo Image Series #14 - Two Marios (4K Interleaved Chronocolour Vertical Movement) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "303242c239474f2d7763b843de58c1c3", "CCE", "", "Laser Blast (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "304512528a5530a9361e8a231ed9a6de", "Thomas Jentzsch", "", "River Raid Plus (Thomas Jentzsch) (Hack)", "Hack of River Raid", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "30512e0e83903fc05541d2f6a6a62654", "Atari, Jim Huether - Sears", "CX2644 - 6-99824", "Flag Capture (1978) (Atari)", "AKA Capture the Flag", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "30516cfbaa1bc3b5335ee53ad811f17a", "Wizard Video Games - MicroGraphic Image, Robert Barber, Tim Martin", "007", "Halloween (1983) (Wizard Video Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3051b6071cb26377cd428af155e1bfc4", "Atari, David Crane - Sears", "CX2607 - 6-99828, 49-75115", "Canyon Bomber (1979) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "10", "", "42", "", "", "" }, - { "30685b9b6ebd9ba71536dd7632a1e3b6", "Dactari - Milmar", "", "Tennis (Dactari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3091af0ef1a61e801f4867783c21d45c", "CCE", "C-862", "Crackpots (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "30997031b668e37168d4d0e299ccc46f", "", "", "John K Harvey's Equalizer (PAL) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "30c92c685224dc7a72b9bbe5eb62d004", "", "", "Hangman Monkey Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "30e012e8d50330c8972f126b8e913bc4", "", "", "Indy 500 (Hack) [a2]", "Hack of Indy 500", "Hack", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "", "", "", "", "" }, - { "30e0ab8be713208ae9a978b34e9e8e8c", "Atari, Mike Lorenzen", "CX2630, CX2630P", "Circus Atari (1980) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01 55", "", "", "", "", "" }, - { "30f0b49661cfcfd4ec63395fab837dc3", "Sega, Jeff Lorenz - Teldec", "004-01", "Star Trek - Strategic Operations Simulator (1983) (Sega) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3105967f7222cc36a5ac6e5f6e89a0b4", "Sega, Jeff Lorenz", "011-01, 011-02", "Spy Hunter (1984) (Sega)", "Uses Joystick Coupler (Dual Control Module)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "310ba30e25ea8957e58180b663503c0c", "Ed Federmeyer", "", "Sound X6 (1994) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "313243fc41e49ef6bd3aa9ebc0d372dd", "", "", "Fast Food (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31512cdfadfd82bfb6f196e3b0fd83cd", "Tigervision", "7-004", "River Patrol (1984) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3177cc5c04c1a4080a927dfa4099482b", "Atari - Imagineering, Alex DeMeo", "CX26135", "RealSports Boxing (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "317a4cdbab090dcc996833d07cb40165", "Goliath - Hot Shot", "83-312", "Missile War (1983) (Goliath) (PAL)", "AKA Astrowar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "318046ae3711c05fd16e479b298e5fcc", "Retroactive", "", "Qb (V2.08) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "318a9d6dda791268df92d72679914ac3", "Activision, Steve Cartwright", "AX-017, AX-017-04", "MegaMania (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "319a142aab6260842ab616382848c204", "", "", "Marble Craze (05-02-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31bb9b8ceed46cb3e506777a9e65f3ce", "Bit Corporation", "", "4 Game in One Light Green (1983) (BitCorp) (PAL)", "Phantom UFO, Ice Hockey, Cosmic Avenger, Spy Vs. Spy", "", "", "4IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31c5fd55a39db5ff30a0da065f86c140", "Dactari - Milmar", "", "Enduro (Dactari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31d08cb465965f80d3541a57ec82c625", "Atari, Alan Miller - Sears", "CX2641 - 99807, 49-75105", "Surround (1977) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31df1c50c4351e144c9a378adb8c10ba", "Quelle", "687.463 0", "Die Ratte und die Karotten (1983) (Quelle) (PAL)", "AKA Gopher", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31e518debba46df6226b535fa8bd2543", "Atari, Douglas 'Solaris' Neubauer, Mimi Nyden", "CX26134", "Last Starfighter (1984) (Atari) (Prototype)", "Solaris Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "31f4692ee2ca07a7ce1f7a6a1dab4ac9", "Atari, Alan Miller", "CX2642", "Game of Concentration (1980) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "31fcbce1cfa6ec9f5b6de318e1f57647", "Atari, Jerome Domurat, Peter C. Niday", "CX26115", "Dumbo's Flying Circus (1983) (Atari) (Prototype) (PAL)", "AKA Dumbo Flies Home", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32199271dc980eb31a2cc96e10a9e244", "", "", "Radial Pong - Version 12 (Jeffry Johnston) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "321c3451129357af42a375d12afd4450", "Atari - Imagineering, Dan Kitchen", "CX26177", "Ikari Warriors (1991) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32244e55ce6ec6bfbd763f33384bdc2e", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3225676f5c0c577aeccfaa7e6bedd765", "CCE", "C-1002", "Pole Position (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "322b29e84455aa41e7cc9af463bffa89", "Atari - Bobco, Robert C. Polaro", "CX2663", "Road Runner (06-25-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "324cb4a749bcac4f3db9da842b85d2f7", "Dennis Debro", "", "Climber 5 (01-05-2003) (Dennis Debro)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "327468d6c19697e65ab702f06502c7ed", "Charles Morgan", "", "Aster-Hawk (2002) (Charles Morgan) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3276c777cbe97cdd2b4a63ffc16b7151", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691", "Joust (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3278158e5c1f7eb5c5d28ccfd7285250", "Dactari - Milmar", "", "Megamania (Dactari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "327fe8cf94f3a45c35a840a453df1235", "", "", "Spice Girls Rule Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "328949872e454181223a80389d03c122", "", "", "Home Run (Unknown) (PAL)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "32ae78abbb5e677e2aabae5cc86cec29", "Atari, Christopher H. Omarzu, Courtney Granner", "CX26112", "Good Luck, Charlie Brown (04-18-1984) (Atari) (Prototype)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32d1260ea682e1bb10850fa94c04ec5f", "Atari, Alan Miller", "CX26163P", "Basketball (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32dcd1b535f564ee38143a70a8146efe", "Xonox - K-Tel Software - Product Guild, Anthony R. Henderson", "99007, 6240", "Tomarc the Barbarian (1983) (Xonox)", "AKA Thundarr the Barbarian", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32e65d1e4dfcbcd9b57fee72cafe074c", "", "", "Eckhard Stolberg's Scrolling Text Demo 3 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32ecb5a652eb73d287e883eea751d99c", "Dactar - Milmar", "", "Bowling (Dactar - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "32f4e47a71601ab06cfb59e1c6a0b846", "Ed Federmeyer", "", "Sound X (1994) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3316ee2f887e9cb9b54dd23c5b98c3e2", "", "", "Texas Golf (miniature Gold Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "331938989f0f33ca39c10af4c09ff640", "Zach Matley", "", "Combat - Tank AI (19-04-2003) (Zach Matley)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "332f01fd18e99c6584f61aa45ee7791e", "", "", "X'Mission (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3347a6dd59049b15a38394aa2dafa585", "Parker Brothers - JWDA, Henry Will IV", "PB5760", "Montezuma's Revenge (1984) (Parker Bros)", "Featuring Panama Joe", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "335793736cbf6fc99c9359ed2a32a49d", "", "", "Analog Clock (V0.0) (20-01-2003) (AD) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "335a7c5cfa6fee0f35f5824d1fa09aed", "Sega - Beck-Tech, Steve Beck, Phat Ho - Teldec", "006-01 - 3.60105 VG", "Congo Bongo (1983) (Sega) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3367eeba3269aa04720abe6169767502", "", "", "Space Treat (30-12-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3391f7c4c656793f92299f4187e139f7", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a4]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "33cac5e767a534c95d292b04f439dc37", "Jone Yuan Telephonic Enterprise Co", "", "Tapeworm (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "33d68c3cd74e5bc4cf0df3716c5848bc", "CBS Electronics, Tom DiDomenico", "4L 2486 5000", "Blueprint (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "33ed6dfac4b9ea2f81f778ceddbb4a75", "Activision", "", "River Raid (1982) (SpkSoft) [t1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "340f546d59e72fb358c49ac2ca8482bb", "Sancho - Tang's Electronic Co.", "TEC003", "Skindiver (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "34340c8eecd1e557314789cc6477e650", "Joe Grand", "", "SCSIcide Pre-release 4 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "345488d3b014b684a181108f0ef823cb", "CBS Electronics, Tom DiDomenico", "4L 2486 5000", "Blueprint (1983) (CBS Electronics) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "345758747b893e4c9bdde8877de47788", "CBS Electronics, Joseph Biel", "4L1802, 4L1803, 4L1804, 4L2278", "Venture (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "345769d085113d57937198262af52298", "Rainbow Vision - Suntek", "SS-007", "Space Raid (Rainbow Vision) (PAL)", "AKA MegaMania", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "346555779a2d51b48833463b5433472f", "", "", "Thrust (V0.1) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "348615ffa30fab3cec1441b5a76e9460", "Activision, Alan Miller - Ariola", "EAX-016, PAX-016 - 711 016-725", "StarMaster (1982) (Activision) (PAL) [fixed]", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "34b269387fa1aa5a396636f5ecdd63dd", "", "", "Marble Craze (mc7_23) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "34c808ad6577dbfa46169b73171585a3", "Apollo", "AP-2012", "Squoosh (1983) (Apollo) (Prototype)", "AKA Vat's Incredible!, The Grape Escape", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "34ca2fcbc8ba4a0b544acd94991cfb50", "Atari, Robert C. Polaro", "", "Dukes of Hazzard (1980) (Atari) (Prototype) (4K)", "AKA Stunt Cycle", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "34e37eaffc0d34e05e40ed883f848b40", "Retroactive", "", "Qb (2.15) (Retroactive) (Stella)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "34f4b1d809aa705ace6e46b13253fd3b", "Aaron Bergstrom", "", "Nothern Alliance (Aaron Bergstrom) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "34fd4fcb40ff5babce67f8b806d5969c", "", "", "Boxing (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "350e0f7b562ec5e457b3f5af013648db", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (06-09-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "35156407e54f67eb1f625450d5c093e1", "", "", "Mouse Trap (Genesis)", "Genesis controller (C changes to dog)", "Hack of Mouse Trap", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "35163b56f4a692a232ae96ad3e23310f", "Retroactive", "", "Qb (2.12) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3556e125681aea864e17b09f3f3b2a75", "", "", "Incoming (2 Player Demo) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3576037c9281656655fa114a835be553", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3577e19714921912685bb0e32ddf943c", "TechnoVision - Video Technology", "TVS1003", "Pharaoh's Curse (1983) (TechnoVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "34", "", "YES", "" }, - { "35ae903dff7389755ad4a07f2fb7400c", "", "", "Colored Wall Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "35b10a248a7e67493ec43aeb9743538c", "Dor-x", "", "Defender (Dor-x) (Hack)", "Hack of Defender", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "35b43b54e83403bb3d71f519739a9549", "Parker Brothers, Dave Engman, Isabel Garret", "", "McDonald's (06-06-1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "35be55426c1fec32dfb503b4f0651572", "Men-A-Vision", "", "Air Raid (Men-A-Vision) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "35fa32256982774a4f134c3347882dff", "Retroactive", "", "Qb (V0.05) (Macintosh) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "360ba640f6810ec902b01a09cc8ab556", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (06-15-1983) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "360c0dcb11506e73bd0b77207c81bc62", "Digitel", "", "Enduro (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3619786f6a32efc1e4a262d5aca8a070", "Atari, John Dunn - Sears", "CX2631 - 49-75152", "Superman (1979) (Atari) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3624e5568368929fabb55d7f9df1022e", "Activision - Imagineering, Dan Kitchen", "EAK-050-04", "Double Dragon (1989) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36306070f0c90a72461551a7a4f3a209", "U.S. Games Corporation - JWDA, Roger Booth, Sylvia Day, Ron Dubren, Todd Marshall, Robin McDaniel, Wes Trager, Henry Will IV", "VC1007", "Name This Game (1983) (U.S. Games)", "AKA Octopussy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36547bc6faa5132b87504e18d088e1d7", "", "", "Cosmic Swarm (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "367411b78119299234772c08df10e134", "Atari", "CX26163P", "Skiing (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3685060707df27d4091ba0ea2dc4b059", "", "", "PezZerk - PezMan in Ghost Manor (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "368d88a6c071caba60b4f778615aae94", "Atari, Matthew L. Hubbard", "CX26159", "Double Dunk (1989) (Atari)", "AKA Super Basketball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36a701c60a9f9768d057bc2a83526a80", "", "", "Cube Conquest (Interlaced) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "36b20c427975760cb9cf4a47e41369e4", "Atari", "CX26143", "Donkey Kong (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36c29ceee2c151b23a1ad7aa04bd529d", "Atari - GCC, Ava-Robin Cohen", "CX26123", "Jr. Pac-Man (1986) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36c31bb5daeb103f488c66de67ac5075", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Bop a Buggy (1 of 3) (1983) (Arcadia)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 56", "", "", "", "", "" }, - { "36c993dc328933e4dd6374a8ffe224f4", "Gameworld, J. Ray Dettling", "133-007", "Bermuda Triangle (1983) (Gameworld) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36e47ed74968c365121eab60f48c6517", "Quelle", "343.373 7", "Master Builder (1983) (Quelle) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36edef446ab4c2395666efc672b92ed0", "Atari - Axlon, John Vifian", "CX26168", "Off the Wall (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "36f9a953ebdd9a8be97ccf27a2041903", "", "", "Chinese Character Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37252757a79dc5b174e3c03d6ea0bdcb", "", "", "Sky Diver (Unknown) (PAL) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "372bddf113d088bc572f94e98d8249f5", "Bomb - Onbase", "CA285", "Wall-Defender (1983) (Bomb) (PAL)", "AKA Wall Break", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "373b8a081acd98a895db0cb02df35673", "", "", "Demo Image Series #5 - Boofly (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3750f2375252b6a20e4628692e94e8b1", "Dismac", "", "Ases do Ar (Dismac)", "AKA Sky Jinks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37527966823ee9243d34c7da8302774f", "", "", "Word Zapper (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "376944889dcfa96c73d3079f308e3d32", "Retroactive", "", "Qb (0.11) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3783f12821b88b08814da8adb1a9f220", "", "", "Mission Survive (PAL) (Genesis)", "Genesis controller (C is vertical fire)", "Hack of Mission Survive)", "", "", "", "A", "", "", "GENESIS", "", "", "", "", "", "", "YES", "" }, - { "378a62af6e9c12a760795ff4fc939656", "Atari - Axlon, Steve DeFrisco", "CX26171", "MotoRodeo (1991) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "378c118b3bda502c73e76190ca089eef", "Atari, Alan Miller", "CX2662P", "Hangman (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37ab3affc7987995784b59fcd3fcbd31", "", "", "Sprite Test (29-11-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37b98344c8e0746c486caf5aaeec892a", "K-Tel Vision", "6", "Spider Maze (1982) (K-Tel Vision) (PAL)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37e828675d556775ae8285c0caf7d11c", "AtariAge - Fred Quimby", "", "Gingerbread Man (Fred Quimby) (Genesis)", "Genesis controller (C throws cookie)", "New Release", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "37f42ab50018497114f6b0f4f01aa9a1", "", "", "Droid Demo 2-M (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "37fd7fa52d358f66984948999f1213c5", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (Rainbow Vision) (PAL) [a2]", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "384db97670817103dd8c0bbdef132445", "Atari - Sears", "CX2626 - 6-99829, 49-75116", "Miniature Golf (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "384f5fbf57b5e92ed708935ebf8a8610", "20th Century Fox Video Games, John W.S. Marvin", "11009", "Crypts of Chaos (1983) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3856b9425cc0185ed770376a62af0282", "Kyle Pittman", "", "Yellow Submarine (Kyle Pittman) (Hack)", "Hack of Bermuda Triangle", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "386ff28ac5e254ba1b1bac6916bcc93a", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (1982) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, - { "3882224adbd0ca7c748b2a1c9b87263e", "Atari, Tod Frye", "CX2657", "SwordQuest - FireWorld (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3889351c6c2100b9f3aef817a7e17a7a", "CCE", "", "Dolphin (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3897744dd3c756ea4b1542e5e181e02a", "Atari, Jerome Domurat, Peter C. Niday", "CX26115", "Dumbo's Flying Circus (05-05-1983) (Atari) (Prototype)", "AKA Dumbo Flies Home", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "38bd172da8b2a3a176e517c213fcd5a6", "Atari", "MA017600", "Diagnostic Test Cartridge 2.6 (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "38c362dcd5cad5a62e73ae52631bd9d8", "Jake Patterson", "", "Baubles (14-11-2001) (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "38cf93eacfb2fa9a2c5e39059ff35a74", "Greg Zumwalt", "", "WacMan (2003) (Greg Zumwalt) (Hack)", "Hack of Ms. Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "38de7b68379770b9bd3f7bf000136eb0", "Imagic, Mark Klein", "EIZ-003-04I", "Subterranea (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "391764720140c432aec454a468f77a40", "Video Game Program", "", "Miss Pack Man (Video Game Program) (PAL)", "AKA Ms. Pac-Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "392d34c0498075dd58df0ce7cd491ea2", "Atari, Frank Hausman, Mimi Nyden, Steve Woita", "CX2686", "Quadrun (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "392f00fd1a074a3c15bc96b0a57d52a1", "Atari, Rob Fulop - Sears", "CX2633 - 49-75119", "Night Driver (1980) (Atari)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 65", "", "", "", "YES", "" }, - { "393948436d1f4cc3192410bb918f9724", "Activision, Carol Shaw", "AX-020, AX-020-04", "River Raid (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "393e41ca8bdd35b52bf6256a968a9b89", "U.S. Games Corporation - Western Technologies", "VC1012", "M.A.D. (1983) (U.S. Games)", "AKA Missile Intercept", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3947eb7305b0c904256cdbc5c5956c0f", "Jone Yuan Telephonic Enterprise Co", "", "Lilly Adventure (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, - { "396f7bc90ab4fa4975f8c74abe4e81f0", "Atari, Larry Kaplan - Sears", "CX2612 - 99804, 49-75103", "Street Racer (1977) (Atari)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 60", "", "", "", "", "" }, - { "39790a2e9030751d7db414e13f1b6960", "", "", "Robotfindskitten2600 (26-04-2003) (Jeremy Penner) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "39a6a5a2e1f6297cceaa48bb03af02e9", "", "", "Pitfall 2 Plus (Hack)", "Hack of Pitfall 2", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "39b94d41bd3b01c12b4054c1a8733783", "SOLID Corp. (D. Scott Williamson)", "CX2655-016", "Star Castle 2600 (SolidCorp) [016]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "39c78d682516d79130b379fa9deb8d1c", "Apollo - Games by Apollo, Ed Salvo", "AP-1001", "Skeet Shoot (1981) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "39d36366ae7e6dfd53393fb9ebab02a0", "CCE", "C-811", "River Raid (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "39da69ff9833f8c143f03b6e0e7a996b", "Charles Morgan", "", "Ventrra Invaders 2002 (Charles Morgan) (Hack)", "Hack of Megamania", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "39fe316952134b1277b6a81af8e05776", "Robby", "18", "River Raid (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3a2e2d0c6892aa14544083dfb7762782", "Atari, Rob Fulop - Sears", "CX2638 - 49-75166", "Missile Command (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3a35d7f1dc2a33565c8dca52baa86bc4", "", "", "Rubik's Cube Demo 2 (23-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3a51a6860848e36e6d06ffe01b71fb13", "Retroactive", "", "Qb (2.07) (Retroactive) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3a526e6a1f9fe918af0f2ce997dfea73", "CBS Electronics, Dan Kitchen, Garry Kitchen", "4L1700, 4L1701, 4L1702, 4L1802, 4L2274", "Donkey Kong (1982) (CBS Electronics) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3a53963f053b22599db6ac9686f7722f", "", "", "Word Zapper (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3a771876e4b61d42e3a3892ad885d889", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Defender II (1987) (Atari)", "AKA Stargate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3aad0ef62885736a5b8c6ccac0dbe00c", "Dynacom", "", "Atlantis (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3ab5d138e26d88c8190e7cc629a89493", "", "", "Phased Color Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3ac6c50a8e62d4ce71595134cbd8035e", "Absolute Entertainment, Dan Kitchen", "AK-046-04", "Tomcat (1988) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3ad3dc799211ccd424d7c6d454401436", "Probe 2000 - North American Philips Consumer Electronics Corporation", "", "Power Lords (1983) (Probe) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3ad58b53a1e972396890bd86c735e78d", "Arcadia Corporation, Stephen H. Landrum", "AR-4400", "Excalibur Version 36 (Dragonstomper Beta) (1982) (Arcadia) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b040ed7d1ef8acb4efdeebebdaa2052", "Tigervision", "7-008", "Miner 2049er (1983) (Tigervision) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "214", "", "" }, - { "3b097a7ed5bd2a84dc3d3ed361e9c31c", "", "", "Interleaved ChronoColour Demo (PAL) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b10106836565e5db28c7823c0898fbb", "Xonox - Beck-Tech", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "3b2c32fcd331664d037952bcaa62df94", "Xonox", "6230, 6250", "Super Kung-Fu (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b5751a8d20f7de41eb069f76fecd5d7", "", "", "Eckhard Stolberg's Scrolling Text Demo 4 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b64a00ce147c3c29f7f8f8e531d08d8", "", "", "This Planet Sucks (16K) (Greg Troutman)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "3b69f8929373598e1752f43f8da61aa4", "Apollo - Games by Apollo - RCA Video Jeux", "AP-2006", "Infiltrate (1921) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3b6dba1a24bb2893bd3bd0593f92016b", "CBS Electronics / Thomas Jentzsch", "", "Omega Race JS (TJ)", "Hack of Omega Race (CBS Electronics)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b76242691730b2dd22ec0ceab351bc6", "M Network, Connie Goldman, Joe King, Patricia Lewis Du Long, Gerald Moore, Mike Sanders, Jossef Wagner - INTV", "MT4319", "Masters of the Universe (1983) (M Network)", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3b80b8f52a0939e16b5059f93a3fc19a", "V007", "", "Virtual Pet (V007) (after Demo 2) (CRACKERS) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b86a27132fb74d9b35d4783605a1bcb", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b8aacf5f5638492b926b5124de19f18", "Atari, Tod Frye - Sears", "CX2646 - 49-75185", "Pac-Man (1981) (Atari) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b91c347d8e6427edbe942a7a405290d", "Parker Brothers", "PB5350", "Sky Skipper (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b9480bb6fb1e358c9c0a64e86945aee", "", "", "Title Match Pro Wrestling (2002) (Skyworks)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3b966bf3c2ca34ac6ca1de4cf6383582", "", "", "Double-Height 6-Digit Score Display (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3bb9793c60c92911895cf44530846136", "Jone Yuan Telephonic Enterprise Co", "", "Dragster (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c21a89bc38d8cd0b010a2916bcff5c2", "", "", "Colony 7 - CX-22 Hack v0.4 (NTSC)", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "YES", "50" }, - { "3c3a2bb776dec245c7d6678b5a56ac10", "", "", "Unknown Title (bin00003) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c4223316c835ceaad619651e25df0f9", "", "", "Defender (Genesis)", "Genesis controller (C is smartbomb)", "Hack of Defender", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "3c4a6f613ca8ba27ce9e43c6c92a3128", "", "", "Qb (V0.04) (Non-Lax Version) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3c57748c8286cf9e821ecd064f21aaa9", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c72ddaf41158fdd66e4f1cb90d4fd29", "Dismac", "", "Comando Suicida (Dismac)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c7a7b3a0a7e6319b2fa0f923ef6c9af", "Atari - Roklan, Joe Gaucher", "", "Racer (1982) (Atari) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c7a96978f52b2b15426cdd50f2c4048", "", "", "Overhead Adventure Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c82e808fe0e6a006dc0c4e714d36209", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c853d864a1d5534ed0d4b325347f131", "Telesys, Don 'Donyo' Ruffcorn", "1002", "Cosmic Creeps (1982) (Telesys)", "AKA Space Maze, Spaze Maze", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3c8e57a246742fa5d59e517134c0b4e6", "Parker Brothers, Rex Bradford, Sam Kjellman", "PB5050", "Star Wars - The Empire Strikes Back (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3ca51b5c08f5a0ecfb17d0c1ec6d0942", "Atari, James Andreasen - Sears", "CX2654 - 49-75141", "Haunted House (09-28-81) (Atari) (Prototype)", "AKA Mystery Mansion, Graves' Manor, Nightmare Manor", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3caa902ac0ce4509308990645876426a", "Atari - GCC, Dave Payne", "CX2669, CX2669P", "Vanguard (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3cbdf71bb9fd261fbc433717f547d738", "CCE", "C-803", "Bobby Is Going Home (1983) (CCE) (PAL)", "AKA Bobby Vai Para Casa", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3cdd91e1c28d28e856c0063d602da166", "", "", "Stell-A-Sketch (03-11-1997) (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3d1e83afdb4265fa2fb84819c9cfd39c", "Coleco - JWDA, Todd Marshall, Robin McDaniel, Henry Will IV", "2465", "Smurf - Rescue in Gargamel's Castle (1983) (Coleco)", "AKA Smurf, Smurf Action", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d2367b2b09c28f1659c082bb46a7334", "Imagic, Dennis Koble", "720103-2A, IA3203P, EIX-010-04I", "Atlantis (1982) (Imagic) (PAL)", "AKA Lost City of Atlantis", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d2652cbea462a886a41791dd7c8d073", "", "", "Ritorno dei frattelli di Mario (Mario Bros Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d48b8b586a09bdbf49f1a016bf4d29a", "Video Game Cartridge - Ariola", "TP-606", "Hole Hunter (Video Game Cartridge)", "AKA Topy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d6fc7a19be76d808aa233415cb583fc", "CCE", "C-833", "Target Practice (1983) (CCE)", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "", "", "214", "", "" }, - { "3d7749fb9c2f91a276dfe494495234c5", "Jone Yuan Telephonic Enterprise Co", "", "Checkers (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d7aad37c55692814211c8b590a0334c", "Atari, Dan Oliver", "", "Telepathy (1983) (Atari) (Prototype)", "Uses both left joystick and right Mindlink controllers (press Fire on respective controller to begin)", "Prototype", "", "", "", "", "", "", "", "MINDLINK", "", "78", "", "", "215", "", "" }, - { "3d8a2d6493123a53ade45e3e2c5cafa0", "Atari, Jim Huether - Sears", "CX2629 - 6-99843, 49-75118", "Sky Diver (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d934bb980e2e63e1ead3e7756928ccd", "Activision, Steve Cartwright - Ariola", "EAX-017, EAX-017-04I - 711 017-720", "MegaMania (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3d9c2fccf8b11630762ff00811c19277", "", "", "Challenge of.... Nexar, The (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3da7cc7049d73d34920bb73817bd05a9", "Activision, Mike Lorenzen", "AX-023", "Oink! (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3dfb7c1803f937fadc652a3e95ff7dc6", "Dimax - Sinmax", "SM8001", "Space Robot (Dimax - Sinmax)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3e03086da53ecc29d855d8edf10962cb", "CBS Electronics - Roklan, Joe Gaucher, Alex Leavens", "4L1751, 4L1752, 4L1753, 4L2275", "Gorf (1982) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3e1682ddaec486d8b6b90b527aaa0fc4", "Thomas Jentzsch", "", "Robot City (V0.12) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e22c7eaf6459b67388602e4bebbb3a8", "CommaVid, John Bronstein - Ariola", "CM-003 - 712 003-720", "Cosmic Swarm (1982) (CommaVid) (PAL) (4K)", "AKA Angriff der Termiten", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e33ac10dcf2dff014bc1decf8a9aea4", "Spectravideo - Video Games Industries Corporation, Mike Schwartz - Ralston Purina", "", "Chase the Chuckwagon (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "22", "", "YES", "" }, - { "3e49da621193d2611a4ea152d5d5ca3a", "", "", "Atari Logo Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e4b1137433cc1e617b5508619e13063", "", "", "Asteroids (Genesis)", "Genesis controller (C is hyperspace)", "Hack of Asteroids", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "YES", "" }, - { "3e5ca1afaa27c5da3c54c9942fec528b", "", "", "2600 Digital Clock (Demo 2) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e6dab92009d6034618cb6b7844c5216", "", "", "Ed Invaders (Hack)", "Hack of Pepsi Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e7d10d0a911afc4b492d06c99863e65", "VGS", "", "Super Tenis (VGS)", "AKA RealSports Tennis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e88cca5b860d0bd8947479e74c44284", "Atari, Lou Harp", "CX26122", "Sinistar (01-23-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3e899eba0ca8cd2972da1ae5479b4f0d", "Coleco, Joseph Biel", "2457", "Venture (1982) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3e90cf23106f2e08b2781e41299de556", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision)", "Pitfall Harry's Jungle Adventure (Jungle Runner)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3eae062a9b722bda1255d474a87eca5c", "Atari, David Crane", "CX2605, CX2605P", "Outlaw (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3eb1e34a4f0eec36f12e7336badcecf2", "Jake Patterson", "", "Baubles (V0.001) (2001) (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3eb21313ea5d5764c5ed9160a5a55a83", "Activision, Alan Miller", "AX-012, CAX-012, AX-012-04", "Ice Hockey (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3ec12372ca3e870b11ca70edc7ec26a4", "CommaVid, John Bronstein", "CM-002", "Video Life (1981) (CommaVid) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3eccf9f363f5c5de0c8b174a535dc83b", "", "", "Plaque Attack (Unknown) (PAL)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3ef9573536730dcd6d9c20b6822dbdc4", "Atari, Larry Wagner, Bob Whitehead", "CX2645, CX2645P", "Video Chess (1979) (Atari) (PAL)", "AKA Computer Chess", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f01bd6d059396f495a4cde7de0ab180", "", "", "Qb (Special Edition) (NTSC) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "3f039981255691d3859d04ef813a1264", "Xonox, John Perkins", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox) [a]", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "3f251c50aa7237e61a38ab42315ebed4", "Thomas Jentzsch", "", "Ikari Warriors (1990) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f3ad2765c874ca13c015ca6a44a40a1", "CCE", "C-862", "Crackpots (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f540a30fdee0b20aed7288e4a5ea528", "Atari - GCC", "CX2670", "Atari Video Cube (1983) (Atari)", "AKA Atari Cube, Video Cube", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f58f972276d1e4e0e09582521ed7a5b", "Telegames", "6082 A145", "Kung Fu Superkicks (1988) (Telegames)", "AKA Chuck Norris Superkicks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f5a43602f960ede330cd2f43a25139e", "Activision, Alan Miller", "AG-003", "Checkers (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f6938aa6ce66e6f42e582c1eb19b18c", "Jone Yuan Telephonic Enterprise Co", "", "Laser Blast (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "3f6dbf448f25e2bd06dea44248eb122d", "", "5687 A279", "Soccer (1988) (Telegames)", "AKA International Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f75a5da3e40d486b21dfc1c8517adc0", "Atari, Jim Huether", "CX26163P", "Sky Diver (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f9431cc8c5e2f220b2ac14bbc8231f4", "", "", "Colors Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f96eb711928a6fac667c04ecd41f59f", "Bit Corporation", "PGP218", "Rodeo Champ (4 Game in One Dark Green) (1983) (BitCorp) (PAL)", "AKA Stampede", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3f9cb1aba8ec20e2c243ae642f9942bf", "", "", "New Questions (1998) (John K. Harvey) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3fd1f9d66a418c9f787fc5799174ddb7", "Aaron Curtis", "", "AStar (PAL)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3fd53bfeee39064c945a769f17815a7f", "CCE", "", "Sea Hawk (CCE)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3fe43915e5655cf69485364e9f464097", "CCE", "C-863", "Fisher Price (1983) (CCE)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3ff5165378213dab531ffa4f1a41ae45", "Otto Versand", "311377", "Pygmy (1983) (Otto Versand) (PAL)", "AKA Lock 'n' Chase (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "402b1ca3c230a60fb279d4a2a10fa677", "", "", "3-D Tic-Tac-Toe (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "62", "", "", "" }, - { "402d876ec4a73f9e3133f8f7f7992a1e", "Alex Herbert", "", "Man Goes Down (2006) (A. Herbert) (Prototype)", "Uses AtariVox controller", "Homebrew", "", "", "", "", "", "", "", "ATARIVOX", "", "", "", "", "", "", "" }, - { "405f8591b6941cff56c9b392c2d5e4e5", "Telegames", "", "Star Strike (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4066309eb3fa3e7a725585b9814bc375", "", "", "Multi Ball Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4066d7d88ec4a2c656127a67fa52dcf1", "", "", "Overhead Adventure Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "64", "", "", "" }, - { "407a0c6cc0ff777f67b669440d68a242", "Erik Eid", "", "Euchre (Alpha) (PAL) (31-08-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4093382187f8387e6d011883e8ea519b", "", "", "Go Go Home (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "40aa851e8d0f1c555176a5e209a5fabb", "", "", "Euchre (More for less) (NTSC) (22-08-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40b1832177c63ebf81e6c5b61aaffd3a", "Atari, Peter C. Niday", "", "Rubik's Cube 3-D (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40b59249e05135bca33861e383735e9e", "Atari", "CX26163P", "Skiing (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40d7ccd460c9b1198238af6ceea1737d", "", "", "Star Fire - Enemy Mine (2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40d8ed6a5106245aa79f05642a961485", "Xonox - K-Tel Software - Beck-Tech, Steve Beck", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "40d9f5709877ecf3dd1184f9791dd35e", "Dactari - Milmar", "", "Skiing (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40e12c008037a323a1290c8fa4d2fe7f", "", "", "Skeleton (NTSC) (06-09-2002) (Eric Ball)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "40eb4e263581b3dfec6dd8920b68e00f", "Sears Tele-Games, Marilyn Churchill, Matthew L. Hubbard", "CX2647 - 49-75142", "Seawolf 3 (03-23-1981) (Sears) (Prototype) (PAL)", "Submarine Commander Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "413c925c5fdcea62842a63a4c671a5f2", "Activision, Larry Kaplan", "AX-006", "Bridge (1980) (Activision) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4153dd2beed648e9dc082140ebe8e836", "", "", "Coke Zero (v1.0) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "415c11fcac66bbd2ace2096687774b5a", "", "", "Fu Kung! (V0.00) (07-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4181087389a79c7f59611fb51c263137", "Atari, Suki Lee", "CX26113", "Miss Piggy's Wedding (06-24-1983) (Atari) (Prototype) (8K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "41810dd94bd0de1110bedc5092bef5b0", "Funvision - Fund. International Co.", "", "Dragon Treasure (Funvision)", "AKA Dragonfire", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "41818738ab1745e879024a17784d71f5", "CCE", "C-832", "Atlantis (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4189adfc1b30c121248876e3a1a3ac7e", "Eric Ball", "", "Skeleton (Complete) (06-09-2002) (Eric Ball)", "", "New Release", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4191b671bcd8237fc8e297b4947f2990", "Exus Corporation", "", "Video Jogger (1983) (Exus)", "AKA Foot Craz", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "41c4e3d45a06df9d21b7aae6ae7e9912", "CCE", "C-826", "Grand Prix (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "41f252a66c6301f1e8ab3612c19bc5d4", "Atari - GCC, Mike Feinstein, Brad Rice", "CX2681", "Battlezone (1983) (Atari)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4209e9dcdf05614e290167a1c033cfd2", "CommaVid, John Bronstein", "CM-002", "Video Life (1984) (CommaVid) [higher sounds]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "42249ec8043a9a0203dde0b5bb46d8c4", "CCE", "", "Resgate Espacial (CCE)", "AKA Moonsweeper", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4233eb824c2b4811abef9b6d00355ae9", "Retroactive", "", "Qb (V0.10) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4251b4557ea6953e88afb22a3a868724", "", "", "Robot City (V1.1) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "425ee444a41d218598893d6b6e03431a", "", "", "Invaders Demo (2001) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4279485e922b34f127a88904b31ce9fa", "", "", "Enduro (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "428b2d36f5d716765460701f7016ac91", "Andrew Wallace", "", "Brooni (2001) (Andrew Wallace) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42ae81ae8ac51e5c238639f9f77d91ae", "", "", "Multi-Sprite Demo 2 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42b2c3b4545f1499a083cfbc4a3b7640", "U.S. Games Corporation - JWDA, Todd Marshall, Robin McDaniel, Wes Trager, Henry Will IV", "VC2003", "Eggomania (1982) (U.S. Games)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 60", "", "26", "", "", "" }, - { "42b3ab3cf661929bdc77b621a8c37574", "Robby", "", "Volleyball (Robby)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42b5e3a35b032f033809afb0ea28802d", "Atari, Mimi Nyden, Scott Smith, Robert Vieira", "CX26127", "Gremlins (03-12-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42cdd6a9e42a3639e190722b8ea3fc51", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42dcc02777b0bcfacd85aeb61d33558a", "", "", "Human Cannonball (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "42e0ec5ab8f5deba53e4169ff2a5efbe", "", "", "Atari Logo Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4311a4115fb7bc68477c96cf44cebacf", "", "", "Challenge (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "14", "240", "", "" }, - { "4326edb70ff20d0ee5ba58fa5cb09d60", "Atari - GCC, Kevin Osborn", "CX2689", "Kangaroo (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "435fd469f088468c4d66be6b5204d887", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "438968a26b7cfe14a499f5bbbbf844db", "", "", "Raft Rider (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "43adf60ebdd6b5a0fae21594ecf17154", "Jone Yuan Telephonic Enterprise Co", "", "Stampede (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "43c6cfffeddab6b3787357fed9d44529", "20th Century Fox Video Games, Frank Cohen, Douglas 'Dallas North' Neubauer", "11111", "M.A.S.H (1983) (20th Century Fox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "43e6c5159c3a093fca88656628c6ef34", "", "", "Star Fire (17-02-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "43f33c6dfdeaf5138ce6e6968ad7c5ce", "Jeffry Johnston", "", "Radial Pong - Version 11 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "43f8459d39fb4eddf9186d62722ff795", "", "", "Skeleton+ (17-04-2003) (Eric Ball) (PAL)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "442602713cb45b9321ee93c6ea28a5d0", "", "", "Demon Attack (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "442b7863683e5f084716fda050474feb", "Eckhard Stolberg", "", "Frame Timed Sound Effects-EM (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4431428a7500c96fc0e2798a5dbd36d6", "", "", "Kangaroo (Genesis)", "Genesis controller (B is punch, C is jump)", "Hack of Kangaroo", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "44560e324ffb30741a483218ba5b4342", "", "", "Star Fire - Faster Skipping 2 (24-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4474b3ad3bf6aabe719a2d7f1d1fb4cc", "Activision, Dan Kitchen", "EAX-039-04B, EAX-039-04I", "Kung-Fu Master (1987) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4476c39736090dabac09f6caf835fc49", "", "", "Text Screen (25-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "448c2a175afc8df174d6ff4cce12c794", "Activision, David Crane", "AB-035-04", "Pitfall II (1983) (Activision) [a2]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "44e9c4a047c348dbeb7ace60f45484b4", "", "", "Moon Patrol Arcade (Genesis)", "Genesis controller (C is jump)", "Hack of Moon Patrol", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "44f71e70b89dcc7cf39dfd622cfb9a27", "Tigervision, Robert H. O'Neil", "7-007", "Polaris (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45027dde2be5bdd0cab522b80632717d", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00250", "Summer Games (1987) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45040679d72b101189c298a864a5b5ba", "20th Century Fox Video Games - Sirius Software, David Lubar", "11022", "SpaceMaster X-7 (1983) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4543b7691914dfd69c3755a5287a95e1", "CommaVid, Irwin Gaines", "CM-005", "Mines of Minos (1982) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "456453a54ca65191781aef316343ae00", "", "", "Full Screen Bitmap (3-D Green) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4565c1a7abce773e53c75b35414adefd", "Arcadia Corporation", "", "Supercharger BIOS (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "457b03cd48ff6d895795ef043c6b0f1e", "AtariAge, Chris Spry", "CX26201", "Zippy the Porcupine (2014) (Sprybug)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "457e7d4fcd56ebc47f5925dbea3ee427", "Carrere Video - JWDA, Garry Kitchen - Teldec - Prism", "USC1001", "Space Jockey (1983) (Carrere Video) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "457f4ad2cda5f4803f122508bfbde3f5", "", "", "Canyon Bomber (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "458883f1d952cd772cf0057abca57497", "", "", "Fishing Derby (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45a095645696a217e416e4bd2baea723", "Digivision", "", "Snoopy (Digivision)", "AKA Snoopy and the Red Baron", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45a4f55bb9a5083d470ad479afd8bca2", "CommaVid, Joseph Biel", "", "Frog Demo (1983) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45beef9da1a7e45f37f3f445f769a0b3", "Atari, Suki Lee", "CX2658", "Math Gran Prix (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45c4413dd703b9cfea49a13709d560eb", "Jone Yuan Telephonic Enterprise Co", "", "Challenge of.... Nexar, The (Jone Yuan) (Hack)", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "45cb0f41774b78def53331e4c3bf3362", "Carrere Video - JWDA, Roger Booth, Sylvia Day, Todd Marshall, Robin McDaniel, Wes Trager, Henry Will IV - Teldec - Prism", "USC1007", "Octopus (1983) (Carrere Video) (PAL)", "AKA Name This Game", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4605a00f5b44a9cbd5803a7a55de150e", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (07-03-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "461029ab23800833e9645be3e472d470", "", "", "Combat TC (v0.1)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "46258bd92b1f66f4cb47864d7654f542", "Zellers", "", "Turmoil (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "463dd4770506e6c0ef993a40c52c47be", "Arcadia Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Suicide Mission (Preview) (1982) (Arcadia)", "AKA Meteoroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "463e66ad98806a49106cffa49c08e2ed", "", "", "Interlace Game Demo (01-09-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "467340a18158649aa5e02a4372dcfccd", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4689081b7363721858756fe781cc7713", "", "", "Oystron (V2.6) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "468f2dec984f3d4114ea84f05edf82b6", "Tigervision - Teldec", "7-011 - 3.60015 VG", "Miner 2049er Volume II (1983) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4690fdb70c86604bb35da26696818667", "", "", "Euchre (Release Candidate) (NTSC) (28-09-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "469473ff6fed8cc8d65f3c334f963aab", "Atari, Bruce Poehlman, Gary Stark", "", "Dune (07-10-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "46c021a3e9e2fd00919ca3dd1a6b76d8", "Atari, Jim Huether - Sears", "CX2629 - 6-99843, 49-75118", "Sky Diver (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "46c43fdcbce8fde3a91ebeafc05b7cbd", "", "", "Invaders Demo (PAL) (2001) (Eckhard Stolberg)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "46e9428848c9ea71a4d8f91ff81ac9cc", "Telegames", "", "Astroblast (1988) (Telegames) (PAL)", "Can also use left joystick", "", "", "", "", "", "", "", "PADDLES", "", "YES", "AUTO 55", "", "", "", "", "" }, - { "4702d8d9b48a332724af198aeac9e469", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "470878b9917ea0348d64b5750af149aa", "Atari, Suki Lee - Sears", "CX2658 - 49-75128", "Math Gran Prix (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "47464694e9cce07fdbfd096605bf39d4", "Activision, Dan Kitchen", "EAK-050-04", "Double Dragon (1989) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4767356fa0ed3ebe21437b4473d4ee28", "Atari, Dan Hitchens, Mimi Nyden", "CX2685", "Gravitar (04-12-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "47711c44723da5d67047990157dcb5dd", "CCE", "", "Ice Hockey (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "47911752bf113a2496dbb66c70c9e70c", "Atari - CCW, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (1984) (Atari) (PAL)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "4799a40b6e889370b7ee55c17ba65141", "Konami", "RC 100-X 02", "Pooyan (1983) (Konami)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "", "" }, - { "47aad247cce2534fd70c412cb483c7e0", "Rainbow Vision - Suntek", "SS-010", "Mafia (Rainbow Vision) (PAL)", "AKA Gangster Alley", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "47abfb993ff14f502f88cf988092e055", "Zellers", "", "Inca Gold (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "47aef18509051bab493589cb2619170b", "", "", "Stell-A-Sketch (Bob Colbert) (PD)", "Uses Driving, Joystick, or Amiga/Atari ST mouse Controllers", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "47b82d47e491ac7fdb5053a88fccc832", "Atari Freak 1, Franklin Cruz", "", "Asteroid 2 (Atari Freak 1) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "47bb1c677fe7ba5f376372ae7358e790", "", "", "Star Fire (10-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "47cd61f83457a0890de381e478f5cf5f", "Imagic, Wilfredo Aguilar, Michael Becker, Rob Fulop", "720111-2A, 13205", "Fathom (1983) (Imagic) (PAL)", "AKA Scuba", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "481d20ec22e7a63e818d5ef9679d548b", "Atari", "CX26163P", "Freeway Rabbit (32 in 1) (1988) (Atari) (PAL)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "481f9a742052801cc5f3defb41cb638e", "Jeffry Johnston", "", "Radial Pong - Version 4 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "48287a9323a0ae6ab15e671ac2a87598", "Zellers", "", "Laser Volley (Zellers)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "48411c9ef7e2cef1d6b2bee0e6055c27", "Telesys, Don Ruffcorn, Jack Woodman", "1003", "Fast Food (1982) (Telesys) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "484b0076816a104875e00467d431c2d2", "Atari", "CX26150", "Q-bert (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4868a81e1b6031ed66ecd60547e6ec85", "Eric Mooney", "", "Invaders by Erik Mooney (V2.1) (1-3-98) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4884b1297500bd1243659e43c7e7579e", "Atari - Axlon, Tod Frye", "CX26178", "Save Mary! (10-24-1991) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4892b85c248131d6a42c66a4163a40d0", "Canal 3 - Intellivision", "", "Tac-Scan (Canal 3)", "Uses the Paddle Controllers", "", "", "", "", "", "", "YES", "PADDLES", "", "YES", "AUTO 60", "", "", "215", "", "" }, - { "48bcf2c5a8c80f18b24c55db96845472", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "48e5c4ae4f2d3b62b35a87bca18dc9f5", "Quelle", "476.774 5", "Bobby geht nach Hause (1983) (Quelle) (PAL)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "", "42", "", "", "" }, - { "48f18d69799a5f5451a5f0d17876acef", "ZiMAG - Emag - Vidco", "GN-070", "Mysterious Thief, A (1983) (ZiMAG) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4901c05068512828367fde3fb22199fe", "Imagic, Rob Fulop", "720101-2B, IA3200P, EIX-006-04I", "Demon Attack (1982) (Imagic) (PAL)", "AKA Death from Above", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4904a2550759b9b4570e886374f9d092", "Parker Brothers, Charlie Heath", "931506", "Reactor (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "490e3cc59d82f85fae817cdf767ea7a0", "", "", "Berzerk (Unknown) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "490eed07d4691b27f473953fbea6541a", "Activision, David Crane", "AB-035-04", "Pitfall II (1983) (Activision) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "493daaf9fb1ba450eba6b8ed53ffb37d", "", "", "3-D Corridor Demo (27-03-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "493de059b32f84ab29cde6213964aeee", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Stargate (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "493e90602a4434b117c91c95e73828d1", "Telegames", "", "Lock 'n' Chase (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4947c9de2e28b2f5f3b0c40ce7e56d93", "", "", "3-D Corridor Demo 2 (29-03-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "494cda91cc640551b4898c82be058dd9", "Andreas Dietrich", "", "Donkey Kong VCS (2017) (1.0) (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "YES", "" }, - { "49571b26f46620a85f93448359324c28", "", "", "Save Our Ship (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "37", "", "", "" }, - { "497f3d2970c43e5224be99f75e97cbbb", "CommaVid, John Bronstein", "CM-002", "Video Life (1984) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4981cefe5493ea512284e7f9f27d1e54", "Home Vision - Gem International Corp. - VDI", "VCS83136", "Cosmic War (1983) (Home Vision) (PAL)", "AKA Cosmic Corridor", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "4999b45be0ab5a85bac1b7c0e551542b", "CCE", "", "Double Dragon (CCE) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "499b612f6544ae71d4915aa63e403e10", "Atari, Carol Shaw", "CX26163P", "Checkers (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a196713a21ef07a3f74cf51784c6b12", "Jone Yuan Telephonic Enterprise Co", "", "Frogs and Flies (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a2fe6f0f6317f006fd6d4b34515448b", "", "", "Warring Worms (Midwest Classic Edition) (08-06-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a45c6d75b1ba131f94a9c13194d8e46", "", "", "How to Draw a Playfield II (Joystick Hack) (1997) (Eric Bacher) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a5fddf89801336637ac8e57a7c9a881", "Amiga", "1125", "Power Play Arcade Video Game Album IV (1984) (Amiga) (Prototype)", "Atlantis, Cosmic Ark, Dragonfire", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a6be79310f86f0bebc7dfcba4d74161", "", "", "Demolition Herby (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4a7eee19c2dfb6aeb4d9d0a01d37e127", "Hozer Video Games", "", "Crazy Valet (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a8c743396b8ad69d97e6fd3dd3e3132", "Arcadia Corporation", "", "Supercharger BIOS (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4a9009620038f7f30aaeb2a00ae58fde", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (3 of 3) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4ab2ebd95a8f861ea451abebdad914a5", "Nukey Shay, Thomas Jentzsch", "PAL conversion (F6)", "Montezuma's Revenge (PAL) (Genesis)", "Genesis controller (B jumps left, C jumps right)", "Homebrew", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "4ab4af3adcdae8cdacc3d06084fc8d6a", "Nick Bensema", "", "Sucky Zepplin (Nick Bensema) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4abb4c87a4c5f5d0c14ead2bb36251be", "Atari - Imagineering, Alex DeMeo", "CX26135, CX26135P", "RealSports Boxing (1987) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4ac9f40ddfcf194bd8732a75b3f2f214", "Atari - CCW, Stephan R. Keith, Laura Scholl, Preston Stuart", "CX26106", "Grover's Music Maker (12-29-1982) (Atari) (Prototype)", "Uses Keypad Controller", "Prototype", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, - { "4ae8c76cd6f24a2e181ae874d4d2aa3d", "", "", "Flash Gordon (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4af4103759d603c82b1c9c5acd2d8faf", "Imagic, Bob Smith", "720114-2A, 13207, EIZ-001-04I", "Moonsweeper (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4afa7f377eae1cafb4265c68f73f2718", "Ed Fries", "", "Halo 2600 (2010) (Ed Fries)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4afe528a082f0d008e7319ebd481248d", "", "", "Multi-Color Demo 1 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b143d7dcf6c96796c37090cba045f4f", "Atari, Jim Huether - Sears", "CX2644 - 6-99824", "Flag Capture (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b205ef73a5779acc5759bde3f6d33ed", "", "", "Berzerk (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b27f5397c442d25f0c418ccdacf1926", "Atari, Warren Robinett", "CX2613, 49-75154", "Adventure (1980) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b71197153d651480830638cb6a03249", "Atari, Larry Kaplan", "CX26163P", "Bowling (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b753a97aee91e4b3e4e02f5e9758c72", "Glenn Saunders, Roger Williams", "", "Asymmetric Reflected Playfield (Glenn Saunders)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4b94fd272785d7ec6c95fb7279d0f522", "Atari - CCW, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (12-03-1982) (Atari) (Prototype)", "Uses the Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "4b9581c3100a1ef05eac1535d25385aa", "", "", "IQ 180 (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "20", "235", "", "" }, - { "4baada22435320d185c95b7dd2bcdb24", "Atari, Jerome Domurat, Dave Staugas", "CX2682", "Krull (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4bcc7f6ba501a26ee785b7efbfb0fdc8", "Atari, Andrew Fuchs, Courtney Granner, Jeffrey Gusman, Mark R. Hahn", "CX2690", "Pengo (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4bdae9246d6ee258c26665512c1c8de3", "Atari", "CX26163P", "Human Cannonball (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c030667d07d1438f0e5c458a90978d8", "Retroactive", "", "Qb (V2.03) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4c0fb2544ae0f8b5f7ae8bce7bd7f134", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (Preview) (1983) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "", "" }, - { "4c205f166157154df2f1ef60d87e552f", "", "", "Single-Scanline Positioning Demo 2 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c39a2c97917d3d71739b3e21f60bba5", "", "", "Whale (Sub Scan Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c462b2b6fb0a19a1437eb2c3dc20783", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1 of 3) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c4ce802cbfd160f7b3ec0f13f2a29df", "", "", "Beta Demo (V1.1) (26-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c606235f4ec5d2a4b89139093a69437", "Andrew Davies", "", "Andrew Davies early notBoulderDash demo (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4c6afb8a44adf8e28f49164c84144bfe", "CCE", "C-806", "Mission 3,000 A.D. (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c8832ed387bbafc055320c05205bc08", "Atari, Joe Decuir, Steve Mayer, Larry Wagner - Sears", "CX2601 - 99801, 6-99801, 49-75124", "Combat (1977) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c8970f6c294a0a54c9c45e5e8445f93", "Xonox - K-Tel Software - Product Guild, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4c9307de724c36fd487af6c99ca078f2", "Imagic, Brad Stewart", "720106-1A, IA3409", "Sky Patrol (1982) (Imagic) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4ca0959f846d2beada18ecf29efe137e", "Atari, Jim Huether, Alan J. Murphy, Robert C. Polaro", "CX2666, CX2666P", "RealSports Volleyball (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4ca73eb959299471788f0b685c3ba0b5", "Activision, Steve Cartwright", "AX-031", "Frostbite (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4ca90ba45eced6f5ad560ea8938641b2", "", "", "Hangman Man Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4cabc895ea546022c2ecaa5129036634", "Funvision - Fund. International Co.", "", "Ocean City (Funvision)", "AKA Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4cd796b5911ed3f1062e805a3df33d98", "Tigervision - Software Electronics Corporation - Teldec", "7-006", "Springer (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "4d0a28443f7df5f883cf669894164cfa", "", "", "Beast Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d2cef8f19cafeec72d142e34a1bbc03", "HES", "771-422", "2 Pak Special - Star Warrior, Frogger (1990) (HES) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d38e1105c3a5f0b3119a805f261fcb5", "Bit Corporation", "PGP212", "Phantom UFO (4 Game in One Light Green) (1983) (BitCorp) (PAL)", "AKA Spider Fighter", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d502d6fb5b992ee0591569144128f99", "Atari - Axlon, Tod Frye", "CX26178", "Save Mary! (11-21-1989) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d5f6db55f7f44fd0253258e810bde21", "Fabrizio Zavagli", "", "Betterblast (Fabrizio Zavagli) (Hack)", "Hack of Astroblast", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d7517ae69f95cfbc053be01312b7dba", "Atari, Alan Miller - Sears", "CX2641 - 99807, 49-75105", "Surround (1977) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d77f291dca1518d7d8e47838695f54b", "Data Age", "DA1004", "Airlock (1982) (Data Age)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4d8396deeabb40b5e8578276eb5a8b6d", "Otto Versand", "781698", "Volleyball (1983) (Otto Versand) (PAL)", "AKA RealSports Volleyball (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4dbf47c7f5ac767a3b07843a530d29a5", "Ric Pryor", "", "Breaking News (2002) (Ric Pryor) (Hack)", "Hack of Bump 'n' Jump", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4dcc7e7c2ec0738e26c817b9383091af", "", "", "Unknown Title (bin00026 (200110)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4dd6c7ab9ef77f2b4950d8fc7cd42ee1", "Retroactive", "", "Qb (V2.04) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4df6124093ccb4f0b6c26a719f4b7706", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari) [a]", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 60", "", "", "", "", "" }, - { "4df9d7352a56a458abb7961bf10aba4e", "", "", "Racing Car (Unknown)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "4e01d9072c500331e65bb87c24020d3f", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (06-15-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e02880beeb8dbd4da724a3f33f0971f", "Imagic, Michael Greene", "EIZ-002-04I", "Wing War (1983) (Imagic) (PAL)", "AKA Flap!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e15ddfd48bca4f0bf999240c47b49f5", "Avalon Hill, Jean Baer, Jim Jacob", "5001002", "Death Trap (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4e2c884d04b57b43f23a5a2f4e9d9750", "", "", "Baby Center Animation (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4e37992a37ea36489283f7eb90913bbc", "Kris", "", "Hangman Ghost Halloween (Kris) (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e4895c3381aa4220f8c2795d6338237", "", "", "Backwards Cannonball v1 (Hack)", "Hack of Human Cannonball", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e66c8e7c670532569c70d205f615dad", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e86866d9cde738d1630e2e35d7288ce", "Supergame", "", "River Raid III (Supergame)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4e99ebd65a967cabf350db54405d577c", "Coleco", "2663", "Time Pilot (1983) (Coleco) [b1]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4eb4fd544805babafc375dcdb8c2a597", "Inspirational Video Concepts, Steve Shustack", "321430", "Red Sea Crossing (1983) (Inspirational Video Concepts)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4edb251f5f287c22efc64b3a2d095504", "Atari", "", "Atari VCS Point-of-Purchase ROM (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f0071946e80ca68edfdccbac86dcce0", "", "", "Virtual Pet Demo 1 (CRACKERS) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f2d47792a06da224ba996c489a87939", "HES - Activision", "223", "Super Action Pak - Pitfall, Barnstorming, Grand Prix, Laser Blast (1988) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f32b24869d8c1310fecf039c6424db6", "U.S. Games Corporation - JWDA, Todd Marshall", "", "3-D Zapper (12-15-82) (U.S. Games) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f618c2429138e0280969193ed6c107e", "Activision, Alan Miller", "AZ-028, AG-028-04", "Robot Tank (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f634893d54e9cabe106e0ec0b7bdcdf", "Retroactive", "", "Qb (2.14) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4f64d6d0694d9b7a1ed7b0cb0b83e759", "20th Century Fox Video Games, John Russell", "11016", "Revenge of the Beefsteak Tomatoes (1983) (20th Century Fox)", "AKA Revenge of the Cherry Tomatoes", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f6702c3ba6e0ee2e2868d054b00c064", "Activision - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen - Ariola", "EAZ-033 - 711 033-725", "Space Shuttle (1983) (Activision) (PAL)", "A Journey Into Space, Eine Reise ins All", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f781f0476493c50dc578336f1132a67", "", "", "Indy 500 (Unknown) (PAL) (4K)", "Uses Driving Controllers", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "", "", "", "" }, - { "4f7b07ec2bef5ccffe06403a142f80db", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2003", "Racquetball (1982) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4f82d8d78099dd71e8e169646e799d05", "", "", "Miniature Golf (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4f89b897444e7c3b36aed469b8836839", "Atari", "CX26190", "BMX Air Master (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4fae08027365d31c558e400b687adf21", "", "", "Qb (V2.17) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "4faeb04b1b7fb0fa25db05753182a898", "", "", "2600 Digital Clock (V x.xx) (PD) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4fbe0f10a6327a76f83f83958c3cbeff", "CCE", "C-816", "Keystone Kappers (1983) (CCE)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "4fc1b85b8074b4b9436d097900e34f29", "John K. Harvey", "", "John K. Harvey's Equalizer (John K. Harvey)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "50200f697aeef38a3ce31c4f49739551", "Mystique - American Multiple Industries, Joel H. Martin", "", "Custer's Revenge (1982) (Mystique) (PAL60)", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "502044b1ac111b394e6fbb0d821fca41", "", "", "Hangman Invader 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "502168660bfd9c1d2649d415dc89c69d", "Activision, Bob Whitehead - Ariola", "EAG-019, EAG-019-04I - 711 019-715", "Sky Jinks (1982) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "504688d49a41bf03d8a955512609f3f2", "Thomas Jentzsch", "", "SWOOPS! (TJ)", "Uses the Joystick (L) and Paddle (R) Controllers", "Homebrew", "", "", "", "", "", "", "", "PADDLES", "", "", "", "28", "", "", "" }, - { "50568c80ac61cab789d9923c9b05b68e", "Ebivision", "", "Merlin's Walls - Standard Edition (1999) (Ebivision)", "Image rotated 90 degrees CW", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5069fecbe4706371f17737b0357cfa68", "Apollo - Games by Apollo, Steve Stringfellow", "AP-2005", "Shark Attack (1982) (Apollo) (PAL)", "AKA Lochjaw", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5079bfbc7b8f5770f84215ed2e3bdd1b", "Omegamatrix (2012)", "", "Genesis Button Tester", "", "Homebrew", "", "", "", "", "", "", "GENESIS", "GENESIS", "", "", "", "", "", "", "" }, - { "50a410a5ded0fc9aa6576be45a04f215", "Activision, Bob Whitehead - Ariola", "EAG-019, EAG-019-04I - 711 019-715", "Sky Jinks (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "50c7edc9f9dc0369abcdab3b4efeb5e9", "U.S. Games Corporation - JWDA, Todd Marshall", "", "3-D Zapper (U.S. Games) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "50ef88f9a5e0e1e6b86e175362a27fdb", "", "", "Multi-Sprite Game V2.4 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "512e874a240731d7378586a05f28aec6", "Tigervision, Rorke Weigandt - Teldec", "7-005", "Marauder (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5131ab3797fe8c127e3e135b18b4d2c8", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "514f911ecff2be5eeff2f39c49a9725c", "Parker Brothers", "931510", "Sky Skipper (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "515046e3061b7b18aa3a551c3ae12673", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "516ffd008057a1d78d007c851e6eff37", "Parker Brothers, Dawn Stockbridge", "PB5910", "Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "517592e6e0c71731019c0cebc2ce044f", "Parker Brothers - JWDA, Todd Marshall", "PB5550", "Q-bert's Qubes (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "214", "", "" }, - { "517923e655755086a3b72c0b17b430e6", "Tron", "", "Super Tennis (Tron)", "AKA RealSports Tennis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5188fee071d3c5ef0d66fb45c123e4a5", "Gameworld", "133-001", "Encounter at L-5 (1983) (Gameworld) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 50", "", "", "", "", "" }, - { "519f007c0e14fb90208dbb5199dfb604", "Amiga - Video Soft", "", "Depth Charge (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "51de328e79d919d7234cf19c1cd77fbc", "Atari, Mark R. Hahn", "CX2678", "Dukes of Hazzard (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "51e390424f20e468d2b480030ce95d7b", "Video Game Program", "", "Fire Bird (Video Game Program) (PAL)", "AKA Phoenix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "51f15b39d9f502c2361b6ba6a73464d4", "", "", "Amanda Invaders (PD) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "51f211c8fc879391fee26edfa7d3f11c", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "521f4dd1eb84a09b2b19959a41839aad", "Bit Corporation", "PG206", "Bobby Is Going Home (1983) (BitCorp)", "AKA Bobby geht Heim", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "522c9cf684ecd72db2f85053e6f6f720", "Rainbow Vision - Suntek", "SS-008", "Year 1999, The (Rainbow Vision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52385334ac9e9b713e13ffa4cc5cb940", "CCE", "C-804", "Open, Sesame! (1983) (CCE)", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "", "214", "YES", "" }, - { "523f5cbb992f121e2d100f0f9965e33f", "Joe Grand", "", "SCSIcide (1.30) (CGE 2001 Release) (Joe Grand)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, - { "524693b337f7ecc9e8b9126e04a232af", "", "", "Euchre (19-08-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5256f68d1491986aae5cfdff539bfeb5", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (07-26-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "525ea747d746f3e80e3027720e1fa7ac", "Activision, Garry Kitchen - Ariola", "EAZ-032 - 771 032-712", "Pressure Cooker (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "525f2dfc8b21b0186cff2568e0509bfc", "Activision, David Crane", "AG-930-04, AZ-030", "Decathlon (1983) (Activision) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52615ae358a68de6e76467e95eb404c7", "", "", "DJdsl-wopd (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "528400fad9a77fd5ad7fc5fdc2b7d69d", "Starpath Corporation, Stephen H. Landrum, Jon Leupp", "11 AR-4201", "Sword of Saros (1983) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52a0003efb3b1c49fcde4dbc2c685d8f", "Atari, Alan Miller - Sears", "CX2641 - 99807, 49-75105", "Surround (1977) (Atari) (4K) [a]", "", "", "", "2K", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52b448757081fd9fabf859f4e2f91f6b", "", "", "Worm War I (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52bae1726d2d7a531c9ca81e25377fc3", "", "", "Space Instigators (V1.8 Fixed) (20-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "52e1954dc01454c03a336b30c390fb8d", "Retroactive", "", "Qb (2.14) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "52e9db3fe8b5d336843acac234aaea79", "", "", "Fu Kung! (V0.11) (28-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5305f69fbf772fac4760cdcf87f1ab1f", "Jone Yuan Telephonic Enterprise Co", "", "Ski Run (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5324cf5b6dc17af4c64bf8696c39c2c1", "Imagic, Dennis Koble", "IA3203, IX-010-04", "Atlantis (1982) (Imagic) (8K)", "AKA Lost City of Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5336f86f6b982cc925532f2e80aa1e17", "Parker Brothers - JWDA, Todd Marshall, Robin McDaniel, Ray Miller", "PB5060", "Star Wars - Death Star Battle (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "534e23210dd1993c828d944c6ac4d9fb", "M Network, Stephen Tatsumi, Jane Terjung - Kool Aid", "MT4648", "Kool-Aid Man (1983) (M Network)", "AKA Kool Aid Pitcher Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5355f80cacf0e63a49cbf4ade4e27034", "Christian Samuel", "", "Cute Dead Things House (Christian Samuel) (Hack)", "Hack of Haunted House", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5360693f1eb90856176bd1c0a7b17432", "", "", "Oystron (V2.85) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "537ed1e0d80e6c9f752b33ea7acbe079", "", "", "A-VCS-tec Challenge (beta 5) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5385cf2a04de1d36ab55c73174b84db0", "Paul Slocum", "", "Combat Rock (PD) (Hack)", "Hack of Combat", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "539b7038acec0ccedeae40f238998579", "", "", "Star Fire (25-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "539d26b6e9df0da8e7465f0f5ad863b7", "Atari, Carol Shaw - Sears", "CX2636 - 49-75156", "Video Checkers (1980) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "53b66f11f67c3b53b2995e0e02017bd7", "CCE", "C-1005", "Super Tennis (1983) (CCE)", "AKA RealSports Tennis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "53d181cde2e0219b5754caad246fcb66", "", "", "Missile Demo (1998) (Ruffin Bailey) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "53f147b9746fdc997c62f3dd67888ee5", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "540075f657d4b244a1f74da1b9e4bf92", "Bit Corporation", "PGP230", "Festival (4 Game in One Dark Green) (1983) (BitCorp) (PAL)", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5409d20c1aea0b89c56993aec5dc5740", "", "", "Carnival Shooter (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5428cdfada281c569c74c7308c7f2c26", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "542c6dd5f7280179b51917a4cba4faff", "ZiMAG - Emag - Vidco", "GN-080", "Spinning Fireball (1983) (ZiMAG) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5438e84b90e50a5362f01cc843b358d4", "Arcadia Corporation, Scott Nelson", "3 AR-4300", "Fireball (1982) (Arcadia) (Prototype)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, - { "543b4b8ff1d616fa250c648be428a75c", "Warren Robinett", "", "Adventure (1978) (Warren Robinett) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "545048ccb045f9efc6cf2b125cd0dfa8", "Arcadia Corporation, Stephen Harland Landrum, Jon Leupp", "AR-4201", "Sword of Saros (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "54785fa29e28aae6038929ba29d33d38", "", "", "Poker Squares (V0.19) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5494b9ee403d9757f0fd1f749e80214a", "Larry Petit", "", "Xenophobe Arcade (2003) (Larry Petit) (Hack)", "Hack of Xenophobe", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "54a1c1255ed45eb8f71414dadb1cf669", "Spectravideo", "SA-212", "Mangia' (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "54bafc299423f5a50b8bc3a797914706", "SOLID Corp. (D. Scott Williamson)", "CX2655*", "Star Castle 2600 (SolidCorp) (PAL)", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "54da3b0b3f43f5b37911c135b9432b49", "", "", "Halloween III Revision (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "54f7efa6428f14b9f610ad0ca757e26c", "Apollo - Games by Apollo, Steve Stringfellow", "AP-2005", "Shark Attack (1982) (Apollo)", "AKA Lochjaw", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "551a64a945d7d6ece81e9c1047acedbc", "Matthias Jaap", "", "Coffee Cup Soccer (Matthias Jaap) (Hack)", "Hack of Pele's Soccer", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "551ef75593ec18d078e8f5cc0229e1c4", "", "", "Star Fire - New Paulstar WIP (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5524718a19107a04ec3265c93136a7b5", "Thomas Jentzsch", "", "RealSports Basketball (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "557e893616648c37a27aab5a47acbf10", "Atari - Axlon, Tod Frye - Heuristica, Augustin Ortiz", "CX26169", "Shooting Arcade (01-16-1990) (Atari) (Prototype) (PAL)", "Uses the Light Gun Controller (left only)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "559317712f989f097ea464517f1a8318", "Panda", "100", "Space Canyon (1983) (Panda)", "AKA Space Cavern", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "55949cb7884f9db0f8dfcf8707c7e5cb", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "55ace3c775f42eb46f08bb1dca9114e7", "", "", "Shadow Keep (04-03-2003) (Andrew Towers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "55ef6ab2321ca0c3d369e63d59c059c8", "", "", "Pitfall! (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "55ef7b65066428367844342ed59f956c", "Atari - Roklan, Joe Gaucher, Alex Leavens", "CX2683", "Crazy Climber (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "562acb1b7ff182aba133bda8e21ad7c1", "", "", "Space Treat Deluxe (08-03-2003) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "562bf02f5031d51c6b53b03972a56b22", "", "", "Star Fire - Framework Done (30-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "56300ed31fef018bd96768ccc982f7b4", "HES - Activision", "559", "Rad Action Pak - Kung-Fu Master, Freeway, Frostbite (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5641c0ff707630d2dd829b26a9f2e98f", "Joystik", "", "Motocross (Joystik)", "AKA Motocross Racer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5643ee916f7dc760148fca4db3aa7d10", "", "", "Moon Patrol (Genesis)", "Genesis controller (C is jump)", "Hack of Moon Patrol", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "5678ebaa09ca3b699516dba4671643ed", "Coleco, Sylvia Day, Henry Will IV", "2459", "Mouse Trap (1982) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "568371fbae6f5e5b936af80031cd8888", "", "", "Robotfindskitten2600 (26-04-2003) (Jeremy Penner)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "571c6d9bc71cb97617422851f787f8fe", "Activision, David Crane - Ariola", "EAG-004, PAG-004 - 711 004-715", "Fishing Derby (1980) (Activision) (PAL)", "AKA Schneller als der Hai", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "572d0a4633d6a9407d3ba83083536e0f", "Funvision - Fund. International Co.", "", "Busy Police (Funvision)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "575c0fb61e66a31d982c95c9dea6865c", "", "", "Blackjack (Unknown) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, - { "57939b326df86b74ca6404f64f89fce9", "Atari, Sam Comstock, Richard Dobbis, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "579baa6a4aa44f035d245908ea7a044d", "Jess Ragan", "", "Galaxian Enhanced Graphics (Jess Ragan) (Hack)", "Hack of Galaxian", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "57a66b6db7efc5df17b0b0f2f2c2f078", "Retroactive", "", "Qb (V2.08) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "57c5b351d4de021785cf8ed8191a195c", "Atari - CCW, Gary Stark", "CX26102", "Cookie Monster Munch (1983) (Atari)", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "5835a78a88f97acea38c964980b7dbc6", "", "", "Cosmic Creeps (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5846b1d34c296bf7afc2fa05bbc16e98", "Atari - Sears", "CX2643 - 6-99815", "Codebreaker (1978) (Atari)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "58513bae774360b96866a07ca0e8fd8e", "Mystique - American Multiple Industries, Joel H. Martin", "1001", "Custer's Revenge (1982) (Mystique)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "585600522b1f22f617652c962e358a5d", "", "", "Multi-Sprite Game V2.2 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "585f73010e205ae5b04ee5c1a67e632d", "", "", "Daredevil (V3) (Stunt_Cycle_Rules!) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5864cab0bc21a60be3853b6bcd50c59f", "", "", "Commando Raid (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "58746219d8094edff869f0f5c2aeaad5", "Jone Yuan Telephonic Enterprise Co", "", "Bowling (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5894c9c0c1e7e29f3ab86c6d3f673361", "Activision - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen", "AZ-033, AZ-033-04", "Space Shuttle (1983) (Activision)", "A Journey Into Space", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "589c73bbcd77db798cb92a992b4c06c3", "Xonox - K-Tel Software - Action Graphics, John Perkins, David Thiel", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox) (PAL60)", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "58a82e1da64a692fd727c25faef2ecc9", "CCE", "C-824", "Jaw Breaker (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "58c396323ea3e85671e34c98eb54e2a4", "Brian Watson", "", "Color Tweaker (B. Watson)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "58d331c23297ed98663d11b869636f16", "", "", "Fu Kung! (V0.09) (26-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "58e313e2b5613b2439b5f12bb41e3eef", "", "", "Cube Conquest (Demo Interlace) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "590ac71fa5f71d3eb29c41023b09ade9", "Atari - GCC, Mark Ackerman, Tom Calderwood, Glenn Parker", "CX2684", "Galaxian (01-05-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "59135f13985b84c4f13cc9e55eec869a", "", "", "Multi-Sprite Game V2.0 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "594dbc80b93fa5804e0f1368c037331d", "Telesys, Alex Leavens", "", "Bouncin' Baby Bunnies (1983) (Telesys) (Prototype)", "AKA Bouncing Baby Monkeys", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5961d259115e99c30b64fe7058256bcf", "Universal Gamex Corporation, Miguel Castillo, H.K. Poon", "GX-001", "X-Man (1983) (Universal)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "59734e1cc41822373845a09c51e6ba21", "Activision, John Van Ryzin", "AG-038-04", "Cosmic Commuter (1984) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "598a4e6e12f8238b7e7555f5a7777b46", "Tigervision", "7-008", "Miner 2049er (1982) (Tigervision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "214", "", "" }, - { "599cbf919d47a05af975ad447df29497", "Jake Patterson", "", "Baubles (V0.002) (2001) (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "59b70658f9dd0e2075770b07be1a35cf", "Thomas Jentzsch", "", "Surfer's Paradise (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "59d33e00c07665395209c1e55da0b139", "", "", "Imagic Selector ROM (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "59e53894b3899ee164c91cfa7842da66", "Data Age", "", "Survival Run (1983) (Data Age) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "59e96de9628e8373d1c685f5e57dcf10", "PlayAround - J.H.M.", "204", "Beat 'Em & Eat 'Em (1982) (PlayAround)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, - { "59f596285d174233c84597dee6f34f1f", "CCE", "C-811", "River Raid (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a0ff99ba10bd26d542e1d6f59f56850", "Champ Games", "CG-04-P", "Super Cobra Arcade (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "SAVEKEY", "", "", "PAL60", "", "", "YES", "" }, - { "5a17e30e6e911e74ccd7b716d02b16c6", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a272012a62becabcd52920348c7c60b", "Star Game", "", "Pitfall (Star Game)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a2f2dcd775207536d9299e768bcd2df", "Otto Versand", "781698", "Flippern (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Video Pinball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a5390f91437af9951a5f8455b61cd43", "Retroactive", "", "Qb (0.11) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5a6febb9554483d8c71c86a84a0aa74e", "CCE", "C-1003", "Donkey Kong Jr (1983) (CCE)", "AKA Donkey Kong Junior", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a734779d797ccef25dc8acfa47244c7", "", "", "Oh No! (Version 2) (18-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a80b857eb8b908ab477ec4ef902edc8", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a81ad4e184050851e63c8e16e3dac77", "Jone Yuan Telephonic Enterprise Co", "Hack", "Sky Diver (Jone Yuan) (Hack)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a8afe5422abbfb0a342fb15afd7415f", "Atari - Bobco, Robert C. Polaro", "CX26155", "Sprint Master (1988) (Atari)", "AKA Sprint 88, Sprint 2000", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a93265095146458df2baf2162014889", "Activision, Steve Cartwright - Ariola", "EAX-031, EAX-031-04B - 711 031-717", "Frostbite (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a9685c4d51a6c1d6a9544946d9e8dc3", "AtariAge", "", "Grandma's Revenge (AtariAge)", "Can use driving controller in right port", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5a9d188245aff829efde816fcade0b16", "CCE", "C-808", "Phantom Tank (1983) (CCE) (PAL)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "5acf9865a72c0ce944979f76ff9610f0", "", "", "Dodge Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5ae73916fa1da8d38ceff674fa25a78a", "CCE", "", "Barnstorming (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5aea9974b975a6a844e6df10d2b861c4", "Atari, Dan Hitchens. Mimi Nyden", "CX2656", "SwordQuest - EarthWorld (1982) (Atari)", "AKA Adventure I, SwordQuest I - EarthWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5af9cd346266a1f2515e1fbc86f5186a", "Sega", "002-01", "Sub-Scan (1983) (Sega)", "AKA Subterfuge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b124850de9eea66781a50b2e9837000", "PlayAround - J.H.M.", "205", "Bachelor Party (1982) (PlayAround)", "Uses the paddle controllers", "Extremely Rare", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "AUTO 65", "", "22", "222", "YES", "" }, - { "5b574faa56836da0866ba32ae32547f2", "", "", "Tomb Raider 2600 [REV 03] (Montezuma's Revenge Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b5d04887922b430de0b7b2a21f9cd25", "", "", "Omega Race (Genesis)", "Genesis controller (B is thrust, C is fire)", "Hack of Omega Race", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "5b6f5bcbbde42fc77d0bdb3146693565", "", "", "Seaquest (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b7ea6aa6b35dc947c65ce665fde624b", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (2 of 3) (1982) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b85e987e2b1618769d97ba9182333d0", "Atari - GCC, Mike Feinstein, Brad Rice", "CX2681", "Battlezone (05-12-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b92a93b23523ff16e2789b820e2a4c5", "Activision, Dan Kitchen", "AG-039-04", "Kung-Fu Master (1987) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b98e0536c3f60547dd708ae22adb04b", "Ben Hudman", "", "Donkey Kong Gingerbread Man (Ben Hudman) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5b9c2e0012fbfd29efd3306359bbfc4a", "HES", "", "2 Pak Special - Hoppy, Alien Force (1992) (HES) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5babe0cad3ec99d76b0aa1d36a695d2f", "Coleco - Individeo, Ed Temple", "2654", "Looping (1983) (Coleco) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5bba254e18257e578c245ed96f6b003b", "", "", "Music Effects Demo (21-01-2003) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5bbab3f3e4b47e3e23f9820765dbb45c", "", "", "Pitfall! (says 1985) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5bc9998b7e9a970e31d2cb60e8696cc4", "Jack Kortkamp", "", "Borgwars Asteroids (2003) (Jack Kortkamp) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5bcc83677d68f7ef74c1b4a0697ba2a8", "Activision, Alan Miller", "AX-012, CAX-012, AX-012-04", "Ice Hockey (1981) (Activision) (16K)", "", "", "", "4K", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5bd79139a0c03b63f6f2cf00a7d385d2", "Marc de Smet", "", "An Exercise In Minimalism (V1) (1999) (Marc de Smet) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5be03a1fe7b2c114725150be04b38704", "Atari, Alan Miller", "CX2642", "Hunt & Score (1978) (Atari) (PAL)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "5c0227ad63300670a647fcebf595ea37", "Josh", "", "Battle for Naboo (Josh) (Hack)", "Hack of Atlantis", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c0520c00163915a4336e481ca4e7ef4", "Quelle", "262.794 1", "Wuestenschlacht (1983) (Quelle) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c19f6da638c4c7c1f98d09e63df43e4", "Canal 3 - Intellivision", "", "Cosmic Ark (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c1b1aa78b7609d43c5144c3b3b60adf", "", "", "Demo Image Series #8 - Two Marios (Different Interlacing) (27-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c3a6d27c026f59a96b7af91e8b1bf26", "PlayAround - J.H.M.", "", "PlayAround Demo (PlayAround) (1982)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c618a50dfa23daac97ba459b9ff5206", "Steve Engelhardt", "", "Berzerk Renegade (2002) (Steve Engelhardt) (Hack)", "Hack of Room of Doom", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5c73693a89b06e5a09f1721a13176f95", "", "", "Wavy Line Test 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5c86e938e0845b9d61f458539e9a552b", "Atari, Alan Miller", "CX26163P", "Surround (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5cbd7c31443fb9c308e9f0b54d94a395", "Spectravideo, Mark Turmell", "SA-217", "Gas Hog (1983) (Spectravideo) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5ce98f22ade915108860424d8dde0d35", "", "", "Hangman Man Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d0e8a25cbd23e76f843c75a86b7e15b", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (09-07-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d132d121aabc5235dd039dfc46aa024", "", "", "Basketball (208 in 1) (Unknown) (PAL) (Hack)", "Console ports are swapped", "Hack", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "5d25df9dc2cde746ceac48e834cf84a7", "Activision - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen", "EAZ-033", "Space Shuttle (1983) (Activision) (SECAM)", "A Journey Into Space", "", "", "FE", "", "", "", "", "", "", "", "", "SECAM", "", "", "", "" }, - { "5d2cc33ca798783dee435eb29debf6d6", "Activision - Imagineering, Mike Reidel", "AK-043-04", "Commando (1988) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d799bfa9e1e7b6224877162accada0d", "Spectravision - Spectravideo - Sirius Software, David Lubar", "SA-206", "Challenge of.... Nexar, The (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d8f1ab95362acdf3426d572a6301bf2", "Thomas Jentzsch", "", "SWOOPS! (v0.96) (TJ) (PAL)", "Uses the Joystick (L) and Paddle (R) Controllers", "Homebrew", "", "", "", "", "", "", "", "PADDLES", "", "", "", "28", "", "", "" }, - { "5d8fb14860c2f198472b233874f6b0c9", "", "", "Boing! (PD) [a2]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5d9592756425192ec621d2613d0e683d", "CCE", "C-839", "Misterious Thief, A (1983) (CCE) [a]", "AKA A Mysterious Thief", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5da8fd0b5ed33a360bff37f8b5d0cd58", "Tron", "", "Pole Position (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5dae540347cf0a559962d62604ecf750", "Canal 3 - Intellivision", "", "Freeway (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5db9e5bf663cad6bf159bc395f6ead53", "Goliath - Hot Shot", "83-212", "Time Race (1983) (Goliath) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "5dccf215fdb9bbf5d4a6d0139e5e8bcb", "Froggo", "FG1009", "Sea Hunt (1987) (Froggo)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5de8803a59c36725888346fdc6e7429d", "Atari, John Dunn - Sears", "CX2631 - 49-75152", "Superman (1979) (Atari) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5df32450b9fbcaf43f9d83bd66bd5a81", "Eric Ball", "", "Atari Logo Playfield Demo (2001) (Eric Ball) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5df559a36347d8572f9a6e8075a31322", "Digivision", "", "Enduro (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e0c37f534ab5ccc4661768e2ddf0162", "Telegames - VSS, Ed Salvo", "5667 A106", "Glacier Patrol (1988) (Telegames)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e1b4629426f4992cf3b2905a696e1a7", "Activision - Bobco, Robert C. Polaro", "AK-049-04", "Rampage! (1989) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e1b7a6078af428ef056fe85a37a95ca", "Activision, David Crane", "AX-014, AX-014-04", "Grand Prix (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e1cd11a6d41fc15cf4792257400a31e", "Philip R. Frey", "", "Return of Mario Bros (Philip R. Frey) (Hack)", "Hack of Mario Bros.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e201d6bfc520424a28f129ee5e56835", "Universal Gamex Corporation, Miguel Castillo, H.K. Poon", "GX-001", "X-Man (1983) (Universal) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e2495d43b981010304af55efed1e798", "Jone Yuan Telephonic Enterprise Co", "", "Math Gran Prix (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e2928f089490017e88e9f9e5a881a25", "", "", "Star Fire - Faster Skipping 1 (24-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5e99aa93d0acc741dcda8752c4e813ce", "", "", "2600 Digital Clock (V b2) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5ec73ac7d2ac95ac9530c6d33e713d14", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (2 of 3) (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, - { "5eeb81292992e057b290a5cd196f155d", "Wizard Video Games - VSS, Ed Salvo", "008", "Texas Chainsaw Massacre, The (1983) (Wizard Video)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5ef303b9f0aa8cf20720c560e5f9baa1", "Atari, Jim Huether", "CX2629, CX2629P", "Sky Diver (1979) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f1b7d5fa73aa071ba0a3c2819511505", "CCE", "", "Cosmic Commuter (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f2b4c155949f01c06507fb32369d42a", "Apollo, Ed Salvo", "AP-1001", "Skeet Shoot (1981) (Apollo) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f316973ffd107f7ab9117e93f50e4bd", "", "", "Commando Raid (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f39353f7c6925779b0169a87ff86f1e", "Atari - GCC, John Allred, Douglas B. Macrae, Betty Ryan Tylko", "CX2694", "Pole Position (1983) (Atari) [a]", "AKA RealSports Driving", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f46d1ff6d7cdeb4b09c39d04dfd50a1", "Atari, Gary Palmer", "CX2661P", "Fun with Numbers (1980) (Atari) (PAL)", "AKA Basic Math", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f560837396387455c9dcb05cdd4b053", "Canal 3 - Intellivision", "", "Eggomania (Canal 3)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 60", "", "", "", "", "" }, - { "5f681403b1051a0822344f467b05a94d", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (1982) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5f69453a69f21dc49697a80d2e933491", "", "", "Star Fire - Reduced Flickering (06-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f708ca39627697e859d1c53f8d8d7d2", "Atari, Warren Robinett - Sears", "CX2606 - 6-99825, 49-75112", "Slot Racers (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f73e7175474c1c22fb8030c3158e9b3", "Atari, Nick 'Sandy Maiwald' Turner", "CX2665", "Frog Pond (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f786b67e05fb9985b77d4beb35e06ee", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Defender II (1987) (Atari) (PAL)", "AKA Stargate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f7ae9a7f8d79a3b37e8fc841f65643a", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5f7de62a408b9de3a1168898298fd31d", "", "", "Super Cobra (Genesis)", "Genesis controller (B is bomb, C is laser)", "Hack of Super Cobra", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "5f950a2d1eb331a1276819520705df94", "20th Century Fox Video Games", "", "Unknown 20th Century Fox Game (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "5f9b62350b31be8bd270d9a241cbd50e", "Telegames", "5658 A088", "Football (1988) (Telegames) (PAL)", "AKA Super Challenge Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5faffe1c4c57430978dec5ced32b9f4a", "Dactari - Milmar", "", "Volleyball (Dactari - Milmar)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "5fb71cc60e293fe10a5023f11c734e55", "", "", "This Planet Sucks (Fix) (27-12-2002) (Greg Troutman)", "", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "600d48eef5c0ec27db554b7328b3251c", "", "", "Bars and Text Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6015a9cef783e97e98a2aa2cf070ae06", "Thomas Jentzsch", "", "Battlezone TC (Thomas Jentzsch) (Hack)", "Uses two simultaneous Joystick Controllers, Hack of Battlezone", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "60358edf0c2cc76b1e549e031e50e130", "Manuel Polik", "", "Cyber Goth Galaxian (Manuel Polik) (Hack)", "Hack of Galaxian", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "603c7a0d12c935df5810f400f3971b67", "Bit Corporation", "PG209", "Mr. Postman (1983) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6041f400b45511aa3a69fab4b8fc8f41", "Apollo, Ban Tran", "AP-2010", "Wabbit (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "604e09724555807c28108049efe34a13", "", "", "Sokoban (01-01-2003) (Adam Wozniak)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6058e40ce79d7434c7f7477b29abd4a5", "", "", "Rubik's Cube Demo (23-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "605dcb73d22f4efdb90ef9da2f290f7c", "Atari, Larry Kaplan", "CX26163P", "Air-Sea Battle (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "40", "256", "", "" }, - { "605fd59bfef88901c8c4794193a4cbad", "Data Age", "", "Secret Agent (1983) (Data Age) (Prototype)", "Uses the Paddle Controllers", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, - { "606c2c1753051e03c1f1ac096c9d2832", "Jone Yuan Telephonic Enterprise Co", "", "Crackpots (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6076b187a5d8ea7a2a05111c19b5d5cd", "", "", "Fu Kung! (V0.14) (01-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "60a61da9b2f43dd7e13a5093ec41a53d", "VentureVision, Dan Oliver", "VV2001", "Rescue Terra I (1982) (VentureVision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "60bbd425cb7214ddb9f9a31948e91ecb", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "60cd61a2dfccb0e2736434f9792c1672", "Amiga - Video Soft, Frank Ellis, Jerry Lawson", "2110", "3-D Havoc (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "60d304582d33e2957b73eb300a7495bb", "", "", "Jam Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "60e0ea3cbe0913d39803477945e9e5ec", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "AUTO 60", "", "", "", "", "" }, - { "613abf596c304ef6dbd8f3351920c37a", "", "", "Boring Pac-Man (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "6141c095d0aee4e734bebfaac939030a", "Rainbow Vision - Suntek", "SS-017", "Mariana (Rainbow Vision) (PAL)", "AKA Seaquest", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61426cee013306e7f7367534ab124747", "", "", "One Blue Bar Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "615a3bf251a38eb6638cdc7ffbde5480", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2674", "E.T. - The Extra-Terrestrial (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61621a556ad3228f0234f5feb3ab135c", "", "", "Fu Kung! (V0.05 Cuttle Card Compattle Revision) (14-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61631c2f96221527e7da9802b4704f93", "Activision - Imagineering, Mike Reidel", "AK-043-04", "Commando (1988) (Activision) [different logo]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61719a8bdafbd8dab3ca9ce7b171b9e2", "", "", "Enduro (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61728c6cfb052e62a9ed088c5bf407ba", "", "", "Sprite Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "619de46281eb2e0adbb98255732483b4", "", "", "Time Warp (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "61dbe94f110f30ca4ec524ae5ce2d026", "CCE", "C-820", "Space Invaders (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61e0f5e1cc207e98704d0758c68df317", "Star Game", "007", "Tennis (Star Game)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "61ef8c2fc43be9a04fe13fdb79ff2bd9", "", "", "Gas Gauge Demo - Revisited (2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6205855cc848d1f6c4551391b9bfa279", "", "", "Euchre (Release Candidate 2) (NTSC) (01-10-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "624e0a77f9ec67d628211aaf24d8aea6", "Panda", "108", "Sea Hawk (1983) (Panda)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "626d67918f4b5e3f961e4b2af2f41f1d", "Atari", "50008", "Diagnostic Test Cartridge 2.0 (1980) (Atari) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6272f348a9a7f2d500a4006aa93e0d08", "Atari, Jerome Domurat, Michael Sierchio", "CX2667, CX2667P", "RealSports Soccer (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "62899430338e0538ee93397867d85957", "Gameworld", "133-004", "Airlock (1983) (Gameworld) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "62921652f6634eb1a0940ed5489c7e18", "", "", "SCSIcide (V1.09) (2001) (Joe Grand)", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, - { "62992392ea651a16aa724a92e4596ed6", "Eric Mooney", "", "Invaders by Erik Mooney (Beta) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "62d1f50219edf9a429a9f004c19f31b3", "JWDA, Todd Marshall", "", "Euro Gen (02-01-83) (JWDA) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "62f74a2736841191135514422b20382d", "", "", "Pharaoh's Curse (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "20", "225", "YES", "" }, - { "62ffd175cac3f781ef6e4870136a2520", "", "", "2600 Digital Clock (V x.xx) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63166867f75869a3592b7a94ea62d147", "", "", "Indy 500 (Hack) [a1]", "Hack of Indy 500", "Hack", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "", "", "", "", "" }, - { "6333ef5b5cbb77acd47f558c8b7a95d3", "Greg Troutman", "", "Dark Mage (Greg Troutman) (PD) (8K)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6337927ad909aa739d6d0044699a916d", "Jeffry Johnston", "", "Radial Pong - Version 2 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6339d28c9a7f92054e70029eb0375837", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6342afe9c9ad1b6120b8f6fb040d0926", "", "", "Move a Blue Blob Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6354f9c7588a27109c66905b0405825b", "Thomas Jentzsch", "", "Amidar DS (2003) (TJ) (Hack)", "Hack of Amidar", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "635cc7a0db33773959d739d04eff96c2", "", "", "Minesweeper (V.90) (Soren Gust) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6362396c8344eec3e86731a700b13abf", "Panda", "109", "Exocet (1983) (Panda)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "637efac676ff063f2fbb0abff77c4fa5", "", "", "Noize Maker Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63811ed69bdbc35c69d8aa7806c3d6e9", "Atari", "CX26163P", "Homerun (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "638cc82ea96f67674595ba9ae05da6c6", "Rainbow Vision - Suntek", "SS-011", "Super Ferrari (Rainbow Vision) (PAL)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63a6eda1da30446569ac76211d0f861c", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, - { "63a7445b1d3046d3cdcdbd488dca38d9", "Rob Kudla", "", "Better Space Invaders (1999) (Rob Kudla) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63c5fef3208bb1424d26cf1ab984b40c", "", "", "Analog Clock (V0.1) (20-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63c7395d412a3cd095ccdd9b5711f387", "Eric Ball", "ELB005", "Skeleton+ (PAL)", "Stereo sound", "Homebrew", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63d6247f35902ba32aa49e7660b0ecaa", "", "", "Space War (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63e42d576800086488679490a833e097", "Telesys, Jim Rupp", "1004", "Ram It (1983) (Telesys) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63e783994df824caf289b69a084cbf3e", "David Marli", "", "Fat Albert (David Marli) (Hack)", "Hack of Fast Food", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "63e9e612bbee31045f8d184a4e53f8ec", "ATARITALIA", "", "Moby Blues (2002) (ATARITALIA) (Hack)", "Hack of Mario Bros", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "640a08e9ca019172d612df22a9190afb", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691, CX2691P", "Joust (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "64198bb6470c78ac24fcf13fe76ab28c", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "643e6451eb6b8ab793eb60ba9c02e000", "Salu - Avantgarde Software, Michael Buetepage", "460741", "Ghostbusters II (1992) (Salu) (PAL) [different tune]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "645bf7f9146f0e4811ff9c7898f5cd93", "Xonox - K-Tel Software - VSS, Robert Weatherby", "6230, 6250", "Super Kung-Fu (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6468d744be9984f2a39ca9285443a2b2", "Atari, Ed Logg, Carol Shaw", "CX26163P", "Reversi (32 in 1) (1988) (Atari) (PAL)", "AKA Othello", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "647162cceb550fd49820e2206d9ee7e8", "", "", "Skeleton (NTSC) (2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "64b8e19c767191ccdc97acc6904c397b", "Jeffry Johnston", "", "Radial Pong - Version 6 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "64ca518905311d2d9aeb56273f6caa04", "CCE", "", "Cubo Magico (CCE)", "AKA Cubicolor", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "64d43859258dc8ca54949e9ff4174202", "Thomas Jentzsch", "", "Lilly Adventure (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, - { "64fab9d15df937915b1c392fc119b83b", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (05-20-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "650df778c6ce22d3fd1a7c33c565bcc3", "Atari - GCC, Betty Ryan Tylko, Douglas B. Macrae", "CX2694", "Pole Position (1983) (Atari)", "Genesis controller (B is high gear, C is low gear, left difficulty switch swaps gear buttons)", "Hack of Pole Position", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "651d2b6743a3a18b426bce2c881af212", "CCE", "C-812", "Pac Man (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6522717cfd75d1dba252cbde76992090", "Home Vision - Gem International Corp. - VDI", "VCS83102", "War 2000 (1983) (Home Vision) (PAL)", "AKA Astrowar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6538e454b0498ad2befe1ef0f87815c0", "Joe Grand", "", "SCSIcide (v1.2) (2001) (Joe Grand)", "", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, - { "65490d61922f3e3883ee1d583ce10855", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692, CX2692P", "Moon Patrol (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "65562f686b267b21b81c4dddc129d724", "", "", "Euchre (28-07-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "655c84e5b951258c9d20f0bf2b9d496d", "", "", "2600_2003 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "656dc247db2871766dffd978c71da80c", "Sears Tele-Games, Jim Huether", "CX2614 - 49-75126", "Steeplechase (1980) (Sears)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "PADDLES", "", "AUTO 60", "", "", "", "", "" }, - { "65917ae29a8c9785bb1f2acb0d6aafd0", "", "", "Junkosoft One Year Demo (1999) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6596b3737ae4b976e4aadb68d836c5c7", "Digivision", "", "Defender (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "659a20019de4a23c748ec2292ea5f221", "Retroactive", "", "Qb (V2.05) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "65b106eba3e45f3dab72ea907f39f8b4", "Sparrow - HomeComputer Software, Dan Schafer, Glenn Stohel, Jon Tedesco", "GCG 1001T", "Music Machine, The (1983) (Sparrow)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, - { "65ba1a4c643d1ab44481bdddeb403827", "Quelle", "876.013 4", "Katastrophen-Einsatz (1983) (Quelle) (PAL)", "AKA M.A.S.H.", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "65bd29e8ab1b847309775b0de6b2e4fe", "Coleco, Ed English", "2667", "Roc 'n Rope (1984) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "65c6406f5af934590097c8c032ebb482", "", "", "Three Hugger (Pave Demo) (20-12-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6604f72a966ca6b2df6a94ee4a68eb82", "", "", "MegaMania (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "662eca7e3d89175ba0802e8e3425dedb", "", "", "Hangman Pac-Man Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66362890eb78d6ea65301592cce65f5b", "", "", "Euchre (13-07-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "663ef22eb399504d5204c543b8a86bcd", "CBS Electronics - Roklan, Joe Hellesen, Joe Wagner", "4L1720, 4L1721, 4L1722, 4L2276", "Wizard of Wor (1982) (CBS Electronics) (PAL)", "Uses the Joystick Controllers (swapped)", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "YES", "" }, - { "6651e2791d38edc02c5a5fd7b47a1627", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (04-05-1984) (Parker Bros) (Prototype) (8K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "665b8f8ead0eef220ed53886fbd61ec9", "Telesys, Don Ruffcorn, Jack Woodman", "1003", "Fast Food (1982) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66706459e62514d0c39c3797cbf73ff1", "Video Gems", "VG-05", "Treasure Below (1983) (Video Gems) (PAL)", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "", "" }, - { "6672de8f82c4f7b8f7f1ef8b6b4f614d", "Videospielkassette - Ariola", "PGP237", "Angeln I (Ariola) (PAL)", "AKA Fishing Derby", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "668dc528b7ea9345140f4fcfbecf7066", "Gakken", "001", "Pooyan (1983) (Gakken) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6697f177847c70505824422e76aad586", "", "", "Tennis (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "669840b0411bfbab5c05b786947d55d4", "Atari, Andrew Fuchs, Jeffrey Gusman, Dave Jolly, Suki Lee", "CX26117", "Obelix (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66b89ba44e7ae0b51f9ef000ebba1eb7", "Atari - CCW, Stephan R. Keith, Laura Scholl, Preston Stuart", "CX26106", "Grover's Music Maker (01-18-1983) (Atari) (Prototype)", "Uses Keypad Controller", "Prototype", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, - { "66b92ede655b73b402ecd1f4d8cd9c50", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66bc1bef269ea59033928bac2d1d81e6", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (Preview) (1982) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, - { "66c2380c71709efa7b166621e5bb4558", "Parker Brothers, Dave Engman, Dawn Stockbridge", "931509", "Tutankham (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66c4e0298d4120df333bc2f3e163657e", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (2 of 3) (1982) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "66fcf7643d554f5e15d4d06bab59fe70", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (09-13-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6706a00f9635508cfeda20639156e66e", "Atari, Jerome Domurat, Michael Sierchio", "CX2667", "RealSports Soccer (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "672012d40336b403edea4a98ce70c76d", "", "", "Spider Kong (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "675ae9c23fa1aae376cea86cad96f9a5", "", "", "Poker Squares (V0.25) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "67631ea5cfe44066a1e76ddcb6bcb512", "", "", "Termool (Unknown) (PAL)", "AKA Turmoil", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "67684a1d18c85ffa5d82dab48fd1cb51", "Tigervision, Warren Schwader - Teldec", "7-003", "Threshold (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "678c1d71a1616d9d022f03d8545b64bb", "", "", "Demo Image Series #11 - Donald And Mario (28-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "67931b0d37dc99af250dd06f1c095e8d", "CommaVid, Irwin Gaines", "CM-004", "Room of Doom (1982) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "679d30c7886b283cbe1db4e7dbe5f2a6", "Colin Hughes", "", "Puzzle (Colin Hughes) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "679e910b27406c6a2072f9569ae35fc8", "Data Age", "DA1002", "Warplock (1982) (Data Age)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01 40", "", "", "", "YES", "" }, - { "67bd3d4dc5ac6a42a99950b4245bdc81", "Retroactive", "", "Qb (2.11) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "67c05ae94bf8b83a666c3ae2c4bc14de", "Atari", "CX26163P", "NFL Football (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "67cdde4176e0447fc45a71e0a1cdd288", "Telegames - VSS, Ed Salvo", "5665 A016", "Glacier Patrol (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "67ce6cdf788d324935fd317d064ed842", "Retroactive", "", "Qb (V2.09) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "67cf913d1df0bf2d7ae668060d0b6694", "", "", "Hangman Monkey 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6803fa7c2c094b428b859a58dc1dd06a", "Retroactive", "", "Qb (0.11) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6805734a0b7bcc8925d9305b071bf147", "Bit Corporation", "PGP229", "Kung Fu (4 Game in One Dark Green) (1983) (BitCorp) (PAL)", "AKA Karate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "681206a6bde73e71c19743607e96c4bb", "", "", "Casino (Unknown) (PAL)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "49", "", "", "" }, - { "683bb0d0f0c5df58557fba9dffc32c40", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (1982) (Arcadia) [a]", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, - { "683dc64ef7316c13ba04ee4398e2b93a", "Ed Federmeyer", "", "Edtris (1995) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "68449e4aaba677abcd7cde4264e02168", "", "", "Horizonal Color Bars Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6847ce70819b74febcfd03e99610243b", "", "", "Ruby Runner 4A50", "", "", "", "", "", "", "", "", "", "", "", "", "", "27", "", "YES", "" }, - { "68489e60268a5e6e052bad9c62681635", "Bit Corporation", "PG201", "Sea Monster (1982) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "68597264c8e57ada93be3a5be4565096", "Data Age", "DA1005", "Bugs (1982) (Data Age)", "Uses the Paddle Controllers", "Uncommon", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 50", "", "", "", "", "" }, - { "685e9668dc270b6deeb9cfbfd4d633c3", "CommaVid, Irwin Gaines - Ariola", "CM-004 - 712 004-720", "Room of Doom (1982) (CommaVid) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "68760b82fc5dcf3fedf84376a4944bf9", "CCE", "C-860", "Laser Gate (1983) (CCE)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "687c23224e26f81c56e431c24faea36d", "", "", "Qb (Simple Background Animation) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "68878250e106eb6c7754bc2519d780a0", "CCE", "C-809", "Squirrel (1983) (CCE)", "AKA Snail Against Squirrel", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "68c80e7e1d30df98a0cf67ecbf39cc67", "Hozer Video Games", "", "Gunfight 2600 - One Step Forward & Two Steps Back (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "68cd2adc6b1fc9a1f263ab4561112f30", "Thomas Jentzsch", "", "Boulderdash Demo (09-12-2002) (TJ)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "68feb6d6ff63e80df1302d8547979aec", "", "", "Starfield Demo 2 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "690a6049db78b9400c13521646708e9c", "King Tripod Enterprise Co.", "SS - 007", "Space Raid (King Tripod) (PAL)", "AKA Challenge of.... Nexar, The", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6913c90002636c1487538d4004f7cac2", "Atari - CCW", "CX26131", "Monster Cise (1984) (Atari) (Prototype)", "Uses the Keypad Controllers (left only)", "Prototype", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, - { "691d67910b08b63de8631901d1887c1f", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "692202772d8b38ccf85a90c8003a1324", "", "", "Zi - The Flie Buster (2002) (Fernando Mora) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "693137592a7f5ccc9baae2d1041b7a85", "", "", "Qb (V2.02) (Stella) (2001) (Retroactive) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6979f30204149be3e227558cffe21c1d", "Atari", "CX26163P", "Miniaturer Golf (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Miniature Golf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6982854657a2cc87d712f718e402bf85", "Zellers", "", "Earth Attack (Zellers)", "AKA Defender", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "698f569eab5a9906eec3bc7c6b3e0980", "SpkLeader", "", "Demons! (2003) (SpkLeader) (Hack)", "Hack of Phoenix", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "69974dd5d6420b90898cde50aec5ef39", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "69df0411d4d176e558017f961f5c5849", "CCE", "C-831", "Cosmic Ark (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "69e79b1352b9ee1754bbe63b4a7062c3", "Barry Laws Jr.", "", "Pink Floyd - The Wall (2003) (Barry Laws Jr.) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "69ebf910ab9b63e5b8345f016095003b", "", "", "Maze Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "69fac82cd2312dd9ce5d90e22e2f070a", "Spectravision - Spectravideo - Quelle", "SA-202 - 412.851 8", "Planet Patrol (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a03c28d505bab710bf20b954e14d521", "", "", "Pressure Gauge 2 Beta (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a07836c382195dd5305ce61d992aaa6", "Apollo, Larry Martin", "AP-2008", "Guardian (1982) (Apollo) (Prototype)", "Uses the Paddle Controller (left only)", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, - { "6a091b8ffeacd0939850da2094b51564", "", "", "Vertically Scrolling Playfield (02-02-2003) (Aaron Bergstrom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a2c68f7a77736ba02c0f21a6ba0985b", "Atari, Larry Wagner, Bob Whitehead", "", "Computer Chess (07-07-1978) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a3b0c33cf74b1e213a629e3c142b73c", "Cody Pittman", "", "Cory The Interviewer (Cody Pittman) (Hack)", "Hack of Ghostbusters", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a76d5f0ed721639474aa9bbde69ebf0", "", "", "Play Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6a82b8ecc663f371b19076d99f46c598", "Activision, Larry Miller - Ariola", "EAX-026, EAX-026-04B, EAX-026-04I - 711 026-725", "Enduro (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6a882fb1413912d2ce5cf5fa62cf3875", "Video Game Cartridge - Ariola", "TP-605", "Dragon Defender (Ariola) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6a8c6940d3be6fd01274363c4d4b298e", "", "", "Spy Hunter (Genesis)", "Genesis controller (C is oil/smoke)", "Hack of Spy Hunter", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "6a9b30ca46b0dba9e719f4cbd340e01c", "", "", "Frostbite (Unknown) (PAL) (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, - { "6a9e0c72fab92df70084eccd9061fdbd", "CCE", "C-835", "Beany Bopper (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6aa66e9c3eea76a0c40ef05513497c40", "", "", "Hangman Ghost Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6ac3fd31a51730358708c7fdc62487f8", "Matthias Jaap", "", "PC Invaders (Matthias Jaap) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6ae4dc6d7351dacd1012749ca82f9a56", "Atari - GCC, Jaques Hugon, Seth Lipkin", "CX26125, CX26127", "Track and Field (1984) (Atari)", "Uses the Track & Field Controller", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b01a519b413f8cfa2f399f4d2841b42", "", "", "Aphex Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b1fc959e28bd71aed7b89014574bdc2", "Bit Corporation", "PG203", "Phantom Tank (1982) (BitCorp) (PAL)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "6b4eb5b3df80995b8d9117cb7e9aeb3c", "Gameworld, J. Ray Dettling", "133-006", "Journey Escape (1983) (Gameworld) (PAL)", "AKA Rock 'n' Roll Escape", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6b683be69f92958abe0e2a9945157ad5", "U.S. Games Corporation - Western Technologies, Jeff Corsiglia, Paul Allen Newell, Steven B. Sidley, Tom Sloper", "VC2007", "Entombed (1983) (U.S. Games)", "Released as Name That Game for a contest (winning name was Entombed)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6b6ca32228ae352b4267e4bd2cddf10c", "", "", "Pac-Man 4 (Pac-Man Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "6b71f20c857574b732e7a8e840bd3cb2", "", "", "Frostbite (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b72b691ea86f61438ed0d84c4d711de", "", "", "Fishing Derby (Unknown) (PAL) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b75f8fa4fd011a6698c58315f83d2ac", "Thomas Jentzsch", "", "Sprintmaster DC (TJ)", "Uses the Driving Controllers, Hack of Sprintmaster (Atari)", "New Release (Hack)", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "", "", "", "" }, - { "6b7a56b6ac2ca4bf9254474bf6ed7d80", "", "", "Horizonal Color Bars Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b7e1c11448c4d3f28160d2de884ebc8", "Zirok", "", "Fast Food (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6b8fb021bb2e1f1e9bd7ee57f2a8e709", "Paul Slocum", "", "3-D Corridor (29-03-2003) (Paul Slocum) (PD) [a]", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6bb09bc915a7411fe160d0b2e4d66047", "Atari", "CX26163P", "UFO (32 in 1) (1988) (Atari) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6bb22efa892b89b69b9bf5ea547e62b8", "Dynacom", "", "Megamania (1982) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6bde3f6ac31aceef447ce57d4d2c2ec0", "Piero Cavina", "", "Mondo Pong V1 (Piero Cavina) (PD)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "01", "", "", "", "", "" }, - { "6c128bc950fcbdbcaf0d99935da70156", "Digitel", "", "Volleyball (1983) (Digitel)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c1553ca90b413bf762dfc65f2b881c7", "Quelle", "343.073 3", "Winterjagd (1983) (Quelle) (PAL)", "AKA Ski Hunt", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c1f3f2e359dbf55df462ccbcdd2f6bf", "Activision, Garry Kitchen - Ariola", "EAX-025, EAX-025-04I - 711 025-725", "Keystone Kapers (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c25f58fd184632ca76020f589bb3767", "Dynacom", "", "Beat 'Em & Eat 'Em (1983) (Dynacom)", "Uses the Paddle Controller (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, - { "6c449db9bbbd90972ad1932d6af87330", "", "", "20 Sprites at Once Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c658b52d03e01828b9d2d4718a998ac", "", "", "Hangman Invader Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c76fe09aa8b39ee52035e0da6d0808b", "Atari, Brad Stewart", "CX2622, CX2622P", "Breakout (1978) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 60", "", "", "", "", "" }, - { "6c85098518d3f94f7622c42fd1d819ac", "Suntek", "SS-028", "Firebug (Suntek) (PAL)", "AKA Spinning Fireball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c91ac51421cb9fc72c9833c4f440d65", "ITT Family Games", "554-33 375", "Cosmic Town (1983) (ITT Family Games) (PAL)", "AKA Base Attack (Perry Rhodan-Serie)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6c9a32ad83bcfde3774536e52be1cce7", "", "", "Space Treat (NTSC) (13-08-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6cbe945e16d9f827d0d295546ac11b22", "", "", "Gunfight 2600 - AI (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6ccd8ca17a0e4429b446cdcb66327bf1", "", "", "RPG Engine (12-05-2003) (Paul Slocum) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6cd1dc960e3e8d5c5e0fbe67ab49087a", "", "", "Vertical Playfield Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6cd506509e8fd5627f55603780e862a8", "Greg Troutman", "", "Dark Mage (SuperCharger) (Greg Troutman) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6ce2110ac5dd89ab398d9452891752ab", "Funvision - Fund. International Co.", "", "Persian Gulf War (Funvision)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6cea35ded079863a846159c3a1101cc7", "", "", "Atlantis (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6ceb7d6a54e9a5e62d26874d1cc88dbc", "Video Soft", "", "Atom Smasher (1984) (Video Soft) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6cf054cd23a02e09298d2c6f787eb21d", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (1984) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6d218dafbf5a691045cdc1f67ceb6a8f", "Robin Harbron", "", "6 Digit Score Display (1998) (Robin Harbron) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6d475019ea30d0b29f695e9dcfd8f730", "Eric Mooney", "", "Invaders by Erik Mooney (Alpha 2) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6d74ebaba914a5cfc868de9dd1a5c434", "", "", "Fortress (Smooth Version) (20-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6d842c96d5a01967be9680080dd5be54", "Activision, David Crane", "AB-035-04", "Pitfall II (1984) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6d8a04ee15951480cb7c466e5951eee0", "Zirok", "", "Kanguru (1983) (Zirok)", "AKA Kangaroo", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6d9afd70e9369c2a6bff96c4964413b7", "", "", "Time Warp (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6dda84fb8e442ecf34241ac0d1d91d69", "Atari - GCC, Douglas B. Macrae", "CX2677", "Dig Dug (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6de924c2297c8733524952448d54a33c", "CCE", "C-1006", "Moon Patrol (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6dfad2dd2c7c16ac0fa257b6ce0be2f0", "Parker Brothers, Larry Gelberg", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6e179eee3d4631a7434d40cf7aeea6e8", "Wizard Video Games - MicroGraphic Image, Robert Barber, Tim Martin", "007", "Halloween (1983) (Wizard Video Games) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6e19428387686a77d8c8d2f731cb09e0", "", "", "Purple Cross Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6e372f076fb9586aff416144f5cfe1cb", "Atari, Tod Frye - Sears", "CX2646 - 49-75185", "Pac-Man (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6e4521989a60a0ddf4ff1fc6e6e5fc3d", "", "", "Star Fire (01-05-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6e59dd52f88c00d5060eac56c1a0b0d3", "Atari, Bob Smith", "CX2648", "Video Pinball (1981) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6e5d5ba193d2540aec2e847aafb2a5fb", "Retroactive", "", "Qb (2.14) (Retroactive) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6e7ed74082f39ad4166c823765a59909", "", "", "Poker Squares (V0.14) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6ed5012793f5ddf4353a48c11ea9b8d3", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Down on the Line (3 of 3) (1983) (Arcadia)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "PADDLES", "", "01 70", "", "", "", "", "" }, - { "6ed6bda5c42b2eb7a21c54e5b3ace3e3", "Canal 3 - Intellivision", "", "Ice Hockey (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6efe876168e2d45d4719b6a61355e5fe", "Bit Corporation", "PG207", "Mission 3,000 A.D. (1983) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6f084daf265599f65422ef4173b69bc7", "", "", "Music Kit (V2.0) - Song Player (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "6f2aaffaaf53d23a28bf6677b86ac0e3", "U.S. Games Corporation - Vidtec - JWDA, Garry Kitchen", "VC1001", "Space Jockey (1982) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6f3e3306da2aa6e74a5e046ff43bf028", "", "", "Defender Arcade (Genesis)", "Genesis controller (C is smartbomb)", "Hack of Defender 2", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "6f74ed915ffe73b524ef0f63819e2a1d", "Eckhard Stolberg", "", "An Exercise In Minimalism (V2) (1999) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6f75d72e4cf996100ccdd163d57bdac2", "", "", "Star Fire (200203) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fa0ac6943e33637d8e77df14962fbfc", "Imagic, Rob Fulop", "", "Cubicolor (1982) (Imagic) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fac680fc9a72e0e54255567c72afe34", "", "", "Superman (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fbd05b0ad65b2a261fa154b34328a7f", "", "", "Boardgame Demo (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fc0176ccf53d7bce249aeb56d59d414", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (Rainbow Vision) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fc27a9233fc69d28d3f190b4ff80f03", "", "", "UFO #6 (Charles Morgan) (Hack)", "Hack of Pepsi Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fc394dbf21cf541a60e3b3631b817f1", "Imagic, Bob Smith", "720020-2A, IA3611P", "Dragonfire (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fd7c7057eeab273b29c7aafc7429a96", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6fe67f525c39200a798985e419431805", "Atari - GCC, Kevin Osborn", "CX2689, CX2689P", "Kangaroo (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "6ff4156d10b357f61f09820d03c0f852", "Atari, Larry Kaplan - Sears", "CX2612 - 99804, 49-75103", "Street Racer (1977) (Atari) (4K)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 60", "", "", "", "", "" }, - { "6ffc95108e5add6f9b8abcaf330be835", "Charles Morgan", "", "TP Bug (Charles Morgan) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "700a786471c8a91ec09e2f8e47f14a04", "Activision", "", "Hard-Head (1983) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "703d32062436e4c20c48313dff30e257", "", "", "Moving Maze Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "703f0f7af350b0fa29dfe5fbf45d0d75", "Bit Corporation", "P460", "4 Game in One Dark Green (1983) (BitCorp) (PAL)", "Rodeo Champ, Bobby is Going Home, Open Sesame, Festival", "", "", "4IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "705fe719179e65b0af328644f3a04900", "Atari, David Crane - Sears", "CX2653 - 6-99823, 49-75111", "Slot Machine (1979) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "706e3cc4931f984447213b92d1417aff", "", "", "Joustpong (06-07-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "707ecd80030e85751ef311ced66220bc", "", "", "Double-Height 6-Digit Score Display (Background Color Change) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7096a198531d3f16a99d518ac0d7519a", "Telesys, Jim Rupp", "1004", "Ram It (1983) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "709910c2e83361bc4bf8cd0c20c34fbf", "Rainbow Vision - Suntek", "SS-006", "Netmaker (Rainbow Vision) (PAL)", "AKA Amidar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "70a8480cfaf08776e5420365732159d2", "Rob Kudla", "", "Horizontally Scrolling Playfield Thing (Rob Kudla) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "70ce036e59be92821c4c7fd735ec6f68", "Activision, Steve Cartwright - Ariola", "EAX-031, EAX-031-04B - 711 031-717", "Frostbite (1983) (Activision) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "70d14c66c319683b4c19abbe0e3db57c", "", "", "Oystron (V2.82) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "710497df2caab69cdcc45e919c69e13f", "Arcadia Corporation, Dennis Caswell", "5 AR-4200", "Labyrinth (Escape from the Mindmaster Beta) (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "713fde2af865b6ec464dfd72e2ebb83e", "", "", "Challenge (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "71464c54da46adae9447926fdbfc1abe", "M Network - APh Technological Consulting, Bruce Pedersen - INTV", "MT5663", "Lock 'n' Chase (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "714e13c08508ee9a7785ceac908ae831", "Home Vision - Gem International Corp. - VDI", "VCS83123", "Parachute (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "715dbf2e39ba8a52c5fe5cdd927b37e0", "Amiga - Video Soft", "3135", "S.A.C. Alert (1983) (Amiga) (Prototype)", "Uses Joyboard", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "715dd9e0240638d441a3add49316c018", "Atari", "", "128-in-1 Junior Console (Chip 2 of 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7187118674ff3c0bb932e049d9dbb379", "Zirok", "", "Keystone Keypers (1983) (Zirok)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "718ae62c70af4e5fd8e932fee216948a", "Data Age, J. Ray Dettling", "112-006", "Journey Escape (1983) (Data Age)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "718ee85ea7ec27d5bea60d11f6d40030", "Thomas Jentzsch", "", "Ghostbusters II (1992) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7197b6cbde6ecd10376155e6b848e80d", "Piero Cavina", "", "Multi-Sprite Game V2.1 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "71b193f46c88fb234329855452dfac5b", "Digitel", "", "Atlantis (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "71d005b60cf6e608d04efb99a37362c3", "Atari, Larry Kaplan", "CX2643", "Codebreaker (1978) (Atari) (PAL) (4K) [a]", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "57", "", "", "" }, - { "71f09f128e76eb14e244be8f44848759", "Funvision - Fund. International Co.", "", "Time Race (Funvision) (PAL)", "AKA Time Warp", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "71f8bacfbdca019113f3f0801849057e", "Atari, Dan Hitchens", "CX26126", "Elevator Action (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72097e9dc366900ba2da73a47e3e80f5", "", "", "Euchre (15-06-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "721a5567f76856f6b50a6707aa8f8316", "Activision, David Crane, Dan Kitchen", "EAG-108-04, EAZ-108-04B", "Ghostbusters (1985) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72305c997f2cec414fe6f8c946172f83", "Arcadia Corporation, Dennis Caswell", "AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "724613effaf7743cbcd695fab469c2a8", "", "", "Super-Ferrari (Unknown)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "728152f5ae6fdd0d3a9b88709bee6c7a", "Spectravideo, Mark Turmell", "SA-217", "Gas Hog (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72876fd7c7435f41d571f1101fc456ea", "Quelle", "688.383 9", "Die Ente und der Wolf (1983) (Quelle) (PAL)", "AKA Pooyan", "", "", "", "", "", "", "", "", "", "", "", "", "26", "256", "", "" }, - { "72a46e0c21f825518b7261c267ab886e", "Xonox - K-Tel Software - Computer Magic", "99005, 6220, 6250", "Robin Hood (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "31", "220", "", "" }, - { "72a5b5052272ac785fa076709d16cef4", "", "", "KC Munckin (29-01-2003) (J. Parlee)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72bda70c75dfa2365b3f8894bace9e6a", "Thomas Jentzsch", "", "Atlantis (TJ) (Hack)", "Hack of Atlantis", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72d0acb5de0db662de0360a6fc59334d", "", "", "Cosmic Ark (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72db1194b1cc7d45b242f25eb1c148d3", "", "", "Pac-Man (1981) (Atari) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "72fd08deed1d6195942e0c6f392e9848", "HES", "0701-406", "2 Pak Special - Wall Defender, Planet Patrol (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "72ffbef6504b75e69ee1045af9075f66", "Atari, Richard Maurer - Sears", "CX2632 - 49-75153", "Space Invaders (1980) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73158ea51d77bf521e1369311d26c27b", "Zellers", "", "Challenge (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "25", "", "", "" }, - { "73521c6b9fed6a243d9b7b161a0fb793", "Atari, Tom Reuterdahl", "CX26163P", "Miniaturer Golf (32 in 1) (1988) (Atari) (PAL)", "AKA Miniature Golf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "736388d73198552d77d423962000006f", "Dactari", "", "Tennis (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73a710e621d44e97039d640071908aef", "", "", "Barber Pole Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73aa02458b413091ac940c0489301710", "Quelle - Otto Versand", "463.574 4 - 781393, 986153", "Kampf dem Steinfresser (1983) (Quelle) (PAL)", "Boom Bang (AKA Crackpots)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73b4e8f8b04515d91937510e680214bc", "", "", "Rubik's Cube Demo 3 (24-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73c545db2afd5783d37c46004e4024c2", "CBS Electronics - JWDA, Todd Marshall, Robin McDaniel, Henry Will IV", "4L1767, 4L1768, 4L1769, 4L1770", "Smurf - Schtroumpfs (1983) (CBS Electronics) (PAL)", "Pitufo", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73c839aff6a055643044d2ce16b3aaf7", "Activision, Alan Miller - Ariola", "EAX-016, PAX-016 - 711 016-725", "StarMaster (1982) (Activision) (PAL)", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73cb1f1666f3fd30b52b4f3d760c928f", "", "", "Mines of Minos (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "225", "YES", "" }, - { "73e66e82ac22b305eb4d9578e866236e", "Jone Yuan Telephonic Enterprise Co", "", "Unknown Datatech Game (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "73efa9f3cbe197f26e0fb87132829232", "CCE", "C-858", "Tennis (1983) (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "74023e0f2e739fc5a9ba7caaeeee8b6b", "Jone Yuan Telephonic Enterprise Co", "", "Fishing Derby (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "740a7fa80f52cc7287ba37677afb6b21", "", "", "Double Dragon (PAL) (Genesis)", "Genesis controller (C is jumpkick)", "Hack of Double Dragon", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "740b47df422372fbef700b42cea4e0bf", "", "", "Dizzy Wiz (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "740f39e71104e90416c29a73560b9c6b", "Atari", "TE016643", "Diagnostic Test Cartridge 2.6P (1982) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "742de93b8d849220f266b627fbabba82", "", "", "SCSIcide (25-02-2001) (Chris Wilkson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7450ae4e10ba8380c55b259d7c2b13e8", "", "", "Register Twiddler Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7454786af7126ccc7a0c31fcf5af40f1", "", "", "Tanks But No Tanks (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7465b06b6e25a4a6c6d77d02242af6d6", "Atari", "CX26193", "8 in 1 (01-16-92) (Atari) (Prototype)", "Game 2 is Centipede, but doesn't work", "Prototype", "", "8IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7481f0771bff13885b2ff2570cf90d7b", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "749fec9918160921576f850b2375b516", "Spectravision - Spectravideo", "SA-205", "China Syndrome (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "74ca9bdc91ee387a5bd929b73aec5c2c", "", "", "Star Fire - New Shields (03-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "74d072e8a34560c36cacbc57b2462360", "Sancho - Tang's Electronic Co.", "TEC002", "Seahawk (1982) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "74ebaca101cc428cf219f15dda84b6f8", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "74f623833429d35341b7a84bc09793c0", "Zellers", "", "Radar (Zellers)", "AKA Exocet", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75028162bfc4cc8e74b04e320f9e6a3f", "Atari, Greg Easter, Mimi Nyden", "CX26107", "Snow White (02-09-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7511c34518a9a124ea773f5b0b5c9a48", "", "", "Donkey Kong (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75169c08b56e4e6c36681e599c4d8cc5", "M Network - APh Technological Consulting, Hal Finney - INTV", "MT5666", "Astroblast (1982) (M Network)", "Can also use left joystick", "Uncommon", "", "", "", "", "", "", "PADDLES", "", "YES", "AUTO 55", "", "", "", "", "" }, - { "753375d183c713cfa0aa7298d1f3067b", "Arcadia Corporation, Steve Hales, Stephen Harland Landrum", "AR-4102", "Suicide Mission (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7550b821ee56fb5833dca2be88622d5a", "", "", "Multiple Moving Objects Demo (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75511bb694662301c9e71df645f4b5a7", "Activision, Bob Whitehead - Ariola", "EAG-011, PAG-011 - 711 011-715", "Stampede (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "755fed16b48e81de05130708a905d00d", "SnailSoft", "", "Comitoid beta 3 (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "756ca07a65a4fbbedeb5f0ddfc04d0be", "Atari, Jim Huether", "CX2629, CX2629P", "Sky Diver (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7574480ae2ab0d282c887e9015fdb54c", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7576dd46c2f8d8ab159d97e3a3f2052f", "Goliath - Hot Shot", "83-112", "Time Machine (1983) (Goliath) (PAL)", "AKA Asteroid Fire", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "757f529026696e13838364dea382a4ed", "Activision, David Crane - Ariola", "EAX-014, PAX-014, EAX-014-04B, EAX-014-04I - 711 014-720", "Grand Prix (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75a303fd46ad12457ed8e853016815a0", "ZiMAG - Emag - Vidco", "715-111 - GN-060", "Immies & Aggies (1983) (ZiMAG) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75b22fdf632d76e246433db1ebccd3c4", "", "", "Skeleton+ (05-05-2003) (Eric Ball) (PAL)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75b557be7f08db84ec5b242207b9f241", "", "", "Space Treat (30-12-2002) (Fabrizio Zavagli) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75e276ba12dc4504659481c31345703a", "Arcadia Corporation, Kevin Norman", "AR-4103", "Killer Satellites (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75e8d8b9e9c5c67c2226dbfd77dcfa7d", "", "", "2600 Digital Clock (V b1) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75ea128ba96ac6db8edf54b071027c4e", "Atari, David Crane", "CX26163P", "Slot Machine (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "75ea60884c05ba496473c23a58edf12f", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (1982) (Atari) (PAL) [a]", "ROM must be started in bank 0", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "75ee371ccfc4f43e7d9b8f24e1266b55", "Atari, Greg Easter, Mimi Nyden", "CX26107", "Snow White (11-09-1982) (Atari) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7608abdfd9b26f4a0ecec18b232bea54", "Atari, Bob Whitehead", "CX26163P", "NFL Football (32 in 1) (1988) (Atari) (PAL)", "AKA Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7623a639a6fffdb246775fe2eabc8d01", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7628d3cadeee0fd2e41e68b3b8fbe229", "Atari", "CX26163P", "Fishing Derby (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7648e72a5b5899076688df18a1ddcf72", "CBS Electronics, Richard K. Balaska Jr., Andy Frank, Stuart Ross", "4L 2520 5000", "Tunnel Runner (1983) (CBS Electronics) (Prototype)", "Black Box", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76809eb1ee0db8a318308a5cdda0f4e2", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1983) (Atari) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "769ddc995dbb9edb8167efcea9f34a7c", "", "", "H.E.R.O. (Genesis)", "Genesis controller (B is laser, C is dynamite)", "Hack of H.E.R.0.", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "76a9bf05a6de8418a3ebc7fc254b71b4", "VideoSoft, Jerry Lawson, Dan McElroy", "VS1008", "Color Bar Generator (1984) (VideoSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76c685d1a60c0107aa54a772113a2972", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (3 of 3) (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76c88341017eae660efc6e49c4b6ab40", "", "", "Indiana Pitfall (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76ee917d817ef9a654bc4783e0273ac4", "Otto Versand", "311377", "Fox & Goat (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Nuts", "", "", "", "", "", "", "", "", "", "", "", "", "45", "256", "", "" }, - { "76f53abbbf39a0063f24036d6ee0968a", "M Network, David Akers, Joe 'Ferreira' King, Patricia Lewis Du Long, Jeff Ratcliff - INTV", "MT7045", "Bump 'n' Jump (1983) (M Network)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "76f66ce3b83d7a104a899b4b3354a2f2", "UA Limited", "", "Cat Trax (1983) (UA Limited) (1)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "77057d9d14b99e465ea9e29783af0ae3", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision)", "AKA Drag Strip", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "7732e4e4cc2644f163d6650ddcc9d9df", "HES", "771-333", "2 Pak Special - Challenge, Surfing (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7778ac65d775a079f537e97cbdad541c", "", "", "Spider Fighter (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "777aece98d7373998ffb8bc0b5eff1a2", "", "", "2600 Collison Demo 2 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "77887e4192a6b0a781530e6cf9be7199", "Atari", "CX2604", "Space War (1978) (Atari) [b1]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "77be57d872e3f5b7ecf8d19d97f73281", "", "", "Basketball (208 in 1) (Unknown) (PAL)", "Console ports are swapped", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "77cd9a9dd810ce8042bdb9d40e256dfe", "Kyle Pittman", "", "Evil Dead (2003) (Kyle Pittman) (Hack)", "Hack of Haunted House", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "77d0a577636e1c9212aeccde9d0baa4b", "Atari, Joe Decuir", "CX2621, CX2621P", "Video Olympics (1977) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "AUTO 60", "", "", "", "", "" }, - { "78297db7f416af3052dd793b53ff014e", "", "", "Poker Squares (V0.17) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7836794b79e8060c2b8326a2db74eef0", "", "", "RIOT RAM Test (26-11-2002) (Dennis Debro)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "784176346e9422733d55c427230e5bad", "Activision, Alex DeMeo", "", "Title Match Pro Wrestling (1989) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7860716fa5dbc0fffab93fb9a4cb4132", "", "", "Hangman Monkey Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7867ee819b53d69cfcfe740f7ddca574", "Arcadia Corporation, Dennis Caswell", "1 AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "787ebc2609a31eb5c57c4a18837d1aee", "Prescott", "", "Vault Assault (19xx) (Prescott)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "78821ef76ebc3934850d1bc1b9e4f4b0", "HES - Activision", "542", "Hot Action Pak - Ghostbusters, Tennis, Plaque Attack (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "78963290052fd17c6c7998305ab3a6a0", "", "", "Push (V0.08) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "78b84cfb1c57b0488d674d2374e656e6", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (1 of 3) (1982) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "78c2de58e42cd1faac2ea7df783eaeb3", "", "", "Fu Kung! (V0.07) (25-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79004f84bdeee78d142e445057883169", "CCE", "C-830", "Planet Patrol (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "791bc8aceb6b0f4d9990d6062b30adfa", "Activision, David Crane - Ariola", "EAX-018, EAX-018-04B, EAX-018-04I - 711 018-725", "Pitfall! (1982) (Activision) (PAL)", "Abenteuer im Urwald (Jungle Runner)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7926083ad423ed685de3b3a04a914315", "Barry Laws Jr.", "", "Face Invaders 2 (Barry Laws Jr.) (Hack)", "Hack of Astroblast", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "792b1d93eb1d8045260c840b0688ec8f", "Kroko", "", "3E Bankswitch Test (TIA @ $00)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7972e5101fa548b952d852db24ad6060", "Atari - Sears", "CX2627 - 6-99841", "Human Cannonball (1979) (Atari)", "AKA Cannon Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "798b8921276eec9e332dfcb47a2dbb17", "Atari - CCW, Gary Stark", "CX26102", "Cookie Monster Munch (1983) (Atari) (PAL) [a]", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "798cc114f1623c14085868cd3494fe8e", "", "", "Pins Revenge (Atari Freak 1)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7991e1797e5e9f311fd957e62d889dff", "Joe Grand", "", "SCSIcide (v1.1) (2001) (Joe Grand)", "", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, - { "7996b8d07462a19259baa4c811c2b4b4", "", "", "Math Gran Prix (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79ab4123a83dc11d468fb2108ea09e2e", "Activision - Cheshire Engineering, David Rolfe, Larry Zwick", "AZ-037-04", "Beamrider (1984) (Activision)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79b649fb812c50b4347d12e7ddbb8400", "", "", "Red Pong Number 2 Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "79c27f90591e3fdc7d2ed020ecbedeb3", "CCE", "C-815", "Seaquest (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79d4af56036ec28f298cad964a2e2494", "", "", "Hangman Pac-Man Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79d6f61da3c64688ac8e075667f8a39f", "", "", "Tie-Fighters (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79e5338dbfa6b64008bb0d72a3179d3c", "M Network, David Akers, Patricia Lewis Du Long - INTV", "MT4313", "Star Strike (1983) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "79fcdee6d71f23f6cf3d01258236c3b9", "Atari - GCC, Mike Feinstein, John Mracek", "CX2673, CX2673P", "Phoenix (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a09299f473105ae1ef3ad6f9f2cd807", "Atari, Steve Wright", "CX2616P", "Pele's Soccer (1981) (Atari) (PAL)", "AKA Pele's Championship Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a2af383014f5d810ad26d322823549d", "", "", "FlickerSort Demo (20-04-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a5463545dfb2dcfdafa6074b2f2c15e", "20th Century Fox Video Games - Sirius Software, Mark Turmell", "11007", "Turmoil (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a63d7ea3f2851bcf04f0bb4ba1a3929", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (3 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a64a8b727c8215d945e37d565ca95a5", "Atari, Warren Robinett", "CX2606", "Slot Racers (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a64b5a6e90619c6aacf244cdd7502f8", "Baroque Gaming (Brian Eno)", "", "Warring Worms (Beta 1) (2002) (Baroque Gaming)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a7f6ab9215a3a6b5940b8737f116359", "Arcadia Corporation, Kevin Norman", "AR-4103", "Killer Satellites (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7a93d0c029eaa72236523eedc3f19645", "", "", "20 Sprites at Once Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ab0917107b6ec768a5ebaadf28c497a", "", "", "Santa's Helper (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "7ab210f448de518fa61a5924120ba872", "", "", "Fortress (20-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ab2f190d4e59e8742e76a6e870b567e", "Apollo, Larry Martin", "AP-2008", "Guardian (1982) (Apollo)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01 65", "", "", "", "", "" }, - { "7ac4f4fb425db38288fa07fb8ff4b21d", "Goliath", "83-213", "Space Eagle (1983) (Goliath) (PAL)", "AKA Exocet", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ad257833190bc60277c1ca475057051", "Atari, Alan J. Murphy, Robert Zdybel", "CX2668", "RealSports Football (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7ad782952e5147b88b65a25cadcdf9e0", "Imagic, Dave Johnson", "720119-1A, 03211", "Kwibble (1983) (Imagic) (Prototype)", "AKA Quick Step! Beta", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7adbcf78399b19596671edbffc3d34aa", "Atari, Mimi Nyden, Joseph Tung", "CX26152", "Super Baseball (1988) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7af40c1485ce9f29b1a7b069a2eb04a7", "Amiga - Video Soft", "3120", "Mogul Maniac (1983) (Amiga)", "Uses the Amiga Joyboard", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b24bfe1b61864e758ada1fe9adaa098", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b33407b2b198af74906b936ce1eecbb", "King Atari", "", "Ghostbuster 2 (King Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7b3cf0256e1fa0fdc538caf3d5d86337", "CommaVid, Joseph Biel", "CM-009", "Stronghold (1983) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b43c32e3d4ff5932f39afcb4c551627", "Syncro, Daniel Wolf", "", "Kamikaze Saucers (1983) (Syncro) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "222", "", "" }, - { "7b5207e68ee85b16998bea861987c690", "Atari, Carol Shaw", "CX26163P", "3-D Tic-Tac-Toe (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b6f3348dbf71ada88db0fdaf7feefe0", "", "", "3-D Corridor (Pink Spiral) (31-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b79beb378d1b4471def90ceccf413de", "", "", "Pitfall Cupcake (Hack)", "Hack of Pitfall", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b7b4ac05232490c28f9b680c72998f9", "Zellers", "", "Freeway (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b8a481e0c5aa78150b5555dff01f64e", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (05-16-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7b938c7ddf18e8362949b62c7eaa660a", "Atari, Bob Whitehead - Sears", "CX2603 - 99803, 49-75601", "Star Ship (1977) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ba07d4ea18bf3b3245c374d8720ad30", "Starpath Corporation, Stephen H. Landrum", "AR-4101", "Communist Mutants from Space (Preview) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7bb286cb659d146af3966d699b51f509", "Atari - Axlon, Tod Frye", "CX26178", "Save Mary! (04-03-1989) (Atari) (Prototype)", "AKA Saving Mary", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7bc4fd254ec8c0a25a13f02fd3f762ff", "Retroactive", "", "Qb (V1.00) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7c00e7a205d3fda98eb20da7c9c50a55", "Apollo - Games by Apollo, Larry Minor, Ernie Runyon, Ed Salvo", "AP-2004", "Lost Luggage (1982) (Apollo)", "AKA Airport Mayhem", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7c4a499d343fca0cef2d59dd16af621a", "", "", "Poker Card Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7c757bb151269b2a626c907a22f5dae7", "TNT Games - Sculptured Software, Adam Clayton", "26192", "BMX Air Master (1989) (TNT Games) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7c7a4a2d505c2d0c75337c44711d8d54", "Atari, Warren Robinett", "", "Elf Adventure (04-22-83) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7c9b3b8b25acf2fe3b8da834f69629c6", "", "", "I Robot (1984) (Atari) (Prototype) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ca7a471d70305c673fedd08174a81e8", "Tim Snider", "", "Venture II (2001) (Tim Snider)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7cc77f6745e1f2b20df4a4327d350545", "Atari, Richard Maurer", "CX2632, CX2632P", "Space Invaders (1980) (Atari) (PAL) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ccf350354ee15cd9b85564a2014b08c", "", "", "Big Dig (13-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "7cd379da92c93679f3b6d2548617746a", "", "", "Demo Image Series #5 - Clown (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7cd900e9eccbb240fe9c37fa28f917b5", "Jone Yuan Telephonic Enterprise Co", "", "Bi! Bi! (Jone Yuan) (PAL)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ced6709f091e79a2ab9575d3516a4ac", "Activision, Steve Cartwright - Ariola", "EAX-027 - 711 027-722", "Plaque Attack (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7cedffa0db65d610568b90aeca705ac6", "Atari, Rob Fulop - Sears", "CX2638 - 49-75166", "Missile Command (1981) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d0b49ea4fe3a5f1e119a6d14843db17", "Gameworld, J. Ray Dettling", "133-008", "Frankenstein's Monster (1983) (Gameworld) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d1034bcb38c9b746ea2c0ae37d9dff2", "Atari, Brad Stewart", "", "Morse Code Tutor (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d3cdde63b16fa637c4484e716839c94", "CCE", "", "Road Runner (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d483b702c44ee65cd2df22cbcc8b7ed", "Atari, Warren Robinett", "", "Elf Adventure (05-25-83) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d5c3b7b908752b98e30690e2a3322c2", "Dactari - Milmar", "", "Freeway (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d726fa494f706784bafeb1b50d87f23", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (07-27-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d903411807704e725cf3fafbeb97255", "Imagic, Rob Fulop", "720104-1A, 720104-1B, IA3204", "Cosmic Ark (Reaction) (1982) (Imagic) [selectable starfield]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d93071b3e3616093a6b5a98b0315751", "", "", "Gunfight 2600 - Music & Bugfixes 2 (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7d940d749e55b96b7b746519fa06f2de", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (Preview) (1983) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "", "" }, - { "7d9c96b215d1941e87b6fb412eb9204f", "", "", "Othello (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7da9de8d62fcdd3a2c545b2e720c2a61", "CommaVid, John Bronstein", "CM-001", "MagiCard (1981) (CommaVid) (4K)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "24", "", "", "" }, - { "7dbc8fa2e488e3f6b87fbe0f76c5b89f", "Ed Federmeyer", "", "Sound X (1996) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7dc03a1f56d0e6a8aae3e3e50d654a08", "", "", "Hozer Video Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7dcbfd2acc013e817f011309c7504daa", "Arcadia Corporation, Dennis Caswell", "AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7dd9c5284422f729066ab22a284c8283", "CCE", "C-833", "Target Practice (1983) (CCE) [a]", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "", "", "214", "", "" }, - { "7dfd100bda9abb0f3744361bc7112681", "Telesys, Don Ruffcorn", "1006", "Demolition Herby (1983) (Telesys) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7e2fe40a788e56765fe56a3576019968", "Activision - Imagineering, Dan Kitchen", "AK-050-04", "Double Dragon (1989) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7e464186ba384069582d9f0c141f7491", "PlayAround - J.H.M.", "206", "General Re-Treat (1982) (PlayAround) (PAL)", "AKA Custer's Revenge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7e4783a59972ae2cd8384f231757ea0b", "Atari - Imagineering, Dan Kichen", "CX26139P", "Crossbow (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7e51a58de2c0db7d33715f518893b0db", "CBS Electronics, E.F. Dreyer, Ed Salvo", "4L 2738 0000", "Mountain King (1983) (CBS Electronics) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7e52a95074a66640fcfde124fffd491a", "Atari - GCC, Mike Feinstein, John Mracek", "CX2673", "Phoenix (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7e7c4c59d55494e66eef5e04ec1c6157", "Baroque Gaming (Brian Eno)", "", "Warring Worms (2002) (Baroque Gaming)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7e8aa18bc9502eb57daaf5e7c1e94da7", "CBS Electronics - Roklan, Joe Hellesen, Joe Wagner", "M8774, M8794", "Wizard of Wor (1982) (CBS Electronics)", "Uses the Joystick Controllers (swapped)", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "YES", "" }, - { "7e9da5cb84d5bc869854938fe3e85ffa", "Atari, Ian Shepard - Sears", "CX2604 - 6-99812, 49-75106", "Space War (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7eab0284a0cd1043461d446a08d08cec", "Jone Yuan Telephonic Enterprise Co", "", "Basic Math (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ead257e8b5a44cac538f5f54c7a0023", "Xonox, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7eaf009a892f03d90682dc1e67e85f07", "Fabrizio Zavagli", "", "Bounce! (18-03-2003) (Fabrizio Zavagli)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7eafc9827e8d5b1336905939e097aae7", "Atari, Mark R. Hahn", "", "Elk Attack (1987) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7eba20c2291a982214cc7cbe8d0b47cd", "Imagic, Dave Johnson", "720119-1A, 03211", "Quick Step! (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ed61a18cebdeca0a93be1f5461731e5", "Dactari", "", "Skiing (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ed7130a6e4020161836414332b11983", "", "", "Fu Kung! (V0.05 Cuttle Card Compatible) (13-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7edc8fcb319b3fb61cac87614afd4ffa", "Activision, Alan Miller", "AG-003", "Checkers (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ef3ca08abde439c6ccca84693839c57", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (1983) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01", "", "", "", "", "" }, - { "7ef74879d7cb9fa0ef161b91ad55b3bb", "CCE", "", "Vanguard (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f0209cfcc3d181715463f4d6451cecf", "Atari - GCC, John Allred, Douglas B. Macrae, Betty Ryan Tylko", "CX2694", "Pole Position (05-15-1983) (Atari) (Prototype)", "AKA RealSports Driving", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f07cd2e89dda5a3a90d3ab064bfd1f6", "Videospielkassette - Ariola", "PGP234", "Boxen (Ariola) (PAL)", "AKA Boxing", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f430c33044e0354815392b53a9a772d", "HES", "773-891", "2 Pak Special - Cavern Blaster, City War (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f525b07bc98080cc8950f7284e52ede", "Atari", "", "128-in-1 Junior Console (Chip 4 of 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f54fa6aa824001af415503c313262f2", "HES", "", "Boom Bang (HES) (PAL)", "AKA Crackpots", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f6533386644c7d6358f871666c86e79", "CommaVid, Irwin Gaines", "CM-008", "Cakewalk (1983) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f73ac39e5e3e13e40fd8ad885561a0f", "", "", "Star Fire - Warping Star (13-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f790939f7eaa8c47a246c4283981f84", "", "", "This Planet Sucks Demo 3 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "7f819454734ddf93f83fefcffcd3e212", "Jone Yuan Telephonic Enterprise Co", "", "Outlaw (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7f9fbe3e00a21ea06e6ae5e0e5db2143", "", "", "Skate Boardin' (2002) (Skyworks)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7fcd1766de75c614a3ccc31b25dd5b7a", "PlayAround - J.H.M.", "203", "Knight on the Town (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "216", "YES", "" }, - { "7fcd5fb59e88fc7b8473c641f44226c3", "CCE", "C-807", "Space Tunnel (1983) (CCE)", "AKA Cosmic Corridor, O Tunel Espacial", "", "", "", "", "", "", "", "", "", "", "", "", "32", "215", "", "" }, - { "7ff53f6922708119e7bf478d7d618c86", "Suntek", "SS-032", "Walker (Suntek) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "7ffc2d80fd49a124808315306d19868e", "Ishido", "", "Domino (Ishido) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "801ba40f3290fc413e8c816c467c765c", "Hozer Video Games", "", "Gunfight 2600 - Westward Ho! (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "803393ed29a9e9346569dd1bf209907b", "Atari - GCC, Mark Ackerman, Tom Calderwood, Glenn Parker", "CX2684", "Galaxian (02-04-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "804ed85eadf1ce3e93721547cbea7592", "CCE", "", "Fishing Derby (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8055b9c2622136fd91edfea6df642daf", "Activision", "", "Unknown Activision Game #1 (1983) (Activision) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "805f9a32ef97ac25f999a25014dc5c23", "SnailSoft", "", "Balthazar (SnailSoft)", "AKA Babylon 5", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8068e07b484dfd661158b3771d6621ca", "Epyx, Steven A. Baker, Peter Engelbrite", "80561-00286", "California Games (1988) (Epyx) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "807841df228ee8aab0a06ee639ce5a8a", "Coleco - Project Guild - GMA, Michael Green, Anthony R. Henderson, Gary Littleton", "2455", "Turbo (1982) (Coleco) (Prototype)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "807a8ff6216b00d52aba2dfea5d8d860", "John Payson", "", "Strat-O-Gems Deluxe (2005) (J. Payson)", "Uses the AtariVox controller", "Homebrew", "", "", "", "", "", "", "", "ATARIVOX", "", "", "", "", "", "", "" }, - { "808c3b1e60ee0e7c65205fa4bd772221", "CCE", "", "Defender (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "80cd42881e670e4b74a9ccd10d0d7b2e", "20th Century Fox Video Games - Sirius, Ed Hodapp", "11004", "Deadly Duck (1982) (20th Century Fox) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "80cec82239913cb8c4016eb13749de44", "David Marli", "", "Invaders from Space by David Marli (Space Invaders Hack)", "Hack of Space Invaders (Atari)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "80e1410ec98089e0733cc09e584dba4b", "Dynamics", "DY-293005", "Jumping Jack (1983) (Dynamics) (PAL)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "80e52315919bd8a8b82a407ccd9bb13f", "", "", "Euchre (Jul 28) (2002) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "80e5400470ac788143e6db9bc8dd88cf", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (06-XX-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8101efafcf0af32fedda4579c941e6f4", "", "", "Okie Dokie (4K) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81073d0377a2badef8d5e74fc44fc323", "Thomas Jentzsch", "", "Sadoom (TJ) (PAL60) (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "PAL60", "", "", "", "" }, - { "8108162bc88b5a14adc3e031cf4175ad", "Quelle", "719.941 7", "Vom Himmel durch die Hoelle (1983) (Quelle) (PAL)", "AKA Parachute", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8108ad2679bd055afec0a35a1dca46a4", "", "", "Maze Craze (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "NTSC", "", "", "", "" }, - { "810d8952af5a6036fca8d0c4e1b23db6", "Tiger Vision - Eram", "", "Keystone (Tiger Vision)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81254ebce88fa46c4ff5a2f4d2bad538", "Atari, David Crane - Sears", "CX2653 - 6-99823, 49-75111", "Slot Machine (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81341f00b61ab37d19d1529f483d496d", "", "", "Fu Kung! (V0.04) (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "813985a940aa739cc28df19e0edd4722", "Imagic, Bob Smith", "720000-201, 720102-1B, IA3201", "Star Voyager (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81414174f1816d5c1e583af427ac89fc", "Thomas Jentzsch", "", "Treasure Below (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "A", "", "", "", "", "", "", "", "", "220", "", "" }, - { "814210c0e121f7dbc25661b93c06311c", "", "", "Joustpong (16-09-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81591a221419024060b890665beb0fb8", "Atari, Carla Meninsky, Ed Riddle", "CX2611, CX2611P", "Indy 500 (1977) (Atari) (PAL)", "Uses the Driving Controllers", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "", "", "", "" }, - { "8190b403d67bf9792fe22fa5d22f3556", "", "", "Sky Diver (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "819aeeb9a2e11deb54e6de334f843894", "Atari, Gary Palmer", "CX2661", "Fun with Numbers (1980) (Atari)", "AKA Basic Math", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81a010abdba1a640f7adf7f84e13d307", "Telegames - VSS", "7062 A305", "Universal Chaos (1988) (Telegames)", "AKA Targ", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "81b3bf17cf01039d311b4cd738ae608e", "CBS Electronics - Roklan, Joe Gaucher, Alex Leavens", "M8776, M8793", "Gorf (1982) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "81f4f0285f651399a12ff2e2f35bab77", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "822a950f27ff0122870558a89a49cad3", "", "", "Space Jockey (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "82337e5fe0f418ca9484ca851dfc226a", "", "", "Robot City (V1.0) (Alpha) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "826481f6fc53ea47c9f272f7050eedf7", "Imagic, Dennis Koble", "720103-1A, IA3203", "Atlantis II (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "827a22b9dffee24e93ed0df09ff8414a", "CBS Electronics, Stuart Ross", "", "Wings (10-10-1983) (CBS Electronics) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8290daea8391f96d7c8e1482e184d19c", "Eckhard Stolberg", "", "Frame Timed Sound Effects (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "82bf0dff20cee6a1ed4bb834b00074e6", "Suntek", "SS-035", "Panda (Quest) (Suntek) (PAL)", "AKA Panda Chase", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "82c25d1c35e6ac6f893d1d7c2fc2f9c8", "Atari, Larry Kaplan", "CX2628, CX2628P", "Bowling (1979) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "82de957d155fc041fc6afb8315a28550", "Coleco, Joseph Biel", "2457", "Venture (1982) (Coleco) (Prototype)", "2K", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "82e7aab602c378cffdd8186a099e807e", "", "", "Space Robot (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "82efe7984783e23a7c55266a5125c68e", "CCE", "C-837", "Pizza Chef (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "834a2273e97aec3181ee127917b4b269", "Quelle", "043.151 0, 874.382 5", "Die hungrigen Froesche (1983) (Quelle) (PAL)", "AKA Frogs and Flies", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "835759ff95c2cdc2324d7c1e7c5fa237", "20th Century Fox Video Games, Frank Cohen, Douglas 'Dallas North' Neubauer", "11011", "M.A.S.H (1983) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8372eec01a08c60dbed063c5524cdfb1", "", "", "Cross Force (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8388d6fe59c38c0b3a6ab2c58420036a", "Atari, Frank Hausman, Mimi Nyden, Steve Woita", "CX2686", "Quadrun (12-06-1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "83b8c01c72306d60dd9b753332ebd276", "", "", "Bank Heist (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "83bdc819980db99bf89a7f2ed6a2de59", "Atari, Carla Meninsky - Sears", "CX2637 - 49-75158", "Dodge 'Em (1980) (Atari) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "83d15fb9843d9f84aa3710538403f434", "", "", "Gunfight 2600 - Release Candidate (2001) (MP) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "83f05ececae8be59ba1e51135f4bdcbf", "", "", "Demo Image Series #13 - Mario (4K Interleaved Chronocolour) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "83f50fa0fbae545e4b88bb53b788c341", "Atari, Larry Kaplan - Sears", "CX2643 - 6-99815", "Codebreaker (1978) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "83fafd7bd12e3335166c6314b3bde528", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00251", "Winter Games (1987) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "840a5a2eaea24d95d289f514fd12f9bb", "", "", "GBImprov (Hack)", "Hack of Ghostbusters", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "841057f83ce3731e6bbfda1707cbca58", "Champ Games", "CG-04-N", "Super Cobra Arcade (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "SAVEKEY", "", "", "", "", "", "YES", "" }, - { "841b7bc1cad05f5408302308777d49dc", "Activision", "", "Unknown Activision Game (10-22-1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "84290e333ff7567c2380f179430083b8", "Imagic, Dave Johnson", "13211, EIX-004-04I", "Quick Step! (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "843435eb360ed72085f7ab9374f9749a", "Joe Grand", "", "SCSIcide (1.31) (Joe Grand)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, - { "84535afb9a69712ec0af4947329e08b8", "CCE", "C-868", "Bingo (1983) (CCE) (PAL)", "AKA Dice Puzzle", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8454ed9787c9d8211748ccddb673e920", "Froggo", "FG1002", "Spiderdroid (1987) (Froggo)", "AKA Amidar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8490e1014c2baa0d3a3a08854e5d68b3", "Xonox, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "84db818cd4111542a15c2a795369a256", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "850ffd5849c911946b24544ea1e60496", "", "", "Invasion (07-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "851cc1f3c64eaedd10361ea26345acea", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85227160f37aaa29f5e3a6c7a3219f54", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8530caaaf40acbdcd118c282b5f8a37a", "", "", "This Planet Sucks Demo 2 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "8538c5e3ee83267774480649f83fa8d6", "", "", "Escape Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "853c11c4d07050c22ef3e0721533e0c5", "", "", "Oink! (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85470dcb7989e5e856f36b962d815537", "Atari - Sculptured Software, Inc., Steve Aguirre", "CX26162", "Fatal Run (1989) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85478bb289dfa5c63726b9153992a920", "", "", "Candi (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "854b68b93e7123a3be42b5a2a41f75d7", "Atari, Carol Shaw", "CX2618, CX2618P", "3-D Tic-Tac-Toe (1980) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "44", "", "", "" }, - { "85502d69fe46b7f54ef2598225678b47", "Jone Yuan Telephonic Enterprise Co", "", "Super-Ferrari (Jone Yuan)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85564dd0665aa0a1359037aef1a48d58", "ITT Family Games", "554-33 367", "Laser Base (1983) (ITT Family Games) (PAL) [a]", "AKA The End of the World (Perry Rhodan-Serie)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8556b42aa05f94bc29ff39c39b11bff4", "Atari, Craig Nelson - Sears", "CX2617 - 49-75183", "Backgammon (1979) (Atari)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 80", "", "", "", "", "" }, - { "855a42078b14714bcfd490d2cf57e68d", "Atari, Suki Lee", "CX26113", "Miss Piggy's Wedding (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "85a4133f6dcf4180e36e70ad0fca0921", "CCE", "C-827", "Chopper Command (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85b1bca93e69f13905107cc802a02470", "Atari, Craig Nelson", "CX2617, CX2617P", "Backgammon (1979) (Atari) (PAL)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 80", "", "", "", "", "" }, - { "85bbefb90e16bf386b304c1e9a1f6084", "Champ Games", "CG-02-P", "Conquest Of Mars (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "85e48d68c8d802e3ba9d494a47d6e016", "", "", "Ship Demo (V 15) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "85e564dae5687e431955056fbda10978", "Milton Bradley Company - Renaissance Technology, Ty Roberts", "4362", "Survival Run (1983) (Milton Bradley)", "AKA Cosmic Commander", "", "", "", "", "", "", "", "", "", "", "", "", "", "225", "YES", "" }, - { "86128001e69ab049937f265911ce7e8a", "Apollo - Games by Apollo, Steve Stringfellow", "AP-2005", "Lochjaw (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "862cf669cbced78f9ed31a5d375b2ebe", "", "", "Gunfight 2600 - Flicker acceptance (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8644352b806985efde499ae6fc7b0fec", "CCE", "C-801", "Mr. Postman (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8654d7f0fb351960016e06646f639b02", "Home Vision, R.J.P.G. - Gem International Corp. - VDI", "VCS83106", "Ski Hunt (1983) (Home Vision) (PAL)", "AKA Skiiing Hunt", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "866e5150c995c4ae5172e5207ba948c7", "Canal 3 - Intellivision", "", "Stampede (Canal 3) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "869abe0426e6e9fcb6d75a3c2d6e05d1", "", "", "Stampede (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "86b4aa76bbeb70e1a4f9211a9880ba8e", "", "", "Incoming (1 Player Version) (05-11-2002) (Ben Larson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "86f5e55ca9a9bde7338a157570828e79", "", "", "Star Fire - Creating a Universe (09-09-2002) (MP) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8712cceec5644aacc2c21203d9ebe2ec", "Retroactive", "", "Qb (V0.10) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8726c17ee7b559cb7bf2330d20972ad0", "", "", "Cave Demo (21-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "873fb75a7788ba0f4ae715229a05545e", "", "", "Euchre (Improved Colors) (PAL) (26-09-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8747ba79cd39fa83a529bb26010db21b", "Atari, Richard Maurer", "CX2632, CX2632P", "Space Invaders (1980) (Atari) (PAL) [different speed and colors]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8749a0d088df25218c149dc325abc7ca", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a5]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "874c76726f68c166fcfac48ce78eef95", "", "", "Red Pong Number 2 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8764462d7d19a33b0717af22b99fc88f", "CCE", "", "Sky Jinks (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "87662815bc4f3c3c86071dc994e3f30e", "Intellivision Productions - M Network, Patricia Lewis Du Long, Stephen Tatsumi", "", "Swordfight (1983) (Intellivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "876a953daae0e946620cf05ed41989f4", "Retroactive", "", "Qb (V2.08) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "877a5397f3f205bf6750398c98f33de1", "Erik Eid", "", "Euchre (Beta) (PAL) (12-09-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8786c1e56ef221d946c64f6b65b697e9", "20th Century Fox Video Games, David Lubar", "11015", "AKA Space Adventure", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8786f229b974c393222874f73a9f3206", "Activision, Larry Miller - Ariola", "EAX-021, EAX-021-04I - 711 021-720", "Spider Fighter (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8786f4609a66fbea2cd9aa48ca7aa11c", "Goliath", "5", "Open Sesame (1983) (Goliath) (PAL)", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "34", "", "YES", "" }, - { "87b460df21b7bbcfc57b1c082c6794b0", "Dennis Debro", "", "Climber 5 (20-03-2003) (Dennis Debro)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "87b6a17132fc32f576bc49ea18729506", "Atari, Andrew Fuchs, Courtney Granner, Jeffrey Gusman, Mark R. Hahn", "CX2690", "Pengo (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "87bea777a34278d29b3b6029833c5422", "Thomas Jentzsch", "", "Polaris (1983) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "87e79cd41ce136fd4f72cc6e2c161bee", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675", "Ms. Pac-Man (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "87f020daa98d0132e98e43db7d8fea7e", "20th Century Fox Video Games - Sirius, David Lubar", "11001", "Worm War I (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "883258dcd68cefc6cd4d40b1185116dc", "Activision, David Crane - Ariola", "EAZ-030, EAZ-030-04B, EAZ-030-04I - 711 030-725", "Decathlon (1983) (Activision) (PAL)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8874b68751fd2ba6d3306a263ae57a7d", "Eric Mooney", "", "Invaders by Erik Mooney (Alpha 1) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8885d0ce11c5b40c3a8a8d9ed28cefef", "Atari, Carol Shaw, Nick 'Sandy Maiwald' Turner - Sears", "CX2608 - 49-75165", "Super Breakout (1982 - 1981) (Atari)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, - { "888debb162d7d1ae71025b4ab794257f", "", "", "Interleaved ChronoColour - Nude Art (17-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88a6c9c88cb329ee5fa7d168bd6c7c63", "CCE", "C-1007", "Jungle Hunt (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88d300a38bdd7cab9edad271c18cd02b", "Funvision - Fund. Int'l Co.", "", "Pac Kong (Funvision) (PAL)", "AKA Inca Gold", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88d7b6b3967de0db24cdae1c7f7181bd", "Atari - GCC, Dave Payne", "CX2669", "Vanguard (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88d8a1accab58cf1abb043613cf185e9", "Ultravison", "", "Sabotage (Ultravison)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88dce4037471424bb38ab6841aaa8cab", "", "", "Double-Height 6-Digit Score Display (Two Background Color Change) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88ed87c011f699dd27321dbe404db6c8", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "88f74ec75ef696e7294b7b6ac5ca465f", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision) (16K)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8905d54f48b8024fc718ed643e9033f7", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (05-24-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "890c13590e0d8d5d6149737d930e4d95", "Atari, David Crane - Sears", "CX2605 - 6-99822, 49-75109", "Outlaw (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8917f7c1ac5eb05b82331cf01c495af2", "Bit Corporation", "PG202", "Space Tunnel (1982) (BitCorp) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "8933976f2029c0d8492ebd8f4eb21492", "", "", "Synthcart Plus (09-02-2003) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "8953bc11352d794431d3303e31d3b892", "Tigervision, Robert H. O'Neil", "7-007", "Polaris (02-17-1983) (Tigervision) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "896ec58f26e930e02f5e4f046602c3a1", "", "", "Synthcart (Beta) (2002) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, - { "898143773824663efe88d0a3a0bb1ba4", "Activision - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen", "AZ-033, AZ-033-04", "Space Shuttle (1983) (Activision) [FE]", "A Journey Into Space", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "898748d5eaac3164b0391a64ae1e0e32", "", "", "Hangman Man 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "898b5467551d32af48a604802407b6e8", "Bit Corporation", "PG208", "Snail Against Squirrel (1983) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "89a65b83203980d5d4d60f52a584a5b8", "", "", "Marble Craze (PAL) (02-02-2003) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "89a68746eff7f266bbf08de2483abe55", "Atari, Jerome Domurat, Steve Woita", "CX2696", "Asterix (1984) (Atari)", "AKA Taz", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "89afff4a10807093c105740c73e9b544", "", "", "Pooyan (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "89eaba47a59cbfd26e74aad32f553cd7", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2001", "Spacechase (1982) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a159ee58b2f0a54805162984b0f07e5", "Atari - Sculptured Software, Inc., Steve Aguirre", "CX26162", "Fatal Run (1989) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a183b6357987db5170c5cf9f4a113e5", "Atari - Roklan, Joe Gaucher", "CX2679", "RealSports Basketball (1983) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a42e2c7266439d8997a55d0124c912c", "", "", "Hangman Invader Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a49cf1785e3dea2012d331a3ad476e1", "", "", "Boulderdash (10 Blocks Wide) (02-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a6c84f481acf42abcb78ba5064ad755", "128-in-1 Junior Console", "", "Street Racer (128-in-1 Junior Console) (PAL) (4K)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 75", "", "", "", "", "" }, - { "8a8e401369e2b63a13e18a4d685387c6", "Activision, David Crane - Ariola", "EAG-008, PAG-008, EAG-008-04I - 711 008-720", "Laser Blast (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8a9d874a38608964f33ec0c35cab618d", "Chris Cracknell", "", "Rescue Bira Bira (Chris Cracknell)", "Hack of Jungle Fever", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8a9d953ac3db52a313a90d6a9b139c76", "", "", "Hangman Invader Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8aad33da907bed78b76b87fceaa838c1", "Atari, Larry Kaplan", "CX26163P", "Air-Sea Battle (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "8ac18076d01a6b63acf6e2cab4968940", "Atari, Dan Hitchens, Mimi Nyden", "CX2685", "Gravitar (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8af58a9b90b25907da0251ec0facf3b8", "Jone Yuan Telephonic Enterprise Co", "", "Cosmic Swarm (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8b04e9d132b8e30d447acaa6bd049c32", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (1982) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8b40a9ca1cfcd14822e2547eaa9df5c1", "Parker Brothers - Western Technologies, Dave Hampton, Tom Sloper", "931517", "Q-bert (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8b504b417c8626167a7e02f44229f0e7", "Retroactive", "", "Qb (V1.00) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8b556c3d9ca8e5e6e665bd759b93ffae", "", "", "Synthcart (2002) (Paul Slocum) (PAL) [!]", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, - { "8b5b1e3a434ebbdc2c2a49dc68f46360", "CBS Electronics - Woodside Design Associates - Imaginative Systems Software, Dan Kitchen, Garry Kitchen", "4L1700, 4L1701, 4L1702, 4L1802, 4L2274", "Donkey Kong (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8b7ca29a55432f886cee3d452fb00481", "Starpath Corporation, Stephen H. Landrum, Jon Leupp", "11 AR-4201", "Sword of Saros (1983) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8b8152d6081f31365406cb716bd95567", "Atari", "CX2626, CX2626P", "Miniature Golf (1979) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8b8789c6669a4cee86c579a65332f852", "Digivision", "", "Plaque Attack (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8bbfd951c89cc09c148bfabdefa08bec", "UA Limited", "", "Pleiades (1983) (UA Limited) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8bc0d2052b4f259e7a50a7c771b45241", "Xonox - K-Tel Software, Anthony R. Henderson", "99007, 6240", "Tomarc the Barbarian (1983) (Xonox) [a]", "AKA Thundarr the Barbarian", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, - { "8bd8f65377023bdb7c5fcf46ddda5d31", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8bebac614571135933116045204f0f00", "Thomas Jentzsch", "", "Missile Command (Trakball) (2002) (TJ) (PAL)", "Uses the Trakball Controller", "Homebrew", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "YES", "" }, - { "8c103a79b007a2fd5af602334937b4e1", "Thomas Jentzsch", "", "Laser Base (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, - { "8c136e97c0a4af66da4a249561ed17db", "", "", "Poker Squares (V0.27) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8c2fa33048f055f38358d51eefe417db", "Home Vision - Gem International Corp. - VDI", "VCS83137", "Teddy Apple (1983) (Home Vision) (PAL)", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8c36ed2352801031516695d1eeefe617", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00251", "Winter Games (1987) (Epyx) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8c7e5e2329f4f4e06cbcc994a30fd352", "Data Age", "DA1004", "Airlock (1982) (Data Age) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8c8a26ed57870daba8e13162d497bad1", "HES", "", "2 Pak Special - Dolphin, Oink (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8c8b15b3259e60757987ed13cdd74d41", "Supergame", "71", "River Raid (1984) (Supergame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8c941fa32c7718a10061d8c328909577", "Digivision", "", "River Raid (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8ccaa442d26b09139685f5b22bf189c4", "Retroactive", "", "Qb (V1.01) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8cd26dcf249456fe4aeb8db42d49df74", "Atari - Imagineering, Dan Kichen", "CX26139", "Crossbow (1988) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8ce9126066f2ddd5173e9f1f9ce1494e", "Thomas Jentzsch", "", "Missile Command (Trakball) (2002) (TJ)", "Uses the Trakball Controller", "Homebrew", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "YES", "" }, - { "8cf0d333bbe85b9549b1e6b1e2390b8d", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8d00a38f4c8f8800f1c237215ac243fc", "", "", "3-D Corridor (Green) (30-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8d1e2a6d2885966e6d86717180938f87", "Thomas Jentzsch", "", "Missile Command (Amiga Mouse) (2002) (TJ)", "Uses Amiga Mouse Controller", "Homebrew", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "YES", "" }, - { "8d8b7d7b983f75debbdaac651e814768", "", "", "Demo Image Series #15 - Three Marios (PAL) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8d9a06101ebb0f147936356e645309b8", "", "", "Grid Pattern Demo 2 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8da51e0c4b6b46f7619425119c7d018e", "Atari - Imagineering, David Lubar", "CX26183", "Sentinel (1991) (Atari)", "Uses the Light Gun Controller (left only)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8db152458abaef3cfa7a4e420ddbda59", "", "", "Keystone Kapers (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8df4be9ddc54ac363b13dc57ceaf161a", "Scott Stilphen", "", "Asteroids SS (Scott Stilphen) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8e0ab801b1705a740b476b7f588c6d16", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e42674972d6805068fc653e014370fd", "", "", "Skeleton (PAL) (15-10-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e48ea6ea53709b98e6f4bd8aa018908", "CBS Electronics, Stuart Ross", "", "Wings (06-03-1983) (CBS Electronics) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8e4cd60d93fcde8065c1a2b972a26377", "Imagic, Dan Oliver", "720118-2A, 13208, EIX-007-04I", "Laser Gates (1983) (Imagic) (PAL)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e4fa8c6ad8d8dce0db8c991c166cdaa", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e512ad4506800458f99dec084fc2c64", "Bob Montgomery, Nathan Strum", "", "Reindeer Rescue (2005)", "2005 AtariAge Holiday Cart", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e7241bfc8380aac3c0ef1b6881cdded", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (09-01-81) (Atari) (Prototype)", "Time Freeze", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8e737a88a566cc94bd50174c2d019593", "Quelle", "343.173 1", "Feuerwehr im Einsatz (1983) (Quelle) (PAL)", "AKA Fire Fighter", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e822b39a71c84ac875f0107fb61d6f0", "", "", "Hangman Ghost Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8e879aa58db41edb67cbf318b77766c4", "Thomas Jentzsch", "", "Cosmic Commuter (Thomas Jentzsch) (PAL60)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "8e887d1ba5f3a71ae8a0ea16a4af9fc9", "", "", "Skeleton (V1.1) (PAL) (24-10-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8ed5a746c59571feb255eaa7d6d0cf98", "", "", "Carnival (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8ed73106e2f42f91447fb90b6f0ea4a4", "Spectravision - Spectravideo", "SA-204", "Tapeworm (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8ee3f64dc0f349adc893fe93df5245d8", "", "", "Euchre (20-07-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f33bce5ba1053dcf4cea9c1c69981e4", "", "", "Jawbreaker (Unknown) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f53a3b925f0fd961d9b8c4d46ee6755", "", "", "Astrowar (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f5ac5139419c5d49bacc296e342a247", "Atari - CCW, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (12-22-1983) (Atari) (Prototype)", "Uses Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "8f60551db6d1535ef0030f155018c738", "", "", "Space War (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f613ea7c32a587d6741790e32872ddd", "", "", "Troll Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f88309afad108936ca70f8b2b084718", "Spectravision - Spectravideo - Quelle", "SA-203 - 413.223 9", "Cross Force (1982) (Spectravision) (PAL)", "AKA Kreuzfeuer (Cross Fire)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f90590dba143d783df5a6cff2000e4d", "", "", "Gopher (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8f98519a91dbbf4864f135a10050d9ed", "Silvio Mogno", "", "Rainbow Invaders (non-playable demo) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8fa47e5242776e841df7e708b12eb998", "", "", "Sea Hawk (Genesis)", "Genesis controller (C drops bomb)", "Hack of Sea Hawk", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "8fbabaa87941cdf3a377c15e95bdb0f3", "", "", "Meteor Smasher (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8fe00172e7fff4c1878dabcf11bb8dce", "Quelle", "689.302 8", "Hili Ball (1983) (Quelle) (PAL)", "AKA Racquetball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "8febdd9142960d084ab6eeb1d3e88969", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2674", "E.T. - The Extra-Terrestrial (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "8fffc8f15bb2e6d24e211884a5479aa5", "Retroactive", "", "Qb (V1.00) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9048ccb7e0802cd8fa5bfc2609f292d8", "Tigervision, Robert H. O'Neil", "7-007", "Polaris (1983) (Tigervision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9057694dce8449521e6164d263702185", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "90578a63441de4520be5324e8f015352", "Bit Corporation", "PGP204", "Open Sesame (4 Game in One) (1983) (BitCorp) (PAL)", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "34", "", "YES", "" }, - { "9072c142728a3a3d994956d03bfacba2", "Fabrizio Zavagli", "", "Crash Dive (Fabrizio Zavagli) (PAL60)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "", "PAL60", "30", "", "", "" }, - { "90b1799dddb8bf748ee286d22e609480", "", "", "Ship Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "90b647bfb6b18af35fcf613573ad2eec", "AtariAge (Chris Walton)", "", "Juno First (2009)", "AtariVox supported", "Homebrew", "", "", "", "", "", "", "", "ATARIVOX", "", "", "", "", "", "YES", "" }, - { "90ccf4f30a5ad8c801090b388ddd5613", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (1982) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "90d77e966793754ab4312c47b42900b1", "Imagic, Brad Stewart", "720105-2A, IA3400P, EIX-005-04I", "Fire Fighter (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "90f502cbf4438a95f69f848cef36eb64", "Digitel", "", "River Raid II (1985) (Digitel)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "910dd9bf98cc5bc080943e5128b15bf5", "", "", "Gunfight 2600 - Improved AI (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "911d385ee0805ff5b8f96c5a63da7de5", "Hozer Video Games", "", "Jammed (V0.1) (Demo) (2001) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "913d5d959b5021f879033c89797bab5e", "", "", "Robot Player Graphic (1996) (J.V. Matthews) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "914a8feaf6d0a1bbed9eb61d33817679", "Atari", "CX26163P", "Freeway Chicken (32 in 1) (1988) (Atari) (PAL)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91925abce3a29e33b6a8b81482f4f5af", "Activision, Garry Kitchen - Ariola", "EAX-025, EAX-025-04I - 711 025-725", "Keystone Kapers (1983) (Activision) (PAL) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9193b6fff6897d43274741d4f9855b6d", "", "", "M.A.S.H (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91a3749ff7b7e72b7fa09e05396a0e7b", "", "", "Gunfight 2600 - Final Run Part 2 (2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91b007f33f9b790be64f57220ec52e80", "Jone Yuan Telephonic Enterprise", "", "Laser Blast (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91c2098e88a6b13f977af8c003e0bca5", "Atari - GCC", "CX2676", "Centipede (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91d1c82ceaf8af2add3973a3c34bc0cb", "", "", "Starfield Demo 1 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91f0a708eeb93c133e9672ad2c8e0429", "", "", "Oystron (V2.9) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "91fdb6541f70c40b16aabf8308123be8", "", "", "Interlacing Game (19-08-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9222b25a0875022b412e8da37e7f6887", "Panda", "106", "Dice Puzzle (1983) (Panda)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9245a84e9851565d565cb6c9fac5802b", "Bomb - Onbase", "CA282", "Great Escape (1983) (Bomb)", "AKA Asteroid Fire", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "927d422d6335018da469a9a07cd80390", "Activision, Carol Shaw - Ariola", "EAX-020, EAX-020-04B, EAX-020-04I - 711 020-720", "River Raid (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9281eccd7f6ef4b3ebdcfd2204c9763a", "Retroactive", "", "Qb (2.15) (Retroactive) (PAL)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9295570a141cdec18074c55dc7229d08", "Telegames", "7045 A015", "Bump 'n' Jump (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "929e8a84ed50601d9af8c49b0425c7ea", "Bit Corporation", "PG205", "Dancing Plate (1982) (BitCorp) (PAL)", "AKA Dishaster, Dancing Plates, Tanzende Teller", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "92a1a605b7ad56d863a56373a866761b", "U.S. Games Corporation - Western Technologies, Dave Hampton", "VC2006", "Raft Rider (1983) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "92c5abb7a8bb1c3fc66c92ba353a3d21", "", "", "Star Fire - Sorting Fixed (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "92d1f6ac179ebe5963868d6bc1bdda8d", "HES", "498", "Smash Hit Pak - Frogger, Boxing, Seaquest, Skiing, Stampede (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "92e72f7cc569584c44c9530d645ae04e", "Canal 3 - Intellivision", "", "Spider Fighter (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "92ede72ed8f61d255bc58d2f166dc6b6", "", "", "Star Fire - Shootable (26-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "931b91a8ea2d39fe4dca1a23832b591a", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9333172e3c4992ecf548d3ac1f2553eb", "Konami", "RC 101-X 02", "Strategy X (1983) (Konami)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93420cc4cb1af1f2175c63e52ec18332", "Tim Snider", "", "Blair Witch Project (Tim Snider) (Hack)", "Hack of Haunted House", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9364ad51c321e0f15c96a8c0aff47ceb", "Atari, Rob Fulop", "CX2638", "Missile Command (1981) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "936ef1d6f8a57b9ff575dc195ee36b80", "", "", "Pac Kong (Unknown)", "AKA Inca Gold", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "936f555b4b1a2cd061b659ff63f4f5f2", "HES, David Lubar", "535", "My Golf (1990) (HES) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "937736d899337036de818391a87271e0", "Atari, Peter C. Niday", "CX26108", "Donald Duck's Speedboat (04-12-1983) (Atari) (Prototype)", "AKA Donald Duck's Regatta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "939ce554f5c0e74cc6e4e62810ec2111", "ZiMAG - Emag - Vidco", "711-111 - GN-020", "Dishaster (1983) (ZiMAG)", "AKA Dancing Plate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "93acd5020ae8eb5673601e2edecbc158", "Chris Cracknell", "", "Video Time Machine (Chris Cracknell)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93b9229fc0ea4fb959d604f83f8f603c", "Thomas Jentzsch", "", "Amidar DS (Fast Enemies) (2003) (TJ) (Hack)", "Hack of Amidar", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93c4b910f7649b3e998bb6d8527c6f4a", "Sparrow - Enter-Tech, Paul Walters, Rick Harris, George Hefner, Barbara Ultis", "", "Arkyology (1983) (Sparrow) (Prototype) [fixed]", "Fix for un-initialized 'X' register", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93c52141d3c4e1b5574d072f1afde6cd", "Imagic, Mark Klein", "720112-1A, 03213", "Subterranea (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93c8d9d24f9c5f1f570694848d087df7", "Digivision", "", "Galaxian (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93c9f9239a4e5c956663dd7affa70da2", "Quelle", "626.610 0", "Billard (1983) (Quelle) (PAL)", "AKA Trick Shot", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "93dc15d15e77a7b23162467f95a5f22d", "CCE", "", "Sky Jinks (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "93eb1795c8b1065b1b3d62bb9ec0ccdc", "JSK", "", "Custer's Viagra (JSK) (Hack)", "Hack of Custer's Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "94102febc53b4a78342d11b645342ed4", "", "", "Joustpong (14-07-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9436b7ad131b5a1f7753ce4309ba3dee", "Kyle Pittman", "", "War of The Worlds (Kyle Pittman) (Hack)", "Hack of Defender", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9469d18238345d87768e8965f9f4a6b2", "CCE", "", "Ms. Pac-Man (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "947317a89af38a49c4864d6bdd6a91fb", "CBS Electronics, Bob Curtiss", "4L 2487 5000", "Solar Fox (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "94b92a882f6dbaa6993a46e2dcc58402", "Activision, Larry Miller", "AX-026, AX-026-04", "Enduro (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "94d90f63678e086f6b6d5e1bc6c4c8c2", "Digivision", "", "Seaquest (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "94e3fbc19107a169909e274187247a9d", "", "2402-044-01", "2-in-1 Freeway and Tennis (Unknown)", "", "", "", "2IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "94e4c9b924286038527f49cdc20fda69", "Retroactive", "", "Qb (V2.12) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "94e7cc6342d11e508e7e8b2ddf53c255", "", "", "Missile Command (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "94ff6b7489ed401dcaaf952fece10f67", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (07-31-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "951e8cec7a1a1d6c01fd649e7ff7743a", "Atari - Sculptured Software, Adam Clayton", "CX26151, CX26151P", "Dark Chambers (1988) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9526e3db3bdfbc27989a9cbfd0ee34bf", "", "", "Atari Logo Demo 6 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "95351b46fa9c45471d852d28b9b4e00b", "Atari, Tom Rudadahl", "CX26163P", "Golf (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "955c408265ad6994f61f9b66657bbae9", "", "", "Quadrun (Video Conversion) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "956496f81775de0b69a116a0d1ad41cc", "CCE", "", "Alien (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "956b99511c0f47b3a11d18e8b7ac8d47", "", "", "Bones (Arcade Golf Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "95956108289a917f80667eccd3ce98a9", "Atari, Ed Logg, Carol Shaw", "CX2639, CX2639P", "Othello (1981) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "95a69cf8c08ef1522b050529464f0bca", "", "", "Grid Pattern Demo 1 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "95a89d1bf767d7cc9d0d5093d579ba61", "PlayAround - J.H.M.", "204", "Lady in Wading (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "216", "YES", "" }, - { "95e1d834c57cdd525dd0bd6048a57f7b", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "95e542a7467c94b1e4ab24a3ebe907f1", "Quelle", "719.252 9", "Im Schutz der Drachen (1983) (Quelle) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "95fd6097dc27c20666f039cfe34f7c69", "", "", "Oh No! (Version 1) (17-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "961112b74a920a5242e233480326c356", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "962ffd3eaf865230a7a312b80e6c5cfd", "Imagic, Wilfredo 'Willy' Aguilar, Michael Becker, Rob Fulop", "13205", "Fathom (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "96670d0bf3610da2afcabd8e21d8eabf", "", "", "Boring Pitfall (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "966b11d3c147d894dd9e4ebb971ea309", "", "", "Marble Craze Song (Paul Slocum) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9671b658286e276cc4a3d02aa25931d2", "", "", "Hangman Ghost Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "968efc79d500dce52a906870a97358ab", "TNT Games - Sculptured Software, Adam Clayton", "26192", "BMX Air Master (1989) (TNT Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "969b968383d9f0e9d8ffd1056bcaef49", "Atari, Larry Kaplan", "CX2628, CX2628P", "Bowling (1979) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "96bcb3d97ce4ff7586326d183ac338a2", "", "", "Revenge of the Apes (Hack) [h2]", "Hack of Planet of the Apes", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "96e798995af6ed9d8601166d4350f276", "20th Century Fox Video Games - Videa, David Ross", "11029", "Meltdown (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "96eccc2277043508a6c481ea432d7dd9", "Thomas Jentzsch", "", "Missile Command (Atari Mouse) (2002) (TJ) (PAL)", "Uses Atari ST Mouse Controller", "Homebrew", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "YES", "" }, - { "96f806fc62005205d851e758d050dfca", "", "", "Push (V0.05) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "97184b263722748757cfdc41107ca5c0", "Parker Brothers", "PB5820", "Mr. Do!'s Castle (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9718b85ac5a55cbc7348963c63ffa35a", "Robby", "", "Demon Attack (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "972486110933623039a3581db308fda6", "", "", "Xeno Plus (Hack)", "Hack of Xenophobe", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "97327d6962f8c64e6f926f79cd01c6b9", "", "", "Jawbreaker (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "977294ae6526c31c7f9a166ee00964ad", "Atari - GCC, Douglas B. Macrae", "CX2677, CX2677P", "Dig Dug (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "97842fe847e8eb71263d6f92f7e122bd", "Imagic, Wilfredo Aguilar, Michael Becker, Dennis Koble", "720113-1A, 03206", "Solar Storm (1983) (Imagic)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, - { "97933c9f20873446e4c1f8a4da21575f", "", "", "Racquetball (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "97a9bb5c3679d67f5c2cd17f30b85d95", "Atari", "", "Colors (1980) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "97cd63c483fe3c68b7ce939ab8f7a318", "Thomas Jentzsch", "", "Robot City (V0.21) (15-09-2002) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "97d0151beb84acbe82aa6db18cd91b98", "Steve Engelhardt", "", "Lunar Attack (2002) (Steve Engelhardt) (Hack)", "Hack of Z-Tack", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "97d079315c09796ff6d95a06e4b70171", "Activision, Garry Kitchen", "AZ-032", "Pressure Cooker (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9813b9e4b8a6fd919c86a40c6bda8c93", "Atari", "CX26177", "Ikari Warriors (1989) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9831efc7f4cb8ffb4df0082bab2f07a3", "Activision, Steve Cartwright - Ariola", "EAX-031, EAX-031-04B - 711 031-717", "Frostbite (1983) (Activision) (PAL) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9848b5ef7a0c02fe808b920a2ac566d2", "Skyworks Technology Inc.", "", "Baseball (2002) (Skyworks)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9853089672116117258097dbbdb939b7", "Hozer Video Games", "", "Gunfight 2600 - Cowboy Hair (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98555b95cb38e0e0b22b482b2b60a5b6", "", "", "Spinning Fireball (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "98ba601a60172cb46c5bf9a962fd5b1f", "", "", "Gorilla Kong (Hack)", "Hack of Donkey Kong", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98ccd15345b1aee6caf51e05955f0261", "Retroactive", "", "Qb (V2.03) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "98e5e4d5c4dd9a986d30fd62bd2f75ae", "", "", "Air-Sea Battle (Unknown) (Hack) (4K)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98e6e34af45a0664597972c3bb31180f", "", "", "Space Instigators (V1.7) (17-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98e7caaab8ec237558378d2776c66616", "Bradford W. Mott", "", "HMOVE Test (Bradford W. Mott) (1998) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98ea10c47c13f1b3306c7b13db304865", "", "", "Jam Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98ec0fa4199b9c01f7b8fa3732e43372", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98ef1593624b409b9fb83a1c272a0aa7", "CCE", "C-831", "Cosmic Ark (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98f63949e656ff309cefa672146dc1b8", "Atari - Axlon, John Vifian", "CX26168", "Off the Wall (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "98fa3ad778a668a79449350de4b3b95b", "", "", "Thrust (V1.1) (2000) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9905f9f4706223dadee84f6867ede8e3", "HES", "", "Challenge (HES) (PAL)", "ROM must be started in bank 1 (Surfer's Paradise if right difficulty = 'A')", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9912d06eea42200a198dd3e2be18c601", "Imagic, Michael Greene", "IA3312", "No Escape! (1982) (Imagic) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "991d57bbcd529ad62925098e0aec1241", "", "", "Gunfight 2600 - The Final Kernel (MP) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9945a22f60bbaf6d04a8d73b3cf3db75", "Activision, Dan Kitchen", "EAX-039-04B, EAX-039-04I", "Kung-Fu Master (1987) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9947f1ebabb56fd075a96c6d37351efa", "CBS Electronics", "4L 2737 0000", "Omega Race (1983) (CBS Electronics)", "Set right difficulty to 'A' for BoosterGrip in both ports", "", "", "", "", "A", "", "", "BOOSTERGRIP", "BOOSTERGRIP", "", "", "", "", "", "", "" }, - { "9962034ea7b3d4a905d0991804670087", "", "", "Grid Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9989f974c3cf9c641db6c8a70a2a2267", "Eckhard Stolberg", "", "Colours Selector (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "99a24d7bb31d49b720b422550b32c35f", "", "", "Hangman Ghost Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "99f7c6c26046bbe95f1c604b25da8360", "SnailSoft", "", "Comitoid beta 2 (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9a01115206f32eb0b539c7e5a47ccafa", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (07-15-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9a165c39af3f050fdee6583fdfcdc9be", "Zirok", "", "Mario Bros. (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9a21fba9ee9794e0fadd7c7eb6be4e12", "Atari - Imagineering, Dan Kitchen", "CX26177", "Ikari Warriors (1991) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9a25b3cfe2bbb847b66a97282200cca2", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 60", "", "", "", "", "" }, - { "9a4274409216ff09ecde799f2a56ac73", "CCE", "C-801", "Mr. Postman (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ab72d3fd2cc1a0c9adb504502579037", "Epyx, Steven A. Baker, Peter Engelbrite", "80561-00286", "California Games (1988) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ad362179c2eea4ea115c7640b4b003e", "", "", "Barnstorming (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "NTSC50", "", "", "", "" }, - { "9ad36e699ef6f45d9eb6c4cf90475c9f", "Imagic, Dennis Koble", "720103-1A, 720103-1B, IA3203, IX-010-04", "Atlantis (1982) (Imagic)", "AKA Lost City of Atlantis", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9aeb5206c5bf974892a9cc59f1478db3", "Activision, Steve Cartwright", "AX-013", "Barnstorming (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9af615951e9719df2244bc77fc50cb95", "Dactari - Milmar", "", "Defender (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9afdfe1cff7f37f1c971fe3f0c900606", "Funvision - Fund. International Co.", "", "Plug Attack (Funvision)", "AKA Plaque Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9b150a42fc788960fbb4cbe250259ee2", "Kroko", "", "3E Bankswitch Test (TIA @ $40)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9b21d8fc78cc4308990d99a4d906ec52", "CCE", "C-838", "Immies & Aggies (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "18", "223", "", "" }, - { "9b246683f44c963a50e41d6b485bee77", "", "", "Boring (PAL) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9bb136b62521c67ac893213e01dd338f", "Xonox - Beck-Tech", "6210, 7210, 06003. 99001", "Spike's Peak (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9bd4e0d5f28ba6da417c26649171f8e4", "", "", "Hangman Pac-Man Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9be58a14e055b0e7581fc4d6c2f6b31d", "", "", "Adventure (Color Scrolling) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9c27ef3bd01c611cdb80182a59463a82", "Arcadia Corporation, Kevin Norman", "AR-4103", "Killer Satellites (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9c40bf810f761ffc9c1b69c4647a8b84", "", "", "2 in 1 - Frostbite, River Raid (Unknown)", "", "", "", "2IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9c6d65bd3b477aace0376f705b354d68", "", "", "RPG Kernal (18-04-2003) (Paul Slocum) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9c6faa4ff7f2ae549bbcb14f582b70e4", "U.S. Games Corporation, Garry Kitchen, Paul Willson - Vidtec", "VC1002", "Sneak 'n Peek (1982) (U.S. Games)", "AKA Hide 'n Seek", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "", "" }, - { "9c6fd6ed3599978ab7b6f900484b9be6", "Andrew Wallace", "", "Laseresal 2002 (PAL60) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "9c729017dd2f9ccbadcb511187f80e6b", "", "", "J-Pac (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9c7fa3cfcaaafb4e6daf1e2517d43d88", "", "", "PIEROXM Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ca2deb61318eba4fb784d4bf7441d8b", "", "", "Purple Bar Demo 2 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9cbb07f1993a027bc2f87d5205457ec9", "", "", "Eckhard Stolberg's Scrolling Text Demo 1 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d0befa555f003069a21d2f6847ad962", "Atari - GCC, Dave Payne", "CX2669", "Vanguard (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d1556ae5890398be7e3d57449774b40", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, - { "9d2938eb2b17bb73e9a79bbc06053506", "Imagic, Michael Greene", "EIZ-002-04I", "Wing War (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d2f05d0fe8b2dfcf770b02eda066fc1", "", "", "Push (V0.06) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d33d31fb1de58c5460d8a67b57b36da", "", "", "Star Voyager (Genesis)", "Genesis controller (C is secondary lasers)", "Hack of Star Voyager", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "9d37a1be4a6e898026414b8fee2fc826", "M Network - APh Technological Consulting, David Rolfe - INTV", "MT5665", "Super Challenge Baseball (1982) (M Network)", "AKA Big League Baseball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d4bc7c6fe9a7c8c4aa24a237c340adb", "Dennis Debro", "", "Climber 5 (16-04-2003) (Dennis Debro)", "For Philly Classic 4", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d522a3759aa855668e75962c84546f7", "Atari, Tom Rudadahl", "CX2634, CX2634P", "Golf (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9d7f04618bb4043f531d087e3aaa7ac8", "Parker Brothers, Larry Gelberg, Gary Goltz", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL) (16K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9de0d45731f90a0a922ab09228510393", "20th Century Fox Video Games - Sirius, Mark Turmell", "11003", "Fast Eddie (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9dec0be14d899e1aac4337acef5ab94a", "CommaVid, John Bronstein", "CM-003", "Cosmic Swarm (1982) (CommaVid) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9e01f7f95cb8596765e03b9a36e8e33c", "Atari - CCW, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (1983) (Atari)", "Uses Keypad Controllers", "Rare", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "9e192601829f5f5c2d3b51f8ae25dbe5", "PlayAround - J.H.M.", "201", "Cathouse Blues (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9e2c7299c69b602443d327c7dad51cbf", "Charles Morgan", "", "Xaxyrax Road (Charles Morgan) (Hack)", "Hack of Freeway", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9e437229136f1c5e6ef4c5f36178ed18", "Funvision - Fund. International Co.", "", "Grand Prize (Funvision)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9e5007131695621d06902ab3c960622a", "Sega", "", "Tac Scan (1983) (Sega) [h1]", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 60", "", "", "215", "YES", "" }, - { "9e6fa031ece07919c816fba5dc8de43e", "", "", "Star Fire - Meteor Dance (13-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9e792a59f8795664cbaaff1ba152d731", "", "", "Bullet Demo (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9e904e2eaa471c050c491289b8b80f60", "", "", "How to Draw a Playfield II (1997) (Erik Mooney) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ea8ed9dec03082973244a080941e58a", "Eric Mooney, Piero Cavina", "", "INV+", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ec1b259a1bcffa63042a3c2b3b90f0a", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9eca521db1959156a115dee85a405194", "", "", "Fu Kung! (V0.08) (2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9ed0f2aa226c34d4f55f661442e8f22a", "", "", "Nuts (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "45", "", "", "" }, - { "9eeb40f04a27efb1c68ba1d25e606607", "Kyle Pittman", "", "Rambo II (2003) (Kyle Pittman) (Hack)", "Hack of Double Dragon", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9efa877a98dd5a075e058214da428abb", "Hozer Video Games", "", "SCSIcide (1.32) (Hozer Video Games)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, - { "9efb4e1a15a6cdd286e4bcd7cd94b7b8", "20th Century Fox Video Games, John W.S. Marvin", "", "Planet of the Apes (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9f2d58dce1b81c6ba201ed103507c025", "", "", "Fu Kung! (V0.02) (2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9f48eeb47836cf145a15771775f0767a", "Atari, Warren Robinett", "CX2620", "Basic Programming (1979) (Atari)", "Uses Keypad Controllers", "Rare", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, - { "9f5096a6f1a5049df87798eb59707583", "20th Century Fox Video Games, Mark Klein", "11036", "Entity, The (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9f59eddf9ba91a7d93bce7ee4b7693bc", "Thomas Jentzsch", "", "Montezuma's Revenge (Thomas Jentzsch) (PAL60)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "9f8fad4badcd7be61bbd2bcaeef3c58f", "Parker Brothers, Charlie Heath", "PB5330", "Reactor (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "9f901509f0474bf9760e6ebd80e629cd", "Atari, Bob Whitehead - Sears", "CX2623 - 6-99819, 49-75108, 49-75125", "Home Run (1978) (Atari) (4K)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "9f93734c68f6479eb022cab40814142e", "", "", "Push (V0.07) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9f9ee0f60c119c831e80694b6678ca1a", "Jeffry Johnston", "", "Radial Pong - Version 8 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9fa0c664b157a0c27d10319dbbca812c", "Chris Walton, Justin Hairgrove, Tony Morse", "", "Hunchy II (2005)", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "9fc2d1627dcdd8925f4c042e38eb0bc9", "Atari - GCC, John Allred, Mike Feinstein", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "E68E28752D3C54EDD3CCDA42C27E320C", "Xonox - K-Tel Software, Anthony R. Henderson", "99007, 6240", "Tomarc the Barbarian (1983) (Xonox)", "Genesis controller (B is jump and throw, C switches between players)", "Hack of Tomarc the Barbarian", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "a0028f057d496f22b549fd8deecc6f78", "Joe Grand", "", "SCSIcide Pre-release 6 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a00ec89d22fcc0c1a85bb542ddcb1178", "CCE", "C-1012", "Phoenix (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a00ee0aed5c8979add4c170f5322c706", "Barry Laws Jr.", "", "Egghead (Barry Laws Jr.) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "a0185c06297b2818f786d11a3f9e42c3", "", "", "International Soccer (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a025a8f83a42a4d6d46c4887e799bfac", "Hozer Video Games", "", "Gunfight 2600 - Descissions had to be made (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a0297c4788f9e91d43e522f4c561b4ad", "Atari - CCW, Gary Stark", "CX26102", "Cookie Monster Munch (1983) (Atari) (PAL)", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "a0563dd6d8215c38c488fbbd61435626", "", "", "Ship Demo (V 1501) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a0675883f9b09a3595ddd66a6f5d3498", "Telegames", "6057 A227", "Quest for Quintana Roo (1988) (Telegames)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a075ad332942740c386f4c3814925ece", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (2 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a0d502dc8b90b1d7daa5f6effb10d349", "", "", "Demo Image Series #5 - Sam (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a0e2d310e3e98646268200c8f0f08f46", "Atari, Ed Logg, Carol Shaw", "CX2639, CX2639P", "Othello (1981) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a100eff2d7ae61ca2b8e65baf7e2aae8", "David Marli", "", "Muncher (David Marli) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "a11099b6ec24e4b00b8795744fb12005", "Activision - Bobco, Robert C. Polaro", "EAK-049-04B", "Rampage! (1989) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a1403fef01641dcd3980cac9f24d63f9", "Dactari - Milmar", "", "Atlantis (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a14d8a388083c60283e00592b18d4c6c", "", "", "Tunnel Demo (28-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a15b5831a1fab52e4c416068c85ec011", "Hozer Video Games", "", "Gunfight 2600 - The Good, The Bad, The Ugly (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a174cece06b3abc0aec3516913cdf9cc", "Sears Tele-Games, Jim Huether", "CX2614 - 49-75126", "Steeplechase (1980) (Sears) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "PADDLES", "", "", "", "", "", "", "" }, - { "a1770ef47146ab7b12e2c4beccd68806", "Digitel", "", "Kaystone Kapers (1983) (Digitel)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a184846d8904396830951217b47d13d9", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a189f280521f4e5224d345efb4e75506", "Atari - Thomas Jentzsch", "", "Obelix (1983) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a1bcbe0bfe6570da2661fc4de2f74e8a", "Imagic - Advanced Program Technology, Rob Fulop", "", "Actionauts (Microbots) (1984-2008) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a1ca372388b6465a693e4626cc98b865", "Quelle", "176.543 7", "Der Vielfrass (1983) (Quelle) (PAL)", "AKA Fast Food", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a1ead9c181d67859aa93c44e40f1709c", "American Videogame - Dunhill Electronics, Darrell Wagner, Todd Clark Holm, John Simonds", "", "Tax Avoiders (1986) (American Videogame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a1f9159121142d42e63e6fb807d337aa", "Quelle - Otto Versand", "700.223 1 - 781627", "Der moderne Ritter (1983) (Quelle) (PAL)", "AKA Fast Eddie", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a204cd4fb1944c86e800120706512a64", "Coleco", "2511", "Smurfs Save the Day (1983) (Coleco)", "Uses the Kid Vid Controller", "", "", "", "", "", "", "", "", "KIDVID", "", "", "", "", "", "", "" }, - { "a20b7abbcdf90fbc29ac0fafa195bd12", "Quelle - Otto Versand", "719.383 2 - 649635, 781393, 781784, 986404", "Motocross (1983) (Quelle) (PAL)", "AKA Motorcross", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a20d931a8fddcd6f6116ed21ff5c4832", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2003", "Racquetball (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a2170318a8ef4b50a1b1d38567c220d6", "Amiga - Video Soft", "3125", "Surf's Up (1983) (Amiga) (Prototype) [a1]", "Uses the Joyboard controller", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a23ffc86804240ce77134a1c91926685", "", "", "Star Fire - Paulstar WIP (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a2424c1a0c783d7585d701b1c71b5fdc", "", "", "Video Pinball (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a25bb76e9e773117e567fd4300b1bb23", "", "", "Interleaved ChronoColour Demo (NTSC) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a28d872fc50fa6b64eb35981d0f4bb8d", "Atari, Larry Kaplan - Sears", "CX2628 - 6-99842, 49-75117", "Bowling (1979) (Atari) (4K)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a29df35557f31dfea2e2ae4609c6ebb7", "Atari", "", "Circus Atari (1980) (Atari) (Joystick)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a29fc854838e08c247553a7d883dd65b", "Activision, Steve Cartwright", "AX-013", "Barnstorming (1982) (Activision) (16K)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a2aae759e4e76f85c8afec3b86529317", "", "", "Boom Bang (Unknown)", "AKA Crackpots", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a2de0fc85548871279ed2a3c1325c13e", "George Veeder", "", "Cat and Mouse (George Veeder) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "a2eb84cfeed55acd7fece7fefdc83fbb", "", "", "Kool Aid Man (Fixed) (15-11-2002) (CT)", "HMOVE handling fixed in this version", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a2f296ea2d6d4b59979bac5dfbf4edf0", "", "", "Warring Worms (28-01-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a302b922a8dbec47743f28b7f91d4cd8", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (Preview) (1982) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a30ece6dc4787e474fbc4090512838dc", "Zellers", "", "Circus (Zellers)", "AKA Circus Atari", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a310494ad5ba2b5b221a30d7180a0336", "", "", "Demo Image Series #6 - Mario (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a336beac1f0a835614200ecd9c41fd70", "Atari, Christopher H. Omarzu, Robert Vieira", "CX26121", "Zoo Keeper Sounds (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a34560841e0878c7b14cc65f79f6967d", "Multivision, Michael Case", "", "Harem (1982) (Multivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3486c0b8110d9d4b1db5d8a280723c6", "Atari, Alan J. Murphy, Robert C. Polaro", "CX26100", "Bugs Bunny (08-04-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a35d47898b2b16ec641d1dfa8a45c2b7", "Activision, Steve Cartwright", "AX-017, AX-017-04", "MegaMania (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3873d7c544af459f40d58dfcfb78887", "", "", "Tennis (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3b9d2be822eab07e7f4b10593fb5eaa", "", "", "GREGXM Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3c1c70024d7aabb41381adbfb6d3b25", "Telesys, Alex Leavens", "1005", "Stargunner (1983) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3d7c299fbcd7b637898ee0fdcfc47fc", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (Preview) (1982) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, - { "a3f2a0fcf74bbc5fa763b0ee979b05b1", "Quelle", "873.790 0", "Eishockey-Fieber (1983) (Quelle) (PAL)", "AKA Ice Hockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3f8aebb38182749cb8da85cfbc63d7c", "", "", "Tennis (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a3fee8ce15525ea00d45a06f04c215d1", "Aaron Curtis", "", "AStar (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "a406d2f6d84e61d842f4cb13b2b1cfa7", "Tigervision, John Harris - Teldec", "7-002", "Jawbreaker (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a412c8577b2d57b09185ae51739ac54f", "Arcadia Corporation, Dennis Caswell", "AR-4000", "Phaser Patrol (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "YES", "" }, - { "a41450333f8dd0e96e5e9f0af3770ae9", "", "", "Basic Math (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a422194290c64ef9d444da9d6a207807", "M Network - APh Technological Consulting, Hal Finney", "MT5667", "Dark Cavern (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a443d8557d712845c8cd3699363a42e6", "", "", "Star Fire (07-01-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a47878a760f5fa3aa99f95c3fdc70a0b", "", "", "Demo Image Series #5 - Baboon (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4790224bd5afabd53cbe93e46a7f241", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a47e26096de6f6487bf5dd2d1cced294", "Atari", "CX2643", "Codebreaker (1978) (Atari) (PAL)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "a499d720e7ee35c62424de882a3351b6", "Sega - Beck-Tech, Steve Beck, Phat Ho", "009-01", "Up 'n Down (1984) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4aa7630e4c0ad7ebb9837d2d81de801", "", "", "Atari 2600 Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4ab331e8768eafdc20ce8b0411ff77a", "", "", "Demo Image Series #1 - Sam (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4b9423877a0b86ca35b52ca3c994ac5", "CCE", "C-805", "Sea Monster (1983) (CCE)", "O Monstro Marinho", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "a4b99aa5ed85cfdb7d101923147de035", "Jim Goebel", "", "Pac-Law (Jim Goebel) (Hack)", "Hack of Outlaw", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4c08c4994eb9d24fb78be1793e82e26", "Activision, Alan Miller", "AX-012, CAX-012, AX-012-04", "Ice Hockey (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4d026a5c200ef98518ebb77719fe8dc", "Kyle Pittman", "", "SpongeBob SquarePants (2003) (Kyle Pittman) (Hack)", "Hack of Revenge of the Beefsteak Tomatoes", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4e885726af9d97b12bb5a36792eab63", "Xonox - K-Tel Software - Beck-Tech, Steve Beck", "6210, 7210, 06003. 99001", "Spike's Peak (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "223", "", "" }, - { "a4ecb54f877cd94515527b11e698608c", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (12-20-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4f1cea2c8479284e2a2292f8d51b5fa", "", "", "Gunfight 2600 - The Final Kernel Part 2 (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a4ff39d513b993159911efe01ac12eba", "Atari - GCC, John Allred, Douglas B. Macrae, Betty Ryan Tylko", "CX2694", "Pole Position (1983) (Atari)", "AKA RealSports Driving", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a511f7ee13e4b35512f9217a677b4028", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2674", "E.T. - The Extra-Terrestrial (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a5262fe6d01d6a1253692682a47f79dd", "", "", "JKH Text Scrolling Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a537879d8e82e1061d3ad800479d3b84", "Andrew Wallace", "", "Brooni (2001) (Andrew Wallace) (PD) (PAL)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a539b9fd1ba57e46442b3e9351e6383b", "", "", "River Raid (208 in 1) (Unknown) (PAL) (Hack) [a]", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a56b642a3d3ab9bbeee63cd44eb73216", "Carrere Video - JWDA, Sylvia Day, Todd Marshall, Robin McDaniel, Henry Will IV - Teldec - Prism", "USC2001", "Gopher (1983) (Carrere Video) (PAL)", "AKA Vossicht Whlmaus!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a5855d73d304d83ef07dde03e379619f", "Atari, David Crane", "", "Boggle (08-07-1978) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "215", "YES", "" }, - { "a58b11148c18d85e4c2aef4ff46ade67", "", "", "Video Chess (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a591b5e8587aae0d984a0f6fe2cc7d1c", "", "", "Globe Trotter Demo (24-03-2003) (Weston)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a5b7f420ca6cc1384da0fed523920d8e", "", "", "Adventure (New Graphics) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a5c96b046d5f8b7c96daaa12f925bef8", "Activision, Alan Miller - Ariola", "EAG-007, EAG-007-04I, PAG-007 - 711 007-720", "Tennis (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a5e9ed3033fb2836e80aa7a420376788", "Atari, Carla Meninsky", "CX2637, CX2637P", "Dodge 'Em (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a60598ad7ee9c5ccad42d5b0df1570a1", "Atari, Alan Miller", "CX26163P", "Surround (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a6127f470306eed359d85eb4a9cf3c96", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a62e3e19280ff958407e05ca0a2d5ec7", "", "", "Hangman Ghost Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a6737c81542a99ee71cb5f5ff14703d9", "", "", "Scrolling Playfield 3 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a69f5b1761a8a11c98e706ec7204937f", "", "", "Pharaoh's Curse (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "34", "", "YES", "" }, - { "a74689a08746a667a299b0507e1e6dd9", "Starpath Corporation, Stephen H. Landrum", "9 AR-4105", "Official Frogger, The (1983) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a7523db9a33e9417637be0e71fa4377c", "Videospielkassette - Ariola", "PGP238", "Gangster (Ariola) (PAL)", "AKA Outlaw", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a7673809068062106db8e9d10b56a5b3", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118, CX26118P", "Millipede (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a779b9fa02c62d00d7c31ed51268f18a", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a7a58e9291aefa1064e933071f60d4ef", "Arcadia Corporation, Dennis Caswell", "1 AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a7b584937911d60c120677fe0d47f36f", "M Network - APh Technological Consulting, Hal Finney - INTV", "MT5661", "Armor Ambush (1982) (M Network)", "AKA Tank Battle", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a7b96a8150600b3e800a4689c3ec60a2", "Atari, Mike Lorenzen - Sears", "CX2630 - 49-75122", "Circus Atari (1980) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01 55", "", "", "", "", "" }, - { "a7cf2b9afdbb3a161bf418dbcf0321dc", "Barry Laws Jr.", "", "Attack Of The Mutant Space Urchins (2002) (Barry Laws Jr.) (Hack)", "Hack of Alien", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a7ed7dc5cbc901388afa59030fb11d26", "Atari, Warren Robinett", "CX2606, CX2606P", "Slot Racers (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a7ef44ccb5b9000caf02df3e6da71a92", "Atari, Ian Shepard - Sears", "CX2604 - 6-99812, 49-75106", "Space War (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8101cb667e50a46165c6fb48c608b6b", "", "", "Kung Fu Sprite Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a81697b0c8bbc338ae4d0046ede0646b", "CCE", "", "Gravitar (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a81b29177f258494b499fbac69789cef", "Greg Thompson", "", "Console Wars (Greg Thompson) (Hack)", "Hack of Space Jockey", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a83b070b485cf1fb4d5a48da153fdf1a", "Apollo", "AP-2011", "Pompeii (1983) (Apollo) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8435ec570141de5d833c4abec499e55", "", "", "Happy Birthday Demo (2001) (Dennis Debro) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8633050a686270fcf6c0cc4dcbad630", "Zirok", "", "Phoenix (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a867b76098786c4091dba2fcee5084c3", "", "", "Dragrace (Hack)", "Hack of Dragster", "Hack", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "a875f0a919129b4f1b5103ddd200d2fe", "Atari, Dan Hitchens. Mimi Nyden", "CX2656", "SwordQuest - EarthWorld (1982) (Atari) (PAL)", "AKA Adventure I, SwordQuest I - EarthWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8916734ff8c64ec3342f4c73fd5b57d", "Atari", "", "Stand Alone Test Cart (1982) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a89a3e0547d6887279c34aba4b17a560", "M Network, Steve Crandall, Patricia Lewis Du Long", "MT4646", "Rocky & Bullwinkle (1983) (Mattel) (Prototype)", "", "Prototype", "", "4K", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8a703e073183a89c94d4d99b9661b7f", "Franklin Cruz", "", "Spice Invaders (Franklin Cruz) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8b3ea6836b99bea77c8f603cf1ea187", "CCE", "C-861", "Boxing (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8c48b4e0bf35fe97cc84fdd2c507f78", "Puzzy - Bit Corporation", "PG201", "Seamonster (1982) (Puzzy)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "a8d0a4a77cd71ac601bd71df5a060e4c", "", "", "Space Shuttle (1983) (Activision) [t2] (Fuel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8d4a9500b18b0a067a1f272f869e094", "", "", "Red And White Checkerboard Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a8e49d7e24ce293629ca29614862821b", "", "", "Enduro (Genesis)", "Genesis controller (B is acceleration, C is brakes)", "Hack of Enduro", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "a91d0858a52de3a2e6468437212d93e8", "", "", "Q-bert (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a936d80083e99d48752ad15c2b5f7c96", "", "", "Room of Doom (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a93e8ea1f565c3c1e86b708cf0dc2fa9", "Jess Ragan", "", "Kabul! (Jess Ragan) (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "a94528ae05dd051894e945d4d2349b3b", "Genus", "", "River Raid (Genus)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a94b8ca630f467b574b614808d813919", "HES", "773-883", "2 Pak Special - Space Voyage, Fire Alert (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a9531c763077464307086ec9a1fd057d", "Atari, John Dunn - Sears", "CX2631 - 49-75152", "Superman (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a957dbe7d85ea89133346ad56fbda03f", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "a97733b0852ee3096300102cb0689175", "CCE", "C-834", "Fast Eddie (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a9784c24cddb33bd0d14442b97784f3d", "", "", "Omega Race DC (2003) (TJ) (Omega Race Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a98b649912b6ca19eaf5c2d2faf38562", "", "", "This Planet Sucks (Greg Troutman) (PAL) [!]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "a995b6cbdb1f0433abc74050808590e6", "Imagic, Rob Fulop, Bob Smith", "720106-1A, IA3600", "Riddle of the Sphinx (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a9cb638cd2cb2e8e0643d7a67db4281c", "M Network - APh Technological Consulting, Larry Zwick - INTV", "MT5861", "Air Raiders (1983) (M Network)", "AKA Air Battle", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "a9d9e19d0c89fb31780b5d63e1f8c6a4", "AtariAge, Chris Spry", "CX26201", "Zippy the Porcupine (2014) (Sprybug) (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "a9e3c23599c0d77151602f8e31daf879", "", "", "Kung Fu Master (Genesis)", "Genesis controller (C is extra kick modes)", "Hack of Kung Fu Master", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "aa1c41f86ec44c0a44eb64c332ce08af", "Spectravideo, David Lubar", "SA-218", "Bumper Bash (1983) (Spectravideo)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "20", "", "", "" }, - { "aa2c4b32656bde9a75042a4d158583e1", "", "", "Oystron X (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aa5cfe3b20395aba1d479135943ad85c", "", "", "Defender (Hack) (Unknown)", "", "Hack of Defender", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aa7bb54d2c189a31bb1fa20099e42859", "CBS Electronics, Ed English", "4L4478", "Mr. Do! (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "aa8e4b2cb8a78ffe6b20580033f4dec9", "", "", "Bitmap Demo (13-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aaac0d277eda054861e613c59c2e4ff2", "JWDA, Todd Marshall", "", "Music Demo (JWDA)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aab840db22075aa0f6a6b83a597f8890", "Home Vision, R.J.P.G. - Gem International Corp. - VDI", "VCS83124", "Racing Car (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "aad61898633f470ce528e3d7ef3d0adb", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a1]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aad91be0bf78d33d29758876d999848a", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1981) (Activision) (Prototype)", "Pitfall Harry's Jungle Adventure (Jungle Runner)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aaea37b65db9e492798f0105a6915e96", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Tug of War (2 of 3) (1983) (Arcadia)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "02", "", "", "", "", "" }, - { "aafc79ffc32c4c9b2d73c8ada7602cfe", "", "", "Planet Patrol (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab10f2974dee73dab4579f0cab35fca6", "ITT Family Games", "", "Wilma Wanderer (1983) (ITT Family Games) (PAL)", "AKA Lilly Adventure", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab2cfcaad3daaf673b2b14fdbb8dac33", "M Network, David Akers, Joe King, Patricia Lewis Du Long, Jeff Ratcliff - INTV", "MT7045", "Bump 'n' Jump (1983) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab2ea35dcc1098c87455bb8210b018cf", "", "", "Fu Kung! (V0.04 Single Line Resolution) (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab301d3d7f2f4fe3fdd8a3540b7a74f5", "Jone Yuan Telephonic Enterprise Co", "", "IQ 180 (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "27", "230", "", "" }, - { "ab434f4c942d6472e75d5490cc4dd128", "HES", "773-875", "2 Pak Special - Hoppy, Alien Force (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab4ac994865fb16ebb85738316309457", "Atari, Alan Miller - Sears", "CX2624 - 6-99826, 49-75113", "Basketball (1978) (Atari)", "Console ports are swapped", "Common", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "ab56f1b2542a05bebc4fbccfc4803a38", "Activision - Imagineering, Dan Kitchen, David Lubar", "AK-048-04", "River Raid II (1988) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab5bf1ef5e463ad1cbb11b6a33797228", "Imagic, Rob Fulop", "720104-1A, 720104-1B, IA3204", "Cosmic Ark (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab60ea7b707c58d356cad858eb18db43", "", "", "Tazer (John K. Harvey)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ab8d318da4addd39c65b7f9c408df2a6", "", "", "Star Trek (Genesis)", "Genesis controller (B is phaser, C is warp)", "Hack of Star Trek", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "YES", "" }, - { "abb740bea0a6842831b4f53112fb8145", "", "", "Qb (V1.01) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "abb741c83f665d73c86d90a7d9292a9b", "Telegames", "", "Space Attack (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "abc64037ca5d5b04ae8a7eedbca3ed74", "", "", "Green and Yellow Number 1 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "abe40542e4ff2d1c51aa2bb033f09984", "Absolute Entertainment, David Crane", "EAZ-042-04B, EAZ-042-04I", "Skate Boardin' (1987) (Absolute) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac05c0e53a5e7009ddd75ed4b99949fc", "Atari, Joe Decuir, Steve Mayer, Larry Wagner - Sears", "CX2601 - 99801, 6-99801, 49-75124", "Combat (1977) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac0ddbcff34d064009591607746e33b8", "Thomas Jentzsch", "", "Atlantis FH (2003) (TJ) (Hack)", "Hack of Atlantis", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac26d7d37248d1d8eac5eccacdbef8db", "", "", "Snail Against Squirrel (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac3dd22dd945724be705ddd2785487c2", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (06-15-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac53b83e1b57a601eeae9d3ce1b4a458", "Retroactive", "", "Qb (2.15) (Retroactive) (NTSC)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ac5f78bae0638cf3f2a0c8d07eb4df69", "", "", "Minesweeper (V.99) (Soren Gust) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac7c2260378975614192ca2bc3d20e0b", "Activision, David Crane", "AG-930-04, AZ-030", "Decathlon (1983) (Activision)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ac9adbd6de786a242e19d4bec527982b", "Activision, Alan Miller - Ariola", "EAG-012-04I, EAX-012, EAX-012-04B - 711 012-720", "Ice Hockey (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aca09ffea77174b148b96b205109db4d", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "acaa27d214039d89d7031609aafa55c3", "", "", "Sprite Demo 6 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "acb6787b938079f4e74313a905ec3ceb", "", "", "Chronocolor Donkey Kong (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "acb7750b4d0c4bd34969802a7deb2990", "Parker Brothers, Ed Temple", "PB5310", "Amidar (1982) (Parker Bros)", "", "Uncommon", "", "", "A", "A", "", "", "", "", "", "", "", "", "", "", "" }, - { "acb962473185d7a652f90ed6591ae13b", "Imagic, Dennis Koble", "IA3203, IX-010-04", "Atlantis (1982) (Imagic) (16K)", "AKA Lost City of Atlantis", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ace319dc4f76548659876741a6690d57", "Atari, Steve Wright", "CX2616", "Pele's Soccer (1981) (Atari)", "AKA Pele's Championship Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ad2e6bfb3b9b9b36ba8bf493ce764c49", "", "", "2600 Collison Demo 1 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ad42e3ca3144e2159e26be123471bffc", "Atari", "CX26163P", "Human Cannonball (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ad7e97c19bd25d5aa3999430845c755b", "", "", "Sprite Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ad8072675109d13fdd31a2e0403d5cff", "Funvision - Fund. International Co.", "", "Tank City (Funvision)", "AKA Thunderground", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "adb770ff70e9adf08bbb907a7eccd240", "", "", "Inv Demo 3 (2001) (Erik Mooney) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "adb79f9ac1a633cdd44954e2eac14774", "Digivision", "", "Frostbite (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "adf1afac3bdd7b36d2eda5949f1a0fa3", "Quelle - Otto Versand", "495.463 2 - 746381", "Angriff der Luftflotten (1983) (Quelle) (PAL)", "AKA Paris Attack, M.A.D.", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "adfbd2e8a38f96e03751717f7422851d", "Champ Games", "CG-01-N", "Lady Bug (NTSC)", "", "Homebrew", "", "", "", "A", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ae047e9468bda961d8e9e9d8ff52980f", "", "", "Tunnel Demo (Red Spiral) (30-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae0d4f3396cb49de0fabdff03cb2756f", "Retroactive", "", "Qb (V2.02) (PAL) (2001) (Retroactive)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ae10527840a1ac24de43730645ed508d", "Charles Morgan", "", "Planet Invaders (Charles Morgan) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae18c11e4d7ed2437f0bf5d167c0e96c", "", "", "Multi-Color Demo 3 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae2f1f69bb38355395c1c75c81acc644", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (12-23-1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ae465044dfba287d344ba468820995d7", "", "", "Inca Gold (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae4be3a36b285c1a1dff202157e2155d", "Spectravideo", "SA-210", "Master Builder (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae682886058cd6981c4b8e93e7b019cf", "Retroactive", "", "Qb (V0.12) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ae6cb335470788b94beb5787976e8818", "", "", "Mortal Kurling (02-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae83541cf4a4c0bce0adccd2c1bf6288", "", "", "Maze 003 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ae97cf8ed21f4154b4360a3cf6c95c5e", "", "", "Teleterm 2600 (John K. Harvey) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aeb104f1e7b166bc0cbaca0a968fde51", "", "", "Ms. Pac-Man (1999) (Hack)", "Hack of Ms. Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aec9b885d0e8b24e871925630884095c", "Amiga - Video Soft", "3125", "Surf's Up (1983) (Amiga) (Prototype)", "Uses the Joyboard controller", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aed0b7bd64cc384f85fdea33e28daf3b", "Atari, Alan J. Murphy, Robert C. Polaro", "CX2666", "RealSports Volleyball (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "aed82052f7589df05a3f417bb4e45f0c", "Atari, Warren Robinett - Sears", "CX2606 - 6-99825, 49-75112", "Slot Racers (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "af6ab88d3d7c7417db2b3b3c70b0da0a", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "af6f3e9718bccfcd8afb421f96561a34", "Atari, Tod Frye", "CX2695", "Xevious (01-18-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "afb3bc45c6a82739cc82582127cd96e6", "Atari - Sculptured Software, Adam Clayton", "CX26151, CX26151P", "Dungeon (11-22-1985) (Atari) (Prototype)", "Dark Chambers Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "afc194534c1b346609ef05eff6d3cef6", "Jone Yuan Telephonic Enterprise Co", "", "Boxing (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "afd2cf258d51ae4965ee21abba3627ab", "Atari - CCW, Christopher H. Omarzu", "CX26104", "Big Bird's Egg Catch (12-08-1982) (Atari) (Prototype)", "Uses the Keypad Controller", "Prototype", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, - { "afe4eefc7d885c277fc0649507fbcd84", "Atari", "CX26163P", "Ant Party (32 in 1) (1988) (Atari) (PAL)", "AKA Cosmic Swarm", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "afe776db50e3378cd6f29c7cdd79104a", "Thomas Jentzsch", "", "Bobby is Going Home (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "23", "245", "", "" }, - { "afe88aae81d99e0947c0cfb687b16251", "Apollo - Games by Apollo", "AP-2006", "Infiltrate (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "aff8cba0f2d2eb239953dd7116894a08", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (3 of 3) (1982) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b00088418fc891f3faa3d4ddde6ace94", "", "", "Unknown Title (bin00007 (200102)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b00a8bc9d7fe7080980a514005cbad13", "K-Tel Vision", "", "Vulture Attack (1982) (K-Tel Vision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b00e8217633e870bf39d948662a52aac", "Konami", "RC 102-X 02", "Marine Wars (1983) (Konami)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b049fc8ac50be7c2f28418817979c637", "Activision - Imagineering, Dan Kitchen, David Lubar", "EAK-048-04, EAK-048-04B", "River Raid II (1988) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b06050f686c6b857d0df1b79fea47bb4", "Activision", "AIZ-001", "Moonsweeper (1988) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b061e98a4c854a672aadefa233236e51", "Atari, Warren Robinett", "CX2620, CX2620P", "Basic Programming (1979) (Atari) (PAL)", "Uses Keypad Controllers", "Common", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, - { "b095009004df341386d22b2a3fae3c81", "", "", "Sub-Scan (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b09b79c9628878be051e89f7f1e77378", "Activision, Larry Kaplan, David Crane - Ariola", "EAG-010, PAG-010 - 711 010-720", "Kaboom! (1981) (Activision) (PAL) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "b0ba51723b9330797985808db598fc31", "Atari, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "b0c47e426c7f799aee2c40422df8f56a", "", "", "Space Treat (PAL) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b0c9cf89a6d4e612524f4fd48b5bb562", "Atari - GCC", "CX2663", "Combat Two (1982) (Atari) (Prototype)", "AKA Super Combat", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b0e1ee07fbc73493eac5651a52f90f00", "Colin Hughes", "", "Tetris 2600 (Colin Hughes)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b12a7f63787a6bb08e683837a8ed3f18", "Imagic, Rob Fulop", "720000-200, 720101-1B, 720101-1C, IA3200, IA3200C, IX-006-04", "Demon Attack (1982) (Imagic) [fixed]", "AKA Death from Above", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b1339c56a9ea63122232fe4328373ac5", "Goliath - Hot Shot", "83-215", "Dream Flight (1983) (Goliath) (PAL)", "AKA Nightmare", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "b1486e12de717013376447ac6f7f3a80", "Spectravideo, Mark Turmell, Quelle", "SA-217, SA-217C - 413.723 8", "Gas Hog - Piraten Schiff (1983) (Spectravideo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b15026b43c6758609667468434766dd8", "Retroactive", "", "Qb (0.06) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b16cd9784589219391c839cb68c47b9c", "Video Soft, Jerry Lawson, Dan McElroy", "", "Golf Diagnostic (1983) (Video Soft) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b17b9cc4103844dcda54f77f44acc93a", "Quelle", "377.943 6", "Stopp die Gangster (1983) (Quelle) (PAL)", "AKA Gangster Alley", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b1a6c96e9093352106bc335e96caa154", "Joe Grand", "", "SCSIcide Pre-release 1 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "38", "", "", "" }, - { "b1b20536aef4eed9c79dc5804f077862", "", "", "Euchre (NTSC) (09-11-2001) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b1c14b5ac896400cc91c8e5dd67acb59", "", "", "River Raid (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b1d1e083dc9e7d9a5dc1627869d2ade7", "CCE", "C-1004", "Mario's Bros. (1983) (CCE)", "AKA Mario Bros.", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b1e2d5dc1353af6d56cd2fe7cfe75254", "Atari - Axlon, Steve DeFrisco", "CX26171", "MotoRodeo (1991) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b1fd0b71de9f6eeb5143a97963674cb6", "", "", "Multi-Color Demo 7 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b227175699e372b8fe10ce243ad6dda5", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [a1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b23ebf427713dd0198b7ef47dbd07ef4", "Jone Yuan Telephonic Enterprise Co", "", "Sky Diver (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b24f6a5820a4b7763a3d547e3e07441d", "CCE", "C-823", "Demon Attack (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b26506fbf411009e5e3f7365f442960e", "Atari, Alan Miller", "CX2642", "Hunt & Score (1978) (Atari) (PAL) (4K)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "b2737034f974535f5c0c6431ab8caf73", "CBS Electronics, Richard K. Balaska Jr., Andy Frank, Stuart Ross", "4L 2520 5000", "Tunnel Runner (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b2761efb8a11fc59b00a3b9d78022ad6", "Atari, Bob Whitehead - Sears", "CX2651 - 99805, 49-75602", "Blackjack (1977) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, - { "b290c2b139344fcff5b312c71b9ac3b2", "Atari", "CX26163P", "UFO (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b29359f7de62fed6e6ad4c948f699df8", "Goliath", "3", "Phantom Tank (1983) (Goliath) (PAL)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b2a6f31636b699aeda900f07152bab6e", "", "", "Space Instigators (Public Release 2) (06-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b2d1e63f7f22864096b7b6c154151d55", "Fabrizio Zavagli", "", "Bounce! (17-03-2003) (Fabrizio Zavagli)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b2d3bcee001cff2bd2d8a21b2cb55109", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691", "Joust (08-09-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b2d5d200f0af8485413fad957828582a", "Atari - Bobco, Robert C. Polaro", "CX26155P", "Sprint Master (1988) (Atari) (PAL)", "AKA Sprint 88, Sprint 2000", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b2f0d7217147160b2f481954cedf814b", "", "", "Marquee Drawer (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b3017e397f74efd53caf8fae0a38e3fe", "Retroactive", "", "Qb (2.12) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b311ab95e85bc0162308390728a7361d", "Parker Brothers - Roklan", "PB5080", "Gyruss (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b31dc989f594764eacfa7931cead0050", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (2 of 3) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b31f178aa0d569cccac7959f84e0a724", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (07-13-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b3203e383b435f7e43f9492893c7469f", "Gameworld", "133-003", "Sssnake (1983) (Gameworld) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b36040a2f9ecafa73d835d804a572dbf", "Digitel", "", "Pac Man (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b37f0fe822b92ca8f5e330bf62d56ea9", "Xonox - K-Tel Software - Beck-Tech, Steve Beck", "6210, 7210, 06003. 99001", "Spike's Peak (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b392964e8b1c9c2bed12246f228011b2", "", "", "Name This Game (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b4030c38a720dd84b84178b6ce1fc749", "M Network - APh Technological Consulting, Kevin Miller", "MT5687", "International Soccer (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b40dea357d41c5408546e4e4d5f27779", "Digivision", "", "Spider Fighter (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b41fdd4a522e1d5a2721840028684ac2", "", "", "Green and Yellow Number 1 Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b42df8d92e3118dc594cecd575f515d7", "Mystique - American Multiple Industries", "1003", "Burning Desire (1982) (Mystique) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b438a6aa9d4b9b8f0b2ddb51323b21e4", "Telegames", "5861 A030", "Bogey Blaster (1988) (Telegames) (PAL)", "AKA Air Raiders", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b451307b8b5e29f1c5f2cf064f6c7227", "", "", "Demo Image Series #6 - Mario (Fixed) (26-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b49331b237c8f11d5f36fe2054a7b92b", "", "", "Condor Attack (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b4a4c87840613f102acb5b3a647d0a67", "", "", "Mobile 48 Sprite Kernel (04-01-2003) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b4daedb43511521db9036d503b3c1b69", "", "", "Sokoban (01-01-2003) (Adam Wozniak) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b4e2fd27d3180f0f4eb1065afc0d7fc9", "Avalon Hill, Jean Baer, Bill 'Rebecca Ann' Heineman, William O. Sheppard", "5002002", "London Blitz (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b4f05e544834d0238a0c263491775edf", "Starpath Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Suicide Mission (Preview) (1982) (Starpath) (PAL)", "AKA Meteoroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b4f31ea8a6cc9f1fd4d5585a87c3b487", "Mystique - American Multiple Industries, Joel H. Martin", "", "Beat 'Em & Eat 'Em (1982) (Mystique) (PAL)", "Uses the Paddle Controller (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, - { "b4f87ce75f7329c18301a2505fe59cd3", "Videospielkassett - Ariola", "PGP232", "Autorennen (Ariola) (PAL)", "AKA Grand Prix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b50ae55aac93fbed258bc5a873edd2cb", "Recompile", "", "E.T. The Extra-Terrestrial (Recompile) (Hack)", "www.neocomputer.org/projects/et", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b5110f55ed99d5279f18266d001a8cd5", "Eckhard Stolberg", "", "Auto-mobile Demo (2001) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b56264f738b2eb2c8f7cf5a2a75e5fdc", "Atari - GCC, John Allred, Douglas B. Macrae, Betty Ryan Tylko", "CX2694, CX2694P", "Pole Position (1983) (Atari) (PAL)", "AKA RealSports Driving", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b5657d4c1c732fbb6af150668464247f", "Arcadia Corporation, Stephen H. Landrum", "AR-4400", "Excalibur (Dragonstomper Beta) (1982) (Arcadia) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b59417d083b0be2d49a7d93769880a4b", "Pet Boat", "", "Donkey Kong (1983) (Pet Boat) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b59fd465abf76f64c85652ff29d5952d", "VentureVision, Dan Oliver", "", "Innerspace (1983) (VentureVision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b5a1a189601a785bdb2f02a424080412", "Imagic, Dennis Koble", "720021-1A, IA3410", "Shootin' Gallery (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b5cb9cf6e668ea3f4cc2be00ea70ec3c", "CommaVid, Irwin Gaines - Ariola", "CM-005 - 712 005-720", "Mines of Minos (1982) (CommaVid) (PAL)", "AKA Im Labyrinth des Roboters", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b5cdbab514ea726a14383cff6db40e26", "Video Gems", "VG-04", "Mission Survive (1983) (Video Gems) (PAL) [a]", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b5efe0271d2214e4d5dc798881486884", "Atari - Axlon, Steve DeFrisco", "CX26192", "Klax (06-14-1990) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b6166f15720fdf192932f1f76df5b65d", "Amiga - Video Soft", "3130", "Off Your Rocker (1983) (Amiga) (Prototype)", "Uses the Amiga Joyboard", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b64426e787f04ff23ee629182c168603", "Dynacom", "", "Plaque Attack (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b65d4a38d6047735824ee99684f3515e", "Dynacom", "", "MegaBoy (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b676a9b7094e0345a76ef027091d916b", "Thomas Jentzsch", "", "Mission Survive (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "A", "", "", "", "", "", "", "", "", "220", "YES", "" }, - { "b6812eaf87127f043e78f91f2028f9f4", "Simage", "", "Eli's Ladder (1984) (Simage)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b6821ac51c4c1dcb283f01be2f047dc1", "", "", "Rubik's Cube 3D Demo (25-11-2002) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b6960be26bee87d53ba4e2e71cfe772f", "", "", "3-D Corridor (Spiral Words) (31-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b6d52a0cf53ad4216feb04147301f87d", "Imagic, Michael Greene", "720055-1A, IA3312", "No Escape! (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b6e40bce550672e5495a8cdde7075b8b", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1 of 3) (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b702641d698c60bcdc922dbd8c9dd49c", "Atari, Ian Shepard", "CX26163P", "Space War (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b719ada17771a8d206c7976553825139", "Ron Corcoran", "", "DUP Space Invaders (Ron Corcoran) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b731d35e4ac6b3b47eba5dd0991f452f", "", "", "Rubik's Cube 3D Demo (Final) (08-01-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b7345220a0c587f3b0c47af33ebe533c", "Quelle", "176.433 1", "Landungskommando (1983) (Quelle) (PAL)", "AKA Strategy X", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b76fbadc8ffb1f83e2ca08b6fb4d6c9f", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b77468d586957d1b7fb4cccda2684f47", "Atari", "CX26163P", "Boxing (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b7903268e235310dc346a164af4c7022", "Thomas Jentzsch", "", "Cat Trax (Thomas Jentzsch) (PAL60)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "", "PAL60", "30", "", "YES", "" }, - { "b79fe32320388a197ac3a0b932cc2189", "Imagic, Bob Smith", "13207, EIZ-001-04I", "Moonsweeper (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b7a7e34e304e4b7bc565ec01ba33ea27", "Parker Brothers", "PB5820", "Mr. Do!'s Castle (1984) (Parker Bros) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b7b1d3ce07e75976c43a2dca3866237e", "Atari", "CX26163P", "Freeway Chicken (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b7e459d5416eeb196aaa8e092db14463", "", "", "Push (V0.02) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b7f184013991823fc02a6557341d2a7a", "", "", "Blue Rod Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b80d50ecee73919a507498d0a4d922ae", "20th Century Fox Video Games - Sirius Software, David Lubar", "11008", "Fantastic Voyage (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b816296311019ab69a21cb9e9e235d12", "Atari, Bob Whitehead - Sears", "CX2652 - 6-99816, 49-75151", "Casino (1979) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, - { "b822fba8b7c8a97ea4e92aeb2c455ef9", "Dactari", "", "Freeway (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b83579c4450fcbdf2b108903731fa734", "", "", "Mission 3,000 A.D. (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b83df1f32b4539c324bdf94851b4db55", "Angelino", "", "One On One by Angelino (Basketball Hack)", "Hack of Basketball (1978) (Atari)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b86552198f52cfce721bafb496363099", "Apollo, Tim Martin", "AP-2007", "Kyphus (1982) (Apollo) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b86a12e53ab107b6caedd4e0272aa034", "Funvision - Fund. International Co.", "", "Treasure Hunting (Funvision)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b879e13fd99382e09bcaf1d87ad84add", "Zellers", "", "Time Warp (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b8865f05676e64f3bec72b9defdacfa7", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b897f9e3f939b9f21566d56db812a84e", "Atari, Jim Huether", "CX26163P", "Flag Capture (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b8ed78afdb1e6cfe44ef6e3428789d5f", "Data Age, J. Ray Dettling", "112-007", "Bermuda Triangle (1983) (Data Age)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b9232c1de494875efe1858fc8390616d", "Panda", "110", "Harbor Escape (1983) (Panda)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b9336ed6d94a5cc81a16483b0a946a73", "Atari, Jerome Domurat, Michael Sierchio", "CX2667, CX2667P", "RealSports Soccer (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "b958d5fd9574c5cf9ece4b9421c28ecd", "Piero Cavina", "", "Multi-Sprite Game V1.0 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b95a6274ca0e0c773bfdc06b4c3daa42", "Paul Slocum", "", "3-D Corridor (29-03-2003) (Paul Slocum)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b98cc2c6f7a0f05176f74f0f62c45488", "Spectravideo", "SV-010", "CompuMate (1983) (Spectravideo)", "", "", "", "CM", "", "", "", "", "COMPUMATE", "COMPUMATE", "", "", "", "", "", "YES", "" }, - { "b9b4612358a0b2c1b4d66bb146767306", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "23", "245", "", "" }, - { "b9d1e3be30b131324482345959aed5e5", "Activision, Rex Bradford", "", "Kabobber (07-25-1983) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "b9f6fa399b8cd386c235983ec45e4355", "Parker Brothers, John Emerson", "931511", "Action Force (1983) (Parker Bros) (PAL)", "AKA G.I. Joe - Cobra Strike", "", "", "", "", "", "", "", "PADDLES", "", "", "01 55", "", "", "", "", "" }, - { "b9f9c0fed0db08c34346317f3957a945", "SuperVision", "405, 427, 806, 808, 813, 816", "Chopper Command (SuperVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ba257438f8a78862a9e014d831143690", "U.S. Games Corporation - JWDA, Todd Marshall, Robin McDaniel, Henry Will IV", "VC2002", "Squeeze Box (1983) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ba317f83cdfcd58cbc65aac1ccb87bc5", "", "", "Jammed (2001) (XYPE) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ba3a17efd26db8b4f09c0cf7afdf84d1", "Activision, Larry Miller", "AX-021", "Spider Fighter (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "ba3b0eebccc7b791107de5b4abb671b4", "", "", "Thrust (V0.9) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ba657d940a11e807ff314bba2c8b389b", "Activision, John Van Ryzin", "AG-038-04", "Cosmic Commuter (1984) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bac28d06dfc03d3d2f4a7c13383e84ee", "Supergame", "", "Demon Attack (Supergame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bae1a23f9b6acdadf465cfb330ba0acb", "Atari - GCC, Doug Macrae", "CX2677", "Dig Dug (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bae66907c3200bc63592efe5a9a69dbb", "Spectravision - Spectravideo - Quelle", "SA-201 - 412.783 3", "Gangster Alley (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "baf4ce885aa281fd31711da9b9795485", "Atari, Douglas Neubauer", "CX26176", "Radar Lock (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb07f917611cde42b7d83746ee27147d", "", "", "Star Fire - Warping!! (13-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb18189021d58362d9e4d317cd2e28b7", "Activision, David Crane - Ariola", "EAG-001, PAG-001, EAG-001-04B, EAG-001-04I - 711 001-715", "Dragster (1980) (Activision) (PAL) (4K)", "AKA Dragster Rennen", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb5049e4558daade0f87fed69a244c59", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [no copyright]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "bb579404924c40ca378b4aff6ccf302d", "", "", "Lightbulb Lightens, The (PD) (Non Functional)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb6a5a2f7b67bee5d1f237f62f1e643f", "", "", "Demo Image Series #5 - Animegirl (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb745c893999b0efc96ea9029e3c62ca", "Play Video", "", "Planet Patrol (1982) (Play Video) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb756aa98b847dddc8fc170bc79f92b2", "", "", "Golf (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bb9f06b288b5275bc0d38b6731b2526a", "", "", "Star Fire - Meteor Dance 2 (18-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bbf8c7c9ed280151934aabe138e41ba7", "Amiga", "1130", "Power Play Arcade Video Game Album V (1984) (Amiga) (Prototype)", "Mogul Maniac, Surf's Up, Off Your Rocker, S.A.C. Alert", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc3057a35319aae3a5cd87a203736abe", "CCE", "C-845", "Time Warp (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc33c685e6ffced83abe7a43f30df7f9", "Dynacom", "", "Seaquest (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc4cf38a4bee45752dc466c98ed7ad09", "Atari, Douglas Neubauer, Mimi Nyden", "CX26136", "Solaris (1986) (Atari) (PAL)", "AKA Universe, Star Raiders II, The Last Starfighter", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc526185ad324241782dc68ba5d0540b", "", "", "Dodge Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc5389839857612cfabeb810ba7effdc", "Atari, Tod Frye", "CX2671", "SwordQuest - WaterWorld (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc6432cbed32c695658514c4eb41d905", "Manuel Polik", "", "Star Fire (MP) (2002) (PD)", "Won't work with Stella < V1.2", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc703ea6afb20bc089f04d8c9d79a2bd", "", "", "Gunfight 2600 - Not mergeable with Colbert wizardry... (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bc97d544f1d4834cc72bcc92a37b8c1b", "", "", "Sky Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bcb31f22856b0028c00d12f0e4c0a952", "Canal 3 - Intellivision", "", "Thunderground (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bccb4e2cfad5efc93f6d55dc992118ce", "Activision, Carol Shaw", "AX-020, AX-020-04", "River Raid (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bce4c291d0007f16997faa5c4db0a6b8", "Quelle", "292.651 7", "Weltraumtunnel (1983) (Quelle) (PAL)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bce93984b920e9b56cf24064f740fe78", "Atari", "CX26163P", "Checkers (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bcef7880828a391cf6b50d5a6dcef719", "Rainbow Vision - Suntek", "SS-009", "Bermuda, The (Rainbow Vision) (PAL)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bd1bd6f6b928df17a702def0302f46f4", "", "", "Binary To Decimal Routine (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bd39598f067a1193ae81bd6182e756d1", "Telegames", "", "Night Stalker (1988) (Telegames) (PAL)", "AKA Dark Cavern", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bd430c2193045c68d1a20a018a976248", "", "", "Pac Ghost Sprite Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bda1463e02ae3a6e1107ffe1b572efd2", "Atari, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bdb4b584ddc90c9d2ec7e21632a236b6", "Atari Freak 1", "", "Nitemare at Sunshine Bowl-a-Rama (Atari Freak 1) (Hack)", "Hack of Pac-Man Jr.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bdbaeff1f7132358ea64c7be9e46c1ac", "20th Century Fox Video Games, Douglas 'Dallas North' Neubauer", "11105", "Mega Force (1982) (20th Century Fox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bdc381baf7c252c63739c5e9ed087a5c", "", "", "Vertical Ship Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bdecc81f740200780db04a107c3a1eba", "Quelle", "874.254 6", "Super-Cowboy beim Rodeo (1983) (Quelle) (PAL)", "AKA Stampede", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bdf1996e2dd64baf8eff5511811ca6ca", "Tron", "", "H.E.R.O. (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be060a704803446c02e6f039ab12eb91", "Parker Brothers, Rex Bradford, Sam Kjellman", "931501", "Star Wars - The Empire Strikes Back (1982) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be1922bd8e09d74da471287e1e968653", "Cropsy", "", "Hangman Pacman Demo (Cropsy) (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be2870a0120fd28d25284e9ccdcbdc99", "", "", "Tomb Raider 2600 [REV 01] (Montezuma's Revenge Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be35d8b37bbc03848a5f020662a99909", "Atari, Joe Decuir, Steve Mayer, Larry Wagner - Sears", "CX2601 - 99801, 6-99801, 49-75124", "Combat (1977) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be3f0e827e2f748819dac2a22d6ac823", "Puzzy - Bit Corporation", "PG202", "Space Tunnel (1982) (Puzzy)", "AKA Cosmic Corridor, Le Tunnel de L'Estace", "", "", "", "", "", "", "", "", "", "", "", "", "34", "215", "", "" }, - { "be41463cd918daef107d249f8cde3409", "", "", "Berzerk (Voice Enhanced) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be561b286b6432cac71bccbae68002f7", "", "", "Counter Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "be929419902e21bd7830a7a7d746195d", "Activision, Garry Kitchen", "AX-025, AX-025-04", "Keystone Kapers (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "becd908f9d7bb361982c3dc02d6475c6", "Kyle Pittman", "", "THX-1138 (Kyle Pittman) (Hack)", "Hack of Berserk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bedfbde71fb606601f936b5b057f26f7", "Activision, Garry Kitchen - Ariola", "EAX-025, EAX-025-04I - 711 025-725", "Keystone Kapers (1983) (Activision) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "befce0de2012b24fd6cb8b53c17c8271", "", "", "Push (V0.03) (No Illegal Opcodes) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bf52327c2197d9d2c4544be053caded1", "HES", "AG-930-04, AZ-030", "Decathlon (HES) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bf5e2079586cb307bf5eb2413e2e61af", "", "", "Star Fire - 1LK Intro (13-11-2002) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bf84f528de44225dd733c0e6a8e400a0", "CCE", "", "Demons to Diamonds (CCE)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 57", "", "", "", "", "" }, - { "bf976cf80bcf52c5f164c1d45f2b316b", "Atari, Tod Frye, Mimi Nyden", "CX2657", "SwordQuest - FireWorld (1982) (Atari) (PAL)", "AKA Adventure II, SwordQuest II - FireWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bf9ddc5dd9056633d4ac0dac8b871dfe", "", "", "Star Fire - Cockpit View (10-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bfa58198c6b9cd8062ee76a2b38e9b33", "", "", "20 Sprites at Once Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bfb73aabb2489316cd5882c3cd11d9f9", "AtariAge, Chris Walton & Thomas Jentzsch", "165", "Star Castle Arcade (2014) (AtariAge)", "", "Homebrew", "", "", "", "", "", "", "", "SAVEKEY", "", "", "", "30", "", "YES", "" }, - { "bfcabc6995ef42d0b6c06786993dc4d6", "", "", "Star Fire - Creating a Universe (09-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bff8f8f53a8aeb1ee804004ccbb08313", "", "", "Droid Demo 22 (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "bffe34516aaa3cbf5d307eab382a7e95", "", "", "Euchre (Release Candidate) (PAL) (28-09-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c00734a2233ef683d9b6e622ac97a5c8", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26133", "A-Team, The (03-30-1984) (Atari) (Prototype)", "AKA Saboteur", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c00b65d1bae0aef6a1b5652c9c2156a1", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "AUTO 60", "", "", "", "", "" }, - { "c02e1afa0671e438fd526055c556d231", "Atari", "", "A-Team (Atari) (Prototype) (PAL60)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "c032c2bd7017fdfbba9a105ec50f800e", "Activision, Charlie Heath", "", "Thwocker (04-09-1984) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c033dc1d7b6fde41b9cadce9638909bb", "", "", "Skeleton (V1.1) (06-09-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c0589bb73858924389077fa3c2e9441a", "SOLID Corp. (D. Scott Williamson)", "CX2655-014", "Star Castle 2600 (SolidCorp) [014]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c05f367fa4767ceb27abadf0066df7f4", "", "", "TomInv (31-07-2001) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c08d0cee43077d3055febb00e5745c1d", "HES - Activision", "", "Super Hit Pak - River Raid, Sky Jinks, Grand Prix, Fishing Derby, Checkers (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c0a68837c60e15d1fc5a40c9a62894bc", "Arcadia Corporation, Kevin Norman", "7 AR-4103", "Killer Satellites (1983) (Arcadia) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c0d2434348de72fa6edcc6d8e40f28d7", "Sega - Beck-Tech, Steve Beck", "010-01", "Tapper (1984) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "225", "", "" }, - { "c118854d670289a8b5d5156aa74b0c49", "Jone Yuan Telephonic Enterprise Co", "", "Skiing (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c126656df6badfa519cc63e681fb3596", "Ron Corcoran", "", "Space Invaders (2002) (Ron Corcoran) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c150c76cbde2c9b5a97eb5399d46c64f", "", "", "Unknown Title (xxx00000 (200203)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c16c79aad6272baffb8aae9a7fff0864", "U.S. Games Corporation - JWDA, Sylvia Day, Todd Marshall, Robin McDaniel, Henry Will IV", "VC2001", "Gopher (1982) (U.S. Games)", "AKA Gopher Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c16fbfdbfdf5590cc8179e4b0f5f5aeb", "", "", "Wall Break (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c17bdc7d14a36e10837d039f43ee5fa3", "Spectravision - Spectravideo", "SA-203", "Cross Force (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1a83f44137ea914b495fc6ac036c493", "Atari, Carla Meninsky", "CX2660", "Star Raiders (1982) (Atari) (PAL)", "Uses Joystick (left) and Keypad (right) Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "" }, - { "c1b038ce5cb6d85e956c5509b0e0d0d8", "", "", "Rotating Colors Demo 2 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1b1049b88bcd98437d8872d1d62ba31", "", "", "Demo Image Series #4 - Donald (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1b7aeabc3ec41556d924c8372a9ba5b", "Atari, Robert C. Polaro", "", "Dukes of Hazard (1980) (Atari) (Prototype)", "AKA Stunt Cycle", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1cb228470a87beb5f36e90ac745da26", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1e6e4e7ef5f146388a090f1c469a2fa", "Bomb - Onbase", "CA283", "Z-Tack (1983) (Bomb)", "AKA Base Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1f209d80f0624dada5866ce05dd3399", "Telegames", "", "Deadly Discs (1988) (Telegames) (PAL)", "AKA TRON - Deadly Discs", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c1fdd44efda916414be3527a47752c75", "Parker Brothers, John Emerson", "PB5920", "G.I. Joe - Cobra Strike (1983) (Parker Bros)", "Uses the Paddle (left) and Joystick (right) Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, - { "c20f15282a1aa8724d70c117e5c9709e", "Video Gems", "VG-02", "Surfer's Paradise (1983) (Video Gems) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c21450c21efb7715746e9fa87ad6f145", "Hozer Video Games", "", "Gunfight 2600 - It could've been soooo cool, but... (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c216b91f5db21a093ded6a5aaec85709", "Jone Yuan Telephonic Enterprise Co", "", "Dragster (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "c221607529cabc93450ef25dbac6e8d2", "Eckhard Stolberg", "", "Color Test (26-09-2002) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "A", "", "", "", "", "", "", "", "", "", "", "" }, - { "c225379e7c4fb6f886ef9c8c522275b4", "Video Mania", "", "Frostbite (1983) (Video Mania)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c225abfb584960efe1f359fc94b73379", "", "", "Joustpong (21-09-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c2410d03820e0ff0a449fa6170f51211", "", "", "Pac-Man (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c246e05b52f68ab2e9aee40f278cd158", "Thomas Jentzsch", "", "Star Wars - Ewok Adventure (Thomas Jentzsch) (Prototype)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, - { "c2778507b83d9540e9be5713758ff945", "", "", "Island Flyer Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c28b29764c2338b0cf95537cc9aad8c9", "", "", "Multi-Color Demo 4 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c29d17eef6b0784db4586c12cb5fd454", "Jone Yuan Telephonic Enterprise Co", "", "River Raid (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c29f8db680990cb45ef7fef6ab57a2c2", "Parker Brothers, Mike Brodie - Roklan, Paul Crowley", "PB5320", "Super Cobra (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c2a37f1c7603c5fd97df47d6c562abfa", "Roger Williams", "", "Bar-Score Demo (2001) (Roger Williams)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c2b5c50ccb59816867036d7cf730bf75", "Salu - Avantgarde Software, Michael Buetepage", "460741", "Ghostbusters II (1992) (Salu) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c2bcd8f2378c3779067f3a551f662bb7", "Activision, Bob Whitehead - Ariola", "EAG-002, EAG-002-04I, PAG-002 - 711 002-715", "Boxing (1980) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c2c7a11717e255593e54d0acaf653ee5", "", "", "Chopper Command (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c2fbef02b6eea37d8df3e91107f89950", "Champ Games", "CG-02-N", "Conquest Of Mars (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c31a17942d162b80962cb1f7571cd1d5", "Home Vision - Gem International Corp. - VDI", "VCS83112", "Sky Alien (1983) (Home Vision) (PAL)", "AKA Sky Aliem", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3205e3707f646e1a106e09c5c49c1bf", "", "", "Unknown Title (bin00003 (200206)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3472fa98c3b452fa2fd37d1c219fb6f", "Atari, Carla Meninsky - Sears", "CX2637 - 49-75158", "Dodge 'Em (1980) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c370c3268ad95b3266d6e36ff23d1f0c", "Atari, Alan Miller", "CX2641, CX2641P", "Surround (1977) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3a9550f6345f4c25b372c42dc865703", "Atari - Bobco, Robert C. Polaro", "CX2663", "Road Runner (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3aeb796fdaf9429e8cd6af6346f337e", "", "", "If It's Not One Thing It's Another (1997) (Chris Cracknell)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3bbc673acf2701b5275e85d9372facf", "Atari, Robert C. Polaro", "CX26157", "Stunt Cycle (07-21-1980) (Atari) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3e4aa718f46291311f1cce53e6ccd79", "", "", "Hangman Ghost 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3ef5c4653212088eda54dc91d787870", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c3f53993ade534b0982ca3a286c85bb5", "", "", "Full Screen Bitmap Drawing System (12-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c4060a31d61ba857e756430a0a15ed2e", "Thomas Jentzsch", "", "Pick 'n Pile (2003) (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "215", "YES", "" }, - { "c41e7735f6701dd50e84ee71d3ed1d8f", "Dynacom", "", "Spider Fighter (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c43bd363e1f128e73ba5f0380b6fd7e3", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c446288fe62c0c2737639fd788ae4a21", "", "", "Mark's Sound Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c450a285daa7a3b65188c2c3cf04fb3e", "Wizard Video Games", "007", "Halloween (1983) (Wizard Video Games) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c469151655e333793472777052013f4f", "", "", "Base Attack (Unknown) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c471b97446a85304bbac021c57c2cb49", "First Star Software, Alex Leavens, Shirley Ann Russell", "", "Boing! (1983) (First Star Software) (PAL)", "AKA Bubbles, Soap Suds, The Emphysema Game", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c47244f5557ae12c61e8e01c140e2173", "Atari - GCC, Mike Feinstein, John Allred", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c473b222b7c5308d0773326416094272", "", "", "Star Fire (28-11-2002) (MP) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c47b7389e76974fd0de3f088fea35576", "Funvision - Fund. International Co.", "", "Mighty Mouse (Funvision)", "AKA Gopher", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c482f8eebd45e0b8d479d9b71dd72bb8", "Retroactive", "", "Push (V0.03) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c49fe437800ad7fd9302f3a90a38fb7d", "Atari, Dan Hitchens, Mimi Nyden", "CX2697, CX2697P", "Mario Bros. (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c4b73c35bc2f54b66cd786f55b668a82", "Arcadia Corporation, Stephen Harland Landrum", "AR-4101", "Communist Mutants from Space (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c4bbbb0c8fe203cbd3be2e318e55bcc0", "", "", "Atlantis (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c4bc8c2e130d76346ebf8eb544991b46", "Imagic", "", "Imagic Selector ROM (1982) (Imagic) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c4d888bcf532e7c9c5fdeafbb145266a", "", "", "Space Robot (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c504a71c411a601d1fc3173369cfdca4", "Retroactive", "", "Qb (V2.02) (Stella) (2001) (Retroactive)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c5124e7d7a8c768e5a18bde8b54aeb1d", "Imagic, Rob Fulop", "720104-2A, IA3204P, EIX-008-04I", "Cosmic Ark (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c517144e3d3ac5c06f2f682ebf212dd7", "Tigervision - Teldec", "7-008 - 3.60006 VG", "Miner 2049er (1983) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c529e63013698064149b9e0468afd941", "", "", "S.I.PLIX 2 (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "c52d9bbdc5530e1ef8e8ba7be692b01e", "Atari, Robert C. Polaro", "CX26130", "Holey Moley (02-29-1984) (Atari) (Prototype)", "Uses Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "c5301f549d0722049bb0add6b10d1e09", "Atari, Carla Meninsky, Ed Riddle - Sears", "CX2611 - 99821, 49-75149", "Indy 500 (1977) (Atari)", "Uses the Driving Controllers", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "", "", "", "" }, - { "c5387fc1aa71f11d2fa82459e189a5f0", "Bit Corporation", "PG202", "Space Tunnel (1982) (BitCorp) (PAL)", "AKA Cosmic Corridor, Weltraum-Tunnel", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "c541a5f6fc23b40a211196dd78233780", "Atari, Carla Meninsky - Sears", "CX2660 - 49-75187", "Star Raiders (1981) (Atari) (Prototype)", "Uses Joystick (left) and Keypad (right) Controllers", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "" }, - { "c54b4207ce1d4bf72fadbb1a805d4a39", "Billy Eno", "", "Sniper (Feb 30) (2001) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c569e57dca93d3bee115a49923057fd7", "", "", "Pac-Space (Pac-Man Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "c58708c09ccb61625cda9d15ddcd8be6", "SPIKE the Percussionist", "", "NOIZ Invaders (SPIKE) (2002) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5930d0e8cdae3e037349bfa08e871be", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c59633dbebd926c150fb6d30b0576405", "Telegames", "5861 A030", "Bogey Blaster (1988) (Telegames)", "AKA Air Raiders", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5a76bafc4676edb76e0126fb9f0fb2d", "Charles Morgan", "", "Zero Patrol (Charles Morgan) (Hack)", "Hack of Moon Patrol", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5bab953ac13dbb2cba03cd0684fb125", "SpiceWare - Darrell Spice Jr.", "", "Stay Frosty (SpiceWare)", "Part of Stella's Stocking 2007 Xmas compilation", "Homebrew", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c5c7cc66febf2d4e743b4459de7ed868", "Atari, Jerome Domurat, Steve Woita", "CX2696", "Asterix (1983) (Atari) (PAL) [a]", "AKA Taz", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5d2834bf98e90245e545573eb7e6bbc", "CCE", "", "Snoopy and the Red Baron (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5dd8399257d8862f3952be75c23e0eb", "Atari - GCC", "CX2680", "RealSports Tennis (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c5fe45f2734afd47e27ca3b04a90213c", "Atari, Brad Stewart", "CX2622, CX2622P", "Breakout (1978) (Atari) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01", "", "", "", "", "" }, - { "c63a98ca404aa5ee9fcff1de488c3f43", "Atari", "CX26145", "Venture (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c6556e082aac04260596b4045bc122de", "Atari - GCC, Dave Payne", "CX2669", "Vanguard (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6688781f4ab844852f4e3352772289b", "Atari, Tod Frye", "CX2695", "Xevious (08-02-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c67ff409f28f44883bd5251cea79727d", "", "", "Gunfight 2600 - Music & Bugfixes 1 (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c689148ad9275667924ab334107b517e", "Jone Yuan Telephonic Enterprise Co", "", "Space Raid (Jone Yuan)", "AKA MegaMania", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c68a6bafb667bad2f6d020f879be1d11", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6ae21caceaad734987cb24243793bd5", "CCE", "", "Frostbite (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6c63da3bc2e47291f63280e057061d0", "128-in-1 Junior Console", "", "Human Cannonball (128-in-1 Junior Console) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6cedb25b7d390b580ea8edb614b168b", "", "", "Star Fire - Radar Completed (22-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6d48c6ae6461e0e82753540a985ac9e", "Ed Federmeyer", "", "Edtris (1994) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6d7fe7a46dc46f962fe8413c6f53fc9", "Parker Brothers, Mark Lesser", "PB5950", "Lord of the Rings (1983) (Parker Bros) (Prototype) [a]", "Journey to Rivendell (The Lord of the Rings I)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c6db733e0b108c2580a1d65211f06dbf", "Atari, Eric Manghise, Mimi Nyden, Joseph Tung", "CX2640", "RealSports Baseball (07-09-1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c738fc3f5aae1e8f86f7249f6c82ac81", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari) (16K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 60", "", "", "", "", "" }, - { "c73ae5ba5a0a3f3ac77f0a9e14770e73", "Starpath Corporation, Stephen H. Landrum", "9 AR-4105", "Official Frogger, The (1983) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "c745487828a1a6a743488ecebc55ad44", "Rainbow Vision - Suntek", "SS-002", "Galactic (Rainbow Vision) (PAL)", "AKA The Challenge of.... Nexar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c74bfd02c7f1877bbe712c1da5c4c194", "Thomas Jentzsch", "", "River Raid Tanks (Thomas Jentzsch) (Hack)", "Hack of River Raid", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c7600d72247c5dfa1ec1a88d23e6c85e", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (1 of 3) (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, - { "c77c35a6fc3c0f12bf9e8bae48cba54b", "Xonox - K-Tel Software - Action Graphics, John Perkins, David Thiel", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c77d3b47f2293e69419b92522c6f6647", "Panda", "101", "Tank Brigade (1983) (Panda)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c7900a7fe95a47eef3b325072ad2c232", "Larry Petit", "", "Super Congo Bongo (2003) (Larry Petit) (Hack)", "Hack of Bongo", "Hack", "", "", "", "", "", "", "", "", "", "", "", "34", "", "", "" }, - { "c7d5819b26b480a49eb26aeb63cc831e", "Bit Corporation", "PGP210", "Ice Hockey (4 Game in One Light Green) (1983) (BitCorp) (PAL)", "AKA Hockey, Hockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c7e43ad79c5e5c029d9f5ffde23e32cf", "", "", "PAL-NTSC Detector (15-11-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c7eab66576696e11e3c11ffff92e13cc", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c7f13ef38f61ee2367ada94fdcc6d206", "Parker Brothers, Joe Gaucher", "PB5370", "Popeye (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c82ec00335cbb4b74494aecf31608fa1", "CCE", "", "E.T. - The Extra-Terrestrial (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c830f6ae7ee58bcc2a6712fb33e92d55", "Atari, Michael Kosaka, Carla Meninsky", "CX2687", "Tempest (01-05-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c866c995c0d2ca7d017fef0fc0c2e268", "Retroactive", "", "Qb (2.00) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c880c659cdc0f84c4a66bc818f89618e", "Thomas Jentzsch", "", "Open Sesame (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "20", "254", "YES", "" }, - { "c8c7da12f087e8d16d3e6a21b371a5d3", "", "", "Demo Image Series #9 - Genius (28-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c8fa5d69d9e555eb16068ef87b1c9c45", "Atari", "CX26144", "Donkey Kong Junior (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c9196e28367e46f8a55e04c27743148f", "Atari", "CX26163P", "Stampede (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c92cfa54b5d022637fdcbdc1ef640d82", "Retroactive", "", "Qb (V2.05) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "c9b7afad3bfd922e006a6bfc1d4f3fe7", "Atari, Larry Kaplan - Sears", "CX2628 - 6-99842, 49-75117", "Bowling (1979) (Atari)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c9c25fc536de9a7cdc5b9a916c459110", "Activision, Mike Lorenzen", "AX-023", "Oink! (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c9d02d3cfeef8b48fb71cb4520a4aa84", "", "", "Euchre (More for less) (PAL) (22-08-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c9e721eb29c940c2e743485b044c0a3f", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "c9f6e521a49a2d15dac56b6ddb3fb4c7", "Parker Brothers, Rex Bradford", "PB5000", "Star Wars - Jedi Arena (1983) (Parker Bros)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 50", "", "", "", "", "" }, - { "ca09fa7406b7d2aea10d969b6fc90195", "Activision, Matthew L. Hubbard, Bob Whitehead", "AX-024", "Dolphin (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ca4f8c5b4d6fb9d608bb96bc7ebd26c7", "M Network - APh Technological Consulting, Hal Finney, Glenn Hightower, Peter Kaminski - INTV", "MT4317", "Adventures of TRON (1983) (M Network)", "AKA Tron Joystick", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ca50cc4b21b0155255e066fcd6396331", "Suntek", "SS-031", "UFO Patrol (Suntek) (PAL)", "AKA X'Mission", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ca53fc8fd8b3c4a7df89ac86b222eba0", "CCE", "C-812", "Pac Man (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ca54de69f7cdf4d7996e86f347129892", "PlayAround - J.H.M.", "201", "Philly Flasher (1982) (PlayAround)", "Uses the Paddle Controllers, AKA Beat 'Em & Eat 'Em", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, - { "ca7aaebd861a9ef47967d31c5a6c4555", "Atari, Bob Whitehead", "CX26163P", "Homerun (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "ca7abc774a2fa95014688bc0849eee47", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ca7f166a94eed1a349dec6d6a358bcad", "Activision, Alan Miller - Ariola", "EAG-007, EAG-007-04I, PAG-007 - 711 007-720", "Tennis (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cac9928a84e1001817b223f0cecaa3f2", "Amiga - Video Soft, Jerry Lawson, Dan McElroy", "", "3-D Genesis (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cad982c9b45bc5eff34e4ea982d5f1ca", "", "", "Song (17-02-2003) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cade123747426df69570a2bc871d3baf", "Gakken", "011", "Marine Wars (1983) (Gakken) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cae8f83c06831ec7bb6a3c07e98e9342", "Colin Hughes", "", "Tetris 2600 (Colin Hughes) [o1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cb18d8d5fbdcb1cd7bd36c5423348859", "", "", "RAM-Pong (NTSC) v1.0", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, - { "cb24210dc86d92df97b38cf2a51782da", "Video Gems", "VG-01", "Missile Control (1983) (Video Gems) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cb4a7b507372c24f8b9390d22d54a918", "ITT Family Games", "554-37 338", "Peter Penguin (1983) (ITT Family Games) (PAL)", "AKA Frisco (Pumuckl-Serie)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cb8399dc0d409ff1f531ef86b3b34953", "", "", "Demo Image Series #12 - Luigi And Mario (01-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cb9626517b440f099c0b6b27ca65142c", "Atari, Larry Kaplan - Sears", "CX2664 - 6-99818", "Brain Games (1978) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "cb96b0cf90ab7777a2f6f05e8ad3f694", "Silvio Mogno", "", "Rainbow Invaders", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cb9b2e9806a7fbab3d819cfe15f0f05a", "Parker Brothers - JWDA, Todd Marshall, Robin McDaniel, Ray Miller", "931513", "Star Wars - Death Star Battle (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cba56e939252b05df7b7de87307d12ca", "", "", "Playfield Text Demo (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cbad928e10aeee848786cc55394fb692", "", "", "Fu Kung! (V0.06a Cuttle Cart Compatible) (15-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cbb0ee17c1308148823cc6da85bff25c", "", "", "Rotating Colors Demo 1 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cbc373fbcb1653b4c56bfabba33ea50d", "CCE", "", "Super Voleyball (CCE)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cbced209dd0575a27212d3eee6aee3bc", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2003", "Racquetball (1982) (Apollo) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cbd981a23c592fb9ab979223bb368cd5", "Atari, Carla Meninsky - Sears", "CX2660 - 49-75187", "Star Raiders (1982) (Atari)", "Uses Joystick (left) and Keypad (right) Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "" }, - { "cbe5a166550a8129a5e6d374901dffad", "Atari, Carla Meninsky - Sears", "CX2610 - 49-75127", "Warlords (1981) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "AUTO 50", "", "", "", "", "" }, - { "cbeafd37f15e0dddb0540dbe15c545a4", "", "", "Black and White Fast Scolling Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc03c68b8348b62331964d7a3dbec381", "Jone Yuan Telephonic Enterprise Co", "", "Marauder (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc12581e079cd18330a89902625b8347", "Dave Neuman", "", "Space Battle (PAL)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc1939e4769d0c157ace326efcfdcf80", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (3 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc2973680c150886cce1ed8693c3aca2", "Quelle", "874.254 6", "Super-Cowboy beim Rodeo (1983) (Quelle) (PAL) (4K)", "AKA Stampede", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc3d942c6958bd16b1c602623f59e6e1", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc7138202cd8f6776212ebfc3a820ecc", "Atari - CCW, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (03-30-1983) (Atari) (Prototype)", "Uses the Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "cc724ebe74a109e39c0b2784ddc980ca", "Atari, Jerome Domurat, Dave Staugas", "CX2682", "Krull (05-27-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cc74ddb45d7bc4d04c2e6f1907416699", "", "", "Colour Display Programme (1997) (Chris Cracknell)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cca33ae30a58f39e3fc5d80f94dc0362", "", "", "Okie Dokie (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ccb56107ff0492232065b85493daa635", "Bit Corporation", "PG206 [demonstration cartridge]", "Bobby Is Going Home (1983) (BitCorp) (PAL) [demo cart]", "AKA Bobby geht Heim", "", "", "", "", "", "", "", "", "", "", "", "", "42", "", "", "" }, - { "ccb5fa954fb76f09caae9a8c66462190", "Answer Software Corporation - TY Associates", "ASC1001", "Malagai (1983) (Answer Software)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ccb807eb79b0ed0f5fdc460445ef703a", "", "", "Superman (Stunt_Cycle_Rules!) (Hack)", "Hack of Superman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ccbd36746ed4525821a8083b0d6d2c2c", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [no copyright]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cccfe9e9a11b1dad04beba46eefb7351", "", "", "Poker Squares (V0.25) (PAL) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ccd6ce508eee4b3fca67212833edcd85", "Otto Versand", "746422", "Hot Wave (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Ram It", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd032ab6764b55438a7b0bfb5e78595a", "", "", "Hangman Pac-Man 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd139ae6d09f3665ad09eb79da3f9e49", "Eric Mooney", "", "Invaders by Erik Mooney (4-24-97) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd34b3b3ef9e485201e841ba71beb253", "Bradford W. Mott", "", "Hit HMOVE At Various Cycles After WSYNC Test (Bradford W. Mott) (1998) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd38ad19f51b1048d8e5e99c86a2a655", "", "", "Demo Image Series #5 - Flag (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd399bc422992a361ba932cc50f48b65", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (Preview) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd3e26786136a4692fd2cb2dfbc1927e", "", "", "Multiple Moving Objects Demo 2 (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd4423bd9f0763409bae9111f888f7c2", "Jone Yuan Telephonic Enterprise Co", "", "River Raid (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd4ded1ede63c4dd09f3dd01bda7458c", "Future Video Games", "", "Laser Gate (Future Video Games) (PAL)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd568d6acb2f14477ebf7e59fb382292", "Videospielkassette - Ariola", "PGP235", "Fussball (Ariola) (PAL)", "AKA International Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd5af682685cfecbc25a983e16b9d833", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26133", "A-Team, The (05-08-1984) (Atari) (Prototype)", "AKA Saboteur", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cd88ef1736497288c4533bcca339f881", "Sega - Teldec", "005-10", "Buck Rogers - Planet of Zoom (1983) (Sega) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "YES", "" }, - { "cd8fa2e9f6255ef3d3b9b5a4f24a54f7", "", "", "Daredevil (V2) (Stunt_Cycle_Rules!) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "cd98be8a48ebf610c9609a688b9c57f2", "Arcadia Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Suicide Mission (1982) (Arcadia) (Prototype)", "AKA Meteoroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cd9fea12051e414a6dfe17052067da8e", "Paul Slocum", "", "Marble Craze Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "cda38714267978b9a8b0b24bee3529ae", "", "", "Space Instigators (V1.6) (17-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cdb81bf33d830ee4ee0606ee99e84dba", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (1982) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, - { "cdc1a5c61d7488eadc9aba36166b253d", "Retroactive", "", "Qb (V0.12) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cddabfd68363a76cd30bee4e8094c646", "Computer Magic - CommaVid, John Bronstein", "CM-001", "MagiCard (1981) (CommaVid)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "ce17325834bf8b0a0d0d8de08478d436", "", "", "Boring Freeway (Hack)", "Hack of Freeway", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ce243747bf34a2de366f846b3f4ca772", "Home Vision - Gem International Corp. - VDI", "", "Jacky Jump (1983) (Home Vision) (PAL)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "ce4bbe11d682c15a490ae15a4a8716cf", "", "", "Okie Dokie (Older) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ce5cc62608be2cd3ed8abd844efb8919", "Atari - Bobco, Robert C. Polaro", "CX2663", "Road Runner (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ce64812eb83c95723b04fb56d816910b", "Retroactive", "", "Qb (V2.04) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ce6c4270f605ad3ce5e82678b0fc71f8", "", "", "Vertical Rainbow Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ce82a675c773ff21e0ffc0a4d1c90a71", "", "", "Defender 2 (Genesis)", "Genesis controller (C is smartbomb)", "Hack of Defender 2", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "ce8467ae2a3a5bc88ca72a2ce44ce28c", "SOLID Corp. (D. Scott Williamson)", "CX2655-015", "Star Castle 2600 (SolidCorp) (PAL) [015]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ce89529d6e98a13ddf3d84827bbdfe68", "", "", "Kung Fu Sprite Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ce904c0ae58d36d085cd506989116b0b", "Telegames", "5687 A279", "International Soccer (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cea9f72036dc6f7af5eff52459066290", "Retroactive", "", "Qb (2.07) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cedbd67d1ff321c996051eec843f8716", "Ultravision", "1044", "Karate (1982) (Ultravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cef01595000627ee50863d4290372c27", "", "", "Many Blue Bars and Text Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cef2287d5fd80216b2200fb2ef1adfa8", "Milton Bradley Company", "4363", "Spitfire Attack (1983) (Milton Bradley)", "AKA Flight Commander)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cf0c593c563c84fdaf0f741adb367445", "Retroactive", "", "Qb (V0.05) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cf3a9ada2692bb42f81192897752b912", "", "", "Air Raiders (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cf3c2725f736d4bcb84ad6f42de62a41", "Rainbow Vision - Suntek", "SS-009", "Bermuda, The (Rainbow Vision) (PAL) [a]", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cf507910d6e74568a68ac949537bccf9", "Sega, Jeff Lorenz", "003-01", "Thunderground (1983) (Sega)", "AKA Underground", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cf63ffac9da89ef09c6c973083061a47", "CCE", "C-859", "MASH (1983) (CCE)", "AKA M.A.S.H", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cf9069f92a43f719974ee712c50cd932", "Video Gems", "VG-04", "Mission Survive (1983) (Video Gems) (PAL)", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cfad2b9ca8b8fec7fb1611d656cc765b", "Bit Corporation", "PG207", "Mission 3,000 A.D. (1983) (BitCorp) (PAL) [demo cart]", "demonstration cartridge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cfb3260c603b0341d49ddfc94051ec10", "Dactari - Milmar", "", "Boxing (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfb83a3b0513acaf8be4cae1512281dc", "Starpath Corporation", "", "Going-Up (1983) (Starpath) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfc226d04d7490b69e155abd7741e98c", "Atari, Matthew L. Hubbard", "CX26159", "Double Dunk (1989) (Atari) (PAL)", "AKA Super Basketball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfce5596a7e8ca13529e9804cad693ef", "Canal 3 - Intellivision", "", "Tennis (Canal 3) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfd6a8b23d12b0462baf6a05ef347cd8", "Activision, Larry Kaplan", "AX-006", "Bridge (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfdb4d0427a1ea8085c6bc6eb90259d8", "", "", "Gunfight 2600 - Release Candidate (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfe2185f84ce8501933beb5c5e1fd053", "", "", "Football (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfe62ed7125ff9fae99b4c8a367c0399", "Activision, Larry Miller", "AX-026, AX-026-04", "Enduro (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfee10bd7119f10b136921ced2ee8972", "", "", "Space Instigators (V1.8) (19-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cfef1a2d1f6a5ee7a5e1f43f3056f112", "", "", "Skeleton+ (05-05-2003) (Eric Ball) (NTSC)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cff1e9170bdbc29859b815203edf18fa", "Retroactive", "", "Push (V0.01) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cff578e5c60de8caecbee7f2c9bbb57b", "George Veeder", "", "Suicide Adventure (George Veeder) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "cff9950d4e650094f65f40d179a9882d", "Paul Slocum", "", "Mr. Roboto (Paul Slocum) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "cfffc4b97d01cc3e7b9f47575f7b11ec", "Xonox - K-Tel Software, Anthony R. Henderson", "99007, 6240", "Tomarc the Barbarian (1983) (Xonox) (PAL60)", "Genesis controller (B is jump and throw, C switches between players)", "Hack of Tomarc the Barbarian", "", "", "", "", "", "", "GENESIS", "", "", "", "PAL60", "", "", "", "" }, - { "d00f6f8ba89559e4b20972a478fc0370", "Spiceware", "SW-01", "Medieval Mayhem (PAL)", "", "Homebrew", "STEREO", "", "", "", "", "", "PADDLES", "PADDLES", "", "AUTO 55", "", "", "", "", "" }, - { "d010e3dfe7366e47561c088079a59439", "Retroactive", "", "Qb (V0.10) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d026716b3c5be2c951cc4c064317c524", "", "", "Fu Kung! (V0.06) (14-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0498baca989e792db4b8270a02b9624", "", "", "Pac Ghost Sprite Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d071d2ec86b9d52b585cc0382480b351", "UA Limited", "", "Cat Trax (1983) (UA Limited) (1) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d078674afdf24a4547b4b32890fdc614", "Jone Yuan Telephonic Enterprise Co", "", "Laser Blast (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d078d25873c5b99f78fa267245a2af02", "Sega - Beck-Tech, Steve Beck, Phat Ho", "006-01", "Congo Bongo (1983) (Sega) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "26", "220", "", "" }, - { "d08fccfbebaa531c4a4fa7359393a0a9", "Activision, David Crane", "", "Venetian Blinds Demo (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d090836f0a4ea8db9ac7abb7d6adf61e", "Hozer Video Games", "", "Yahtzee (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d09935802d6760ae58253685ff649268", "Telesys, Don Ruffcorn", "1006", "Demolition Herby (1983) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d09a7504ee8c8717ac3e24d263e7814d", "Activision, Matthew L. Hubbard, Bob Whitehead", "AX-024", "Dolphin (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d09f1830fb316515b90694c45728d702", "Imagic, Brad Stewart", "720105-1A, IA3400", "Fire Fighter (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0a379946ed77b1b126230ca68461333", "Ataripoll", "", "Atari Invaders (Ataripoll) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0af33865512e9b6900714c26db5fa23", "Telegames", "", "Armor Ambush (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0b26e908370683ad99bc6b52137a784", "Apollo - Games by Apollo, Larry Minor, Ernie Runyon, Ed Salvo - RCA Video Jeux", "AP-2004", "Lost Luggage (1982) (Apollo) (PAL)", "AKA La valise piegee", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0b9df57bfea66378c0418ec68cfe37f", "20th Century Fox Video Games - Sirius, Grady Ward", "11002", "Beany Bopper (1982) (20th Century Fox)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0b9f705aa5f61f47a748a66009ae2d2", "", "", "Synthcart (14-01-2002) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, - { "d0cb28e1b7bd6c7f683a0917b59f707e", "Atari, Gary Palmer", "CX2661P", "Fun with Numbers (1980) (Atari) (PAL) (4K)", "AKA Basic Math", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0cdafcb000b9ae04ac465f17788ad11", "Quelle - Otto Versand", "732.273 8 - 600273, 781644", "Lilly Adventure (1983) (Quelle) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0e15a3ce322c5af60f07343594392af", "Amiga - Video Soft", "3125", "Surf's Up (1983) (Amiga) (Prototype) (4K)", "Uses the Joyboard controller", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d0e9beb2347595c6c7d158e9d83d2da8", "Retroactive", "", "Qb (2.00) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d100b11be34a1e5b7832b1b53f711497", "", "", "Robotfindskitten2600 (26-04-2003) (Jeremy Penner) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d170317ae4c7d997a989c7d6567c2840", "Jone Yuan Telephonic Enterprise Co", "", "Stampede (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d175258b2973b917a05b46df4e1cf15d", "Suntek", "SS-032", "Walker (Suntek) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, - { "d17a671029b1532b197defca5f3649a7", "Hozer Video Games", "", "Gunfight 2600 - Limit broken again! (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d17a8c440d6be79fae393a4b46661164", "", "", "Warring Worms (Beta 3) (2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d1a1841b7f2007a24439ac248374630a", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d1a9478b99d6a55e13a9fd4262da7cd4", "U.S. Games Corporation, Garry Kitchen - Vidtec", "VC1001", "Space Jockey (1982) (U.S. Games) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d1b4075925e8d3031a7616d2f02fdd1f", "", "", "Demo Image Series #7 - Two Marios (27-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d1c3520b57c348bc21d543699bc88e7e", "Gameworld", "133-002", "Warplock (1983) (Gameworld) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "YES", "" }, - { "d1d704a7146e95709b57b6d4cac3f788", "Atari, Warren Robinett", "CX26163P", "Slot Racers (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d20e61c86ed729780feca162166912ca", "Supergame", "32", "Pitfall (1984) (Supergame)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d223bc6f13358642f02ddacfaf4a90c9", "Rainbow Vision - Suntek", "SS-003", "Pac-Kong (Rainbow Vision) (PAL)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d245e2f27c84016041e9496b66b722fe", "", "", "Gunfight 2600 - The Final Kernel (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d25018349c544320bf3fd5092ee072bc", "Activision, Larry Miller", "AX-021", "Spider Fighter (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "d28afe0517a046265c418181fa9dd9a1", "", "", "Dodge 'Em (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2901c34bb6496bb96c7bc78a9e6142a", "Greg Zumwalt", "", "Fish Revenge (2003) (Greg Zumwalt) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2c305a443dfc49e8430964d7c1bd1b7", "", "", "Star Fire - Advice on radar needed (16-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2c4f8a4a98a905a9deef3ba7380ed64", "Mythicon, Bill Bryner, Bruce de Graaf", "MA1001", "Sorcerer (1983) (Mythicon)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2c8e6aa8172b16c8aa9aae739ac9c5e", "Activision, David Crane", "08-08-1980", "Laser Blast (08-08-1980) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2c957dd7746521b51bb09fde25c5774", "Eckhard Stolberg", "", "Cubis (6K) (1997) (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2d8c4f1ea7f347c8bcc7d24f45aa338", "", "", "20 Sprites at Once Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2deddb77c8b823e4be9c57cb3c69adc", "Canal 3 - Intellivision", "C 3007", "Snoopy and the Red Baron (Canal 3)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d2f713c78a9ebba9da6d10aeefc6f20f", "Digivision", "", "Enduro (Digivision) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d3171407c3a8bb401a3a62eb578f48fb", "ZiMAG - Emag - Vidco", "GN-080", "Spinning Fireball (1983) (ZiMAG) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d326db524d93fa2897ab69c42d6fb698", "Parker Brothers, Mike Brodie - Roklan, Paul Crowley", "931505", "Super Cobra (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d339b95f273f8c3550dc4daa67a4aa94", "", "", "Laser Blast (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d341d39774277cee6a1d378a013f92ac", "Xonox, John Perkins", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "d3423d7600879174c038f53e5ebbf9d3", "U.S. Games Corporation - Western Technologies", "VC2005", "Piece o' Cake (1983) (U.S. Games)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 60", "", "", "", "", "" }, - { "d3456b4cf1bd1a7b8fb907af1a80ee15", "Avalon Hill, Duncan Scott", "5003002", "Wall Ball (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d34b933660e29c0a0a04004f15d7e160", "", "", "Multi-Color Demo 5 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d36308387241e98f813646f346e7f9f7", "King Atari", "", "Ghostbuster 2 (King Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d39e29b03af3c28641084dd1528aae05", "Funvision - Fund. Int'l Co.", "", "Spider Monster (1982) (Funvision) (PAL)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d3bb42228a6cd452c111c1932503cc03", "UA Limited", "", "Funky Fish (1983) (UA Limited) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "220", "YES", "" }, - { "d44d90e7c389165f5034b5844077777f", "Parker Brothers, Larry Gelberg", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "d45bf71871b196022829aa3b96bfcfd4", "Activision, Steve Cartwright", "AX-017, AX-017-04", "MegaMania (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d45ebf130ed9070ea8ebd56176e48a38", "Sega, Jeff Lorenz", "001-01", "Tac-Scan (1983) (Sega)", "Uses the Paddle Controllers (right only)", "", "", "", "", "", "", "YES", "PADDLES", "", "YES", "AUTO 60", "", "31", "215", "YES", "" }, - { "d47387658ed450db77c3f189b969cc00", "PlayAround - J.H.M.", "206", "Westward Ho (1982) (PlayAround) (PAL)", "AKA Custer's Revenge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d4806775693fcaaa24cf00fc00edcdf3", "Atari - Bobco, Robert C. Polaro", "CX26140, CX26140P", "Desert Falcon (1987) (Atari) (PAL)", "AKA Nile Flyer, Sphinx", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "" }, - { "d483f65468d9a265661917bae1a54f3e", "Joe Grand", "", "SCSIcide Pre-release 3 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d4942f4b55313ff269488527d84ce35c", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675, CX2675P", "Ms. Pac-Man (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d49aff83f77a1b9041ad7185df3c2277", "", "", "Space Treat (60% complete) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d4aa89e96d2902692f5c45f36903d336", "", "", "Euchre (NTSC) (Erik Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d4c590ccfb611a73b3331359700c01a3", "", "", "Sprite Movement Demo 2 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d541b20eae221a8ee321375e5971e766", "Arcadia Corporation, Stephen H. Landrum", "AR-4101", "Communist Mutants from Space (Preview) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d54cd41ecfd59e4b72d2c086152b9a75", "Amiga", "1110", "Power Play Arcade Video Game Album (1983) (Amiga) (Prototype)", "Ghost Attack, Genesis, Havoc", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5618464dbdc2981f6aa8b955828eeb4", "CCE", "C-829", "Megamania (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d563ba38151b8204c9f5c9f58e781455", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d573089534ca596e64efef474be7b6bc", "Parker Brothers, John Emerson", "931511", "Action Force (1983) (Parker Bros) (PAL) [a]", "AKA G.I. Joe - Cobra Strike", "", "", "", "", "", "", "", "PADDLES", "", "", "01 55", "", "", "", "", "" }, - { "d57913088e0c49ac3a716bf9837b284f", "Activision, Garry Kitchen", "EAZ-032", "Pressure Cooker (1983) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d57eb282d7540051bc9b5427cf966f03", "Atari Troll", "", "Custer's Viagra (Atari Troll) (Hack)", "Hack of Custer's Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d597d35c6022c590d6e75e865738558a", "", "", "Sprite Color Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5aa7472e7f2cc17e893a1a36f8dadf0", "", "", "Overhead Adventure Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5c6b81212ad86fd9542a1fedaf57cae", "", "", "Sprite Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5d2d44fb73785996ccc24ae3a0f5cef", "Robby", "", "Grand Prix (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5e17022d1ecc20fd9b53dc464c302f1", "Activision, Carol Shaw", "EAX-020", "River Raid (1982) (Activision) (SECAM)", "", "", "", "", "", "", "", "", "", "", "", "", "SECAM", "", "", "", "" }, - { "d5e27051512c1e7445a9bf91501bda09", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5e5b3ec074fff8976017ef121d26129", "Star Game", "003", "River Raid (Star Game)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d5f965c159e26a1fb49a22a47fbd1dd0", "Supergame", "", "River Raid II (Supergame)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d605ed12f4eaaaec3dcd5aa909a4bad7", "", "", "Chronocolor Frame Demo (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d61629bbbe035f45552e31cef7d591b2", "", "", "Atari Logo Demo (PD) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d62283aed0f4199adb2333de4c263e9c", "Atari, Alan J. Murphy, Nick 'Sandy Maiwald' Turner", "CX2615", "Demons to Diamonds (1982) (Atari) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 57", "", "", "", "", "" }, - { "d62d7d1a974c31c5803f96a8c1552510", "", "", "StarMaster (Unknown) (PAL)", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d632b74fea533d593af82cf16e7c5e4a", "", "", "Fu Kung! (V0.13) (01-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d65028524761ef52fbbdebab46f79d0f", "CCE", "", "Galaxian (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d65900fefa7dc18ac3ad99c213e2fa4e", "", "", "Grid and Purple Dot Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d69559f9c9dc6ef528d841bf9d91b275", "Activision, Alan Miller", "AX-016", "StarMaster (1982) (Activision)", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6a44277c3eb4f9d039185e0ecf7bfa6", "", "", "Trick (1997) (Eckhard Stolberg)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6acff6aed0f04690fe4024d58ff4ce3", "Spectravision - Spectravideo - Quelle", "SA-202 - 412.851 8", "Planet Patrol (1982) (Spectravision) (PAL) [different spaceship]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6b8beeb05e5b730084d4b8f381bbf8d", "", "", "208 in 1 Game Select ROM (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6d1ddd21e9d17ea5f325fa09305069c", "Funvision - Fund. International Co.", "", "Time Warp (1982) (Funvision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6d5dd8fd322d3cf874e651e7b6c1657", "", "", "How to Draw a Playfield (1997) (Nick Bensema) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d6dc9b4508da407e2437bfa4de53d1b2", "Bomb - Onbase", "CA283", "Z-Tack (1983) (Bomb) (PAL)", "AKA Base Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d726621c676552afa503b7942af5afa2", "Atari, Bob Whitehead", "CX26163P", "Blackjack (32 in 1) (1988) (Atari) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "63", "", "", "" }, - { "d73ad614f1c2357997c88f37e75b18fe", "Goliath", "7", "Space Tunnel (1983) (Goliath) (PAL)", "AKA Cosmic Corridor", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d74a81fcd89c5cf0bd4c88eb207ebd62", "", "", "Poker Squares (V0.00a) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d763e3a9cdcdd56c715ec826106fab6a", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, - { "d7759fa91902edd93f1568a37dc70cdb", "Atari, Robert C. Polaro", "CX26157", "Stunt Cycle (1980) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d782543818b6320e4f60d77da2b596de", "Atari", "CX26163P", "Fishing Derby (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d787ec6785b0ccfbd844c7866db9667d", "Retroactive", "", "Qb (V0.04) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d7891b0faa4c7f764482762d0ed427a5", "", "", "Bars and Text Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d79df06894e3c1585a47c2807332b319", "", "", "Star Fire - Explosions! (10-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d7b58303ec8d8c4dbcbf54d3b9734c7e", "", "", "Paddle Demo (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "", "" }, - { "d7dd56677e4ec1e6627419478a4a9668", "", "", "Shadow Keep (Fixed) (04-03-2003) (Andrew Towers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d7f5bf138cfc7feab7b8ef1534c8b477", "", "", "Eric Bergstrom's KC-135 (Radar Map) (Aaron Bergstrom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d816fea559b47f9a672604df06f9d2e3", "Atari, Gary Palmer", "CX26163P", "Fun with Numbers (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d81bb6965e6c99b3be99ffd8978740e4", "", "", "Gunfight 2600 - The Final Kernel Part 3 (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d82675ce67caf16afe5ed6b6fac8aa37", "", "", "Robot City (V0.23) (13-11-2002) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d8295eff5dcc43360afa87221ea6021f", "Spectravideo", "SA-212", "Mangia' (1983) (Spectravideo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d82c8a58098a6b46c5b81c16180354d1", "Dennis Debro", "", "Climber 5 (30-10-2002) (Dennis Debro) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d85f1e35c5445ac898746719a3d93f09", "Quelle", "731.503 9", "Tom's Eierjagd (1983) (Quelle) (PAL)", "AKA Play Farm", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d86deb100c6abed1588aa84b2f7b3a98", "Atari, Bob Whitehead - Sears", "CX2625 - 6-99827, 49-75114", "Football (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d88691c995008b9ab61a44bb686b32e4", "", "", "Warring Worms (07-02-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d89fedded0436fdeda7c3c37e2fb7cf1", "", "", "Surround (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d8acaa980cda94b65066568dd04d9eb0", "CCE", "", "Sea Hunt (CCE)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d8b2c81cea5af04f795eb3dc6573d72b", "", "", "Tunnel Demo 2 (27-03-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d8df256c0d89e494a9fb3e9abb8e44ac", "Imagic, Michael Greene", "IA3312P", "No Escape! (1982) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d8e4c8e2d210270cd1e0f6d1b4582b91", "Imagic, Mark Klein", "EIZ-003-04I", "Subterranea (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d90205e29bb73a4cdf28ea7662ba0c3c", "Thomas Jentzsch", "", "Boulderdash Demo (Brighter Version) (09-12-2002) (TJ)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d912312349d90e9d41a9db0d5cd3db70", "CCE", "C-818", "Star Voyager (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d9548ad44e67edec202d1b8b325e5adf", "Apollo - Games by Apollo, Dan Oliver - RCA Video Jeux", "AP-2002", "Space Cavern (1982) (Apollo) (PAL)", "AKA Les guerriers de l'espace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d97e3d0b4575ce0b9a6132e19cfeac6e", "Fabrizio Zavagli", "", "Space Treat (061002) (PD)", "Won't work with Stella < V1.2", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d97fd5e6e1daacd909559a71f189f14b", "M Network, Steve Crandall, Patricia Lewis Du Long", "MT4646", "Rocky & Bullwinkle (04-20-1983) (M Network) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d9ab6b67a17da51e5ad13717e93fa2e2", "", "", "Turbo (Coleco) Prototype Fake v0.1 (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d9b49f0678776e04916fa5478685a819", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "d9bd343533b61389b270c0787210943b", "Atari, Douglas 'Solaris' Neubauer", "CX26134", "Last Starfighter (1984) (Atari) (Prototype)", "Genesis controller (C switches to map mode)", "Hack of Last Starfighter (Solaris prototype)", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "d9c9cece2e769c7985494b1403a25721", "SOLID Corp. (D. Scott Williamson)", "CX2655*", "Star Castle 2600 (SolidCorp)", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "d9da2ae7c7894a29b43b3c6b79f3b7a2", "Atari, Rob Fulop", "CX2633, CX2633P", "Night Driver (1980) (Atari) (PAL) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 65", "", "", "", "YES", "" }, - { "d9fbf1113114fb3a3c97550a0689f10f", "ZiMAG - Emag - Vidco", "713-111 - GN-050", "Pizza Chef (1983) (ZiMAG) (Prototype)", "AKA Pizza Time", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da0fb2a484d0d2d8f79d6e063c94063d", "", "", "Air Raiders (1982) (Unknown) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da4e3396aa2db3bd667f83a1cb9e4a36", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da5096000db5fdaa8d02db57d9367998", "Digitel", "", "River Raid (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da6465a34d2e44d26aa9a2a0cd1bce4d", "Absolute Entertainment, Alex DeMeo", "AG-041-04", "Title Match Pro Wrestling (1987) (Absolute) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da64f33d0521d5c9958e5d2d4434ff95", "", "", "Star Fire - Return of the Starfield (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da66d75e4b47fab99733529743f86f4f", "Digitel", "", "Chopper Command (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "da732c57697ad7d7af414998fa527e75", "Atari - Glenn Axworthy", "CX26129", "Midnight Magic (1986) (Atari) (PAL)", "AKA Pinball Wizard", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "da79aad11572c80a96e261e4ac6392d0", "Salu - Ubi Soft, Dennis M. Kiss", "460673", "Pick 'n' Pile (1990) (Salu) (PAL)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "40", "256", "YES", "" }, - { "da7a17dcdaa62d6971393c0a6faf202a", "", "", "Flag Capture (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dab844deed4c752632b5e786b0f47999", "", "", "Super Challenge Baseball (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dac38b4dd3da73bb7b2e9d70c61d2b7c", "", "", "Hangman Monkey Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dac5c0fe74531f077c105b396874a9f1", "Atari - GCC", "CX2680", "RealSports Tennis (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dac762e4d01d445bdef20b7771f6570e", "Atari, Carla Meninsky, Ed Riddle - Sears", "CX2611 - 99821, 49-75149", "Indy 500 (1977) (Atari) (4K) [a]", "Uses the Driving Controllers", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "28", "", "", "" }, - { "dad2ab5f66f98674f12c92abcfbf3a20", "", "", "Blue and White Sprite Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "daeb54957875c50198a7e616f9cc8144", "20th Century Fox Video Games, Douglas 'Dallas North' Neubauer", "11005", "Mega Force (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "daef7d8e5a09981c4aa81573d4dbb380", "Adam Thornton", "", "Lord of the Rings (Adam Thornton) (Hack)", "Hack of Dark Mage", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "dafc3945677ccc322ce323d1e9930beb", "Atari", "", "A-Team (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "db1753cc702c18d3917ec7f3b0e8659f", "", "", "Frame Counter 2 (2001) (Jake Patterson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "db339aea2b65b84c7cfe0eeab11e110a", "", "", "Chronocolor Frame Demo 2 (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "db4eb44bc5d652d9192451383d3249fc", "CBS Electronics - E.F. Dreyer - VSS, Ed Salvo", "4L 2738 0000", "Mountain King (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "db5073bd75eb05f7d62a7268396d1e77", "Atari", "CX26163P", "Golf (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "db76f7a0819659d9e585f2cdde9175c7", "Xonox", "99005, 6220, 6250", "Robin Hood (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "db80d8ef9087af4764236f7b5649fa12", "M Network, Steve Crandall, Patricia Lewis Du Long", "MT4646", "Rocky & Bullwinkle (1983) (Mattel) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "db971b6afc9d243f614ebf380af0ac60", "Gammation, Robert L. Esken Jr.", "", "Gamma-Attack (1983) (Gammation)", "Uses right joystick controller", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "220", "", "" }, - { "dba2692a216cb6c262c78f8b111a813e", "", "", "Star Fire (08-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dba270850ae997969a18ee0001675821", "Greg Troutman", "", "Dark Mage (Greg Troutman) (PD) (4K)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "dbabb80e92ff18d8eecf615c0539151e", "", "", "Sprite Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dbb10b904242fcfb8428f372e00c01af", "Atari, John Dunn", "CX2631, CX2631P", "Superman (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dbc7485ad5814d466de780a3e7ed3b46", "Kyle Pittman", "", "Pink Floyd (Kyle Pittman) (PD)", "Hack of Adventures of Tron (Mattel)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dbc8829ef6f12db8f463e30f60af209f", "Data Age", "DA1001", "Encounter at L-5 (1982) (Data Age)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 50", "", "", "", "", "" }, - { "dbdaf82f4f0c415a94d1030271a9ef44", "CCE", "", "Kaboom! (CCE)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "dbdd21e1ee3d72119e8cd14d943c585b", "", "", "Slot Machine (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dc13df8420ec69841a7c51e41b9fbba5", "Atari, Mimi Nyden, Steve Woita", "CX26132", "Garfield (06-21-1984) (Atari) (Prototype)", "AKA Garfield on the Run", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dc33479d66615a3b09670775de4c2a38", "Suntek", "SS-033", "I.Q. Memory Teaser (Suntek) (PAL)", "AKA IQ 180", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dc6aa0bb21a6e66e80e75ba5edc5c0dd", "", "", "Star Fire - Kernel Done (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dc81c4805bf23959fcf2c649700b82bf", "Imagic, Michael Greene", "720055-2A, IA3312P", "No Escape! (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dc905b22de0f191a029df13eddfcabc4", "Atari, Warren Robinett", "", "Elf Adventure (05-02-83) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dca90ea1084a2fdbe300d7178ca1a138", "Imagic, Dennis Koble", "IA3000P", "Trick Shot (1982) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "dca941dab5c6f859b71883b13ade9744", "", "", "Hangman Pac-Man Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dcba0e33aa4aed67630a4b292386f405", "Retroactive", "", "Qb (V2.08) (Half Speed Version) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "dcc2956c7a39fdbf1e861fc5c595da0d", "M Network - APh Technological Consulting, David Rolfe - INTV", "MT5664", "Frogs and Flies (1982) (M Network)", "AKA Frogs 'n' Flies", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dcec46a98f45b193f07239611eb878c2", "", "", "Bars and Text Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd08e18cfee87a0e7fc19a684b36e124", "Atari - GCC, Kevin Osborn", "CX2689, CX2689P", "Kangaroo (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd0cbe5351551a538414fb9e37fc56e8", "Xonox - K-Tel Software - Product Guild, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd0de0f61af2a2a4878e377b880a3933", "SOLID Corp. (D. Scott Williamson)", "CX2655-013", "Star Castle 2600 (SolidCorp) [013]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "dd10b5ee37fdbf909423f2998a1f3179", "", "", "Space Instigators (V1.9) (21-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd1422ffd538e2e33b339ebeef4f259d", "Atari, Tod Frye", "", "Red Vs. Blue (1981) (Atari) (Prototype)", "RealSports Football Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd17711a30ad60109c8beace0d4a76e8", "", "", "Karate (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "dd4f4e0fbd81762533e39e6f5b55bb3a", "", "", "Turbo WIP (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd7598b8bcb81590428900f71b720efb", "Xonox - K-Tel Software - Computer Magic", "99005, 6220, 6250", "Robin Hood (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "dd7884b4f93cab423ac471aa1935e3df", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "dd8a2124d4eda200df715c698a6ea887", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (3 of 3) (1982) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dd92d6ad50976f881d86b52d38616118", "SpkSoft", "", "River Raid (SpkSoft) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dda23757407c4e217f64962c87ad0c82", "Atari Freak 1", "", "Nitemare at Sunshine Bowl-a-Rama (Atari Freak 1) (Hack) [a]", "Hack of Pac-Man Jr.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ddd1efc1862cd3eb3baf4cba81ff5050", "", "", "Max3 (2001) (Maxime Beauvais) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de0173ed6be9de6fd049803811e5f1a8", "Xonox - K-Tel Software - Product Guild, Anthony R. Henderson", "99008, 6240", "Motocross Racer (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de07e9cb43ad8d06a35f6506e22c62e9", "", "", "Oh No! (Version 4) (22-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de1a636d098349be11bbc2d090f4e9cf", "", "", "Pressure Gauge (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de1e9fb700baf8d2e5ae242bffe2dbda", "Activision - Imagineering, Mike Reidel", "EAK-043-04I", "Commando (1988) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de24f700fd28d5b8381de13abd091db9", "CCE", "", "Plaque Attack (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de29e46dbea003c3c09c892d668b9413", "Coleco - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen", "4L1717, 4L1718, 4L1719, 4L2277", "Carnival (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de3d0e37729d85afcb25a8d052a6e236", "Spectravision - Spectravideo", "SA-204", "Tapeworm (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "de4436eaa41e5d7b7609512632b90078", "Activision, David Crane", "AX-014, AX-014-04", "Grand Prix (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de5aab22e5aba5edcb29a3e7491ff319", "Star Game", "001", "Donkey Kong (Star Game)", "AKA Inca Gold", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "de61a0b171e909a5a4cfcf81d146dbcb", "Rainbow Vision - Suntek", "SS-005", "Tom Boy (Rainbow Vision) (PAL)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de62f8a30298e2325249fe112ecb5c10", "CCE", "C-810", "Enduro (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de78b3a064d374390ac0710f95edde92", "Bomb - Onbase", "CA281", "Assault (1983) (Bomb)", "AKA Sky Alien", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "de7a64108074098ba333cc0c70eef18a", "", "", "Nuts (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "37", "", "", "" }, - { "de7bca4e569ad9d3fd08ff1395e53d2d", "Thomas Jentzsch", "", "Thrust (V1.22) (2000) (TJ)", "Won't work with Stella < V1.2, supports Booster Grip", "New Release", "", "", "", "", "", "", "BOOSTERGRIP", "", "", "", "", "", "", "", "" }, - { "de8443ff47283e7b274a7838cb071fb6", "Atari, Lou Harp", "CX26122", "Sinistar (01-04-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dea0ade296f7093e71185e802b500db8", "CCE", "", "Fishing Derby (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "deb39482e77f984d4ce73be9fd8adabd", "Activision, David Lubar", "AK-048-04", "River Raid II (1988) (Activision) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ded26e1cb17f875a9c17515c900f9933", "", "", "Space Treat (29-12-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df12953b919844dad2070ed2e70c9fa2", "Amiga - Video Soft", "3135", "S.A.C. Alert (1983) (Amiga) (Prototype) (PAL)", "Uses Joyboard", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df2745d585238780101df812d00b49f4", "Bit Corporation", "PG202", "Space Tunnel (1982) (BitCorp)", "AKA Cosmic Corridor, Weltraum-Tunnel", "", "", "", "", "", "", "", "", "", "", "", "", "", "222", "", "" }, - { "df3e6a9b6927cf59b7afb626f6fd7eea", "", "", "Tuby Bird (208 in 1) (Unknown) (PAL)", "AKA Dolphin", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df40af244a8d68b492bfba9e97dea4d6", "Franklin Cruz", "", "Asteroids 2 (Franlin Cruz) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "df5cc5cccdc140eb7107f5b8adfacda1", "Cracker Jack Productions", "", "Lumberman (Cracker Jack) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "df62a658496ac98a3aa4a6ee5719c251", "Atari, Tom Reuterdahl - Sears", "CX2626 - 6-99829, 49-75116", "Miniature Golf (1979) (Atari)", "AKA Arcade Golf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df6a28a89600affe36d94394ef597214", "Apollo - Games by Apollo, Dan Oliver", "AP-2002", "Space Cavern (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df6a46714960a3e39b57b3c3983801b5", "Puzzy - Bit Corporation", "PG201", "Sea Monster (1982) (Puzzy) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df753cb87d3af4d03f694ab848638108", "CBS Electronics, Bob Curtiss", "4L1845, 4L1852, 4L1853, 4L1854", "Solar Fox (1983) (CBS Electronics) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "df95e4af466c809619299f49ece92365", "Atari - CCW, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (06-03-1983) (Atari) (Prototype) (PAL)", "Uses Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "dfad86dd85a11c80259f3ddb6151f48f", "HES - Imagineering, David Lubar", "535", "My Golf (1990) (HES) (PAL) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dfafa3fa58f5cc3f0342cca475df6095", "", "", "Space Treat (V1.1 Beta) (24-12-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dfc03ef371cf5163f54c50d8ee73c8cf", "Atari, Gary Palmer", "CX2661", "Fun with Numbers (1980) (Atari) (4K)", "AKA Basic Math", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dfc3dbbb39f05d7dd8ee3ac987478970", "", "", "Imagic Selector ROM (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dfcdd6f593bb7b05dbc2e8e1fc6ee0de", "", "", "Gunfight 2600 - Scenarios complete (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dfe034297200dff672df9533ed1449a9", "", "", "Sprite Movement Demo 1 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "dfe6aa7443bb813cefa35a4cf4887422", "", "", "This Planet Sucks (Greg Troutman) [a1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "dff33523ccd2fdc8912e84cab8e0d982", "", "", "Fu Kung! (V0.03) (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e01e00504e6d4b88fa743c0bbe8a96e5", "", "", "Qb (Special Edition, some bugfixes) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e020f612255e266a8a6a9795a4df0c0f", "Telegames - VSS", "7062 A305", "Universal Chaos (1988) (Telegames) (PAL)", "AKA Targ", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e02156294393818ff872d4314fc2f38e", "Sancho - Tang's Electronic Co.", "TEC005", "Dice Puzzle (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e0221c95aa657f5764eeeb64c8429258", "", "", "Tomb Raider 2600 [REV 02] (Montezuma's Revenge Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e03b0b091bea5bc9d3f14ee0221e714d", "CBS Electronics, Bob Curtiss", "4L1852, 4L1853, 4L1854, 4L1855", "Solar Fox (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e040df95a055b18ebdb094e904cb71b2", "", "", "Score Demo (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e04f1c1e4401d584d3f4343410a5bcc4", "Wizard Video Games - MicroGraphic Image, Robert Barber, Tim Martin", "007", "Halloween (1983) (Wizard Video Games) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e0b24c3f40a46cda52e29835ab7ad660", "Quelle - Otto Versand", "626.502 9 - 746381", "Top Gun (1983) (Quelle) (PAL)", "AKA Air Raiders", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e0cf2dcc4c1348c468f5bb1e421c9164", "", "", "Invader Sprites in a Line Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e0de3773f5b867795db557be7b8a703e", "", "", "Boulderdash (13 Blocks Wide) (02-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e0eff071f578ecf19edc2ab276644e46", "", "", "Gas Gauge Demo (2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1029676edb3d35b76ca943da7434da8", "Atari, Robert C. Polaro, Alan J. Murphy - Sears", "CX2609 - 49-75186", "Defender (10-30-1981) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e10bf1af6bf3b4a253c5bef6577fe923", "Rob Kudla", "", "Space Invaders (1978) (Atari) [h1]", "Hack of Space Invaders (Atari)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e10d2c785aadb42c06390fae0d92f282", "Parker Brothers, Dawn Stockbridge", "PB5910", "Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "225", "", "" }, - { "e1143b72a30d4d3fee385eec38b4aa4d", "", "", "Word Zapper (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e12e32dee68201b6765fcd0ed54d6646", "Atari, Larry Kaplan", "CX2612, CX2612P", "Street Racer (1977) (Atari) (PAL)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 75", "", "", "", "", "" }, - { "e13818a5c0cb2f84dd84368070e9f099", "CCE", "C-839", "Misterious Thief, A (1983) (CCE)", "AKA A Mysterious Thief", "", "", "", "", "", "", "", "", "", "", "", "", "", "216", "YES", "" }, - { "e13c7627b2e136b9c449d9e8925b4547", "Atari, Alan Miller - Sears", "CX2624 - 6-99826, 49-75113", "Basketball (1978) (Atari) (4K)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1486c7822c07117b4f94a32e5ed68c1", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (06-14-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e14dc36b24fe22c04fa076e298f2e15f", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision) (16K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "e14feddeb82f5160ed5cf9ca4078e58d", "", "", "SpaceMaster X-7 (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e150f0d14f013a104b032305c0ce23ef", "Spectravision - Spectravideo", "SA-205", "China Syndrome (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e15b5525cf8f77297b322838df8d999c", "", "", "Sprite Demo 0 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e171558c51bb3bac97bfa79fa2c1a19c", "", "", "Warring Worms (Tim Strauss Edition) (20-12-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e17699a54c90f3a56ae4820f779f72c4", "Quelle", "465.302 8", "Vogel Flieh (1983) (Quelle) (PAL)", "AKA Dolphin", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e18abe87035379c56b435bfe8175077b", "Grimlock", "", "Rumble 2600 (Grimlock) (Hack)", "Hack of Mario Bros.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1a51690792838c5c687da80cd764d78", "20th Century Fox, John Russell", "", "Alligator People (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1b90f1e01b1a316d7bbf141525cc00e", "", "", "Sky Jinks (Unknown) (PAL) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1d5c8213e82820128fa9c4775f1e166", "Jess Ragan", "", "Jungle King (2003) (Jess Ragan) (Hack)", "Hack of Jungle Hunt", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1d79e4e7c150f3861256c541ec715a1", "", "", "Space Jockey (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1e09e2f280e8e142121a377d0dc1b46", "Thomas Jentzsch", "", "Thrust (V1.21) (2000) (TJ)", "Won't work with Stella < V1.2, bugfixed", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1efe2ef7664bb6758b1a22ff8ea16a1", "Dynacom", "", "Enduro (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e1f88da6da8a7d521ca1dcbf2bc6978b", "Activision, Bob Whitehead - Ariola", "EAG-005, PAG-005, EAG-005-04B - 711 005-715", "Skiing (1980) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e21ee3541ebd2c23e817ffb449939c37", "Tigervision - Software Electronics Corp., Karl T. Olinger - Teldec", "7-001", "King Kong (1982) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, - { "e237ee91514d5ed535c95a14fc608c11", "Activision, Matthew L. Hubbard, Bob Whitehead", "AX-024", "Dolphin (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2389c0be5b5b84e0d3ca36ec7e67514", "Retroactive", "", "Qb (V2.09) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e24d7d879281ffec0641e9c3f52e505a", "Parker Brothers, Mark Lesser", "PB5950", "Lord of the Rings (1983) (Parker Bros) (Prototype)", "Journey to Rivendell (The Lord of the Rings I)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e25e173740f7ecc0e23025445c4591f3", "Greg Zumwalt", "", "Comitoid (Greg Zumwalt)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e275cbe7d4e11e62c3bfcfb38fca3d49", "M Network - APh Technological Consulting, Ken Smith - INTV", "MT5658", "Super Challenge Football (1982) (M Network)", "AKA Pro Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e28113d10c0c14cc3b5f430b0d142fcb", "CCE", "C-816", "Keystone Kappers (1983) (CCE) [a]", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2846af3e4d172b251ab77cbdd01761e", "Steve Engelhardt", "", "Adventure Plus (2003) (Steve Engelhardt) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2904748da63dfefc8816652b924b642", "Jone Yuan Telephonic Enterprise Co", "", "Catch Time (Jone Yuan)", "AKA Plaque Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2b682f6e6d76b35c180c7d847e93b4f", "", "", "Dodge Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2c1b60eaa8eda131632d73e4e0c146b", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (07-04-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2c89f270f72cd256ed667507fa038a2", "Starpath Corporation, Stephen H. Landrum", "AR-4101", "Communist Mutants from Space (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e2ca84a2bb63d1a210ebb659929747a9", "Telesys, Don 'Donyo' Ruffcorn", "1002", "Cosmic Creeps (1982) (Telesys) (PAL)", "AKA Space Maze, Spaze Maze", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e2eccbbe963f80f291cb1f18803bf557", "Atari, Joe Decuir, Steve Mayer, Larry Wagner", "CX26163P", "Combat (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "40", "256", "", "" }, - { "e314b42761cd13c03def744b4afc7b1b", "Activision, David Crane, Dan Kitchen", "AZ-108-04", "Ghostbusters (1985) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e34c236630c945089fcdef088c4b6e06", "Activision, David Crane - Ariola", "EAB-035-04 - 711 035-721", "Pitfall II (1984) (Activision) (PAL)", "Lost Caverns", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e3533684a7ef930a7fbd0c4dd8ec4847", "CCE", "C-856", "Pimball (1983) (CCE)", "AKA Video Pinball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e3600be9eb98146adafdc12d91323d0f", "Atari, Carol Shaw", "CX2618, CX2618P", "3-D Tic-Tac-Toe (1980) (Atari) (PAL)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e363e467f605537f3777ad33e74e113a", "Atari, Bob Whitehead - Sears", "CX2603 - 99803, 49-75601", "Star Ship (1977) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e377c3af4f54a51b85efe37d4b7029e6", "20th Century Fox Video Games, Steve Beck", "11035", "Save the Whales (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e37c8055d70979af354251ebe9f1b7dd", "HES", "", "Mega Funpak - Gorf, P. Patrol, Pacman, Skeet Shoot (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e38dc1f81a02e325562cd285123f579b", "Atari - GCC, Mike Feinstein", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e39843c56b7a4a08b18fa7949ec3ee6b", "", "", "Joshua Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e39a13b13dc82c5fdbfbbfd55ba1230e", "", "", "Analog Clock (Additional Frame Info) (V0.0) (20-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e3c0451d29dad724231bc5818ec4bae0", "", "", "Single-Scanline Positioning Demo 1 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e3c35eac234537396a865d23bafb1c84", "TechnoVision - Video Technology", "TVS1001", "Nuts (1983) (TechnoVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "45", "", "", "" }, - { "e3ed4ba3361756970f076e46e9cad1d2", "", "", "Tennis (Unknown) (PAL) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e40a818dac4dd851f3b4aafbe2f1e0c1", "Atari, Bill Aspromonte, Dr. Lee Salk", "CX26135", "Peek-A-Boo (1984) (Atari) (Prototype)", "Uses the Keypad Controllers", "Prototype", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "e42b937c30c617241ca9e01e4510c3f6", "", "", "Pitfall! (No Walls Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e434c0e161dd3c3fb435eb6bad2e182c", "Atari - GCC, Mike Feinstein, Brad Rice", "CX2681", "Battlezone (05-02-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e49ac0ec879a0d7820bc2598fc2cfcd4", "CCE", "", "Kaboom! (CCE) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "e4a0b28befaaa2915df1fa01238b1e29", "", "", "Gunfight 2600 - Red River (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e4afe157c09962cf39cdb25845d83d47", "Activision, David Crane - Ariola", "EAG-009, PAG-009 - 711 009-720", "Freeway (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e4b12deaafd1dbf5ac31afe4b8e9c233", "Adam Thornton", "", "Lord of the Rings (Adam Thornton) (Hack) [a]", "Hack of Dark Mage", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e4bff1d5df70163c0428a1ead309c22d", "Atari, Robert C. Polaro, Alan J. Murphy", "CX2609, CX2609P", "Defender (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e4c00beb17fdc5881757855f2838c816", "20th Century Fox Video Games - Sirius, Ed Hodapp", "11004", "Deadly Duck (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e4c2077a18e3c27f4819aa7757903aa0", "", "", "Many Blue Bars Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e4c666ca0c36928b95b13d33474dbb44", "Arcadia Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Suicide Mission (1982) (Arcadia)", "AKA Meteoroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e4d41f2d59a56a9d917038682b8e0b8c", "Cody Pittman", "", "Kiss Meets Pacman (Cody Pittman) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "e4e9125a8741977583776729359614e1", "SnailSoft", "", "Comitoid beta 4 (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e505bd8e59e31aaed20718d47b15c61b", "Funvision - Fund. Int'l Co.", "", "Space War (1982) (Funvision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e51030251e440cffaab1ac63438b44ae", "Parker Brothers - On-Time Software, Joe Gaucher, Louis Marbel", "PB5110", "James Bond 007 (1984) (Parker Bros)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e51c23389e43ab328ccfb05be7d451da", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, - { "e5359cbbbff9c6d7fe8aeff5fb471b46", "CCE", "C-849", "Boom Bang (1983) (CCE)", "AKA Crackpots", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e549f1178e038fa88dc6d657dc441146", "Atari, Bob Whitehead - Sears", "CX2625 - 6-99827, 49-75114", "Football (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e556e07cc06c803f2955986f53ef63ed", "Coleco - Individeo, Ed Temple", "2665", "Front Line (1984) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e558be88eef569f33716e8e330d2f5bc", "Shock Vision", "", "Keystone Kapers (Shock Vision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e56da674188ba2f02c7a0a343a01236f", "", "", "This Planet Sucks Demo 4 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, - { "e5a6e0bb7d56e2f08b237e15076e5699", "", "", "Color Table Display Helper (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e5bacf526036d3c8c99db5b030cf00e7", "", "", "Starmaster (Genesis)", "Genesis controller (C switches to map mode)", "Hack of Starmaster", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "e5d5085123a98c1e61818caa2971e999", "", "", "Euchre (PAL) (Erik Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e5d72ff8bab4450be57785cc9e83f3c0", "Telegames", "6082 A145", "Kung Fu Superkicks (1988) (Telegames) (PAL)", "AKA Chuck Norris Superkicks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e5ecd78edd24326a968809decbc7b916", "Imagic, Bob Smith", "720020-1A, IA3611", "Cheese (Dragonfire Beta) (05-21-1982) (Imagic) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e5f17b3e62a21d0df1ca9aee1aa8c7c5", "CommaVid, John Bronstein", "CM-003", "Cosmic Swarm (1982) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e5f360226dc552aba3e7e9b202330f48", "Supercat", "", "Mega Bitmap Demo (2007) (Supercat)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e5f84930aa468db33c0d0f7b26dd8293", "CCE", "C-826", "Grand Prix (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e5fcc62e1d73706be7b895e887e90f84", "", "", "Air-Sea Battle (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "40", "260", "", "" }, - { "e600f5e98a20fafa47676198efe6834d", "Parker Brothers - Roklan", "PB5080", "Gyruss (1984) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e609e8a007127b8fcff79ffc380da6b1", "", "", "Multi-Sprite Game V2.3 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e61210293b14c9c4ecc91705072c6a7e", "Gameworld", "133-005", "Bugs (1983) (Gameworld) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 50", "", "", "", "", "" }, - { "e62e60a3e6cb5563f72982fcd83de25a", "Jone Yuan Telephonic Enterprise Co", "", "End of the World (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, - { "e63a87c231ee9a506f9599aa4ef7dfb9", "Tigervision, Warren Schwader", "7-003", "Threshold (1982) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "22", "", "", "" }, - { "e63efdfda9a4003dcd77a854a781a06a", "Paul Slocum", "", "Combat Rock (PD) (Hack) [a]", "Hack of Combat", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e643aaec9a9e1c8ab7fe1eae90bc77d7", "Roger Williams", "", "Asymmetric Playfield (Roger Williams)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e64a8008812327853877a37befeb6465", "Answer Software Corporation - TY Associates", "ASC1002", "Gauntlet (1983) (Answer Software)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e6508b878145187b87b9cded097293e7", "", "", "Oystron (V2.8) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e66e5af5dea661d58420088368e4ef0d", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e6d5948f451a24994dfaaca51dfdb4e1", "Jone Yuan Telephonic Enterprise Co", "", "Football (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e6de4ef9ab62e2196962aa6b0dedac59", "Imagic, Wilfredo Aguilar, Michael Becker, Dennis Koble", "720113-2A, 13206", "Solar Storm (1983) (Imagic) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, - { "e6e5bb0e4f4350da573023256268313d", "Thomas Jentzsch", "", "Missile Control (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e6f49a1053c79211f82be4d90dc9fe3d", "", "", "Gunfight 2600 - Little progress... (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e723ad8f406cb258b89681ef4cef0eff", "Thomas Jentzsch", "", "Sadoom (TJ) (PAL) (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "e72eb8d4410152bdcb69e7fba327b420", "Atari, Douglas Neubauer, Mimi Nyden", "CX26136", "Solaris (1986) (Atari)", "AKA Universe, Star Raiders II, The Last Starfighter", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e72ee2d6e501f07ec5e8a0efbe520bee", "Imagic, Dave Johnson", "720119-2A, 13211, EIX-004-04I", "Quick Step! (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e73838c43040bcbc83e4204a3e72eef4", "CCE", "", "Apples and Dolls (CCE)", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "YES", "" }, - { "e74022cfe31ec8908844718dfbdedf7a", "", "", "Space Treat (30-12-2002) (Fabrizio Zavagli) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e77ec259e1387bc308b0534647a89198", "Parker Brothers, David Lamkins, Laura Nikolich", "931503", "Spider-Man (1982) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e77f332b71f13884c84771e7a121182d", "Jone Yuan Telephonic Enterprise Co", "", "Hey! Stop! (Jone Yuan)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e784a9d26707cfcd170a4c1c60422a72", "Quelle", "147.443 6", "Gefecht im All (1983) (Quelle) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "64", "", "", "" }, - { "e7864caaf9ec49ed67b1904ce8602690", "", "", "Donkey Kong 2K3 Pic (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e7a758bb0b43d0f7004e92b9abf4bc83", "", "", "Troll's Adventure (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e7dd8c2e6c100044002c1086d02b366e", "Activision, Steve Cartwright - Ariola", "EAX-013, PAX-013, 711 013-720", "Barnstorming (1982) (Activision) (PAL)", "AKA Die tollkeuhnen Flieger", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e7f005ddb6902c648de098511f6ae2e5", "Spectravideo - Universum", "SV-010", "CompuMate (1983) (Spectravideo) (PAL)", "", "", "", "CM", "", "", "", "", "", "", "", "", "", "", "", "YES", "80" }, - { "e800e4aec7c6c54c9cf3db0d1d030058", "", "", "Qb (2.06) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e80a4026d29777c3c7993fbfaee8920f", "", "", "Frisco (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e823b13751e4388f1f2a375d3560a8d7", "Arcadia Corporation, Stephen Harland Landrum", "AR-4105", "Official Frogger (Preview) (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, - { "e879b7093ac4cfad74c88d636ca97d00", "", "", "Poker Squares (V0.0f) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e88340f5bd2f03e2e9ce5ecfa9c644f5", "", "", "Lock 'n' Chase (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e8a3473bf786cf796d1336d2d03a0008", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (12-05-1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e8aa36e3d49e9bfa654c25dcc19c74e6", "Atari, Joe Decuir, Larry Caplan, Steve Mayer, Larry Wagner", "CX2601, CX2601P", "Combat (1977) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "260", "", "" }, - { "e8e7b9bdf4bf04930c2bcaa0278ee637", "", "", "Boring Taz (Hack)", "Hack of Taz", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e8f7679359c4f532f5d5e93af7d8a985", "", "", "Hangman Invader Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9034b41741dcee64ab6605aba9de455", "Digivision", "", "Phanton Tank (Digivision)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "e908611d99890733be31733a979c62d8", "Atari, Dan Hitchens, Mimi Nyden", "CX2697", "Mario Bros. (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e91d2ecf8803ae52b55bbf105af04d4b", "Atari, Howard Scott Warshaw", "CX2655, CX2655P", "Yars' Revenge (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e923001015bedd7901569f035d9c592c", "", "", "Adventure II (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e927ecf80f3784d745abd8368d78f2f3", "", "", "Space Instigators (V1.8) (19-10-2002) (CT) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e932f44fad2a66b6d5faec9addec208e", "", "", "Atari Logo Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e94632b0d863dd76459d689a9865bb33", "Jone Yuan Telephonic Enterprise Co", "", "Combat (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e957eb4612d6bd5940d3492dfa749668", "", "", "Tunnel Demo (27-03-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e959b5a2c882ccaacb43c32790957c2d", "", "", "Phantom II & Pirate (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e97eafd0635651d3999cece953c06bd5", "", "", "M.A.S.H (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9be3e8e4a7e73dd63ed4235a3a1a25f", "", "", "MMetall (Hack)", "Hack of Miniature Golf", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9c5d04643855949a23ff29349af74ea", "", "", "SCSIcide (Score Hack 2) (24-02-2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9c71f8cdba6037521c9a3c70819d171", "Action Hi Tech - Hi-Score", "", "Bank Heist (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9cb18770a41a16de63b124c1e8bd493", "Parker Brothers, Joe Gaucher", "931519", "Popeye (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "e9e646f730b8400cd5da08c849ef3e3b", "Tron", "", "Enduro (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9e6ad30549a6e2cd89fe93b7691d447", "Atari - Bobco, Robert C. Polaro", "CX26140, CX26140P", "Desert Falcon (05-27-1987) (Atari) (Prototype) (PAL)", "AKA Nile Flyer, Sphinx", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "e9f25c7af4f27c9e1b5b8f6fe6141e8c", "Champ Games", "CG-03-N", "Scramble (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "SAVEKEY", "", "", "", "", "", "YES", "" }, - { "ea38fcfc06ad87a0aed1a3d1588744e4", "Atari, Lou Harp", "CX26122", "Sinistar (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ea6d40db5498d6386571a76df448aa4c", "", "", "Vertical Playfield Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ea7e25ade3fe68f5b786ee0aa82b1fe5", "", "", "Galatic (208 in 1) (Unknown) (PAL)", "AKA Challenge of.... Nexar, The", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ea832e2cb6aae6f525f07452c381fa48", "", "", "Polar to Cartesian and VV (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ea86176b27ab0da8cce8f0179884bfaa", "", "", "Demo Image Series #10 - It's Art (28-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eaacfcdc1d4ee1258429b7ae7f084125", "Telegames", "6057 A227", "Quest for Quintana Roo (1989) (Telegames)", "Genesis controller (B is action button, C chooses tool or weapon)", "Hack of Quest for Quintana Roo", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, - { "ead60451c28635b55ca8fea198444e16", "Sancho - Tang's Electronic Co.", "TEC004", "Nightmare (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "eada0dd61ce13f8317de774dc1e68604", "", "", "2600 Digital Clock (Demo 1) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eae0c06ee61c63b81cd016096fc901b0", "Joe Grand", "", "SCSIcide (v1.0) (2001) (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eae6a5510055341d3abeb45667bb3e9b", "HES", "", "Wall Defender (HES) (PAL)", "AKA Wall Break", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eaf744185d5e8def899950ba7c6e7bb5", "Atari", "CX26172", "Xenophobe (1991) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eafe8b40313a65792e88ff9f2fe2655c", "Eric Ball", "ELB004", "Skeleton+ (NTSC)", "Stereo sound", "Homebrew", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb3d680699f8762f71f38e28e321234d", "", "", "Fu Kung! (V0.01) (08-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb4252faff7a4f2ba5284a98b8f78d1a", "", "", "John K Harvey's Equalizer (NTSC) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "eb46e99ec15858f8cd8c91cef384ce09", "Goliath - Hot Shot", "83-113", "Ground Zero (1983) (Goliath) (PAL)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb503cc64c3560cd78b7051188b7ba56", "Star Game", "043", "Moto Laser (Star Game)", "AKA Mega Force", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb634650c3912132092b7aee540bbce3", "Atari, Eric Manghise, Mimi Nyden, Joseph Tung", "CX2640", "RealSports Baseball (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "eb6d6e22a16f30687ade526d7a6f05c5", "Atari", "CX26150P", "Q-bert (1987) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb71743c6c7ccce5b108fad70a326ad9", "", "", "Euchre (25-11-2001) (Erik Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eb7934360658a29c50aeaff20bfda23b", "Activision, John Van Ryzin", "EAZ-036-04", "H.E.R.O. (1984) (Activision) (SECAM)", "", "", "", "", "", "", "", "", "", "", "", "", "SECAM", "", "", "", "" }, - { "eb92193f06b645df0b2a15d077ce435f", "Starpath Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Suicide Mission (1982) (Starpath) (PAL)", "AKA Meteoroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "eb9712e423b57f0b07ccd315bb9abf61", "Retroactive", "", "Qb (V2.04) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "eb9f8b84c193d9d93a58fca112aa39ed", "", "", "Register Twiddler Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ebcb084a91d41865b2c1915779001ca7", "JVP", "", "Bob Is Going Home (JVP)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ebcbc8a181a738e13df6216e5c329230", "Activision, Steve Cartwright", "AX-022", "Seaquest (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ebd2488dcace40474c1a78fa53ebfadf", "Skill Screen Games, Herman Quast", "SSG001", "Extra Terrestrials (1984) (SSG)", "The only Canadian-designed and manufactured Atari 2600 game from the 1980's", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ebf2dff78a08733251bf3838f02f7938", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a2]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "23", "240", "", "" }, - { "ebf9038e927e6a0db3e0d170c59911e6", "", "", "Pac-2600 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ec26fdc87b1d35f1d60ea89cda4f4dd4", "", "", "Star Fire - Crash Scene (04-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ec3beb6d8b5689e867bafb5d5f507491", "U.S. Games Corporation - Vidtec - JWDA, Todd Marshall, Henry Will IV", "VC1003", "Word Zapper (1982) (U.S. Games)", "AKA Word Grabber", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ec407a206b718a0a9f69b03e920a0185", "Quelle", "876.482 1", "Landung in der Normandie (1983) (Quelle) (PAL)", "AKA Commando Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ec5c861b487a5075876ab01155e74c6c", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2001", "Spacechase (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ece463abde92e8b89bcd867ec71751b8", "Puzzy - Bit Corporation", "PG205", "Dancing Plate (1982) (Puzzy) (PAL)", "AKA Dishaster", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ece908d77ab944f7bac84322b9973549", "", "", "Tom Boy (Unknown) (PAL60)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, - { "ecf51385384b468834611d44a8429c03", "20th Century Fox Video Games, Douglas 'Dallas North' Neubauer", "11105", "Mega Force (1982) (20th Century Fox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ecfa04523dde82fe42cdc7315a8f61b6", "Activision, David Crane - Ariola", "EAG-004, PAG-004 - 711 004-715", "Fishing Derby (1980) (Activision) (PAL) (4K)", "AKA Schneller als der Hai", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed014beeeb77dbb2bbcf9b5f6850b2f4", "", "", "Green Bar Text Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed0451010d022b96a464febcba70b9c4", "PlayAround - J.H.M.", "203", "Knight on the Town (1982) (PlayAround) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ed0ab909cf7b30aff6fc28c3a4660b8e", "Panda", "105", "Stunt Man (1983) (Panda)", "AKA Nightmare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed1306436ce237afc5a7ed3f77134202", "HES", "771-341", "2 Pak Special - Dolphin, Pigs 'n' Wolf (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed1492d4cafd7ebf064f0c933249f5b0", "CCE", "", "Video Cube (CCE)", "AKA Atari Video Cube", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed1a784875538c7871d035b7a98c2433", "", "", "Save Our Ship (Unknown) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "37", "", "", "" }, - { "ed2218b3075d15eaa34e3356025ccca3", "Atari, Richard Maurer", "CX2635, CX2635P", "Maze Craze (1980) (Atari) (PAL)", "AKA A Game of Cops 'n Robbers", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "" }, - { "ed5ccfc93ad4561075436ee42a15438a", "Atari, Tom Reuterdahl", "CX2626, CX2626P", "Miniature Golf (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ed8f319e82d355832195eb7715644795", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision) (8K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "ed9999911b406dc5f75c850dcc17bdf4", "", "", "Star Fire - Shootable (Friendlier Collision Detection) (26-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eddef10fdc0029301064115ae0cd41d4", "CCE", "", "Freeway (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ede4ab11ca346bd023b2c21d941e0c50", "Activision, David Crane", "EAZ-030", "Decathlon (1983) (Activision) (SECAM)", "", "", "", "", "", "", "", "", "", "", "", "", "SECAM", "", "", "", "" }, - { "ede7e8bf865b0afb4744f86d13624f9a", "", "", "Demo Image Series #2 - Clown (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "edf69b123e06eaf8663cc78d8aeba06e", "SpkSoft 98", "", "River Raid (SpkSoft 98) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee28424af389a7f3672182009472500c", "Atari, Carol Shaw - Ralph Lauren", "", "Polo (1978) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee456542b93fa8d7e6a8c689b5a0413c", "", "", "Chronocolor Donkey Kong Clean (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee4c186123d31a279ed7a84d3578df23", "Atari, Carol Shaw, Nick 'Sandy Maiwald' Turner", "CX2608", "Super Breakout (1982 - 1981) (Atari) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, - { "ee659ae50e9df886ac4f8d7ad10d046a", "Exus Corporation", "", "Video Reflex (1983) (Exus)", "AKA Foot Craz", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee6665683ebdb539e89ba620981cb0f6", "Coleco", "2658", "Berenstain Bears (1983) (Coleco)", "Uses the KidVid Controller", "Unbelievably Rare", "", "", "", "", "", "", "", "", "", "", "", "25", "", "", "" }, - { "ee67dc0b01746372d2b983d88f48e24f", "", "", "Scroller Demo (02-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee681f566aad6c07c61bbbfc66d74a27", "Activision", "", "Unknown Activision Game (10-29-1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee6cbedf6c0aac90faa0a8dbc093ffbe", "CCE", "", "My Golf (CCE) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee8027d554d14c8d0b86f94737d2fdcc", "Canal 3 - Intellivision", "", "Yars' Revenge (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "ee84bdc5dae268e227e407c7b5e6b6b7", "", "", "Marilyn Monroe Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ee9caee4eb958284fb10c277b14537f1", "Carrere Video, Garry Kitchen - Teldec", "USC1001", "Space Jockey (1983) (Carrere Video) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "59", "", "", "" }, - { "eea0da9b987d661264cce69a7c13c3bd", "Coleco", "2454", "Zaxxon (1983) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eeb92f3f46df841487d1504f2896d61a", "Cody Pittman", "", "Corys Adventure (Cody Pittman) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, - { "eec61cc4250df70939d48fe02d7122ac", "Activision, Bob Whitehead - Ariola", "EAG-005, PAG-005, EAG-005-04B - 711 005-715", "Skiing (1980) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eed9eaf1a0b6a2b9bc4c8032cb43e3fb", "Atari - Axlon, Steve DeFrisco", "CX26192", "Klax (1991) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "eee7695ae3eea7818321df0b790b31f3", "", "", "Sound Paddle V2 (Dennis Caswell & Jim Nitchals) (PD)", "Uses the Paddle Controllers", "", "", "", "", "", "", "YES", "PADDLES", "", "", "01", "", "", "", "", "" }, - { "ef263d40a23483ab339cac44d9515a56", "Thomas Jentzsch", "", "Fatal Run (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ef3a4f64b6494ba770862768caf04b86", "Activision, Bob Whitehead", "AG-034-04", "Private Eye (1984) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ef60b06fddb675b0d783afbfa5fc5232", "", "", "Many Blue Bars and Text Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ef66af190840871409fe1702d2483554", "Andrew Davie, Paul Slocum, Christopher Tumber", "", "DiscoTech (12-02-2003) (Andrew Davie)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ef71e9fb0d8d477226d8d42261fbf0a7", "Piero Cavina", "", "Multi-Sprite Demo V2.0 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ef76ea05655a0b62cb1018c92b9b4b7d", "Gakken", "010", "Strategy X (1983) (Gakken) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "efa1098c7d091b940c2543abe372f036", "Scott Stilphen", "", "E.T. The Extra-Terrestrial (Scott Stilphen) (Hack)", "Hack of E.T. The Extra-Terrestrial", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "efb47d70b2965ce689e2c5757616b286", "", "", "Time Test Demo (Eckhard Stolberg) (PAL) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "efd387430a35a659ff569a9a0ec22209", "Atari - GCC", "CX26118", "Millipede (1984) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "efefc02bbc5258815457f7a5b8d8750a", "CBS Electronics, Richard K. Balaska Jr.", "4L 2520 5000", "Tunnel Runner (1983) (CBS Electronics) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "efffafc17b7cb01b9ca35324aa767364", "", "", "Circus Atari (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f02ba8b5292bf3017d10553c9b7b2861", "Atari", "CX26172", "Xenophobe (1991) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f032b2f2d8323404a6b4541f92dd1825", "", "", "Many Blue Bars and Text Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f047df70d3d08e331122cd2de61d6af8", "Dave Neuman", "", "Space Battle (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f04ee80011d95798006378643650aaa7", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0536303f49006806bac3aec15738336", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (4 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0541d2f7cda5ec7bab6d62b6128b823", "Atari, Paul Donaldson", "", "Bionic Breakthrough (1984) (Atari) (Prototype)", "Uses Mindlink Controller (left only)", "Prototype", "", "", "", "", "", "", "MINDLINK", "", "", "", "", "", "", "", "" }, - { "f060826626aac9e0d8cda0282f4b7fc3", "Atari, David Crane - Sears", "CX2605 - 6-99822, 49-75109", "Outlaw (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0631c6675033428238408885d7e4fde", "Paul Slocum", "", "Test Cart (2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f066bea7ab0a37b83c83c924a87c5b67", "", "", "Air Raiders (1982) (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0a6e99f5875891246c3dbecbf2d2cea", "Atari, James Andreasen - Sears", "CX2654 - 49-75141", "Haunted House (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0b7db930ca0e548c41a97160b9f6275", "Atari, Larry Wagner, Bob Whitehead - Sears", "CX2645 - 49-75181", "Video Chess (1979) (Atari)", "AKA Computer Chess", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0cacae1d1b79ee92f0dc035f42e0560", "", "", "Boring Donkey Kong (Hack)", "Hack of Donkey Kong", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0d393dbf4164a688b2346770c9bbd12", "", "", "Racquetball (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f0daaa966199ef2b49403e9a29d12c50", "", "", "Mr. Postman (Unknown)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f0e0addc07971561ab80d9abe1b8d333", "Imagic, Rob Fulop", "720000-200, 720101-1B, 720101-1C, IA3200, IA3200C, IX-006-04", "Demon Attack (1982) (Imagic)", "AKA Death from Above", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f10e3f45fb01416c87e5835ab270b53a", "Video Game Cartridge - Ariola", "TP-607", "Ski Run (Ariola) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1127ade54037236e75a133b1dfc389d", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (Preview) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f11cfab087fcbd930ab8b0becc5b2e5a", "Canal 3 - Intellivision", "", "River Raid (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f12afbffa080dd3b2801dd14d4837cf6", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (01-04-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f137211537438b1fce3d811baef25457", "", "", "Incoming (02-10-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1489e27a4539a0c6c8529262f9f7e18", "Champ Games", "CG-01-P", "Lady Bug (PAL60)", "", "Homebrew", "", "", "", "A", "", "", "", "", "", "", "PAL60", "", "", "YES", "" }, - { "f14d5e96ec3380aef57a4b70132c6677", "Goliath - Hot Shot", "83-414", "Pac Kong (1983) (Goliath) (PAL)", "AKA Inca Gold", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1554569321dc933c87981cf5c239c43", "Atari - Glenn Axworthy", "CX26129", "Midnight Magic (1986) (Atari)", "AKA Pinball Wizard", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f16c709df0a6c52f47ff52b9d95b7d8d", "Atari, Alan Miller - Sears", "CX2662 - 6-99811", "Hangman (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1929bb9b5db22d98dd992aa3fe72920", "", "", "Cube Conquest (Improved Interlace) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f19aba18f86e415812480ad2be221425", "Chris Larkin", "", "Solaris Trainer (2002) (Chris Larkin) (Hack)", "Hack of Solaris", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1a0a23e6464d954e3a9579c4ccd01c8", "20th Century Fox, Douglas 'Dallas North' Neubauer", "11006", "Alien (1982) (20th Century Fox)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f1ae6305fa33a948e36deb0ef12af852", "Andreas Dietrich", "", "Donkey Kong VCS (2017) (1.0)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f1b2ea568b3e156e3f2849dac83591f6", "", "", "Sprite Demo (1997) (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1b7edff81ceef5af7ae1fa76c8590fc", "Atari, Richard Maurer", "CX2632, CX2632P", "Space Invaders (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1beca5a198cf08190487e5c27b8e540", "", "", "Fu Kung! (V0.16) (2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1e375d921858467166e53bcec05803f", "Jeffry Johnston", "", "Radial Pong - Version 3 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f1eeeccc4bba6999345a2575ae96508e", "Video Gems", "VG-03", "Steeplechase (1983) (Video Gems) (PAL)", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f1fe06ebe2900eac4cdd17799389a102", "Atari, Jim Huether", "CX26163P", "Sky Diver (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f20675c8b98518367b9f5b8ee6f7c8ea", "Atari", "CX26163P", "Stampede (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f20bd756f3990e06c492f53cd0168e68", "", "", "Skeleton+ (03-05-2003) (Eric Ball) (NTSC)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f21813aa050437f0dbc8479864acec6d", "", "", "Sneak 'n Peek (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f240ba9f8092d2e8a4c7d82c554bf509", "Quelle", "463.860 7", "Strahlen der Teufelsvoegel (1983) (Quelle) (PAL)", "AKA Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f280976d69d6e27a48506bd6bad11dcd", "Atari, Larry Kaplan", "CX2664, CX2664P", "Brain Games (1978) (Atari) (PAL)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "f283cc294ece520c2badf9da20cfc025", "Atari - CCW, Christopher H. Omarzu", "CX26104", "Big Bird's Egg Catch (1983) (Atari) (PAL)", "Uses Kids/Keypad Controllers", "Rare", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "f28c07767b3e90a2689ade5b5e305874", "Canal 3 - Intellivision", "C 3014", "Keystone Kapers (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f2d40c70cf3e1d03bc112796315888d9", "Atari - CCW, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (1983) (Atari) (PAL)", "Uses Keypad Controllers", "Rare", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "f2d4d6187903cac2d5ea8ed90dad120d", "Digimax", "", "River Raid II (Digimax)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f2e4fb2d3600c0f76d05864e658cc57b", "", "", "Marble Craze (Kernel) (17-02-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f2f2cb35fdef063c966c1f5481050ea2", "", "", "Ram It (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f2f59629d7341c97644405daeac08845", "Jone Yuan Telephonic Enterprise Co", "", "Bobby Is Going Home (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f303630a2d7316787aecd67fff6b2e33", "AtariAge - Fred Quimby", "", "Gingerbread Man (Fred Quimby)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f3213a8a702b0646d2eaf9ee0722b51c", "Atari, Carol Shaw - Sears", "CX2618 - 49-75123", "3-D Tic-Tac-Toe (1980) (Atari) (4K)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f33f1d0f7819c74148dacb48cbf1c597", "Retroactive", "", "Qb (2.00) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f344ac1279152157d63e64aa39479599", "Tigervision", "7-012", "Espial (1984) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f34dd3b8156aaf113cb621b2e51d90b8", "Joe Grand", "", "SCSIcide Pre-release 5 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f34f08e5eb96e500e851a80be3277a56", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 60", "", "", "", "", "" }, - { "f367e58667a30e7482175809e3cec4d4", "ZiMAG - Emag - Vidco", "708-111 - GN-040", "Cosmic Corridor (1983) (ZiMAG)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "f38358cd8f5ecfedffd5aca1aa939f18", "Universal Gamex Corporation, Alan Roberts", "1005", "X-Man (1983) (Universal) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "f39e4bc99845edd8621b0f3c7b8c4fd9", "AtariAge", "", "Toyshop Trouble (AtariAge)", "F8 Emulator Release", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "32", "", "", "" }, - { "f3c431930e035a457fe370ed4d230659", "", "", "Crackpots (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f3cd0f886201d1376f3abab2df53b1b9", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f3dfae774f3bd005a026e29894db40d3", "Otto Versand", "649635", "See Saw (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Circus Atari", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f3f5f72bfdd67f3d0e45d097e11b8091", "Sears Tele-Games, Marilyn Churchill, Matthew L. Hubbard", "CX2647 - 49-75142", "Submarine Commander (1982) (Sears)", "AKA Seawolf 3", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f3f92aad3a335f0a1ead24a0214ff446", "", "", "Spectrum Color Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f4204fc92d17ed4cb567c40361ad58f1", "Inky", "", "Beanie Baby Bash (Inky) (Hack)", "Hack of Beany Bopper", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f4469178cd8998cb437fa110a228eaca", "Digitel", "", "Frostbite (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f45644ff82b533a781a1ee50f2e95f3c", "", "", "Overhead Adventure Demo 6 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f457674cef449cfd85f21db2b4f631a7", "U.S. Games Corporation - JWDA, Todd Marshall, Wes Trager, Henry Will IV", "VC1004", "Commando Raid (1982) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f473f99e47d4026a7a571184922ebf04", "Philip R. Frey", "", "Donkey Claus (Philip R. Frey) (Hack)", "Hack of Donkey Kong", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f48022230bb774a7f22184b48a3385af", "Atari, Rob Fulop - Sears", "CX2633 - 49-75119", "Night Driver (1980) (Atari) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 65", "", "", "", "YES", "" }, - { "f48735115ec302ba8bb2d2f3a442e814", "", "", "Dishaster (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f49a34f1fdd7dc147cbf96ce2ce71b76", "", "", "Qb (Special Edition) (PAL) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f4ab6bd5f80d8988141edde4c84b23b5", "Atari, Alan Miller", "CX2624, CX2624P", "Basketball (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f4b8a47a95b61895e671c3ec86ffd461", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (01-03-1984) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f4c2e50b01dff99bddbe037b3489511c", "", "", "Hypnotic (V0.04) (2001) (Inkling) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f4c6621f1a0b4d27081123c08d7d1497", "CCE", "C-838", "Immies & Aggies (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f4cf6881b65c424095dc25dc987f151f", "", "", "128 in 1 Game Select ROM (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f4dabd5bcc603e8464a478208037d423", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (08-21-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f526d0c519f5001adb1fc7948bfbb3ce", "Mythicon, Bill Bryner, Bruce de Graaf", "MA1003", "Star Fox (1983) (Mythicon)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f52f40299fd238c6ffd9e6107050dc76", "Activision, Bob Whitehead - Ariola", "EAG-011, PAG-011 - 711 011-715", "Stampede (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f539e32bf6ce39c8ca47cb0cdd2c5cb8", "Control Video Corporation", "", "GameLine Master Module ROM (1983) (Control Video)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f542b5d0193a3959b54f3c4c803ba242", "Atari, Tom Rudadahl - Sears", "CX2634 - 49-75121", "Golf (1980) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f5445b52999e229e3789c39e7ee99947", "Atari, Jim Huether", "CX26163P", "Flag Capture (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f5a2f6efa33a3e5541bc680e9dc31d5b", "Suntek", "SS-022", "Motocross (Suntek) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f5a3e051730d45fea518f2e8b926565b", "Robby", "", "Keystone Kapers (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f5aa6bd10f662199c42e43863a30106c", "", "", "Music Kit (V1.0) - Song Player (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f5d103a9ae36d1d4ee7eef657b75d2b3", "Starpath Corporation, Stephen H. Landrum", "9 AR-4105", "Official Frogger, The (Preview) (1983) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, - { "f613aad84d2163d6b197b220bfec1b7e", "", "", "X-Doom V.27 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f661f129644f338b13d9f4510d816c03", "Atari, David Crane", "CX26163P", "Outlaw (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6676e3fe901eb8515fc7ae310302c3c", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f67181b3a01b9c9159840b15449b87b0", "Atari, Nick 'Sandy Maiwald' Turner", "CX2665", "Frog Pond (08-27-1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f687ec4b69611a7f78bd69b8a567937a", "Activision, Alan Miller - Ariola", "EAZ-028 - 711 028-725", "Robot Tank (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f69a39b215852a0c2764d2a923c1e463", "", "", "Move a Blue Blob Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f69bb58b815a6bdca548fa4d5e0d5a75", "Atari, Larry Kaplan", "CX26163P", "Bowling (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f69d4fcf76942fcd9bdf3fd8fde790fb", "CCE", "", "Aquaventure (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6a282374441012b01714e19699fc62a", "ZiMAG - Emag - Vidco", "710-111 - GN-010", "I Want My Mommy (1983) (ZiMAG)", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "YES", "" }, - { "f6a9ea814d15b85bffe980c927df606b", "", "", "Missile Command (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f6b5ebb65cbb2981af4d546c470629d7", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (09-13-1984) (Coleco) (Prototype) [a]", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6c13e816e58c8c62f82b2c8b91a2d67", "", "", "Scrolling Playfield 2 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6d512bef1bf253dc935d0e13c3d1462", "", "", "Slot Racers (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6daebc0424fa0f8d9aaf26c86df50f4", "Brian Watson", "", "Color Tweaker (V1.0) (2001) (B. Watson)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6efa00ae99aaf33e427b674bcfd834d", "", "", "2600 Digital Clock (Demo 3) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f6f1b27efc247a0e8d473ddb4269ff9e", "Quelle", "429.663 8", "Schnapp die Apfeldiebe (1983) (Quelle) (PAL)", "AKA Plaque Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f70e3f3bb2d19ec2aaec8f78dc43744f", "Jone Yuan Telephonic Enterprise Co", "", "Pooyan (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "215", "", "" }, - { "f714a223954c28eccf459295517dcae6", "", "", "Big - Move This Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f724d3dd2471ed4cf5f191dbb724b69f", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2659", "Raiders of the Lost Ark (1982) (Atari)", "Console ports are swapped", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, - { "f736864442164b29235e8872013180cd", "Telegames - VSS", "6057 A227", "Quest for Quintana Roo (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f73d2d0eff548e8fc66996f27acf2b4b", "CCE", "C-813", "Pitfall (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f7424985bac41067502b4a05b64cb75a", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision)", "Genesis controller (B is fire up, C is fire down)", "Hack of Plaque Attack", "", "", "", "", "", "", "GENESIS", "GENESIS", "", "", "", "", "", "", "" }, - { "f74ad642552385c3daa203a2a6fc2291", "Eckhard Stolberg", "", "Cubis (1997) (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, - { "f750b5d613796963acecab1690f554ae", "Manuel Polik", "", "Gunfight 2600 (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f75872946e82ad74d48eae5bc28f5f0e", "Sears Tele-Games, Jim Huether", "CX2614 - 49-75126", "Steeplechase (04-15-1980) (Sears) (Prototype)", "Uses the Paddle Controllers", "Prototype", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "", "" }, - { "f777444fc21a5925e066b68b1d350575", "", "", "Marble Craze (Kernel Works) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f77f5fc3893da5d00198e4cd96544aad", "Canal 3 - Intellivision", "", "Stampede (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f7856e324bc56f45b9c8e6ff062ec033", "Atari, Jerome Domurat, Michael Sierchio", "CX2667", "RealSports Soccer (1983) (Atari) [no opening tune]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f78c125b5da483c41e51522947d6c4ce", "", "", "Sound Paddle V1 (Dennis Caswell & Jim Nitchals) (PD)", "Uses the Paddle Controllers", "", "", "", "", "", "", "YES", "PADDLES", "", "", "01", "", "", "", "", "" }, - { "f7a138eed69665b5cd1bfa796a550b01", "Tigervision - Teldec", "7-012 - 3.60016 VC", "Espial (1984) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f7a651972d78f9ba485b14690452d4be", "Paul Slocum", "", "Homestar Runner Demo #2 (2004-03-29)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "f7af41a87533524d9a478575b0d873d0", "Quelle", "495.663 7", "Spiderman (1983) (Quelle) (PAL)", "AKA Spider-Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f7d6592dcb773c81c278140ed4d01669", "Activision, David Crane, Dan Kitchen", "EAG-108-04, EAZ-108-04B", "Ghostbusters (1985) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f7e07080ed8396b68f2e5788a5c245e2", "Video Game Cartridge - Ariola", "TP-617", "Farmyard Fun (Ariola)", "AKA Play Farm", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "", "" }, - { "f7f50d9c9d28bcc9f7d3075668b7ac89", "Activision, David Crane - Ariola", "EAG-008, PAG-008, EAG-008-04I - 711 008-720", "Laser Blast (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f7fac15cf54b55c5597718b6742dbec2", "Spiceware", "SW-01", "Medieval Mayhem (NTSC)", "", "Homebrew", "STEREO", "", "", "", "", "", "PADDLES", "PADDLES", "", "AUTO 55", "", "", "", "", "" }, - { "f802fa61011dd9eb6f80b271bac479d0", "Suntek", "SS-023", "Mole Hunter (Suntek) (PAL)", "AKA Topy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f80cf77164079d774b9b0fae33dffca9", "", "", "Fu Kung! (V0.15) (Negative Version) (05-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8240e62d8c0a64a61e19388414e3104", "Activision, Steve Cartwright", "AX-013", "Barnstorming (1982) (Activision)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f825c538481f9a7a46d1e9bc06200aaf", "Atari, Richard Maurer - Sears", "CX2635 - 49-75157", "Maze Craze (1980) (Atari)", "AKA A Game of Cops 'n Robbers", "", "", "", "", "", "", "", "", "", "", "", "NTSC", "", "", "", "" }, - { "f844f4c6f3baaaf5322657442d6f29eb", "Atari, Sam Comstock, Richard Dobbis, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f847fb8dba6c6d66d13724dbe5d95c4d", "Absolute Entertainment, David Crane", "AG-042-02, AG-042-04", "Skate Boardin' (1987) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8582bc6ca7046adb8e18164e8cecdbc", "", "", "Panda Chase (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, - { "f8648d0c6ad1266434f6c485ff69ec40", "CCE", "", "Oink! (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8811d45a9935cca90c62f924712f8e6", "Jone Yuan Telephonic Enterprise Co", "", "Chopper Command (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8b2a6a4d73ebff10d805a9b59041986", "Activision, Larry Kaplan - Ariola", "EAX-006, PAX-006 - 771 006-720", "Bridge (1980) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8bfd99163d2c4ec688357786e6fba28", "", "", "Eckhard Stolberg's Scrolling Text Demo 2 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8c1c4a41303bd40b0d6c81bfaf8573b", "HES", "773-891", "2 Pak Special - Dungeon Master, Creature Strike (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f8ff34b53d86f55bd52d7a520af6d1dc", "", "", "Big Dig (04-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "f90b5da189f24d7e1a2117d8c8abc952", "Atari, David Crane - Sears", "CX2653 - 6-99823, 49-75111", "Slot Machine (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f91fb8da3223b79f1c9a07b77ebfa0b2", "Atari, Alan J. Murphy, Nick 'Sandy Maiwald' Turner - Sears", "CX2615 - 49-75140", "Demons to Diamonds (1982) (Atari)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 57", "", "", "", "", "" }, - { "f93d7fee92717e161e6763a88a293ffa", "20th Century Fox Video Games - Lazer Micro Systems - Dunhill Electronics, B. Winston Hendrickson, Randall Hyde, Mark V. Rhoads, John Simonds", "11013", "Porky's (1983) (20th Century Fox)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9420173efcb4b9f2b01c2a7b595cca7", "CCE", "", "Laser Blast (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f954381f9e0f2009d1ac40dedd777b1a", "Thomas Jentzsch", "", "Robot City (V0.18) (01-09-2002) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9655ed51462ecfc690c7b97cec649f9", "Andrew Wallace", "", "Laseresal 2002 (PAL) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f965cc981cbb0822f955641f8d84e774", "Answer Software Corporation - TY Associates", "ASC2001", "Confrontation (1983) (Answer) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "220", "YES", "" }, - { "f9660ebed66fee8bdfdf07b4faa22941", "VGS", "", "Vanguard (VGS)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9677b2ec8728a703eb710274474613d", "Atari, Ian Shepard", "CX2604, CX2604P", "Space War (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f97dee1aa2629911f30f225ca31789d4", "Avalon Hill, Jean Baer, Bill 'Rebecca Ann' Heineman, Jim Jacob", "5005002", "Out of Control (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "216", "", "" }, - { "f98d2276d4a25b286135566255aea9d0", "Digitel", "", "Name This Game (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f98d869f287d2ce4f8fb36e0686929d9", "", "", "Skeleton+ (17-04-2003) (Eric Ball) (NTSC)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f992a39b46aa48188fab12ad3809ae4a", "", "", "Sky Jinks (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9967369943209b4788d4e92cefc0795", "Atari", "CX26163P", "Fishing (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Fishing Derby", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9cef637ea8e905a10e324e582dd39c2", "CCE", "", "Private Eye (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9d51a4e5f8b48f68770c89ffd495ed1", "Atari, Tod Frye, Mimi Nyden", "CX2657", "SwordQuest - FireWorld (1982) (Atari)", "AKA Adventure II, SwordQuest II - FireWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9da42f91a1c5cfa344d2ff440c6f8d4", "ZUT", "", "Pac Invaders (ZUT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9de91d868d6ebfb0076af9063d7195e", "", "", "Maze Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "f9e99596345a84358bc5d1fbe877134b", "Activision, Larry Kaplan, David Crane - Ariola", "EAG-010, PAG-010 - 711 010-720", "Kaboom! (1981) (Activision) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, - { "fa0570561aa80896f0ead05c46351389", "Tigervision", "7-008", "Miner 2049er (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "214", "", "" }, - { "fa1b060fd8e0bca0c2a097dcffce93d3", "Atari - CCW, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (1984) (Atari)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, - { "fa2be8125c3c60ab83e1c0fe56922fcb", "Camelot - DSD, Michael Doherty, Clyde Hager - Johnson & Johnson", "", "Tooth Protectors (1983) (Camelot)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fa3de71841c0841db6a741884a6b6b2f", "", "", "Warring Worms (17-02-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa4404fabc094e3a31fcd7b559cdd029", "Atari, Alan J. Murphy, Robert C. Polaro", "CX26100", "Bugs Bunny (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa529ec88eca679f6d5fd0ccb2120e46", "", "", "20 Sprites at Once Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa6fe97a10efb9e74c0b5a816e6e1958", "ZiMAG - Emag - Vidco", "707-111 - GN-030", "Tanks But No Tanks (1983) (ZiMAG)", "AKA Phantom Tank", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa73f3c77ba76763e00e12d5458b6c5d", "Probe 2000, Roger Booth, Todd Marshall, Robbin Daniels, Jim Wickstead", "3152VC", "Pursuit of the Pink Panther (Probe) (Prototype)", "AKA Adventures of the Pink Panther", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa7ce62e7fd77e02b3e2198d70742f80", "Atari, Peter C. Niday", "CX26108", "Donald Duck's Speedboat (04-18-1983) (Atari) (Prototype) (PAL)", "AKA Donald Duck's Regatta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa7e11a3dbea4365975cd2f094e61d25", "Tim Snider", "", "Mystery Science Theater 2600 (1999) (Tim Snider) (Hack)", "Hack of Megamania", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fa98d48cd609c9babc819e0a1bd8d598", "AtariAge (Chris Walton)", "", "Juno First (2009) (PAL60)", "AtariVox supported", "Homebrew", "", "", "", "", "", "", "", "ATARIVOX", "", "", "PAL60", "", "", "YES", "" }, - { "fabca526d57de46768b392f758f1a008", "", "", "Laseresal 2600 (16-12-2001) (Andrew Wallace) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fac28963307b6e85082ccd77c88325e7", "CCE", "", "Berzerk (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fadb89f9b23beb4d43a7895c532757e2", "Galaga Games", "", "River Raid (1984) (Galaga Games) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fae0b86934a7c5a362281dffebdb43a0", "Retroactive", "", "Qb (2.07) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "faebcb2ef1f3831b2fc1dbd39d36517c", "Atari, Jerome Domurat, Steve Woita", "CX2696", "Asterix (1984) (Atari) (PAL)", "AKA Taz", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "faed2ef6b44894f8c83f2b50891c35c6", "CCE", "", "Super Baseball (CCE)", "AKA RealSports Baseball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "faffd84f3a8eceee2fa5ea5b0a3e6678", "Suntek", "SS-025", "Spectracube Invasion (Suntek) (PAL)", "AKA Immies & Aggies", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb09ee4ccd47ae74a3c314f0d8a40344", "", "", "Titans (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb0c32ef7af5b45486db663510094be8", "", "", "Demo Image Series #15 - Three Marios (NTSC) (Non-Interleave) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb0e84cee4c108d24253bcb7e382cffd", "", "", "Interleaved ChronoColour Demo (SECAM) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb27afe896e7c928089307b32e5642ee", "M Network - APh Technological Consulting, Jeff Ronne, Brett Stutz - INTV", "MT5662", "TRON - Deadly Discs (1983) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb4ca865abc02d66e39651bd9ade140a", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb531febf8e155328ec0cd39ef77a122", "", "", "Worm War I (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fb5c8af97bd8ffe88323656f462645a7", "", "", "Interlace Demo (Glenn Saunders)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fb833ed50c865a9a505a125fc9d79a7e", "ITT Family Games", "", "Pumuckl I (1983) (ITT Family Games) (PAL)", "AKA Panda Chase", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, - { "fb884ffd89013331a6f01ae3f6abd214", "Activision, David Crane", "", "Venetian Blinds Demo (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb88c400d602fe759ae74ef1716ee84e", "20th Century Fox Video Games, Bill Aspromonte", "11031", "Crash Dive (1983) (20th Century Fox)", "AKA Voyage to the Bottom of the Sea", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb91da78455d9b1606913fbf8c859772", "", "", "Split Screen (Ballblazer) Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fb91dfc36cddaa54b09924ae8fd96199", "Parker Brothers, Mark Lesser", "PB5590", "Frogger II (1984) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fbac6476e7b2b20d246202af81662c88", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (Preview) (1982) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fbb0151ea2108e33b2dbaae14a1831dd", "Thomas Jentzsch", "", "Robot Tank TV (Thomas Jentzsch) (Hack)", "Uses two simultaneous Joystick Controllers, Hack of Robot Tank", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fbb4f3debf48dc961b559384467f2057", "Digitel", "", "River Raid III (1985) (Digitel)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fbd6102e17a5c02c6e1911381b7203f9", "", "", "Star Fire - Warping!! (10-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fbe554aa8f759226d251ba6b64a9cce4", "Atari - GCC, Mike Feinstein, Brad Rice", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fbfebee9c14694719e3eda4854dc42ee", "Jake Patterson", "", "Baubles 3 (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc2104dd2dadf9a6176c1c1c8f87ced9", "Coleco - Woodside Design Associates, Harley H. Puthuff Jr.", "2663", "Time Pilot (1983) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc2233fc116faef0d3c31541717ca2db", "Atari, Tod Frye", "CX2646", "Pac-Man (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc24a94d4371c69bc58f5245ada43c44", "Atari - Axlon, Steve DeFrisco", "CX26170", "Secret Quest (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc6052438f339aea373bbc999433388a", "Atari, David Crane", "CX2653P", "Slot Machine (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc668a2251dd79cbd903d4fa0e558f96", "", "", "Thrust (V1.1) (2000) (TJ) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc92d74f073a44bc6e46a3b3fa8256a2", "", "", "Megademo (19xx) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fc9c1652fe3a2cade6188f4d3692481f", "Andrew Davies", "", "Andrew Davies early notBoulderDash demo (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fca4a5be1251927027f2c24774a02160", "Activision, John Van Ryzin", "AZ-036-04", "H.E.R.O. (1984) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fcbbd0a407d3ff7bf857b8a399280ea1", "ZiMAG - Emag - Vidco", "GN-070", "Mysterious Thief, A (1983) (ZiMAG) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fcbdf405f0fc2027b0ea45bb5af94c1a", "Amiga - Video Soft, Michael K. Glass, Jerry Lawson", "", "3-D Ghost Attack (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fcea12625c071ddc49f4e409f4038c60", "Fabrizio Zavagli", "", "Balls! (16-09-2002) (Fabrizio Zavagli)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "fcf8e306f6615f74feba5cb25550038c", "", "", "Blue Dot Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd0e5148162e8ec6719445d559f018a9", "Activision, Steve Cartwright - Ariola", "EAX-022, EAX-022-04I - 711 022-720", "Seaquest (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd10915633aea4f9cd8b518a25d62b55", "Atari, John Dunn", "CX2631, CX2631P", "Superman (1979) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd16949913aaab5beaefed73bf2ca67c", "Atari - GCC, John Allred, Mike Feinstein", "CX2688", "Jungle Hunt (02-03-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd4f5536fd80f35c64d365df85873418", "Atari - Bobco, Robert C. Polaro", "CX26140", "Desert Falcon (1987) (Atari)", "AKA Nile Flyer, Sphinx", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd6e507b5df68beeeddeaf696b6828fa", "", "", "Boxing (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd7464edaa8cc264b97ba0d13e7f0678", "HES", "771-333", "2 Pak Special - Challenge, Surfing (1990) (HES) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd78f186bdff83fbad7f97cb583812fe", "Amiga - Video Soft", "3125", "Surf's Up (1983) (Amiga) (Prototype) [a2]", "Uses the Joyboard controller", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd8b4ee0d57605b35e236e814f706ff1", "Atari - GCC, Mike Feinstein, John Mracek", "CX2673, CX2673P", "Phoenix (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fd9b321cee5fbb32c39ba3ca5d9ec7cf", "Jeffry Johnston", "", "Radial Pong - Version 5 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fdd4995a50395db14f518f63c2d63438", "", "", "Oh No! (Version 3) (18-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fde42e39710e75e9e4d4d75440f8e4e5", "", "", "Coke Zero (v1.0) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "35", "", "", "" }, - { "fdf0de38517e0cf7f0885f98ccc95836", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (2 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fdf6680b2b1e8054293a39700a765692", "", "", "Alpha Demo - The Beta Demo 2 (2000) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe0b7f27e3ad50bbf9ff468ee56d553d", "", "", "Lines Demo (Eckhard Stolberg) (PAL) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe0bc4bb92c1c4de7d5706aaa8d8c10d", "", "", "Sprite Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe3b461d4c8b179fe68bc77760294c25", "Atari, Joe Decuir", "CX2621, CX2621P", "Video Olympics (1977) (Atari) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "", "", "", "", "", "" }, - { "fe67087f9c22655ce519616fc6c6ef4d", "Atari - Zip Technology, Randy Bowker, Bruce Williams", "CX26142", "Crack'ed (11-28-1988) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe6abc0f63e31e2646c9c600926b5b7f", "Atari", "CX26137", "4 in 1 (02-19-1987) (Atari) (Prototype)", "Home Run, Canyon Bomber, Sky Diver, Night Driver", "Prototype", "", "4IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe870018332a0221eb59fb18b0c6bccc", "", "", "Incoming (08-11-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fe9ae625d924b54c9f8a14ac9a0f6c6d", "BG Dodson", "", "High Bid! (BG Dodson) (Hack)", "Hack of Pepsi Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "feba8686fd0376015258d1152923958a", "", "", "Super Circus (Unknown) (PAL)", "AKA Circus Atari", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fec0c2e2ab0588ed20c750b58cf3baa3", "Activision - Cheshire Engineering, David Rolfe, Larry Zwick", "EAZ-037-04, EAZ-037-04I", "Beamrider (1984) (Activision) (PAL)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "fece458a8023a809a5006867feca40e8", "", "", "SCSIcide (24-02-2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "feec54aac911887940b47fe8c9f80b11", "Atari, Rob Fulop", "CX2633, CX2633P", "Night Driver (1980) (Atari) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 65", "", "", "", "YES", "" }, - { "feedcc20bc3ca34851cd5d9e38aa2ca6", "Atari, David Crane - Sears", "CX2607 - 6-99828, 49-75115", "Canyon Bomber (1979) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "10", "", "", "", "", "" }, - { "ff3bd0c684f7144aeaa18758d8281a78", "Atari, Bob Whitehead", "CX2651", "Blackjack (1977) (Atari) (PAL)", "Uses the Paddle Controllers", "Rare", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, - { "ff5a9e340d96df6f5a5b6eb038e923bd", "", "", "Space Shuttle (1983) (Activision) [t1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ff7627207e8aa03730c35c735a82c26c", "Atari, Bob Whitehead", "CX26163P", "Blackjack (32 in 1) (1988) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, - { "ff86fc8ffa717bb095e8471638c1c31c", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Bop a Buggy (1 of 3) (1983) (Arcadia) (PAL)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 56", "", "", "", "", "" }, - { "ff87d58125ae517eb7b09a0475a1ccdc", "", "", "SCSIcide (Score Hack 1) (24-02-2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ffb1cd548563158ce33f9d10268187e7", "Erik Eid", "", "Euchre (Beta) (NTSC) (12-09-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ffc0ff4305dd46b4b459885bd1818e2e", "Barry Laws Jr.", "", "Star Wars - The Battle of Alderaan (Star Strike Hack)", "Hack of Star Strike (Mattel)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ffdc0eb3543404eb4c353fbdddfa33b6", "CCE", "C-827", "Chopper Command (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ffe51989ba6da2c6ae5a12d277862e16", "Atari - Sears", "CX2627 - 6-99841", "Human Cannonball (1979) (Atari) (4K)", "AKA Cannon Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "ffebb0070689b9d322687edd9c0a2bae", "", "", "Spitfire Attack (1983) (Milton Bradley) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" } +static const char* const DefProps[DEF_PROPS_SIZE][22] = { + { "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0060a89b4c956b9c703a59b181cb3018", "CommaVid, Irwin Gaines - Ariola", "CM-008 - 712 008-720", "Cakewalk (1983) (CommaVid) (PAL)", "AKA Alarm in der Backstube", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "007d18dedc1f0565f09c42aa61a6f585", "CCE", "C-843", "Worm War I (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "008543ae43497af015e9428a5e3e874e", "Retroactive", "", "Qb (V2.09) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "00b7b4cbec81570642283e7fc1ef17af", "Sega - Beck-Tech, Steve Beck, Phat Ho", "006-01", "Congo Bongo (1983) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "26", "220", "", "" }, + { "00ce0bdd43aed84a983bef38fe7f5ee3", "20th Century Fox, Bill Aspromonte", "11012", "Bank Heist (1983) (20th Century Fox)", "AKA Bonnie and Clyde, Cops 'n' Robbers, Holdup, Rooring 20's", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "00ce76ad69cdc2fa36ada01ae092d5a6", "Bit Corporation", "PGP214", "Cosmic Avenger (4 Game in One) (1983) (BitCorp) (PAL)", "AKA StarMaster", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "00dc28b881989c39a6cf87a892bd3c6b", "CCE", "", "Krull (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "00e19ebf9d0817ccfb057e262be1e5af", "Atari, Ed Logg, Carol Shaw", "CX2639, CX2639P", "Othello (1981) (Atari) (PAL) [no grid markers]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "00e55b27fe2e96354cd21b8b698d1e31", "", "", "Phoenix (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "00eaee22034aff602f899b684c107d77", "Rainbow Vision - Suntek - Sunteck Corp", "SS-001", "Time Race (Rainbow Vision) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, + { "00f7985c20b8bdf3c557fac4d3f26775", "Aaron Curtis", "", "AStar (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "012020625a3227815e47b37fd025e480", "Rob Kudla", "", "Better Space Invaders (1999) (Rob Kudla) (Hack) [a]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "01293bd90a4579abb7aed2f7d440681f", "Century", "", "Snoopy (1983) (Century) (PAL)", "AKA Snoopy and the Red Baron", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "01297d9b450455dd716db9658efb2fae", "TechnoVision - Video Technology", "TVS1002", "Save Our Ship (1983) (TechnoVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "45", "", "", "" }, + { "012b8e6ef3b5fd5aabc94075c527709d", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (1983) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 56", "", "", "", "", "" }, + { "0164f26f6b38a34208cd4a2d0212afc3", "Coleco, Ed English", "2656", "Mr. Do! (1983) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "0173675d40a8d975763ee493377ca87d", "CBS Electronics, Ed English", "4L1751", "Roc 'n Rope (1984) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "01abcc1d2d3cba87a3aa0eb97a9d7b9c", "Jone Yuan Telephonic Enterprise Co", "", "Topy (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "01b09872dcd9556427761f0ed64aa42a", "Galaga Games", "", "River Raid (1984) (Galaga Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "01cb3e8dfab7203a9c62ba3b94b4e59f", "Atari, Mimi Nyden, Scott Smith, Robert Vieira", "CX26127", "Gremlins (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "01e5c81258860dd82f77339d58bc5f5c", "CCE", "", "Corrida da Matematica (CCE)", "AKA Math Gran Prix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "01e60a109a6a67c70d3c0528381d0187", "ITT Family Games, Perry Rhodan-Serie", "554-33 383", "Fire Birds (1983) (ITT Family Games) (PAL)", "AKA Sky Alien", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "01f584bf67b0e464014a8c8b5ea470e3", "Arcadia Corporation, Dennis Caswell", "5 AR-4200", "Labyrinth (Escape from the Mindmaster Beta) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "02066b17f29082412c6754c1a2d6302e", "", "", "Demo Image Series #3 - Baboon (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "024365007a87f213cbe8ef5f2e8e1333", "Atari, Frank Hausman, Mimi Nyden, Steve Woita", "CX2686", "Quadrun (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "025668e36a788e8af8ac4f1be7e72043", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2659", "Raiders of the Lost Ark (06-14-82) (Atari) (Prototype)", "Console ports are swapped", "Prototype", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "026180bf641ff17d8577c33facf0edea", "Activision, Steve Cartwright", "AX-022", "Seaquest (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0277c449fae63f6f1c8f94dedfcf0058", "", "", "Laser Demo (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "027a59a575b78860aed780b2ae7d001d", "CCE", "", "Pressure Cooker (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "028024fb8e5e5f18ea586652f9799c96", "Coleco - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen", "2468", "Carnival (1982) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "02811151906e477d47c135db5b1699c6", "", "", "FlickerSort Demo (Updated) (20-04-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "02a5fc90a0d183f870e8eebac1f16591", "HES", "771-422", "2 Pak Special - Star Warrior, Frogger (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "02ab2c47bc21e7feafa015f90d7df776", "Atari", "MA017600", "Diagnostic Test Cartridge 2.6 (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "02ced7ea2b7cb509748db6bfa227ebec", "Parker Brothers, Ed English, David Lamkins", "931502", "Frogger (1982) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "02cee0b140d2f1a1efcfb1d482a5c392", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "02dcba28c614fec7ca25955327128abb", "Andrew Wallace", "", "Laseresal 2002 (PAL) (PD) [a]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "02e3f4ba156fb578bef7d7a0bf3400c1", "", "", "Booster (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "033e21521e0bf4e54e8816873943406d", "20th Century Fox Video Games - Sirius Software, Dan Thompson", "11020", "Earth Dies Screaming, The (1983) (20th Century Fox)", "The Day the Earth Stood Still", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "034c1434280b0f2c9f229777d790d1e1", "Telegames", "5665 A016", "Baseball (1988) (Telegames) (PAL)", "AKA Super Challenge Baseball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0375f589f7da06d2d2be532e0d4d4b94", "", "", "Push (V0.04) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0383dc02cb82302da3d155fd108bfe3a", "AtariAge, Chris Spry", "CX26200", "Princess Rescue (2013) (Sprybug) (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "YES", "" }, + { "038e1e79c3d4410defde4bfe0b99cc32", "Atari, Tod Frye, Gary Shannon", "", "Aquaventure (08-12-1983) (Atari) (Prototype)", "AKA Sea Sentinel", "Unbelievably Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "039cf18b459d33b8a8fca31d06c4c244", "", "", "Demo Image Series #0 (12-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "03b1051c9374678363c899914412cfc5", "", "", "Incoming (30-10-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "03c3f7ba4585e349dd12bfa7b34b7729", "Sega, Jeff Lorenz", "004-01", "Star Trek - Strategic Operations Simulator (1983) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "03ff9e8a7af437f16447fe88cea3226c", "Bomb - Onbase", "CA285", "Wall-Defender (1983) (Bomb)", "AKA Wall Break", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "04014d563b094e79ac8974366f616308", "Atari, Andrew Fuchs, Courtney Granner, Jeffrey Gusman, Mark R. Hahn", "CX2690", "Pengo (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "041b5e56bbc650db574bd8db3fae2696", "", "", "Thrust (V1.0) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "043f165f384fbea3ea89393597951512", "Spectravision - Spectravideo", "SA-202", "Planet Patrol (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0443cfa9872cdb49069186413275fa21", "M Network, Patricia Lewis Du Long, Ron Surratt - INTV", "MT4518", "BurgerTime (1983) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "045035f995272eb2deb8820111745a07", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1983) (Arcadia)", "AKA Jungle Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "047ac3b9faea64522b7a23c4465a7aa8", "", "", "Defender (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "04856e3006a4f5f7b4638da71dad3d88", "Atari, Douglas Neubauer", "CX26176", "Radar Lock (1989) (Atari) (PAL)", "AKA Dog Fight", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "049626cbfb1a5f7a5dc885a0c4bb758e", "", "", "MegaMania (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "04b488d4eef622d022a0021375e7e339", "Home Vision - Gem International Corp. - VDI", "VCS83107", "Tennis (1983) (Home Vision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "04dfb4acac1d0909e4c360fd2ac04480", "", "", "Jammed (2001) (XYPE) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "04e737c9d53cd84bfd5ee679954e4706", "Jone Yuan Telephonic Enterprise Co", "", "Checkers (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "04fccc7735155a6c1373d453b110c640", "HES - Imagineering, David Lubar", "535", "My Golf (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0519f395d5f7d76be813b834aa51c0be", "Atari, Ian Shepard", "CX2604", "Space War (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0546f4e6b946f38956799dd00caab3b1", "Thomas Jentzsch", "", "My Golf (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "056f5d886a4e7e6fdd83650554997d0d", "Parker Brothers, Ed Temple", "931504", "Amidar (1982) (Parker Bros) (PAL)", "", "Uncommon", "", "", "", "A", "A", "", "", "", "", "", "", "", "", "", "", "" }, + { "056ff67dd9715fafa91fb8b0ddcc4a46", "", "", "Frisco (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "05824fcbe615dbca836d061a140a50e0", "Jeffry Johnston", "", "Radial Pong - Version 9 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "05aedf04803c43eb5e09dfd098d3fd01", "", "", "Keystone Kapers (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "05aff8f626ef870432ae3b3d9d5aa301", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "05b45ba09c05befa75ac70476829eda0", "Parker Brothers, Rex Bradford", "931507", "Star Wars - Jedi Arena (1983) (Parker Bros) (PAL)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 50", "", "", "", "", "" }, + { "05c60458ec69e7fe8b1be973852d84f1", "", "", "Test (1996) (J.V. Matthews) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "05ccf96247af12eef59698f1a060a54f", "Otto Versand", "600273", "King Arthur (1983) (Otto Versand) (PAL)", "AKA Dragonfire (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "05d61b925d3d2474bab83f0a79bb5df1", "Eckhard Stolberg", "", "Cosmic Ark Stars (1997) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "05eb4347f0ec8f4783983ca35ffd8d1b", "", "", "Qb (2.06) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "05ebd183ea854c0a1b56c218246fbbae", "Atari, Dan Hitchens", "CX2656", "SwordQuest - EarthWorld (1982) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "05f11fb2e45c4e47424d3cb25414d278", "", "", "Boring (NTSC) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "060c865c782debb047e6fd101c8923fc", "Atari", "CX26163P", "Freeway Rabbit (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0614ed51acd027d531e7c85c4f435292", "", "", "Narnia (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0651216c4a4a9c9ac5ada3013a317c72", "Jone Yuan Telephonic Enterprise Co", "", "Fishing Derby (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "06742cf522f23797157f215a1dc8a1a9", "", "", "Healthbars (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0685bd0bcb975ceef7041749a5454a48", "Piero Cavina", "", "11 Sprite Demo (Piero Cavina) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "06953ed762220dba63d63930d4ad0cc3", "", "", "Star Fire - Eckhard WIP (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "069c17beb1e8e0557adb8539fdcf6cba", "", "", "Phantom II & Pirate (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "06b0194ce992584c365278e0d7323279", "Activision", "", "Unknown Activision Game #2 (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "06b6c5031b8353f3a424a5b86b8fe409", "Activision, Mike Lorenzen - Ariola", "EAX-023 - 711 023-720", "Oink! (1983) (Activision) (PAL)", "AKA Das Schweinchen und der Wolf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "06cfd57f0559f38b9293adae9128ff88", "Telegames", "4317 A009", "Adventures on GX-12 (1988) (Telegames) (PAL)", "AKA Adventures of Tron", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "06db908011065e5ebb37f4e253c2a0b0", "", "", "Gopher (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "06e5dc181a8eda1c31cc7c581c68b6ef", "", "", "Tac-Scan (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "071f84d10b343c7c05ce3e32af631687", "Videospielkassette - Ariola", "PGP233", "Krieg der Sterne (Ariola) (PAL)", "AKA Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "072a6ea2181ca0df88ac0dedc67b239d", "", "", "Multiple Missiles Demo (19-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "073cb76b006af034fd150be3f5e0e7e6", "", "", "Mobile 48 Sprite Kernel (Bug Fixed) (10-01-2003) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "073d7aff37b7601431e4f742c36c0dc1", "", "", "Bermuda (Unknown) (PAL)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "074ec425ec20579e64a7ded592155d48", "Atari - Sculptured Software, Steve Aguirre", "CX26162", "Fatal Run (Ultimate Driving) (1991) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "075069ad80cde15eca69e3c98bd66714", "CCE", "C-803", "Bobby Is Going Home (1983) (CCE)", "AKA Bobby Vai Para Casa", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0751f342ee4cf28f2c9a6e8467c901be", "Atari, Mimi Nyden, Joseph Tung", "CX26152", "Super Baseball (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "07973be3ecfd55235bf59aa56bdef28c", "Quelle", "732.052 6", "Eddy Langfinger, der Museumsdieb (1983) (Quelle) (PAL)", "AKA A Mysterious Thief", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "079fe9103515d15bc108577e234a484d", "", "", "Multi-Color Demo 0 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "07a3af1e18b63765b6807876366f5e8a", "Joe Grand", "", "SCSIcide Pre-release 2 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "07c76f2d88552d20ad2c0ed7aef406c6", "Cody Pittman", "", "Blob (Cody Pittman) (Hack)", "Hack of Halloween", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "07f42847a79e4f5ae55cc03304b18c25", "Zellers", "", "Sea Hawk (Zellers)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "07f84db31e97ef8d08dc9fa8a5250755", "Supergame", "", "Enduro (1984) (Supergame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "07f91e33e76f53bb9d2731fd5d8a35a5", "Atari", "CX2632", "Space Invaders (1978) (Atari) [t1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0805366f1b165a64b6d4df20d2c39d25", "Atari, Dan Hitchens", "CX2650", "Berzerk (1982) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "08188785e2b8300983529946dbeff4d2", "Atari, Carla Meninsky, Ed Riddle - Sears", "CX2611 - 99821, 49-75149", "Indy 500 (1977) (Atari) (4K)", "Uses the Driving Controllers", "", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "28", "", "", "" }, + { "081e2c114c9c20b61acf25fc95c71bf4", "Parker Brothers, Ed English, David Lamkins", "PB5300", "Frogger (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "082fdc8bd47fef01482ce5883c4ffdb8", "Charles Morgan", "", "Tanks DX (Charles Morgan) (Hack)", "Hack of Tanks But No Tanks", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0832fb2ee654bf9382bc57d2b16d2ffc", "Apollo, Ed Salvo", "AP-1001", "Skeet Shoot (1981) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "083e7cae41a874b2f9b61736c37d2ffe", "Imagic, Rob Fulop, Bob Smith", "720106-2A, IA3600P, EIX-009-04I", "Riddle of the Sphinx (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "085322bae40d904f53bdcc56df0593fc", "Parker Brothers, Dave Engman, Dawn Stockbridge", "PB5340", "Tutankham (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0856f202b18cd46e44fd1dc3b42e9bfb", "", "", "Frame Counter 1 (2001) (Jake Patterson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0866e22f6f56f92ea1a14c8d8d01d29c", "Androbot - Western Technologies, Michael Case, Lenny Carlson", "", "AndroMan on the Moon (1984) (Western Tech) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0890a5b089191f45d0f08dd1e3235687", "", "", "Star Fire - 4K Version (25-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0894aa7be77521f9df562be8d9555fe6", "CBS Electronics, Dan Kitchen, Garry Kitchen", "4L1700, 4L1701, 4L1702, 4L1802, 4L2274", "Donkey Kong (1982) (CBS Electronics) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "08989fa4ff537f5dbd611aff4019521a", "Atari, Gary Palmer", "CX26163P", "Fun with Numbers (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "08bd4c1dcc843f6a0b563d9fd80b3b11", "Quelle", "343.273 9", "Phantompanzer II (1983) (Quelle) (PAL)", "AKA Thunderground", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "08bf437d012db07b05ff57a0c745c49e", "Arcadia Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Meteoroids (1982) (Arcadia) (Prototype)", "Suicide Mission Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "08d1b6d75206edb999252caf542a2c7f", "Larry Petit", "", "Super Home Run (2003) (Larry Petit) (Hack)", "Hack of Home Run", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "08d60a58a691c7f690162850302dc0e1", "", "", "Poker Squares (V0.27) (PAL) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "08e5960bb52d9a3e2c9954677b5e4472", "Atari - CCW, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (10-20-1982) (Atari) (Prototype)", "Uses the Keypad Controllers", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "34", "", "", "" }, + { "08f4dc6f118f7c98e2406c180c08e78e", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Tug of War (2 of 3) (1983) (Arcadia) (PAL)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "02", "", "", "", "", "" }, + { "08f853e8e01e711919e734d85349220d", "Atari, Jerome Domurat, Michael Sierchio", "CX2667", "RealSports Soccer (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0906c6e0e4bda9c10cfa4c5fc64d2f4b", "Retroactive", "", "Qb (V0.12) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "090f0a7ef8a3f885048d213faa59b2f8", "Carrere Video - Western Technologies - Teldec - Prism", "USC1012", "M.A.D. (1983) (Carrere Video) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "09274c3fc1c43bf1e362fda436651fd8", "Thomas Jentzsch", "", "Acid Drop (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "6", "240", "", "" }, + { "09388bf390cd9a86dc0849697b96c7dc", "Absolute Entertainment, Alex DeMeo", "AG-045-04, AK-045-04", "Pete Rose Baseball (1988) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0945081a6bd00345ff3d58eb7a07330a", "", "", "Stampede (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0956285e24a18efa10c68a33846ca84d", "Dismac", "", "Viagem Espacial (Dismac)", "AKA Star Voyager", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0963aa9f7f6cf5a36ff700001583624e", "Franklin Cruz", "", "Space Invaders 2 (Hack) [o1]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "096649575e451508006b17e0353259a5", "Justin J. Scott", "", "Yar Vs. Yar (2002) (Justin J. Scott) (Hack)", "Hack of Yars' Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "097074f24cde141fe6a0f26a10333265", "", "", "Marble Craze (V0.90) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "097936b07e0e0117b9026ae6835eb168", "Imagic, Dennis Koble", "720100-2B, IA3000P", "Trick Shot (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "09abfe9a312ce7c9f661582fdf12eab6", "Atari, Douglas Neubauer", "CX26154", "Super Football (1988) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "09d19274c20768f842e8fae84b766abe", "", "", "Star Fire - Animated Patricles (06-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "09e1ecf9bd2a3030d5670dba7a65e78d", "Atari, James Andreasen", "CX2654", "Haunted House (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "09f89bbfa2ab00f1964d200e12d7ced0", "Atari", "MA017600", "Diagnostic Test Cartridge 2.6 (1982) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0a1b98937911d621b004b1617446d124", "", "", "Hangman Pac-Man Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0a981c03204ac2b278ba392674682560", "Atari, Bob Whitehead - Sears", "CX2651 - 99805, 49-75602", "Blackjack (1977) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, + { "0aa208060d7c140f20571e3341f5a3f8", "U.S. Games Corporation - Western Technologies, Jeff Corsiglia, Paul Allen Newell, Tom Sloper", "VC1009", "Towering Inferno (1982) (U.S. Games)", "Uses the Joystick Controllers (swapped)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "220", "YES", "" }, + { "0abf64ca504a116adca80f77f85e00fb", "", "", "Cube Conquest (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0ac0d491763153fac75f5337ce32a9d6", "", "", "SPAM Image Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0acaf71e60b89f6b6eab63db6ab84510", "", "", "This Planet Sucks (Greg Troutman) [a2]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, + { "0aceb7c3bd13fe048b77a1928ed4267d", "Imagic, Bob Smith", "720102-2B, IA3201P, EIX-011-04I", "Star Voyager (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0ad9a358e361256b94f3fb4f2fa5a3b1", "Atari, Carol Shaw, Nick 'Sandy Maiwald' Turner - Sears", "CX2608 - 49-75165", "Super Breakout (1982 - 1981) (Atari) [a]", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, + { "0adb21206de92e8aec5ef295805ebb90", "", "", "Solaris (Genesis)", "Genesis controller (C switches to map mode)", "Hack of Solaris", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "0ae3497e731ca0bf6a77b23441d9d9f9", "", "", "Analog Clock (V0.0) (20-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0af51ceb4aecc7a8fc89781ac44a1973", "Barry Laws Jr.", "", "Face Invaders Deluxe (Barry Laws Jr.) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0afe6ae18966795b89314c3797dd2b1e", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692, CX2692P", "Moon Patrol (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0b01909ba84512fdaf224d3c3fd0cf8d", "", "", "Revenge of the Apes (Hack)", "Hack of Planet of the Apes", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0b1056f1091cfdc5eb0e2301f47ac6c3", "Tigervision - Software Electronics Corp., Karl T. Olinger - Teldec", "7-001 - 3.60001 VE", "King Kong (1982) (Tigervision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0b17ed42984000da8b727ca46143f87a", "Atari - CCW, Christopher H. Omarzu", "CX26104", "Big Bird's Egg Catch (05-17-1983) (Atari) (Prototype)", "Uses the Keypad Controller", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, + { "0b24658714f8dff110a693a2052cc207", "CCE", "C-815", "Seaquest (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0b33252b680b65001e91a411e56e72e9", "CCE", "C-832", "Atlantis (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0b4e793c9425175498f5a65a3e960086", "CCE", "", "Kung Fu Master (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0b55399cf640a2a00ba72dd155a0c140", "Imagic, Wilfredo Aguilar, Michael Becker, Rob Fulop", "720111-1A, 03205", "Fathom (1983) (Imagic)", "AKA Scuba", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "0b577e63b0c64f9779f315dca8967587", "Videospielkassette - Ariola", "PGP236", "Raketen-Angriff (Ariola) (PAL)", "AKA Missile Control", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0b8d3002d8f744a753ba434a4d39249a", "Sears Tele-Games, Robert Zdybel", "CX2619 - 49-75159", "Stellar Track (1981) (Sears)", "AKA Stella Trak", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "0bf19e40d5cd8aa5afb33b16569313e6", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (01-04-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0bf1e354304f46c0caf8fc0f6f5e9525", "Arcadia Corporation, Stephen Harland Landrum", "AR-4105", "Official Frogger (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, + { "0bfabf1e98bdb180643f35f2165995d0", "Atari, Bob Whitehead - Sears", "CX2623 - 6-99819, 49-75108, 49-75125", "Home Run (1978) (Atari)", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "0c0392db94a20e4d006d885abbe60d8e", "", "", "Dodge Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0c35806ff0019a270a7acae68de89d28", "Froggo", "FG1003", "Task Force (1987) (Froggo)", "AKA Gangster Alley", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0c48e820301251fbb6bcdc89bd3555d9", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Stargate (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0c54811cf3b1f1573c9164d5f19eca65", "Activision, David Crane - Ariola", "EAG-001, PAG-001, EAG-001-04B, EAG-001-04I - 711 001-715", "Dragster (1980) (Activision) (PAL)", "AKA Dragster Rennen, Drag Strip", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0c7926d660f903a2d6910c254660c32c", "Atari, Larry Kaplan", "CX2602, CX2602P", "Air-Sea Battle (1977) (Atari) (PAL)", "AKA Anti-Aircraft", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "0c7bd935d9a7f2522155e48315f44fa0", "Carrere Video - Western Technologies, Jeff Corsiglia, Paul Allen Newell, Tom Sloper - Teldec - Prism", "USC1009", "Infernal Tower (1983) (Carrere Video) (PAL)", "AKA Towering Inferno", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "YES", "" }, + { "0c80751f6f7a3b370cc9e9f39ad533a7", "Atari, Carla Meninsky", "CX2610", "Warlords (1981) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 50", "", "", "", "", "" }, + { "0cb7af80fd0ddef84844481d85e5d29b", "", "", "Mr. Pac-Man (El Destructo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0cc8224ff1edfe458e8629e9e5fe3f5b", "", "", "Trick 12 (2001) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0cdd9cc692e8b04ba8eb31fc31d72e5e", "Thomas Jentzsch", "", "Wing War (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0cebb0bb45a856b23f56d21ce7d1bc34", "20th Century Fox Video Games, Bill Aspromonte", "11131", "Crash Dive (1983) (20th Century Fox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0cfdd2f3b243cac21f38a0f09f54bead", "", "", "Overhead Adventure Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0d07d2c1be1a5eaaea235a533bcda781", "", "", "Scrolling Playfield 1 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0d09cff0d28033c02c3290edfc3a5cea", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0d1b3abf681a2fc9a6aa31a9b0e8b445", "Atari", "CX26163P", "Laser Blast (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0d27c7f5db349b592f70f68daf5e8f3b", "", "", "Space Instigators (21-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0d35618b6d76ddd46d2626e9e3e40db5", "", "", "X-Doom V.26 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0d5af65ad3f19558e6f8e29bf2a9d0f8", "Atari - Sculptured Software, Adam Clayton", "CX26151, CX26151P", "Dark Chambers (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "0d6b974fe58a1bdd453600401c407856", "Atari", "", "128-in-1 Junior Console (Chip 3 or 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0d786a41695e5fc8cffd05a6dbb3f659", "", "", "Scrolling Playfield With Score (10-02-2003) (Aaron Bergstrom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0d7e630a14856f4d52c9666040961d4d", "", "", "Wavy Line Test (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0d90a0ee73d55539b7def24c88caa651", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0db4f4150fecf77e4ce72ca4d04c052f", "Atari, Carol Shaw - Sears", "CX2618 - 49-75123", "3-D Tic-Tac-Toe (1980) (Atari)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0dd4c69b5f9a7ae96a7a08329496779a", "Tigervision - Software Electronics Corp., Karl T. Olinger - Teldec", "7-001 - 3.60001 VE", "King Kong (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0de53160a8b54c3aa5aed8d68c970b62", "Quelle", "806.174 9", "Fuchs & Schweinchen Schlau (1983) (Quelle) (PAL)", "AKA Oink!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0dfbdadf8f1bc718e7e1bb3ccd5fef3d", "", "", "Mr. Pac-Man (New start tune) (El Destructo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0e0808227ef41f6825c06f25082c2e56", "", "", "Candi (Hack) [a]", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0e08cd2c5bcf11c6a7e5a009a7715b6a", "", "", "Boing! (PD) [a1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0e224ea74310da4e7e2103400eb1b4bf", "Atari, Gary Shannon, Howard Scott Warshaw", "", "Mind Maze (10-10-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "MINDLINK", "", "", "", "", "", "", "" }, + { "0e4b2b6e014a93ef8be896823da0d4ec", "", "", "Skiing (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0e713d4e272ea7322c5b27d645f56dd0", "Home Vision - Gem International Corp. - VDI", "VCS83105", "Panda Chase (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "0e7e73421606873b544e858c59dc283e", "Digivision", "", "Super Soccer (Digivision)", "AKA RealSports Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "0e86470791b26292abe1c64545c47985", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Down on the Line (3 of 3) (1983) (Arcadia) (PAL)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "01 70", "", "", "", "", "" }, + { "0ec93f519bb769e0d9f80e61f6cc8023", "Atari - GCC, John Allred, Mike Feinstein", "CX2688", "Jungle Hunt (02-25-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0eebfb60d437796d536039701ec43845", "Fabrizio Zavagli", "", "Cakewalk (Fabrizio Zavagli)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0eecb5f58f55de9db4eedb3a0f6b74a8", "Xonox - Beck-Tech", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "0ef64cdbecccb7049752a3de0b7ade14", "Atari, Joe Decuir, Larry Caplan, Steve Mayer, Larry Wagner", "CX26163P", "Combat (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "0f14c03050b35d6b1d8850b07578722d", "Jeffry Johnston", "", "Radial Pong - Version 10 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0f24ca5668b4ab5dfaf217933c505926", "", "", "Fantastic Voyage (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0f2e09c71cc216f79d22a804152ba24b", "Bob Colbert", "", "Scroller Demo (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "0f341d1f4e144e3163d9a5fc5a662b79", "", "", "RUN Platform Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "0f39fc03d579d0d93a6b729a3746843e", "Atari, Sam Comstock, Richard Dobbis, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (05-27-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0f643c34e40e3f1daafd9c524d3ffe64", "Atari, Robert C. Polaro, Alan J. Murphy - Sears", "CX2609 - 49-75186", "Defender (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0f6676b05621f80c670966e2995b227a", "", "", "Globe Trotter Demo 1 (24-03-2003) (Weston)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0f738dc44437557624eb277ed7ad91c9", "", "", "Grand Prix (Unknown) (PAL)", "AKA Grand Prix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0f8043715d66a4bbed394ef801d99862", "Quelle", "684.733 9", "Robin Hood (1983) (Quelle) (PAL)", "AKA Save Our Ship", "", "", "", "", "", "", "", "", "", "", "", "", "", "45", "", "", "" }, + { "0f95264089c99fc2a839a19872552004", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0fba7d8c3520bdb681f75494e498ec36", "", "", "Gunfight 2600 - Final Run (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0fbf618be43d4396856d4244126fe7dc", "Quelle", "805.784 6", "Labyrinth (1983) (Quelle) (PAL)", "AKA Maze Craze", "", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "" }, + { "0fc161704c46e16f7483f92b06c1558d", "CCE", "C-853", "Spider Fighter (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0fcff6fe3b0769ad5d0cf82814d2a6d9", "Suntek", "SS-027", "Zoo Fun (Suntek) (PAL)", "AKA Panda Chase", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "0fd72a13b3b6103fc825a692c71963b4", "Imagic, Rob Fulop", "720104-2A, IA3204P, EIX-008-04I", "Cosmic Ark (1982) (Imagic) (PAL) [selectable starfield]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "101ab60f4000a5d13792ef0abad5f74b", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "102672bbd7e25cd79f4384dd7214c32b", "Atari, Alan Miller - Sears", "CX2642 - 6-99814", "Hunt & Score - Memory Match (1978) (Atari)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "103d4c890c2108cb536372c98d093e5f", "", "", "Star Fire - Star Background (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "103e9d616328969f5d7b4e0a381b25d5", "", "", "Playfield Illustration and Logo Demo (2001) (Jake Patterson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "103f1756d9dc0dd2b16b53ad0f0f1859", "Home Vision, Gem International Corp.", "", "Go Go Home Monster (1983) (Home Vision) (PAL)", "AKA Go Go Home", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "104468e44898b8e9fa4a1500fde8d4cb", "AtariAge, Chris Spry", "CX26200", "Princess Rescue (2013) (Sprybug)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "106326c262dfd3e8eaeabd961d2a0519", "", "", "PAL-NTSC Detector (15-11-2002) (CT)[a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "106855474c69d08c8ffa308d47337269", "Atari - Sculptured Software, Adam Clayton", "CX26151", "Dark Chambers (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "107cc025334211e6d29da0b6be46aec7", "Atari, Bob Smith - Sears", "CX2648 - 49-75161", "Video Pinball (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1086ff69f82b68d6776634f336fb4857", "Activision, David Crane", "AG-009", "Bloody Human Freeway (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "10958cd0a1a81d599005f1797ab0e51d", "", "", "Centipede 2k (2000) (PD) (Hack)", "Hack of Centipede", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "10a3cd14e5dcfdde6ff216a14ce7b7dd", "Atari", "CX262, CX2627P", "Human Cannonball (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "10af8728f975aa35a99d0965de8f714c", "Dinatronic", "", "Seaquest (Dinatronic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "10c8cfd8c37522f11d47540ff024e5f9", "Canal 3 - Intellivision", "C 3016", "Demon Attack (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "10eae73a07b3da044b72473d8d366267", "Funvision - Fund. Int'l Co.", "", "Karate (1982) (Funvision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "10f0ecaf962aef1fc28abed870b01b65", "Atari, Paul Donaldson", "", "Bionic Breakthrough (06-22-1984) (Atari) (Prototype)", "Uses the Mindlink Controller", "Prototype", "", "", "", "", "", "", "", "MINDLINK", "", "", "", "", "", "", "", "" }, + { "10f62443f1ae087dc588a77f9e8f43e9", "Atari, Carla Meninsky", "CX2637, CX2637P", "Dodge 'Em (1980) (Atari) (PAL) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "110ac8ecaf1b69f41bc94c59dfcb8b2d", "", "", "Demon Attack (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "111029770226b319524134193886a10e", "Hozer Video Games", "", "Gunfight 2600 - One Limit Reached! (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "11330eaa5dd2629052fac37cfe1a0b7d", "128-in-1 Junior Console", "", "Human Cannonball (128-in-1 Junior Console) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "113cd09c9771ac278544b7e90efe7df2", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari) [no grid markers]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "114c599454d32f74c728a6e1f71012ba", "Activision, Bob Whitehead - Ariola", "EAX-015, EAX-015-04I - 711 015-725", "Chopper Command (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "11bcf5c752088b5aaf86d6c7a6a11e8d", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "11cf751bc8173db105eabd119c5844ba", "", "", "Star Fire - Crosshair (12-02-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "11e7e0d9437ec98fa085284cf16d0eb4", "", "", "Bowling (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "11f9532557e4c9569f4b242164006161", "Chris Walton, Justin Hairgrove, Tony Morse", "", "Hunchy II (2005) (PAL)", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1201c18cf00d2c236f42e4d7d8c86aa1", "", "", "Nick Bensema Demo (Nick Bensema)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "12123b534bdee79ed7563b9ad74f1cbd", "Absolute Entertainment, Alex DeMeo", "AG-041-04", "Title Match Pro Wrestling (1987) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1228c01cd3c4b9c477540c5adb306d2a", "Atari, Alan Miller", "CX26163P", "Basketball (32 in 1) (1988) (Atari) (PAL)", "Console ports are swapped", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "1266b3fd632c981f3ef9bdbf9f86ce9a", "Activision, Bob Whitehead", "EAZ-034-04, EAZ-034-04I", "Private Eye (1984) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1267e3c6ca951ff1df6f222c8f813d97", "", "", "Dragonfire (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1278f74ca1dfaa9122df3eca3c5bcaad", "Quelle", "719.013 5", "Ungeheuer der Tiefe (Quelle) (PAL)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1287535256bf5dff404839ac9e25c3e7", "PacManPlus", "Rev 2", "Alien Pac-Man (PacManPlus) (Hack)", "Hack of Alien", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "12937db3d4a80da5c4452b752891252d", "Digitel", "", "Megamania (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "12bca8305d5ab8ea51fe1cfd95d7ab0e", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00250", "Summer Games (1987) (Epyx) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "12d7e0d6b187889f8d150bf7034d1db2", "", "", "Poker Squares (V0.0e) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "130c5742cd6cbe4877704d733d5b08ca", "Home Vision - Gem International Corp. - VDI", "VCS83109", "World End (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1323c45d660f5a5b6d5ea45c6c4cbe4a", "Canal 3 - Intellivision", "", "Enduro (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "133456269a03e3fdae6cddd65754c50d", "Tigervision - Software Electronics Corporation - Teldec", "7-006 - 3.60008 VG", "Springer (1983) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "133a4234512e8c4e9e8c5651469d4a09", "Atari, Andrew Fuchs, Jeffrey Gusman, Dave Jolly, Suki Lee", "CX26117", "Obelix (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "133b56de011d562cbab665968bde352b", "Activision, John Van Ryzin", "AG-038-04", "Cosmic Commuter (1984) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1343de49c2a50d99176255f99f0d0234", "Gray Games & AtariAge", "", "E.T. Book Cart (PAL)", "Charles F. Gray & Michael Rideout", "", "", "", "", "", "", "", "", "", "", "", "", "", "24", "280", "YES", "55" }, + { "13448eb5ba575e8d7b8d5b280ea6788f", "Digivision", "", "Crackpots (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1345e972dbe08ea3e70850902e20e1a5", "Greg Troutman", "", "Dark Mage (rough beta) (Greg Troutman) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "1351c67b42770c1bd758c3e42f553fea", "Digivision", "", "Keystone Kapers (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "135708b9a7dd20576c1b66ab2a41860d", "", "", "Hangman Man Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "13584411da0a8d431991035423fdc0dc", "Jone Yuan Telephonic Enterprise Co", "", "Skiing (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1367e41858be525710eb04d0dab53505", "Kyle Pittman", "", "Zelda (2003) (Kyle Pittman) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "136f75c4dd02c29283752b7e5799f978", "Atari, Dan Hitchens - Sears", "CX2650 - 49-75168", "Berzerk (1982) (Atari)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "13895ef15610af0d0f89d588f376b3fe", "Tigervision, Rorke Weigandt", "7-005", "Marauder (1982) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "13a37cf8170a3a34ce311b89bde82032", "Atari - GCC, Mark Ackerman, Tom Calderwood, Glenn Parker", "CX2684, CX2684P", "Galaxian (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "13a991bc9c2ff03753aeb322d3e3e2e5", "Funvision - Fund. International Co.", "", "Galactic (Funvision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "13aa1f9ac4249947e4af61319d9a08f2", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "13abc32f803165c458bb086fa57195fb", "Christian Samuel", "", "E.T. The Extra-Testical (Christian Samuel) (Hack)", "Hack of E.T. The Extra-Terrestrial", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "13ccc692f111d52fec75d83df16192e2", "Canal 3 - Intellivision", "", "Fishing Derby (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "13d8326bf5648db4dafce45d25e62ddd", "", "", "Atari Logo Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "13dfb095e519a555a5b60b7d9d7169f9", "", "", "Red Line Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "140909d204abd6841c64cdad4d7765b4", "", "", "Moving Blue Ladder Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "14163eb2a3ddd35576bd8527eae3b45e", "", "", "Multi-Color Demo 6 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1423f560062c4f3c669d55891a2bcbe7", "CCE", "C-859", "MASH (1983) (CCE) [a]", "AKA M.A.S.H", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1428029e762797069ad795ce7c6a1a93", "", "", "Thunderground (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "143918368f4f4dfff90999188c0197c9", "", "", "Unknown Title (bin00016 (200110)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1442d1b35a6478fba22ae7dd1fcb5634", "", "", "Thrust (V0.2) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "148471144ccebd7f6aa9aa9215896533", "Parker Brothers - JWDA, Todd Marshall", "PB5550", "Q-bert's Qubes (1984) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "149b543c917c180a1b02d33c12415206", "CCE", "C-857", "Superman (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "14a56b493a8d9d10e94a3e100362e3a2", "Hozer Video Games", "", "Gunfight 2600 - Early Play-kernel (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "14b1e30982962c72f426e2e763eb4274", "Atari, Carol Shaw - Ralph Lauren", "", "Polo (1978) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "14c2548712099c220964d7f044c59fd9", "First Star Software, Alex Leavens, Shirley Ann Russell", "", "Boing! (1983) (First Star Software)", "AKA Bubbles, Soap Suds, The Emphysema Game", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "14d365bbfaac3d20c6119591f57acca4", "", "", "Video Life (Unknown) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "14dbb3686dd31964332dc2ef0c55cad0", "", "", "Demo Image Series #15 - Three Marios (PAL) (Non-Interleave) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "151c33a71b99e6bcffb34b43c6f0ec23", "Parker Brothers, Laura Nikolich", "", "Care Bears (1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "151fa3218d8d7600114eb5bcd79c85cb", "Atari - CCW, Christopher H. Omarzu", "CX26104", "Big Bird's Egg Catch (05-02-1983) (Atari) (Prototype)", "Uses the Keypad Controller", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, + { "152c253478b009c275e18cd731b48561", "", "", "Quest (11-10-2002) (Chris Larkin)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "153f40e335e5cb90f5ce02e54934ab62", "Absolute Entertainment, Alex DeMeo", "EAZ-041-04I", "Title Match Pro Wrestling (1987) (Absolute) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1542662f665d2ffaa77b4b897dd2e2af", "", "", "Starfield (V1.0) (2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "155fa7f479dcba3b10b1494e236d6010", "Skyworks", "", "Tomcat (2002) (Skyworks) (PAL)", "AKA The F-14 Flight Simulator", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "157356f80c709ab675961d8b8b207e20", "", "", "Multi-Sprite Game V2.5 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "157bddb7192754a45372be196797f284", "Atari, Warren Robinett - Sears", "CX2613, 49-75154", "Adventure (1980) (Atari)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "159e5cd6ccb968015f49aed5adbc91eb", "Justin J. Scott", "", "Yar's Defeat (2002) (Justin J. Scott) (Hack)", "Hack of Yars' Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "15b498199ed0ed28057bf0dbdce9b8d8", "Hozer Video Games", "", "Jammed (V0.2) (Demo) (2001) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "15bcd74f2f1f2a63e1aa93e90d2c0555", "", "", "Incoming (22-08-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "15bf2ef7583bfcbbba630847a1dc5539", "Erik Eid", "", "Euchre (Jul 15) (2002) (Eric Eid) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "15c11ab6e4502b2010b18366133fc322", "Atari - Axlon, Tod Frye - Heuristica, Augustin Ortiz", "CX26169", "Shooting Arcade (09-19-1989) (Atari) (Prototype)", "Uses the Light Gun Controller (left only)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "15dd21c2608e0d7d9f54c0d3f08cca1f", "Data Age, J. Ray Dettling", "112-008", "Frankenstein's Monster (1983) (Data Age)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "15fe28d0c8893be9223e8cb2d032e557", "", "", "Towering Inferno (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "1619bc27632f9148d8480cd813aa74c3", "Thomas Jentzsch", "", "Steeple Chase (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "A", "", "", "", "", "", "", "", "", "220", "YES", "" }, + { "161ded4a85d3c78e44fffd40426f537f", "", "", "JtzBall (Alpha) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "163e7e757e2dc44469123ff0e5daec5e", "", "", "Many Blue Bars and Text Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "169d4c7bd3a4d09e184a3b993823d048", "", "", "Superman (Unknown) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "16cb43492987d2f32b423817cdaaf7c4", "Atari, Larry Kaplan - Sears", "CX2602 - 99802, 6-99802, 49-75102", "Air-Sea Battle (1977) (Atari)", "AKA Target Fun (Anti-Aircraft)", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "16cc6d1b4ddce51c767a1ba8e5ff196c", "", "", "Big - Move This Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "16e04823887c547dc24bc70dff693df4", "Atari", "CX26163P", "Tennis (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "16ee443c990215f61f7dd1e55a0d2256", "Spectravideo, David Lubar", "SA-218, SA-218C", "Bumper Bash (1983) (Spectravideo) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "54", "", "", "" }, + { "16f494f20af5dc803bc35939ef924020", "Mark De Smet", "", "Video Simon (Mark De Smet)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "16fbb36a6124567405a235821e8f69ee", "", "", "Star Fire (28-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "170e7589a48739cfb9cc782cbb0fe25a", "M Network - APh Technological Consulting, Hal Finney - INTV", "MT5666", "Astroblast (1982) (M Network) [fixed]", "Can also use left joystick", "Uncommon", "", "", "", "", "", "", "", "PADDLES", "", "YES", "AUTO 55", "", "", "", "", "" }, + { "171cd6b55267573e6a9c2921fb720794", "Kurt Howe", "", "Adventure 34 (Kurt Howe) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1733772165d7b886a94e2b4ed0f74ccd", "", "", "Boring Journey Escape (Hack)", "Hack of Journey - Escape", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, + { "1738b2e3f25ab3eef3cecb95e1d0d957", "", "", "Hangman Monkey Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "17512d0c38f448712f49f36f9d185c4e", "Retroactive", "", "Qb (Release Candidate #1) (Retroactive)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "17515a4d0b7ea5029ffff7dfa8456671", "Piero Cavina", "", "Multi-Sprite Demo V1.1 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "176d3fba7d687f2b23158098e103c34a", "Zach Matley", "", "Combat AI (16-02-2003) (Zach Matley)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "34", "", "", "" }, + { "177504abd4260c4265e1338955e9fa47", "HCC Software", "", "Pitfall! (Steroids Hack)", "Hack of Pitfall! (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1782929e1c214b70fb6884f77c207a55", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (Prototype)", "Pitfall Harry's Jungle Adventure (Jungle Runner)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "17ba72433dd41383065d4aa6dedb3d91", "", "", "SCSIcide (09-06-2001) (Joe Grand)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "17badbb3f54d1fc01ee68726882f26a6", "M Network - APh Technological Consulting, Hal Finney, Bruce Pedersen - INTV", "MT5659", "Space Attack (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "17bbe288c3855c235950fea91c9504e9", "Dismac", "", "Pega Ladrao (Dismac)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "17c0a63f9a680e7a61beba81692d9297", "U.S. Games Corporation - Western Technologies, Tom Sloper", "VC2004", "Picnic (1983) (U.S. Games)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, + { "17d000a2882f9fdaa8b4a391ad367f00", "Atari - GCC", "CX2676", "Centipede (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "17ee158d15e4a34f57a837bc1ce2b0ce", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691, CX2691P", "Joust (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "17ee23e5da931be82f733917adcb6386", "Salu, Dennis M. Kiss", "460758", "Acid Drop (1992) (Salu) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "50", "256", "", "" }, + { "1802cc46b879b229272501998c5de04f", "Atari - CCW, Christopher H. Omarzu", "CX26104", "Big Bird's Egg Catch (1983) (Atari)", "Uses Kids/Keypad Controllers", "Rare", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "183020a80848e06a1238a1ab74079d52", "Thomas Jentzsch", "", "Missile Command (Amiga Mouse) (2002) (TJ) (PAL)", "Uses Amiga Mouse Controller", "Homebrew", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "YES", "" }, + { "1862fca4f98e66f363308b859b5863af", "Atari", "", "128-in-1 Junior Console (Chip 1 of 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "18760f1f9ca5e18610115cf7b815b824", "", "", "Star Fire (23-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "18a970bea7ac4d29707c8d5cd559d03a", "", "", "Bridge (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "18b28b386abdadb3a700ac8fb68e639a", "Manuel Polik", "", "Gunfight 2600 (MP) (PAL)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "18bebbbd41c234f82b1717b1905e6027", "", "", "Space Instigators (Public Release) (02-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "18d26111cef66dff0c8af8cf0e117843", "", "", "Tunnel Demo (Cycling Colours 2) (29-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "18dc28bc22402f21e1c9b81344b3b8c5", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2684, CX2684P", "Galaxian (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "18ed63e3ce5bc3dd2d8bd188b807f1a2", "", "", "Stell-A-Sketch (Bob Colbert) (PD) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "18f299edb5ba709a64c80c8c9cec24f2", "Home Vision - Gem International Corp. - VDI", "VCS83111", "Asteroid Fire (1983) (Home Vision) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, + { "19098c46da0640f2b5763167dea6c716", "Andrew Wallace", "", "Laseresal 2002 (NTSC) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "191449e40b0c56411c70772706f79224", "", "", "Multi-Color Demo 2 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "19162393786098d50587827588198a86", "Jone Yuan Telephonic Enterprise Co", "", "Flag Capture (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "191ac4eec767358ee3ec3756c120423a", "", "", "Checkers (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "192aa2e8c795c9e10a7913e5d41feb81", "Atari - GCC, Jaques Hugon, Seth Lipkin", "CX26125", "Los Angeles 1984 Games (1984) (Atari) (Prototype) (PAL)", "AKA Track and Field (Uses Track & Field Controller)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "193f060553ba0a2a2676f91d9ec0c555", "Atari, Carol Shaw", "CX2636, CX2636P", "Video Checkers (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "199985cae1c0123ab1aef921daace8be", "", "", "Euchre (Release Candidate 2) (PAL) (01-10-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "199eb0b8dce1408f3f7d46411b715ca9", "Parker Brothers, David Lamkins, Laura Nikolich", "PB5900", "Spider-Man (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "19a9d3f9fa1b1358fb53009444247aaf", "", "", "Blackjack (Unknown) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "56", "", "", "" }, + { "19abaf2144b6a7b281c4112cff154904", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "19d6956ff17a959c48fcd8f4706a848d", "PlayAround - J.H.M.", "202", "Burning Desire (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "19d9b5f8428947eae6f8e97c7f33bf44", "", "", "Fortress (Dual Version) (20-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "19e739c2764a5ab9ed08f9095aa2af0b", "Atari, Andrew Fuchs, Jeffrey Gusman, Dave Jolly, Suki Lee", "CX26117", "Obelix (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "19e761e53e5ec8e9f2fceea62715ca06", "Panda", "104", "Scuba Diver (1983) (Panda)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1a23540d91f87584a04f184304a00648", "", "", "Race Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1a613ce60fc834d4970e1e674b9196b3", "Home Vision - Gem International Corp. - VDI", "VCS83135", "Tanks War (1983) (Home Vision) (PAL)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1a624e236526c4c8f31175e9c89b2a22", "Rainbow Vision - Suntek", "SS-007", "Space Raid (Rainbow Vision) (PAL) [a]", "AKA MegaMania", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1a8204a2bcd793f539168773d9ad6230", "Atari, Rob Fulop - Sears", "CX2638 - 49-75166", "Missile Command (1981) (Atari) [no initials]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1aa7344b563c597eecfbfcf8e7093c27", "David Marli", "", "Slot Invaders (David Marli) (Hack)", "Hack of Slot Machine", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1b0f3d7af668eeea38ddd6182d8f48fb", "Jone Yuan Telephonic Enterprise Co", "", "Cosmic Swarm (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "YES", "" }, + { "1b1daaa9aa5cded3d633bfcbeb06479c", "", "", "Ship Demo (V 1502) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1b22a3d79ddd79335b69c94dd9b3e44e", "Tron", "", "Moon Patrol (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1b4b06c2a14ed3ee73b7d0fd61b6aaf5", "Arcadia Corporation, Stephen H. Landrum", "AR-4400", "Excalibur (Dragonstomper Beta) (1982) (Arcadia) (Prototype) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1b8c3c0bfb815b2a1010bba95998b66e", "Telegames", "", "Frogs and Flies (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1b8d35d93697450ea26ebf7ff17bd4d1", "Quelle - Otto Versand", "176.764 9 - 781644", "Marineflieger (1983) (Quelle) (PAL)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1bb91bae919ddbd655fa25c54ea6f532", "Suntek", "SS-026", "Treasure Island (Suntek) (PAL)", "AKA Treasure Discovery", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1bc2427ac9b032a52fe527c7b26ce22c", "Intellivision Productions - M Network - APh Technological Consulting, Bruce Pedersen, Larry Zwick", "MT5860", "Sea Battle (1983) (M Network)", "High Seas", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1bef389e3dd2d4ca4f2f60d42c932509", "Dimax - Sinmax", "SM8001", "Space Robot (1983) (Dimax - Sinmax) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "1bf503c724001b09be79c515ecfcbd03", "", "", "Bumper Bash (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "54", "", "", "" }, + { "1c3f3133a3e5b023c77ecba94fd65995", "CCE", "C-830", "Planet Patrol (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1c5796d277d9e4df3f6648f7012884c4", "Quelle", "715.853 5", "Wachroboter jagt Jupy (Quelle) (PAL)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1c6eb740d3c485766cade566abab8208", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1c85c0fc480bbd69dc301591b6ecb422", "CCE", "", "Super Box (CCE)", "AKA RealSports Boxing", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1c8c42d1aee5010b30e7f1992d69216e", "PlayAround - J.H.M.", "205", "Gigolo (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "1cad3b56cc0e6e858554e46d08952861", "Jone Yuan Telephonic Enterprise Co", "", "Chopper Command (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1cafa9f3f9a2fce4af6e4b85a2bbd254", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2659", "Raiders of the Lost Ark (1982) (Atari) (PAL)", "Console ports are swapped", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "1cca2197d95c5a41f2add49a13738055", "Atari, Larry Kaplan - Sears", "CX2664 - 6-99818", "Brain Games (1978) (Atari)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "1cf59fc7b11cdbcefe931e41641772f6", "Sega", "005-01", "Buck Rogers - Planet of Zoom (1983) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "1d1d2603ec139867c1d1f5ddf83093f1", "Atari, Larry Kaplan - Sears", "CX2602 - 99802, 6-99802, 49-75102", "Air-Sea Battle (1977) (Atari) (4K)", "AKA Target Fun (Anti-Aircraft)", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1d284d6a3f850bafb25635a12b316f3d", "CCE", "", "H.E.R.O. (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1d2a28eb8c95da0d6d6b18294211839f", "", "", "Fishing Derby (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1d4e0a034ad1275bc4d75165ae236105", "20th Century Fox Video Games, Mark Klein", "11034", "Pick Up (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1d5eac85e67b8cff1377c8dba1136929", "", "", "Chronocolor Donkey Kong Sideways (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1d6ed6fe9dfbde32708e8353548cbb80", "Jone Yuan Telephonic Enterprise Co", "", "Super Challenge Baseball (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1da2da7974d2ca73a823523f82f517b3", "Spectravision - Spectravideo - Sirius Software, David Lubar", "SA-206", "Challenge of.... Nexar, The (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1db3bc4601f22cf43be7ce015d74f59a", "", "", "Ship Demo (V 10) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1e060a8025512ad2127e3da11e212ccc", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (3 of 3) (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, + { "1e0ef01e330e5b91387f75f700ccaf8f", "Quelle - Otto Versand", "686.561 2 - 781627", "Mein Weg (1983) (Quelle) (PAL)", "AKA Challenge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1e1290ea102e12d7ac52820961457e2b", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (12-15-1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "1e1817d9cbcc3ba75043b7db4e6c228f", "", "", "Star Fire (07-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1e272d09c0e55f5ef14fcb76a735f6d7", "Atari, David Crane", "CX26163P", "Slot Machine (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1e587ca91518a47753a28217cd4fd586", "Telesys, Jim Rupp, Jack Woodman", "1001", "Coco Nuts (1982) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1e750000af77cc76232f4d040f4ab060", "Jone Yuan Telephonic Enterprise Co", "", "Raft Rider (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1e85f8bccb4b866d4daa9fcf89306474", "Atari, Lou Harp", "CX26122", "Sinistar (02-13-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1e89f722494608d6ea15a00d99f81337", "", "", "River Raid (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "NTSC50", "", "", "", "" }, + { "1ea1abcd2d3d3d628f59a99a9d41b13b", "Jone Yuan Telephonic Enterprise Co", "", "Stampede (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1ea980574416bfd504f62575ba524005", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675", "Ms. Pac-Man (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1ec57bbd27bdbd08b60c391c4895c1cf", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (09-02-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1ec5bef77b91e59313cba205f15b06d7", "", "", "Overhead Adventure Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "60", "", "", "" }, + { "1ede4f365ce1386d58f121b15a775e24", "Parker Brothers, Dave Hampton, Tom Sloper", "931517", "Q-bert (1983) (Parker Bros) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1ee2cfc7d0333b96bd11f7f3ec8ce8bc", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (4 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1ee9c1ba95cef2cf987d63f176c54ac3", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675, CX2675P", "Ms. Pac-Man (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1ef04e7e508296a8d9eb61cc7dae2e5d", "SOLID Corp. (D. Scott Williamson)", "CX2655-069", "Star Castle 2600 (SolidCorp) [069]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "1f21666b8f78b65051b7a609f1d48608", "K-Tel Vision", "", "Vulture Attack (1982) (K-Tel Vision)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1f2ae0c70a04c980c838c2cdc412cf45", "Atari - GCC", "CX2698", "Rubik's Cube (1984) (Atari)", "AKA Atari Video Cube", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1f349dd41c3f93c4214e5e308dccb056", "", "", "Virtual Pet Demo 2 (CRACKERS) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1f40eefc7447336ae6cd8ffa5eb325be", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype) (4K) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1f562b89d081e36d58e6fc943512ec05", "", "", "Hangman Man Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1f5a2927a0b2faf87540b01d9d7d7fd1", "Pet Boat", "", "Tennis (Pet Boat) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1f60e48ad98b659a05ce0c1a8e999ad9", "", "", "Mondo Pong V2 (Piero Cavina) (PD)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "01", "", "", "", "", "" }, + { "1f773a94d919b2a3c647172bbb97f6b4", "Atari, Jerome Domurat, Peter C. Niday", "CX26115", "Dumbo's Flying Circus (07-11-1983) (Atari) (Prototype) (PAL)", "AKA Dumbo Flies Home", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1fa58679d4a39052bd9db059e8cda4ad", "Imagic, Dan Oliver", "720118-1A, 03208", "Laser Gates (1983) (Imagic)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1fa7a42c2c7d6b7a0c6a05d38c7508f4", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (09-04-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1fa86282403fa35d103ab88a9d603c31", "SpiceWare - Darrell Spice Jr.", "", "Stay Frosty (SpiceWare) (PAL60)", "Part of Stella's Stocking 2007 Xmas compilation", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "YES", "" }, + { "1fab68fd67fe5a86b2c0a9227a59bb95", "20th Century Fox Video Games - Videa, Lee Actor", "", "Lasercade (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "200309c8fba0f248c13751ed4fc69bab", "Jeffry Johnston", "", "Radial Pong - Version 1 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2008c76deba5953201ef75a09b2ff7dc", "", "", "Fortress (21-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "200a9d2a7cb4441ce4f002df6aa47e38", "", "", "Doomzerk (PD) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2016726db38ad6a68b4c48ba6fe51557", "Piero Cavina, Erik Mooney", "", "INV 2 (Piero Cavina, Erik Mooney)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "203049f4d8290bb4521cc4402415e737", "Tigervision, Robert H. O'Neil - Teldec", "7-007 - 3.60005 VG", "Polaris (1983) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "203abb713c00b0884206dcc656caa48f", "Imagic, Bob Smith", "720114-1A, 03207, IZ-001-04", "Moonsweeper (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "203b1efc6101d4b9d83bb6cc1c71f67f", "Quelle", "685.996 1", "Teller-Jonglieren! (1983) (Quelle) (PAL)", "AKA Dishaster", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "205070b6a0d454961dd9196a8e81d877", "", "", "Hangman Monkey Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2091af29b4e7b86914d79d9aaa4cbd20", "CBS Electronics - Woodside Design Associates, Harley H. Puthuff Jr.", "4L1802", "Donkey Kong Junior (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "251", "", "" }, + { "20ae62fb69c6cc6e8098cca8cd080487", "Zirok", "", "Tennis (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "20d4457ba22517253fcb62967af11b37", "Atari, Eric Manghise, Mimi Nyden, Joseph Tung", "CX2640", "RealSports Baseball (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "20dca534b997bf607d658e77fbb3c0ee", "Mythicon, Bill Bryner, Bruce de Graaf", "MA1002", "Fire Fly (1983) (Mythicon)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "20edcc3aa6c189259fa7e2f044a99c49", "Spectravision - Spectravideo", "SA-201", "Gangster Alley (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "211774f4c5739042618be8ff67351177", "Atari - GCC, Mark Ackerman, Tom Calderwood, Glenn Parker", "CX2684", "Galaxian (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "211f76dff0b7dad3f6fcac9d938ee61a", "JSK", "", "Custer's Viagra (JSK) (Hack) [a]", "Hack of Custer's Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "211fbbdbbca1102dc5b43dc8157c09b3", "Apollo", "AP-2009", "Final Approach (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2124cf92978c46684b6c39ccc2e33713", "", "", "Sea Monster (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "21299c8c3ac1d54f8289d88702a738fd", "K-Tel Vision", "", "Spider Maze (1982) (K-Tel Vision)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, + { "212d0b200ed8b45d8795ad899734d7d7", "Atari, Richard Maurer, Christopher H. Omarzu - Coca Cola", "", "Pepsi Invaders (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "213e5e82ecb42af237cfed8612c128ac", "Sancho - Tang's Electronic Co.", "TEC006", "Forest (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "YES", "" }, + { "2162266b906c939b35c84ff9a0f50ad1", "Atari, Larry Kaplan", "CX2664, CX2664P", "Brain Games (1978) (Atari) (PAL) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "2179dfd7edee76efafe698c1bc763735", "", "", "Yellow Submarine (Cody Pittman) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "218b76f5a4142dc2ea9051a768583d70", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2684, CX2684P", "Galaxian (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "218c0fe53dfaaa37f3c823f66eafd3fc", "Atari, Alan Miller", "CX2624, CX2624P", "Basketball (1978) (Atari) (PAL)", "Console ports are swapped", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "21a96301bb0df27fde2e7eefa49e0397", "Data Age", "DA1003", "Sssnake (1982) (Data Age)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "21b09c40295c2d7074a83ae040f22edf", "", "", "Marble Craze (V0.90) (Easy Version) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "21d2c435bcccde7792d82844b3cf60f4", "Atari - GCC, Doug Macrae", "CX2677, CX2677P", "Dig Dug (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "21d7334e406c2407e69dbddd7cec3583", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2228c67d25e507603d4873d3934f0757", "", "", "Fu Kung! (V0.10) (28-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "22319be7a640af5314ec3c482cceb676", "", "", "Joustpong (05-07-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2240655247d6de1c585564004a853ab7", "", "", "Fu Kung! (V0.17) (07-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "225522777dc7155627808bde0c1d0ef0", "", "", "This Planet Sucks Demo 1 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, + { "22675cacd9b71dea21800cbf8597f000", "Atari, David Crane", "CX2605, CX2605P", "Outlaw (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "227532d82505c3c185a878273c285d5f", "", "", "Hangman Man Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "22abbdcb094d014388d529352abe9b4b", "Apollo", "AP-2012", "Squoosh (1983) (Apollo) (Prototype) [a]", "AKA Vat's Incredible!, The Grape Escape", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "22b22c4ce240303012e8a9596ae8d189", "", "", "Skeleton+ (03-05-2003) (Eric Ball) (PAL)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "22f6b40fc82110d68e50a1208ae0bb97", "", "", "Purple Bar Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2319922df4d0c820b3e5f15faa870cc3", "Atari - GCC, Mike Feinstein", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2327456f86d7e0deda94758c518d05b3", "Digitel", "", "Mr. Postman (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2351d26d0bfdee3095bec9c05cbcf7b0", "", "", "Warring Worms (19-01-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2353725ec98e0f0073462109e886efd7", "Champ Games", "CG-03-P", "Scramble (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "SAVEKEY", "", "", "PAL60", "", "", "YES", "" }, + { "235436ab0832370e73677c9c6f0c8b06", "", "", "Beast Invaders (Double Shot) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2365e1534d67f94d8670394ab99150ce", "Thomas Jentzsch", "", "Missile Command (Atari Mouse) (2002) (TJ)", "Uses Atari ST Mouse Controller", "Homebrew", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "YES", "" }, + { "23d445ea19a18fb78d5035878d9fb649", "CBS Electronics - JWDA, Sylvia Day, Todd Marshall, Henry Will IV", "4L1818, 4L1819, 4L1820, 4L1821", "Mouse Trap (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "23e4ca038aba11982e1694559f3be10f", "", "", "Big Dig (V3) (20-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "23fad5a125bcd4463701c8ad8a0043a9", "CCE", "C-840", "Stone Age (1983) (CCE)", "Uses the Joystick Controllers (swapped)", "", "", "", "", "A", "A", "", "YES", "", "", "", "", "", "", "220", "YES", "" }, + { "240bfbac5163af4df5ae713985386f92", "Activision, Steve Cartwright", "AX-022", "Seaquest (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2432f33fd278dea5fe6ae94073627fcc", "CBS Electronics, Tom DiDomenico", "4L2477, 4L2482, 4L2485, 4L4171", "Blueprint (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2434102f30eeb47792cf0825e368229b", "Sparrow - Enter-Tech, Paul Walters, Rick Harris, George Hefner, Barbara Ultis", "", "Arkyology (1983) (Sparrow) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "24385ba7f5109fbe76aadc0a375de573", "CCE", "", "Xevious (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2447e17a4e18e6b609de498fe4ab52ba", "CCE", "", "Super Futebol (CCE)", "AKA RealSports Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "244c6de27faff527886fc7699a41c3be", "", "", "Matt Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2450dfa1df70d12b60683185775efed8", "Jeffry Johnston", "", "Radial Pong - Version 7 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "24544ee5d76f579992d9522e9b238955", "Carrere Video - Western Technologies, Tom Sloper - Teldec - Prism", "USC2004", "Picnic (1983) (Carrere Video) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, + { "245f07c8603077a0caf5f83ee6cf8b43", "Home Vision - Thomas Jentzsch", "", "Parachute (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, + { "24759be31e8fe55d2829fd86bdf3181f", "Hozer Video Games", "", "Gunfight 2600 - Worst Nightmare... (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "247fa1a29ad90e64069ee13d96fea6d6", "CCE", "C-867", "Radar (1983) (CCE)", "AKA Exocet", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2496d404bfc561a40a80bea6a69695c3", "CCE", "C-1007", "Jungle Hunt (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "24ad538291eb5f5cac4b9998f3b851c3", "", "", "Gunfight 2600 - This time it's your decission! (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "24aff972d58990f9b88a6d787c796f1e", "CBS Electronics", "4L1767, 4L1768, 4L1769, 4L1770", "Smurf (1982) (CBS Electronics) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "24b5f4bbdb853eca38ea0cae2dfe73a1", "", "", "Home Run (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "24b9adac1b4f85b0bac9bf9b9e180906", "Angelino", "", "Space 2002 (Angelino) (Hack)", "Hack of Space Jockey", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "24d018c4a6de7e5bd19a36f2b879b335", "Activision, Larry Miller", "AX-021", "Spider Fighter (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "24d9a55d8f0633e886a1b33ee1e0e797", "Thomas Jentzsch", "", "Dragon Defender (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "15", "240", "YES", "" }, + { "24df052902aa9de21c2b2525eb84a255", "Imagic, Dennis Koble", "720000-100, 720100-1B, IA3000, IA3000C", "Trick Shot (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "24fbf8250a71611e40ef18552e61b009", "", "", "Movable Grid Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2516f4f4b811ede4ecf6fbeb5d54a299", "Quelle", "701.134 9", "Schiessbude (1983) (Quelle) (PAL)", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2517827950fee41a3b9de60275c8aa6a", "Atari", "CX26163P", "Fishing (32 in 1) (1988) (Atari) (PAL)", "AKA Fishing Derby", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "25265d0e7f88b3026003809f25ee025e", "Atari - GCC, Ava-Robin Cohen", "CX26123", "Jr. Pac-Man (1984) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "25472dfdeef6a42581a231d631d6b04d", "", "", "Gunfight 2600 - Design thoughts (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "25710bde8fa181b0c5cf0846b983bec1", "", "", "Demo Image Series #15 - Three Marios (NTSC) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "257bc3b72a6b5db3fd0d47619125b387", "CBS Electronics", "4L 2737 0000", "Omega Race (1983) (CBS Electronics) [a]", "Set right difficulty to 'A' for BoosterGrip in both ports", "", "", "", "", "", "", "", "", "BOOSTERGRIP", "BOOSTERGRIP", "", "", "", "", "", "", "" }, + { "25a21c47afe925a3ca0806876a2b4f3f", "Quelle", "685.640 5", "Der kleine Baer (1983) (Quelle) (PAL)", "AKA Frostbite", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "25b52bf8dd215bcbd59c9abdb55c44f8", "Atari - GCC, Betty Ryan Tylko, Doug Macrae", "CX2694, CX2694P", "Pole Position (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "25b6dc012cdba63704ea9535c6987beb", "Avalon Hill, Jean Baer, Bill Hood", "5004002", "Shuttle Orbiter (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "25bb080457351be724aac8a02021aa92", "CBS Electronics", "4L1784, 4L1786, 4L1787, 4L2277", "Zaxxon (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "25d4be3309b89583c6b39d9f93bf654f", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "25e73efb9a6edf119114718bd2f646ba", "Atari, Suki Lee", "CX26113", "Miss Piggy's Wedding (1983) (Atari) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, + { "25f2e760cd7f56b88aac88d63757d41b", "Activision, Bob Whitehead - Ariola", "EAG-002, EAG-002-04I, PAG-002 - 711 002-715", "Boxing (1980) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "25f879ff678130fea615ac418e7943f1", "Activision, Garry Kitchen", "EAX-025", "Keystone Kapers (1983) (Activision) (SECAM)", "", "", "", "", "", "", "", "", "", "", "", "", "", "SECAM", "", "", "", "" }, + { "25f9cf703575c5d63048c222f5463758", "", "", "Multi-Sprite Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "260c787e8925bf3649c8aeae5b97dcc0", "Thomas Jentzsch", "", "Hell Driver (Thomas Jentzsch)", "NTSC Conversion, joystick ports swapped", "Homebrew", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "262ccb882ff617d9b4b51f24aee02cbe", "Atari, Douglas Neubauer", "CX26154, CX26154P", "Super Football (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "265a85f66544eaf95fda06c3d9e48abf", "", "", "Tunnel Demo (Cycling Colours) (29-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "265c74a956500bd31efd24adc6d5ccf6", "Activision, Larry Miller", "AX-026, AX-026-04", "Enduro (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2683d29a282dd059535ac3bb250f540d", "", "", "Space Treat (12-01-2003) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "268f46038e29301568fa9e443e16e960", "Atarius Maximum", "", "Pitfall Unlimited (Atarius Maximus) (Hack)", "Hack of Pitfall", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "26bc2bdf447a17376aea7ef187ff6e44", "", "", "Amanda Invaders (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "26f4f8b098609164effef7809e0121e1", "", "", "Oystron (V2.7) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "270229c6d5578446e6a588492e4e5910", "", "", "Space Invaders 2 (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "271bfd5dc2673d382019f1fb6cab9332", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (Preview) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "273ce50db5a0d6da7ea827a54f44dee9", "", "", "Island Flyer Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "274d17ccd825ef9c728d68394b4569d2", "Playaround - J.H.M.", "202", "Bachelorette Party (1982) (Playaround)", "AKA Bachelor Party, Uses the paddle controllers", "Extremely Rare", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "AUTO 65", "", "22", "222", "YES", "" }, + { "277c7281ac945b8331e2e6fcad560c11", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (2 of 3) (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "277cca62014fceebb46c549bac25a2e3", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "277fa4b9a6bb7a8dcea2c5f38a4c25f0", "Atari, Alan J. Murphy, Robert Zdybel", "CX2668", "RealSports Football (1982) (Atari) (Prototype)", "AKA Football II", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "278155fc9956e9b6ef2359eb238f7c7f", "", "", "Donkey Kong Junior (Unknown) (Hack)", "Hack of Donkey Kong Junior", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2783006ee6519f15cbc96adae031c9a9", "Telegames", "", "Night Stalker (1989) (Telegames) (PAL) [a]", "AKA Dark Cavern", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "278531cc31915747018d22145823d2c9", "", "", "Defender MegaDrive (PAL) (Genesis)", "Genesis controller (C is smartbomb)", "Hack of Defender", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "278f14887d601b5e5b620f1870bc09f6", "Thomas Jentzsch", "", "SWOOPS! (v0.96) (TJ)", "Uses the Joystick (L) and Paddle (R) Controllers", "Homebrew", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "28", "", "", "" }, + { "27c4c2af4b46394bb98638af8e0f6e9d", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "27c6a2ca16ad7d814626ceea62fa8fb4", "Parker Brothers, Mark Lesser", "PB5590", "Frogger II (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "27f9e2e1b92af9dc17c6155605c38e49", "CCE", "", "Nightmare (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2808dc745ff4321dc5c8122abef6711f", "Retroactive", "", "Qb (2.11) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "28148a52b1955ce12c7a74d3a3e620a4", "CCE", "", "Freeway (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "281ff9bd0470643853de5cbd6d9e17f5", "Eckhard Stolberg", "", "Cubis (EM) (1997) (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2823364702595feea24a3fbee138a243", "Bit Corporation", "PG206", "Bobby Is Going Home (1983) (BitCorp) (PAL)", "AKA Bobby geht Heim", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "42", "", "", "" }, + { "2825f4d068feba6973e61c84649489fe", "", "", "Boom Bang (Unknown) (PAL)", "AKA Crackpots", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "282a77841cb3d33af5b56151acba770e", "Otto Versand", "311388", "Black Hole (1983) (Otto Versand) (PAL)", "AKA Cosmic Ark (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "283dee88f295834c4c077d788f151125", "Retroactive", "", "Qb (2.11) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "284ca61b2407bdba3938048b0a559015", "Atari, Tod Frye", "CX2695", "Xevious (05-25-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2854e5dfb84173fafc5bf485c3e69d5a", "Canal 3 - Intellivision", "C 3004", "Moon Patrol (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2880c6b59bd54b153174676e465167c7", "Tron", "", "Donkey Kong Jr. (Tron)", "AKA Donkey Kong Junior", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "28a2bea8f84936cb2e063f857414cda0", "Thiago Paiva", "", "Mega Mania Raid (1999) (Thiago Paiva) (Hack)", "Hack of Megamania", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "28a4cd87fb9de4ee91693a38611cb53c", "", "", "Skeleton (V1.1) (NTSC) (24-10-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "28d5df3ed036ed63d33a31d0d8b85c47", "Bit Corporation", "PG204", "Open, Sesame! (1983) (BitCorp) (PAL) [a]", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "", "38", "256", "YES", "" }, + { "2903896d88a341511586d69fcfc20f7d", "Activision, David Crane", "AX-014, AX-014-04", "Grand Prix (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "291bcdb05f2b37cdf9452d2bf08e0321", "Atari", "CX26163P", "32 in 1 Game Cartridge (1988) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "32IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "291cc37604bc899e8e065c30153fc4b9", "Activision, Carol Shaw", "AX-020, AX-020-04", "River Raid (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "291dd47588b9158beebe4accc3a093a6", "Atari", "", "32 in 1 Console ROM (02-10-1989) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "32IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "292a0bb975b2587f9ac784c960e1b453", "", "", "Qb (05-02-2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "292f2446a0325b7b423e88a2ebfeb5a0", "", "", "Cube Conquest (Non Interlaced) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "29396db58406084e416032c372734a3e", "", "", "Gunfight 2600 - Fixed Beta Release! (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2942680c47beb9bf713a910706ffabfe", "", "", "Blue Line Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "294762000e853b4319f9991c1ced5dfc", "", "", "T.F. Space Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "295f3679bdf91ca5e37da3f787b29997", "", "", "Exorcise (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "29630a20d356fb58685b150bfa8f00c3", "M Network, Kevin Miller", "MT5687", "International Soccer (1982) (Mattel) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "297236cb9156be35679f83c4e38ee169", "Exus Corporation", "", "Video Reflex (1983) (Exus) [no roman numbers]", "AKA Foot Craz (no roman numbers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "297c405afd01f3ac48cdb67b00d273fe", "Atari - GCC, Ava-Robin Cohen", "CX26123, CX26123P", "Jr. Pac-Man (1986) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2982e655dffc89d218a0a3072cfc6811", "", "", "Mini Golf 812631 (Hack)", "Hack of Miniature Golf", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "298387b0637173d2002770a649b4fbca", "", "", "S.I.PLIX 2 (Hack) [a]", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "29843f43b81f3736bf35c00b1bb88fb2", "Gray Games & AtariAge", "", "E.T. Book Cart (NTSC)", "Charles F. Gray & Michael Rideout", "", "", "", "", "", "", "", "", "", "", "", "", "", "15", "240", "YES", "55" }, + { "29949f893ef6cb9e8ecb368b9e99eee4", "Erik Eid", "", "Euchre (Alpha) (NTSC) (31-08-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "29dfa26b7988af9984d617708e4fc6e2", "", "", "Boulderdash Demo (05-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2a0ba55e56e7a596146fa729acf0e109", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2a10053fd08664c7cfbbb104386ed77f", "", "", "Alpha Demo - The Beta Demo (2000) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2a1b454a5c3832b0240111e7fd73de8a", "Tigervision, Bill Hogue", "7-011", "Miner 2049er Volume II (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2a2f46b3f4000495239cbdad70f17c59", "CommaVid, John Bronstein - Ariola", "CM-003 - 712 003-720", "Cosmic Swarm (1982) (CommaVid) (PAL)", "AKA Angriff der Termiten", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2a33e21447bf9e13dcfed85077ff6b40", "", "", "Backwards Cannonball v2 (Hack)", "Hack of Human Cannonball", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2a360bc85bf22de438651cf92ffda1de", "Bit Corporation", "PGP213", "Spy Vs. Spy (4 Game in One) (1983) (BitCorp) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2a9f9001540c55a302befd8e9d54b47b", "Atari, Dan Hitchens", "CX2697, CX2697P", "Mario Bros. (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2aa5e56d36c2e58b6f2856109f2099a9", "Atari, Larry Kaplan - Sears", "CX2628 - 6-99842, 49-75117", "Bowling (1979) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2aba6a1b01a5859e96d6a66d2286772f", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2abc3d46b3f2140160759e2e10bc86d9", "", "", "Gunfight 2600 - Beta Release! (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2ac3a08cfbf1942ba169c3e9e6c47e09", "Activision, Dan Kitchen", "EAK-046-04B", "Fighter Pilot (1988) (Activision) (PAL)", "AKA Tomcat - The F-14 Fighter Simulator", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2ae700c9dba843a68dfdca40d7d86bd6", "TechnoVision - Thomas Jentzsch", "", "Pharaoh's Curse (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "40", "240", "YES", "" }, + { "2aeedcc6eb1602efb77161b0cef832ab", "SOLID Corp. (D. Scott Williamson)", "CX2655-025", "Star Castle 2600 (SolidCorp) [025]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2b1589c7e1f394ae6a1c046944f06688", "Carrere Video - JWDA, Todd Marshall, Robin McDaniel, Wes Trager, Henry Will IV - Teldec - Prism", "USC2003", "Eggomania (1983) (Carrere Video) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 60", "", "", "", "", "" }, + { "2b27eb194e13f3b38d23c879cc1e3abf", "Quelle", "402.272 9", "Super-Ferrari (1983) (Quelle) (PAL)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2b42da79a682ed6e2d735facbf70107e", "", "", "DKjr Improved (Hack)", "Hack of Donkey Kong Jr.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2b430c00dc79e495762ac59b2f9b4fcd", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2b71a59a53be5883399917bf582b7772", "Greg Troutman", "", "Dark Mage (final beta) (Greg Troutman) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2ba02f509a4991aa176ba8d9e540df3d", "Atari, Mark R. Hahn", "CX2678", "Dukes of Hazzard (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2bb0a1f1dee5226de648eb5f1c97f067", "Robby", "", "Enduro (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2bb9f4686f7e08c5fcc69ec1a1c66fe7", "Atari - GCC, John Allred, Mike Feinstein", "CX2688", "Jungle Hunt (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2bc26619e31710a9884c110d8430c1da", "Atari, Bob Whitehead", "CX2652, CX2652P", "Casino (1979) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, + { "2bc6c53b19e0097a242f22375a6a60ff", "", "", "Droid Demo 2 (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2bee7f226d506c217163bad4ab1768c0", "Xonox - K-Tel Software - Beck-Tech, Steve Beck", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2bf34b6ad7d2317a2d0808b3fb93571b", "", "", "Easy Playfield Graphics (1997) (Chris Cracknell)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2c0dc885d5ede94aa664bf3081add34e", "", "", "Earth Dies Screaming, The (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2c29182edf0965a7f56fe0897d2f84ba", "Atari - Axlon, Steve DeFrisco", "CX26192", "Klax (08-18-1990) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2c2aea31b01c6126c1a43e10cacbfd58", "Paul Slocum", "", "Synthcart (2002) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, + { "2c3b2843295c9d6b16996971180a3fe9", "HES - Activision", "", "Sports Action Pak - Enduro, Ice Hockey, Fishing Derby, Dragster (1988) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2c3b9c171e214e9e46bbaa12bdf8977e", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2c45c3eb819a797237820a1816c532eb", "Atari", "CX26163P", "Boxing (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2c8835aed7f52a0da9ade5226ee5aa75", "Arcadia Corporation, Stephen H. Landrum", "AR-4101", "Communist Mutants from Space (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2c8c11295d8613f875b7bcf5253ab9bb", "Fabrizio Zavagli", "", "Kool Aid Man (PAL Conversion) (16-11-2002) (Fabrizio Zavagli) (PAL60)", "PAL60 Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "2c9fadd510509cc7f28f1ccba931855f", "", "", "Hangman Invader Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2ca6445204ffb7686ddee3e33ba64d5b", "Alex Herbert", "", "AtariVox Test ROM", "Uses the AtariVox controller", "", "", "", "", "", "", "", "", "", "ATARIVOX", "", "", "", "", "", "", "" }, + { "2cb42cf62b2f25f59f909b5447821b14", "Atari, Christopher H. Omarzu - Children's Computer Workshop", "CX26104", "Big Bird's Egg Catch (1983) (Atari) (PAL) [a]", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "2cccc079c15e9af94246f867ffc7e9bf", "PlayAround - J.H.M.", "203", "Jungle Fever (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2cefa695df2ed020899a7df7bb1e3a95", "Manuel Polik, Fabrizio Zavagli", "", "A-Team (2002) (Manuel Polik) (Hack)", "Hack of A-Team", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2cf20f82abcae2decff88db99331e071", "Activision, Mike Lorenzen", "AX-023", "Oink! (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2cfb188c1091cc7ec2a7e60064d2a758", "", "", "Space Invaders Hack Demo (2003) (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2d15b092e8350912ec4b2e5e750fa1c6", "Wizard Video Games, Bob Davis, Robert H. O'Neil", "", "Texas Chainsaw Massacre, The (1982) (Wizard Video Games) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2d16a8b59a225ea551667be45f554652", "Quelle", "802.744 3", "Der Geheimkurier (1983) (Quelle) (PAL)", "AKA Mr. Postman", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2d1cf85fbc732856bf76470cd4060f4a", "", "", "Daredevil (V1) (Stunt_Cycle_Rules!) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "216", "", "" }, + { "2d2c5f0761e609e3c5228766f446f7f8", "Atari - Axlon, Steve DeFrisco", "CX26170, CX26170P", "Secret Quest (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2d405da70af82b20a6b3ecc3d1d2c4ec", "Genus", "", "Pitfall (Genus)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2d6741cda3000230f6bbdd5e31941c01", "CBS Electronics - VSS", "80110", "Targ (1983) (CBS Electronics) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2d69a5f23784f1c2230143292a073b53", "", "", "Qb (Fixed background animation) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2d6da0eb85eabc93270e5bb8a466ca51", "", "", "Sprite Demo 7 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2d76c5d1aad506442b9e9fb67765e051", "Apollo - Games by Apollo, Larry Minor, Ernie Runyon, Ed Salvo", "AP-2004", "Lost Luggage (1982) (Apollo) [no opening scene]", "AKA Airport Mayhem", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2d9e5d8d083b6367eda880e80dfdfaeb", "QDI, Mike Montana, Rich Montana - Selchow & Righter", "87", "Glib (1983) (QDI)", "AKA Video Word Game", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2d9e65959808a6098c16c82a59c9d9dc", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (1 of 3) (1982) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2dbc92688f9ba92a7e086d62be9df79d", "", "", "How to Draw a Playfield (1997) (Jim Crawford) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2dbdca3058035d2b40c734dcf06a86d9", "Thomas Jentzsch", "", "Asteroids DC+ (Thomas Jentzsch) (Hack)", "Uses the Joystick (left) or Steering (right) Controller", "Hack", "", "", "", "", "", "", "", "", "DRIVING", "", "58", "", "", "", "YES", "" }, + { "2dcf9ce486393cd36ca0928cd53b96cb", "Atari - GCC, Mike Feinstein, John Allred", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2de41a11c6767e54a5ee9ebaffec72af", "Gray Games & AtariAge", "", "E.T. Book Cart (PAL60)", "Charles F. Gray & Michael Rideout", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "15", "240", "YES", "55" }, + { "2dfec1615c49501fefc02165c81955e6", "", "", "Song (05-11-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2e0aed5bb619edcefa3fafb4fbe7c551", "", "", "Qb (2.06) (Retroactive) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2e2885e68fa1045871ce1382b68f6efc", "", "", "Star Fire - Return of the Crosshair (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2e2acef8513edcca991e7e5149412e11", "Parker Brothers, Larry Gelberg, Gary Goltz", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (16K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2e3728f3086dc3e71047ffd6b2d9f015", "Atari, David Crane", "CX26163P", "Outlaw (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2e5b184da8a27c4d362b5a81f0b4a68f", "Atari", "", "Rabbit Transit (08-29-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2e663eaa0d6b723b645e643750b942fd", "Atari, Tom Rudadahl - Sears", "CX2634 - 49-75121", "Golf (1980) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2e7e9c6dcfcceaffc6fa73f0d08a402a", "CCE", "C-818", "Star Voyager (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2e82a1628ef6c735c0ab8fa92927e9b0", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2e842c2ee22e9dad9df16eed091315c4", "HES", "701-157", "2 Pak Special - Motocross, Boom Bang (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2eaf8fa9e9fdf1fcfc896926a4bdbf85", "Arcadia Corporation, Stephen H. Landrum", "AR-4400", "Excalibur Version 39 (Dragonstomper Beta) (1982) (Arcadia) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2ec6b045cfd7bc52d9cdfd1b1447d1e5", "Activision, David Crane - Ariola", "EAG-009, PAG-009 - 711 009-720", "Freeway (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2eda6a49a49fcb2b674ea9e160b6a617", "Kyle Pittman", "", "Rambo in Afghanistan (Kyle Pittman) (Hack)", "Hack of Riddle of the Sphinx", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2ef36341d1bf42e02c7ea2f71e024982", "", "", "Space Invaders (Explosion Hack)", "Hack of Space Invaders (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2f0546c4d238551c7d64d884b618100c", "Sega, Jeff Lorenz", "", "Ixion (1984) (Sega) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2f0a8bb4e18839f9b1dcaa2f5d02fd1d", "CCE", "", "Super Futebol (CCE) [a]", "AKA RealSports Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "2f11ba54609777e2c6a5da9b302c98e8", "Atari - GCC", "CX2676", "Centipede (1982) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2f16663b01591539624d0ef52934a17d", "M Network", "", "Rocky and Bullwinkle", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2f2f9061398a74c80420b99ddecf6448", "Rentacom - Brazil", "", "Bobby Is Going Home (Rentacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2f66ebf037321ed0442ac4b89ce22633", "Baroque Gaming (Brian Eno)", "", "Warring Worms (Beta 2) (2002) (Baroque Gaming)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2f7772879a1ed04f660aa9d77a86a4bd", "", "", "Yars' Revenge (Genesis)", "Genesis controller (C is zorlon cannon)", "Hack of Yars' Revenge", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "YES", "" }, + { "2f77f015fc880b05f28e84156f989a0c", "", "", "Plane Demo (Gonzalo) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2f7949f71076db42480d3f5036b4a332", "", "", "Name This Game (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2facd460a6828e0e476d3ac4b8c5f4f7", "Sancho - Tang's Electronic Co.", "", "Words-Attack (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3025bdc30b5aec9fb40668787f67d24c", "", "", "Demo Image Series #14 - Two Marios (4K Interleaved Chronocolour Vertical Movement) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "303242c239474f2d7763b843de58c1c3", "CCE", "", "Laser Blast (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "304512528a5530a9361e8a231ed9a6de", "Thomas Jentzsch", "", "River Raid Plus (Thomas Jentzsch) (Hack)", "Hack of River Raid", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "30512e0e83903fc05541d2f6a6a62654", "Atari, Jim Huether - Sears", "CX2644 - 6-99824", "Flag Capture (1978) (Atari)", "AKA Capture the Flag", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "30516cfbaa1bc3b5335ee53ad811f17a", "Wizard Video Games - MicroGraphic Image, Robert Barber, Tim Martin", "007", "Halloween (1983) (Wizard Video Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3051b6071cb26377cd428af155e1bfc4", "Atari, David Crane - Sears", "CX2607 - 6-99828, 49-75115", "Canyon Bomber (1979) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "10", "", "42", "", "", "" }, + { "30685b9b6ebd9ba71536dd7632a1e3b6", "Dactari - Milmar", "", "Tennis (Dactari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3091af0ef1a61e801f4867783c21d45c", "CCE", "C-862", "Crackpots (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "30997031b668e37168d4d0e299ccc46f", "", "", "John K Harvey's Equalizer (PAL) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "30c92c685224dc7a72b9bbe5eb62d004", "", "", "Hangman Monkey Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "30e012e8d50330c8972f126b8e913bc4", "", "", "Indy 500 (Hack) [a2]", "Hack of Indy 500", "Hack", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "", "", "", "", "" }, + { "30e0ab8be713208ae9a978b34e9e8e8c", "Atari, Mike Lorenzen", "CX2630, CX2630P", "Circus Atari (1980) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 55", "", "", "", "", "" }, + { "30f0b49661cfcfd4ec63395fab837dc3", "Sega, Jeff Lorenz - Teldec", "004-01", "Star Trek - Strategic Operations Simulator (1983) (Sega) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3105967f7222cc36a5ac6e5f6e89a0b4", "Sega, Jeff Lorenz", "011-01, 011-02", "Spy Hunter (1984) (Sega)", "Uses Joystick Coupler (Dual Control Module)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "310ba30e25ea8957e58180b663503c0c", "Ed Federmeyer", "", "Sound X6 (1994) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "313243fc41e49ef6bd3aa9ebc0d372dd", "", "", "Fast Food (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "31512cdfadfd82bfb6f196e3b0fd83cd", "Tigervision", "7-004", "River Patrol (1984) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3177cc5c04c1a4080a927dfa4099482b", "Atari - Imagineering, Alex DeMeo", "CX26135", "RealSports Boxing (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "317a4cdbab090dcc996833d07cb40165", "Goliath - Hot Shot", "83-312", "Missile War (1983) (Goliath) (PAL)", "AKA Astrowar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "318046ae3711c05fd16e479b298e5fcc", "Retroactive", "", "Qb (V2.08) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "318a9d6dda791268df92d72679914ac3", "Activision, Steve Cartwright", "AX-017, AX-017-04", "MegaMania (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "319a142aab6260842ab616382848c204", "", "", "Marble Craze (05-02-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "31bb9b8ceed46cb3e506777a9e65f3ce", "Bit Corporation", "", "4 Game in One Light Green (1983) (BitCorp) (PAL)", "Phantom UFO, Ice Hockey, Cosmic Avenger, Spy Vs. Spy", "", "", "", "4IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "31c5fd55a39db5ff30a0da065f86c140", "Dactari - Milmar", "", "Enduro (Dactari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "31d08cb465965f80d3541a57ec82c625", "Atari, Alan Miller - Sears", "CX2641 - 99807, 49-75105", "Surround (1977) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "31df1c50c4351e144c9a378adb8c10ba", "Quelle", "687.463 0", "Die Ratte und die Karotten (1983) (Quelle) (PAL)", "AKA Gopher", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "31e518debba46df6226b535fa8bd2543", "Atari, Douglas 'Solaris' Neubauer, Mimi Nyden", "CX26134", "Last Starfighter (1984) (Atari) (Prototype)", "Solaris Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "31f4692ee2ca07a7ce1f7a6a1dab4ac9", "Atari, Alan Miller", "CX2642", "Game of Concentration (1980) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "31fcbce1cfa6ec9f5b6de318e1f57647", "Atari, Jerome Domurat, Peter C. Niday", "CX26115", "Dumbo's Flying Circus (1983) (Atari) (Prototype) (PAL)", "AKA Dumbo Flies Home", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "32199271dc980eb31a2cc96e10a9e244", "", "", "Radial Pong - Version 12 (Jeffry Johnston) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "321c3451129357af42a375d12afd4450", "Atari - Imagineering, Dan Kitchen", "CX26177", "Ikari Warriors (1991) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "32244e55ce6ec6bfbd763f33384bdc2e", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3225676f5c0c577aeccfaa7e6bedd765", "CCE", "C-1002", "Pole Position (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "322b29e84455aa41e7cc9af463bffa89", "Atari - Bobco, Robert C. Polaro", "CX2663", "Road Runner (06-25-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "324cb4a749bcac4f3db9da842b85d2f7", "Dennis Debro", "", "Climber 5 (01-05-2003) (Dennis Debro)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "327468d6c19697e65ab702f06502c7ed", "Charles Morgan", "", "Aster-Hawk (2002) (Charles Morgan) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3276c777cbe97cdd2b4a63ffc16b7151", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691", "Joust (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3278158e5c1f7eb5c5d28ccfd7285250", "Dactari - Milmar", "", "Megamania (Dactari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "327fe8cf94f3a45c35a840a453df1235", "", "", "Spice Girls Rule Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "328949872e454181223a80389d03c122", "", "", "Home Run (Unknown) (PAL)", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "32ae78abbb5e677e2aabae5cc86cec29", "Atari, Christopher H. Omarzu, Courtney Granner", "CX26112", "Good Luck, Charlie Brown (04-18-1984) (Atari) (Prototype)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "32d1260ea682e1bb10850fa94c04ec5f", "Atari, Alan Miller", "CX26163P", "Basketball (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "32dcd1b535f564ee38143a70a8146efe", "Xonox - K-Tel Software - Product Guild, Anthony R. Henderson", "99007, 6240", "Tomarc the Barbarian (1983) (Xonox)", "AKA Thundarr the Barbarian", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "32e65d1e4dfcbcd9b57fee72cafe074c", "", "", "Eckhard Stolberg's Scrolling Text Demo 3 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "32ecb5a652eb73d287e883eea751d99c", "Dactar - Milmar", "", "Bowling (Dactar - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "32f4e47a71601ab06cfb59e1c6a0b846", "Ed Federmeyer", "", "Sound X (1994) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3316ee2f887e9cb9b54dd23c5b98c3e2", "", "", "Texas Golf (miniature Gold Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "331938989f0f33ca39c10af4c09ff640", "Zach Matley", "", "Combat - Tank AI (19-04-2003) (Zach Matley)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "332f01fd18e99c6584f61aa45ee7791e", "", "", "X'Mission (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3347a6dd59049b15a38394aa2dafa585", "Parker Brothers - JWDA, Henry Will IV", "PB5760", "Montezuma's Revenge (1984) (Parker Bros)", "Featuring Panama Joe", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "335793736cbf6fc99c9359ed2a32a49d", "", "", "Analog Clock (V0.0) (20-01-2003) (AD) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "335a7c5cfa6fee0f35f5824d1fa09aed", "Sega - Beck-Tech, Steve Beck, Phat Ho - Teldec", "006-01 - 3.60105 VG", "Congo Bongo (1983) (Sega) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3367eeba3269aa04720abe6169767502", "", "", "Space Treat (30-12-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3391f7c4c656793f92299f4187e139f7", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a4]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "33cac5e767a534c95d292b04f439dc37", "Jone Yuan Telephonic Enterprise Co", "", "Tapeworm (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "33d68c3cd74e5bc4cf0df3716c5848bc", "CBS Electronics, Tom DiDomenico", "4L 2486 5000", "Blueprint (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "33ed6dfac4b9ea2f81f778ceddbb4a75", "Activision", "", "River Raid (1982) (SpkSoft) [t1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "340f546d59e72fb358c49ac2ca8482bb", "Sancho - Tang's Electronic Co.", "TEC003", "Skindiver (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "34340c8eecd1e557314789cc6477e650", "Joe Grand", "", "SCSIcide Pre-release 4 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "345488d3b014b684a181108f0ef823cb", "CBS Electronics, Tom DiDomenico", "4L 2486 5000", "Blueprint (1983) (CBS Electronics) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "345758747b893e4c9bdde8877de47788", "CBS Electronics, Joseph Biel", "4L1802, 4L1803, 4L1804, 4L2278", "Venture (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "345769d085113d57937198262af52298", "Rainbow Vision - Suntek", "SS-007", "Space Raid (Rainbow Vision) (PAL)", "AKA MegaMania", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "346555779a2d51b48833463b5433472f", "", "", "Thrust (V0.1) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "348615ffa30fab3cec1441b5a76e9460", "Activision, Alan Miller - Ariola", "EAX-016, PAX-016 - 711 016-725", "StarMaster (1982) (Activision) (PAL) [fixed]", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "34b269387fa1aa5a396636f5ecdd63dd", "", "", "Marble Craze (mc7_23) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "34c808ad6577dbfa46169b73171585a3", "Apollo", "AP-2012", "Squoosh (1983) (Apollo) (Prototype)", "AKA Vat's Incredible!, The Grape Escape", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "34ca2fcbc8ba4a0b544acd94991cfb50", "Atari, Robert C. Polaro", "", "Dukes of Hazzard (1980) (Atari) (Prototype) (4K)", "AKA Stunt Cycle", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "34e37eaffc0d34e05e40ed883f848b40", "Retroactive", "", "Qb (2.15) (Retroactive) (Stella)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "34f4b1d809aa705ace6e46b13253fd3b", "Aaron Bergstrom", "", "Nothern Alliance (Aaron Bergstrom) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "34fd4fcb40ff5babce67f8b806d5969c", "", "", "Boxing (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "350e0f7b562ec5e457b3f5af013648db", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (06-09-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "35156407e54f67eb1f625450d5c093e1", "", "", "Mouse Trap (Genesis)", "Genesis controller (C changes to dog)", "Hack of Mouse Trap", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "35163b56f4a692a232ae96ad3e23310f", "Retroactive", "", "Qb (2.12) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3556e125681aea864e17b09f3f3b2a75", "", "", "Incoming (2 Player Demo) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3576037c9281656655fa114a835be553", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3577e19714921912685bb0e32ddf943c", "TechnoVision - Video Technology", "TVS1003", "Pharaoh's Curse (1983) (TechnoVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "34", "", "YES", "" }, + { "35ae903dff7389755ad4a07f2fb7400c", "", "", "Colored Wall Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "35b10a248a7e67493ec43aeb9743538c", "Dor-x", "", "Defender (Dor-x) (Hack)", "Hack of Defender", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "35b43b54e83403bb3d71f519739a9549", "Parker Brothers, Dave Engman, Isabel Garret", "", "McDonald's (06-06-1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "35be55426c1fec32dfb503b4f0651572", "Men-A-Vision", "", "Air Raid (Men-A-Vision) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "35fa32256982774a4f134c3347882dff", "Retroactive", "", "Qb (V0.05) (Macintosh) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "360ba640f6810ec902b01a09cc8ab556", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (06-15-1983) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "360c0dcb11506e73bd0b77207c81bc62", "Digitel", "", "Enduro (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3619786f6a32efc1e4a262d5aca8a070", "Atari, John Dunn - Sears", "CX2631 - 49-75152", "Superman (1979) (Atari) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3624e5568368929fabb55d7f9df1022e", "Activision - Imagineering, Dan Kitchen", "EAK-050-04", "Double Dragon (1989) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "36306070f0c90a72461551a7a4f3a209", "U.S. Games Corporation - JWDA, Roger Booth, Sylvia Day, Ron Dubren, Todd Marshall, Robin McDaniel, Wes Trager, Henry Will IV", "VC1007", "Name This Game (1983) (U.S. Games)", "AKA Octopussy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "36547bc6faa5132b87504e18d088e1d7", "", "", "Cosmic Swarm (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "367411b78119299234772c08df10e134", "Atari", "CX26163P", "Skiing (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3685060707df27d4091ba0ea2dc4b059", "", "", "PezZerk - PezMan in Ghost Manor (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "368d88a6c071caba60b4f778615aae94", "Atari, Matthew L. Hubbard", "CX26159", "Double Dunk (1989) (Atari)", "AKA Super Basketball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "36a701c60a9f9768d057bc2a83526a80", "", "", "Cube Conquest (Interlaced) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "36b20c427975760cb9cf4a47e41369e4", "Atari", "CX26143", "Donkey Kong (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "36c29ceee2c151b23a1ad7aa04bd529d", "Atari - GCC, Ava-Robin Cohen", "CX26123", "Jr. Pac-Man (1986) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "36c31bb5daeb103f488c66de67ac5075", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Bop a Buggy (1 of 3) (1983) (Arcadia)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 56", "", "", "", "", "" }, + { "36c993dc328933e4dd6374a8ffe224f4", "Gameworld, J. Ray Dettling", "133-007", "Bermuda Triangle (1983) (Gameworld) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "36e47ed74968c365121eab60f48c6517", "Quelle", "343.373 7", "Master Builder (1983) (Quelle) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "36edef446ab4c2395666efc672b92ed0", "Atari - Axlon, John Vifian", "CX26168", "Off the Wall (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "36f9a953ebdd9a8be97ccf27a2041903", "", "", "Chinese Character Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "37252757a79dc5b174e3c03d6ea0bdcb", "", "", "Sky Diver (Unknown) (PAL) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "372bddf113d088bc572f94e98d8249f5", "Bomb - Onbase", "CA285", "Wall-Defender (1983) (Bomb) (PAL)", "AKA Wall Break", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "373b8a081acd98a895db0cb02df35673", "", "", "Demo Image Series #5 - Boofly (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3750f2375252b6a20e4628692e94e8b1", "Dismac", "", "Ases do Ar (Dismac)", "AKA Sky Jinks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "37527966823ee9243d34c7da8302774f", "", "", "Word Zapper (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "376944889dcfa96c73d3079f308e3d32", "Retroactive", "", "Qb (0.11) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3783f12821b88b08814da8adb1a9f220", "", "", "Mission Survive (PAL) (Genesis)", "Genesis controller (C is vertical fire)", "Hack of Mission Survive)", "", "", "", "", "A", "", "", "GENESIS", "", "", "", "", "", "", "YES", "" }, + { "378a62af6e9c12a760795ff4fc939656", "Atari - Axlon, Steve DeFrisco", "CX26171", "MotoRodeo (1991) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "378c118b3bda502c73e76190ca089eef", "Atari, Alan Miller", "CX2662P", "Hangman (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "37ab3affc7987995784b59fcd3fcbd31", "", "", "Sprite Test (29-11-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "37b98344c8e0746c486caf5aaeec892a", "K-Tel Vision", "6", "Spider Maze (1982) (K-Tel Vision) (PAL)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "37e828675d556775ae8285c0caf7d11c", "AtariAge - Fred Quimby", "", "Gingerbread Man (Fred Quimby) (Genesis)", "Genesis controller (C throws cookie)", "New Release", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "37f42ab50018497114f6b0f4f01aa9a1", "", "", "Droid Demo 2-M (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "37fd7fa52d358f66984948999f1213c5", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (Rainbow Vision) (PAL) [a2]", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "384db97670817103dd8c0bbdef132445", "Atari - Sears", "CX2626 - 6-99829, 49-75116", "Miniature Golf (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "384f5fbf57b5e92ed708935ebf8a8610", "20th Century Fox Video Games, John W.S. Marvin", "11009", "Crypts of Chaos (1983) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3856b9425cc0185ed770376a62af0282", "Kyle Pittman", "", "Yellow Submarine (Kyle Pittman) (Hack)", "Hack of Bermuda Triangle", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "386ff28ac5e254ba1b1bac6916bcc93a", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (1982) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, + { "3882224adbd0ca7c748b2a1c9b87263e", "Atari, Tod Frye", "CX2657", "SwordQuest - FireWorld (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3889351c6c2100b9f3aef817a7e17a7a", "CCE", "", "Dolphin (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3897744dd3c756ea4b1542e5e181e02a", "Atari, Jerome Domurat, Peter C. Niday", "CX26115", "Dumbo's Flying Circus (05-05-1983) (Atari) (Prototype)", "AKA Dumbo Flies Home", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "38bd172da8b2a3a176e517c213fcd5a6", "Atari", "MA017600", "Diagnostic Test Cartridge 2.6 (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "38c362dcd5cad5a62e73ae52631bd9d8", "Jake Patterson", "", "Baubles (14-11-2001) (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "38cf93eacfb2fa9a2c5e39059ff35a74", "Greg Zumwalt", "", "WacMan (2003) (Greg Zumwalt) (Hack)", "Hack of Ms. Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "38de7b68379770b9bd3f7bf000136eb0", "Imagic, Mark Klein", "EIZ-003-04I", "Subterranea (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "391764720140c432aec454a468f77a40", "Video Game Program", "", "Miss Pack Man (Video Game Program) (PAL)", "AKA Ms. Pac-Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "392d34c0498075dd58df0ce7cd491ea2", "Atari, Frank Hausman, Mimi Nyden, Steve Woita", "CX2686", "Quadrun (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "392f00fd1a074a3c15bc96b0a57d52a1", "Atari, Rob Fulop - Sears", "CX2633 - 49-75119", "Night Driver (1980) (Atari)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 65", "", "", "", "YES", "" }, + { "393948436d1f4cc3192410bb918f9724", "Activision, Carol Shaw", "AX-020, AX-020-04", "River Raid (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "393e41ca8bdd35b52bf6256a968a9b89", "U.S. Games Corporation - Western Technologies", "VC1012", "M.A.D. (1983) (U.S. Games)", "AKA Missile Intercept", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3947eb7305b0c904256cdbc5c5956c0f", "Jone Yuan Telephonic Enterprise Co", "", "Lilly Adventure (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, + { "396f7bc90ab4fa4975f8c74abe4e81f0", "Atari, Larry Kaplan - Sears", "CX2612 - 99804, 49-75103", "Street Racer (1977) (Atari)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 60", "", "", "", "", "" }, + { "39790a2e9030751d7db414e13f1b6960", "", "", "Robotfindskitten2600 (26-04-2003) (Jeremy Penner) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "39a6a5a2e1f6297cceaa48bb03af02e9", "", "", "Pitfall 2 Plus (Hack)", "Hack of Pitfall 2", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "39b94d41bd3b01c12b4054c1a8733783", "SOLID Corp. (D. Scott Williamson)", "CX2655-016", "Star Castle 2600 (SolidCorp) [016]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "39c78d682516d79130b379fa9deb8d1c", "Apollo - Games by Apollo, Ed Salvo", "AP-1001", "Skeet Shoot (1981) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "39d36366ae7e6dfd53393fb9ebab02a0", "CCE", "C-811", "River Raid (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "39da69ff9833f8c143f03b6e0e7a996b", "Charles Morgan", "", "Ventrra Invaders 2002 (Charles Morgan) (Hack)", "Hack of Megamania", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "39fe316952134b1277b6a81af8e05776", "Robby", "18", "River Raid (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3a2e2d0c6892aa14544083dfb7762782", "Atari, Rob Fulop - Sears", "CX2638 - 49-75166", "Missile Command (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3a35d7f1dc2a33565c8dca52baa86bc4", "", "", "Rubik's Cube Demo 2 (23-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3a51a6860848e36e6d06ffe01b71fb13", "Retroactive", "", "Qb (2.07) (Retroactive) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3a526e6a1f9fe918af0f2ce997dfea73", "CBS Electronics, Dan Kitchen, Garry Kitchen", "4L1700, 4L1701, 4L1702, 4L1802, 4L2274", "Donkey Kong (1982) (CBS Electronics) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3a53963f053b22599db6ac9686f7722f", "", "", "Word Zapper (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3a771876e4b61d42e3a3892ad885d889", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Defender II (1987) (Atari)", "AKA Stargate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3aad0ef62885736a5b8c6ccac0dbe00c", "Dynacom", "", "Atlantis (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3ab5d138e26d88c8190e7cc629a89493", "", "", "Phased Color Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3ac6c50a8e62d4ce71595134cbd8035e", "Absolute Entertainment, Dan Kitchen", "AK-046-04", "Tomcat (1988) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3ad3dc799211ccd424d7c6d454401436", "Probe 2000 - North American Philips Consumer Electronics Corporation", "", "Power Lords (1983) (Probe) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3ad58b53a1e972396890bd86c735e78d", "Arcadia Corporation, Stephen H. Landrum", "AR-4400", "Excalibur Version 36 (Dragonstomper Beta) (1982) (Arcadia) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3b040ed7d1ef8acb4efdeebebdaa2052", "Tigervision", "7-008", "Miner 2049er (1983) (Tigervision) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "214", "", "" }, + { "3b097a7ed5bd2a84dc3d3ed361e9c31c", "", "", "Interleaved ChronoColour Demo (PAL) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3b10106836565e5db28c7823c0898fbb", "Xonox - Beck-Tech", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "3b2c32fcd331664d037952bcaa62df94", "Xonox", "6230, 6250", "Super Kung-Fu (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3b5751a8d20f7de41eb069f76fecd5d7", "", "", "Eckhard Stolberg's Scrolling Text Demo 4 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3b64a00ce147c3c29f7f8f8e531d08d8", "", "", "This Planet Sucks (16K) (Greg Troutman)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, + { "3b69f8929373598e1752f43f8da61aa4", "Apollo - Games by Apollo - RCA Video Jeux", "AP-2006", "Infiltrate (1921) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3b6dba1a24bb2893bd3bd0593f92016b", "CBS Electronics / Thomas Jentzsch", "", "Omega Race JS (TJ)", "Hack of Omega Race (CBS Electronics)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3b76242691730b2dd22ec0ceab351bc6", "M Network, Connie Goldman, Joe King, Patricia Lewis Du Long, Gerald Moore, Mike Sanders, Jossef Wagner - INTV", "MT4319", "Masters of the Universe (1983) (M Network)", "", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3b80b8f52a0939e16b5059f93a3fc19a", "V007", "", "Virtual Pet (V007) (after Demo 2) (CRACKERS) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3b86a27132fb74d9b35d4783605a1bcb", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3b8aacf5f5638492b926b5124de19f18", "Atari, Tod Frye - Sears", "CX2646 - 49-75185", "Pac-Man (1981) (Atari) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3b91c347d8e6427edbe942a7a405290d", "Parker Brothers", "PB5350", "Sky Skipper (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3b9480bb6fb1e358c9c0a64e86945aee", "", "", "Title Match Pro Wrestling (2002) (Skyworks)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3b966bf3c2ca34ac6ca1de4cf6383582", "", "", "Double-Height 6-Digit Score Display (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3bb9793c60c92911895cf44530846136", "Jone Yuan Telephonic Enterprise Co", "", "Dragster (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3c21a89bc38d8cd0b010a2916bcff5c2", "", "", "Colony 7 - CX-22 Hack v0.4 (NTSC)", "", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "YES", "50" }, + { "3c3a2bb776dec245c7d6678b5a56ac10", "", "", "Unknown Title (bin00003) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3c4223316c835ceaad619651e25df0f9", "", "", "Defender (Genesis)", "Genesis controller (C is smartbomb)", "Hack of Defender", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "3c4a6f613ca8ba27ce9e43c6c92a3128", "", "", "Qb (V0.04) (Non-Lax Version) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3c57748c8286cf9e821ecd064f21aaa9", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3c72ddaf41158fdd66e4f1cb90d4fd29", "Dismac", "", "Comando Suicida (Dismac)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3c7a7b3a0a7e6319b2fa0f923ef6c9af", "Atari - Roklan, Joe Gaucher", "", "Racer (1982) (Atari) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3c7a96978f52b2b15426cdd50f2c4048", "", "", "Overhead Adventure Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3c82e808fe0e6a006dc0c4e714d36209", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3c853d864a1d5534ed0d4b325347f131", "Telesys, Don 'Donyo' Ruffcorn", "1002", "Cosmic Creeps (1982) (Telesys)", "AKA Space Maze, Spaze Maze", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3c8e57a246742fa5d59e517134c0b4e6", "Parker Brothers, Rex Bradford, Sam Kjellman", "PB5050", "Star Wars - The Empire Strikes Back (1982) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3ca51b5c08f5a0ecfb17d0c1ec6d0942", "Atari, James Andreasen - Sears", "CX2654 - 49-75141", "Haunted House (09-28-81) (Atari) (Prototype)", "AKA Mystery Mansion, Graves' Manor, Nightmare Manor", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3caa902ac0ce4509308990645876426a", "Atari - GCC, Dave Payne", "CX2669, CX2669P", "Vanguard (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3cbdf71bb9fd261fbc433717f547d738", "CCE", "C-803", "Bobby Is Going Home (1983) (CCE) (PAL)", "AKA Bobby Vai Para Casa", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3cdd91e1c28d28e856c0063d602da166", "", "", "Stell-A-Sketch (03-11-1997) (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3d1e83afdb4265fa2fb84819c9cfd39c", "Coleco - JWDA, Todd Marshall, Robin McDaniel, Henry Will IV", "2465", "Smurf - Rescue in Gargamel's Castle (1983) (Coleco)", "AKA Smurf, Smurf Action", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3d2367b2b09c28f1659c082bb46a7334", "Imagic, Dennis Koble", "720103-2A, IA3203P, EIX-010-04I", "Atlantis (1982) (Imagic) (PAL)", "AKA Lost City of Atlantis", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3d2652cbea462a886a41791dd7c8d073", "", "", "Ritorno dei frattelli di Mario (Mario Bros Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3d48b8b586a09bdbf49f1a016bf4d29a", "Video Game Cartridge - Ariola", "TP-606", "Hole Hunter (Video Game Cartridge)", "AKA Topy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3d6fc7a19be76d808aa233415cb583fc", "CCE", "C-833", "Target Practice (1983) (CCE)", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "214", "", "" }, + { "3d7749fb9c2f91a276dfe494495234c5", "Jone Yuan Telephonic Enterprise Co", "", "Checkers (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3d7aad37c55692814211c8b590a0334c", "Atari, Dan Oliver", "", "Telepathy (1983) (Atari) (Prototype)", "Uses both left joystick and right Mindlink controllers (press Fire on respective controller to begin)", "Prototype", "", "", "", "", "", "", "", "", "MINDLINK", "", "78", "", "", "215", "", "" }, + { "3d8a2d6493123a53ade45e3e2c5cafa0", "Atari, Jim Huether - Sears", "CX2629 - 6-99843, 49-75118", "Sky Diver (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3d934bb980e2e63e1ead3e7756928ccd", "Activision, Steve Cartwright - Ariola", "EAX-017, EAX-017-04I - 711 017-720", "MegaMania (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3d9c2fccf8b11630762ff00811c19277", "", "", "Challenge of.... Nexar, The (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3da7cc7049d73d34920bb73817bd05a9", "Activision, Mike Lorenzen", "AX-023", "Oink! (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3dfb7c1803f937fadc652a3e95ff7dc6", "Dimax - Sinmax", "SM8001", "Space Robot (Dimax - Sinmax)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3e03086da53ecc29d855d8edf10962cb", "CBS Electronics - Roklan, Joe Gaucher, Alex Leavens", "4L1751, 4L1752, 4L1753, 4L2275", "Gorf (1982) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3e1682ddaec486d8b6b90b527aaa0fc4", "Thomas Jentzsch", "", "Robot City (V0.12) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3e22c7eaf6459b67388602e4bebbb3a8", "CommaVid, John Bronstein - Ariola", "CM-003 - 712 003-720", "Cosmic Swarm (1982) (CommaVid) (PAL) (4K)", "AKA Angriff der Termiten", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3e33ac10dcf2dff014bc1decf8a9aea4", "Spectravideo - Video Games Industries Corporation, Mike Schwartz - Ralston Purina", "", "Chase the Chuckwagon (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "22", "", "YES", "" }, + { "3e49da621193d2611a4ea152d5d5ca3a", "", "", "Atari Logo Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3e4b1137433cc1e617b5508619e13063", "", "", "Asteroids (Genesis)", "Genesis controller (C is hyperspace)", "Hack of Asteroids", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "YES", "" }, + { "3e5ca1afaa27c5da3c54c9942fec528b", "", "", "2600 Digital Clock (Demo 2) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3e6dab92009d6034618cb6b7844c5216", "", "", "Ed Invaders (Hack)", "Hack of Pepsi Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3e7d10d0a911afc4b492d06c99863e65", "VGS", "", "Super Tenis (VGS)", "AKA RealSports Tennis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3e88cca5b860d0bd8947479e74c44284", "Atari, Lou Harp", "CX26122", "Sinistar (01-23-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3e899eba0ca8cd2972da1ae5479b4f0d", "Coleco, Joseph Biel", "2457", "Venture (1982) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3e90cf23106f2e08b2781e41299de556", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision)", "Pitfall Harry's Jungle Adventure (Jungle Runner)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3eae062a9b722bda1255d474a87eca5c", "Atari, David Crane", "CX2605, CX2605P", "Outlaw (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3eb1e34a4f0eec36f12e7336badcecf2", "Jake Patterson", "", "Baubles (V0.001) (2001) (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3eb21313ea5d5764c5ed9160a5a55a83", "Activision, Alan Miller", "AX-012, CAX-012, AX-012-04", "Ice Hockey (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3ec12372ca3e870b11ca70edc7ec26a4", "CommaVid, John Bronstein", "CM-002", "Video Life (1981) (CommaVid) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3eccf9f363f5c5de0c8b174a535dc83b", "", "", "Plaque Attack (Unknown) (PAL)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3ef9573536730dcd6d9c20b6822dbdc4", "Atari, Larry Wagner, Bob Whitehead", "CX2645, CX2645P", "Video Chess (1979) (Atari) (PAL)", "AKA Computer Chess", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3f01bd6d059396f495a4cde7de0ab180", "", "", "Qb (Special Edition) (NTSC) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "3f039981255691d3859d04ef813a1264", "Xonox, John Perkins", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox) [a]", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, + { "3f251c50aa7237e61a38ab42315ebed4", "Thomas Jentzsch", "", "Ikari Warriors (1990) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3f3ad2765c874ca13c015ca6a44a40a1", "CCE", "C-862", "Crackpots (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3f540a30fdee0b20aed7288e4a5ea528", "Atari - GCC", "CX2670", "Atari Video Cube (1983) (Atari)", "AKA Atari Cube, Video Cube", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3f58f972276d1e4e0e09582521ed7a5b", "Telegames", "6082 A145", "Kung Fu Superkicks (1988) (Telegames)", "AKA Chuck Norris Superkicks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3f5a43602f960ede330cd2f43a25139e", "Activision, Alan Miller", "AG-003", "Checkers (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3f6938aa6ce66e6f42e582c1eb19b18c", "Jone Yuan Telephonic Enterprise Co", "", "Laser Blast (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "3f6dbf448f25e2bd06dea44248eb122d", "", "5687 A279", "Soccer (1988) (Telegames)", "AKA International Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3f75a5da3e40d486b21dfc1c8517adc0", "Atari, Jim Huether", "CX26163P", "Sky Diver (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3f9431cc8c5e2f220b2ac14bbc8231f4", "", "", "Colors Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3f96eb711928a6fac667c04ecd41f59f", "Bit Corporation", "PGP218", "Rodeo Champ (4 Game in One Dark Green) (1983) (BitCorp) (PAL)", "AKA Stampede", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3f9cb1aba8ec20e2c243ae642f9942bf", "", "", "New Questions (1998) (John K. Harvey) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3fd1f9d66a418c9f787fc5799174ddb7", "Aaron Curtis", "", "AStar (PAL)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3fd53bfeee39064c945a769f17815a7f", "CCE", "", "Sea Hawk (CCE)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3fe43915e5655cf69485364e9f464097", "CCE", "C-863", "Fisher Price (1983) (CCE)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3ff5165378213dab531ffa4f1a41ae45", "Otto Versand", "311377", "Pygmy (1983) (Otto Versand) (PAL)", "AKA Lock 'n' Chase (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "402b1ca3c230a60fb279d4a2a10fa677", "", "", "3-D Tic-Tac-Toe (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "62", "", "", "" }, + { "402d876ec4a73f9e3133f8f7f7992a1e", "Alex Herbert", "", "Man Goes Down (2006) (A. Herbert) (Prototype)", "Uses AtariVox controller", "Homebrew", "", "", "", "", "", "", "", "", "ATARIVOX", "", "", "", "", "", "", "" }, + { "405f8591b6941cff56c9b392c2d5e4e5", "Telegames", "", "Star Strike (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4066309eb3fa3e7a725585b9814bc375", "", "", "Multi Ball Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4066d7d88ec4a2c656127a67fa52dcf1", "", "", "Overhead Adventure Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "64", "", "", "" }, + { "407a0c6cc0ff777f67b669440d68a242", "Erik Eid", "", "Euchre (Alpha) (PAL) (31-08-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4093382187f8387e6d011883e8ea519b", "", "", "Go Go Home (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, + { "40aa851e8d0f1c555176a5e209a5fabb", "", "", "Euchre (More for less) (NTSC) (22-08-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "40b1832177c63ebf81e6c5b61aaffd3a", "Atari, Peter C. Niday", "", "Rubik's Cube 3-D (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "40b59249e05135bca33861e383735e9e", "Atari", "CX26163P", "Skiing (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "40d7ccd460c9b1198238af6ceea1737d", "", "", "Star Fire - Enemy Mine (2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "40d8ed6a5106245aa79f05642a961485", "Xonox - K-Tel Software - Beck-Tech, Steve Beck", "6210, 06002, 06004, 99002", "Ghost Manor (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "40d9f5709877ecf3dd1184f9791dd35e", "Dactari - Milmar", "", "Skiing (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "40e12c008037a323a1290c8fa4d2fe7f", "", "", "Skeleton (NTSC) (06-09-2002) (Eric Ball)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "40eb4e263581b3dfec6dd8920b68e00f", "Sears Tele-Games, Marilyn Churchill, Matthew L. Hubbard", "CX2647 - 49-75142", "Seawolf 3 (03-23-1981) (Sears) (Prototype) (PAL)", "Submarine Commander Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "413c925c5fdcea62842a63a4c671a5f2", "Activision, Larry Kaplan", "AX-006", "Bridge (1980) (Activision) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4153dd2beed648e9dc082140ebe8e836", "", "", "Coke Zero (v1.0) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, + { "415c11fcac66bbd2ace2096687774b5a", "", "", "Fu Kung! (V0.00) (07-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4181087389a79c7f59611fb51c263137", "Atari, Suki Lee", "CX26113", "Miss Piggy's Wedding (06-24-1983) (Atari) (Prototype) (8K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "41810dd94bd0de1110bedc5092bef5b0", "Funvision - Fund. International Co.", "", "Dragon Treasure (Funvision)", "AKA Dragonfire", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "41818738ab1745e879024a17784d71f5", "CCE", "C-832", "Atlantis (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4189adfc1b30c121248876e3a1a3ac7e", "Eric Ball", "", "Skeleton (Complete) (06-09-2002) (Eric Ball)", "", "New Release", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4191b671bcd8237fc8e297b4947f2990", "Exus Corporation", "", "Video Jogger (1983) (Exus)", "AKA Foot Craz", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "41c4e3d45a06df9d21b7aae6ae7e9912", "CCE", "C-826", "Grand Prix (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "41f252a66c6301f1e8ab3612c19bc5d4", "Atari - GCC, Mike Feinstein, Brad Rice", "CX2681", "Battlezone (1983) (Atari)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4209e9dcdf05614e290167a1c033cfd2", "CommaVid, John Bronstein", "CM-002", "Video Life (1984) (CommaVid) [higher sounds]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "42249ec8043a9a0203dde0b5bb46d8c4", "CCE", "", "Resgate Espacial (CCE)", "AKA Moonsweeper", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4233eb824c2b4811abef9b6d00355ae9", "Retroactive", "", "Qb (V0.10) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4251b4557ea6953e88afb22a3a868724", "", "", "Robot City (V1.1) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "425ee444a41d218598893d6b6e03431a", "", "", "Invaders Demo (2001) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4279485e922b34f127a88904b31ce9fa", "", "", "Enduro (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "428b2d36f5d716765460701f7016ac91", "Andrew Wallace", "", "Brooni (2001) (Andrew Wallace) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "42ae81ae8ac51e5c238639f9f77d91ae", "", "", "Multi-Sprite Demo 2 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "42b2c3b4545f1499a083cfbc4a3b7640", "U.S. Games Corporation - JWDA, Todd Marshall, Robin McDaniel, Wes Trager, Henry Will IV", "VC2003", "Eggomania (1982) (U.S. Games)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 60", "", "26", "", "", "" }, + { "42b3ab3cf661929bdc77b621a8c37574", "Robby", "", "Volleyball (Robby)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "42b5e3a35b032f033809afb0ea28802d", "Atari, Mimi Nyden, Scott Smith, Robert Vieira", "CX26127", "Gremlins (03-12-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "42cdd6a9e42a3639e190722b8ea3fc51", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "42dcc02777b0bcfacd85aeb61d33558a", "", "", "Human Cannonball (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "42e0ec5ab8f5deba53e4169ff2a5efbe", "", "", "Atari Logo Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4311a4115fb7bc68477c96cf44cebacf", "", "", "Challenge (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "14", "240", "", "" }, + { "4326edb70ff20d0ee5ba58fa5cb09d60", "Atari - GCC, Kevin Osborn", "CX2689", "Kangaroo (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "435fd469f088468c4d66be6b5204d887", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "438968a26b7cfe14a499f5bbbbf844db", "", "", "Raft Rider (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "43adf60ebdd6b5a0fae21594ecf17154", "Jone Yuan Telephonic Enterprise Co", "", "Stampede (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "43c6cfffeddab6b3787357fed9d44529", "20th Century Fox Video Games, Frank Cohen, Douglas 'Dallas North' Neubauer", "11111", "M.A.S.H (1983) (20th Century Fox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "43e6c5159c3a093fca88656628c6ef34", "", "", "Star Fire (17-02-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "43f33c6dfdeaf5138ce6e6968ad7c5ce", "Jeffry Johnston", "", "Radial Pong - Version 11 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "43f8459d39fb4eddf9186d62722ff795", "", "", "Skeleton+ (17-04-2003) (Eric Ball) (PAL)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "442602713cb45b9321ee93c6ea28a5d0", "", "", "Demon Attack (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "442b7863683e5f084716fda050474feb", "Eckhard Stolberg", "", "Frame Timed Sound Effects-EM (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4431428a7500c96fc0e2798a5dbd36d6", "", "", "Kangaroo (Genesis)", "Genesis controller (B is punch, C is jump)", "Hack of Kangaroo", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "44560e324ffb30741a483218ba5b4342", "", "", "Star Fire - Faster Skipping 2 (24-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4474b3ad3bf6aabe719a2d7f1d1fb4cc", "Activision, Dan Kitchen", "EAX-039-04B, EAX-039-04I", "Kung-Fu Master (1987) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4476c39736090dabac09f6caf835fc49", "", "", "Text Screen (25-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "448c2a175afc8df174d6ff4cce12c794", "Activision, David Crane", "AB-035-04", "Pitfall II (1983) (Activision) [a2]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "44e9c4a047c348dbeb7ace60f45484b4", "", "", "Moon Patrol Arcade (Genesis)", "Genesis controller (C is jump)", "Hack of Moon Patrol", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "44f71e70b89dcc7cf39dfd622cfb9a27", "Tigervision, Robert H. O'Neil", "7-007", "Polaris (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "45027dde2be5bdd0cab522b80632717d", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00250", "Summer Games (1987) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "45040679d72b101189c298a864a5b5ba", "20th Century Fox Video Games - Sirius Software, David Lubar", "11022", "SpaceMaster X-7 (1983) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4543b7691914dfd69c3755a5287a95e1", "CommaVid, Irwin Gaines", "CM-005", "Mines of Minos (1982) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "456453a54ca65191781aef316343ae00", "", "", "Full Screen Bitmap (3-D Green) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4565c1a7abce773e53c75b35414adefd", "Arcadia Corporation", "", "Supercharger BIOS (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "457b03cd48ff6d895795ef043c6b0f1e", "AtariAge, Chris Spry", "CX26201", "Zippy the Porcupine (2014) (Sprybug)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "457e7d4fcd56ebc47f5925dbea3ee427", "Carrere Video - JWDA, Garry Kitchen - Teldec - Prism", "USC1001", "Space Jockey (1983) (Carrere Video) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "457f4ad2cda5f4803f122508bfbde3f5", "", "", "Canyon Bomber (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "458883f1d952cd772cf0057abca57497", "", "", "Fishing Derby (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "45a095645696a217e416e4bd2baea723", "Digivision", "", "Snoopy (Digivision)", "AKA Snoopy and the Red Baron", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "45a4f55bb9a5083d470ad479afd8bca2", "CommaVid, Joseph Biel", "", "Frog Demo (1983) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "45beef9da1a7e45f37f3f445f769a0b3", "Atari, Suki Lee", "CX2658", "Math Gran Prix (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "45c4413dd703b9cfea49a13709d560eb", "Jone Yuan Telephonic Enterprise Co", "", "Challenge of.... Nexar, The (Jone Yuan) (Hack)", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "45cb0f41774b78def53331e4c3bf3362", "Carrere Video - JWDA, Roger Booth, Sylvia Day, Todd Marshall, Robin McDaniel, Wes Trager, Henry Will IV - Teldec - Prism", "USC1007", "Octopus (1983) (Carrere Video) (PAL)", "AKA Name This Game", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4605a00f5b44a9cbd5803a7a55de150e", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (07-03-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "461029ab23800833e9645be3e472d470", "", "", "Combat TC (v0.1)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "46258bd92b1f66f4cb47864d7654f542", "Zellers", "", "Turmoil (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "463dd4770506e6c0ef993a40c52c47be", "Arcadia Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Suicide Mission (Preview) (1982) (Arcadia)", "AKA Meteoroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "463e66ad98806a49106cffa49c08e2ed", "", "", "Interlace Game Demo (01-09-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "467340a18158649aa5e02a4372dcfccd", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4689081b7363721858756fe781cc7713", "", "", "Oystron (V2.6) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "468f2dec984f3d4114ea84f05edf82b6", "Tigervision - Teldec", "7-011 - 3.60015 VG", "Miner 2049er Volume II (1983) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4690fdb70c86604bb35da26696818667", "", "", "Euchre (Release Candidate) (NTSC) (28-09-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "469473ff6fed8cc8d65f3c334f963aab", "Atari, Bruce Poehlman, Gary Stark", "", "Dune (07-10-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "46c021a3e9e2fd00919ca3dd1a6b76d8", "Atari, Jim Huether - Sears", "CX2629 - 6-99843, 49-75118", "Sky Diver (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "46c43fdcbce8fde3a91ebeafc05b7cbd", "", "", "Invaders Demo (PAL) (2001) (Eckhard Stolberg)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "46e9428848c9ea71a4d8f91ff81ac9cc", "Telegames", "", "Astroblast (1988) (Telegames) (PAL)", "Can also use left joystick", "", "", "", "", "", "", "", "", "PADDLES", "", "YES", "AUTO 55", "", "", "", "", "" }, + { "4702d8d9b48a332724af198aeac9e469", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "470878b9917ea0348d64b5750af149aa", "Atari, Suki Lee - Sears", "CX2658 - 49-75128", "Math Gran Prix (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "47464694e9cce07fdbfd096605bf39d4", "Activision, Dan Kitchen", "EAK-050-04", "Double Dragon (1989) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4767356fa0ed3ebe21437b4473d4ee28", "Atari, Dan Hitchens, Mimi Nyden", "CX2685", "Gravitar (04-12-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "47711c44723da5d67047990157dcb5dd", "CCE", "", "Ice Hockey (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "47911752bf113a2496dbb66c70c9e70c", "Atari - CCW, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (1984) (Atari) (PAL)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "4799a40b6e889370b7ee55c17ba65141", "Konami", "RC 100-X 02", "Pooyan (1983) (Konami)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "", "" }, + { "47aad247cce2534fd70c412cb483c7e0", "Rainbow Vision - Suntek", "SS-010", "Mafia (Rainbow Vision) (PAL)", "AKA Gangster Alley", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "47abfb993ff14f502f88cf988092e055", "Zellers", "", "Inca Gold (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "47aef18509051bab493589cb2619170b", "", "", "Stell-A-Sketch (Bob Colbert) (PD)", "Uses Driving, Joystick, or Amiga/Atari ST mouse Controllers", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "47b82d47e491ac7fdb5053a88fccc832", "Atari Freak 1, Franklin Cruz", "", "Asteroid 2 (Atari Freak 1) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "47bb1c677fe7ba5f376372ae7358e790", "", "", "Star Fire (10-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "47cd61f83457a0890de381e478f5cf5f", "Imagic, Wilfredo Aguilar, Michael Becker, Rob Fulop", "720111-2A, 13205", "Fathom (1983) (Imagic) (PAL)", "AKA Scuba", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "481d20ec22e7a63e818d5ef9679d548b", "Atari", "CX26163P", "Freeway Rabbit (32 in 1) (1988) (Atari) (PAL)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "481f9a742052801cc5f3defb41cb638e", "Jeffry Johnston", "", "Radial Pong - Version 4 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "48287a9323a0ae6ab15e671ac2a87598", "Zellers", "", "Laser Volley (Zellers)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "48411c9ef7e2cef1d6b2bee0e6055c27", "Telesys, Don Ruffcorn, Jack Woodman", "1003", "Fast Food (1982) (Telesys) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "484b0076816a104875e00467d431c2d2", "Atari", "CX26150", "Q-bert (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4868a81e1b6031ed66ecd60547e6ec85", "Eric Mooney", "", "Invaders by Erik Mooney (V2.1) (1-3-98) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4884b1297500bd1243659e43c7e7579e", "Atari - Axlon, Tod Frye", "CX26178", "Save Mary! (10-24-1991) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4892b85c248131d6a42c66a4163a40d0", "Canal 3 - Intellivision", "", "Tac-Scan (Canal 3)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "YES", "PADDLES", "", "YES", "AUTO 60", "", "", "215", "", "" }, + { "48bcf2c5a8c80f18b24c55db96845472", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "48e5c4ae4f2d3b62b35a87bca18dc9f5", "Quelle", "476.774 5", "Bobby geht nach Hause (1983) (Quelle) (PAL)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "", "", "42", "", "", "" }, + { "48f18d69799a5f5451a5f0d17876acef", "ZiMAG - Emag - Vidco", "GN-070", "Mysterious Thief, A (1983) (ZiMAG) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4901c05068512828367fde3fb22199fe", "Imagic, Rob Fulop", "720101-2B, IA3200P, EIX-006-04I", "Demon Attack (1982) (Imagic) (PAL)", "AKA Death from Above", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4904a2550759b9b4570e886374f9d092", "Parker Brothers, Charlie Heath", "931506", "Reactor (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "490e3cc59d82f85fae817cdf767ea7a0", "", "", "Berzerk (Unknown) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "490eed07d4691b27f473953fbea6541a", "Activision, David Crane", "AB-035-04", "Pitfall II (1983) (Activision) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "493daaf9fb1ba450eba6b8ed53ffb37d", "", "", "3-D Corridor Demo (27-03-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "493de059b32f84ab29cde6213964aeee", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Stargate (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "493e90602a4434b117c91c95e73828d1", "Telegames", "", "Lock 'n' Chase (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4947c9de2e28b2f5f3b0c40ce7e56d93", "", "", "3-D Corridor Demo 2 (29-03-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "494cda91cc640551b4898c82be058dd9", "Andreas Dietrich", "", "Donkey Kong VCS (2017) (1.0) (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "YES", "" }, + { "49571b26f46620a85f93448359324c28", "", "", "Save Our Ship (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "37", "", "", "" }, + { "497f3d2970c43e5224be99f75e97cbbb", "CommaVid, John Bronstein", "CM-002", "Video Life (1984) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4981cefe5493ea512284e7f9f27d1e54", "Home Vision - Gem International Corp. - VDI", "VCS83136", "Cosmic War (1983) (Home Vision) (PAL)", "AKA Cosmic Corridor", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "4999b45be0ab5a85bac1b7c0e551542b", "CCE", "", "Double Dragon (CCE) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "499b612f6544ae71d4915aa63e403e10", "Atari, Carol Shaw", "CX26163P", "Checkers (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4a196713a21ef07a3f74cf51784c6b12", "Jone Yuan Telephonic Enterprise Co", "", "Frogs and Flies (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4a2fe6f0f6317f006fd6d4b34515448b", "", "", "Warring Worms (Midwest Classic Edition) (08-06-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4a45c6d75b1ba131f94a9c13194d8e46", "", "", "How to Draw a Playfield II (Joystick Hack) (1997) (Eric Bacher) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4a5fddf89801336637ac8e57a7c9a881", "Amiga", "1125", "Power Play Arcade Video Game Album IV (1984) (Amiga) (Prototype)", "Atlantis, Cosmic Ark, Dragonfire", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4a6be79310f86f0bebc7dfcba4d74161", "", "", "Demolition Herby (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4a7eee19c2dfb6aeb4d9d0a01d37e127", "Hozer Video Games", "", "Crazy Valet (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4a8c743396b8ad69d97e6fd3dd3e3132", "Arcadia Corporation", "", "Supercharger BIOS (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4a9009620038f7f30aaeb2a00ae58fde", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (3 of 3) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4ab2ebd95a8f861ea451abebdad914a5", "Nukey Shay, Thomas Jentzsch", "PAL conversion (F6)", "Montezuma's Revenge (PAL) (Genesis)", "Genesis controller (B jumps left, C jumps right)", "Homebrew", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "4ab4af3adcdae8cdacc3d06084fc8d6a", "Nick Bensema", "", "Sucky Zepplin (Nick Bensema) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4abb4c87a4c5f5d0c14ead2bb36251be", "Atari - Imagineering, Alex DeMeo", "CX26135, CX26135P", "RealSports Boxing (1987) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4ac9f40ddfcf194bd8732a75b3f2f214", "Atari - CCW, Stephan R. Keith, Laura Scholl, Preston Stuart", "CX26106", "Grover's Music Maker (12-29-1982) (Atari) (Prototype)", "Uses Keypad Controller", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, + { "4ae8c76cd6f24a2e181ae874d4d2aa3d", "", "", "Flash Gordon (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4af4103759d603c82b1c9c5acd2d8faf", "Imagic, Bob Smith", "720114-2A, 13207, EIZ-001-04I", "Moonsweeper (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4afa7f377eae1cafb4265c68f73f2718", "Ed Fries", "", "Halo 2600 (2010) (Ed Fries)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4afe528a082f0d008e7319ebd481248d", "", "", "Multi-Color Demo 1 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4b143d7dcf6c96796c37090cba045f4f", "Atari, Jim Huether - Sears", "CX2644 - 6-99824", "Flag Capture (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4b205ef73a5779acc5759bde3f6d33ed", "", "", "Berzerk (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4b27f5397c442d25f0c418ccdacf1926", "Atari, Warren Robinett", "CX2613, 49-75154", "Adventure (1980) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4b71197153d651480830638cb6a03249", "Atari, Larry Kaplan", "CX26163P", "Bowling (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4b753a97aee91e4b3e4e02f5e9758c72", "Glenn Saunders, Roger Williams", "", "Asymmetric Reflected Playfield (Glenn Saunders)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4b94fd272785d7ec6c95fb7279d0f522", "Atari - CCW, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (12-03-1982) (Atari) (Prototype)", "Uses the Keypad Controllers", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "4b9581c3100a1ef05eac1535d25385aa", "", "", "IQ 180 (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "20", "235", "", "" }, + { "4baada22435320d185c95b7dd2bcdb24", "Atari, Jerome Domurat, Dave Staugas", "CX2682", "Krull (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4bcc7f6ba501a26ee785b7efbfb0fdc8", "Atari, Andrew Fuchs, Courtney Granner, Jeffrey Gusman, Mark R. Hahn", "CX2690", "Pengo (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4bdae9246d6ee258c26665512c1c8de3", "Atari", "CX26163P", "Human Cannonball (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4c030667d07d1438f0e5c458a90978d8", "Retroactive", "", "Qb (V2.03) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4c0fb2544ae0f8b5f7ae8bce7bd7f134", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (Preview) (1983) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "", "" }, + { "4c205f166157154df2f1ef60d87e552f", "", "", "Single-Scanline Positioning Demo 2 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4c39a2c97917d3d71739b3e21f60bba5", "", "", "Whale (Sub Scan Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4c462b2b6fb0a19a1437eb2c3dc20783", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1 of 3) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4c4ce802cbfd160f7b3ec0f13f2a29df", "", "", "Beta Demo (V1.1) (26-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4c606235f4ec5d2a4b89139093a69437", "Andrew Davies", "", "Andrew Davies early notBoulderDash demo (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4c6afb8a44adf8e28f49164c84144bfe", "CCE", "C-806", "Mission 3,000 A.D. (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4c8832ed387bbafc055320c05205bc08", "Atari, Joe Decuir, Steve Mayer, Larry Wagner - Sears", "CX2601 - 99801, 6-99801, 49-75124", "Combat (1977) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4c8970f6c294a0a54c9c45e5e8445f93", "Xonox - K-Tel Software - Product Guild, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4c9307de724c36fd487af6c99ca078f2", "Imagic, Brad Stewart", "720106-1A, IA3409", "Sky Patrol (1982) (Imagic) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4ca0959f846d2beada18ecf29efe137e", "Atari, Jim Huether, Alan J. Murphy, Robert C. Polaro", "CX2666, CX2666P", "RealSports Volleyball (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4ca73eb959299471788f0b685c3ba0b5", "Activision, Steve Cartwright", "AX-031", "Frostbite (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4ca90ba45eced6f5ad560ea8938641b2", "", "", "Hangman Man Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4cabc895ea546022c2ecaa5129036634", "Funvision - Fund. International Co.", "", "Ocean City (Funvision)", "AKA Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4cd796b5911ed3f1062e805a3df33d98", "Tigervision - Software Electronics Corporation - Teldec", "7-006", "Springer (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, + { "4d0a28443f7df5f883cf669894164cfa", "", "", "Beast Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4d2cef8f19cafeec72d142e34a1bbc03", "HES", "771-422", "2 Pak Special - Star Warrior, Frogger (1990) (HES) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4d38e1105c3a5f0b3119a805f261fcb5", "Bit Corporation", "PGP212", "Phantom UFO (4 Game in One Light Green) (1983) (BitCorp) (PAL)", "AKA Spider Fighter", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4d502d6fb5b992ee0591569144128f99", "Atari - Axlon, Tod Frye", "CX26178", "Save Mary! (11-21-1989) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4d5f6db55f7f44fd0253258e810bde21", "Fabrizio Zavagli", "", "Betterblast (Fabrizio Zavagli) (Hack)", "Hack of Astroblast", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4d7517ae69f95cfbc053be01312b7dba", "Atari, Alan Miller - Sears", "CX2641 - 99807, 49-75105", "Surround (1977) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4d77f291dca1518d7d8e47838695f54b", "Data Age", "DA1004", "Airlock (1982) (Data Age)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4d8396deeabb40b5e8578276eb5a8b6d", "Otto Versand", "781698", "Volleyball (1983) (Otto Versand) (PAL)", "AKA RealSports Volleyball (Double-Game Package)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4dbf47c7f5ac767a3b07843a530d29a5", "Ric Pryor", "", "Breaking News (2002) (Ric Pryor) (Hack)", "Hack of Bump 'n' Jump", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4dcc7e7c2ec0738e26c817b9383091af", "", "", "Unknown Title (bin00026 (200110)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4dd6c7ab9ef77f2b4950d8fc7cd42ee1", "Retroactive", "", "Qb (V2.04) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4df6124093ccb4f0b6c26a719f4b7706", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari) [a]", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 60", "", "", "", "", "" }, + { "4df9d7352a56a458abb7961bf10aba4e", "", "", "Racing Car (Unknown)", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "4e01d9072c500331e65bb87c24020d3f", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (06-15-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4e02880beeb8dbd4da724a3f33f0971f", "Imagic, Michael Greene", "EIZ-002-04I", "Wing War (1983) (Imagic) (PAL)", "AKA Flap!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4e15ddfd48bca4f0bf999240c47b49f5", "Avalon Hill, Jean Baer, Jim Jacob", "5001002", "Death Trap (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4e2c884d04b57b43f23a5a2f4e9d9750", "", "", "Baby Center Animation (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4e37992a37ea36489283f7eb90913bbc", "Kris", "", "Hangman Ghost Halloween (Kris) (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4e4895c3381aa4220f8c2795d6338237", "", "", "Backwards Cannonball v1 (Hack)", "Hack of Human Cannonball", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4e66c8e7c670532569c70d205f615dad", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4e86866d9cde738d1630e2e35d7288ce", "Supergame", "", "River Raid III (Supergame)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4e99ebd65a967cabf350db54405d577c", "Coleco", "2663", "Time Pilot (1983) (Coleco) [b1]", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4eb4fd544805babafc375dcdb8c2a597", "Inspirational Video Concepts, Steve Shustack", "321430", "Red Sea Crossing (1983) (Inspirational Video Concepts)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4edb251f5f287c22efc64b3a2d095504", "Atari", "", "Atari VCS Point-of-Purchase ROM (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4f0071946e80ca68edfdccbac86dcce0", "", "", "Virtual Pet Demo 1 (CRACKERS) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4f2d47792a06da224ba996c489a87939", "HES - Activision", "223", "Super Action Pak - Pitfall, Barnstorming, Grand Prix, Laser Blast (1988) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4f32b24869d8c1310fecf039c6424db6", "U.S. Games Corporation - JWDA, Todd Marshall", "", "3-D Zapper (12-15-82) (U.S. Games) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4f618c2429138e0280969193ed6c107e", "Activision, Alan Miller", "AZ-028, AG-028-04", "Robot Tank (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4f634893d54e9cabe106e0ec0b7bdcdf", "Retroactive", "", "Qb (2.14) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4f64d6d0694d9b7a1ed7b0cb0b83e759", "20th Century Fox Video Games, John Russell", "11016", "Revenge of the Beefsteak Tomatoes (1983) (20th Century Fox)", "AKA Revenge of the Cherry Tomatoes", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4f6702c3ba6e0ee2e2868d054b00c064", "Activision - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen - Ariola", "EAZ-033 - 711 033-725", "Space Shuttle (1983) (Activision) (PAL)", "A Journey Into Space, Eine Reise ins All", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4f781f0476493c50dc578336f1132a67", "", "", "Indy 500 (Unknown) (PAL) (4K)", "Uses Driving Controllers", "", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "", "", "", "" }, + { "4f7b07ec2bef5ccffe06403a142f80db", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2003", "Racquetball (1982) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4f82d8d78099dd71e8e169646e799d05", "", "", "Miniature Golf (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4f89b897444e7c3b36aed469b8836839", "Atari", "CX26190", "BMX Air Master (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4fae08027365d31c558e400b687adf21", "", "", "Qb (V2.17) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "4faeb04b1b7fb0fa25db05753182a898", "", "", "2600 Digital Clock (V x.xx) (PD) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4fbe0f10a6327a76f83f83958c3cbeff", "CCE", "C-816", "Keystone Kappers (1983) (CCE)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4fc1b85b8074b4b9436d097900e34f29", "John K. Harvey", "", "John K. Harvey's Equalizer (John K. Harvey)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "50200f697aeef38a3ce31c4f49739551", "Mystique - American Multiple Industries, Joel H. Martin", "", "Custer's Revenge (1982) (Mystique) (PAL60)", "", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "502044b1ac111b394e6fbb0d821fca41", "", "", "Hangman Invader 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "502168660bfd9c1d2649d415dc89c69d", "Activision, Bob Whitehead - Ariola", "EAG-019, EAG-019-04I - 711 019-715", "Sky Jinks (1982) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "504688d49a41bf03d8a955512609f3f2", "Thomas Jentzsch", "", "SWOOPS! (TJ)", "Uses the Joystick (L) and Paddle (R) Controllers", "Homebrew", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "28", "", "", "" }, + { "50568c80ac61cab789d9923c9b05b68e", "Ebivision", "", "Merlin's Walls - Standard Edition (1999) (Ebivision)", "Image rotated 90 degrees CW", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5069fecbe4706371f17737b0357cfa68", "Apollo - Games by Apollo, Steve Stringfellow", "AP-2005", "Shark Attack (1982) (Apollo) (PAL)", "AKA Lochjaw", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5079bfbc7b8f5770f84215ed2e3bdd1b", "Omegamatrix (2012)", "", "Genesis Button Tester", "", "Homebrew", "", "", "", "", "", "", "", "GENESIS", "GENESIS", "", "", "", "", "", "", "" }, + { "50a410a5ded0fc9aa6576be45a04f215", "Activision, Bob Whitehead - Ariola", "EAG-019, EAG-019-04I - 711 019-715", "Sky Jinks (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "50c7edc9f9dc0369abcdab3b4efeb5e9", "U.S. Games Corporation - JWDA, Todd Marshall", "", "3-D Zapper (U.S. Games) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "50ef88f9a5e0e1e6b86e175362a27fdb", "", "", "Multi-Sprite Game V2.4 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "512e874a240731d7378586a05f28aec6", "Tigervision, Rorke Weigandt - Teldec", "7-005", "Marauder (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5131ab3797fe8c127e3e135b18b4d2c8", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "514f911ecff2be5eeff2f39c49a9725c", "Parker Brothers", "931510", "Sky Skipper (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "515046e3061b7b18aa3a551c3ae12673", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "516ffd008057a1d78d007c851e6eff37", "Parker Brothers, Dawn Stockbridge", "PB5910", "Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "517592e6e0c71731019c0cebc2ce044f", "Parker Brothers - JWDA, Todd Marshall", "PB5550", "Q-bert's Qubes (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "214", "", "" }, + { "517923e655755086a3b72c0b17b430e6", "Tron", "", "Super Tennis (Tron)", "AKA RealSports Tennis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5188fee071d3c5ef0d66fb45c123e4a5", "Gameworld", "133-001", "Encounter at L-5 (1983) (Gameworld) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 50", "", "", "", "", "" }, + { "519f007c0e14fb90208dbb5199dfb604", "Amiga - Video Soft", "", "Depth Charge (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "51de328e79d919d7234cf19c1cd77fbc", "Atari, Mark R. Hahn", "CX2678", "Dukes of Hazzard (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "51e390424f20e468d2b480030ce95d7b", "Video Game Program", "", "Fire Bird (Video Game Program) (PAL)", "AKA Phoenix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "51f15b39d9f502c2361b6ba6a73464d4", "", "", "Amanda Invaders (PD) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "51f211c8fc879391fee26edfa7d3f11c", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "521f4dd1eb84a09b2b19959a41839aad", "Bit Corporation", "PG206", "Bobby Is Going Home (1983) (BitCorp)", "AKA Bobby geht Heim", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "522c9cf684ecd72db2f85053e6f6f720", "Rainbow Vision - Suntek", "SS-008", "Year 1999, The (Rainbow Vision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "52385334ac9e9b713e13ffa4cc5cb940", "CCE", "C-804", "Open, Sesame! (1983) (CCE)", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "214", "YES", "" }, + { "523f5cbb992f121e2d100f0f9965e33f", "Joe Grand", "", "SCSIcide (1.30) (CGE 2001 Release) (Joe Grand)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, + { "524693b337f7ecc9e8b9126e04a232af", "", "", "Euchre (19-08-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5256f68d1491986aae5cfdff539bfeb5", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (07-26-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "525ea747d746f3e80e3027720e1fa7ac", "Activision, Garry Kitchen - Ariola", "EAZ-032 - 771 032-712", "Pressure Cooker (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "525f2dfc8b21b0186cff2568e0509bfc", "Activision, David Crane", "AG-930-04, AZ-030", "Decathlon (1983) (Activision) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "52615ae358a68de6e76467e95eb404c7", "", "", "DJdsl-wopd (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "528400fad9a77fd5ad7fc5fdc2b7d69d", "Starpath Corporation, Stephen H. Landrum, Jon Leupp", "11 AR-4201", "Sword of Saros (1983) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "52a0003efb3b1c49fcde4dbc2c685d8f", "Atari, Alan Miller - Sears", "CX2641 - 99807, 49-75105", "Surround (1977) (Atari) (4K) [a]", "", "", "", "", "2K", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "52b448757081fd9fabf859f4e2f91f6b", "", "", "Worm War I (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "52bae1726d2d7a531c9ca81e25377fc3", "", "", "Space Instigators (V1.8 Fixed) (20-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "52e1954dc01454c03a336b30c390fb8d", "Retroactive", "", "Qb (2.14) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "52e9db3fe8b5d336843acac234aaea79", "", "", "Fu Kung! (V0.11) (28-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5305f69fbf772fac4760cdcf87f1ab1f", "Jone Yuan Telephonic Enterprise Co", "", "Ski Run (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5324cf5b6dc17af4c64bf8696c39c2c1", "Imagic, Dennis Koble", "IA3203, IX-010-04", "Atlantis (1982) (Imagic) (8K)", "AKA Lost City of Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5336f86f6b982cc925532f2e80aa1e17", "Parker Brothers - JWDA, Todd Marshall, Robin McDaniel, Ray Miller", "PB5060", "Star Wars - Death Star Battle (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "534e23210dd1993c828d944c6ac4d9fb", "M Network, Stephen Tatsumi, Jane Terjung - Kool Aid", "MT4648", "Kool-Aid Man (1983) (M Network)", "AKA Kool Aid Pitcher Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5355f80cacf0e63a49cbf4ade4e27034", "Christian Samuel", "", "Cute Dead Things House (Christian Samuel) (Hack)", "Hack of Haunted House", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5360693f1eb90856176bd1c0a7b17432", "", "", "Oystron (V2.85) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "537ed1e0d80e6c9f752b33ea7acbe079", "", "", "A-VCS-tec Challenge (beta 5) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5385cf2a04de1d36ab55c73174b84db0", "Paul Slocum", "", "Combat Rock (PD) (Hack)", "Hack of Combat", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "539b7038acec0ccedeae40f238998579", "", "", "Star Fire (25-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "539d26b6e9df0da8e7465f0f5ad863b7", "Atari, Carol Shaw - Sears", "CX2636 - 49-75156", "Video Checkers (1980) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "53b66f11f67c3b53b2995e0e02017bd7", "CCE", "C-1005", "Super Tennis (1983) (CCE)", "AKA RealSports Tennis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "53d181cde2e0219b5754caad246fcb66", "", "", "Missile Demo (1998) (Ruffin Bailey) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "53f147b9746fdc997c62f3dd67888ee5", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "540075f657d4b244a1f74da1b9e4bf92", "Bit Corporation", "PGP230", "Festival (4 Game in One Dark Green) (1983) (BitCorp) (PAL)", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5409d20c1aea0b89c56993aec5dc5740", "", "", "Carnival Shooter (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5428cdfada281c569c74c7308c7f2c26", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "542c6dd5f7280179b51917a4cba4faff", "ZiMAG - Emag - Vidco", "GN-080", "Spinning Fireball (1983) (ZiMAG) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5438e84b90e50a5362f01cc843b358d4", "Arcadia Corporation, Scott Nelson", "3 AR-4300", "Fireball (1982) (Arcadia) (Prototype)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, + { "543b4b8ff1d616fa250c648be428a75c", "Warren Robinett", "", "Adventure (1978) (Warren Robinett) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "545048ccb045f9efc6cf2b125cd0dfa8", "Arcadia Corporation, Stephen Harland Landrum, Jon Leupp", "AR-4201", "Sword of Saros (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "54785fa29e28aae6038929ba29d33d38", "", "", "Poker Squares (V0.19) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5494b9ee403d9757f0fd1f749e80214a", "Larry Petit", "", "Xenophobe Arcade (2003) (Larry Petit) (Hack)", "Hack of Xenophobe", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "54a1c1255ed45eb8f71414dadb1cf669", "Spectravideo", "SA-212", "Mangia' (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "54bafc299423f5a50b8bc3a797914706", "SOLID Corp. (D. Scott Williamson)", "CX2655*", "Star Castle 2600 (SolidCorp) (PAL)", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "54da3b0b3f43f5b37911c135b9432b49", "", "", "Halloween III Revision (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "54f7efa6428f14b9f610ad0ca757e26c", "Apollo - Games by Apollo, Steve Stringfellow", "AP-2005", "Shark Attack (1982) (Apollo)", "AKA Lochjaw", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "551a64a945d7d6ece81e9c1047acedbc", "Matthias Jaap", "", "Coffee Cup Soccer (Matthias Jaap) (Hack)", "Hack of Pele's Soccer", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "551ef75593ec18d078e8f5cc0229e1c4", "", "", "Star Fire - New Paulstar WIP (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5524718a19107a04ec3265c93136a7b5", "Thomas Jentzsch", "", "RealSports Basketball (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "557e893616648c37a27aab5a47acbf10", "Atari - Axlon, Tod Frye - Heuristica, Augustin Ortiz", "CX26169", "Shooting Arcade (01-16-1990) (Atari) (Prototype) (PAL)", "Uses the Light Gun Controller (left only)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "559317712f989f097ea464517f1a8318", "Panda", "100", "Space Canyon (1983) (Panda)", "AKA Space Cavern", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "55949cb7884f9db0f8dfcf8707c7e5cb", "Atari, Ed Logg, Carol Shaw - Sears", "CX2639 - 49-75162", "Othello (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "55ace3c775f42eb46f08bb1dca9114e7", "", "", "Shadow Keep (04-03-2003) (Andrew Towers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "55ef6ab2321ca0c3d369e63d59c059c8", "", "", "Pitfall! (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "55ef7b65066428367844342ed59f956c", "Atari - Roklan, Joe Gaucher, Alex Leavens", "CX2683", "Crazy Climber (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "562acb1b7ff182aba133bda8e21ad7c1", "", "", "Space Treat Deluxe (08-03-2003) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "562bf02f5031d51c6b53b03972a56b22", "", "", "Star Fire - Framework Done (30-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "56300ed31fef018bd96768ccc982f7b4", "HES - Activision", "559", "Rad Action Pak - Kung-Fu Master, Freeway, Frostbite (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5641c0ff707630d2dd829b26a9f2e98f", "Joystik", "", "Motocross (Joystik)", "AKA Motocross Racer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5643ee916f7dc760148fca4db3aa7d10", "", "", "Moon Patrol (Genesis)", "Genesis controller (C is jump)", "Hack of Moon Patrol", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "5678ebaa09ca3b699516dba4671643ed", "Coleco, Sylvia Day, Henry Will IV", "2459", "Mouse Trap (1982) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "568371fbae6f5e5b936af80031cd8888", "", "", "Robotfindskitten2600 (26-04-2003) (Jeremy Penner)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "571c6d9bc71cb97617422851f787f8fe", "Activision, David Crane - Ariola", "EAG-004, PAG-004 - 711 004-715", "Fishing Derby (1980) (Activision) (PAL)", "AKA Schneller als der Hai", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "572d0a4633d6a9407d3ba83083536e0f", "Funvision - Fund. International Co.", "", "Busy Police (Funvision)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "575c0fb61e66a31d982c95c9dea6865c", "", "", "Blackjack (Unknown) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, + { "57939b326df86b74ca6404f64f89fce9", "Atari, Sam Comstock, Richard Dobbis, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "579baa6a4aa44f035d245908ea7a044d", "Jess Ragan", "", "Galaxian Enhanced Graphics (Jess Ragan) (Hack)", "Hack of Galaxian", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "57a66b6db7efc5df17b0b0f2f2c2f078", "Retroactive", "", "Qb (V2.08) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "57c5b351d4de021785cf8ed8191a195c", "Atari - CCW, Gary Stark", "CX26102", "Cookie Monster Munch (1983) (Atari)", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "5835a78a88f97acea38c964980b7dbc6", "", "", "Cosmic Creeps (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "5846b1d34c296bf7afc2fa05bbc16e98", "Atari - Sears", "CX2643 - 6-99815", "Codebreaker (1978) (Atari)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "58513bae774360b96866a07ca0e8fd8e", "Mystique - American Multiple Industries, Joel H. Martin", "1001", "Custer's Revenge (1982) (Mystique)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "585600522b1f22f617652c962e358a5d", "", "", "Multi-Sprite Game V2.2 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "585f73010e205ae5b04ee5c1a67e632d", "", "", "Daredevil (V3) (Stunt_Cycle_Rules!) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5864cab0bc21a60be3853b6bcd50c59f", "", "", "Commando Raid (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "58746219d8094edff869f0f5c2aeaad5", "Jone Yuan Telephonic Enterprise Co", "", "Bowling (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5894c9c0c1e7e29f3ab86c6d3f673361", "Activision - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen", "AZ-033, AZ-033-04", "Space Shuttle (1983) (Activision)", "A Journey Into Space", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "589c73bbcd77db798cb92a992b4c06c3", "Xonox - K-Tel Software - Action Graphics, John Perkins, David Thiel", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox) (PAL60)", "", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "58a82e1da64a692fd727c25faef2ecc9", "CCE", "C-824", "Jaw Breaker (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "58c396323ea3e85671e34c98eb54e2a4", "Brian Watson", "", "Color Tweaker (B. Watson)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "58d331c23297ed98663d11b869636f16", "", "", "Fu Kung! (V0.09) (26-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "58e313e2b5613b2439b5f12bb41e3eef", "", "", "Cube Conquest (Demo Interlace) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "590ac71fa5f71d3eb29c41023b09ade9", "Atari - GCC, Mark Ackerman, Tom Calderwood, Glenn Parker", "CX2684", "Galaxian (01-05-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "59135f13985b84c4f13cc9e55eec869a", "", "", "Multi-Sprite Game V2.0 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "594dbc80b93fa5804e0f1368c037331d", "Telesys, Alex Leavens", "", "Bouncin' Baby Bunnies (1983) (Telesys) (Prototype)", "AKA Bouncing Baby Monkeys", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5961d259115e99c30b64fe7058256bcf", "Universal Gamex Corporation, Miguel Castillo, H.K. Poon", "GX-001", "X-Man (1983) (Universal)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "59734e1cc41822373845a09c51e6ba21", "Activision, John Van Ryzin", "AG-038-04", "Cosmic Commuter (1984) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "598a4e6e12f8238b7e7555f5a7777b46", "Tigervision", "7-008", "Miner 2049er (1982) (Tigervision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "214", "", "" }, + { "599cbf919d47a05af975ad447df29497", "Jake Patterson", "", "Baubles (V0.002) (2001) (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "59b70658f9dd0e2075770b07be1a35cf", "Thomas Jentzsch", "", "Surfer's Paradise (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "59d33e00c07665395209c1e55da0b139", "", "", "Imagic Selector ROM (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "59e53894b3899ee164c91cfa7842da66", "Data Age", "", "Survival Run (1983) (Data Age) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "59e96de9628e8373d1c685f5e57dcf10", "PlayAround - J.H.M.", "204", "Beat 'Em & Eat 'Em (1982) (PlayAround)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, + { "59f596285d174233c84597dee6f34f1f", "CCE", "C-811", "River Raid (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a0ff99ba10bd26d542e1d6f59f56850", "Champ Games", "CG-04-P", "Super Cobra Arcade (PAL60)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "SAVEKEY", "", "", "PAL60", "", "", "YES", "" }, + { "5a17e30e6e911e74ccd7b716d02b16c6", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a272012a62becabcd52920348c7c60b", "Star Game", "", "Pitfall (Star Game)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a2f2dcd775207536d9299e768bcd2df", "Otto Versand", "781698", "Flippern (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Video Pinball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a5390f91437af9951a5f8455b61cd43", "Retroactive", "", "Qb (0.11) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "5a6febb9554483d8c71c86a84a0aa74e", "CCE", "C-1003", "Donkey Kong Jr (1983) (CCE)", "AKA Donkey Kong Junior", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a734779d797ccef25dc8acfa47244c7", "", "", "Oh No! (Version 2) (18-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a80b857eb8b908ab477ec4ef902edc8", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a81ad4e184050851e63c8e16e3dac77", "Jone Yuan Telephonic Enterprise Co", "Hack", "Sky Diver (Jone Yuan) (Hack)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a8afe5422abbfb0a342fb15afd7415f", "Atari - Bobco, Robert C. Polaro", "CX26155", "Sprint Master (1988) (Atari)", "AKA Sprint 88, Sprint 2000", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a93265095146458df2baf2162014889", "Activision, Steve Cartwright - Ariola", "EAX-031, EAX-031-04B - 711 031-717", "Frostbite (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a9685c4d51a6c1d6a9544946d9e8dc3", "AtariAge", "", "Grandma's Revenge (AtariAge)", "Can use driving controller in right port", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a9d188245aff829efde816fcade0b16", "CCE", "C-808", "Phantom Tank (1983) (CCE) (PAL)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, + { "5acf9865a72c0ce944979f76ff9610f0", "", "", "Dodge Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5ae73916fa1da8d38ceff674fa25a78a", "CCE", "", "Barnstorming (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5aea9974b975a6a844e6df10d2b861c4", "Atari, Dan Hitchens. Mimi Nyden", "CX2656", "SwordQuest - EarthWorld (1982) (Atari)", "AKA Adventure I, SwordQuest I - EarthWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5af9cd346266a1f2515e1fbc86f5186a", "Sega", "002-01", "Sub-Scan (1983) (Sega)", "AKA Subterfuge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5b124850de9eea66781a50b2e9837000", "PlayAround - J.H.M.", "205", "Bachelor Party (1982) (PlayAround)", "Uses the paddle controllers", "Extremely Rare", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "AUTO 65", "", "22", "222", "YES", "" }, + { "5b574faa56836da0866ba32ae32547f2", "", "", "Tomb Raider 2600 [REV 03] (Montezuma's Revenge Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5b5d04887922b430de0b7b2a21f9cd25", "", "", "Omega Race (Genesis)", "Genesis controller (B is thrust, C is fire)", "Hack of Omega Race", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "5b6f5bcbbde42fc77d0bdb3146693565", "", "", "Seaquest (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5b7ea6aa6b35dc947c65ce665fde624b", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (2 of 3) (1982) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5b85e987e2b1618769d97ba9182333d0", "Atari - GCC, Mike Feinstein, Brad Rice", "CX2681", "Battlezone (05-12-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5b92a93b23523ff16e2789b820e2a4c5", "Activision, Dan Kitchen", "AG-039-04", "Kung-Fu Master (1987) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5b98e0536c3f60547dd708ae22adb04b", "Ben Hudman", "", "Donkey Kong Gingerbread Man (Ben Hudman) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5b9c2e0012fbfd29efd3306359bbfc4a", "HES", "", "2 Pak Special - Hoppy, Alien Force (1992) (HES) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5babe0cad3ec99d76b0aa1d36a695d2f", "Coleco - Individeo, Ed Temple", "2654", "Looping (1983) (Coleco) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5bba254e18257e578c245ed96f6b003b", "", "", "Music Effects Demo (21-01-2003) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "5bbab3f3e4b47e3e23f9820765dbb45c", "", "", "Pitfall! (says 1985) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5bc9998b7e9a970e31d2cb60e8696cc4", "Jack Kortkamp", "", "Borgwars Asteroids (2003) (Jack Kortkamp) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "5bcc83677d68f7ef74c1b4a0697ba2a8", "Activision, Alan Miller", "AX-012, CAX-012, AX-012-04", "Ice Hockey (1981) (Activision) (16K)", "", "", "", "", "4K", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5bd79139a0c03b63f6f2cf00a7d385d2", "Marc de Smet", "", "An Exercise In Minimalism (V1) (1999) (Marc de Smet) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5be03a1fe7b2c114725150be04b38704", "Atari, Alan Miller", "CX2642", "Hunt & Score (1978) (Atari) (PAL)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "5c0227ad63300670a647fcebf595ea37", "Josh", "", "Battle for Naboo (Josh) (Hack)", "Hack of Atlantis", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5c0520c00163915a4336e481ca4e7ef4", "Quelle", "262.794 1", "Wuestenschlacht (1983) (Quelle) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5c19f6da638c4c7c1f98d09e63df43e4", "Canal 3 - Intellivision", "", "Cosmic Ark (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5c1b1aa78b7609d43c5144c3b3b60adf", "", "", "Demo Image Series #8 - Two Marios (Different Interlacing) (27-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5c3a6d27c026f59a96b7af91e8b1bf26", "PlayAround - J.H.M.", "", "PlayAround Demo (PlayAround) (1982)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5c618a50dfa23daac97ba459b9ff5206", "Steve Engelhardt", "", "Berzerk Renegade (2002) (Steve Engelhardt) (Hack)", "Hack of Room of Doom", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "5c73693a89b06e5a09f1721a13176f95", "", "", "Wavy Line Test 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5c86e938e0845b9d61f458539e9a552b", "Atari, Alan Miller", "CX26163P", "Surround (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5cbd7c31443fb9c308e9f0b54d94a395", "Spectravideo, Mark Turmell", "SA-217", "Gas Hog (1983) (Spectravideo) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5ce98f22ade915108860424d8dde0d35", "", "", "Hangman Man Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5d0e8a25cbd23e76f843c75a86b7e15b", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (09-07-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5d132d121aabc5235dd039dfc46aa024", "", "", "Basketball (208 in 1) (Unknown) (PAL) (Hack)", "Console ports are swapped", "Hack", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "5d25df9dc2cde746ceac48e834cf84a7", "Activision - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen", "EAZ-033", "Space Shuttle (1983) (Activision) (SECAM)", "A Journey Into Space", "", "", "", "FE", "", "", "", "", "", "", "", "", "SECAM", "", "", "", "" }, + { "5d2cc33ca798783dee435eb29debf6d6", "Activision - Imagineering, Mike Reidel", "AK-043-04", "Commando (1988) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5d799bfa9e1e7b6224877162accada0d", "Spectravision - Spectravideo - Sirius Software, David Lubar", "SA-206", "Challenge of.... Nexar, The (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5d8f1ab95362acdf3426d572a6301bf2", "Thomas Jentzsch", "", "SWOOPS! (v0.96) (TJ) (PAL)", "Uses the Joystick (L) and Paddle (R) Controllers", "Homebrew", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "28", "", "", "" }, + { "5d8fb14860c2f198472b233874f6b0c9", "", "", "Boing! (PD) [a2]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5d9592756425192ec621d2613d0e683d", "CCE", "C-839", "Misterious Thief, A (1983) (CCE) [a]", "AKA A Mysterious Thief", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5da8fd0b5ed33a360bff37f8b5d0cd58", "Tron", "", "Pole Position (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5dae540347cf0a559962d62604ecf750", "Canal 3 - Intellivision", "", "Freeway (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5db9e5bf663cad6bf159bc395f6ead53", "Goliath - Hot Shot", "83-212", "Time Race (1983) (Goliath) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "5dccf215fdb9bbf5d4a6d0139e5e8bcb", "Froggo", "FG1009", "Sea Hunt (1987) (Froggo)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5de8803a59c36725888346fdc6e7429d", "Atari, John Dunn - Sears", "CX2631 - 49-75152", "Superman (1979) (Atari) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5df32450b9fbcaf43f9d83bd66bd5a81", "Eric Ball", "", "Atari Logo Playfield Demo (2001) (Eric Ball) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5df559a36347d8572f9a6e8075a31322", "Digivision", "", "Enduro (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5e0c37f534ab5ccc4661768e2ddf0162", "Telegames - VSS, Ed Salvo", "5667 A106", "Glacier Patrol (1988) (Telegames)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5e1b4629426f4992cf3b2905a696e1a7", "Activision - Bobco, Robert C. Polaro", "AK-049-04", "Rampage! (1989) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5e1b7a6078af428ef056fe85a37a95ca", "Activision, David Crane", "AX-014, AX-014-04", "Grand Prix (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5e1cd11a6d41fc15cf4792257400a31e", "Philip R. Frey", "", "Return of Mario Bros (Philip R. Frey) (Hack)", "Hack of Mario Bros.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5e201d6bfc520424a28f129ee5e56835", "Universal Gamex Corporation, Miguel Castillo, H.K. Poon", "GX-001", "X-Man (1983) (Universal) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5e2495d43b981010304af55efed1e798", "Jone Yuan Telephonic Enterprise Co", "", "Math Gran Prix (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5e2928f089490017e88e9f9e5a881a25", "", "", "Star Fire - Faster Skipping 1 (24-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5e99aa93d0acc741dcda8752c4e813ce", "", "", "2600 Digital Clock (V b2) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5ec73ac7d2ac95ac9530c6d33e713d14", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (2 of 3) (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, + { "5eeb81292992e057b290a5cd196f155d", "Wizard Video Games - VSS, Ed Salvo", "008", "Texas Chainsaw Massacre, The (1983) (Wizard Video)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5ef303b9f0aa8cf20720c560e5f9baa1", "Atari, Jim Huether", "CX2629, CX2629P", "Sky Diver (1979) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5f1b7d5fa73aa071ba0a3c2819511505", "CCE", "", "Cosmic Commuter (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5f2b4c155949f01c06507fb32369d42a", "Apollo, Ed Salvo", "AP-1001", "Skeet Shoot (1981) (Apollo) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5f316973ffd107f7ab9117e93f50e4bd", "", "", "Commando Raid (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5f39353f7c6925779b0169a87ff86f1e", "Atari - GCC, John Allred, Douglas B. Macrae, Betty Ryan Tylko", "CX2694", "Pole Position (1983) (Atari) [a]", "AKA RealSports Driving", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5f46d1ff6d7cdeb4b09c39d04dfd50a1", "Atari, Gary Palmer", "CX2661P", "Fun with Numbers (1980) (Atari) (PAL)", "AKA Basic Math", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5f560837396387455c9dcb05cdd4b053", "Canal 3 - Intellivision", "", "Eggomania (Canal 3)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 60", "", "", "", "", "" }, + { "5f681403b1051a0822344f467b05a94d", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (1982) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "5f69453a69f21dc49697a80d2e933491", "", "", "Star Fire - Reduced Flickering (06-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5f708ca39627697e859d1c53f8d8d7d2", "Atari, Warren Robinett - Sears", "CX2606 - 6-99825, 49-75112", "Slot Racers (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5f73e7175474c1c22fb8030c3158e9b3", "Atari, Nick 'Sandy Maiwald' Turner", "CX2665", "Frog Pond (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5f786b67e05fb9985b77d4beb35e06ee", "Atari, Bill Aspromonte, Andrew Fuchs", "CX26120", "Defender II (1987) (Atari) (PAL)", "AKA Stargate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5f7ae9a7f8d79a3b37e8fc841f65643a", "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira", "CX26109", "Sorcerer's Apprentice (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5f7de62a408b9de3a1168898298fd31d", "", "", "Super Cobra (Genesis)", "Genesis controller (B is bomb, C is laser)", "Hack of Super Cobra", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "5f950a2d1eb331a1276819520705df94", "20th Century Fox Video Games", "", "Unknown 20th Century Fox Game (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "5f9b62350b31be8bd270d9a241cbd50e", "Telegames", "5658 A088", "Football (1988) (Telegames) (PAL)", "AKA Super Challenge Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5faffe1c4c57430978dec5ced32b9f4a", "Dactari - Milmar", "", "Volleyball (Dactari - Milmar)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5fb71cc60e293fe10a5023f11c734e55", "", "", "This Planet Sucks (Fix) (27-12-2002) (Greg Troutman)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, + { "600d48eef5c0ec27db554b7328b3251c", "", "", "Bars and Text Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6015a9cef783e97e98a2aa2cf070ae06", "Thomas Jentzsch", "", "Battlezone TC (Thomas Jentzsch) (Hack)", "Uses two simultaneous Joystick Controllers, Hack of Battlezone", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "60358edf0c2cc76b1e549e031e50e130", "Manuel Polik", "", "Cyber Goth Galaxian (Manuel Polik) (Hack)", "Hack of Galaxian", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "603c7a0d12c935df5810f400f3971b67", "Bit Corporation", "PG209", "Mr. Postman (1983) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6041f400b45511aa3a69fab4b8fc8f41", "Apollo, Ban Tran", "AP-2010", "Wabbit (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "604e09724555807c28108049efe34a13", "", "", "Sokoban (01-01-2003) (Adam Wozniak)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6058e40ce79d7434c7f7477b29abd4a5", "", "", "Rubik's Cube Demo (23-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "605dcb73d22f4efdb90ef9da2f290f7c", "Atari, Larry Kaplan", "CX26163P", "Air-Sea Battle (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "40", "256", "", "" }, + { "605fd59bfef88901c8c4794193a4cbad", "Data Age", "", "Secret Agent (1983) (Data Age) (Prototype)", "Uses the Paddle Controllers", "Prototype", "", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, + { "606c2c1753051e03c1f1ac096c9d2832", "Jone Yuan Telephonic Enterprise Co", "", "Crackpots (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6076b187a5d8ea7a2a05111c19b5d5cd", "", "", "Fu Kung! (V0.14) (01-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "60a61da9b2f43dd7e13a5093ec41a53d", "VentureVision, Dan Oliver", "VV2001", "Rescue Terra I (1982) (VentureVision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "60bbd425cb7214ddb9f9a31948e91ecb", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "60cd61a2dfccb0e2736434f9792c1672", "Amiga - Video Soft, Frank Ellis, Jerry Lawson", "2110", "3-D Havoc (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "60d304582d33e2957b73eb300a7495bb", "", "", "Jam Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "60e0ea3cbe0913d39803477945e9e5ec", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "AUTO 60", "", "", "", "", "" }, + { "613abf596c304ef6dbd8f3351920c37a", "", "", "Boring Pac-Man (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, + { "6141c095d0aee4e734bebfaac939030a", "Rainbow Vision - Suntek", "SS-017", "Mariana (Rainbow Vision) (PAL)", "AKA Seaquest", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "61426cee013306e7f7367534ab124747", "", "", "One Blue Bar Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "615a3bf251a38eb6638cdc7ffbde5480", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2674", "E.T. - The Extra-Terrestrial (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "61621a556ad3228f0234f5feb3ab135c", "", "", "Fu Kung! (V0.05 Cuttle Card Compattle Revision) (14-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "61631c2f96221527e7da9802b4704f93", "Activision - Imagineering, Mike Reidel", "AK-043-04", "Commando (1988) (Activision) [different logo]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "61719a8bdafbd8dab3ca9ce7b171b9e2", "", "", "Enduro (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "61728c6cfb052e62a9ed088c5bf407ba", "", "", "Sprite Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "619de46281eb2e0adbb98255732483b4", "", "", "Time Warp (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, + { "61dbe94f110f30ca4ec524ae5ce2d026", "CCE", "C-820", "Space Invaders (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "61e0f5e1cc207e98704d0758c68df317", "Star Game", "007", "Tennis (Star Game)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "61ef8c2fc43be9a04fe13fdb79ff2bd9", "", "", "Gas Gauge Demo - Revisited (2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6205855cc848d1f6c4551391b9bfa279", "", "", "Euchre (Release Candidate 2) (NTSC) (01-10-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "624e0a77f9ec67d628211aaf24d8aea6", "Panda", "108", "Sea Hawk (1983) (Panda)", "AKA Seahawk", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "626d67918f4b5e3f961e4b2af2f41f1d", "Atari", "50008", "Diagnostic Test Cartridge 2.0 (1980) (Atari) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6272f348a9a7f2d500a4006aa93e0d08", "Atari, Jerome Domurat, Michael Sierchio", "CX2667, CX2667P", "RealSports Soccer (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "62899430338e0538ee93397867d85957", "Gameworld", "133-004", "Airlock (1983) (Gameworld) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "62921652f6634eb1a0940ed5489c7e18", "", "", "SCSIcide (V1.09) (2001) (Joe Grand)", "", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, + { "62992392ea651a16aa724a92e4596ed6", "Eric Mooney", "", "Invaders by Erik Mooney (Beta) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "62d1f50219edf9a429a9f004c19f31b3", "JWDA, Todd Marshall", "", "Euro Gen (02-01-83) (JWDA) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "62f74a2736841191135514422b20382d", "", "", "Pharaoh's Curse (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "20", "225", "YES", "" }, + { "62ffd175cac3f781ef6e4870136a2520", "", "", "2600 Digital Clock (V x.xx) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "63166867f75869a3592b7a94ea62d147", "", "", "Indy 500 (Hack) [a1]", "Hack of Indy 500", "Hack", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "", "", "", "", "", "" }, + { "6333ef5b5cbb77acd47f558c8b7a95d3", "Greg Troutman", "", "Dark Mage (Greg Troutman) (PD) (8K)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6337927ad909aa739d6d0044699a916d", "Jeffry Johnston", "", "Radial Pong - Version 2 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6339d28c9a7f92054e70029eb0375837", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6342afe9c9ad1b6120b8f6fb040d0926", "", "", "Move a Blue Blob Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6354f9c7588a27109c66905b0405825b", "Thomas Jentzsch", "", "Amidar DS (2003) (TJ) (Hack)", "Hack of Amidar", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "635cc7a0db33773959d739d04eff96c2", "", "", "Minesweeper (V.90) (Soren Gust) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6362396c8344eec3e86731a700b13abf", "Panda", "109", "Exocet (1983) (Panda)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "637efac676ff063f2fbb0abff77c4fa5", "", "", "Noize Maker Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "63811ed69bdbc35c69d8aa7806c3d6e9", "Atari", "CX26163P", "Homerun (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "638cc82ea96f67674595ba9ae05da6c6", "Rainbow Vision - Suntek", "SS-011", "Super Ferrari (Rainbow Vision) (PAL)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "63a6eda1da30446569ac76211d0f861c", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, + { "63a7445b1d3046d3cdcdbd488dca38d9", "Rob Kudla", "", "Better Space Invaders (1999) (Rob Kudla) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "63c5fef3208bb1424d26cf1ab984b40c", "", "", "Analog Clock (V0.1) (20-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "63c7395d412a3cd095ccdd9b5711f387", "Eric Ball", "ELB005", "Skeleton+ (PAL)", "Stereo sound", "Homebrew", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "63d6247f35902ba32aa49e7660b0ecaa", "", "", "Space War (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "63e42d576800086488679490a833e097", "Telesys, Jim Rupp", "1004", "Ram It (1983) (Telesys) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "63e783994df824caf289b69a084cbf3e", "David Marli", "", "Fat Albert (David Marli) (Hack)", "Hack of Fast Food", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "63e9e612bbee31045f8d184a4e53f8ec", "ATARITALIA", "", "Moby Blues (2002) (ATARITALIA) (Hack)", "Hack of Mario Bros", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "640a08e9ca019172d612df22a9190afb", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691, CX2691P", "Joust (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "64198bb6470c78ac24fcf13fe76ab28c", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "643e6451eb6b8ab793eb60ba9c02e000", "Salu - Avantgarde Software, Michael Buetepage", "460741", "Ghostbusters II (1992) (Salu) (PAL) [different tune]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "645bf7f9146f0e4811ff9c7898f5cd93", "Xonox - K-Tel Software - VSS, Robert Weatherby", "6230, 6250", "Super Kung-Fu (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6468d744be9984f2a39ca9285443a2b2", "Atari, Ed Logg, Carol Shaw", "CX26163P", "Reversi (32 in 1) (1988) (Atari) (PAL)", "AKA Othello", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "647162cceb550fd49820e2206d9ee7e8", "", "", "Skeleton (NTSC) (2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "64b8e19c767191ccdc97acc6904c397b", "Jeffry Johnston", "", "Radial Pong - Version 6 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "64ca518905311d2d9aeb56273f6caa04", "CCE", "", "Cubo Magico (CCE)", "AKA Cubicolor", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "64d43859258dc8ca54949e9ff4174202", "Thomas Jentzsch", "", "Lilly Adventure (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, + { "64fab9d15df937915b1c392fc119b83b", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (05-20-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "650df778c6ce22d3fd1a7c33c565bcc3", "Atari - GCC, Betty Ryan Tylko, Douglas B. Macrae", "CX2694", "Pole Position (1983) (Atari)", "Genesis controller (B is high gear, C is low gear, left difficulty switch swaps gear buttons)", "Hack of Pole Position", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "651d2b6743a3a18b426bce2c881af212", "CCE", "C-812", "Pac Man (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6522717cfd75d1dba252cbde76992090", "Home Vision - Gem International Corp. - VDI", "VCS83102", "War 2000 (1983) (Home Vision) (PAL)", "AKA Astrowar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6538e454b0498ad2befe1ef0f87815c0", "Joe Grand", "", "SCSIcide (v1.2) (2001) (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, + { "65490d61922f3e3883ee1d583ce10855", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692, CX2692P", "Moon Patrol (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "65562f686b267b21b81c4dddc129d724", "", "", "Euchre (28-07-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "655c84e5b951258c9d20f0bf2b9d496d", "", "", "2600_2003 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "656dc247db2871766dffd978c71da80c", "Sears Tele-Games, Jim Huether", "CX2614 - 49-75126", "Steeplechase (1980) (Sears)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "PADDLES", "", "AUTO 60", "", "", "", "", "" }, + { "65917ae29a8c9785bb1f2acb0d6aafd0", "", "", "Junkosoft One Year Demo (1999) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6596b3737ae4b976e4aadb68d836c5c7", "Digivision", "", "Defender (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "659a20019de4a23c748ec2292ea5f221", "Retroactive", "", "Qb (V2.05) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "65b106eba3e45f3dab72ea907f39f8b4", "Sparrow - HomeComputer Software, Dan Schafer, Glenn Stohel, Jon Tedesco", "GCG 1001T", "Music Machine, The (1983) (Sparrow)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, + { "65ba1a4c643d1ab44481bdddeb403827", "Quelle", "876.013 4", "Katastrophen-Einsatz (1983) (Quelle) (PAL)", "AKA M.A.S.H.", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "65bd29e8ab1b847309775b0de6b2e4fe", "Coleco, Ed English", "2667", "Roc 'n Rope (1984) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "65c6406f5af934590097c8c032ebb482", "", "", "Three Hugger (Pave Demo) (20-12-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6604f72a966ca6b2df6a94ee4a68eb82", "", "", "MegaMania (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "662eca7e3d89175ba0802e8e3425dedb", "", "", "Hangman Pac-Man Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "66362890eb78d6ea65301592cce65f5b", "", "", "Euchre (13-07-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "663ef22eb399504d5204c543b8a86bcd", "CBS Electronics - Roklan, Joe Hellesen, Joe Wagner", "4L1720, 4L1721, 4L1722, 4L2276", "Wizard of Wor (1982) (CBS Electronics) (PAL)", "Uses the Joystick Controllers (swapped)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "YES", "" }, + { "6651e2791d38edc02c5a5fd7b47a1627", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (04-05-1984) (Parker Bros) (Prototype) (8K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "665b8f8ead0eef220ed53886fbd61ec9", "Telesys, Don Ruffcorn, Jack Woodman", "1003", "Fast Food (1982) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "66706459e62514d0c39c3797cbf73ff1", "Video Gems", "VG-05", "Treasure Below (1983) (Video Gems) (PAL)", "", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "", "" }, + { "6672de8f82c4f7b8f7f1ef8b6b4f614d", "Videospielkassette - Ariola", "PGP237", "Angeln I (Ariola) (PAL)", "AKA Fishing Derby", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "668dc528b7ea9345140f4fcfbecf7066", "Gakken", "001", "Pooyan (1983) (Gakken) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6697f177847c70505824422e76aad586", "", "", "Tennis (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "669840b0411bfbab5c05b786947d55d4", "Atari, Andrew Fuchs, Jeffrey Gusman, Dave Jolly, Suki Lee", "CX26117", "Obelix (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "66b89ba44e7ae0b51f9ef000ebba1eb7", "Atari - CCW, Stephan R. Keith, Laura Scholl, Preston Stuart", "CX26106", "Grover's Music Maker (01-18-1983) (Atari) (Prototype)", "Uses Keypad Controller", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, + { "66b92ede655b73b402ecd1f4d8cd9c50", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "66bc1bef269ea59033928bac2d1d81e6", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (Preview) (1982) (Arcadia)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, + { "66c2380c71709efa7b166621e5bb4558", "Parker Brothers, Dave Engman, Dawn Stockbridge", "931509", "Tutankham (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "66c4e0298d4120df333bc2f3e163657e", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (2 of 3) (1982) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "66fcf7643d554f5e15d4d06bab59fe70", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (09-13-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6706a00f9635508cfeda20639156e66e", "Atari, Jerome Domurat, Michael Sierchio", "CX2667", "RealSports Soccer (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "672012d40336b403edea4a98ce70c76d", "", "", "Spider Kong (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "675ae9c23fa1aae376cea86cad96f9a5", "", "", "Poker Squares (V0.25) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "67631ea5cfe44066a1e76ddcb6bcb512", "", "", "Termool (Unknown) (PAL)", "AKA Turmoil", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "67684a1d18c85ffa5d82dab48fd1cb51", "Tigervision, Warren Schwader - Teldec", "7-003", "Threshold (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "678c1d71a1616d9d022f03d8545b64bb", "", "", "Demo Image Series #11 - Donald And Mario (28-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "67931b0d37dc99af250dd06f1c095e8d", "CommaVid, Irwin Gaines", "CM-004", "Room of Doom (1982) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "679d30c7886b283cbe1db4e7dbe5f2a6", "Colin Hughes", "", "Puzzle (Colin Hughes) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "679e910b27406c6a2072f9569ae35fc8", "Data Age", "DA1002", "Warplock (1982) (Data Age)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 40", "", "", "", "YES", "" }, + { "67bd3d4dc5ac6a42a99950b4245bdc81", "Retroactive", "", "Qb (2.11) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "67c05ae94bf8b83a666c3ae2c4bc14de", "Atari", "CX26163P", "NFL Football (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "67cdde4176e0447fc45a71e0a1cdd288", "Telegames - VSS, Ed Salvo", "5665 A016", "Glacier Patrol (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "67ce6cdf788d324935fd317d064ed842", "Retroactive", "", "Qb (V2.09) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "67cf913d1df0bf2d7ae668060d0b6694", "", "", "Hangman Monkey 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6803fa7c2c094b428b859a58dc1dd06a", "Retroactive", "", "Qb (0.11) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6805734a0b7bcc8925d9305b071bf147", "Bit Corporation", "PGP229", "Kung Fu (4 Game in One Dark Green) (1983) (BitCorp) (PAL)", "AKA Karate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "681206a6bde73e71c19743607e96c4bb", "", "", "Casino (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "49", "", "", "" }, + { "683bb0d0f0c5df58557fba9dffc32c40", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (1982) (Arcadia) [a]", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, + { "683dc64ef7316c13ba04ee4398e2b93a", "Ed Federmeyer", "", "Edtris (1995) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "68449e4aaba677abcd7cde4264e02168", "", "", "Horizonal Color Bars Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6847ce70819b74febcfd03e99610243b", "", "", "Ruby Runner 4A50", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "27", "", "YES", "" }, + { "68489e60268a5e6e052bad9c62681635", "Bit Corporation", "PG201", "Sea Monster (1982) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "68597264c8e57ada93be3a5be4565096", "Data Age", "DA1005", "Bugs (1982) (Data Age)", "Uses the Paddle Controllers", "Uncommon", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 50", "", "", "", "", "" }, + { "685e9668dc270b6deeb9cfbfd4d633c3", "CommaVid, Irwin Gaines - Ariola", "CM-004 - 712 004-720", "Room of Doom (1982) (CommaVid) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "68760b82fc5dcf3fedf84376a4944bf9", "CCE", "C-860", "Laser Gate (1983) (CCE)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "687c23224e26f81c56e431c24faea36d", "", "", "Qb (Simple Background Animation) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "68878250e106eb6c7754bc2519d780a0", "CCE", "C-809", "Squirrel (1983) (CCE)", "AKA Snail Against Squirrel", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, + { "68c80e7e1d30df98a0cf67ecbf39cc67", "Hozer Video Games", "", "Gunfight 2600 - One Step Forward & Two Steps Back (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "68cd2adc6b1fc9a1f263ab4561112f30", "Thomas Jentzsch", "", "Boulderdash Demo (09-12-2002) (TJ)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "68feb6d6ff63e80df1302d8547979aec", "", "", "Starfield Demo 2 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "690a6049db78b9400c13521646708e9c", "King Tripod Enterprise Co.", "SS - 007", "Space Raid (King Tripod) (PAL)", "AKA Challenge of.... Nexar, The", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6913c90002636c1487538d4004f7cac2", "Atari - CCW", "CX26131", "Monster Cise (1984) (Atari) (Prototype)", "Uses the Keypad Controllers (left only)", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, + { "691d67910b08b63de8631901d1887c1f", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "692202772d8b38ccf85a90c8003a1324", "", "", "Zi - The Flie Buster (2002) (Fernando Mora) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "693137592a7f5ccc9baae2d1041b7a85", "", "", "Qb (V2.02) (Stella) (2001) (Retroactive) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6979f30204149be3e227558cffe21c1d", "Atari", "CX26163P", "Miniaturer Golf (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Miniature Golf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6982854657a2cc87d712f718e402bf85", "Zellers", "", "Earth Attack (Zellers)", "AKA Defender", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "698f569eab5a9906eec3bc7c6b3e0980", "SpkLeader", "", "Demons! (2003) (SpkLeader) (Hack)", "Hack of Phoenix", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "69974dd5d6420b90898cde50aec5ef39", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "69df0411d4d176e558017f961f5c5849", "CCE", "C-831", "Cosmic Ark (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "69e79b1352b9ee1754bbe63b4a7062c3", "Barry Laws Jr.", "", "Pink Floyd - The Wall (2003) (Barry Laws Jr.) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "69ebf910ab9b63e5b8345f016095003b", "", "", "Maze Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "69fac82cd2312dd9ce5d90e22e2f070a", "Spectravision - Spectravideo - Quelle", "SA-202 - 412.851 8", "Planet Patrol (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6a03c28d505bab710bf20b954e14d521", "", "", "Pressure Gauge 2 Beta (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6a07836c382195dd5305ce61d992aaa6", "Apollo, Larry Martin", "AP-2008", "Guardian (1982) (Apollo) (Prototype)", "Uses the Paddle Controller (left only)", "Prototype", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, + { "6a091b8ffeacd0939850da2094b51564", "", "", "Vertically Scrolling Playfield (02-02-2003) (Aaron Bergstrom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6a2c68f7a77736ba02c0f21a6ba0985b", "Atari, Larry Wagner, Bob Whitehead", "", "Computer Chess (07-07-1978) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6a3b0c33cf74b1e213a629e3c142b73c", "Cody Pittman", "", "Cory The Interviewer (Cody Pittman) (Hack)", "Hack of Ghostbusters", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6a76d5f0ed721639474aa9bbde69ebf0", "", "", "Play Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6a82b8ecc663f371b19076d99f46c598", "Activision, Larry Miller - Ariola", "EAX-026, EAX-026-04B, EAX-026-04I - 711 026-725", "Enduro (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6a882fb1413912d2ce5cf5fa62cf3875", "Video Game Cartridge - Ariola", "TP-605", "Dragon Defender (Ariola) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6a8c6940d3be6fd01274363c4d4b298e", "", "", "Spy Hunter (Genesis)", "Genesis controller (C is oil/smoke)", "Hack of Spy Hunter", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "6a9b30ca46b0dba9e719f4cbd340e01c", "", "", "Frostbite (Unknown) (PAL) (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, + { "6a9e0c72fab92df70084eccd9061fdbd", "CCE", "C-835", "Beany Bopper (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6aa66e9c3eea76a0c40ef05513497c40", "", "", "Hangman Ghost Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6ac3fd31a51730358708c7fdc62487f8", "Matthias Jaap", "", "PC Invaders (Matthias Jaap) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6ae4dc6d7351dacd1012749ca82f9a56", "Atari - GCC, Jaques Hugon, Seth Lipkin", "CX26125, CX26127", "Track and Field (1984) (Atari)", "Uses the Track & Field Controller", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6b01a519b413f8cfa2f399f4d2841b42", "", "", "Aphex Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6b1fc959e28bd71aed7b89014574bdc2", "Bit Corporation", "PG203", "Phantom Tank (1982) (BitCorp) (PAL)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, + { "6b4eb5b3df80995b8d9117cb7e9aeb3c", "Gameworld, J. Ray Dettling", "133-006", "Journey Escape (1983) (Gameworld) (PAL)", "AKA Rock 'n' Roll Escape", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6b683be69f92958abe0e2a9945157ad5", "U.S. Games Corporation - Western Technologies, Jeff Corsiglia, Paul Allen Newell, Steven B. Sidley, Tom Sloper", "VC2007", "Entombed (1983) (U.S. Games)", "Released as Name That Game for a contest (winning name was Entombed)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6b6ca32228ae352b4267e4bd2cddf10c", "", "", "Pac-Man 4 (Pac-Man Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, + { "6b71f20c857574b732e7a8e840bd3cb2", "", "", "Frostbite (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6b72b691ea86f61438ed0d84c4d711de", "", "", "Fishing Derby (Unknown) (PAL) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6b75f8fa4fd011a6698c58315f83d2ac", "Thomas Jentzsch", "", "Sprintmaster DC (TJ)", "Uses the Driving Controllers, Hack of Sprintmaster (Atari)", "New Release (Hack)", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "", "", "", "" }, + { "6b7a56b6ac2ca4bf9254474bf6ed7d80", "", "", "Horizonal Color Bars Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6b7e1c11448c4d3f28160d2de884ebc8", "Zirok", "", "Fast Food (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6b8fb021bb2e1f1e9bd7ee57f2a8e709", "Paul Slocum", "", "3-D Corridor (29-03-2003) (Paul Slocum) (PD) [a]", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6bb09bc915a7411fe160d0b2e4d66047", "Atari", "CX26163P", "UFO (32 in 1) (1988) (Atari) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6bb22efa892b89b69b9bf5ea547e62b8", "Dynacom", "", "Megamania (1982) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6bde3f6ac31aceef447ce57d4d2c2ec0", "Piero Cavina", "", "Mondo Pong V1 (Piero Cavina) (PD)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "01", "", "", "", "", "" }, + { "6c128bc950fcbdbcaf0d99935da70156", "Digitel", "", "Volleyball (1983) (Digitel)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6c1553ca90b413bf762dfc65f2b881c7", "Quelle", "343.073 3", "Winterjagd (1983) (Quelle) (PAL)", "AKA Ski Hunt", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6c1f3f2e359dbf55df462ccbcdd2f6bf", "Activision, Garry Kitchen - Ariola", "EAX-025, EAX-025-04I - 711 025-725", "Keystone Kapers (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6c25f58fd184632ca76020f589bb3767", "Dynacom", "", "Beat 'Em & Eat 'Em (1983) (Dynacom)", "Uses the Paddle Controller (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, + { "6c449db9bbbd90972ad1932d6af87330", "", "", "20 Sprites at Once Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6c658b52d03e01828b9d2d4718a998ac", "", "", "Hangman Invader Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6c76fe09aa8b39ee52035e0da6d0808b", "Atari, Brad Stewart", "CX2622, CX2622P", "Breakout (1978) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 60", "", "", "", "", "" }, + { "6c85098518d3f94f7622c42fd1d819ac", "Suntek", "SS-028", "Firebug (Suntek) (PAL)", "AKA Spinning Fireball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6c91ac51421cb9fc72c9833c4f440d65", "ITT Family Games", "554-33 375", "Cosmic Town (1983) (ITT Family Games) (PAL)", "AKA Base Attack (Perry Rhodan-Serie)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6c9a32ad83bcfde3774536e52be1cce7", "", "", "Space Treat (NTSC) (13-08-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6cbe945e16d9f827d0d295546ac11b22", "", "", "Gunfight 2600 - AI (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6ccd8ca17a0e4429b446cdcb66327bf1", "", "", "RPG Engine (12-05-2003) (Paul Slocum) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6cd1dc960e3e8d5c5e0fbe67ab49087a", "", "", "Vertical Playfield Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6cd506509e8fd5627f55603780e862a8", "Greg Troutman", "", "Dark Mage (SuperCharger) (Greg Troutman) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6ce2110ac5dd89ab398d9452891752ab", "Funvision - Fund. International Co.", "", "Persian Gulf War (Funvision)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6cea35ded079863a846159c3a1101cc7", "", "", "Atlantis (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6ceb7d6a54e9a5e62d26874d1cc88dbc", "Video Soft", "", "Atom Smasher (1984) (Video Soft) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6cf054cd23a02e09298d2c6f787eb21d", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (1984) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6d218dafbf5a691045cdc1f67ceb6a8f", "Robin Harbron", "", "6 Digit Score Display (1998) (Robin Harbron) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6d475019ea30d0b29f695e9dcfd8f730", "Eric Mooney", "", "Invaders by Erik Mooney (Alpha 2) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6d74ebaba914a5cfc868de9dd1a5c434", "", "", "Fortress (Smooth Version) (20-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6d842c96d5a01967be9680080dd5be54", "Activision, David Crane", "AB-035-04", "Pitfall II (1984) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6d8a04ee15951480cb7c466e5951eee0", "Zirok", "", "Kanguru (1983) (Zirok)", "AKA Kangaroo", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6d9afd70e9369c2a6bff96c4964413b7", "", "", "Time Warp (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6dda84fb8e442ecf34241ac0d1d91d69", "Atari - GCC, Douglas B. Macrae", "CX2677", "Dig Dug (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6de924c2297c8733524952448d54a33c", "CCE", "C-1006", "Moon Patrol (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6dfad2dd2c7c16ac0fa257b6ce0be2f0", "Parker Brothers, Larry Gelberg", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6e179eee3d4631a7434d40cf7aeea6e8", "Wizard Video Games - MicroGraphic Image, Robert Barber, Tim Martin", "007", "Halloween (1983) (Wizard Video Games) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6e19428387686a77d8c8d2f731cb09e0", "", "", "Purple Cross Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6e372f076fb9586aff416144f5cfe1cb", "Atari, Tod Frye - Sears", "CX2646 - 49-75185", "Pac-Man (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6e4521989a60a0ddf4ff1fc6e6e5fc3d", "", "", "Star Fire (01-05-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6e59dd52f88c00d5060eac56c1a0b0d3", "Atari, Bob Smith", "CX2648", "Video Pinball (1981) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6e5d5ba193d2540aec2e847aafb2a5fb", "Retroactive", "", "Qb (2.14) (Retroactive) (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6e7ed74082f39ad4166c823765a59909", "", "", "Poker Squares (V0.14) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6ed5012793f5ddf4353a48c11ea9b8d3", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Down on the Line (3 of 3) (1983) (Arcadia)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "PADDLES", "", "01 70", "", "", "", "", "" }, + { "6ed6bda5c42b2eb7a21c54e5b3ace3e3", "Canal 3 - Intellivision", "", "Ice Hockey (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6efe876168e2d45d4719b6a61355e5fe", "Bit Corporation", "PG207", "Mission 3,000 A.D. (1983) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6f084daf265599f65422ef4173b69bc7", "", "", "Music Kit (V2.0) - Song Player (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "6f2aaffaaf53d23a28bf6677b86ac0e3", "U.S. Games Corporation - Vidtec - JWDA, Garry Kitchen", "VC1001", "Space Jockey (1982) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6f3e3306da2aa6e74a5e046ff43bf028", "", "", "Defender Arcade (Genesis)", "Genesis controller (C is smartbomb)", "Hack of Defender 2", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "6f74ed915ffe73b524ef0f63819e2a1d", "Eckhard Stolberg", "", "An Exercise In Minimalism (V2) (1999) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6f75d72e4cf996100ccdd163d57bdac2", "", "", "Star Fire (200203) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6fa0ac6943e33637d8e77df14962fbfc", "Imagic, Rob Fulop", "", "Cubicolor (1982) (Imagic) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6fac680fc9a72e0e54255567c72afe34", "", "", "Superman (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6fbd05b0ad65b2a261fa154b34328a7f", "", "", "Boardgame Demo (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6fc0176ccf53d7bce249aeb56d59d414", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (Rainbow Vision) (PAL)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6fc27a9233fc69d28d3f190b4ff80f03", "", "", "UFO #6 (Charles Morgan) (Hack)", "Hack of Pepsi Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6fc394dbf21cf541a60e3b3631b817f1", "Imagic, Bob Smith", "720020-2A, IA3611P", "Dragonfire (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6fd7c7057eeab273b29c7aafc7429a96", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6fe67f525c39200a798985e419431805", "Atari - GCC, Kevin Osborn", "CX2689, CX2689P", "Kangaroo (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6ff4156d10b357f61f09820d03c0f852", "Atari, Larry Kaplan - Sears", "CX2612 - 99804, 49-75103", "Street Racer (1977) (Atari) (4K)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 60", "", "", "", "", "" }, + { "6ffc95108e5add6f9b8abcaf330be835", "Charles Morgan", "", "TP Bug (Charles Morgan) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, + { "700a786471c8a91ec09e2f8e47f14a04", "Activision", "", "Hard-Head (1983) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "703d32062436e4c20c48313dff30e257", "", "", "Moving Maze Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "703f0f7af350b0fa29dfe5fbf45d0d75", "Bit Corporation", "P460", "4 Game in One Dark Green (1983) (BitCorp) (PAL)", "Rodeo Champ, Bobby is Going Home, Open Sesame, Festival", "", "", "", "4IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "705fe719179e65b0af328644f3a04900", "Atari, David Crane - Sears", "CX2653 - 6-99823, 49-75111", "Slot Machine (1979) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "706e3cc4931f984447213b92d1417aff", "", "", "Joustpong (06-07-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "707ecd80030e85751ef311ced66220bc", "", "", "Double-Height 6-Digit Score Display (Background Color Change) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7096a198531d3f16a99d518ac0d7519a", "Telesys, Jim Rupp", "1004", "Ram It (1983) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "709910c2e83361bc4bf8cd0c20c34fbf", "Rainbow Vision - Suntek", "SS-006", "Netmaker (Rainbow Vision) (PAL)", "AKA Amidar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "70a8480cfaf08776e5420365732159d2", "Rob Kudla", "", "Horizontally Scrolling Playfield Thing (Rob Kudla) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "70ce036e59be92821c4c7fd735ec6f68", "Activision, Steve Cartwright - Ariola", "EAX-031, EAX-031-04B - 711 031-717", "Frostbite (1983) (Activision) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "70d14c66c319683b4c19abbe0e3db57c", "", "", "Oystron (V2.82) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "710497df2caab69cdcc45e919c69e13f", "Arcadia Corporation, Dennis Caswell", "5 AR-4200", "Labyrinth (Escape from the Mindmaster Beta) (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "713fde2af865b6ec464dfd72e2ebb83e", "", "", "Challenge (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "71464c54da46adae9447926fdbfc1abe", "M Network - APh Technological Consulting, Bruce Pedersen - INTV", "MT5663", "Lock 'n' Chase (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "714e13c08508ee9a7785ceac908ae831", "Home Vision - Gem International Corp. - VDI", "VCS83123", "Parachute (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "715dbf2e39ba8a52c5fe5cdd927b37e0", "Amiga - Video Soft", "3135", "S.A.C. Alert (1983) (Amiga) (Prototype)", "Uses Joyboard", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "715dd9e0240638d441a3add49316c018", "Atari", "", "128-in-1 Junior Console (Chip 2 of 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7187118674ff3c0bb932e049d9dbb379", "Zirok", "", "Keystone Keypers (1983) (Zirok)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "718ae62c70af4e5fd8e932fee216948a", "Data Age, J. Ray Dettling", "112-006", "Journey Escape (1983) (Data Age)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "718ee85ea7ec27d5bea60d11f6d40030", "Thomas Jentzsch", "", "Ghostbusters II (1992) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "7197b6cbde6ecd10376155e6b848e80d", "Piero Cavina", "", "Multi-Sprite Game V2.1 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "71b193f46c88fb234329855452dfac5b", "Digitel", "", "Atlantis (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "71d005b60cf6e608d04efb99a37362c3", "Atari, Larry Kaplan", "CX2643", "Codebreaker (1978) (Atari) (PAL) (4K) [a]", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "57", "", "", "" }, + { "71f09f128e76eb14e244be8f44848759", "Funvision - Fund. International Co.", "", "Time Race (Funvision) (PAL)", "AKA Time Warp", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "71f8bacfbdca019113f3f0801849057e", "Atari, Dan Hitchens", "CX26126", "Elevator Action (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "72097e9dc366900ba2da73a47e3e80f5", "", "", "Euchre (15-06-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "721a5567f76856f6b50a6707aa8f8316", "Activision, David Crane, Dan Kitchen", "EAG-108-04, EAZ-108-04B", "Ghostbusters (1985) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "72305c997f2cec414fe6f8c946172f83", "Arcadia Corporation, Dennis Caswell", "AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "724613effaf7743cbcd695fab469c2a8", "", "", "Super-Ferrari (Unknown)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "728152f5ae6fdd0d3a9b88709bee6c7a", "Spectravideo, Mark Turmell", "SA-217", "Gas Hog (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "72876fd7c7435f41d571f1101fc456ea", "Quelle", "688.383 9", "Die Ente und der Wolf (1983) (Quelle) (PAL)", "AKA Pooyan", "", "", "", "", "", "", "", "", "", "", "", "", "", "26", "256", "", "" }, + { "72a46e0c21f825518b7261c267ab886e", "Xonox - K-Tel Software - Computer Magic", "99005, 6220, 6250", "Robin Hood (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "31", "220", "", "" }, + { "72a5b5052272ac785fa076709d16cef4", "", "", "KC Munckin (29-01-2003) (J. Parlee)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "72bda70c75dfa2365b3f8894bace9e6a", "Thomas Jentzsch", "", "Atlantis (TJ) (Hack)", "Hack of Atlantis", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "72d0acb5de0db662de0360a6fc59334d", "", "", "Cosmic Ark (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "72db1194b1cc7d45b242f25eb1c148d3", "", "", "Pac-Man (1981) (Atari) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, + { "72fd08deed1d6195942e0c6f392e9848", "HES", "0701-406", "2 Pak Special - Wall Defender, Planet Patrol (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "72ffbef6504b75e69ee1045af9075f66", "Atari, Richard Maurer - Sears", "CX2632 - 49-75153", "Space Invaders (1980) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "73158ea51d77bf521e1369311d26c27b", "Zellers", "", "Challenge (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "25", "", "", "" }, + { "73521c6b9fed6a243d9b7b161a0fb793", "Atari, Tom Reuterdahl", "CX26163P", "Miniaturer Golf (32 in 1) (1988) (Atari) (PAL)", "AKA Miniature Golf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "736388d73198552d77d423962000006f", "Dactari", "", "Tennis (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "73a710e621d44e97039d640071908aef", "", "", "Barber Pole Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "73aa02458b413091ac940c0489301710", "Quelle - Otto Versand", "463.574 4 - 781393, 986153", "Kampf dem Steinfresser (1983) (Quelle) (PAL)", "Boom Bang (AKA Crackpots)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "73b4e8f8b04515d91937510e680214bc", "", "", "Rubik's Cube Demo 3 (24-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "73c545db2afd5783d37c46004e4024c2", "CBS Electronics - JWDA, Todd Marshall, Robin McDaniel, Henry Will IV", "4L1767, 4L1768, 4L1769, 4L1770", "Smurf - Schtroumpfs (1983) (CBS Electronics) (PAL)", "Pitufo", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "73c839aff6a055643044d2ce16b3aaf7", "Activision, Alan Miller - Ariola", "EAX-016, PAX-016 - 711 016-725", "StarMaster (1982) (Activision) (PAL)", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "73cb1f1666f3fd30b52b4f3d760c928f", "", "", "Mines of Minos (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "225", "YES", "" }, + { "73e66e82ac22b305eb4d9578e866236e", "Jone Yuan Telephonic Enterprise Co", "", "Unknown Datatech Game (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "73efa9f3cbe197f26e0fb87132829232", "CCE", "C-858", "Tennis (1983) (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "74023e0f2e739fc5a9ba7caaeeee8b6b", "Jone Yuan Telephonic Enterprise Co", "", "Fishing Derby (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "740a7fa80f52cc7287ba37677afb6b21", "", "", "Double Dragon (PAL) (Genesis)", "Genesis controller (C is jumpkick)", "Hack of Double Dragon", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "740b47df422372fbef700b42cea4e0bf", "", "", "Dizzy Wiz (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "740f39e71104e90416c29a73560b9c6b", "Atari", "TE016643", "Diagnostic Test Cartridge 2.6P (1982) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "742de93b8d849220f266b627fbabba82", "", "", "SCSIcide (25-02-2001) (Chris Wilkson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7450ae4e10ba8380c55b259d7c2b13e8", "", "", "Register Twiddler Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7454786af7126ccc7a0c31fcf5af40f1", "", "", "Tanks But No Tanks (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7465b06b6e25a4a6c6d77d02242af6d6", "Atari", "CX26193", "8 in 1 (01-16-92) (Atari) (Prototype)", "Game 2 is Centipede, but doesn't work", "Prototype", "", "", "8IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7481f0771bff13885b2ff2570cf90d7b", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "749fec9918160921576f850b2375b516", "Spectravision - Spectravideo", "SA-205", "China Syndrome (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "74ca9bdc91ee387a5bd929b73aec5c2c", "", "", "Star Fire - New Shields (03-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "74d072e8a34560c36cacbc57b2462360", "Sancho - Tang's Electronic Co.", "TEC002", "Seahawk (1982) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "74ebaca101cc428cf219f15dda84b6f8", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "74f623833429d35341b7a84bc09793c0", "Zellers", "", "Radar (Zellers)", "AKA Exocet", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "75028162bfc4cc8e74b04e320f9e6a3f", "Atari, Greg Easter, Mimi Nyden", "CX26107", "Snow White (02-09-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7511c34518a9a124ea773f5b0b5c9a48", "", "", "Donkey Kong (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "75169c08b56e4e6c36681e599c4d8cc5", "M Network - APh Technological Consulting, Hal Finney - INTV", "MT5666", "Astroblast (1982) (M Network)", "Can also use left joystick", "Uncommon", "", "", "", "", "", "", "", "PADDLES", "", "YES", "AUTO 55", "", "", "", "", "" }, + { "753375d183c713cfa0aa7298d1f3067b", "Arcadia Corporation, Steve Hales, Stephen Harland Landrum", "AR-4102", "Suicide Mission (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "7550b821ee56fb5833dca2be88622d5a", "", "", "Multiple Moving Objects Demo (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "75511bb694662301c9e71df645f4b5a7", "Activision, Bob Whitehead - Ariola", "EAG-011, PAG-011 - 711 011-715", "Stampede (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "755fed16b48e81de05130708a905d00d", "SnailSoft", "", "Comitoid beta 3 (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "756ca07a65a4fbbedeb5f0ddfc04d0be", "Atari, Jim Huether", "CX2629, CX2629P", "Sky Diver (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7574480ae2ab0d282c887e9015fdb54c", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7576dd46c2f8d8ab159d97e3a3f2052f", "Goliath - Hot Shot", "83-112", "Time Machine (1983) (Goliath) (PAL)", "AKA Asteroid Fire", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "757f529026696e13838364dea382a4ed", "Activision, David Crane - Ariola", "EAX-014, PAX-014, EAX-014-04B, EAX-014-04I - 711 014-720", "Grand Prix (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "75a303fd46ad12457ed8e853016815a0", "ZiMAG - Emag - Vidco", "715-111 - GN-060", "Immies & Aggies (1983) (ZiMAG) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "75b22fdf632d76e246433db1ebccd3c4", "", "", "Skeleton+ (05-05-2003) (Eric Ball) (PAL)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "75b557be7f08db84ec5b242207b9f241", "", "", "Space Treat (30-12-2002) (Fabrizio Zavagli) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "75e276ba12dc4504659481c31345703a", "Arcadia Corporation, Kevin Norman", "AR-4103", "Killer Satellites (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "75e8d8b9e9c5c67c2226dbfd77dcfa7d", "", "", "2600 Digital Clock (V b1) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "75ea128ba96ac6db8edf54b071027c4e", "Atari, David Crane", "CX26163P", "Slot Machine (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "75ea60884c05ba496473c23a58edf12f", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (1982) (Atari) (PAL) [a]", "ROM must be started in bank 0", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "75ee371ccfc4f43e7d9b8f24e1266b55", "Atari, Greg Easter, Mimi Nyden", "CX26107", "Snow White (11-09-1982) (Atari) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7608abdfd9b26f4a0ecec18b232bea54", "Atari, Bob Whitehead", "CX26163P", "NFL Football (32 in 1) (1988) (Atari) (PAL)", "AKA Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7623a639a6fffdb246775fe2eabc8d01", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7628d3cadeee0fd2e41e68b3b8fbe229", "Atari", "CX26163P", "Fishing Derby (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7648e72a5b5899076688df18a1ddcf72", "CBS Electronics, Richard K. Balaska Jr., Andy Frank, Stuart Ross", "4L 2520 5000", "Tunnel Runner (1983) (CBS Electronics) (Prototype)", "Black Box", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "76809eb1ee0db8a318308a5cdda0f4e2", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (1983) (Atari) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "769ddc995dbb9edb8167efcea9f34a7c", "", "", "H.E.R.O. (Genesis)", "Genesis controller (B is laser, C is dynamite)", "Hack of H.E.R.0.", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "76a9bf05a6de8418a3ebc7fc254b71b4", "VideoSoft, Jerry Lawson, Dan McElroy", "VS1008", "Color Bar Generator (1984) (VideoSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "76c685d1a60c0107aa54a772113a2972", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (3 of 3) (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "76c88341017eae660efc6e49c4b6ab40", "", "", "Indiana Pitfall (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "76ee917d817ef9a654bc4783e0273ac4", "Otto Versand", "311377", "Fox & Goat (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Nuts", "", "", "", "", "", "", "", "", "", "", "", "", "", "45", "256", "", "" }, + { "76f53abbbf39a0063f24036d6ee0968a", "M Network, David Akers, Joe 'Ferreira' King, Patricia Lewis Du Long, Jeff Ratcliff - INTV", "MT7045", "Bump 'n' Jump (1983) (M Network)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "76f66ce3b83d7a104a899b4b3354a2f2", "UA Limited", "", "Cat Trax (1983) (UA Limited) (1)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "77057d9d14b99e465ea9e29783af0ae3", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision)", "AKA Drag Strip", "", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, + { "7732e4e4cc2644f163d6650ddcc9d9df", "HES", "771-333", "2 Pak Special - Challenge, Surfing (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7778ac65d775a079f537e97cbdad541c", "", "", "Spider Fighter (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "777aece98d7373998ffb8bc0b5eff1a2", "", "", "2600 Collison Demo 2 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "77887e4192a6b0a781530e6cf9be7199", "Atari", "CX2604", "Space War (1978) (Atari) [b1]", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "77be57d872e3f5b7ecf8d19d97f73281", "", "", "Basketball (208 in 1) (Unknown) (PAL)", "Console ports are swapped", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "77cd9a9dd810ce8042bdb9d40e256dfe", "Kyle Pittman", "", "Evil Dead (2003) (Kyle Pittman) (Hack)", "Hack of Haunted House", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "77d0a577636e1c9212aeccde9d0baa4b", "Atari, Joe Decuir", "CX2621, CX2621P", "Video Olympics (1977) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "AUTO 60", "", "", "", "", "" }, + { "78297db7f416af3052dd793b53ff014e", "", "", "Poker Squares (V0.17) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7836794b79e8060c2b8326a2db74eef0", "", "", "RIOT RAM Test (26-11-2002) (Dennis Debro)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "784176346e9422733d55c427230e5bad", "Activision, Alex DeMeo", "", "Title Match Pro Wrestling (1989) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7860716fa5dbc0fffab93fb9a4cb4132", "", "", "Hangman Monkey Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7867ee819b53d69cfcfe740f7ddca574", "Arcadia Corporation, Dennis Caswell", "1 AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "787ebc2609a31eb5c57c4a18837d1aee", "Prescott", "", "Vault Assault (19xx) (Prescott)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "78821ef76ebc3934850d1bc1b9e4f4b0", "HES - Activision", "542", "Hot Action Pak - Ghostbusters, Tennis, Plaque Attack (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "78963290052fd17c6c7998305ab3a6a0", "", "", "Push (V0.08) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "78b84cfb1c57b0488d674d2374e656e6", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (1 of 3) (1982) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "78c2de58e42cd1faac2ea7df783eaeb3", "", "", "Fu Kung! (V0.07) (25-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "79004f84bdeee78d142e445057883169", "CCE", "C-830", "Planet Patrol (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "791bc8aceb6b0f4d9990d6062b30adfa", "Activision, David Crane - Ariola", "EAX-018, EAX-018-04B, EAX-018-04I - 711 018-725", "Pitfall! (1982) (Activision) (PAL)", "Abenteuer im Urwald (Jungle Runner)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7926083ad423ed685de3b3a04a914315", "Barry Laws Jr.", "", "Face Invaders 2 (Barry Laws Jr.) (Hack)", "Hack of Astroblast", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "792b1d93eb1d8045260c840b0688ec8f", "Kroko", "", "3E Bankswitch Test (TIA @ $00)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7972e5101fa548b952d852db24ad6060", "Atari - Sears", "CX2627 - 6-99841", "Human Cannonball (1979) (Atari)", "AKA Cannon Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "798b8921276eec9e332dfcb47a2dbb17", "Atari - CCW, Gary Stark", "CX26102", "Cookie Monster Munch (1983) (Atari) (PAL) [a]", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "798cc114f1623c14085868cd3494fe8e", "", "", "Pins Revenge (Atari Freak 1)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7991e1797e5e9f311fd957e62d889dff", "Joe Grand", "", "SCSIcide (v1.1) (2001) (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, + { "7996b8d07462a19259baa4c811c2b4b4", "", "", "Math Gran Prix (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "79ab4123a83dc11d468fb2108ea09e2e", "Activision - Cheshire Engineering, David Rolfe, Larry Zwick", "AZ-037-04", "Beamrider (1984) (Activision)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "79b649fb812c50b4347d12e7ddbb8400", "", "", "Red Pong Number 2 Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "79c27f90591e3fdc7d2ed020ecbedeb3", "CCE", "C-815", "Seaquest (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "79d4af56036ec28f298cad964a2e2494", "", "", "Hangman Pac-Man Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "79d6f61da3c64688ac8e075667f8a39f", "", "", "Tie-Fighters (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "79e5338dbfa6b64008bb0d72a3179d3c", "M Network, David Akers, Patricia Lewis Du Long - INTV", "MT4313", "Star Strike (1983) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "79fcdee6d71f23f6cf3d01258236c3b9", "Atari - GCC, Mike Feinstein, John Mracek", "CX2673, CX2673P", "Phoenix (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7a09299f473105ae1ef3ad6f9f2cd807", "Atari, Steve Wright", "CX2616P", "Pele's Soccer (1981) (Atari) (PAL)", "AKA Pele's Championship Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7a2af383014f5d810ad26d322823549d", "", "", "FlickerSort Demo (20-04-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7a5463545dfb2dcfdafa6074b2f2c15e", "20th Century Fox Video Games - Sirius Software, Mark Turmell", "11007", "Turmoil (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7a63d7ea3f2851bcf04f0bb4ba1a3929", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (3 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7a64a8b727c8215d945e37d565ca95a5", "Atari, Warren Robinett", "CX2606", "Slot Racers (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7a64b5a6e90619c6aacf244cdd7502f8", "Baroque Gaming (Brian Eno)", "", "Warring Worms (Beta 1) (2002) (Baroque Gaming)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7a7f6ab9215a3a6b5940b8737f116359", "Arcadia Corporation, Kevin Norman", "AR-4103", "Killer Satellites (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7a93d0c029eaa72236523eedc3f19645", "", "", "20 Sprites at Once Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ab0917107b6ec768a5ebaadf28c497a", "", "", "Santa's Helper (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "7ab210f448de518fa61a5924120ba872", "", "", "Fortress (20-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ab2f190d4e59e8742e76a6e870b567e", "Apollo, Larry Martin", "AP-2008", "Guardian (1982) (Apollo)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 65", "", "", "", "", "" }, + { "7ac4f4fb425db38288fa07fb8ff4b21d", "Goliath", "83-213", "Space Eagle (1983) (Goliath) (PAL)", "AKA Exocet", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ad257833190bc60277c1ca475057051", "Atari, Alan J. Murphy, Robert Zdybel", "CX2668", "RealSports Football (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "7ad782952e5147b88b65a25cadcdf9e0", "Imagic, Dave Johnson", "720119-1A, 03211", "Kwibble (1983) (Imagic) (Prototype)", "AKA Quick Step! Beta", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7adbcf78399b19596671edbffc3d34aa", "Atari, Mimi Nyden, Joseph Tung", "CX26152", "Super Baseball (1988) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7af40c1485ce9f29b1a7b069a2eb04a7", "Amiga - Video Soft", "3120", "Mogul Maniac (1983) (Amiga)", "Uses the Amiga Joyboard", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7b24bfe1b61864e758ada1fe9adaa098", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7b33407b2b198af74906b936ce1eecbb", "King Atari", "", "Ghostbuster 2 (King Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "7b3cf0256e1fa0fdc538caf3d5d86337", "CommaVid, Joseph Biel", "CM-009", "Stronghold (1983) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7b43c32e3d4ff5932f39afcb4c551627", "Syncro, Daniel Wolf", "", "Kamikaze Saucers (1983) (Syncro) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "222", "", "" }, + { "7b5207e68ee85b16998bea861987c690", "Atari, Carol Shaw", "CX26163P", "3-D Tic-Tac-Toe (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7b6f3348dbf71ada88db0fdaf7feefe0", "", "", "3-D Corridor (Pink Spiral) (31-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7b79beb378d1b4471def90ceccf413de", "", "", "Pitfall Cupcake (Hack)", "Hack of Pitfall", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7b7b4ac05232490c28f9b680c72998f9", "Zellers", "", "Freeway (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7b8a481e0c5aa78150b5555dff01f64e", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (05-16-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7b938c7ddf18e8362949b62c7eaa660a", "Atari, Bob Whitehead - Sears", "CX2603 - 99803, 49-75601", "Star Ship (1977) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ba07d4ea18bf3b3245c374d8720ad30", "Starpath Corporation, Stephen H. Landrum", "AR-4101", "Communist Mutants from Space (Preview) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7bb286cb659d146af3966d699b51f509", "Atari - Axlon, Tod Frye", "CX26178", "Save Mary! (04-03-1989) (Atari) (Prototype)", "AKA Saving Mary", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7bc4fd254ec8c0a25a13f02fd3f762ff", "Retroactive", "", "Qb (V1.00) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "7c00e7a205d3fda98eb20da7c9c50a55", "Apollo - Games by Apollo, Larry Minor, Ernie Runyon, Ed Salvo", "AP-2004", "Lost Luggage (1982) (Apollo)", "AKA Airport Mayhem", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7c4a499d343fca0cef2d59dd16af621a", "", "", "Poker Card Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7c757bb151269b2a626c907a22f5dae7", "TNT Games - Sculptured Software, Adam Clayton", "26192", "BMX Air Master (1989) (TNT Games) (PAL)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7c7a4a2d505c2d0c75337c44711d8d54", "Atari, Warren Robinett", "", "Elf Adventure (04-22-83) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7c9b3b8b25acf2fe3b8da834f69629c6", "", "", "I Robot (1984) (Atari) (Prototype) [!]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ca7a471d70305c673fedd08174a81e8", "Tim Snider", "", "Venture II (2001) (Tim Snider)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "7cc77f6745e1f2b20df4a4327d350545", "Atari, Richard Maurer", "CX2632, CX2632P", "Space Invaders (1980) (Atari) (PAL) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ccf350354ee15cd9b85564a2014b08c", "", "", "Big Dig (13-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, + { "7cd379da92c93679f3b6d2548617746a", "", "", "Demo Image Series #5 - Clown (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7cd900e9eccbb240fe9c37fa28f917b5", "Jone Yuan Telephonic Enterprise Co", "", "Bi! Bi! (Jone Yuan) (PAL)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ced6709f091e79a2ab9575d3516a4ac", "Activision, Steve Cartwright - Ariola", "EAX-027 - 711 027-722", "Plaque Attack (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7cedffa0db65d610568b90aeca705ac6", "Atari, Rob Fulop - Sears", "CX2638 - 49-75166", "Missile Command (1981) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7d0b49ea4fe3a5f1e119a6d14843db17", "Gameworld, J. Ray Dettling", "133-008", "Frankenstein's Monster (1983) (Gameworld) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7d1034bcb38c9b746ea2c0ae37d9dff2", "Atari, Brad Stewart", "", "Morse Code Tutor (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7d3cdde63b16fa637c4484e716839c94", "CCE", "", "Road Runner (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7d483b702c44ee65cd2df22cbcc8b7ed", "Atari, Warren Robinett", "", "Elf Adventure (05-25-83) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7d5c3b7b908752b98e30690e2a3322c2", "Dactari - Milmar", "", "Freeway (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7d726fa494f706784bafeb1b50d87f23", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (07-27-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7d903411807704e725cf3fafbeb97255", "Imagic, Rob Fulop", "720104-1A, 720104-1B, IA3204", "Cosmic Ark (Reaction) (1982) (Imagic) [selectable starfield]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7d93071b3e3616093a6b5a98b0315751", "", "", "Gunfight 2600 - Music & Bugfixes 2 (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7d940d749e55b96b7b746519fa06f2de", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (Preview) (1983) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "", "" }, + { "7d9c96b215d1941e87b6fb412eb9204f", "", "", "Othello (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7da9de8d62fcdd3a2c545b2e720c2a61", "CommaVid, John Bronstein", "CM-001", "MagiCard (1981) (CommaVid) (4K)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "24", "", "", "" }, + { "7dbc8fa2e488e3f6b87fbe0f76c5b89f", "Ed Federmeyer", "", "Sound X (1996) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7dc03a1f56d0e6a8aae3e3e50d654a08", "", "", "Hozer Video Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7dcbfd2acc013e817f011309c7504daa", "Arcadia Corporation, Dennis Caswell", "AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "7dd9c5284422f729066ab22a284c8283", "CCE", "C-833", "Target Practice (1983) (CCE) [a]", "AKA Carnival", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "214", "", "" }, + { "7dfd100bda9abb0f3744361bc7112681", "Telesys, Don Ruffcorn", "1006", "Demolition Herby (1983) (Telesys) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "7e2fe40a788e56765fe56a3576019968", "Activision - Imagineering, Dan Kitchen", "AK-050-04", "Double Dragon (1989) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7e464186ba384069582d9f0c141f7491", "PlayAround - J.H.M.", "206", "General Re-Treat (1982) (PlayAround) (PAL)", "AKA Custer's Revenge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7e4783a59972ae2cd8384f231757ea0b", "Atari - Imagineering, Dan Kichen", "CX26139P", "Crossbow (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7e51a58de2c0db7d33715f518893b0db", "CBS Electronics, E.F. Dreyer, Ed Salvo", "4L 2738 0000", "Mountain King (1983) (CBS Electronics) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "7e52a95074a66640fcfde124fffd491a", "Atari - GCC, Mike Feinstein, John Mracek", "CX2673", "Phoenix (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7e7c4c59d55494e66eef5e04ec1c6157", "Baroque Gaming (Brian Eno)", "", "Warring Worms (2002) (Baroque Gaming)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7e8aa18bc9502eb57daaf5e7c1e94da7", "CBS Electronics - Roklan, Joe Hellesen, Joe Wagner", "M8774, M8794", "Wizard of Wor (1982) (CBS Electronics)", "Uses the Joystick Controllers (swapped)", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "YES", "" }, + { "7e9da5cb84d5bc869854938fe3e85ffa", "Atari, Ian Shepard - Sears", "CX2604 - 6-99812, 49-75106", "Space War (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7eab0284a0cd1043461d446a08d08cec", "Jone Yuan Telephonic Enterprise Co", "", "Basic Math (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ead257e8b5a44cac538f5f54c7a0023", "Xonox, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7eaf009a892f03d90682dc1e67e85f07", "Fabrizio Zavagli", "", "Bounce! (18-03-2003) (Fabrizio Zavagli)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "7eafc9827e8d5b1336905939e097aae7", "Atari, Mark R. Hahn", "", "Elk Attack (1987) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7eba20c2291a982214cc7cbe8d0b47cd", "Imagic, Dave Johnson", "720119-1A, 03211", "Quick Step! (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ed61a18cebdeca0a93be1f5461731e5", "Dactari", "", "Skiing (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ed7130a6e4020161836414332b11983", "", "", "Fu Kung! (V0.05 Cuttle Card Compatible) (13-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7edc8fcb319b3fb61cac87614afd4ffa", "Activision, Alan Miller", "AG-003", "Checkers (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ef3ca08abde439c6ccca84693839c57", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix (1983) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01", "", "", "", "", "" }, + { "7ef74879d7cb9fa0ef161b91ad55b3bb", "CCE", "", "Vanguard (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7f0209cfcc3d181715463f4d6451cecf", "Atari - GCC, John Allred, Douglas B. Macrae, Betty Ryan Tylko", "CX2694", "Pole Position (05-15-1983) (Atari) (Prototype)", "AKA RealSports Driving", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7f07cd2e89dda5a3a90d3ab064bfd1f6", "Videospielkassette - Ariola", "PGP234", "Boxen (Ariola) (PAL)", "AKA Boxing", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7f430c33044e0354815392b53a9a772d", "HES", "773-891", "2 Pak Special - Cavern Blaster, City War (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7f525b07bc98080cc8950f7284e52ede", "Atari", "", "128-in-1 Junior Console (Chip 4 of 4) (1991) (Atari) (PAL)", "Actually contains only 16 games, not 32", "", "", "", "16IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7f54fa6aa824001af415503c313262f2", "HES", "", "Boom Bang (HES) (PAL)", "AKA Crackpots", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7f6533386644c7d6358f871666c86e79", "CommaVid, Irwin Gaines", "CM-008", "Cakewalk (1983) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7f73ac39e5e3e13e40fd8ad885561a0f", "", "", "Star Fire - Warping Star (13-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7f790939f7eaa8c47a246c4283981f84", "", "", "This Planet Sucks Demo 3 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "7f819454734ddf93f83fefcffcd3e212", "Jone Yuan Telephonic Enterprise Co", "", "Outlaw (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7f9fbe3e00a21ea06e6ae5e0e5db2143", "", "", "Skate Boardin' (2002) (Skyworks)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7fcd1766de75c614a3ccc31b25dd5b7a", "PlayAround - J.H.M.", "203", "Knight on the Town (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "216", "YES", "" }, + { "7fcd5fb59e88fc7b8473c641f44226c3", "CCE", "C-807", "Space Tunnel (1983) (CCE)", "AKA Cosmic Corridor, O Tunel Espacial", "", "", "", "", "", "", "", "", "", "", "", "", "", "32", "215", "", "" }, + { "7ff53f6922708119e7bf478d7d618c86", "Suntek", "SS-032", "Walker (Suntek) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7ffc2d80fd49a124808315306d19868e", "Ishido", "", "Domino (Ishido) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "801ba40f3290fc413e8c816c467c765c", "Hozer Video Games", "", "Gunfight 2600 - Westward Ho! (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "803393ed29a9e9346569dd1bf209907b", "Atari - GCC, Mark Ackerman, Tom Calderwood, Glenn Parker", "CX2684", "Galaxian (02-04-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "804ed85eadf1ce3e93721547cbea7592", "CCE", "", "Fishing Derby (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8055b9c2622136fd91edfea6df642daf", "Activision", "", "Unknown Activision Game #1 (1983) (Activision) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "805f9a32ef97ac25f999a25014dc5c23", "SnailSoft", "", "Balthazar (SnailSoft)", "AKA Babylon 5", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8068e07b484dfd661158b3771d6621ca", "Epyx, Steven A. Baker, Peter Engelbrite", "80561-00286", "California Games (1988) (Epyx) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "807841df228ee8aab0a06ee639ce5a8a", "Coleco - Project Guild - GMA, Michael Green, Anthony R. Henderson, Gary Littleton", "2455", "Turbo (1982) (Coleco) (Prototype)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "807a8ff6216b00d52aba2dfea5d8d860", "John Payson", "", "Strat-O-Gems Deluxe (2005) (J. Payson)", "Uses the AtariVox controller", "Homebrew", "", "", "", "", "", "", "", "", "ATARIVOX", "", "", "", "", "", "", "" }, + { "808c3b1e60ee0e7c65205fa4bd772221", "CCE", "", "Defender (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "80cd42881e670e4b74a9ccd10d0d7b2e", "20th Century Fox Video Games - Sirius, Ed Hodapp", "11004", "Deadly Duck (1982) (20th Century Fox) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "80cec82239913cb8c4016eb13749de44", "David Marli", "", "Invaders from Space by David Marli (Space Invaders Hack)", "Hack of Space Invaders (Atari)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "80e1410ec98089e0733cc09e584dba4b", "Dynamics", "DY-293005", "Jumping Jack (1983) (Dynamics) (PAL)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "80e52315919bd8a8b82a407ccd9bb13f", "", "", "Euchre (Jul 28) (2002) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "80e5400470ac788143e6db9bc8dd88cf", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (06-XX-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8101efafcf0af32fedda4579c941e6f4", "", "", "Okie Dokie (4K) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "81073d0377a2badef8d5e74fc44fc323", "Thomas Jentzsch", "", "Sadoom (TJ) (PAL60) (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "PAL60", "", "", "", "" }, + { "8108162bc88b5a14adc3e031cf4175ad", "Quelle", "719.941 7", "Vom Himmel durch die Hoelle (1983) (Quelle) (PAL)", "AKA Parachute", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8108ad2679bd055afec0a35a1dca46a4", "", "", "Maze Craze (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "NTSC", "", "", "", "" }, + { "810d8952af5a6036fca8d0c4e1b23db6", "Tiger Vision - Eram", "", "Keystone (Tiger Vision)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "81254ebce88fa46c4ff5a2f4d2bad538", "Atari, David Crane - Sears", "CX2653 - 6-99823, 49-75111", "Slot Machine (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "81341f00b61ab37d19d1529f483d496d", "", "", "Fu Kung! (V0.04) (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "813985a940aa739cc28df19e0edd4722", "Imagic, Bob Smith", "720000-201, 720102-1B, IA3201", "Star Voyager (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "81414174f1816d5c1e583af427ac89fc", "Thomas Jentzsch", "", "Treasure Below (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "A", "", "", "", "", "", "", "", "", "220", "", "" }, + { "814210c0e121f7dbc25661b93c06311c", "", "", "Joustpong (16-09-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "81591a221419024060b890665beb0fb8", "Atari, Carla Meninsky, Ed Riddle", "CX2611, CX2611P", "Indy 500 (1977) (Atari) (PAL)", "Uses the Driving Controllers", "", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "", "", "", "" }, + { "8190b403d67bf9792fe22fa5d22f3556", "", "", "Sky Diver (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "819aeeb9a2e11deb54e6de334f843894", "Atari, Gary Palmer", "CX2661", "Fun with Numbers (1980) (Atari)", "AKA Basic Math", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "81a010abdba1a640f7adf7f84e13d307", "Telegames - VSS", "7062 A305", "Universal Chaos (1988) (Telegames)", "AKA Targ", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "81b3bf17cf01039d311b4cd738ae608e", "CBS Electronics - Roklan, Joe Gaucher, Alex Leavens", "M8776, M8793", "Gorf (1982) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "81f4f0285f651399a12ff2e2f35bab77", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "822a950f27ff0122870558a89a49cad3", "", "", "Space Jockey (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "82337e5fe0f418ca9484ca851dfc226a", "", "", "Robot City (V1.0) (Alpha) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "826481f6fc53ea47c9f272f7050eedf7", "Imagic, Dennis Koble", "720103-1A, IA3203", "Atlantis II (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "827a22b9dffee24e93ed0df09ff8414a", "CBS Electronics, Stuart Ross", "", "Wings (10-10-1983) (CBS Electronics) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8290daea8391f96d7c8e1482e184d19c", "Eckhard Stolberg", "", "Frame Timed Sound Effects (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "82bf0dff20cee6a1ed4bb834b00074e6", "Suntek", "SS-035", "Panda (Quest) (Suntek) (PAL)", "AKA Panda Chase", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "82c25d1c35e6ac6f893d1d7c2fc2f9c8", "Atari, Larry Kaplan", "CX2628, CX2628P", "Bowling (1979) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "82de957d155fc041fc6afb8315a28550", "Coleco, Joseph Biel", "2457", "Venture (1982) (Coleco) (Prototype)", "2K", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "82e7aab602c378cffdd8186a099e807e", "", "", "Space Robot (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "82efe7984783e23a7c55266a5125c68e", "CCE", "C-837", "Pizza Chef (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "834a2273e97aec3181ee127917b4b269", "Quelle", "043.151 0, 874.382 5", "Die hungrigen Froesche (1983) (Quelle) (PAL)", "AKA Frogs and Flies", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "835759ff95c2cdc2324d7c1e7c5fa237", "20th Century Fox Video Games, Frank Cohen, Douglas 'Dallas North' Neubauer", "11011", "M.A.S.H (1983) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8372eec01a08c60dbed063c5524cdfb1", "", "", "Cross Force (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8388d6fe59c38c0b3a6ab2c58420036a", "Atari, Frank Hausman, Mimi Nyden, Steve Woita", "CX2686", "Quadrun (12-06-1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "83b8c01c72306d60dd9b753332ebd276", "", "", "Bank Heist (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "83bdc819980db99bf89a7f2ed6a2de59", "Atari, Carla Meninsky - Sears", "CX2637 - 49-75158", "Dodge 'Em (1980) (Atari) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "83d15fb9843d9f84aa3710538403f434", "", "", "Gunfight 2600 - Release Candidate (2001) (MP) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "83f05ececae8be59ba1e51135f4bdcbf", "", "", "Demo Image Series #13 - Mario (4K Interleaved Chronocolour) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "83f50fa0fbae545e4b88bb53b788c341", "Atari, Larry Kaplan - Sears", "CX2643 - 6-99815", "Codebreaker (1978) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "83fafd7bd12e3335166c6314b3bde528", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00251", "Winter Games (1987) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "840a5a2eaea24d95d289f514fd12f9bb", "", "", "GBImprov (Hack)", "Hack of Ghostbusters", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "841057f83ce3731e6bbfda1707cbca58", "Champ Games", "CG-04-N", "Super Cobra Arcade (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "SAVEKEY", "", "", "", "", "", "YES", "" }, + { "841b7bc1cad05f5408302308777d49dc", "Activision", "", "Unknown Activision Game (10-22-1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "84290e333ff7567c2380f179430083b8", "Imagic, Dave Johnson", "13211, EIX-004-04I", "Quick Step! (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "843435eb360ed72085f7ab9374f9749a", "Joe Grand", "", "SCSIcide (1.31) (Joe Grand)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, + { "84535afb9a69712ec0af4947329e08b8", "CCE", "C-868", "Bingo (1983) (CCE) (PAL)", "AKA Dice Puzzle", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8454ed9787c9d8211748ccddb673e920", "Froggo", "FG1002", "Spiderdroid (1987) (Froggo)", "AKA Amidar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8490e1014c2baa0d3a3a08854e5d68b3", "Xonox, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "84db818cd4111542a15c2a795369a256", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "850ffd5849c911946b24544ea1e60496", "", "", "Invasion (07-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "851cc1f3c64eaedd10361ea26345acea", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "85227160f37aaa29f5e3a6c7a3219f54", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8530caaaf40acbdcd118c282b5f8a37a", "", "", "This Planet Sucks Demo 2 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, + { "8538c5e3ee83267774480649f83fa8d6", "", "", "Escape Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "853c11c4d07050c22ef3e0721533e0c5", "", "", "Oink! (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "85470dcb7989e5e856f36b962d815537", "Atari - Sculptured Software, Inc., Steve Aguirre", "CX26162", "Fatal Run (1989) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "85478bb289dfa5c63726b9153992a920", "", "", "Candi (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "854b68b93e7123a3be42b5a2a41f75d7", "Atari, Carol Shaw", "CX2618, CX2618P", "3-D Tic-Tac-Toe (1980) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "44", "", "", "" }, + { "85502d69fe46b7f54ef2598225678b47", "Jone Yuan Telephonic Enterprise Co", "", "Super-Ferrari (Jone Yuan)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "85564dd0665aa0a1359037aef1a48d58", "ITT Family Games", "554-33 367", "Laser Base (1983) (ITT Family Games) (PAL) [a]", "AKA The End of the World (Perry Rhodan-Serie)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8556b42aa05f94bc29ff39c39b11bff4", "Atari, Craig Nelson - Sears", "CX2617 - 49-75183", "Backgammon (1979) (Atari)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 80", "", "", "", "", "" }, + { "855a42078b14714bcfd490d2cf57e68d", "Atari, Suki Lee", "CX26113", "Miss Piggy's Wedding (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, + { "85a4133f6dcf4180e36e70ad0fca0921", "CCE", "C-827", "Chopper Command (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "85b1bca93e69f13905107cc802a02470", "Atari, Craig Nelson", "CX2617, CX2617P", "Backgammon (1979) (Atari) (PAL)", "Uses the Paddle Controllers", "Extremely Rare", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 80", "", "", "", "", "" }, + { "85bbefb90e16bf386b304c1e9a1f6084", "Champ Games", "CG-02-P", "Conquest Of Mars (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "85e48d68c8d802e3ba9d494a47d6e016", "", "", "Ship Demo (V 15) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "85e564dae5687e431955056fbda10978", "Milton Bradley Company - Renaissance Technology, Ty Roberts", "4362", "Survival Run (1983) (Milton Bradley)", "AKA Cosmic Commander", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "225", "YES", "" }, + { "86128001e69ab049937f265911ce7e8a", "Apollo - Games by Apollo, Steve Stringfellow", "AP-2005", "Lochjaw (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, + { "862cf669cbced78f9ed31a5d375b2ebe", "", "", "Gunfight 2600 - Flicker acceptance (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8644352b806985efde499ae6fc7b0fec", "CCE", "C-801", "Mr. Postman (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8654d7f0fb351960016e06646f639b02", "Home Vision, R.J.P.G. - Gem International Corp. - VDI", "VCS83106", "Ski Hunt (1983) (Home Vision) (PAL)", "AKA Skiiing Hunt", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "866e5150c995c4ae5172e5207ba948c7", "Canal 3 - Intellivision", "", "Stampede (Canal 3) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "869abe0426e6e9fcb6d75a3c2d6e05d1", "", "", "Stampede (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "86b4aa76bbeb70e1a4f9211a9880ba8e", "", "", "Incoming (1 Player Version) (05-11-2002) (Ben Larson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "86f5e55ca9a9bde7338a157570828e79", "", "", "Star Fire - Creating a Universe (09-09-2002) (MP) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8712cceec5644aacc2c21203d9ebe2ec", "Retroactive", "", "Qb (V0.10) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8726c17ee7b559cb7bf2330d20972ad0", "", "", "Cave Demo (21-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "873fb75a7788ba0f4ae715229a05545e", "", "", "Euchre (Improved Colors) (PAL) (26-09-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8747ba79cd39fa83a529bb26010db21b", "Atari, Richard Maurer", "CX2632, CX2632P", "Space Invaders (1980) (Atari) (PAL) [different speed and colors]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8749a0d088df25218c149dc325abc7ca", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a5]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "874c76726f68c166fcfac48ce78eef95", "", "", "Red Pong Number 2 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8764462d7d19a33b0717af22b99fc88f", "CCE", "", "Sky Jinks (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "87662815bc4f3c3c86071dc994e3f30e", "Intellivision Productions - M Network, Patricia Lewis Du Long, Stephen Tatsumi", "", "Swordfight (1983) (Intellivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "876a953daae0e946620cf05ed41989f4", "Retroactive", "", "Qb (V2.08) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "877a5397f3f205bf6750398c98f33de1", "Erik Eid", "", "Euchre (Beta) (PAL) (12-09-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8786c1e56ef221d946c64f6b65b697e9", "20th Century Fox Video Games, David Lubar", "11015", "AKA Space Adventure", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8786f229b974c393222874f73a9f3206", "Activision, Larry Miller - Ariola", "EAX-021, EAX-021-04I - 711 021-720", "Spider Fighter (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8786f4609a66fbea2cd9aa48ca7aa11c", "Goliath", "5", "Open Sesame (1983) (Goliath) (PAL)", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "", "34", "", "YES", "" }, + { "87b460df21b7bbcfc57b1c082c6794b0", "Dennis Debro", "", "Climber 5 (20-03-2003) (Dennis Debro)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "87b6a17132fc32f576bc49ea18729506", "Atari, Andrew Fuchs, Courtney Granner, Jeffrey Gusman, Mark R. Hahn", "CX2690", "Pengo (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "87bea777a34278d29b3b6029833c5422", "Thomas Jentzsch", "", "Polaris (1983) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "87e79cd41ce136fd4f72cc6e2c161bee", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675", "Ms. Pac-Man (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "87f020daa98d0132e98e43db7d8fea7e", "20th Century Fox Video Games - Sirius, David Lubar", "11001", "Worm War I (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "883258dcd68cefc6cd4d40b1185116dc", "Activision, David Crane - Ariola", "EAZ-030, EAZ-030-04B, EAZ-030-04I - 711 030-725", "Decathlon (1983) (Activision) (PAL)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8874b68751fd2ba6d3306a263ae57a7d", "Eric Mooney", "", "Invaders by Erik Mooney (Alpha 1) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8885d0ce11c5b40c3a8a8d9ed28cefef", "Atari, Carol Shaw, Nick 'Sandy Maiwald' Turner - Sears", "CX2608 - 49-75165", "Super Breakout (1982 - 1981) (Atari)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, + { "888debb162d7d1ae71025b4ab794257f", "", "", "Interleaved ChronoColour - Nude Art (17-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "88a6c9c88cb329ee5fa7d168bd6c7c63", "CCE", "C-1007", "Jungle Hunt (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "88d300a38bdd7cab9edad271c18cd02b", "Funvision - Fund. Int'l Co.", "", "Pac Kong (Funvision) (PAL)", "AKA Inca Gold", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "88d7b6b3967de0db24cdae1c7f7181bd", "Atari - GCC, Dave Payne", "CX2669", "Vanguard (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "88d8a1accab58cf1abb043613cf185e9", "Ultravison", "", "Sabotage (Ultravison)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "88dce4037471424bb38ab6841aaa8cab", "", "", "Double-Height 6-Digit Score Display (Two Background Color Change) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "88ed87c011f699dd27321dbe404db6c8", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "88f74ec75ef696e7294b7b6ac5ca465f", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision) (16K)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8905d54f48b8024fc718ed643e9033f7", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (05-24-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "890c13590e0d8d5d6149737d930e4d95", "Atari, David Crane - Sears", "CX2605 - 6-99822, 49-75109", "Outlaw (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8917f7c1ac5eb05b82331cf01c495af2", "Bit Corporation", "PG202", "Space Tunnel (1982) (BitCorp) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "8933976f2029c0d8492ebd8f4eb21492", "", "", "Synthcart Plus (09-02-2003) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "8953bc11352d794431d3303e31d3b892", "Tigervision, Robert H. O'Neil", "7-007", "Polaris (02-17-1983) (Tigervision) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "896ec58f26e930e02f5e4f046602c3a1", "", "", "Synthcart (Beta) (2002) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, + { "898143773824663efe88d0a3a0bb1ba4", "Activision - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen", "AZ-033, AZ-033-04", "Space Shuttle (1983) (Activision) [FE]", "A Journey Into Space", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "898748d5eaac3164b0391a64ae1e0e32", "", "", "Hangman Man 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "898b5467551d32af48a604802407b6e8", "Bit Corporation", "PG208", "Snail Against Squirrel (1983) (BitCorp) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "89a65b83203980d5d4d60f52a584a5b8", "", "", "Marble Craze (PAL) (02-02-2003) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "89a68746eff7f266bbf08de2483abe55", "Atari, Jerome Domurat, Steve Woita", "CX2696", "Asterix (1984) (Atari)", "AKA Taz", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "89afff4a10807093c105740c73e9b544", "", "", "Pooyan (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "89eaba47a59cbfd26e74aad32f553cd7", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2001", "Spacechase (1982) (Apollo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8a159ee58b2f0a54805162984b0f07e5", "Atari - Sculptured Software, Inc., Steve Aguirre", "CX26162", "Fatal Run (1989) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8a183b6357987db5170c5cf9f4a113e5", "Atari - Roklan, Joe Gaucher", "CX2679", "RealSports Basketball (1983) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8a42e2c7266439d8997a55d0124c912c", "", "", "Hangman Invader Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8a49cf1785e3dea2012d331a3ad476e1", "", "", "Boulderdash (10 Blocks Wide) (02-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8a6c84f481acf42abcb78ba5064ad755", "128-in-1 Junior Console", "", "Street Racer (128-in-1 Junior Console) (PAL) (4K)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 75", "", "", "", "", "" }, + { "8a8e401369e2b63a13e18a4d685387c6", "Activision, David Crane - Ariola", "EAG-008, PAG-008, EAG-008-04I - 711 008-720", "Laser Blast (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8a9d874a38608964f33ec0c35cab618d", "Chris Cracknell", "", "Rescue Bira Bira (Chris Cracknell)", "Hack of Jungle Fever", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8a9d953ac3db52a313a90d6a9b139c76", "", "", "Hangman Invader Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8aad33da907bed78b76b87fceaa838c1", "Atari, Larry Kaplan", "CX26163P", "Air-Sea Battle (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "8ac18076d01a6b63acf6e2cab4968940", "Atari, Dan Hitchens, Mimi Nyden", "CX2685", "Gravitar (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8af58a9b90b25907da0251ec0facf3b8", "Jone Yuan Telephonic Enterprise Co", "", "Cosmic Swarm (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8b04e9d132b8e30d447acaa6bd049c32", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (1982) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8b40a9ca1cfcd14822e2547eaa9df5c1", "Parker Brothers - Western Technologies, Dave Hampton, Tom Sloper", "931517", "Q-bert (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8b504b417c8626167a7e02f44229f0e7", "Retroactive", "", "Qb (V1.00) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8b556c3d9ca8e5e6e665bd759b93ffae", "", "", "Synthcart (2002) (Paul Slocum) (PAL) [!]", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, + { "8b5b1e3a434ebbdc2c2a49dc68f46360", "CBS Electronics - Woodside Design Associates - Imaginative Systems Software, Dan Kitchen, Garry Kitchen", "4L1700, 4L1701, 4L1702, 4L1802, 4L2274", "Donkey Kong (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8b7ca29a55432f886cee3d452fb00481", "Starpath Corporation, Stephen H. Landrum, Jon Leupp", "11 AR-4201", "Sword of Saros (1983) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8b8152d6081f31365406cb716bd95567", "Atari", "CX2626, CX2626P", "Miniature Golf (1979) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8b8789c6669a4cee86c579a65332f852", "Digivision", "", "Plaque Attack (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8bbfd951c89cc09c148bfabdefa08bec", "UA Limited", "", "Pleiades (1983) (UA Limited) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8bc0d2052b4f259e7a50a7c771b45241", "Xonox - K-Tel Software, Anthony R. Henderson", "99007, 6240", "Tomarc the Barbarian (1983) (Xonox) [a]", "AKA Thundarr the Barbarian", "", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "", "" }, + { "8bd8f65377023bdb7c5fcf46ddda5d31", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8bebac614571135933116045204f0f00", "Thomas Jentzsch", "", "Missile Command (Trakball) (2002) (TJ) (PAL)", "Uses the Trakball Controller", "Homebrew", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "YES", "" }, + { "8c103a79b007a2fd5af602334937b4e1", "Thomas Jentzsch", "", "Laser Base (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, + { "8c136e97c0a4af66da4a249561ed17db", "", "", "Poker Squares (V0.27) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8c2fa33048f055f38358d51eefe417db", "Home Vision - Gem International Corp. - VDI", "VCS83137", "Teddy Apple (1983) (Home Vision) (PAL)", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8c36ed2352801031516695d1eeefe617", "Epyx, Steven A. Baker, Tod Frye, Peter Engelbrite", "80561-00251", "Winter Games (1987) (Epyx) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8c7e5e2329f4f4e06cbcc994a30fd352", "Data Age", "DA1004", "Airlock (1982) (Data Age) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8c8a26ed57870daba8e13162d497bad1", "HES", "", "2 Pak Special - Dolphin, Oink (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8c8b15b3259e60757987ed13cdd74d41", "Supergame", "71", "River Raid (1984) (Supergame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8c941fa32c7718a10061d8c328909577", "Digivision", "", "River Raid (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8ccaa442d26b09139685f5b22bf189c4", "Retroactive", "", "Qb (V1.01) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8cd26dcf249456fe4aeb8db42d49df74", "Atari - Imagineering, Dan Kichen", "CX26139", "Crossbow (1988) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8ce9126066f2ddd5173e9f1f9ce1494e", "Thomas Jentzsch", "", "Missile Command (Trakball) (2002) (TJ)", "Uses the Trakball Controller", "Homebrew", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "YES", "" }, + { "8cf0d333bbe85b9549b1e6b1e2390b8d", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8d00a38f4c8f8800f1c237215ac243fc", "", "", "3-D Corridor (Green) (30-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8d1e2a6d2885966e6d86717180938f87", "Thomas Jentzsch", "", "Missile Command (Amiga Mouse) (2002) (TJ)", "Uses Amiga Mouse Controller", "Homebrew", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "YES", "" }, + { "8d8b7d7b983f75debbdaac651e814768", "", "", "Demo Image Series #15 - Three Marios (PAL) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8d9a06101ebb0f147936356e645309b8", "", "", "Grid Pattern Demo 2 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8da51e0c4b6b46f7619425119c7d018e", "Atari - Imagineering, David Lubar", "CX26183", "Sentinel (1991) (Atari)", "Uses the Light Gun Controller (left only)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8db152458abaef3cfa7a4e420ddbda59", "", "", "Keystone Kapers (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8df4be9ddc54ac363b13dc57ceaf161a", "Scott Stilphen", "", "Asteroids SS (Scott Stilphen) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8e0ab801b1705a740b476b7f588c6d16", "Activision, David Crane", "AG-009, AG-009-04", "Freeway (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8e42674972d6805068fc653e014370fd", "", "", "Skeleton (PAL) (15-10-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8e48ea6ea53709b98e6f4bd8aa018908", "CBS Electronics, Stuart Ross", "", "Wings (06-03-1983) (CBS Electronics) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8e4cd60d93fcde8065c1a2b972a26377", "Imagic, Dan Oliver", "720118-2A, 13208, EIX-007-04I", "Laser Gates (1983) (Imagic) (PAL)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8e4fa8c6ad8d8dce0db8c991c166cdaa", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8e512ad4506800458f99dec084fc2c64", "Bob Montgomery, Nathan Strum", "", "Reindeer Rescue (2005)", "2005 AtariAge Holiday Cart", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8e7241bfc8380aac3c0ef1b6881cdded", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (09-01-81) (Atari) (Prototype)", "Time Freeze", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8e737a88a566cc94bd50174c2d019593", "Quelle", "343.173 1", "Feuerwehr im Einsatz (1983) (Quelle) (PAL)", "AKA Fire Fighter", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8e822b39a71c84ac875f0107fb61d6f0", "", "", "Hangman Ghost Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8e879aa58db41edb67cbf318b77766c4", "Thomas Jentzsch", "", "Cosmic Commuter (Thomas Jentzsch) (PAL60)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "8e887d1ba5f3a71ae8a0ea16a4af9fc9", "", "", "Skeleton (V1.1) (PAL) (24-10-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8ed5a746c59571feb255eaa7d6d0cf98", "", "", "Carnival (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8ed73106e2f42f91447fb90b6f0ea4a4", "Spectravision - Spectravideo", "SA-204", "Tapeworm (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8ee3f64dc0f349adc893fe93df5245d8", "", "", "Euchre (20-07-2001) (Eric Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8f33bce5ba1053dcf4cea9c1c69981e4", "", "", "Jawbreaker (Unknown) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8f53a3b925f0fd961d9b8c4d46ee6755", "", "", "Astrowar (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8f5ac5139419c5d49bacc296e342a247", "Atari - CCW, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (12-22-1983) (Atari) (Prototype)", "Uses Keypad Controllers", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "8f60551db6d1535ef0030f155018c738", "", "", "Space War (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8f613ea7c32a587d6741790e32872ddd", "", "", "Troll Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8f88309afad108936ca70f8b2b084718", "Spectravision - Spectravideo - Quelle", "SA-203 - 413.223 9", "Cross Force (1982) (Spectravision) (PAL)", "AKA Kreuzfeuer (Cross Fire)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8f90590dba143d783df5a6cff2000e4d", "", "", "Gopher (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8f98519a91dbbf4864f135a10050d9ed", "Silvio Mogno", "", "Rainbow Invaders (non-playable demo) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8fa47e5242776e841df7e708b12eb998", "", "", "Sea Hawk (Genesis)", "Genesis controller (C drops bomb)", "Hack of Sea Hawk", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "8fbabaa87941cdf3a377c15e95bdb0f3", "", "", "Meteor Smasher (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8fe00172e7fff4c1878dabcf11bb8dce", "Quelle", "689.302 8", "Hili Ball (1983) (Quelle) (PAL)", "AKA Racquetball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8febdd9142960d084ab6eeb1d3e88969", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2674", "E.T. - The Extra-Terrestrial (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8fffc8f15bb2e6d24e211884a5479aa5", "Retroactive", "", "Qb (V1.00) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "9048ccb7e0802cd8fa5bfc2609f292d8", "Tigervision, Robert H. O'Neil", "7-007", "Polaris (1983) (Tigervision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9057694dce8449521e6164d263702185", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "90578a63441de4520be5324e8f015352", "Bit Corporation", "PGP204", "Open Sesame (4 Game in One) (1983) (BitCorp) (PAL)", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "", "34", "", "YES", "" }, + { "9072c142728a3a3d994956d03bfacba2", "Fabrizio Zavagli", "", "Crash Dive (Fabrizio Zavagli) (PAL60)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "30", "", "", "" }, + { "90b1799dddb8bf748ee286d22e609480", "", "", "Ship Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "90b647bfb6b18af35fcf613573ad2eec", "AtariAge (Chris Walton)", "", "Juno First (2009)", "AtariVox supported", "Homebrew", "", "", "", "", "", "", "", "", "ATARIVOX", "", "", "", "", "", "YES", "" }, + { "90ccf4f30a5ad8c801090b388ddd5613", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (1982) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "90d77e966793754ab4312c47b42900b1", "Imagic, Brad Stewart", "720105-2A, IA3400P, EIX-005-04I", "Fire Fighter (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "90f502cbf4438a95f69f848cef36eb64", "Digitel", "", "River Raid II (1985) (Digitel)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "910dd9bf98cc5bc080943e5128b15bf5", "", "", "Gunfight 2600 - Improved AI (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "911d385ee0805ff5b8f96c5a63da7de5", "Hozer Video Games", "", "Jammed (V0.1) (Demo) (2001) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "913d5d959b5021f879033c89797bab5e", "", "", "Robot Player Graphic (1996) (J.V. Matthews) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "914a8feaf6d0a1bbed9eb61d33817679", "Atari", "CX26163P", "Freeway Chicken (32 in 1) (1988) (Atari) (PAL)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "91925abce3a29e33b6a8b81482f4f5af", "Activision, Garry Kitchen - Ariola", "EAX-025, EAX-025-04I - 711 025-725", "Keystone Kapers (1983) (Activision) (PAL) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9193b6fff6897d43274741d4f9855b6d", "", "", "M.A.S.H (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "91a3749ff7b7e72b7fa09e05396a0e7b", "", "", "Gunfight 2600 - Final Run Part 2 (2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "91b007f33f9b790be64f57220ec52e80", "Jone Yuan Telephonic Enterprise", "", "Laser Blast (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "91c2098e88a6b13f977af8c003e0bca5", "Atari - GCC", "CX2676", "Centipede (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "91d1c82ceaf8af2add3973a3c34bc0cb", "", "", "Starfield Demo 1 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "91f0a708eeb93c133e9672ad2c8e0429", "", "", "Oystron (V2.9) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "91fdb6541f70c40b16aabf8308123be8", "", "", "Interlacing Game (19-08-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9222b25a0875022b412e8da37e7f6887", "Panda", "106", "Dice Puzzle (1983) (Panda)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "9245a84e9851565d565cb6c9fac5802b", "Bomb - Onbase", "CA282", "Great Escape (1983) (Bomb)", "AKA Asteroid Fire", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "927d422d6335018da469a9a07cd80390", "Activision, Carol Shaw - Ariola", "EAX-020, EAX-020-04B, EAX-020-04I - 711 020-720", "River Raid (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9281eccd7f6ef4b3ebdcfd2204c9763a", "Retroactive", "", "Qb (2.15) (Retroactive) (PAL)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "9295570a141cdec18074c55dc7229d08", "Telegames", "7045 A015", "Bump 'n' Jump (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "929e8a84ed50601d9af8c49b0425c7ea", "Bit Corporation", "PG205", "Dancing Plate (1982) (BitCorp) (PAL)", "AKA Dishaster, Dancing Plates, Tanzende Teller", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "92a1a605b7ad56d863a56373a866761b", "U.S. Games Corporation - Western Technologies, Dave Hampton", "VC2006", "Raft Rider (1983) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "92c5abb7a8bb1c3fc66c92ba353a3d21", "", "", "Star Fire - Sorting Fixed (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "92d1f6ac179ebe5963868d6bc1bdda8d", "HES", "498", "Smash Hit Pak - Frogger, Boxing, Seaquest, Skiing, Stampede (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "92e72f7cc569584c44c9530d645ae04e", "Canal 3 - Intellivision", "", "Spider Fighter (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "92ede72ed8f61d255bc58d2f166dc6b6", "", "", "Star Fire - Shootable (26-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "931b91a8ea2d39fe4dca1a23832b591a", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9333172e3c4992ecf548d3ac1f2553eb", "Konami", "RC 101-X 02", "Strategy X (1983) (Konami)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "93420cc4cb1af1f2175c63e52ec18332", "Tim Snider", "", "Blair Witch Project (Tim Snider) (Hack)", "Hack of Haunted House", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9364ad51c321e0f15c96a8c0aff47ceb", "Atari, Rob Fulop", "CX2638", "Missile Command (1981) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "936ef1d6f8a57b9ff575dc195ee36b80", "", "", "Pac Kong (Unknown)", "AKA Inca Gold", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "936f555b4b1a2cd061b659ff63f4f5f2", "HES, David Lubar", "535", "My Golf (1990) (HES) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "937736d899337036de818391a87271e0", "Atari, Peter C. Niday", "CX26108", "Donald Duck's Speedboat (04-12-1983) (Atari) (Prototype)", "AKA Donald Duck's Regatta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "939ce554f5c0e74cc6e4e62810ec2111", "ZiMAG - Emag - Vidco", "711-111 - GN-020", "Dishaster (1983) (ZiMAG)", "AKA Dancing Plate", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "93acd5020ae8eb5673601e2edecbc158", "Chris Cracknell", "", "Video Time Machine (Chris Cracknell)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "93b9229fc0ea4fb959d604f83f8f603c", "Thomas Jentzsch", "", "Amidar DS (Fast Enemies) (2003) (TJ) (Hack)", "Hack of Amidar", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "93c4b910f7649b3e998bb6d8527c6f4a", "Sparrow - Enter-Tech, Paul Walters, Rick Harris, George Hefner, Barbara Ultis", "", "Arkyology (1983) (Sparrow) (Prototype) [fixed]", "Fix for un-initialized 'X' register", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "93c52141d3c4e1b5574d072f1afde6cd", "Imagic, Mark Klein", "720112-1A, 03213", "Subterranea (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "93c8d9d24f9c5f1f570694848d087df7", "Digivision", "", "Galaxian (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "93c9f9239a4e5c956663dd7affa70da2", "Quelle", "626.610 0", "Billard (1983) (Quelle) (PAL)", "AKA Trick Shot", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "93dc15d15e77a7b23162467f95a5f22d", "CCE", "", "Sky Jinks (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "93eb1795c8b1065b1b3d62bb9ec0ccdc", "JSK", "", "Custer's Viagra (JSK) (Hack)", "Hack of Custer's Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "94102febc53b4a78342d11b645342ed4", "", "", "Joustpong (14-07-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9436b7ad131b5a1f7753ce4309ba3dee", "Kyle Pittman", "", "War of The Worlds (Kyle Pittman) (Hack)", "Hack of Defender", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9469d18238345d87768e8965f9f4a6b2", "CCE", "", "Ms. Pac-Man (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "947317a89af38a49c4864d6bdd6a91fb", "CBS Electronics, Bob Curtiss", "4L 2487 5000", "Solar Fox (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "94b92a882f6dbaa6993a46e2dcc58402", "Activision, Larry Miller", "AX-026, AX-026-04", "Enduro (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "94d90f63678e086f6b6d5e1bc6c4c8c2", "Digivision", "", "Seaquest (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "94e3fbc19107a169909e274187247a9d", "", "2402-044-01", "2-in-1 Freeway and Tennis (Unknown)", "", "", "", "", "2IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "94e4c9b924286038527f49cdc20fda69", "Retroactive", "", "Qb (V2.12) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "94e7cc6342d11e508e7e8b2ddf53c255", "", "", "Missile Command (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "94ff6b7489ed401dcaaf952fece10f67", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (07-31-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "951e8cec7a1a1d6c01fd649e7ff7743a", "Atari - Sculptured Software, Adam Clayton", "CX26151, CX26151P", "Dark Chambers (1988) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9526e3db3bdfbc27989a9cbfd0ee34bf", "", "", "Atari Logo Demo 6 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "95351b46fa9c45471d852d28b9b4e00b", "Atari, Tom Rudadahl", "CX26163P", "Golf (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "955c408265ad6994f61f9b66657bbae9", "", "", "Quadrun (Video Conversion) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "956496f81775de0b69a116a0d1ad41cc", "CCE", "", "Alien (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "956b99511c0f47b3a11d18e8b7ac8d47", "", "", "Bones (Arcade Golf Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "95956108289a917f80667eccd3ce98a9", "Atari, Ed Logg, Carol Shaw", "CX2639, CX2639P", "Othello (1981) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "95a69cf8c08ef1522b050529464f0bca", "", "", "Grid Pattern Demo 1 (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "95a89d1bf767d7cc9d0d5093d579ba61", "PlayAround - J.H.M.", "204", "Lady in Wading (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "216", "YES", "" }, + { "95e1d834c57cdd525dd0bd6048a57f7b", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "95e542a7467c94b1e4ab24a3ebe907f1", "Quelle", "719.252 9", "Im Schutz der Drachen (1983) (Quelle) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "95fd6097dc27c20666f039cfe34f7c69", "", "", "Oh No! (Version 1) (17-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "961112b74a920a5242e233480326c356", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "962ffd3eaf865230a7a312b80e6c5cfd", "Imagic, Wilfredo 'Willy' Aguilar, Michael Becker, Rob Fulop", "13205", "Fathom (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "96670d0bf3610da2afcabd8e21d8eabf", "", "", "Boring Pitfall (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "966b11d3c147d894dd9e4ebb971ea309", "", "", "Marble Craze Song (Paul Slocum) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9671b658286e276cc4a3d02aa25931d2", "", "", "Hangman Ghost Wordlist (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "968efc79d500dce52a906870a97358ab", "TNT Games - Sculptured Software, Adam Clayton", "26192", "BMX Air Master (1989) (TNT Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "969b968383d9f0e9d8ffd1056bcaef49", "Atari, Larry Kaplan", "CX2628, CX2628P", "Bowling (1979) (Atari) (PAL)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "96bcb3d97ce4ff7586326d183ac338a2", "", "", "Revenge of the Apes (Hack) [h2]", "Hack of Planet of the Apes", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "96e798995af6ed9d8601166d4350f276", "20th Century Fox Video Games - Videa, David Ross", "11029", "Meltdown (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "96eccc2277043508a6c481ea432d7dd9", "Thomas Jentzsch", "", "Missile Command (Atari Mouse) (2002) (TJ) (PAL)", "Uses Atari ST Mouse Controller", "Homebrew", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "YES", "" }, + { "96f806fc62005205d851e758d050dfca", "", "", "Push (V0.05) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "97184b263722748757cfdc41107ca5c0", "Parker Brothers", "PB5820", "Mr. Do!'s Castle (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "9718b85ac5a55cbc7348963c63ffa35a", "Robby", "", "Demon Attack (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "972486110933623039a3581db308fda6", "", "", "Xeno Plus (Hack)", "Hack of Xenophobe", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "97327d6962f8c64e6f926f79cd01c6b9", "", "", "Jawbreaker (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "977294ae6526c31c7f9a166ee00964ad", "Atari - GCC, Douglas B. Macrae", "CX2677, CX2677P", "Dig Dug (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "97842fe847e8eb71263d6f92f7e122bd", "Imagic, Wilfredo Aguilar, Michael Becker, Dennis Koble", "720113-1A, 03206", "Solar Storm (1983) (Imagic)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, + { "97933c9f20873446e4c1f8a4da21575f", "", "", "Racquetball (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "97a9bb5c3679d67f5c2cd17f30b85d95", "Atari", "", "Colors (1980) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "97cd63c483fe3c68b7ce939ab8f7a318", "Thomas Jentzsch", "", "Robot City (V0.21) (15-09-2002) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "97d0151beb84acbe82aa6db18cd91b98", "Steve Engelhardt", "", "Lunar Attack (2002) (Steve Engelhardt) (Hack)", "Hack of Z-Tack", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "97d079315c09796ff6d95a06e4b70171", "Activision, Garry Kitchen", "AZ-032", "Pressure Cooker (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9813b9e4b8a6fd919c86a40c6bda8c93", "Atari", "CX26177", "Ikari Warriors (1989) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9831efc7f4cb8ffb4df0082bab2f07a3", "Activision, Steve Cartwright - Ariola", "EAX-031, EAX-031-04B - 711 031-717", "Frostbite (1983) (Activision) (PAL) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9848b5ef7a0c02fe808b920a2ac566d2", "Skyworks Technology Inc.", "", "Baseball (2002) (Skyworks)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9853089672116117258097dbbdb939b7", "Hozer Video Games", "", "Gunfight 2600 - Cowboy Hair (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "98555b95cb38e0e0b22b482b2b60a5b6", "", "", "Spinning Fireball (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "98ba601a60172cb46c5bf9a962fd5b1f", "", "", "Gorilla Kong (Hack)", "Hack of Donkey Kong", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "98ccd15345b1aee6caf51e05955f0261", "Retroactive", "", "Qb (V2.03) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "98e5e4d5c4dd9a986d30fd62bd2f75ae", "", "", "Air-Sea Battle (Unknown) (Hack) (4K)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "98e6e34af45a0664597972c3bb31180f", "", "", "Space Instigators (V1.7) (17-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "98e7caaab8ec237558378d2776c66616", "Bradford W. Mott", "", "HMOVE Test (Bradford W. Mott) (1998) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "98ea10c47c13f1b3306c7b13db304865", "", "", "Jam Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "98ec0fa4199b9c01f7b8fa3732e43372", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "98ef1593624b409b9fb83a1c272a0aa7", "CCE", "C-831", "Cosmic Ark (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "98f63949e656ff309cefa672146dc1b8", "Atari - Axlon, John Vifian", "CX26168", "Off the Wall (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "98fa3ad778a668a79449350de4b3b95b", "", "", "Thrust (V1.1) (2000) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9905f9f4706223dadee84f6867ede8e3", "HES", "", "Challenge (HES) (PAL)", "ROM must be started in bank 1 (Surfer's Paradise if right difficulty = 'A')", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9912d06eea42200a198dd3e2be18c601", "Imagic, Michael Greene", "IA3312", "No Escape! (1982) (Imagic) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "991d57bbcd529ad62925098e0aec1241", "", "", "Gunfight 2600 - The Final Kernel (MP) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9945a22f60bbaf6d04a8d73b3cf3db75", "Activision, Dan Kitchen", "EAX-039-04B, EAX-039-04I", "Kung-Fu Master (1987) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9947f1ebabb56fd075a96c6d37351efa", "CBS Electronics", "4L 2737 0000", "Omega Race (1983) (CBS Electronics)", "Set right difficulty to 'A' for BoosterGrip in both ports", "", "", "", "", "", "A", "", "", "BOOSTERGRIP", "BOOSTERGRIP", "", "", "", "", "", "", "" }, + { "9962034ea7b3d4a905d0991804670087", "", "", "Grid Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9989f974c3cf9c641db6c8a70a2a2267", "Eckhard Stolberg", "", "Colours Selector (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "99a24d7bb31d49b720b422550b32c35f", "", "", "Hangman Ghost Biglist1 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "99f7c6c26046bbe95f1c604b25da8360", "SnailSoft", "", "Comitoid beta 2 (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9a01115206f32eb0b539c7e5a47ccafa", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (07-15-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9a165c39af3f050fdee6583fdfcdc9be", "Zirok", "", "Mario Bros. (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9a21fba9ee9794e0fadd7c7eb6be4e12", "Atari - Imagineering, Dan Kitchen", "CX26177", "Ikari Warriors (1991) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9a25b3cfe2bbb847b66a97282200cca2", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 60", "", "", "", "", "" }, + { "9a4274409216ff09ecde799f2a56ac73", "CCE", "C-801", "Mr. Postman (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9ab72d3fd2cc1a0c9adb504502579037", "Epyx, Steven A. Baker, Peter Engelbrite", "80561-00286", "California Games (1988) (Epyx)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9ad362179c2eea4ea115c7640b4b003e", "", "", "Barnstorming (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "NTSC50", "", "", "", "" }, + { "9ad36e699ef6f45d9eb6c4cf90475c9f", "Imagic, Dennis Koble", "720103-1A, 720103-1B, IA3203, IX-010-04", "Atlantis (1982) (Imagic)", "AKA Lost City of Atlantis", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9aeb5206c5bf974892a9cc59f1478db3", "Activision, Steve Cartwright", "AX-013", "Barnstorming (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9af615951e9719df2244bc77fc50cb95", "Dactari - Milmar", "", "Defender (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9afdfe1cff7f37f1c971fe3f0c900606", "Funvision - Fund. International Co.", "", "Plug Attack (Funvision)", "AKA Plaque Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9b150a42fc788960fbb4cbe250259ee2", "Kroko", "", "3E Bankswitch Test (TIA @ $40)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9b21d8fc78cc4308990d99a4d906ec52", "CCE", "C-838", "Immies & Aggies (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "18", "223", "", "" }, + { "9b246683f44c963a50e41d6b485bee77", "", "", "Boring (PAL) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9bb136b62521c67ac893213e01dd338f", "Xonox - Beck-Tech", "6210, 7210, 06003. 99001", "Spike's Peak (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9bd4e0d5f28ba6da417c26649171f8e4", "", "", "Hangman Pac-Man Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9be58a14e055b0e7581fc4d6c2f6b31d", "", "", "Adventure (Color Scrolling) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9c27ef3bd01c611cdb80182a59463a82", "Arcadia Corporation, Kevin Norman", "AR-4103", "Killer Satellites (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9c40bf810f761ffc9c1b69c4647a8b84", "", "", "2 in 1 - Frostbite, River Raid (Unknown)", "", "", "", "", "2IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9c6d65bd3b477aace0376f705b354d68", "", "", "RPG Kernal (18-04-2003) (Paul Slocum) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "9c6faa4ff7f2ae549bbcb14f582b70e4", "U.S. Games Corporation, Garry Kitchen, Paul Willson - Vidtec", "VC1002", "Sneak 'n Peek (1982) (U.S. Games)", "AKA Hide 'n Seek", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "", "" }, + { "9c6fd6ed3599978ab7b6f900484b9be6", "Andrew Wallace", "", "Laseresal 2002 (PAL60) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "9c729017dd2f9ccbadcb511187f80e6b", "", "", "J-Pac (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9c7fa3cfcaaafb4e6daf1e2517d43d88", "", "", "PIEROXM Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9ca2deb61318eba4fb784d4bf7441d8b", "", "", "Purple Bar Demo 2 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9cbb07f1993a027bc2f87d5205457ec9", "", "", "Eckhard Stolberg's Scrolling Text Demo 1 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9d0befa555f003069a21d2f6847ad962", "Atari - GCC, Dave Payne", "CX2669", "Vanguard (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9d1556ae5890398be7e3d57449774b40", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, + { "9d2938eb2b17bb73e9a79bbc06053506", "Imagic, Michael Greene", "EIZ-002-04I", "Wing War (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9d2f05d0fe8b2dfcf770b02eda066fc1", "", "", "Push (V0.06) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9d33d31fb1de58c5460d8a67b57b36da", "", "", "Star Voyager (Genesis)", "Genesis controller (C is secondary lasers)", "Hack of Star Voyager", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "9d37a1be4a6e898026414b8fee2fc826", "M Network - APh Technological Consulting, David Rolfe - INTV", "MT5665", "Super Challenge Baseball (1982) (M Network)", "AKA Big League Baseball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9d4bc7c6fe9a7c8c4aa24a237c340adb", "Dennis Debro", "", "Climber 5 (16-04-2003) (Dennis Debro)", "For Philly Classic 4", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9d522a3759aa855668e75962c84546f7", "Atari, Tom Rudadahl", "CX2634, CX2634P", "Golf (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9d7f04618bb4043f531d087e3aaa7ac8", "Parker Brothers, Larry Gelberg, Gary Goltz", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype) (PAL) (16K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9de0d45731f90a0a922ab09228510393", "20th Century Fox Video Games - Sirius, Mark Turmell", "11003", "Fast Eddie (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9dec0be14d899e1aac4337acef5ab94a", "CommaVid, John Bronstein", "CM-003", "Cosmic Swarm (1982) (CommaVid) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "9e01f7f95cb8596765e03b9a36e8e33c", "Atari - CCW, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (1983) (Atari)", "Uses Keypad Controllers", "Rare", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "9e192601829f5f5c2d3b51f8ae25dbe5", "PlayAround - J.H.M.", "201", "Cathouse Blues (1982) (PlayAround)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "9e2c7299c69b602443d327c7dad51cbf", "Charles Morgan", "", "Xaxyrax Road (Charles Morgan) (Hack)", "Hack of Freeway", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9e437229136f1c5e6ef4c5f36178ed18", "Funvision - Fund. International Co.", "", "Grand Prize (Funvision)", "AKA Enduro", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9e5007131695621d06902ab3c960622a", "Sega", "", "Tac Scan (1983) (Sega) [h1]", "", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 60", "", "", "215", "YES", "" }, + { "9e6fa031ece07919c816fba5dc8de43e", "", "", "Star Fire - Meteor Dance (13-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9e792a59f8795664cbaaff1ba152d731", "", "", "Bullet Demo (20-12-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9e904e2eaa471c050c491289b8b80f60", "", "", "How to Draw a Playfield II (1997) (Erik Mooney) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9ea8ed9dec03082973244a080941e58a", "Eric Mooney, Piero Cavina", "", "INV+", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9ec1b259a1bcffa63042a3c2b3b90f0a", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9eca521db1959156a115dee85a405194", "", "", "Fu Kung! (V0.08) (2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9ed0f2aa226c34d4f55f661442e8f22a", "", "", "Nuts (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "45", "", "", "" }, + { "9eeb40f04a27efb1c68ba1d25e606607", "Kyle Pittman", "", "Rambo II (2003) (Kyle Pittman) (Hack)", "Hack of Double Dragon", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9efa877a98dd5a075e058214da428abb", "Hozer Video Games", "", "SCSIcide (1.32) (Hozer Video Games)", "Uses the Paddle Controllers", "New Release", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "", "AUTO 65", "", "", "", "", "" }, + { "9efb4e1a15a6cdd286e4bcd7cd94b7b8", "20th Century Fox Video Games, John W.S. Marvin", "", "Planet of the Apes (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9f2d58dce1b81c6ba201ed103507c025", "", "", "Fu Kung! (V0.02) (2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9f48eeb47836cf145a15771775f0767a", "Atari, Warren Robinett", "CX2620", "Basic Programming (1979) (Atari)", "Uses Keypad Controllers", "Rare", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, + { "9f5096a6f1a5049df87798eb59707583", "20th Century Fox Video Games, Mark Klein", "11036", "Entity, The (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9f59eddf9ba91a7d93bce7ee4b7693bc", "Thomas Jentzsch", "", "Montezuma's Revenge (Thomas Jentzsch) (PAL60)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "9f8fad4badcd7be61bbd2bcaeef3c58f", "Parker Brothers, Charlie Heath", "PB5330", "Reactor (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "9f901509f0474bf9760e6ebd80e629cd", "Atari, Bob Whitehead - Sears", "CX2623 - 6-99819, 49-75108, 49-75125", "Home Run (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "9f93734c68f6479eb022cab40814142e", "", "", "Push (V0.07) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9f9ee0f60c119c831e80694b6678ca1a", "Jeffry Johnston", "", "Radial Pong - Version 8 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9fa0c664b157a0c27d10319dbbca812c", "Chris Walton, Justin Hairgrove, Tony Morse", "", "Hunchy II (2005)", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9fc2d1627dcdd8925f4c042e38eb0bc9", "Atari - GCC, John Allred, Mike Feinstein", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "E68E28752D3C54EDD3CCDA42C27E320C", "Xonox - K-Tel Software, Anthony R. Henderson", "99007, 6240", "Tomarc the Barbarian (1983) (Xonox)", "Genesis controller (B is jump and throw, C switches between players)", "Hack of Tomarc the Barbarian", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "a0028f057d496f22b549fd8deecc6f78", "Joe Grand", "", "SCSIcide Pre-release 6 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a00ec89d22fcc0c1a85bb542ddcb1178", "CCE", "C-1012", "Phoenix (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a00ee0aed5c8979add4c170f5322c706", "Barry Laws Jr.", "", "Egghead (Barry Laws Jr.) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, + { "a0185c06297b2818f786d11a3f9e42c3", "", "", "International Soccer (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a025a8f83a42a4d6d46c4887e799bfac", "Hozer Video Games", "", "Gunfight 2600 - Descissions had to be made (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a0297c4788f9e91d43e522f4c561b4ad", "Atari - CCW, Gary Stark", "CX26102", "Cookie Monster Munch (1983) (Atari) (PAL)", "Uses Kids/Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "a0563dd6d8215c38c488fbbd61435626", "", "", "Ship Demo (V 1501) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a0675883f9b09a3595ddd66a6f5d3498", "Telegames", "6057 A227", "Quest for Quintana Roo (1988) (Telegames)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a075ad332942740c386f4c3814925ece", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (2 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a0d502dc8b90b1d7daa5f6effb10d349", "", "", "Demo Image Series #5 - Sam (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a0e2d310e3e98646268200c8f0f08f46", "Atari, Ed Logg, Carol Shaw", "CX2639, CX2639P", "Othello (1981) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a100eff2d7ae61ca2b8e65baf7e2aae8", "David Marli", "", "Muncher (David Marli) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, + { "a11099b6ec24e4b00b8795744fb12005", "Activision - Bobco, Robert C. Polaro", "EAK-049-04B", "Rampage! (1989) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a1403fef01641dcd3980cac9f24d63f9", "Dactari - Milmar", "", "Atlantis (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a14d8a388083c60283e00592b18d4c6c", "", "", "Tunnel Demo (28-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a15b5831a1fab52e4c416068c85ec011", "Hozer Video Games", "", "Gunfight 2600 - The Good, The Bad, The Ugly (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a174cece06b3abc0aec3516913cdf9cc", "Sears Tele-Games, Jim Huether", "CX2614 - 49-75126", "Steeplechase (1980) (Sears) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "PADDLES", "", "", "", "", "", "", "" }, + { "a1770ef47146ab7b12e2c4beccd68806", "Digitel", "", "Kaystone Kapers (1983) (Digitel)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a184846d8904396830951217b47d13d9", "Activision, Dan Kitchen", "AX-029", "Crackpots (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a189f280521f4e5224d345efb4e75506", "Atari - Thomas Jentzsch", "", "Obelix (1983) (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a1bcbe0bfe6570da2661fc4de2f74e8a", "Imagic - Advanced Program Technology, Rob Fulop", "", "Actionauts (Microbots) (1984-2008) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a1ca372388b6465a693e4626cc98b865", "Quelle", "176.543 7", "Der Vielfrass (1983) (Quelle) (PAL)", "AKA Fast Food", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a1ead9c181d67859aa93c44e40f1709c", "American Videogame - Dunhill Electronics, Darrell Wagner, Todd Clark Holm, John Simonds", "", "Tax Avoiders (1986) (American Videogame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a1f9159121142d42e63e6fb807d337aa", "Quelle - Otto Versand", "700.223 1 - 781627", "Der moderne Ritter (1983) (Quelle) (PAL)", "AKA Fast Eddie", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a204cd4fb1944c86e800120706512a64", "Coleco", "2511", "Smurfs Save the Day (1983) (Coleco)", "Uses the Kid Vid Controller", "", "", "", "", "", "", "", "", "", "KIDVID", "", "", "", "", "", "", "" }, + { "a20b7abbcdf90fbc29ac0fafa195bd12", "Quelle - Otto Versand", "719.383 2 - 649635, 781393, 781784, 986404", "Motocross (1983) (Quelle) (PAL)", "AKA Motorcross", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a20d931a8fddcd6f6116ed21ff5c4832", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2003", "Racquetball (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "a2170318a8ef4b50a1b1d38567c220d6", "Amiga - Video Soft", "3125", "Surf's Up (1983) (Amiga) (Prototype) [a1]", "Uses the Joyboard controller", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a23ffc86804240ce77134a1c91926685", "", "", "Star Fire - Paulstar WIP (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a2424c1a0c783d7585d701b1c71b5fdc", "", "", "Video Pinball (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a25bb76e9e773117e567fd4300b1bb23", "", "", "Interleaved ChronoColour Demo (NTSC) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a28d872fc50fa6b64eb35981d0f4bb8d", "Atari, Larry Kaplan - Sears", "CX2628 - 6-99842, 49-75117", "Bowling (1979) (Atari) (4K)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a29df35557f31dfea2e2ae4609c6ebb7", "Atari", "", "Circus Atari (1980) (Atari) (Joystick)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a29fc854838e08c247553a7d883dd65b", "Activision, Steve Cartwright", "AX-013", "Barnstorming (1982) (Activision) (16K)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a2aae759e4e76f85c8afec3b86529317", "", "", "Boom Bang (Unknown)", "AKA Crackpots", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a2de0fc85548871279ed2a3c1325c13e", "George Veeder", "", "Cat and Mouse (George Veeder) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, + { "a2eb84cfeed55acd7fece7fefdc83fbb", "", "", "Kool Aid Man (Fixed) (15-11-2002) (CT)", "HMOVE handling fixed in this version", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a2f296ea2d6d4b59979bac5dfbf4edf0", "", "", "Warring Worms (28-01-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a302b922a8dbec47743f28b7f91d4cd8", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (Preview) (1982) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a30ece6dc4787e474fbc4090512838dc", "Zellers", "", "Circus (Zellers)", "AKA Circus Atari", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a310494ad5ba2b5b221a30d7180a0336", "", "", "Demo Image Series #6 - Mario (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a336beac1f0a835614200ecd9c41fd70", "Atari, Christopher H. Omarzu, Robert Vieira", "CX26121", "Zoo Keeper Sounds (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a34560841e0878c7b14cc65f79f6967d", "Multivision, Michael Case", "", "Harem (1982) (Multivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a3486c0b8110d9d4b1db5d8a280723c6", "Atari, Alan J. Murphy, Robert C. Polaro", "CX26100", "Bugs Bunny (08-04-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a35d47898b2b16ec641d1dfa8a45c2b7", "Activision, Steve Cartwright", "AX-017, AX-017-04", "MegaMania (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a3873d7c544af459f40d58dfcfb78887", "", "", "Tennis (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a3b9d2be822eab07e7f4b10593fb5eaa", "", "", "GREGXM Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a3c1c70024d7aabb41381adbfb6d3b25", "Telesys, Alex Leavens", "1005", "Stargunner (1983) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a3d7c299fbcd7b637898ee0fdcfc47fc", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (Preview) (1982) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, + { "a3f2a0fcf74bbc5fa763b0ee979b05b1", "Quelle", "873.790 0", "Eishockey-Fieber (1983) (Quelle) (PAL)", "AKA Ice Hockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a3f8aebb38182749cb8da85cfbc63d7c", "", "", "Tennis (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a3fee8ce15525ea00d45a06f04c215d1", "Aaron Curtis", "", "AStar (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "a406d2f6d84e61d842f4cb13b2b1cfa7", "Tigervision, John Harris - Teldec", "7-002", "Jawbreaker (1982) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a412c8577b2d57b09185ae51739ac54f", "Arcadia Corporation, Dennis Caswell", "AR-4000", "Phaser Patrol (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "24", "", "YES", "" }, + { "a41450333f8dd0e96e5e9f0af3770ae9", "", "", "Basic Math (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a422194290c64ef9d444da9d6a207807", "M Network - APh Technological Consulting, Hal Finney", "MT5667", "Dark Cavern (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a443d8557d712845c8cd3699363a42e6", "", "", "Star Fire (07-01-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a47878a760f5fa3aa99f95c3fdc70a0b", "", "", "Demo Image Series #5 - Baboon (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a4790224bd5afabd53cbe93e46a7f241", "Activision, Bob Whitehead", "AG-019", "Sky Jinks (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a47e26096de6f6487bf5dd2d1cced294", "Atari", "CX2643", "Codebreaker (1978) (Atari) (PAL)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "a499d720e7ee35c62424de882a3351b6", "Sega - Beck-Tech, Steve Beck, Phat Ho", "009-01", "Up 'n Down (1984) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a4aa7630e4c0ad7ebb9837d2d81de801", "", "", "Atari 2600 Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a4ab331e8768eafdc20ce8b0411ff77a", "", "", "Demo Image Series #1 - Sam (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a4b9423877a0b86ca35b52ca3c994ac5", "CCE", "C-805", "Sea Monster (1983) (CCE)", "O Monstro Marinho", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, + { "a4b99aa5ed85cfdb7d101923147de035", "Jim Goebel", "", "Pac-Law (Jim Goebel) (Hack)", "Hack of Outlaw", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a4c08c4994eb9d24fb78be1793e82e26", "Activision, Alan Miller", "AX-012, CAX-012, AX-012-04", "Ice Hockey (1981) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a4d026a5c200ef98518ebb77719fe8dc", "Kyle Pittman", "", "SpongeBob SquarePants (2003) (Kyle Pittman) (Hack)", "Hack of Revenge of the Beefsteak Tomatoes", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a4e885726af9d97b12bb5a36792eab63", "Xonox - K-Tel Software - Beck-Tech, Steve Beck", "6210, 7210, 06003. 99001", "Spike's Peak (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "223", "", "" }, + { "a4ecb54f877cd94515527b11e698608c", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26119", "Saboteur (12-20-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a4f1cea2c8479284e2a2292f8d51b5fa", "", "", "Gunfight 2600 - The Final Kernel Part 2 (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a4ff39d513b993159911efe01ac12eba", "Atari - GCC, John Allred, Douglas B. Macrae, Betty Ryan Tylko", "CX2694", "Pole Position (1983) (Atari)", "AKA RealSports Driving", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a511f7ee13e4b35512f9217a677b4028", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2674", "E.T. - The Extra-Terrestrial (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a5262fe6d01d6a1253692682a47f79dd", "", "", "JKH Text Scrolling Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a537879d8e82e1061d3ad800479d3b84", "Andrew Wallace", "", "Brooni (2001) (Andrew Wallace) (PD) (PAL)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a539b9fd1ba57e46442b3e9351e6383b", "", "", "River Raid (208 in 1) (Unknown) (PAL) (Hack) [a]", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a56b642a3d3ab9bbeee63cd44eb73216", "Carrere Video - JWDA, Sylvia Day, Todd Marshall, Robin McDaniel, Henry Will IV - Teldec - Prism", "USC2001", "Gopher (1983) (Carrere Video) (PAL)", "AKA Vossicht Whlmaus!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a5855d73d304d83ef07dde03e379619f", "Atari, David Crane", "", "Boggle (08-07-1978) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "YES", "" }, + { "a58b11148c18d85e4c2aef4ff46ade67", "", "", "Video Chess (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a591b5e8587aae0d984a0f6fe2cc7d1c", "", "", "Globe Trotter Demo (24-03-2003) (Weston)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a5b7f420ca6cc1384da0fed523920d8e", "", "", "Adventure (New Graphics) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a5c96b046d5f8b7c96daaa12f925bef8", "Activision, Alan Miller - Ariola", "EAG-007, EAG-007-04I, PAG-007 - 711 007-720", "Tennis (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a5e9ed3033fb2836e80aa7a420376788", "Atari, Carla Meninsky", "CX2637, CX2637P", "Dodge 'Em (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a60598ad7ee9c5ccad42d5b0df1570a1", "Atari, Alan Miller", "CX26163P", "Surround (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a6127f470306eed359d85eb4a9cf3c96", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a62e3e19280ff958407e05ca0a2d5ec7", "", "", "Hangman Ghost Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a6737c81542a99ee71cb5f5ff14703d9", "", "", "Scrolling Playfield 3 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a69f5b1761a8a11c98e706ec7204937f", "", "", "Pharaoh's Curse (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "34", "", "YES", "" }, + { "a74689a08746a667a299b0507e1e6dd9", "Starpath Corporation, Stephen H. Landrum", "9 AR-4105", "Official Frogger, The (1983) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a7523db9a33e9417637be0e71fa4377c", "Videospielkassette - Ariola", "PGP238", "Gangster (Ariola) (PAL)", "AKA Outlaw", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a7673809068062106db8e9d10b56a5b3", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118, CX26118P", "Millipede (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a779b9fa02c62d00d7c31ed51268f18a", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a7a58e9291aefa1064e933071f60d4ef", "Arcadia Corporation, Dennis Caswell", "1 AR-4000, AR-4100", "Phaser Patrol (1982) (Arcadia) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "a7b584937911d60c120677fe0d47f36f", "M Network - APh Technological Consulting, Hal Finney - INTV", "MT5661", "Armor Ambush (1982) (M Network)", "AKA Tank Battle", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a7b96a8150600b3e800a4689c3ec60a2", "Atari, Mike Lorenzen - Sears", "CX2630 - 49-75122", "Circus Atari (1980) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 55", "", "", "", "", "" }, + { "a7cf2b9afdbb3a161bf418dbcf0321dc", "Barry Laws Jr.", "", "Attack Of The Mutant Space Urchins (2002) (Barry Laws Jr.) (Hack)", "Hack of Alien", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "a7ed7dc5cbc901388afa59030fb11d26", "Atari, Warren Robinett", "CX2606, CX2606P", "Slot Racers (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a7ef44ccb5b9000caf02df3e6da71a92", "Atari, Ian Shepard - Sears", "CX2604 - 6-99812, 49-75106", "Space War (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a8101cb667e50a46165c6fb48c608b6b", "", "", "Kung Fu Sprite Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "a81697b0c8bbc338ae4d0046ede0646b", "CCE", "", "Gravitar (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a81b29177f258494b499fbac69789cef", "Greg Thompson", "", "Console Wars (Greg Thompson) (Hack)", "Hack of Space Jockey", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a83b070b485cf1fb4d5a48da153fdf1a", "Apollo", "AP-2011", "Pompeii (1983) (Apollo) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a8435ec570141de5d833c4abec499e55", "", "", "Happy Birthday Demo (2001) (Dennis Debro) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a8633050a686270fcf6c0cc4dcbad630", "Zirok", "", "Phoenix (Zirok)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a867b76098786c4091dba2fcee5084c3", "", "", "Dragrace (Hack)", "Hack of Dragster", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, + { "a875f0a919129b4f1b5103ddd200d2fe", "Atari, Dan Hitchens. Mimi Nyden", "CX2656", "SwordQuest - EarthWorld (1982) (Atari) (PAL)", "AKA Adventure I, SwordQuest I - EarthWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a8916734ff8c64ec3342f4c73fd5b57d", "Atari", "", "Stand Alone Test Cart (1982) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a89a3e0547d6887279c34aba4b17a560", "M Network, Steve Crandall, Patricia Lewis Du Long", "MT4646", "Rocky & Bullwinkle (1983) (Mattel) (Prototype)", "", "Prototype", "", "", "4K", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a8a703e073183a89c94d4d99b9661b7f", "Franklin Cruz", "", "Spice Invaders (Franklin Cruz) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a8b3ea6836b99bea77c8f603cf1ea187", "CCE", "C-861", "Boxing (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a8c48b4e0bf35fe97cc84fdd2c507f78", "Puzzy - Bit Corporation", "PG201", "Seamonster (1982) (Puzzy)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, + { "a8d0a4a77cd71ac601bd71df5a060e4c", "", "", "Space Shuttle (1983) (Activision) [t2] (Fuel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a8d4a9500b18b0a067a1f272f869e094", "", "", "Red And White Checkerboard Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a8e49d7e24ce293629ca29614862821b", "", "", "Enduro (Genesis)", "Genesis controller (B is acceleration, C is brakes)", "Hack of Enduro", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "a91d0858a52de3a2e6468437212d93e8", "", "", "Q-bert (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a936d80083e99d48752ad15c2b5f7c96", "", "", "Room of Doom (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "a93e8ea1f565c3c1e86b708cf0dc2fa9", "Jess Ragan", "", "Kabul! (Jess Ragan) (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "a94528ae05dd051894e945d4d2349b3b", "Genus", "", "River Raid (Genus)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a94b8ca630f467b574b614808d813919", "HES", "773-883", "2 Pak Special - Space Voyage, Fire Alert (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a9531c763077464307086ec9a1fd057d", "Atari, John Dunn - Sears", "CX2631 - 49-75152", "Superman (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a957dbe7d85ea89133346ad56fbda03f", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "a97733b0852ee3096300102cb0689175", "CCE", "C-834", "Fast Eddie (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a9784c24cddb33bd0d14442b97784f3d", "", "", "Omega Race DC (2003) (TJ) (Omega Race Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a98b649912b6ca19eaf5c2d2faf38562", "", "", "This Planet Sucks (Greg Troutman) (PAL) [!]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, + { "a995b6cbdb1f0433abc74050808590e6", "Imagic, Rob Fulop, Bob Smith", "720106-1A, IA3600", "Riddle of the Sphinx (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a9cb638cd2cb2e8e0643d7a67db4281c", "M Network - APh Technological Consulting, Larry Zwick - INTV", "MT5861", "Air Raiders (1983) (M Network)", "AKA Air Battle", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a9d9e19d0c89fb31780b5d63e1f8c6a4", "AtariAge, Chris Spry", "CX26201", "Zippy the Porcupine (2014) (Sprybug) (PAL60)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "a9e3c23599c0d77151602f8e31daf879", "", "", "Kung Fu Master (Genesis)", "Genesis controller (C is extra kick modes)", "Hack of Kung Fu Master", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "aa1c41f86ec44c0a44eb64c332ce08af", "Spectravideo, David Lubar", "SA-218", "Bumper Bash (1983) (Spectravideo)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "20", "", "", "" }, + { "aa2c4b32656bde9a75042a4d158583e1", "", "", "Oystron X (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "aa5cfe3b20395aba1d479135943ad85c", "", "", "Defender (Hack) (Unknown)", "", "Hack of Defender", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "aa7bb54d2c189a31bb1fa20099e42859", "CBS Electronics, Ed English", "4L4478", "Mr. Do! (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "aa8e4b2cb8a78ffe6b20580033f4dec9", "", "", "Bitmap Demo (13-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "aaac0d277eda054861e613c59c2e4ff2", "JWDA, Todd Marshall", "", "Music Demo (JWDA)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "aab840db22075aa0f6a6b83a597f8890", "Home Vision, R.J.P.G. - Gem International Corp. - VDI", "VCS83124", "Racing Car (1983) (Home Vision) (PAL)", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "aad61898633f470ce528e3d7ef3d0adb", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a1]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "aad91be0bf78d33d29758876d999848a", "Activision, David Crane", "AX-018, AX-018-04", "Pitfall! (1981) (Activision) (Prototype)", "Pitfall Harry's Jungle Adventure (Jungle Runner)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "aaea37b65db9e492798f0105a6915e96", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Tug of War (2 of 3) (1983) (Arcadia)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "02", "", "", "", "", "" }, + { "aafc79ffc32c4c9b2d73c8ada7602cfe", "", "", "Planet Patrol (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ab10f2974dee73dab4579f0cab35fca6", "ITT Family Games", "", "Wilma Wanderer (1983) (ITT Family Games) (PAL)", "AKA Lilly Adventure", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ab2cfcaad3daaf673b2b14fdbb8dac33", "M Network, David Akers, Joe King, Patricia Lewis Du Long, Jeff Ratcliff - INTV", "MT7045", "Bump 'n' Jump (1983) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ab2ea35dcc1098c87455bb8210b018cf", "", "", "Fu Kung! (V0.04 Single Line Resolution) (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ab301d3d7f2f4fe3fdd8a3540b7a74f5", "Jone Yuan Telephonic Enterprise Co", "", "IQ 180 (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "27", "230", "", "" }, + { "ab434f4c942d6472e75d5490cc4dd128", "HES", "773-875", "2 Pak Special - Hoppy, Alien Force (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ab4ac994865fb16ebb85738316309457", "Atari, Alan Miller - Sears", "CX2624 - 6-99826, 49-75113", "Basketball (1978) (Atari)", "Console ports are swapped", "Common", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "ab56f1b2542a05bebc4fbccfc4803a38", "Activision - Imagineering, Dan Kitchen, David Lubar", "AK-048-04", "River Raid II (1988) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ab5bf1ef5e463ad1cbb11b6a33797228", "Imagic, Rob Fulop", "720104-1A, 720104-1B, IA3204", "Cosmic Ark (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ab60ea7b707c58d356cad858eb18db43", "", "", "Tazer (John K. Harvey)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ab8d318da4addd39c65b7f9c408df2a6", "", "", "Star Trek (Genesis)", "Genesis controller (B is phaser, C is warp)", "Hack of Star Trek", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "YES", "" }, + { "abb740bea0a6842831b4f53112fb8145", "", "", "Qb (V1.01) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "abb741c83f665d73c86d90a7d9292a9b", "Telegames", "", "Space Attack (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "abc64037ca5d5b04ae8a7eedbca3ed74", "", "", "Green and Yellow Number 1 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "abe40542e4ff2d1c51aa2bb033f09984", "Absolute Entertainment, David Crane", "EAZ-042-04B, EAZ-042-04I", "Skate Boardin' (1987) (Absolute) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ac05c0e53a5e7009ddd75ed4b99949fc", "Atari, Joe Decuir, Steve Mayer, Larry Wagner - Sears", "CX2601 - 99801, 6-99801, 49-75124", "Combat (1977) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ac0ddbcff34d064009591607746e33b8", "Thomas Jentzsch", "", "Atlantis FH (2003) (TJ) (Hack)", "Hack of Atlantis", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ac26d7d37248d1d8eac5eccacdbef8db", "", "", "Snail Against Squirrel (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ac3dd22dd945724be705ddd2785487c2", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (06-15-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ac53b83e1b57a601eeae9d3ce1b4a458", "Retroactive", "", "Qb (2.15) (Retroactive) (NTSC)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ac5f78bae0638cf3f2a0c8d07eb4df69", "", "", "Minesweeper (V.99) (Soren Gust) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ac7c2260378975614192ca2bc3d20e0b", "Activision, David Crane", "AG-930-04, AZ-030", "Decathlon (1983) (Activision)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ac9adbd6de786a242e19d4bec527982b", "Activision, Alan Miller - Ariola", "EAG-012-04I, EAX-012, EAX-012-04B - 711 012-720", "Ice Hockey (1981) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "aca09ffea77174b148b96b205109db4d", "Activision, Alan Miller", "AG-007, CAG-007", "Tennis (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "acaa27d214039d89d7031609aafa55c3", "", "", "Sprite Demo 6 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "acb6787b938079f4e74313a905ec3ceb", "", "", "Chronocolor Donkey Kong (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "acb7750b4d0c4bd34969802a7deb2990", "Parker Brothers, Ed Temple", "PB5310", "Amidar (1982) (Parker Bros)", "", "Uncommon", "", "", "", "A", "A", "", "", "", "", "", "", "", "", "", "", "" }, + { "acb962473185d7a652f90ed6591ae13b", "Imagic, Dennis Koble", "IA3203, IX-010-04", "Atlantis (1982) (Imagic) (16K)", "AKA Lost City of Atlantis", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ace319dc4f76548659876741a6690d57", "Atari, Steve Wright", "CX2616", "Pele's Soccer (1981) (Atari)", "AKA Pele's Championship Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ad2e6bfb3b9b9b36ba8bf493ce764c49", "", "", "2600 Collison Demo 1 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ad42e3ca3144e2159e26be123471bffc", "Atari", "CX26163P", "Human Cannonball (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ad7e97c19bd25d5aa3999430845c755b", "", "", "Sprite Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ad8072675109d13fdd31a2e0403d5cff", "Funvision - Fund. International Co.", "", "Tank City (Funvision)", "AKA Thunderground", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "adb770ff70e9adf08bbb907a7eccd240", "", "", "Inv Demo 3 (2001) (Erik Mooney) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "adb79f9ac1a633cdd44954e2eac14774", "Digivision", "", "Frostbite (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "adf1afac3bdd7b36d2eda5949f1a0fa3", "Quelle - Otto Versand", "495.463 2 - 746381", "Angriff der Luftflotten (1983) (Quelle) (PAL)", "AKA Paris Attack, M.A.D.", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "adfbd2e8a38f96e03751717f7422851d", "Champ Games", "CG-01-N", "Lady Bug (NTSC)", "", "Homebrew", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ae047e9468bda961d8e9e9d8ff52980f", "", "", "Tunnel Demo (Red Spiral) (30-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ae0d4f3396cb49de0fabdff03cb2756f", "Retroactive", "", "Qb (V2.02) (PAL) (2001) (Retroactive)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ae10527840a1ac24de43730645ed508d", "Charles Morgan", "", "Planet Invaders (Charles Morgan) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ae18c11e4d7ed2437f0bf5d167c0e96c", "", "", "Multi-Color Demo 3 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ae2f1f69bb38355395c1c75c81acc644", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (12-23-1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ae465044dfba287d344ba468820995d7", "", "", "Inca Gold (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ae4be3a36b285c1a1dff202157e2155d", "Spectravideo", "SA-210", "Master Builder (1983) (Spectravideo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ae682886058cd6981c4b8e93e7b019cf", "Retroactive", "", "Qb (V0.12) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ae6cb335470788b94beb5787976e8818", "", "", "Mortal Kurling (02-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ae83541cf4a4c0bce0adccd2c1bf6288", "", "", "Maze 003 Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ae97cf8ed21f4154b4360a3cf6c95c5e", "", "", "Teleterm 2600 (John K. Harvey) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "aeb104f1e7b166bc0cbaca0a968fde51", "", "", "Ms. Pac-Man (1999) (Hack)", "Hack of Ms. Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "aec9b885d0e8b24e871925630884095c", "Amiga - Video Soft", "3125", "Surf's Up (1983) (Amiga) (Prototype)", "Uses the Joyboard controller", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "aed0b7bd64cc384f85fdea33e28daf3b", "Atari, Alan J. Murphy, Robert C. Polaro", "CX2666", "RealSports Volleyball (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "aed82052f7589df05a3f417bb4e45f0c", "Atari, Warren Robinett - Sears", "CX2606 - 6-99825, 49-75112", "Slot Racers (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "af6ab88d3d7c7417db2b3b3c70b0da0a", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "af6f3e9718bccfcd8afb421f96561a34", "Atari, Tod Frye", "CX2695", "Xevious (01-18-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "afb3bc45c6a82739cc82582127cd96e6", "Atari - Sculptured Software, Adam Clayton", "CX26151, CX26151P", "Dungeon (11-22-1985) (Atari) (Prototype)", "Dark Chambers Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "afc194534c1b346609ef05eff6d3cef6", "Jone Yuan Telephonic Enterprise Co", "", "Boxing (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "afd2cf258d51ae4965ee21abba3627ab", "Atari - CCW, Christopher H. Omarzu", "CX26104", "Big Bird's Egg Catch (12-08-1982) (Atari) (Prototype)", "Uses the Keypad Controller", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "", "" }, + { "afe4eefc7d885c277fc0649507fbcd84", "Atari", "CX26163P", "Ant Party (32 in 1) (1988) (Atari) (PAL)", "AKA Cosmic Swarm", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "afe776db50e3378cd6f29c7cdd79104a", "Thomas Jentzsch", "", "Bobby is Going Home (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "23", "245", "", "" }, + { "afe88aae81d99e0947c0cfb687b16251", "Apollo - Games by Apollo", "AP-2006", "Infiltrate (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "aff8cba0f2d2eb239953dd7116894a08", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (3 of 3) (1982) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b00088418fc891f3faa3d4ddde6ace94", "", "", "Unknown Title (bin00007 (200102)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b00a8bc9d7fe7080980a514005cbad13", "K-Tel Vision", "", "Vulture Attack (1982) (K-Tel Vision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b00e8217633e870bf39d948662a52aac", "Konami", "RC 102-X 02", "Marine Wars (1983) (Konami)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b049fc8ac50be7c2f28418817979c637", "Activision - Imagineering, Dan Kitchen, David Lubar", "EAK-048-04, EAK-048-04B", "River Raid II (1988) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b06050f686c6b857d0df1b79fea47bb4", "Activision", "AIZ-001", "Moonsweeper (1988) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b061e98a4c854a672aadefa233236e51", "Atari, Warren Robinett", "CX2620, CX2620P", "Basic Programming (1979) (Atari) (PAL)", "Uses Keypad Controllers", "Common", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, + { "b095009004df341386d22b2a3fae3c81", "", "", "Sub-Scan (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b09b79c9628878be051e89f7f1e77378", "Activision, Larry Kaplan, David Crane - Ariola", "EAG-010, PAG-010 - 711 010-720", "Kaboom! (1981) (Activision) (PAL) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "b0ba51723b9330797985808db598fc31", "Atari, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "b0c47e426c7f799aee2c40422df8f56a", "", "", "Space Treat (PAL) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b0c9cf89a6d4e612524f4fd48b5bb562", "Atari - GCC", "CX2663", "Combat Two (1982) (Atari) (Prototype)", "AKA Super Combat", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b0e1ee07fbc73493eac5651a52f90f00", "Colin Hughes", "", "Tetris 2600 (Colin Hughes)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b12a7f63787a6bb08e683837a8ed3f18", "Imagic, Rob Fulop", "720000-200, 720101-1B, 720101-1C, IA3200, IA3200C, IX-006-04", "Demon Attack (1982) (Imagic) [fixed]", "AKA Death from Above", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b1339c56a9ea63122232fe4328373ac5", "Goliath - Hot Shot", "83-215", "Dream Flight (1983) (Goliath) (PAL)", "AKA Nightmare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "b1486e12de717013376447ac6f7f3a80", "Spectravideo, Mark Turmell, Quelle", "SA-217, SA-217C - 413.723 8", "Gas Hog - Piraten Schiff (1983) (Spectravideo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b15026b43c6758609667468434766dd8", "Retroactive", "", "Qb (0.06) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b16cd9784589219391c839cb68c47b9c", "Video Soft, Jerry Lawson, Dan McElroy", "", "Golf Diagnostic (1983) (Video Soft) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b17b9cc4103844dcda54f77f44acc93a", "Quelle", "377.943 6", "Stopp die Gangster (1983) (Quelle) (PAL)", "AKA Gangster Alley", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b1a6c96e9093352106bc335e96caa154", "Joe Grand", "", "SCSIcide Pre-release 1 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "38", "", "", "" }, + { "b1b20536aef4eed9c79dc5804f077862", "", "", "Euchre (NTSC) (09-11-2001) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b1c14b5ac896400cc91c8e5dd67acb59", "", "", "River Raid (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b1d1e083dc9e7d9a5dc1627869d2ade7", "CCE", "C-1004", "Mario's Bros. (1983) (CCE)", "AKA Mario Bros.", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b1e2d5dc1353af6d56cd2fe7cfe75254", "Atari - Axlon, Steve DeFrisco", "CX26171", "MotoRodeo (1991) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b1fd0b71de9f6eeb5143a97963674cb6", "", "", "Multi-Color Demo 7 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b227175699e372b8fe10ce243ad6dda5", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [a1]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b23ebf427713dd0198b7ef47dbd07ef4", "Jone Yuan Telephonic Enterprise Co", "", "Sky Diver (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b24f6a5820a4b7763a3d547e3e07441d", "CCE", "C-823", "Demon Attack (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b26506fbf411009e5e3f7365f442960e", "Atari, Alan Miller", "CX2642", "Hunt & Score (1978) (Atari) (PAL) (4K)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "b2737034f974535f5c0c6431ab8caf73", "CBS Electronics, Richard K. Balaska Jr., Andy Frank, Stuart Ross", "4L 2520 5000", "Tunnel Runner (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b2761efb8a11fc59b00a3b9d78022ad6", "Atari, Bob Whitehead - Sears", "CX2651 - 99805, 49-75602", "Blackjack (1977) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, + { "b290c2b139344fcff5b312c71b9ac3b2", "Atari", "CX26163P", "UFO (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b29359f7de62fed6e6ad4c948f699df8", "Goliath", "3", "Phantom Tank (1983) (Goliath) (PAL)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b2a6f31636b699aeda900f07152bab6e", "", "", "Space Instigators (Public Release 2) (06-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b2d1e63f7f22864096b7b6c154151d55", "Fabrizio Zavagli", "", "Bounce! (17-03-2003) (Fabrizio Zavagli)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b2d3bcee001cff2bd2d8a21b2cb55109", "Atari - GCC, Mike Feinstein, Kevin Osborn", "CX2691", "Joust (08-09-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b2d5d200f0af8485413fad957828582a", "Atari - Bobco, Robert C. Polaro", "CX26155P", "Sprint Master (1988) (Atari) (PAL)", "AKA Sprint 88, Sprint 2000", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b2f0d7217147160b2f481954cedf814b", "", "", "Marquee Drawer (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b3017e397f74efd53caf8fae0a38e3fe", "Retroactive", "", "Qb (2.12) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b311ab95e85bc0162308390728a7361d", "Parker Brothers - Roklan", "PB5080", "Gyruss (1984) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b31dc989f594764eacfa7931cead0050", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (2 of 3) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b31f178aa0d569cccac7959f84e0a724", "Atari, Jerome Domurat, Steve Woita", "CX2699", "Taz (07-13-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b3203e383b435f7e43f9492893c7469f", "Gameworld", "133-003", "Sssnake (1983) (Gameworld) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b36040a2f9ecafa73d835d804a572dbf", "Digitel", "", "Pac Man (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b37f0fe822b92ca8f5e330bf62d56ea9", "Xonox - K-Tel Software - Beck-Tech, Steve Beck", "6210, 7210, 06003. 99001", "Spike's Peak (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b392964e8b1c9c2bed12246f228011b2", "", "", "Name This Game (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b4030c38a720dd84b84178b6ce1fc749", "M Network - APh Technological Consulting, Kevin Miller", "MT5687", "International Soccer (1982) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b40dea357d41c5408546e4e4d5f27779", "Digivision", "", "Spider Fighter (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b41fdd4a522e1d5a2721840028684ac2", "", "", "Green and Yellow Number 1 Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b42df8d92e3118dc594cecd575f515d7", "Mystique - American Multiple Industries", "1003", "Burning Desire (1982) (Mystique) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b438a6aa9d4b9b8f0b2ddb51323b21e4", "Telegames", "5861 A030", "Bogey Blaster (1988) (Telegames) (PAL)", "AKA Air Raiders", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b451307b8b5e29f1c5f2cf064f6c7227", "", "", "Demo Image Series #6 - Mario (Fixed) (26-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b49331b237c8f11d5f36fe2054a7b92b", "", "", "Condor Attack (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b4a4c87840613f102acb5b3a647d0a67", "", "", "Mobile 48 Sprite Kernel (04-01-2003) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b4daedb43511521db9036d503b3c1b69", "", "", "Sokoban (01-01-2003) (Adam Wozniak) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b4e2fd27d3180f0f4eb1065afc0d7fc9", "Avalon Hill, Jean Baer, Bill 'Rebecca Ann' Heineman, William O. Sheppard", "5002002", "London Blitz (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b4f05e544834d0238a0c263491775edf", "Starpath Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Suicide Mission (Preview) (1982) (Starpath) (PAL)", "AKA Meteoroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b4f31ea8a6cc9f1fd4d5585a87c3b487", "Mystique - American Multiple Industries, Joel H. Martin", "", "Beat 'Em & Eat 'Em (1982) (Mystique) (PAL)", "Uses the Paddle Controller (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, + { "b4f87ce75f7329c18301a2505fe59cd3", "Videospielkassett - Ariola", "PGP232", "Autorennen (Ariola) (PAL)", "AKA Grand Prix", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b50ae55aac93fbed258bc5a873edd2cb", "Recompile", "", "E.T. The Extra-Terrestrial (Recompile) (Hack)", "www.neocomputer.org/projects/et", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b5110f55ed99d5279f18266d001a8cd5", "Eckhard Stolberg", "", "Auto-mobile Demo (2001) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b56264f738b2eb2c8f7cf5a2a75e5fdc", "Atari - GCC, John Allred, Douglas B. Macrae, Betty Ryan Tylko", "CX2694, CX2694P", "Pole Position (1983) (Atari) (PAL)", "AKA RealSports Driving", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b5657d4c1c732fbb6af150668464247f", "Arcadia Corporation, Stephen H. Landrum", "AR-4400", "Excalibur (Dragonstomper Beta) (1982) (Arcadia) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b59417d083b0be2d49a7d93769880a4b", "Pet Boat", "", "Donkey Kong (1983) (Pet Boat) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b59fd465abf76f64c85652ff29d5952d", "VentureVision, Dan Oliver", "", "Innerspace (1983) (VentureVision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b5a1a189601a785bdb2f02a424080412", "Imagic, Dennis Koble", "720021-1A, IA3410", "Shootin' Gallery (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b5cb9cf6e668ea3f4cc2be00ea70ec3c", "CommaVid, Irwin Gaines - Ariola", "CM-005 - 712 005-720", "Mines of Minos (1982) (CommaVid) (PAL)", "AKA Im Labyrinth des Roboters", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b5cdbab514ea726a14383cff6db40e26", "Video Gems", "VG-04", "Mission Survive (1983) (Video Gems) (PAL) [a]", "", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b5efe0271d2214e4d5dc798881486884", "Atari - Axlon, Steve DeFrisco", "CX26192", "Klax (06-14-1990) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b6166f15720fdf192932f1f76df5b65d", "Amiga - Video Soft", "3130", "Off Your Rocker (1983) (Amiga) (Prototype)", "Uses the Amiga Joyboard", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b64426e787f04ff23ee629182c168603", "Dynacom", "", "Plaque Attack (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b65d4a38d6047735824ee99684f3515e", "Dynacom", "", "MegaBoy (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b676a9b7094e0345a76ef027091d916b", "Thomas Jentzsch", "", "Mission Survive (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "A", "", "", "", "", "", "", "", "", "220", "YES", "" }, + { "b6812eaf87127f043e78f91f2028f9f4", "Simage", "", "Eli's Ladder (1984) (Simage)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b6821ac51c4c1dcb283f01be2f047dc1", "", "", "Rubik's Cube 3D Demo (25-11-2002) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b6960be26bee87d53ba4e2e71cfe772f", "", "", "3-D Corridor (Spiral Words) (31-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b6d52a0cf53ad4216feb04147301f87d", "Imagic, Michael Greene", "720055-1A, IA3312", "No Escape! (1983) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b6e40bce550672e5495a8cdde7075b8b", "Arcadia Corporation, Steve Mundry, Scott Nelson", "AR-4401", "Survival Island (1 of 3) (1983) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b702641d698c60bcdc922dbd8c9dd49c", "Atari, Ian Shepard", "CX26163P", "Space War (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b719ada17771a8d206c7976553825139", "Ron Corcoran", "", "DUP Space Invaders (Ron Corcoran) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b731d35e4ac6b3b47eba5dd0991f452f", "", "", "Rubik's Cube 3D Demo (Final) (08-01-2003) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b7345220a0c587f3b0c47af33ebe533c", "Quelle", "176.433 1", "Landungskommando (1983) (Quelle) (PAL)", "AKA Strategy X", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b76fbadc8ffb1f83e2ca08b6fb4d6c9f", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b77468d586957d1b7fb4cccda2684f47", "Atari", "CX26163P", "Boxing (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b7903268e235310dc346a164af4c7022", "Thomas Jentzsch", "", "Cat Trax (Thomas Jentzsch) (PAL60)", "NTSC Conversion", "Hack", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "30", "", "YES", "" }, + { "b79fe32320388a197ac3a0b932cc2189", "Imagic, Bob Smith", "13207, EIZ-001-04I", "Moonsweeper (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b7a7e34e304e4b7bc565ec01ba33ea27", "Parker Brothers", "PB5820", "Mr. Do!'s Castle (1984) (Parker Bros) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b7b1d3ce07e75976c43a2dca3866237e", "Atari", "CX26163P", "Freeway Chicken (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b7e459d5416eeb196aaa8e092db14463", "", "", "Push (V0.02) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b7f184013991823fc02a6557341d2a7a", "", "", "Blue Rod Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b80d50ecee73919a507498d0a4d922ae", "20th Century Fox Video Games - Sirius Software, David Lubar", "11008", "Fantastic Voyage (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b816296311019ab69a21cb9e9e235d12", "Atari, Bob Whitehead - Sears", "CX2652 - 6-99816, 49-75151", "Casino (1979) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, + { "b822fba8b7c8a97ea4e92aeb2c455ef9", "Dactari", "", "Freeway (Dactari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b83579c4450fcbdf2b108903731fa734", "", "", "Mission 3,000 A.D. (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b83df1f32b4539c324bdf94851b4db55", "Angelino", "", "One On One by Angelino (Basketball Hack)", "Hack of Basketball (1978) (Atari)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b86552198f52cfce721bafb496363099", "Apollo, Tim Martin", "AP-2007", "Kyphus (1982) (Apollo) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b86a12e53ab107b6caedd4e0272aa034", "Funvision - Fund. International Co.", "", "Treasure Hunting (Funvision)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b879e13fd99382e09bcaf1d87ad84add", "Zellers", "", "Time Warp (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b8865f05676e64f3bec72b9defdacfa7", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b897f9e3f939b9f21566d56db812a84e", "Atari, Jim Huether", "CX26163P", "Flag Capture (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b8ed78afdb1e6cfe44ef6e3428789d5f", "Data Age, J. Ray Dettling", "112-007", "Bermuda Triangle (1983) (Data Age)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b9232c1de494875efe1858fc8390616d", "Panda", "110", "Harbor Escape (1983) (Panda)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b9336ed6d94a5cc81a16483b0a946a73", "Atari, Jerome Domurat, Michael Sierchio", "CX2667, CX2667P", "RealSports Soccer (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "b958d5fd9574c5cf9ece4b9421c28ecd", "Piero Cavina", "", "Multi-Sprite Game V1.0 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b95a6274ca0e0c773bfdc06b4c3daa42", "Paul Slocum", "", "3-D Corridor (29-03-2003) (Paul Slocum)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b98cc2c6f7a0f05176f74f0f62c45488", "Spectravideo", "SV-010", "CompuMate (1983) (Spectravideo)", "", "", "", "", "CM", "", "", "", "", "COMPUMATE", "COMPUMATE", "", "", "", "", "", "YES", "" }, + { "b9b4612358a0b2c1b4d66bb146767306", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "23", "245", "", "" }, + { "b9d1e3be30b131324482345959aed5e5", "Activision, Rex Bradford", "", "Kabobber (07-25-1983) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b9f6fa399b8cd386c235983ec45e4355", "Parker Brothers, John Emerson", "931511", "Action Force (1983) (Parker Bros) (PAL)", "AKA G.I. Joe - Cobra Strike", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 55", "", "", "", "", "" }, + { "b9f9c0fed0db08c34346317f3957a945", "SuperVision", "405, 427, 806, 808, 813, 816", "Chopper Command (SuperVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ba257438f8a78862a9e014d831143690", "U.S. Games Corporation - JWDA, Todd Marshall, Robin McDaniel, Henry Will IV", "VC2002", "Squeeze Box (1983) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ba317f83cdfcd58cbc65aac1ccb87bc5", "", "", "Jammed (2001) (XYPE) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ba3a17efd26db8b4f09c0cf7afdf84d1", "Activision, Larry Miller", "AX-021", "Spider Fighter (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "ba3b0eebccc7b791107de5b4abb671b4", "", "", "Thrust (V0.9) (2000) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ba657d940a11e807ff314bba2c8b389b", "Activision, John Van Ryzin", "AG-038-04", "Cosmic Commuter (1984) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bac28d06dfc03d3d2f4a7c13383e84ee", "Supergame", "", "Demon Attack (Supergame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bae1a23f9b6acdadf465cfb330ba0acb", "Atari - GCC, Doug Macrae", "CX2677", "Dig Dug (1983) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bae66907c3200bc63592efe5a9a69dbb", "Spectravision - Spectravideo - Quelle", "SA-201 - 412.783 3", "Gangster Alley (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "baf4ce885aa281fd31711da9b9795485", "Atari, Douglas Neubauer", "CX26176", "Radar Lock (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bb07f917611cde42b7d83746ee27147d", "", "", "Star Fire - Warping!! (13-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bb18189021d58362d9e4d317cd2e28b7", "Activision, David Crane - Ariola", "EAG-001, PAG-001, EAG-001-04B, EAG-001-04I - 711 001-715", "Dragster (1980) (Activision) (PAL) (4K)", "AKA Dragster Rennen", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bb5049e4558daade0f87fed69a244c59", "Atari, Brad Stewart", "CX2649, CX2649P", "Asteroids (1981) (Atari) (PAL) [no copyright]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "bb579404924c40ca378b4aff6ccf302d", "", "", "Lightbulb Lightens, The (PD) (Non Functional)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bb6a5a2f7b67bee5d1f237f62f1e643f", "", "", "Demo Image Series #5 - Animegirl (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bb745c893999b0efc96ea9029e3c62ca", "Play Video", "", "Planet Patrol (1982) (Play Video) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bb756aa98b847dddc8fc170bc79f92b2", "", "", "Golf (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bb9f06b288b5275bc0d38b6731b2526a", "", "", "Star Fire - Meteor Dance 2 (18-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bbf8c7c9ed280151934aabe138e41ba7", "Amiga", "1130", "Power Play Arcade Video Game Album V (1984) (Amiga) (Prototype)", "Mogul Maniac, Surf's Up, Off Your Rocker, S.A.C. Alert", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bc3057a35319aae3a5cd87a203736abe", "CCE", "C-845", "Time Warp (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bc33c685e6ffced83abe7a43f30df7f9", "Dynacom", "", "Seaquest (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bc4cf38a4bee45752dc466c98ed7ad09", "Atari, Douglas Neubauer, Mimi Nyden", "CX26136", "Solaris (1986) (Atari) (PAL)", "AKA Universe, Star Raiders II, The Last Starfighter", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bc526185ad324241782dc68ba5d0540b", "", "", "Dodge Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bc5389839857612cfabeb810ba7effdc", "Atari, Tod Frye", "CX2671", "SwordQuest - WaterWorld (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bc6432cbed32c695658514c4eb41d905", "Manuel Polik", "", "Star Fire (MP) (2002) (PD)", "Won't work with Stella < V1.2", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bc703ea6afb20bc089f04d8c9d79a2bd", "", "", "Gunfight 2600 - Not mergeable with Colbert wizardry... (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bc97d544f1d4834cc72bcc92a37b8c1b", "", "", "Sky Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bcb31f22856b0028c00d12f0e4c0a952", "Canal 3 - Intellivision", "", "Thunderground (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bccb4e2cfad5efc93f6d55dc992118ce", "Activision, Carol Shaw", "AX-020, AX-020-04", "River Raid (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bce4c291d0007f16997faa5c4db0a6b8", "Quelle", "292.651 7", "Weltraumtunnel (1983) (Quelle) (PAL)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bce93984b920e9b56cf24064f740fe78", "Atari", "CX26163P", "Checkers (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bcef7880828a391cf6b50d5a6dcef719", "Rainbow Vision - Suntek", "SS-009", "Bermuda, The (Rainbow Vision) (PAL)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bd1bd6f6b928df17a702def0302f46f4", "", "", "Binary To Decimal Routine (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bd39598f067a1193ae81bd6182e756d1", "Telegames", "", "Night Stalker (1988) (Telegames) (PAL)", "AKA Dark Cavern", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bd430c2193045c68d1a20a018a976248", "", "", "Pac Ghost Sprite Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bda1463e02ae3a6e1107ffe1b572efd2", "Atari, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bdb4b584ddc90c9d2ec7e21632a236b6", "Atari Freak 1", "", "Nitemare at Sunshine Bowl-a-Rama (Atari Freak 1) (Hack)", "Hack of Pac-Man Jr.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bdbaeff1f7132358ea64c7be9e46c1ac", "20th Century Fox Video Games, Douglas 'Dallas North' Neubauer", "11105", "Mega Force (1982) (20th Century Fox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bdc381baf7c252c63739c5e9ed087a5c", "", "", "Vertical Ship Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bdecc81f740200780db04a107c3a1eba", "Quelle", "874.254 6", "Super-Cowboy beim Rodeo (1983) (Quelle) (PAL)", "AKA Stampede", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bdf1996e2dd64baf8eff5511811ca6ca", "Tron", "", "H.E.R.O. (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "be060a704803446c02e6f039ab12eb91", "Parker Brothers, Rex Bradford, Sam Kjellman", "931501", "Star Wars - The Empire Strikes Back (1982) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "be1922bd8e09d74da471287e1e968653", "Cropsy", "", "Hangman Pacman Demo (Cropsy) (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "be2870a0120fd28d25284e9ccdcbdc99", "", "", "Tomb Raider 2600 [REV 01] (Montezuma's Revenge Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "be35d8b37bbc03848a5f020662a99909", "Atari, Joe Decuir, Steve Mayer, Larry Wagner - Sears", "CX2601 - 99801, 6-99801, 49-75124", "Combat (1977) (Atari) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "be3f0e827e2f748819dac2a22d6ac823", "Puzzy - Bit Corporation", "PG202", "Space Tunnel (1982) (Puzzy)", "AKA Cosmic Corridor, Le Tunnel de L'Estace", "", "", "", "", "", "", "", "", "", "", "", "", "", "34", "215", "", "" }, + { "be41463cd918daef107d249f8cde3409", "", "", "Berzerk (Voice Enhanced) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "be561b286b6432cac71bccbae68002f7", "", "", "Counter Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "be929419902e21bd7830a7a7d746195d", "Activision, Garry Kitchen", "AX-025, AX-025-04", "Keystone Kapers (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "becd908f9d7bb361982c3dc02d6475c6", "Kyle Pittman", "", "THX-1138 (Kyle Pittman) (Hack)", "Hack of Berserk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bedfbde71fb606601f936b5b057f26f7", "Activision, Garry Kitchen - Ariola", "EAX-025, EAX-025-04I - 711 025-725", "Keystone Kapers (1983) (Activision) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "befce0de2012b24fd6cb8b53c17c8271", "", "", "Push (V0.03) (No Illegal Opcodes) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bf52327c2197d9d2c4544be053caded1", "HES", "AG-930-04, AZ-030", "Decathlon (HES) (PAL) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bf5e2079586cb307bf5eb2413e2e61af", "", "", "Star Fire - 1LK Intro (13-11-2002) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bf84f528de44225dd733c0e6a8e400a0", "CCE", "", "Demons to Diamonds (CCE)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 57", "", "", "", "", "" }, + { "bf976cf80bcf52c5f164c1d45f2b316b", "Atari, Tod Frye, Mimi Nyden", "CX2657", "SwordQuest - FireWorld (1982) (Atari) (PAL)", "AKA Adventure II, SwordQuest II - FireWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bf9ddc5dd9056633d4ac0dac8b871dfe", "", "", "Star Fire - Cockpit View (10-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bfa58198c6b9cd8062ee76a2b38e9b33", "", "", "20 Sprites at Once Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bfb73aabb2489316cd5882c3cd11d9f9", "AtariAge, Chris Walton & Thomas Jentzsch", "165", "Star Castle Arcade (2014) (AtariAge)", "", "Homebrew", "", "", "", "", "", "", "", "", "SAVEKEY", "", "", "", "30", "", "YES", "" }, + { "bfcabc6995ef42d0b6c06786993dc4d6", "", "", "Star Fire - Creating a Universe (09-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bff8f8f53a8aeb1ee804004ccbb08313", "", "", "Droid Demo 22 (David Conrad Schweinsberg) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bffe34516aaa3cbf5d307eab382a7e95", "", "", "Euchre (Release Candidate) (PAL) (28-09-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c00734a2233ef683d9b6e622ac97a5c8", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26133", "A-Team, The (03-30-1984) (Atari) (Prototype)", "AKA Saboteur", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c00b65d1bae0aef6a1b5652c9c2156a1", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "AUTO 60", "", "", "", "", "" }, + { "c02e1afa0671e438fd526055c556d231", "Atari", "", "A-Team (Atari) (Prototype) (PAL60)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "c032c2bd7017fdfbba9a105ec50f800e", "Activision, Charlie Heath", "", "Thwocker (04-09-1984) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c033dc1d7b6fde41b9cadce9638909bb", "", "", "Skeleton (V1.1) (06-09-2002) (Eric Ball)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c0589bb73858924389077fa3c2e9441a", "SOLID Corp. (D. Scott Williamson)", "CX2655-014", "Star Castle 2600 (SolidCorp) [014]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c05f367fa4767ceb27abadf0066df7f4", "", "", "TomInv (31-07-2001) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c08d0cee43077d3055febb00e5745c1d", "HES - Activision", "", "Super Hit Pak - River Raid, Sky Jinks, Grand Prix, Fishing Derby, Checkers (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c0a68837c60e15d1fc5a40c9a62894bc", "Arcadia Corporation, Kevin Norman", "7 AR-4103", "Killer Satellites (1983) (Arcadia) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c0d2434348de72fa6edcc6d8e40f28d7", "Sega - Beck-Tech, Steve Beck", "010-01", "Tapper (1984) (Sega)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "225", "", "" }, + { "c118854d670289a8b5d5156aa74b0c49", "Jone Yuan Telephonic Enterprise Co", "", "Skiing (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c126656df6badfa519cc63e681fb3596", "Ron Corcoran", "", "Space Invaders (2002) (Ron Corcoran) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c150c76cbde2c9b5a97eb5399d46c64f", "", "", "Unknown Title (xxx00000 (200203)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c16c79aad6272baffb8aae9a7fff0864", "U.S. Games Corporation - JWDA, Sylvia Day, Todd Marshall, Robin McDaniel, Henry Will IV", "VC2001", "Gopher (1982) (U.S. Games)", "AKA Gopher Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c16fbfdbfdf5590cc8179e4b0f5f5aeb", "", "", "Wall Break (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c17bdc7d14a36e10837d039f43ee5fa3", "Spectravision - Spectravideo", "SA-203", "Cross Force (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c1a83f44137ea914b495fc6ac036c493", "Atari, Carla Meninsky", "CX2660", "Star Raiders (1982) (Atari) (PAL)", "Uses Joystick (left) and Keypad (right) Controllers", "", "", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "" }, + { "c1b038ce5cb6d85e956c5509b0e0d0d8", "", "", "Rotating Colors Demo 2 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c1b1049b88bcd98437d8872d1d62ba31", "", "", "Demo Image Series #4 - Donald (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c1b7aeabc3ec41556d924c8372a9ba5b", "Atari, Robert C. Polaro", "", "Dukes of Hazard (1980) (Atari) (Prototype)", "AKA Stunt Cycle", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c1cb228470a87beb5f36e90ac745da26", "Activision, Bob Whitehead", "AX-015, AX-015-04", "Chopper Command (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c1e6e4e7ef5f146388a090f1c469a2fa", "Bomb - Onbase", "CA283", "Z-Tack (1983) (Bomb)", "AKA Base Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c1f209d80f0624dada5866ce05dd3399", "Telegames", "", "Deadly Discs (1988) (Telegames) (PAL)", "AKA TRON - Deadly Discs", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c1fdd44efda916414be3527a47752c75", "Parker Brothers, John Emerson", "PB5920", "G.I. Joe - Cobra Strike (1983) (Parker Bros)", "Uses the Paddle (left) and Joystick (right) Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, + { "c20f15282a1aa8724d70c117e5c9709e", "Video Gems", "VG-02", "Surfer's Paradise (1983) (Video Gems) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c21450c21efb7715746e9fa87ad6f145", "Hozer Video Games", "", "Gunfight 2600 - It could've been soooo cool, but... (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c216b91f5db21a093ded6a5aaec85709", "Jone Yuan Telephonic Enterprise Co", "", "Dragster (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, + { "c221607529cabc93450ef25dbac6e8d2", "Eckhard Stolberg", "", "Color Test (26-09-2002) (Eckhard Stolberg)", "", "Homebrew", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "", "" }, + { "c225379e7c4fb6f886ef9c8c522275b4", "Video Mania", "", "Frostbite (1983) (Video Mania)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c225abfb584960efe1f359fc94b73379", "", "", "Joustpong (21-09-2002) (Kirk Israel) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c2410d03820e0ff0a449fa6170f51211", "", "", "Pac-Man (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c246e05b52f68ab2e9aee40f278cd158", "Thomas Jentzsch", "", "Star Wars - Ewok Adventure (Thomas Jentzsch) (Prototype)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, + { "c2778507b83d9540e9be5713758ff945", "", "", "Island Flyer Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c28b29764c2338b0cf95537cc9aad8c9", "", "", "Multi-Color Demo 4 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c29d17eef6b0784db4586c12cb5fd454", "Jone Yuan Telephonic Enterprise Co", "", "River Raid (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c29f8db680990cb45ef7fef6ab57a2c2", "Parker Brothers, Mike Brodie - Roklan, Paul Crowley", "PB5320", "Super Cobra (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c2a37f1c7603c5fd97df47d6c562abfa", "Roger Williams", "", "Bar-Score Demo (2001) (Roger Williams)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c2b5c50ccb59816867036d7cf730bf75", "Salu - Avantgarde Software, Michael Buetepage", "460741", "Ghostbusters II (1992) (Salu) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c2bcd8f2378c3779067f3a551f662bb7", "Activision, Bob Whitehead - Ariola", "EAG-002, EAG-002-04I, PAG-002 - 711 002-715", "Boxing (1980) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c2c7a11717e255593e54d0acaf653ee5", "", "", "Chopper Command (208 in 1) (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c2fbef02b6eea37d8df3e91107f89950", "Champ Games", "CG-02-N", "Conquest Of Mars (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c31a17942d162b80962cb1f7571cd1d5", "Home Vision - Gem International Corp. - VDI", "VCS83112", "Sky Alien (1983) (Home Vision) (PAL)", "AKA Sky Aliem", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c3205e3707f646e1a106e09c5c49c1bf", "", "", "Unknown Title (bin00003 (200206)) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c3472fa98c3b452fa2fd37d1c219fb6f", "Atari, Carla Meninsky - Sears", "CX2637 - 49-75158", "Dodge 'Em (1980) (Atari) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c370c3268ad95b3266d6e36ff23d1f0c", "Atari, Alan Miller", "CX2641, CX2641P", "Surround (1977) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c3a9550f6345f4c25b372c42dc865703", "Atari - Bobco, Robert C. Polaro", "CX2663", "Road Runner (1989) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c3aeb796fdaf9429e8cd6af6346f337e", "", "", "If It's Not One Thing It's Another (1997) (Chris Cracknell)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c3bbc673acf2701b5275e85d9372facf", "Atari, Robert C. Polaro", "CX26157", "Stunt Cycle (07-21-1980) (Atari) (Prototype)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c3e4aa718f46291311f1cce53e6ccd79", "", "", "Hangman Ghost 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c3ef5c4653212088eda54dc91d787870", "Activision, Bob Whitehead", "AG-002, CAG-002, AG-002-04", "Boxing (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c3f53993ade534b0982ca3a286c85bb5", "", "", "Full Screen Bitmap Drawing System (12-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c4060a31d61ba857e756430a0a15ed2e", "Thomas Jentzsch", "", "Pick 'n Pile (2003) (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "YES", "" }, + { "c41e7735f6701dd50e84ee71d3ed1d8f", "Dynacom", "", "Spider Fighter (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c43bd363e1f128e73ba5f0380b6fd7e3", "Atari, Chris Crawford", "", "Wizard (1980) (Atari) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c446288fe62c0c2737639fd788ae4a21", "", "", "Mark's Sound Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c450a285daa7a3b65188c2c3cf04fb3e", "Wizard Video Games", "007", "Halloween (1983) (Wizard Video Games) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c469151655e333793472777052013f4f", "", "", "Base Attack (Unknown) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c471b97446a85304bbac021c57c2cb49", "First Star Software, Alex Leavens, Shirley Ann Russell", "", "Boing! (1983) (First Star Software) (PAL)", "AKA Bubbles, Soap Suds, The Emphysema Game", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c47244f5557ae12c61e8e01c140e2173", "Atari - GCC, Mike Feinstein, John Allred", "CX2688, CX2688P", "Jungle Hunt (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c473b222b7c5308d0773326416094272", "", "", "Star Fire (28-11-2002) (MP) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c47b7389e76974fd0de3f088fea35576", "Funvision - Fund. International Co.", "", "Mighty Mouse (Funvision)", "AKA Gopher", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c482f8eebd45e0b8d479d9b71dd72bb8", "Retroactive", "", "Push (V0.03) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c49fe437800ad7fd9302f3a90a38fb7d", "Atari, Dan Hitchens, Mimi Nyden", "CX2697, CX2697P", "Mario Bros. (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c4b73c35bc2f54b66cd786f55b668a82", "Arcadia Corporation, Stephen Harland Landrum", "AR-4101", "Communist Mutants from Space (1982) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c4bbbb0c8fe203cbd3be2e318e55bcc0", "", "", "Atlantis (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c4bc8c2e130d76346ebf8eb544991b46", "Imagic", "", "Imagic Selector ROM (1982) (Imagic) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c4d888bcf532e7c9c5fdeafbb145266a", "", "", "Space Robot (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c504a71c411a601d1fc3173369cfdca4", "Retroactive", "", "Qb (V2.02) (Stella) (2001) (Retroactive)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c5124e7d7a8c768e5a18bde8b54aeb1d", "Imagic, Rob Fulop", "720104-2A, IA3204P, EIX-008-04I", "Cosmic Ark (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c517144e3d3ac5c06f2f682ebf212dd7", "Tigervision - Teldec", "7-008 - 3.60006 VG", "Miner 2049er (1983) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c529e63013698064149b9e0468afd941", "", "", "S.I.PLIX 2 (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "c52d9bbdc5530e1ef8e8ba7be692b01e", "Atari, Robert C. Polaro", "CX26130", "Holey Moley (02-29-1984) (Atari) (Prototype)", "Uses Keypad Controllers", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "c5301f549d0722049bb0add6b10d1e09", "Atari, Carla Meninsky, Ed Riddle - Sears", "CX2611 - 99821, 49-75149", "Indy 500 (1977) (Atari)", "Uses the Driving Controllers", "", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "", "", "", "" }, + { "c5387fc1aa71f11d2fa82459e189a5f0", "Bit Corporation", "PG202", "Space Tunnel (1982) (BitCorp) (PAL)", "AKA Cosmic Corridor, Weltraum-Tunnel", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "c541a5f6fc23b40a211196dd78233780", "Atari, Carla Meninsky - Sears", "CX2660 - 49-75187", "Star Raiders (1981) (Atari) (Prototype)", "Uses Joystick (left) and Keypad (right) Controllers", "Prototype", "", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "" }, + { "c54b4207ce1d4bf72fadbb1a805d4a39", "Billy Eno", "", "Sniper (Feb 30) (2001) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c569e57dca93d3bee115a49923057fd7", "", "", "Pac-Space (Pac-Man Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, + { "c58708c09ccb61625cda9d15ddcd8be6", "SPIKE the Percussionist", "", "NOIZ Invaders (SPIKE) (2002) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c5930d0e8cdae3e037349bfa08e871be", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c59633dbebd926c150fb6d30b0576405", "Telegames", "5861 A030", "Bogey Blaster (1988) (Telegames)", "AKA Air Raiders", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c5a76bafc4676edb76e0126fb9f0fb2d", "Charles Morgan", "", "Zero Patrol (Charles Morgan) (Hack)", "Hack of Moon Patrol", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c5bab953ac13dbb2cba03cd0684fb125", "SpiceWare - Darrell Spice Jr.", "", "Stay Frosty (SpiceWare)", "Part of Stella's Stocking 2007 Xmas compilation", "Homebrew", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c5c7cc66febf2d4e743b4459de7ed868", "Atari, Jerome Domurat, Steve Woita", "CX2696", "Asterix (1983) (Atari) (PAL) [a]", "AKA Taz", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c5d2834bf98e90245e545573eb7e6bbc", "CCE", "", "Snoopy and the Red Baron (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c5dd8399257d8862f3952be75c23e0eb", "Atari - GCC", "CX2680", "RealSports Tennis (1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c5fe45f2734afd47e27ca3b04a90213c", "Atari, Brad Stewart", "CX2622, CX2622P", "Breakout (1978) (Atari) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01", "", "", "", "", "" }, + { "c63a98ca404aa5ee9fcff1de488c3f43", "Atari", "CX26145", "Venture (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c6556e082aac04260596b4045bc122de", "Atari - GCC, Dave Payne", "CX2669", "Vanguard (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c6688781f4ab844852f4e3352772289b", "Atari, Tod Frye", "CX2695", "Xevious (08-02-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c67ff409f28f44883bd5251cea79727d", "", "", "Gunfight 2600 - Music & Bugfixes 1 (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c689148ad9275667924ab334107b517e", "Jone Yuan Telephonic Enterprise Co", "", "Space Raid (Jone Yuan)", "AKA MegaMania", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c68a6bafb667bad2f6d020f879be1d11", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c6ae21caceaad734987cb24243793bd5", "CCE", "", "Frostbite (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c6c63da3bc2e47291f63280e057061d0", "128-in-1 Junior Console", "", "Human Cannonball (128-in-1 Junior Console) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c6cedb25b7d390b580ea8edb614b168b", "", "", "Star Fire - Radar Completed (22-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c6d48c6ae6461e0e82753540a985ac9e", "Ed Federmeyer", "", "Edtris (1994) (Ed Federmeyer)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c6d7fe7a46dc46f962fe8413c6f53fc9", "Parker Brothers, Mark Lesser", "PB5950", "Lord of the Rings (1983) (Parker Bros) (Prototype) [a]", "Journey to Rivendell (The Lord of the Rings I)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c6db733e0b108c2580a1d65211f06dbf", "Atari, Eric Manghise, Mimi Nyden, Joseph Tung", "CX2640", "RealSports Baseball (07-09-1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c738fc3f5aae1e8f86f7249f6c82ac81", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari) (16K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 60", "", "", "", "", "" }, + { "c73ae5ba5a0a3f3ac77f0a9e14770e73", "Starpath Corporation, Stephen H. Landrum", "9 AR-4105", "Official Frogger, The (1983) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "c745487828a1a6a743488ecebc55ad44", "Rainbow Vision - Suntek", "SS-002", "Galactic (Rainbow Vision) (PAL)", "AKA The Challenge of.... Nexar", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c74bfd02c7f1877bbe712c1da5c4c194", "Thomas Jentzsch", "", "River Raid Tanks (Thomas Jentzsch) (Hack)", "Hack of River Raid", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c7600d72247c5dfa1ec1a88d23e6c85e", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (1 of 3) (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, + { "c77c35a6fc3c0f12bf9e8bae48cba54b", "Xonox - K-Tel Software - Action Graphics, John Perkins, David Thiel", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox)", "", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c77d3b47f2293e69419b92522c6f6647", "Panda", "101", "Tank Brigade (1983) (Panda)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c7900a7fe95a47eef3b325072ad2c232", "Larry Petit", "", "Super Congo Bongo (2003) (Larry Petit) (Hack)", "Hack of Bongo", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "34", "", "", "" }, + { "c7d5819b26b480a49eb26aeb63cc831e", "Bit Corporation", "PGP210", "Ice Hockey (4 Game in One Light Green) (1983) (BitCorp) (PAL)", "AKA Hockey, Hockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c7e43ad79c5e5c029d9f5ffde23e32cf", "", "", "PAL-NTSC Detector (15-11-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c7eab66576696e11e3c11ffff92e13cc", "Atari - GCC", "CX2680, CX2680P", "RealSports Tennis (1983) (Atari) (PAL) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c7f13ef38f61ee2367ada94fdcc6d206", "Parker Brothers, Joe Gaucher", "PB5370", "Popeye (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c82ec00335cbb4b74494aecf31608fa1", "CCE", "", "E.T. - The Extra-Terrestrial (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c830f6ae7ee58bcc2a6712fb33e92d55", "Atari, Michael Kosaka, Carla Meninsky", "CX2687", "Tempest (01-05-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c866c995c0d2ca7d017fef0fc0c2e268", "Retroactive", "", "Qb (2.00) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c880c659cdc0f84c4a66bc818f89618e", "Thomas Jentzsch", "", "Open Sesame (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "20", "254", "YES", "" }, + { "c8c7da12f087e8d16d3e6a21b371a5d3", "", "", "Demo Image Series #9 - Genius (28-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c8fa5d69d9e555eb16068ef87b1c9c45", "Atari", "CX26144", "Donkey Kong Junior (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c9196e28367e46f8a55e04c27743148f", "Atari", "CX26163P", "Stampede (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c92cfa54b5d022637fdcbdc1ef640d82", "Retroactive", "", "Qb (V2.05) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "c9b7afad3bfd922e006a6bfc1d4f3fe7", "Atari, Larry Kaplan - Sears", "CX2628 - 6-99842, 49-75117", "Bowling (1979) (Atari)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c9c25fc536de9a7cdc5b9a916c459110", "Activision, Mike Lorenzen", "AX-023", "Oink! (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c9d02d3cfeef8b48fb71cb4520a4aa84", "", "", "Euchre (More for less) (PAL) (22-08-2002) (Erik Eid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c9e721eb29c940c2e743485b044c0a3f", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c9f6e521a49a2d15dac56b6ddb3fb4c7", "Parker Brothers, Rex Bradford", "PB5000", "Star Wars - Jedi Arena (1983) (Parker Bros)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 50", "", "", "", "", "" }, + { "ca09fa7406b7d2aea10d969b6fc90195", "Activision, Matthew L. Hubbard, Bob Whitehead", "AX-024", "Dolphin (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ca4f8c5b4d6fb9d608bb96bc7ebd26c7", "M Network - APh Technological Consulting, Hal Finney, Glenn Hightower, Peter Kaminski - INTV", "MT4317", "Adventures of TRON (1983) (M Network)", "AKA Tron Joystick", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ca50cc4b21b0155255e066fcd6396331", "Suntek", "SS-031", "UFO Patrol (Suntek) (PAL)", "AKA X'Mission", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ca53fc8fd8b3c4a7df89ac86b222eba0", "CCE", "C-812", "Pac Man (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ca54de69f7cdf4d7996e86f347129892", "PlayAround - J.H.M.", "201", "Philly Flasher (1982) (PlayAround)", "Uses the Paddle Controllers, AKA Beat 'Em & Eat 'Em", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 45", "", "", "", "", "" }, + { "ca7aaebd861a9ef47967d31c5a6c4555", "Atari, Bob Whitehead", "CX26163P", "Homerun (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "ca7abc774a2fa95014688bc0849eee47", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (1984) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ca7f166a94eed1a349dec6d6a358bcad", "Activision, Alan Miller - Ariola", "EAG-007, EAG-007-04I, PAG-007 - 711 007-720", "Tennis (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cac9928a84e1001817b223f0cecaa3f2", "Amiga - Video Soft, Jerry Lawson, Dan McElroy", "", "3-D Genesis (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cad982c9b45bc5eff34e4ea982d5f1ca", "", "", "Song (17-02-2003) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cade123747426df69570a2bc871d3baf", "Gakken", "011", "Marine Wars (1983) (Gakken) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cae8f83c06831ec7bb6a3c07e98e9342", "Colin Hughes", "", "Tetris 2600 (Colin Hughes) [o1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cb18d8d5fbdcb1cd7bd36c5423348859", "", "", "RAM-Pong (NTSC) v1.0", "", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, + { "cb24210dc86d92df97b38cf2a51782da", "Video Gems", "VG-01", "Missile Control (1983) (Video Gems) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cb4a7b507372c24f8b9390d22d54a918", "ITT Family Games", "554-37 338", "Peter Penguin (1983) (ITT Family Games) (PAL)", "AKA Frisco (Pumuckl-Serie)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cb8399dc0d409ff1f531ef86b3b34953", "", "", "Demo Image Series #12 - Luigi And Mario (01-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cb9626517b440f099c0b6b27ca65142c", "Atari, Larry Kaplan - Sears", "CX2664 - 6-99818", "Brain Games (1978) (Atari) (4K)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "cb96b0cf90ab7777a2f6f05e8ad3f694", "Silvio Mogno", "", "Rainbow Invaders", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cb9b2e9806a7fbab3d819cfe15f0f05a", "Parker Brothers - JWDA, Todd Marshall, Robin McDaniel, Ray Miller", "931513", "Star Wars - Death Star Battle (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cba56e939252b05df7b7de87307d12ca", "", "", "Playfield Text Demo (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cbad928e10aeee848786cc55394fb692", "", "", "Fu Kung! (V0.06a Cuttle Cart Compatible) (15-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cbb0ee17c1308148823cc6da85bff25c", "", "", "Rotating Colors Demo 1 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cbc373fbcb1653b4c56bfabba33ea50d", "CCE", "", "Super Voleyball (CCE)", "AKA RealSports Volleyball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cbced209dd0575a27212d3eee6aee3bc", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2003", "Racquetball (1982) (Apollo) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cbd981a23c592fb9ab979223bb368cd5", "Atari, Carla Meninsky - Sears", "CX2660 - 49-75187", "Star Raiders (1982) (Atari)", "Uses Joystick (left) and Keypad (right) Controllers", "", "", "", "", "", "", "", "", "", "KEYBOARD", "", "", "", "", "", "", "" }, + { "cbe5a166550a8129a5e6d374901dffad", "Atari, Carla Meninsky - Sears", "CX2610 - 49-75127", "Warlords (1981) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "AUTO 50", "", "", "", "", "" }, + { "cbeafd37f15e0dddb0540dbe15c545a4", "", "", "Black and White Fast Scolling Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cc03c68b8348b62331964d7a3dbec381", "Jone Yuan Telephonic Enterprise Co", "", "Marauder (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cc12581e079cd18330a89902625b8347", "Dave Neuman", "", "Space Battle (PAL)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cc1939e4769d0c157ace326efcfdcf80", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (3 of 4) (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cc2973680c150886cce1ed8693c3aca2", "Quelle", "874.254 6", "Super-Cowboy beim Rodeo (1983) (Quelle) (PAL) (4K)", "AKA Stampede", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cc3d942c6958bd16b1c602623f59e6e1", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cc7138202cd8f6776212ebfc3a820ecc", "Atari - CCW, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (03-30-1983) (Atari) (Prototype)", "Uses the Keypad Controllers", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "cc724ebe74a109e39c0b2784ddc980ca", "Atari, Jerome Domurat, Dave Staugas", "CX2682", "Krull (05-27-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cc74ddb45d7bc4d04c2e6f1907416699", "", "", "Colour Display Programme (1997) (Chris Cracknell)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cca33ae30a58f39e3fc5d80f94dc0362", "", "", "Okie Dokie (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ccb56107ff0492232065b85493daa635", "Bit Corporation", "PG206 [demonstration cartridge]", "Bobby Is Going Home (1983) (BitCorp) (PAL) [demo cart]", "AKA Bobby geht Heim", "", "", "", "", "", "", "", "", "", "", "", "", "", "42", "", "", "" }, + { "ccb5fa954fb76f09caae9a8c66462190", "Answer Software Corporation - TY Associates", "ASC1001", "Malagai (1983) (Answer Software)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ccb807eb79b0ed0f5fdc460445ef703a", "", "", "Superman (Stunt_Cycle_Rules!) (Hack)", "Hack of Superman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ccbd36746ed4525821a8083b0d6d2c2c", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [no copyright]", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cccfe9e9a11b1dad04beba46eefb7351", "", "", "Poker Squares (V0.25) (PAL) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ccd6ce508eee4b3fca67212833edcd85", "Otto Versand", "746422", "Hot Wave (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Ram It", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cd032ab6764b55438a7b0bfb5e78595a", "", "", "Hangman Pac-Man 4letter (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cd139ae6d09f3665ad09eb79da3f9e49", "Eric Mooney", "", "Invaders by Erik Mooney (4-24-97) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cd34b3b3ef9e485201e841ba71beb253", "Bradford W. Mott", "", "Hit HMOVE At Various Cycles After WSYNC Test (Bradford W. Mott) (1998) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cd38ad19f51b1048d8e5e99c86a2a655", "", "", "Demo Image Series #5 - Flag (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cd399bc422992a361ba932cc50f48b65", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (Preview) (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cd3e26786136a4692fd2cb2dfbc1927e", "", "", "Multiple Moving Objects Demo 2 (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cd4423bd9f0763409bae9111f888f7c2", "Jone Yuan Telephonic Enterprise Co", "", "River Raid (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cd4ded1ede63c4dd09f3dd01bda7458c", "Future Video Games", "", "Laser Gate (Future Video Games) (PAL)", "AKA Innerspace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cd568d6acb2f14477ebf7e59fb382292", "Videospielkassette - Ariola", "PGP235", "Fussball (Ariola) (PAL)", "AKA International Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cd5af682685cfecbc25a983e16b9d833", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX26133", "A-Team, The (05-08-1984) (Atari) (Prototype)", "AKA Saboteur", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cd88ef1736497288c4533bcca339f881", "Sega - Teldec", "005-10", "Buck Rogers - Planet of Zoom (1983) (Sega) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "YES", "" }, + { "cd8fa2e9f6255ef3d3b9b5a4f24a54f7", "", "", "Daredevil (V2) (Stunt_Cycle_Rules!) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, + { "cd98be8a48ebf610c9609a688b9c57f2", "Arcadia Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Suicide Mission (1982) (Arcadia) (Prototype)", "AKA Meteoroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cd9fea12051e414a6dfe17052067da8e", "Paul Slocum", "", "Marble Craze Demo (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "cda38714267978b9a8b0b24bee3529ae", "", "", "Space Instigators (V1.6) (17-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cdb81bf33d830ee4ee0606ee99e84dba", "Arcadia Corporation, Scott Nelson", "AR-4300", "Fireball (1982) (Arcadia) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "", "" }, + { "cdc1a5c61d7488eadc9aba36166b253d", "Retroactive", "", "Qb (V0.12) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cddabfd68363a76cd30bee4e8094c646", "Computer Magic - CommaVid, John Bronstein", "CM-001", "MagiCard (1981) (CommaVid)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "ce17325834bf8b0a0d0d8de08478d436", "", "", "Boring Freeway (Hack)", "Hack of Freeway", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ce243747bf34a2de366f846b3f4ca772", "Home Vision - Gem International Corp. - VDI", "", "Jacky Jump (1983) (Home Vision) (PAL)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "ce4bbe11d682c15a490ae15a4a8716cf", "", "", "Okie Dokie (Older) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ce5cc62608be2cd3ed8abd844efb8919", "Atari - Bobco, Robert C. Polaro", "CX2663", "Road Runner (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ce64812eb83c95723b04fb56d816910b", "Retroactive", "", "Qb (V2.04) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ce6c4270f605ad3ce5e82678b0fc71f8", "", "", "Vertical Rainbow Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ce82a675c773ff21e0ffc0a4d1c90a71", "", "", "Defender 2 (Genesis)", "Genesis controller (C is smartbomb)", "Hack of Defender 2", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "ce8467ae2a3a5bc88ca72a2ce44ce28c", "SOLID Corp. (D. Scott Williamson)", "CX2655-015", "Star Castle 2600 (SolidCorp) (PAL) [015]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ce89529d6e98a13ddf3d84827bbdfe68", "", "", "Kung Fu Sprite Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ce904c0ae58d36d085cd506989116b0b", "Telegames", "5687 A279", "International Soccer (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cea9f72036dc6f7af5eff52459066290", "Retroactive", "", "Qb (2.07) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cedbd67d1ff321c996051eec843f8716", "Ultravision", "1044", "Karate (1982) (Ultravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cef01595000627ee50863d4290372c27", "", "", "Many Blue Bars and Text Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cef2287d5fd80216b2200fb2ef1adfa8", "Milton Bradley Company", "4363", "Spitfire Attack (1983) (Milton Bradley)", "AKA Flight Commander)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cf0c593c563c84fdaf0f741adb367445", "Retroactive", "", "Qb (V0.05) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cf3a9ada2692bb42f81192897752b912", "", "", "Air Raiders (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cf3c2725f736d4bcb84ad6f42de62a41", "Rainbow Vision - Suntek", "SS-009", "Bermuda, The (Rainbow Vision) (PAL) [a]", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cf507910d6e74568a68ac949537bccf9", "Sega, Jeff Lorenz", "003-01", "Thunderground (1983) (Sega)", "AKA Underground", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cf63ffac9da89ef09c6c973083061a47", "CCE", "C-859", "MASH (1983) (CCE)", "AKA M.A.S.H", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cf9069f92a43f719974ee712c50cd932", "Video Gems", "VG-04", "Mission Survive (1983) (Video Gems) (PAL)", "", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cfad2b9ca8b8fec7fb1611d656cc765b", "Bit Corporation", "PG207", "Mission 3,000 A.D. (1983) (BitCorp) (PAL) [demo cart]", "demonstration cartridge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cfb3260c603b0341d49ddfc94051ec10", "Dactari - Milmar", "", "Boxing (Dactari - Milmar)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cfb83a3b0513acaf8be4cae1512281dc", "Starpath Corporation", "", "Going-Up (1983) (Starpath) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cfc226d04d7490b69e155abd7741e98c", "Atari, Matthew L. Hubbard", "CX26159", "Double Dunk (1989) (Atari) (PAL)", "AKA Super Basketball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cfce5596a7e8ca13529e9804cad693ef", "Canal 3 - Intellivision", "", "Tennis (Canal 3) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cfd6a8b23d12b0462baf6a05ef347cd8", "Activision, Larry Kaplan", "AX-006", "Bridge (1980) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cfdb4d0427a1ea8085c6bc6eb90259d8", "", "", "Gunfight 2600 - Release Candidate (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cfe2185f84ce8501933beb5c5e1fd053", "", "", "Football (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cfe62ed7125ff9fae99b4c8a367c0399", "Activision, Larry Miller", "AX-026, AX-026-04", "Enduro (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cfee10bd7119f10b136921ced2ee8972", "", "", "Space Instigators (V1.8) (19-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cfef1a2d1f6a5ee7a5e1f43f3056f112", "", "", "Skeleton+ (05-05-2003) (Eric Ball) (NTSC)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cff1e9170bdbc29859b815203edf18fa", "Retroactive", "", "Push (V0.01) (1998) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cff578e5c60de8caecbee7f2c9bbb57b", "George Veeder", "", "Suicide Adventure (George Veeder) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cff9950d4e650094f65f40d179a9882d", "Paul Slocum", "", "Mr. Roboto (Paul Slocum) (Hack)", "Hack of Berzerk", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "cfffc4b97d01cc3e7b9f47575f7b11ec", "Xonox - K-Tel Software, Anthony R. Henderson", "99007, 6240", "Tomarc the Barbarian (1983) (Xonox) (PAL60)", "Genesis controller (B is jump and throw, C switches between players)", "Hack of Tomarc the Barbarian", "", "", "", "", "", "", "", "GENESIS", "", "", "", "PAL60", "", "", "", "" }, + { "d00f6f8ba89559e4b20972a478fc0370", "Spiceware", "SW-01", "Medieval Mayhem (PAL)", "", "Homebrew", "STEREO", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "AUTO 55", "", "", "", "", "" }, + { "d010e3dfe7366e47561c088079a59439", "Retroactive", "", "Qb (V0.10) (Stella) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d026716b3c5be2c951cc4c064317c524", "", "", "Fu Kung! (V0.06) (14-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d0498baca989e792db4b8270a02b9624", "", "", "Pac Ghost Sprite Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d071d2ec86b9d52b585cc0382480b351", "UA Limited", "", "Cat Trax (1983) (UA Limited) (1) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d078674afdf24a4547b4b32890fdc614", "Jone Yuan Telephonic Enterprise Co", "", "Laser Blast (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d078d25873c5b99f78fa267245a2af02", "Sega - Beck-Tech, Steve Beck, Phat Ho", "006-01", "Congo Bongo (1983) (Sega) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "26", "220", "", "" }, + { "d08fccfbebaa531c4a4fa7359393a0a9", "Activision, David Crane", "", "Venetian Blinds Demo (1982) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d090836f0a4ea8db9ac7abb7d6adf61e", "Hozer Video Games", "", "Yahtzee (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d09935802d6760ae58253685ff649268", "Telesys, Don Ruffcorn", "1006", "Demolition Herby (1983) (Telesys)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d09a7504ee8c8717ac3e24d263e7814d", "Activision, Matthew L. Hubbard, Bob Whitehead", "AX-024", "Dolphin (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d09f1830fb316515b90694c45728d702", "Imagic, Brad Stewart", "720105-1A, IA3400", "Fire Fighter (1982) (Imagic)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d0a379946ed77b1b126230ca68461333", "Ataripoll", "", "Atari Invaders (Ataripoll) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d0af33865512e9b6900714c26db5fa23", "Telegames", "", "Armor Ambush (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d0b26e908370683ad99bc6b52137a784", "Apollo - Games by Apollo, Larry Minor, Ernie Runyon, Ed Salvo - RCA Video Jeux", "AP-2004", "Lost Luggage (1982) (Apollo) (PAL)", "AKA La valise piegee", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d0b9df57bfea66378c0418ec68cfe37f", "20th Century Fox Video Games - Sirius, Grady Ward", "11002", "Beany Bopper (1982) (20th Century Fox)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d0b9f705aa5f61f47a748a66009ae2d2", "", "", "Synthcart (14-01-2002) (Paul Slocum)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "YES", "" }, + { "d0cb28e1b7bd6c7f683a0917b59f707e", "Atari, Gary Palmer", "CX2661P", "Fun with Numbers (1980) (Atari) (PAL) (4K)", "AKA Basic Math", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d0cdafcb000b9ae04ac465f17788ad11", "Quelle - Otto Versand", "732.273 8 - 600273, 781644", "Lilly Adventure (1983) (Quelle) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d0e15a3ce322c5af60f07343594392af", "Amiga - Video Soft", "3125", "Surf's Up (1983) (Amiga) (Prototype) (4K)", "Uses the Joyboard controller", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d0e9beb2347595c6c7d158e9d83d2da8", "Retroactive", "", "Qb (2.00) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d100b11be34a1e5b7832b1b53f711497", "", "", "Robotfindskitten2600 (26-04-2003) (Jeremy Penner) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d170317ae4c7d997a989c7d6567c2840", "Jone Yuan Telephonic Enterprise Co", "", "Stampede (Jone Yuan) (4K) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d175258b2973b917a05b46df4e1cf15d", "Suntek", "SS-032", "Walker (Suntek) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "230", "", "" }, + { "d17a671029b1532b197defca5f3649a7", "Hozer Video Games", "", "Gunfight 2600 - Limit broken again! (2001) (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d17a8c440d6be79fae393a4b46661164", "", "", "Warring Worms (Beta 3) (2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d1a1841b7f2007a24439ac248374630a", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (1 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d1a9478b99d6a55e13a9fd4262da7cd4", "U.S. Games Corporation, Garry Kitchen - Vidtec", "VC1001", "Space Jockey (1982) (U.S. Games) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d1b4075925e8d3031a7616d2f02fdd1f", "", "", "Demo Image Series #7 - Two Marios (27-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d1c3520b57c348bc21d543699bc88e7e", "Gameworld", "133-002", "Warplock (1983) (Gameworld) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01", "", "", "", "YES", "" }, + { "d1d704a7146e95709b57b6d4cac3f788", "Atari, Warren Robinett", "CX26163P", "Slot Racers (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d20e61c86ed729780feca162166912ca", "Supergame", "32", "Pitfall (1984) (Supergame)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d223bc6f13358642f02ddacfaf4a90c9", "Rainbow Vision - Suntek", "SS-003", "Pac-Kong (Rainbow Vision) (PAL)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d245e2f27c84016041e9496b66b722fe", "", "", "Gunfight 2600 - The Final Kernel (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d25018349c544320bf3fd5092ee072bc", "Activision, Larry Miller", "AX-021", "Spider Fighter (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "d28afe0517a046265c418181fa9dd9a1", "", "", "Dodge 'Em (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d2901c34bb6496bb96c7bc78a9e6142a", "Greg Zumwalt", "", "Fish Revenge (2003) (Greg Zumwalt) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d2c305a443dfc49e8430964d7c1bd1b7", "", "", "Star Fire - Advice on radar needed (16-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d2c4f8a4a98a905a9deef3ba7380ed64", "Mythicon, Bill Bryner, Bruce de Graaf", "MA1001", "Sorcerer (1983) (Mythicon)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d2c8e6aa8172b16c8aa9aae739ac9c5e", "Activision, David Crane", "08-08-1980", "Laser Blast (08-08-1980) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d2c957dd7746521b51bb09fde25c5774", "Eckhard Stolberg", "", "Cubis (6K) (1997) (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d2d8c4f1ea7f347c8bcc7d24f45aa338", "", "", "20 Sprites at Once Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d2deddb77c8b823e4be9c57cb3c69adc", "Canal 3 - Intellivision", "C 3007", "Snoopy and the Red Baron (Canal 3)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d2f713c78a9ebba9da6d10aeefc6f20f", "Digivision", "", "Enduro (Digivision) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d3171407c3a8bb401a3a62eb578f48fb", "ZiMAG - Emag - Vidco", "GN-080", "Spinning Fireball (1983) (ZiMAG) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d326db524d93fa2897ab69c42d6fb698", "Parker Brothers, Mike Brodie - Roklan, Paul Crowley", "931505", "Super Cobra (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d339b95f273f8c3550dc4daa67a4aa94", "", "", "Laser Blast (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d341d39774277cee6a1d378a013f92ac", "Xonox, John Perkins", "6230, 7210, 06004, 99004", "Artillery Duel (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, + { "d3423d7600879174c038f53e5ebbf9d3", "U.S. Games Corporation - Western Technologies", "VC2005", "Piece o' Cake (1983) (U.S. Games)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 60", "", "", "", "", "" }, + { "d3456b4cf1bd1a7b8fb907af1a80ee15", "Avalon Hill, Duncan Scott", "5003002", "Wall Ball (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d34b933660e29c0a0a04004f15d7e160", "", "", "Multi-Color Demo 5 (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d36308387241e98f813646f346e7f9f7", "King Atari", "", "Ghostbuster 2 (King Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d39e29b03af3c28641084dd1528aae05", "Funvision - Fund. Int'l Co.", "", "Spider Monster (1982) (Funvision) (PAL)", "AKA Spider Kong", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d3bb42228a6cd452c111c1932503cc03", "UA Limited", "", "Funky Fish (1983) (UA Limited) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "YES", "" }, + { "d44d90e7c389165f5034b5844077777f", "Parker Brothers, Larry Gelberg", "PB5065", "Star Wars - Ewok Adventure (1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "d45bf71871b196022829aa3b96bfcfd4", "Activision, Steve Cartwright", "AX-017, AX-017-04", "MegaMania (1982) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d45ebf130ed9070ea8ebd56176e48a38", "Sega, Jeff Lorenz", "001-01", "Tac-Scan (1983) (Sega)", "Uses the Paddle Controllers (right only)", "", "", "", "", "", "", "", "YES", "PADDLES", "", "YES", "AUTO 60", "", "31", "215", "YES", "" }, + { "d47387658ed450db77c3f189b969cc00", "PlayAround - J.H.M.", "206", "Westward Ho (1982) (PlayAround) (PAL)", "AKA Custer's Revenge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d4806775693fcaaa24cf00fc00edcdf3", "Atari - Bobco, Robert C. Polaro", "CX26140, CX26140P", "Desert Falcon (1987) (Atari) (PAL)", "AKA Nile Flyer, Sphinx", "", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "" }, + { "d483f65468d9a265661917bae1a54f3e", "Joe Grand", "", "SCSIcide Pre-release 3 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d4942f4b55313ff269488527d84ce35c", "Atari - GCC, Mark Ackerman, Glenn Parker", "CX2675, CX2675P", "Ms. Pac-Man (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d49aff83f77a1b9041ad7185df3c2277", "", "", "Space Treat (60% complete) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d4aa89e96d2902692f5c45f36903d336", "", "", "Euchre (NTSC) (Erik Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d4c590ccfb611a73b3331359700c01a3", "", "", "Sprite Movement Demo 2 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d541b20eae221a8ee321375e5971e766", "Arcadia Corporation, Stephen H. Landrum", "AR-4101", "Communist Mutants from Space (Preview) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d54cd41ecfd59e4b72d2c086152b9a75", "Amiga", "1110", "Power Play Arcade Video Game Album (1983) (Amiga) (Prototype)", "Ghost Attack, Genesis, Havoc", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d5618464dbdc2981f6aa8b955828eeb4", "CCE", "C-829", "Megamania (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d563ba38151b8204c9f5c9f58e781455", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d573089534ca596e64efef474be7b6bc", "Parker Brothers, John Emerson", "931511", "Action Force (1983) (Parker Bros) (PAL) [a]", "AKA G.I. Joe - Cobra Strike", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 55", "", "", "", "", "" }, + { "d57913088e0c49ac3a716bf9837b284f", "Activision, Garry Kitchen", "EAZ-032", "Pressure Cooker (1983) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d57eb282d7540051bc9b5427cf966f03", "Atari Troll", "", "Custer's Viagra (Atari Troll) (Hack)", "Hack of Custer's Revenge", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d597d35c6022c590d6e75e865738558a", "", "", "Sprite Color Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d5aa7472e7f2cc17e893a1a36f8dadf0", "", "", "Overhead Adventure Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d5c6b81212ad86fd9542a1fedaf57cae", "", "", "Sprite Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d5d2d44fb73785996ccc24ae3a0f5cef", "Robby", "", "Grand Prix (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d5e17022d1ecc20fd9b53dc464c302f1", "Activision, Carol Shaw", "EAX-020", "River Raid (1982) (Activision) (SECAM)", "", "", "", "", "", "", "", "", "", "", "", "", "", "SECAM", "", "", "", "" }, + { "d5e27051512c1e7445a9bf91501bda09", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d5e5b3ec074fff8976017ef121d26129", "Star Game", "003", "River Raid (Star Game)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d5f965c159e26a1fb49a22a47fbd1dd0", "Supergame", "", "River Raid II (Supergame)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d605ed12f4eaaaec3dcd5aa909a4bad7", "", "", "Chronocolor Frame Demo (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d61629bbbe035f45552e31cef7d591b2", "", "", "Atari Logo Demo (PD) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d62283aed0f4199adb2333de4c263e9c", "Atari, Alan J. Murphy, Nick 'Sandy Maiwald' Turner", "CX2615", "Demons to Diamonds (1982) (Atari) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 57", "", "", "", "", "" }, + { "d62d7d1a974c31c5803f96a8c1552510", "", "", "StarMaster (Unknown) (PAL)", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d632b74fea533d593af82cf16e7c5e4a", "", "", "Fu Kung! (V0.13) (01-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d65028524761ef52fbbdebab46f79d0f", "CCE", "", "Galaxian (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d65900fefa7dc18ac3ad99c213e2fa4e", "", "", "Grid and Purple Dot Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d69559f9c9dc6ef528d841bf9d91b275", "Activision, Alan Miller", "AX-016", "StarMaster (1982) (Activision)", "Use Color/BW switch to change between galactic chart and front views", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d6a44277c3eb4f9d039185e0ecf7bfa6", "", "", "Trick (1997) (Eckhard Stolberg)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d6acff6aed0f04690fe4024d58ff4ce3", "Spectravision - Spectravideo - Quelle", "SA-202 - 412.851 8", "Planet Patrol (1982) (Spectravision) (PAL) [different spaceship]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d6b8beeb05e5b730084d4b8f381bbf8d", "", "", "208 in 1 Game Select ROM (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d6d1ddd21e9d17ea5f325fa09305069c", "Funvision - Fund. International Co.", "", "Time Warp (1982) (Funvision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d6d5dd8fd322d3cf874e651e7b6c1657", "", "", "How to Draw a Playfield (1997) (Nick Bensema) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d6dc9b4508da407e2437bfa4de53d1b2", "Bomb - Onbase", "CA283", "Z-Tack (1983) (Bomb) (PAL)", "AKA Base Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d726621c676552afa503b7942af5afa2", "Atari, Bob Whitehead", "CX26163P", "Blackjack (32 in 1) (1988) (Atari) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "63", "", "", "" }, + { "d73ad614f1c2357997c88f37e75b18fe", "Goliath", "7", "Space Tunnel (1983) (Goliath) (PAL)", "AKA Cosmic Corridor", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d74a81fcd89c5cf0bd4c88eb207ebd62", "", "", "Poker Squares (V0.00a) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d763e3a9cdcdd56c715ec826106fab6a", "Activision, David Crane", "AG-001", "Dragster (1980) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "27", "", "", "" }, + { "d7759fa91902edd93f1568a37dc70cdb", "Atari, Robert C. Polaro", "CX26157", "Stunt Cycle (1980) (Atari) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d782543818b6320e4f60d77da2b596de", "Atari", "CX26163P", "Fishing Derby (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d787ec6785b0ccfbd844c7866db9667d", "Retroactive", "", "Qb (V0.04) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d7891b0faa4c7f764482762d0ed427a5", "", "", "Bars and Text Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d79df06894e3c1585a47c2807332b319", "", "", "Star Fire - Explosions! (10-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d7b58303ec8d8c4dbcbf54d3b9734c7e", "", "", "Paddle Demo (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "", "" }, + { "d7dd56677e4ec1e6627419478a4a9668", "", "", "Shadow Keep (Fixed) (04-03-2003) (Andrew Towers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d7f5bf138cfc7feab7b8ef1534c8b477", "", "", "Eric Bergstrom's KC-135 (Radar Map) (Aaron Bergstrom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d816fea559b47f9a672604df06f9d2e3", "Atari, Gary Palmer", "CX26163P", "Fun with Numbers (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d81bb6965e6c99b3be99ffd8978740e4", "", "", "Gunfight 2600 - The Final Kernel Part 3 (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d82675ce67caf16afe5ed6b6fac8aa37", "", "", "Robot City (V0.23) (13-11-2002) (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d8295eff5dcc43360afa87221ea6021f", "Spectravideo", "SA-212", "Mangia' (1983) (Spectravideo) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d82c8a58098a6b46c5b81c16180354d1", "Dennis Debro", "", "Climber 5 (30-10-2002) (Dennis Debro) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d85f1e35c5445ac898746719a3d93f09", "Quelle", "731.503 9", "Tom's Eierjagd (1983) (Quelle) (PAL)", "AKA Play Farm", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d86deb100c6abed1588aa84b2f7b3a98", "Atari, Bob Whitehead - Sears", "CX2625 - 6-99827, 49-75114", "Football (1979) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d88691c995008b9ab61a44bb686b32e4", "", "", "Warring Worms (07-02-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d89fedded0436fdeda7c3c37e2fb7cf1", "", "", "Surround (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d8acaa980cda94b65066568dd04d9eb0", "CCE", "", "Sea Hunt (CCE)", "AKA Skindiver", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d8b2c81cea5af04f795eb3dc6573d72b", "", "", "Tunnel Demo 2 (27-03-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d8df256c0d89e494a9fb3e9abb8e44ac", "Imagic, Michael Greene", "IA3312P", "No Escape! (1982) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d8e4c8e2d210270cd1e0f6d1b4582b91", "Imagic, Mark Klein", "EIZ-003-04I", "Subterranea (1983) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d90205e29bb73a4cdf28ea7662ba0c3c", "Thomas Jentzsch", "", "Boulderdash Demo (Brighter Version) (09-12-2002) (TJ)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d912312349d90e9d41a9db0d5cd3db70", "CCE", "C-818", "Star Voyager (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d9548ad44e67edec202d1b8b325e5adf", "Apollo - Games by Apollo, Dan Oliver - RCA Video Jeux", "AP-2002", "Space Cavern (1982) (Apollo) (PAL)", "AKA Les guerriers de l'espace", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d97e3d0b4575ce0b9a6132e19cfeac6e", "Fabrizio Zavagli", "", "Space Treat (061002) (PD)", "Won't work with Stella < V1.2", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d97fd5e6e1daacd909559a71f189f14b", "M Network, Steve Crandall, Patricia Lewis Du Long", "MT4646", "Rocky & Bullwinkle (04-20-1983) (M Network) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d9ab6b67a17da51e5ad13717e93fa2e2", "", "", "Turbo (Coleco) Prototype Fake v0.1 (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d9b49f0678776e04916fa5478685a819", "Activision, John Van Ryzin - Ariola", "EAZ-036-04, EAZ-036-04B, EAZ-036-04I - 711 036-720", "H.E.R.O. (1984) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d9bd343533b61389b270c0787210943b", "Atari, Douglas 'Solaris' Neubauer", "CX26134", "Last Starfighter (1984) (Atari) (Prototype)", "Genesis controller (C switches to map mode)", "Hack of Last Starfighter (Solaris prototype)", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "d9c9cece2e769c7985494b1403a25721", "SOLID Corp. (D. Scott Williamson)", "CX2655*", "Star Castle 2600 (SolidCorp)", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "d9da2ae7c7894a29b43b3c6b79f3b7a2", "Atari, Rob Fulop", "CX2633, CX2633P", "Night Driver (1980) (Atari) (PAL) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 65", "", "", "", "YES", "" }, + { "d9fbf1113114fb3a3c97550a0689f10f", "ZiMAG - Emag - Vidco", "713-111 - GN-050", "Pizza Chef (1983) (ZiMAG) (Prototype)", "AKA Pizza Time", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "da0fb2a484d0d2d8f79d6e063c94063d", "", "", "Air Raiders (1982) (Unknown) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "da4e3396aa2db3bd667f83a1cb9e4a36", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "da5096000db5fdaa8d02db57d9367998", "Digitel", "", "River Raid (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "da6465a34d2e44d26aa9a2a0cd1bce4d", "Absolute Entertainment, Alex DeMeo", "AG-041-04", "Title Match Pro Wrestling (1987) (Absolute) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "da64f33d0521d5c9958e5d2d4434ff95", "", "", "Star Fire - Return of the Starfield (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "da66d75e4b47fab99733529743f86f4f", "Digitel", "", "Chopper Command (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "da732c57697ad7d7af414998fa527e75", "Atari - Glenn Axworthy", "CX26129", "Midnight Magic (1986) (Atari) (PAL)", "AKA Pinball Wizard", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "da79aad11572c80a96e261e4ac6392d0", "Salu - Ubi Soft, Dennis M. Kiss", "460673", "Pick 'n' Pile (1990) (Salu) (PAL)", "", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "40", "256", "YES", "" }, + { "da7a17dcdaa62d6971393c0a6faf202a", "", "", "Flag Capture (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dab844deed4c752632b5e786b0f47999", "", "", "Super Challenge Baseball (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dac38b4dd3da73bb7b2e9d70c61d2b7c", "", "", "Hangman Monkey Biglist3 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dac5c0fe74531f077c105b396874a9f1", "Atari - GCC", "CX2680", "RealSports Tennis (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dac762e4d01d445bdef20b7771f6570e", "Atari, Carla Meninsky, Ed Riddle - Sears", "CX2611 - 99821, 49-75149", "Indy 500 (1977) (Atari) (4K) [a]", "Uses the Driving Controllers", "", "", "", "", "", "", "", "", "DRIVING", "DRIVING", "", "45", "", "28", "", "", "" }, + { "dad2ab5f66f98674f12c92abcfbf3a20", "", "", "Blue and White Sprite Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "daeb54957875c50198a7e616f9cc8144", "20th Century Fox Video Games, Douglas 'Dallas North' Neubauer", "11005", "Mega Force (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "daef7d8e5a09981c4aa81573d4dbb380", "Adam Thornton", "", "Lord of the Rings (Adam Thornton) (Hack)", "Hack of Dark Mage", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "dafc3945677ccc322ce323d1e9930beb", "Atari", "", "A-Team (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "db1753cc702c18d3917ec7f3b0e8659f", "", "", "Frame Counter 2 (2001) (Jake Patterson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "db339aea2b65b84c7cfe0eeab11e110a", "", "", "Chronocolor Frame Demo 2 (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "db4eb44bc5d652d9192451383d3249fc", "CBS Electronics - E.F. Dreyer - VSS, Ed Salvo", "4L 2738 0000", "Mountain King (1983) (CBS Electronics)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "db5073bd75eb05f7d62a7268396d1e77", "Atari", "CX26163P", "Golf (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "db76f7a0819659d9e585f2cdde9175c7", "Xonox", "99005, 6220, 6250", "Robin Hood (1983) (Xonox) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "db80d8ef9087af4764236f7b5649fa12", "M Network, Steve Crandall, Patricia Lewis Du Long", "MT4646", "Rocky & Bullwinkle (1983) (Mattel) (Prototype) (4K)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "db971b6afc9d243f614ebf380af0ac60", "Gammation, Robert L. Esken Jr.", "", "Gamma-Attack (1983) (Gammation)", "Uses right joystick controller", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "220", "", "" }, + { "dba2692a216cb6c262c78f8b111a813e", "", "", "Star Fire (08-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dba270850ae997969a18ee0001675821", "Greg Troutman", "", "Dark Mage (Greg Troutman) (PD) (4K)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "dbabb80e92ff18d8eecf615c0539151e", "", "", "Sprite Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dbb10b904242fcfb8428f372e00c01af", "Atari, John Dunn", "CX2631, CX2631P", "Superman (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dbc7485ad5814d466de780a3e7ed3b46", "Kyle Pittman", "", "Pink Floyd (Kyle Pittman) (PD)", "Hack of Adventures of Tron (Mattel)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dbc8829ef6f12db8f463e30f60af209f", "Data Age", "DA1001", "Encounter at L-5 (1982) (Data Age)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 50", "", "", "", "", "" }, + { "dbdaf82f4f0c415a94d1030271a9ef44", "CCE", "", "Kaboom! (CCE)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "dbdd21e1ee3d72119e8cd14d943c585b", "", "", "Slot Machine (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dc13df8420ec69841a7c51e41b9fbba5", "Atari, Mimi Nyden, Steve Woita", "CX26132", "Garfield (06-21-1984) (Atari) (Prototype)", "AKA Garfield on the Run", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dc33479d66615a3b09670775de4c2a38", "Suntek", "SS-033", "I.Q. Memory Teaser (Suntek) (PAL)", "AKA IQ 180", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dc6aa0bb21a6e66e80e75ba5edc5c0dd", "", "", "Star Fire - Kernel Done (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dc81c4805bf23959fcf2c649700b82bf", "Imagic, Michael Greene", "720055-2A, IA3312P", "No Escape! (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dc905b22de0f191a029df13eddfcabc4", "Atari, Warren Robinett", "", "Elf Adventure (05-02-83) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dca90ea1084a2fdbe300d7178ca1a138", "Imagic, Dennis Koble", "IA3000P", "Trick Shot (1982) (Imagic) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "dca941dab5c6f859b71883b13ade9744", "", "", "Hangman Pac-Man Biglist2 (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dcba0e33aa4aed67630a4b292386f405", "Retroactive", "", "Qb (V2.08) (Half Speed Version) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "dcc2956c7a39fdbf1e861fc5c595da0d", "M Network - APh Technological Consulting, David Rolfe - INTV", "MT5664", "Frogs and Flies (1982) (M Network)", "AKA Frogs 'n' Flies", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dcec46a98f45b193f07239611eb878c2", "", "", "Bars and Text Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dd08e18cfee87a0e7fc19a684b36e124", "Atari - GCC, Kevin Osborn", "CX2689, CX2689P", "Kangaroo (1983) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dd0cbe5351551a538414fb9e37fc56e8", "Xonox - K-Tel Software - Product Guild, Anthony R. Henderson", "99006, 6220", "Sir Lancelot (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dd0de0f61af2a2a4878e377b880a3933", "SOLID Corp. (D. Scott Williamson)", "CX2655-013", "Star Castle 2600 (SolidCorp) [013]", "http://starcastle2600.blogspot.com/p/star-castle-2600-story.html", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "dd10b5ee37fdbf909423f2998a1f3179", "", "", "Space Instigators (V1.9) (21-10-2002) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dd1422ffd538e2e33b339ebeef4f259d", "Atari, Tod Frye", "", "Red Vs. Blue (1981) (Atari) (Prototype)", "RealSports Football Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dd17711a30ad60109c8beace0d4a76e8", "", "", "Karate (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, + { "dd4f4e0fbd81762533e39e6f5b55bb3a", "", "", "Turbo WIP (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dd7598b8bcb81590428900f71b720efb", "Xonox - K-Tel Software - Computer Magic", "99005, 6220, 6250", "Robin Hood (1983) (Xonox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "dd7884b4f93cab423ac471aa1935e3df", "Atari, Brad Stewart - Sears", "CX2649, 49-75163", "Asteroids (1981) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "dd8a2124d4eda200df715c698a6ea887", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (3 of 3) (1982) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dd92d6ad50976f881d86b52d38616118", "SpkSoft", "", "River Raid (SpkSoft) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dda23757407c4e217f64962c87ad0c82", "Atari Freak 1", "", "Nitemare at Sunshine Bowl-a-Rama (Atari Freak 1) (Hack) [a]", "Hack of Pac-Man Jr.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ddd1efc1862cd3eb3baf4cba81ff5050", "", "", "Max3 (2001) (Maxime Beauvais) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "de0173ed6be9de6fd049803811e5f1a8", "Xonox - K-Tel Software - Product Guild, Anthony R. Henderson", "99008, 6240", "Motocross Racer (1983) (Xonox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "de07e9cb43ad8d06a35f6506e22c62e9", "", "", "Oh No! (Version 4) (22-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "de1a636d098349be11bbc2d090f4e9cf", "", "", "Pressure Gauge (Hozer Video Games)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "de1e9fb700baf8d2e5ae242bffe2dbda", "Activision - Imagineering, Mike Reidel", "EAK-043-04I", "Commando (1988) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "de24f700fd28d5b8381de13abd091db9", "CCE", "", "Plaque Attack (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "de29e46dbea003c3c09c892d668b9413", "Coleco - Woodside Design Associates, Steve 'Jessica Stevens' Kitchen", "4L1717, 4L1718, 4L1719, 4L2277", "Carnival (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "de3d0e37729d85afcb25a8d052a6e236", "Spectravision - Spectravideo", "SA-204", "Tapeworm (1982) (Spectravision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "de4436eaa41e5d7b7609512632b90078", "Activision, David Crane", "AX-014, AX-014-04", "Grand Prix (1982) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "de5aab22e5aba5edcb29a3e7491ff319", "Star Game", "001", "Donkey Kong (Star Game)", "AKA Inca Gold", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "de61a0b171e909a5a4cfcf81d146dbcb", "Rainbow Vision - Suntek", "SS-005", "Tom Boy (Rainbow Vision) (PAL)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "de62f8a30298e2325249fe112ecb5c10", "CCE", "C-810", "Enduro (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "de78b3a064d374390ac0710f95edde92", "Bomb - Onbase", "CA281", "Assault (1983) (Bomb)", "AKA Sky Alien", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "de7a64108074098ba333cc0c70eef18a", "", "", "Nuts (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "37", "", "", "" }, + { "de7bca4e569ad9d3fd08ff1395e53d2d", "Thomas Jentzsch", "", "Thrust (V1.22) (2000) (TJ)", "Won't work with Stella < V1.2, supports Booster Grip", "New Release", "", "", "", "", "", "", "", "BOOSTERGRIP", "", "", "", "", "", "", "", "" }, + { "de8443ff47283e7b274a7838cb071fb6", "Atari, Lou Harp", "CX26122", "Sinistar (01-04-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dea0ade296f7093e71185e802b500db8", "CCE", "", "Fishing Derby (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "deb39482e77f984d4ce73be9fd8adabd", "Activision, David Lubar", "AK-048-04", "River Raid II (1988) (Activision) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ded26e1cb17f875a9c17515c900f9933", "", "", "Space Treat (29-12-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "df12953b919844dad2070ed2e70c9fa2", "Amiga - Video Soft", "3135", "S.A.C. Alert (1983) (Amiga) (Prototype) (PAL)", "Uses Joyboard", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "df2745d585238780101df812d00b49f4", "Bit Corporation", "PG202", "Space Tunnel (1982) (BitCorp)", "AKA Cosmic Corridor, Weltraum-Tunnel", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "222", "", "" }, + { "df3e6a9b6927cf59b7afb626f6fd7eea", "", "", "Tuby Bird (208 in 1) (Unknown) (PAL)", "AKA Dolphin", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "df40af244a8d68b492bfba9e97dea4d6", "Franklin Cruz", "", "Asteroids 2 (Franlin Cruz) (Hack)", "Hack of Asteroids", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "df5cc5cccdc140eb7107f5b8adfacda1", "Cracker Jack Productions", "", "Lumberman (Cracker Jack) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, + { "df62a658496ac98a3aa4a6ee5719c251", "Atari, Tom Reuterdahl - Sears", "CX2626 - 6-99829, 49-75116", "Miniature Golf (1979) (Atari)", "AKA Arcade Golf", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "df6a28a89600affe36d94394ef597214", "Apollo - Games by Apollo, Dan Oliver", "AP-2002", "Space Cavern (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "df6a46714960a3e39b57b3c3983801b5", "Puzzy - Bit Corporation", "PG201", "Sea Monster (1982) (Puzzy) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "df753cb87d3af4d03f694ab848638108", "CBS Electronics, Bob Curtiss", "4L1845, 4L1852, 4L1853, 4L1854", "Solar Fox (1983) (CBS Electronics) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "df95e4af466c809619299f49ece92365", "Atari - CCW, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (06-03-1983) (Atari) (Prototype) (PAL)", "Uses Keypad Controllers", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "dfad86dd85a11c80259f3ddb6151f48f", "HES - Imagineering, David Lubar", "535", "My Golf (1990) (HES) (PAL) [fixed]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dfafa3fa58f5cc3f0342cca475df6095", "", "", "Space Treat (V1.1 Beta) (24-12-2002) (Fabrizio Zavagli)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dfc03ef371cf5163f54c50d8ee73c8cf", "Atari, Gary Palmer", "CX2661", "Fun with Numbers (1980) (Atari) (4K)", "AKA Basic Math", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dfc3dbbb39f05d7dd8ee3ac987478970", "", "", "Imagic Selector ROM (1982) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dfcdd6f593bb7b05dbc2e8e1fc6ee0de", "", "", "Gunfight 2600 - Scenarios complete (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dfe034297200dff672df9533ed1449a9", "", "", "Sprite Movement Demo 1 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dfe6aa7443bb813cefa35a4cf4887422", "", "", "This Planet Sucks (Greg Troutman) [a1]", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, + { "dff33523ccd2fdc8912e84cab8e0d982", "", "", "Fu Kung! (V0.03) (10-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e01e00504e6d4b88fa743c0bbe8a96e5", "", "", "Qb (Special Edition, some bugfixes) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e020f612255e266a8a6a9795a4df0c0f", "Telegames - VSS", "7062 A305", "Universal Chaos (1988) (Telegames) (PAL)", "AKA Targ", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e02156294393818ff872d4314fc2f38e", "Sancho - Tang's Electronic Co.", "TEC005", "Dice Puzzle (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e0221c95aa657f5764eeeb64c8429258", "", "", "Tomb Raider 2600 [REV 02] (Montezuma's Revenge Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e03b0b091bea5bc9d3f14ee0221e714d", "CBS Electronics, Bob Curtiss", "4L1852, 4L1853, 4L1854, 4L1855", "Solar Fox (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e040df95a055b18ebdb094e904cb71b2", "", "", "Score Demo (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e04f1c1e4401d584d3f4343410a5bcc4", "Wizard Video Games - MicroGraphic Image, Robert Barber, Tim Martin", "007", "Halloween (1983) (Wizard Video Games) (Prototype) [a]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e0b24c3f40a46cda52e29835ab7ad660", "Quelle - Otto Versand", "626.502 9 - 746381", "Top Gun (1983) (Quelle) (PAL)", "AKA Air Raiders", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e0cf2dcc4c1348c468f5bb1e421c9164", "", "", "Invader Sprites in a Line Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e0de3773f5b867795db557be7b8a703e", "", "", "Boulderdash (13 Blocks Wide) (02-04-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e0eff071f578ecf19edc2ab276644e46", "", "", "Gas Gauge Demo (2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e1029676edb3d35b76ca943da7434da8", "Atari, Robert C. Polaro, Alan J. Murphy - Sears", "CX2609 - 49-75186", "Defender (10-30-1981) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e10bf1af6bf3b4a253c5bef6577fe923", "Rob Kudla", "", "Space Invaders (1978) (Atari) [h1]", "Hack of Space Invaders (Atari)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e10d2c785aadb42c06390fae0d92f282", "Parker Brothers, Dawn Stockbridge", "PB5910", "Strawberry Shortcake - Musical Match-Ups (1983) (Parker Bros)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "225", "", "" }, + { "e1143b72a30d4d3fee385eec38b4aa4d", "", "", "Word Zapper (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e12e32dee68201b6765fcd0ed54d6646", "Atari, Larry Kaplan", "CX2612, CX2612P", "Street Racer (1977) (Atari) (PAL)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 75", "", "", "", "", "" }, + { "e13818a5c0cb2f84dd84368070e9f099", "CCE", "C-839", "Misterious Thief, A (1983) (CCE)", "AKA A Mysterious Thief", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "216", "YES", "" }, + { "e13c7627b2e136b9c449d9e8925b4547", "Atari, Alan Miller - Sears", "CX2624 - 6-99826, 49-75113", "Basketball (1978) (Atari) (4K)", "", "Common", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e1486c7822c07117b4f94a32e5ed68c1", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (06-14-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e14dc36b24fe22c04fa076e298f2e15f", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision) (16K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "e14feddeb82f5160ed5cf9ca4078e58d", "", "", "SpaceMaster X-7 (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e150f0d14f013a104b032305c0ce23ef", "Spectravision - Spectravideo", "SA-205", "China Syndrome (1982) (Spectravision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e15b5525cf8f77297b322838df8d999c", "", "", "Sprite Demo 0 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e171558c51bb3bac97bfa79fa2c1a19c", "", "", "Warring Worms (Tim Strauss Edition) (20-12-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e17699a54c90f3a56ae4820f779f72c4", "Quelle", "465.302 8", "Vogel Flieh (1983) (Quelle) (PAL)", "AKA Dolphin", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e18abe87035379c56b435bfe8175077b", "Grimlock", "", "Rumble 2600 (Grimlock) (Hack)", "Hack of Mario Bros.", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e1a51690792838c5c687da80cd764d78", "20th Century Fox, John Russell", "", "Alligator People (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e1b90f1e01b1a316d7bbf141525cc00e", "", "", "Sky Jinks (Unknown) (PAL) (4K) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e1d5c8213e82820128fa9c4775f1e166", "Jess Ragan", "", "Jungle King (2003) (Jess Ragan) (Hack)", "Hack of Jungle Hunt", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e1d79e4e7c150f3861256c541ec715a1", "", "", "Space Jockey (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e1e09e2f280e8e142121a377d0dc1b46", "Thomas Jentzsch", "", "Thrust (V1.21) (2000) (TJ)", "Won't work with Stella < V1.2, bugfixed", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e1efe2ef7664bb6758b1a22ff8ea16a1", "Dynacom", "", "Enduro (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e1f88da6da8a7d521ca1dcbf2bc6978b", "Activision, Bob Whitehead - Ariola", "EAG-005, PAG-005, EAG-005-04B - 711 005-715", "Skiing (1980) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e21ee3541ebd2c23e817ffb449939c37", "Tigervision - Software Electronics Corp., Karl T. Olinger - Teldec", "7-001", "King Kong (1982) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "", "", "" }, + { "e237ee91514d5ed535c95a14fc608c11", "Activision, Matthew L. Hubbard, Bob Whitehead", "AX-024", "Dolphin (1983) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e2389c0be5b5b84e0d3ca36ec7e67514", "Retroactive", "", "Qb (V2.09) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e24d7d879281ffec0641e9c3f52e505a", "Parker Brothers, Mark Lesser", "PB5950", "Lord of the Rings (1983) (Parker Bros) (Prototype)", "Journey to Rivendell (The Lord of the Rings I)", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e25e173740f7ecc0e23025445c4591f3", "Greg Zumwalt", "", "Comitoid (Greg Zumwalt)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e275cbe7d4e11e62c3bfcfb38fca3d49", "M Network - APh Technological Consulting, Ken Smith - INTV", "MT5658", "Super Challenge Football (1982) (M Network)", "AKA Pro Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e28113d10c0c14cc3b5f430b0d142fcb", "CCE", "C-816", "Keystone Kappers (1983) (CCE) [a]", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e2846af3e4d172b251ab77cbdd01761e", "Steve Engelhardt", "", "Adventure Plus (2003) (Steve Engelhardt) (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e2904748da63dfefc8816652b924b642", "Jone Yuan Telephonic Enterprise Co", "", "Catch Time (Jone Yuan)", "AKA Plaque Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e2b682f6e6d76b35c180c7d847e93b4f", "", "", "Dodge Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e2c1b60eaa8eda131632d73e4e0c146b", "Atari - GCC, Mark Ackerman, Noellie Alito", "CX2692", "Moon Patrol (07-04-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e2c89f270f72cd256ed667507fa038a2", "Starpath Corporation, Stephen H. Landrum", "AR-4101", "Communist Mutants from Space (1982) (Arcadia) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e2ca84a2bb63d1a210ebb659929747a9", "Telesys, Don 'Donyo' Ruffcorn", "1002", "Cosmic Creeps (1982) (Telesys) (PAL)", "AKA Space Maze, Spaze Maze", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e2eccbbe963f80f291cb1f18803bf557", "Atari, Joe Decuir, Steve Mayer, Larry Wagner", "CX26163P", "Combat (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "40", "256", "", "" }, + { "e314b42761cd13c03def744b4afc7b1b", "Activision, David Crane, Dan Kitchen", "AZ-108-04", "Ghostbusters (1985) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e34c236630c945089fcdef088c4b6e06", "Activision, David Crane - Ariola", "EAB-035-04 - 711 035-721", "Pitfall II (1984) (Activision) (PAL)", "Lost Caverns", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e3533684a7ef930a7fbd0c4dd8ec4847", "CCE", "C-856", "Pimball (1983) (CCE)", "AKA Video Pinball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e3600be9eb98146adafdc12d91323d0f", "Atari, Carol Shaw", "CX2618, CX2618P", "3-D Tic-Tac-Toe (1980) (Atari) (PAL)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e363e467f605537f3777ad33e74e113a", "Atari, Bob Whitehead - Sears", "CX2603 - 99803, 49-75601", "Star Ship (1977) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e377c3af4f54a51b85efe37d4b7029e6", "20th Century Fox Video Games, Steve Beck", "11035", "Save the Whales (1983) (20th Century Fox) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e37c8055d70979af354251ebe9f1b7dd", "HES", "", "Mega Funpak - Gorf, P. Patrol, Pacman, Skeet Shoot (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e38dc1f81a02e325562cd285123f579b", "Atari - GCC, Mike Feinstein", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e39843c56b7a4a08b18fa7949ec3ee6b", "", "", "Joshua Invaders (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e39a13b13dc82c5fdbfbbfd55ba1230e", "", "", "Analog Clock (Additional Frame Info) (V0.0) (20-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e3c0451d29dad724231bc5818ec4bae0", "", "", "Single-Scanline Positioning Demo 1 (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e3c35eac234537396a865d23bafb1c84", "TechnoVision - Video Technology", "TVS1001", "Nuts (1983) (TechnoVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "45", "", "", "" }, + { "e3ed4ba3361756970f076e46e9cad1d2", "", "", "Tennis (Unknown) (PAL) (4K) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e40a818dac4dd851f3b4aafbe2f1e0c1", "Atari, Bill Aspromonte, Dr. Lee Salk", "CX26135", "Peek-A-Boo (1984) (Atari) (Prototype)", "Uses the Keypad Controllers", "Prototype", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "e42b937c30c617241ca9e01e4510c3f6", "", "", "Pitfall! (No Walls Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e434c0e161dd3c3fb435eb6bad2e182c", "Atari - GCC, Mike Feinstein, Brad Rice", "CX2681", "Battlezone (05-02-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e49ac0ec879a0d7820bc2598fc2cfcd4", "CCE", "", "Kaboom! (CCE) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "e4a0b28befaaa2915df1fa01238b1e29", "", "", "Gunfight 2600 - Red River (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e4afe157c09962cf39cdb25845d83d47", "Activision, David Crane - Ariola", "EAG-009, PAG-009 - 711 009-720", "Freeway (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e4b12deaafd1dbf5ac31afe4b8e9c233", "Adam Thornton", "", "Lord of the Rings (Adam Thornton) (Hack) [a]", "Hack of Dark Mage", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e4bff1d5df70163c0428a1ead309c22d", "Atari, Robert C. Polaro, Alan J. Murphy", "CX2609, CX2609P", "Defender (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e4c00beb17fdc5881757855f2838c816", "20th Century Fox Video Games - Sirius, Ed Hodapp", "11004", "Deadly Duck (1982) (20th Century Fox)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e4c2077a18e3c27f4819aa7757903aa0", "", "", "Many Blue Bars Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e4c666ca0c36928b95b13d33474dbb44", "Arcadia Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Suicide Mission (1982) (Arcadia)", "AKA Meteoroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e4d41f2d59a56a9d917038682b8e0b8c", "Cody Pittman", "", "Kiss Meets Pacman (Cody Pittman) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, + { "e4e9125a8741977583776729359614e1", "SnailSoft", "", "Comitoid beta 4 (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e505bd8e59e31aaed20718d47b15c61b", "Funvision - Fund. Int'l Co.", "", "Space War (1982) (Funvision) (PAL)", "AKA Condor Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e51030251e440cffaab1ac63438b44ae", "Parker Brothers - On-Time Software, Joe Gaucher, Louis Marbel", "PB5110", "James Bond 007 (1984) (Parker Bros)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e51c23389e43ab328ccfb05be7d451da", "Arcadia Corporation, Scott Nelson", "13", "Sweat! - The Decathlon Game (1983) (Arcadia) (Prototype)", "Uses the Paddle Controllers (left only)", "Prototype", "", "", "", "", "", "", "", "PADDLES", "", "", "", "", "", "", "", "" }, + { "e5359cbbbff9c6d7fe8aeff5fb471b46", "CCE", "C-849", "Boom Bang (1983) (CCE)", "AKA Crackpots", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e549f1178e038fa88dc6d657dc441146", "Atari, Bob Whitehead - Sears", "CX2625 - 6-99827, 49-75114", "Football (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e556e07cc06c803f2955986f53ef63ed", "Coleco - Individeo, Ed Temple", "2665", "Front Line (1984) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e558be88eef569f33716e8e330d2f5bc", "Shock Vision", "", "Keystone Kapers (Shock Vision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e56da674188ba2f02c7a0a343a01236f", "", "", "This Planet Sucks Demo 4 (Greg Troutman) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "36", "", "", "" }, + { "e5a6e0bb7d56e2f08b237e15076e5699", "", "", "Color Table Display Helper (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e5bacf526036d3c8c99db5b030cf00e7", "", "", "Starmaster (Genesis)", "Genesis controller (C switches to map mode)", "Hack of Starmaster", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "e5d5085123a98c1e61818caa2971e999", "", "", "Euchre (PAL) (Erik Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e5d72ff8bab4450be57785cc9e83f3c0", "Telegames", "6082 A145", "Kung Fu Superkicks (1988) (Telegames) (PAL)", "AKA Chuck Norris Superkicks", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e5ecd78edd24326a968809decbc7b916", "Imagic, Bob Smith", "720020-1A, IA3611", "Cheese (Dragonfire Beta) (05-21-1982) (Imagic) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e5f17b3e62a21d0df1ca9aee1aa8c7c5", "CommaVid, John Bronstein", "CM-003", "Cosmic Swarm (1982) (CommaVid)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e5f360226dc552aba3e7e9b202330f48", "Supercat", "", "Mega Bitmap Demo (2007) (Supercat)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e5f84930aa468db33c0d0f7b26dd8293", "CCE", "C-826", "Grand Prix (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e5fcc62e1d73706be7b895e887e90f84", "", "", "Air-Sea Battle (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "40", "260", "", "" }, + { "e600f5e98a20fafa47676198efe6834d", "Parker Brothers - Roklan", "PB5080", "Gyruss (1984) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e609e8a007127b8fcff79ffc380da6b1", "", "", "Multi-Sprite Game V2.3 (Piero Cavina) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e61210293b14c9c4ecc91705072c6a7e", "Gameworld", "133-005", "Bugs (1983) (Gameworld) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 50", "", "", "", "", "" }, + { "e62e60a3e6cb5563f72982fcd83de25a", "Jone Yuan Telephonic Enterprise Co", "", "End of the World (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "240", "", "" }, + { "e63a87c231ee9a506f9599aa4ef7dfb9", "Tigervision, Warren Schwader", "7-003", "Threshold (1982) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "22", "", "", "" }, + { "e63efdfda9a4003dcd77a854a781a06a", "Paul Slocum", "", "Combat Rock (PD) (Hack) [a]", "Hack of Combat", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e643aaec9a9e1c8ab7fe1eae90bc77d7", "Roger Williams", "", "Asymmetric Playfield (Roger Williams)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e64a8008812327853877a37befeb6465", "Answer Software Corporation - TY Associates", "ASC1002", "Gauntlet (1983) (Answer Software)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e6508b878145187b87b9cded097293e7", "", "", "Oystron (V2.8) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e66e5af5dea661d58420088368e4ef0d", "Activision, Bob Whitehead", "AG-011", "Stampede (1981) (Activision) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e6d5948f451a24994dfaaca51dfdb4e1", "Jone Yuan Telephonic Enterprise Co", "", "Football (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e6de4ef9ab62e2196962aa6b0dedac59", "Imagic, Wilfredo Aguilar, Michael Becker, Dennis Koble", "720113-2A, 13206", "Solar Storm (1983) (Imagic) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, + { "e6e5bb0e4f4350da573023256268313d", "Thomas Jentzsch", "", "Missile Control (Thomas Jentzsch)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e6f49a1053c79211f82be4d90dc9fe3d", "", "", "Gunfight 2600 - Little progress... (2001) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e723ad8f406cb258b89681ef4cef0eff", "Thomas Jentzsch", "", "Sadoom (TJ) (PAL) (Hack)", "Hack of Kaboom!", "Hack", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "e72eb8d4410152bdcb69e7fba327b420", "Atari, Douglas Neubauer, Mimi Nyden", "CX26136", "Solaris (1986) (Atari)", "AKA Universe, Star Raiders II, The Last Starfighter", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e72ee2d6e501f07ec5e8a0efbe520bee", "Imagic, Dave Johnson", "720119-2A, 13211, EIX-004-04I", "Quick Step! (1983) (Imagic) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e73838c43040bcbc83e4204a3e72eef4", "CCE", "", "Apples and Dolls (CCE)", "AKA I Want My Mommy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "YES", "" }, + { "e74022cfe31ec8908844718dfbdedf7a", "", "", "Space Treat (30-12-2002) (Fabrizio Zavagli) [a2]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e77ec259e1387bc308b0534647a89198", "Parker Brothers, David Lamkins, Laura Nikolich", "931503", "Spider-Man (1982) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e77f332b71f13884c84771e7a121182d", "Jone Yuan Telephonic Enterprise Co", "", "Hey! Stop! (Jone Yuan)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e784a9d26707cfcd170a4c1c60422a72", "Quelle", "147.443 6", "Gefecht im All (1983) (Quelle) (PAL)", "AKA Space Jockey", "", "", "", "", "", "", "", "", "", "", "", "", "", "64", "", "", "" }, + { "e7864caaf9ec49ed67b1904ce8602690", "", "", "Donkey Kong 2K3 Pic (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e7a758bb0b43d0f7004e92b9abf4bc83", "", "", "Troll's Adventure (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e7dd8c2e6c100044002c1086d02b366e", "Activision, Steve Cartwright - Ariola", "EAX-013, PAX-013, 711 013-720", "Barnstorming (1982) (Activision) (PAL)", "AKA Die tollkeuhnen Flieger", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e7f005ddb6902c648de098511f6ae2e5", "Spectravideo - Universum", "SV-010", "CompuMate (1983) (Spectravideo) (PAL)", "", "", "", "", "CM", "", "", "", "", "", "", "", "", "", "", "", "YES", "80" }, + { "e800e4aec7c6c54c9cf3db0d1d030058", "", "", "Qb (2.06) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e80a4026d29777c3c7993fbfaee8920f", "", "", "Frisco (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e823b13751e4388f1f2a375d3560a8d7", "Arcadia Corporation, Stephen Harland Landrum", "AR-4105", "Official Frogger (Preview) (1983) (Arcadia) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "32", "", "", "" }, + { "e879b7093ac4cfad74c88d636ca97d00", "", "", "Poker Squares (V0.0f) (2001) (B. Watson)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e88340f5bd2f03e2e9ce5ecfa9c644f5", "", "", "Lock 'n' Chase (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e8a3473bf786cf796d1336d2d03a0008", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (12-05-1983) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e8aa36e3d49e9bfa654c25dcc19c74e6", "Atari, Joe Decuir, Larry Caplan, Steve Mayer, Larry Wagner", "CX2601, CX2601P", "Combat (1977) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "260", "", "" }, + { "e8e7b9bdf4bf04930c2bcaa0278ee637", "", "", "Boring Taz (Hack)", "Hack of Taz", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e8f7679359c4f532f5d5e93af7d8a985", "", "", "Hangman Invader Original Words (Hack)", "Hack of Hangman", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e9034b41741dcee64ab6605aba9de455", "Digivision", "", "Phanton Tank (Digivision)", "AKA Tanks But No Tanks", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "e908611d99890733be31733a979c62d8", "Atari, Dan Hitchens, Mimi Nyden", "CX2697", "Mario Bros. (1983) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e91d2ecf8803ae52b55bbf105af04d4b", "Atari, Howard Scott Warshaw", "CX2655, CX2655P", "Yars' Revenge (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e923001015bedd7901569f035d9c592c", "", "", "Adventure II (Hack)", "Hack of Adventure", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e927ecf80f3784d745abd8368d78f2f3", "", "", "Space Instigators (V1.8) (19-10-2002) (CT) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e932f44fad2a66b6d5faec9addec208e", "", "", "Atari Logo Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e94632b0d863dd76459d689a9865bb33", "Jone Yuan Telephonic Enterprise Co", "", "Combat (Jone Yuan) (4K)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e957eb4612d6bd5940d3492dfa749668", "", "", "Tunnel Demo (27-03-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e959b5a2c882ccaacb43c32790957c2d", "", "", "Phantom II & Pirate (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e97eafd0635651d3999cece953c06bd5", "", "", "M.A.S.H (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e9be3e8e4a7e73dd63ed4235a3a1a25f", "", "", "MMetall (Hack)", "Hack of Miniature Golf", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e9c5d04643855949a23ff29349af74ea", "", "", "SCSIcide (Score Hack 2) (24-02-2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e9c71f8cdba6037521c9a3c70819d171", "Action Hi Tech - Hi-Score", "", "Bank Heist (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e9cb18770a41a16de63b124c1e8bd493", "Parker Brothers, Joe Gaucher", "931519", "Popeye (1983) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "e9e646f730b8400cd5da08c849ef3e3b", "Tron", "", "Enduro (Tron)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e9e6ad30549a6e2cd89fe93b7691d447", "Atari - Bobco, Robert C. Polaro", "CX26140, CX26140P", "Desert Falcon (05-27-1987) (Atari) (Prototype) (PAL)", "AKA Nile Flyer, Sphinx", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e9f25c7af4f27c9e1b5b8f6fe6141e8c", "Champ Games", "CG-03-N", "Scramble (NTSC)", "Compatible with Genesis controller", "Homebrew", "", "", "", "", "", "", "", "", "SAVEKEY", "", "", "", "", "", "YES", "" }, + { "ea38fcfc06ad87a0aed1a3d1588744e4", "Atari, Lou Harp", "CX26122", "Sinistar (1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ea6d40db5498d6386571a76df448aa4c", "", "", "Vertical Playfield Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ea7e25ade3fe68f5b786ee0aa82b1fe5", "", "", "Galatic (208 in 1) (Unknown) (PAL)", "AKA Challenge of.... Nexar, The", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ea832e2cb6aae6f525f07452c381fa48", "", "", "Polar to Cartesian and VV (2001) (Roger Williams)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ea86176b27ab0da8cce8f0179884bfaa", "", "", "Demo Image Series #10 - It's Art (28-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eaacfcdc1d4ee1258429b7ae7f084125", "Telegames", "6057 A227", "Quest for Quintana Roo (1989) (Telegames)", "Genesis controller (B is action button, C chooses tool or weapon)", "Hack of Quest for Quintana Roo", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, + { "ead60451c28635b55ca8fea198444e16", "Sancho - Tang's Electronic Co.", "TEC004", "Nightmare (1983) (Sancho) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "eada0dd61ce13f8317de774dc1e68604", "", "", "2600 Digital Clock (Demo 1) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eae0c06ee61c63b81cd016096fc901b0", "Joe Grand", "", "SCSIcide (v1.0) (2001) (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eae6a5510055341d3abeb45667bb3e9b", "HES", "", "Wall Defender (HES) (PAL)", "AKA Wall Break", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eaf744185d5e8def899950ba7c6e7bb5", "Atari", "CX26172", "Xenophobe (1991) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eafe8b40313a65792e88ff9f2fe2655c", "Eric Ball", "ELB004", "Skeleton+ (NTSC)", "Stereo sound", "Homebrew", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eb3d680699f8762f71f38e28e321234d", "", "", "Fu Kung! (V0.01) (08-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eb4252faff7a4f2ba5284a98b8f78d1a", "", "", "John K Harvey's Equalizer (NTSC) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "eb46e99ec15858f8cd8c91cef384ce09", "Goliath - Hot Shot", "83-113", "Ground Zero (1983) (Goliath) (PAL)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eb503cc64c3560cd78b7051188b7ba56", "Star Game", "043", "Moto Laser (Star Game)", "AKA Mega Force", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eb634650c3912132092b7aee540bbce3", "Atari, Eric Manghise, Mimi Nyden, Joseph Tung", "CX2640", "RealSports Baseball (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "eb6d6e22a16f30687ade526d7a6f05c5", "Atari", "CX26150P", "Q-bert (1987) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eb71743c6c7ccce5b108fad70a326ad9", "", "", "Euchre (25-11-2001) (Erik Eid) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eb7934360658a29c50aeaff20bfda23b", "Activision, John Van Ryzin", "EAZ-036-04", "H.E.R.O. (1984) (Activision) (SECAM)", "", "", "", "", "", "", "", "", "", "", "", "", "", "SECAM", "", "", "", "" }, + { "eb92193f06b645df0b2a15d077ce435f", "Starpath Corporation, Steve Hales, Stephen H. Landrum", "4 AR-4102", "Suicide Mission (1982) (Starpath) (PAL)", "AKA Meteoroids", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "eb9712e423b57f0b07ccd315bb9abf61", "Retroactive", "", "Qb (V2.04) (PAL) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "eb9f8b84c193d9d93a58fca112aa39ed", "", "", "Register Twiddler Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ebcb084a91d41865b2c1915779001ca7", "JVP", "", "Bob Is Going Home (JVP)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ebcbc8a181a738e13df6216e5c329230", "Activision, Steve Cartwright", "AX-022", "Seaquest (1983) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ebd2488dcace40474c1a78fa53ebfadf", "Skill Screen Games, Herman Quast", "SSG001", "Extra Terrestrials (1984) (SSG)", "The only Canadian-designed and manufactured Atari 2600 game from the 1980's", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ebf2dff78a08733251bf3838f02f7938", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype) [a2]", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "23", "240", "", "" }, + { "ebf9038e927e6a0db3e0d170c59911e6", "", "", "Pac-2600 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ec26fdc87b1d35f1d60ea89cda4f4dd4", "", "", "Star Fire - Crash Scene (04-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ec3beb6d8b5689e867bafb5d5f507491", "U.S. Games Corporation - Vidtec - JWDA, Todd Marshall, Henry Will IV", "VC1003", "Word Zapper (1982) (U.S. Games)", "AKA Word Grabber", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ec407a206b718a0a9f69b03e920a0185", "Quelle", "876.482 1", "Landung in der Normandie (1983) (Quelle) (PAL)", "AKA Commando Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ec5c861b487a5075876ab01155e74c6c", "Apollo - Games by Apollo, Ed Salvo, Byron Parks", "AP-2001", "Spacechase (1982) (Apollo)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ece463abde92e8b89bcd867ec71751b8", "Puzzy - Bit Corporation", "PG205", "Dancing Plate (1982) (Puzzy) (PAL)", "AKA Dishaster", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ece908d77ab944f7bac84322b9973549", "", "", "Tom Boy (Unknown) (PAL60)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "PAL60", "", "", "", "" }, + { "ecf51385384b468834611d44a8429c03", "20th Century Fox Video Games, Douglas 'Dallas North' Neubauer", "11105", "Mega Force (1982) (20th Century Fox) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ecfa04523dde82fe42cdc7315a8f61b6", "Activision, David Crane - Ariola", "EAG-004, PAG-004 - 711 004-715", "Fishing Derby (1980) (Activision) (PAL) (4K)", "AKA Schneller als der Hai", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ed014beeeb77dbb2bbcf9b5f6850b2f4", "", "", "Green Bar Text Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ed0451010d022b96a464febcba70b9c4", "PlayAround - J.H.M.", "203", "Knight on the Town (1982) (PlayAround) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ed0ab909cf7b30aff6fc28c3a4660b8e", "Panda", "105", "Stunt Man (1983) (Panda)", "AKA Nightmare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ed1306436ce237afc5a7ed3f77134202", "HES", "771-341", "2 Pak Special - Dolphin, Pigs 'n' Wolf (1990) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ed1492d4cafd7ebf064f0c933249f5b0", "CCE", "", "Video Cube (CCE)", "AKA Atari Video Cube", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ed1a784875538c7871d035b7a98c2433", "", "", "Save Our Ship (Unknown) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "37", "", "", "" }, + { "ed2218b3075d15eaa34e3356025ccca3", "Atari, Richard Maurer", "CX2635, CX2635P", "Maze Craze (1980) (Atari) (PAL)", "AKA A Game of Cops 'n Robbers", "", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "" }, + { "ed5ccfc93ad4561075436ee42a15438a", "Atari, Tom Reuterdahl", "CX2626, CX2626P", "Miniature Golf (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ed8f319e82d355832195eb7715644795", "Activision, Larry Kaplan, David Crane", "AG-010, AG-010-04", "Kaboom! (1981) (Activision) (8K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "ed9999911b406dc5f75c850dcc17bdf4", "", "", "Star Fire - Shootable (Friendlier Collision Detection) (26-09-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eddef10fdc0029301064115ae0cd41d4", "CCE", "", "Freeway (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ede4ab11ca346bd023b2c21d941e0c50", "Activision, David Crane", "EAZ-030", "Decathlon (1983) (Activision) (SECAM)", "", "", "", "", "", "", "", "", "", "", "", "", "", "SECAM", "", "", "", "" }, + { "ede7e8bf865b0afb4744f86d13624f9a", "", "", "Demo Image Series #2 - Clown (19-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "edf69b123e06eaf8663cc78d8aeba06e", "SpkSoft 98", "", "River Raid (SpkSoft 98) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ee28424af389a7f3672182009472500c", "Atari, Carol Shaw - Ralph Lauren", "", "Polo (1978) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ee456542b93fa8d7e6a8c689b5a0413c", "", "", "Chronocolor Donkey Kong Clean (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ee4c186123d31a279ed7a84d3578df23", "Atari, Carol Shaw, Nick 'Sandy Maiwald' Turner", "CX2608", "Super Breakout (1982 - 1981) (Atari) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 45", "", "", "", "", "" }, + { "ee659ae50e9df886ac4f8d7ad10d046a", "Exus Corporation", "", "Video Reflex (1983) (Exus)", "AKA Foot Craz", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ee6665683ebdb539e89ba620981cb0f6", "Coleco", "2658", "Berenstain Bears (1983) (Coleco)", "Uses the KidVid Controller", "Unbelievably Rare", "", "", "", "", "", "", "", "", "", "", "", "", "25", "", "", "" }, + { "ee67dc0b01746372d2b983d88f48e24f", "", "", "Scroller Demo (02-01-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ee681f566aad6c07c61bbbfc66d74a27", "Activision", "", "Unknown Activision Game (10-29-1982) (Activision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ee6cbedf6c0aac90faa0a8dbc093ffbe", "CCE", "", "My Golf (CCE) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ee8027d554d14c8d0b86f94737d2fdcc", "Canal 3 - Intellivision", "", "Yars' Revenge (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "ee84bdc5dae268e227e407c7b5e6b6b7", "", "", "Marilyn Monroe Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ee9caee4eb958284fb10c277b14537f1", "Carrere Video, Garry Kitchen - Teldec", "USC1001", "Space Jockey (1983) (Carrere Video) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "59", "", "", "" }, + { "eea0da9b987d661264cce69a7c13c3bd", "Coleco", "2454", "Zaxxon (1983) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eeb92f3f46df841487d1504f2896d61a", "Cody Pittman", "", "Corys Adventure (Cody Pittman) (Hack)", "Hack of Pac-Man", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "33", "", "", "" }, + { "eec61cc4250df70939d48fe02d7122ac", "Activision, Bob Whitehead - Ariola", "EAG-005, PAG-005, EAG-005-04B - 711 005-715", "Skiing (1980) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eed9eaf1a0b6a2b9bc4c8032cb43e3fb", "Atari - Axlon, Steve DeFrisco", "CX26192", "Klax (1991) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "eee7695ae3eea7818321df0b790b31f3", "", "", "Sound Paddle V2 (Dennis Caswell & Jim Nitchals) (PD)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "YES", "PADDLES", "", "", "01", "", "", "", "", "" }, + { "ef263d40a23483ab339cac44d9515a56", "Thomas Jentzsch", "", "Fatal Run (TJ)", "NTSC Conversion", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ef3a4f64b6494ba770862768caf04b86", "Activision, Bob Whitehead", "AG-034-04", "Private Eye (1984) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ef60b06fddb675b0d783afbfa5fc5232", "", "", "Many Blue Bars and Text Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ef66af190840871409fe1702d2483554", "Andrew Davie, Paul Slocum, Christopher Tumber", "", "DiscoTech (12-02-2003) (Andrew Davie)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ef71e9fb0d8d477226d8d42261fbf0a7", "Piero Cavina", "", "Multi-Sprite Demo V2.0 (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ef76ea05655a0b62cb1018c92b9b4b7d", "Gakken", "010", "Strategy X (1983) (Gakken) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "efa1098c7d091b940c2543abe372f036", "Scott Stilphen", "", "E.T. The Extra-Terrestrial (Scott Stilphen) (Hack)", "Hack of E.T. The Extra-Terrestrial", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "efb47d70b2965ce689e2c5757616b286", "", "", "Time Test Demo (Eckhard Stolberg) (PAL) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "efd387430a35a659ff569a9a0ec22209", "Atari - GCC", "CX26118", "Millipede (1984) (Atari) (Prototype) (PAL)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "efefc02bbc5258815457f7a5b8d8750a", "CBS Electronics, Richard K. Balaska Jr.", "4L 2520 5000", "Tunnel Runner (1983) (CBS Electronics) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "efffafc17b7cb01b9ca35324aa767364", "", "", "Circus Atari (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f02ba8b5292bf3017d10553c9b7b2861", "Atari", "CX26172", "Xenophobe (1991) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f032b2f2d8323404a6b4541f92dd1825", "", "", "Many Blue Bars and Text Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f047df70d3d08e331122cd2de61d6af8", "Dave Neuman", "", "Space Battle (NTSC)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f04ee80011d95798006378643650aaa7", "Atari, Bill Aspromonte, John Russell, Michael Sierchio, Robert Zdybel", "CX26114", "Pigs in Space (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f0536303f49006806bac3aec15738336", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (4 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f0541d2f7cda5ec7bab6d62b6128b823", "Atari, Paul Donaldson", "", "Bionic Breakthrough (1984) (Atari) (Prototype)", "Uses Mindlink Controller (left only)", "Prototype", "", "", "", "", "", "", "", "MINDLINK", "", "", "", "", "", "", "", "" }, + { "f060826626aac9e0d8cda0282f4b7fc3", "Atari, David Crane - Sears", "CX2605 - 6-99822, 49-75109", "Outlaw (1978) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f0631c6675033428238408885d7e4fde", "Paul Slocum", "", "Test Cart (2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f066bea7ab0a37b83c83c924a87c5b67", "", "", "Air Raiders (1982) (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f0a6e99f5875891246c3dbecbf2d2cea", "Atari, James Andreasen - Sears", "CX2654 - 49-75141", "Haunted House (1982) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f0b7db930ca0e548c41a97160b9f6275", "Atari, Larry Wagner, Bob Whitehead - Sears", "CX2645 - 49-75181", "Video Chess (1979) (Atari)", "AKA Computer Chess", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f0cacae1d1b79ee92f0dc035f42e0560", "", "", "Boring Donkey Kong (Hack)", "Hack of Donkey Kong", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f0d393dbf4164a688b2346770c9bbd12", "", "", "Racquetball (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f0daaa966199ef2b49403e9a29d12c50", "", "", "Mr. Postman (Unknown)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f0e0addc07971561ab80d9abe1b8d333", "Imagic, Rob Fulop", "720000-200, 720101-1B, 720101-1C, IA3200, IA3200C, IX-006-04", "Demon Attack (1982) (Imagic)", "AKA Death from Above", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f10e3f45fb01416c87e5835ab270b53a", "Video Game Cartridge - Ariola", "TP-607", "Ski Run (Ariola) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f1127ade54037236e75a133b1dfc389d", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (Preview) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f11cfab087fcbd930ab8b0becc5b2e5a", "Canal 3 - Intellivision", "", "River Raid (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f12afbffa080dd3b2801dd14d4837cf6", "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira", "CX26110", "Crystal Castles (01-04-1984) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f137211537438b1fce3d811baef25457", "", "", "Incoming (02-10-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f1489e27a4539a0c6c8529262f9f7e18", "Champ Games", "CG-01-P", "Lady Bug (PAL60)", "", "Homebrew", "", "", "", "", "A", "", "", "", "", "", "", "PAL60", "", "", "YES", "" }, + { "f14d5e96ec3380aef57a4b70132c6677", "Goliath - Hot Shot", "83-414", "Pac Kong (1983) (Goliath) (PAL)", "AKA Inca Gold", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f1554569321dc933c87981cf5c239c43", "Atari - Glenn Axworthy", "CX26129", "Midnight Magic (1986) (Atari)", "AKA Pinball Wizard", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f16c709df0a6c52f47ff52b9d95b7d8d", "Atari, Alan Miller - Sears", "CX2662 - 6-99811", "Hangman (1978) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f1929bb9b5db22d98dd992aa3fe72920", "", "", "Cube Conquest (Improved Interlace) (Billy Eno) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f19aba18f86e415812480ad2be221425", "Chris Larkin", "", "Solaris Trainer (2002) (Chris Larkin) (Hack)", "Hack of Solaris", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f1a0a23e6464d954e3a9579c4ccd01c8", "20th Century Fox, Douglas 'Dallas North' Neubauer", "11006", "Alien (1982) (20th Century Fox)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f1ae6305fa33a948e36deb0ef12af852", "Andreas Dietrich", "", "Donkey Kong VCS (2017) (1.0)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f1b2ea568b3e156e3f2849dac83591f6", "", "", "Sprite Demo (1997) (Bob Colbert) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f1b7edff81ceef5af7ae1fa76c8590fc", "Atari, Richard Maurer", "CX2632, CX2632P", "Space Invaders (1980) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f1beca5a198cf08190487e5c27b8e540", "", "", "Fu Kung! (V0.16) (2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f1e375d921858467166e53bcec05803f", "Jeffry Johnston", "", "Radial Pong - Version 3 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f1eeeccc4bba6999345a2575ae96508e", "Video Gems", "VG-03", "Steeplechase (1983) (Video Gems) (PAL)", "", "", "", "", "", "", "A", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f1fe06ebe2900eac4cdd17799389a102", "Atari, Jim Huether", "CX26163P", "Sky Diver (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f20675c8b98518367b9f5b8ee6f7c8ea", "Atari", "CX26163P", "Stampede (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f20bd756f3990e06c492f53cd0168e68", "", "", "Skeleton+ (03-05-2003) (Eric Ball) (NTSC)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f21813aa050437f0dbc8479864acec6d", "", "", "Sneak 'n Peek (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f240ba9f8092d2e8a4c7d82c554bf509", "Quelle", "463.860 7", "Strahlen der Teufelsvoegel (1983) (Quelle) (PAL)", "AKA Atlantis", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f280976d69d6e27a48506bd6bad11dcd", "Atari, Larry Kaplan", "CX2664, CX2664P", "Brain Games (1978) (Atari) (PAL)", "Uses Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "f283cc294ece520c2badf9da20cfc025", "Atari - CCW, Christopher H. Omarzu", "CX26104", "Big Bird's Egg Catch (1983) (Atari) (PAL)", "Uses Kids/Keypad Controllers", "Rare", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "f28c07767b3e90a2689ade5b5e305874", "Canal 3 - Intellivision", "C 3014", "Keystone Kapers (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f2d40c70cf3e1d03bc112796315888d9", "Atari - CCW, Michael Callahan, Preston Stuart", "CX26103", "Alpha Beam with Ernie (1983) (Atari) (PAL)", "Uses Keypad Controllers", "Rare", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "f2d4d6187903cac2d5ea8ed90dad120d", "Digimax", "", "River Raid II (Digimax)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f2e4fb2d3600c0f76d05864e658cc57b", "", "", "Marble Craze (Kernel) (17-02-2002) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f2f2cb35fdef063c966c1f5481050ea2", "", "", "Ram It (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f2f59629d7341c97644405daeac08845", "Jone Yuan Telephonic Enterprise Co", "", "Bobby Is Going Home (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f303630a2d7316787aecd67fff6b2e33", "AtariAge - Fred Quimby", "", "Gingerbread Man (Fred Quimby)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f3213a8a702b0646d2eaf9ee0722b51c", "Atari, Carol Shaw - Sears", "CX2618 - 49-75123", "3-D Tic-Tac-Toe (1980) (Atari) (4K)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f33f1d0f7819c74148dacb48cbf1c597", "Retroactive", "", "Qb (2.00) (Retroactive) (Stella)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f344ac1279152157d63e64aa39479599", "Tigervision", "7-012", "Espial (1984) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f34dd3b8156aaf113cb621b2e51d90b8", "Joe Grand", "", "SCSIcide Pre-release 5 (Joe Grand)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f34f08e5eb96e500e851a80be3277a56", "Atari, Brad Stewart - Sears", "CX2622 - 6-99813, 49-75107", "Breakout (1978) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 60", "", "", "", "", "" }, + { "f367e58667a30e7482175809e3cec4d4", "ZiMAG - Emag - Vidco", "708-111 - GN-040", "Cosmic Corridor (1983) (ZiMAG)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, + { "f38358cd8f5ecfedffd5aca1aa939f18", "Universal Gamex Corporation, Alan Roberts", "1005", "X-Man (1983) (Universal) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "f39e4bc99845edd8621b0f3c7b8c4fd9", "AtariAge", "", "Toyshop Trouble (AtariAge)", "F8 Emulator Release", "", "", "", "", "", "", "", "", "", "PADDLES", "", "", "", "32", "", "", "" }, + { "f3c431930e035a457fe370ed4d230659", "", "", "Crackpots (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f3cd0f886201d1376f3abab2df53b1b9", "Commavid, Ben Burch", "CM-010", "Rush Hour (1983) (Commavid) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f3dfae774f3bd005a026e29894db40d3", "Otto Versand", "649635", "See Saw (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Circus Atari", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f3f5f72bfdd67f3d0e45d097e11b8091", "Sears Tele-Games, Marilyn Churchill, Matthew L. Hubbard", "CX2647 - 49-75142", "Submarine Commander (1982) (Sears)", "AKA Seawolf 3", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f3f92aad3a335f0a1ead24a0214ff446", "", "", "Spectrum Color Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f4204fc92d17ed4cb567c40361ad58f1", "Inky", "", "Beanie Baby Bash (Inky) (Hack)", "Hack of Beany Bopper", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f4469178cd8998cb437fa110a228eaca", "Digitel", "", "Frostbite (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f45644ff82b533a781a1ee50f2e95f3c", "", "", "Overhead Adventure Demo 6 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f457674cef449cfd85f21db2b4f631a7", "U.S. Games Corporation - JWDA, Todd Marshall, Wes Trager, Henry Will IV", "VC1004", "Commando Raid (1982) (U.S. Games)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f473f99e47d4026a7a571184922ebf04", "Philip R. Frey", "", "Donkey Claus (Philip R. Frey) (Hack)", "Hack of Donkey Kong", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f48022230bb774a7f22184b48a3385af", "Atari, Rob Fulop - Sears", "CX2633 - 49-75119", "Night Driver (1980) (Atari) (4K)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 65", "", "", "", "YES", "" }, + { "f48735115ec302ba8bb2d2f3a442e814", "", "", "Dishaster (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f49a34f1fdd7dc147cbf96ce2ce71b76", "", "", "Qb (Special Edition) (PAL) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f4ab6bd5f80d8988141edde4c84b23b5", "Atari, Alan Miller", "CX2624, CX2624P", "Basketball (1978) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f4b8a47a95b61895e671c3ec86ffd461", "Parker Brothers, Wilfredo Aguilar, Michael Becker, Neil McKenzie, Bob Smith, Brad Stewart", "PB5540", "Star Wars - The Arcade Game (01-03-1984) (Parker Bros) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f4c2e50b01dff99bddbe037b3489511c", "", "", "Hypnotic (V0.04) (2001) (Inkling) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f4c6621f1a0b4d27081123c08d7d1497", "CCE", "C-838", "Immies & Aggies (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f4cf6881b65c424095dc25dc987f151f", "", "", "128 in 1 Game Select ROM (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f4dabd5bcc603e8464a478208037d423", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (08-21-1984) (Coleco) (Prototype)", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f526d0c519f5001adb1fc7948bfbb3ce", "Mythicon, Bill Bryner, Bruce de Graaf", "MA1003", "Star Fox (1983) (Mythicon)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f52f40299fd238c6ffd9e6107050dc76", "Activision, Bob Whitehead - Ariola", "EAG-011, PAG-011 - 711 011-715", "Stampede (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f539e32bf6ce39c8ca47cb0cdd2c5cb8", "Control Video Corporation", "", "GameLine Master Module ROM (1983) (Control Video)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f542b5d0193a3959b54f3c4c803ba242", "Atari, Tom Rudadahl - Sears", "CX2634 - 49-75121", "Golf (1980) (Atari) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f5445b52999e229e3789c39e7ee99947", "Atari, Jim Huether", "CX26163P", "Flag Capture (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f5a2f6efa33a3e5541bc680e9dc31d5b", "Suntek", "SS-022", "Motocross (Suntek) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f5a3e051730d45fea518f2e8b926565b", "Robby", "", "Keystone Kapers (Robby)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f5aa6bd10f662199c42e43863a30106c", "", "", "Music Kit (V1.0) - Song Player (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f5d103a9ae36d1d4ee7eef657b75d2b3", "Starpath Corporation, Stephen H. Landrum", "9 AR-4105", "Official Frogger, The (Preview) (1983) (Starpath)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "", "" }, + { "f613aad84d2163d6b197b220bfec1b7e", "", "", "X-Doom V.27 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f661f129644f338b13d9f4510d816c03", "Atari, David Crane", "CX26163P", "Outlaw (32 in 1) (1988) (Atari) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f6676e3fe901eb8515fc7ae310302c3c", "Activision, David Crane", "AG-008", "Laser Blast (1981) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f67181b3a01b9c9159840b15449b87b0", "Atari, Nick 'Sandy Maiwald' Turner", "CX2665", "Frog Pond (08-27-1982) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f687ec4b69611a7f78bd69b8a567937a", "Activision, Alan Miller - Ariola", "EAZ-028 - 711 028-725", "Robot Tank (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f69a39b215852a0c2764d2a923c1e463", "", "", "Move a Blue Blob Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f69bb58b815a6bdca548fa4d5e0d5a75", "Atari, Larry Kaplan", "CX26163P", "Bowling (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f69d4fcf76942fcd9bdf3fd8fde790fb", "CCE", "", "Aquaventure (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f6a282374441012b01714e19699fc62a", "ZiMAG - Emag - Vidco", "710-111 - GN-010", "I Want My Mommy (1983) (ZiMAG)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "30", "", "YES", "" }, + { "f6a9ea814d15b85bffe980c927df606b", "", "", "Missile Command (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f6b5ebb65cbb2981af4d546c470629d7", "Coleco - Individeo, Ed Temple", "", "Cabbage Patch Kids (09-13-1984) (Coleco) (Prototype) [a]", "Adventures in the Park", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f6c13e816e58c8c62f82b2c8b91a2d67", "", "", "Scrolling Playfield 2 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f6d512bef1bf253dc935d0e13c3d1462", "", "", "Slot Racers (Unknown) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f6daebc0424fa0f8d9aaf26c86df50f4", "Brian Watson", "", "Color Tweaker (V1.0) (2001) (B. Watson)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f6efa00ae99aaf33e427b674bcfd834d", "", "", "2600 Digital Clock (Demo 3) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f6f1b27efc247a0e8d473ddb4269ff9e", "Quelle", "429.663 8", "Schnapp die Apfeldiebe (1983) (Quelle) (PAL)", "AKA Plaque Attack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f70e3f3bb2d19ec2aaec8f78dc43744f", "Jone Yuan Telephonic Enterprise Co", "", "Pooyan (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "", "" }, + { "f714a223954c28eccf459295517dcae6", "", "", "Big - Move This Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f724d3dd2471ed4cf5f191dbb724b69f", "Atari, Jerome Domurat, Howard Scott Warshaw", "CX2659", "Raiders of the Lost Ark (1982) (Atari)", "Console ports are swapped", "", "", "", "", "", "", "", "YES", "", "", "", "", "", "", "", "", "" }, + { "f736864442164b29235e8872013180cd", "Telegames - VSS", "6057 A227", "Quest for Quintana Roo (1988) (Telegames) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f73d2d0eff548e8fc66996f27acf2b4b", "CCE", "C-813", "Pitfall (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f7424985bac41067502b4a05b64cb75a", "Activision, Steve Cartwright", "AX-027", "Plaque Attack (1983) (Activision)", "Genesis controller (B is fire up, C is fire down)", "Hack of Plaque Attack", "", "", "", "", "", "", "", "GENESIS", "GENESIS", "", "", "", "", "", "", "" }, + { "f74ad642552385c3daa203a2a6fc2291", "Eckhard Stolberg", "", "Cubis (1997) (Eckhard Stolberg)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, + { "f750b5d613796963acecab1690f554ae", "Manuel Polik", "", "Gunfight 2600 (MP)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f75872946e82ad74d48eae5bc28f5f0e", "Sears Tele-Games, Jim Huether", "CX2614 - 49-75126", "Steeplechase (04-15-1980) (Sears) (Prototype)", "Uses the Paddle Controllers", "Prototype", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "", "", "", "", "", "" }, + { "f777444fc21a5925e066b68b1d350575", "", "", "Marble Craze (Kernel Works) (Paul Slocum)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f77f5fc3893da5d00198e4cd96544aad", "Canal 3 - Intellivision", "", "Stampede (Canal 3)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f7856e324bc56f45b9c8e6ff062ec033", "Atari, Jerome Domurat, Michael Sierchio", "CX2667", "RealSports Soccer (1983) (Atari) [no opening tune]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f78c125b5da483c41e51522947d6c4ce", "", "", "Sound Paddle V1 (Dennis Caswell & Jim Nitchals) (PD)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "YES", "PADDLES", "", "", "01", "", "", "", "", "" }, + { "f7a138eed69665b5cd1bfa796a550b01", "Tigervision - Teldec", "7-012 - 3.60016 VC", "Espial (1984) (Tigervision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f7a651972d78f9ba485b14690452d4be", "Paul Slocum", "", "Homestar Runner Demo #2 (2004-03-29)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "f7af41a87533524d9a478575b0d873d0", "Quelle", "495.663 7", "Spiderman (1983) (Quelle) (PAL)", "AKA Spider-Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f7d6592dcb773c81c278140ed4d01669", "Activision, David Crane, Dan Kitchen", "EAG-108-04, EAZ-108-04B", "Ghostbusters (1985) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f7e07080ed8396b68f2e5788a5c245e2", "Video Game Cartridge - Ariola", "TP-617", "Farmyard Fun (Ariola)", "AKA Play Farm", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "215", "", "" }, + { "f7f50d9c9d28bcc9f7d3075668b7ac89", "Activision, David Crane - Ariola", "EAG-008, PAG-008, EAG-008-04I - 711 008-720", "Laser Blast (1981) (Activision) (PAL) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f7fac15cf54b55c5597718b6742dbec2", "Spiceware", "SW-01", "Medieval Mayhem (NTSC)", "", "Homebrew", "STEREO", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "AUTO 55", "", "", "", "", "" }, + { "f802fa61011dd9eb6f80b271bac479d0", "Suntek", "SS-023", "Mole Hunter (Suntek) (PAL)", "AKA Topy", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f80cf77164079d774b9b0fae33dffca9", "", "", "Fu Kung! (V0.15) (Negative Version) (05-02-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f8240e62d8c0a64a61e19388414e3104", "Activision, Steve Cartwright", "AX-013", "Barnstorming (1982) (Activision)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f825c538481f9a7a46d1e9bc06200aaf", "Atari, Richard Maurer - Sears", "CX2635 - 49-75157", "Maze Craze (1980) (Atari)", "AKA A Game of Cops 'n Robbers", "", "", "", "", "", "", "", "", "", "", "", "", "NTSC", "", "", "", "" }, + { "f844f4c6f3baaaf5322657442d6f29eb", "Atari, Sam Comstock, Richard Dobbis, Nick 'Sandy Maiwald' Turner", "CX26111", "Snoopy and the Red Baron (1983) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f847fb8dba6c6d66d13724dbe5d95c4d", "Absolute Entertainment, David Crane", "AG-042-02, AG-042-04", "Skate Boardin' (1987) (Absolute)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f8582bc6ca7046adb8e18164e8cecdbc", "", "", "Panda Chase (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "256", "", "" }, + { "f8648d0c6ad1266434f6c485ff69ec40", "CCE", "", "Oink! (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f8811d45a9935cca90c62f924712f8e6", "Jone Yuan Telephonic Enterprise Co", "", "Chopper Command (Jone Yuan) (Hack)", "2600 Screen Search Console", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f8b2a6a4d73ebff10d805a9b59041986", "Activision, Larry Kaplan - Ariola", "EAX-006, PAX-006 - 771 006-720", "Bridge (1980) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f8bfd99163d2c4ec688357786e6fba28", "", "", "Eckhard Stolberg's Scrolling Text Demo 2 (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f8c1c4a41303bd40b0d6c81bfaf8573b", "HES", "773-891", "2 Pak Special - Dungeon Master, Creature Strike (1992) (HES) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f8ff34b53d86f55bd52d7a520af6d1dc", "", "", "Big Dig (04-04-2003) (CT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, + { "f90b5da189f24d7e1a2117d8c8abc952", "Atari, David Crane - Sears", "CX2653 - 6-99823, 49-75111", "Slot Machine (1979) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f91fb8da3223b79f1c9a07b77ebfa0b2", "Atari, Alan J. Murphy, Nick 'Sandy Maiwald' Turner - Sears", "CX2615 - 49-75140", "Demons to Diamonds (1982) (Atari)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "YES", "10 57", "", "", "", "", "" }, + { "f93d7fee92717e161e6763a88a293ffa", "20th Century Fox Video Games - Lazer Micro Systems - Dunhill Electronics, B. Winston Hendrickson, Randall Hyde, Mark V. Rhoads, John Simonds", "11013", "Porky's (1983) (20th Century Fox)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f9420173efcb4b9f2b01c2a7b595cca7", "CCE", "", "Laser Blast (CCE) (4K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f954381f9e0f2009d1ac40dedd777b1a", "Thomas Jentzsch", "", "Robot City (V0.18) (01-09-2002) (TJ)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f9655ed51462ecfc690c7b97cec649f9", "Andrew Wallace", "", "Laseresal 2002 (PAL) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f965cc981cbb0822f955641f8d84e774", "Answer Software Corporation - TY Associates", "ASC2001", "Confrontation (1983) (Answer) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "YES", "" }, + { "f9660ebed66fee8bdfdf07b4faa22941", "VGS", "", "Vanguard (VGS)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f9677b2ec8728a703eb710274474613d", "Atari, Ian Shepard", "CX2604, CX2604P", "Space War (1978) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f97dee1aa2629911f30f225ca31789d4", "Avalon Hill, Jean Baer, Bill 'Rebecca Ann' Heineman, Jim Jacob", "5005002", "Out of Control (1983) (Avalon Hill)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "216", "", "" }, + { "f98d2276d4a25b286135566255aea9d0", "Digitel", "", "Name This Game (1983) (Digitel)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f98d869f287d2ce4f8fb36e0686929d9", "", "", "Skeleton+ (17-04-2003) (Eric Ball) (NTSC)", "", "", "STEREO", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f992a39b46aa48188fab12ad3809ae4a", "", "", "Sky Jinks (Unknown) (PAL) (Hack)", "", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f9967369943209b4788d4e92cefc0795", "Atari", "CX26163P", "Fishing (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Fishing Derby", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f9cef637ea8e905a10e324e582dd39c2", "CCE", "", "Private Eye (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f9d51a4e5f8b48f68770c89ffd495ed1", "Atari, Tod Frye, Mimi Nyden", "CX2657", "SwordQuest - FireWorld (1982) (Atari)", "AKA Adventure II, SwordQuest II - FireWorld", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f9da42f91a1c5cfa344d2ff440c6f8d4", "ZUT", "", "Pac Invaders (ZUT)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f9de91d868d6ebfb0076af9063d7195e", "", "", "Maze Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f9e99596345a84358bc5d1fbe877134b", "Activision, Larry Kaplan, David Crane - Ariola", "EAG-010, PAG-010 - 711 010-720", "Kaboom! (1981) (Activision) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "01 50", "", "", "", "", "" }, + { "fa0570561aa80896f0ead05c46351389", "Tigervision", "7-008", "Miner 2049er (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "28", "214", "", "" }, + { "fa1b060fd8e0bca0c2a097dcffce93d3", "Atari - CCW, Christopher H. Omarzu, Preston Stuart, Bruce Williams", "CX26101", "Oscar's Trash Race (1984) (Atari)", "Uses the Keypad Controllers", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, + { "fa2be8125c3c60ab83e1c0fe56922fcb", "Camelot - DSD, Michael Doherty, Clyde Hager - Johnson & Johnson", "", "Tooth Protectors (1983) (Camelot)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "fa3de71841c0841db6a741884a6b6b2f", "", "", "Warring Worms (17-02-2002) (Billy Eno)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fa4404fabc094e3a31fcd7b559cdd029", "Atari, Alan J. Murphy, Robert C. Polaro", "CX26100", "Bugs Bunny (1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fa529ec88eca679f6d5fd0ccb2120e46", "", "", "20 Sprites at Once Demo 1 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fa6fe97a10efb9e74c0b5a816e6e1958", "ZiMAG - Emag - Vidco", "707-111 - GN-030", "Tanks But No Tanks (1983) (ZiMAG)", "AKA Phantom Tank", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fa73f3c77ba76763e00e12d5458b6c5d", "Probe 2000, Roger Booth, Todd Marshall, Robbin Daniels, Jim Wickstead", "3152VC", "Pursuit of the Pink Panther (Probe) (Prototype)", "AKA Adventures of the Pink Panther", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fa7ce62e7fd77e02b3e2198d70742f80", "Atari, Peter C. Niday", "CX26108", "Donald Duck's Speedboat (04-18-1983) (Atari) (Prototype) (PAL)", "AKA Donald Duck's Regatta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fa7e11a3dbea4365975cd2f094e61d25", "Tim Snider", "", "Mystery Science Theater 2600 (1999) (Tim Snider) (Hack)", "Hack of Megamania", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fa98d48cd609c9babc819e0a1bd8d598", "AtariAge (Chris Walton)", "", "Juno First (2009) (PAL60)", "AtariVox supported", "Homebrew", "", "", "", "", "", "", "", "", "ATARIVOX", "", "", "PAL60", "", "", "YES", "" }, + { "fabca526d57de46768b392f758f1a008", "", "", "Laseresal 2600 (16-12-2001) (Andrew Wallace) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fac28963307b6e85082ccd77c88325e7", "CCE", "", "Berzerk (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fadb89f9b23beb4d43a7895c532757e2", "Galaga Games", "", "River Raid (1984) (Galaga Games) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fae0b86934a7c5a362281dffebdb43a0", "Retroactive", "", "Qb (2.07) (Retroactive) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "faebcb2ef1f3831b2fc1dbd39d36517c", "Atari, Jerome Domurat, Steve Woita", "CX2696", "Asterix (1984) (Atari) (PAL)", "AKA Taz", "Extremely Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "faed2ef6b44894f8c83f2b50891c35c6", "CCE", "", "Super Baseball (CCE)", "AKA RealSports Baseball", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "faffd84f3a8eceee2fa5ea5b0a3e6678", "Suntek", "SS-025", "Spectracube Invasion (Suntek) (PAL)", "AKA Immies & Aggies", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fb09ee4ccd47ae74a3c314f0d8a40344", "", "", "Titans (SnailSoft)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fb0c32ef7af5b45486db663510094be8", "", "", "Demo Image Series #15 - Three Marios (NTSC) (Non-Interleave) (06-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fb0e84cee4c108d24253bcb7e382cffd", "", "", "Interleaved ChronoColour Demo (SECAM) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fb27afe896e7c928089307b32e5642ee", "M Network - APh Technological Consulting, Jeff Ronne, Brett Stutz - INTV", "MT5662", "TRON - Deadly Discs (1983) (M Network)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fb4ca865abc02d66e39651bd9ade140a", "Arcadia Corporation, Brian McGhie", "AR-4104", "Rabbit Transit (1983) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fb531febf8e155328ec0cd39ef77a122", "", "", "Worm War I (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "fb5c8af97bd8ffe88323656f462645a7", "", "", "Interlace Demo (Glenn Saunders)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "fb833ed50c865a9a505a125fc9d79a7e", "ITT Family Games", "", "Pumuckl I (1983) (ITT Family Games) (PAL)", "AKA Panda Chase", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "220", "", "" }, + { "fb884ffd89013331a6f01ae3f6abd214", "Activision, David Crane", "", "Venetian Blinds Demo (1982) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fb88c400d602fe759ae74ef1716ee84e", "20th Century Fox Video Games, Bill Aspromonte", "11031", "Crash Dive (1983) (20th Century Fox)", "AKA Voyage to the Bottom of the Sea", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fb91da78455d9b1606913fbf8c859772", "", "", "Split Screen (Ballblazer) Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fb91dfc36cddaa54b09924ae8fd96199", "Parker Brothers, Mark Lesser", "PB5590", "Frogger II (1984) (Parker Bros) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "fbac6476e7b2b20d246202af81662c88", "Starpath Corporation, Stephen H. Landrum", "AR-4400", "Dragonstomper (Preview) (1982) (Starpath) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fbb0151ea2108e33b2dbaae14a1831dd", "Thomas Jentzsch", "", "Robot Tank TV (Thomas Jentzsch) (Hack)", "Uses two simultaneous Joystick Controllers, Hack of Robot Tank", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fbb4f3debf48dc961b559384467f2057", "Digitel", "", "River Raid III (1985) (Digitel)", "AKA River Raid", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fbd6102e17a5c02c6e1911381b7203f9", "", "", "Star Fire - Warping!! (10-04-2003) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fbe554aa8f759226d251ba6b64a9cce4", "Atari - GCC, Mike Feinstein, Brad Rice", "CX2681, CX2681P", "Battlezone (1983) (Atari) (PAL)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fbfebee9c14694719e3eda4854dc42ee", "Jake Patterson", "", "Baubles 3 (Jake Patterson) (PD)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fc2104dd2dadf9a6176c1c1c8f87ced9", "Coleco - Woodside Design Associates, Harley H. Puthuff Jr.", "2663", "Time Pilot (1983) (Coleco)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fc2233fc116faef0d3c31541717ca2db", "Atari, Tod Frye", "CX2646", "Pac-Man (1982) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fc24a94d4371c69bc58f5245ada43c44", "Atari - Axlon, Steve DeFrisco", "CX26170", "Secret Quest (1989) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fc6052438f339aea373bbc999433388a", "Atari, David Crane", "CX2653P", "Slot Machine (1979) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fc668a2251dd79cbd903d4fa0e558f96", "", "", "Thrust (V1.1) (2000) (TJ) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fc92d74f073a44bc6e46a3b3fa8256a2", "", "", "Megademo (19xx) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fc9c1652fe3a2cade6188f4d3692481f", "Andrew Davies", "", "Andrew Davies early notBoulderDash demo (NTSC)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "fca4a5be1251927027f2c24774a02160", "Activision, John Van Ryzin", "AZ-036-04", "H.E.R.O. (1984) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fcbbd0a407d3ff7bf857b8a399280ea1", "ZiMAG - Emag - Vidco", "GN-070", "Mysterious Thief, A (1983) (ZiMAG) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "fcbdf405f0fc2027b0ea45bb5af94c1a", "Amiga - Video Soft, Michael K. Glass, Jerry Lawson", "", "3-D Ghost Attack (1983) (Amiga) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fcea12625c071ddc49f4e409f4038c60", "Fabrizio Zavagli", "", "Balls! (16-09-2002) (Fabrizio Zavagli)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "fcf8e306f6615f74feba5cb25550038c", "", "", "Blue Dot Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fd0e5148162e8ec6719445d559f018a9", "Activision, Steve Cartwright - Ariola", "EAX-022, EAX-022-04I - 711 022-720", "Seaquest (1983) (Activision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fd10915633aea4f9cd8b518a25d62b55", "Atari, John Dunn", "CX2631, CX2631P", "Superman (1979) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fd16949913aaab5beaefed73bf2ca67c", "Atari - GCC, John Allred, Mike Feinstein", "CX2688", "Jungle Hunt (02-03-1983) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fd4f5536fd80f35c64d365df85873418", "Atari - Bobco, Robert C. Polaro", "CX26140", "Desert Falcon (1987) (Atari)", "AKA Nile Flyer, Sphinx", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fd6e507b5df68beeeddeaf696b6828fa", "", "", "Boxing (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fd7464edaa8cc264b97ba0d13e7f0678", "HES", "771-333", "2 Pak Special - Challenge, Surfing (1990) (HES) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fd78f186bdff83fbad7f97cb583812fe", "Amiga - Video Soft", "3125", "Surf's Up (1983) (Amiga) (Prototype) [a2]", "Uses the Joyboard controller", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fd8b4ee0d57605b35e236e814f706ff1", "Atari - GCC, Mike Feinstein, John Mracek", "CX2673, CX2673P", "Phoenix (1982) (Atari) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fd9b321cee5fbb32c39ba3ca5d9ec7cf", "Jeffry Johnston", "", "Radial Pong - Version 5 (Jeffry Johnston) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fdd4995a50395db14f518f63c2d63438", "", "", "Oh No! (Version 3) (18-01-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fde42e39710e75e9e4d4d75440f8e4e5", "", "", "Coke Zero (v1.0) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "35", "", "", "" }, + { "fdf0de38517e0cf7f0885f98ccc95836", "Arcadia Corporation, Dennis Caswell", "AR-4200", "Escape from the Mindmaster (2 of 4) (1982) (Arcadia)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fdf6680b2b1e8054293a39700a765692", "", "", "Alpha Demo - The Beta Demo 2 (2000) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fe0b7f27e3ad50bbf9ff468ee56d553d", "", "", "Lines Demo (Eckhard Stolberg) (PAL) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fe0bc4bb92c1c4de7d5706aaa8d8c10d", "", "", "Sprite Demo 2 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fe3b461d4c8b179fe68bc77760294c25", "Atari, Joe Decuir", "CX2621, CX2621P", "Video Olympics (1977) (Atari) (PAL) (4K)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "", "", "", "", "", "" }, + { "fe67087f9c22655ce519616fc6c6ef4d", "Atari - Zip Technology, Randy Bowker, Bruce Williams", "CX26142", "Crack'ed (11-28-1988) (Atari) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fe6abc0f63e31e2646c9c600926b5b7f", "Atari", "CX26137", "4 in 1 (02-19-1987) (Atari) (Prototype)", "Home Run, Canyon Bomber, Sky Diver, Night Driver", "Prototype", "", "", "4IN1", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fe870018332a0221eb59fb18b0c6bccc", "", "", "Incoming (08-11-2002) (Ben Larson) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fe9ae625d924b54c9f8a14ac9a0f6c6d", "BG Dodson", "", "High Bid! (BG Dodson) (Hack)", "Hack of Pepsi Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "feba8686fd0376015258d1152923958a", "", "", "Super Circus (Unknown) (PAL)", "AKA Circus Atari", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fec0c2e2ab0588ed20c750b58cf3baa3", "Activision - Cheshire Engineering, David Rolfe, Larry Zwick", "EAZ-037-04, EAZ-037-04I", "Beamrider (1984) (Activision) (PAL)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "fece458a8023a809a5006867feca40e8", "", "", "SCSIcide (24-02-2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "feec54aac911887940b47fe8c9f80b11", "Atari, Rob Fulop", "CX2633, CX2633P", "Night Driver (1980) (Atari) (PAL)", "Uses the Paddle Controllers (left only)", "", "", "", "", "", "", "", "", "PADDLES", "", "", "AUTO 65", "", "", "", "YES", "" }, + { "feedcc20bc3ca34851cd5d9e38aa2ca6", "Atari, David Crane - Sears", "CX2607 - 6-99828, 49-75115", "Canyon Bomber (1979) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "", "YES", "10", "", "", "", "", "" }, + { "ff3bd0c684f7144aeaa18758d8281a78", "Atari, Bob Whitehead", "CX2651", "Blackjack (1977) (Atari) (PAL)", "Uses the Paddle Controllers", "Rare", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, + { "ff5a9e340d96df6f5a5b6eb038e923bd", "", "", "Space Shuttle (1983) (Activision) [t1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ff7627207e8aa03730c35c735a82c26c", "Atari, Bob Whitehead", "CX26163P", "Blackjack (32 in 1) (1988) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXIS", "", "", "", "", "", "", "", "" }, + { "ff86fc8ffa717bb095e8471638c1c31c", "Arcadia Corporation, Dennis Caswell", "AR-4302", "Party Mix - Bop a Buggy (1 of 3) (1983) (Arcadia) (PAL)", "Uses Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "", "01 56", "", "", "", "", "" }, + { "ff87d58125ae517eb7b09a0475a1ccdc", "", "", "SCSIcide (Score Hack 1) (24-02-2001) (Joe Grand) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ffb1cd548563158ce33f9d10268187e7", "Erik Eid", "", "Euchre (Beta) (NTSC) (12-09-2002) (Erik Eid)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ffc0ff4305dd46b4b459885bd1818e2e", "Barry Laws Jr.", "", "Star Wars - The Battle of Alderaan (Star Strike Hack)", "Hack of Star Strike (Mattel)", "New Release (Hack)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ffdc0eb3543404eb4c353fbdddfa33b6", "CCE", "C-827", "Chopper Command (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ffe51989ba6da2c6ae5a12d277862e16", "Atari - Sears", "CX2627 - 6-99841", "Human Cannonball (1979) (Atari) (4K)", "AKA Cannon Man", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ffebb0070689b9d322687edd9c0a2bae", "", "", "Spitfire Attack (1983) (Milton Bradley) [h1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" } }; #endif diff --git a/src/emucore/Props.cxx b/src/emucore/Props.cxx index 3e412a10d..a24918453 100644 --- a/src/emucore/Props.cxx +++ b/src/emucore/Props.cxx @@ -244,6 +244,7 @@ void Properties::print() const << get(Cartridge_Note) << "|" << get(Cartridge_Rarity) << "|" << get(Cartridge_Sound) << "|" + << get(Cartridge_StartBank) << "|" << get(Cartridge_Type) << "|" << get(Console_LeftDifficulty) << "|" << get(Console_RightDifficulty)<< "|" @@ -289,6 +290,7 @@ void Properties::printHeader() << "Cartridge_Note|" << "Cartridge_Rarity|" << "Cartridge_Sound|" + << "Cartridge_StartBank|" << "Cartridge_Type|" << "Console_LeftDifficulty|" << "Console_RightDifficulty|" @@ -315,6 +317,7 @@ string Properties::ourDefaultProperties[LastPropType] = { "", // Cartridge.Note "", // Cartridge.Rarity "MONO", // Cartridge.Sound + "", // Cartridge.StartBank "AUTO", // Cartridge.Type "B", // Console.LeftDifficulty "B", // Console.RightDifficulty @@ -340,6 +343,7 @@ const char* const Properties::ourPropertyNames[LastPropType] = { "Cartridge.Note", "Cartridge.Rarity", "Cartridge.Sound", + "Cartridge.StartBank", "Cartridge.Type", "Console.LeftDifficulty", "Console.RightDifficulty", diff --git a/src/emucore/Props.hxx b/src/emucore/Props.hxx index 678e1c7e0..b961f3413 100644 --- a/src/emucore/Props.hxx +++ b/src/emucore/Props.hxx @@ -28,6 +28,7 @@ enum PropertyType { Cartridge_Note, Cartridge_Rarity, Cartridge_Sound, + Cartridge_StartBank, Cartridge_Type, Console_LeftDifficulty, Console_RightDifficulty, diff --git a/src/tools/PropSet.pm b/src/tools/PropSet.pm index 198cde297..fbb50a2d2 100755 --- a/src/tools/PropSet.pm +++ b/src/tools/PropSet.pm @@ -10,20 +10,21 @@ my %prop_type = ( "Cartridge.Note" => 4, "Cartridge.Rarity" => 5, "Cartridge.Sound" => 6, - "Cartridge.Type" => 7, - "Console.LeftDifficulty" => 8, - "Console.RightDifficulty" => 9, - "Console.TelevisionType" => 10, - "Console.SwapPorts" => 11, - "Controller.Left" => 12, - "Controller.Right" => 13, - "Controller.SwapPaddles" => 14, - "Controller.MouseAxis" => 15, - "Display.Format" => 16, - "Display.YStart" => 17, - "Display.Height" => 18, - "Display.Phosphor" => 19, - "Display.PPBlend" => 20 + "Cartridge.StartBank" => 7, + "Cartridge.Type" => 8, + "Console.LeftDifficulty" => 9, + "Console.RightDifficulty" => 10, + "Console.TelevisionType" => 11, + "Console.SwapPorts" => 12, + "Controller.Left" => 13, + "Controller.Right" => 14, + "Controller.SwapPaddles" => 15, + "Controller.MouseAxis" => 16, + "Display.Format" => 17, + "Display.YStart" => 18, + "Display.Height" => 19, + "Display.Phosphor" => 20, + "Display.PPBlend" => 21 ); my @prop_type_as_string = ( "Cartridge.MD5", @@ -33,6 +34,7 @@ my @prop_type_as_string = ( "Cartridge.Note", "Cartridge.Rarity", "Cartridge.Sound", + "Cartridge.StartBank", "Cartridge.Type", "Console.LeftDifficulty", "Console.RightDifficulty", @@ -57,6 +59,7 @@ my @prop_defaults = ( "", "", "MONO", + "", "AUTO", "B", "B", From 2f9fc4f525340a4aecc9b1d58582223342ef290e Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Thu, 13 Sep 2018 23:23:21 +0200 Subject: [PATCH 118/126] Bug fixing, harcode min ystart to 0. --- .vscode/settings.json | 5 ++++- src/emucore/Console.cxx | 32 ++++++++++++++++++++------------ src/emucore/tia/TIAConstants.hxx | 2 +- src/gui/GameInfoDialog.cxx | 13 ++++++++----- 4 files changed, 33 insertions(+), 19 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index ee4e3bcc3..c00ccb459 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -64,6 +64,9 @@ "__hash_table": "cpp", "array": "cpp", "queue": "cpp", - "unordered_map": "cpp" + "unordered_map": "cpp", + "istream": "cpp", + "thread": "cpp", + "utility": "cpp" } } diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index c79f76780..c937d3e93 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -680,10 +680,9 @@ void Console::changeYStart(int direction) } else if(direction == -1) // decrease YStart { - if(ystart == TIAConstants::minYStart-1 && myAutodetectedYstart > 0) + if(ystart == 0) { - myOSystem.frameBuffer().showMessage("YStart at minimum"); - return; + throw runtime_error("cannot happen"); } --ystart; @@ -694,7 +693,7 @@ void Console::changeYStart(int direction) ostringstream val; val << ystart; - if(ystart == TIAConstants::minYStart-1) { + if(ystart == 0) { redetectYStart(); ystart = myAutodetectedYstart; @@ -707,12 +706,12 @@ void Console::changeYStart(int direction) // We've reached the auto-detect value, so reset myOSystem.frameBuffer().showMessage("YStart " + val.str() + " (Auto)"); val.str(""); - val << TIAConstants::minYStart-1; + val << static_cast(0); } else myOSystem.frameBuffer().showMessage("YStart " + val.str()); - myAutodetectedYstart = false; + myYStartAutodetected = false; } myProperties.set(Display_YStart, val.str()); @@ -723,14 +722,23 @@ void Console::changeYStart(int direction) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Console::updateYStart(uInt32 ystart) { - if (ystart == TIAConstants::minYStart-1 && !myYStartAutodetected) { - redetectYStart(); - ystart = myAutodetectedYstart; - } else if (ystart <= TIAConstants::maxYStart) myYStartAutodetected = false; + if (ystart > TIAConstants::maxYStart) return; - if (ystart <= TIAConstants::maxYStart) { + ostringstream ss; + ss << ystart; + + if (ss.str() == myProperties.get(Display_YStart)) return; + + myProperties.set(Display_YStart, ss.str()); + + if (ystart == 0) { + redetectYStart(); + myTIA->setYStart(myAutodetectedYstart); + myTIA->frameReset(); + } else { myTIA->setYStart(ystart); myTIA->frameReset(); + myYStartAutodetected = false; } } @@ -772,7 +780,7 @@ void Console::setTIAProperties() { uInt32 ystart = atoi(myProperties.get(Display_YStart).c_str()); if(ystart != 0) - ystart = BSPF::clamp(ystart, TIAConstants::minYStart, TIAConstants::maxYStart); + ystart = BSPF::clamp(ystart, 0u, TIAConstants::maxYStart); uInt32 height = atoi(myProperties.get(Display_Height).c_str()); if(height != 0) height = BSPF::clamp(height, TIAConstants::minViewableHeight, TIAConstants::maxViewableHeight); diff --git a/src/emucore/tia/TIAConstants.hxx b/src/emucore/tia/TIAConstants.hxx index fa98c6b54..8f7d60cf8 100644 --- a/src/emucore/tia/TIAConstants.hxx +++ b/src/emucore/tia/TIAConstants.hxx @@ -23,7 +23,7 @@ namespace TIAConstants { constexpr uInt32 frameBufferHeight = 320; - constexpr uInt32 minYStart = 1, maxYStart = 64; + constexpr uInt32 maxYStart = 64; constexpr uInt32 minViewableHeight = 210, maxViewableHeight = 256; constexpr uInt32 initialGarbageFrames = 10; } diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 798ffa941..4aeaf2047 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -307,10 +307,10 @@ GameInfoDialog::GameInfoDialog( t = new StaticTextWidget(myTab, font, HBORDER, ypos+2, "Y-start "); myYStart = new SliderWidget(myTab, font, t->getRight(), ypos, swidth, lineHeight, " ", 0, kYStartChanged, 5 * fontWidth, "px"); - myYStart->setMinValue(TIAConstants::minYStart-1); + myYStart->setMinValue(0); myYStart->setMaxValue(TIAConstants::maxYStart); // one tickmark every ~10 pixel - myYStart->setTickmarkInterval((TIAConstants::maxYStart - (TIAConstants::minYStart-1) + 5) / 10); + myYStart->setTickmarkInterval((TIAConstants::maxYStart + 5) / 10); wid.push_back(myYStart); int iWidth = ifont.getCharWidth('2'); @@ -532,8 +532,6 @@ void GameInfoDialog::saveConfig() // Display properties myGameProperties.set(Display_Format, myFormat->getSelectedTag().toString()); - myGameProperties.set(Display_YStart, myYStart->getValueLabel() == "Auto" ? "0" : - myYStart->getValueLabel()); myGameProperties.set(Display_Height, myHeight->getValueLabel() == "Auto" ? "0" : myHeight->getValueLabel()); myGameProperties.set(Display_Phosphor, myPhosphor->getState() ? "YES" : "NO"); @@ -571,6 +569,11 @@ void GameInfoDialog::saveConfig() instance().frameBuffer().tiaSurface().enablePhosphor(myPhosphor->getState(), myPPBlend->getValue()); if (reset) instance().console().tia().frameReset(); + } else { + myGameProperties.set( + Display_YStart, + myYStart->getValueLabel() == "Auto" ? "0" : myYStart->getValueLabel() + ); } } @@ -703,7 +706,7 @@ void GameInfoDialog::handleCommand(CommandSender* sender, int cmd, } case kYStartChanged: - if(myYStart->getValue() == TIAConstants::minYStart-1) + if(myYStart->getValue() == 0) { myYStart->setValueLabel("Auto"); myYStart->setValueUnit(""); From 1a4e95604cb52a8f246bc1157d9d23b8b72ae0f6 Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Thu, 13 Sep 2018 23:35:21 +0200 Subject: [PATCH 119/126] Fix typo, naming. --- src/common/AudioSettings.cxx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/common/AudioSettings.cxx b/src/common/AudioSettings.cxx index 7e81ebb91..7af42eb32 100644 --- a/src/common/AudioSettings.cxx +++ b/src/common/AudioSettings.cxx @@ -19,9 +19,9 @@ #include "Settings.hxx" namespace { - uInt32 convertInt(int x, int defaultValue) + uInt32 lboundInt(int x, int defaultValue) { - return x <= defaultValue ? defaultValue : x; + return x <= 0 ? defaultValue : x; } AudioSettings::Preset normalizedPreset(int numericPreset) @@ -107,14 +107,14 @@ AudioSettings::Preset AudioSettings::preset() uInt32 AudioSettings::sampleRate() { updatePresetFromSettings(); - return customSettings() ? convertInt(mySettings.getInt(SETTING_SAMPLE_RATE), DEFAULT_SAMPLE_RATE) : myPresetSampleRate; + return customSettings() ? lboundInt(mySettings.getInt(SETTING_SAMPLE_RATE), DEFAULT_SAMPLE_RATE) : myPresetSampleRate; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - uInt32 AudioSettings::fragmentSize() { updatePresetFromSettings(); - return customSettings() ? convertInt(mySettings.getInt(SETTING_FRAGMENT_SIZE), DEFAULT_FRAGMENT_SIZE) : myPresetFragmentSize; + return customSettings() ? lboundInt(mySettings.getInt(SETTING_FRAGMENT_SIZE), DEFAULT_FRAGMENT_SIZE) : myPresetFragmentSize; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -122,7 +122,7 @@ uInt32 AudioSettings::bufferSize() { updatePresetFromSettings(); // 0 is a valid value -> keep it - return customSettings() ? convertInt(mySettings.getInt(SETTING_BUFFER_SIZE), 0) : myPresetBufferSize; + return customSettings() ? lboundInt(mySettings.getInt(SETTING_BUFFER_SIZE), 0) : myPresetBufferSize; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -130,7 +130,7 @@ uInt32 AudioSettings::headroom() { updatePresetFromSettings(); // 0 is a valid value -> keep it - return customSettings() ? convertInt(mySettings.getInt(SETTING_HEADROOM), 0) : myPresetHeadroom; + return customSettings() ? lboundInt(mySettings.getInt(SETTING_HEADROOM), 0) : myPresetHeadroom; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -151,7 +151,7 @@ string AudioSettings::stereo() const uInt32 AudioSettings::volume() const { // 0 is a valid value -> keep it - return convertInt(mySettings.getInt(SETTING_VOLUME), 0); + return lboundInt(mySettings.getInt(SETTING_VOLUME), 0); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 524943354e3403eeb089fc8d6dcd45bcdd3eaad0 Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Fri, 14 Sep 2018 00:34:21 +0200 Subject: [PATCH 120/126] Remove unnecessary frame resets. --- src/emucore/Console.cxx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index c937d3e93..c794690f7 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -716,7 +716,6 @@ void Console::changeYStart(int direction) myProperties.set(Display_YStart, val.str()); myTIA->setYStart(ystart); - myTIA->frameReset(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -734,10 +733,8 @@ void Console::updateYStart(uInt32 ystart) if (ystart == 0) { redetectYStart(); myTIA->setYStart(myAutodetectedYstart); - myTIA->frameReset(); } else { myTIA->setYStart(ystart); - myTIA->frameReset(); myYStartAutodetected = false; } } @@ -766,7 +763,6 @@ void Console::changeHeight(int direction) return; myTIA->setHeight(height); - myTIA->frameReset(); initializeVideo(); // takes care of refreshing the screen ostringstream val; From d18f11afa2fe47dd813044f7c69854df3b8582ab Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Thu, 13 Sep 2018 20:50:23 -0230 Subject: [PATCH 121/126] Remove Serializable::name() method, and all reference to it in state files. - this both speeds up load/save of state files, and makes them smaller - affects both on-disk files, and Time Machine functionality --- Changes.txt | 4 +++ src/common/StateManager.cxx | 13 ++-------- src/emucore/Cart.hxx | 7 ++++++ src/emucore/Cart0840.cxx | 4 --- src/emucore/Cart2K.cxx | 25 ++----------------- src/emucore/Cart3E.cxx | 4 --- src/emucore/Cart3EPlus.cxx | 3 --- src/emucore/Cart3F.cxx | 4 --- src/emucore/Cart4A50.cxx | 5 ---- src/emucore/Cart4K.cxx | 25 ++----------------- src/emucore/Cart4KSC.cxx | 4 --- src/emucore/CartAR.cxx | 5 ---- src/emucore/CartBF.cxx | 4 --- src/emucore/CartBFSC.cxx | 4 --- src/emucore/CartBUS.cxx | 5 ---- src/emucore/CartCDF.cxx | 5 ---- src/emucore/CartCM.cxx | 4 --- src/emucore/CartCTY.cxx | 4 --- src/emucore/CartCV.cxx | 4 --- src/emucore/CartCVPlus.cxx | 4 --- src/emucore/CartDASH.cxx | 3 --- src/emucore/CartDF.cxx | 4 --- src/emucore/CartDFSC.cxx | 4 --- src/emucore/CartDPC.cxx | 5 ---- src/emucore/CartDPCPlus.cxx | 5 ---- src/emucore/CartE0.cxx | 4 --- src/emucore/CartEF.cxx | 4 --- src/emucore/CartEFSC.cxx | 4 --- src/emucore/CartF0.cxx | 4 --- src/emucore/CartF4.cxx | 4 --- src/emucore/CartF4SC.cxx | 4 --- src/emucore/CartF6.cxx | 4 --- src/emucore/CartF6SC.cxx | 4 --- src/emucore/CartF8.cxx | 4 --- src/emucore/CartF8SC.cxx | 4 --- src/emucore/CartFA.cxx | 4 --- src/emucore/CartFA2.cxx | 4 --- src/emucore/CartFE.cxx | 4 --- src/emucore/CartMDM.cxx | 4 --- src/emucore/CartMNetwork.cxx | 4 --- src/emucore/CartSB.cxx | 4 --- src/emucore/CartUA.cxx | 4 --- src/emucore/CartWD.cxx | 4 --- src/emucore/CartX07.cxx | 4 --- src/emucore/Console.hxx | 7 ------ src/emucore/Control.hxx | 2 +- src/emucore/Device.hxx | 7 ------ src/emucore/M6502.cxx | 9 ------- src/emucore/M6502.hxx | 7 ------ src/emucore/M6532.cxx | 5 ---- src/emucore/M6532.hxx | 7 ------ src/emucore/NullDev.hxx | 7 ------ src/emucore/Random.hxx | 11 -------- src/emucore/Serializable.hxx | 7 ------ src/emucore/Switches.hxx | 7 ------ src/emucore/System.cxx | 4 --- src/emucore/System.hxx | 7 ------ src/emucore/tia/Audio.cxx | 10 -------- src/emucore/tia/Audio.hxx | 1 - src/emucore/tia/AudioChannel.cxx | 10 -------- src/emucore/tia/AudioChannel.hxx | 1 - src/emucore/tia/Background.cxx | 5 ---- src/emucore/tia/Background.hxx | 1 - src/emucore/tia/Ball.cxx | 5 ---- src/emucore/tia/Ball.hxx | 1 - src/emucore/tia/DelayQueue.hxx | 8 ------ src/emucore/tia/DelayQueueMember.hxx | 8 ------ src/emucore/tia/LatchedInput.cxx | 5 ---- src/emucore/tia/LatchedInput.hxx | 1 - src/emucore/tia/Missile.cxx | 5 ---- src/emucore/tia/Missile.hxx | 1 - src/emucore/tia/PaddleReader.cxx | 5 ---- src/emucore/tia/PaddleReader.hxx | 1 - src/emucore/tia/Player.cxx | 5 ---- src/emucore/tia/Player.hxx | 1 - src/emucore/tia/Playfield.cxx | 5 ---- src/emucore/tia/Playfield.hxx | 1 - src/emucore/tia/TIA.cxx | 5 ---- src/emucore/tia/TIA.hxx | 7 ------ .../frame-manager/AbstractFrameManager.cxx | 10 +++----- .../frame-manager/AbstractFrameManager.hxx | 6 ----- .../tia/frame-manager/FrameManager.hxx | 2 -- .../tia/frame-manager/JitterEmulation.cxx | 10 +++----- .../tia/frame-manager/JitterEmulation.hxx | 2 -- src/gui/GameInfoDialog.cxx | 4 ++- 85 files changed, 29 insertions(+), 418 deletions(-) diff --git a/Changes.txt b/Changes.txt index c90164f26..1cf867851 100644 --- a/Changes.txt +++ b/Changes.txt @@ -90,6 +90,10 @@ This fixes popping and cracking sounds apparent on some systems, notably OSX when toggling windowed/fullscreen mode. + * State file format has been optimized to be smaller, and faster loading + and saving. This affects both the files saved to your computer as well + as Time Machine functionality. + * Updated PAL palette. * Added recently released 'Arkyology' prototype ROM to the database. diff --git a/src/common/StateManager.cxx b/src/common/StateManager.cxx index 751550288..1351f8a03 100644 --- a/src/common/StateManager.cxx +++ b/src/common/StateManager.cxx @@ -27,7 +27,7 @@ #include "StateManager.hxx" -#define STATE_HEADER "05099100state" +#define STATE_HEADER "05099200state" // #define MOVIE_HEADER "03030000movie" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -229,8 +229,6 @@ void StateManager::loadState(int slot) { if(in.getString() != STATE_HEADER) buf << "Incompatible state " << slot << " file"; - else if(in.getString() != myOSystem.console().cartridge().name()) - buf << "State " << slot << " file doesn't match current ROM"; else { if(myOSystem.console().load(in)) @@ -275,9 +273,6 @@ void StateManager::saveState(int slot) // Add header so that if the state format changes in the future, // we'll know right away, without having to parse the rest of the file out.putString(STATE_HEADER); - - // Sanity check; prepend the cart type/name - out.putString(myOSystem.console().cartridge().name()); } catch(...) { @@ -325,10 +320,9 @@ bool StateManager::loadState(Serializer& in) // Make sure the file can be opened for reading if(in) { - // First test if we have a valid header and cart type + // First test if we have a valid header // If so, do a complete state load using the Console return in.getString() == STATE_HEADER && - in.getString() == myOSystem.console().cartridge().name() && myOSystem.console().load(in); } } @@ -354,9 +348,6 @@ bool StateManager::saveState(Serializer& out) // we'll know right away, without having to parse the rest of the file out.putString(STATE_HEADER); - // Sanity check; prepend the cart type/name - out.putString(myOSystem.console().cartridge().name()); - // Do a complete state save using the Console if(myOSystem.console().save(out)) return true; diff --git a/src/emucore/Cart.hxx b/src/emucore/Cart.hxx index 4d19ccb97..e67ebb73e 100644 --- a/src/emucore/Cart.hxx +++ b/src/emucore/Cart.hxx @@ -145,6 +145,13 @@ class Cartridge : public Device */ virtual const uInt8* getImage(uInt32& size) const = 0; + /** + Get a descriptor for the cart name. + + @return The name of the object + */ + virtual string name() const = 0; + /** Informs the cartridge about the name of the ROM file used when creating this cart. diff --git a/src/emucore/Cart0840.cxx b/src/emucore/Cart0840.cxx index f1b9b67d1..5f9b78426 100644 --- a/src/emucore/Cart0840.cxx +++ b/src/emucore/Cart0840.cxx @@ -177,7 +177,6 @@ bool Cartridge0840::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); } catch(...) @@ -194,9 +193,6 @@ bool Cartridge0840::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); } catch(...) diff --git a/src/emucore/Cart2K.cxx b/src/emucore/Cart2K.cxx index 454e0b29d..e98fdfc89 100644 --- a/src/emucore/Cart2K.cxx +++ b/src/emucore/Cart2K.cxx @@ -85,34 +85,13 @@ const uInt8* Cartridge2K::getImage(uInt32& size) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge2K::save(Serializer& out) const +bool Cartridge2K::save(Serializer&) const { - try - { - out.putString(name()); - } - catch(...) - { - cerr << "ERROR: Cartridge2K::save" << endl; - return false; - } - return true; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge2K::load(Serializer& in) +bool Cartridge2K::load(Serializer&) { - try - { - if(in.getString() != name()) - return false; - } - catch(...) - { - cerr << "ERROR: Cartridge2K::load" << endl; - return false; - } - return true; } diff --git a/src/emucore/Cart3E.cxx b/src/emucore/Cart3E.cxx index d8850f699..9022e6961 100644 --- a/src/emucore/Cart3E.cxx +++ b/src/emucore/Cart3E.cxx @@ -239,7 +239,6 @@ bool Cartridge3E::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myCurrentBank); out.putByteArray(myRAM, 32768); } @@ -257,9 +256,6 @@ bool Cartridge3E::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myCurrentBank = in.getShort(); in.getByteArray(myRAM, 32768); } diff --git a/src/emucore/Cart3EPlus.cxx b/src/emucore/Cart3EPlus.cxx index de2ead52e..6bf9a929e 100644 --- a/src/emucore/Cart3EPlus.cxx +++ b/src/emucore/Cart3EPlus.cxx @@ -302,7 +302,6 @@ bool Cartridge3EPlus::save(Serializer& out) const { try { - out.putString(name()); out.putShortArray(bankInUse, 8); out.putByteArray(myRAM, RAM_TOTAL_SIZE); } @@ -319,8 +318,6 @@ bool Cartridge3EPlus::load(Serializer& in) { try { - if (in.getString() != name()) - return false; in.getShortArray(bankInUse, 8); in.getByteArray(myRAM, RAM_TOTAL_SIZE); } diff --git a/src/emucore/Cart3F.cxx b/src/emucore/Cart3F.cxx index 30dc15b22..55e798313 100644 --- a/src/emucore/Cart3F.cxx +++ b/src/emucore/Cart3F.cxx @@ -172,7 +172,6 @@ bool Cartridge3F::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myCurrentBank); } catch(...) @@ -189,9 +188,6 @@ bool Cartridge3F::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myCurrentBank = in.getShort(); } catch(...) diff --git a/src/emucore/Cart4A50.cxx b/src/emucore/Cart4A50.cxx index 246d03787..758162ade 100644 --- a/src/emucore/Cart4A50.cxx +++ b/src/emucore/Cart4A50.cxx @@ -367,8 +367,6 @@ bool Cartridge4A50::save(Serializer& out) const { try { - out.putString(name()); - // The 32K bytes of RAM out.putByteArray(myRAM, 32768); @@ -400,9 +398,6 @@ bool Cartridge4A50::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - in.getByteArray(myRAM, 32768); // Index pointers diff --git a/src/emucore/Cart4K.cxx b/src/emucore/Cart4K.cxx index 3fd758795..593cc10c8 100644 --- a/src/emucore/Cart4K.cxx +++ b/src/emucore/Cart4K.cxx @@ -66,34 +66,13 @@ const uInt8* Cartridge4K::getImage(uInt32& size) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4K::save(Serializer& out) const +bool Cartridge4K::save(Serializer&) const { - try - { - out.putString(name()); - } - catch(...) - { - cerr << "ERROR: Cartridge4K::save" << endl; - return false; - } - return true; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge4K::load(Serializer& in) +bool Cartridge4K::load(Serializer&) { - try - { - if(in.getString() != name()) - return false; - } - catch(...) - { - cerr << "ERROR: Cartridge4K::load" << endl; - return false; - } - return true; } diff --git a/src/emucore/Cart4KSC.cxx b/src/emucore/Cart4KSC.cxx index a4cef71b2..d3f430fdb 100644 --- a/src/emucore/Cart4KSC.cxx +++ b/src/emucore/Cart4KSC.cxx @@ -118,7 +118,6 @@ bool Cartridge4KSC::save(Serializer& out) const { try { - out.putString(name()); out.putByteArray(myRAM, 128); } catch(...) @@ -135,9 +134,6 @@ bool Cartridge4KSC::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - in.getByteArray(myRAM, 128); } catch(...) diff --git a/src/emucore/CartAR.cxx b/src/emucore/CartAR.cxx index 738759e79..c33697e65 100644 --- a/src/emucore/CartAR.cxx +++ b/src/emucore/CartAR.cxx @@ -436,8 +436,6 @@ bool CartridgeAR::save(Serializer& out) const { try { - out.putString(name()); - // Indicates the offest within the image for the corresponding bank out.putIntArray(myImageOffset, 2); @@ -483,9 +481,6 @@ bool CartridgeAR::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - // Indicates the offest within the image for the corresponding bank in.getIntArray(myImageOffset, 2); diff --git a/src/emucore/CartBF.cxx b/src/emucore/CartBF.cxx index f3d5a6e5a..431021854 100644 --- a/src/emucore/CartBF.cxx +++ b/src/emucore/CartBF.cxx @@ -136,7 +136,6 @@ bool CartridgeBF::save(Serializer& out) const { try { - out.putString(name()); out.putInt(myBankOffset); } catch(...) @@ -153,9 +152,6 @@ bool CartridgeBF::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getInt(); } catch(...) diff --git a/src/emucore/CartBFSC.cxx b/src/emucore/CartBFSC.cxx index ccc62f129..6eb4e4df6 100644 --- a/src/emucore/CartBFSC.cxx +++ b/src/emucore/CartBFSC.cxx @@ -184,7 +184,6 @@ bool CartridgeBFSC::save(Serializer& out) const { try { - out.putString(name()); out.putInt(myBankOffset); out.putByteArray(myRAM, 128); } @@ -202,9 +201,6 @@ bool CartridgeBFSC::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getInt(); in.getByteArray(myRAM, 128); } diff --git a/src/emucore/CartBUS.cxx b/src/emucore/CartBUS.cxx index c889d8066..1ce766bda 100644 --- a/src/emucore/CartBUS.cxx +++ b/src/emucore/CartBUS.cxx @@ -546,8 +546,6 @@ bool CartridgeBUS::save(Serializer& out) const { try { - out.putString(name()); - // Indicates which bank is currently active out.putShort(myBankOffset); @@ -589,9 +587,6 @@ bool CartridgeBUS::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - // Indicates which bank is currently active myBankOffset = in.getShort(); diff --git a/src/emucore/CartCDF.cxx b/src/emucore/CartCDF.cxx index 41ed823d4..c9166ecc1 100644 --- a/src/emucore/CartCDF.cxx +++ b/src/emucore/CartCDF.cxx @@ -478,8 +478,6 @@ bool CartridgeCDF::save(Serializer& out) const { try { - out.putString(name()); - // Indicates which bank is currently active out.putShort(myBankOffset); @@ -520,9 +518,6 @@ bool CartridgeCDF::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - // Indicates which bank is currently active myBankOffset = in.getShort(); diff --git a/src/emucore/CartCM.cxx b/src/emucore/CartCM.cxx index 605d54b45..238b4bcf8 100644 --- a/src/emucore/CartCM.cxx +++ b/src/emucore/CartCM.cxx @@ -190,7 +190,6 @@ bool CartridgeCM::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); out.putByte(mySWCHA); out.putByte(myCompuMate->column()); @@ -210,9 +209,6 @@ bool CartridgeCM::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); mySWCHA = in.getByte(); myCompuMate->column() = in.getByte(); diff --git a/src/emucore/CartCTY.cxx b/src/emucore/CartCTY.cxx index 8ff319518..daa2ae2b3 100644 --- a/src/emucore/CartCTY.cxx +++ b/src/emucore/CartCTY.cxx @@ -279,7 +279,6 @@ bool CartridgeCTY::save(Serializer& out) const { try { - out.putString(name()); out.putShort(getBank()); out.putByteArray(myRAM, 64); @@ -305,9 +304,6 @@ bool CartridgeCTY::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - // Remember what bank we were in bank(in.getShort()); in.getByteArray(myRAM, 64); diff --git a/src/emucore/CartCV.cxx b/src/emucore/CartCV.cxx index d6dc9ee0f..465e532f0 100644 --- a/src/emucore/CartCV.cxx +++ b/src/emucore/CartCV.cxx @@ -142,7 +142,6 @@ bool CartridgeCV::save(Serializer& out) const { try { - out.putString(name()); out.putByteArray(myRAM, 1024); } catch(...) @@ -159,9 +158,6 @@ bool CartridgeCV::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - in.getByteArray(myRAM, 1024); } catch(...) diff --git a/src/emucore/CartCVPlus.cxx b/src/emucore/CartCVPlus.cxx index e96146bd1..da3640d0d 100644 --- a/src/emucore/CartCVPlus.cxx +++ b/src/emucore/CartCVPlus.cxx @@ -193,7 +193,6 @@ bool CartridgeCVPlus::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myCurrentBank); out.putByteArray(myRAM, 1024); } @@ -211,9 +210,6 @@ bool CartridgeCVPlus::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myCurrentBank = in.getShort(); in.getByteArray(myRAM, 1024); } diff --git a/src/emucore/CartDASH.cxx b/src/emucore/CartDASH.cxx index fcd94d95b..fe037dcdc 100644 --- a/src/emucore/CartDASH.cxx +++ b/src/emucore/CartDASH.cxx @@ -307,7 +307,6 @@ bool CartridgeDASH::save(Serializer& out) const { try { - out.putString(name()); out.putShortArray(bankInUse, 8); out.putShortArray(segmentInUse, 4); out.putByteArray(myRAM, RAM_TOTAL_SIZE); @@ -325,8 +324,6 @@ bool CartridgeDASH::load(Serializer& in) { try { - if (in.getString() != name()) - return false; in.getShortArray(bankInUse, 8); in.getShortArray(segmentInUse, 4); in.getByteArray(myRAM, RAM_TOTAL_SIZE); diff --git a/src/emucore/CartDF.cxx b/src/emucore/CartDF.cxx index 92bde9087..407759d43 100644 --- a/src/emucore/CartDF.cxx +++ b/src/emucore/CartDF.cxx @@ -132,7 +132,6 @@ bool CartridgeDF::save(Serializer& out) const { try { - out.putString(name()); out.putInt(myBankOffset); } catch(...) @@ -149,9 +148,6 @@ bool CartridgeDF::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getInt(); } catch(...) diff --git a/src/emucore/CartDFSC.cxx b/src/emucore/CartDFSC.cxx index 9a7c7f3ea..a01352541 100644 --- a/src/emucore/CartDFSC.cxx +++ b/src/emucore/CartDFSC.cxx @@ -184,7 +184,6 @@ bool CartridgeDFSC::save(Serializer& out) const { try { - out.putString(name()); out.putInt(myBankOffset); out.putByteArray(myRAM, 128); } @@ -202,9 +201,6 @@ bool CartridgeDFSC::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getInt(); in.getByteArray(myRAM, 128); } diff --git a/src/emucore/CartDPC.cxx b/src/emucore/CartDPC.cxx index a7b5ed0f2..f310fbf15 100644 --- a/src/emucore/CartDPC.cxx +++ b/src/emucore/CartDPC.cxx @@ -445,8 +445,6 @@ bool CartridgeDPC::save(Serializer& out) const { try { - out.putString(name()); - // Indicates which bank is currently active out.putShort(myBankOffset); @@ -486,9 +484,6 @@ bool CartridgeDPC::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - // Indicates which bank is currently active myBankOffset = in.getShort(); diff --git a/src/emucore/CartDPCPlus.cxx b/src/emucore/CartDPCPlus.cxx index 1d8f67598..7ca7b4314 100644 --- a/src/emucore/CartDPCPlus.cxx +++ b/src/emucore/CartDPCPlus.cxx @@ -633,8 +633,6 @@ bool CartridgeDPCPlus::save(Serializer& out) const { try { - out.putString(name()); - // Indicates which bank is currently active out.putShort(myBankOffset); @@ -696,9 +694,6 @@ bool CartridgeDPCPlus::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - // Indicates which bank is currently active myBankOffset = in.getShort(); diff --git a/src/emucore/CartE0.cxx b/src/emucore/CartE0.cxx index 3fbb9b446..b8c77061d 100644 --- a/src/emucore/CartE0.cxx +++ b/src/emucore/CartE0.cxx @@ -200,7 +200,6 @@ bool CartridgeE0::save(Serializer& out) const { try { - out.putString(name()); out.putShortArray(myCurrentSlice, 4); } catch(...) @@ -217,9 +216,6 @@ bool CartridgeE0::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - in.getShortArray(myCurrentSlice, 4); } catch(...) diff --git a/src/emucore/CartEF.cxx b/src/emucore/CartEF.cxx index 1f21efe09..c1f648fdd 100644 --- a/src/emucore/CartEF.cxx +++ b/src/emucore/CartEF.cxx @@ -132,7 +132,6 @@ bool CartridgeEF::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); } catch(...) @@ -149,9 +148,6 @@ bool CartridgeEF::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); } catch(...) diff --git a/src/emucore/CartEFSC.cxx b/src/emucore/CartEFSC.cxx index f37c4b79f..c5c2d7aaa 100644 --- a/src/emucore/CartEFSC.cxx +++ b/src/emucore/CartEFSC.cxx @@ -184,7 +184,6 @@ bool CartridgeEFSC::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); out.putByteArray(myRAM, 128); } @@ -202,9 +201,6 @@ bool CartridgeEFSC::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); in.getByteArray(myRAM, 128); } diff --git a/src/emucore/CartF0.cxx b/src/emucore/CartF0.cxx index 44c91216a..7f141d079 100644 --- a/src/emucore/CartF0.cxx +++ b/src/emucore/CartF0.cxx @@ -144,7 +144,6 @@ bool CartridgeF0::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); } catch(...) @@ -161,9 +160,6 @@ bool CartridgeF0::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); } catch(...) diff --git a/src/emucore/CartF4.cxx b/src/emucore/CartF4.cxx index 9194363ec..b9c47eeb4 100644 --- a/src/emucore/CartF4.cxx +++ b/src/emucore/CartF4.cxx @@ -140,7 +140,6 @@ bool CartridgeF4::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); } catch(...) @@ -157,9 +156,6 @@ bool CartridgeF4::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); } catch(...) diff --git a/src/emucore/CartF4SC.cxx b/src/emucore/CartF4SC.cxx index 66d0abaf6..686ff34eb 100644 --- a/src/emucore/CartF4SC.cxx +++ b/src/emucore/CartF4SC.cxx @@ -190,7 +190,6 @@ bool CartridgeF4SC::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); out.putByteArray(myRAM, 128); } @@ -208,9 +207,6 @@ bool CartridgeF4SC::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); in.getByteArray(myRAM, 128); } diff --git a/src/emucore/CartF6.cxx b/src/emucore/CartF6.cxx index 959870ef5..583cfd538 100644 --- a/src/emucore/CartF6.cxx +++ b/src/emucore/CartF6.cxx @@ -180,7 +180,6 @@ bool CartridgeF6::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); } catch(...) @@ -197,9 +196,6 @@ bool CartridgeF6::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); } catch(...) diff --git a/src/emucore/CartF6SC.cxx b/src/emucore/CartF6SC.cxx index 2befcc68a..828f3b6da 100644 --- a/src/emucore/CartF6SC.cxx +++ b/src/emucore/CartF6SC.cxx @@ -233,7 +233,6 @@ bool CartridgeF6SC::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); out.putByteArray(myRAM, 128); } @@ -251,9 +250,6 @@ bool CartridgeF6SC::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); in.getByteArray(myRAM, 128); } diff --git a/src/emucore/CartF8.cxx b/src/emucore/CartF8.cxx index 1b2cd27e5..387f758e3 100644 --- a/src/emucore/CartF8.cxx +++ b/src/emucore/CartF8.cxx @@ -169,7 +169,6 @@ bool CartridgeF8::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); } catch(...) @@ -186,9 +185,6 @@ bool CartridgeF8::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); } catch(...) diff --git a/src/emucore/CartF8SC.cxx b/src/emucore/CartF8SC.cxx index 424b29f31..8e5bdaec9 100644 --- a/src/emucore/CartF8SC.cxx +++ b/src/emucore/CartF8SC.cxx @@ -213,7 +213,6 @@ bool CartridgeF8SC::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); out.putByteArray(myRAM, 128); } @@ -231,9 +230,6 @@ bool CartridgeF8SC::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); in.getByteArray(myRAM, 128); } diff --git a/src/emucore/CartFA.cxx b/src/emucore/CartFA.cxx index 3e1d52d1d..ddaed396f 100644 --- a/src/emucore/CartFA.cxx +++ b/src/emucore/CartFA.cxx @@ -223,7 +223,6 @@ bool CartridgeFA::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); out.putByteArray(myRAM, 256); } @@ -241,9 +240,6 @@ bool CartridgeFA::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); in.getByteArray(myRAM, 256); } diff --git a/src/emucore/CartFA2.cxx b/src/emucore/CartFA2.cxx index 950f04cbb..b80280a41 100644 --- a/src/emucore/CartFA2.cxx +++ b/src/emucore/CartFA2.cxx @@ -289,7 +289,6 @@ bool CartridgeFA2::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); out.putByteArray(myRAM, 256); } @@ -307,9 +306,6 @@ bool CartridgeFA2::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); in.getByteArray(myRAM, 256); } diff --git a/src/emucore/CartFE.cxx b/src/emucore/CartFE.cxx index 43a82e424..67e7e564c 100644 --- a/src/emucore/CartFE.cxx +++ b/src/emucore/CartFE.cxx @@ -139,7 +139,6 @@ bool CartridgeFE::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); out.putBool(myLastAccessWasFE); } @@ -157,9 +156,6 @@ bool CartridgeFE::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); myLastAccessWasFE = in.getBool(); } diff --git a/src/emucore/CartMDM.cxx b/src/emucore/CartMDM.cxx index 3431b1161..b64e9ff64 100644 --- a/src/emucore/CartMDM.cxx +++ b/src/emucore/CartMDM.cxx @@ -155,7 +155,6 @@ bool CartridgeMDM::save(Serializer& out) const { try { - out.putString(name()); out.putInt(myBankOffset); } catch(...) @@ -172,9 +171,6 @@ bool CartridgeMDM::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getInt(); } catch(...) diff --git a/src/emucore/CartMNetwork.cxx b/src/emucore/CartMNetwork.cxx index 11240abd8..9a65f7ad1 100644 --- a/src/emucore/CartMNetwork.cxx +++ b/src/emucore/CartMNetwork.cxx @@ -252,7 +252,6 @@ bool CartridgeMNetwork::save(Serializer& out) const { try { - out.putString(name()); out.putShortArray(myCurrentSlice, NUM_SEGMENTS); out.putShort(myCurrentRAM); out.putByteArray(myRAM, RAM_SIZE); @@ -270,9 +269,6 @@ bool CartridgeMNetwork::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - in.getShortArray(myCurrentSlice, NUM_SEGMENTS); myCurrentRAM = in.getShort(); in.getByteArray(myRAM, RAM_SIZE); diff --git a/src/emucore/CartSB.cxx b/src/emucore/CartSB.cxx index 1ee0630a1..df01ebc33 100644 --- a/src/emucore/CartSB.cxx +++ b/src/emucore/CartSB.cxx @@ -160,7 +160,6 @@ bool CartridgeSB::save(Serializer& out) const { try { - out.putString(name()); out.putInt(myBankOffset); } catch(...) @@ -177,9 +176,6 @@ bool CartridgeSB::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getInt(); } catch(...) diff --git a/src/emucore/CartUA.cxx b/src/emucore/CartUA.cxx index 166a65003..dc1866c22 100644 --- a/src/emucore/CartUA.cxx +++ b/src/emucore/CartUA.cxx @@ -169,7 +169,6 @@ bool CartridgeUA::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myBankOffset); } catch(...) @@ -186,9 +185,6 @@ bool CartridgeUA::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myBankOffset = in.getShort(); } catch(...) diff --git a/src/emucore/CartWD.cxx b/src/emucore/CartWD.cxx index e2bfc6ac7..9fa631f7c 100644 --- a/src/emucore/CartWD.cxx +++ b/src/emucore/CartWD.cxx @@ -266,7 +266,6 @@ bool CartridgeWD::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myCurrentBank); out.putByteArray(myRAM, 64); out.putLong(myCyclesAtBankswitchInit); @@ -286,9 +285,6 @@ bool CartridgeWD::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myCurrentBank = in.getShort(); in.getByteArray(myRAM, 64); myCyclesAtBankswitchInit = in.getLong(); diff --git a/src/emucore/CartX07.cxx b/src/emucore/CartX07.cxx index d01388dfc..8a47ba37d 100644 --- a/src/emucore/CartX07.cxx +++ b/src/emucore/CartX07.cxx @@ -155,7 +155,6 @@ bool CartridgeX07::save(Serializer& out) const { try { - out.putString(name()); out.putShort(myCurrentBank); } catch(...) @@ -172,9 +171,6 @@ bool CartridgeX07::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myCurrentBank = in.getShort(); } catch(...) diff --git a/src/emucore/Console.hxx b/src/emucore/Console.hxx index fdf37de64..753343197 100644 --- a/src/emucore/Console.hxx +++ b/src/emucore/Console.hxx @@ -149,13 +149,6 @@ class Console : public Serializable */ bool load(Serializer& in) override; - /** - Get a descriptor for this console class (used in error checking). - - @return The name of the object - */ - string name() const override { return "Console"; } - /** Set the properties to those given diff --git a/src/emucore/Control.hxx b/src/emucore/Control.hxx index 999321331..45a6bdd7c 100644 --- a/src/emucore/Control.hxx +++ b/src/emucore/Control.hxx @@ -251,7 +251,7 @@ class Controller : public Serializable /** Returns the name of this controller. */ - string name() const override { return myName; } + string name() const { return myName; } /** Inject a callback to be notified on analog pin updates. diff --git a/src/emucore/Device.hxx b/src/emucore/Device.hxx index a6a717c16..c6fcbb6ae 100644 --- a/src/emucore/Device.hxx +++ b/src/emucore/Device.hxx @@ -79,13 +79,6 @@ class Device : public Serializable */ virtual bool load(Serializer& in) override = 0; - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - virtual string name() const override = 0; - public: /** Get the byte at the specified address diff --git a/src/emucore/M6502.cxx b/src/emucore/M6502.cxx index 48ee7fee0..05a5e539b 100644 --- a/src/emucore/M6502.cxx +++ b/src/emucore/M6502.cxx @@ -400,12 +400,8 @@ void M6502::interruptHandler() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool M6502::save(Serializer& out) const { - const string& CPU = name(); - try { - out.putString(CPU); - out.putByte(A); // Accumulator out.putByte(X); // X index register out.putByte(Y); // Y index register @@ -452,13 +448,8 @@ bool M6502::save(Serializer& out) const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool M6502::load(Serializer& in) { - const string& CPU = name(); - try { - if(in.getString() != CPU) - return false; - A = in.getByte(); // Accumulator X = in.getByte(); // X index register Y = in.getByte(); // Y index register diff --git a/src/emucore/M6502.hxx b/src/emucore/M6502.hxx index b0e496e1a..5be6c1fcd 100644 --- a/src/emucore/M6502.hxx +++ b/src/emucore/M6502.hxx @@ -214,13 +214,6 @@ class M6502 : public Serializable */ bool load(Serializer& in) override; - /** - Get a null terminated string which is the processor's name (i.e. "M6532") - - @return The name of the device - */ - string name() const override { return "M6502"; } - #ifdef DEBUGGER_SUPPORT public: // Attach the specified debugger. diff --git a/src/emucore/M6532.cxx b/src/emucore/M6532.cxx index f455572cd..d27513ef9 100644 --- a/src/emucore/M6532.cxx +++ b/src/emucore/M6532.cxx @@ -368,8 +368,6 @@ bool M6532::save(Serializer& out) const { try { - out.putString(name()); - out.putByteArray(myRAM, 128); out.putInt(myTimer); @@ -403,9 +401,6 @@ bool M6532::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - in.getByteArray(myRAM, 128); myTimer = in.getInt(); diff --git a/src/emucore/M6532.hxx b/src/emucore/M6532.hxx index 1d031150a..138c653bd 100644 --- a/src/emucore/M6532.hxx +++ b/src/emucore/M6532.hxx @@ -100,13 +100,6 @@ class M6532 : public Device */ bool load(Serializer& in) override; - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const override { return "M6532"; } - public: /** Get the byte at the specified address diff --git a/src/emucore/NullDev.hxx b/src/emucore/NullDev.hxx index dba178a8b..92c345a32 100644 --- a/src/emucore/NullDev.hxx +++ b/src/emucore/NullDev.hxx @@ -66,13 +66,6 @@ class NullDevice : public Device */ bool load(Serializer& in) override { return true; } - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const override { return "NullDevice"; } - public: /** Get the byte at the specified address diff --git a/src/emucore/Random.hxx b/src/emucore/Random.hxx index 44510e341..799923f6d 100644 --- a/src/emucore/Random.hxx +++ b/src/emucore/Random.hxx @@ -65,7 +65,6 @@ class Random : public Serializable { try { - out.putString(name()); out.putInt(myValue); } catch(...) @@ -87,9 +86,6 @@ class Random : public Serializable { try { - if(in.getString() != name()) - return false; - myValue = in.getInt(); } catch(...) @@ -101,13 +97,6 @@ class Random : public Serializable return true; } - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const override { return "Random"; } - private: // Indicates the next random number // We make this mutable, since it's not immediately obvious that diff --git a/src/emucore/Serializable.hxx b/src/emucore/Serializable.hxx index 702506065..f28d951e0 100644 --- a/src/emucore/Serializable.hxx +++ b/src/emucore/Serializable.hxx @@ -53,13 +53,6 @@ class Serializable @return False on any errors, else true */ virtual bool load(Serializer& in) = 0; - - /** - Get a descriptor for the object name (used in error checking). - - @return The name of the object - */ - virtual string name() const = 0; }; #endif diff --git a/src/emucore/Switches.hxx b/src/emucore/Switches.hxx index 10433d2f4..b18a7bde2 100644 --- a/src/emucore/Switches.hxx +++ b/src/emucore/Switches.hxx @@ -78,13 +78,6 @@ class Switches : public Serializable */ bool load(Serializer& in) override; - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const override { return "Switches"; } - /** Query the 'Console_TelevisionType' switches bit. diff --git a/src/emucore/System.cxx b/src/emucore/System.cxx index fd8da8fba..2ee59ce74 100644 --- a/src/emucore/System.cxx +++ b/src/emucore/System.cxx @@ -202,7 +202,6 @@ bool System::save(Serializer& out) const { try { - out.putString(name()); out.putLong(myCycles); out.putByte(myDataBusState); @@ -232,9 +231,6 @@ bool System::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myCycles = in.getLong(); myDataBusState = in.getByte(); diff --git a/src/emucore/System.hxx b/src/emucore/System.hxx index 80046e78b..56b7699ac 100644 --- a/src/emucore/System.hxx +++ b/src/emucore/System.hxx @@ -377,13 +377,6 @@ class System : public Serializable */ bool load(Serializer& in) override; - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const override { return "System"; } - private: const OSystem& myOSystem; diff --git a/src/emucore/tia/Audio.cxx b/src/emucore/tia/Audio.cxx index 123f69bd2..1f1e8a935 100644 --- a/src/emucore/tia/Audio.cxx +++ b/src/emucore/tia/Audio.cxx @@ -116,19 +116,11 @@ AudioChannel& Audio::channel1() return myChannel1; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Audio::name() const -{ - return "TIA_Audio"; -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool Audio::save(Serializer& out) const { try { - out.putString(name()); - out.putInt(myCounter); // The queue starts out pristine after loading, so we don't need to save @@ -151,8 +143,6 @@ bool Audio::load(Serializer& in) { try { - if (in.getString() != name()) return false; - myCounter = in.getInt(); if (!myChannel0.load(in)) return false; diff --git a/src/emucore/tia/Audio.hxx b/src/emucore/tia/Audio.hxx index 968c30a9a..06f577bb1 100644 --- a/src/emucore/tia/Audio.hxx +++ b/src/emucore/tia/Audio.hxx @@ -44,7 +44,6 @@ class Audio : public Serializable */ bool save(Serializer& out) const override; bool load(Serializer& in) override; - string name() const override; private: void phase1(); diff --git a/src/emucore/tia/AudioChannel.cxx b/src/emucore/tia/AudioChannel.cxx index 78afd365b..5944d396f 100644 --- a/src/emucore/tia/AudioChannel.cxx +++ b/src/emucore/tia/AudioChannel.cxx @@ -141,19 +141,11 @@ void AudioChannel::audf(uInt8 value) myAudf = value & 0x1f; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string AudioChannel::name() const -{ - return "TIA_AudioChannel"; -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool AudioChannel::save(Serializer& out) const { try { - out.putString(name()); - out.putInt(myAudc); out.putInt(myAudv); out.putInt(myAudf); @@ -181,8 +173,6 @@ bool AudioChannel::load(Serializer& in) { try { - if (in.getString() != name()) return false; - myAudc = in.getInt(); myAudv = in.getInt(); myAudf = in.getInt(); diff --git a/src/emucore/tia/AudioChannel.hxx b/src/emucore/tia/AudioChannel.hxx index f72372a86..92750faa8 100644 --- a/src/emucore/tia/AudioChannel.hxx +++ b/src/emucore/tia/AudioChannel.hxx @@ -43,7 +43,6 @@ class AudioChannel : public Serializable */ bool save(Serializer& out) const override; bool load(Serializer& in) override; - string name() const override; private: uInt8 myAudc; diff --git a/src/emucore/tia/Background.cxx b/src/emucore/tia/Background.cxx index 6e522e290..cb3121cde 100644 --- a/src/emucore/tia/Background.cxx +++ b/src/emucore/tia/Background.cxx @@ -82,8 +82,6 @@ bool Background::save(Serializer& out) const { try { - out.putString(name()); - out.putByte(myColor); out.putByte(myObjectColor); out.putByte(myDebugColor); @@ -103,9 +101,6 @@ bool Background::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myColor = in.getByte(); myObjectColor = in.getByte(); myDebugColor = in.getByte(); diff --git a/src/emucore/tia/Background.hxx b/src/emucore/tia/Background.hxx index 23a6da0a1..8520e5707 100644 --- a/src/emucore/tia/Background.hxx +++ b/src/emucore/tia/Background.hxx @@ -46,7 +46,6 @@ class Background : public Serializable */ bool save(Serializer& out) const override; bool load(Serializer& in) override; - string name() const override { return "TIA_BK"; } private: void applyColors(); diff --git a/src/emucore/tia/Ball.cxx b/src/emucore/tia/Ball.cxx index 9dbeba26e..aecf45af9 100644 --- a/src/emucore/tia/Ball.cxx +++ b/src/emucore/tia/Ball.cxx @@ -288,8 +288,6 @@ bool Ball::save(Serializer& out) const { try { - out.putString(name()); - out.putInt(collision); out.putInt(myCollisionMaskDisabled); out.putInt(myCollisionMaskEnabled); @@ -330,9 +328,6 @@ bool Ball::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - collision = in.getInt(); myCollisionMaskDisabled = in.getInt(); myCollisionMaskEnabled = in.getInt(); diff --git a/src/emucore/tia/Ball.hxx b/src/emucore/tia/Ball.hxx index 204479277..1488427b1 100644 --- a/src/emucore/tia/Ball.hxx +++ b/src/emucore/tia/Ball.hxx @@ -82,7 +82,6 @@ class Ball : public Serializable */ bool save(Serializer& out) const override; bool load(Serializer& in) override; - string name() const override { return "TIA_Ball"; } public: diff --git a/src/emucore/tia/DelayQueue.hxx b/src/emucore/tia/DelayQueue.hxx index c0cd63576..d73883ab0 100644 --- a/src/emucore/tia/DelayQueue.hxx +++ b/src/emucore/tia/DelayQueue.hxx @@ -48,7 +48,6 @@ class DelayQueue : public Serializable */ bool save(Serializer& out) const override; bool load(Serializer& in) override; - string name() const override; private: DelayQueueMember myMembers[length]; @@ -166,11 +165,4 @@ bool DelayQueue::load(Serializer& in) return true; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -template -string DelayQueue::name() const -{ - return "TIA_DelayQueue"; -} - #endif // TIA_DELAY_QUEUE diff --git a/src/emucore/tia/DelayQueueMember.hxx b/src/emucore/tia/DelayQueueMember.hxx index 09f77b5c6..52e9e133d 100644 --- a/src/emucore/tia/DelayQueueMember.hxx +++ b/src/emucore/tia/DelayQueueMember.hxx @@ -47,7 +47,6 @@ class DelayQueueMember : public Serializable { */ bool save(Serializer& out) const override; bool load(Serializer& in) override; - string name() const override; public: Entry myEntries[capacity]; @@ -155,11 +154,4 @@ bool DelayQueueMember::load(Serializer& in) return true; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -template -string DelayQueueMember::name() const -{ - return "TIA_DelayQueueMember"; -} - #endif // TIA_DELAY_QUEUE_MEMBER diff --git a/src/emucore/tia/LatchedInput.cxx b/src/emucore/tia/LatchedInput.cxx index b423e39c9..46daf6a36 100644 --- a/src/emucore/tia/LatchedInput.cxx +++ b/src/emucore/tia/LatchedInput.cxx @@ -59,8 +59,6 @@ bool LatchedInput::save(Serializer& out) const { try { - out.putString(name()); - out.putBool(myModeLatched); out.putByte(myLatchedValue); } @@ -78,9 +76,6 @@ bool LatchedInput::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myModeLatched = in.getBool(); myLatchedValue = in.getByte(); } diff --git a/src/emucore/tia/LatchedInput.hxx b/src/emucore/tia/LatchedInput.hxx index 3bd8ee01d..743d3d5ba 100644 --- a/src/emucore/tia/LatchedInput.hxx +++ b/src/emucore/tia/LatchedInput.hxx @@ -40,7 +40,6 @@ class LatchedInput : public Serializable */ bool save(Serializer& out) const override; bool load(Serializer& in) override; - string name() const override { return "TIA_LatchedInput"; } private: bool myModeLatched; diff --git a/src/emucore/tia/Missile.cxx b/src/emucore/tia/Missile.cxx index b118053b9..22d1581a9 100644 --- a/src/emucore/tia/Missile.cxx +++ b/src/emucore/tia/Missile.cxx @@ -305,8 +305,6 @@ bool Missile::save(Serializer& out) const { try { - out.putString(name()); - out.putInt(collision); out.putInt(myCollisionMaskDisabled); out.putInt(myCollisionMaskEnabled); @@ -347,9 +345,6 @@ bool Missile::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - collision = in.getInt(); myCollisionMaskDisabled = in.getInt(); myCollisionMaskEnabled = in.getInt(); diff --git a/src/emucore/tia/Missile.hxx b/src/emucore/tia/Missile.hxx index 7d55b631b..9ba701651 100644 --- a/src/emucore/tia/Missile.hxx +++ b/src/emucore/tia/Missile.hxx @@ -76,7 +76,6 @@ class Missile : public Serializable */ bool save(Serializer& out) const override; bool load(Serializer& in) override; - string name() const override { return "TIA_Missile"; } public: diff --git a/src/emucore/tia/PaddleReader.cxx b/src/emucore/tia/PaddleReader.cxx index dbc3d48aa..8ed2e0570 100644 --- a/src/emucore/tia/PaddleReader.cxx +++ b/src/emucore/tia/PaddleReader.cxx @@ -110,8 +110,6 @@ bool PaddleReader::save(Serializer& out) const { try { - out.putString(name()); - out.putDouble(myUThresh); out.putDouble(myU); @@ -137,9 +135,6 @@ bool PaddleReader::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - myUThresh = in.getDouble(); myU = in.getDouble(); diff --git a/src/emucore/tia/PaddleReader.hxx b/src/emucore/tia/PaddleReader.hxx index 544d1d7ee..93921ac37 100644 --- a/src/emucore/tia/PaddleReader.hxx +++ b/src/emucore/tia/PaddleReader.hxx @@ -44,7 +44,6 @@ class PaddleReader : public Serializable */ bool save(Serializer& out) const override; bool load(Serializer& in) override; - string name() const override { return "TIA_PaddleReader"; } private: diff --git a/src/emucore/tia/Player.cxx b/src/emucore/tia/Player.cxx index c49554921..cfe940f21 100644 --- a/src/emucore/tia/Player.cxx +++ b/src/emucore/tia/Player.cxx @@ -444,8 +444,6 @@ bool Player::save(Serializer& out) const { try { - out.putString(name()); - out.putInt(collision); out.putInt(myCollisionMaskDisabled); out.putInt(myCollisionMaskEnabled); @@ -491,9 +489,6 @@ bool Player::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - collision = in.getInt(); myCollisionMaskDisabled = in.getInt(); myCollisionMaskEnabled = in.getInt(); diff --git a/src/emucore/tia/Player.hxx b/src/emucore/tia/Player.hxx index 4ac7d8de1..6483e108b 100644 --- a/src/emucore/tia/Player.hxx +++ b/src/emucore/tia/Player.hxx @@ -87,7 +87,6 @@ class Player : public Serializable */ bool save(Serializer& out) const override; bool load(Serializer& in) override; - string name() const override { return "TIA_Player"; } public: diff --git a/src/emucore/tia/Playfield.cxx b/src/emucore/tia/Playfield.cxx index 72137a008..5fcde36bc 100644 --- a/src/emucore/tia/Playfield.cxx +++ b/src/emucore/tia/Playfield.cxx @@ -293,8 +293,6 @@ bool Playfield::save(Serializer& out) const { try { - out.putString(name()); - out.putInt(collision); out.putInt(myCollisionMaskDisabled); out.putInt(myCollisionMaskEnabled); @@ -336,9 +334,6 @@ bool Playfield::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - collision = in.getInt(); myCollisionMaskDisabled = in.getInt(); myCollisionMaskEnabled = in.getInt(); diff --git a/src/emucore/tia/Playfield.hxx b/src/emucore/tia/Playfield.hxx index d29e893e0..b51e04390 100644 --- a/src/emucore/tia/Playfield.hxx +++ b/src/emucore/tia/Playfield.hxx @@ -69,7 +69,6 @@ class Playfield : public Serializable */ bool save(Serializer& out) const override; bool load(Serializer& in) override; - string name() const override { return "TIA_Playfield"; } public: diff --git a/src/emucore/tia/TIA.cxx b/src/emucore/tia/TIA.cxx index f6faa9482..1ded2ef27 100644 --- a/src/emucore/tia/TIA.cxx +++ b/src/emucore/tia/TIA.cxx @@ -237,8 +237,6 @@ bool TIA::save(Serializer& out) const { try { - out.putString(name()); - if(!myDelayQueue.save(out)) return false; if(!myFrameManager->save(out)) return false; @@ -308,9 +306,6 @@ bool TIA::load(Serializer& in) { try { - if(in.getString() != name()) - return false; - if(!myDelayQueue.load(in)) return false; if(!myFrameManager->load(in)) return false; diff --git a/src/emucore/tia/TIA.hxx b/src/emucore/tia/TIA.hxx index 50bf080b6..c7ecac78b 100644 --- a/src/emucore/tia/TIA.hxx +++ b/src/emucore/tia/TIA.hxx @@ -482,13 +482,6 @@ class TIA : public Device */ bool load(Serializer& in) override; - /** - Get a descriptor for the device name (used in error checking). - - @return The name of the object - */ - string name() const override { return "TIA"; } - /** * Run and forward TIA emulation to the current system clock. */ diff --git a/src/emucore/tia/frame-manager/AbstractFrameManager.cxx b/src/emucore/tia/frame-manager/AbstractFrameManager.cxx index b82042ae3..b4dc02046 100644 --- a/src/emucore/tia/frame-manager/AbstractFrameManager.cxx +++ b/src/emucore/tia/frame-manager/AbstractFrameManager.cxx @@ -113,9 +113,8 @@ void AbstractFrameManager::layout(FrameLayout layout) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool AbstractFrameManager::save(Serializer& out) const { - try { - out.putString(name()); - + try + { out.putBool(myIsRendering); out.putBool(myVsync); out.putBool(myVblank); @@ -137,9 +136,8 @@ bool AbstractFrameManager::save(Serializer& out) const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool AbstractFrameManager::load(Serializer& in) { - try { - if (in.getString() != name()) return false; - + try + { myIsRendering = in.getBool(); myVsync = in.getBool(); myVblank = in.getBool(); diff --git a/src/emucore/tia/frame-manager/AbstractFrameManager.hxx b/src/emucore/tia/frame-manager/AbstractFrameManager.hxx index 91e3edff0..fdc7cb041 100644 --- a/src/emucore/tia/frame-manager/AbstractFrameManager.hxx +++ b/src/emucore/tia/frame-manager/AbstractFrameManager.hxx @@ -220,12 +220,6 @@ class AbstractFrameManager : public Serializable */ virtual bool onLoad(Serializer& in) { throw runtime_error("cannot be serialized"); } - /** - * This needs to be overriden if state serialization is implemented - * (unnecesary in autodetect managers). - */ - string name() const override { throw runtime_error("state serialization is not implemented!"); } - protected: // These need to be called in order to drive the frame lifecycle of the // emulation. diff --git a/src/emucore/tia/frame-manager/FrameManager.hxx b/src/emucore/tia/frame-manager/FrameManager.hxx index 5646c0b93..2aeba38b2 100644 --- a/src/emucore/tia/frame-manager/FrameManager.hxx +++ b/src/emucore/tia/frame-manager/FrameManager.hxx @@ -64,8 +64,6 @@ class FrameManager: public AbstractFrameManager { bool onLoad(Serializer& in) override; - string name() const override { return "TIA_FrameManager"; } - private: enum State { diff --git a/src/emucore/tia/frame-manager/JitterEmulation.cxx b/src/emucore/tia/frame-manager/JitterEmulation.cxx index 8daa28228..7f07dc15b 100644 --- a/src/emucore/tia/frame-manager/JitterEmulation.cxx +++ b/src/emucore/tia/frame-manager/JitterEmulation.cxx @@ -86,9 +86,8 @@ void JitterEmulation::updateJitter(Int32 scanlineDifference) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool JitterEmulation::save(Serializer& out) const { - try { - out.putString(name()); - + try + { out.putInt(myLastFrameScanlines); out.putInt(myStableFrameFinalLines); out.putInt(myStableFrames); @@ -111,9 +110,8 @@ bool JitterEmulation::save(Serializer& out) const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool JitterEmulation::load(Serializer& in) { - try { - if (in.getString() != name()) return false; - + try + { myLastFrameScanlines = in.getInt(); myStableFrameFinalLines = in.getInt(); myStableFrames = in.getInt(); diff --git a/src/emucore/tia/frame-manager/JitterEmulation.hxx b/src/emucore/tia/frame-manager/JitterEmulation.hxx index bd357a764..6ee4021bc 100644 --- a/src/emucore/tia/frame-manager/JitterEmulation.hxx +++ b/src/emucore/tia/frame-manager/JitterEmulation.hxx @@ -48,8 +48,6 @@ class JitterEmulation: public Serializable { */ bool load(Serializer& in) override; - string name() const override { return "JitterEmulation"; } - private: void updateJitter(Int32 scanlineDifference); diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index 4aeaf2047..d14661ca5 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -569,7 +569,9 @@ void GameInfoDialog::saveConfig() instance().frameBuffer().tiaSurface().enablePhosphor(myPhosphor->getState(), myPPBlend->getValue()); if (reset) instance().console().tia().frameReset(); - } else { + } + else + { myGameProperties.set( Display_YStart, myYStart->getValueLabel() == "Auto" ? "0" : myYStart->getValueLabel() From b9bbbe13813aaee5dda62037611686ab095f2e6b Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Thu, 13 Sep 2018 21:38:21 -0230 Subject: [PATCH 122/126] Fix blank screen after exiting from GameInfoDialog. --- src/emucore/Console.cxx | 3 +-- src/emucore/tia/TIA.cxx | 16 ++++++---------- src/emucore/tia/TIA.hxx | 7 +------ src/gui/GameInfoDialog.cxx | 6 +++++- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index c794690f7..106f31197 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -420,8 +420,7 @@ void Console::setFormat(uInt32 format) { setPalette(myOSystem.settings().getString("palette")); setTIAProperties(); - myTIA->frameReset(); - initializeVideo(); // takes care of refreshing the screen + initializeVideo(); // takes care of refreshing the screen initializeAudio(); // ensure that audio synthesis is set up to match emulation speed myOSystem.resetFps(); // Reset FPS measurement } diff --git a/src/emucore/tia/TIA.cxx b/src/emucore/tia/TIA.cxx index 1ded2ef27..757baca7b 100644 --- a/src/emucore/tia/TIA.cxx +++ b/src/emucore/tia/TIA.cxx @@ -178,7 +178,7 @@ void TIA::reset() if (myFrameManager) { myFrameManager->reset(); - frameReset(); // Recalculate the size of the display + enableColorLoss(mySettings.getBool(mySettings.getBool("dev.settings") ? "dev.colorloss" : "plr.colorloss")); } myFrontBufferScanlines = myFrameBufferScanlines = 0; @@ -189,18 +189,14 @@ void TIA::reset() enableFixedColors(mySettings.getBool(mySettings.getBool("dev.settings") ? "dev.debugcolors" : "plr.debugcolors")); setFixedColorPalette(mySettings.getString("tia.dbgcolors")); -#ifdef DEBUGGER_SUPPORT - createAccessBase(); -#endif // DEBUGGER_SUPPORT -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void TIA::frameReset() -{ + // Blank the various framebuffers; they may contain graphical garbage memset(myBackBuffer, 0, 160 * TIAConstants::frameBufferHeight); memset(myFrontBuffer, 0, 160 * TIAConstants::frameBufferHeight); memset(myFramebuffer, 0, 160 * TIAConstants::frameBufferHeight); - enableColorLoss(mySettings.getBool(mySettings.getBool("dev.settings") ? "dev.colorloss" : "plr.colorloss")); + +#ifdef DEBUGGER_SUPPORT + createAccessBase(); +#endif // DEBUGGER_SUPPORT } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/tia/TIA.hxx b/src/emucore/tia/TIA.hxx index c7ecac78b..1687331d4 100644 --- a/src/emucore/tia/TIA.hxx +++ b/src/emucore/tia/TIA.hxx @@ -136,11 +136,6 @@ class TIA : public Device */ void reset() override; - /** - Reset frame to current YStart/Height properties. - */ - void frameReset(); - /** Install TIA in the specified system. Invoked by the system when the TIA is attached to it. @@ -254,7 +249,7 @@ class TIA : public Device /** Changes the current Height/YStart properties. Note that calls to these method(s) must be eventually followed by - ::frameReset() for the changes to take effect. + ::reset() for the changes to take effect. */ void setHeight(uInt32 height) { myFrameManager->setFixedHeight(height); } void setYStart(uInt32 ystart) { myFrameManager->setYstart(ystart); } diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index d14661ca5..b9cfc9552 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -568,7 +568,11 @@ void GameInfoDialog::saveConfig() } instance().frameBuffer().tiaSurface().enablePhosphor(myPhosphor->getState(), myPPBlend->getValue()); if (reset) - instance().console().tia().frameReset(); + instance().console().tia().reset(); + + // Certain calls above may blank the TIA image (notably, setFormat) + // So we make sure we have a valid image when the dialog exits + instance().console().tia().renderToFrameBuffer(); } else { From b32c71d6f46bb9abe483090e5bf1988eb480279b Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Thu, 13 Sep 2018 22:01:37 -0230 Subject: [PATCH 123/126] ROM name in PNG tEXt chunk now uses 'snapname' setting. --- Changes.txt | 3 +++ src/common/PNGLibrary.cxx | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Changes.txt b/Changes.txt index 1cf867851..0267431cb 100644 --- a/Changes.txt +++ b/Changes.txt @@ -94,6 +94,9 @@ and saving. This affects both the files saved to your computer as well as Time Machine functionality. + * The ROM name saved in a PNG tEXt chunk now honours the 'snapname' + setting. + * Updated PAL palette. * Added recently released 'Arkyology' prototype ROM to the database. diff --git a/src/common/PNGLibrary.cxx b/src/common/PNGLibrary.cxx index 6c1f3d5dd..0f96c0e4e 100644 --- a/src/common/PNGLibrary.cxx +++ b/src/common/PNGLibrary.cxx @@ -331,7 +331,10 @@ void PNGLibrary::takeSnapshot(uInt32 number) version << "Stella " << STELLA_VERSION << " (Build " << STELLA_BUILD << ") [" << BSPF::ARCH << "]"; VarList::push_back(comments, "Software", version.str()); - VarList::push_back(comments, "ROM Name", myOSystem.console().properties().get(Cartridge_Name)); + const string& name = (myOSystem.settings().getString("snapname") == "int") + ? myOSystem.console().properties().get(Cartridge_Name) + : myOSystem.romFile().getName(); + VarList::push_back(comments, "ROM Name", name); VarList::push_back(comments, "ROM MD5", myOSystem.console().properties().get(Cartridge_MD5)); VarList::push_back(comments, "TV Effects", myOSystem.frameBuffer().tiaSurface().effectsInfo()); From 02b0c13aca81217b30481a508410c4f7f3c4d9bd Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 14 Sep 2018 19:00:45 +0200 Subject: [PATCH 124/126] fixes #381 --- src/gui/GameInfoDialog.cxx | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index b9cfc9552..f90662978 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -532,10 +532,11 @@ void GameInfoDialog::saveConfig() // Display properties myGameProperties.set(Display_Format, myFormat->getSelectedTag().toString()); + myGameProperties.set(Display_YStart, myYStart->getValueLabel() == "Auto" ? "0" : + myYStart->getValueLabel()); myGameProperties.set(Display_Height, myHeight->getValueLabel() == "Auto" ? "0" : myHeight->getValueLabel()); myGameProperties.set(Display_Phosphor, myPhosphor->getState() ? "YES" : "NO"); - myGameProperties.set(Display_PPBlend, myPPBlend->getValueLabel() == "Default" ? "0" : myPPBlend->getValueLabel()); @@ -558,9 +559,13 @@ void GameInfoDialog::saveConfig() // update 'Display' tab settings immediately bool reset = false; instance().console().setFormat(myFormat->getSelected()); - instance().console().updateYStart(myYStart->getValue()); + if(uInt32(myYStart->getValue()) != instance().console().tia().ystart()) + { + instance().console().updateYStart(myYStart->getValue()); + reset = true; + } - if(uInt32(myHeight->getValue()) != TIAConstants::minViewableHeight - 1 && + if(/*uInt32(myHeight->getValue()) != TIAConstants::minViewableHeight - 1 &&*/ uInt32(myHeight->getValue()) != instance().console().tia().height()) { instance().console().tia().setHeight(myHeight->getValue()); @@ -574,13 +579,6 @@ void GameInfoDialog::saveConfig() // So we make sure we have a valid image when the dialog exits instance().console().tia().renderToFrameBuffer(); } - else - { - myGameProperties.set( - Display_YStart, - myYStart->getValueLabel() == "Auto" ? "0" : myYStart->getValueLabel() - ); - } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From f0889a26ddc46a076fda0a5070d152b0670c7f5a Mon Sep 17 00:00:00 2001 From: thrust26 Date: Fri, 14 Sep 2018 19:25:51 +0200 Subject: [PATCH 125/126] improved detection of unchanged ystart and height --- src/gui/GameInfoDialog.cxx | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index f90662978..00d85d267 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -531,6 +531,11 @@ void GameInfoDialog::saveConfig() myGameProperties.set(Controller_MouseAxis, mcontrol); // Display properties + const string& ystart = myGameProperties.get(Display_YStart); + uInt32 oldYStart = atoi(ystart.c_str()); + const string& height = myGameProperties.get(Display_Height); + uInt32 oldHeight = atoi(height.c_str()); + myGameProperties.set(Display_Format, myFormat->getSelectedTag().toString()); myGameProperties.set(Display_YStart, myYStart->getValueLabel() == "Auto" ? "0" : myYStart->getValueLabel()); @@ -557,15 +562,17 @@ void GameInfoDialog::saveConfig() instance().console().switches().setRightDifficultyA(myRightDiffGroup->getSelected() == 0); // update 'Display' tab settings immediately - bool reset = false; instance().console().setFormat(myFormat->getSelected()); - if(uInt32(myYStart->getValue()) != instance().console().tia().ystart()) + + // only call tia().reset() when values have changed + bool reset = false; + if(uInt32((myYStart->getValue()) != 0 || oldYStart != 0) && + uInt32(myYStart->getValue()) != instance().console().tia().ystart()) { instance().console().updateYStart(myYStart->getValue()); reset = true; } - - if(/*uInt32(myHeight->getValue()) != TIAConstants::minViewableHeight - 1 &&*/ + if(uInt32((myHeight->getValue()) != TIAConstants::minViewableHeight - 1 || oldHeight != 0) && uInt32(myHeight->getValue()) != instance().console().tia().height()) { instance().console().tia().setHeight(myHeight->getValue()); From 31f6dba87d78077041f66dd95bcf2f3a16ea7904 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 14 Sep 2018 20:57:36 -0230 Subject: [PATCH 126/126] 'Cartridge.StartBank' ROM property is now used by the core. --- Changes.txt | 3 ++ docs/index.html | 5 +++ src/debugger/gui/Cart0840Widget.cxx | 2 +- src/debugger/gui/Cart3EWidget.cxx | 6 ++-- src/debugger/gui/Cart3FWidget.cxx | 2 +- src/debugger/gui/CartBFSCWidget.cxx | 2 +- src/debugger/gui/CartBFWidget.cxx | 2 +- src/debugger/gui/CartBUSWidget.cxx | 2 +- src/debugger/gui/CartCDFWidget.cxx | 2 +- src/debugger/gui/CartCVPlusWidget.cxx | 2 +- src/debugger/gui/CartDFSCWidget.cxx | 2 +- src/debugger/gui/CartDFWidget.cxx | 2 +- src/debugger/gui/CartDPCPlusWidget.cxx | 2 +- src/debugger/gui/CartDPCWidget.cxx | 2 +- src/debugger/gui/CartEFSCWidget.cxx | 2 +- src/debugger/gui/CartEFWidget.cxx | 2 +- src/debugger/gui/CartF0Widget.cxx | 2 +- src/debugger/gui/CartF4SCWidget.cxx | 2 +- src/debugger/gui/CartF4Widget.cxx | 2 +- src/debugger/gui/CartF6SCWidget.cxx | 2 +- src/debugger/gui/CartF6Widget.cxx | 2 +- src/debugger/gui/CartF8SCWidget.cxx | 2 +- src/debugger/gui/CartF8Widget.cxx | 2 +- src/debugger/gui/CartFA2Widget.cxx | 2 +- src/debugger/gui/CartFAWidget.cxx | 2 +- src/debugger/gui/CartMDMWidget.cxx | 2 +- src/debugger/gui/CartSBWidget.cxx | 2 +- src/debugger/gui/CartUAWidget.cxx | 2 +- src/debugger/gui/CartX07Widget.cxx | 2 +- src/emucore/Cart.cxx | 20 +++++++---- src/emucore/Cart.hxx | 47 ++++++++++++++++++-------- src/emucore/Cart0840.cxx | 9 +++-- src/emucore/Cart3E.cxx | 8 ++--- src/emucore/Cart3EPlus.cxx | 8 ++--- src/emucore/Cart3F.cxx | 17 ++-------- src/emucore/CartAR.cxx | 3 +- src/emucore/CartBF.cxx | 9 +++-- src/emucore/CartBFSC.cxx | 8 ++--- src/emucore/CartBUS.cxx | 6 ++-- src/emucore/CartCDF.cxx | 6 ++-- src/emucore/CartCM.cxx | 6 ++-- src/emucore/CartCTY.cxx | 10 +++--- src/emucore/CartCVPlus.cxx | 8 ++--- src/emucore/CartDASH.cxx | 8 ++--- src/emucore/CartDF.cxx | 9 +++-- src/emucore/CartDFSC.cxx | 8 ++--- src/emucore/CartDPC.cxx | 11 +++--- src/emucore/CartDPCPlus.cxx | 10 +++--- src/emucore/CartEF.cxx | 9 +++-- src/emucore/CartEFSC.cxx | 8 ++--- src/emucore/CartF0.cxx | 11 +++--- src/emucore/CartF4.cxx | 11 +++--- src/emucore/CartF4SC.cxx | 11 ++---- src/emucore/CartF6.cxx | 11 +++--- src/emucore/CartF6SC.cxx | 11 ++---- src/emucore/CartF8.cxx | 19 ++--------- src/emucore/CartF8SC.cxx | 11 ++---- src/emucore/CartFA.cxx | 11 ++---- src/emucore/CartFA2.cxx | 11 ++---- src/emucore/CartFE.cxx | 7 ++-- src/emucore/CartMDM.cxx | 9 +++-- src/emucore/CartMNetwork.cxx | 10 +++--- src/emucore/CartSB.cxx | 13 ++++--- src/emucore/CartUA.cxx | 10 ++---- src/emucore/CartWD.cxx | 8 ++--- src/emucore/CartX07.cxx | 9 +++-- src/emucore/Console.cxx | 6 ++++ src/emucore/Console.hxx | 2 +- src/emucore/DefProps.hxx | 9 ++--- src/emucore/stella.pro | 8 +++++ 70 files changed, 229 insertions(+), 263 deletions(-) diff --git a/Changes.txt b/Changes.txt index 0267431cb..993781e3a 100644 --- a/Changes.txt +++ b/Changes.txt @@ -99,6 +99,9 @@ * Updated PAL palette. + * Added 'Cartridge.StartBank' ROM property, to force a ROM to use a + specific bank for its reset vector. + * Added recently released 'Arkyology' prototype ROM to the database. * For UNIX systems: in the ROM launcher, when using symlinks use the diff --git a/docs/index.html b/docs/index.html index 9c6dbefce..e95f41ba1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3551,6 +3551,11 @@ Ms Pac-Man (Stella extended codes): sound mods. The value must be Mono or Stereo. + + Cartridge.StartBank: + Indicates which bank to use for reading the reset vector. + + Cartridge.Type: Indicates the bank-switching type for the game. diff --git a/src/debugger/gui/Cart0840Widget.cxx b/src/debugger/gui/Cart0840Widget.cxx index f8469eecb..5343f8ee2 100644 --- a/src/debugger/gui/Cart0840Widget.cxx +++ b/src/debugger/gui/Cart0840Widget.cxx @@ -30,7 +30,7 @@ Cartridge0840Widget::Cartridge0840Widget( ostringstream info; info << "0840 ECONObanking, two 4K banks\n" - << "Startup bank = " << cart.myStartBank << "\n"; + << "Startup bank = " << cart.startBank() << "\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0x800; i < 2; diff --git a/src/debugger/gui/Cart3EWidget.cxx b/src/debugger/gui/Cart3EWidget.cxx index e6115c2aa..7fff3e83a 100644 --- a/src/debugger/gui/Cart3EWidget.cxx +++ b/src/debugger/gui/Cart3EWidget.cxx @@ -37,10 +37,10 @@ Cartridge3EWidget::Cartridge3EWidget( "First 2K (RAM) selected by writing to $3E\n" " $F000 - $F3FF (R), $F400 - $F7FF (W)\n" "Last 2K always points to last 2K of ROM\n"; - if(cart.myStartBank < myNumRomBanks) - info << "Startup bank = " << cart.myStartBank << " (ROM)\n"; + if(cart.startBank() < myNumRomBanks) + info << "Startup bank = " << cart.startBank() << " (ROM)\n"; else - info << "Startup bank = " << (cart.myStartBank-myNumRomBanks) << " (RAM)\n"; + info << "Startup bank = " << (cart.startBank()-myNumRomBanks) << " (RAM)\n"; // Eventually, we should query this from the debugger/disassembler uInt16 start = (cart.myImage[size-3] << 8) | cart.myImage[size-4]; diff --git a/src/debugger/gui/Cart3FWidget.cxx b/src/debugger/gui/Cart3FWidget.cxx index d6490a559..e7f79e5f7 100644 --- a/src/debugger/gui/Cart3FWidget.cxx +++ b/src/debugger/gui/Cart3FWidget.cxx @@ -30,7 +30,7 @@ Cartridge3FWidget::Cartridge3FWidget( ostringstream info; info << "Tigervision 3F cartridge, 2-256 2K banks\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n" + << "Startup bank = " << cart.startBank() << " or undetermined\n" << "First 2K bank selected by writing to $3F\n" << "Last 2K always points to last 2K of ROM\n"; diff --git a/src/debugger/gui/CartBFSCWidget.cxx b/src/debugger/gui/CartBFSCWidget.cxx index 08418c25a..68def512d 100644 --- a/src/debugger/gui/CartBFSCWidget.cxx +++ b/src/debugger/gui/CartBFSCWidget.cxx @@ -34,7 +34,7 @@ CartridgeBFSCWidget::CartridgeBFSCWidget( info << "256K BFSC + RAM, 64 4K banks\n" << "128 bytes RAM @ $F000 - $F0FF\n" << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.myStartBank << "\n"; + << "Startup bank = " << cart.startBank() << "\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xF80; i < 64; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartBFWidget.cxx b/src/debugger/gui/CartBFWidget.cxx index 3c23f0c9f..7935cb3e4 100644 --- a/src/debugger/gui/CartBFWidget.cxx +++ b/src/debugger/gui/CartBFWidget.cxx @@ -30,7 +30,7 @@ CartridgeBFWidget::CartridgeBFWidget( ostringstream info; info << "BF cartridge, 64 4K banks\n" - << "Startup bank = " << cart.myStartBank << "\n"; + << "Startup bank = " << cart.startBank() << "\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xF80; i < 64; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartBUSWidget.cxx b/src/debugger/gui/CartBUSWidget.cxx index 0b7b876b2..cfbe32ce1 100644 --- a/src/debugger/gui/CartBUSWidget.cxx +++ b/src/debugger/gui/CartBUSWidget.cxx @@ -35,7 +35,7 @@ CartridgeBUSWidget::CartridgeBUSWidget( << "8K BUS RAM\n" << "BUS registers accessible @ $FFEE - $FFF3\n" << "Banks accessible at hotspots $FFFF to $FFFB\n" - << "Startup bank = " << cart.myStartBank << "\n"; + << "Startup bank = " << cart.startBank() << "\n"; #if 0 // Eventually, we should query this from the debugger/disassembler diff --git a/src/debugger/gui/CartCDFWidget.cxx b/src/debugger/gui/CartCDFWidget.cxx index 722b85e5f..db7b6b3e1 100644 --- a/src/debugger/gui/CartCDFWidget.cxx +++ b/src/debugger/gui/CartCDFWidget.cxx @@ -35,7 +35,7 @@ CartridgeCDFWidget::CartridgeCDFWidget( << "8K CDF RAM\n" << "CDF registers accessible @ $FFF0 - $FFF3\n" << "Banks accessible at hotspots $FFF5 to $FFFB\n" - << "Startup bank = " << cart.myStartBank << "\n"; + << "Startup bank = " << cart.startBank() << "\n"; #if 0 // Eventually, we should query this from the debugger/disassembler diff --git a/src/debugger/gui/CartCVPlusWidget.cxx b/src/debugger/gui/CartCVPlusWidget.cxx index 50965f016..cf18b4bf0 100644 --- a/src/debugger/gui/CartCVPlusWidget.cxx +++ b/src/debugger/gui/CartCVPlusWidget.cxx @@ -35,7 +35,7 @@ CartridgeCVPlusWidget::CartridgeCVPlusWidget( << "1024 bytes RAM @ $F000 - $F7FF\n" << " $F000 - $F3FF (R), $F400 - $F7FF (W)\n" << "2048 bytes ROM @ $F800 - $FFFF, by writing to $3D\n" - << "Startup bank = " << cart.myStartBank << "\n"; + << "Startup bank = " << cart.startBank() << "\n"; int xpos = 10, ypos = addBaseInformation(size, "LS_Dracon / Stephen Anthony", diff --git a/src/debugger/gui/CartDFSCWidget.cxx b/src/debugger/gui/CartDFSCWidget.cxx index fd672f1d1..50269b02a 100644 --- a/src/debugger/gui/CartDFSCWidget.cxx +++ b/src/debugger/gui/CartDFSCWidget.cxx @@ -34,7 +34,7 @@ CartridgeDFSCWidget::CartridgeDFSCWidget( info << "128K DFSC + RAM, 32 4K banks\n" << "128 bytes RAM @ $F000 - $F0FF\n" << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.myStartBank << "\n"; + << "Startup bank = " << cart.startBank() << "\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFC0; i < 32; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartDFWidget.cxx b/src/debugger/gui/CartDFWidget.cxx index 9661fe1b0..136672b1a 100644 --- a/src/debugger/gui/CartDFWidget.cxx +++ b/src/debugger/gui/CartDFWidget.cxx @@ -30,7 +30,7 @@ CartridgeDFWidget::CartridgeDFWidget( ostringstream info; info << "EF 2 cartridge, 32 4K banks\n" - << "Startup bank = " << cart.myStartBank << "\n"; + << "Startup bank = " << cart.startBank() << "\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFD0; i < 32; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartDPCPlusWidget.cxx b/src/debugger/gui/CartDPCPlusWidget.cxx index e1e380f41..80e5c91c7 100644 --- a/src/debugger/gui/CartDPCPlusWidget.cxx +++ b/src/debugger/gui/CartDPCPlusWidget.cxx @@ -35,7 +35,7 @@ CartridgeDPCPlusWidget::CartridgeDPCPlusWidget( << "DPC registers accessible @ $F000 - $F07F\n" << " $F000 - $F03F (R), $F040 - $F07F (W)\n" << "Banks accessible at hotspots $FFF6 to $FFFB\n" - << "Startup bank = " << cart.myStartBank << "\n"; + << "Startup bank = " << cart.startBank() << "\n"; #if 0 // Eventually, we should query this from the debugger/disassembler diff --git a/src/debugger/gui/CartDPCWidget.cxx b/src/debugger/gui/CartDPCWidget.cxx index 5fe4bbd78..7c68e21b6 100644 --- a/src/debugger/gui/CartDPCWidget.cxx +++ b/src/debugger/gui/CartDPCWidget.cxx @@ -34,7 +34,7 @@ CartridgeDPCWidget::CartridgeDPCWidget( << "DPC registers accessible @ $F000 - $F07F\n" << " $F000 - $F03F (R), $F040 - $F07F (W)\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n"; + << "Startup bank = " << cart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF8; i < 2; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartEFSCWidget.cxx b/src/debugger/gui/CartEFSCWidget.cxx index 89dbb65f6..04d43fc40 100644 --- a/src/debugger/gui/CartEFSCWidget.cxx +++ b/src/debugger/gui/CartEFSCWidget.cxx @@ -34,7 +34,7 @@ CartridgeEFSCWidget::CartridgeEFSCWidget( info << "64K H. Runner EFSC + RAM, 16 4K banks\n" << "128 bytes RAM @ $F000 - $F0FF\n" << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.myStartBank << "\n"; + << "Startup bank = " << cart.startBank() << "\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFE0; i < 16; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartEFWidget.cxx b/src/debugger/gui/CartEFWidget.cxx index 3733c3e54..dc5828163 100644 --- a/src/debugger/gui/CartEFWidget.cxx +++ b/src/debugger/gui/CartEFWidget.cxx @@ -30,7 +30,7 @@ CartridgeEFWidget::CartridgeEFWidget( ostringstream info; info << "64K H. Runner EF cartridge, 16 4K banks\n" - << "Startup bank = " << cart.myStartBank << "\n"; + << "Startup bank = " << cart.startBank() << "\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFE0; i < 16; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartF0Widget.cxx b/src/debugger/gui/CartF0Widget.cxx index 7216d66d1..59a66a3c0 100644 --- a/src/debugger/gui/CartF0Widget.cxx +++ b/src/debugger/gui/CartF0Widget.cxx @@ -30,7 +30,7 @@ CartridgeF0Widget::CartridgeF0Widget( ostringstream info; info << "64K Megaboy F0 cartridge, 16 4K banks\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n" + << "Startup bank = " << cart.startBank() << " or undetermined\n" << "Bankswitch triggered by accessing $1FF0\n"; // Eventually, we should query this from the debugger/disassembler diff --git a/src/debugger/gui/CartF4SCWidget.cxx b/src/debugger/gui/CartF4SCWidget.cxx index 40924aafa..97fe44e51 100644 --- a/src/debugger/gui/CartF4SCWidget.cxx +++ b/src/debugger/gui/CartF4SCWidget.cxx @@ -34,7 +34,7 @@ CartridgeF4SCWidget::CartridgeF4SCWidget( info << "Standard F4SC cartridge, eight 4K banks\n" << "128 bytes RAM @ $F000 - $F0FF\n" << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n"; + << "Startup bank = " << cart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF4; i < 8; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartF4Widget.cxx b/src/debugger/gui/CartF4Widget.cxx index b22291e61..127464435 100644 --- a/src/debugger/gui/CartF4Widget.cxx +++ b/src/debugger/gui/CartF4Widget.cxx @@ -30,7 +30,7 @@ CartridgeF4Widget::CartridgeF4Widget( ostringstream info; info << "Standard F4 cartridge, eight 4K banks\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n"; + << "Startup bank = " << cart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF4; i < 8; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartF6SCWidget.cxx b/src/debugger/gui/CartF6SCWidget.cxx index 93808ea13..0913f958d 100644 --- a/src/debugger/gui/CartF6SCWidget.cxx +++ b/src/debugger/gui/CartF6SCWidget.cxx @@ -34,7 +34,7 @@ CartridgeF6SCWidget::CartridgeF6SCWidget( info << "Standard F6SC cartridge, four 4K banks\n" << "128 bytes RAM @ $F000 - $F0FF\n" << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n"; + << "Startup bank = " << cart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF6; i < 4; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartF6Widget.cxx b/src/debugger/gui/CartF6Widget.cxx index 1e43c25a2..5c23e9f81 100644 --- a/src/debugger/gui/CartF6Widget.cxx +++ b/src/debugger/gui/CartF6Widget.cxx @@ -30,7 +30,7 @@ CartridgeF6Widget::CartridgeF6Widget( ostringstream info; info << "Standard F6 cartridge, four 4K banks\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n"; + << "Startup bank = " << cart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF6; i < 4; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartF8SCWidget.cxx b/src/debugger/gui/CartF8SCWidget.cxx index de10cd06e..734876bae 100644 --- a/src/debugger/gui/CartF8SCWidget.cxx +++ b/src/debugger/gui/CartF8SCWidget.cxx @@ -34,7 +34,7 @@ CartridgeF8SCWidget::CartridgeF8SCWidget( info << "Standard F8SC cartridge, two 4K banks\n" << "128 bytes RAM @ $F000 - $F0FF\n" << " $F080 - $F0FF (R), $F000 - $F07F (W)\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n"; + << "Startup bank = " << cart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF8; i < 2; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartF8Widget.cxx b/src/debugger/gui/CartF8Widget.cxx index 6f738a850..0e669ac2e 100644 --- a/src/debugger/gui/CartF8Widget.cxx +++ b/src/debugger/gui/CartF8Widget.cxx @@ -30,7 +30,7 @@ CartridgeF8Widget::CartridgeF8Widget( ostringstream info; info << "Standard F8 cartridge, two 4K banks\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n"; + << "Startup bank = " << cart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF8; i < 2; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartFA2Widget.cxx b/src/debugger/gui/CartFA2Widget.cxx index 188c5fd9c..bbd7b2047 100644 --- a/src/debugger/gui/CartFA2Widget.cxx +++ b/src/debugger/gui/CartFA2Widget.cxx @@ -35,7 +35,7 @@ CartridgeFA2Widget::CartridgeFA2Widget( << "256 bytes RAM @ $F000 - $F1FF\n" << " $F100 - $F1FF (R), $F000 - $F0FF (W)\n" << "RAM can be loaded/saved to Harmony flash by accessing $FFF4\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n"; + << "Startup bank = " << cart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF5; i < cart.bankCount(); diff --git a/src/debugger/gui/CartFAWidget.cxx b/src/debugger/gui/CartFAWidget.cxx index c41d418e7..c09da021c 100644 --- a/src/debugger/gui/CartFAWidget.cxx +++ b/src/debugger/gui/CartFAWidget.cxx @@ -34,7 +34,7 @@ CartridgeFAWidget::CartridgeFAWidget( info << "CBS RAM+ FA cartridge, three 4K banks\n" << "256 bytes RAM @ $F000 - $F1FF\n" << " $F100 - $F1FF (R), $F000 - $F0FF (W)\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n"; + << "Startup bank = " << cart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0xFF8; i < 3; ++i, offset += 0x1000) diff --git a/src/debugger/gui/CartMDMWidget.cxx b/src/debugger/gui/CartMDMWidget.cxx index ab2f723a4..fbc79402a 100644 --- a/src/debugger/gui/CartMDMWidget.cxx +++ b/src/debugger/gui/CartMDMWidget.cxx @@ -31,7 +31,7 @@ CartridgeMDMWidget::CartridgeMDMWidget( ostringstream info; info << "Menu Driven Megacart, containing up to 128 4K banks\n" - << "Startup bank = " << cart.myStartBank << "\n" + << "Startup bank = " << cart.startBank() << "\n" << "\nBanks are selected by reading from $800 - $BFF, where the lower " "byte determines the 4K bank to use."; diff --git a/src/debugger/gui/CartSBWidget.cxx b/src/debugger/gui/CartSBWidget.cxx index 9d0b6f44b..fab1278fa 100644 --- a/src/debugger/gui/CartSBWidget.cxx +++ b/src/debugger/gui/CartSBWidget.cxx @@ -34,7 +34,7 @@ CartridgeSBWidget::CartridgeSBWidget( << "Hotspots are from $800 to $" << Common::Base::HEX2 << (0x800 + myCart.bankCount() - 1) << ", including\n" << "mirrors ($900, $A00, $B00, ...)\n" - << "Startup bank = " << std::dec << cart.myStartBank << "\n"; + << "Startup bank = " << std::dec << cart.startBank() << "\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0x800; i < myCart.bankCount(); diff --git a/src/debugger/gui/CartUAWidget.cxx b/src/debugger/gui/CartUAWidget.cxx index 450a33e0a..4df3ac0fb 100644 --- a/src/debugger/gui/CartUAWidget.cxx +++ b/src/debugger/gui/CartUAWidget.cxx @@ -30,7 +30,7 @@ CartridgeUAWidget::CartridgeUAWidget( ostringstream info; info << "8K UA cartridge, two 4K banks\n" - << "Startup bank = " << cart.myStartBank << " or undetermined\n"; + << "Startup bank = " << cart.startBank() << " or undetermined\n"; // Eventually, we should query this from the debugger/disassembler for(uInt32 i = 0, offset = 0xFFC, spot = 0x220; i < 2; diff --git a/src/debugger/gui/CartX07Widget.cxx b/src/debugger/gui/CartX07Widget.cxx index 6516dd728..93110b629 100644 --- a/src/debugger/gui/CartX07Widget.cxx +++ b/src/debugger/gui/CartX07Widget.cxx @@ -30,7 +30,7 @@ CartridgeX07Widget::CartridgeX07Widget( ostringstream info; info << "64K X07 cartridge, 16 4K banks\n" - << "Startup bank = " << cart.myStartBank << "\n" + << "Startup bank = " << cart.startBank() << "\n" << "Multiple hotspots, all below $1000\n" << "See documentation for further details\n"; diff --git a/src/emucore/Cart.cxx b/src/emucore/Cart.cxx index c7d8722b1..2cbf28f97 100644 --- a/src/emucore/Cart.cxx +++ b/src/emucore/Cart.cxx @@ -27,9 +27,9 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cartridge::Cartridge(const Settings& settings) : mySettings(settings), - myStartBank(0), myBankChanged(true), myCodeAccessBase(nullptr), + myStartBank(0), myBankLocked(false) { } @@ -99,16 +99,24 @@ void Cartridge::initializeRAM(uInt8* arr, uInt32 size, uInt8 val) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool Cartridge::randomInitialRAM() const +uInt16 Cartridge::initializeStartBank(int defaultBank) { - return mySettings.getBool(mySettings.getBool("dev.settings") ? "dev.ramrandom" : "plr.ramrandom"); + int propsBank = myStartBankFromPropsFunc(); + + bool userandom = randomStartBank() || (defaultBank < 0 && propsBank < 0); + + if(userandom) + return myStartBank = mySystem->randGenerator().next() % bankCount(); + else if(propsBank >= 0) + return myStartBank = BSPF::clamp(propsBank, 0, bankCount() - 1); + else + return myStartBank = BSPF::clamp(defaultBank, 0, bankCount() - 1); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Cartridge::randomizeStartBank() +bool Cartridge::randomInitialRAM() const { - if(randomStartBank()) - myStartBank = mySystem->randGenerator().next() % bankCount(); + return mySettings.getBool(mySettings.getBool("dev.settings") ? "dev.ramrandom" : "plr.ramrandom"); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/Cart.hxx b/src/emucore/Cart.hxx index e67ebb73e..53eddb8bd 100644 --- a/src/emucore/Cart.hxx +++ b/src/emucore/Cart.hxx @@ -39,6 +39,9 @@ class GuiObject; */ class Cartridge : public Device { + public: + using StartBankFromPropsFunc = std::function; + public: /** Create a new cartridge @@ -81,6 +84,14 @@ class Cartridge : public Device */ uInt16 startBank() const { return myStartBank; } + /** + Set the function to use when we want to query the 'Cartridge.StartBank' + ROM property. + */ + void setStartBankFromPropsFunc(StartBankFromPropsFunc func) { + myStartBankFromPropsFunc = func; + } + /** Answer whether the bank has changed since the last time this method was called. Each cart class is able to override this @@ -148,7 +159,7 @@ class Cartridge : public Device /** Get a descriptor for the cart name. - @return The name of the object + @return The name of the cart */ virtual string name() const = 0; @@ -203,22 +214,27 @@ class Cartridge : public Device void initializeRAM(uInt8* arr, uInt32 size, uInt8 val = 0) const; /** - Checks if initial RAM randomization is enabled + Set the start bank to be used when the cart is reset. This method + will take both randomization and properties settings into account. + See the actual method for more information on the logic used. - @return Whether the initial RAM should be randomized + @param defaultBank The actual bank to use during reset + + @return The bank number that was determined + */ + uInt16 initializeStartBank(int defaultBank = -1); + + /** + Checks if initial RAM randomization is enabled. + + @return Whether the initial RAM should be randomized */ bool randomInitialRAM() const; /** - Defines the startup bank. if 'bank' is negative, a random bank will - be selected. - */ - void randomizeStartBank(); + Checks if startup bank randomization is enabled. - /** - Checks if startup bank randomization is enabled - - @return Whether the startup bank(s) should be randomized + @return Whether the startup bank(s) should be randomized */ bool randomStartBank() const; @@ -226,9 +242,6 @@ class Cartridge : public Device // Settings class for the application const Settings& mySettings; - // The startup bank to use (where to look for the reset vector address) - uInt16 myStartBank; - // Indicates if the bank has changed somehow (a bankswitch has occurred) bool myBankChanged; @@ -237,6 +250,9 @@ class Cartridge : public Device BytePtr myCodeAccessBase; private: + // The startup bank to use (where to look for the reset vector address) + uInt16 myStartBank; + // If myBankLocked is true, ignore attempts at bankswitching. This is used // by the debugger, when disassembling/dumping ROM. bool myBankLocked; @@ -247,6 +263,9 @@ class Cartridge : public Device // (ie, detected type could be '2in1' while name of cart is '4K') string myAbout, myDetectedType, myMultiCartID; + // Used when we want the 'Cartridge.StartBank' ROM property + StartBankFromPropsFunc myStartBankFromPropsFunc; + // Following constructors and assignment operators not supported Cartridge() = delete; Cartridge(const Cartridge&) = delete; diff --git a/src/emucore/Cart0840.cxx b/src/emucore/Cart0840.cxx index 5f9b78426..f7a203935 100644 --- a/src/emucore/Cart0840.cxx +++ b/src/emucore/Cart0840.cxx @@ -27,16 +27,15 @@ Cartridge0840::Cartridge0840(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(8192u, size)); createCodeAccessBase(8192); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge0840::reset() { + initializeStartBank(); + // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -61,7 +60,7 @@ void Cartridge0840::install(System& system) mySystem->setPageAccess(addr, access); // Install pages for bank 0 - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/Cart3E.cxx b/src/emucore/Cart3E.cxx index 9022e6961..4f4db9e55 100644 --- a/src/emucore/Cart3E.cxx +++ b/src/emucore/Cart3E.cxx @@ -32,18 +32,16 @@ Cartridge3E::Cartridge3E(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage.get(), image.get(), mySize); createCodeAccessBase(mySize + 32768); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3E::reset() { initializeRAM(myRAM, 32768); + initializeStartBank(0); // We'll map the startup bank into the first segment upon reset - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -67,7 +65,7 @@ void Cartridge3E::install(System& system) } // Install pages for the startup bank into the first segment - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/Cart3EPlus.cxx b/src/emucore/Cart3EPlus.cxx index 6bf9a929e..b93530231 100644 --- a/src/emucore/Cart3EPlus.cxx +++ b/src/emucore/Cart3EPlus.cxx @@ -31,10 +31,6 @@ Cartridge3EPlus::Cartridge3EPlus(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage.get(), image.get(), mySize); createCodeAccessBase(mySize + RAM_TOTAL_SIZE); - - // Remember startup bank (0 per spec, rather than last per 3E scheme). - // Set this to go to 3rd 1K Bank. - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -42,6 +38,10 @@ void Cartridge3EPlus::reset() { initializeRAM(myRAM, RAM_TOTAL_SIZE); + // Remember startup bank (0 per spec, rather than last per 3E scheme). + // Set this to go to 3rd 1K Bank. + initializeStartBank(0); + // Initialise bank values for all ROM/RAM access // This is used to reverse-lookup from address to bank location for(uInt32 b = 0; b < 8; ++b) diff --git a/src/emucore/Cart3F.cxx b/src/emucore/Cart3F.cxx index 55e798313..ca5bb6b76 100644 --- a/src/emucore/Cart3F.cxx +++ b/src/emucore/Cart3F.cxx @@ -32,24 +32,14 @@ Cartridge3F::Cartridge3F(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage.get(), image.get(), mySize); createCodeAccessBase(mySize); - - // Remember startup bank - myStartBank = bankCount() - 1; // last bank } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void Cartridge3F::reset() { - // define random startup banks - // Note: This works for all Tigervision ROMs except for one version of Polaris - // (md5: 203049f4d8290bb4521cc4402415e737) which requires 3 as startup bank - // (or non-randomized RAM). All other ROMs take care of other startup banks. - // The problematic version is most likely an incorrect dump with wrong - // startup vectors. - randomizeStartBank(); + initializeStartBank(bankCount() - 1); - // We'll map the startup bank into the first segment upon reset - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -72,8 +62,7 @@ void Cartridge3F::install(System& system) mySystem->setPageAccess(addr, access); } - // Install pages for startup bank into the first segment - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartAR.cxx b/src/emucore/CartAR.cxx index c33697e65..0b9ae7327 100644 --- a/src/emucore/CartAR.cxx +++ b/src/emucore/CartAR.cxx @@ -55,8 +55,9 @@ void CartridgeAR::reset() // Initialize RAM #if 0 // TODO - figure out actual behaviour of the real cart initializeRAM(myImage, 6*1024); +#else + memset(myImage, 0, 6 * 1024); #endif - memset(myImage, 0, 6 * 1024); // Initialize SC BIOS ROM initializeROM(); diff --git a/src/emucore/CartBF.cxx b/src/emucore/CartBF.cxx index 431021854..5c133e7b9 100644 --- a/src/emucore/CartBF.cxx +++ b/src/emucore/CartBF.cxx @@ -27,16 +27,15 @@ CartridgeBF::CartridgeBF(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(262144u, size)); createCodeAccessBase(262144); - - // Remember startup bank - myStartBank = 1; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeBF::reset() { + initializeStartBank(1); + // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -45,7 +44,7 @@ void CartridgeBF::install(System& system) mySystem = &system; // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartBFSC.cxx b/src/emucore/CartBFSC.cxx index 6eb4e4df6..1453a0ded 100644 --- a/src/emucore/CartBFSC.cxx +++ b/src/emucore/CartBFSC.cxx @@ -27,18 +27,16 @@ CartridgeBFSC::CartridgeBFSC(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(262144u, size)); createCodeAccessBase(262144); - - // Remember startup bank - myStartBank = 15; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeBFSC::reset() { initializeRAM(myRAM, 128); + initializeStartBank(15); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -68,7 +66,7 @@ void CartridgeBFSC::install(System& system) } // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartBUS.cxx b/src/emucore/CartBUS.cxx index 1ce766bda..e13dce2ef 100644 --- a/src/emucore/CartBUS.cxx +++ b/src/emucore/CartBUS.cxx @@ -85,7 +85,7 @@ void CartridgeBUS::reset() setInitialState(); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -98,7 +98,7 @@ void CartridgeBUS::setInitialState() myMusicWaveformSize[i] = 27; // BUS always starts in bank 6 - myStartBank = 6; + initializeStartBank(6); // Assuming mode starts out with Fast Fetch off and 3-Voice music, // need to confirm with Chris @@ -132,7 +132,7 @@ void CartridgeBUS::install(System& system) mySystem->m6532().installDelegate(system, *this); // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartCDF.cxx b/src/emucore/CartCDF.cxx index c9166ecc1..b4ca532d1 100644 --- a/src/emucore/CartCDF.cxx +++ b/src/emucore/CartCDF.cxx @@ -87,7 +87,7 @@ void CartridgeCDF::reset() setInitialState(); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -100,7 +100,7 @@ void CartridgeCDF::setInitialState() myMusicWaveformSize[i] = 27; // CDF always starts in bank 6 - myStartBank = 6; + initializeStartBank(6); // Assuming mode starts out with Fast Fetch off and 3-Voice music, // need to confirm with Chris @@ -127,7 +127,7 @@ void CartridgeCDF::install(System& system) mySystem->setPageAccess(addr, access); // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartCM.cxx b/src/emucore/CartCM.cxx index 238b4bcf8..b35a68d11 100644 --- a/src/emucore/CartCM.cxx +++ b/src/emucore/CartCM.cxx @@ -32,7 +32,7 @@ CartridgeCM::CartridgeCM(const BytePtr& image, uInt32 size, createCodeAccessBase(16384); // On powerup, the last bank of ROM is enabled and RAM is disabled - myStartBank = mySWCHA & 0x3; + initializeStartBank(mySWCHA & 0x3); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -41,7 +41,7 @@ void CartridgeCM::reset() initializeRAM(myRAM, 2048); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -54,7 +54,7 @@ void CartridgeCM::install(System& system) mySystem->m6532().installDelegate(system, *this); // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartCTY.cxx b/src/emucore/CartCTY.cxx index daa2ae2b3..af090a3a9 100644 --- a/src/emucore/CartCTY.cxx +++ b/src/emucore/CartCTY.cxx @@ -41,9 +41,6 @@ CartridgeCTY::CartridgeCTY(const BytePtr& image, uInt32 size, // Point to the first tune myFrequencyImage = CartCTYTunes; - - // Remember startup bank (not bank 0, since that's ARM code) - myStartBank = 1; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -51,13 +48,16 @@ void CartridgeCTY::reset() { initializeRAM(myRAM, 64); + // Remember startup bank (not bank 0, since that's ARM code) + initializeStartBank(1); + myRAM[0] = myRAM[1] = myRAM[2] = myRAM[3] = 0xFF; myAudioCycles = 0; myFractionalClocks = 0.0; // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -71,7 +71,7 @@ void CartridgeCTY::install(System& system) mySystem->setPageAccess(addr, access); // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartCVPlus.cxx b/src/emucore/CartCVPlus.cxx index da3640d0d..1281b4e0a 100644 --- a/src/emucore/CartCVPlus.cxx +++ b/src/emucore/CartCVPlus.cxx @@ -32,18 +32,16 @@ CartridgeCVPlus::CartridgeCVPlus(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage.get(), image.get(), mySize); createCodeAccessBase(mySize + 1024); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeCVPlus::reset() { initializeRAM(myRAM, 1024); + initializeStartBank(0); // We'll map the startup bank into the first segment upon reset - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -79,7 +77,7 @@ void CartridgeCVPlus::install(System& system) } // Install pages for the startup bank into the first segment - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartDASH.cxx b/src/emucore/CartDASH.cxx index fe037dcdc..f30f01488 100644 --- a/src/emucore/CartDASH.cxx +++ b/src/emucore/CartDASH.cxx @@ -31,10 +31,6 @@ CartridgeDASH::CartridgeDASH(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage.get(), image.get(), mySize); createCodeAccessBase(mySize + RAM_TOTAL_SIZE); - - // Remember startup bank (0 per spec, rather than last per 3E scheme). - // Set this to go to 3rd 1K Bank. - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -42,6 +38,10 @@ void CartridgeDASH::reset() { initializeRAM(myRAM, RAM_TOTAL_SIZE); + // Remember startup bank (0 per spec, rather than last per 3E scheme). + // Set this to go to 3rd 1K Bank. + initializeStartBank(0); + // Initialise bank values for all ROM/RAM access // This is used to reverse-lookup from address to bank location for(uInt32 b = 0; b < 8; ++b) diff --git a/src/emucore/CartDF.cxx b/src/emucore/CartDF.cxx index 407759d43..093ba8c7e 100644 --- a/src/emucore/CartDF.cxx +++ b/src/emucore/CartDF.cxx @@ -27,16 +27,15 @@ CartridgeDF::CartridgeDF(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(131072u, size)); createCodeAccessBase(131072); - - // Remember startup bank - myStartBank = 1; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeDF::reset() { + initializeStartBank(1); + // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -45,7 +44,7 @@ void CartridgeDF::install(System& system) mySystem = &system; // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartDFSC.cxx b/src/emucore/CartDFSC.cxx index a01352541..c40d9c02c 100644 --- a/src/emucore/CartDFSC.cxx +++ b/src/emucore/CartDFSC.cxx @@ -27,18 +27,16 @@ CartridgeDFSC::CartridgeDFSC(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(131072u, size)); createCodeAccessBase(131072); - - // Remember startup bank - myStartBank = 15; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeDFSC::reset() { initializeRAM(myRAM, 128); + initializeStartBank(15); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -68,7 +66,7 @@ void CartridgeDFSC::install(System& system) } // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartDPC.cxx b/src/emucore/CartDPC.cxx index f310fbf15..e05e0c8cf 100644 --- a/src/emucore/CartDPC.cxx +++ b/src/emucore/CartDPC.cxx @@ -49,9 +49,6 @@ CartridgeDPC::CartridgeDPC(const BytePtr& image, uInt32 size, // Initialize the DPC's random number generator register (must be non-zero) myRandomNumber = 1; - - // Remember startup bank - myStartBank = 1; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -60,11 +57,11 @@ void CartridgeDPC::reset() myAudioCycles = 0; myFractionalClocks = 0.0; - // define random startup bank - randomizeStartBank(); + // Use random startup bank + initializeStartBank(); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -78,7 +75,7 @@ void CartridgeDPC::install(System& system) mySystem->setPageAccess(addr, access); // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartDPCPlus.cxx b/src/emucore/CartDPCPlus.cxx index 7ca7b4314..131fe6679 100644 --- a/src/emucore/CartDPCPlus.cxx +++ b/src/emucore/CartDPCPlus.cxx @@ -62,9 +62,6 @@ CartridgeDPCPlus::CartridgeDPCPlus(const BytePtr& image, uInt32 size, this); setInitialState(); - - // DPC+ always starts in bank 5 - myStartBank = 5; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -75,8 +72,11 @@ void CartridgeDPCPlus::reset() setInitialState(); + // DPC+ always starts in bank 5 + initializeStartBank(5); + // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -120,7 +120,7 @@ void CartridgeDPCPlus::install(System& system) mySystem->setPageAccess(addr, access); // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartEF.cxx b/src/emucore/CartEF.cxx index c1f648fdd..8224a01aa 100644 --- a/src/emucore/CartEF.cxx +++ b/src/emucore/CartEF.cxx @@ -27,16 +27,15 @@ CartridgeEF::CartridgeEF(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(65536u, size)); createCodeAccessBase(65536); - - // Remember startup bank - myStartBank = 1; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeEF::reset() { + initializeStartBank(1); + // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -45,7 +44,7 @@ void CartridgeEF::install(System& system) mySystem = &system; // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartEFSC.cxx b/src/emucore/CartEFSC.cxx index c5c2d7aaa..21e62d0f6 100644 --- a/src/emucore/CartEFSC.cxx +++ b/src/emucore/CartEFSC.cxx @@ -27,18 +27,16 @@ CartridgeEFSC::CartridgeEFSC(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(65536u, size)); createCodeAccessBase(65536); - - // Remember startup bank - myStartBank = 15; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeEFSC::reset() { initializeRAM(myRAM, 128); + initializeStartBank(15); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -68,7 +66,7 @@ void CartridgeEFSC::install(System& system) } // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartF0.cxx b/src/emucore/CartF0.cxx index 7f141d079..240e59fc8 100644 --- a/src/emucore/CartF0.cxx +++ b/src/emucore/CartF0.cxx @@ -27,19 +27,16 @@ CartridgeF0::CartridgeF0(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(65536u, size)); createCodeAccessBase(65536); - - // Remember startup bank - myStartBank = 15; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeF0::reset() { - // define random startup bank - randomizeStartBank(); + // Use random startup bank + initializeStartBank(); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -48,7 +45,7 @@ void CartridgeF0::install(System& system) mySystem = &system; // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartF4.cxx b/src/emucore/CartF4.cxx index b9c47eeb4..2a07b0e3d 100644 --- a/src/emucore/CartF4.cxx +++ b/src/emucore/CartF4.cxx @@ -28,19 +28,16 @@ CartridgeF4::CartridgeF4(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(32768u, size)); createCodeAccessBase(32768); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeF4::reset() { - // define random startup bank - randomizeStartBank(); + // Use random startup bank + initializeStartBank(); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -49,7 +46,7 @@ void CartridgeF4::install(System& system) mySystem = &system; // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartF4SC.cxx b/src/emucore/CartF4SC.cxx index 686ff34eb..04114a4da 100644 --- a/src/emucore/CartF4SC.cxx +++ b/src/emucore/CartF4SC.cxx @@ -27,21 +27,16 @@ CartridgeF4SC::CartridgeF4SC(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(32768u, size)); createCodeAccessBase(32768); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeF4SC::reset() { initializeRAM(myRAM, 128); - - // define random startup bank - randomizeStartBank(); + initializeStartBank(); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -71,7 +66,7 @@ void CartridgeF4SC::install(System& system) } // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartF6.cxx b/src/emucore/CartF6.cxx index 583cfd538..e401dbf1b 100644 --- a/src/emucore/CartF6.cxx +++ b/src/emucore/CartF6.cxx @@ -27,19 +27,16 @@ CartridgeF6::CartridgeF6(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(16384u, size)); createCodeAccessBase(16384); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeF6::reset() { - // define random startup bank - randomizeStartBank(); + // Use random startup bank + initializeStartBank(); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -48,7 +45,7 @@ void CartridgeF6::install(System& system) mySystem = &system; // Upon install we'll setup the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartF6SC.cxx b/src/emucore/CartF6SC.cxx index 828f3b6da..ca0a72237 100644 --- a/src/emucore/CartF6SC.cxx +++ b/src/emucore/CartF6SC.cxx @@ -27,21 +27,16 @@ CartridgeF6SC::CartridgeF6SC(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(16384u, size)); createCodeAccessBase(16384); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeF6SC::reset() { - // define random startup bank - randomizeStartBank(); - initializeRAM(myRAM, 128); + initializeStartBank(); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -71,7 +66,7 @@ void CartridgeF6SC::install(System& system) } // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartF8.cxx b/src/emucore/CartF8.cxx index 387f758e3..4c46b4f29 100644 --- a/src/emucore/CartF8.cxx +++ b/src/emucore/CartF8.cxx @@ -27,28 +27,15 @@ CartridgeF8::CartridgeF8(const BytePtr& image, uInt32 size, const string& md5, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(8192u, size)); createCodeAccessBase(8192); - - // Normally bank 1 is the reset bank, unless we're dealing with ROMs - // that have been incorrectly created with banks in the opposite order - myStartBank = - (md5 == "bc24440b59092559a1ec26055fd1270e" || // Private Eye [a] - md5 == "75ea60884c05ba496473c23a58edf12f" || // 8-in-1 Yars Revenge - md5 == "75ee371ccfc4f43e7d9b8f24e1266b55" || // Snow White - md5 == "74c8a6f20f8adaa7e05183f796eda796" || // Tricade Demo - md5 == "9905f9f4706223dadee84f6867ede8e3" || // Challenge - md5 == "3c7a7b3a0a7e6319b2fa0f923ef6c9af" || // Racer Prototype - md5 == "2434102f30eeb47792cf0825e368229b") // Arkyology - ? 0 : 1; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeF8::reset() { - // define random startup bank - randomizeStartBank(); + initializeStartBank(1); // Upon reset we switch to the reset bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -57,7 +44,7 @@ void CartridgeF8::install(System& system) mySystem = &system; // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartF8SC.cxx b/src/emucore/CartF8SC.cxx index 8e5bdaec9..b01c93fbb 100644 --- a/src/emucore/CartF8SC.cxx +++ b/src/emucore/CartF8SC.cxx @@ -27,21 +27,16 @@ CartridgeF8SC::CartridgeF8SC(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(8192u, size)); createCodeAccessBase(8192); - - // Remember startup bank - myStartBank = 1; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeF8SC::reset() { - // define startup bank - randomizeStartBank(); - initializeRAM(myRAM, 128); + initializeStartBank(); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -71,7 +66,7 @@ void CartridgeF8SC::install(System& system) } // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartFA.cxx b/src/emucore/CartFA.cxx index ddaed396f..9710ec1e1 100644 --- a/src/emucore/CartFA.cxx +++ b/src/emucore/CartFA.cxx @@ -27,21 +27,16 @@ CartridgeFA::CartridgeFA(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(12288u, size)); createCodeAccessBase(12288); - - // Remember startup bank - myStartBank = 2; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeFA::reset() { - // define random startup bank - randomizeStartBank(); - initializeRAM(myRAM, 256); + initializeStartBank(2); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -71,7 +66,7 @@ void CartridgeFA::install(System& system) } // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartFA2.cxx b/src/emucore/CartFA2.cxx index b80280a41..50df848c4 100644 --- a/src/emucore/CartFA2.cxx +++ b/src/emucore/CartFA2.cxx @@ -39,21 +39,16 @@ CartridgeFA2::CartridgeFA2(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, img_ptr, mySize); createCodeAccessBase(mySize); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeFA2::reset() { - // define random startup bank - randomizeStartBank(); - initializeRAM(myRAM, 256); + initializeStartBank(); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -83,7 +78,7 @@ void CartridgeFA2::install(System& system) } // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartFE.cxx b/src/emucore/CartFE.cxx index 67e7e564c..69ee56966 100644 --- a/src/emucore/CartFE.cxx +++ b/src/emucore/CartFE.cxx @@ -29,14 +29,15 @@ CartridgeFE::CartridgeFE(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(8192u, size)); createCodeAccessBase(8192); - - myStartBank = 0; // Decathlon requires this, since there is no startup vector in bank 1 } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeFE::reset() { - bank(myStartBank); + // Decathlon requires this, since there is no startup vector in bank 1 + initializeStartBank(0); + + bank(startBank()); myLastAccessWasFE = false; } diff --git a/src/emucore/CartMDM.cxx b/src/emucore/CartMDM.cxx index b64e9ff64..0c85f269f 100644 --- a/src/emucore/CartMDM.cxx +++ b/src/emucore/CartMDM.cxx @@ -32,16 +32,15 @@ CartridgeMDM::CartridgeMDM(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage.get(), image.get(), mySize); createCodeAccessBase(mySize); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeMDM::reset() { + initializeStartBank(0); + // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -66,7 +65,7 @@ void CartridgeMDM::install(System& system) mySystem->setPageAccess(addr, access); // Install pages for bank 0 - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartMNetwork.cxx b/src/emucore/CartMNetwork.cxx index 9a65f7ad1..c3f8f35fa 100644 --- a/src/emucore/CartMNetwork.cxx +++ b/src/emucore/CartMNetwork.cxx @@ -38,8 +38,6 @@ void CartridgeMNetwork::initialize(const BytePtr& image, uInt32 size) memcpy(myImage.get(), image.get(), std::min(romSize(), size)); createCodeAccessBase(romSize() + RAM_SIZE); - // Remember startup bank - myStartBank = 0; myRAMSlice = bankCount() - 1; } @@ -48,14 +46,14 @@ void CartridgeMNetwork::reset() { initializeRAM(myRAM, RAM_SIZE); - // define random startup banks - randomizeStartBank(); + // Use random startup bank + initializeStartBank(); uInt32 ramBank = randomStartBank() ? mySystem->randGenerator().next() % 4 : 0; // Install some default banks for the RAM and first segment bankRAM(ramBank); - bank(myStartBank); + bank(startBank()); myBankChanged = true; } @@ -104,7 +102,7 @@ void CartridgeMNetwork::install(System& system) // Install some default banks for the RAM and first segment bankRAM(0); - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartSB.cxx b/src/emucore/CartSB.cxx index df01ebc33..53725a32c 100644 --- a/src/emucore/CartSB.cxx +++ b/src/emucore/CartSB.cxx @@ -31,16 +31,15 @@ CartridgeSB::CartridgeSB(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage.get(), image.get(), mySize); createCodeAccessBase(mySize); - - // Remember startup bank - myStartBank = bankCount() - 1; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeSB::reset() { + initializeStartBank(bankCount() - 1); + // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -66,7 +65,7 @@ void CartridgeSB::install(System& system) mySystem->setPageAccess(addr, access); // Install pages for startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -76,7 +75,7 @@ uInt8 CartridgeSB::peek(uInt16 address) // Switch banks if necessary if ((address & 0x1800) == 0x0800) - bank(address & myStartBank); + bank(address & startBank()); if(!(address & 0x1000)) { @@ -96,7 +95,7 @@ bool CartridgeSB::poke(uInt16 address, uInt8 value) // Switch banks if necessary if((address & 0x1800) == 0x0800) - bank(address & myStartBank); + bank(address & startBank()); if(!(address & 0x1000)) { diff --git a/src/emucore/CartUA.cxx b/src/emucore/CartUA.cxx index dc1866c22..a7569116f 100644 --- a/src/emucore/CartUA.cxx +++ b/src/emucore/CartUA.cxx @@ -27,19 +27,15 @@ CartridgeUA::CartridgeUA(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(8192u, size)); createCodeAccessBase(8192); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeUA::reset() { - // define startup bank - randomizeStartBank(); + initializeStartBank(); // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -57,7 +53,7 @@ void CartridgeUA::install(System& system) mySystem->setPageAccess(0x0240, access); // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartWD.cxx b/src/emucore/CartWD.cxx index 9fa631f7c..d5fcee56c 100644 --- a/src/emucore/CartWD.cxx +++ b/src/emucore/CartWD.cxx @@ -32,21 +32,19 @@ CartridgeWD::CartridgeWD(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), mySize); createCodeAccessBase(8192); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeWD::reset() { initializeRAM(myRAM, 64); + initializeStartBank(0); myCyclesAtBankswitchInit = 0; myPendingBank = 0xF0; // one more than the allowable bank # // Setup segments to some default slices - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -77,7 +75,7 @@ void CartridgeWD::install(System& system) mySystem->tia().installDelegate(system, *this); // Setup segments to some default slices - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartX07.cxx b/src/emucore/CartX07.cxx index 8a47ba37d..2beeb6666 100644 --- a/src/emucore/CartX07.cxx +++ b/src/emucore/CartX07.cxx @@ -29,16 +29,15 @@ CartridgeX07::CartridgeX07(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(65536u, size)); createCodeAccessBase(65536); - - // Remember startup bank - myStartBank = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CartridgeX07::reset() { + initializeStartBank(); + // Upon reset we switch to the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -54,7 +53,7 @@ void CartridgeX07::install(System& system) mySystem->setPageAccess(addr, access); // Install pages for the startup bank - bank(myStartBank); + bank(startBank()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index 106f31197..b77c0c033 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -113,6 +113,12 @@ Console::Console(OSystem& osystem, unique_ptr& cart, myLeftControl = make_unique(Controller::Left, myEvent, *mySystem); myRightControl = make_unique(Controller::Right, myEvent, *mySystem); + // Let the cart know how to query for the 'Cartridge.StartBank' property + myCart->setStartBankFromPropsFunc([this]() { + const string& startbank = myProperties.get(Cartridge_StartBank); + return startbank == EmptyString ? -1 : atoi(startbank.c_str()); + }); + // We can only initialize after all the devices/components have been created mySystem->initialize(); diff --git a/src/emucore/Console.hxx b/src/emucore/Console.hxx index 753343197..9597a0da1 100644 --- a/src/emucore/Console.hxx +++ b/src/emucore/Console.hxx @@ -390,7 +390,7 @@ class Console : public Serializable // Pointer to the TIA object unique_ptr myTIA; - // The frame manager instance that is used during emulation. + // The frame manager instance that is used during emulation unique_ptr myFrameManager; // The audio fragment queue that connects TIA and audio driver diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index 3fbe22479..c4f809e0b 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -25,7 +25,7 @@ regenerated and the application recompiled. */ -#define DEF_PROPS_SIZE 3318 +#define DEF_PROPS_SIZE 3319 static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -481,7 +481,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "23fad5a125bcd4463701c8ad8a0043a9", "CCE", "C-840", "Stone Age (1983) (CCE)", "Uses the Joystick Controllers (swapped)", "", "", "", "", "A", "A", "", "YES", "", "", "", "", "", "", "220", "YES", "" }, { "240bfbac5163af4df5ae713985386f92", "Activision, Steve Cartwright", "AX-022", "Seaquest (1983) (Activision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2432f33fd278dea5fe6ae94073627fcc", "CBS Electronics, Tom DiDomenico", "4L2477, 4L2482, 4L2485, 4L4171", "Blueprint (1983) (CBS Electronics) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "2434102f30eeb47792cf0825e368229b", "Sparrow - Enter-Tech, Paul Walters, Rick Harris, George Hefner, Barbara Ultis", "", "Arkyology (1983) (Sparrow) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2434102f30eeb47792cf0825e368229b", "Sparrow - Enter-Tech, Paul Walters, Rick Harris, George Hefner, Barbara Ultis", "", "Arkyology (1983) (Sparrow) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "0", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "24385ba7f5109fbe76aadc0a375de573", "CCE", "", "Xevious (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "2447e17a4e18e6b609de498fe4ab52ba", "CCE", "", "Super Futebol (CCE)", "AKA RealSports Soccer", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "244c6de27faff527886fc7699a41c3be", "", "", "Matt Demo (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -816,7 +816,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "3c4a6f613ca8ba27ce9e43c6c92a3128", "", "", "Qb (V0.04) (Non-Lax Version) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "3c57748c8286cf9e821ecd064f21aaa9", "Atari, Jerome Domurat, Andrew Fuchs, Dave Staugas, Robert Vieira", "CX26118", "Millipede (1984) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3c72ddaf41158fdd66e4f1cb90d4fd29", "Dismac", "", "Comando Suicida (Dismac)", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, - { "3c7a7b3a0a7e6319b2fa0f923ef6c9af", "Atari - Roklan, Joe Gaucher", "", "Racer (1982) (Atari) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "3c7a7b3a0a7e6319b2fa0f923ef6c9af", "Atari - Roklan, Joe Gaucher", "", "Racer (1982) (Atari) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "0", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3c7a96978f52b2b15426cdd50f2c4048", "", "", "Overhead Adventure Demo 3 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3c82e808fe0e6a006dc0c4e714d36209", "Activision, David Crane", "AG-004", "Fishing Derby (1980) (Activision) (16K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3c853d864a1d5534ed0d4b325347f131", "Telesys, Don 'Donyo' Ruffcorn", "1002", "Cosmic Creeps (1982) (Telesys)", "AKA Space Maze, Spaze Maze", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, @@ -1576,7 +1576,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "75e8d8b9e9c5c67c2226dbfd77dcfa7d", "", "", "2600 Digital Clock (V b1) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "75ea128ba96ac6db8edf54b071027c4e", "Atari, David Crane", "CX26163P", "Slot Machine (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "75ea60884c05ba496473c23a58edf12f", "Atari, Howard Scott Warshaw - Sears", "CX2655 - 49-75167", "Yars' Revenge (1982) (Atari) (PAL) [a]", "ROM must be started in bank 0", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, - { "75ee371ccfc4f43e7d9b8f24e1266b55", "Atari, Greg Easter, Mimi Nyden", "CX26107", "Snow White (11-09-1982) (Atari) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "75ee371ccfc4f43e7d9b8f24e1266b55", "Atari, Greg Easter, Mimi Nyden", "CX26107", "Snow White (11-09-1982) (Atari) (Prototype)", "ROM must be started in bank 0", "Prototype", "", "0", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "7608abdfd9b26f4a0ecec18b232bea54", "Atari, Bob Whitehead", "CX26163P", "NFL Football (32 in 1) (1988) (Atari) (PAL)", "AKA Football", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "7623a639a6fffdb246775fe2eabc8d01", "Activision, Bob Whitehead", "AG-005, CAG-005, AG-005-04", "Skiing (1980) (Activision) (8K)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "7628d3cadeee0fd2e41e68b3b8fbe229", "Atari", "CX26163P", "Fishing Derby (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2412,6 +2412,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "bb756aa98b847dddc8fc170bc79f92b2", "", "", "Golf (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "bb9f06b288b5275bc0d38b6731b2526a", "", "", "Star Fire - Meteor Dance 2 (18-11-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "bbf8c7c9ed280151934aabe138e41ba7", "Amiga", "1130", "Power Play Arcade Video Game Album V (1984) (Amiga) (Prototype)", "Mogul Maniac, Surf's Up, Off Your Rocker, S.A.C. Alert", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bc24440b59092559a1ec26055fd1270e", "", "", "Private Eye (1984) (Activision) [a]", "", "", "", "0", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "bc3057a35319aae3a5cd87a203736abe", "CCE", "C-845", "Time Warp (1983) (CCE)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "bc33c685e6ffced83abe7a43f30df7f9", "Dynacom", "", "Seaquest (1983) (Dynacom)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "bc4cf38a4bee45752dc466c98ed7ad09", "Atari, Douglas Neubauer, Mimi Nyden", "CX26136", "Solaris (1986) (Atari) (PAL)", "AKA Universe, Star Raiders II, The Last Starfighter", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, diff --git a/src/emucore/stella.pro b/src/emucore/stella.pro index 800f89e91..87c9e4bed 100644 --- a/src/emucore/stella.pro +++ b/src/emucore/stella.pro @@ -4876,6 +4876,7 @@ "Cartridge.Name" "Racer (1982) (Atari) (Prototype)" "Cartridge.Note" "ROM must be started in bank 0" "Cartridge.Rarity" "Prototype" +"Cartridge.StartBank" "0" "" "Cartridge.MD5" "3c7a96978f52b2b15426cdd50f2c4048" @@ -9543,6 +9544,7 @@ "Cartridge.Name" "Snow White (11-09-1982) (Atari) (Prototype)" "Cartridge.Note" "ROM must be started in bank 0" "Cartridge.Rarity" "Prototype" +"Cartridge.StartBank" "0" "" "Cartridge.MD5" "7608abdfd9b26f4a0ecec18b232bea54" @@ -19897,6 +19899,11 @@ "Cartridge.Name" "Private Eye (CCE)" "" +"Cartridge.MD5" "bc24440b59092559a1ec26055fd1270e" +"Cartridge.Name" "Private Eye (1984) (Activision) [a]" +"Cartridge.StartBank" "0" +"" + "Cartridge.MD5" "f9d51a4e5f8b48f68770c89ffd495ed1" "Cartridge.Manufacturer" "Atari, Tod Frye, Mimi Nyden" "Cartridge.ModelNo" "CX2657" @@ -20435,6 +20442,7 @@ "Cartridge.Name" "Arkyology (1983) (Sparrow) (Prototype)" "Cartridge.Note" "ROM must be started in bank 0" "Cartridge.Rarity" "Prototype" +"Cartridge.StartBank" "0" "" "Cartridge.MD5" "93c4b910f7649b3e998bb6d8527c6f4a"

    by|bC9zGG#4IV ztngpE@ZbX+O%|`_5~i~erJfym^@tHiLkI#m^!^})KZHPE++nwPXd_t^=>U(+S)0vJ zTM{JIS+cD9?ImCVc4=TZAl7S{1AV@#rPM9cJJTQe(lNAR%X4-ghfVIoX z?9Ca}u9{DgReNXeW1MglnFlu8;DgtYk0ZA9LXGdNR3>s1pK9V+GH&P)aCZ@8_G|Tl z^2em)4H5<}pI`?AJ#i7LG^#8fb!W(En_EA|+i{;0m+PL{!t3>veK}3nlMx46eg*ve z$U}i(Gwr)8y4v64geNSaXr9;0363JHpWh9Jf`^|KlkS7Z zM_e3>@L@p@4x*vqe2Y#BvB78f2RQ=(`!rLmzXQr_(Dfu)1sP@Y`|fs7@&0iC`%39U zy%Ku^_60sK3mo?tpZiH2X;mj|dB8#Ib{HweSN1%*Ap>5`JN})fr$|#Ztwl5n52<-{ z)m{b6rE^CR@U}nORFq3UFFxd9d3hb`8Ga=}^eBXZn=pgQN#*bfPXj`z*Yc*;j?wms zJ4;0J|ChB?Y&ct|NjpfEC5Z;@GW-Xk`HOYN@myac$YkQB7p~$C(aOZYc}WCm{gY;5 zf;ZbO1=q(R)IsiS#@_HNFatk37R=t%k6U86lJf~j0@b}gaIE5-r}#`N9-k0ObLW0$ zC*|LpXqqg5BQJu!nCZ=PX!`j!kt&}}k&4xoyZhxnD-)K3jaL>;rru=Njh|yQExA&} zMi*6M<1nrm6MQDIT>gBi{1vn^EPZ1l|B^*MTSD!-jyPV1z;1K1Uhgrk=(qXxxTOO* zE4}h?7c*=Gv-t`Y{4Tj`$;&eT2p><^u&#it);v{@&d^XT3QE>vsQpSzuE;0Gskd4s z$XU43#^jSdVWq`^Yg%_LGAHSgCghjVXZ+*tH5VE{Y3Y%bNrG5McA|-U-WkpEu(4!E zI$M?fJ0Y5#lc@KXhhNjD+)s7Var7UQ>_Ll7K8N{_@iu zx2xW<`oX#)E-Rzu#vH5pOd!;sN-TTL3^p@m*pT}^9jHw0Ry5PXSvNbmfhNC-A$zdH#6fN26JYpB{D7P8-!)0GFi*)5VM|UH0SVy=vop16$jQczI7${l#`KX zmV3VAPzy&J&M)wUCO|UCBCd}WGFA^&qV8iz#IeB%OlJ*suK^uJB7VD#R zETlveEOrvt3l1I?vO&^lJ>314_(W1#lps1<{(x@US;(z=_Nk=QWIrMhsPMvq==GOM z%K8E5^&K(I_?L-6+4gr=Ak@~ySu)d?ExI(ZVG6jF?&i)Ll>%stU0zj2Y%`a+umJ)O zDsFw|<|*V_UwxRTvrs$?do+?%tf|+igK|9Iq}TR^D`8^V zXUVySx9ENVFw?a>D(PDJKiqh-Op(Y;kv%n}bR z5E5sGR8_VM`^TjL97>3b%^i?lfV8F|1>f7~_q@NcA^wj<_YdI&wL^c4q~=hTVKIT% zR_6ESP8NRJIPudL9`qoMOb*H@%?)aY98?E@7Z2s-(<1Bjci!pDC2|#YXV)W?;Q=4H z@h835>Zz)b3)Z7Om=9_lw*%mvM>n>+b(wzDlRCXI75Df!V9`h{JJzUuuTES%>m&94 zlh5S9W)}Se4Tl>t@)V`%O3uq=mV*=b^O}vV%)W_ba8Pxq&d1&RQF)J!w#MAM?X^a< z8Mh8kE&>*Bmm^Uu5x1F{SmzqcFjUeajPp7OBmja^)arun&7ubZAh;wL2w?Iiv)Z9jm65``m!~yVeutbm+&eJZ_z~ zHoE7lqhm7|m4*&>$qO$jOnd27eR;_=m>x${=vH|z2c`PS2k{8`6RQn-!``0ckHwjUdUx=>G_VrSs-sQPilC|h;YZ>uCNMqEZ zH_i_yVd++DJZv{hy`oxL=$M?*1%Kt#WZNOp3A^{yw9~e$q@Cw`cx491COOPdBx^l} zJh0(x|KsbZg$FopSG64RTYH9T`>|g-!%!?TO5+Xot78WuJ5{&V75918VWRld9R zJ;zsZT_Q&RxKH?9kNxk<3;$a^&vsk7Jc#9|wEyx#;>ILy1J)|kOs{%GJk21d?%+;U zyT_Ijz*CYJatTz$C`Kco<=T?!Z6Jgxeb>bpN0z=zwSz@2pPI1M$|~E~`po)*`o5v= zVVPvEVBq5G@TbEksAzBsUGk=;`&(xPF8jU$TM)!f4$Q>Ws`(3on=5FGE4d0LBCq@W z_ZZH)E(IP-417D>L9J?q;q5@9p7{L+GBV9p1%SpN{tL3+ttJ+m`5nL z(O8-a4AKMQtTtUMZ(2ZI82As8~O{z7(j^q5|F_g2R};t04xC6{D!cK*pDd;HUlm`G{Y9!EhX7 zxLzQ)-+of49_DmwkG&=Hk3jT?kb&GeA{-r@lGd7A=Pso%y#4*>=!TAgcDbfa_`d-k C9pzO3 literal 6607 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 WH!9v$x&{9Fw`5{uVOVb98ueec{WBK; literal 7240 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 bzfNKkmkVr#go{wW|JE_qx6rHCaf|;CC6v1Z diff --git a/docs/graphics/options_developer_timemachine.png b/docs/graphics/options_developer_timemachine.png index caf3cc63dd633f39af5ce14f541781879c7d2bfd..761970ed35f1701b05cb4e383d73a7e819d16be8 100644 GIT binary patch literal 5735 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 diff --git a/docs/graphics/options_developer_video.png b/docs/graphics/options_developer_video.png index f9e591cd01f7dbd8d5faba4c38498cd30472ea82..a017fa2afe9f527a0b5cc88e730775efd8d0682d 100644 GIT binary patch literal 7051 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 P{s%#-Xx%DMwhH_&(u=6D literal 6726 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 or gamepads are highly recommended