From 888556b124c52e80b3e72e5fb0b6c33a02f9e81d Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Mon, 17 Sep 2018 00:23:06 +0200 Subject: [PATCH 01/30] Another pass at resolving ystart issues. Reverts 02b0c13a and b9bbbe1 . --- src/emucore/Console.cxx | 84 +++++++++++++++++++------------------- src/emucore/Console.hxx | 3 ++ src/emucore/tia/TIA.cxx | 16 +++++--- src/emucore/tia/TIA.hxx | 7 +++- src/gui/GameInfoDialog.cxx | 28 +++---------- 5 files changed, 66 insertions(+), 72 deletions(-) diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index b77c0c033..46b3bfc04 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -87,6 +87,7 @@ Console::Console(OSystem& osystem, unique_ptr& cart, myCurrentFormat(0), // Unknown format @ start, myAutodetectedYstart(0), myYStartAutodetected(false), + myFormatAutodetected(false), myUserPaletteDefined(false), myConsoleTiming(ConsoleTiming::ntsc), myAudioSettings(audioSettings) @@ -143,6 +144,7 @@ Console::Console(OSystem& osystem, unique_ptr& cart, { autodetected = "*"; myCurrentFormat = 0; + myFormatAutodetected = true; } } @@ -284,8 +286,6 @@ void Console::autodetectYStart(bool reset) // Don't forget to reset the SC progress bars again myOSystem.settings().setValue("fastscbios", fastscbios); - - myYStartAutodetected = true; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -370,17 +370,17 @@ void Console::setFormat(uInt32 format) string saveformat, message; string autodetected = ""; - bool reset = true; myCurrentFormat = format; switch(myCurrentFormat) { case 0: // auto-detect { + if (myFormatAutodetected) return; + string oldDisplayFormat = myDisplayFormat; redetectFrameLayout(); - myTIA->update(); - reset = oldDisplayFormat != myDisplayFormat; + myFormatAutodetected = true; saveformat = "AUTO"; autodetected = "*"; myConsoleTiming = myDisplayFormat == "PAL" ? ConsoleTiming::pal : ConsoleTiming::ntsc; @@ -391,45 +391,48 @@ void Console::setFormat(uInt32 format) saveformat = myDisplayFormat = "NTSC"; myConsoleTiming = ConsoleTiming::ntsc; message = "NTSC mode"; + myFormatAutodetected = false; break; case 2: saveformat = myDisplayFormat = "PAL"; myConsoleTiming = ConsoleTiming::pal; message = "PAL mode"; + myFormatAutodetected = false; break; case 3: saveformat = myDisplayFormat = "SECAM"; myConsoleTiming = ConsoleTiming::secam; message = "SECAM mode"; + myFormatAutodetected = false; break; case 4: saveformat = myDisplayFormat = "NTSC50"; myConsoleTiming = ConsoleTiming::ntsc; message = "NTSC50 mode"; + myFormatAutodetected = false; break; case 5: saveformat = myDisplayFormat = "PAL60"; myConsoleTiming = ConsoleTiming::pal; message = "PAL60 mode"; + myFormatAutodetected = false; break; case 6: saveformat = myDisplayFormat = "SECAM60"; myConsoleTiming = ConsoleTiming::secam; message = "SECAM60 mode"; + myFormatAutodetected = false; break; } myProperties.set(Display_Format, saveformat); myConsoleInfo.DisplayFormat = myDisplayFormat + autodetected; - if(reset) - { - setPalette(myOSystem.settings().getString("palette")); - setTIAProperties(); - initializeVideo(); // takes care of refreshing the screen - initializeAudio(); // ensure that audio synthesis is set up to match emulation speed - myOSystem.resetFps(); // Reset FPS measurement - } + setPalette(myOSystem.settings().getString("palette")); + setTIAProperties(); + initializeVideo(); // takes care of refreshing the screen + initializeAudio(); // ensure that audio synthesis is set up to match emulation speed + myOSystem.resetFps(); // Reset FPS measurement myOSystem.frameBuffer().showMessage(message); @@ -696,31 +699,28 @@ void Console::changeYStart(int direction) else return; - ostringstream val; - val << ystart; if(ystart == 0) { redetectYStart(); ystart = myAutodetectedYstart; + myYStartAutodetected = true; - myOSystem.frameBuffer().showMessage("YStart autodetected"); + myProperties.set(Display_YStart, "0"); } - else - { - if(myAutodetectedYstart > 0 && myAutodetectedYstart == ystart) - { - // We've reached the auto-detect value, so reset - myOSystem.frameBuffer().showMessage("YStart " + val.str() + " (Auto)"); - val.str(""); - val << static_cast(0); - } - else - myOSystem.frameBuffer().showMessage("YStart " + val.str()); + else { + ostringstream ss; + ss << ystart; - myYStartAutodetected = false; + myProperties.set(Display_YStart, ss.str()); } - myProperties.set(Display_YStart, val.str()); - myTIA->setYStart(ystart); + if (ystart != myTIA->ystart()) myTIA->setYStart(ystart); + + ostringstream ss; + + if(myAutodetectedYstart == ystart) ss << "YStart " << ystart << " (Auto)"; + else ss << "YStart " << ystart; + + myOSystem.frameBuffer().showMessage(ss.str()); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -728,20 +728,15 @@ void Console::updateYStart(uInt32 ystart) { if (ystart > TIAConstants::maxYStart) return; - ostringstream ss; - ss << ystart; - - if (ss.str() == myProperties.get(Display_YStart)) return; - - myProperties.set(Display_YStart, ss.str()); - if (ystart == 0) { + if (myYStartAutodetected) return; + redetectYStart(); - myTIA->setYStart(myAutodetectedYstart); - } else { - myTIA->setYStart(ystart); - myYStartAutodetected = false; + myYStartAutodetected = true; + ystart = myAutodetectedYstart; } + + if (ystart != myTIA->ystart()) myTIA->setYStart(ystart); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -782,6 +777,11 @@ void Console::setTIAProperties() uInt32 ystart = atoi(myProperties.get(Display_YStart).c_str()); if(ystart != 0) ystart = BSPF::clamp(ystart, 0u, TIAConstants::maxYStart); + else { + ystart = myAutodetectedYstart; + myYStartAutodetected = true; + } + uInt32 height = atoi(myProperties.get(Display_Height).c_str()); if(height != 0) height = BSPF::clamp(height, TIAConstants::minViewableHeight, TIAConstants::maxViewableHeight); @@ -801,7 +801,7 @@ void Console::setTIAProperties() myTIA->setLayout(FrameLayout::pal); } - myTIA->setYStart(myAutodetectedYstart ? myAutodetectedYstart : ystart); + myTIA->setYStart(ystart); myTIA->setHeight(height); myEmulationTiming.updateFrameLayout(myTIA->frameLayout()); diff --git a/src/emucore/Console.hxx b/src/emucore/Console.hxx index 9597a0da1..a8ab18785 100644 --- a/src/emucore/Console.hxx +++ b/src/emucore/Console.hxx @@ -420,6 +420,9 @@ class Console : public Serializable // Is ystart currently autodetected? bool myYStartAutodetected; + // Is the TV format autodetected? + bool myFormatAutodetected; + // Indicates whether an external palette was found and // successfully loaded bool myUserPaletteDefined; diff --git a/src/emucore/tia/TIA.cxx b/src/emucore/tia/TIA.cxx index 757baca7b..1ded2ef27 100644 --- a/src/emucore/tia/TIA.cxx +++ b/src/emucore/tia/TIA.cxx @@ -178,7 +178,7 @@ void TIA::reset() if (myFrameManager) { myFrameManager->reset(); - enableColorLoss(mySettings.getBool(mySettings.getBool("dev.settings") ? "dev.colorloss" : "plr.colorloss")); + frameReset(); // Recalculate the size of the display } myFrontBufferScanlines = myFrameBufferScanlines = 0; @@ -189,16 +189,20 @@ void TIA::reset() enableFixedColors(mySettings.getBool(mySettings.getBool("dev.settings") ? "dev.debugcolors" : "plr.debugcolors")); setFixedColorPalette(mySettings.getString("tia.dbgcolors")); - // 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); - #ifdef DEBUGGER_SUPPORT createAccessBase(); #endif // DEBUGGER_SUPPORT } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void TIA::frameReset() +{ + 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")); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void TIA::install(System& system) { diff --git a/src/emucore/tia/TIA.hxx b/src/emucore/tia/TIA.hxx index 1687331d4..c7ecac78b 100644 --- a/src/emucore/tia/TIA.hxx +++ b/src/emucore/tia/TIA.hxx @@ -136,6 +136,11 @@ 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. @@ -249,7 +254,7 @@ class TIA : public Device /** Changes the current Height/YStart properties. Note that calls to these method(s) must be eventually followed by - ::reset() for the changes to take effect. + ::frameReset() 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 00d85d267..ecd970fc9 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -531,22 +531,18 @@ 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_YStart, myYStart->getValue() == 0 ? "0" : myYStart->getValueLabel()); 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()); // Always insert; if the properties are already present, nothing will happen instance().propSet().insert(myGameProperties); + instance().saveConfig(); // In any event, inform the Console if(instance().hasConsole()) @@ -563,28 +559,14 @@ void GameInfoDialog::saveConfig() // update 'Display' tab settings immediately instance().console().setFormat(myFormat->getSelected()); + instance().console().updateYStart(myYStart->getValue()); - // 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 || oldHeight != 0) && + if(uInt32(myHeight->getValue()) != TIAConstants::minViewableHeight - 1 && uInt32(myHeight->getValue()) != instance().console().tia().height()) { instance().console().tia().setHeight(myHeight->getValue()); - reset = true; } instance().frameBuffer().tiaSurface().enablePhosphor(myPhosphor->getState(), myPPBlend->getValue()); - if (reset) - 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(); } } From 8f03a48f113f8f3875161cbee0d54fceace2465e Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 16 Sep 2018 21:44:17 -0230 Subject: [PATCH 02/30] Partially restore a reverted commit. - Since changing ystart/height no longer needs to call `TIA::frameReset()`, the method is no longer valid - Remove the method, and all documentation that says it is necessary to call it --- src/emucore/tia/TIA.cxx | 16 ++++++---------- src/emucore/tia/TIA.hxx | 7 ------- 2 files changed, 6 insertions(+), 17 deletions(-) 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..502e61bcc 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. @@ -253,8 +248,6 @@ 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. */ void setHeight(uInt32 height) { myFrameManager->setFixedHeight(height); } void setYStart(uInt32 ystart) { myFrameManager->setYstart(ystart); } From 7982f7cb9b6eae789541d44f36c951ff3d09cbc1 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 16 Sep 2018 22:49:33 -0230 Subject: [PATCH 03/30] Various updates to the 'CTY' scheme, all by SpiceWare: - music support - autodetection support - creation of 60K ROMs For the latter, I still need to see how we will distribute those ROMs, and get them added to the database. --- Changes.txt | 4 + docs/index.html | 2 +- src/emucore/CartCTY.cxx | 261 ++++- src/emucore/CartCTY.hxx | 19 +- src/emucore/CartCTYTunes.hxx | 1844 ---------------------------------- src/emucore/CartDetector.cxx | 14 +- 6 files changed, 267 insertions(+), 1877 deletions(-) delete mode 100644 src/emucore/CartCTYTunes.hxx diff --git a/Changes.txt b/Changes.txt index 993781e3a..d9937648b 100644 --- a/Changes.txt +++ b/Changes.txt @@ -104,6 +104,10 @@ * Added recently released 'Arkyology' prototype ROM to the database. + * Added premliminary support for 'CTY' bankswitching scheme and recently + released 'Chetiry' ROMs. Special thanks to SpiceWare for adding music + support to this scheme. + * For UNIX systems: in the ROM launcher, when using symlinks use the symlink pathname instead of the underlying filesystem pathname. diff --git a/docs/index.html b/docs/index.html index e95f41ba1..424a6caf6 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3587,7 +3587,7 @@ Ms Pac-Man (Stella extended codes): BUS Experimental.BUS CDF Chris, Darrell, Fred.CDF CM ¹Spectravideo CompuMate .CM - CTY ¹²CDW - Chetiry .CTY + CTY ²CDW - Chetiry .CTY CV Commavid extra ram .CV CV+ Extended Commavid extra ram.CVP DASH Boulder Dash 2 .DAS diff --git a/src/emucore/CartCTY.cxx b/src/emucore/CartCTY.cxx index af090a3a9..5fa2c5654 100644 --- a/src/emucore/CartCTY.cxx +++ b/src/emucore/CartCTY.cxx @@ -18,7 +18,6 @@ #include "OSystem.hxx" #include "Serializer.hxx" #include "System.hxx" -#include "CartCTYTunes.hxx" #include "CartCTY.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -27,7 +26,7 @@ CartridgeCTY::CartridgeCTY(const BytePtr& image, uInt32 size, : Cartridge(osystem.settings()), myOSystem(osystem), myOperationType(0), - myCounter(0), + myTunePosition(0), myLDAimmediate(false), myRandomNumber(0x2B435044), myRamAccessTimeout(0), @@ -39,16 +38,24 @@ CartridgeCTY::CartridgeCTY(const BytePtr& image, uInt32 size, memcpy(myImage, image.get(), std::min(32768u, size)); createCodeAccessBase(32768); + // Default to no tune data in case user is utilizing an old ROM + memset(myTuneData, 0, 28*1024); + + // Extract tune data if it exists + if (size > 32768u) + memcpy(myTuneData, image.get() + 32768u, size - 32768u); + // Point to the first tune - myFrequencyImage = CartCTYTunes; + myFrequencyImage = myTuneData; + + for(uInt8 i = 0; i < 3; i++) + myMusicCounters[i] = myMusicFrequencies[i] = 0; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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; @@ -94,15 +101,23 @@ uInt8 CartridgeCTY::peek(uInt16 address) // Update the music data fetchers (counter & flag) updateMusicModeDataFetchers(); -#if 0 - // using myDisplayImage[] instead of myProgramImage[] because waveforms - // can be modified during runtime. - uInt32 i = myDisplayImage[(myMusicWaveforms[0] << 5) + (myMusicCounters[0] >> 27)] + - myDisplayImage[(myMusicWaveforms[1] << 5) + (myMusicCounters[1] >> 27)] + - myDisplayImage[(myMusicWaveforms[2] << 5) + (myMusicCounters[2] >> 27)]; - return = (uInt8)i; -#endif - return 0xF2; // FIXME - return frequency value here + uInt8 i = 0; + + /* + in the ARM driver registers 8-10 are the music counters 0-2 + lsr r2, r8, #31 + add r2, r2, r9, lsr #31 + add r2, r2, r10, lsr #31 + lsl r2, r2, #2 + */ + + i = myMusicCounters[0] >> 31; + i = i + (myMusicCounters[1] >> 31); + i = i + (myMusicCounters[2] >> 31); + i <<= 2; + + return i; + } else myLDAimmediate = false; @@ -132,9 +147,9 @@ uInt8 CartridgeCTY::peek(uInt16 address) ((myRandomNumber >> 11) | (myRandomNumber << 21)); return myRandomNumber & 0xFF; case 0x02: // Get Tune position (low byte) - return myCounter & 0xFF; + return myTunePosition & 0xFF; case 0x03: // Get Tune position (high byte) - return (myCounter >> 8) & 0xFF; + return (myTunePosition >> 8) & 0xFF; default: return myRAM[address]; } @@ -175,7 +190,7 @@ bool CartridgeCTY::poke(uInt16 address, uInt8 value) //cerr << "POKE: address=" << HEX4 << address << ", value=" << HEX2 << value << endl; if(address < 0x0040) // Write port is at $1000 - $103F (64 bytes) { - switch(address) // FIXME for functionality + switch(address) { case 0x00: // Operation type for $1FF4 myOperationType = value; @@ -184,10 +199,16 @@ bool CartridgeCTY::poke(uInt16 address, uInt8 value) myRandomNumber = 0x2B435044; break; case 0x02: // Reset fetcher to beginning of tune - myCounter = 0; + myTunePosition = 0; + myMusicCounters[0] = 0; + myMusicCounters[1] = 0; + myMusicCounters[2] = 0; + myMusicFrequencies[0] = 0; + myMusicFrequencies[1] = 0; + myMusicFrequencies[2] = 0; break; case 0x03: // Advance fetcher to next tune position - myCounter = (myCounter + 3) & 0x0fff; + updateTune(); break; default: myRAM[address] = value; @@ -283,11 +304,14 @@ bool CartridgeCTY::save(Serializer& out) const out.putByteArray(myRAM, 64); out.putByte(myOperationType); - out.putShort(myCounter); + out.putShort(myTunePosition); out.putBool(myLDAimmediate); out.putInt(myRandomNumber); out.putLong(myAudioCycles); out.putDouble(myFractionalClocks); + out.putIntArray(myMusicCounters, 3); + out.putIntArray(myMusicFrequencies, 3); + out.putLong(myFrequencyImage - myTuneData); } catch(...) @@ -309,11 +333,14 @@ bool CartridgeCTY::load(Serializer& in) in.getByteArray(myRAM, 64); myOperationType = in.getByte(); - myCounter = in.getShort(); + myTunePosition = in.getShort(); myLDAimmediate = in.getBool(); myRandomNumber = in.getInt(); myAudioCycles = in.getLong(); myFractionalClocks = in.getDouble(); + in.getIntArray(myMusicCounters, 3); + in.getIntArray(myMusicFrequencies, 3); + myFrequencyImage = myTuneData + in.getLong(); } catch(...) { @@ -415,10 +442,62 @@ void CartridgeCTY::loadTune(uInt8 index) // Each tune is offset by 4096 bytes // Instead of copying non-modifiable data around (as would happen on the // Harmony), we simply point to the appropriate tune - myFrequencyImage = CartCTYTunes + (index << 12); + myFrequencyImage = myTuneData + (index << 12); // Reset to beginning of tune - myCounter = 0; + myTunePosition = 0; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void CartridgeCTY::updateTune() +{ +//UpdateTune: +// /* Float data bus */ +// strb r8, [r0, #+0x01] +// +// /* Increment song position */ +// add r7, r7, #1 r7 = songPosition +// +// /* Read song data (0 = continue) */ +// msr cpsr_c, #MODE_FIQ|I_BIT|F_BIT +// ldrb r2, [r14], #1 r14 = myTunePosition, r2 = note +// cmp r2, #0 +// ldrne r11, [r6, +r2, lsl #2] r6 +r2 = ourFrequencyTable[note]. Why lsl #2? +// ldrb r2, [r14], #1 r11 = myMusicFrequency[0] +// cmp r2, #0 +// ldrne r12, [r6, +r2, lsl #2] r12 = myMusicFrequency[1] +// ldrb r2, [r14], #1 +// cmp r2, #1 +// ldrcs r13, [r6, +r2, lsl #2] r13 = myMusicFrequency[2] +// +// /* Reset tune */ +// mvneq r7, #0 +// moveq r14, r4 r4 = start of tune data +// msr cpsr_c, #MODE_SYS|I_BIT|F_BIT +// +// /* Wait until address changes */ +//WaitAddrChangeA: +// ldrh r2, [r0, #+0x16] +// cmp r1, r2 +// beq WaitAddrChangeA +// b NewAddress + + myTunePosition += 1; + uInt16 songPosition = (myTunePosition - 1) *3; + + uInt8 note = myFrequencyImage[songPosition + 0]; + if (note) + myMusicFrequencies[0] = ourFrequencyTable[note]; + + note = myFrequencyImage[songPosition + 1]; + if (note) + myMusicFrequencies[1] = ourFrequencyTable[note]; + + note = myFrequencyImage[songPosition + 2]; + if (note == 1) + myTunePosition = 0; + else + myMusicFrequencies[2] = ourFrequencyTable[note]; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -511,5 +590,139 @@ inline void CartridgeCTY::updateMusicModeDataFetchers() // Let's update counters and flags of the music mode data fetchers if(wholeClocks > 0) for(int x = 0; x <= 2; ++x) - ; //myMusicCounters[x] += myMusicFrequencies[x] * wholeClocks; + myMusicCounters[x] += myMusicFrequencies[x] * wholeClocks; } + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +const uInt32 CartridgeCTY::ourFrequencyTable[63] = +{ + // this should really be referenced from within the ROM, but its part of + // the Harmony/Melody CTY Driver, which does not appear to be in the ROM. + + 0, // CONT 0 Continue Note + 0, // REPEAT 1 Repeat Song + 0, // REST 2 Note Rest + /* + 3511350 // C0 + 3720300 // C0s + 3941491 // D0 + 4175781 // D0s + 4424031 // E0 + 4687313 // F0 + 4965841 // F0s + 5261120 // G0 + 5496699 // G0s + + 5905580 // A1 + 6256694 // A1s + 6628853 // B1 + 7022916 // C1 + 7440601 // C1s + 7882983 // D1 + 8351778 // D1s + 8848277 // E1 + 9374625 // F1 + 9931897 // F1s + 10522455 // G1 + 11148232 // G1s + */ + 11811160, // A2 + 12513387, // A2s + 13257490, // B2 + 14045832, // C2 + 14881203, // C2s + 15765966, // D2 + 16703557, // D2s + 17696768, // E2 + 18749035, // F2 + 19864009, // F2s + 21045125, // G2 + 22296464, // G2s + + 23622320, // A3 + 25026989, // A3s + 26515195, // B3 + 28091878, // C3 + 29762191, // C3s + 31531932, // D3 + 33406900, // D3s + 35393537, // E3 + 37498071, // F3 + 39727803, // F3s + 42090250, // G3 + 44592927, // G3s + + 47244640, // A4 + 50053978, // A4s + 53030391, // B4 + 56183756, // C4 (Middle C) + 59524596, // C4s + 63064079, // D4 + 66814014, // D4s + 70787074, // E4 + 74996142, // F4 + 79455606, // F4s + 84180285, // G4 + 89186069, // G4s + + 94489281, // A5 + 100107957, // A5s + 106060567, // B5 + 112367297, // C5 + 119048977, // C5s + 126128157, // D5 + 133628029, // D5s + 141573933, // E5 + 149992288, // F5 + 158911428, // F5s + 168360785, // G5 + 178371925, // G5s + + 188978561, // A6 + 200215913, // A6s + 212121348, // B6 + 224734593, // C6 + 238098169, // C6s + 252256099, // D6 + 267256058, // D6s + 283147866, // E6 + 299984783, // F6 + 317822855, // F6s + 336721571, // G6 + 356744064 // G6s + /* + 377957122 // A7 + 400431612 // A7s + 424242481 // B7 + 449469401 // C7 + 476196124 // C7s + 504512198 // D7 + 534512116 // D7s + 566295948 // E7 + 599969565 // F7 + 635645496 // F7s + 673443141 // G7 + 713488128 // G7s + + 755914244 // A8 + 800863224 // A8s + 848484963 // B8 + 898938588 // C8 + 952392248 // C8s + 1009024398 // D8 + 1069024232 // D8s + 1132591895 // E8 + 1199939130 // F8 + 1271290992 // F8s + 1346886282 // G8 + 1426976255 // G8s + + 1511828488 // A9 + 1601726449 // A9s + 1696969925 // B9 + 1797877176 // C9 + 1904784495 // C9s + 2018048796 // D9 + 2138048463 // D9s + */ +}; diff --git a/src/emucore/CartCTY.hxx b/src/emucore/CartCTY.hxx index b991f06b5..518145d71 100644 --- a/src/emucore/CartCTY.hxx +++ b/src/emucore/CartCTY.hxx @@ -83,8 +83,6 @@ class System; The tune table functionality is also based on Harmony EEPROM, where 7 4K tunes are stored (28K total). The 'index' for operation 1 can therefore be in the range 0 - 6, indicating which tune to load. - For this implementation, the 28K tune data is in the 'CartCTYTunes' - header file. DPC+: The music functionality is quite similar to the DPC+ scheme. @@ -256,6 +254,8 @@ class CartridgeCTY : public Cartridge */ void updateMusicModeDataFetchers(); + void updateTune(); + private: // OSsytem currently in use const OSystem& myOSystem; @@ -263,6 +263,9 @@ class CartridgeCTY : public Cartridge // The 32K ROM image of the cartridge uInt8 myImage[32768]; + // The 28K ROM image of the music + uInt8 myTuneData[28*1024]; + // The 64 bytes of RAM accessible at $1000 - $1080 uInt8 myRAM[64]; @@ -270,11 +273,17 @@ class CartridgeCTY : public Cartridge uInt8 myOperationType; // Pointer to the 28K frequency table (points to the start of one - // of seven 4K tunes in CartCTYTunes) + // of seven 4K tunes in myTuneData) const uInt8* myFrequencyImage; // The counter register for the data fetcher - uInt16 myCounter; + uInt16 myTunePosition; + + // The music mode counters + uInt32 myMusicCounters[3]; + + // The music frequency + uInt32 myMusicFrequencies[3]; // Flags that last byte peeked was A9 (LDA #) bool myLDAimmediate; @@ -301,6 +310,8 @@ class CartridgeCTY : public Cartridge // Indicates the offset into the ROM image (aligns to current bank) uInt16 myBankOffset; + static const uInt32 ourFrequencyTable[63]; + private: // Following constructors and assignment operators not supported CartridgeCTY() = delete; diff --git a/src/emucore/CartCTYTunes.hxx b/src/emucore/CartCTYTunes.hxx deleted file mode 100644 index 427377026..000000000 --- a/src/emucore/CartCTYTunes.hxx +++ /dev/null @@ -1,1844 +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 CARTRIDGECHETIRY_TUNES_HXX -#define CARTRIDGECHETIRY_TUNES_HXX - -/** - The following is the contents of the 'tunes.bin' file, which is used by - the Chetiry bankswitch scheme for tunes data. There are 7 4K chunks. -*/ - -#define CHETIRY_TUNES_SIZE 7 * 4096 - -static constexpr uInt8 CartCTYTunes[CHETIRY_TUNES_SIZE] = { - /////////////////////////// - // Tune 1 - /////////////////////////// - 0x25, 0x20, 0x02, 0x00, 0x00, 0x00, 0x25, 0x20, 0x00, 0x00, 0x00, 0x00, 0x25, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x20, 0x00, 0x00, 0x00, 0x00, 0x23, 0x25, 0x00, 0x00, 0x00, 0x00, 0x22, 0x27, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x29, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x2a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - /////////////////////////// - // Tune 2 - /////////////////////////// - 0x2e, 0x29, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x29, 0x26, 0x0a, 0x00, - 0x00, 0x00, 0x2a, 0x27, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x29, 0x0a, 0x00, 0x00, 0x00, 0x2e, 0x00, - 0x16, 0x2c, 0x00, 0x00, 0x2a, 0x27, 0x0a, 0x00, 0x00, 0x00, 0x29, 0x25, 0x16, 0x00, 0x00, 0x00, - 0x27, 0x22, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x27, 0x22, 0x0f, 0x00, - 0x00, 0x00, 0x2a, 0x27, 0x1b, 0x00, 0x00, 0x00, 0x2e, 0x2a, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x2c, 0x29, 0x0f, 0x00, 0x00, 0x00, 0x2a, 0x27, 0x1b, 0x00, 0x00, 0x00, - 0x29, 0x26, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x22, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0d, 0x00, - 0x00, 0x00, 0x2a, 0x27, 0x19, 0x00, 0x00, 0x00, 0x2c, 0x29, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x2e, 0x2a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x2a, 0x27, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x27, 0x22, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x27, 0x22, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x14, 0x00, 0x00, 0x00, 0x2c, 0x23, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x2f, 0x27, 0x14, 0x00, 0x00, 0x00, 0x33, 0x2a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x14, 0x00, 0x2a, 0x00, 0x31, 0x29, 0x14, 0x00, 0x00, 0x00, 0x2f, 0x27, 0x0b, 0x00, 0x00, 0x00, - 0x2e, 0x25, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x2a, 0x22, 0x12, 0x00, 0x00, 0x00, 0x2e, 0x25, 0x12, 0x00, 0x00, 0x00, 0x00, 0x27, - 0x0d, 0x00, 0x25, 0x00, 0x2c, 0x23, 0x02, 0x00, 0x00, 0x00, 0x2a, 0x22, 0x0d, 0x00, 0x00, 0x00, - 0x29, 0x26, 0x11, 0x00, 0x00, 0x00, 0x00, 0x22, 0x1d, 0x00, 0x00, 0x00, 0x29, 0x26, 0x02, 0x00, - 0x00, 0x00, 0x2a, 0x27, 0x1d, 0x00, 0x00, 0x00, 0x2c, 0x29, 0x02, 0x00, 0x00, 0x00, 0x00, 0x25, - 0x16, 0x00, 0x00, 0x00, 0x2e, 0x2a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1a, 0x00, 0x00, 0x00, - 0x2a, 0x27, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x22, 0x16, 0x00, 0x00, 0x00, 0x27, 0x22, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x27, 0x22, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x29, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x29, 0x26, 0x0a, 0x00, - 0x00, 0x00, 0x2a, 0x27, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x29, 0x0a, 0x00, 0x00, 0x00, 0x2e, 0x00, - 0x16, 0x2c, 0x00, 0x00, 0x2a, 0x27, 0x0a, 0x00, 0x00, 0x00, 0x29, 0x25, 0x16, 0x00, 0x00, 0x00, - 0x27, 0x22, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x27, 0x22, 0x0f, 0x00, - 0x00, 0x00, 0x2a, 0x27, 0x1b, 0x00, 0x00, 0x00, 0x2e, 0x2a, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x2c, 0x29, 0x0f, 0x00, 0x00, 0x00, 0x2a, 0x27, 0x1b, 0x00, 0x00, 0x00, - 0x29, 0x26, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x22, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x26, 0x0d, 0x00, - 0x00, 0x00, 0x2a, 0x27, 0x19, 0x00, 0x00, 0x00, 0x2c, 0x29, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x2e, 0x2a, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x2a, 0x27, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x27, 0x22, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x27, 0x22, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x14, 0x00, 0x00, 0x00, 0x2c, 0x23, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x2f, 0x27, 0x14, 0x00, 0x00, 0x00, 0x33, 0x2a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x2a, - 0x14, 0x00, 0x2a, 0x00, 0x31, 0x29, 0x14, 0x00, 0x00, 0x00, 0x2f, 0x27, 0x0b, 0x00, 0x00, 0x00, - 0x2e, 0x25, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x2a, 0x22, 0x12, 0x00, 0x00, 0x00, 0x2e, 0x25, 0x12, 0x00, 0x00, 0x00, 0x00, 0x27, - 0x0d, 0x00, 0x25, 0x00, 0x2c, 0x23, 0x02, 0x00, 0x00, 0x00, 0x2a, 0x22, 0x0d, 0x00, 0x00, 0x00, - 0x29, 0x26, 0x11, 0x00, 0x00, 0x00, 0x00, 0x22, 0x1d, 0x00, 0x00, 0x00, 0x29, 0x26, 0x02, 0x00, - 0x00, 0x00, 0x2a, 0x27, 0x1d, 0x00, 0x00, 0x00, 0x2c, 0x29, 0x02, 0x00, 0x00, 0x00, 0x00, 0x25, - 0x16, 0x00, 0x00, 0x00, 0x2e, 0x2a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1a, 0x00, 0x00, 0x00, - 0x2a, 0x27, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x22, 0x16, 0x00, 0x00, 0x00, 0x27, 0x22, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x27, 0x22, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x22, 0x1e, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1e, 0x1b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x20, 0x1d, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x1d, 0x1a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x1e, 0x1b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1b, 0x16, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x1a, 0x16, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x22, 0x1e, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1e, 0x1b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x20, 0x1d, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x1d, 0x1a, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, - 0x1e, 0x1b, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x22, 0x1e, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x27, 0x22, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0x26, 0x22, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - /////////////////////////// - // Tune 3 - /////////////////////////// - 0x02, 0x16, 0x02, 0x00, 0x02, 0x00, 0x00, 0x16, 0x00, 0x00, 0x16, 0x00, 0x00, 0x11, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x11, 0x00, 0x00, 0x02, 0x00, 0x00, 0x16, 0x00, 0x00, 0x02, 0x00, 0x00, 0x16, - 0x00, 0x00, 0x16, 0x00, 0x00, 0x11, 0x00, 0x00, 0x02, 0x00, 0x00, 0x11, 0x00, 0x00, 0x02, 0x00, - 0x02, 0x16, 0x0a, 0x00, 0x02, 0x02, 0x00, 0x16, 0x0a, 0x00, 0x16, 0x0a, 0x00, 0x11, 0x11, 0x00, - 0x02, 0x02, 0x00, 0x11, 0x11, 0x00, 0x02, 0x02, 0x00, 0x16, 0x0a, 0x00, 0x02, 0x02, 0x00, 0x16, - 0x0a, 0x00, 0x16, 0x0a, 0x00, 0x11, 0x11, 0x00, 0x02, 0x02, 0x00, 0x11, 0x11, 0x00, 0x02, 0x02, - 0x22, 0x1d, 0x16, 0x00, 0x00, 0x02, 0x29, 0x22, 0x16, 0x00, 0x00, 0x16, 0x2e, 0x25, 0x11, 0x00, - 0x00, 0x02, 0x2d, 0x27, 0x11, 0x00, 0x00, 0x02, 0x2e, 0x25, 0x16, 0x00, 0x00, 0x02, 0x29, 0x25, - 0x16, 0x29, 0x25, 0x16, 0x2a, 0x27, 0x11, 0x00, 0x00, 0x02, 0x27, 0x24, 0x11, 0x00, 0x00, 0x02, - 0x29, 0x25, 0x16, 0x00, 0x00, 0x02, 0x25, 0x22, 0x16, 0x25, 0x22, 0x16, 0x27, 0x24, 0x11, 0x00, - 0x00, 0x02, 0x24, 0x21, 0x11, 0x00, 0x00, 0x02, 0x25, 0x22, 0x16, 0x00, 0x00, 0x02, 0x22, 0x1d, - 0x16, 0x22, 0x1d, 0x16, 0x24, 0x20, 0x11, 0x00, 0x00, 0x02, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x02, - 0x22, 0x1d, 0x16, 0x00, 0x00, 0x02, 0x1d, 0x1b, 0x16, 0x1d, 0x1b, 0x16, 0x1e, 0x1b, 0x11, 0x00, - 0x00, 0x02, 0x21, 0x1b, 0x11, 0x00, 0x00, 0x02, 0x22, 0x1d, 0x16, 0x00, 0x00, 0x02, 0x1d, 0x1b, - 0x16, 0x1d, 0x1b, 0x16, 0x1e, 0x1b, 0x11, 0x00, 0x00, 0x02, 0x24, 0x1b, 0x11, 0x00, 0x00, 0x02, - 0x22, 0x1d, 0x16, 0x00, 0x00, 0x02, 0x29, 0x22, 0x16, 0x00, 0x00, 0x16, 0x2e, 0x25, 0x11, 0x00, - 0x00, 0x02, 0x2d, 0x27, 0x11, 0x00, 0x00, 0x02, 0x2e, 0x25, 0x16, 0x00, 0x00, 0x02, 0x29, 0x25, - 0x16, 0x29, 0x25, 0x16, 0x2a, 0x27, 0x11, 0x00, 0x00, 0x02, 0x27, 0x24, 0x11, 0x00, 0x00, 0x02, - 0x29, 0x25, 0x16, 0x00, 0x00, 0x02, 0x25, 0x22, 0x16, 0x25, 0x22, 0x16, 0x27, 0x24, 0x11, 0x00, - 0x00, 0x02, 0x24, 0x21, 0x11, 0x00, 0x00, 0x02, 0x25, 0x22, 0x16, 0x00, 0x00, 0x02, 0x22, 0x1d, - 0x16, 0x22, 0x1d, 0x16, 0x24, 0x20, 0x11, 0x00, 0x00, 0x02, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x02, - 0x22, 0x1d, 0x16, 0x00, 0x00, 0x02, 0x1d, 0x1b, 0x16, 0x1d, 0x1b, 0x16, 0x1e, 0x1b, 0x11, 0x00, - 0x00, 0x02, 0x21, 0x1b, 0x11, 0x00, 0x00, 0x02, 0x22, 0x1d, 0x16, 0x00, 0x00, 0x02, 0x1d, 0x1b, - 0x16, 0x1d, 0x1b, 0x16, 0x1e, 0x1b, 0x11, 0x00, 0x00, 0x02, 0x24, 0x1b, 0x11, 0x00, 0x00, 0x02, - 0x22, 0x1d, 0x16, 0x00, 0x00, 0x02, 0x02, 0x02, 0x16, 0x00, 0x00, 0x16, 0x00, 0x00, 0x12, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x16, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x16, 0x24, 0x1d, 0x15, 0x00, 0x00, 0x02, 0x21, 0x1d, 0x11, 0x00, 0x00, 0x02, - 0x22, 0x1d, 0x16, 0x00, 0x00, 0x02, 0x02, 0x02, 0x16, 0x00, 0x00, 0x16, 0x02, 0x02, 0x12, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x02, 0x00, 0x00, 0x16, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x16, 0x24, 0x20, 0x0f, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, - 0x25, 0x02, 0x19, 0x00, 0x00, 0x02, 0x25, 0x00, 0x19, 0x25, 0x00, 0x14, 0x27, 0x00, 0x14, 0x00, - 0x00, 0x02, 0x24, 0x00, 0x14, 0x00, 0x00, 0x02, 0x25, 0x00, 0x0d, 0x00, 0x00, 0x02, 0x25, 0x00, - 0x19, 0x25, 0x00, 0x14, 0x27, 0x00, 0x14, 0x00, 0x00, 0x02, 0x24, 0x00, 0x14, 0x00, 0x00, 0x02, - 0x25, 0x02, 0x0d, 0x00, 0x00, 0x02, 0x02, 0x00, 0x19, 0x00, 0x00, 0x14, 0x02, 0x00, 0x14, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x02, 0x02, 0x00, 0x0d, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x14, 0x27, 0x24, 0x14, 0x00, 0x00, 0x02, 0x02, 0x02, 0x14, 0x00, 0x00, 0x02, - 0x29, 0x25, 0x0d, 0x00, 0x00, 0x02, 0x29, 0x25, 0x19, 0x29, 0x25, 0x14, 0x2a, 0x27, 0x14, 0x00, - 0x00, 0x02, 0x27, 0x24, 0x14, 0x00, 0x00, 0x02, 0x29, 0x25, 0x0d, 0x00, 0x00, 0x02, 0x29, 0x25, - 0x19, 0x29, 0x25, 0x14, 0x2a, 0x27, 0x14, 0x00, 0x00, 0x02, 0x27, 0x24, 0x14, 0x00, 0x00, 0x02, - 0x29, 0x25, 0x0d, 0x00, 0x00, 0x02, 0x02, 0x02, 0x19, 0x00, 0x00, 0x14, 0x02, 0x02, 0x14, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x02, 0x02, 0x02, 0x0d, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x19, 0x00, 0x00, 0x14, 0x2b, 0x22, 0x0d, 0x00, 0x00, 0x02, 0x02, 0x02, 0x0f, 0x00, 0x00, 0x02, - 0x2c, 0x24, 0x14, 0x00, 0x00, 0x02, 0x2c, 0x24, 0x14, 0x2c, 0x24, 0x0f, 0x2c, 0x27, 0x14, 0x00, - 0x00, 0x02, 0x2c, 0x24, 0x14, 0x00, 0x00, 0x02, 0x2e, 0x27, 0x0d, 0x00, 0x00, 0x02, 0x2c, 0x29, - 0x19, 0x00, 0x00, 0x14, 0x2c, 0x29, 0x0d, 0x00, 0x00, 0x02, 0x2b, 0x22, 0x19, 0x00, 0x00, 0x02, - 0x2c, 0x24, 0x14, 0x00, 0x00, 0x02, 0x2c, 0x24, 0x14, 0x2c, 0x24, 0x0f, 0x2c, 0x27, 0x14, 0x00, - 0x00, 0x02, 0x2c, 0x24, 0x14, 0x00, 0x00, 0x02, 0x2e, 0x27, 0x0d, 0x00, 0x00, 0x02, 0x2c, 0x29, - 0x19, 0x00, 0x00, 0x14, 0x2c, 0x29, 0x0d, 0x00, 0x00, 0x02, 0x2b, 0x22, 0x19, 0x00, 0x00, 0x02, - 0x2c, 0x24, 0x14, 0x00, 0x00, 0x02, 0x2c, 0x24, 0x14, 0x2c, 0x27, 0x0f, 0x2c, 0x24, 0x14, 0x00, - 0x00, 0x02, 0x2c, 0x27, 0x14, 0x00, 0x00, 0x02, 0x2b, 0x22, 0x14, 0x00, 0x00, 0x02, 0x2b, 0x24, - 0x14, 0x2b, 0x25, 0x0f, 0x2b, 0x22, 0x14, 0x00, 0x00, 0x02, 0x2b, 0x25, 0x14, 0x00, 0x00, 0x02, - 0x2a, 0x22, 0x14, 0x00, 0x00, 0x02, 0x2a, 0x24, 0x14, 0x2a, 0x25, 0x0f, 0x2a, 0x22, 0x14, 0x00, - 0x00, 0x02, 0x27, 0x24, 0x14, 0x00, 0x00, 0x02, 0x24, 0x1b, 0x14, 0x00, 0x00, 0x02, 0x25, 0x20, - 0x14, 0x00, 0x00, 0x0f, 0x27, 0x24, 0x14, 0x00, 0x00, 0x02, 0x24, 0x1b, 0x14, 0x00, 0x00, 0x02, - 0x27, 0x1d, 0x0a, 0x00, 0x00, 0x02, 0x25, 0x1d, 0x16, 0x25, 0x1d, 0x11, 0x24, 0x1d, 0x0a, 0x00, - 0x00, 0x02, 0x25, 0x1d, 0x16, 0x00, 0x00, 0x02, 0x02, 0x02, 0x0a, 0x00, 0x00, 0x02, 0x20, 0x1d, - 0x16, 0x22, 0x20, 0x11, 0x20, 0x1d, 0x0a, 0x00, 0x00, 0x02, 0x1d, 0x02, 0x16, 0x00, 0x00, 0x02, - 0x27, 0x1c, 0x0a, 0x00, 0x00, 0x02, 0x25, 0x1d, 0x16, 0x25, 0x1d, 0x11, 0x24, 0x1d, 0x0a, 0x00, - 0x00, 0x02, 0x25, 0x1d, 0x16, 0x00, 0x00, 0x02, 0x02, 0x02, 0x0a, 0x00, 0x00, 0x02, 0x20, 0x1d, - 0x16, 0x22, 0x20, 0x11, 0x20, 0x1d, 0x0a, 0x00, 0x00, 0x02, 0x1d, 0x02, 0x16, 0x00, 0x00, 0x02, - 0x20, 0x18, 0x14, 0x00, 0x00, 0x02, 0x02, 0x02, 0x14, 0x00, 0x00, 0x0f, 0x02, 0x02, 0x14, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x02, 0x02, 0x02, 0x14, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x14, 0x00, 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x02, - 0x02, 0x02, 0x14, 0x00, 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x14, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x14, 0x00, 0x00, 0x02, 0x02, 0x02, 0x14, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x14, 0x00, 0x00, 0x0f, 0x21, 0x1d, 0x14, 0x00, 0x00, 0x02, 0x02, 0x02, 0x14, 0x00, 0x00, 0x01, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - /////////////////////////// - // Tune 4 - /////////////////////////// - 0x27, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2f, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x2b, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0x1d, 0x2e, 0x00, 0x00, 0x2c, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x28, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, - 0x00, 0x00, 0x2a, 0x00, 0x1d, 0x2c, 0x00, 0x00, 0x27, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x25, 0x02, 0x1a, 0x00, 0x00, 0x00, 0x23, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1b, 0x27, 0x00, 0x00, 0x20, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x27, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0x1b, 0x2f, 0x00, 0x00, 0x33, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x2e, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, - 0x00, 0x00, 0x2f, 0x00, 0x1d, 0x31, 0x00, 0x00, 0x2f, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x28, 0x1d, 0x14, 0x2a, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1b, 0x12, 0x28, - 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x19, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0f, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x19, 0x0f, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x20, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x17, 0x00, 0x00, 0x00, 0x20, 0x02, 0x14, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x27, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2f, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x2b, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0x1d, 0x2e, 0x00, 0x00, 0x2c, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x28, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, - 0x00, 0x00, 0x2a, 0x00, 0x1d, 0x2c, 0x00, 0x00, 0x27, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x25, 0x02, 0x1a, 0x00, 0x00, 0x00, 0x23, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x22, 0x00, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1b, 0x27, 0x00, 0x00, 0x20, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x27, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, - 0x00, 0x00, 0x2c, 0x00, 0x1b, 0x2f, 0x00, 0x00, 0x33, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x2e, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, - 0x00, 0x00, 0x2f, 0x00, 0x1d, 0x31, 0x00, 0x00, 0x2f, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x28, 0x1d, 0x14, 0x2a, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1b, 0x12, 0x28, - 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x19, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0f, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x19, 0x0f, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x20, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0f, - 0x17, 0x00, 0x00, 0x00, 0x20, 0x02, 0x14, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x33, 0x2a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x02, 0x00, 0x33, 0x2a, 0x1b, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x02, 0x00, 0x34, 0x2c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x02, 0x02, 0x00, 0x33, 0x2a, 0x20, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x19, 0x00, 0x00, 0x00, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x20, 0x31, 0x00, 0x00, 0x33, 0x02, 0x19, 0x31, 0x00, 0x00, 0x30, 0x00, - 0x20, 0x33, 0x00, 0x00, 0x31, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x31, 0x28, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x02, 0x00, 0x31, 0x28, 0x19, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x02, 0x00, 0x33, 0x2a, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x02, 0x02, 0x00, 0x31, 0x29, 0x1e, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x17, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, - 0x00, 0x00, 0x2e, 0x00, 0x1e, 0x2f, 0x00, 0x00, 0x31, 0x02, 0x17, 0x2f, 0x00, 0x00, 0x2e, 0x00, - 0x1e, 0x31, 0x00, 0x00, 0x2f, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x2e, 0x25, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2e, 0x25, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x31, 0x29, 0x13, 0x00, 0x00, 0x00, 0x2f, 0x27, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2e, 0x25, 0x1b, 0x00, 0x00, 0x00, - 0x2e, 0x25, 0x11, 0x00, 0x00, 0x00, 0x2c, 0x29, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, - 0x00, 0x00, 0x2b, 0x02, 0x17, 0x2c, 0x00, 0x00, 0x2e, 0x02, 0x11, 0x2c, 0x00, 0x00, 0x2b, 0x00, - 0x17, 0x2e, 0x00, 0x00, 0x2c, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x33, 0x2b, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x0f, 0x29, 0x02, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2c, 0x02, 0x14, 0x00, 0x00, 0x00, 0x2c, 0x1b, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2b, 0x02, 0x02, 0x2c, 0x00, 0x00, 0x2e, 0x1d, 0x14, 0x2c, 0x00, 0x00, 0x2b, 0x00, - 0x00, 0x2e, 0x00, 0x00, 0x2c, 0x1b, 0x14, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x33, 0x2a, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x02, 0x00, 0x33, 0x2a, 0x1b, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x02, 0x00, 0x34, 0x2c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x02, 0x02, 0x00, 0x33, 0x2a, 0x20, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x19, 0x00, 0x00, 0x00, 0x31, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x20, 0x31, 0x00, 0x00, 0x33, 0x02, 0x19, 0x31, 0x00, 0x00, 0x30, 0x00, - 0x20, 0x33, 0x00, 0x00, 0x31, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x31, 0x28, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x02, 0x00, 0x31, 0x28, 0x19, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x02, 0x00, 0x33, 0x2a, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x02, 0x02, 0x00, 0x31, 0x29, 0x1e, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x17, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, - 0x00, 0x00, 0x2e, 0x00, 0x1e, 0x2f, 0x00, 0x00, 0x31, 0x02, 0x17, 0x2f, 0x00, 0x00, 0x2e, 0x00, - 0x1e, 0x31, 0x00, 0x00, 0x2f, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x2e, 0x25, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x2e, 0x25, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x31, 0x29, 0x13, 0x00, 0x00, 0x00, 0x2f, 0x27, - 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x2e, 0x25, 0x1b, 0x00, 0x00, 0x00, - 0x2e, 0x25, 0x11, 0x00, 0x00, 0x00, 0x2c, 0x29, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, - 0x00, 0x00, 0x2b, 0x02, 0x17, 0x2c, 0x00, 0x00, 0x2e, 0x02, 0x11, 0x2c, 0x00, 0x00, 0x2b, 0x00, - 0x17, 0x2e, 0x00, 0x00, 0x2c, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x33, 0x2b, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x0f, 0x29, 0x02, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2c, 0x02, 0x14, 0x00, 0x00, 0x00, 0x2c, 0x1b, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2b, 0x02, 0x02, 0x2c, 0x00, 0x00, 0x2e, 0x1d, 0x14, 0x2c, 0x00, 0x00, 0x2b, 0x00, - 0x00, 0x2e, 0x00, 0x00, 0x2c, 0x1b, 0x14, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - /////////////////////////// - // Tune 5 - /////////////////////////// - 0x1e, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x19, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x22, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x02, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x19, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x19, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x02, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1d, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x19, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x19, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x02, 0x14, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1d, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x19, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x19, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x22, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x02, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x19, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x1e, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x1e, 0x19, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x1e, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x1e, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1e, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x16, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x16, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x1e, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x1e, 0x1b, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x1e, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x27, 0x1e, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x1e, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x02, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2e, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x16, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x16, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x22, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1b, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x1b, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x19, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x16, 0x00, 0x00, 0x00, 0x1e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x19, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - /////////////////////////// - // Tune 6 - /////////////////////////// - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x29, - 0x00, 0x00, 0x27, 0x1d, 0x19, 0x2a, 0x00, 0x00, 0x29, 0x02, 0x18, 0x00, 0x00, 0x00, 0x27, 0x1e, - 0x1b, 0x00, 0x00, 0x00, 0x25, 0x02, 0x12, 0x00, 0x00, 0x00, 0x27, 0x1e, 0x0f, 0x00, 0x00, 0x00, - 0x25, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x27, 0x02, 0x0c, 0x25, - 0x00, 0x00, 0x24, 0x1b, 0x14, 0x25, 0x00, 0x00, 0x22, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x29, - 0x00, 0x00, 0x27, 0x1d, 0x19, 0x2a, 0x00, 0x00, 0x29, 0x02, 0x18, 0x00, 0x00, 0x00, 0x27, 0x1e, - 0x1b, 0x00, 0x00, 0x00, 0x25, 0x02, 0x12, 0x00, 0x00, 0x00, 0x27, 0x1e, 0x0f, 0x00, 0x00, 0x00, - 0x25, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x27, 0x02, 0x0c, 0x25, - 0x00, 0x00, 0x24, 0x1b, 0x15, 0x25, 0x00, 0x00, 0x22, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x29, - 0x00, 0x00, 0x27, 0x1d, 0x19, 0x2a, 0x00, 0x00, 0x27, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x27, 0x1e, - 0x1b, 0x00, 0x00, 0x00, 0x29, 0x02, 0x16, 0x27, 0x00, 0x00, 0x25, 0x1e, 0x1b, 0x29, 0x00, 0x00, - 0x25, 0x02, 0x18, 0x00, 0x00, 0x00, 0x25, 0x1e, 0x1b, 0x00, 0x00, 0x00, 0x27, 0x02, 0x12, 0x25, - 0x00, 0x00, 0x24, 0x1e, 0x0f, 0x27, 0x00, 0x00, 0x24, 0x02, 0x11, 0x00, 0x00, 0x00, 0x24, 0x1b, - 0x15, 0x00, 0x00, 0x00, 0x25, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x27, 0x1b, 0x15, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x29, - 0x00, 0x00, 0x27, 0x1d, 0x19, 0x2a, 0x00, 0x00, 0x29, 0x02, 0x18, 0x00, 0x00, 0x00, 0x27, 0x1e, - 0x1b, 0x00, 0x00, 0x00, 0x25, 0x02, 0x12, 0x00, 0x00, 0x00, 0x27, 0x1e, 0x0f, 0x00, 0x00, 0x00, - 0x25, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x27, 0x02, 0x0c, 0x25, - 0x00, 0x00, 0x24, 0x1b, 0x15, 0x25, 0x00, 0x00, 0x22, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x00, - 0x00, 0x00, 0x2c, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2e, 0x02, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, - 0x27, 0x02, 0x11, 0x00, 0x00, 0x00, 0x27, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x29, 0x02, 0x0c, 0x00, - 0x00, 0x00, 0x27, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x25, 0x02, 0x16, 0x00, 0x00, 0x00, 0x25, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x27, 0x02, 0x11, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x00, - 0x00, 0x00, 0x2c, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2e, 0x02, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, - 0x27, 0x02, 0x11, 0x00, 0x00, 0x00, 0x27, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x29, 0x02, 0x0c, 0x00, - 0x00, 0x00, 0x27, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x25, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x1d, - 0x00, 0x00, 0x00, 0x00, 0x1d, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x00, - 0x00, 0x00, 0x2c, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2e, 0x02, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, - 0x27, 0x02, 0x11, 0x00, 0x00, 0x00, 0x27, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x29, 0x02, 0x0c, 0x00, - 0x00, 0x00, 0x27, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x25, 0x02, 0x16, 0x00, 0x00, 0x00, 0x25, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x27, 0x02, 0x11, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x00, - 0x00, 0x00, 0x2c, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2e, 0x02, 0x16, 0x00, 0x00, 0x00, 0x2c, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, - 0x27, 0x02, 0x11, 0x00, 0x00, 0x00, 0x27, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x25, 0x02, 0x0c, 0x00, - 0x00, 0x00, 0x24, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x22, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x1d, - 0x00, 0x00, 0x00, 0x00, 0x1d, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x29, - 0x00, 0x00, 0x27, 0x1d, 0x19, 0x2a, 0x00, 0x00, 0x29, 0x02, 0x18, 0x00, 0x00, 0x00, 0x27, 0x1e, - 0x1b, 0x00, 0x00, 0x00, 0x25, 0x02, 0x12, 0x00, 0x00, 0x00, 0x27, 0x1e, 0x0f, 0x00, 0x00, 0x00, - 0x25, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x27, 0x02, 0x0c, 0x25, - 0x00, 0x00, 0x24, 0x1b, 0x15, 0x25, 0x00, 0x00, 0x22, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x29, - 0x00, 0x00, 0x27, 0x1d, 0x19, 0x2a, 0x00, 0x00, 0x29, 0x02, 0x18, 0x00, 0x00, 0x00, 0x27, 0x1e, - 0x1b, 0x00, 0x00, 0x00, 0x25, 0x02, 0x12, 0x00, 0x00, 0x00, 0x27, 0x1e, 0x0f, 0x00, 0x00, 0x00, - 0x25, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x27, 0x02, 0x0c, 0x25, - 0x00, 0x00, 0x24, 0x1b, 0x15, 0x25, 0x00, 0x00, 0x22, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x29, - 0x00, 0x00, 0x27, 0x1d, 0x19, 0x2a, 0x00, 0x00, 0x27, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x27, 0x1e, - 0x1b, 0x00, 0x00, 0x00, 0x29, 0x02, 0x16, 0x27, 0x00, 0x00, 0x25, 0x1e, 0x1b, 0x29, 0x00, 0x00, - 0x25, 0x02, 0x18, 0x00, 0x00, 0x00, 0x25, 0x1e, 0x1b, 0x00, 0x00, 0x00, 0x27, 0x02, 0x12, 0x25, - 0x00, 0x00, 0x24, 0x1e, 0x0f, 0x27, 0x00, 0x00, 0x24, 0x02, 0x11, 0x00, 0x00, 0x00, 0x24, 0x1b, - 0x15, 0x00, 0x00, 0x00, 0x25, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x27, 0x1b, 0x15, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x16, 0x00, 0x00, 0x00, 0x29, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x11, 0x29, - 0x00, 0x00, 0x27, 0x1d, 0x19, 0x2a, 0x00, 0x00, 0x29, 0x02, 0x18, 0x00, 0x00, 0x00, 0x27, 0x1e, - 0x1b, 0x00, 0x00, 0x00, 0x25, 0x02, 0x12, 0x00, 0x00, 0x00, 0x27, 0x1e, 0x0f, 0x00, 0x00, 0x00, - 0x25, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x27, 0x02, 0x0c, 0x25, - 0x00, 0x00, 0x24, 0x1b, 0x15, 0x25, 0x00, 0x00, 0x22, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x02, 0x02, 0x29, 0x00, 0x00, 0x29, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x29, 0x00, 0x00, 0x29, - 0x00, 0x00, 0x2c, 0x00, 0x00, 0x29, 0x00, 0x00, 0x29, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x29, 0x00, - 0x00, 0x29, 0x00, 0x00, 0x2e, 0x19, 0x16, 0x2d, 0x00, 0x00, 0x2c, 0x02, 0x02, 0x2a, 0x19, 0x16, - 0x2c, 0x00, 0x00, 0x2a, 0x02, 0x02, 0x29, 0x19, 0x16, 0x27, 0x00, 0x00, 0x25, 0x02, 0x02, 0x24, - 0x1b, 0x15, 0x25, 0x00, 0x00, 0x21, 0x02, 0x02, 0x22, 0x19, 0x16, 0x24, 0x00, 0x00, 0x25, 0x02, - 0x02, 0x27, 0x19, 0x16, 0x29, 0x00, 0x00, 0x2a, 0x02, 0x02, 0x2c, 0x19, 0x16, 0x29, 0x00, 0x00, - 0x29, 0x02, 0x02, 0x2d, 0x1b, 0x15, 0x29, 0x00, 0x00, 0x29, 0x02, 0x02, 0x2a, 0x19, 0x16, 0x31, - 0x00, 0x00, 0x30, 0x02, 0x02, 0x2e, 0x19, 0x16, 0x2c, 0x00, 0x00, 0x2a, 0x02, 0x02, 0x29, 0x19, - 0x16, 0x27, 0x00, 0x00, 0x25, 0x02, 0x02, 0x24, 0x1b, 0x15, 0x27, 0x00, 0x00, 0x25, 0x02, 0x02, - 0x29, 0x19, 0x16, 0x27, 0x00, 0x00, 0x25, 0x02, 0x02, 0x24, 0x02, 0x02, 0x25, 0x00, 0x00, 0x27, - 0x00, 0x00, 0x22, 0x02, 0x02, 0x25, 0x00, 0x00, 0x24, 0x00, 0x00, 0x21, 0x00, 0x00, 0x24, 0x00, - 0x00, 0x21, 0x00, 0x00, 0x22, 0x19, 0x16, 0x24, 0x00, 0x00, 0x25, 0x02, 0x02, 0x27, 0x19, 0x16, - 0x29, 0x00, 0x00, 0x2a, 0x02, 0x02, 0x2e, 0x19, 0x16, 0x2d, 0x00, 0x00, 0x2c, 0x02, 0x02, 0x2a, - 0x1b, 0x15, 0x29, 0x00, 0x00, 0x27, 0x02, 0x02, 0x25, 0x19, 0x16, 0x27, 0x00, 0x00, 0x25, 0x02, - 0x02, 0x24, 0x19, 0x16, 0x25, 0x00, 0x00, 0x21, 0x02, 0x02, 0x22, 0x19, 0x16, 0x24, 0x00, 0x00, - 0x25, 0x02, 0x02, 0x27, 0x19, 0x16, 0x29, 0x00, 0x00, 0x2a, 0x02, 0x02, 0x2e, 0x1b, 0x16, 0x33, - 0x00, 0x00, 0x31, 0x02, 0x02, 0x30, 0x1b, 0x16, 0x2e, 0x00, 0x00, 0x2c, 0x02, 0x02, 0x2e, 0x1b, - 0x16, 0x2c, 0x00, 0x00, 0x2a, 0x02, 0x02, 0x29, 0x1b, 0x16, 0x27, 0x00, 0x00, 0x25, 0x02, 0x02, - 0x27, 0x19, 0x16, 0x25, 0x00, 0x00, 0x24, 0x02, 0x02, 0x25, 0x19, 0x16, 0x24, 0x00, 0x00, 0x22, - 0x02, 0x02, 0x24, 0x1b, 0x15, 0x21, 0x00, 0x00, 0x21, 0x02, 0x02, 0x24, 0x02, 0x02, 0x21, 0x00, - 0x00, 0x21, 0x00, 0x00, 0x27, 0x1e, 0x1b, 0x24, 0x00, 0x00, 0x24, 0x02, 0x02, 0x27, 0x02, 0x02, - 0x24, 0x00, 0x00, 0x24, 0x00, 0x00, 0x2a, 0x21, 0x1e, 0x27, 0x00, 0x00, 0x27, 0x02, 0x02, 0x2a, - 0x02, 0x02, 0x27, 0x00, 0x00, 0x27, 0x00, 0x00, 0x2d, 0x18, 0x21, 0x2a, 0x00, 0x00, 0x2a, 0x02, - 0x02, 0x2d, 0x02, 0x02, 0x2a, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x33, 0x1b, 0x02, 0x30, 0x18, 0x00, - 0x30, 0x18, 0x00, 0x33, 0x1b, 0x02, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x2e, 0x16, 0x21, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x27, 0x1d, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1d, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x02, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x22, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x11, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x1e, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x00, 0x00, 0x00, 0x27, 0x1e, - 0x1b, 0x00, 0x00, 0x00, 0x23, 0x02, 0x17, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1b, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1b, 0x00, 0x00, 0x00, 0x29, 0x02, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x22, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x00, 0x00, 0x00, - 0x22, 0x02, 0x11, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x27, 0x02, 0x11, 0x00, - 0x00, 0x00, 0x00, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x24, 0x1b, - 0x15, 0x00, 0x00, 0x00, 0x21, 0x02, 0x11, 0x00, 0x00, 0x00, 0x24, 0x1b, 0x15, 0x00, 0x00, 0x00, - 0x27, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x24, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x29, 0x02, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x22, 0x02, 0x16, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x00, 0x00, 0x00, - 0x22, 0x02, 0x11, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x2a, 0x02, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x1e, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x00, 0x00, 0x00, 0x27, 0x1e, - 0x1b, 0x00, 0x00, 0x00, 0x23, 0x02, 0x17, 0x00, 0x00, 0x00, 0x27, 0x1e, 0x1b, 0x00, 0x00, 0x00, - 0x2a, 0x02, 0x12, 0x00, 0x00, 0x00, 0x27, 0x1e, 0x1b, 0x00, 0x00, 0x00, 0x29, 0x02, 0x16, 0x00, - 0x00, 0x00, 0x25, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x22, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x21, 0x02, 0x11, 0x00, 0x00, 0x00, 0x24, 0x1b, 0x15, 0x00, 0x00, 0x00, - 0x27, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x24, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x22, 0x02, 0x16, 0x00, - 0x00, 0x00, 0x25, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x29, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x27, 0x02, 0x11, 0x00, 0x00, 0x00, 0x24, 0x1b, 0x15, 0x00, 0x00, 0x00, - 0x21, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x24, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x29, 0x02, 0x16, 0x00, - 0x00, 0x00, 0x25, 0x1d, 0x19, 0x00, 0x00, 0x00, 0x22, 0x02, 0x11, 0x00, 0x00, 0x00, 0x25, 0x1d, - 0x19, 0x00, 0x00, 0x00, 0x21, 0x02, 0x11, 0x00, 0x00, 0x00, 0x24, 0x1b, 0x15, 0x00, 0x00, 0x00, - 0x27, 0x02, 0x0c, 0x00, 0x00, 0x00, 0x21, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x22, 0x19, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x29, 0x1b, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x19, 0x16, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x22, 0x11, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - /////////////////////////// - // Tune 7 - /////////////////////////// - 0x27, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x22, 0x1b, 0x16, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x1b, 0x16, 0x00, - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x1b, 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x1b, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x22, 0x1b, 0x16, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x1b, 0x16, 0x00, - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x25, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x1b, 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x1b, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x25, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x22, 0x1b, 0x16, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x25, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x1b, 0x16, 0x00, - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x0f, 0x00, 0x00, 0x00, 0x25, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x1b, 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x20, 0x0f, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0f, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x17, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x28, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x28, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x1c, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2a, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x17, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x28, 0x1c, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1e, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x1c, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1e, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x28, 0x1c, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x1e, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1e, 0x1c, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x22, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x02, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x28, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x1f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -#endif diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx index 8eea8ef58..14620cd55 100644 --- a/src/emucore/CartDetector.cxx +++ b/src/emucore/CartDetector.cxx @@ -445,13 +445,18 @@ Bankswitch::Type CartDetector::autodetectType(const BytePtr& image, uInt32 size) type = Bankswitch::Type::_CDF; else if(isProbablyDPCplus(image, size)) type = Bankswitch::Type::_DPCP; - else if(isProbablyCTY(image, size)) - type = Bankswitch::Type::_CTY; else if(isProbablyFA2(image, size)) type = Bankswitch::Type::_FA2; else type = Bankswitch::Type::_F4; } + else if(size == 60*1024) // 60K + { + if(isProbablyCTY(image, size)) + type = Bankswitch::Type::_CTY; + else + type = Bankswitch::Type::_F4; + } else if(size == 64*1024) // 64K { if(isProbably3E(image, size)) @@ -662,9 +667,10 @@ bool CartDetector::isProbably4A50(const BytePtr& image, uInt32 size) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDetector::isProbablyCTY(const BytePtr&, uInt32) +bool CartDetector::isProbablyCTY(const BytePtr& image, uInt32 size) { - return false; // TODO - add autodetection + uInt8 signature[] = { 'L', 'E', 'N', 'I', 'N' }; + return searchForBytes(image.get(), size, signature, 5, 1); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 56d9bdc1630dd309204b3db2aba4586e5571c4a0 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 16 Sep 2018 23:13:37 -0230 Subject: [PATCH 04/30] Add autodetection for 32KB variant of CTY ROM. --- src/emucore/CartDetector.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx index 14620cd55..9a16828d2 100644 --- a/src/emucore/CartDetector.cxx +++ b/src/emucore/CartDetector.cxx @@ -433,7 +433,9 @@ Bankswitch::Type CartDetector::autodetectType(const BytePtr& image, uInt32 size) } else if(size == 32*1024) // 32K { - if(isProbablySC(image, size)) + if (isProbablyCTY(image, size)) + type = Bankswitch::Type::_CTY; + else if(isProbablySC(image, size)) type = Bankswitch::Type::_F4SC; else if(isProbably3E(image, size)) type = Bankswitch::Type::_3E; From 9890c648cb1f7b7fd4cf4bfdbd300de59ef83e0d Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Mon, 17 Sep 2018 08:36:31 -0230 Subject: [PATCH 05/30] For UNIX-only, use version-specific config file if it already exists. - I'm tired of switching between version 5.x and 6.x, and constantly having to reset sound settings :( - Backporting this to a local copy of 5.x, so both can co-exist, and going forward too - Not quite ready to advertise this functionality yet ... --- src/unix/OSystemUNIX.cxx | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/unix/OSystemUNIX.cxx b/src/unix/OSystemUNIX.cxx index 00a7c0d92..b3161479e 100644 --- a/src/unix/OSystemUNIX.cxx +++ b/src/unix/OSystemUNIX.cxx @@ -17,6 +17,8 @@ #include +#include "FSNode.hxx" +#include "Version.hxx" #include "OSystemUNIX.hxx" /** @@ -38,7 +40,17 @@ OSystemUNIX::OSystemUNIX() if(configDir == nullptr) configDir = "~/.config"; string stellaDir = string(configDir) + "/stella"; - setBaseDir(stellaDir); - setConfigFile(stellaDir + "/stellarc"); + + // (Currently) non-documented alternative for using version-specific + // config file + ostringstream buf; + buf << stellaDir << "/stellarc" << "-" << STELLA_VERSION; + + // Use version-specific config file only if it already exists + FilesystemNode altConfigFile(buf.str()); + if(altConfigFile.exists() && altConfigFile.isWritable()) + setConfigFile(altConfigFile.getPath()); + else + setConfigFile(stellaDir + "/stellarc"); } From ea31d4b464992f5d7b125e3834ac172debbc89e6 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Mon, 17 Sep 2018 09:38:23 -0230 Subject: [PATCH 06/30] Fix crash in BUS/CDF/CM schemes. - bank initialization must happen in Cart::reset(), not the individual c'tors. --- src/emucore/Cart.hxx | 3 +++ src/emucore/CartBUS.cxx | 6 +++--- src/emucore/CartCDF.cxx | 6 +++--- src/emucore/CartCM.cxx | 7 ++++--- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/emucore/Cart.hxx b/src/emucore/Cart.hxx index 53eddb8bd..504da93a3 100644 --- a/src/emucore/Cart.hxx +++ b/src/emucore/Cart.hxx @@ -218,6 +218,9 @@ class Cartridge : public Device will take both randomization and properties settings into account. See the actual method for more information on the logic used. + NOTE: If this method is used, it *must* be called from the cart reset() + method, *not* from the c'tor. + @param defaultBank The actual bank to use during reset @return The bank number that was determined diff --git a/src/emucore/CartBUS.cxx b/src/emucore/CartBUS.cxx index e13dce2ef..9fb3c0744 100644 --- a/src/emucore/CartBUS.cxx +++ b/src/emucore/CartBUS.cxx @@ -78,6 +78,9 @@ void CartridgeBUS::reset() { initializeRAM(myBUSRAM+2048, 8192-2048); + // BUS always starts in bank 6 + initializeStartBank(6); + // Update cycles to the current system cycles myAudioCycles = myARMCycles = 0; myFractionalClocks = 0.0; @@ -97,9 +100,6 @@ void CartridgeBUS::setInitialState() for (int i=0; i < 3; ++i) myMusicWaveformSize[i] = 27; - // BUS always starts in bank 6 - initializeStartBank(6); - // Assuming mode starts out with Fast Fetch off and 3-Voice music, // need to confirm with Chris myMode = 0xFF; diff --git a/src/emucore/CartCDF.cxx b/src/emucore/CartCDF.cxx index b4ca532d1..f4c4a1025 100644 --- a/src/emucore/CartCDF.cxx +++ b/src/emucore/CartCDF.cxx @@ -81,6 +81,9 @@ void CartridgeCDF::reset() { initializeRAM(myCDFRAM+2048, 8192-2048); + // CDF always starts in bank 6 + initializeStartBank(6); + myAudioCycles = myARMCycles = 0; myFractionalClocks = 0.0; @@ -99,9 +102,6 @@ void CartridgeCDF::setInitialState() for (int i=0; i < 3; ++i) myMusicWaveformSize[i] = 27; - // CDF always starts in bank 6 - initializeStartBank(6); - // Assuming mode starts out with Fast Fetch off and 3-Voice music, // need to confirm with Chris myMode = 0xFF; diff --git a/src/emucore/CartCM.cxx b/src/emucore/CartCM.cxx index b35a68d11..7bd53a4b1 100644 --- a/src/emucore/CartCM.cxx +++ b/src/emucore/CartCM.cxx @@ -30,9 +30,6 @@ CartridgeCM::CartridgeCM(const BytePtr& image, uInt32 size, // Copy the ROM image into my buffer memcpy(myImage, image.get(), std::min(16384u, size)); createCodeAccessBase(16384); - - // On powerup, the last bank of ROM is enabled and RAM is disabled - initializeStartBank(mySWCHA & 0x3); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -40,6 +37,10 @@ void CartridgeCM::reset() { initializeRAM(myRAM, 2048); + // On powerup, the last bank of ROM is enabled and RAM is disabled + mySWCHA = 0xFF; + initializeStartBank(mySWCHA & 0x3); + // Upon reset we switch to the startup bank bank(startBank()); } From 508102b56e332436d819247abd5aff6089d1c45e Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Mon, 17 Sep 2018 12:24:38 -0230 Subject: [PATCH 07/30] Fix crash when force-exiting a ROM from debugger. --- src/debugger/Debugger.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/debugger/Debugger.cxx b/src/debugger/Debugger.cxx index 345c9622a..b988634df 100644 --- a/src/debugger/Debugger.cxx +++ b/src/debugger/Debugger.cxx @@ -156,9 +156,10 @@ void Debugger::quit(bool exitrom) if(exitrom) myOSystem.eventHandler().handleEvent(Event::LauncherMode, 1); else + { myOSystem.eventHandler().leaveDebugMode(); - - myOSystem.console().tia().clearPendingFrame(); + myOSystem.console().tia().clearPendingFrame(); + } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 1a86c8c3be6e690814b28cb9a2ffff4ddfd97daa Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Mon, 17 Sep 2018 17:02:46 -0230 Subject: [PATCH 08/30] Updated VS project for CTY scheme updates. --- src/windows/Stella.vcxproj | 1 - src/windows/Stella.vcxproj.filters | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/windows/Stella.vcxproj b/src/windows/Stella.vcxproj index 7b012ca3c..807fcbe24 100644 --- a/src/windows/Stella.vcxproj +++ b/src/windows/Stella.vcxproj @@ -914,7 +914,6 @@ - diff --git a/src/windows/Stella.vcxproj.filters b/src/windows/Stella.vcxproj.filters index 6748e7446..d6cf395d5 100644 --- a/src/windows/Stella.vcxproj.filters +++ b/src/windows/Stella.vcxproj.filters @@ -1493,9 +1493,6 @@ Header Files\emucore - - Header Files\emucore - Header Files From 27956cff153c5224d038f7d924d49373fb968770 Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Mon, 17 Sep 2018 22:18:59 +0200 Subject: [PATCH 09/30] Fix switching between auto and manual ystart in GUI. --- src/emucore/Console.cxx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index 46b3bfc04..019256d69 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -734,7 +734,8 @@ void Console::updateYStart(uInt32 ystart) redetectYStart(); myYStartAutodetected = true; ystart = myAutodetectedYstart; - } + } else + myYStartAutodetected = false; if (ystart != myTIA->ystart()) myTIA->setYStart(ystart); } From a6a762bbb4b2dbab427ad078a1e91b8754818bec Mon Sep 17 00:00:00 2001 From: thrust26 Date: Wed, 19 Sep 2018 22:24:25 +0200 Subject: [PATCH 10/30] reworked Stereo for all ROMs setting in AudioDialog --- docs/graphics/options_audio.png | Bin 5023 -> 5241 bytes src/common/AudioSettings.cxx | 8 ++++---- src/common/AudioSettings.hxx | 6 +++--- src/emucore/Console.cxx | 12 ++++-------- src/emucore/Settings.cxx | 3 +-- src/gui/AudioDialog.cxx | 27 +++++++++++---------------- src/gui/AudioDialog.hxx | 2 +- 7 files changed, 24 insertions(+), 34 deletions(-) diff --git a/docs/graphics/options_audio.png b/docs/graphics/options_audio.png index e54e9bc75b23d3ceb10497649ec5a45c6575b28e..0055a67b0ffa027843f353fb66ed0d7170e4c82f 100644 GIT binary patch literal 5241 zcmeHLi91yP{vTU*Vr-K_w#baBv4kvXzn8Dzhd9T8cm z!lhg4Iv?=+cj9o05!u;*{y@r|Q5*4eNrsMb$rjV$y&c(EHoe{m-wD*CT6*BMLtin2FPSk425K0N~4suQIdAD_bZY$gIPclJgYI3uzTb-K# z#d1E+1lCji?7}i)foTNcMX=#!)|u!8i;tr zMJ7u`Z`SZ?mj}IQ+`_Qn-FtbxEY|r)38f1iZnF&)>>$HPJxwzxIScduF6RER`M|wjoaYs3F3?(E8P4;N`a_NP za)!v<6q8DXh9HYbqt>%{+A&-WYd*$Am~pAz2$5cO77I!m@ap%<)KKMbCHh>pf0o{_ zbEoqXPCi0_RRa!_yCJmwDQR|%0;E2O7Ov|eKRt9Ksoc~0t21+8;wJ|T;gQ~y^NAl3rgP43}nT#Q1?8_aIj$g|s8$zg4bKWN!L08s@$CEtC9x(4p;j8{i75L^fIbf$PRqB30eejtg*-uDLL^rosq zBY>+r7F2A&JMzz=3!$+9BgScfoSXyIW>0h5$P;3&2bF_#-!iU|q*F*5^ zM~RfPlb9!Zwz8bakQ4QSHsZJI*+nWBu3#xUhvA2+2w8olMH?%y#(4GFZAU2gPG9BI zbc)pzff^&vSRspJZ`>MgDwg%_i78&{QBE{7T%4s_x7WKGd+o9t;%uD=F%t0M^{6H( zUqXp-e(iU}8N4sB@?3NK8Yo&4v^~pgCbg0iNb$8sc@#no&vAgPVs-2vUVL7(bJ>+1 zWo`?RgSQcMjT~FJk6YvbDW9}v>nF~yEo8>@`3^DXqf&2gq_SGh1|Qr%E3+&&-|fvi zxRSg>T3+}#f|)S(>$cD}#PA%u_2}8stpoW^f(2cZ(P9YwH>{a5N6uZ*;dwBdmay24 z`Hp}RMv*p=a_P>|$Ex(#?W6-f^u!&z40?67-Cz0;h(_n`o2(`&ys!`xFNccW?bG+0rrdCC>GWbSxElY3w*7K zQ4I2D#AUBRXFS|XTlabgAYx}+9!Aoao0z6IhAY&l7RvgaVc`rp3UwzCiUGDCinG*)rUoUT zqRy^V*FRQNMHK=Mx;30VxL>E-TxjRBR?nCoBK)!z!QFm&5_*mfK$ZgP;$`5u@~8lvBuq z@=b_KyedcB6a2th1o{XCpkRLu+)wOnKHQjLt`a9@W(wJ_DuGHd&Pzva6C65m*7Pqh zp%OVu%R*W14%6icNdNkj5sYPhk5gGTqk#Q{NT(0NT*urtE{X6Lune~BCsMsOlOA)9 z+zeJH=lMdV6d8lj5>4GrmS98aJ26z2wO6Dm4<~Z5s_!26sDN;cpLp=mDtkU#saJI2 zyVG6C&z%wItL(JMSimKM^12_&QrTFg79}c^aUxhMm46>Vxrw5DmXj{rIpgyxioR6> zhRp-A4lQ1kql(uG4d869d;~lX#JhLI$>!B4s$pcUpefy=*P^^M zOUhf09C7bAuEw=AQ-OlL{zJCQa9rhvVJeV*9&9T?KFO{_{iIpV&(;NBggnjtqcu=N z<-JXF3lO-URNGGE(wlAxe4Xv%+n&r%1?JC-u8#d9w;q_&lxhj%3hRF3o9&VrcDJCm zZr1{kV?~YCBrX~6Wq&4$9H~Jvw4Q-OnzhhzXx6jN^HUPAt*16Nby9rV%AHTWTUPR9 zhFFzU4wL!Jae6_;v`AL1#JKpT__^niYkrnQ(S`9QKd7 zZI302?t^7i0iaw6;CfYAdMlYO*bcy-VSw|7& z*Pt?i5scuHc=e2$_nDL-(2n`Go%K>i;D8J?L^fHzT8PYY9DBTG%CJngb`DL@t1Ky#R))t**6QKXkBJdyfqZLe^pW1#)ctp~kx!{VG zMoay2i~Ft*L3A7SN@VBD14h*k1qYN2@r{hiRPAA9+noU&Cb8CTu zG%opJZD^af_!IWRQUvMl!B>L*8Y-_f9lAukAL}*Oq*YKow9QQU*hO@DSci)M6#>y< zu0wK)+6p38&&7%>l8-%xPu4JJSMyZIaWiuwOB0NDq{qeR`@WHb263ZgspFm@46QE7 zT0#u@EW*DkgPX3(n8w6$bh90~oEC3l?0GLCmPsGwqyl$Dv1*=od@Gz(%HRBo+)zPM zg0jVA(m9#j7ll-2lU3kG! z=cJe8?To|G;D(30esYH(!r1EjWTcn%7jf@FvH-PTTUFa%#|NIWv6=S$UaYMvA|R%o zm%Yp9SP=N>aPf4s>j2rN&bAO;h!mEENOgbW;D0JbHRg=N{jETaIa6>YkiP4NHO?=W zxKaKcp2K{(sCue(iBC!@b`tiZK1yI(Tj(UY zqT}T-{aO24V^x&{Mqj3P4%ZFph95Fj43d;p8nJQnjwp`xo$h+Uu+P%4rp?l9WXSm9 z&7`RqiHSS^W7Pa)2<0FP|5K%1hYj%2R=J!AHusAn?IU}B=A8qdaeBUXFHb!@z@zd- zzHsp@q{||5alzu%4%gbq7$Rt|N%V-&M|=}csc_!URiA~ja%bmDge*T3WHU878LisL zv4jkq9rB5};;la10B*>MtHh=|Wx^Rhlk>%%3uu=bks=OME@= zk$CEQ8^9j$WBCGw@3k5evTa@sTDbm}=}Q@Zj|IQ_fI6k}C3bqUFR_~1Zfa0^k;7|6 zNOx-S@V0j{`!eQD&nq!LC`T;GH#Jf)R~Guk3s!9KrviyIoB00w_Mnv<9}W;`EkQ~; zIP+VGw&-buDs+QqM1eZ_cBo!m%BrZOAVydL$h66PxN+t5(&TVS!cTA04pz0*6H8YI zZKO@AxY5XU56`d7-1B_d4$UDp3HXVN23Yp9(fo;e!(QJAyh~M2)}{mDDy7p*HxBK5 zYnojM$rSag!flh{j~G`KhhXdbV&OM^+042*Gwb4$m^#SoQZN0ZBC3g_U ze;gC2^M*LtQq0ZmdN)R4$569Z8rr6pS#W}zq2Brz^(kCLu?J=zCtgxAxo+iSmeu3d{`OK~K6M9AhSEmGDJegXfaGZ>K1-UNOM2Wt6r>fK6lb zofvAvAbaQWYGtxJWyh}9Ep~)d@i;d@z4*d1fa6oG&pDgK>AsyO5d2lF3pcTV$;nohye7;;?u7ta=J9G!K9H2Ks^V$9J9RwQjy7q%PI&OQ%q5Lk1Qua6UKEvMkY+6&5 zV%Xc=ypLWo|8*3U!}#9HH3`eU3^XGg*6M1AuG&{u&)nRz-&p5VK->2I61aMa^M2)e z&8akyU_!~Q$YNZmE%gXjV??TW9NU@7_qt}Ex0U>a{@~u@EmYK(o9V#kL0rmvw>fF$B^Y5+#BK z2RRH54Uo27|F7A9cfp_Ic2v7j2d||>u?2>Hc25$PU3CIjCp`BA;{+sm)tYrYMW@%6 z9ByM$Jkn8Q+AwEbty(HCVW(``M6fZJ*7pTY@neMB*fry>l~fY?Sm)u~xN~$qm+~P$ zbymU7}`-#Hx_X8D+lwhf^k)-cVyEn&H@d z^U%i6mn8Hn)1TUoiC!s9PvpZqqb+`yvpkV7aJXjrMykKEL$4V5Xw=hnwL}^uyW`#j zc`p(H%>FZ3md^Lf^O$qYo~)wnn3vP0=PYA9qw;@9j6>MYVxf9J*3lP?nMEout`+kY z$qFigP`362BChX1HN{#a{RL2o6bnS$> zUGccGUi+zu*1#8we0krW-Vo{C2rflsx!og*s_;iDEk4h!CWn=_&lz60hu)EHFRKOc zaP<>e)LYcR94*4LlQj+%oeL&N?+C8(Oh=Uy`V65ANbOozGB^`|yyU>~#IN2K%&{s_ zssTk!7D?J$gw4tPi|&voKHPVQvNzr|xx#nsW)ye!A%T}CQSJP)rbsA9;ZN!(5BPmc zHIfPe*LR+KC=S|4tyb8Bj+gKEw!UFR?xXhN(ww__pRdzNv|p!40=4!Qp=8o_V(m~a z`cSQ{#GCz#$W?e|BR@Wmmri>d9FZ4BCZ`|%Vhtbp<}!6mdxiYC-?DannD!o#gX7~t zDfzK-&`WM`MJWZdcg}Z3O>=ggCO)v2=I&YjEGM?=V$m?;2olY}+eI^ZH&lv{W~M!c z3hN8}U-J^Ne3^KFXpu8fGOSAKph@dE!)xlWzP-=3#b6I8C4S0=KHA+pz=LEV4+>zM zhK?O}2HT3B$nUxPCf-Hl#sKo#mCYB5Yu5Y9!=v8BqcLC`OMKEZAD#O2b~)+6iYYLO zVmeqe57xGTky0pNu4OenOqCKy&T^FCIPM)-!?U?H%c4>ni&Vj#Dx>M0t)%3Z8@8v3 z@E7`S-EXSrW$wL?^Wh00lRgO4q6@mSCU}2%Vx5@vMDWYOO~RLhHl3<&z!qS=Ws&Uc z>*xurdwo8+B;bT|U0k*~{}j<2X;Mgv<-%`DahWh)Y@s&kR6W&?Je($zobd zPQcq>nL!1X&!jZBZ0W*C0p<%XmzCO@(``C-O)o|bdQR=3z&3oRrI;)2wnBE%nekZFc7f#+NI8cL0Vc z%lHM=u9M@QXVY~cPt3nw+@=ObfsQY9KHRc5OA^lxlB%3kOm?Kjivdq|+`?{E7fY%z z68mT3S4fli*>HNBb!tg9aWO0NVcIZ0G#zj3qXLt{@a;xKLxx=WzMd?WoYq2#B7rA$ zPPna*Cqb=N%%vm0*WE83^aiy?uvj%o~)M!^< zn3rFGGVgJ-*H;DGe;yq;>6f_ILATWO{9`Qy%KUDf4l~WuH8Uw0M$=T@W0B`Yn@s8g z^Xmol&AmLz@S{aBf{ye?g{L>Lrv){{SK>KGY7x;@PTcoIrvXQISun`Y&yNv|+njKe zP54?_*T$)Ajz4RcL5NZ1K$~v!EcJM2sglzS-$mg<`+cfyS6@q9k;N(7K z{wQTWvc{3^Nuovk2f;CJz0u|&b*b2)_{1Xfw1e;2GXF7LTou~J6d0ZNj;oS?#Ofas zv4M~C>OY+4U!;K-jKV>SQ^e^GNE@3f=~$-AZDH`@3tVmacY*o+HpjHKqq3q^`Z1rY@`0 zB<)Ag>MyQ1G`rB%hXi&rxzb+fzA*Q(iNv1$?dt<7&`2 zNypAowxy>a<;ZK{Q8{O;kV4F0${Mx(x1ZvRXDnJroO4ty@Ocjn6oc*n)CCjGDxr4k z9^HF>ATtWt00o=Wv zc{7(+cnHB4%auzO<3KnOyRfg&g=mGanFJ^LBW4!gGbW6bzyn79G8`%^dBenSss`Hb zo=;Qhw1ZRT4+2paIU(ESFxPkb*R*5JWc9_m`_$QU3diY}P|>J4u+ISup40_yVk2eO zbzU!whiXprkYknpy2bw*7-5*jM!T{(H8ac-er5gl@xx==^3(4-iho@i7*8G#?GZm4 zH~Ngdv8G|oROuQR+9F=B>z(J6TW)z`>)=G2GpLm{}*qN+!Y#_{pAUTa3m6dKo;jVYLYn*-xd9NVVyo z-6f(|v?t4Z(4yfudghLgnb?s_AxIOF$@j4D)zwyb`wm_xBis z#g}nW4==|7`klJnl3{NfXVSyqmS&HQy?6$#z6AfF%qq9l%>11G6j_sdnTD(2PY4HH zlK49l0BT>?2sixuN@3doWGJr@11}~(wJvI40_VB8y@ORIp#6$KQ&qp@8+-8DK8Jtf z?>|xa-}~h<^5?CY`y2pz1HE&~V;$SJ`#Pw^?lt6Y4Px?qC@kPhb;a%BR`QhjI#q%W zBI;&e<#m|99kuH=lLr+ib#(M49h_ZoE!KHYoe%c#6{oHTtb1ICoeNUwtL;AuNUWw# za34(?BHkOcL4+on!D_gCbva-*CG$7AwRMKmDRT#dv10Tk#Yyh|reRvCqV^JH!Y!(M zI(kT@pZo9~4rEPg&&YBc?)IE~sJ2_Fohinn@f4gdZBo#d%bh7bF?Z>RNN?bU;r@#< zT7Gll--0~uoKbTQ9TQhF)V)k_L_emrNIT_RIwI5?xWWyXT`=%A^pomI;UU+HvMOz( z%$jE%iLyuf|9~MNR26bzp|gi19jz%YUgx2$QqpeHrc>6M9!r?3UhGd2&lbD zYUAL4Lz--}@j*jx|MX3<)o6DpXA=~3+>G$6w_%ykcDlwm4n5_#`}mR!maYEQkI1<` zI&A*=W8fcVm%ybfEzP_#A2Y@iSllAZ`Fn-HrO8(5bsm6#&|{Dl!=RLTtToe+M2jWS z9+7A^NMLR0Gr0Z(lj)4}Z39`n0i=O$26NRnu@m$i;y1YcyBqW4a>K;bBK6@>rR(V9 zT<2DGJIsJ)_G80v3ufq7-BDKIUR^(*GYyx~FgfI%53ol^WASkJ`z`y%a($!9bZQh5 zjIAowirUPkNV9hz^Bo(u6|HRSdyIyCZ1t)d7HizyRcVVp+>2BS9FDr4(14nE^1UK_ z8#CCzud9nb=vwgVKs0$H{voj^V;)2Izs4Z;Jk4htP;O!J3VXw+NXvJ-Y8E6D&k%f? zZpwnn17*(H)S)QGQkXTcEF`BzQJa6tf0b8}*o&AvCYmANNF72*S}Ra!1VK?kc`w^H zI!4UD`DHlJcq-aw^P`ZkHbc%lLbtg4Zm-^SB=cGhAy0xFuWW=W_eV zv`(<5l;m!WY)-{CWMLz7u#rg0yj-gTGh keep it - return mySettings.getString(SETTING_STEREO); + return mySettings.getBool(SETTING_STEREO); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -255,11 +255,11 @@ void AudioSettings::setResamplingQuality(AudioSettings::ResamplingQuality resamp } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void AudioSettings::setStereo(const string& mode) +void AudioSettings::setStereo(bool allROMs) { if(!myIsPersistent) return; - mySettings.setValue(SETTING_STEREO, mode); + mySettings.setValue(SETTING_STEREO, allROMs); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/common/AudioSettings.hxx b/src/common/AudioSettings.hxx index c9efaa8fc..0092dc904 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 bool DEFAULT_STEREO = false; static constexpr uInt32 DEFAULT_VOLUME = 80; static constexpr bool DEFAULT_ENABLED = true; @@ -81,7 +81,7 @@ class AudioSettings ResamplingQuality resamplingQuality(); - string stereo() const; + bool stereo() const; uInt32 volume() const; @@ -99,7 +99,7 @@ class AudioSettings void setResamplingQuality(ResamplingQuality resamplingQuality); - void setStereo(const string& mode); + void setStereo(bool allROMs); void setVolume(uInt32 volume); diff --git a/src/emucore/Console.cxx b/src/emucore/Console.cxx index 019256d69..a75387803 100644 --- a/src/emucore/Console.cxx +++ b/src/emucore/Console.cxx @@ -544,13 +544,13 @@ void Console::togglePhosphor() { if(myOSystem.frameBuffer().tiaSurface().phosphorEnabled()) { - myProperties.set(Display_Phosphor, "No"); + myProperties.set(Display_Phosphor, "NO"); myOSystem.frameBuffer().tiaSurface().enablePhosphor(false); myOSystem.frameBuffer().showMessage("Phosphor effect disabled"); } else { - myProperties.set(Display_Phosphor, "Yes"); + myProperties.set(Display_Phosphor, "YES"); myOSystem.frameBuffer().tiaSurface().enablePhosphor(true); myOSystem.frameBuffer().showMessage("Phosphor effect enabled"); } @@ -812,12 +812,8 @@ 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"); + bool useStereo = myOSystem.settings().getBool(AudioSettings::SETTING_STEREO) + || myProperties.get(Cartridge_Sound) == "STEREO"; myAudioQueue = make_shared( myEmulationTiming.audioFragmentSize(), diff --git a/src/emucore/Settings.cxx b/src/emucore/Settings.cxx index 7852cc796..e36ae0d7f 100644 --- a/src/emucore/Settings.cxx +++ b/src/emucore/Settings.cxx @@ -444,8 +444,7 @@ void Settings::usage() const #ifdef SOUND_SUPPORT << " -audio.enabled <1|0> Enable audio\n" << " -audio.volume Vokume (0-100)\n" - << " -audio.stereo \n" + << " -audio.stereo <1|0> Enable stereo mode for all ROMs\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" diff --git a/src/gui/AudioDialog.cxx b/src/gui/AudioDialog.cxx index 3abef70b1..09dc0cfe1 100644 --- a/src/gui/AudioDialog.cxx +++ b/src/gui/AudioDialog.cxx @@ -72,18 +72,6 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, wid.push_back(myVolumeSlider); 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)); @@ -151,6 +139,13 @@ AudioDialog::AudioDialog(OSystem& osystem, DialogContainer& parent, myBufferSizeSlider->setMinValue(0); myBufferSizeSlider->setMaxValue(AudioSettings::MAX_BUFFER_SIZE); myBufferSizeSlider->setTickmarkInterval(5); wid.push_back(myBufferSizeSlider); + ypos += lineHeight + VGAP; + + // Stereo sound + xpos -= INDENT; + myStereoSoundCheckbox = new CheckboxWidget(this, font, xpos, ypos, + "Stereo for all ROMs"); + wid.push_back(myStereoSoundCheckbox); // Add Defaults, OK and Cancel buttons addDefaultsOKCancelBGroup(wid, font); @@ -170,7 +165,7 @@ void AudioDialog::loadConfig() myVolumeSlider->setValue(audioSettings.volume()); // Stereo - myStereoSoundPopup->setSelected(audioSettings.stereo()); + myStereoSoundCheckbox->setState(audioSettings.stereo()); // Preset / mode myModePopup->setSelected(static_cast(audioSettings.preset())); @@ -213,7 +208,7 @@ void AudioDialog::saveConfig() instance().sound().setVolume(myVolumeSlider->getValue()); // Stereo - audioSettings.setStereo(myStereoSoundPopup->getSelectedTag().toString()); + audioSettings.setStereo(myStereoSoundCheckbox->getState()); AudioSettings::Preset preset = static_cast(myModePopup->getSelectedTag().toInt()); audioSettings.setPreset(preset); @@ -238,7 +233,7 @@ void AudioDialog::setDefaults() { mySoundEnableCheckbox->setState(AudioSettings::DEFAULT_ENABLED); myVolumeSlider->setValue(AudioSettings::DEFAULT_VOLUME); - myStereoSoundPopup->setSelected(AudioSettings::DEFAULT_STEREO); + myStereoSoundCheckbox->setState(AudioSettings::DEFAULT_STEREO); myModePopup->setSelected(static_cast(AudioSettings::DEFAULT_PRESET)); if (AudioSettings::DEFAULT_PRESET == AudioSettings::Preset::custom) { @@ -261,7 +256,7 @@ void AudioDialog::updateEnabledState() bool userMode = preset == AudioSettings::Preset::custom; myVolumeSlider->setEnabled(active); - myStereoSoundPopup->setEnabled(active); + myStereoSoundCheckbox->setEnabled(active); myModePopup->setEnabled(active); myFragsizePopup->setEnabled(active && userMode); diff --git a/src/gui/AudioDialog.hxx b/src/gui/AudioDialog.hxx index f63f1d1f0..edc68bcf1 100644 --- a/src/gui/AudioDialog.hxx +++ b/src/gui/AudioDialog.hxx @@ -56,13 +56,13 @@ class AudioDialog : public Dialog CheckboxWidget* mySoundEnableCheckbox; SliderWidget* myVolumeSlider; + CheckboxWidget* myStereoSoundCheckbox; PopUpWidget* myModePopup; PopUpWidget* myFragsizePopup; PopUpWidget* myFreqPopup; PopUpWidget* myResamplingPopup; SliderWidget* myHeadroomSlider; SliderWidget* myBufferSizeSlider; - PopUpWidget* myStereoSoundPopup; private: // Following constructors and assignment operators not supported From 0715b691a009cb23871eee392126a37b301f4187 Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Wed, 19 Sep 2018 22:23:53 +0200 Subject: [PATCH 11/30] Fix CLI builds for XCode 10 --- configure | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/configure b/configure index d8217d191..0e9a0b70a 100755 --- a/configure +++ b/configure @@ -385,9 +385,9 @@ cc_check_define __GNUC__ && have_gcc=yes if test "$have_clang" = yes; then - clang_minor=$( $CXX -dM -E -x c /dev/null | grep __clang_minor__ | sed 's/.*\([0-9][0-9]*\).*/\1/' ) - clang_patch=$( $CXX -dM -E -x c /dev/null | grep __clang_patchlevel__ | sed 's/.*\([0-9][0-9]*\).*/\1/' ) - clang_major=$( $CXX -dM -E -x c /dev/null | grep __clang_major__ | sed 's/.*\([0-9][0-9]*\).*/\1/' ) + clang_minor=$( $CXX -dM -E -x c /dev/null | grep __clang_minor__ | sed -E 's/.* ([0-9]+).*/\1/' ) + clang_patch=$( $CXX -dM -E -x c /dev/null | grep __clang_patchlevel__ | sed -E 's/.* ([0-9]+).*/\1/' ) + clang_major=$( $CXX -dM -E -x c /dev/null | grep __clang_major__ | sed -E 's/.* ([0-9]+).*/\1/' ) cxx_version="$clang_major.$clang_minor.$clang_patch" From 6d0614ef3589474ef96428fff7d4009dc0d64caa Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Wed, 19 Sep 2018 22:05:59 +0200 Subject: [PATCH 12/30] Guard Event.hxx against races. --- src/debugger/gui/KeyboardWidget.cxx | 2 +- src/emucore/AmigaMouse.hxx | 2 +- src/emucore/AtariMouse.hxx | 2 +- src/emucore/AtariVox.cxx | 2 +- src/emucore/AtariVox.hxx | 2 +- src/emucore/Booster.cxx | 2 +- src/emucore/Booster.hxx | 2 +- src/emucore/CompuMate.cxx | 15 ++------ src/emucore/CompuMate.hxx | 11 ++---- src/emucore/Console.hxx | 2 +- src/emucore/Control.cxx | 2 +- src/emucore/Control.hxx | 4 +-- src/emucore/Driving.cxx | 2 +- src/emucore/Driving.hxx | 2 +- src/emucore/Event.hxx | 56 ++++++++++++++++++++++++++--- src/emucore/EventHandler.hxx | 2 +- src/emucore/Genesis.cxx | 2 +- src/emucore/Genesis.hxx | 2 +- src/emucore/Joystick.cxx | 2 +- src/emucore/Joystick.hxx | 2 +- src/emucore/Keyboard.cxx | 2 +- src/emucore/Keyboard.hxx | 2 +- src/emucore/KidVid.cxx | 2 +- src/emucore/KidVid.hxx | 2 +- src/emucore/MindLink.cxx | 2 +- src/emucore/MindLink.hxx | 2 +- src/emucore/Paddles.cxx | 2 +- src/emucore/Paddles.hxx | 2 +- src/emucore/PointingDevice.cxx | 2 +- src/emucore/PointingDevice.hxx | 2 +- src/emucore/SaveKey.cxx | 4 +-- src/emucore/SaveKey.hxx | 4 +-- src/emucore/Switches.cxx | 2 +- src/emucore/Switches.hxx | 4 +-- src/emucore/TrakBall.hxx | 2 +- 35 files changed, 94 insertions(+), 60 deletions(-) diff --git a/src/debugger/gui/KeyboardWidget.cxx b/src/debugger/gui/KeyboardWidget.cxx index e0ca3ba05..61ee42692 100644 --- a/src/debugger/gui/KeyboardWidget.cxx +++ b/src/debugger/gui/KeyboardWidget.cxx @@ -54,7 +54,7 @@ KeyboardWidget::KeyboardWidget(GuiObject* boss, const GUI::Font& font, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void KeyboardWidget::loadConfig() { - const Event& event = instance().eventHandler().event(); + Event& event = instance().eventHandler().event(); for(int i = 0; i < 12; ++i) myBox[i]->setState(event.get(myEvent[i])); } diff --git a/src/emucore/AmigaMouse.hxx b/src/emucore/AmigaMouse.hxx index 09615a216..0e042b294 100644 --- a/src/emucore/AmigaMouse.hxx +++ b/src/emucore/AmigaMouse.hxx @@ -30,7 +30,7 @@ class AmigaMouse : public PointingDevice @param event The event object to use for events @param system The system using this controller */ - AmigaMouse(Jack jack, const Event& event, const System& system) + AmigaMouse(Jack jack, Event& event, const System& system) : PointingDevice(jack, event, system, Controller::AmigaMouse, trackballSensitivity) { } virtual ~AmigaMouse() = default; diff --git a/src/emucore/AtariMouse.hxx b/src/emucore/AtariMouse.hxx index 0ad879afc..9081855fd 100644 --- a/src/emucore/AtariMouse.hxx +++ b/src/emucore/AtariMouse.hxx @@ -30,7 +30,7 @@ class AtariMouse : public PointingDevice @param event The event object to use for events @param system The system using this controller */ - AtariMouse(Jack jack, const Event& event, const System& system) + AtariMouse(Jack jack, Event& event, const System& system) : PointingDevice(jack, event, system, Controller::AtariMouse, trackballSensitivity) { } virtual ~AtariMouse() = default; diff --git a/src/emucore/AtariVox.cxx b/src/emucore/AtariVox.cxx index 5cdf285cb..9e0773c46 100644 --- a/src/emucore/AtariVox.cxx +++ b/src/emucore/AtariVox.cxx @@ -20,7 +20,7 @@ #include "AtariVox.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AtariVox::AtariVox(Jack jack, const Event& event, const System& system, +AtariVox::AtariVox(Jack jack, Event& event, const System& system, const SerialPort& port, const string& portname, const string& eepromfile) : SaveKey(jack, event, system, eepromfile, Controller::AtariVox), diff --git a/src/emucore/AtariVox.hxx b/src/emucore/AtariVox.hxx index cec2c72aa..8707fb848 100644 --- a/src/emucore/AtariVox.hxx +++ b/src/emucore/AtariVox.hxx @@ -45,7 +45,7 @@ class AtariVox : public SaveKey @param portname Name of the port used for reading and writing @param eepromfile The file containing the EEPROM data */ - AtariVox(Jack jack, const Event& event, const System& system, + AtariVox(Jack jack, Event& event, const System& system, const SerialPort& port, const string& portname, const string& eepromfile); virtual ~AtariVox() = default; diff --git a/src/emucore/Booster.cxx b/src/emucore/Booster.cxx index e09859ae1..0a9922c83 100644 --- a/src/emucore/Booster.cxx +++ b/src/emucore/Booster.cxx @@ -19,7 +19,7 @@ #include "Booster.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -BoosterGrip::BoosterGrip(Jack jack, const Event& event, const System& system) +BoosterGrip::BoosterGrip(Jack jack, Event& event, const System& system) : Controller(jack, event, system, Controller::BoosterGrip), myControlID(-1) { diff --git a/src/emucore/Booster.hxx b/src/emucore/Booster.hxx index a89c94fff..c5799bc5a 100644 --- a/src/emucore/Booster.hxx +++ b/src/emucore/Booster.hxx @@ -38,7 +38,7 @@ class BoosterGrip : public Controller @param event The event object to use for events @param system The system using this controller */ - BoosterGrip(Jack jack, const Event& event, const System& system); + BoosterGrip(Jack jack, Event& event, const System& system); virtual ~BoosterGrip() = default; public: diff --git a/src/emucore/CompuMate.cxx b/src/emucore/CompuMate.cxx index db4911085..a53315f5a 100644 --- a/src/emucore/CompuMate.cxx +++ b/src/emucore/CompuMate.cxx @@ -20,12 +20,11 @@ #include "CompuMate.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CompuMate::CompuMate(const Console& console, const Event& event, +CompuMate::CompuMate(const Console& console, Event& event, const System& system) : myConsole(console), - myEvent(event), myColumn(0), - myKeyTable(nullptr) + myKeyTable(event.getKeys()) { // These controller pointers will be retrieved by the Console, which will // also take ownership of them @@ -43,15 +42,7 @@ CompuMate::CompuMate(const Console& console, const Event& event, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void CompuMate::enableKeyHandling(bool enable) { - if(enable) - myKeyTable = myEvent.getKeys(); - else - { - for(uInt32 i = 0; i < KBDK_LAST; ++i) - myInternalKeyTable[i] = false; - - myKeyTable = myInternalKeyTable; - } + myKeyTable.enable(enable); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CompuMate.hxx b/src/emucore/CompuMate.hxx index bebe4c38b..87f1fef13 100644 --- a/src/emucore/CompuMate.hxx +++ b/src/emucore/CompuMate.hxx @@ -50,7 +50,7 @@ class CompuMate @param event The event object to use for events @param system The system using this controller */ - CompuMate(const Console& console, const Event& event, const System& system); + CompuMate(const Console& console, Event& event, const System& system); virtual ~CompuMate() = default; // Controllers are deleted outside this class /** @@ -98,7 +98,7 @@ class CompuMate @param event The event object to use for events @param system The system using this controller */ - CMControl(class CompuMate& handler, Controller::Jack jack, const Event& event, + CMControl(class CompuMate& handler, Controller::Jack jack, Event& event, const System& system) : Controller(jack, event, system, Controller::CompuMate), myHandler(handler) { } @@ -134,7 +134,6 @@ class CompuMate private: // Console and Event objects const Console& myConsole; - const Event& myEvent; // Left and right controllers unique_ptr myLeftController, myRightController; @@ -143,11 +142,7 @@ class CompuMate uInt8 myColumn; // The keyboard state array (tells us the current state of the keyboard) - const bool* myKeyTable; - - // Array of keyboard key states when in the debugger (the normal keyboard - // keys are ignored in such a case) - bool myInternalKeyTable[KBDK_LAST]; + Event::KeyTable myKeyTable; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/Console.hxx b/src/emucore/Console.hxx index a8ab18785..4c9fa25ee 100644 --- a/src/emucore/Console.hxx +++ b/src/emucore/Console.hxx @@ -372,7 +372,7 @@ class Console : public Serializable OSystem& myOSystem; // Reference to the event object to use - const Event& myEvent; + Event& myEvent; // Properties for the game Properties myProperties; diff --git a/src/emucore/Control.cxx b/src/emucore/Control.cxx index c522b3947..a7a91679a 100644 --- a/src/emucore/Control.cxx +++ b/src/emucore/Control.cxx @@ -21,7 +21,7 @@ #include "Control.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Controller::Controller(Jack jack, const Event& event, const System& system, +Controller::Controller(Jack jack, Event& event, const System& system, Type type) : myJack(jack), myEvent(event), diff --git a/src/emucore/Control.hxx b/src/emucore/Control.hxx index 45a6bdd7c..2e0461d32 100644 --- a/src/emucore/Control.hxx +++ b/src/emucore/Control.hxx @@ -108,7 +108,7 @@ class Controller : public Serializable @param system The system using this controller @param type The type for this controller */ - Controller(Jack jack, const Event& event, const System& system, + Controller(Jack jack, Event& event, const System& system, Type type); virtual ~Controller() = default; @@ -275,7 +275,7 @@ class Controller : public Serializable const Jack myJack; /// Reference to the event object this controller uses - const Event& myEvent; + Event& myEvent; /// Pointer to the System object (used for timing purposes) const System& mySystem; diff --git a/src/emucore/Driving.cxx b/src/emucore/Driving.cxx index e209b723f..be24c2f85 100644 --- a/src/emucore/Driving.cxx +++ b/src/emucore/Driving.cxx @@ -21,7 +21,7 @@ #include "Driving.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Driving::Driving(Jack jack, const Event& event, const System& system) +Driving::Driving(Jack jack, Event& event, const System& system) : Controller(jack, event, system, Controller::Driving), myCounter(0), myGrayIndex(0), diff --git a/src/emucore/Driving.hxx b/src/emucore/Driving.hxx index 0925cef25..41b7343c1 100644 --- a/src/emucore/Driving.hxx +++ b/src/emucore/Driving.hxx @@ -37,7 +37,7 @@ class Driving : public Controller @param event The event object to use for events @param system The system using this controller */ - Driving(Jack jack, const Event& event, const System& system); + Driving(Jack jack, Event& event, const System& system); virtual ~Driving() = default; public: diff --git a/src/emucore/Event.hxx b/src/emucore/Event.hxx index f286acf18..582881a35 100644 --- a/src/emucore/Event.hxx +++ b/src/emucore/Event.hxx @@ -18,6 +18,8 @@ #ifndef EVENT_HXX #define EVENT_HXX +#include + #include "bspf.hxx" #include "StellaKeys.hxx" @@ -80,6 +82,36 @@ class Event LastType }; + class KeyTable { + public: + + KeyTable(const bool* keyTable, std::mutex& mutex) + : myKeyTable(keyTable), + myMutex(mutex), + myIsEnabled(true) + {} + + bool operator[](int type) { + if (!myIsEnabled) return false; + + std::lock_guard lock(myMutex); + + return myKeyTable[type]; + } + + void enable(bool isEnabled) { + myIsEnabled = isEnabled; + } + + private: + + const bool *myKeyTable; + std::mutex& myMutex; + + bool myIsEnabled; + + }; + public: /** Create a new event object. @@ -90,18 +122,28 @@ class Event /** Get the value associated with the event of the specified type. */ - Int32 get(Type type) const { return myValues[type]; } + Int32 get(Type type) { + std::lock_guard lock(myMutex); + + return myValues[type]; + } /** Set the value associated with the event of the specified type. */ - void set(Type type, Int32 value) { myValues[type] = value; } + void set(Type type, Int32 value) { + std::lock_guard lock(myMutex); + + myValues[type] = value; + } /** Clears the event array (resets to initial state). */ void clear() { + std::lock_guard lock(myMutex); + for(uInt32 i = 0; i < LastType; ++i) myValues[i] = Event::NoType; @@ -112,12 +154,16 @@ class Event /** Get the keytable associated with this event. */ - const bool* getKeys() const { return myKeyTable; } + KeyTable getKeys() { return KeyTable(myKeyTable, myMutex); } /** Set the value associated with the event of the specified type. */ - void setKey(StellaKey key, bool state) { myKeyTable[key] = state; } + void setKey(StellaKey key, bool state) { + std::lock_guard lock(myMutex); + + myKeyTable[key] = state; + } /** Tests if a given event represents continuous or analog values. @@ -143,6 +189,8 @@ class Event // Array of keyboard key states bool myKeyTable[KBDK_LAST]; + std::mutex myMutex; + private: // Following constructors and assignment operators not supported Event(const Event&) = delete; diff --git a/src/emucore/EventHandler.hxx b/src/emucore/EventHandler.hxx index a6d32ce98..e8344bc53 100644 --- a/src/emucore/EventHandler.hxx +++ b/src/emucore/EventHandler.hxx @@ -63,7 +63,7 @@ class EventHandler @return The event object */ - const Event& event() const { return myEvent; } + Event& event() { return myEvent; } /** Initialize state of this eventhandler. diff --git a/src/emucore/Genesis.cxx b/src/emucore/Genesis.cxx index 74de86906..7085228ae 100644 --- a/src/emucore/Genesis.cxx +++ b/src/emucore/Genesis.cxx @@ -19,7 +19,7 @@ #include "Genesis.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Genesis::Genesis(Jack jack, const Event& event, const System& system) +Genesis::Genesis(Jack jack, Event& event, const System& system) : Controller(jack, event, system, Controller::Genesis), myControlID(-1) { diff --git a/src/emucore/Genesis.hxx b/src/emucore/Genesis.hxx index c94783358..323fb124c 100644 --- a/src/emucore/Genesis.hxx +++ b/src/emucore/Genesis.hxx @@ -40,7 +40,7 @@ class Genesis : public Controller @param event The event object to use for events @param system The system using this controller */ - Genesis(Jack jack, const Event& event, const System& system); + Genesis(Jack jack, Event& event, const System& system); virtual ~Genesis() = default; public: diff --git a/src/emucore/Joystick.cxx b/src/emucore/Joystick.cxx index ccfaa1faf..134228162 100644 --- a/src/emucore/Joystick.cxx +++ b/src/emucore/Joystick.cxx @@ -19,7 +19,7 @@ #include "Joystick.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Joystick::Joystick(Jack jack, const Event& event, const System& system) +Joystick::Joystick(Jack jack, Event& event, const System& system) : Controller(jack, event, system, Controller::Joystick), myControlID(-1) { diff --git a/src/emucore/Joystick.hxx b/src/emucore/Joystick.hxx index 228ed9109..f3c1b1129 100644 --- a/src/emucore/Joystick.hxx +++ b/src/emucore/Joystick.hxx @@ -37,7 +37,7 @@ class Joystick : public Controller @param event The event object to use for events @param system The system using this controller */ - Joystick(Jack jack, const Event& event, const System& system); + Joystick(Jack jack, Event& event, const System& system); virtual ~Joystick() = default; public: diff --git a/src/emucore/Keyboard.cxx b/src/emucore/Keyboard.cxx index 996053d32..301165efe 100644 --- a/src/emucore/Keyboard.cxx +++ b/src/emucore/Keyboard.cxx @@ -19,7 +19,7 @@ #include "Keyboard.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Keyboard::Keyboard(Jack jack, const Event& event, const System& system) +Keyboard::Keyboard(Jack jack, Event& event, const System& system) : Controller(jack, event, system, Controller::Keyboard) { if(myJack == Left) diff --git a/src/emucore/Keyboard.hxx b/src/emucore/Keyboard.hxx index aa5ca23f7..46c10cbc8 100644 --- a/src/emucore/Keyboard.hxx +++ b/src/emucore/Keyboard.hxx @@ -37,7 +37,7 @@ class Keyboard : public Controller @param event The event object to use for events @param system The system using this controller */ - Keyboard(Jack jack, const Event& event, const System& system); + Keyboard(Jack jack, Event& event, const System& system); virtual ~Keyboard() = default; public: diff --git a/src/emucore/KidVid.cxx b/src/emucore/KidVid.cxx index 2d44259c8..fd5b713de 100644 --- a/src/emucore/KidVid.cxx +++ b/src/emucore/KidVid.cxx @@ -21,7 +21,7 @@ #include "KidVid.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -KidVid::KidVid(Jack jack, const Event& event, const System& system, +KidVid::KidVid(Jack jack, Event& event, const System& system, const string& rommd5) : Controller(jack, event, system, Controller::KidVid), myEnabled(myJack == Right), diff --git a/src/emucore/KidVid.hxx b/src/emucore/KidVid.hxx index 8365a3d15..ce26b7373 100644 --- a/src/emucore/KidVid.hxx +++ b/src/emucore/KidVid.hxx @@ -47,7 +47,7 @@ class KidVid : public Controller @param system The system using this controller @param md5sum The md5 of the ROM using this controller */ - KidVid(Jack jack, const Event& event, const System& system, + KidVid(Jack jack, Event& event, const System& system, const string& md5sum); virtual ~KidVid(); diff --git a/src/emucore/MindLink.cxx b/src/emucore/MindLink.cxx index f2b13d9af..b715a1aa9 100644 --- a/src/emucore/MindLink.cxx +++ b/src/emucore/MindLink.cxx @@ -19,7 +19,7 @@ #include "MindLink.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -MindLink::MindLink(Jack jack, const Event& event, const System& system) +MindLink::MindLink(Jack jack, Event& event, const System& system) : Controller(jack, event, system, Controller::MindLink), myMindlinkPos(0x2800), myMindlinkShift(1), diff --git a/src/emucore/MindLink.hxx b/src/emucore/MindLink.hxx index 15c7c96ba..c43fb20a3 100644 --- a/src/emucore/MindLink.hxx +++ b/src/emucore/MindLink.hxx @@ -47,7 +47,7 @@ class MindLink : public Controller @param event The event object to use for events @param system The system using this controller */ - MindLink(Jack jack, const Event& event, const System& system); + MindLink(Jack jack, Event& event, const System& system); virtual ~MindLink() = default; public: diff --git a/src/emucore/Paddles.cxx b/src/emucore/Paddles.cxx index f6bca2b46..8511d696d 100644 --- a/src/emucore/Paddles.cxx +++ b/src/emucore/Paddles.cxx @@ -19,7 +19,7 @@ #include "Paddles.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Paddles::Paddles(Jack jack, const Event& event, const System& system, +Paddles::Paddles(Jack jack, Event& event, const System& system, bool swappaddle, bool swapaxis, bool swapdir) : Controller(jack, event, system, Controller::Paddles), myMPaddleID(-1), diff --git a/src/emucore/Paddles.hxx b/src/emucore/Paddles.hxx index 4a206a5d7..7ea3c6cbe 100644 --- a/src/emucore/Paddles.hxx +++ b/src/emucore/Paddles.hxx @@ -43,7 +43,7 @@ class Paddles : public Controller causes movement (lesser axis values cause paddle resistance to decrease instead of increase) */ - Paddles(Jack jack, const Event& event, const System& system, + Paddles(Jack jack, Event& event, const System& system, bool swappaddle, bool swapaxis, bool swapdir); virtual ~Paddles() = default; diff --git a/src/emucore/PointingDevice.cxx b/src/emucore/PointingDevice.cxx index 346e06b5a..327ae96fa 100644 --- a/src/emucore/PointingDevice.cxx +++ b/src/emucore/PointingDevice.cxx @@ -23,7 +23,7 @@ #include "PointingDevice.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -PointingDevice::PointingDevice(Jack jack, const Event& event, +PointingDevice::PointingDevice(Jack jack, Event& event, const System& system, Controller::Type type, float sensitivity) : Controller(jack, event, system, type), diff --git a/src/emucore/PointingDevice.hxx b/src/emucore/PointingDevice.hxx index 8ff501c11..8cedc26f4 100644 --- a/src/emucore/PointingDevice.hxx +++ b/src/emucore/PointingDevice.hxx @@ -35,7 +35,7 @@ class PointingDevice : public Controller friend class PointingDeviceWidget; public: - PointingDevice(Jack jack, const Event& event, + PointingDevice(Jack jack, Event& event, const System& system, Controller::Type type, float sensitivity); virtual ~PointingDevice() = default; diff --git a/src/emucore/SaveKey.cxx b/src/emucore/SaveKey.cxx index 0e0acde8e..4a0359fa5 100644 --- a/src/emucore/SaveKey.cxx +++ b/src/emucore/SaveKey.cxx @@ -20,7 +20,7 @@ #include "SaveKey.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SaveKey::SaveKey(Jack jack, const Event& event, const System& system, +SaveKey::SaveKey(Jack jack, Event& event, const System& system, const string& eepromfile, Type type) : Controller(jack, event, system, type) { @@ -30,7 +30,7 @@ SaveKey::SaveKey(Jack jack, const Event& event, const System& system, } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SaveKey::SaveKey(Jack jack, const Event& event, const System& system, +SaveKey::SaveKey(Jack jack, Event& event, const System& system, const string& eepromfile) : SaveKey(jack, event, system, eepromfile, Controller::SaveKey) { diff --git a/src/emucore/SaveKey.hxx b/src/emucore/SaveKey.hxx index ab98c8029..0415e7e9f 100644 --- a/src/emucore/SaveKey.hxx +++ b/src/emucore/SaveKey.hxx @@ -42,7 +42,7 @@ class SaveKey : public Controller @param system The system using this controller @param eepromfile The file containing the EEPROM data */ - SaveKey(Jack jack, const Event& event, const System& system, + SaveKey(Jack jack, Event& event, const System& system, const string& eepromfile); virtual ~SaveKey(); @@ -51,7 +51,7 @@ class SaveKey : public Controller Delegating constructor currently used by both this class and classes that inherit from SaveKey (currently, AtariVox) */ - SaveKey(Jack jack, const Event& event, const System& system, + SaveKey(Jack jack, Event& event, const System& system, const string& eepromfile, Type type); public: diff --git a/src/emucore/Switches.cxx b/src/emucore/Switches.cxx index 28f90c47e..f8dabd93b 100644 --- a/src/emucore/Switches.cxx +++ b/src/emucore/Switches.cxx @@ -21,7 +21,7 @@ #include "Switches.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Switches::Switches(const Event& event, const Properties& properties, +Switches::Switches(Event& event, const Properties& properties, const Settings& settings) : myEvent(event), mySwitches(0xFF), diff --git a/src/emucore/Switches.hxx b/src/emucore/Switches.hxx index b18a7bde2..4ba261061 100644 --- a/src/emucore/Switches.hxx +++ b/src/emucore/Switches.hxx @@ -46,7 +46,7 @@ class Switches : public Serializable @param props The ROM properties to use for the currently enabled ROM @param settings The settings used by the system */ - Switches(const Event& event, const Properties& props, const Settings& settings); + Switches(Event& event, const Properties& props, const Settings& settings); virtual ~Switches() = default; public: @@ -124,7 +124,7 @@ class Switches : public Serializable private: // Reference to the event object to use - const Event& myEvent; + Event& myEvent; // State of the console switches uInt8 mySwitches; diff --git a/src/emucore/TrakBall.hxx b/src/emucore/TrakBall.hxx index 038b9f2c3..ea7123358 100644 --- a/src/emucore/TrakBall.hxx +++ b/src/emucore/TrakBall.hxx @@ -30,7 +30,7 @@ class TrakBall : public PointingDevice @param event The event object to use for events @param system The system using this controller */ - TrakBall(Jack jack, const Event& event, const System& system) + TrakBall(Jack jack, Event& event, const System& system) : PointingDevice(jack, event, system, Controller::TrakBall, trackballSensitivity) { } virtual ~TrakBall() = default; From c038df63437a343b588012e37fd5855bd935b9b0 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 20 Sep 2018 10:20:12 +0200 Subject: [PATCH 13/30] fixed #383 if globally enabled, disable game specific stereo and phosphor elements changed global phosphor value label (Default -> Blend) --- src/emucore/TIASurface.cxx | 16 ++++++++++++---- src/gui/GameInfoDialog.cxx | 8 +++++++- src/gui/VideoDialog.cxx | 19 ++++++++++++++----- src/gui/VideoDialog.hxx | 17 +++++++++-------- 4 files changed, 42 insertions(+), 18 deletions(-) diff --git a/src/emucore/TIASurface.cxx b/src/emucore/TIASurface.cxx index a4d31f83c..8ca66d2fc 100644 --- a/src/emucore/TIASurface.cxx +++ b/src/emucore/TIASurface.cxx @@ -71,10 +71,18 @@ void TIASurface::initialize(const Console& console, const VideoMode& mode) mySLineSurface->setDstSize(mode.image.width(), mode.image.height()); // Phosphor mode can be enabled either globally or per-ROM - bool p_enable = myOSystem.settings().getString("tv.phosphor") == "always" || - console.properties().get(Display_Phosphor) == "YES"; - int p_blend = atoi(console.properties().get(Display_PPBlend).c_str()); - enablePhosphor(p_enable, p_blend); + int p_blend = 0; + + if(myOSystem.settings().getString("tv.phosphor") == "always") + { + p_blend = myOSystem.settings().getInt("tv.phosblend"); + } + else if(console.properties().get(Display_Phosphor) == "YES") + { + p_blend = atoi(console.properties().get(Display_PPBlend).c_str()); + } + enablePhosphor(p_blend != 0, p_blend); + setNTSC(NTSCFilter::Preset(myOSystem.settings().getInt("tv.filter")), false); // Scanline repeating is sensitive to non-integral vertical resolution, diff --git a/src/gui/GameInfoDialog.cxx b/src/gui/GameInfoDialog.cxx index ecd970fc9..60e7eb59d 100644 --- a/src/gui/GameInfoDialog.cxx +++ b/src/gui/GameInfoDialog.cxx @@ -36,6 +36,7 @@ #include "TIASurface.hxx" #include "TIA.hxx" #include "Switches.hxx" +#include "AudioSettings.hxx" #include "GameInfoDialog.hxx" @@ -386,6 +387,8 @@ void GameInfoDialog::loadCartridgeProperties(const Properties& props) myRarity->setText(props.get(Cartridge_Rarity)); myNote->setText(props.get(Cartridge_Note)); mySound->setState(props.get(Cartridge_Sound) == "STEREO"); + // if stereo is always enabled, disable game specific stereo setting + mySound->setEnabled(!instance().audioSettings().stereo()); myType->setSelected(props.get(Cartridge_Type), "AUTO"); if(instance().hasConsole() && myType->getSelectedTag().toString() == "AUTO") @@ -487,9 +490,12 @@ void GameInfoDialog::loadDisplayProperties(const Properties& props) else myHeightDetected->setLabel(""); + // if phosphor is always enabled, disable game specific phosphor settings + bool alwaysPhosphor = instance().settings().getString("tv.phosphor") == "always"; bool usePhosphor = props.get(Display_Phosphor) == "YES"; myPhosphor->setState(usePhosphor); - myPPBlend->setEnabled(usePhosphor); + myPhosphor->setEnabled(!alwaysPhosphor); + myPPBlend->setEnabled(!alwaysPhosphor && usePhosphor); const string& blend = props.get(Display_PPBlend); myPPBlend->setValue(atoi(blend.c_str())); diff --git a/src/gui/VideoDialog.cxx b/src/gui/VideoDialog.cxx index 2aee57f02..198e611d8 100644 --- a/src/gui/VideoDialog.cxx +++ b/src/gui/VideoDialog.cxx @@ -272,14 +272,14 @@ VideoDialog::VideoDialog(OSystem& osystem, DialogContainer& parent, lwidth = font.getStringWidth("Intensity "); // TV Phosphor effect - myTVPhosphor = new CheckboxWidget(myTab, font, xpos, ypos + 1, "Phosphor for all ROMs"); + myTVPhosphor = new CheckboxWidget(myTab, font, xpos, ypos + 1, "Phosphor for all ROMs", kPhosphorChanged); wid.push_back(myTVPhosphor); ypos += lineHeight + VGAP; - // TV Phosphor default level + // TV Phosphor blend level xpos += INDENT; swidth = font.getMaxCharWidth() * 10; - CREATE_CUSTOM_SLIDERS(PhosLevel, "Default "); + CREATE_CUSTOM_SLIDERS(PhosLevel, "Blend "); ypos += 6; // Scanline intensity and interpolation @@ -395,6 +395,7 @@ void VideoDialog::loadConfig() // TV phosphor blend myTVPhosLevel->setValue(instance().settings().getInt("tv.phosblend")); + handlePhosphorChange(); // TV scanline intensity and interpolation myTVScanIntense->setValue(instance().settings().getInt("tv.scanlines")); @@ -475,10 +476,8 @@ void VideoDialog::saveConfig() // TV phosphor mode instance().settings().setValue("tv.phosphor", myTVPhosphor->getState() ? "always" : "byrom"); - // TV phosphor blend instance().settings().setValue("tv.phosblend", myTVPhosLevel->getValueLabel()); - Properties::setDefault(Display_PPBlend, myTVPhosLevel->getValueLabel()); // TV scanline intensity and interpolation instance().settings().setValue("tv.scanlines", myTVScanIntense->getValueLabel()); @@ -581,6 +580,12 @@ void VideoDialog::loadTVAdjustables(NTSCFilter::Preset preset) myTVGamma->setValue(adj.gamma); } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void VideoDialog::handlePhosphorChange() +{ + myTVPhosLevel->setEnabled(myTVPhosphor->getState()); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void VideoDialog::handleCommand(CommandSender* sender, int cmd, int data, int id) @@ -615,6 +620,10 @@ void VideoDialog::handleCommand(CommandSender* sender, int cmd, case kCloneCustomCmd: loadTVAdjustables(NTSCFilter::PRESET_CUSTOM); break; + case kPhosphorChanged: + handlePhosphorChange(); + break; + default: Dialog::handleCommand(sender, cmd, data, 0); break; diff --git a/src/gui/VideoDialog.hxx b/src/gui/VideoDialog.hxx index 4d76383db..62170cb76 100644 --- a/src/gui/VideoDialog.hxx +++ b/src/gui/VideoDialog.hxx @@ -45,6 +45,7 @@ class VideoDialog : public Dialog void handleTVModeChange(NTSCFilter::Preset); void loadTVAdjustables(NTSCFilter::Preset preset); + void handlePhosphorChange(); void handleCommand(CommandSender* sender, int cmd, int data, int id) override; private: @@ -98,15 +99,15 @@ class VideoDialog : public Dialog ButtonWidget* myCloneCustom; enum { - kSpeedupChanged = 'VDSp', + kSpeedupChanged = 'VDSp', - kTVModeChanged = 'VDtv', - - kCloneCompositeCmd = 'CLcp', - kCloneSvideoCmd = 'CLsv', - kCloneRGBCmd = 'CLrb', - kCloneBadCmd = 'CLbd', - kCloneCustomCmd = 'CLcu' + kTVModeChanged = 'VDtv', + kCloneCompositeCmd = 'CLcp', + kCloneSvideoCmd = 'CLsv', + kCloneRGBCmd = 'CLrb', + kCloneBadCmd = 'CLbd', + kCloneCustomCmd = 'CLcu', + kPhosphorChanged = 'VDph' }; private: From c475072455d6639051b5a6242781cf0f8d517d7a Mon Sep 17 00:00:00 2001 From: thrust26 Date: Thu, 20 Sep 2018 10:58:07 +0200 Subject: [PATCH 14/30] adjusted docs for last commit --- docs/graphics/options_video_tv.png | Bin 7980 -> 8103 bytes docs/index.html | 10 +++++----- src/gui/VideoDialog.cxx | 1 + 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/docs/graphics/options_video_tv.png b/docs/graphics/options_video_tv.png index 6f150202cdd69a4153d8babdb3e9547151629cd3..435cfcfd1919588074de55a41f30a24380a23e1a 100644 GIT binary patch literal 8103 zcmeHMi93}0+aCs#b!3egWG`FDIwNb@64@n7I+i$^LiS}aWS1gawva7Lb|qsZM3zZe zV7M{lU96i15AN&DA+Pk=WO1S^w$tx=%B_Vxro!2E91mdFA(Nr_>u~~T@mp*+y zUURN@dG+n_SxFjncqN&GlhU!S(|IjkZH$QfLod^{`r|#}pGyZz*}=lW8Jns}Fl`)I z$B$PBDi8-b+P9^R)g651`|(^C_xLnfaJP*>_J>aJW7?T+T=40Y9dN;IkR5qXPWOseW6P*)ysFR(iO)R)N<^JRZ`-< zh?j7?lP$6NB5xmKf;t86-JU`PyNXY@7>UPRaLw&kQkg!de*<-z^^$X8^fbZ^L6k1x zNRod7)1H_`9q{8Fe6k@)*ZB~M`H-Yd)f;ePOV^~(?_V2oQ2bR*$%vc6;@?rn{^0SW z+5_lV{$G<%ywerwgSQ1?LvuAcE2+P8EubViU?Mx$YU5er9)RjADodQxX@(4pM(+>U zD;R1+Jry@qMQ16Qx!y&NnOi8!UgLIsDYDWqFU2L24{74^1=YT_3oV5W57lp5QyM)Y z|MN){a9zw7gugKmo#~XAfnB*^R*9>tZA&+CPH*J2-nHm7!GUk3AV7R%rghKIL`Ve9 z8Uuctwba~Y4CgE9(@GiEcb`K#c~kWnD^xqGwkR;Swcp^$B4*`+jqHU=qc`@^wYzZw7?W$cuthThh%7btIGI0 zro|Dn@`r6t`*o41hAxsJ@o?VuvV!DFcFxiGf-A^<-B&|}$X#a_JVM2!j zrhO#0fD-r}BVgj{I_NmK=pDmqhBZM5O03ALU%xEg=NoZ+fIl|dHG>j6;yyls6U}v? zCSQ+Ae+q4Q;AIbHL#2N1=R?jPyTl*T!WuRebB-Aqu~@QiiZjwxi4%pj$^kjOf1Y`_ zUfxGm&fs1^HZVH6%F@+{3x7EZC-Ie)86nyCWhIyl>TUJSTubj4J>^Sbe73 z3W4m35~J53*1J=33x|oc^zC5UO#xcJsa#}<8sjWYNbz&xhQRfE4R*6L7#uVU&3SE11~E3%okGclXI+CNxn(~ ztI1KDE!$~F^Ia3@^c-fXvk!%^-BZMDd+)CFp;DZD@jFNL*lRGKOXKp5SOiS_UDUt$ zbP|s`D4lFJPlWB#Ost^Z1XG3aZ1fNkz#Z?=BF()bY6bgEbRqMrW6;f>sYlgk30*0KFp1Wg0mG*u6%%}YJ|VR8 zR-^Jp9dhL2(i)y0SyaZ(NQ6hItNU`h1;t7_8jXf-n>t6lD4q8=`@K+Gq+*rhx(_Br z1oFCuUiYIcg;M(Z!72E6E|sy=rbHUrjyF7^re4Xz+Nu*aoCZ0x6pgn z5mxN6>*mm4qENvs;%8}j#zO^qCUI7EaHBZZ=$NaijpfL|Q{Va#E~CR>2Vy}CL4Vvf(>TVWUm!g! z7Jxus%N1G3X+-8-{vZf-qi$n&=Q7P|(@h|#JB#RIhS1E17r!EM*rVfbm5OlV?NcT!CB^WRu zqzIRU1G?BwkCcDI$)s;Z<-1MqT8aM_@v zDlO2^Mx>vH;3`_4X&9PzQwJ)$D}3`p^u_~=bJ3i##_O@Pogz|sc~qZF?h7xVp!w+p z!F-5H;->0G`epLWzc~f~&0FHwi_3s~Q{2QH2Aj9rhR+h^-#dI)e>ySlxBK!(#OI?F zNIy$-5<~jUzN3H%dsiB?j>sBZ<1B7i~2aO%~r4A`4J(nDsGM)&F?T&+sxMO|D<#SG9>V#oThq-FsNA`7727C!DWR2EiE}(D2t+idftKdZE zUU^xgy5)ynFxxIcVB={a3`L97de-!InK2@@(w(JXD>I}Rcmnz%IAdMdcveW6e-1@! zcq{@UCLh@+S6DtxGcc%uq_lngslnNQOv0*<`oSnHAU{G6_UKJiO8XeUNF;0*q|^~4 zI?fZf$fV`tC@EG_8CwwYG#^4cf@}xZWz_V)Zg2uGp!f~ho7HKxUysmzp+heg3Z@RA z&~89>F290y^ro0O3nyOKTn+BP<J_#zFZzOZ9o?iNTWC3$+4DAMb3flR=$O8Df1V7!GfOaE#m;dV%x?AC z6?FWaY7~bjU6PhFo%UuSeg3FRP&W(3*}WHdm6LESrJ=cRWnVa~aB&+J$BCXZX85%)3sdE@*>Ws1qfnboZ*d$fVBbUW=V8eC z?E$IqZnLU|JoNj!DpnXO5*v8&v9hJdNuad2g#y3foa-1eoFng0;KFOu)m_Q?RT|%? zzd<`dPZ6vy-8Bvy=($h$VSQ#}7;?fn*0<^(oxK$*%&WiGq2uD}HBY7k-REIH?_YSbH1}Ixc*7S;A9AdKd4lqajQ*fO=V)qW zmtoFh{CByp2*zG4^A|eiDhE+!m1!*gm&c0LtI==G{hzfSF+3SRx6C3f_c%&P_|DQ9 zVgC;loYWHT4lDlHPnNoX+;&$IYyzbeq2>|#_9S25Y|wOfSd<2wh}*8ZW$kAyHREBu zJFHR-B&@T-?}WqqN5*1#24v)%p7l5ClRcM4C&P@*AE2EVm0mldb#9Gvei4i=;<)Bo z+N3GuP|Y!wD15geruH)JME5IpBt^{ibb)Y6fsxe2GfXQ_1OVV&?xDB9pM^P^)|H|~qA00@Y= z%omiy>BdRW7{X-y1``e9_B9F2Hx*9UR$3-8BZa8dodSf=uq%g0AP z7e!+WKQ)ILGrOZ$!T=B8(T~z=7WjX!7K3RXphff3N^Ie0IL`qK^>0aBnhf zerktf)$<4XS;U3PUKvu-Ea}g@I#Jpzhy#O{*~FJyh&Uvri7&$iLHfp}`5$v+Rpx)1DJniMYZgWzWo|;XEo)?*qOB&q zXo9;pn}ffAB^{%Ok3&ricsv8Lg?$U7L6vv;n{6E-|3gLx@ED2(3jvJ|)syr=NW^Z4H-~P_c6(O?~?u~0!;UYzUJ%qbelUk_eRa)w3 zwD_6S-%3W{sd;dp0CHoWti@=1GkyiFxxDqB0iZPCK(ODi&uwwQA(zS2+@-C{sF!@5 zcq!PG|57P(vk_B&GEYTAY9zi^o2fH;#n+j-wPHx1e0F|*m4#_9LnxURhRo%AXhra; zxW@d|mkI!a9&3O%tKdWVmC#?7l?7fe+G%9v9IhLQ8g7luXeCLkI*q9DzCos+-fd(e z ztdnG13nA`~^JK-icMlP$aA0|l58#7T$pO=~ zCoPoK1EahXe~5mv91{crEetob(q`$g;mou$d*PWD6-U9&)W1y%ViTmyihCeWV>W_G zK~RoqJMTKMG3-YOYm@zxbq==y?S5~K!2t#ULB6{lc6~x|(xpXl6xnlWDgc((jxF!M zN-}*}lL))pH|&((t#UJaN}YUE1(?p^mt%t7$_*JTq&h3TotE@@UZcDWtv)s*4ojTu zfU(*uO;v^t+c8M|0!JHI!2udT*WLFZloD!@T9u7YL+`+_CyJF+&3qyp0bL9pYXSkW zDqLoZD1ie(ZbSEzDwnOWdscO`Pd^?r2u+uEBLuYR6Op#u#+x6 z-8`!IVH`+sw02RPr+z<#8-b}YuJ{fR3uJEUviehDxoC$snl56De^dMUG~_%A%3JCq zxqu1@h!0SLFUpWaUhKge`+v1dreh(~!p60h8bbBQc4BwFl1?%;RGUy1t6dgS%$D9O z4aCNBM^$7jipH;f=XUZY<`aCD?AWK`?hnO;EQ;&?j>#>HsG-BMRQ5o9k&G_f>pa0x zy)XhtA6Dr8$I~PryaziAETgAbhX|{g;E5U3I$cFCe@jpQBwBx5{`$?ecK>R z(G8_hs7G0S=awrB5QP&?7-k_|<+lrj5I!&EkRing+FVg0+?ipgVw|Yh-%oeXFQ)8r zk5Ym!2J?sUJ;gHA(*@8;me9y`O7eDnfbxP4lKWBWkq9f+@$G_G^^w$4nZK%}$-Zgl zsSo;6PC(CW1cmxVE~L73YiHR53obyG@thDDW3h(x2S=H?5a#RE0J$E(^u(=o=&;P8 zo{9Zp9qNu@DZbG*U&2Xs>mm2m%ymqL!ViVgG9TUvF{GBg49h_7nn%CqFEwHvJvJyc zQm5f(r`p)Q;?*R5nn^wL?5y1#DAh^IGimj%@1LyE^UJyJk^Me7sxTQZ!#Uy{>6Jwy zi5rxYx3r?ZU3-%c+1m|_c(WN(Yx4P|k>;kFe3AeYR}9bX$kb~3bh`!Gaw!dY8&j8;)@Klk+O zR{b8z%q;+~-!-^mI9@87DAT3h{)S2Gu$+0HO{t8&651>_#KVcgeQJH)gTG<# zu2kPcalU}JcgU;@Rjj-7wXhSON#02sg^m}IwL z3GWiLy4M(P7)oytaiudBe4;vd-~3$Nuvrm54L5YpO3pc9%yZgErexX<8Ht=r(hje5 zSwC)6XX0J5!FQx($xXAul+#+#ZY@lF)6M#?7!gEu-Q+R#>lQ&N%+^Fu$vGve?uKE8 zxYpQ{ay{vSrm<^2qXu&ox|kR&4?vAa@2ISS1Q>vsj}5{*H>O1ep1 z4OWBmNoX#7+ItKrFl5-n7fe^ndKN;lpHB4cueR0uDAE|(FX6`+{Qi*mUwTl(i2R*F z=29MH^VITq&lkO{`|V(nZX1?@)6@g^onw1b^XlO!+T7ekLz^GXHzoWrSSIMm3@Nxr zhanRsmzcJ(w_Q@}hA6(-(_BClO5|g)0~6v4D3$&F%^n*Ix5(79Kp07O6jxsKMhw51 zv4`TtUc^#6mfxSfZw6GB{ik@g6zR6pF@HGDw_n2p2elvDy88GkLh7{Oa0}NLpT}E~ zmUD}97@OreDXB{ordco0S(pNv*BNUPKyQgDA?W&WcwmHy7iz{yvGu}{m;wlxLb7@! zNKn1gKh27;Hy83XIg+|qNTZ|)14P#D&|jUsWIIp9HKs^S#zD$~q2j@BodDadwlkhP zm+M;iQlb)IJ1#%G+FLd#5kEHMJGujA8j&SqF;#XVrScar5mc>YQrsWvBZ0k??*_mH zAxIIZXKEwcE zDW;%t@G)yqTwsLf?CS0tSmM~@rDA(jBg9N1Q@;@AZ|6OMj8=nUGYEIU+umnqlGM9aKwFERq+bL$2D}HwV{KjA5 zcJ&R>%0hL z{3b>e2ewuB!vn|DI3MyZd~y>Lhm5fez5bAP{QK5%9sFm;$y=;{#OmbOvOoobGlGwP Z2FrON7+>I`^hj?_b+imL%hl~d{|DxM>CXTF literal 7980 zcmeHsi9eLz+y9KgFl4M{YwTNO%f5~^`<`qul0ufrlCdN+wup%A+1DgnL=l4`QT8S4 zkZg$&GM4hY^{Ld!4BE-5Z8wZ-k83IcH?>1%6PVI05Z+{b-> z@j!c%|I^~}F@`#yn6GD0>}l&O|M6^uPSVnI-C_5@&0m|Q->3HH^4gN;jDxxL;ry#u ze$}L6X!3i=@y{}_`Mm=fA2$A%xce$7A9tPaGP;O+kDFRs4kQYH1?Nw*I!)fC_<+3G z6KB|&WrhAkwPsH4Zm#E%IjubhsjSRL;mFdXWitmR7(!>ZSTud%y$DHX8v&Wom)wFG|_y*-_l6f^BwkJyB5=x8kUt6i8zdcTUJ!Q>?C&TSu*ZgB@_+B9RPb}W2a*{|Pk7)*A&`t;&yOOcpXmKN zDLcsT^zfrZ=K_s~f*2o_Gj+*?di}ba}fE_mY084Mlk0^4TbC)V0rGe{1J2;l=XmLB~TGJW9Aw9T% z=C9!JeycZfd?Fpvx$NPqXPaxJL5~Qd10~{GdBUQ`#n4w`7$jp(yvWVCggcV2nKquc zDgqV?icz@Ff}eqA&Y*Dd;p#L^QT`DY;{?Eux$&h1(x8QtJN?iCP5}0`^h5{%OR0kp z*ST~AKc6f^@{liW>9N=(w(NRjnS#JX`RsyPXM~HPj=U%0WTXW$?)`0j zIC+KZu^s#!oUCpDjckN-2`0QL3j%ZPgy+87A9llsUszcbr+u$y5)~tmwG4{RKvYe| z(528yO1Jkek;4OAgTeXvYcSBd`twD9cr?LAj3xl4=y;1mndBukyzmmL2x)tzo1w4}3B3x8CY&y%%F3yMP%e9}gwV&o0RHI{0S^h+yi|Mn zY?F4p&GqRRrffj#>vO(R))3V8VO#RJuvZE5lah`YeZ}*(?jq8UCKDGpi6Bxv)UC~G zqP1atZ=RQs`C2V9U7WU9QO`0vvv3PQR;>y~TomB1?_Quxq-s)If3v;1rPaT zbk1NO0VfU6{x^+QM?LDJvc?J)I10pOxOT3^i?3<1kKWT4=2?e@)&&(RWE`;~Kw$e? zDcR2&Q%yR}yX|R$?Yd=zd9T~{4nYCw^#t%)+@7GjSMei{(+&^gzg$G6SfWx+sU)3k zj*a~UpJx!xD2G1FZh5vg0{JtvMy-|eRaa*ra*wEeMv`mQG)KoE*__)F@5$so;USlp zv^YP8Q6-|Z?%yl2HfAqk#hy3DC758T7hcKTe~Nhyod_KgcXi{y8b7ezLOR4ncJ9M# z%!3TAU1XT*3Qk=me<4FHr$iwrJaS*Ops`{vm|G^ZW{t|zw=W1zJatwa#lJ;XQ_l#SB~cgcUQlOhB%r4a-%5YYhpJ ztKt(w{1Yq8Dk{d_hF5RRLcUv5iO7tIFhs(7V_CzEA7uUrH;(EN;rtLrmGGsgu8v1h zi-pCm(EJVPpE$AIZDy=AwRlJkSBW`t+!82;w&He>z9N5<$A7`jDt7U{3NfV3GE@rq zI{?|CUi<;+E;?W*q5a81WhTK|pDfIMw^3mSDvrn1@2=8>)8vBA z%wnMxx?k*qMth1oJH{ba<%RDk4B@kpayLDqaDN2qQl)u6YwPDl-K9BFC@7zhixH%2 z;5HI&B1rw%j%*^*shIg>U4L=MgCl@i^)!_0d(|xy-`7yqD*aV50sGZ6%kM+Bxd+1M&r%25F0Xmg{6D}zce7I-+1Y2{9-}1{#B-8k_)EXnVIy!sv zgib~HWgzvQReP@a*>X;_^z3MJU3~E~hK?*FR%>eG0CB3XMG{_389T^`8ITs7vR7}C zou^X&z(cf%TD+u3$&*6q;6CrHzd$vHa6$A)Aq-NE(H#nKajT2YGEV7v_Rn_YDW(Ua zPS+fDwqP(yHd8X#Sl~qm3|1b~S5gc;x87rYzi?eih9L^tqmU-mE)Dxc6 za`6BcAeG(tMJ@Sn>RU8aNm9QY#`7CA5heBUko%cLP(;DGEy0>yNX=`o z3jJyJHz8x69@NULm0$SBFuZ@*Vqo8Jb(v9di&OGMQtD_sa$*)l%Q8l>^&sHD%s0|M zIoZC1>#D6j>6}){kcu4>>V>69*Z#gP^twc=HJ8mG@vLi^z+ z!sY^{pxe0F2cM(jyEMU1#VDR$#)DV~i)l?SL<;iPv+IbQzet=_LK(6wtI(Iayu1R= z*h5lJhd^$ypPiVTS3n@G={gaw)9xdg@^J;J3r)OoF&S>Smdi*x}GC*c<4t zdvUis9qx76+Lf}f>$vG!(pI&A&)DATf+%sMRt`gM6r^-Aco6vGj8krKYhMk0R)L*=VRM^?3}2{toEMNbTWd}V`NL9`xgNJY`%egrUQKXfT6vb zR~3!VgYn-z-HpgM<#gPq8=ueKGS{b317~8P3#mi?=0;+uboFD3uqRLwxqP>RU&YvR z%?0lkialjW^tl0lC0CKRG!n#R^~zEdBH!GJHE{2PMAaU-A7VoCdEfpsLbyG;?E*^J z=&4`&_mXDbSBMoaANSmx#0OR4tGcHUMTqOnIVGsFd$c9l$tINQjtx| z=tynr#V5x`B`%!N6dweSY(VMcYVcailmJ{H{M$(y1WK#x<(Tar=ri>uQ{8Oz$29YH z3JRulsXf{G>*oc=*z_-_G8#)}5kYAD`KCE{_&~m#lD3FV&eDiqxVh^cBOCi{_iQ7F zu8#3Yv1{k2;?ECCPnPNHITf>VqG>h)e<{+J4cW>Bq_M!0i1EcG%vX4mYbWXpdKeK^ zS2yNx%9!_iaUlrqMAs^)>8gzIHvE!>*ocJScpyVazj!w_iyE?x^CqXX&@ z_>Gq!mH(M~_9@|uKI{&L!Q7d|@URB~EF?2;c&MgIG;|?x`dV!*=4j7jb7=zdg{oRr zXL=jav?`^NB*AoZX<_p1F*%(o{vu{oaUpjPZ=5)f^-O(r{g>bB&C@6ch@j42hu-Jbhy z$3SCEvnqPnMUvTi-r4KYDpqaFY=6`CusiD`cIF#48xc_etEa8h@920n1i7=W(wXV~ zi)h%v_D9RAzz(kL7v{W*1qa8mPpTg!qbb+D;nO>;h<9n43^y%gb%IfmYF}27-}H)V zO8roQC$7HJYo%gfwjN7GV8pl%9dCUG9|ZYIT(@1PTbfNlG-W)4uGlSlSc{L&HAKF4 z-Fw|O3gL43j77821O_i0+#G@gO3#B;mJDSYg1*OO)uZ8;r*VR&1p~9C3TO1-4t=#y zgPvrci%yKp)yz@iRU}tq9`09E#@HSFTh3toMhQ#wrTU&_h`4-4Y>yAdrHTU+L zx<*>f3+b{^;len7H&`)L{Q6g{FGUkIRhk86K(JHV!XS!QHs5CjXF^|S?$)IbcQE>l zl^=Fom0rc(*N3Y-hKF`5s1ng(;m}#UDk2|#Z8u`V5Wn%Deff>5By*Za9;=^J8*vB8 zrPkh1+@71rQsbR zQN+Nu70*RZ#@yH^&n9pjYJhG8v~J$kOt|{jV|^6B5z6Kxi}AZ}V{N|1Qce?pTS=;t z`8b**^+e$ZNJEH?&N^zWQkp*Uq&eem17|0&uXO3ys*m;Uf*kFA@UXL>>NwO}y-MSa z>5GF(hLqpRTt|061o__>oTq&{>K@L4@SBBrDpwg}C7KZ@xLj%#e6&3cqZa#}Fj%q?6W%|#(Qh(#GmCz{-NL?>qM75uH*gjo3>Kl^TnzpA9No9v zv&q8rd-@(P^C3u}--|9@HJt0~+E4#+*0n1E-K>J`?=t`qw%~B@C$F0!O*co?uU&0j z^Fsy`uIeJF((BPqUY9@84yBxg>@5V-m+n@vw^%(t>)^rHW@wo_TxSSKo>nn4NDFm7 zNJfzw&XvR&i3w-q<6ZLr9QB1DeV+1p6zk8Jk-d6@(-b`b3@ypRS9C6WN{>MV&M+^| zh_y6m0Y)6d=;}R(LO<}fZyePO*(ki5Q5b7 zBKTBD{aG&#Zg25Ty^SUJ@0&zxJEt-JOXUaML}Z0Mvp#%f|~;)aqXlH;7$geAW;?b2j{B ztMhOUOtGcD9XQRR}7+K*R~c940#_k15* zrA&78K(1e#6l8+kmInf$R`-#qObMjk`qQmuBv5+S2aC9YO3`&WVR7Nm{*cFeplsQX zss2shf%A8~pbDsUS@pUqGGcOtz66yTpScI(66PwSwn&@!ho(V*j*&Wa!Aj|VX);d? z0z;X%@3P=3U=IfQ~5O z18-MleXmk(R1{Pgoe&g|v~JorX*6$H_ay_j<0`1cz{}aoD&xX7lhV(Np^?3fqbwMp}0Z03B3phv8N#f9rTYBQcc}zn^}mlwVjYb zp{|xB;SOGSP$QJpo5et9tsrqs@MRAqG>Ik6%>4blKAeMj-J4>%1z={GD-D&M`#ChZ z5SB~ZrE)#nD)~fbEg!`e$R7#GY?Gc|rN?ubd*M#`Gbj;TJ7Sha!{t=>joon0@{ucM zG>uP?CKTzHO2N(cVEIjyaOImNkwWzwc|a<^-}zIc=21t49N4E&jyYQmI{g`}eDRg$ zCFY14at#&}z0+Pi&;ROW53P^o+FKY_CA9ye5htX}jbR&LS`Ru&lDavod(K&c)ix>g z{C>lJ$m%46hdk|ePLH() zdmNImfWx)QjQg--XA)k{@6mJ&cK7C+-H+4YqBCgg5zWHZoNHQD1W744!48HT+T6)+ z%P(2BInlSNBX2m(Y5vCSkX)wZfwAK!nN(pil^=>`IJpfOz=y8s?}ro^_H9dBaj?Kp zGLnfvuB4GEDdvJ}(7smBETW0o@dK^@mJD6nqp8?r3QO|s-PPG7CM|=`ikVDATsQK} z?m`8+gdJ?25eotVNiznK(N5RmTDB^~wckQW@yy)|nf}h1F&~2=R4wCSiFfE886wnt z1G93wy!x>eh(k`2$f6%%d|N&&^l%XPXVKx~t3tZFDfIsfq*R37s*4dNttmT5?&B#* zeR$}p{nrb7$q1?w#@svn5|Q_F^U&~XY(Hhq9~#&)a0i=LiixNW#F&~rxOFUf z654aoZ~VkVp0z=X9V1bhG2?f?C!KgmVb}!S;fnIsrI236#6yXDVpKO9)Tj<7fu+9v zWKII}38Gv`{f0=nwCDhwP*Aw0sEl{k4oU&-Bny%IO>h6SKJ$R^+|tQ-FZGgY(I!?>rQiVXB%rcuWAwp#2N-_5>x9U_wf0 z3G}}e7D-#*{>0~ZHTyrx-oLYhCW0ii{{dM1|M50v2Wb%mQZGSMXDkR|bFPq;lKN7u z5cq!4EBM46(2v{T4KTkrwx6;G5eRldU! zRt;V8U%{vt)ofxjAyDNjiK+vYjaD(8ww*QI)w`fPDvCSCwO_F%54%)vsMG`nJ~f+uN@!}Q@BfUW|DulPWF9>P+lAN}R?aau; zjY){$TJ4&kPXv`Qw`zW%^xMZ!Dh@lRhJgv^8OV}osmIVt$C_?%z8W54tx8YfoS8IL zM*!?BEmTm<-f7M5Q>bc!Bg7-7av0{ecScHZVgbz;Sgi34ww9JBd4Z_Eju!@N(+t z-@!+r;_}FE-v*+wt!|%tWb!}H??7bZpviL|^3;#vI+h;FX|`sYC$BE`bxgFYG*P(! E2jo~+?EnA( diff --git a/docs/index.html b/docs/index.html index 424a6caf6..359af29cb 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1991,7 +1991,7 @@
-tv.phosblend <0 - 100>
- Enable default phosphor blending level; 0 implies no mixing, and 100 + Enable phosphor blending level; 0 implies no mixing, and 100 is full mixing (not recommended). Note that this doesn't actually enable phosphor mode; that is done for each ROM in the ROM properties. Higher blend values will intensify the phosphor effect. Depending on your @@ -2633,10 +2633,10 @@ - + - + @@ -2651,7 +2651,7 @@
ItemBrief descriptionFor more information,
see CommandLine
TV modeDisable TV effects, or select TV preset-tv.filter
Adjustable slidersSet specific attribute in 'Custom' mode-tv.contrast, tv.hue, etc.
Adjustable slidersSet specific attribute in 'Custom' TV 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
Blend (phosphor)Blend level to use in phosphor mode for all ROMs + (needs to be manually adjusted 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

-

Audio Settings dialog:

+

TODO! Audio Settings dialog:

diff --git a/src/gui/VideoDialog.cxx b/src/gui/VideoDialog.cxx index 198e611d8..f042ec099 100644 --- a/src/gui/VideoDialog.cxx +++ b/src/gui/VideoDialog.cxx @@ -529,6 +529,7 @@ void VideoDialog::setDefaults() // Make sure that mutually-exclusive items are not enabled at the same time handleTVModeChange(NTSCFilter::PRESET_OFF); + handlePhosphorChange(); loadTVAdjustables(NTSCFilter::PRESET_CUSTOM); break; } From 1bb19a05ba2c692a9b737679a6491bd150f0a96b Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Thu, 20 Sep 2018 21:51:10 -0230 Subject: [PATCH 15/30] Restore const for Event class by using 'mutable' mutex. --- src/debugger/gui/KeyboardWidget.cxx | 2 +- src/emucore/AmigaMouse.hxx | 2 +- src/emucore/AtariMouse.hxx | 2 +- src/emucore/AtariVox.cxx | 2 +- src/emucore/AtariVox.hxx | 2 +- src/emucore/Booster.cxx | 2 +- src/emucore/Booster.hxx | 2 +- src/emucore/CompuMate.cxx | 2 +- src/emucore/CompuMate.hxx | 4 ++-- src/emucore/Console.hxx | 2 +- src/emucore/Control.cxx | 2 +- src/emucore/Control.hxx | 4 ++-- src/emucore/Driving.cxx | 2 +- src/emucore/Driving.hxx | 2 +- src/emucore/Event.hxx | 13 +++++++------ src/emucore/EventHandler.hxx | 2 +- src/emucore/Genesis.cxx | 2 +- src/emucore/Genesis.hxx | 2 +- src/emucore/Joystick.cxx | 2 +- src/emucore/Joystick.hxx | 2 +- src/emucore/Keyboard.cxx | 2 +- src/emucore/Keyboard.hxx | 2 +- src/emucore/KidVid.cxx | 2 +- src/emucore/KidVid.hxx | 2 +- src/emucore/MindLink.cxx | 2 +- src/emucore/MindLink.hxx | 2 +- src/emucore/Paddles.cxx | 2 +- src/emucore/Paddles.hxx | 2 +- src/emucore/PointingDevice.cxx | 2 +- src/emucore/PointingDevice.hxx | 2 +- src/emucore/SaveKey.cxx | 4 ++-- src/emucore/SaveKey.hxx | 4 ++-- src/emucore/Switches.cxx | 2 +- src/emucore/Switches.hxx | 4 ++-- src/emucore/TrakBall.hxx | 2 +- 35 files changed, 46 insertions(+), 45 deletions(-) diff --git a/src/debugger/gui/KeyboardWidget.cxx b/src/debugger/gui/KeyboardWidget.cxx index 61ee42692..e0ca3ba05 100644 --- a/src/debugger/gui/KeyboardWidget.cxx +++ b/src/debugger/gui/KeyboardWidget.cxx @@ -54,7 +54,7 @@ KeyboardWidget::KeyboardWidget(GuiObject* boss, const GUI::Font& font, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void KeyboardWidget::loadConfig() { - Event& event = instance().eventHandler().event(); + const Event& event = instance().eventHandler().event(); for(int i = 0; i < 12; ++i) myBox[i]->setState(event.get(myEvent[i])); } diff --git a/src/emucore/AmigaMouse.hxx b/src/emucore/AmigaMouse.hxx index 0e042b294..09615a216 100644 --- a/src/emucore/AmigaMouse.hxx +++ b/src/emucore/AmigaMouse.hxx @@ -30,7 +30,7 @@ class AmigaMouse : public PointingDevice @param event The event object to use for events @param system The system using this controller */ - AmigaMouse(Jack jack, Event& event, const System& system) + AmigaMouse(Jack jack, const Event& event, const System& system) : PointingDevice(jack, event, system, Controller::AmigaMouse, trackballSensitivity) { } virtual ~AmigaMouse() = default; diff --git a/src/emucore/AtariMouse.hxx b/src/emucore/AtariMouse.hxx index 9081855fd..0ad879afc 100644 --- a/src/emucore/AtariMouse.hxx +++ b/src/emucore/AtariMouse.hxx @@ -30,7 +30,7 @@ class AtariMouse : public PointingDevice @param event The event object to use for events @param system The system using this controller */ - AtariMouse(Jack jack, Event& event, const System& system) + AtariMouse(Jack jack, const Event& event, const System& system) : PointingDevice(jack, event, system, Controller::AtariMouse, trackballSensitivity) { } virtual ~AtariMouse() = default; diff --git a/src/emucore/AtariVox.cxx b/src/emucore/AtariVox.cxx index 9e0773c46..5cdf285cb 100644 --- a/src/emucore/AtariVox.cxx +++ b/src/emucore/AtariVox.cxx @@ -20,7 +20,7 @@ #include "AtariVox.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AtariVox::AtariVox(Jack jack, Event& event, const System& system, +AtariVox::AtariVox(Jack jack, const Event& event, const System& system, const SerialPort& port, const string& portname, const string& eepromfile) : SaveKey(jack, event, system, eepromfile, Controller::AtariVox), diff --git a/src/emucore/AtariVox.hxx b/src/emucore/AtariVox.hxx index 8707fb848..cec2c72aa 100644 --- a/src/emucore/AtariVox.hxx +++ b/src/emucore/AtariVox.hxx @@ -45,7 +45,7 @@ class AtariVox : public SaveKey @param portname Name of the port used for reading and writing @param eepromfile The file containing the EEPROM data */ - AtariVox(Jack jack, Event& event, const System& system, + AtariVox(Jack jack, const Event& event, const System& system, const SerialPort& port, const string& portname, const string& eepromfile); virtual ~AtariVox() = default; diff --git a/src/emucore/Booster.cxx b/src/emucore/Booster.cxx index 0a9922c83..e09859ae1 100644 --- a/src/emucore/Booster.cxx +++ b/src/emucore/Booster.cxx @@ -19,7 +19,7 @@ #include "Booster.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -BoosterGrip::BoosterGrip(Jack jack, Event& event, const System& system) +BoosterGrip::BoosterGrip(Jack jack, const Event& event, const System& system) : Controller(jack, event, system, Controller::BoosterGrip), myControlID(-1) { diff --git a/src/emucore/Booster.hxx b/src/emucore/Booster.hxx index c5799bc5a..a89c94fff 100644 --- a/src/emucore/Booster.hxx +++ b/src/emucore/Booster.hxx @@ -38,7 +38,7 @@ class BoosterGrip : public Controller @param event The event object to use for events @param system The system using this controller */ - BoosterGrip(Jack jack, Event& event, const System& system); + BoosterGrip(Jack jack, const Event& event, const System& system); virtual ~BoosterGrip() = default; public: diff --git a/src/emucore/CompuMate.cxx b/src/emucore/CompuMate.cxx index a53315f5a..42c385105 100644 --- a/src/emucore/CompuMate.cxx +++ b/src/emucore/CompuMate.cxx @@ -20,7 +20,7 @@ #include "CompuMate.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -CompuMate::CompuMate(const Console& console, Event& event, +CompuMate::CompuMate(const Console& console, const Event& event, const System& system) : myConsole(console), myColumn(0), diff --git a/src/emucore/CompuMate.hxx b/src/emucore/CompuMate.hxx index 87f1fef13..01d7c95ba 100644 --- a/src/emucore/CompuMate.hxx +++ b/src/emucore/CompuMate.hxx @@ -50,7 +50,7 @@ class CompuMate @param event The event object to use for events @param system The system using this controller */ - CompuMate(const Console& console, Event& event, const System& system); + CompuMate(const Console& console, const Event& event, const System& system); virtual ~CompuMate() = default; // Controllers are deleted outside this class /** @@ -98,7 +98,7 @@ class CompuMate @param event The event object to use for events @param system The system using this controller */ - CMControl(class CompuMate& handler, Controller::Jack jack, Event& event, + CMControl(class CompuMate& handler, Controller::Jack jack, const Event& event, const System& system) : Controller(jack, event, system, Controller::CompuMate), myHandler(handler) { } diff --git a/src/emucore/Console.hxx b/src/emucore/Console.hxx index 4c9fa25ee..a8ab18785 100644 --- a/src/emucore/Console.hxx +++ b/src/emucore/Console.hxx @@ -372,7 +372,7 @@ class Console : public Serializable OSystem& myOSystem; // Reference to the event object to use - Event& myEvent; + const Event& myEvent; // Properties for the game Properties myProperties; diff --git a/src/emucore/Control.cxx b/src/emucore/Control.cxx index a7a91679a..c522b3947 100644 --- a/src/emucore/Control.cxx +++ b/src/emucore/Control.cxx @@ -21,7 +21,7 @@ #include "Control.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Controller::Controller(Jack jack, Event& event, const System& system, +Controller::Controller(Jack jack, const Event& event, const System& system, Type type) : myJack(jack), myEvent(event), diff --git a/src/emucore/Control.hxx b/src/emucore/Control.hxx index 2e0461d32..45a6bdd7c 100644 --- a/src/emucore/Control.hxx +++ b/src/emucore/Control.hxx @@ -108,7 +108,7 @@ class Controller : public Serializable @param system The system using this controller @param type The type for this controller */ - Controller(Jack jack, Event& event, const System& system, + Controller(Jack jack, const Event& event, const System& system, Type type); virtual ~Controller() = default; @@ -275,7 +275,7 @@ class Controller : public Serializable const Jack myJack; /// Reference to the event object this controller uses - Event& myEvent; + const Event& myEvent; /// Pointer to the System object (used for timing purposes) const System& mySystem; diff --git a/src/emucore/Driving.cxx b/src/emucore/Driving.cxx index be24c2f85..e209b723f 100644 --- a/src/emucore/Driving.cxx +++ b/src/emucore/Driving.cxx @@ -21,7 +21,7 @@ #include "Driving.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Driving::Driving(Jack jack, Event& event, const System& system) +Driving::Driving(Jack jack, const Event& event, const System& system) : Controller(jack, event, system, Controller::Driving), myCounter(0), myGrayIndex(0), diff --git a/src/emucore/Driving.hxx b/src/emucore/Driving.hxx index 41b7343c1..0925cef25 100644 --- a/src/emucore/Driving.hxx +++ b/src/emucore/Driving.hxx @@ -37,7 +37,7 @@ class Driving : public Controller @param event The event object to use for events @param system The system using this controller */ - Driving(Jack jack, Event& event, const System& system); + Driving(Jack jack, const Event& event, const System& system); virtual ~Driving() = default; public: diff --git a/src/emucore/Event.hxx b/src/emucore/Event.hxx index 582881a35..75c40a3ea 100644 --- a/src/emucore/Event.hxx +++ b/src/emucore/Event.hxx @@ -24,7 +24,7 @@ #include "StellaKeys.hxx" /** - @author Bradford W. Mott, Stephen Anthony + @author Stephen Anthony, Christian Speckner */ class Event { @@ -89,9 +89,10 @@ class Event : myKeyTable(keyTable), myMutex(mutex), myIsEnabled(true) - {} + { + } - bool operator[](int type) { + bool operator[](int type) const { if (!myIsEnabled) return false; std::lock_guard lock(myMutex); @@ -122,7 +123,7 @@ class Event /** Get the value associated with the event of the specified type. */ - Int32 get(Type type) { + Int32 get(Type type) const { std::lock_guard lock(myMutex); return myValues[type]; @@ -154,7 +155,7 @@ class Event /** Get the keytable associated with this event. */ - KeyTable getKeys() { return KeyTable(myKeyTable, myMutex); } + KeyTable getKeys() const { return KeyTable(myKeyTable, myMutex); } /** Set the value associated with the event of the specified type. @@ -189,7 +190,7 @@ class Event // Array of keyboard key states bool myKeyTable[KBDK_LAST]; - std::mutex myMutex; + mutable std::mutex myMutex; private: // Following constructors and assignment operators not supported diff --git a/src/emucore/EventHandler.hxx b/src/emucore/EventHandler.hxx index e8344bc53..a6d32ce98 100644 --- a/src/emucore/EventHandler.hxx +++ b/src/emucore/EventHandler.hxx @@ -63,7 +63,7 @@ class EventHandler @return The event object */ - Event& event() { return myEvent; } + const Event& event() const { return myEvent; } /** Initialize state of this eventhandler. diff --git a/src/emucore/Genesis.cxx b/src/emucore/Genesis.cxx index 7085228ae..74de86906 100644 --- a/src/emucore/Genesis.cxx +++ b/src/emucore/Genesis.cxx @@ -19,7 +19,7 @@ #include "Genesis.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Genesis::Genesis(Jack jack, Event& event, const System& system) +Genesis::Genesis(Jack jack, const Event& event, const System& system) : Controller(jack, event, system, Controller::Genesis), myControlID(-1) { diff --git a/src/emucore/Genesis.hxx b/src/emucore/Genesis.hxx index 323fb124c..c94783358 100644 --- a/src/emucore/Genesis.hxx +++ b/src/emucore/Genesis.hxx @@ -40,7 +40,7 @@ class Genesis : public Controller @param event The event object to use for events @param system The system using this controller */ - Genesis(Jack jack, Event& event, const System& system); + Genesis(Jack jack, const Event& event, const System& system); virtual ~Genesis() = default; public: diff --git a/src/emucore/Joystick.cxx b/src/emucore/Joystick.cxx index 134228162..ccfaa1faf 100644 --- a/src/emucore/Joystick.cxx +++ b/src/emucore/Joystick.cxx @@ -19,7 +19,7 @@ #include "Joystick.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Joystick::Joystick(Jack jack, Event& event, const System& system) +Joystick::Joystick(Jack jack, const Event& event, const System& system) : Controller(jack, event, system, Controller::Joystick), myControlID(-1) { diff --git a/src/emucore/Joystick.hxx b/src/emucore/Joystick.hxx index f3c1b1129..228ed9109 100644 --- a/src/emucore/Joystick.hxx +++ b/src/emucore/Joystick.hxx @@ -37,7 +37,7 @@ class Joystick : public Controller @param event The event object to use for events @param system The system using this controller */ - Joystick(Jack jack, Event& event, const System& system); + Joystick(Jack jack, const Event& event, const System& system); virtual ~Joystick() = default; public: diff --git a/src/emucore/Keyboard.cxx b/src/emucore/Keyboard.cxx index 301165efe..996053d32 100644 --- a/src/emucore/Keyboard.cxx +++ b/src/emucore/Keyboard.cxx @@ -19,7 +19,7 @@ #include "Keyboard.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Keyboard::Keyboard(Jack jack, Event& event, const System& system) +Keyboard::Keyboard(Jack jack, const Event& event, const System& system) : Controller(jack, event, system, Controller::Keyboard) { if(myJack == Left) diff --git a/src/emucore/Keyboard.hxx b/src/emucore/Keyboard.hxx index 46c10cbc8..aa5ca23f7 100644 --- a/src/emucore/Keyboard.hxx +++ b/src/emucore/Keyboard.hxx @@ -37,7 +37,7 @@ class Keyboard : public Controller @param event The event object to use for events @param system The system using this controller */ - Keyboard(Jack jack, Event& event, const System& system); + Keyboard(Jack jack, const Event& event, const System& system); virtual ~Keyboard() = default; public: diff --git a/src/emucore/KidVid.cxx b/src/emucore/KidVid.cxx index fd5b713de..2d44259c8 100644 --- a/src/emucore/KidVid.cxx +++ b/src/emucore/KidVid.cxx @@ -21,7 +21,7 @@ #include "KidVid.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -KidVid::KidVid(Jack jack, Event& event, const System& system, +KidVid::KidVid(Jack jack, const Event& event, const System& system, const string& rommd5) : Controller(jack, event, system, Controller::KidVid), myEnabled(myJack == Right), diff --git a/src/emucore/KidVid.hxx b/src/emucore/KidVid.hxx index ce26b7373..8365a3d15 100644 --- a/src/emucore/KidVid.hxx +++ b/src/emucore/KidVid.hxx @@ -47,7 +47,7 @@ class KidVid : public Controller @param system The system using this controller @param md5sum The md5 of the ROM using this controller */ - KidVid(Jack jack, Event& event, const System& system, + KidVid(Jack jack, const Event& event, const System& system, const string& md5sum); virtual ~KidVid(); diff --git a/src/emucore/MindLink.cxx b/src/emucore/MindLink.cxx index b715a1aa9..f2b13d9af 100644 --- a/src/emucore/MindLink.cxx +++ b/src/emucore/MindLink.cxx @@ -19,7 +19,7 @@ #include "MindLink.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -MindLink::MindLink(Jack jack, Event& event, const System& system) +MindLink::MindLink(Jack jack, const Event& event, const System& system) : Controller(jack, event, system, Controller::MindLink), myMindlinkPos(0x2800), myMindlinkShift(1), diff --git a/src/emucore/MindLink.hxx b/src/emucore/MindLink.hxx index c43fb20a3..15c7c96ba 100644 --- a/src/emucore/MindLink.hxx +++ b/src/emucore/MindLink.hxx @@ -47,7 +47,7 @@ class MindLink : public Controller @param event The event object to use for events @param system The system using this controller */ - MindLink(Jack jack, Event& event, const System& system); + MindLink(Jack jack, const Event& event, const System& system); virtual ~MindLink() = default; public: diff --git a/src/emucore/Paddles.cxx b/src/emucore/Paddles.cxx index 8511d696d..f6bca2b46 100644 --- a/src/emucore/Paddles.cxx +++ b/src/emucore/Paddles.cxx @@ -19,7 +19,7 @@ #include "Paddles.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Paddles::Paddles(Jack jack, Event& event, const System& system, +Paddles::Paddles(Jack jack, const Event& event, const System& system, bool swappaddle, bool swapaxis, bool swapdir) : Controller(jack, event, system, Controller::Paddles), myMPaddleID(-1), diff --git a/src/emucore/Paddles.hxx b/src/emucore/Paddles.hxx index 7ea3c6cbe..4a206a5d7 100644 --- a/src/emucore/Paddles.hxx +++ b/src/emucore/Paddles.hxx @@ -43,7 +43,7 @@ class Paddles : public Controller causes movement (lesser axis values cause paddle resistance to decrease instead of increase) */ - Paddles(Jack jack, Event& event, const System& system, + Paddles(Jack jack, const Event& event, const System& system, bool swappaddle, bool swapaxis, bool swapdir); virtual ~Paddles() = default; diff --git a/src/emucore/PointingDevice.cxx b/src/emucore/PointingDevice.cxx index 327ae96fa..346e06b5a 100644 --- a/src/emucore/PointingDevice.cxx +++ b/src/emucore/PointingDevice.cxx @@ -23,7 +23,7 @@ #include "PointingDevice.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -PointingDevice::PointingDevice(Jack jack, Event& event, +PointingDevice::PointingDevice(Jack jack, const Event& event, const System& system, Controller::Type type, float sensitivity) : Controller(jack, event, system, type), diff --git a/src/emucore/PointingDevice.hxx b/src/emucore/PointingDevice.hxx index 8cedc26f4..8ff501c11 100644 --- a/src/emucore/PointingDevice.hxx +++ b/src/emucore/PointingDevice.hxx @@ -35,7 +35,7 @@ class PointingDevice : public Controller friend class PointingDeviceWidget; public: - PointingDevice(Jack jack, Event& event, + PointingDevice(Jack jack, const Event& event, const System& system, Controller::Type type, float sensitivity); virtual ~PointingDevice() = default; diff --git a/src/emucore/SaveKey.cxx b/src/emucore/SaveKey.cxx index 4a0359fa5..0e0acde8e 100644 --- a/src/emucore/SaveKey.cxx +++ b/src/emucore/SaveKey.cxx @@ -20,7 +20,7 @@ #include "SaveKey.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SaveKey::SaveKey(Jack jack, Event& event, const System& system, +SaveKey::SaveKey(Jack jack, const Event& event, const System& system, const string& eepromfile, Type type) : Controller(jack, event, system, type) { @@ -30,7 +30,7 @@ SaveKey::SaveKey(Jack jack, Event& event, const System& system, } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -SaveKey::SaveKey(Jack jack, Event& event, const System& system, +SaveKey::SaveKey(Jack jack, const Event& event, const System& system, const string& eepromfile) : SaveKey(jack, event, system, eepromfile, Controller::SaveKey) { diff --git a/src/emucore/SaveKey.hxx b/src/emucore/SaveKey.hxx index 0415e7e9f..ab98c8029 100644 --- a/src/emucore/SaveKey.hxx +++ b/src/emucore/SaveKey.hxx @@ -42,7 +42,7 @@ class SaveKey : public Controller @param system The system using this controller @param eepromfile The file containing the EEPROM data */ - SaveKey(Jack jack, Event& event, const System& system, + SaveKey(Jack jack, const Event& event, const System& system, const string& eepromfile); virtual ~SaveKey(); @@ -51,7 +51,7 @@ class SaveKey : public Controller Delegating constructor currently used by both this class and classes that inherit from SaveKey (currently, AtariVox) */ - SaveKey(Jack jack, Event& event, const System& system, + SaveKey(Jack jack, const Event& event, const System& system, const string& eepromfile, Type type); public: diff --git a/src/emucore/Switches.cxx b/src/emucore/Switches.cxx index f8dabd93b..28f90c47e 100644 --- a/src/emucore/Switches.cxx +++ b/src/emucore/Switches.cxx @@ -21,7 +21,7 @@ #include "Switches.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Switches::Switches(Event& event, const Properties& properties, +Switches::Switches(const Event& event, const Properties& properties, const Settings& settings) : myEvent(event), mySwitches(0xFF), diff --git a/src/emucore/Switches.hxx b/src/emucore/Switches.hxx index 4ba261061..b18a7bde2 100644 --- a/src/emucore/Switches.hxx +++ b/src/emucore/Switches.hxx @@ -46,7 +46,7 @@ class Switches : public Serializable @param props The ROM properties to use for the currently enabled ROM @param settings The settings used by the system */ - Switches(Event& event, const Properties& props, const Settings& settings); + Switches(const Event& event, const Properties& props, const Settings& settings); virtual ~Switches() = default; public: @@ -124,7 +124,7 @@ class Switches : public Serializable private: // Reference to the event object to use - Event& myEvent; + const Event& myEvent; // State of the console switches uInt8 mySwitches; diff --git a/src/emucore/TrakBall.hxx b/src/emucore/TrakBall.hxx index ea7123358..038b9f2c3 100644 --- a/src/emucore/TrakBall.hxx +++ b/src/emucore/TrakBall.hxx @@ -30,7 +30,7 @@ class TrakBall : public PointingDevice @param event The event object to use for events @param system The system using this controller */ - TrakBall(Jack jack, Event& event, const System& system) + TrakBall(Jack jack, const Event& event, const System& system) : PointingDevice(jack, event, system, Controller::TrakBall, trackballSensitivity) { } virtual ~TrakBall() = default; From f8f3805dae708482be0ac8af34ef7c7099cb3ddd Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Thu, 20 Sep 2018 22:00:32 -0230 Subject: [PATCH 16/30] Fix minor warning from cppcheck. --- src/emucore/CartCTY.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emucore/CartCTY.cxx b/src/emucore/CartCTY.cxx index 5fa2c5654..9dd553b92 100644 --- a/src/emucore/CartCTY.cxx +++ b/src/emucore/CartCTY.cxx @@ -48,7 +48,7 @@ CartridgeCTY::CartridgeCTY(const BytePtr& image, uInt32 size, // Point to the first tune myFrequencyImage = myTuneData; - for(uInt8 i = 0; i < 3; i++) + for(uInt8 i = 0; i < 3; ++i) myMusicCounters[i] = myMusicFrequencies[i] = 0; } From 56aa439dc7e8055434ccc97f340d218347071cd8 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sat, 22 Sep 2018 20:39:58 -0230 Subject: [PATCH 17/30] Remove deleted file from OSX build. --- src/macosx/stella.xcodeproj/project.pbxproj | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/macosx/stella.xcodeproj/project.pbxproj b/src/macosx/stella.xcodeproj/project.pbxproj index 8615bdffa..ecce58c0c 100644 --- a/src/macosx/stella.xcodeproj/project.pbxproj +++ b/src/macosx/stella.xcodeproj/project.pbxproj @@ -331,7 +331,6 @@ DC62E64A1960E87B007AEF05 /* SaveKeyWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC62E6461960E87B007AEF05 /* SaveKeyWidget.hxx */; }; DC67270B1556F4860023653B /* CartCTY.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC6727081556F4860023653B /* CartCTY.cxx */; }; DC67270C1556F4860023653B /* CartCTY.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC6727091556F4860023653B /* CartCTY.hxx */; }; - DC67270D1556F4860023653B /* CartCTYTunes.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC67270A1556F4860023653B /* CartCTYTunes.hxx */; }; DC676A411729A0B000E4E73D /* Cart3EWidget.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC676A251729A0B000E4E73D /* Cart3EWidget.cxx */; }; DC676A421729A0B000E4E73D /* Cart3EWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DC676A261729A0B000E4E73D /* Cart3EWidget.hxx */; }; DC676A431729A0B000E4E73D /* Cart4A50Widget.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DC676A271729A0B000E4E73D /* Cart4A50Widget.cxx */; }; @@ -1029,7 +1028,6 @@ DC62E6461960E87B007AEF05 /* SaveKeyWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = SaveKeyWidget.hxx; sourceTree = ""; }; DC6727081556F4860023653B /* CartCTY.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CartCTY.cxx; sourceTree = ""; }; DC6727091556F4860023653B /* CartCTY.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartCTY.hxx; sourceTree = ""; }; - DC67270A1556F4860023653B /* CartCTYTunes.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = CartCTYTunes.hxx; sourceTree = ""; }; DC676A251729A0B000E4E73D /* Cart3EWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cart3EWidget.cxx; sourceTree = ""; }; DC676A261729A0B000E4E73D /* Cart3EWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = Cart3EWidget.hxx; sourceTree = ""; }; DC676A271729A0B000E4E73D /* Cart4A50Widget.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Cart4A50Widget.cxx; sourceTree = ""; }; @@ -1747,7 +1745,6 @@ DC8C1BA814B25DE7006440EE /* CartCM.hxx */, DC6727081556F4860023653B /* CartCTY.cxx */, DC6727091556F4860023653B /* CartCTY.hxx */, - DC67270A1556F4860023653B /* CartCTYTunes.hxx */, 2DE2DF1C0627AE07006BEC99 /* CartCV.cxx */, 2DE2DF1D0627AE07006BEC99 /* CartCV.hxx */, DCACBAD21C54298300703A9B /* CartCVPlus.cxx */, @@ -2462,7 +2459,6 @@ DC5EE7C314F7C165001C628C /* NTSCFilter.hxx in Headers */, DC67270C1556F4860023653B /* CartCTY.hxx in Headers */, DC1B2EC41E50036100F62837 /* AmigaMouse.hxx in Headers */, - DC67270D1556F4860023653B /* CartCTYTunes.hxx in Headers */, DCE395DB16CB0B2B008DB1E5 /* FSNodePOSIX.hxx in Headers */, DCE395EF16CB0B5F008DB1E5 /* FSNodeFactory.hxx in Headers */, DCE395F116CB0B5F008DB1E5 /* FSNodeZIP.hxx in Headers */, From cbd30fad027d72c6fd0a3c33455164b6ec0f38e0 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sat, 22 Sep 2018 22:58:57 -0230 Subject: [PATCH 18/30] Fix final clang warnings in Thumbulator. It ended up being much easier than I realized. --- src/emucore/Thumbulator.hxx | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/emucore/Thumbulator.hxx b/src/emucore/Thumbulator.hxx index 939052e92..36d58db95 100644 --- a/src/emucore/Thumbulator.hxx +++ b/src/emucore/Thumbulator.hxx @@ -27,13 +27,6 @@ class Cartridge; -// FIXME - This code has many instances of shifting into signed integers -// Perhaps the int's should be changed to uInt32 -#ifdef __clang__ - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wshift-sign-overflow" -#endif - #include "bspf.hxx" #include "Console.hxx" @@ -43,10 +36,10 @@ class Cartridge; #define ROMSIZE (ROMADDMASK+1) #define RAMSIZE (RAMADDMASK+1) -#define CPSR_N (1<<31) -#define CPSR_Z (1<<30) -#define CPSR_C (1<<29) -#define CPSR_V (1<<28) +#define CPSR_N (1u<<31) +#define CPSR_Z (1u<<30) +#define CPSR_C (1u<<29) +#define CPSR_V (1u<<28) class Thumbulator { From bf8b0b3a889739d4aa4f6e6a25dfe1e09112770c Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 21 Oct 2018 10:11:57 -0230 Subject: [PATCH 19/30] Updated ROM properties database for several ROMs - Major update is adding 'Chetiry' 60K ROMs info. --- src/emucore/DefProps.hxx | 28 ++++++++-------- src/emucore/stella.pro | 70 ++++++++++++++++++++++++++-------------- 2 files changed, 60 insertions(+), 38 deletions(-) diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index c4f809e0b..59d862819 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -25,7 +25,7 @@ regenerated and the application recompiled. */ -#define DEF_PROPS_SIZE 3319 +#define DEF_PROPS_SIZE 3321 static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -229,7 +229,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "" }, + { "0f8043715d66a4bbed394ef801d99862", "Quelle", "684.733 9", "Robin Hood (1983) (Quelle) (PAL)", "AKA Save Our Ship", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "" }, @@ -405,7 +405,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1e0ef01e330e5b91387f75f700ccaf8f", "Quelle - Otto Versand", "686.561 2 - 781627", "Mein Weg (1983) (Quelle) (PAL)", "AKA Challenge", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -569,7 +569,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "" }, + { "2a1b454a5c3832b0240111e7fd73de8a", "Tigervision, Bill Hogue", "7-011", "Miner 2049er Volume II (1983) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "26", "", "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -757,7 +757,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "37fd7fa52d358f66984948999f1213c5", "Rainbow Vision - Suntek", "SS-004", "Pyramid War (Rainbow Vision) (PAL) [a2]", "AKA Chopper Command", "", "", "", "", "", "", "", "", "", "", "", "", "PAL", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1180,7 +1180,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "" }, + { "598a4e6e12f8238b7e7555f5a7777b46", "Tigervision", "7-008", "Miner 2049er (1982) (Tigervision) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "28", "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1586,7 +1586,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "" }, + { "76ee917d817ef9a654bc4783e0273ac4", "Otto Versand", "311377", "Fox & Goat (Double-Game Package) (1983) (Otto Versand) (PAL)", "AKA Nuts", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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", "", "", "" }, @@ -1723,7 +1723,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "80e1410ec98089e0733cc09e584dba4b", "Dynamics", "DY-293005", "Jumping Jack (1983) (Dynamics) (PAL)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "", "", "40", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1994,6 +1994,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9784290f422e7aeeab4d542318bd9a1f", "AtariAge, Chris Walton", "1.0 (Release)", "Chetiry (2011) (AtariAge) (60k)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "50" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2072,7 +2073,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "" }, + { "9ed0f2aa226c34d4f55f661442e8f22a", "", "", "Nuts (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2467,6 +2468,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c11e8473c652619ac6166900150ce215", "AtariAge, Chris Walton", "1.0 (Release)", "Chetiry (2011) (AtariAge) (60k) (PAL)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "50" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2727,12 +2729,12 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "" }, + { "d3bb42228a6cd452c111c1932503cc03", "UA Limited", "", "Funky Fish (1983) (UA Limited) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "28", "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", "", "", "", "" }, + { "d4806775693fcaaa24cf00fc00edcdf3", "Atari - Bobco, Robert C. Polaro", "CX26140, CX26140P", "Desert Falcon (1987) (Atari) (PAL)", "AKA Nile Flyer, Sphinx", "", "", "", "", "", "", "", "", "", "", "", "", "PAL", "20", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2870,7 +2872,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "" }, + { "de7a64108074098ba333cc0c70eef18a", "", "", "Nuts (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2952,7 +2954,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "" }, + { "e3c35eac234537396a865d23bafb1c84", "TechnoVision - Video Technology", "TVS1001", "Nuts (1983) (TechnoVision) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, diff --git a/src/emucore/stella.pro b/src/emucore/stella.pro index 87c9e4bed..8130a8fcb 100644 --- a/src/emucore/stella.pro +++ b/src/emucore/stella.pro @@ -1242,7 +1242,6 @@ "Cartridge.ModelNo" "684.733 9" "Cartridge.Name" "Robin Hood (1983) (Quelle) (PAL)" "Cartridge.Note" "AKA Save Our Ship" -"Display.YStart" "45" "" "Cartridge.MD5" "0f95264089c99fc2a839a19872552004" @@ -2315,6 +2314,7 @@ "Cartridge.ModelNo" "686.561 2 - 781627" "Cartridge.Name" "Mein Weg (1983) (Quelle) (PAL)" "Cartridge.Note" "AKA Challenge" +"Display.Phosphor" "YES" "" "Cartridge.MD5" "1e1290ea102e12d7ac52820961457e2b" @@ -2789,6 +2789,14 @@ "Display.Phosphor" "YES" "" +"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.StartBank" "0" +"" + "Cartridge.MD5" "24385ba7f5109fbe76aadc0a375de573" "Cartridge.Manufacturer" "CCE" "Cartridge.Name" "Xevious (CCE)" @@ -3340,6 +3348,7 @@ "Cartridge.Manufacturer" "Tigervision, Bill Hogue" "Cartridge.ModelNo" "7-011" "Cartridge.Name" "Miner 2049er Volume II (1983) (Tigervision)" +"Display.YStart" "26" "Display.Phosphor" "YES" "" @@ -4508,6 +4517,7 @@ "Cartridge.ModelNo" "SS-004" "Cartridge.Name" "Pyramid War (Rainbow Vision) (PAL) [a2]" "Cartridge.Note" "AKA Chopper Command" +"Display.Format" "PAL" "" "Cartridge.MD5" "384db97670817103dd8c0bbdef132445" @@ -7100,6 +7110,7 @@ "Cartridge.ModelNo" "7-008" "Cartridge.Name" "Miner 2049er (1982) (Tigervision) (Prototype)" "Cartridge.Rarity" "Prototype" +"Display.YStart" "28" "Display.Height" "214" "" @@ -9611,8 +9622,6 @@ "Cartridge.ModelNo" "311377" "Cartridge.Name" "Fox & Goat (Double-Game Package) (1983) (Otto Versand) (PAL)" "Cartridge.Note" "AKA Nuts" -"Display.YStart" "45" -"Display.Height" "256" "" "Cartridge.MD5" "76f53abbbf39a0063f24036d6ee0968a" @@ -10455,6 +10464,7 @@ "Cartridge.ModelNo" "DY-293005" "Cartridge.Name" "Jumping Jack (1983) (Dynamics) (PAL)" "Cartridge.Note" "AKA Bobby Is Going Home" +"Display.YStart" "40" "" "Cartridge.MD5" "80e52315919bd8a8b82a407ccd9bb13f" @@ -11855,6 +11865,13 @@ "Cartridge.Rarity" "Hack" "" +"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" +"" + "Cartridge.MD5" "93c52141d3c4e1b5574d072f1afde6cd" "Cartridge.Manufacturer" "Imagic, Mark Klein" "Cartridge.ModelNo" "720112-1A, 03213" @@ -12106,6 +12123,15 @@ "Cartridge.Name" "Dig Dug (1983) (Atari) (PAL)" "" +"Cartridge.MD5" "9784290f422e7aeeab4d542318bd9a1f" +"Cartridge.Manufacturer" "AtariAge, Chris Walton" +"Cartridge.ModelNo" "1.0 (Release)" +"Cartridge.Name" "Chetiry (2011) (AtariAge) (60k)" +"Cartridge.Rarity" "Homebrew" +"Display.Phosphor" "YES" +"Display.PPBlend" "50" +"" + "Cartridge.MD5" "97842fe847e8eb71263d6f92f7e122bd" "Cartridge.Manufacturer" "Imagic, Wilfredo Aguilar, Michael Becker, Dennis Koble" "Cartridge.ModelNo" "720113-1A, 03206" @@ -12574,7 +12600,6 @@ "Cartridge.MD5" "9ed0f2aa226c34d4f55f661442e8f22a" "Cartridge.Name" "Nuts (Unknown) (PAL)" -"Display.YStart" "45" "" "Cartridge.MD5" "9eeb40f04a27efb1c68ba1d25e606607" @@ -14675,6 +14700,11 @@ "Cartridge.Rarity" "Prototype" "" +"Cartridge.MD5" "bc24440b59092559a1ec26055fd1270e" +"Cartridge.Name" "Private Eye (1984) (Activision) [a]" +"Cartridge.StartBank" "0" +"" + "Cartridge.MD5" "bc3057a35319aae3a5cd87a203736abe" "Cartridge.Manufacturer" "CCE" "Cartridge.ModelNo" "C-845" @@ -14992,6 +15022,15 @@ "Cartridge.Note" "2600 Screen Search Console" "" +"Cartridge.MD5" "c11e8473c652619ac6166900150ce215" +"Cartridge.Manufacturer" "AtariAge, Chris Walton" +"Cartridge.ModelNo" "1.0 (Release)" +"Cartridge.Name" "Chetiry (2011) (AtariAge) (60k) (PAL)" +"Cartridge.Rarity" "Homebrew" +"Display.Phosphor" "YES" +"Display.PPBlend" "50" +"" + "Cartridge.MD5" "c126656df6badfa519cc63e681fb3596" "Cartridge.Manufacturer" "Ron Corcoran" "Cartridge.Name" "Space Invaders (2002) (Ron Corcoran) (Hack)" @@ -16633,6 +16672,7 @@ "Cartridge.Manufacturer" "UA Limited" "Cartridge.Name" "Funky Fish (1983) (UA Limited) (Prototype)" "Cartridge.Rarity" "Prototype" +"Display.YStart" "28" "Display.Height" "220" "Display.Phosphor" "YES" "" @@ -16678,6 +16718,7 @@ "Cartridge.Name" "Desert Falcon (1987) (Atari) (PAL)" "Cartridge.Note" "AKA Nile Flyer, Sphinx" "Display.Format" "PAL" +"Display.YStart" "20" "" "Cartridge.MD5" "d483f65468d9a265661917bae1a54f3e" @@ -17494,7 +17535,6 @@ "Cartridge.MD5" "de7a64108074098ba333cc0c70eef18a" "Cartridge.Name" "Nuts (Unknown)" -"Display.YStart" "37" "" "Cartridge.MD5" "de7bca4e569ad9d3fd08ff1395e53d2d" @@ -17998,7 +18038,6 @@ "Cartridge.Manufacturer" "TechnoVision - Video Technology" "Cartridge.ModelNo" "TVS1001" "Cartridge.Name" "Nuts (1983) (TechnoVision) (PAL)" -"Display.YStart" "45" "" "Cartridge.MD5" "e3ed4ba3361756970f076e46e9cad1d2" @@ -19899,11 +19938,6 @@ "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" @@ -20437,17 +20471,3 @@ "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.StartBank" "0" -"" - -"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 2b3e2dc38504101022aa3b67cfdd466ee5718151 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sat, 10 Nov 2018 17:30:44 -0330 Subject: [PATCH 20/30] Specifically initialize and quit each SDL subsystem. - Now video/timer and joystick subsystems are opened and closed in the proper SDL2 way - SDL_Quit() is also done at the very end, to clean up any remaining SDL state - Hopefully this fixes the issues with RPi not exiting cleanly. --- src/common/EventHandlerSDL2.cxx | 18 +++++++++++++++++- src/common/EventHandlerSDL2.hxx | 2 +- src/common/FrameBufferSDL2.cxx | 3 ++- src/common/MediaFactory.hxx | 5 +++++ src/common/main.cxx | 2 ++ 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/common/EventHandlerSDL2.cxx b/src/common/EventHandlerSDL2.cxx index dc9382bc3..52de79dba 100644 --- a/src/common/EventHandlerSDL2.cxx +++ b/src/common/EventHandlerSDL2.cxx @@ -22,6 +22,22 @@ EventHandlerSDL2::EventHandlerSDL2(OSystem& osystem) : EventHandler(osystem) { +#ifdef JOYSTICK_SUPPORT + if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) < 0) + { + ostringstream buf; + buf << "ERROR: Couldn't initialize SDL joystick support: " << SDL_GetError() << endl; + osystem.logMessage(buf.str(), 0); + } + osystem.logMessage("EventHandlerSDL2::EventHandlerSDL2 SDL_INIT_JOYSTICK", 2); +#endif +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +EventHandlerSDL2::~EventHandlerSDL2() +{ + if(SDL_WasInit(SDL_INIT_JOYSTICK)) + SDL_QuitSubSystem(SDL_INIT_JOYSTICK); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -215,6 +231,6 @@ EventHandlerSDL2::JoystickSDL2::JoystickSDL2(int idx) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EventHandlerSDL2::JoystickSDL2::~JoystickSDL2() { - if(myStick) + if(SDL_WasInit(SDL_INIT_JOYSTICK) && myStick) SDL_JoystickClose(myStick); } diff --git a/src/common/EventHandlerSDL2.hxx b/src/common/EventHandlerSDL2.hxx index b771a220d..2d4ad2b46 100644 --- a/src/common/EventHandlerSDL2.hxx +++ b/src/common/EventHandlerSDL2.hxx @@ -36,7 +36,7 @@ class EventHandlerSDL2 : public EventHandler Create a new SDL2 event handler object */ explicit EventHandlerSDL2(OSystem& osystem); - virtual ~EventHandlerSDL2() = default; + virtual ~EventHandlerSDL2(); private: /** diff --git a/src/common/FrameBufferSDL2.cxx b/src/common/FrameBufferSDL2.cxx index e12fb7c62..1ce3288fb 100644 --- a/src/common/FrameBufferSDL2.cxx +++ b/src/common/FrameBufferSDL2.cxx @@ -33,7 +33,7 @@ FrameBufferSDL2::FrameBufferSDL2(OSystem& osystem) myRenderer(nullptr) { // Initialize SDL2 context - if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_JOYSTICK) < 0) + if(SDL_InitSubSystem(SDL_INIT_VIDEO | SDL_INIT_TIMER) < 0) { ostringstream buf; buf << "ERROR: Couldn't initialize SDL: " << SDL_GetError() << endl; @@ -72,6 +72,7 @@ FrameBufferSDL2::~FrameBufferSDL2() SDL_DestroyWindow(myWindow); myWindow = nullptr; } + SDL_QuitSubSystem(SDL_INIT_VIDEO | SDL_INIT_TIMER); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/common/MediaFactory.hxx b/src/common/MediaFactory.hxx index 708413967..d7b8ed423 100644 --- a/src/common/MediaFactory.hxx +++ b/src/common/MediaFactory.hxx @@ -124,6 +124,11 @@ class MediaFactory return make_unique(osystem); } + static void cleanUp() + { + SDL_Quit(); + } + private: // Following constructors and assignment operators not supported MediaFactory() = delete; diff --git a/src/common/main.cxx b/src/common/main.cxx index 503f46a20..50414f774 100644 --- a/src/common/main.cxx +++ b/src/common/main.cxx @@ -57,6 +57,8 @@ int main(int argc, char* argv[]) auto Cleanup = [&theOSystem]() { theOSystem->logMessage("Cleanup from main", 2); theOSystem->saveConfig(); + theOSystem.reset(); // Force delete of object + MediaFactory::cleanUp(); // Finish any remaining cleanup return 0; }; From e3873cce73507e73a2a7d3a27784a447f556d266 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 13 Nov 2018 20:43:12 -0330 Subject: [PATCH 21/30] Moved final remaining bits of SDL-specific code out of src/emucore. --- src/common/MediaFactory.hxx | 11 +++++++++++ src/common/Version.hxx | 4 ++-- src/emucore/OSystem.cxx | 5 +---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/common/MediaFactory.hxx b/src/common/MediaFactory.hxx index d7b8ed423..a370b9a41 100644 --- a/src/common/MediaFactory.hxx +++ b/src/common/MediaFactory.hxx @@ -19,6 +19,7 @@ #define MEDIA_FACTORY_HXX #include "bspf.hxx" +#include "SDL_lib.hxx" #include "OSystem.hxx" #include "Settings.hxx" @@ -129,6 +130,16 @@ class MediaFactory SDL_Quit(); } + static string backendName() + { + ostringstream buf; + SDL_version ver; + SDL_GetVersion(&ver); + buf << "SDL " << int(ver.major) << "." << int(ver.minor) << "." << int(ver.patch); + + return buf.str(); + } + private: // Following constructors and assignment operators not supported MediaFactory() = delete; diff --git a/src/common/Version.hxx b/src/common/Version.hxx index de383d198..284922147 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_beta1" -#define STELLA_BUILD "4514" +#define STELLA_VERSION "6.0_beta2" +#define STELLA_BUILD "4603" #endif diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index 273264aca..61b2dafd8 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -87,11 +87,8 @@ OSystem::OSystem() // Get build info ostringstream info; - SDL_version ver; - SDL_GetVersion(&ver); - info << "Build " << STELLA_BUILD << ", using SDL " << int(ver.major) - << "." << int(ver.minor) << "."<< int(ver.patch) + info << "Build " << STELLA_BUILD << ", using " << MediaFactory::backendName() << " [" << BSPF::ARCH << "]"; myBuildInfo = info.str(); From ae2bb58f0bcbde2d7fba9da4faac850c140030c1 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Fri, 16 Nov 2018 11:14:10 -0330 Subject: [PATCH 22/30] Added ROM properties for various trakball hacks, thanks to alex_79. --- src/emucore/DefProps.hxx | 104 +++++- src/emucore/stella.pro | 764 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 867 insertions(+), 1 deletion(-) diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index 59d862819..0f23b4ad6 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -25,7 +25,7 @@ regenerated and the application recompiled. */ -#define DEF_PROPS_SIZE 3321 +#define DEF_PROPS_SIZE 3423 static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "000509d1ed2b8d30a9d94be1b3b5febb", "Greg Zumwalt", "", "Jungle Jane (2003) (Greg Zumwalt) (Hack)", "Hack of Pitfall!", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -96,6 +96,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "05c765a63e61882abd1c2d627b652225", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (NTSC) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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", "" }, @@ -103,6 +104,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "05f11fb2e45c4e47424d3cb25414d278", "", "", "Boring (NTSC) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "060c865c782debb047e6fd101c8923fc", "Atari", "CX26163P", "Freeway Rabbit (32 in 1) (1988) (Atari) (PAL) (4K)", "AKA Freeway", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "0614ed51acd027d531e7c85c4f435292", "", "", "Narnia (Glenn Saunders) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0619e1c3286bbfbace040b8c3ec5add2", "Omegamatrix", "", "Millipede (Atari Trak-Ball) v6.5 (Omegamatrix)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -137,6 +139,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0891252ee4e307689febccf3cfd8a8ab", "Thomas Jentzsch", "", "Centipede - Atari Trak-Ball Hack v1.4 (PAL60) (Half-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -144,6 +147,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "" }, + { "08ea2fdaa22e5802c839ee7dfb0483dc", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (PAL60) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "PAL60", "", "", "", "" }, { "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", "" }, @@ -195,8 +199,10 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0cec9e46a25d338bf595a29aa2606516", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (PAL60) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "0cfdd2f3b243cac21f38a0f09f54bead", "", "", "Overhead Adventure Demo 4 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "0d07d2c1be1a5eaaea235a533bcda781", "", "", "Scrolling Playfield 1 (Junkosoft) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "0d08558f34a47e4eaa39d01c8efb81f0", "Thomas Jentzsch", "", "Missile Control - Atari Mouse Hack v1.15 (NTSC) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -213,6 +219,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "" }, + { "0e23d0ed4c33b2011ab4cc93a7619683", "Thomas Jentzsch", "", "Centipede - Amiga Mouse Hack v1.4 (PAL60) (Half-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "" }, @@ -221,6 +228,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "" }, + { "0effef4a341f8eebab65621c60c48787", "Thomas Jentzsch", "", "Reactor - Atari Trak-Ball Hack v1.3 (PAL) (Full-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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", "" }, @@ -263,6 +271,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "12080205f669b8e7783b976f8cf3d8bb", "Omegamatrix", "", "Star Wars Arcade (Amiga Mouse) v4 (Omegamatrix)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -333,6 +342,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "171ebf135b13ba907f462c10d88a2c25", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (PAL60) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "" }, @@ -353,6 +363,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "18760f1f9ca5e18610115cf7b815b824", "", "", "Star Fire (23-10-2002) (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "18a970bea7ac4d29707c8d5cd559d03a", "", "", "Bridge (208 in 1) (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "18b28b386abdadb3a700ac8fb68e639a", "Manuel Polik", "", "Gunfight 2600 (MP) (PAL)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "18be8981b8201638f3ed8ae92bb4c215", "Thomas Jentzsch", "", "Missile Control - Amiga Mouse Hack v1.15 (PAL60) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -364,6 +375,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1986f864e32e3e8d198b5becf3022257", "Thomas Jentzsch", "", "Reactor - Atari Trak-Ball Hack v1.3 (PAL) (Half-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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", "", "", "" }, @@ -387,8 +399,10 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "" }, + { "1bfae770e089fa81412d04eb299f4c3f", "Thomas Jentzsch", "", "Marble Craze - Atari Mouse Hack v1.0 (NTSC) (TJ)", "Uses Atari Mouse Controllers", "", "", "", "", "", "", "", "", "ATARIMOUSE", "ATARIMOUSE", "", "", "", "", "", "", "" }, { "1c3f3133a3e5b023c77ecba94fd65995", "CCE", "C-830", "Planet Patrol (1983) (CCE) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "1c5796d277d9e4df3f6648f7012884c4", "Quelle", "715.853 5", "Wachroboter jagt Jupy (Quelle) (PAL)", "AKA Keystone Kapers", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "1c666ba5aac19b81671357e76062989b", "Nukey Shay, Omegamatrix", "", "Double Dragon (Genesis) (PAL60) V2", "Genesis controller", "", "", "", "", "", "", "", "", "GENESIS", "GENESIS", "", "", "PAL60", "", "", "", "" }, { "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", "" }, @@ -441,6 +455,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2058cf3fefad4d2bc03ed817cedddcd4", "Thomas Jentzsch", "", "Reactor - Amiga Mouse Hack v1.3 (PAL60) (Full-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -455,6 +470,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "217b1452881264ac75126bf77b8d0db8", "Thomas Jentzsch", "", "Centipede - Atari Trak-Ball Hack v1.4 (NTSC) (Full-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -523,6 +539,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "26bc2bdf447a17376aea7ef187ff6e44", "", "", "Amanda Invaders (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "26f4f8b098609164effef7809e0121e1", "", "", "Oystron (V2.7) (Piero Cavina) (PD)", "", "New Release", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "270229c6d5578446e6a588492e4e5910", "", "", "Space Invaders 2 (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2712e91f6f1dc55e90e2b14b27c042ac", "Omegamatrix", "", "SpaceMaster X-7 (Amiga Mouse) (PAL60) (Omegamatrix)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "" }, @@ -533,6 +550,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "" }, + { "27baecd618e7e53dc11f2a9c559f529d", "Omegamatrix", "", "Star Wars Arcade (Atari Trak-Ball) v4 (Omegamatrix)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -611,7 +629,9 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2d38a96f92952b301eefdf25a5e6976b", "Omegamatrix", "", "Star Wars Arcade (Atari Mouse) (Y_Inverted) v4 (Omegamatrix)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "2d405da70af82b20a6b3ecc3d1d2c4ec", "Genus", "", "Pitfall (Genus)", "AKA Pitfall!", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "2d6388a8389f1d59108fd169c3356d79", "Thomas Jentzsch", "", "Reactor - Atari Mouse Hack v1.3 (NTSC) (Half-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "2d6741cda3000230f6bbdd5e31941c01", "CBS Electronics - VSS", "80110", "Targ (1983) (CBS Electronics) (Prototype)", "", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "2d69a5f23784f1c2230143292a073b53", "", "", "Qb (Fixed background animation) (2001) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "2d6da0eb85eabc93270e5bb8a466ca51", "", "", "Sprite Demo 7 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -661,6 +681,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "31235a27b065c2863048fa84db330dc6", "Thomas Jentzsch", "", "Missile Control - Amiga Mouse Hack v1.15 (PAL) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "313243fc41e49ef6bd3aa9ebc0d372dd", "", "", "Fast Food (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "31512cdfadfd82bfb6f196e3b0fd83cd", "Tigervision", "7-004", "River Patrol (1984) (Tigervision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "3177cc5c04c1a4080a927dfa4099482b", "Atari - Imagineering, Alex DeMeo", "CX26135", "RealSports Boxing (1987) (Atari)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -699,6 +720,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "336ea20d38f98926919d4b4651d1a03f", "Omegamatrix", "", "Omega Race (Genesis) V2", "Genesis controller", "", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, { "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", "" }, @@ -776,6 +798,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "" }, + { "3974e2d1f614fbd3a092533ecae2e84d", "Alessandro Ciceri", "", "MagiCard+ (alex_79) WIP_20150118", "MagiCard hack", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, { "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", "" }, @@ -786,6 +809,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "" }, + { "3a521b7e29123b2d38e34e3ff8dc255c", "Thomas Jentzsch", "", "Centipede - Atari Mouse Hack v1.4 (NTSC) (Full-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -872,6 +896,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4026ad38ba5ce486e88383dc27d7a46f", "Nukey Shay, Omegamatrix", "", "Double Dragon (Genesis) V2", "Genesis controller", "", "", "", "", "", "", "", "", "GENESIS", "GENESIS", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -895,6 +920,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "41b554c6970b18670acc7b6baef8ed2e", "Thomas Jentzsch", "", "Reactor - Amiga Mouse Hack v1.3 (PAL) (Half-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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", "" }, @@ -955,10 +981,13 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "46dc526773808c8b9bb2111f24e5704c", "Omegamatrix", "", "SpaceMaster X-7 (Atari Mouse) (Omegamatrix)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "471f7bdc933e8db0e44aa3dde2dd92af", "Omegamatrix", "", "Millipede (Atari Mouse) v6.5 (Omegamatrix)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "47464694e9cce07fdbfd096605bf39d4", "Activision, Dan Kitchen", "EAK-050-04", "Double Dragon (1989) (Activision) (PAL) [a]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "47585c047802dd9af888b998fb921f32", "Omegamatrix", "", "Star Wars Arcade (Atari Trak-Ball) v4 (PAL60) (Omegamatrix)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "" }, @@ -972,9 +1001,11 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4834b7b28ea862227ac7e40053fb52a5", "Nukey Shay", "", "Montezuma's Revenge (Genesis) (F6_Conversion)", "Genesis controller", "", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "487193a7b7fe57a1bbc2f431f628bd5f", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (NTSC) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -990,6 +1021,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "" }, + { "497c811026367c08fd838c9c59e5041d", "Omegamatrix", "", "SpaceMaster X-7 (Atari Trak-Ball) (Omegamatrix)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1013,6 +1045,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4b379b885e2694f992c6cc932f18327f", "Omegamatrix", "", "SpaceMaster X-7 (Atari Mouse) (PAL60) (Omegamatrix)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "" }, @@ -1020,6 +1053,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "4bdf54a454470ba015a217a8f5e61320", "Omegamatrix", "", "Millipede (Amiga Mouse) v6.5 (Omegamatrix)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1099,6 +1133,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "522b27a8afeb951b5a5a667f8d1a46a1", "Omegamatrix", "", "Millipede (Amiga Mouse) v6.5 (Omegamatrix)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "" }, @@ -1115,6 +1150,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "533661e9bccd8a9f80ce3765f282c92f", "Omegamatrix", "", "Star Wars Arcade (Atari Trak-Ball) (Y Inverted) v4 (Omegamatrix)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1125,6 +1161,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "53e03df47e76329b701641f8bdc206f5", "Thomas Jentzsch", "", "Centipede - Atari Trak-Ball Hack v1.4 (PAL) (Half-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1155,6 +1192,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "56f72247eb9ebfd33bfd0cca23ab7ef4", "Omegamatrix", "", "Star Wars Arcade (Amiga Mouse) v4 (PAL60) (Omegamatrix)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "" }, @@ -1191,6 +1229,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5a4205aeedd3b0588f973f38bbd9dfd4", "Thomas Jentzsch", "", "Centipede - Amiga Mouse Hack v1.4 (PAL) (Full-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1216,6 +1255,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "5bbb75b49b2bccef9c91ff84bb249c80", "Thomas Jentzsch", "", "Missile Control - Atari Trak-Ball Hack v1.15 (NTSC) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1302,6 +1342,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "6238ac888871fec301d1b9fc4fc613c9", "Thomas Jentzsch", "", "Marble Craze - Atari Mouse Hack v1.0 (PAL) (TJ)", "Uses Atari Mouse Controllers", "", "", "", "", "", "", "", "", "ATARIMOUSE", "ATARIMOUSE", "", "", "", "", "", "", "" }, { "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", "" }, @@ -1386,9 +1427,11 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "67f90d74fd0b72fdc6d9b92436780ea9", "Omegamatrix", "", "SpaceMaster X-7 (Atari Trak-Ball) (PAL60) (Omegamatrix)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "" }, + { "6833c26f385e866f3a0fa0dff311216e", "Thomas Jentzsch", "", "Centipede - Atari Mouse Hack v1.4 (PAL60) (Full-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1400,6 +1443,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "68c938a2a2b45c37db50509f1037fe6e", "Omegamatrix", "", "Star Wars Arcade (Atari Mouse) v4 (Omegamatrix)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1407,6 +1451,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "" }, + { "6936aa6763835f62ac13d1aaa79b9f91", "Thomas Jentzsch", "", "Centipede - Atari Trak-Ball Hack v1.4 (NTSC) (Half-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1414,6 +1459,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "69edfb4e1810a523311b3e250fc1e275", "Thomas Jentzsch", "", "Missile Command Atari Trak-Ball Hack v1.3 (PAL) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "" }, @@ -1503,6 +1549,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "70a43fbdb1c039283ee5048d99842469", "Thomas Jentzsch", "", "Reactor - Atari Mouse Hack v1.3 (PAL) (Half-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1528,6 +1575,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "72a63bcb5eb31bd0fd5e98ed05125ec1", "Thomas Jentzsch", "", "Missile Control - Atari Trak-Ball Hack v1.15 (PAL60) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "" }, @@ -1561,6 +1609,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "" }, + { "752da1c0acd7d132ccfb0b1067f53cf6", "Thomas Jentzsch", "", "Reactor - Atari Mouse Hack v1.3 (PAL) (Full-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1600,6 +1649,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "784abfdb31d5341e5bd404d8d2a71c3b", "Alessandro Ciceri", "", "MagiCard (TV format conversion) (alex_79) (PAL)", "MagiCard PAL conversion hack", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1643,7 +1693,9 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "" }, + { "7b4be337ac4d73eda75c848355f6f480", "Omegamatrix", "", "Star Wars Arcade (Atari Trak-Ball) (Y Inverted) (PAL60) v4 (Omegamatrix)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "PAL60", "", "", "", "" }, { "7b5207e68ee85b16998bea861987c690", "Atari, Carol Shaw", "CX26163P", "3-D Tic-Tac-Toe (32 in 1) (1988) (Atari) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7b57318c489ff178f7ff500da1ec9e8c", "Thomas Jentzsch", "", "Reactor - Amiga Mouse Hack v1.3 (PAL) (Full-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "7b6f3348dbf71ada88db0fdaf7feefe0", "", "", "3-D Corridor (Pink Spiral) (31-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "7b79beb378d1b4471def90ceccf413de", "", "", "Pitfall Cupcake (Hack)", "Hack of Pitfall", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "7b7b4ac05232490c28f9b680c72998f9", "Zellers", "", "Freeway (Zellers)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1664,12 +1716,14 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7cf3a9267cdb95aba91abc5838d61cc5", "Thomas Jentzsch", "", "Centipede - Atari Mouse Hack v1.4 (PAL60) (Half-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "7d8287e8423a56d4f8cef10435d97179", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (NTSC) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "" }, @@ -1726,6 +1780,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "80e1410ec98089e0733cc09e584dba4b", "Dynamics", "DY-293005", "Jumping Jack (1983) (Dynamics) (PAL)", "AKA Bobby Is Going Home", "", "", "", "", "", "", "", "", "", "", "", "", "", "40", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "80f7bf7418a462e8687ecefeaf6eb9c2", "Thomas Jentzsch", "", "Reactor - Atari Trak-Ball Hack v1.3 (NTSC) (Half-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1864,6 +1919,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8c146c61817edd376bc1354c7f1ddc63", "Omegamatrix", "", "Star Wars Arcade (Amiga Mouse) (Y Inverted) (PAL60) v4 (Omegamatrix)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1871,6 +1927,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "8c8b15b3259e60757987ed13cdd74d41", "Supergame", "71", "River Raid (1984) (Supergame)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8c941fa32c7718a10061d8c328909577", "Digivision", "", "River Raid (Digivision)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "8ccaa442d26b09139685f5b22bf189c4", "Retroactive", "", "Qb (V1.01) (NTSC) (2001) (Retroactive)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, + { "8ccf63141a029603572d1056e772990e", "Thomas Jentzsch", "", "Centipede - Amiga Mouse Hack v1.4 (NTSC) (Full-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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", "" }, @@ -1895,6 +1952,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "8ef96ace4a1d6dfb65926c1e868b0188", "Thomas Jentzsch", "", "Reactor - Amiga Mouse Hack v1.3 (PAL60) (Half-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "" }, @@ -1912,6 +1970,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "" }, + { "90a3c3255f2a54225cdcb50831f8793a", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (PAL) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1954,10 +2013,14 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "" }, + { "93db185c3b3dc382f3aecd6a2fea7fd9", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (PAL60) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "PAL60", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9433770890f087bfcf3e50122694d8c0", "Omegamatrix", "", "Star Wars Arcade (Amiga Mouse) (Y Inverted) v4 (Omegamatrix)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "9436b7ad131b5a1f7753ce4309ba3dee", "Kyle Pittman", "", "War of The Worlds (Kyle Pittman) (Hack)", "Hack of Defender", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "9446940866c9417f210f8552cf6c3078", "Thomas Jentzsch", "", "Marble Craze - Amiga Mouse Hack v1.0 (PAL60) (TJ)", "Uses Amiga Mouse Controllers", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "AMIGAMOUSE", "", "", "PAL60", "", "", "", "" }, + { "94507dee401b0a072a481c00d7699ffe", "Thomas Jentzsch", "", "Missile Control - Atari Trak-Ball Hack v1.15 (PAL) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1982,6 +2045,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "966c955e4aaca7082d9ffb9a68e3f3ed", "Thomas Jentzsch", "", "Centipede - Atari Mouse Hack v1.4 (PAL) (Full-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2001,6 +2065,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "97e47512f89e79818d988d078dc90410", "Thomas Jentzsch", "", "Missile Control - Amiga Mouse Hack v1.15 (NTSC) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2116,6 +2181,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a2276822c772f72073a8a40a72a1ca52", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (NTSC) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "a23ffc86804240ce77134a1c91926685", "", "", "Star Fire - Paulstar WIP (MP)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a2424c1a0c783d7585d701b1c71b5fdc", "", "", "Video Pinball (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a25bb76e9e773117e567fd4300b1bb23", "", "", "Interleaved ChronoColour Demo (NTSC) (05-03-2003) (AD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2123,9 +2189,11 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "a29df35557f31dfea2e2ae4609c6ebb7", "Atari", "", "Circus Atari (1980) (Atari) (Joystick)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a29fc854838e08c247553a7d883dd65b", "Activision, Steve Cartwright", "AX-013", "Barnstorming (1982) (Activision) (16K)", "", "Uncommon", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "a2aae759e4e76f85c8afec3b86529317", "", "", "Boom Bang (Unknown)", "AKA Crackpots", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a2d7cc2e5419a9e4ab91fdb26339b726", "Omegamatrix", "", "Star Wars Arcade (Atari Mouse) (Y Inverted) (PAL60) v4 (Omegamatrix)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "a2f9e3b6aaa23b6dc06099cdd5b51b31", "Nukey Shay", "", "Montezuma's Revenge (Genesis) (PAL60) (F6_Conversion)", "Genesis controller", "", "", "", "", "", "", "", "", "GENESIS", "", "", "", "PAL60", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2148,6 +2216,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "" }, + { "a484638990de7b12c62947c79dafa4c6", "Thomas Jentzsch", "", "Marble Craze - Atari Mouse Hack v1.0 (PAL60) (TJ)", "Uses Atari Mouse Controllers", "", "", "", "", "", "", "", "", "ATARIMOUSE", "ATARIMOUSE", "", "", "PAL60", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2256,6 +2325,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ad72d616030a17634ff29ce8680d3c4c", "Thomas Jentzsch", "", "Reactor - Atari Trak-Ball Hack v1.3 (PAL60) (Full-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "PAL60", "", "", "", "" }, { "ad7e97c19bd25d5aa3999430845c755b", "", "", "Sprite Demo 5 (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "ad8072675109d13fdd31a2e0403d5cff", "Funvision - Fund. International Co.", "", "Tank City (Funvision)", "AKA Thunderground", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "adb770ff70e9adf08bbb907a7eccd240", "", "", "Inv Demo 3 (2001) (Erik Mooney) (PD)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2289,6 +2359,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b011d8fdc450597c0762c2c0010a9b17", "Thomas Jentzsch", "", "Reactor - Amiga Mouse Hack v1.3 (NTSC) (Half-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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", "" }, @@ -2298,12 +2369,15 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "" }, + { "b1276417fb0f79bc52e741bb8f4d8360", "Thomas Jentzsch", "", "Marble Craze - Amiga Mouse Hack v1.0 (NTSC) (TJ)", "Uses Amiga Mouse Controllers", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "AMIGAMOUSE", "", "", "", "", "", "", "" }, + { "b129d7541cff79ebe33852a83057c524", "Thomas Jentzsch", "", "Marble Craze - Atari Trak-Ball Hack v1.0 (NTSC) (TJ)", "Uses Atari Trak-Ball Controllers", "", "", "", "", "", "", "", "", "TRAKBALL", "TRAKBALL", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b182d9708e00709830caab9cf8205ca0", "Thomas Jentzsch", "", "Reactor - Atari Mouse Hack v1.3 (PAL60) (Half-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2326,6 +2400,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "b31e9487efc06f18dfc3d7ebadf54416", "Omegamatrix", "", "Star Wars Arcade (Atari Mouse) v4 (PAL60) (Omegamatrix)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2406,11 +2481,13 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bb2b83fff97604f74ada565e0b5bae94", "Thomas Jentzsch", "", "Missile Control - Atari Mouse Hack v1.15 (PAL60) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bb9112d478a1a922d2c289a752bba695", "Omegamatrix", "", "SpaceMaster X-7 (Amiga Mouse) (Omegamatrix)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2447,6 +2524,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "bf1970b692275b42c4ec0683588eb062", "Thomas Jentzsch", "", "Reactor - Amiga Mouse Hack v1.3 (NTSC) (Full-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "" }, @@ -2470,6 +2548,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "c118854d670289a8b5d5156aa74b0c49", "Jone Yuan Telephonic Enterprise Co", "", "Skiing (Jone Yuan)", "2600 Screen Search Console", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "c11e8473c652619ac6166900150ce215", "AtariAge, Chris Walton", "1.0 (Release)", "Chetiry (2011) (AtariAge) (60k) (PAL)", "", "Homebrew", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "50" }, { "c126656df6badfa519cc63e681fb3596", "Ron Corcoran", "", "Space Invaders (2002) (Ron Corcoran) (Hack)", "Hack of Space Invaders", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c15042e54c7408498f051d782aaa8945", "Omegamatrix", "", "Millipede (Atari Trak-Ball) v6.5 (Omegamatrix)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2498,6 +2577,8 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c2c8eb642765137bb82b83a65232961f", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (PAL) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, + { "c2dea467f4a02fa1f06d66f52bc12e6e", "Thomas Jentzsch", "", "Missile Command Atari Trak-Ball Hack v1.3 (NTSC) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2534,6 +2615,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c560a3ecb7b751021953819efcfe5b41", "Omegamatrix", "", "Ghostbusters (Genesis)", "Genesis controller", "", "", "", "", "", "", "", "", "GENESIS", "", "", "", "", "", "", "", "" }, { "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", "" }, @@ -2543,6 +2625,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c5f71dfbdca9cc96b28643ff4d06aa6f", "Thomas Jentzsch", "", "Centipede - Atari Trak-Ball Hack v1.4 (PAL) (Full-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2574,6 +2657,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "c90788d9aa71a78bcc78c015edb22c54", "Thomas Jentzsch", "", "Marble Craze - Atari Trak-Ball Hack v1.0 (PAL60) (TJ)", "Uses Atari Trak-Ball Controllers", "", "", "", "", "", "", "", "", "TRAKBALL", "TRAKBALL", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2638,6 +2722,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "cdadb57b34438805ee322ff05bd3d43e", "Thomas Jentzsch", "", "Centipede - Amiga Mouse Hack v1.4 (PAL60) (Full-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "", "", "", "", "", "", "" }, @@ -2652,6 +2737,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "" }, + { "ceba7965a93c689bdecdb46a5b2ac0c1", "Thomas Jentzsch", "", "Reactor - Atari Trak-Ball Hack v1.3 (PAL60) (Half-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "PAL60", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2695,6 +2781,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d0e05ba5f10e3df3023c5ee787f760ef", "Thomas Jentzsch", "", "Centipede - Atari Mouse Hack v1.4 (PAL) (Half-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "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]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2797,6 +2884,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "d968de2b4ff18bfe4a95066cde310578", "Thomas Jentzsch", "", "Centipede - Amiga Mouse Hack v1.4 (PAL) (Half-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2833,6 +2921,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dbba14a0f69f0e13fdccb3fde3baedca", "Thomas Jentzsch", "", "Reactor - Atari Trak-Ball Hack v1.3 (NTSC) (Full-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "" }, @@ -2851,6 +2940,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "dd13a16d14100819f79b1ce3a5bf499c", "Thomas Jentzsch", "", "Missile Control - Atari Mouse Hack v1.15 (PAL) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "dd1422ffd538e2e33b339ebeef4f259d", "Atari, Tod Frye", "", "Red Vs. Blue (1981) (Atari) (Prototype)", "RealSports Football Beta", "Prototype", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "dd17711a30ad60109c8beace0d4a76e8", "", "", "Karate (Unknown) (PAL)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "20", "", "", "" }, { "dd4f4e0fbd81762533e39e6f5b55bb3a", "", "", "Turbo WIP (TJ)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2887,6 +2977,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "df91277a3569344b89e6e8bd5bebc8d1", "Thomas Jentzsch", "", "Marble Craze - Amiga Mouse Hack v1.0 (PAL) (TJ)", "Uses Amiga Mouse Controllers", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "AMIGAMOUSE", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2959,6 +3050,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "e48d3a4056ede9393586421996db1ae8", "Thomas Jentzsch", "", "Centipede - Atari Trak-Ball Hack v1.4 (PAL60) (Full-Speed) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "PAL60", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -2977,6 +3069,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "" }, + { "e59d022d524d05acc19515598c831e4d", "Alessandro Ciceri", "", "MagiCard+ (alex_79) WIP_20150118 (PAL)", "MagiCard hack", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -3035,6 +3128,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "" }, + { "e9db2f91efe6ff7ea3546e2c2578fb09", "Omegamatrix", "", "Millipede (Atari Mouse) v6.5 (Omegamatrix)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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", "" }, @@ -3064,6 +3158,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "ebdc5716b85c4ff44fa357cb697d6cef", "Thomas Jentzsch", "", "Centipede - Amiga Mouse Hack v1.4 (NTSC) (Half-Speed) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -3114,11 +3209,13 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "effa3a7ce078c6d83bf43174a7bfdb1f", "Thomas Jentzsch", "", "Centipede - Atari Mouse Hack v1.4 (NTSC) (Half-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f0510abbfbe24ead552e92e3841f63f3", "Thomas Jentzsch", "", "Reactor - Atari Mouse Hack v1.3 (NTSC) (Full-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -3129,6 +3226,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "f0cacae1d1b79ee92f0dc035f42e0560", "", "", "Boring Donkey Kong (Hack)", "Hack of Donkey Kong", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "f0d393dbf4164a688b2346770c9bbd12", "", "", "Racquetball (Unknown)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "YES", "" }, { "f0daaa966199ef2b49403e9a29d12c50", "", "", "Mr. Postman (Unknown)", "", "Rare", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f0de4f49e95d529569e8788d5a7b4d30", "Thomas Jentzsch", "", "Reactor - Atari Mouse Hack v1.3 (PAL60) (Full-Speed) (TJ)", "Uses Atari Mouse Controller", "", "", "", "", "", "", "", "", "ATARIMOUSE", "", "", "", "PAL60", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -3152,6 +3250,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f23d19b73dac50cc6149316912b8ee53", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (PAL) (TJ)", "Uses Amiga Mouse Controller", "", "", "", "", "", "", "", "", "AMIGAMOUSE", "", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "" }, @@ -3183,6 +3282,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "" }, + { "f4a09f906cc37be31224433f576d77d3", "Thomas Jentzsch", "", "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (PAL) (TJ)", "Uses Atari Trak-Ball Controller", "", "", "", "", "", "", "", "", "TRAKBALL", "", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -3259,6 +3359,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, + { "f991e0670b5f67faa6b6211e9bd81b91", "Nukey Shay, Omegamatrix", "", "Double Dragon (Genesis) (PAL) V2", "Genesis controller", "", "", "", "", "", "", "", "", "GENESIS", "GENESIS", "", "", "", "", "", "", "" }, { "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -3339,6 +3440,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "" }, + { "ff1523783e0e76a3b0d1f7f0d1cb3050", "Thomas Jentzsch", "", "Marble Craze - Atari Trak-Ball Hack v1.0 (PAL) (TJ)", "Uses Atari Trak-Ball Controllers", "", "", "", "", "", "", "", "", "TRAKBALL", "TRAKBALL", "", "", "", "", "", "", "" }, { "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", "", "", "", "", "", "", "", "" }, diff --git a/src/emucore/stella.pro b/src/emucore/stella.pro index 8130a8fcb..9e80b3966 100644 --- a/src/emucore/stella.pro +++ b/src/emucore/stella.pro @@ -20471,3 +20471,767 @@ "Cartridge.Name" "Spitfire Attack (1983) (Milton Bradley) [h1]" "" +"Cartridge.MD5" "05c765a63e61882abd1c2d627b652225" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (NTSC) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "0619e1c3286bbfbace040b8c3ec5add2" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Atari Trak-Ball) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "0891252ee4e307689febccf3cfd8a8ab" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "08ea2fdaa22e5802c839ee7dfb0483dc" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "0cec9e46a25d338bf595a29aa2606516" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "0d08558f34a47e4eaa39d01c8efb81f0" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Mouse Hack v1.15 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "0e23d0ed4c33b2011ab4cc93a7619683" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "0effef4a341f8eebab65621c60c48787" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "12080205f669b8e7783b976f8cf3d8bb" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "171ebf135b13ba907f462c10d88a2c25" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (PAL60) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "18be8981b8201638f3ed8ae92bb4c215" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Amiga Mouse Hack v1.15 (PAL60) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "1986f864e32e3e8d198b5becf3022257" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "1bfae770e089fa81412d04eb299f4c3f" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Mouse Hack v1.0 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controllers" +"Controller.Left" "ATARIMOUSE" +"Controller.Right" "ATARIMOUSE" +"" + +"Cartridge.MD5" "1c666ba5aac19b81671357e76062989b" +"Cartridge.Manufacturer" "Nukey Shay, Omegamatrix" +"Cartridge.Name" "Double Dragon (Genesis) (PAL60) V2" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"Controller.Right" "GENESIS" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "2058cf3fefad4d2bc03ed817cedddcd4" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "217b1452881264ac75126bf77b8d0db8" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "2712e91f6f1dc55e90e2b14b27c042ac" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Amiga Mouse) (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "27baecd618e7e53dc11f2a9c559f529d" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "2d38a96f92952b301eefdf25a5e6976b" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Mouse) (Y_Inverted) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "2d6388a8389f1d59108fd169c3356d79" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "31235a27b065c2863048fa84db330dc6" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Amiga Mouse Hack v1.15 (PAL) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "336ea20d38f98926919d4b4651d1a03f" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Omega Race (Genesis) V2" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"" + +"Cartridge.MD5" "3974e2d1f614fbd3a092533ecae2e84d" +"Cartridge.Manufacturer" "Alessandro Ciceri" +"Cartridge.Name" "MagiCard+ (alex_79) WIP_20150118" +"Cartridge.Note" "MagiCard hack" +"Controller.Left" "KEYBOARD" +"Controller.Right" "KEYBOARD" +"" + +"Cartridge.MD5" "3a521b7e29123b2d38e34e3ff8dc255c" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "4026ad38ba5ce486e88383dc27d7a46f" +"Cartridge.Manufacturer" "Nukey Shay, Omegamatrix" +"Cartridge.Name" "Double Dragon (Genesis) V2" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"Controller.Right" "GENESIS" +"" + +"Cartridge.MD5" "41b554c6970b18670acc7b6baef8ed2e" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "46dc526773808c8b9bb2111f24e5704c" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Atari Mouse) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "471f7bdc933e8db0e44aa3dde2dd92af" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Atari Mouse) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "47585c047802dd9af888b998fb921f32" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) v4 (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "4834b7b28ea862227ac7e40053fb52a5" +"Cartridge.Manufacturer" "Nukey Shay" +"Cartridge.Name" "Montezuma's Revenge (Genesis) (F6_Conversion)" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"" + +"Cartridge.MD5" "487193a7b7fe57a1bbc2f431f628bd5f" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "497c811026367c08fd838c9c59e5041d" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Atari Trak-Ball) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "4b379b885e2694f992c6cc932f18327f" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Atari Mouse) (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "4bdf54a454470ba015a217a8f5e61320" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Amiga Mouse) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "522b27a8afeb951b5a5a667f8d1a46a1" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Amiga Mouse) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "533661e9bccd8a9f80ce3765f282c92f" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) (Y Inverted) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "53e03df47e76329b701641f8bdc206f5" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "56f72247eb9ebfd33bfd0cca23ab7ef4" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) v4 (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "5a4205aeedd3b0588f973f38bbd9dfd4" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "5bbb75b49b2bccef9c91ff84bb249c80" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Trak-Ball Hack v1.15 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "6238ac888871fec301d1b9fc4fc613c9" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Mouse Hack v1.0 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controllers" +"Controller.Left" "ATARIMOUSE" +"Controller.Right" "ATARIMOUSE" +"" + +"Cartridge.MD5" "67f90d74fd0b72fdc6d9b92436780ea9" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Atari Trak-Ball) (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "6833c26f385e866f3a0fa0dff311216e" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "68c938a2a2b45c37db50509f1037fe6e" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Mouse) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "6936aa6763835f62ac13d1aaa79b9f91" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "69edfb4e1810a523311b3e250fc1e275" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Command Atari Trak-Ball Hack v1.3 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "70a43fbdb1c039283ee5048d99842469" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "72a63bcb5eb31bd0fd5e98ed05125ec1" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Trak-Ball Hack v1.15 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "752da1c0acd7d132ccfb0b1067f53cf6" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "784abfdb31d5341e5bd404d8d2a71c3b" +"Cartridge.Manufacturer" "Alessandro Ciceri" +"Cartridge.Name" "MagiCard (TV format conversion) (alex_79) (PAL)" +"Cartridge.Note" "MagiCard PAL conversion hack" +"Controller.Left" "KEYBOARD" +"Controller.Right" "KEYBOARD" +"" + +"Cartridge.MD5" "7b4be337ac4d73eda75c848355f6f480" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) (Y Inverted) (PAL60) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "7b57318c489ff178f7ff500da1ec9e8c" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "7cf3a9267cdb95aba91abc5838d61cc5" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "7d8287e8423a56d4f8cef10435d97179" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "80f7bf7418a462e8687ecefeaf6eb9c2" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "8c146c61817edd376bc1354c7f1ddc63" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) (Y Inverted) (PAL60) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "8ccf63141a029603572d1056e772990e" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "8ef96ace4a1d6dfb65926c1e868b0188" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "90a3c3255f2a54225cdcb50831f8793a" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "93db185c3b3dc382f3aecd6a2fea7fd9" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "9433770890f087bfcf3e50122694d8c0" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) (Y Inverted) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "9446940866c9417f210f8552cf6c3078" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Amiga Mouse Hack v1.0 (PAL60) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controllers" +"Controller.Left" "AMIGAMOUSE" +"Controller.Right" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "94507dee401b0a072a481c00d7699ffe" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Trak-Ball Hack v1.15 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "966c955e4aaca7082d9ffb9a68e3f3ed" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "97e47512f89e79818d988d078dc90410" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Amiga Mouse Hack v1.15 (NTSC) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "a2276822c772f72073a8a40a72a1ca52" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "a2d7cc2e5419a9e4ab91fdb26339b726" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Mouse) (Y Inverted) (PAL60) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "a2f9e3b6aaa23b6dc06099cdd5b51b31" +"Cartridge.Manufacturer" "Nukey Shay" +"Cartridge.Name" "Montezuma's Revenge (Genesis) (PAL60) (F6_Conversion)" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "a484638990de7b12c62947c79dafa4c6" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Mouse Hack v1.0 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controllers" +"Controller.Left" "ATARIMOUSE" +"Controller.Right" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "ad72d616030a17634ff29ce8680d3c4c" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "b011d8fdc450597c0762c2c0010a9b17" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "b1276417fb0f79bc52e741bb8f4d8360" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Amiga Mouse Hack v1.0 (NTSC) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controllers" +"Controller.Left" "AMIGAMOUSE" +"Controller.Right" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "b129d7541cff79ebe33852a83057c524" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Trak-Ball Hack v1.0 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controllers" +"Controller.Left" "TRAKBALL" +"Controller.Right" "TRAKBALL" +"" + +"Cartridge.MD5" "b182d9708e00709830caab9cf8205ca0" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "b31e9487efc06f18dfc3d7ebadf54416" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Mouse) v4 (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "bb2b83fff97604f74ada565e0b5bae94" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Mouse Hack v1.15 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "bb9112d478a1a922d2c289a752bba695" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Amiga Mouse) (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "bf1970b692275b42c4ec0683588eb062" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "c15042e54c7408498f051d782aaa8945" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Atari Trak-Ball) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "c2c8eb642765137bb82b83a65232961f" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "c2dea467f4a02fa1f06d66f52bc12e6e" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Command Atari Trak-Ball Hack v1.3 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "c560a3ecb7b751021953819efcfe5b41" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Ghostbusters (Genesis)" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"" + +"Cartridge.MD5" "c5f71dfbdca9cc96b28643ff4d06aa6f" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "c90788d9aa71a78bcc78c015edb22c54" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Trak-Ball Hack v1.0 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controllers" +"Controller.Left" "TRAKBALL" +"Controller.Right" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "cdadb57b34438805ee322ff05bd3d43e" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "ceba7965a93c689bdecdb46a5b2ac0c1" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "d0e05ba5f10e3df3023c5ee787f760ef" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "d968de2b4ff18bfe4a95066cde310578" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "dbba14a0f69f0e13fdccb3fde3baedca" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "dd13a16d14100819f79b1ce3a5bf499c" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Mouse Hack v1.15 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "df91277a3569344b89e6e8bd5bebc8d1" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Amiga Mouse Hack v1.0 (PAL) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controllers" +"Controller.Left" "AMIGAMOUSE" +"Controller.Right" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "e48d3a4056ede9393586421996db1ae8" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "e59d022d524d05acc19515598c831e4d" +"Cartridge.Manufacturer" "Alessandro Ciceri" +"Cartridge.Name" "MagiCard+ (alex_79) WIP_20150118 (PAL)" +"Cartridge.Note" "MagiCard hack" +"Controller.Left" "KEYBOARD" +"Controller.Right" "KEYBOARD" +"" + +"Cartridge.MD5" "e9db2f91efe6ff7ea3546e2c2578fb09" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Atari Mouse) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "ebdc5716b85c4ff44fa357cb697d6cef" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "effa3a7ce078c6d83bf43174a7bfdb1f" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "f0510abbfbe24ead552e92e3841f63f3" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "f0de4f49e95d529569e8788d5a7b4d30" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "f23d19b73dac50cc6149316912b8ee53" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (PAL) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "f4a09f906cc37be31224433f576d77d3" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + +"Cartridge.MD5" "f991e0670b5f67faa6b6211e9bd81b91" +"Cartridge.Manufacturer" "Nukey Shay, Omegamatrix" +"Cartridge.Name" "Double Dragon (Genesis) (PAL) V2" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"Controller.Right" "GENESIS" +"" + +"Cartridge.MD5" "ff1523783e0e76a3b0d1f7f0d1cb3050" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Trak-Ball Hack v1.0 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controllers" +"Controller.Left" "TRAKBALL" +"Controller.Right" "TRAKBALL" +"" From a8a0c57debdc29e1f7ffd81c80d77b7ccc2e6647 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Mon, 19 Nov 2018 10:38:34 -0330 Subject: [PATCH 23/30] Updated ROM properties database for missing paddle controllers. --- Changes.txt | 3 + src/emucore/DefProps.hxx | 8 +- src/emucore/stella.pro | 1537 +++++++++++++++++++------------------- 3 files changed, 778 insertions(+), 770 deletions(-) diff --git a/Changes.txt b/Changes.txt index d9937648b..8824a64d0 100644 --- a/Changes.txt +++ b/Changes.txt @@ -104,6 +104,9 @@ * Added recently released 'Arkyology' prototype ROM to the database. + * Fixed 'Street Racer' and 'Video Olympics' ROMs to use paddles in both + ports. + * Added premliminary support for 'CTY' bankswitching scheme and recently released 'Chetiry' ROMs. Special thanks to SpiceWare for adding music support to this scheme. diff --git a/src/emucore/DefProps.hxx b/src/emucore/DefProps.hxx index 0f23b4ad6..1e4997845 100644 --- a/src/emucore/DefProps.hxx +++ b/src/emucore/DefProps.hxx @@ -797,7 +797,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "" }, + { "396f7bc90ab4fa4975f8c74abe4e81f0", "Atari, Larry Kaplan - Sears", "CX2612 - 99804, 49-75103", "Street Racer (1977) (Atari)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "YES", "AUTO 60", "", "", "", "", "" }, { "3974e2d1f614fbd3a092533ecae2e84d", "Alessandro Ciceri", "", "MagiCard+ (alex_79) WIP_20150118", "MagiCard hack", "", "", "", "", "", "", "", "", "KEYBOARD", "KEYBOARD", "", "", "", "", "", "", "" }, { "39790a2e9030751d7db414e13f1b6960", "", "", "Robotfindskitten2600 (26-04-2003) (Jeremy Penner) [a1]", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, { "39a6a5a2e1f6297cceaa48bb03af02e9", "", "", "Pitfall 2 Plus (Hack)", "Hack of Pitfall 2", "Hack", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1328,7 +1328,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "" }, + { "60e0ea3cbe0913d39803477945e9e5ec", "Atari, Joe Decuir - Sears", "CX2621 - 99806, 6-99806, 49-75104", "Video Olympics (1977) (Atari)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -1645,7 +1645,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "" }, + { "77d0a577636e1c9212aeccde9d0baa4b", "Atari, Joe Decuir", "CX2621, CX2621P", "Video Olympics (1977) (Atari) (PAL)", "Uses the Paddle Controllers", "", "", "", "", "", "", "", "", "PADDLES_IAXDR", "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)", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, @@ -3002,7 +3002,7 @@ static const char* const DefProps[DEF_PROPS_SIZE][22] = { { "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", "", "", "", "", "" }, + { "e12e32dee68201b6765fcd0ed54d6646", "Atari, Larry Kaplan", "CX2612, CX2612P", "Street Racer (1977) (Atari) (PAL)", "Uses the Paddle Controllers (swapped)", "", "", "", "", "", "", "", "", "PADDLES", "PADDLES", "YES", "AUTO 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", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "" }, diff --git a/src/emucore/stella.pro b/src/emucore/stella.pro index 9e80b3966..24a8aba3a 100644 --- a/src/emucore/stella.pro +++ b/src/emucore/stella.pro @@ -415,6 +415,13 @@ "Cartridge.Name" "Test (1996) (J.V. Matthews) (PD)" "" +"Cartridge.MD5" "05c765a63e61882abd1c2d627b652225" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (NTSC) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "05ccf96247af12eef59698f1a060a54f" "Cartridge.Manufacturer" "Otto Versand" "Cartridge.ModelNo" "600273" @@ -454,6 +461,14 @@ "Cartridge.Name" "Narnia (Glenn Saunders) (PD)" "" +"Cartridge.MD5" "0619e1c3286bbfbace040b8c3ec5add2" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Atari Trak-Ball) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "0651216c4a4a9c9ac5ada3013a317c72" "Cartridge.Manufacturer" "Jone Yuan Telephonic Enterprise Co" "Cartridge.Name" "Fishing Derby (Jone Yuan) (4K) (Hack)" @@ -655,6 +670,14 @@ "Cartridge.Name" "Star Fire - 4K Version (25-10-2002) (MP)" "" +"Cartridge.MD5" "0891252ee4e307689febccf3cfd8a8ab" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "0894aa7be77521f9df562be8d9555fe6" "Cartridge.Manufacturer" "CBS Electronics, Dan Kitchen, Garry Kitchen" "Cartridge.ModelNo" "4L1700, 4L1701, 4L1702, 4L1802, 4L2274" @@ -705,6 +728,14 @@ "Display.YStart" "34" "" +"Cartridge.MD5" "08ea2fdaa22e5802c839ee7dfb0483dc" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "08f4dc6f118f7c98e2406c180c08e78e" "Cartridge.Manufacturer" "Arcadia Corporation, Dennis Caswell" "Cartridge.ModelNo" "AR-4302" @@ -1040,6 +1071,14 @@ "Cartridge.Name" "Crash Dive (1983) (20th Century Fox) (PAL)" "" +"Cartridge.MD5" "0cec9e46a25d338bf595a29aa2606516" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "0cfdd2f3b243cac21f38a0f09f54bead" "Cartridge.Name" "Overhead Adventure Demo 4 (PD)" "" @@ -1048,6 +1087,13 @@ "Cartridge.Name" "Scrolling Playfield 1 (Junkosoft) (PD)" "" +"Cartridge.MD5" "0d08558f34a47e4eaa39d01c8efb81f0" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Mouse Hack v1.15 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "0d09cff0d28033c02c3290edfc3a5cea" "Cartridge.Manufacturer" "Atari, Jerome Domurat, Steve Woita" "Cartridge.ModelNo" "CX2699" @@ -1139,6 +1185,14 @@ "Controller.Right" "MINDLINK" "" +"Cartridge.MD5" "0e23d0ed4c33b2011ab4cc93a7619683" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "0e4b2b6e014a93ef8be896823da0d4ec" "Cartridge.Name" "Skiing (208 in 1) (Unknown) (PAL)" "" @@ -1194,6 +1248,13 @@ "Display.Height" "256" "" +"Cartridge.MD5" "0effef4a341f8eebab65621c60c48787" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "0f14c03050b35d6b1d8850b07578722d" "Cartridge.Manufacturer" "Jeffry Johnston" "Cartridge.Name" "Radial Pong - Version 10 (Jeffry Johnston) (PD)" @@ -1438,6 +1499,13 @@ "Cartridge.Name" "Nick Bensema Demo (Nick Bensema)" "" +"Cartridge.MD5" "12080205f669b8e7783b976f8cf3d8bb" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "12123b534bdee79ed7563b9ad74f1cbd" "Cartridge.Manufacturer" "Absolute Entertainment, Alex DeMeo" "Cartridge.ModelNo" "AG-041-04" @@ -1858,6 +1926,14 @@ "Cartridge.Rarity" "Hack" "" +"Cartridge.MD5" "171ebf135b13ba907f462c10d88a2c25" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (PAL60) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "1733772165d7b886a94e2b4ed0f74ccd" "Cartridge.Name" "Boring Journey Escape (Hack)" "Cartridge.Note" "Hack of Journey - Escape" @@ -1992,6 +2068,14 @@ "Cartridge.Rarity" "New Release" "" +"Cartridge.MD5" "18be8981b8201638f3ed8ae92bb4c215" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Amiga Mouse Hack v1.15 (PAL60) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "18bebbbd41c234f82b1717b1905e6027" "Cartridge.Name" "Space Instigators (Public Release) (02-01-2003) (CT)" "" @@ -2053,6 +2137,13 @@ "Cartridge.Name" "Video Checkers (1980) (Atari) (PAL)" "" +"Cartridge.MD5" "1986f864e32e3e8d198b5becf3022257" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "199985cae1c0123ab1aef921daace8be" "Cartridge.Name" "Euchre (Release Candidate 2) (PAL) (01-10-2002) (Erik Eid)" "" @@ -2194,6 +2285,14 @@ "Display.YStart" "54" "" +"Cartridge.MD5" "1bfae770e089fa81412d04eb299f4c3f" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Mouse Hack v1.0 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controllers" +"Controller.Left" "ATARIMOUSE" +"Controller.Right" "ATARIMOUSE" +"" + "Cartridge.MD5" "1c3f3133a3e5b023c77ecba94fd65995" "Cartridge.Manufacturer" "CCE" "Cartridge.ModelNo" "C-830" @@ -2207,6 +2306,15 @@ "Cartridge.Note" "AKA Keystone Kapers" "" +"Cartridge.MD5" "1c666ba5aac19b81671357e76062989b" +"Cartridge.Manufacturer" "Nukey Shay, Omegamatrix" +"Cartridge.Name" "Double Dragon (Genesis) (PAL60) V2" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"Controller.Right" "GENESIS" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "1c6eb740d3c485766cade566abab8208" "Cartridge.Manufacturer" "Atari, Michael Kosaka, Peter C. Niday, Robert Vieira" "Cartridge.ModelNo" "CX26110" @@ -2540,6 +2648,14 @@ "Cartridge.Rarity" "Hack" "" +"Cartridge.MD5" "2058cf3fefad4d2bc03ed817cedddcd4" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "2091af29b4e7b86914d79d9aaa4cbd20" "Cartridge.Manufacturer" "CBS Electronics - Woodside Design Associates, Harley H. Puthuff Jr." "Cartridge.ModelNo" "4L1802" @@ -2627,6 +2743,13 @@ "Cartridge.Name" "Yellow Submarine (Cody Pittman) (PD)" "" +"Cartridge.MD5" "217b1452881264ac75126bf77b8d0db8" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "218b76f5a4142dc2ea9051a768583d70" "Cartridge.Manufacturer" "Atari - GCC, Mark Ackerman, Glenn Parker" "Cartridge.ModelNo" "CX2684, CX2684P" @@ -3048,6 +3171,14 @@ "Cartridge.Rarity" "Hack" "" +"Cartridge.MD5" "2712e91f6f1dc55e90e2b14b27c042ac" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Amiga Mouse) (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "271bfd5dc2673d382019f1fb6cab9332" "Cartridge.Manufacturer" "Arcadia Corporation, Dennis Caswell" "Cartridge.ModelNo" "AR-4200" @@ -3120,6 +3251,13 @@ "Display.YStart" "28" "" +"Cartridge.MD5" "27baecd618e7e53dc11f2a9c559f529d" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "27c4c2af4b46394bb98638af8e0f6e9d" "Cartridge.Manufacturer" "Atari, Jerome Domurat, Peter C. Niday, Robert Vieira" "Cartridge.ModelNo" "CX26109" @@ -3617,12 +3755,26 @@ "Cartridge.Name" "Secret Quest (1989) (Atari) (PAL)" "" +"Cartridge.MD5" "2d38a96f92952b301eefdf25a5e6976b" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Mouse) (Y_Inverted) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "2d405da70af82b20a6b3ecc3d1d2c4ec" "Cartridge.Manufacturer" "Genus" "Cartridge.Name" "Pitfall (Genus)" "Cartridge.Note" "AKA Pitfall!" "" +"Cartridge.MD5" "2d6388a8389f1d59108fd169c3356d79" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "2d6741cda3000230f6bbdd5e31941c01" "Cartridge.Manufacturer" "CBS Electronics - VSS" "Cartridge.ModelNo" "80110" @@ -3931,6 +4083,13 @@ "Cartridge.Rarity" "Extremely Rare" "" +"Cartridge.MD5" "31235a27b065c2863048fa84db330dc6" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Amiga Mouse Hack v1.15 (PAL) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "313243fc41e49ef6bd3aa9ebc0d372dd" "Cartridge.Name" "Fast Food (Unknown) (PAL)" "" @@ -4156,6 +4315,13 @@ "Cartridge.Name" "Space Treat (30-12-2002) (Fabrizio Zavagli)" "" +"Cartridge.MD5" "336ea20d38f98926919d4b4651d1a03f" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Omega Race (Genesis) V2" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"" + "Cartridge.MD5" "3391f7c4c656793f92299f4187e139f7" "Cartridge.Manufacturer" "Commavid, Ben Burch" "Cartridge.ModelNo" "CM-010" @@ -4641,8 +4807,17 @@ "Cartridge.Name" "Street Racer (1977) (Atari)" "Cartridge.Note" "Uses the Paddle Controllers (swapped)" "Controller.Left" "PADDLES" +"Controller.Right" "PADDLES" "Controller.SwapPaddles" "YES" -"Controller.MouseAxis" "10 60" +"Controller.MouseAxis" "AUTO 60" +"" + +"Cartridge.MD5" "3974e2d1f614fbd3a092533ecae2e84d" +"Cartridge.Manufacturer" "Alessandro Ciceri" +"Cartridge.Name" "MagiCard+ (alex_79) WIP_20150118" +"Cartridge.Note" "MagiCard hack" +"Controller.Left" "KEYBOARD" +"Controller.Right" "KEYBOARD" "" "Cartridge.MD5" "39790a2e9030751d7db414e13f1b6960" @@ -4706,6 +4881,13 @@ "Display.Phosphor" "YES" "" +"Cartridge.MD5" "3a521b7e29123b2d38e34e3ff8dc255c" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "3a526e6a1f9fe918af0f2ce997dfea73" "Cartridge.Manufacturer" "CBS Electronics, Dan Kitchen, Garry Kitchen" "Cartridge.ModelNo" "4L1700, 4L1701, 4L1702, 4L1802, 4L2274" @@ -5240,6 +5422,14 @@ "Cartridge.Note" "AKA Lock 'n' Chase (Double-Game Package)" "" +"Cartridge.MD5" "4026ad38ba5ce486e88383dc27d7a46f" +"Cartridge.Manufacturer" "Nukey Shay, Omegamatrix" +"Cartridge.Name" "Double Dragon (Genesis) V2" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"Controller.Right" "GENESIS" +"" + "Cartridge.MD5" "402b1ca3c230a60fb279d4a2a10fa677" "Cartridge.Name" "3-D Tic-Tac-Toe (Unknown) (PAL) (4K)" "Display.YStart" "62" @@ -5370,6 +5560,13 @@ "Cartridge.Note" "AKA Foot Craz" "" +"Cartridge.MD5" "41b554c6970b18670acc7b6baef8ed2e" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "41c4e3d45a06df9d21b7aae6ae7e9912" "Cartridge.Manufacturer" "CCE" "Cartridge.ModelNo" "C-826" @@ -5709,6 +5906,13 @@ "Cartridge.Name" "Invaders Demo (PAL) (2001) (Eckhard Stolberg)" "" +"Cartridge.MD5" "46dc526773808c8b9bb2111f24e5704c" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Atari Mouse) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "46e9428848c9ea71a4d8f91ff81ac9cc" "Cartridge.Manufacturer" "Telegames" "Cartridge.Name" "Astroblast (1988) (Telegames) (PAL)" @@ -5730,12 +5934,27 @@ "Cartridge.Name" "Math Gran Prix (1982) (Atari)" "" +"Cartridge.MD5" "471f7bdc933e8db0e44aa3dde2dd92af" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Atari Mouse) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "47464694e9cce07fdbfd096605bf39d4" "Cartridge.Manufacturer" "Activision, Dan Kitchen" "Cartridge.ModelNo" "EAK-050-04" "Cartridge.Name" "Double Dragon (1989) (Activision) (PAL) [a]" "" +"Cartridge.MD5" "47585c047802dd9af888b998fb921f32" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) v4 (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "4767356fa0ed3ebe21437b4473d4ee28" "Cartridge.Manufacturer" "Atari, Dan Hitchens, Mimi Nyden" "Cartridge.ModelNo" "CX2685" @@ -5822,6 +6041,13 @@ "Cartridge.Note" "AKA Innerspace" "" +"Cartridge.MD5" "4834b7b28ea862227ac7e40053fb52a5" +"Cartridge.Manufacturer" "Nukey Shay" +"Cartridge.Name" "Montezuma's Revenge (Genesis) (F6_Conversion)" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"" + "Cartridge.MD5" "48411c9ef7e2cef1d6b2bee0e6055c27" "Cartridge.Manufacturer" "Telesys, Don Ruffcorn, Jack Woodman" "Cartridge.ModelNo" "1003" @@ -5840,6 +6066,13 @@ "Cartridge.Rarity" "New Release" "" +"Cartridge.MD5" "487193a7b7fe57a1bbc2f431f628bd5f" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "4884b1297500bd1243659e43c7e7579e" "Cartridge.Manufacturer" "Atari - Axlon, Tod Frye" "Cartridge.ModelNo" "CX26178" @@ -5936,6 +6169,13 @@ "Display.YStart" "37" "" +"Cartridge.MD5" "497c811026367c08fd838c9c59e5041d" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Atari Trak-Ball) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "497f3d2970c43e5224be99f75e97cbbb" "Cartridge.Manufacturer" "CommaVid, John Bronstein" "Cartridge.ModelNo" "CM-002" @@ -6075,6 +6315,14 @@ "Cartridge.Rarity" "Common" "" +"Cartridge.MD5" "4b379b885e2694f992c6cc932f18327f" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Atari Mouse) (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "4b71197153d651480830638cb6a03249" "Cartridge.Manufacturer" "Atari, Larry Kaplan" "Cartridge.ModelNo" "CX26163P" @@ -6122,6 +6370,14 @@ "Cartridge.Name" "Human Cannonball (32 in 1) (1988) (Atari) (PAL) (4K)" "" +"Cartridge.MD5" "4bdf54a454470ba015a217a8f5e61320" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Amiga Mouse) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "4c030667d07d1438f0e5c458a90978d8" "Cartridge.Manufacturer" "Retroactive" "Cartridge.Name" "Qb (V2.03) (PAL) (2001) (Retroactive)" @@ -6614,6 +6870,13 @@ "Cartridge.Note" "AKA Bobby geht Heim" "" +"Cartridge.MD5" "522b27a8afeb951b5a5a667f8d1a46a1" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Amiga Mouse) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "522c9cf684ecd72db2f85053e6f6f720" "Cartridge.Manufacturer" "Rainbow Vision - Suntek" "Cartridge.ModelNo" "SS-008" @@ -6711,6 +6974,13 @@ "Cartridge.Note" "AKA Lost City of Atlantis" "" +"Cartridge.MD5" "533661e9bccd8a9f80ce3765f282c92f" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) (Y Inverted) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "5336f86f6b982cc925532f2e80aa1e17" "Cartridge.Manufacturer" "Parker Brothers - JWDA, Todd Marshall, Robin McDaniel, Ray Miller" "Cartridge.ModelNo" "PB5060" @@ -6769,6 +7039,13 @@ "Cartridge.Name" "Missile Demo (1998) (Ruffin Bailey) (PD)" "" +"Cartridge.MD5" "53e03df47e76329b701641f8bdc206f5" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "53f147b9746fdc997c62f3dd67888ee5" "Cartridge.Manufacturer" "Activision, Bob Whitehead" "Cartridge.ModelNo" "AG-011" @@ -6955,6 +7232,14 @@ "Cartridge.Name" "Robotfindskitten2600 (26-04-2003) (Jeremy Penner)" "" +"Cartridge.MD5" "56f72247eb9ebfd33bfd0cca23ab7ef4" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) v4 (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "571c6d9bc71cb97617422851f787f8fe" "Cartridge.Manufacturer" "Activision, David Crane - Ariola" "Cartridge.ModelNo" "EAG-004, PAG-004 - 711 004-715" @@ -7183,6 +7468,13 @@ "Cartridge.Note" "AKA Video Pinball" "" +"Cartridge.MD5" "5a4205aeedd3b0588f973f38bbd9dfd4" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "5a5390f91437af9951a5f8455b61cd43" "Cartridge.Manufacturer" "Retroactive" "Cartridge.Name" "Qb (0.11) (Retroactive) (PAL)" @@ -7337,6 +7629,13 @@ "Cartridge.Name" "Pitfall! (says 1985) [h1]" "" +"Cartridge.MD5" "5bbb75b49b2bccef9c91ff84bb249c80" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Trak-Ball Hack v1.15 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "5bc9998b7e9a970e31d2cb60e8696cc4" "Cartridge.Manufacturer" "Jack Kortkamp" "Cartridge.Name" "Borgwars Asteroids (2003) (Jack Kortkamp) (Hack)" @@ -7790,6 +8089,7 @@ "Cartridge.Name" "Video Olympics (1977) (Atari)" "Cartridge.Note" "Uses the Paddle Controllers" "Controller.Left" "PADDLES_IAXDR" +"Controller.Right" "PADDLES_IAXDR" "Controller.SwapPaddles" "YES" "Controller.MouseAxis" "AUTO 60" "" @@ -7861,6 +8161,14 @@ "Cartridge.Name" "Euchre (Release Candidate 2) (NTSC) (01-10-2002) (Erik Eid)" "" +"Cartridge.MD5" "6238ac888871fec301d1b9fc4fc613c9" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Mouse Hack v1.0 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controllers" +"Controller.Left" "ATARIMOUSE" +"Controller.Right" "ATARIMOUSE" +"" + "Cartridge.MD5" "624e0a77f9ec67d628211aaf24d8aea6" "Cartridge.Manufacturer" "Panda" "Cartridge.ModelNo" "108" @@ -8386,6 +8694,14 @@ "Cartridge.Rarity" "Hack" "" +"Cartridge.MD5" "67f90d74fd0b72fdc6d9b92436780ea9" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Atari Trak-Ball) (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "6803fa7c2c094b428b859a58dc1dd06a" "Cartridge.Manufacturer" "Retroactive" "Cartridge.Name" "Qb (0.11) (Retroactive)" @@ -8405,6 +8721,14 @@ "Display.YStart" "49" "" +"Cartridge.MD5" "6833c26f385e866f3a0fa0dff311216e" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "683bb0d0f0c5df58557fba9dffc32c40" "Cartridge.Manufacturer" "Arcadia Corporation, Scott Nelson" "Cartridge.ModelNo" "AR-4300" @@ -8480,6 +8804,13 @@ "Cartridge.Rarity" "New Release" "" +"Cartridge.MD5" "68c938a2a2b45c37db50509f1037fe6e" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Mouse) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "68cd2adc6b1fc9a1f263ab4561112f30" "Cartridge.Manufacturer" "Thomas Jentzsch" "Cartridge.Name" "Boulderdash Demo (09-12-2002) (TJ)" @@ -8523,6 +8854,13 @@ "Display.Phosphor" "YES" "" +"Cartridge.MD5" "6936aa6763835f62ac13d1aaa79b9f91" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "6979f30204149be3e227558cffe21c1d" "Cartridge.Manufacturer" "Atari" "Cartridge.ModelNo" "CX26163P" @@ -8566,6 +8904,13 @@ "Cartridge.Name" "Maze Demo 1 (PD)" "" +"Cartridge.MD5" "69edfb4e1810a523311b3e250fc1e275" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Command Atari Trak-Ball Hack v1.3 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "69fac82cd2312dd9ce5d90e22e2f070a" "Cartridge.Manufacturer" "Spectravision - Spectravideo - Quelle" "Cartridge.ModelNo" "SA-202 - 412.851 8" @@ -9107,6 +9452,13 @@ "Cartridge.Note" "AKA Amidar" "" +"Cartridge.MD5" "70a43fbdb1c039283ee5048d99842469" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "70a8480cfaf08776e5420365732159d2" "Cartridge.Manufacturer" "Rob Kudla" "Cartridge.Name" "Horizontally Scrolling Playfield Thing (Rob Kudla) (PD)" @@ -9265,6 +9617,14 @@ "Cartridge.Name" "KC Munckin (29-01-2003) (J. Parlee)" "" +"Cartridge.MD5" "72a63bcb5eb31bd0fd5e98ed05125ec1" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Trak-Ball Hack v1.15 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "72bda70c75dfa2365b3f8894bace9e6a" "Cartridge.Manufacturer" "Thomas Jentzsch" "Cartridge.Name" "Atlantis (TJ) (Hack)" @@ -9462,6 +9822,13 @@ "Controller.MouseAxis" "AUTO 55" "" +"Cartridge.MD5" "752da1c0acd7d132ccfb0b1067f53cf6" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "753375d183c713cfa0aa7298d1f3067b" "Cartridge.Manufacturer" "Arcadia Corporation, Steve Hales, Stephen Harland Landrum" "Cartridge.ModelNo" "AR-4102" @@ -9685,6 +10052,7 @@ "Cartridge.Name" "Video Olympics (1977) (Atari) (PAL)" "Cartridge.Note" "Uses the Paddle Controllers" "Controller.Left" "PADDLES_IAXDR" +"Controller.Right" "PADDLES_IAXDR" "Controller.SwapPaddles" "YES" "Controller.MouseAxis" "AUTO 60" "" @@ -9702,6 +10070,14 @@ "Cartridge.Name" "Title Match Pro Wrestling (1989) (Activision)" "" +"Cartridge.MD5" "784abfdb31d5341e5bd404d8d2a71c3b" +"Cartridge.Manufacturer" "Alessandro Ciceri" +"Cartridge.Name" "MagiCard (TV format conversion) (alex_79) (PAL)" +"Cartridge.Note" "MagiCard PAL conversion hack" +"Controller.Left" "KEYBOARD" +"Controller.Right" "KEYBOARD" +"" + "Cartridge.MD5" "7860716fa5dbc0fffab93fb9a4cb4132" "Cartridge.Name" "Hangman Monkey Wordlist (Hack)" "Cartridge.Note" "Hack of Hangman" @@ -9963,12 +10339,27 @@ "Display.Height" "222" "" +"Cartridge.MD5" "7b4be337ac4d73eda75c848355f6f480" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) (Y Inverted) (PAL60) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "7b5207e68ee85b16998bea861987c690" "Cartridge.Manufacturer" "Atari, Carol Shaw" "Cartridge.ModelNo" "CX26163P" "Cartridge.Name" "3-D Tic-Tac-Toe (32 in 1) (1988) (Atari) (PAL)" "" +"Cartridge.MD5" "7b57318c489ff178f7ff500da1ec9e8c" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "7b6f3348dbf71ada88db0fdaf7feefe0" "Cartridge.Name" "3-D Corridor (Pink Spiral) (31-03-2003) (AD)" "" @@ -10086,6 +10477,14 @@ "Cartridge.Rarity" "Prototype" "" +"Cartridge.MD5" "7cf3a9267cdb95aba91abc5838d61cc5" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "7d0b49ea4fe3a5f1e119a6d14843db17" "Cartridge.Manufacturer" "Gameworld, J. Ray Dettling" "Cartridge.ModelNo" "133-008" @@ -10120,6 +10519,13 @@ "Cartridge.Rarity" "Prototype" "" +"Cartridge.MD5" "7d8287e8423a56d4f8cef10435d97179" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "7d903411807704e725cf3fafbeb97255" "Cartridge.Manufacturer" "Imagic, Rob Fulop" "Cartridge.ModelNo" "720104-1A, 720104-1B, IA3204" @@ -10478,6 +10884,13 @@ "Cartridge.Rarity" "Prototype" "" +"Cartridge.MD5" "80f7bf7418a462e8687ecefeaf6eb9c2" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "8101efafcf0af32fedda4579c941e6f4" "Cartridge.Name" "Okie Dokie (4K) (PD)" "Cartridge.Rarity" "New Release" @@ -11342,6 +11755,14 @@ "Cartridge.Name" "Poker Squares (V0.27) (2001) (B. Watson)" "" +"Cartridge.MD5" "8c146c61817edd376bc1354c7f1ddc63" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) (Y Inverted) (PAL60) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "8c2fa33048f055f38358d51eefe417db" "Cartridge.Manufacturer" "Home Vision - Gem International Corp. - VDI" "Cartridge.ModelNo" "VCS83137" @@ -11385,6 +11806,13 @@ "Display.Phosphor" "YES" "" +"Cartridge.MD5" "8ccf63141a029603572d1056e772990e" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "8cd26dcf249456fe4aeb8db42d49df74" "Cartridge.Manufacturer" "Atari - Imagineering, Dan Kichen" "Cartridge.ModelNo" "CX26139" @@ -11535,6 +11963,14 @@ "Cartridge.Name" "Euchre (20-07-2001) (Eric Eid) (PD)" "" +"Cartridge.MD5" "8ef96ace4a1d6dfb65926c1e868b0188" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "8f33bce5ba1053dcf4cea9c1c69981e4" "Cartridge.Name" "Jawbreaker (Unknown) (PAL) [a]" "" @@ -11640,6 +12076,13 @@ "Display.YStart" "30" "" +"Cartridge.MD5" "90a3c3255f2a54225cdcb50831f8793a" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "90b1799dddb8bf748ee286d22e609480" "Cartridge.Name" "Ship Demo (PD)" "" @@ -11891,6 +12334,14 @@ "Display.Phosphor" "YES" "" +"Cartridge.MD5" "93db185c3b3dc382f3aecd6a2fea7fd9" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "93dc15d15e77a7b23162467f95a5f22d" "Cartridge.Manufacturer" "CCE" "Cartridge.Name" "Sky Jinks (CCE)" @@ -11907,6 +12358,13 @@ "Cartridge.Name" "Joustpong (14-07-2002) (Kirk Israel) (PD)" "" +"Cartridge.MD5" "9433770890f087bfcf3e50122694d8c0" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) (Y Inverted) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "9436b7ad131b5a1f7753ce4309ba3dee" "Cartridge.Manufacturer" "Kyle Pittman" "Cartridge.Name" "War of The Worlds (Kyle Pittman) (Hack)" @@ -11914,6 +12372,22 @@ "Cartridge.Rarity" "Hack" "" +"Cartridge.MD5" "9446940866c9417f210f8552cf6c3078" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Amiga Mouse Hack v1.0 (PAL60) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controllers" +"Controller.Left" "AMIGAMOUSE" +"Controller.Right" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + +"Cartridge.MD5" "94507dee401b0a072a481c00d7699ffe" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Trak-Ball Hack v1.15 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "9469d18238345d87768e8965f9f4a6b2" "Cartridge.Manufacturer" "CCE" "Cartridge.Name" "Ms. Pac-Man (CCE)" @@ -12049,6 +12523,13 @@ "Cartridge.Name" "Marble Craze Song (Paul Slocum) (PD)" "" +"Cartridge.MD5" "966c955e4aaca7082d9ffb9a68e3f3ed" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "9671b658286e276cc4a3d02aa25931d2" "Cartridge.Name" "Hangman Ghost Wordlist (Hack)" "Cartridge.Note" "Hack of Hangman" @@ -12171,6 +12652,13 @@ "Cartridge.Name" "Pressure Cooker (1983) (Activision)" "" +"Cartridge.MD5" "97e47512f89e79818d988d078dc90410" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Amiga Mouse Hack v1.15 (NTSC) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "9813b9e4b8a6fd919c86a40c6bda8c93" "Cartridge.Manufacturer" "Atari" "Cartridge.ModelNo" "CX26177" @@ -12875,6 +13363,13 @@ "Cartridge.Rarity" "Prototype" "" +"Cartridge.MD5" "a2276822c772f72073a8a40a72a1ca52" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "a23ffc86804240ce77134a1c91926685" "Cartridge.Name" "Star Fire - Paulstar WIP (MP)" "" @@ -12911,6 +13406,14 @@ "Cartridge.Note" "AKA Crackpots" "" +"Cartridge.MD5" "a2d7cc2e5419a9e4ab91fdb26339b726" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Mouse) (Y Inverted) (PAL60) v4 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "a2de0fc85548871279ed2a3c1325c13e" "Cartridge.Manufacturer" "George Veeder" "Cartridge.Name" "Cat and Mouse (George Veeder) (Hack)" @@ -12928,6 +13431,14 @@ "Cartridge.Name" "Warring Worms (28-01-2002) (Billy Eno)" "" +"Cartridge.MD5" "a2f9e3b6aaa23b6dc06099cdd5b51b31" +"Cartridge.Manufacturer" "Nukey Shay" +"Cartridge.Name" "Montezuma's Revenge (Genesis) (PAL60) (F6_Conversion)" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "a302b922a8dbec47743f28b7f91d4cd8" "Cartridge.Manufacturer" "Starpath Corporation, Stephen H. Landrum" "Cartridge.ModelNo" "AR-4400" @@ -13058,6 +13569,15 @@ "Controller.Right" "KEYBOARD" "" +"Cartridge.MD5" "a484638990de7b12c62947c79dafa4c6" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Mouse Hack v1.0 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controllers" +"Controller.Left" "ATARIMOUSE" +"Controller.Right" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "a499d720e7ee35c62424de882a3351b6" "Cartridge.Manufacturer" "Sega - Beck-Tech, Steve Beck, Phat Ho" "Cartridge.ModelNo" "009-01" @@ -13721,6 +14241,14 @@ "Cartridge.Name" "Human Cannonball (32 in 1) (1988) (Atari) (PAL)" "" +"Cartridge.MD5" "ad72d616030a17634ff29ce8680d3c4c" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "ad7e97c19bd25d5aa3999430845c755b" "Cartridge.Name" "Sprite Demo 5 (PD)" "" @@ -13925,6 +14453,13 @@ "Cartridge.Name" "Marine Wars (1983) (Konami)" "" +"Cartridge.MD5" "b011d8fdc450597c0762c2c0010a9b17" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "b049fc8ac50be7c2f28418817979c637" "Cartridge.Manufacturer" "Activision - Imagineering, Dan Kitchen, David Lubar" "Cartridge.ModelNo" "EAK-048-04, EAK-048-04B" @@ -13989,6 +14524,22 @@ "Display.Phosphor" "YES" "" +"Cartridge.MD5" "b1276417fb0f79bc52e741bb8f4d8360" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Amiga Mouse Hack v1.0 (NTSC) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controllers" +"Controller.Left" "AMIGAMOUSE" +"Controller.Right" "AMIGAMOUSE" +"" + +"Cartridge.MD5" "b129d7541cff79ebe33852a83057c524" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Trak-Ball Hack v1.0 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controllers" +"Controller.Left" "TRAKBALL" +"Controller.Right" "TRAKBALL" +"" + "Cartridge.MD5" "b12a7f63787a6bb08e683837a8ed3f18" "Cartridge.Manufacturer" "Imagic, Rob Fulop" "Cartridge.ModelNo" "720000-200, 720101-1B, 720101-1C, IA3200, IA3200C, IX-006-04" @@ -14029,6 +14580,14 @@ "Cartridge.Note" "AKA Gangster Alley" "" +"Cartridge.MD5" "b182d9708e00709830caab9cf8205ca0" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "b1a6c96e9093352106bc335e96caa154" "Cartridge.Manufacturer" "Joe Grand" "Cartridge.Name" "SCSIcide Pre-release 1 (Joe Grand)" @@ -14171,6 +14730,14 @@ "Cartridge.Name" "Survival Island (2 of 3) (1983) (Arcadia)" "" +"Cartridge.MD5" "b31e9487efc06f18dfc3d7ebadf54416" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Star Wars Arcade (Atari Mouse) v4 (PAL60) (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "b31f178aa0d569cccac7959f84e0a724" "Cartridge.Manufacturer" "Atari, Jerome Domurat, Steve Woita" "Cartridge.ModelNo" "CX2699" @@ -14664,6 +15231,14 @@ "Cartridge.Note" "AKA Dragster Rennen" "" +"Cartridge.MD5" "bb2b83fff97604f74ada565e0b5bae94" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Mouse Hack v1.15 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "bb5049e4558daade0f87fed69a244c59" "Cartridge.Manufacturer" "Atari, Brad Stewart" "Cartridge.ModelNo" "CX2649, CX2649P" @@ -14688,6 +15263,13 @@ "Cartridge.Name" "Golf (208 in 1) (Unknown) (PAL)" "" +"Cartridge.MD5" "bb9112d478a1a922d2c289a752bba695" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "SpaceMaster X-7 (Amiga Mouse) (Omegamatrix)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "bb9f06b288b5275bc0d38b6731b2526a" "Cartridge.Name" "Star Fire - Meteor Dance 2 (18-11-2002) (MP)" "" @@ -14893,6 +15475,13 @@ "Cartridge.Name" "Push (V0.03) (No Illegal Opcodes) (1998) (AD)" "" +"Cartridge.MD5" "bf1970b692275b42c4ec0683588eb062" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "bf52327c2197d9d2c4544be053caded1" "Cartridge.Manufacturer" "HES" "Cartridge.ModelNo" "AG-930-04, AZ-030" @@ -15038,6 +15627,13 @@ "Cartridge.Rarity" "Hack" "" +"Cartridge.MD5" "c15042e54c7408498f051d782aaa8945" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Atari Trak-Ball) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "c150c76cbde2c9b5a97eb5399d46c64f" "Cartridge.Name" "Unknown Title (xxx00000 (200203)) (PD)" "" @@ -15202,6 +15798,20 @@ "Cartridge.Rarity" "Hack" "" +"Cartridge.MD5" "c2c8eb642765137bb82b83a65232961f" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + +"Cartridge.MD5" "c2dea467f4a02fa1f06d66f52bc12e6e" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Command Atari Trak-Ball Hack v1.3 (NTSC) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "c2fbef02b6eea37d8df3e91107f89950" "Cartridge.Manufacturer" "Champ Games" "Cartridge.ModelNo" "CG-02-N" @@ -15426,6 +16036,13 @@ "Cartridge.Rarity" "Prototype" "" +"Cartridge.MD5" "c560a3ecb7b751021953819efcfe5b41" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Ghostbusters (Genesis)" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"" + "Cartridge.MD5" "c569e57dca93d3bee115a49923057fd7" "Cartridge.Name" "Pac-Space (Pac-Man Hack)" "Display.YStart" "33" @@ -15489,6 +16106,13 @@ "Cartridge.Rarity" "Prototype" "" +"Cartridge.MD5" "c5f71dfbdca9cc96b28643ff4d06aa6f" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "c5fe45f2734afd47e27ca3b04a90213c" "Cartridge.Manufacturer" "Atari, Brad Stewart" "Cartridge.ModelNo" "CX2622, CX2622P" @@ -15696,6 +16320,15 @@ "Cartridge.Name" "Donkey Kong Junior (1987) (Atari)" "" +"Cartridge.MD5" "c90788d9aa71a78bcc78c015edb22c54" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Trak-Ball Hack v1.0 (PAL60) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controllers" +"Controller.Left" "TRAKBALL" +"Controller.Right" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "c9196e28367e46f8a55e04c27743148f" "Cartridge.Manufacturer" "Atari" "Cartridge.ModelNo" "CX26163P" @@ -16100,6 +16733,14 @@ "Cartridge.Name" "Space Instigators (V1.6) (17-10-2002) (CT)" "" +"Cartridge.MD5" "cdadb57b34438805ee322ff05bd3d43e" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "cdb81bf33d830ee4ee0606ee99e84dba" "Cartridge.Manufacturer" "Arcadia Corporation, Scott Nelson" "Cartridge.ModelNo" "AR-4300" @@ -16191,6 +16832,14 @@ "Display.Phosphor" "YES" "" +"Cartridge.MD5" "ceba7965a93c689bdecdb46a5b2ac0c1" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL60) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "cedbd67d1ff321c996051eec843f8716" "Cartridge.Manufacturer" "Ultravision" "Cartridge.ModelNo" "1044" @@ -16462,6 +17111,13 @@ "Cartridge.Name" "Lilly Adventure (1983) (Quelle) (PAL)" "" +"Cartridge.MD5" "d0e05ba5f10e3df3023c5ee787f760ef" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "d0e15a3ce322c5af60f07343594392af" "Cartridge.Manufacturer" "Amiga - Video Soft" "Cartridge.ModelNo" "3125" @@ -17067,6 +17723,13 @@ "Cartridge.Note" "AKA Les guerriers de l'espace" "" +"Cartridge.MD5" "d968de2b4ff18bfe4a95066cde310578" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "d97e3d0b4575ce0b9a6132e19cfeac6e" "Cartridge.Manufacturer" "Fabrizio Zavagli" "Cartridge.Name" "Space Treat (061002) (PD)" @@ -17293,6 +17956,13 @@ "Cartridge.Name" "Superman (1979) (Atari) (PAL)" "" +"Cartridge.MD5" "dbba14a0f69f0e13fdccb3fde3baedca" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "dbc7485ad5814d466de780a3e7ed3b46" "Cartridge.Manufacturer" "Kyle Pittman" "Cartridge.Name" "Pink Floyd (Kyle Pittman) (PD)" @@ -17407,6 +18077,13 @@ "Cartridge.Name" "Space Instigators (V1.9) (21-10-2002) (CT)" "" +"Cartridge.MD5" "dd13a16d14100819f79b1ce3a5bf499c" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Missile Control - Atari Mouse Hack v1.15 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "dd1422ffd538e2e33b339ebeef4f259d" "Cartridge.Manufacturer" "Atari, Tod Frye" "Cartridge.Name" "Red Vs. Blue (1981) (Atari) (Prototype)" @@ -17629,6 +18306,14 @@ "Cartridge.Name" "Solar Fox (1983) (CBS Electronics) (PAL) [a]" "" +"Cartridge.MD5" "df91277a3569344b89e6e8bd5bebc8d1" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Amiga Mouse Hack v1.0 (PAL) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controllers" +"Controller.Left" "AMIGAMOUSE" +"Controller.Right" "AMIGAMOUSE" +"" + "Cartridge.MD5" "df95e4af466c809619299f49ece92365" "Cartridge.Manufacturer" "Atari - CCW, Michael Callahan, Preston Stuart" "Cartridge.ModelNo" "CX26103" @@ -17768,8 +18453,9 @@ "Cartridge.Name" "Street Racer (1977) (Atari) (PAL)" "Cartridge.Note" "Uses the Paddle Controllers (swapped)" "Controller.Left" "PADDLES" +"Controller.Right" "PADDLES" "Controller.SwapPaddles" "YES" -"Controller.MouseAxis" "10 75" +"Controller.MouseAxis" "AUTO 75" "" "Cartridge.MD5" "e13818a5c0cb2f84dd84368070e9f099" @@ -18065,6 +18751,14 @@ "Cartridge.Rarity" "Prototype" "" +"Cartridge.MD5" "e48d3a4056ede9393586421996db1ae8" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "e49ac0ec879a0d7820bc2598fc2cfcd4" "Cartridge.Manufacturer" "CCE" "Cartridge.Name" "Kaboom! (CCE) (4K)" @@ -18181,6 +18875,14 @@ "Display.YStart" "36" "" +"Cartridge.MD5" "e59d022d524d05acc19515598c831e4d" +"Cartridge.Manufacturer" "Alessandro Ciceri" +"Cartridge.Name" "MagiCard+ (alex_79) WIP_20150118 (PAL)" +"Cartridge.Note" "MagiCard hack" +"Controller.Left" "KEYBOARD" +"Controller.Right" "KEYBOARD" +"" + "Cartridge.MD5" "e5a6e0bb7d56e2f08b237e15076e5699" "Cartridge.Name" "Color Table Display Helper (PD)" "" @@ -18532,6 +19234,14 @@ "Display.Phosphor" "YES" "" +"Cartridge.MD5" "e9db2f91efe6ff7ea3546e2c2578fb09" +"Cartridge.Manufacturer" "Omegamatrix" +"Cartridge.Name" "Millipede (Atari Mouse) v6.5 (Omegamatrix)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "e9e646f730b8400cd5da08c849ef3e3b" "Cartridge.Manufacturer" "Tron" "Cartridge.Name" "Enduro (Tron)" @@ -18712,6 +19422,13 @@ "Cartridge.Rarity" "Extremely Rare" "" +"Cartridge.MD5" "ebdc5716b85c4ff44fa357cb697d6cef" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "ebf2dff78a08733251bf3838f02f7938" "Cartridge.Manufacturer" "Commavid, Ben Burch" "Cartridge.ModelNo" "CM-010" @@ -19019,6 +19736,13 @@ "Cartridge.Name" "Tunnel Runner (1983) (CBS Electronics) [a]" "" +"Cartridge.MD5" "effa3a7ce078c6d83bf43174a7bfdb1f" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (NTSC) (Half-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "efffafc17b7cb01b9ca35324aa767364" "Cartridge.Name" "Circus Atari (Unknown)" "" @@ -19046,6 +19770,13 @@ "Cartridge.Rarity" "Prototype" "" +"Cartridge.MD5" "f0510abbfbe24ead552e92e3841f63f3" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (NTSC) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"" + "Cartridge.MD5" "f0536303f49006806bac3aec15738336" "Cartridge.Manufacturer" "Arcadia Corporation, Dennis Caswell" "Cartridge.ModelNo" "AR-4200" @@ -19105,6 +19836,14 @@ "Cartridge.Rarity" "Rare" "" +"Cartridge.MD5" "f0de4f49e95d529569e8788d5a7b4d30" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL60) (Full-Speed) (TJ)" +"Cartridge.Note" "Uses Atari Mouse Controller" +"Controller.Left" "ATARIMOUSE" +"Display.Format" "PAL60" +"" + "Cartridge.MD5" "f0e0addc07971561ab80d9abe1b8d333" "Cartridge.Manufacturer" "Imagic, Rob Fulop" "Cartridge.ModelNo" "720000-200, 720101-1B, 720101-1C, IA3200, IA3200C, IX-006-04" @@ -19248,6 +19987,13 @@ "Cartridge.Name" "Sneak 'n Peek (Unknown) (PAL)" "" +"Cartridge.MD5" "f23d19b73dac50cc6149316912b8ee53" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (PAL) (TJ)" +"Cartridge.Note" "Uses Amiga Mouse Controller" +"Controller.Left" "AMIGAMOUSE" +"" + "Cartridge.MD5" "f240ba9f8092d2e8a4c7d82c554bf509" "Cartridge.Manufacturer" "Quelle" "Cartridge.ModelNo" "463.860 7" @@ -19451,6 +20197,13 @@ "Display.Phosphor" "YES" "" +"Cartridge.MD5" "f4a09f906cc37be31224433f576d77d3" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controller" +"Controller.Left" "TRAKBALL" +"" + "Cartridge.MD5" "f4ab6bd5f80d8988141edde4c84b23b5" "Cartridge.Manufacturer" "Atari, Alan Miller" "Cartridge.ModelNo" "CX2624, CX2624P" @@ -19921,6 +20674,14 @@ "Cartridge.Sound" "STEREO" "" +"Cartridge.MD5" "f991e0670b5f67faa6b6211e9bd81b91" +"Cartridge.Manufacturer" "Nukey Shay, Omegamatrix" +"Cartridge.Name" "Double Dragon (Genesis) (PAL) V2" +"Cartridge.Note" "Genesis controller" +"Controller.Left" "GENESIS" +"Controller.Right" "GENESIS" +"" + "Cartridge.MD5" "f992a39b46aa48188fab12ad3809ae4a" "Cartridge.Name" "Sky Jinks (Unknown) (PAL) (Hack)" "Cartridge.Rarity" "Hack" @@ -20406,6 +21167,14 @@ "Controller.MouseAxis" "10" "" +"Cartridge.MD5" "ff1523783e0e76a3b0d1f7f0d1cb3050" +"Cartridge.Manufacturer" "Thomas Jentzsch" +"Cartridge.Name" "Marble Craze - Atari Trak-Ball Hack v1.0 (PAL) (TJ)" +"Cartridge.Note" "Uses Atari Trak-Ball Controllers" +"Controller.Left" "TRAKBALL" +"Controller.Right" "TRAKBALL" +"" + "Cartridge.MD5" "ff3bd0c684f7144aeaa18758d8281a78" "Cartridge.Manufacturer" "Atari, Bob Whitehead" "Cartridge.ModelNo" "CX2651" @@ -20471,767 +21240,3 @@ "Cartridge.Name" "Spitfire Attack (1983) (Milton Bradley) [h1]" "" -"Cartridge.MD5" "05c765a63e61882abd1c2d627b652225" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (NTSC) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "0619e1c3286bbfbace040b8c3ec5add2" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Millipede (Atari Trak-Ball) v6.5 (Omegamatrix)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "0891252ee4e307689febccf3cfd8a8ab" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL60) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "08ea2fdaa22e5802c839ee7dfb0483dc" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (PAL60) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "0cec9e46a25d338bf595a29aa2606516" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (PAL60) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "0d08558f34a47e4eaa39d01c8efb81f0" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Missile Control - Atari Mouse Hack v1.15 (NTSC) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "0e23d0ed4c33b2011ab4cc93a7619683" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL60) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "0effef4a341f8eebab65621c60c48787" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "12080205f669b8e7783b976f8cf3d8bb" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) v4 (Omegamatrix)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "171ebf135b13ba907f462c10d88a2c25" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (PAL60) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "18be8981b8201638f3ed8ae92bb4c215" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Missile Control - Amiga Mouse Hack v1.15 (PAL60) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "1986f864e32e3e8d198b5becf3022257" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "1bfae770e089fa81412d04eb299f4c3f" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Marble Craze - Atari Mouse Hack v1.0 (NTSC) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controllers" -"Controller.Left" "ATARIMOUSE" -"Controller.Right" "ATARIMOUSE" -"" - -"Cartridge.MD5" "1c666ba5aac19b81671357e76062989b" -"Cartridge.Manufacturer" "Nukey Shay, Omegamatrix" -"Cartridge.Name" "Double Dragon (Genesis) (PAL60) V2" -"Cartridge.Note" "Genesis controller" -"Controller.Left" "GENESIS" -"Controller.Right" "GENESIS" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "2058cf3fefad4d2bc03ed817cedddcd4" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL60) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "217b1452881264ac75126bf77b8d0db8" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (NTSC) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "2712e91f6f1dc55e90e2b14b27c042ac" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "SpaceMaster X-7 (Amiga Mouse) (PAL60) (Omegamatrix)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "27baecd618e7e53dc11f2a9c559f529d" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) v4 (Omegamatrix)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "2d38a96f92952b301eefdf25a5e6976b" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Atari Mouse) (Y_Inverted) v4 (Omegamatrix)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "2d6388a8389f1d59108fd169c3356d79" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (NTSC) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "31235a27b065c2863048fa84db330dc6" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Missile Control - Amiga Mouse Hack v1.15 (PAL) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "336ea20d38f98926919d4b4651d1a03f" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Omega Race (Genesis) V2" -"Cartridge.Note" "Genesis controller" -"Controller.Left" "GENESIS" -"" - -"Cartridge.MD5" "3974e2d1f614fbd3a092533ecae2e84d" -"Cartridge.Manufacturer" "Alessandro Ciceri" -"Cartridge.Name" "MagiCard+ (alex_79) WIP_20150118" -"Cartridge.Note" "MagiCard hack" -"Controller.Left" "KEYBOARD" -"Controller.Right" "KEYBOARD" -"" - -"Cartridge.MD5" "3a521b7e29123b2d38e34e3ff8dc255c" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (NTSC) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "4026ad38ba5ce486e88383dc27d7a46f" -"Cartridge.Manufacturer" "Nukey Shay, Omegamatrix" -"Cartridge.Name" "Double Dragon (Genesis) V2" -"Cartridge.Note" "Genesis controller" -"Controller.Left" "GENESIS" -"Controller.Right" "GENESIS" -"" - -"Cartridge.MD5" "41b554c6970b18670acc7b6baef8ed2e" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "46dc526773808c8b9bb2111f24e5704c" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "SpaceMaster X-7 (Atari Mouse) (Omegamatrix)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "471f7bdc933e8db0e44aa3dde2dd92af" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Millipede (Atari Mouse) v6.5 (Omegamatrix)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "47585c047802dd9af888b998fb921f32" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) v4 (PAL60) (Omegamatrix)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "4834b7b28ea862227ac7e40053fb52a5" -"Cartridge.Manufacturer" "Nukey Shay" -"Cartridge.Name" "Montezuma's Revenge (Genesis) (F6_Conversion)" -"Cartridge.Note" "Genesis controller" -"Controller.Left" "GENESIS" -"" - -"Cartridge.MD5" "487193a7b7fe57a1bbc2f431f628bd5f" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (NTSC) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "497c811026367c08fd838c9c59e5041d" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "SpaceMaster X-7 (Atari Trak-Ball) (Omegamatrix)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "4b379b885e2694f992c6cc932f18327f" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "SpaceMaster X-7 (Atari Mouse) (PAL60) (Omegamatrix)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "4bdf54a454470ba015a217a8f5e61320" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Millipede (Amiga Mouse) v6.5 (Omegamatrix)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "522b27a8afeb951b5a5a667f8d1a46a1" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Millipede (Amiga Mouse) v6.5 (Omegamatrix)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "533661e9bccd8a9f80ce3765f282c92f" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) (Y Inverted) v4 (Omegamatrix)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "53e03df47e76329b701641f8bdc206f5" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "56f72247eb9ebfd33bfd0cca23ab7ef4" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) v4 (PAL60) (Omegamatrix)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "5a4205aeedd3b0588f973f38bbd9dfd4" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "5bbb75b49b2bccef9c91ff84bb249c80" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Missile Control - Atari Trak-Ball Hack v1.15 (NTSC) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "6238ac888871fec301d1b9fc4fc613c9" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Marble Craze - Atari Mouse Hack v1.0 (PAL) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controllers" -"Controller.Left" "ATARIMOUSE" -"Controller.Right" "ATARIMOUSE" -"" - -"Cartridge.MD5" "67f90d74fd0b72fdc6d9b92436780ea9" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "SpaceMaster X-7 (Atari Trak-Ball) (PAL60) (Omegamatrix)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "6833c26f385e866f3a0fa0dff311216e" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL60) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "68c938a2a2b45c37db50509f1037fe6e" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Atari Mouse) v4 (Omegamatrix)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "6936aa6763835f62ac13d1aaa79b9f91" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (NTSC) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "69edfb4e1810a523311b3e250fc1e275" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Missile Command Atari Trak-Ball Hack v1.3 (PAL) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "70a43fbdb1c039283ee5048d99842469" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "72a63bcb5eb31bd0fd5e98ed05125ec1" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Missile Control - Atari Trak-Ball Hack v1.15 (PAL60) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "752da1c0acd7d132ccfb0b1067f53cf6" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "784abfdb31d5341e5bd404d8d2a71c3b" -"Cartridge.Manufacturer" "Alessandro Ciceri" -"Cartridge.Name" "MagiCard (TV format conversion) (alex_79) (PAL)" -"Cartridge.Note" "MagiCard PAL conversion hack" -"Controller.Left" "KEYBOARD" -"Controller.Right" "KEYBOARD" -"" - -"Cartridge.MD5" "7b4be337ac4d73eda75c848355f6f480" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Atari Trak-Ball) (Y Inverted) (PAL60) v4 (Omegamatrix)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "7b57318c489ff178f7ff500da1ec9e8c" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "7cf3a9267cdb95aba91abc5838d61cc5" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL60) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "7d8287e8423a56d4f8cef10435d97179" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (NTSC) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "80f7bf7418a462e8687ecefeaf6eb9c2" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (NTSC) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "8c146c61817edd376bc1354c7f1ddc63" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) (Y Inverted) (PAL60) v4 (Omegamatrix)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "8ccf63141a029603572d1056e772990e" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (NTSC) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "8ef96ace4a1d6dfb65926c1e868b0188" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (PAL60) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "90a3c3255f2a54225cdcb50831f8793a" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (PAL) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "93db185c3b3dc382f3aecd6a2fea7fd9" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.1 (PAL60) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "9433770890f087bfcf3e50122694d8c0" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Amiga Mouse) (Y Inverted) v4 (Omegamatrix)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "9446940866c9417f210f8552cf6c3078" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Marble Craze - Amiga Mouse Hack v1.0 (PAL60) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controllers" -"Controller.Left" "AMIGAMOUSE" -"Controller.Right" "AMIGAMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "94507dee401b0a072a481c00d7699ffe" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Missile Control - Atari Trak-Ball Hack v1.15 (PAL) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "966c955e4aaca7082d9ffb9a68e3f3ed" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "97e47512f89e79818d988d078dc90410" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Missile Control - Amiga Mouse Hack v1.15 (NTSC) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "a2276822c772f72073a8a40a72a1ca52" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (NTSC) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "a2d7cc2e5419a9e4ab91fdb26339b726" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Atari Mouse) (Y Inverted) (PAL60) v4 (Omegamatrix)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "a2f9e3b6aaa23b6dc06099cdd5b51b31" -"Cartridge.Manufacturer" "Nukey Shay" -"Cartridge.Name" "Montezuma's Revenge (Genesis) (PAL60) (F6_Conversion)" -"Cartridge.Note" "Genesis controller" -"Controller.Left" "GENESIS" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "a484638990de7b12c62947c79dafa4c6" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Marble Craze - Atari Mouse Hack v1.0 (PAL60) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controllers" -"Controller.Left" "ATARIMOUSE" -"Controller.Right" "ATARIMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "ad72d616030a17634ff29ce8680d3c4c" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL60) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "b011d8fdc450597c0762c2c0010a9b17" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (NTSC) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "b1276417fb0f79bc52e741bb8f4d8360" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Marble Craze - Amiga Mouse Hack v1.0 (NTSC) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controllers" -"Controller.Left" "AMIGAMOUSE" -"Controller.Right" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "b129d7541cff79ebe33852a83057c524" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Marble Craze - Atari Trak-Ball Hack v1.0 (NTSC) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controllers" -"Controller.Left" "TRAKBALL" -"Controller.Right" "TRAKBALL" -"" - -"Cartridge.MD5" "b182d9708e00709830caab9cf8205ca0" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL60) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "b31e9487efc06f18dfc3d7ebadf54416" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Star Wars Arcade (Atari Mouse) v4 (PAL60) (Omegamatrix)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "bb2b83fff97604f74ada565e0b5bae94" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Missile Control - Atari Mouse Hack v1.15 (PAL60) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "bb9112d478a1a922d2c289a752bba695" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "SpaceMaster X-7 (Amiga Mouse) (Omegamatrix)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "bf1970b692275b42c4ec0683588eb062" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Amiga Mouse Hack v1.3 (NTSC) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "c15042e54c7408498f051d782aaa8945" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Millipede (Atari Trak-Ball) v6.5 (Omegamatrix)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "c2c8eb642765137bb82b83a65232961f" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Atari Mouse Hack v1.1 (PAL) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "c2dea467f4a02fa1f06d66f52bc12e6e" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Missile Command Atari Trak-Ball Hack v1.3 (NTSC) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "c560a3ecb7b751021953819efcfe5b41" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Ghostbusters (Genesis)" -"Cartridge.Note" "Genesis controller" -"Controller.Left" "GENESIS" -"" - -"Cartridge.MD5" "c5f71dfbdca9cc96b28643ff4d06aa6f" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "c90788d9aa71a78bcc78c015edb22c54" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Marble Craze - Atari Trak-Ball Hack v1.0 (PAL60) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controllers" -"Controller.Left" "TRAKBALL" -"Controller.Right" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "cdadb57b34438805ee322ff05bd3d43e" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL60) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "ceba7965a93c689bdecdb46a5b2ac0c1" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (PAL60) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "d0e05ba5f10e3df3023c5ee787f760ef" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (PAL) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "d968de2b4ff18bfe4a95066cde310578" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (PAL) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "dbba14a0f69f0e13fdccb3fde3baedca" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Trak-Ball Hack v1.3 (NTSC) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "dd13a16d14100819f79b1ce3a5bf499c" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Missile Control - Atari Mouse Hack v1.15 (PAL) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "df91277a3569344b89e6e8bd5bebc8d1" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Marble Craze - Amiga Mouse Hack v1.0 (PAL) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controllers" -"Controller.Left" "AMIGAMOUSE" -"Controller.Right" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "e48d3a4056ede9393586421996db1ae8" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Trak-Ball Hack v1.4 (PAL60) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "e59d022d524d05acc19515598c831e4d" -"Cartridge.Manufacturer" "Alessandro Ciceri" -"Cartridge.Name" "MagiCard+ (alex_79) WIP_20150118 (PAL)" -"Cartridge.Note" "MagiCard hack" -"Controller.Left" "KEYBOARD" -"Controller.Right" "KEYBOARD" -"" - -"Cartridge.MD5" "e9db2f91efe6ff7ea3546e2c2578fb09" -"Cartridge.Manufacturer" "Omegamatrix" -"Cartridge.Name" "Millipede (Atari Mouse) v6.5 (Omegamatrix)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "ebdc5716b85c4ff44fa357cb697d6cef" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Amiga Mouse Hack v1.4 (NTSC) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "effa3a7ce078c6d83bf43174a7bfdb1f" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Centipede - Atari Mouse Hack v1.4 (NTSC) (Half-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "f0510abbfbe24ead552e92e3841f63f3" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (NTSC) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"" - -"Cartridge.MD5" "f0de4f49e95d529569e8788d5a7b4d30" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Reactor - Atari Mouse Hack v1.3 (PAL60) (Full-Speed) (TJ)" -"Cartridge.Note" "Uses Atari Mouse Controller" -"Controller.Left" "ATARIMOUSE" -"Display.Format" "PAL60" -"" - -"Cartridge.MD5" "f23d19b73dac50cc6149316912b8ee53" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Amiga Mouse Hack v1.1 (PAL) (TJ)" -"Cartridge.Note" "Uses Amiga Mouse Controller" -"Controller.Left" "AMIGAMOUSE" -"" - -"Cartridge.MD5" "f4a09f906cc37be31224433f576d77d3" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Challenge of... Nexar, The - Atari Trak-Ball Hack v1.2 (PAL) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controller" -"Controller.Left" "TRAKBALL" -"" - -"Cartridge.MD5" "f991e0670b5f67faa6b6211e9bd81b91" -"Cartridge.Manufacturer" "Nukey Shay, Omegamatrix" -"Cartridge.Name" "Double Dragon (Genesis) (PAL) V2" -"Cartridge.Note" "Genesis controller" -"Controller.Left" "GENESIS" -"Controller.Right" "GENESIS" -"" - -"Cartridge.MD5" "ff1523783e0e76a3b0d1f7f0d1cb3050" -"Cartridge.Manufacturer" "Thomas Jentzsch" -"Cartridge.Name" "Marble Craze - Atari Trak-Ball Hack v1.0 (PAL) (TJ)" -"Cartridge.Note" "Uses Atari Trak-Ball Controllers" -"Controller.Left" "TRAKBALL" -"Controller.Right" "TRAKBALL" -"" From f3a185f04a9590e2b54eff1b85362d6be1d3b17a Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Mon, 19 Nov 2018 11:08:44 -0330 Subject: [PATCH 24/30] Fixes for minor warnings from cppcheck. --- src/emucore/tia/Playfield.cxx | 2 +- src/emucore/tia/Playfield.hxx | 2 +- src/emucore/tia/TIA.hxx | 4 ++-- src/emucore/tia/frame-manager/AbstractFrameManager.cxx | 3 +++ src/emucore/tia/frame-manager/FrameLayoutDetector.cxx | 1 + src/emucore/tia/frame-manager/FrameLayoutDetector.hxx | 2 +- src/emucore/tia/frame-manager/FrameManager.hxx | 4 ++-- src/emucore/tia/frame-manager/YStartDetector.cxx | 3 +++ src/emucore/tia/frame-manager/YStartDetector.hxx | 4 ++-- 9 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/emucore/tia/Playfield.cxx b/src/emucore/tia/Playfield.cxx index 5fcde36bc..8e6de423c 100644 --- a/src/emucore/tia/Playfield.cxx +++ b/src/emucore/tia/Playfield.cxx @@ -307,7 +307,7 @@ bool Playfield::save(Serializer& out) const out.putByte(myDebugColor); out.putBool(myDebugEnabled); - out.putByte(myColorMode); + out.putByte(uInt8(myColorMode)); out.putInt(myPattern); out.putInt(myEffectivePattern); diff --git a/src/emucore/tia/Playfield.hxx b/src/emucore/tia/Playfield.hxx index b51e04390..73c820445 100644 --- a/src/emucore/tia/Playfield.hxx +++ b/src/emucore/tia/Playfield.hxx @@ -76,7 +76,7 @@ class Playfield : public Serializable private: - enum ColorMode: uInt8 {normal, score}; + enum class ColorMode: uInt8 {normal, score}; private: diff --git a/src/emucore/tia/TIA.hxx b/src/emucore/tia/TIA.hxx index 502e61bcc..669c5daba 100644 --- a/src/emucore/tia/TIA.hxx +++ b/src/emucore/tia/TIA.hxx @@ -484,13 +484,13 @@ class TIA : public Device /** * During each line, the TIA cycles through these two states. */ - enum HState {blank, frame}; + enum class HState {blank, frame}; /** * The three different modes of the priority encoder. Check TIA::renderPixel * for a precise definition. */ - enum Priority {pfp, score, normal}; + enum class Priority {pfp, score, normal}; /** * Palette and indices for fixed debug colors. diff --git a/src/emucore/tia/frame-manager/AbstractFrameManager.cxx b/src/emucore/tia/frame-manager/AbstractFrameManager.cxx index b4dc02046..1dc362e06 100644 --- a/src/emucore/tia/frame-manager/AbstractFrameManager.cxx +++ b/src/emucore/tia/frame-manager/AbstractFrameManager.cxx @@ -19,6 +19,9 @@ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AbstractFrameManager::AbstractFrameManager() : + myIsRendering(false), + myVsync(false), + myVblank(false), myLayout(FrameLayout::pal), myOnFrameStart(nullptr), myOnFrameComplete(nullptr) diff --git a/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx b/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx index 1168a51cb..34a8b8762 100644 --- a/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx +++ b/src/emucore/tia/frame-manager/FrameLayoutDetector.cxx @@ -44,6 +44,7 @@ FrameLayout FrameLayoutDetector::detectedLayout() const{ // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FrameLayoutDetector::FrameLayoutDetector() + : myState(State::waitForVsyncStart) { reset(); } diff --git a/src/emucore/tia/frame-manager/FrameLayoutDetector.hxx b/src/emucore/tia/frame-manager/FrameLayoutDetector.hxx index 39fbc51b5..fd54d107c 100644 --- a/src/emucore/tia/frame-manager/FrameLayoutDetector.hxx +++ b/src/emucore/tia/frame-manager/FrameLayoutDetector.hxx @@ -59,7 +59,7 @@ class FrameLayoutDetector: public AbstractFrameManager { /** * This frame manager only tracks frame boundaries, so we have only two states. */ - enum State { + enum class State { // Wait for VSYNC to be enabled. waitForVsyncStart, diff --git a/src/emucore/tia/frame-manager/FrameManager.hxx b/src/emucore/tia/frame-manager/FrameManager.hxx index 2aeba38b2..bb2055893 100644 --- a/src/emucore/tia/frame-manager/FrameManager.hxx +++ b/src/emucore/tia/frame-manager/FrameManager.hxx @@ -66,7 +66,7 @@ class FrameManager: public AbstractFrameManager { private: - enum State { + enum class State { waitForVsyncStart, waitForVsyncEnd, waitForFrameStart, @@ -75,7 +75,7 @@ class FrameManager: public AbstractFrameManager { private: - void setState(State state); + void setState(State state); void updateIsRendering(); diff --git a/src/emucore/tia/frame-manager/YStartDetector.cxx b/src/emucore/tia/frame-manager/YStartDetector.cxx index 5d7fe50b0..fef56713f 100644 --- a/src/emucore/tia/frame-manager/YStartDetector.cxx +++ b/src/emucore/tia/frame-manager/YStartDetector.cxx @@ -48,6 +48,9 @@ enum Metrics: uInt32 { // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - YStartDetector::YStartDetector() + : myState(State::waitForVsyncStart), + myVblankMode(VblankMode::floating), + myVblankViolated(false) { reset(); } diff --git a/src/emucore/tia/frame-manager/YStartDetector.hxx b/src/emucore/tia/frame-manager/YStartDetector.hxx index f5f4bc164..a768f49b0 100644 --- a/src/emucore/tia/frame-manager/YStartDetector.hxx +++ b/src/emucore/tia/frame-manager/YStartDetector.hxx @@ -64,7 +64,7 @@ class YStartDetector: public AbstractFrameManager { /** * Our various states. */ - enum State { + enum class State { // Wait for vsync on waitForVsyncStart, @@ -78,7 +78,7 @@ class YStartDetector: public AbstractFrameManager { /** * Have we settled on a frame start? */ - enum VblankMode { + enum class VblankMode { // We have settled on a frame start and have some hysteresis before we return to floating locked, From e36692bee32c0c8451922aa446b3ef948735257a Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 20 Nov 2018 15:39:30 -0330 Subject: [PATCH 25/30] Minor refactoring in CartDetector class. --- src/emucore/CartDetector.cxx | 217 ++++++++++++++++++----------------- src/emucore/CartDetector.hxx | 10 +- 2 files changed, 115 insertions(+), 112 deletions(-) diff --git a/src/emucore/CartDetector.cxx b/src/emucore/CartDetector.cxx index 9a16828d2..bb8fac46d 100644 --- a/src/emucore/CartDetector.cxx +++ b/src/emucore/CartDetector.cxx @@ -26,6 +26,8 @@ #include "Cart4K.hxx" #include "Cart4KSC.hxx" #include "CartAR.hxx" +#include "CartBF.hxx" +#include "CartBFSC.hxx" #include "CartBUS.hxx" #include "CartCDF.hxx" #include "CartCM.hxx" @@ -33,6 +35,8 @@ #include "CartCV.hxx" #include "CartCVPlus.hxx" #include "CartDASH.hxx" +#include "CartDF.hxx" +#include "CartDFSC.hxx" #include "CartDPC.hxx" #include "CartDPCPlus.hxx" #include "CartE0.hxx" @@ -40,10 +44,6 @@ #include "CartE78K.hxx" #include "CartEF.hxx" #include "CartEFSC.hxx" -#include "CartBF.hxx" -#include "CartBFSC.hxx" -#include "CartDF.hxx" -#include "CartDFSC.hxx" #include "CartF0.hxx" #include "CartF4.hxx" #include "CartF4SC.hxx" @@ -263,6 +263,10 @@ CartDetector::createFromImage(const BytePtr& image, uInt32 size, Bankswitch::Typ return make_unique(image, size, osystem.settings()); case Bankswitch::Type::_AR: return make_unique(image, size, osystem.settings()); + case Bankswitch::Type::_BF: + return make_unique(image, size, osystem.settings()); + case Bankswitch::Type::_BFSC: + return make_unique(image, size, osystem.settings()); case Bankswitch::Type::_BUS: return make_unique(image, size, osystem.settings()); case Bankswitch::Type::_CDF: @@ -277,6 +281,10 @@ CartDetector::createFromImage(const BytePtr& image, uInt32 size, Bankswitch::Typ return make_unique(image, size, osystem.settings()); case Bankswitch::Type::_DASH: return make_unique(image, size, osystem.settings()); + case Bankswitch::Type::_DF: + return make_unique(image, size, osystem.settings()); + case Bankswitch::Type::_DFSC: + return make_unique(image, size, osystem.settings()); case Bankswitch::Type::_DPC: return make_unique(image, size, osystem.settings()); case Bankswitch::Type::_DPCP: @@ -291,14 +299,6 @@ CartDetector::createFromImage(const BytePtr& image, uInt32 size, Bankswitch::Typ return make_unique(image, size, osystem.settings()); case Bankswitch::Type::_EFSC: return make_unique(image, size, osystem.settings()); - case Bankswitch::Type::_BF: - return make_unique(image, size, osystem.settings()); - case Bankswitch::Type::_BFSC: - return make_unique(image, size, osystem.settings()); - case Bankswitch::Type::_DF: - return make_unique(image, size, osystem.settings()); - case Bankswitch::Type::_DFSC: - return make_unique(image, size, osystem.settings()); case Bankswitch::Type::_F0: return make_unique(image, size, osystem.settings()); case Bankswitch::Type::_F4: @@ -340,7 +340,7 @@ Bankswitch::Type CartDetector::autodetectType(const BytePtr& image, uInt32 size) // Guess type based on size Bankswitch::Type type = Bankswitch::Type::_AUTO; - if(isProbablyCVPlus(image,size)) + if(isProbablyCVPlus(image, size)) { type = Bankswitch::Type::_CVP; } @@ -564,23 +564,6 @@ bool CartDetector::isProbablySC(const BytePtr& image, uInt32 size) return true; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDetector::isProbably4KSC(const BytePtr& image, uInt32 size) -{ - // We check if the first 256 bytes are identical *and* if there's - // an "SC" signature for one of our larger SC types at 1FFA. - - uInt8 first = image[0]; - for(uInt32 i = 1; i < 256; ++i) - if(image[i] != first) - return false; - - if((image[size-6]=='S') && (image[size-5]=='C')) - return true; - - return false; -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartDetector::isProbablyARM(const BytePtr& image, uInt32 size) { @@ -635,8 +618,8 @@ bool CartDetector::isProbably3E(const BytePtr& image, uInt32 size) bool CartDetector::isProbably3EPlus(const BytePtr& image, uInt32 size) { // 3E+ cart is identified key 'TJ3E' in the ROM - uInt8 signature[] = { 'T', 'J', '3', 'E' }; - return searchForBytes(image.get(), size, signature, 4, 1); + uInt8 tj3e[] = { 'T', 'J', '3', 'E' }; + return searchForBytes(image.get(), size, tj3e, 4, 1); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -668,11 +651,70 @@ bool CartDetector::isProbably4A50(const BytePtr& image, uInt32 size) return false; } +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartDetector::isProbably4KSC(const BytePtr& image, uInt32 size) +{ + // We check if the first 256 bytes are identical *and* if there's + // an "SC" signature for one of our larger SC types at 1FFA. + + uInt8 first = image[0]; + for(uInt32 i = 1; i < 256; ++i) + if(image[i] != first) + return false; + + if((image[size-6]=='S') && (image[size-5]=='C')) + return true; + + return false; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +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 + uInt8 bf[] = { 'B', 'F', 'B', 'F' }; + uInt8 bfsc[] = { 'B', 'F', 'S', 'C' }; + if(searchForBytes(image.get()+size-8, 8, bf, 4, 1)) + { + type = Bankswitch::Type::_BF; + return true; + } + else if(searchForBytes(image.get()+size-8, 8, bfsc, 4, 1)) + { + type = Bankswitch::Type::_BFSC; + return true; + } + + return false; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartDetector::isProbablyBUS(const BytePtr& image, uInt32 size) +{ + // BUS ARM code has 2 occurrences of the string BUS + // Note: all Harmony/Melody custom drivers also contain the value + // 0x10adab1e (LOADABLE) if needed for future improvement + uInt8 bus[] = { 'B', 'U', 'S'}; + return searchForBytes(image.get(), size, bus, 3, 2); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartDetector::isProbablyCDF(const BytePtr& image, uInt32 size) +{ + // CDF ARM code has 3 occurrences of the string CDF + // Note: all Harmony/Melody custom drivers also contain the value + // 0x10adab1e (LOADABLE) if needed for future improvement + uInt8 cdf[] = { 'C', 'D', 'F' }; + return searchForBytes(image.get(), size, cdf, 3, 3); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartDetector::isProbablyCTY(const BytePtr& image, uInt32 size) { - uInt8 signature[] = { 'L', 'E', 'N', 'I', 'N' }; - return searchForBytes(image.get(), size, signature, 5, 1); + uInt8 lenin[] = { 'L', 'E', 'N', 'I', 'N' }; + return searchForBytes(image.get(), size, lenin, 5, 1); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -695,17 +737,40 @@ bool CartDetector::isProbablyCVPlus(const BytePtr& image, uInt32) { // CV+ cart is identified key 'commavidplus' @ $04 in the ROM // We inspect only this area to speed up the search - uInt8 signature[12] = { 'c', 'o', 'm', 'm', 'a', 'v', 'i', 'd', - 'p', 'l', 'u', 's' }; - return searchForBytes(image.get()+4, 24, signature, 12, 1); + uInt8 cvp[12] = { 'c', 'o', 'm', 'm', 'a', 'v', 'i', 'd', + 'p', 'l', 'u', 's' }; + return searchForBytes(image.get()+4, 24, cvp, 12, 1); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartDetector::isProbablyDASH(const BytePtr& image, uInt32 size) { // DASH cart is identified key 'TJAD' in the ROM - uInt8 signature[] = { 'T', 'J', 'A', 'D' }; - return searchForBytes(image.get(), size, signature, 4, 1); + uInt8 tjad[] = { 'T', 'J', 'A', 'D' }; + return searchForBytes(image.get(), size, tjad, 4, 1); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +bool CartDetector::isProbablyDF(const BytePtr& image, uInt32 size, + Bankswitch::Type& type) +{ + + // BF carts store strings 'DFDF' and 'DFSC' starting at address $FFF8 + // This signature is attributed to "RevEng" of AtariAge + uInt8 df[] = { 'D', 'F', 'D', 'F' }; + uInt8 dfsc[] = { 'D', 'F', 'S', 'C' }; + if(searchForBytes(image.get()+size-8, 8, df, 4, 1)) + { + type = Bankswitch::Type::_DF; + return true; + } + else if(searchForBytes(image.get()+size-8, 8, dfsc, 4, 1)) + { + type = Bankswitch::Type::_DFSC; + return true; + } + + return false; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -714,8 +779,8 @@ bool CartDetector::isProbablyDPCplus(const BytePtr& image, uInt32 size) // DPC+ ARM code has 2 occurrences of the string DPC+ // Note: all Harmony/Melody custom drivers also contain the value // 0x10adab1e (LOADABLE) if needed for future improvement - uInt8 signature[] = { 'D', 'P', 'C', '+' }; - return searchForBytes(image.get(), size, signature, 4, 2); + uInt8 dpcp[] = { 'D', 'P', 'C', '+' }; + return searchForBytes(image.get(), size, dpcp, 4, 2); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -789,7 +854,8 @@ bool CartDetector::isProbablyE78K(const BytePtr& image, uInt32 size) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDetector::isProbablyEF(const BytePtr& image, uInt32 size, Bankswitch::Type& 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 @@ -836,69 +902,6 @@ bool CartDetector::isProbablyEF(const BytePtr& image, uInt32 size, Bankswitch::T return false; } -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -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 - uInt8 bf[] = { 'B', 'F', 'B', 'F' }; - uInt8 bfsc[] = { 'B', 'F', 'S', 'C' }; - if(searchForBytes(image.get()+size-8, 8, bf, 4, 1)) - { - type = Bankswitch::Type::_BF; - return true; - } - else if(searchForBytes(image.get()+size-8, 8, bfsc, 4, 1)) - { - type = Bankswitch::Type::_BFSC; - return true; - } - - return false; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDetector::isProbablyBUS(const BytePtr& image, uInt32 size) -{ - // BUS ARM code has 2 occurrences of the string BUS - // Note: all Harmony/Melody custom drivers also contain the value - // 0x10adab1e (LOADABLE) if needed for future improvement - uInt8 bus[] = { 'B', 'U', 'S'}; - return searchForBytes(image.get(), size, bus, 3, 2); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDetector::isProbablyCDF(const BytePtr& image, uInt32 size) -{ - // CDF ARM code has 3 occurrences of the string DPC+ - // Note: all Harmony/Melody custom drivers also contain the value - // 0x10adab1e (LOADABLE) if needed for future improvement - uInt8 signature[] = { 'C', 'D', 'F' }; - return searchForBytes(image.get(), size, signature, 3, 3); -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool CartDetector::isProbablyDF(const BytePtr& image, uInt32 size, Bankswitch::Type& type) -{ - - // BF carts store strings 'DFDF' and 'DFSC' starting at address $FFF8 - // This signature is attributed to "RevEng" of AtariAge - uInt8 df[] = { 'D', 'F', 'D', 'F' }; - uInt8 dfsc[] = { 'D', 'F', 'S', 'C' }; - if(searchForBytes(image.get()+size-8, 8, df, 4, 1)) - { - type = Bankswitch::Type::_DF; - return true; - } - else if(searchForBytes(image.get()+size-8, 8, dfsc, 4, 1)) - { - type = Bankswitch::Type::_DFSC; - return true; - } - - return false; -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool CartDetector::isProbablyFA2(const BytePtr& image, uInt32) { @@ -937,8 +940,8 @@ bool CartDetector::isProbablyFE(const BytePtr& image, uInt32 size) bool CartDetector::isProbablyMDM(const BytePtr& image, uInt32 size) { // MDM cart is identified key 'MDMC' in the first 8K of ROM - uInt8 signature[] = { 'M', 'D', 'M', 'C' }; - return searchForBytes(image.get(), std::min(size, 8192u), signature, 4, 1); + uInt8 mdmc[] = { 'M', 'D', 'M', 'C' }; + return searchForBytes(image.get(), std::min(size, 8192u), mdmc, 4, 1); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/CartDetector.hxx b/src/emucore/CartDetector.hxx index 0799e4121..a78208387 100644 --- a/src/emucore/CartDetector.hxx +++ b/src/emucore/CartDetector.hxx @@ -115,11 +115,6 @@ class CartDetector */ static bool isProbablySC(const BytePtr& image, uInt32 size); - /** - Returns true if the image is probably a 4K SuperChip (128 bytes RAM) - */ - static bool isProbably4KSC(const BytePtr& image, uInt32 size); - /** Returns true if the image probably contains ARM code in the first 1K */ @@ -150,6 +145,11 @@ class CartDetector */ static bool isProbably4A50(const BytePtr& image, uInt32 size); + /** + Returns true if the image is probably a 4K SuperChip (128 bytes RAM) + */ + static bool isProbably4KSC(const BytePtr& image, uInt32 size); + /** Returns true if the image is probably a BF/BFSC bankswitching cartridge */ From 2e4340911b9b727c596bc65ac79b22f35e1cd4dd Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 2 Dec 2018 11:20:10 +0100 Subject: [PATCH 26/30] fixed #394 extended trace step count to 10000 (preliminary fix for #393) --- src/emucore/TIASurface.cxx | 7 +++++-- src/emucore/tia/TIA.cxx | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/emucore/TIASurface.cxx b/src/emucore/TIASurface.cxx index 8ca66d2fc..83dd48485 100644 --- a/src/emucore/TIASurface.cxx +++ b/src/emucore/TIASurface.cxx @@ -72,16 +72,19 @@ void TIASurface::initialize(const Console& console, const VideoMode& mode) // Phosphor mode can be enabled either globally or per-ROM int p_blend = 0; + bool enable = false; if(myOSystem.settings().getString("tv.phosphor") == "always") { p_blend = myOSystem.settings().getInt("tv.phosblend"); + enable = true; } - else if(console.properties().get(Display_Phosphor) == "YES") + else { p_blend = atoi(console.properties().get(Display_PPBlend).c_str()); + enable = console.properties().get(Display_Phosphor) == "YES"; } - enablePhosphor(p_blend != 0, p_blend); + enablePhosphor(enable, p_blend); setNTSC(NTSCFilter::Preset(myOSystem.settings().getInt("tv.filter")), false); diff --git a/src/emucore/tia/TIA.cxx b/src/emucore/tia/TIA.cxx index 757baca7b..7f45256cc 100644 --- a/src/emucore/tia/TIA.cxx +++ b/src/emucore/tia/TIA.cxx @@ -1124,7 +1124,7 @@ TIA& TIA::updateScanlineByStep() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - TIA& TIA::updateScanlineByTrace(int target) { - uInt32 count = 100; // only try up to 100 steps + uInt32 count = 10000; // only try up to 100 steps while (mySystem->m6502().getPC() != target && count-- && mySystem->m6502().execute(1)); From b06893d384f778e8d35d9f26d6aea1f350cce356 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Tue, 4 Dec 2018 13:19:57 -0330 Subject: [PATCH 27/30] Potential fix for issue #392 (input locked after exiting the debugger). --- src/emucore/EventHandler.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx index cf0923523..f0727fcca 100644 --- a/src/emucore/EventHandler.cxx +++ b/src/emucore/EventHandler.cxx @@ -1201,7 +1201,6 @@ void EventHandler::setState(EventHandlerState state) case EventHandlerState::LAUNCHER: myOverlay = &myOSystem.launcher(); enableTextEvents(true); - myEvent.clear(); break; case EventHandlerState::DEBUGGER: @@ -1225,6 +1224,9 @@ void EventHandler::setState(EventHandlerState state) // Sometimes an extraneous mouse motion event is generated // after a state change, which should be supressed mySkipMouseMotion = true; + + // Erase and pending events + myEvent.clear(); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 8ac66e7929ca1934d09e6d3e85e6341b57231324 Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Tue, 4 Dec 2018 19:44:45 +0100 Subject: [PATCH 28/30] Add threading sanity checks before critical SDL API calls. --- src/common/EventHandlerSDL2.cxx | 14 ++++++++ src/common/FBSurfaceSDL2.cxx | 18 ++++++++++ src/common/FrameBufferSDL2.cxx | 30 ++++++++++++++++ src/common/SoundSDL2.cxx | 8 +++++ src/common/ThreadDebugging.cxx | 61 +++++++++++++++++++++++++++++++++ src/common/ThreadDebugging.hxx | 58 +++++++++++++++++++++++++++++++ src/common/main.cxx | 4 +++ src/common/module.mk | 3 +- 8 files changed, 195 insertions(+), 1 deletion(-) create mode 100644 src/common/ThreadDebugging.cxx create mode 100644 src/common/ThreadDebugging.hxx diff --git a/src/common/EventHandlerSDL2.cxx b/src/common/EventHandlerSDL2.cxx index 52de79dba..80b5174e8 100644 --- a/src/common/EventHandlerSDL2.cxx +++ b/src/common/EventHandlerSDL2.cxx @@ -18,10 +18,14 @@ #include "OSystem.hxx" #include "EventHandlerSDL2.hxx" +#include "ThreadDebugging.hxx" + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EventHandlerSDL2::EventHandlerSDL2(OSystem& osystem) : EventHandler(osystem) { + ASSERT_MAIN_THREAD; + #ifdef JOYSTICK_SUPPORT if(SDL_InitSubSystem(SDL_INIT_JOYSTICK) < 0) { @@ -36,6 +40,8 @@ EventHandlerSDL2::EventHandlerSDL2(OSystem& osystem) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EventHandlerSDL2::~EventHandlerSDL2() { + ASSERT_MAIN_THREAD; + if(SDL_WasInit(SDL_INIT_JOYSTICK)) SDL_QuitSubSystem(SDL_INIT_JOYSTICK); } @@ -43,6 +49,8 @@ EventHandlerSDL2::~EventHandlerSDL2() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void EventHandlerSDL2::enableTextEvents(bool enable) { + ASSERT_MAIN_THREAD; + if(enable) SDL_StartTextInput(); else @@ -52,6 +60,8 @@ void EventHandlerSDL2::enableTextEvents(bool enable) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void EventHandlerSDL2::pollEvent() { + ASSERT_MAIN_THREAD; + while(SDL_PollEvent(&myEvent)) { switch(myEvent.type) @@ -210,6 +220,8 @@ void EventHandlerSDL2::pollEvent() EventHandlerSDL2::JoystickSDL2::JoystickSDL2(int idx) : myStick(nullptr) { + ASSERT_MAIN_THREAD; + myStick = SDL_JoystickOpen(idx); if(myStick) { @@ -231,6 +243,8 @@ EventHandlerSDL2::JoystickSDL2::JoystickSDL2(int idx) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EventHandlerSDL2::JoystickSDL2::~JoystickSDL2() { + ASSERT_MAIN_THREAD; + if(SDL_WasInit(SDL_INIT_JOYSTICK) && myStick) SDL_JoystickClose(myStick); } diff --git a/src/common/FBSurfaceSDL2.cxx b/src/common/FBSurfaceSDL2.cxx index c64b64556..d82077fa5 100644 --- a/src/common/FBSurfaceSDL2.cxx +++ b/src/common/FBSurfaceSDL2.cxx @@ -17,6 +17,8 @@ #include "FBSurfaceSDL2.hxx" +#include "ThreadDebugging.hxx" + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FBSurfaceSDL2::FBSurfaceSDL2(FrameBufferSDL2& buffer, uInt32 width, uInt32 height, const uInt32* data) @@ -36,6 +38,8 @@ FBSurfaceSDL2::FBSurfaceSDL2(FrameBufferSDL2& buffer, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FBSurfaceSDL2::~FBSurfaceSDL2() { + ASSERT_MAIN_THREAD; + if(mySurface) { SDL_FreeSurface(mySurface); @@ -48,6 +52,8 @@ FBSurfaceSDL2::~FBSurfaceSDL2() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FBSurfaceSDL2::fillRect(uInt32 x, uInt32 y, uInt32 w, uInt32 h, ColorId color) { + ASSERT_MAIN_THREAD; + // Fill the rectangle SDL_Rect tmp; tmp.x = x; @@ -125,6 +131,8 @@ void FBSurfaceSDL2::translateCoords(Int32& x, Int32& y) const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool FBSurfaceSDL2::render() { + ASSERT_MAIN_THREAD; + if(myIsVisible) { if(myTexAccess == SDL_TEXTUREACCESS_STREAMING) @@ -139,12 +147,16 @@ bool FBSurfaceSDL2::render() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FBSurfaceSDL2::invalidate() { + ASSERT_MAIN_THREAD; + SDL_FillRect(mySurface, nullptr, 0); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FBSurfaceSDL2::free() { + ASSERT_MAIN_THREAD; + if(myTexture) { SDL_DestroyTexture(myTexture); @@ -155,6 +167,8 @@ void FBSurfaceSDL2::free() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FBSurfaceSDL2::reload() { + ASSERT_MAIN_THREAD; + // Re-create texture; the underlying SDL_Surface is fine as-is SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, myInterpolate ? "1" : "0"); myTexture = SDL_CreateTexture(myFB.myRenderer, myFB.myPixelFormat->format, @@ -175,6 +189,8 @@ void FBSurfaceSDL2::reload() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FBSurfaceSDL2::resize(uInt32 width, uInt32 height) { + ASSERT_MAIN_THREAD; + // We will only resize when necessary, and not using static textures if((myTexAccess == SDL_TEXTUREACCESS_STATIC) || (mySurface && int(width) <= mySurface->w && int(height) <= mySurface->h)) @@ -191,6 +207,8 @@ void FBSurfaceSDL2::resize(uInt32 width, uInt32 height) void FBSurfaceSDL2::createSurface(uInt32 width, uInt32 height, const uInt32* data) { + ASSERT_MAIN_THREAD; + // Create a surface in the same format as the parent GL class const SDL_PixelFormat* pf = myFB.myPixelFormat; diff --git a/src/common/FrameBufferSDL2.cxx b/src/common/FrameBufferSDL2.cxx index 1ce3288fb..1bc71db6f 100644 --- a/src/common/FrameBufferSDL2.cxx +++ b/src/common/FrameBufferSDL2.cxx @@ -26,12 +26,16 @@ #include "FBSurfaceSDL2.hxx" #include "FrameBufferSDL2.hxx" +#include "ThreadDebugging.hxx" + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FrameBufferSDL2::FrameBufferSDL2(OSystem& osystem) : FrameBuffer(osystem), myWindow(nullptr), myRenderer(nullptr) { + ASSERT_MAIN_THREAD; + // Initialize SDL2 context if(SDL_InitSubSystem(SDL_INIT_VIDEO | SDL_INIT_TIMER) < 0) { @@ -52,6 +56,8 @@ FrameBufferSDL2::FrameBufferSDL2(OSystem& osystem) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FrameBufferSDL2::~FrameBufferSDL2() { + ASSERT_MAIN_THREAD; + SDL_FreeFormat(myPixelFormat); if(myRenderer) @@ -79,6 +85,8 @@ FrameBufferSDL2::~FrameBufferSDL2() void FrameBufferSDL2::queryHardware(vector& displays, VariantList& renderers) { + ASSERT_MAIN_THREAD; + // First get the maximum windowed desktop resolution SDL_DisplayMode display; int maxDisplays = SDL_GetNumVideoDisplays(); @@ -129,12 +137,16 @@ void FrameBufferSDL2::queryHardware(vector& displays, // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Int32 FrameBufferSDL2::getCurrentDisplayIndex() { + ASSERT_MAIN_THREAD; + return SDL_GetWindowDisplayIndex(myWindow); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool FrameBufferSDL2::setVideoMode(const string& title, const VideoMode& mode) { + ASSERT_MAIN_THREAD; + // If not initialized by this point, then immediately fail if(SDL_WasInit(SDL_INIT_VIDEO) == 0) return false; @@ -244,6 +256,8 @@ bool FrameBufferSDL2::setVideoMode(const string& title, const VideoMode& mode) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FrameBufferSDL2::setTitle(const string& title) { + ASSERT_MAIN_THREAD; + myScreenTitle = title; if(myWindow) @@ -253,6 +267,8 @@ void FrameBufferSDL2::setTitle(const string& title) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - string FrameBufferSDL2::about() const { + ASSERT_MAIN_THREAD; + ostringstream out; out << "Video system: " << SDL_GetCurrentVideoDriver() << endl; SDL_RendererInfo info; @@ -273,24 +289,32 @@ string FrameBufferSDL2::about() const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FrameBufferSDL2::invalidate() { + ASSERT_MAIN_THREAD; + SDL_RenderClear(myRenderer); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FrameBufferSDL2::showCursor(bool show) { + ASSERT_MAIN_THREAD; + SDL_ShowCursor(show ? SDL_ENABLE : SDL_DISABLE); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FrameBufferSDL2::grabMouse(bool grab) { + ASSERT_MAIN_THREAD; + SDL_SetRelativeMouseMode(grab ? SDL_TRUE : SDL_FALSE); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool FrameBufferSDL2::fullScreen() const { + ASSERT_MAIN_THREAD; + #ifdef WINDOWED_SUPPORT return SDL_GetWindowFlags(myWindow) & SDL_WINDOW_FULLSCREEN_DESKTOP; #else @@ -301,6 +325,8 @@ bool FrameBufferSDL2::fullScreen() const // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FrameBufferSDL2::renderToScreen() { + ASSERT_MAIN_THREAD; + // Show all changes made to the renderer SDL_RenderPresent(myRenderer); } @@ -308,6 +334,8 @@ void FrameBufferSDL2::renderToScreen() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FrameBufferSDL2::setWindowIcon() { + ASSERT_MAIN_THREAD; + #ifndef BSPF_MAC_OSX // Currently not needed for OSX #include "stella_icon.hxx" // The Stella icon @@ -329,6 +357,8 @@ unique_ptr void FrameBufferSDL2::readPixels(uInt8* pixels, uInt32 pitch, const GUI::Rect& rect) const { + ASSERT_MAIN_THREAD; + SDL_Rect r; r.x = rect.x(); r.y = rect.y(); r.w = rect.width(); r.h = rect.height(); diff --git a/src/common/SoundSDL2.cxx b/src/common/SoundSDL2.cxx index 80a3511d0..a6dd518fb 100644 --- a/src/common/SoundSDL2.cxx +++ b/src/common/SoundSDL2.cxx @@ -34,6 +34,8 @@ #include "audio/SimpleResampler.hxx" #include "audio/LanczosResampler.hxx" +#include "ThreadDebugging.hxx" + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SoundSDL2::SoundSDL2(OSystem& osystem, AudioSettings& audioSettings) : Sound(osystem), @@ -46,6 +48,8 @@ SoundSDL2::SoundSDL2(OSystem& osystem, AudioSettings& audioSettings) myUnderrun(false), myAudioSettings(audioSettings) { + ASSERT_MAIN_THREAD; + myOSystem.logMessage("SoundSDL2::SoundSDL2 started ...", 2); if (SDL_InitSubSystem(SDL_INIT_AUDIO) < 0) { @@ -69,6 +73,8 @@ SoundSDL2::SoundSDL2(OSystem& osystem, AudioSettings& audioSettings) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SoundSDL2::~SoundSDL2() { + ASSERT_MAIN_THREAD; + if (!myIsInitializedFlag) return; SDL_CloseAudioDevice(myDevice); @@ -78,6 +84,8 @@ SoundSDL2::~SoundSDL2() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool SoundSDL2::openDevice() { + ASSERT_MAIN_THREAD; + SDL_AudioSpec desired; desired.freq = myAudioSettings.sampleRate(); desired.format = AUDIO_F32SYS; diff --git a/src/common/ThreadDebugging.cxx b/src/common/ThreadDebugging.cxx new file mode 100644 index 000000000..542b29e3e --- /dev/null +++ b/src/common/ThreadDebugging.cxx @@ -0,0 +1,61 @@ +//============================================================================ +// +// 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 + +#include "ThreadDebugging.hxx" +ThreadDebuggingHelper::ThreadDebuggingHelper() + : myMainThreadIdConfigured(false) +{} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +ThreadDebuggingHelper& ThreadDebuggingHelper::instance() +{ + static ThreadDebuggingHelper instance; + + return instance; +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +void ThreadDebuggingHelper::fail(std::string message) +{ + std::cerr << message << std::endl; + + throw std::runtime_error(message); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +void ThreadDebuggingHelper::setMainThread() +{ + if (myMainThreadIdConfigured) fail("main thread already configured"); + + myMainThreadIdConfigured = true; + myMainThreadId = std::this_thread::get_id(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +void ThreadDebuggingHelper::assertMainThread() +{ + if (!myMainThreadIdConfigured) fail("main thread not configured"); + + if (std::this_thread::get_id() != myMainThreadId) fail("must be called from main thread"); +} diff --git a/src/common/ThreadDebugging.hxx b/src/common/ThreadDebugging.hxx new file mode 100644 index 000000000..7b451e352 --- /dev/null +++ b/src/common/ThreadDebugging.hxx @@ -0,0 +1,58 @@ +//============================================================================ +// +// 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 + +#ifdef DEBUG_BUILD + +#define SET_MAIN_THREAD ThreadDebuggingHelper::instance().setMainThread(); +#define ASSERT_MAIN_THREAD ThreadDebuggingHelper::instance().assertMainThread(); + +#else + +#define SET_MAIN_THREAD +#define ASSERT_MAIN_THREAD + +#endif + +class ThreadDebuggingHelper { + + public: + + void setMainThread(); + + void assertMainThread(); + + static ThreadDebuggingHelper& instance(); + + private: + + void fail(std::string message); + + ThreadDebuggingHelper(); + + std::thread::id myMainThreadId; + + bool myMainThreadIdConfigured; + + private: + + ThreadDebuggingHelper(const ThreadDebuggingHelper&) = delete; + ThreadDebuggingHelper(ThreadDebuggingHelper&&) = delete; + ThreadDebuggingHelper& operator=(const ThreadDebuggingHelper&) = delete; + ThreadDebuggingHelper& operator=(ThreadDebuggingHelper&&) = delete; +}; diff --git a/src/common/main.cxx b/src/common/main.cxx index 50414f774..1896cb124 100644 --- a/src/common/main.cxx +++ b/src/common/main.cxx @@ -31,6 +31,8 @@ #include "PNGLibrary.hxx" #include "System.hxx" +#include "ThreadDebugging.hxx" + #ifdef DEBUGGER_SUPPORT #include "Debugger.hxx" #endif @@ -47,6 +49,8 @@ int stellaMain(int argc, char* argv[]) int main(int argc, char* argv[]) #endif { + SET_MAIN_THREAD; + std::ios_base::sync_with_stdio(false); // Create the parent OSystem object diff --git a/src/common/module.mk b/src/common/module.mk index 362aeefcc..d770551b3 100644 --- a/src/common/module.mk +++ b/src/common/module.mk @@ -19,7 +19,8 @@ MODULE_OBJS := \ src/common/ZipHandler.o \ src/common/AudioQueue.o \ src/common/AudioSettings.o \ - src/common/FpsMeter.o + src/common/FpsMeter.o \ + src/common/ThreadDebugging.o MODULE_DIRS += \ src/common From f08ba16acba6bc71b9c118b872c929f9dfc96994 Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Tue, 4 Dec 2018 21:45:14 +0100 Subject: [PATCH 29/30] Handle fatal errors on main thread. --- src/common/ThreadDebugging.cxx | 15 ++---- src/common/ThreadDebugging.hxx | 9 +++- src/emucore/CartBUS.cxx | 7 +-- src/emucore/CartCDF.cxx | 7 +-- src/emucore/CartDPCPlus.cxx | 7 +-- src/emucore/DispatchResult.cxx | 6 +++ src/emucore/DispatchResult.hxx | 11 +++- src/emucore/M6502.cxx | 50 ++++++++++--------- src/emucore/OSystem.cxx | 36 ++++++++++--- src/emucore/exception/FatalEmulationError.cxx | 35 +++++++++++++ src/emucore/exception/FatalEmulationError.hxx | 39 +++++++++++++++ src/emucore/module.mk | 3 +- 12 files changed, 166 insertions(+), 59 deletions(-) create mode 100644 src/emucore/exception/FatalEmulationError.cxx create mode 100644 src/emucore/exception/FatalEmulationError.hxx diff --git a/src/common/ThreadDebugging.cxx b/src/common/ThreadDebugging.cxx index 542b29e3e..d46e83a5f 100644 --- a/src/common/ThreadDebugging.cxx +++ b/src/common/ThreadDebugging.cxx @@ -15,16 +15,14 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ -#include -#include - #include "ThreadDebugging.hxx" + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ThreadDebuggingHelper::ThreadDebuggingHelper() : myMainThreadIdConfigured(false) {} // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ThreadDebuggingHelper& ThreadDebuggingHelper::instance() { static ThreadDebuggingHelper instance; @@ -33,16 +31,14 @@ ThreadDebuggingHelper& ThreadDebuggingHelper::instance() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void ThreadDebuggingHelper::fail(std::string message) +void ThreadDebuggingHelper::fail(const string& message) { - std::cerr << message << std::endl; + cerr << message << endl; - throw std::runtime_error(message); + throw runtime_error(message); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void ThreadDebuggingHelper::setMainThread() { if (myMainThreadIdConfigured) fail("main thread already configured"); @@ -52,7 +48,6 @@ void ThreadDebuggingHelper::setMainThread() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void ThreadDebuggingHelper::assertMainThread() { if (!myMainThreadIdConfigured) fail("main thread not configured"); diff --git a/src/common/ThreadDebugging.hxx b/src/common/ThreadDebugging.hxx index 7b451e352..5da4ce083 100644 --- a/src/common/ThreadDebugging.hxx +++ b/src/common/ThreadDebugging.hxx @@ -15,8 +15,13 @@ // this file, and for a DISCLAIMER OF ALL WARRANTIES. //============================================================================ +#ifndef THREADING_DEBUGGER_HXX +#define THREADING_DEBUGGER_HXX + #include +#include "bspf.hxx" + #ifdef DEBUG_BUILD #define SET_MAIN_THREAD ThreadDebuggingHelper::instance().setMainThread(); @@ -41,7 +46,7 @@ class ThreadDebuggingHelper { private: - void fail(std::string message); + void fail(const string& message); ThreadDebuggingHelper(); @@ -56,3 +61,5 @@ class ThreadDebuggingHelper { ThreadDebuggingHelper& operator=(const ThreadDebuggingHelper&) = delete; ThreadDebuggingHelper& operator=(ThreadDebuggingHelper&&) = delete; }; + +#endif // THREADING_DEBUGGER_HXX diff --git a/src/emucore/CartBUS.cxx b/src/emucore/CartBUS.cxx index 9fb3c0744..36585931a 100644 --- a/src/emucore/CartBUS.cxx +++ b/src/emucore/CartBUS.cxx @@ -25,6 +25,7 @@ #include "TIA.hxx" #include "Thumbulator.hxx" #include "CartBUS.hxx" +#include "exception/FatalEmulationError.hxx" // Location of data within the RAM copy of the BUS Driver. #define DSxPTR 0x06D8 @@ -171,11 +172,7 @@ inline void CartridgeBUS::callFunction(uInt8 value) catch(const runtime_error& e) { if(!mySystem->autodetectMode()) { - #ifdef DEBUGGER_SUPPORT - Debugger::debugger().startWithFatalError(e.what()); - #else - cout << e.what() << endl; - #endif + FatalEmulationError::raise(e.what()); } } break; diff --git a/src/emucore/CartCDF.cxx b/src/emucore/CartCDF.cxx index f4c4a1025..1aee02f95 100644 --- a/src/emucore/CartCDF.cxx +++ b/src/emucore/CartCDF.cxx @@ -25,6 +25,7 @@ #include "Thumbulator.hxx" #include "CartCDF.hxx" #include "TIA.hxx" +#include "exception/FatalEmulationError.hxx" // Location of data within the RAM copy of the CDF Driver. // Version 0 1 @@ -166,11 +167,7 @@ inline void CartridgeCDF::callFunction(uInt8 value) catch(const runtime_error& e) { if(!mySystem->autodetectMode()) { -#ifdef DEBUGGER_SUPPORT - Debugger::debugger().startWithFatalError(e.what()); -#else - cout << e.what() << endl; -#endif + FatalEmulationError::raise(e.what()); } } break; diff --git a/src/emucore/CartDPCPlus.cxx b/src/emucore/CartDPCPlus.cxx index 131fe6679..706312f6a 100644 --- a/src/emucore/CartDPCPlus.cxx +++ b/src/emucore/CartDPCPlus.cxx @@ -22,6 +22,7 @@ #include "Thumbulator.hxx" #include "CartDPCPlus.hxx" #include "TIA.hxx" +#include "exception/FatalEmulationError.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CartridgeDPCPlus::CartridgeDPCPlus(const BytePtr& image, uInt32 size, @@ -191,11 +192,7 @@ inline void CartridgeDPCPlus::callFunction(uInt8 value) catch(const runtime_error& e) { if(!mySystem->autodetectMode()) { - #ifdef DEBUGGER_SUPPORT - Debugger::debugger().startWithFatalError(e.what()); - #else - cout << e.what() << endl; - #endif + FatalEmulationError::raise(e.what()); } } break; diff --git a/src/emucore/DispatchResult.cxx b/src/emucore/DispatchResult.cxx index 31900d9ae..5b15a50c0 100644 --- a/src/emucore/DispatchResult.cxx +++ b/src/emucore/DispatchResult.cxx @@ -53,3 +53,9 @@ void DispatchResult::setFatal(uInt64 cycles) myStatus = Status::fatal; } + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void DispatchResult::setMessage(const string& message) +{ + myMessage = message; +} diff --git a/src/emucore/DispatchResult.hxx b/src/emucore/DispatchResult.hxx index 08b3dba08..99f25ad23 100644 --- a/src/emucore/DispatchResult.hxx +++ b/src/emucore/DispatchResult.hxx @@ -34,7 +34,7 @@ class DispatchResult uInt64 getCycles() const { return myCycles; } - const string& getMessage() const { assertStatus(Status::debugger); return myMessage; } + const string& getMessage() const { assertStatus(Status::debugger, Status::fatal); return myMessage; } int getAddress() const { assertStatus(Status::debugger); return myAddress; } @@ -48,10 +48,19 @@ class DispatchResult void setFatal(uInt64 cycles); + void setMessage(const string& message); + private: void assertStatus(Status status) const; + template void assertStatus(Status status, Ts... more) const + { + if (myStatus == status) return; + + assertStatus(more...); + } + private: Status myStatus; diff --git a/src/emucore/M6502.cxx b/src/emucore/M6502.cxx index 05a5e539b..a332f8091 100644 --- a/src/emucore/M6502.cxx +++ b/src/emucore/M6502.cxx @@ -48,6 +48,7 @@ #include "System.hxx" #include "M6502.hxx" #include "DispatchResult.hxx" +#include "exception/FatalEmulationError.hxx" // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - M6502::M6502(const Settings& settings) @@ -306,19 +307,24 @@ inline void M6502::_execute(uInt64 cycles, DispatchResult& result) // Reset the peek/poke address pointers myLastPeekAddress = myLastPokeAddress = myDataAddressForPoke = 0; - icycles = 0; - // Fetch instruction at the program counter - IR = peek(PC++, DISASM_CODE); // This address represents a code section + try { + icycles = 0; - // Call code to execute the instruction - switch(IR) - { - // 6502 instruction emulation is generated by an M4 macro file - #include "M6502.ins" + // Fetch instruction at the program counter + IR = peek(PC++, DISASM_CODE); // This address represents a code section - default: - // Oops, illegal instruction executed so set fatal error flag - myExecutionStatus |= FatalErrorBit; + // Call code to execute the instruction + switch(IR) + { + // 6502 instruction emulation is generated by an M4 macro file + #include "M6502.ins" + + default: + FatalEmulationError::raise("invalid instruction"); + } + } catch (FatalEmulationError& e) { + myExecutionStatus |= FatalErrorBit; + result.setMessage(e.what()); } currentCycles = (mySystem->cycles() - previousCycles); @@ -343,6 +349,15 @@ inline void M6502::_execute(uInt64 cycles, DispatchResult& result) interruptHandler(); } + // See if a fatal error has occured + if(myExecutionStatus & FatalErrorBit) + { + // Yes, so answer that something when wrong. The message has already been set when + // the exception was handled. + result.setFatal(currentCycles); + return; + } + // See if execution has been stopped if(myExecutionStatus & StopExecutionBit) { @@ -351,18 +366,7 @@ inline void M6502::_execute(uInt64 cycles, DispatchResult& result) return; } - // See if a fatal error has occured - if(myExecutionStatus & FatalErrorBit) - { - // Yes, so answer that something when wrong - result.setFatal(currentCycles + icycles); - return; - } - - // See if we've executed the specified number of instructions - if (currentCycles >= cycles * SYSTEM_CYCLES_PER_CPU) - { - // Yes, so answer that everything finished fine + if (currentCycles >= cycles * SYSTEM_CYCLES_PER_CPU) { result.setOk(currentCycles); return; } diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index 61b2dafd8..730352c04 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -626,14 +626,34 @@ double OSystem::dispatchEmulation(EmulationWorker& emulationWorker) // Stop the worker and wait until it has finished uInt64 totalCycles = emulationWorker.stop(); -#ifdef DEBUGGER_SUPPORT - // Break or trap? -> start debugger - if (dispatchResult.getStatus() == DispatchResult::Status::debugger) myDebugger->start( - dispatchResult.getMessage(), - dispatchResult.getAddress(), - dispatchResult.wasReadTrap() - ); -#endif + // Handle the dispatch result + switch (dispatchResult.getStatus()) { + case DispatchResult::Status::ok: + break; + + case DispatchResult::Status::debugger: + #ifdef DEBUGGER_SUPPORT + myDebugger->start( + dispatchResult.getMessage(), + dispatchResult.getAddress(), + dispatchResult.wasReadTrap() + ); + #endif + + break; + + case DispatchResult::Status::fatal: + #ifdef DEBUGGER_SUPPORT + myDebugger->startWithFatalError(dispatchResult.getMessage()); + #else + throw runtime_error(dispatchResult.getMessage()); + #endif + + break; + + default: + throw runtime_error("invalid emulation dispatch result"); + } // Handle frying if (dispatchResult.getStatus() == DispatchResult::Status::ok && myEventHandler->frying()) diff --git a/src/emucore/exception/FatalEmulationError.cxx b/src/emucore/exception/FatalEmulationError.cxx new file mode 100644 index 000000000..c75b0fe6b --- /dev/null +++ b/src/emucore/exception/FatalEmulationError.cxx @@ -0,0 +1,35 @@ +//============================================================================ +// +// 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 "FatalEmulationError.hxx" + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +FatalEmulationError::FatalEmulationError(const string& message) + : myMessage(message) +{} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +const char* FatalEmulationError::what() const throw() +{ + return myMessage.c_str(); +} + +// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +void FatalEmulationError::raise(const string& message) +{ + throw FatalEmulationError(message); +} diff --git a/src/emucore/exception/FatalEmulationError.hxx b/src/emucore/exception/FatalEmulationError.hxx new file mode 100644 index 000000000..8c092b8b2 --- /dev/null +++ b/src/emucore/exception/FatalEmulationError.hxx @@ -0,0 +1,39 @@ +//============================================================================ +// +// 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 FATAL_EMULATION_ERROR_HXX +#define FATAL_EMULATION_ERROR_HXX + +#include "bspf.hxx" + +class FatalEmulationError: public std::exception { + + public: + + FatalEmulationError(const string& message); + + virtual const char* what() const throw(); + + static void raise(const string& message); + + private: + + const string myMessage; + +}; + +#endif // FATAL_EMULATION_ERROR_HXX diff --git a/src/emucore/module.mk b/src/emucore/module.mk index 778b747b1..3ea4ba691 100644 --- a/src/emucore/module.mk +++ b/src/emucore/module.mk @@ -80,7 +80,8 @@ MODULE_OBJS := \ src/emucore/Switches.o \ src/emucore/System.o \ src/emucore/TIASurface.o \ - src/emucore/Thumbulator.o + src/emucore/Thumbulator.o \ + src/emucore/exception/FatalEmulationError.o MODULE_DIRS += \ src/emucore From b58d8437329e854cb02b605368668941151b8c8e Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Wed, 5 Dec 2018 00:00:01 +0100 Subject: [PATCH 30/30] Clear fatal error flag on enetering the CPU main loop; code beautification. --- src/emucore/DispatchResult.cxx | 6 ------ src/emucore/DispatchResult.hxx | 5 ++++- src/emucore/M6502.cxx | 3 +-- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/emucore/DispatchResult.cxx b/src/emucore/DispatchResult.cxx index 5b15a50c0..02569f15a 100644 --- a/src/emucore/DispatchResult.cxx +++ b/src/emucore/DispatchResult.cxx @@ -17,12 +17,6 @@ #include "DispatchResult.hxx" -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void DispatchResult::assertStatus(Status status) const -{ - if (myStatus != status) throw runtime_error("invalid status for operation"); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool DispatchResult::isSuccess() const { diff --git a/src/emucore/DispatchResult.hxx b/src/emucore/DispatchResult.hxx index 99f25ad23..e97cb46a6 100644 --- a/src/emucore/DispatchResult.hxx +++ b/src/emucore/DispatchResult.hxx @@ -52,7 +52,10 @@ class DispatchResult private: - void assertStatus(Status status) const; + void assertStatus(Status status) const + { + if (myStatus != status) throw runtime_error("invalid status for operation"); + } template void assertStatus(Status status, Ts... more) const { diff --git a/src/emucore/M6502.cxx b/src/emucore/M6502.cxx index a332f8091..976e997b8 100644 --- a/src/emucore/M6502.cxx +++ b/src/emucore/M6502.cxx @@ -245,8 +245,7 @@ bool M6502::execute(uInt64 number) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - inline void M6502::_execute(uInt64 cycles, DispatchResult& result) { - // Clear all of the execution status bits except for the fatal error bit - myExecutionStatus &= FatalErrorBit; + myExecutionStatus = 0; #ifdef DEBUGGER_SUPPORT TIA& tia = mySystem->tia();