diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000000..8d8bb3a836 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,7 @@ +Please start a topic on the RetroPie forum before opening an issue - https://retropie.org.uk/forum/ + +This includes edit suggestions for the wiki. There are more people to help on the forum. + +Once a problem has been verified on the forum, an issue can be opened here. + +Please remove this text before posting. diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml new file mode 100644 index 0000000000..f462a27e9b --- /dev/null +++ b/.github/workflows/ccpp.yml @@ -0,0 +1,23 @@ +name: C/C++ CI + +on: + workflow_dispatch: + +jobs: + build: + + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + with: + submodules: true + - name: configure + run: | + sudo apt-get update + sudo apt-get install libsdl2-dev libfreeimage-dev libfreetype6-dev libcurl4-openssl-dev rapidjson-dev libasound2-dev libgl1-mesa-dev build-essential cmake fonts-droid-fallback libvlc-dev libvlccore-dev vlc-bin + shell: bash + - name: make + run: | + cmake . + make + shell: bash diff --git a/.github/workflows/win32.yml b/.github/workflows/win32.yml new file mode 100644 index 0000000000..f5f1d11fcb --- /dev/null +++ b/.github/workflows/win32.yml @@ -0,0 +1,141 @@ +name: Build ES for Win32 + +on: + workflow_dispatch: + +jobs: + build: + runs-on: + # https://github.com/actions/runner-images/blob/main/images/win/Windows2022-Readme.md + windows-2022 + + env: + # Build parameters for CMake + BUILD_TYPE: Release + Platform: Win32 + + defaults: + run: + shell: cmd + + steps: + # Create directories for build (used by CMake) and nuget + - name: Set up directories + working-directory: ${{runner.workspace}} + run: mkdir build nuget + + # Check-out repository under $GITHUB_WORKSPACE + # https://github.com/actions/checkout + - name: Check-out repository + uses: actions/checkout@v3 + with: + submodules: true + + # Discover location of MSBuild tool and to PATH environment variables + # https://github.com/microsoft/setup-msbuild + - name: Locate MSBuild + uses: microsoft/setup-msbuild@v1.3.1 + + # Use NuGet to download the latest libVLC. + - name: Download libVLC + working-directory: ${{runner.workspace}}/nuget + run: nuget install -ExcludeVersion VideoLAN.LibVLC.Windows + + # Use vcpkg to download and build the latest cURL + - name: Build cURL static library + run: vcpkg install curl:x86-windows-static-md + + # Use vcpkg to download and build the latest FreeImage + - name: Build FreeImage static library + run: vcpkg install freeimage:x86-windows-static-md + + # Use vcpkg to download and build the latest FreeType2 + - name: Build FreeType2 static library + run: vcpkg install freetype:x86-windows-static-md + + # Use vcpkg to download and build the latest SDL2 + - name: Build SDL2 static library + run: vcpkg install sdl2:x86-windows-static-md + + # Use vcpkg to download and build the latest RapidJSON + - name: Build RapidJSON static library + run: vcpkg install rapidjson:x86-windows-static-md + + # Setup environment variables for subsequent steps + # Note: Forward slashes are used for CMake compatibility + - name: Set up environment + run: | + set VCPKG=%VCPKG_INSTALLATION_ROOT%/installed/x86-windows-static-md + set "VCPKG=%VCPKG:\=/%" + set NUGET=${{runner.workspace}}/nuget + set "NUGET=%NUGET:\=/%" + set VLC_HOME=%NUGET%/VideoLAN.LibVLC.Windows/build/x86 + echo VCPKG=%VCPKG%>> %GITHUB_ENV% + echo NUGET=%NUGET%>> %GITHUB_ENV% + echo FREETYPE_DIR=%VCPKG%>> %GITHUB_ENV% + echo FREEIMAGE_HOME=%VCPKG%>> %GITHUB_ENV% + echo VLC_HOME=%VLC_HOME%>> %GITHUB_ENV% + echo RAPIDJSON_INCLUDE_DIRS=%VCPKG%/include>> %GITHUB_ENV% + echo CURL_INCLUDE_DIR=%VCPKG%/include>> %GITHUB_ENV% + echo SDL2_INCLUDE_DIR=%VCPKG%/include/SDL2>> %GITHUB_ENV% + echo VLC_INCLUDE_DIR=%VLC_HOME%/include>> %GITHUB_ENV% + echo CURL_LIBRARY=%VCPKG%/lib/*.lib>> %GITHUB_ENV% + echo SDL2_LIBRARY=%VCPKG%/lib/manual-link/SDL2main.lib>> %GITHUB_ENV% + echo VLC_LIBRARIES=%VLC_HOME%/libvlc*.lib>> %GITHUB_ENV% + echo VLC_VERSION=3.0.11>> %GITHUB_ENV% + + # Use CMake to create Visual Studio project in build folder + - name: Create Visual Studio project + working-directory: ${{runner.workspace}} + run: cmake ${{github.workspace}} + -B build + -A %Platform% + -DRAPIDJSON_INCLUDE_DIRS=%RAPIDJSON_INCLUDE_DIRS% + -DCURL_INCLUDE_DIR=%CURL_INCLUDE_DIR% + -DSDL2_INCLUDE_DIR=%SDL2_INCLUDE_DIR% + -DVLC_INCLUDE_DIR=%VLC_INCLUDE_DIR% + -DCURL_LIBRARY=%CURL_LIBRARY% + -DSDL2_LIBRARY=%SDL2_LIBRARY% + -DVLC_LIBRARIES=%VLC_LIBRARIES% + -DVLC_VERSION=%VLC_VERSION% + -DCMAKE_EXE_LINKER_FLAGS=/SAFESEH:NO + + # Use CMake to build project + - name: Build EmulationStation + working-directory: ${{runner.workspace}} + run: cmake --build build --config %BUILD_TYPE% + + # Copy all other dependencies into Release folder + # Note: Forward slashes are replaced with back slashes for this step + - name: Collect dependencies + working-directory: ${{github.workspace}}/Release + run: | + set "VLC_ROOT=%VLC_HOME:/=\%" + mkdir .emulationstation + xcopy ..\resources .\resources /h /i /c /k /e /r /y + copy %VLC_ROOT%\*.dll . + xcopy %VLC_ROOT%\plugins .\plugins /h /i /c /k /e /r /y + + # Create systems configuration file + - name: Create systems configuration file + working-directory: ${{github.workspace}}/Release/.emulationstation + run: | + echo ^ - - - - - - diff --git a/data/resources/busy_0.svg b/data/resources/busy_0.svg deleted file mode 100644 index 6dc4abb279..0000000000 --- a/data/resources/busy_0.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/data/resources/busy_1.svg b/data/resources/busy_1.svg deleted file mode 100644 index d130891326..0000000000 --- a/data/resources/busy_1.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/data/resources/busy_2.svg b/data/resources/busy_2.svg deleted file mode 100644 index 95862598b6..0000000000 --- a/data/resources/busy_2.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/data/resources/busy_3.svg b/data/resources/busy_3.svg deleted file mode 100644 index cf35d9cfce..0000000000 --- a/data/resources/busy_3.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/data/resources/checkbox_checked.svg b/data/resources/checkbox_checked.svg deleted file mode 100644 index 952ce80d0b..0000000000 --- a/data/resources/checkbox_checked.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources/checkbox_unchecked.svg b/data/resources/checkbox_unchecked.svg deleted file mode 100644 index a1b48e55e6..0000000000 --- a/data/resources/checkbox_unchecked.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - diff --git a/data/resources/fav_add.svg b/data/resources/fav_add.svg deleted file mode 100644 index 94aea1560a..0000000000 --- a/data/resources/fav_add.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - diff --git a/data/resources/fav_remove.svg b/data/resources/fav_remove.svg deleted file mode 100644 index c086952db1..0000000000 --- a/data/resources/fav_remove.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - diff --git a/data/resources/help/button_a.svg b/data/resources/help/button_a.svg deleted file mode 100644 index a4f8e98dd5..0000000000 --- a/data/resources/help/button_a.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/data/resources/help/button_b.svg b/data/resources/help/button_b.svg deleted file mode 100644 index 3b01f4df4f..0000000000 --- a/data/resources/help/button_b.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - diff --git a/data/resources/help/button_l.svg b/data/resources/help/button_l.svg deleted file mode 100644 index a412137347..0000000000 --- a/data/resources/help/button_l.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - diff --git a/data/resources/help/button_r.svg b/data/resources/help/button_r.svg deleted file mode 100644 index 32ab692b76..0000000000 --- a/data/resources/help/button_r.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - diff --git a/data/resources/help/button_select.svg b/data/resources/help/button_select.svg deleted file mode 100644 index 32e1676111..0000000000 --- a/data/resources/help/button_select.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - diff --git a/data/resources/help/button_start.svg b/data/resources/help/button_start.svg deleted file mode 100644 index 7ec281877a..0000000000 --- a/data/resources/help/button_start.svg +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - diff --git a/data/resources/help/button_x.svg b/data/resources/help/button_x.svg deleted file mode 100644 index 1466649dde..0000000000 --- a/data/resources/help/button_x.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/data/resources/help/button_y.svg b/data/resources/help/button_y.svg deleted file mode 100644 index c815ea3efb..0000000000 --- a/data/resources/help/button_y.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - diff --git a/data/resources/help/dpad_all.svg b/data/resources/help/dpad_all.svg deleted file mode 100644 index 411eff4199..0000000000 --- a/data/resources/help/dpad_all.svg +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources/help/dpad_down.svg b/data/resources/help/dpad_down.svg deleted file mode 100644 index 831db2aac9..0000000000 --- a/data/resources/help/dpad_down.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources/help/dpad_left.svg b/data/resources/help/dpad_left.svg deleted file mode 100644 index f0576b4698..0000000000 --- a/data/resources/help/dpad_left.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources/help/dpad_leftright.svg b/data/resources/help/dpad_leftright.svg deleted file mode 100644 index e5493582e0..0000000000 --- a/data/resources/help/dpad_leftright.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources/help/dpad_right.svg b/data/resources/help/dpad_right.svg deleted file mode 100644 index 70ddeb47e5..0000000000 --- a/data/resources/help/dpad_right.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources/help/dpad_up.svg b/data/resources/help/dpad_up.svg deleted file mode 100644 index fe2469e1d2..0000000000 --- a/data/resources/help/dpad_up.svg +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources/help/dpad_updown.svg b/data/resources/help/dpad_updown.svg deleted file mode 100644 index 6a306f9f35..0000000000 --- a/data/resources/help/dpad_updown.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources/off.svg b/data/resources/off.svg deleted file mode 100644 index 70490ee4a6..0000000000 --- a/data/resources/off.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - diff --git a/data/resources/on.svg b/data/resources/on.svg deleted file mode 100644 index ec61bdc646..0000000000 --- a/data/resources/on.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - diff --git a/data/resources/option_arrow.svg b/data/resources/option_arrow.svg deleted file mode 100644 index 36d39eb8d1..0000000000 --- a/data/resources/option_arrow.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - diff --git a/data/resources/slider_knob.svg b/data/resources/slider_knob.svg deleted file mode 100644 index 47d4e97ace..0000000000 --- a/data/resources/slider_knob.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/data/resources/splash.svg b/data/resources/splash.svg deleted file mode 100644 index 67af3660f2..0000000000 --- a/data/resources/splash.svg +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/data/resources/star_filled.svg b/data/resources/star_filled.svg deleted file mode 100644 index 11d7e0f411..0000000000 --- a/data/resources/star_filled.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - diff --git a/data/resources/star_unfilled.svg b/data/resources/star_unfilled.svg deleted file mode 100644 index d1063e40ae..0000000000 --- a/data/resources/star_unfilled.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/emulationstation.sh b/emulationstation.sh new file mode 100755 index 0000000000..c6915bafdf --- /dev/null +++ b/emulationstation.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +esdir="$(dirname $0)" +while true; do + rm -f /tmp/es-restart /tmp/es-sysrestart /tmp/es-shutdown + "$esdir/emulationstation" "$@" + ret=$? + [ -f /tmp/es-restart ] && continue + if [ -f /tmp/es-sysrestart ]; then + rm -f /tmp/es-sysrestart + sudo reboot + break + fi + if [ -f /tmp/es-shutdown ]; then + rm -f /tmp/es-shutdown + sudo poweroff + break + fi + break +done +exit $ret diff --git a/es-app/CMakeLists.txt b/es-app/CMakeLists.txt index ee7f829909..a828a462f3 100644 --- a/es-app/CMakeLists.txt +++ b/es-app/CMakeLists.txt @@ -10,6 +10,9 @@ set(ES_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/SystemData.h ${CMAKE_CURRENT_SOURCE_DIR}/src/VolumeControl.h ${CMAKE_CURRENT_SOURCE_DIR}/src/Gamelist.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/FileFilterIndex.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/SystemScreenSaver.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/CollectionSystemManager.h # GuiComponents ${CMAKE_CURRENT_SOURCE_DIR}/src/components/AsyncReqComponent.h @@ -22,15 +25,24 @@ set(ES_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiMetaDataEd.h ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGameScraper.h ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGamelistOptions.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiScreensaverOptions.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGeneralScreensaverOptions.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiVideoScreensaverOptions.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiSlideshowScreensaverOptions.h ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiMenu.h ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiSettings.h ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiScraperMulti.h ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiScraperStart.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGamelistFilter.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiCollectionSystemsOptions.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiRandomCollectionOptions.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiInfoPopup.h # Scrapers ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/Scraper.h - ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBScraper.h - ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/TheArchiveScraper.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBJSONScraper.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBJSONScraperResources.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/ScreenScraper.h # Views ${CMAKE_CURRENT_SOURCE_DIR}/src/views/gamelist/BasicGameListView.h @@ -38,8 +50,10 @@ set(ES_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/views/gamelist/IGameListView.h ${CMAKE_CURRENT_SOURCE_DIR}/src/views/gamelist/ISimpleGameListView.h ${CMAKE_CURRENT_SOURCE_DIR}/src/views/gamelist/GridGameListView.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/views/gamelist/VideoGameListView.h ${CMAKE_CURRENT_SOURCE_DIR}/src/views/SystemView.h ${CMAKE_CURRENT_SOURCE_DIR}/src/views/ViewController.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/views/UIModeController.h # Animations ${CMAKE_CURRENT_SOURCE_DIR}/src/animations/LaunchAnimation.h @@ -50,13 +64,15 @@ set(ES_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/FileData.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/FileSorts.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/MameNameMap.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/MetaData.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/PlatformId.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/ScraperCmdLine.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/SystemData.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/VolumeControl.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Gamelist.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/FileFilterIndex.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/SystemScreenSaver.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/CollectionSystemManager.cpp # GuiComponents ${CMAKE_CURRENT_SOURCE_DIR}/src/components/AsyncReqComponent.cpp @@ -68,15 +84,24 @@ set(ES_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiMetaDataEd.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGameScraper.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGamelistOptions.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiScreensaverOptions.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGeneralScreensaverOptions.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiVideoScreensaverOptions.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiSlideshowScreensaverOptions.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiMenu.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiSettings.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiScraperMulti.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiScraperStart.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiGamelistFilter.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiCollectionSystemsOptions.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiRandomCollectionOptions.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiInfoPopup.cpp # Scrapers ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/Scraper.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBScraper.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/TheArchiveScraper.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBJSONScraper.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/GamesDBJSONScraperResources.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/scrapers/ScreenScraper.cpp # Views ${CMAKE_CURRENT_SOURCE_DIR}/src/views/gamelist/BasicGameListView.cpp @@ -84,8 +109,10 @@ set(ES_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/views/gamelist/IGameListView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/views/gamelist/ISimpleGameListView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/views/gamelist/GridGameListView.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/views/gamelist/VideoGameListView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/views/SystemView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/views/ViewController.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/views/UIModeController.cpp ) #------------------------------------------------------------------------------- @@ -104,7 +131,7 @@ target_link_libraries(emulationstation ${COMMON_LIBRARIES} es-core) # special properties for Windows builds if(MSVC) - # Always compile with the "WINDOWS" subsystem to avoid console window flashing at startup + # Always compile with the "WINDOWS" subsystem to avoid console window flashing at startup # when --debug is not set (see es-core/src/main.cpp for explanation). # The console will still be shown if launched with --debug. # Note that up to CMake 2.8.10 this feature is broken: http://public.kitware.com/Bug/view.php?id=12566 @@ -133,8 +160,8 @@ SET(CPACK_RESOURCE_FILE README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Alec Lofquist ") SET(CPACK_DEBIAN_PACKAGE_SECTION "misc") SET(CPACK_DEBIAN_PACKAGE_PRIORITY "extra") -SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libsdl2-2.0-0, libboost-system1.54.0, libboost-filesystem1.54.0, libfreeimage3, libfreetype6, libcurl3, libasound2") -SET(CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS "debhelper (>= 8.0.0), cmake, g++ (>= 4.8), libsdl2-dev, libboost-system-dev, libboost-filesystem-dev, libboost-date-time-dev, libfreeimage-dev, libfreetype6-dev, libeigen3-dev, libcurl4-openssl-dev, libasound2-dev, libgl1-mesa-dev") +SET(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6, libsdl2-2.0-0, libfreeimage3, libfreetype6, libcurl3, libasound2") +SET(CPACK_DEBIAN_PACKAGE_BUILDS_DEPENDS "debhelper (>= 8.0.0), cmake, g++ (>= 4.8), libsdl2-dev, libfreeimage-dev, libfreetype6-dev, libcurl4-openssl-dev, libasound2-dev, libgl1-mesa-dev, rapidjson-dev") SET(CPACK_PACKAGE_VENDOR "emulationstation.org") SET(CPACK_PACKAGE_VERSION "2.0.0~rc1") diff --git a/es-app/src/CollectionSystemManager.cpp b/es-app/src/CollectionSystemManager.cpp new file mode 100644 index 0000000000..440abf7fa8 --- /dev/null +++ b/es-app/src/CollectionSystemManager.cpp @@ -0,0 +1,1332 @@ +#include "CollectionSystemManager.h" + +#include "components/TextListComponent.h" +#include "guis/GuiInfoPopup.h" +#include "utils/FileSystemUtil.h" +#include "utils/StringUtil.h" +#include "views/gamelist/IGameListView.h" +#include "views/gamelist/ISimpleGameListView.h" +#include "views/ViewController.h" +#include "FileData.h" +#include "FileFilterIndex.h" +#include "Log.h" +#include "Settings.h" +#include "SystemData.h" +#include "ThemeData.h" +#include +#include +#include + +/* Handling the getting, initialization, deinitialization, saving and deletion of + * a CollectionSystemManager Instance */ +CollectionSystemManager* CollectionSystemManager::sInstance = NULL; + +CollectionSystemManager::CollectionSystemManager(Window* window) : mWindow(window) +{ + CollectionSystemDecl systemDecls[] = { + //type name long name (display) default sort (key, order) theme folder isCustom + { AUTO_ALL_GAMES, "all", "all games", "name, ascending", "auto-allgames", false }, + { AUTO_LAST_PLAYED, "recent", "last played", "last played, descending", "auto-lastplayed", false }, + { AUTO_FAVORITES, "favorites", "favorites", "name, ascending", "auto-favorites", false }, + { AUTO_RANDOM, RANDOM_COLL_ID, "random", "name, ascending", "auto-random", false }, + { CUSTOM_COLLECTION, CUSTOM_COLL_ID, "collections", "name, ascending", "custom-collections", true } + }; + + // create a map + std::vector tempSystemDecl = std::vector(systemDecls, systemDecls + sizeof(systemDecls) / sizeof(systemDecls[0])); + + for (std::vector::const_iterator it = tempSystemDecl.cbegin(); it != tempSystemDecl.cend(); ++it ) + { + mCollectionSystemDeclsIndex[(*it).name] = (*it); + } + + // creating standard environment data + mCollectionEnvData = new SystemEnvironmentData; + mCollectionEnvData->mStartPath = ""; + std::vector exts; + mCollectionEnvData->mSearchExtensions = exts; + mCollectionEnvData->mLaunchCommand = ""; + std::vector allPlatformIds; + allPlatformIds.push_back(PlatformIds::PLATFORM_IGNORE); + mCollectionEnvData->mPlatformIds = allPlatformIds; + + std::string path = getCollectionsFolder(); + if(!Utils::FileSystem::exists(path)) + Utils::FileSystem::createDirectory(path); + + mIsEditingCustom = false; + mEditingCollection = "Favorites"; + mEditingCollectionSystemData = NULL; + mCustomCollectionsBundle = NULL; + mRandomCollection = NULL; +} + +CollectionSystemManager::~CollectionSystemManager() +{ + assert(sInstance == this); + removeCollectionsFromDisplayedSystems(); + + // iterate the map + for(std::map::const_iterator it = mCustomCollectionSystemsData.cbegin() ; it != mCustomCollectionSystemsData.cend() ; it++ ) + { + if (it->second.isPopulated) + { + saveCustomCollection(it->second.system); + } + delete it->second.system; + } + sInstance = NULL; +} + +CollectionSystemManager* CollectionSystemManager::get() +{ + assert(sInstance); + return sInstance; +} + +void CollectionSystemManager::init(Window* window) +{ + assert(!sInstance); + sInstance = new CollectionSystemManager(window); +} + +void CollectionSystemManager::deinit() +{ + if (sInstance) + { + delete sInstance; + } +} + +bool CollectionSystemManager::saveCustomCollection(SystemData* sys) +{ + std::string name = sys->getName(); + std::unordered_map games = sys->getRootFolder()->getChildrenByFilename(); + bool found = mCustomCollectionSystemsData.find(name) != mCustomCollectionSystemsData.cend(); + if (!found) + { + LOG(LogError) << "Couldn't find collection to save! " << name; + return false; + } + + CollectionSystemData sysData = mCustomCollectionSystemsData.at(name); + if (sysData.needsSave) + { + std::string absCollectionFn = getCustomCollectionConfigPath(name); + std::ofstream configFile; + configFile.open(absCollectionFn); + if (!configFile.good()) + { + auto const errNo = errno; + LOG(LogError) << "Failed to create file, collection not created: " << absCollectionFn << ": " << std::strerror(errNo) << " (" << errNo << ")"; + return false; + } + for(std::unordered_map::const_iterator iter = games.cbegin(); iter != games.cend(); ++iter) + { + std::string path = iter->first; + configFile << path << std::endl; + } + configFile.close(); + } + return true; +} + +/* Methods to load all Collections into memory, and handle enabling the active ones */ +// loads all Collection Systems +void CollectionSystemManager::loadCollectionSystems(bool async) +{ + initAutoCollectionSystems(); + CollectionSystemDecl decl = mCollectionSystemDeclsIndex[CUSTOM_COLL_ID]; + mCustomCollectionsBundle = createNewCollectionEntry(decl.name, decl, CollectionFlags::NONE); + // we will also load custom systems here + initCustomCollectionSystems(); + if(Settings::getInstance()->getString("CollectionSystemsAuto") != "" || Settings::getInstance()->getString("CollectionSystemsCustom") != "") + { + // Now see which ones are enabled + loadEnabledListFromSettings(); + + // add to the main System Vector, and create Views as needed + if (!async) + updateSystemsList(); + } +} + +// loads settings +void CollectionSystemManager::loadEnabledListFromSettings() +{ + // we parse the auto collection settings list + std::vector autoSelected = Utils::String::delimitedStringToVector(Settings::getInstance()->getString("CollectionSystemsAuto"), ",", true); + + // iterate the map + for(std::map::iterator it = mAutoCollectionSystemsData.begin() ; it != mAutoCollectionSystemsData.end() ; it++ ) + { + it->second.isEnabled = (std::find(autoSelected.cbegin(), autoSelected.cend(), it->first) != autoSelected.cend()); + } + + // we parse the custom collection settings list + std::vector customSelected = Utils::String::delimitedStringToVector(Settings::getInstance()->getString("CollectionSystemsCustom"), ",", true); + + // iterate the map + for(std::map::iterator it = mCustomCollectionSystemsData.begin() ; it != mCustomCollectionSystemsData.end() ; it++ ) + { + it->second.isEnabled = (std::find(customSelected.cbegin(), customSelected.cend(), it->first) != customSelected.cend()); + } +} + +// updates enabled system list in System View +void CollectionSystemManager::updateSystemsList() +{ + // remove all Collection Systems + removeCollectionsFromDisplayedSystems(); + // add custom enabled ones + addEnabledCollectionsToDisplayedSystems(&mCustomCollectionSystemsData, false); + + if(Settings::getInstance()->getBool("SortAllSystems")) + { + // sort custom individual systems with other systems + std::sort(SystemData::sSystemVector.begin(), SystemData::sSystemVector.end(), systemSort); + + // move RetroPie system to end, before auto collections + for(auto sysIt = SystemData::sSystemVector.cbegin(); sysIt != SystemData::sSystemVector.cend(); ) + { + if ((*sysIt)->getName() == "retropie") + { + SystemData* retroPieSystem = (*sysIt); + sysIt = SystemData::sSystemVector.erase(sysIt); + SystemData::sSystemVector.push_back(retroPieSystem); + break; + } + else + { + sysIt++; + } + } + } + + if(mCustomCollectionsBundle->getRootFolder()->getChildren().size() > 0) + { + mCustomCollectionsBundle->getRootFolder()->sort(getSortTypeFromString(mCollectionSystemDeclsIndex[CUSTOM_COLL_ID].defaultSort)); + SystemData::sSystemVector.push_back(mCustomCollectionsBundle); + } + + // add auto enabled ones except random + addEnabledCollectionsToDisplayedSystems(&mAutoCollectionSystemsData, false); + // finally, add random + addEnabledCollectionsToDisplayedSystems(&mAutoCollectionSystemsData, true); + + // create views for collections, before reload + for(auto sysIt = SystemData::sSystemVector.cbegin(); sysIt != SystemData::sSystemVector.cend(); sysIt++) + { + if ((*sysIt)->isCollection()) + ViewController::get()->getGameListView((*sysIt)); + } + + // if we were editing a custom collection, and it's no longer enabled, exit edit mode + if(mIsEditingCustom && !mEditingCollectionSystemData->isEnabled) + { + exitEditMode(); + } +} + +/* Methods to manage collection files related to a source FileData */ +// updates all collection files related to the source file +void CollectionSystemManager::refreshCollectionSystems(FileData* file) +{ + if (!file->getSystem()->isGameSystem() || file->getType() != GAME) + return; + + std::map allCollections; + allCollections.insert(mAutoCollectionSystemsData.cbegin(), mAutoCollectionSystemsData.cend()); + allCollections.insert(mCustomCollectionSystemsData.cbegin(), mCustomCollectionSystemsData.cend()); + + for(auto sysDataIt = allCollections.cbegin(); sysDataIt != allCollections.cend(); sysDataIt++) + { + updateCollectionSystem(file, sysDataIt->second); + } +} + +void CollectionSystemManager::updateCollectionSystem(FileData* file, CollectionSystemData sysData) +{ + if (sysData.isPopulated) + { + // collection files use the full path as key, to avoid clashes + std::string key = file->getFullPath(); + + SystemData* curSys = sysData.system; + const std::unordered_map& children = curSys->getRootFolder()->getChildrenByFilename(); + bool found = children.find(key) != children.cend(); + FileData* rootFolder = curSys->getRootFolder(); + FileFilterIndex* fileIndex = curSys->getIndex(); + std::string name = curSys->getName(); + + if (found) { + // if we found it, we need to update it + FileData* collectionEntry = children.at(key); + // remove from index, so we can re-index metadata after refreshing + fileIndex->removeFromIndex(collectionEntry); + collectionEntry->refreshMetadata(); + // found and we are removing + if (name == "favorites" && file->metadata.get("favorite") == "false") { + // need to check if still marked as favorite, if not remove + ViewController::get()->getGameListView(curSys).get()->remove(collectionEntry, false, true); + } + else + { + // re-index with new metadata + fileIndex->addToIndex(collectionEntry); + ViewController::get()->onFileChanged(collectionEntry, FILE_METADATA_CHANGED); + } + } + else + { + // we didn't find it here - we need to check if we should add it + if (name == "recent" && file->metadata.get("playcount") > "0" && includeFileInAutoCollections(file) || + name == "favorites" && file->metadata.get("favorite") == "true") { + CollectionFileData* newGame = new CollectionFileData(file, curSys); + rootFolder->addChild(newGame); + fileIndex->addToIndex(newGame); + ViewController::get()->onFileChanged(file, FILE_METADATA_CHANGED); + ViewController::get()->getGameListView(curSys)->onFileChanged(newGame, FILE_METADATA_CHANGED); + } + } + rootFolder->sort(getSortTypeFromString(mCollectionSystemDeclsIndex[name].defaultSort)); + if (name == "recent") + { + trimCollectionCount(rootFolder, LAST_PLAYED_MAX, false); + ViewController::get()->onFileChanged(rootFolder, FILE_METADATA_CHANGED); + // Force re-calculation of cursor position + ViewController::get()->getGameListView(curSys)->setViewportTop(TextListComponent::REFRESH_LIST_CURSOR_POS); + } + else + ViewController::get()->onFileChanged(rootFolder, FILE_SORTED); + } +} + +void CollectionSystemManager::trimCollectionCount(FileData* rootFolder, int limit, bool shuffle) +{ + SystemData* curSys = rootFolder->getSystem(); + while ((int)rootFolder->getChildrenListToDisplay().size() > limit) + { + std::vector games = rootFolder->getFilesRecursive(GAME, true); + if (shuffle) + std::shuffle(games.begin(), games.end(), SystemData::sURNG); + + CollectionFileData* gameToRemove = (CollectionFileData*)games.back(); + ViewController::get()->getGameListView(curSys).get()->remove(gameToRemove, false, false); + } + ViewController::get()->onFileChanged(rootFolder, FILE_REMOVED); +} + +// deletes all collection files from collection systems related to the source file +void CollectionSystemManager::deleteCollectionFiles(FileData* file) +{ + // collection files use the full path as key, to avoid clashes + std::string key = file->getFullPath(); + // find games in collection systems + std::map allCollections; + allCollections.insert(mAutoCollectionSystemsData.cbegin(), mAutoCollectionSystemsData.cend()); + allCollections.insert(mCustomCollectionSystemsData.cbegin(), mCustomCollectionSystemsData.cend()); + + for(auto sysDataIt = allCollections.begin(); sysDataIt != allCollections.end(); sysDataIt++) + { + if (sysDataIt->second.isPopulated) + { + const std::unordered_map& children = (sysDataIt->second.system)->getRootFolder()->getChildrenByFilename(); + + bool found = children.find(key) != children.cend(); + if (found) { + sysDataIt->second.needsSave = true; + FileData* collectionEntry = children.at(key); + SystemData* systemViewToUpdate = getSystemToView(sysDataIt->second.system); + ViewController::get()->getGameListView(systemViewToUpdate).get()->remove(collectionEntry, false, true); + } + } + } +} + +// returns whether the current theme is compatible with Automatic or Custom Collections +bool CollectionSystemManager::isThemeGenericCollectionCompatible(bool genericCustomCollections) +{ + std::vector cfgSys = getCollectionThemeFolders(genericCustomCollections); + for(auto sysIt = cfgSys.cbegin(); sysIt != cfgSys.cend(); sysIt++) + { + if(!themeFolderExists(*sysIt)) + return false; + } + return true; +} + +bool CollectionSystemManager::isThemeCustomCollectionCompatible(std::vector stringVector) +{ + if (isThemeGenericCollectionCompatible(true)) + return true; + + // get theme path + auto themeSets = ThemeData::getThemeSets(); + auto set = themeSets.find(Settings::getInstance()->getString("ThemeSet")); + if(set != themeSets.cend()) + { + std::string defaultThemeFilePath = set->second.path + "/theme.xml"; + if (Utils::FileSystem::exists(defaultThemeFilePath)) + { + return true; + } + } + + for(auto sysIt = stringVector.cbegin(); sysIt != stringVector.cend(); sysIt++) + { + if(!themeFolderExists(*sysIt)) + return false; + } + return true; +} + +std::string CollectionSystemManager::getValidNewCollectionName(std::string inName, int index) +{ + std::string name = inName; + const std::string infix = " (" + std::to_string(index) + ")"; + + if(index == 0) + { + size_t remove = std::string::npos; + + // get valid name + while((remove = name.find_first_not_of("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-[]() ")) != std::string::npos) + { + name.erase(remove, 1); + } + } + else + { + name += infix; + } + + if(name == "") + { + name = "New Collection"; + } + + if(name != inName) + { + LOG(LogInfo) << "Name collision, had to change name from: " << inName << " to: " << name; + } + + // get used systems in es_systems.cfg + std::vector systemsInUse = getSystemsFromConfig(); + // get folders assigned to custom collections + std::vector autoSys = getCollectionThemeFolders(false); + // get folder assigned to custom collections + std::vector customSys = getCollectionThemeFolders(true); + // get folders assigned to user collections + std::vector userSys = getUserCollectionThemeFolders(); + // add them all to the list of systems in use + systemsInUse.insert(systemsInUse.cend(), autoSys.cbegin(), autoSys.cend()); + systemsInUse.insert(systemsInUse.cend(), customSys.cbegin(), customSys.cend()); + systemsInUse.insert(systemsInUse.cend(), userSys.cbegin(), userSys.cend()); + for(auto sysIt = systemsInUse.cbegin(); sysIt != systemsInUse.cend(); sysIt++) + { + if (*sysIt == name) + { + if(index > 0) { + name = name.substr(0, name.size() - infix.size()); + } + return getValidNewCollectionName(name, index+1); + } + } + // if it matches one of the custom collections reserved names + if (mCollectionSystemDeclsIndex.find(name) != mCollectionSystemDeclsIndex.cend()) + return getValidNewCollectionName(name, index+1); + return name; +} + +void CollectionSystemManager::setEditMode(std::string collectionName, bool quiet) +{ + if (mCustomCollectionSystemsData.find(collectionName) == mCustomCollectionSystemsData.cend()) + { + LOG(LogError) << "Tried to edit a non-existing collection: " << collectionName; + return; + } + mIsEditingCustom = true; + mEditingCollection = collectionName; + + CollectionSystemData* sysData = &(mCustomCollectionSystemsData.at(mEditingCollection)); + if (!sysData->isPopulated) + { + populateCustomCollection(sysData); + } + // if it's bundled, this needs to be the bundle system + mEditingCollectionSystemData = sysData; + + if (!quiet) { + GuiInfoPopup* s = new GuiInfoPopup(mWindow, "Editing the '" + Utils::String::toUpper(collectionName) + "' Collection. Add/remove games with Y.", 8000); + mWindow->setInfoPopup(s); + } +} + +void CollectionSystemManager::exitEditMode(bool quiet) +{ + if (!quiet) { + GuiInfoPopup* s = new GuiInfoPopup(mWindow, "Finished editing the '" + Utils::String::toUpper(mEditingCollection) + "' Collection.", 4000); + mWindow->setInfoPopup(s); + } + if (mIsEditingCustom) { + mIsEditingCustom = false; + mEditingCollection = "Favorites"; + mEditingCollectionSystemData->system->onMetaDataSavePoint(); + saveCustomCollection(mEditingCollectionSystemData->system); + } +} + +int CollectionSystemManager::getPressCountInDuration() { + Uint32 now = SDL_GetTicks(); + if (now - mFirstPressMs < DOUBLE_PRESS_DETECTION_DURATION) { + return 2; + } else { + mFirstPressMs = now; + return 1; + } +} + +// adds or removes a game from a specific collection +bool CollectionSystemManager::toggleGameInCollection(FileData* file) +{ + if (file->getType() == GAME) + { + GuiInfoPopup* s; + bool adding = true; + std::string name = file->getName(); + std::string sysName = mEditingCollection; + if (mIsEditingCustom) + { + SystemData* sysData = mEditingCollectionSystemData->system; + mEditingCollectionSystemData->needsSave = true; + if (!mEditingCollectionSystemData->isPopulated) + { + populateCustomCollection(mEditingCollectionSystemData); + } + std::string key = file->getFullPath(); + FileData* rootFolder = sysData->getRootFolder(); + const std::unordered_map& children = rootFolder->getChildrenByFilename(); + bool found = children.find(key) != children.cend(); + FileFilterIndex* fileIndex = sysData->getIndex(); + std::string name = sysData->getName(); + + SystemData* systemViewToUpdate = getSystemToView(sysData); + + if (found) { + if (needDoublePress(getPressCountInDuration())) { + return true; + } + adding = false; + // if we found it, we need to remove it + FileData* collectionEntry = children.at(key); + // remove from index + fileIndex->removeFromIndex(collectionEntry); + // remove from bundle index as well, if needed + if(systemViewToUpdate != sysData) + { + systemViewToUpdate->getIndex()->removeFromIndex(collectionEntry); + } + ViewController::get()->getGameListView(systemViewToUpdate).get()->remove(collectionEntry, false, true); + } + else + { + // we didn't find it here, we should add it + CollectionFileData* newGame = new CollectionFileData(file, sysData); + rootFolder->addChild(newGame); + fileIndex->addToIndex(newGame); + // this is the biggest performance bottleneck for this process. + // this code has been here for 7 years, since this feature was added. + // I might have been playing it safe back then, but it feels unnecessary, especially given following onFileChanged to sort + // Commenting this out for now. + //ViewController::get()->getGameListView(systemViewToUpdate)->onFileChanged(newGame, FILE_METADATA_CHANGED); + rootFolder->sort(getSortTypeFromString(mEditingCollectionSystemData->decl.defaultSort)); + ViewController::get()->onFileChanged(systemViewToUpdate->getRootFolder(), FILE_SORTED); + // add to bundle index as well, if needed + if(systemViewToUpdate != sysData) + { + systemViewToUpdate->getIndex()->addToIndex(newGame); + } + } + sysData->setShuffledCacheDirty(); + updateCollectionFolderMetadata(sysData); + } + else + { + file->getSourceFileData()->getSystem()->getIndex()->removeFromIndex(file); + MetaDataList* md = &file->getSourceFileData()->metadata; + std::string value = md->get("favorite"); + if (value == "false") + { + md->set("favorite", "true"); + } + else + { + if (needDoublePress(getPressCountInDuration())) { + return true; + } + adding = false; + md->set("favorite", "false"); + } + file->getSourceFileData()->getSystem()->getIndex()->addToIndex(file); + + file->getSourceFileData()->getSystem()->onMetaDataSavePoint(); + + refreshCollectionSystems(file->getSourceFileData()); + } + if (adding) + { + s = new GuiInfoPopup(mWindow, "Added '" + Utils::String::removeParenthesis(name) + "' to '" + Utils::String::toUpper(sysName) + "'", 4000); + } + else + { + s = new GuiInfoPopup(mWindow, "Removed '" + Utils::String::removeParenthesis(name) + "' from '" + Utils::String::toUpper(sysName) + "'", 4000); + } + + mWindow->setInfoPopup(s); + return true; + } + return false; +} + + +SystemData* CollectionSystemManager::getSystemToView(SystemData* sys) +{ + SystemData* systemToView = sys; + FileData* rootFolder = sys->getRootFolder(); + + FileData* bundleRootFolder = mCustomCollectionsBundle->getRootFolder(); + const std::unordered_map& bundleChildren = bundleRootFolder->getChildrenByFilename(); + + // is the rootFolder bundled in the "My Collections" system? + bool sysFoundInBundle = bundleChildren.find(rootFolder->getKey()) != bundleChildren.cend(); + + if (sysFoundInBundle && sys->isCollection()) + { + systemToView = mCustomCollectionsBundle; + } + return systemToView; +} + +void CollectionSystemManager::recreateCollection(SystemData* sysData) +{ + CollectionSystemData* colSysData; + if (mAutoCollectionSystemsData.find(sysData->getName()) != mAutoCollectionSystemsData.end()) + { + // it's an auto collection + colSysData = &mAutoCollectionSystemsData[sysData->getName()]; + } + else if (mCustomCollectionSystemsData.find(sysData->getName()) != mCustomCollectionSystemsData.end()) + { + // it's a custom collection + colSysData = &mCustomCollectionSystemsData[sysData->getName()]; + } + else + { + LOG(LogDebug) << "Couldn't find collection to recreate in either custom or auto collections: " << sysData->getName(); + return; + } + + CollectionSystemDecl sysDecl = colSysData->decl; + FileData* rootFolder = sysData->getRootFolder(); + FileFilterIndex* index = sysData->getIndex(); + const std::unordered_map& children = rootFolder->getChildrenByFilename(); + + sysData->getIndex()->resetIndex(); + std::string name = sysData->getName(); + + SystemData* systemViewToUpdate = getSystemToView(sysData); + + // while there are games there, remove them from the view and system + while(rootFolder->getChildrenByFilename().size() > 0) + ViewController::get()->getGameListView(systemViewToUpdate).get()->remove(rootFolder->getChildrenByFilename().begin()->second, false, false); + + colSysData->isPopulated = false; + if (sysDecl.isCustom) + populateCustomCollection(colSysData); + else + populateAutoCollection(colSysData); + + rootFolder->sort(getSortTypeFromString(colSysData->decl.defaultSort)); + ViewController::get()->onFileChanged(systemViewToUpdate->getRootFolder(), FILE_SORTED); + + // Workaround to force video to play + FileData* cursor = ViewController::get()->getGameListView(systemViewToUpdate)->getCursor(); + ViewController::get()->getGameListView(systemViewToUpdate)->setCursor(cursor, true); + + +} + +/* Handles loading a collection system, creating an empty one, and populating on demand */ +// loads Automatic Collection systems (All, Favorites, Last Played, Random) +void CollectionSystemManager::initAutoCollectionSystems() +{ + for(std::map::const_iterator it = mCollectionSystemDeclsIndex.cbegin() ; it != mCollectionSystemDeclsIndex.cend() ; it++ ) + { + CollectionSystemDecl sysDecl = it->second; + if (!sysDecl.isCustom) + { + SystemData* newCol = createNewCollectionEntry(sysDecl.name, sysDecl, CollectionFlags::HOLD_IN_MAP); + if (sysDecl.type == AUTO_RANDOM) + mRandomCollection = newCol; + } + } +} + +// this may come in handy if at any point in time in the future we want to +// automatically generate metadata for a folder +void CollectionSystemManager::updateCollectionFolderMetadata(SystemData* sys) +{ + FileData* rootFolder = sys->getRootFolder(); + + std::string desc = "This collection is empty."; + std::string rating = "0"; + std::string players = "1"; + std::string releasedate = "N/A"; + std::string developer = "None"; + std::string genre = "None"; + std::string video = ""; + std::string thumbnail = ""; + std::string image = ""; + + std::unordered_map games = rootFolder->getChildrenByFilename(); + + if(games.size() > 0) + { + std::string games_list = ""; + int games_counter = 0; + for(std::unordered_map::const_iterator iter = games.cbegin(); iter != games.cend(); ++iter) + { + games_counter++; + FileData* file = iter->second; + + std::string new_rating = file->metadata.get("rating"); + std::string new_releasedate = file->metadata.get("releasedate"); + std::string new_developer = file->metadata.get("developer"); + std::string new_genre = file->metadata.get("genre"); + std::string new_players = file->metadata.get("players"); + + rating = (new_rating > rating ? (new_rating != "" ? new_rating : rating) : rating); + players = (new_players > players ? (new_players != "" ? new_players : players) : players); + releasedate = (new_releasedate < releasedate ? (new_releasedate != "" ? new_releasedate : releasedate) : releasedate); + developer = (developer == "None" ? new_developer : (new_developer != developer ? "Various" : new_developer)); + genre = (genre == "None" ? new_genre : (new_genre != genre ? "Various" : new_genre)); + + switch(games_counter) + { + case 2: + case 3: + games_list += ", "; + case 1: + games_list += "'" + file->getName() + "'"; + break; + case 4: + games_list += " among other titles."; + } + } + + desc = "This collection contains " + std::to_string(games_counter) + " game" + + (games_counter == 1 ? "" : "s") + ", including " + games_list; + + FileData* randomGame = sys->getRandomGame(); + + video = randomGame->getVideoPath(); + thumbnail = randomGame->getThumbnailPath(); + image = randomGame->getImagePath(); + } + + + rootFolder->metadata.set("desc", desc); + rootFolder->metadata.set("rating", rating); + rootFolder->metadata.set("players", players); + rootFolder->metadata.set("genre", genre); + rootFolder->metadata.set("releasedate", releasedate); + rootFolder->metadata.set("developer", developer); + rootFolder->metadata.set("video", video); + rootFolder->metadata.set("thumbnail", thumbnail); + rootFolder->metadata.set("image", image); +} + +void CollectionSystemManager::initCustomCollectionSystems() +{ + std::vector systems = getCollectionsFromConfigFolder(); + for (auto nameIt = systems.cbegin(); nameIt != systems.cend(); nameIt++) + { + addNewCustomCollection(*nameIt); + } +} + +SystemData* CollectionSystemManager::getAllGamesCollection() +{ + CollectionSystemData* allSysData = &mAutoCollectionSystemsData["all"]; + if (!allSysData->isPopulated) + { + populateAutoCollection(allSysData); + } + return allSysData->system; +} + +SystemData* CollectionSystemManager::addNewCustomCollection(std::string name, bool needsSave) +{ + CollectionSystemDecl decl = mCollectionSystemDeclsIndex[CUSTOM_COLL_ID]; + decl.themeFolder = name; + decl.name = name; + decl.longName = name; + CollectionFlags flags = CollectionFlags::HOLD_IN_MAP; + if (needsSave) + flags = flags | CollectionFlags::NEEDS_SAVE; + return createNewCollectionEntry(name, decl, flags); +} + +// creates a new, empty Collection system, based on the name and declaration +SystemData* CollectionSystemManager::createNewCollectionEntry(std::string name, CollectionSystemDecl sysDecl, const CollectionFlags flags) +{ + SystemData* newSys = new SystemData(name, sysDecl.longName, mCollectionEnvData, sysDecl.themeFolder, true); + + CollectionSystemData newCollectionData; + newCollectionData.system = newSys; + newCollectionData.decl = sysDecl; + newCollectionData.isEnabled = false; + newCollectionData.isPopulated = false; + newCollectionData.needsSave = (flags & CollectionFlags::NEEDS_SAVE) == CollectionFlags::NEEDS_SAVE ? true : false; + + if ((flags & CollectionFlags::HOLD_IN_MAP) == CollectionFlags::HOLD_IN_MAP) + { + if (!sysDecl.isCustom) + { + mAutoCollectionSystemsData[name] = newCollectionData; + } + else + { + mCustomCollectionSystemsData[name] = newCollectionData; + } + } + + return newSys; +} + +void CollectionSystemManager::addRandomGames(SystemData* newSys, SystemData* sourceSystem, FileData* rootFolder, + FileFilterIndex* index, std::map> mapsForRandomColl, int defaultValue) +{ + + int gamesForSourceSystem = defaultValue; + for (auto& m : mapsForRandomColl) + { + // m.first unused + std::map collMap = m.second; + if (collMap.find(sourceSystem->getFullName()) != collMap.end()) + { + int maxForSys = collMap[sourceSystem->getFullName()]; + // we won't add more than the max and less than 0 + gamesForSourceSystem = Math::max(Math::min(RANDOM_SYSTEM_MAX, maxForSys), 0); + break; + } + } + + // load exclusion collection + std::unordered_map exclusionMap; + std::string exclusionCollection = Settings::getInstance()->getString("RandomCollectionExclusionCollection"); + auto sysDataIt = mCustomCollectionSystemsData.find(exclusionCollection); + + if (!exclusionCollection.empty() && sysDataIt != mCustomCollectionSystemsData.end()) { + if (!sysDataIt->second.isPopulated) + { + populateCustomCollection(&(sysDataIt->second)); + } + + exclusionMap = mCustomCollectionSystemsData[exclusionCollection].system->getRootFolder()->getChildrenByFilename(); + + } + + // we do this to avoid trying to add more games than there are in the system + gamesForSourceSystem = Math::min(gamesForSourceSystem, sourceSystem->getRootFolder()->getFilesRecursive(GAME).size()); + + int startCount = rootFolder->getFilesRecursive(GAME).size(); + int endCount = startCount + gamesForSourceSystem; + int retryCount = 10; + + for (int iterCount = startCount; iterCount < endCount;) + { + FileData* randomGame = sourceSystem->getRandomGame()->getSourceFileData(); + CollectionFileData* newGame = NULL; + + if(exclusionMap.find(randomGame->getFullPath()) == exclusionMap.end()) + { + // Not in the exclusion collection + newGame = new CollectionFileData(randomGame, newSys); + rootFolder->addChild(newGame); + index->addToIndex(newGame); + } + + if (rootFolder->getFilesRecursive(GAME).size() > iterCount) + { + // added game, proceed + iterCount++; + retryCount = 10; + } + else + { + // the game already exists in the collection, let's try again + LOG(LogDebug) << "Clash: " << randomGame->getName() << " already exists or in exclusion list. Deleting and trying again"; + delete newGame; + retryCount--; + if (retryCount == 0) + { + // we give up. Either we were very unlucky, or all the games in this system are already there. + LOG(LogDebug) << "Giving up retrying: cannot add this game. Deleting and moving on."; + return; + } + } + } +} + +void CollectionSystemManager::populateRandomCollectionFromCollections(std::map> mapsForRandomColl) +{ + CollectionSystemData* sysData = &mAutoCollectionSystemsData[RANDOM_COLL_ID]; + SystemData* newSys = sysData->system; + CollectionSystemDecl sysDecl = sysData->decl; + FileData* rootFolder = newSys->getRootFolder(); + FileFilterIndex* index = newSys->getIndex(); + + // iterate the auto collections map + for(auto &c : mAutoCollectionSystemsData) + { + CollectionSystemData csd = c.second; + // we can't add games from the random collection to the random collection + if (csd.decl.type != AUTO_RANDOM) + { + // collections might not be populated + if (!csd.isPopulated) + populateAutoCollection(&csd); + + if (csd.isPopulated) + addRandomGames(newSys, csd.system, rootFolder, index, mapsForRandomColl, DEFAULT_RANDOM_COLLECTIONS_GAMES); + } + } + + // iterate the custom collections map + for(auto &c : mCustomCollectionSystemsData) + { + CollectionSystemData csd = c.second; + // collections might not be populated + if (!csd.isPopulated) + populateCustomCollection(&csd); + + if (csd.isPopulated) + addRandomGames(newSys, csd.system, rootFolder, index, mapsForRandomColl, DEFAULT_RANDOM_COLLECTIONS_GAMES); + } +} + +// populates an Automatic Collection System +void CollectionSystemManager::populateAutoCollection(CollectionSystemData* sysData) +{ + SystemData* newSys = sysData->system; + CollectionSystemDecl sysDecl = sysData->decl; + FileData* rootFolder = newSys->getRootFolder(); + FileFilterIndex* index = newSys->getIndex(); + + std::map> mapsForRandomColl; + if (sysDecl.type == AUTO_RANDOM) + { + // user may have defined a custom collection with the same name as a system name, thus keeping maps in another map + std::map randomSystems = Settings::getInstance()->getMap("RandomCollectionSystems"); + mapsForRandomColl["RandomCollectionSystems"] = randomSystems; + std::map randomAutoColl = Settings::getInstance()->getMap("RandomCollectionSystemsAuto"); + mapsForRandomColl["RandomCollectionSystemsAuto"] = randomAutoColl; + std::map randomCustColl = Settings::getInstance()->getMap("RandomCollectionSystemsCustom"); + mapsForRandomColl["RandomCollectionSystemsCustom"] = randomCustColl; + } + // Only iterate through game systems, not collections yet + for(auto sysIt = SystemData::sSystemVector.cbegin(); sysIt != SystemData::sSystemVector.cend(); sysIt++) + { + // we won't iterate all collections + if ((*sysIt)->isGameSystem() && !(*sysIt)->isCollection()) + { + if (sysDecl.type == AUTO_RANDOM) + { + addRandomGames(newSys, *sysIt, rootFolder, index, mapsForRandomColl, DEFAULT_RANDOM_SYSTEM_GAMES); + } + else + { + std::vector files = (*sysIt)->getRootFolder()->getFilesRecursive(GAME); + + for(auto gameIt = files.cbegin(); gameIt != files.cend(); gameIt++) + { + bool include = includeFileInAutoCollections(*gameIt); + switch(sysDecl.type) { + case AUTO_LAST_PLAYED: + include = include && (*gameIt)->metadata.get("playcount") > "0"; + break; + case AUTO_FAVORITES: + // we may still want to add files we don't want in auto collections in "favorites" + include = (*gameIt)->metadata.get("favorite") == "true"; + break; + case AUTO_ALL_GAMES: + break; + default: + // No-op to prevent compiler warnings + // Getting here means that the file is not part of a pre-defined collection. + include = false; + break; + } + + if (include) + { + CollectionFileData* newGame = new CollectionFileData(*gameIt, newSys); + rootFolder->addChild(newGame); + index->addToIndex(newGame); + } + } + } + } + } + + // here we finish populating the Random collection based on other Collections + if (sysDecl.type == AUTO_RANDOM) + populateRandomCollectionFromCollections(mapsForRandomColl); + + // sort before optional trimming, if collection is displayed + if (sysData->isEnabled) + rootFolder->sort(getSortTypeFromString(sysDecl.defaultSort)); + + if (sysData->isEnabled && (sysDecl.type == AUTO_LAST_PLAYED || sysDecl.type == AUTO_RANDOM)) + { + int trimValue = LAST_PLAYED_MAX; + if (sysDecl.type == AUTO_RANDOM) + trimValue = Settings::getInstance()->getInt("RandomCollectionMaxGames"); + if (trimValue > 0) + trimCollectionCount(rootFolder, trimValue, sysDecl.type == AUTO_RANDOM); + } + + sysData->isPopulated = true; +} + +// populates a Custom Collection System +void CollectionSystemManager::populateCustomCollection(CollectionSystemData* sysData) +{ + SystemData* newSys = sysData->system; + CollectionSystemDecl sysDecl = sysData->decl; + std::string path = getCustomCollectionConfigPath(newSys->getName()); + + if(!Utils::FileSystem::exists(path)) + { + LOG(LogInfo) << "Couldn't find custom collection config file at " << path; + return; + } + LOG(LogInfo) << "Loading custom collection config file at " << path; + + FileData* rootFolder = newSys->getRootFolder(); + FileFilterIndex* index = newSys->getIndex(); + + // get Configuration for this Custom System + std::ifstream input(path); + + // get all files map + std::unordered_map allFilesMap = getAllGamesCollection()->getRootFolder()->getChildrenByFilename(); + + // iterate list of files in config file + for(std::string gameKey; getline(input, gameKey); ) + { + std::unordered_map::const_iterator it = allFilesMap.find(gameKey); + if (it != allFilesMap.cend()) + { + CollectionFileData* newGame = new CollectionFileData(it->second, newSys); + rootFolder->addChild(newGame); + index->addToIndex(newGame); + } + else + { + LOG(LogInfo) << "Couldn't find game referenced at '" << gameKey << "' for system config '" << path << "'"; + } + } + rootFolder->sort(getSortTypeFromString(sysDecl.defaultSort)); + updateCollectionFolderMetadata(newSys); + sysData->isPopulated = true; +} + +/* Handle System View removal and insertion of Collections */ +void CollectionSystemManager::removeCollectionsFromDisplayedSystems() +{ + // remove all Collection Systems + for(auto sysIt = SystemData::sSystemVector.cbegin(); sysIt != SystemData::sSystemVector.cend(); ) + { + if ((*sysIt)->isCollection()) + { + sysIt = SystemData::sSystemVector.erase(sysIt); + } + else + { + sysIt++; + } + } + + // remove all custom collections in bundle + // this should not delete the objects from memory! + if (mCustomCollectionsBundle) + { + FileData* customRoot = mCustomCollectionsBundle->getRootFolder(); + std::vector mChildren = customRoot->getChildren(); + for(auto it = mChildren.cbegin(); it != mChildren.cend(); it++) + { + customRoot->removeChild(*it); + } + // clear index + mCustomCollectionsBundle->getIndex()->resetIndex(); + // remove view so it's re-created as needed + ViewController::get()->removeGameListView(mCustomCollectionsBundle); + } +} + +// The "random" collection relies on all other collections to have been initialized, so we defer its processing +void CollectionSystemManager::addEnabledCollectionsToDisplayedSystems(std::map* colSystemData, bool processRandom) +{ + // add auto enabled ones + for(std::map::iterator it = colSystemData->begin() ; it != colSystemData->end() ; it++ ) + { + + if ((!processRandom && it->second.decl.type != AUTO_RANDOM) || (processRandom && it->second.decl.type == AUTO_RANDOM)) + { + if(it->second.isEnabled) + { + // check if populated, otherwise populate + if (!it->second.isPopulated) + { + if(it->second.decl.isCustom) + populateCustomCollection(&(it->second)); + else + populateAutoCollection(&(it->second)); + } + + // check if it has its own view + if(!it->second.decl.isCustom || themeFolderExists(it->first) || !Settings::getInstance()->getBool("UseCustomCollectionsSystem")) + { + // exists theme folder, or we chose not to bundle it under the custom-collections system + // so we need to create a view + SystemData::sSystemVector.push_back(it->second.system); + } + else + { + FileData* newSysRootFolder = it->second.system->getRootFolder(); + mCustomCollectionsBundle->getRootFolder()->addChild(newSysRootFolder); + mCustomCollectionsBundle->getIndex()->importIndex(it->second.system->getIndex()); + } + } + } + } +} + +/* Auxiliary methods to get available custom collection possibilities */ +std::vector CollectionSystemManager::getSystemsFromConfig() +{ + std::vector systems; + std::string path = SystemData::getConfigPath(false); + + if(!Utils::FileSystem::exists(path)) + { + return systems; + } + + pugi::xml_document doc; + pugi::xml_parse_result res = doc.load_file(path.c_str()); + + if(!res) + { + return systems; + } + + //actually read the file + pugi::xml_node systemList = doc.child("systemList"); + + if(!systemList) + { + return systems; + } + + for(pugi::xml_node system = systemList.child("system"); system; system = system.next_sibling("system")) + { + // theme folder + std::string themeFolder = system.child("theme").text().get(); + systems.push_back(themeFolder); + } + std::sort(systems.begin(), systems.end()); + return systems; +} + +// gets all folders from the current theme path +std::vector CollectionSystemManager::getSystemsFromTheme() +{ + std::vector systems; + + auto themeSets = ThemeData::getThemeSets(); + if(themeSets.empty()) + { + // no theme sets available + return systems; + } + + std::map::const_iterator set = themeSets.find(Settings::getInstance()->getString("ThemeSet")); + if(set == themeSets.cend()) + { + // currently selected theme set is missing, so just pick the first available set + set = themeSets.cbegin(); + Settings::getInstance()->setString("ThemeSet", set->first); + } + + std::string themePath = set->second.path; + + if (Utils::FileSystem::exists(themePath)) + { + Utils::FileSystem::stringList dirContent = Utils::FileSystem::getDirContent(themePath); + + for (Utils::FileSystem::stringList::const_iterator it = dirContent.cbegin(); it != dirContent.cend(); ++it) + { + if (Utils::FileSystem::isDirectory(*it)) + { + //... here you have a directory + std::string folder = *it; + folder = folder.substr(themePath.size()+1); + + if(Utils::FileSystem::exists(set->second.getThemePath(folder))) + { + systems.push_back(folder); + } + } + } + } + std::sort(systems.begin(), systems.end()); + return systems; +} + +// returns the unused folders from current theme path +std::vector CollectionSystemManager::getUnusedSystemsFromTheme() +{ + // get used systems in es_systems.cfg + std::vector systemsInUse = getSystemsFromConfig(); + // get available folders in theme + std::vector themeSys = getSystemsFromTheme(); + // get folders assigned to custom collections + std::vector autoSys = getCollectionThemeFolders(false); + // get folder assigned to custom collections + std::vector customSys = getCollectionThemeFolders(true); + // get folders assigned to user collections + std::vector userSys = getUserCollectionThemeFolders(); + // add them all to the list of systems in use + systemsInUse.insert(systemsInUse.cend(), autoSys.cbegin(), autoSys.cend()); + systemsInUse.insert(systemsInUse.cend(), customSys.cbegin(), customSys.cend()); + systemsInUse.insert(systemsInUse.cend(), userSys.cbegin(), userSys.cend()); + + for(auto sysIt = themeSys.cbegin(); sysIt != themeSys.cend(); ) + { + if (std::find(systemsInUse.cbegin(), systemsInUse.cend(), *sysIt) != systemsInUse.cend()) + { + sysIt = themeSys.erase(sysIt); + } + else + { + sysIt++; + } + } + return themeSys; +} + +// returns which collection config files exist in the user folder +std::vector CollectionSystemManager::getCollectionsFromConfigFolder() +{ + std::vector systems; + std::string configPath = getCollectionsFolder(); + + if (Utils::FileSystem::exists(configPath)) + { + Utils::FileSystem::stringList dirContent = Utils::FileSystem::getDirContent(configPath); + for (Utils::FileSystem::stringList::const_iterator it = dirContent.cbegin(); it != dirContent.cend(); ++it) + { + if (Utils::FileSystem::isRegularFile(*it)) + { + // it's a file + std::string filename = Utils::FileSystem::getFileName(*it); + + // need to confirm filename matches config format + if (filename != "custom-.cfg" && Utils::String::startsWith(filename, "custom-") && Utils::String::endsWith(filename, ".cfg")) + { + filename = filename.substr(7, filename.size()-11); + systems.push_back(filename); + } + else + { + LOG(LogInfo) << "Found non-collection config file in collections folder: " << filename; + } + } + } + } + return systems; +} + +// returns the theme folders for Automatic Collections (All, Favorites, Last Played) or generic Custom Collections folder +std::vector CollectionSystemManager::getCollectionThemeFolders(bool custom) +{ + std::vector systems; + for(std::map::const_iterator it = mCollectionSystemDeclsIndex.cbegin() ; it != mCollectionSystemDeclsIndex.cend() ; it++ ) + { + CollectionSystemDecl sysDecl = it->second; + if (sysDecl.isCustom == custom) + { + systems.push_back(sysDecl.themeFolder); + } + } + return systems; +} + +// returns the theme folders in use for the user-defined Custom Collections +std::vector CollectionSystemManager::getUserCollectionThemeFolders() +{ + std::vector systems; + for(std::map::const_iterator it = mCustomCollectionSystemsData.cbegin() ; it != mCustomCollectionSystemsData.cend() ; it++ ) + { + systems.push_back(it->second.decl.themeFolder); + } + return systems; +} + +// returns whether a specific folder exists in the theme +bool CollectionSystemManager::themeFolderExists(std::string folder) +{ + std::vector themeSys = getSystemsFromTheme(); + return std::find(themeSys.cbegin(), themeSys.cend(), folder) != themeSys.cend(); +} + +bool CollectionSystemManager::includeFileInAutoCollections(FileData* file) +{ + // we exclude non-game files from collections (i.e. "kodi", entries from non-game systems) + // if/when there are more in the future, maybe this can be a more complex method, with a proper list + // but for now a simple string comparison is more performant + return file->getName() != "kodi" && file->getSystem()->isGameSystem(); +} + + +bool CollectionSystemManager::needDoublePress(int presscount) { + if (Settings::getInstance()->getBool("DoublePressRemovesFromFavs") && presscount < 2) + { + GuiInfoPopup* toast = new GuiInfoPopup(mWindow, "Press again to remove from '" + Utils::String::toUpper(mEditingCollection) + + "'", DOUBLE_PRESS_DETECTION_DURATION, 100, 200); + mWindow->setInfoPopup(toast); + return true; + } + return false; +} + +std::string getCustomCollectionConfigPath(std::string collectionName) +{ + return getCollectionsFolder() + "/custom-" + collectionName + ".cfg"; +} + +std::string getCollectionsFolder() +{ + return Utils::FileSystem::getGenericPath(Utils::FileSystem::getHomePath() + "/.emulationstation/collections"); +} + +bool systemSort(SystemData* sys1, SystemData* sys2) +{ + std::string name1 = Utils::String::toUpper(sys1->getName()); + std::string name2 = Utils::String::toUpper(sys2->getName()); + return name1.compare(name2) < 0; +} diff --git a/es-app/src/CollectionSystemManager.h b/es-app/src/CollectionSystemManager.h new file mode 100644 index 0000000000..b979f9d25f --- /dev/null +++ b/es-app/src/CollectionSystemManager.h @@ -0,0 +1,161 @@ +#pragma once +#ifndef ES_APP_COLLECTION_SYSTEM_MANAGER_H +#define ES_APP_COLLECTION_SYSTEM_MANAGER_H + +#include +#include +#include +#include + +class FileData; +class SystemData; +class Window; +struct SystemEnvironmentData; +class FileFilterIndex; + +static const std::string CUSTOM_COLL_ID = "collections"; +static const std::string RANDOM_COLL_ID = "random"; +constexpr int LAST_PLAYED_MAX = 50; + +constexpr int RANDOM_SYSTEM_MAX = 5; +constexpr int DEFAULT_RANDOM_SYSTEM_GAMES = 1; +constexpr int DEFAULT_RANDOM_COLLECTIONS_GAMES = 0; + +enum CollectionSystemType +{ + AUTO_ALL_GAMES, + AUTO_LAST_PLAYED, + AUTO_FAVORITES, + AUTO_RANDOM, + CUSTOM_COLLECTION +}; + +// Flags when loading or creating a collection +enum class CollectionFlags : uint8_t +{ + NONE, // create only + HOLD_IN_MAP, // create and keep in mAutoCollectionSystemsData or mCustomCollectionSystemsData + NEEDS_SAVE // force save of newly added collection +}; + +constexpr CollectionFlags operator|(CollectionFlags a,CollectionFlags b) +{ + return static_cast(static_cast(a) | static_cast(b)); +} + +constexpr CollectionFlags operator&(CollectionFlags a, CollectionFlags b) +{ + return static_cast(static_cast(a) & static_cast(b)); +} + +struct CollectionSystemDecl +{ + CollectionSystemType type; // type of system + std::string name; + std::string longName; + std::string defaultSort; + std::string themeFolder; + bool isCustom; +}; + +struct CollectionSystemData +{ + SystemData* system; + CollectionSystemDecl decl; + bool isEnabled; + bool isPopulated; + bool needsSave; +}; + +class CollectionSystemManager +{ +public: + CollectionSystemManager(Window* window); + ~CollectionSystemManager(); + + static CollectionSystemManager* get(); + static void init(Window* window); + static void deinit(); + bool saveCustomCollection(SystemData* sys); + + void loadCollectionSystems(bool async=false); + void loadEnabledListFromSettings(); + void updateSystemsList(); + + void refreshCollectionSystems(FileData* file); + void updateCollectionSystem(FileData* file, CollectionSystemData sysData); + void deleteCollectionFiles(FileData* file); + void recreateCollection(SystemData* sysData); + + inline std::map getAutoCollectionSystems() { return mAutoCollectionSystemsData; }; + inline std::map getCustomCollectionSystems() { return mCustomCollectionSystemsData; }; + inline SystemData* getCustomCollectionsBundle() { return mCustomCollectionsBundle; }; + inline SystemData* getRandomCollection() { return mRandomCollection; }; + std::vector getUnusedSystemsFromTheme(); + SystemData* addNewCustomCollection(std::string name, bool needsSave = false); + + bool isThemeGenericCollectionCompatible(bool genericCustomCollections); + bool isThemeCustomCollectionCompatible(std::vector stringVector); + std::string getValidNewCollectionName(std::string name, int index = 0); + + void setEditMode(std::string collectionName, bool quiet = false); + void exitEditMode(bool quiet = false); + inline bool isEditing() { return mIsEditingCustom; }; + inline std::string getEditingCollection() { return mEditingCollection; }; + bool toggleGameInCollection(FileData* file); + + SystemData* getSystemToView(SystemData* sys); + void updateCollectionFolderMetadata(SystemData* sys); + + SystemData* getAllGamesCollection(); + + void trimCollectionCount(FileData* rootFolder, int limit, bool shuffle); + +private: + static CollectionSystemManager* sInstance; + SystemEnvironmentData* mCollectionEnvData; + std::map mCollectionSystemDeclsIndex; + std::map mAutoCollectionSystemsData; + std::map mCustomCollectionSystemsData; + Window* mWindow; + bool mIsEditingCustom; + std::string mEditingCollection; + CollectionSystemData* mEditingCollectionSystemData; + Uint32 mFirstPressMs = 0; + + void initAutoCollectionSystems(); + void initCustomCollectionSystems(); + SystemData* createNewCollectionEntry(std::string name, CollectionSystemDecl sysDecl, const CollectionFlags flags); + void populateAutoCollection(CollectionSystemData* sysData); + void populateCustomCollection(CollectionSystemData* sysData); + void addRandomGames(SystemData* newSys, SystemData* sourceSystem, FileData* rootFolder, FileFilterIndex* index, + std::map> mapsForRandomColl, int defaultValue); + void populateRandomCollectionFromCollections(std::map> mapsForRandomColl); + + void removeCollectionsFromDisplayedSystems(); + void addEnabledCollectionsToDisplayedSystems(std::map* colSystemData, bool processRandom); + + std::vector getSystemsFromConfig(); + std::vector getSystemsFromTheme(); + std::vector getCollectionsFromConfigFolder(); + std::vector getCollectionThemeFolders(bool custom); + std::vector getUserCollectionThemeFolders(); + + bool themeFolderExists(std::string folder); + + bool includeFileInAutoCollections(FileData* file); + + bool needDoublePress(int presscount); + int getPressCountInDuration(); + + SystemData* mCustomCollectionsBundle; + SystemData* mRandomCollection; + + static const int DOUBLE_PRESS_DETECTION_DURATION = 1500; // millis +}; + +std::string getCustomCollectionConfigPath(std::string collectionName); +std::string getCollectionsFolder(); +bool systemSort(SystemData* sys1, SystemData* sys2); + +#endif // ES_APP_COLLECTION_SYSTEM_MANAGER_H diff --git a/es-app/src/EmulationStation.h b/es-app/src/EmulationStation.h index 3fbb279050..710c6c2560 100644 --- a/es-app/src/EmulationStation.h +++ b/es-app/src/EmulationStation.h @@ -1,13 +1,17 @@ #pragma once +#ifndef ES_APP_EMULATION_STATION_H +#define ES_APP_EMULATION_STATION_H // These numbers and strings need to be manually updated for a new version. // Do this version number update as the very last commit for the new release version. #define PROGRAM_VERSION_MAJOR 2 -#define PROGRAM_VERSION_MINOR 0 -#define PROGRAM_VERSION_MAINTENANCE 1 -#define PROGRAM_VERSION_STRING "2.0.1a" +#define PROGRAM_VERSION_MINOR 12 +#define PROGRAM_VERSION_MAINTENANCE 0 +#define PROGRAM_VERSION_STRING "2.12.0rp-dev" #define PROGRAM_BUILT_STRING __DATE__ " - " __TIME__ -#define RESOURCE_VERSION_STRING "2,0,1\0" +#define RESOURCE_VERSION_STRING "2,12,0\0" #define RESOURCE_VERSION PROGRAM_VERSION_MAJOR,PROGRAM_VERSION_MINOR,PROGRAM_VERSION_MAINTENANCE + +#endif // ES_APP_EMULATION_STATION_H diff --git a/es-app/src/EmulationStation.rc b/es-app/src/EmulationStation.rc index a89896c991..a8ec517ee5 100644 --- a/es-app/src/EmulationStation.rc +++ b/es-app/src/EmulationStation.rc @@ -36,4 +36,4 @@ BEGIN END END -IDI_ES_LOGO ICON DISCARDABLE "../data/es_icon.ico" \ No newline at end of file +IDI_ES_LOGO ICON DISCARDABLE "es_icon.ico" \ No newline at end of file diff --git a/es-app/src/FileData.cpp b/es-app/src/FileData.cpp index a1b625d8a5..1aa4f0f076 100644 --- a/es-app/src/FileData.cpp +++ b/es-app/src/FileData.cpp @@ -1,120 +1,243 @@ #include "FileData.h" + +#include "utils/FileSystemUtil.h" +#include "utils/StringUtil.h" +#include "utils/TimeUtil.h" +#include "AudioManager.h" +#include "CollectionSystemManager.h" +#include "FileFilterIndex.h" +#include "FileSorts.h" +#include "InputManager.h" +#include "Log.h" +#include "MameNames.h" +#include "platform.h" +#include "Scripting.h" #include "SystemData.h" +#include "VolumeControl.h" +#include "Window.h" +#include -namespace fs = boost::filesystem; +FileData::FileData(FileType type, const std::string& path, SystemEnvironmentData* envData, SystemData* system) + : mType(type), mPath(path), mSystem(system), mEnvData(envData), mSourceFileData(NULL), mParent(NULL), metadata(type == GAME ? GAME_METADATA : FOLDER_METADATA) // metadata is REALLY set in the constructor! +{ + // metadata needs at least a name field (since that's what getName() will return) + if(metadata.get("name").empty()) + metadata.set("name", getDisplayName()); + mSystemName = system->getName(); + metadata.resetChangedFlag(); +} -std::string removeParenthesis(const std::string& str) +FileData::~FileData() { - // remove anything in parenthesis or brackets - // should be roughly equivalent to the regex replace "\((.*)\)|\[(.*)\]" with "" - // I would love to just use regex, but it's not worth pulling in another boost lib for one function that is used once + if(mParent) + mParent->removeChild(this); + + if(mType == GAME) + mSystem->getIndex()->removeFromIndex(this); - std::string ret = str; - size_t start, end; + mChildren.clear(); +} + +std::string FileData::getDisplayName() const +{ + std::string stem = Utils::FileSystem::getStem(mPath); + if(mSystem && mSystem->hasPlatformId(PlatformIds::ARCADE) || mSystem->hasPlatformId(PlatformIds::NEOGEO)) + stem = MameNames::getInstance()->getRealName(stem); + + return stem; +} + +std::string FileData::getCleanName() const +{ + return Utils::String::removeParenthesis(this->getDisplayName()); +} - static const int NUM_TO_REPLACE = 2; - static const char toReplace[NUM_TO_REPLACE*2] = { '(', ')', '[', ']' }; +const std::string FileData::getThumbnailPath() const +{ + std::string thumbnail = metadata.get("thumbnail"); - bool done = false; - while(!done) + // no thumbnail, try image + if(thumbnail.empty()) { - done = true; - for(int i = 0; i < NUM_TO_REPLACE; i++) - { - end = ret.find_first_of(toReplace[i*2+1]); - start = ret.find_last_of(toReplace[i*2], end); + thumbnail = metadata.get("image"); - if(start != std::string::npos && end != std::string::npos) + // no image, try to use local image + if(thumbnail.empty() && Settings::getInstance()->getBool("LocalArt")) + { + const char* extList[2] = { ".png", ".jpg" }; + for(int i = 0; i < 2; i++) { - ret.erase(start, end - start + 1); - done = false; + if(thumbnail.empty()) + { + std::string path = mEnvData->mStartPath + "/images/" + getDisplayName() + "-image" + extList[i]; + if(Utils::FileSystem::exists(path)) + thumbnail = path; + } } } } - // also strip whitespace - end = ret.find_last_not_of(' '); - if(end != std::string::npos) - end++; + return thumbnail; +} - ret = ret.substr(0, end); +const std::string& FileData::getName() +{ + return metadata.get("name"); +} - return ret; +const std::string& FileData::getSortName() +{ + if (metadata.get("sortname").empty()) + return metadata.get("name"); + else + return metadata.get("sortname"); } +const std::vector& FileData::getChildrenListToDisplay() { -FileData::FileData(FileType type, const fs::path& path, SystemData* system) - : mType(type), mPath(path), mSystem(system), mParent(NULL), metadata(type == GAME ? GAME_METADATA : FOLDER_METADATA) // metadata is REALLY set in the constructor! -{ - // metadata needs at least a name field (since that's what getName() will return) - if(metadata.get("name").empty()) - metadata.set("name", getCleanName()); + FileFilterIndex* idx = CollectionSystemManager::get()->getSystemToView(mSystem)->getIndex(); + if (idx->isFiltered()) { + mFilteredChildren.clear(); + for(auto it = mChildren.cbegin(); it != mChildren.cend(); it++) + { + if (idx->showFile((*it))) { + mFilteredChildren.push_back(*it); + } + } + + return mFilteredChildren; + } + else + { + return mChildren; + } } -FileData::~FileData() +const std::string FileData::getVideoPath() const { - if(mParent) - mParent->removeChild(this); + std::string video = metadata.get("video"); - while(mChildren.size()) - delete mChildren.back(); + // no video, try to use local video + if(video.empty() && Settings::getInstance()->getBool("LocalArt")) + { + std::string path = mEnvData->mStartPath + "/images/" + getDisplayName() + "-video.mp4"; + if(Utils::FileSystem::exists(path)) + video = path; + } + + return video; } -std::string FileData::getCleanName() const +const std::string FileData::getMarqueePath() const { - std::string stem = mPath.stem().generic_string(); - if(mSystem && mSystem->hasPlatformId(PlatformIds::ARCADE) || mSystem->hasPlatformId(PlatformIds::NEOGEO)) - stem = PlatformIds::getCleanMameName(stem.c_str()); + std::string marquee = metadata.get("marquee"); - return removeParenthesis(stem); + // no marquee, try to use local marquee + if(marquee.empty() && Settings::getInstance()->getBool("LocalArt")) + { + const char* extList[2] = { ".png", ".jpg" }; + for(int i = 0; i < 2; i++) + { + if(marquee.empty()) + { + std::string path = mEnvData->mStartPath + "/images/" + getDisplayName() + "-marquee" + extList[i]; + if(Utils::FileSystem::exists(path)) + marquee = path; + } + } + } + + return marquee; } -const std::string& FileData::getThumbnailPath() const +const std::string FileData::getImagePath() const { - if(!metadata.get("thumbnail").empty()) - return metadata.get("thumbnail"); - else - return metadata.get("image"); -} + std::string image = metadata.get("image"); + + // no image, try to use local image + if(image.empty()) + { + const char* extList[2] = { ".png", ".jpg" }; + for(int i = 0; i < 2; i++) + { + if(image.empty()) + { + std::string path = mEnvData->mStartPath + "/images/" + getDisplayName() + "-image" + extList[i]; + if(Utils::FileSystem::exists(path)) + image = path; + } + } + } + return image; +} -std::vector FileData::getFilesRecursive(unsigned int typeMask) const +std::vector FileData::getFilesRecursive(unsigned int typeMask, bool displayedOnly) const { std::vector out; + FileFilterIndex* idx = mSystem->getIndex(); - for(auto it = mChildren.begin(); it != mChildren.end(); it++) + for(auto it = mChildren.cbegin(); it != mChildren.cend(); it++) { if((*it)->getType() & typeMask) - out.push_back(*it); - + { + if (!displayedOnly || !idx->isFiltered() || idx->showFile(*it)) + out.push_back(*it); + } + if((*it)->getChildren().size() > 0) { - std::vector subchildren = (*it)->getFilesRecursive(typeMask); - out.insert(out.end(), subchildren.cbegin(), subchildren.cend()); + std::vector subchildren = (*it)->getFilesRecursive(typeMask, displayedOnly); + out.insert(out.cend(), subchildren.cbegin(), subchildren.cend()); } } return out; } +std::string FileData::getKey() { + return getFileName(); +} + +const bool FileData::isArcadeAsset() +{ + const std::string stem = Utils::FileSystem::getStem(mPath); + return ( + (mSystem && (mSystem->hasPlatformId(PlatformIds::ARCADE) || mSystem->hasPlatformId(PlatformIds::NEOGEO))) + && + (MameNames::getInstance()->isBios(stem) || MameNames::getInstance()->isDevice(stem)) + ); +} + +FileData* FileData::getSourceFileData() +{ + return this; +} + void FileData::addChild(FileData* file) { assert(mType == FOLDER); assert(file->getParent() == NULL); - mChildren.push_back(file); - file->mParent = this; + const std::string key = file->getKey(); + if (mChildrenByFilename.find(key) == mChildrenByFilename.cend()) + { + mChildrenByFilename[key] = file; + mChildren.push_back(file); + file->mParent = this; + } } void FileData::removeChild(FileData* file) { assert(mType == FOLDER); assert(file->getParent() == this); - - for(auto it = mChildren.begin(); it != mChildren.end(); it++) + mChildrenByFilename.erase(file->getKey()); + for(auto it = mChildren.cbegin(); it != mChildren.cend(); it++) { if(*it == file) { + file->mParent = NULL; mChildren.erase(it); return; } @@ -122,23 +245,147 @@ void FileData::removeChild(FileData* file) // File somehow wasn't in our children. assert(false); + } void FileData::sort(ComparisonFunction& comparator, bool ascending) { - std::sort(mChildren.begin(), mChildren.end(), comparator); - - for(auto it = mChildren.begin(); it != mChildren.end(); it++) + if (ascending) { - if((*it)->getChildren().size() > 0) - (*it)->sort(comparator, ascending); + std::stable_sort(mChildren.begin(), mChildren.end(), comparator); + for(auto it = mChildren.cbegin(); it != mChildren.cend(); it++) + { + if((*it)->getChildren().size() > 0) + (*it)->sort(comparator, ascending); + } + } + else + { + std::stable_sort(mChildren.rbegin(), mChildren.rend(), comparator); + for(auto it = mChildren.rbegin(); it != mChildren.rend(); it++) + { + if((*it)->getChildren().size() > 0) + (*it)->sort(comparator, ascending); + } } - - if(!ascending) - std::reverse(mChildren.begin(), mChildren.end()); } void FileData::sort(const SortType& type) { sort(*type.comparisonFunction, type.ascending); + mSortDesc = type.description; +} + +void FileData::launchGame(Window* window) +{ + LOG(LogInfo) << "Attempting to launch game..."; + + AudioManager::getInstance()->deinit(); + VolumeControl::getInstance()->deinit(); + InputManager::getInstance()->deinit(); + window->deinit(); + + std::string command = mEnvData->mLaunchCommand; + + const std::string rom = Utils::FileSystem::getEscapedPath(getPath()); + const std::string basename = Utils::FileSystem::getStem(getPath()); + const std::string rom_raw = Utils::FileSystem::getPreferredPath(getPath()); + const std::string name = getName(); + + command = Utils::String::replace(command, "%ROM%", rom); + command = Utils::String::replace(command, "%BASENAME%", basename); + command = Utils::String::replace(command, "%ROM_RAW%", rom_raw); + + Scripting::fireEvent("game-start", rom, basename, name); + + LOG(LogInfo) << " " << command; + int exitCode = runSystemCommand(command); + + if(exitCode != 0) + { + LOG(LogWarning) << "...launch terminated with nonzero exit code " << exitCode << "!"; + } + + Scripting::fireEvent("game-end"); + + window->init(); + InputManager::getInstance()->init(); + VolumeControl::getInstance()->init(); + window->normalizeNextUpdate(); + + //update number of times the game has been launched + + FileData* gameToUpdate = getSourceFileData(); + + int timesPlayed = gameToUpdate->metadata.getInt("playcount") + 1; + gameToUpdate->metadata.set("playcount", std::to_string(static_cast(timesPlayed))); + + //update last played time + gameToUpdate->metadata.set("lastplayed", Utils::Time::DateTime(Utils::Time::now())); + CollectionSystemManager::get()->refreshCollectionSystems(gameToUpdate); + + gameToUpdate->mSystem->onMetaDataSavePoint(); +} + +CollectionFileData::CollectionFileData(FileData* file, SystemData* system) + : FileData(file->getSourceFileData()->getType(), file->getSourceFileData()->getPath(), file->getSourceFileData()->getSystemEnvData(), system) +{ + // we use this constructor to create a clone of the filedata, and change its system + mSourceFileData = file->getSourceFileData(); + refreshMetadata(); + mParent = NULL; + metadata = mSourceFileData->metadata; + mSystemName = mSourceFileData->getSystem()->getName(); +} + +CollectionFileData::~CollectionFileData() +{ + // need to remove collection file data at the collection object destructor + if(mParent) + mParent->removeChild(this); + mParent = NULL; +} + +std::string CollectionFileData::getKey() { + return getFullPath(); +} + +FileData* CollectionFileData::getSourceFileData() +{ + return mSourceFileData; +} + +void CollectionFileData::refreshMetadata() +{ + metadata = mSourceFileData->metadata; + mDirty = true; +} + +const std::string& CollectionFileData::getName() +{ + if (mDirty) { + mCollectionFileName = Utils::String::removeParenthesis(mSourceFileData->metadata.get("name")); + mCollectionFileName += " [" + Utils::String::toUpper(mSourceFileData->getSystem()->getName()) + "]"; + mDirty = false; + } + + if (Settings::getInstance()->getBool("CollectionShowSystemInfo")) + return mCollectionFileName; + return mSourceFileData->metadata.get("name"); +} + +// returns Sort Type based on a string description +FileData::SortType getSortTypeFromString(std::string desc) { + std::vector SortTypes = FileSorts::SortTypes; + // find it + for(unsigned int i = 0; i < FileSorts::SortTypes.size(); i++) + { + const FileData::SortType& sort = FileSorts::SortTypes.at(i); + if(sort.description == desc) + { + return sort; + } + } + // if not found default to "name, ascending" + return FileSorts::SortTypes.at(0); } diff --git a/es-app/src/FileData.h b/es-app/src/FileData.h index add6345f4c..e075775445 100644 --- a/es-app/src/FileData.h +++ b/es-app/src/FileData.h @@ -1,16 +1,20 @@ #pragma once +#ifndef ES_APP_FILE_DATA_H +#define ES_APP_FILE_DATA_H -#include -#include -#include +#include "utils/FileSystemUtil.h" #include "MetaData.h" +#include class SystemData; +class Window; +struct SystemEnvironmentData; enum FileType { GAME = 1, // Cannot have children. - FOLDER = 2 + FOLDER = 2, + PLACEHOLDER = 3 }; enum FileChangeType @@ -25,33 +29,52 @@ enum FileChangeType const char* fileTypeToString(FileType type); FileType stringToFileType(const char* str); -// Remove (.*) and [.*] from str -std::string removeParenthesis(const std::string& str); - // A tree node that holds information for a file. class FileData { public: - FileData(FileType type, const boost::filesystem::path& path, SystemData* system); + FileData(FileType type, const std::string& path, SystemEnvironmentData* envData, SystemData* system); virtual ~FileData(); - inline const std::string& getName() const { return metadata.get("name"); } + virtual const std::string& getName(); + virtual const std::string& getSortName(); inline FileType getType() const { return mType; } - inline const boost::filesystem::path& getPath() const { return mPath; } + inline const std::string& getPath() const { return mPath; } inline FileData* getParent() const { return mParent; } + inline const std::unordered_map& getChildrenByFilename() const { return mChildrenByFilename; } inline const std::vector& getChildren() const { return mChildren; } inline SystemData* getSystem() const { return mSystem; } - - virtual const std::string& getThumbnailPath() const; + inline SystemEnvironmentData* getSystemEnvData() const { return mEnvData; } + virtual const std::string getThumbnailPath() const; + virtual const std::string getVideoPath() const; + virtual const std::string getMarqueePath() const; + virtual const std::string getImagePath() const; - std::vector getFilesRecursive(unsigned int typeMask) const; + const std::vector& getChildrenListToDisplay(); + std::vector getFilesRecursive(unsigned int typeMask, bool displayedOnly = false) const; void addChild(FileData* file); // Error if mType != FOLDER void removeChild(FileData* file); //Error if mType != FOLDER - // Returns our best guess at the "real" name for this file (will strip parenthesis and attempt to perform MAME name translation) + inline bool isPlaceHolder() { return mType == PLACEHOLDER; }; + + virtual inline void refreshMetadata() { return; }; + + virtual std::string getKey(); + const bool isArcadeAsset(); + inline std::string getFullPath() { return getPath(); }; + inline std::string getFileName() { return Utils::FileSystem::getFileName(getPath()); }; + virtual FileData* getSourceFileData(); + inline std::string getSystemName() const { return mSystemName; }; + + // Returns our best guess at the "real" name for this file (will attempt to perform MAME name translation) + std::string getDisplayName() const; + + // As above, but also remove parenthesis std::string getCleanName() const; + void launchGame(Window* window); + typedef bool ComparisonFunction(const FileData* a, const FileData* b); struct SortType { @@ -59,19 +82,46 @@ class FileData bool ascending; std::string description; - SortType(ComparisonFunction* sortFunction, bool sortAscending, const std::string & sortDescription) + SortType(ComparisonFunction* sortFunction, bool sortAscending, const std::string & sortDescription) : comparisonFunction(sortFunction), ascending(sortAscending), description(sortDescription) {} }; - void sort(ComparisonFunction& comparator, bool ascending = true); void sort(const SortType& type); - + std::string getSortDescription() { return mSortDesc; } MetaDataList metadata; +protected: + FileData* mSourceFileData; + FileData* mParent; + std::string mSystemName; + private: + void sort(ComparisonFunction& comparator, bool ascending = true); FileType mType; - boost::filesystem::path mPath; + std::string mPath; + SystemEnvironmentData* mEnvData; SystemData* mSystem; - FileData* mParent; + std::unordered_map mChildrenByFilename; std::vector mChildren; + std::vector mFilteredChildren; + std::string mSortDesc; }; + +class CollectionFileData : public FileData +{ +public: + CollectionFileData(FileData* file, SystemData* system); + ~CollectionFileData(); + const std::string& getName(); + void refreshMetadata(); + FileData* getSourceFileData(); + std::string getKey(); +private: + // needs to be updated when metadata changes + std::string mCollectionFileName; + bool mDirty; +}; + +FileData::SortType getSortTypeFromString(std::string desc); + +#endif // ES_APP_FILE_DATA_H diff --git a/es-app/src/FileFilterIndex.cpp b/es-app/src/FileFilterIndex.cpp new file mode 100644 index 0000000000..ff65dce59f --- /dev/null +++ b/es-app/src/FileFilterIndex.cpp @@ -0,0 +1,540 @@ +#include "FileFilterIndex.h" + +#include "utils/StringUtil.h" +#include "views/UIModeController.h" +#include "FileData.h" +#include "Log.h" +#include "Settings.h" + +#define UNKNOWN_LABEL "UNKNOWN" +#define INCLUDE_UNKNOWN false; + +FileFilterIndex::FileFilterIndex() + : filterByFavorites(false), filterByGenre(false), filterByHidden(false), filterByKidGame(false), filterByPlayers(false), filterByPubDev(false), filterByRatings(false) +{ + clearAllFilters(); + FilterDataDecl filterDecls[] = { + //type //allKeys //filteredBy //filteredKeys //primaryKey //hasSecondaryKey //secondaryKey //menuLabel + { FAVORITES_FILTER, &favoritesIndexAllKeys, &filterByFavorites, &favoritesIndexFilteredKeys,"favorite", false, "", "FAVORITES" }, + { GENRE_FILTER, &genreIndexAllKeys, &filterByGenre, &genreIndexFilteredKeys, "genre", true, "genre", "GENRE" }, + { PLAYER_FILTER, &playersIndexAllKeys, &filterByPlayers, &playersIndexFilteredKeys, "players", false, "", "PLAYERS" }, + { PUBDEV_FILTER, &pubDevIndexAllKeys, &filterByPubDev, &pubDevIndexFilteredKeys, "developer", true, "publisher", "PUBLISHER / DEVELOPER" }, + { RATINGS_FILTER, &ratingsIndexAllKeys, &filterByRatings, &ratingsIndexFilteredKeys, "rating", false, "", "RATING" }, + { KIDGAME_FILTER, &kidGameIndexAllKeys, &filterByKidGame, &kidGameIndexFilteredKeys, "kidgame", false, "", "KIDGAME" }, + { HIDDEN_FILTER, &hiddenIndexAllKeys, &filterByHidden, &hiddenIndexFilteredKeys, "hidden", false, "", "HIDDEN" } + }; + + filterDataDecl = std::vector(filterDecls, filterDecls + sizeof(filterDecls) / sizeof(filterDecls[0])); +} + +FileFilterIndex::~FileFilterIndex() +{ + resetIndex(); +} + +std::vector& FileFilterIndex::getFilterDataDecls() +{ + return filterDataDecl; +} + +void FileFilterIndex::importIndex(FileFilterIndex* indexToImport) +{ + struct IndexImportStructure + { + std::map* destinationIndex; + std::map* sourceIndex; + }; + + IndexImportStructure indexStructDecls[] = { + { &genreIndexAllKeys, &(indexToImport->genreIndexAllKeys) }, + { &playersIndexAllKeys, &(indexToImport->playersIndexAllKeys) }, + { &pubDevIndexAllKeys, &(indexToImport->pubDevIndexAllKeys) }, + { &ratingsIndexAllKeys, &(indexToImport->ratingsIndexAllKeys) }, + { &favoritesIndexAllKeys, &(indexToImport->favoritesIndexAllKeys) }, + { &hiddenIndexAllKeys, &(indexToImport->hiddenIndexAllKeys) }, + { &kidGameIndexAllKeys, &(indexToImport->kidGameIndexAllKeys) }, + }; + + std::vector indexImportDecl = std::vector(indexStructDecls, indexStructDecls + sizeof(indexStructDecls) / sizeof(indexStructDecls[0])); + + for (std::vector::const_iterator indexesIt = indexImportDecl.cbegin(); indexesIt != indexImportDecl.cend(); ++indexesIt ) + { + for (std::map::const_iterator sourceIt = (*indexesIt).sourceIndex->cbegin(); sourceIt != (*indexesIt).sourceIndex->cend(); ++sourceIt ) + { + if ((*indexesIt).destinationIndex->find((*sourceIt).first) == (*indexesIt).destinationIndex->cend()) + { + // entry doesn't exist + (*((*indexesIt).destinationIndex))[(*sourceIt).first] = (*sourceIt).second; + } + else + { + (*((*indexesIt).destinationIndex))[(*sourceIt).first] += (*sourceIt).second; + } + } + } +} +void FileFilterIndex::resetIndex() +{ + clearAllFilters(); + clearIndex(genreIndexAllKeys); + clearIndex(playersIndexAllKeys); + clearIndex(pubDevIndexAllKeys); + clearIndex(ratingsIndexAllKeys); + clearIndex(favoritesIndexAllKeys); + clearIndex(hiddenIndexAllKeys); + clearIndex(kidGameIndexAllKeys); +} + +std::string FileFilterIndex::getIndexableKey(FileData* game, FilterIndexType type, bool getSecondary) +{ + std::string key = ""; + switch(type) + { + case GENRE_FILTER: + { + key = Utils::String::toUpper(game->metadata.get("genre")); + key = Utils::String::trim(key); + if (getSecondary && !key.empty()) { + std::istringstream f(key); + std::string newKey; + getline(f, newKey, '/'); + if (!newKey.empty() && newKey != key) + { + key = newKey; + } + else + { + key = std::string(); + } + } + break; + } + case PLAYER_FILTER: + { + if (getSecondary) + break; + + key = game->metadata.get("players"); + break; + } + case PUBDEV_FILTER: + { + key = Utils::String::toUpper(game->metadata.get("publisher")); + key = Utils::String::trim(key); + + if ((getSecondary && !key.empty()) || (!getSecondary && key.empty())) + key = Utils::String::toUpper(game->metadata.get("developer")); + else + key = Utils::String::toUpper(game->metadata.get("publisher")); + break; + } + case RATINGS_FILTER: + { + int ratingNumber = 0; + if (!getSecondary) + { + std::string ratingString = game->metadata.get("rating"); + if (!ratingString.empty()) { + try { + ratingNumber = (int)((std::stod(ratingString)*5)+0.5); + if (ratingNumber < 0) + ratingNumber = 0; + + key = std::to_string(ratingNumber) + " STARS"; + } + catch (int e) + { + LOG(LogError) << "Error parsing Rating (invalid value, exception nr.): " << ratingString << ", " << e; + } + } + } + break; + } + case FAVORITES_FILTER: + { + if (game->getType() != GAME) + return "FALSE"; + key = Utils::String::toUpper(game->metadata.get("favorite")); + break; + } + case HIDDEN_FILTER: + { + if (game->getType() != GAME) + return "FALSE"; + key = Utils::String::toUpper(game->metadata.get("hidden")); + break; + } + case KIDGAME_FILTER: + { + if (game->getType() != GAME) + return "FALSE"; + key = Utils::String::toUpper(game->metadata.get("kidgame")); + break; + } + default: + LOG(LogWarning) << "Unknown Filter type:" << type; + break; + } + key = Utils::String::trim(key); + if (key.empty() || (type == RATINGS_FILTER && key == "0 STARS")) { + key = UNKNOWN_LABEL; + } + return key; +} + +void FileFilterIndex::addToIndex(FileData* game) +{ + manageGenreEntryInIndex(game); + managePlayerEntryInIndex(game); + managePubDevEntryInIndex(game); + manageRatingsEntryInIndex(game); + manageFavoritesEntryInIndex(game); + manageHiddenEntryInIndex(game); + manageKidGameEntryInIndex(game); +} + +void FileFilterIndex::removeFromIndex(FileData* game) +{ + manageGenreEntryInIndex(game, true); + managePlayerEntryInIndex(game, true); + managePubDevEntryInIndex(game, true); + manageRatingsEntryInIndex(game, true); + manageFavoritesEntryInIndex(game, true); + manageHiddenEntryInIndex(game, true); + manageKidGameEntryInIndex(game, true); +} + +void FileFilterIndex::setFilter(FilterIndexType type, std::vector* values) +{ + // test if it exists before setting + if(type == NONE) + { + clearAllFilters(); + } + else + { + for (std::vector::const_iterator it = filterDataDecl.cbegin(); it != filterDataDecl.cend(); ++it ) { + if ((*it).type == type) + { + FilterDataDecl filterData = (*it); + *(filterData.filteredByRef) = values->size() > 0; + filterData.currentFilteredKeys->clear(); + for (std::vector::const_iterator vit = values->cbegin(); vit != values->cend(); ++vit ) { + // check if exists + if (filterData.allIndexKeys->find(*vit) != filterData.allIndexKeys->cend()) { + filterData.currentFilteredKeys->push_back(std::string(*vit)); + } + } + } + } + } + return; +} + +void FileFilterIndex::clearAllFilters() +{ + for (std::vector::const_iterator it = filterDataDecl.cbegin(); it != filterDataDecl.cend(); ++it ) + { + FilterDataDecl filterData = (*it); + *(filterData.filteredByRef) = false; + filterData.currentFilteredKeys->clear(); + } + return; +} + +void FileFilterIndex::resetFilters() +{ + clearAllFilters(); + setUIModeFilters(); +} + +void FileFilterIndex::setUIModeFilters() +{ + if(!Settings::getInstance()->getBool("ForceDisableFilters")){ + if (UIModeController::getInstance()->isUIModeKiosk()) + { + filterByHidden = true; + std::vector val = { "FALSE" }; + setFilter(HIDDEN_FILTER, &val); + } + if (UIModeController::getInstance()->isUIModeKid()) + { + filterByKidGame = true; + std::vector val = { "TRUE" }; + setFilter(KIDGAME_FILTER, &val); + } + } +} + +void FileFilterIndex::debugPrintIndexes() +{ + LOG(LogInfo) << "Printing Indexes..."; + for (auto x: playersIndexAllKeys) { + LOG(LogInfo) << "Multiplayer Index: " << x.first << ": " << x.second; + } + for (auto x: genreIndexAllKeys) { + LOG(LogInfo) << "Genre Index: " << x.first << ": " << x.second; + } + for (auto x: ratingsIndexAllKeys) { + LOG(LogInfo) << "Ratings Index: " << x.first << ": " << x.second; + } + for (auto x: pubDevIndexAllKeys) { + LOG(LogInfo) << "PubDev Index: " << x.first << ": " << x.second; + } + for (auto x: favoritesIndexAllKeys) { + LOG(LogInfo) << "Favorites Index: " << x.first << ": " << x.second; + } + for (auto x : hiddenIndexAllKeys) { + LOG(LogInfo) << "Hidden Index: " << x.first << ": " << x.second; + } + for (auto x : kidGameIndexAllKeys) { + LOG(LogInfo) << "KidGames Index: " << x.first << ": " << x.second; + } +} + +bool FileFilterIndex::showFile(FileData* game) +{ + // this shouldn't happen, but just in case let's get it out of the way + if (!isFiltered()) + return true; + + // if folder, needs further inspection - i.e. see if folder contains at least one element + // that should be shown + if (game->getType() == FOLDER) { + std::vector children = game->getChildren(); + // iterate through all of the children, until there's a match + + for (std::vector::const_iterator it = children.cbegin(); it != children.cend(); ++it ) { + if (showFile(*it)) + { + return true; + } + } + return false; + } + + bool keepGoing = false; + + for (std::vector::const_iterator it = filterDataDecl.cbegin(); it != filterDataDecl.cend(); ++it ) { + FilterDataDecl filterData = (*it); + if(*(filterData.filteredByRef)) + { + // try to find a match + std::string key = getIndexableKey(game, filterData.type, false); + keepGoing = isKeyBeingFilteredBy(key, filterData.type); + + // if we didn't find a match, try for secondary keys - i.e. publisher and dev, or first genre + if (!keepGoing) + { + if (!filterData.hasSecondaryKey) + { + return false; + } + std::string secKey = getIndexableKey(game, filterData.type, true); + if (secKey != UNKNOWN_LABEL) + { + keepGoing = isKeyBeingFilteredBy(secKey, filterData.type); + } + } + // if still nothing, then it's not a match + if (!keepGoing) + return false; + + } + + } + + return keepGoing; +} + +bool FileFilterIndex::isKeyBeingFilteredBy(std::string key, FilterIndexType type) +{ + const FilterIndexType filterTypes[7] = { FAVORITES_FILTER, GENRE_FILTER, PLAYER_FILTER, PUBDEV_FILTER, RATINGS_FILTER,HIDDEN_FILTER, KIDGAME_FILTER }; + std::vector filterKeysList[7] = { favoritesIndexFilteredKeys, genreIndexFilteredKeys, playersIndexFilteredKeys, pubDevIndexFilteredKeys, ratingsIndexFilteredKeys, hiddenIndexFilteredKeys, kidGameIndexFilteredKeys }; + + for (int i = 0; i < 7; i++) + { + if (filterTypes[i] == type) + { + for (std::vector::const_iterator it = filterKeysList[i].cbegin(); it != filterKeysList[i].cend(); ++it ) + { + if (key == (*it)) + { + return true; + } + } + return false; + } + } + + return false; +} + +void FileFilterIndex::manageGenreEntryInIndex(FileData* game, bool remove) +{ + + std::string key = getIndexableKey(game, GENRE_FILTER, false); + + // flag for including unknowns + bool includeUnknown = INCLUDE_UNKNOWN; + + // only add unknown in pubdev IF both dev and pub are empty + if (!includeUnknown && (key == UNKNOWN_LABEL || key == "BIOS")) { + // no valid genre info found + return; + } + + manageIndexEntry(&genreIndexAllKeys, key, remove); + + key = getIndexableKey(game, GENRE_FILTER, true); + if (!includeUnknown && key == UNKNOWN_LABEL) + { + manageIndexEntry(&genreIndexAllKeys, key, remove); + } +} + +void FileFilterIndex::managePlayerEntryInIndex(FileData* game, bool remove) +{ + // flag for including unknowns + bool includeUnknown = INCLUDE_UNKNOWN; + std::string key = getIndexableKey(game, PLAYER_FILTER, false); + + // only add unknown in pubdev IF both dev and pub are empty + if (!includeUnknown && key == UNKNOWN_LABEL) { + // no valid player info found + return; + } + + manageIndexEntry(&playersIndexAllKeys, key, remove); +} + +void FileFilterIndex::managePubDevEntryInIndex(FileData* game, bool remove) +{ + std::string pub = getIndexableKey(game, PUBDEV_FILTER, false); + std::string dev = getIndexableKey(game, PUBDEV_FILTER, true); + + // flag for including unknowns + bool includeUnknown = INCLUDE_UNKNOWN; + bool unknownPub = false; + bool unknownDev = false; + + if (pub == UNKNOWN_LABEL) { + unknownPub = true; + } + if (dev == UNKNOWN_LABEL) { + unknownDev = true; + } + + if (!includeUnknown && unknownDev && unknownPub) { + // no valid rating info found + return; + } + + if (unknownDev && unknownPub) { + // if no info at all + manageIndexEntry(&pubDevIndexAllKeys, pub, remove); + } + else + { + if (!unknownDev) { + // if no info at all + manageIndexEntry(&pubDevIndexAllKeys, dev, remove); + } + if (!unknownPub) { + // if no info at all + manageIndexEntry(&pubDevIndexAllKeys, pub, remove); + } + } +} + +void FileFilterIndex::manageRatingsEntryInIndex(FileData* game, bool remove) +{ + std::string key = getIndexableKey(game, RATINGS_FILTER, false); + + // flag for including unknowns + bool includeUnknown = INCLUDE_UNKNOWN; + + if (!includeUnknown && key == UNKNOWN_LABEL) { + // no valid rating info found + return; + } + + manageIndexEntry(&ratingsIndexAllKeys, key, remove); +} + +void FileFilterIndex::manageFavoritesEntryInIndex(FileData* game, bool remove) +{ + // flag for including unknowns + bool includeUnknown = INCLUDE_UNKNOWN; + std::string key = getIndexableKey(game, FAVORITES_FILTER, false); + if (!includeUnknown && key == UNKNOWN_LABEL) { + // no valid favorites info found + return; + } + + manageIndexEntry(&favoritesIndexAllKeys, key, remove); +} + +void FileFilterIndex::manageHiddenEntryInIndex(FileData* game, bool remove) +{ + // flag for including unknowns + bool includeUnknown = INCLUDE_UNKNOWN; + std::string key = getIndexableKey(game, HIDDEN_FILTER, false); + if (!includeUnknown && key == UNKNOWN_LABEL) { + // no valid hidden info found + return; + } + + manageIndexEntry(&hiddenIndexAllKeys, key, remove); +} + +void FileFilterIndex::manageKidGameEntryInIndex(FileData* game, bool remove) +{ + // flag for including unknowns + bool includeUnknown = INCLUDE_UNKNOWN; + std::string key = getIndexableKey(game, KIDGAME_FILTER, false); + if (!includeUnknown && key == UNKNOWN_LABEL) { + // no valid kidgame info found + return; + } + + manageIndexEntry(&kidGameIndexAllKeys, key, remove); +} + +void FileFilterIndex::manageIndexEntry(std::map* index, std::string key, bool remove) { + bool includeUnknown = INCLUDE_UNKNOWN; + if (!includeUnknown && key == UNKNOWN_LABEL) + return; + if (remove) { + // removing entry + if (index->find(key) == index->cend()) + { + // this shouldn't happen + LOG(LogInfo) << "Couldn't find entry in index! " << key; + } + else + { + (index->at(key))--; + if(index->at(key) <= 0) { + index->erase(key); + } + } + } + else + { + // adding entry + if (index->find(key) == index->cend()) + { + (*index)[key] = 1; + } + else + { + (index->at(key))++; + } + } +} + +void FileFilterIndex::clearIndex(std::map indexMap) +{ + indexMap.clear(); +} diff --git a/es-app/src/FileFilterIndex.h b/es-app/src/FileFilterIndex.h new file mode 100644 index 0000000000..e3b4b4a665 --- /dev/null +++ b/es-app/src/FileFilterIndex.h @@ -0,0 +1,99 @@ +#pragma once +#ifndef ES_APP_FILE_FILTER_INDEX_H +#define ES_APP_FILE_FILTER_INDEX_H + +#include +#include +#include + +class FileData; + +enum FilterIndexType +{ + NONE, + GENRE_FILTER, + PLAYER_FILTER, + PUBDEV_FILTER, + RATINGS_FILTER, + FAVORITES_FILTER, + HIDDEN_FILTER, + KIDGAME_FILTER +}; + +struct FilterDataDecl +{ + FilterIndexType type; // type of filter + std::map* allIndexKeys; // all possible filters for this type + bool* filteredByRef; // is it filtered by this type + std::vector* currentFilteredKeys; // current keys being filtered for + std::string primaryKey; // primary key in metadata + bool hasSecondaryKey; // has secondary key for comparison + std::string secondaryKey; // what's the secondary key + std::string menuLabel; // text to show in menu +}; + +class FileFilterIndex +{ +public: + FileFilterIndex(); + ~FileFilterIndex(); + void addToIndex(FileData* game); + void removeFromIndex(FileData* game); + void setFilter(FilterIndexType type, std::vector* values); + void clearAllFilters(); + void debugPrintIndexes(); + bool showFile(FileData* game); + bool isFiltered() { return (filterByGenre || filterByPlayers || filterByPubDev || filterByRatings || filterByFavorites || filterByHidden || filterByKidGame); }; + bool isKeyBeingFilteredBy(std::string key, FilterIndexType type); + std::vector& getFilterDataDecls(); + + void importIndex(FileFilterIndex* indexToImport); + void resetIndex(); + void resetFilters(); + void setUIModeFilters(); + +private: + std::vector filterDataDecl; + std::string getIndexableKey(FileData* game, FilterIndexType type, bool getSecondary); + + void manageGenreEntryInIndex(FileData* game, bool remove = false); + void managePlayerEntryInIndex(FileData* game, bool remove = false); + void managePubDevEntryInIndex(FileData* game, bool remove = false); + void manageRatingsEntryInIndex(FileData* game, bool remove = false); + void manageFavoritesEntryInIndex(FileData* game, bool remove = false); + void manageHiddenEntryInIndex(FileData* game, bool remove = false); + void manageKidGameEntryInIndex(FileData* game, bool remove = false); + + void manageIndexEntry(std::map* index, std::string key, bool remove); + + void clearIndex(std::map indexMap); + + bool filterByGenre; + bool filterByPlayers; + bool filterByPubDev; + bool filterByRatings; + bool filterByFavorites; + bool filterByHidden; + bool filterByKidGame; + + std::map genreIndexAllKeys; + std::map playersIndexAllKeys; + std::map pubDevIndexAllKeys; + std::map ratingsIndexAllKeys; + std::map favoritesIndexAllKeys; + std::map hiddenIndexAllKeys; + std::map kidGameIndexAllKeys; + + std::vector genreIndexFilteredKeys; + std::vector playersIndexFilteredKeys; + std::vector pubDevIndexFilteredKeys; + std::vector ratingsIndexFilteredKeys; + std::vector favoritesIndexFilteredKeys; + std::vector hiddenIndexFilteredKeys; + std::vector kidGameIndexFilteredKeys; + + FileData* mRootFolder; + +}; + +#endif // ES_APP_FILE_FILTER_INDEX_H diff --git a/es-app/src/FileSorts.cpp b/es-app/src/FileSorts.cpp index b985c0ae69..7f9faa68e8 100644 --- a/es-app/src/FileSorts.cpp +++ b/es-app/src/FileSorts.cpp @@ -1,10 +1,15 @@ #include "FileSorts.h" +#include "utils/StringUtil.h" +#include "Settings.h" +#include "Log.h" + namespace FileSorts { + const FileData::SortType typesArr[] = { - FileData::SortType(&compareFileName, true, "filename, ascending"), - FileData::SortType(&compareFileName, false, "filename, descending"), + FileData::SortType(&compareName, true, "name, ascending"), + FileData::SortType(&compareName, false, "name, descending"), FileData::SortType(&compareRating, true, "rating, ascending"), FileData::SortType(&compareRating, false, "rating, descending"), @@ -13,39 +18,50 @@ namespace FileSorts FileData::SortType(&compareTimesPlayed, false, "times played, descending"), FileData::SortType(&compareLastPlayed, true, "last played, ascending"), - FileData::SortType(&compareLastPlayed, false, "last played, descending") + FileData::SortType(&compareLastPlayed, false, "last played, descending"), + + FileData::SortType(&compareNumPlayers, true, "number players, ascending"), + FileData::SortType(&compareNumPlayers, false, "number players, descending"), + + FileData::SortType(&compareReleaseDate, true, "release date, ascending"), + FileData::SortType(&compareReleaseDate, false, "release date, descending"), + + FileData::SortType(&compareGenre, true, "genre, ascending"), + FileData::SortType(&compareGenre, false, "genre, descending"), + + FileData::SortType(&compareDeveloper, true, "developer, ascending"), + FileData::SortType(&compareDeveloper, false, "developer, descending"), + + FileData::SortType(&comparePublisher, true, "publisher, ascending"), + FileData::SortType(&comparePublisher, false, "publisher, descending"), + + FileData::SortType(&compareSystem, true, "system, ascending"), + FileData::SortType(&compareSystem, false, "system, descending") }; const std::vector SortTypes(typesArr, typesArr + sizeof(typesArr)/sizeof(typesArr[0])); //returns if file1 should come before file2 - bool compareFileName(const FileData* file1, const FileData* file2) + bool compareName(const FileData* file1, const FileData* file2) { - std::string name1 = file1->getName(); - std::string name2 = file2->getName(); - - //min of name1/name2 .length()s - unsigned int count = name1.length() > name2.length() ? name2.length() : name1.length(); - for(unsigned int i = 0; i < count; i++) - { - if(toupper(name1[i]) != toupper(name2[i])) - { - return toupper(name1[i]) < toupper(name2[i]); - } + // we compare the actual metadata name, as collection files have the system appended which messes up the order + std::string name1 = Utils::String::toUpper(file1->metadata.get("sortname")); + std::string name2 = Utils::String::toUpper(file2->metadata.get("sortname")); + if(name1.empty()){ + name1 = Utils::String::toUpper(file1->metadata.get("name")); + } + if(name2.empty()){ + name2 = Utils::String::toUpper(file2->metadata.get("name")); } - return name1.length() < name2.length(); + ignoreLeadingArticles(name1, name2); + + return name1.compare(name2) < 0; } bool compareRating(const FileData* file1, const FileData* file2) { - //only games have rating metadata - if(file1->metadata.getType() == GAME_METADATA && file2->metadata.getType() == GAME_METADATA) - { - return file1->metadata.getFloat("rating") < file2->metadata.getFloat("rating"); - } - - return false; + return file1->metadata.getFloat("rating") < file2->metadata.getFloat("rating"); } bool compareTimesPlayed(const FileData* file1, const FileData* file2) @@ -61,12 +77,75 @@ namespace FileSorts bool compareLastPlayed(const FileData* file1, const FileData* file2) { - //only games have lastplayed metadata - if(file1->metadata.getType() == GAME_METADATA && file2->metadata.getType() == GAME_METADATA) + // since it's stored as an ISO string (YYYYMMDDTHHMMSS), we can compare as a string + // as it's a lot faster than the time casts and then time comparisons + return (file1)->metadata.get("lastplayed") < (file2)->metadata.get("lastplayed"); + } + + bool compareNumPlayers(const FileData* file1, const FileData* file2) + { + return (file1)->metadata.getInt("players") < (file2)->metadata.getInt("players"); + } + + bool compareReleaseDate(const FileData* file1, const FileData* file2) + { + // since it's stored as an ISO string (YYYYMMDDTHHMMSS), we can compare as a string + // as it's a lot faster than the time casts and then time comparisons + return (file1)->metadata.get("releasedate") < (file2)->metadata.get("releasedate"); + } + + bool compareGenre(const FileData* file1, const FileData* file2) + { + std::string genre1 = Utils::String::toUpper(file1->metadata.get("genre")); + std::string genre2 = Utils::String::toUpper(file2->metadata.get("genre")); + return genre1.compare(genre2) < 0; + } + + bool compareDeveloper(const FileData* file1, const FileData* file2) + { + std::string developer1 = Utils::String::toUpper(file1->metadata.get("developer")); + std::string developer2 = Utils::String::toUpper(file2->metadata.get("developer")); + return developer1.compare(developer2) < 0; + } + + bool comparePublisher(const FileData* file1, const FileData* file2) + { + std::string publisher1 = Utils::String::toUpper(file1->metadata.get("publisher")); + std::string publisher2 = Utils::String::toUpper(file2->metadata.get("publisher")); + return publisher1.compare(publisher2) < 0; + } + + bool compareSystem(const FileData* file1, const FileData* file2) + { + std::string system1 = Utils::String::toUpper(file1->getSystemName()); + std::string system2 = Utils::String::toUpper(file2->getSystemName()); + return system1.compare(system2) < 0; + } + + //If option is enabled, ignore leading articles by temporarily modifying the name prior to sorting + //(Artciles are defined within the settings config file) + void ignoreLeadingArticles(std::string &name1, std::string &name2) { + + if (Settings::getInstance()->getBool("IgnoreLeadingArticles")) { - return (file1)->metadata.getTime("lastplayed") < (file2)->metadata.getTime("lastplayed"); + + std::vector articles = Utils::String::delimitedStringToVector(Settings::getInstance()->getString("LeadingArticles"), ","); + + for(Utils::String::stringVector::iterator it = articles.begin(); it != articles.end(); it++) + { + + if (Utils::String::startsWith(Utils::String::toUpper(name1), Utils::String::toUpper(it[0]) + " ")) { + name1 = Utils::String::replace(Utils::String::toUpper(name1), Utils::String::toUpper(it[0]) + " ", ""); + } + + if (Utils::String::startsWith(Utils::String::toUpper(name2), Utils::String::toUpper(it[0]) + " ")) { + name2 = Utils::String::replace(Utils::String::toUpper(name2), Utils::String::toUpper(it[0]) + " ", ""); + } + + } + } - return false; } + }; diff --git a/es-app/src/FileSorts.h b/es-app/src/FileSorts.h index e9f662437b..c3503b1664 100644 --- a/es-app/src/FileSorts.h +++ b/es-app/src/FileSorts.h @@ -1,14 +1,26 @@ #pragma once +#ifndef ES_APP_FILE_SORTS_H +#define ES_APP_FILE_SORTS_H -#include #include "FileData.h" +#include namespace FileSorts { - bool compareFileName(const FileData* file1, const FileData* file2); + bool compareName(const FileData* file1, const FileData* file2); bool compareRating(const FileData* file1, const FileData* file2); - bool compareTimesPlayed(const FileData* file1, const FileData* fil2); + bool compareTimesPlayed(const FileData* file1, const FileData* file2); bool compareLastPlayed(const FileData* file1, const FileData* file2); + bool compareNumPlayers(const FileData* file1, const FileData* file2); + bool compareReleaseDate(const FileData* file1, const FileData* file2); + bool compareGenre(const FileData* file1, const FileData* file2); + bool compareDeveloper(const FileData* file1, const FileData* file2); + bool comparePublisher(const FileData* file1, const FileData* file2); + bool compareSystem(const FileData* file1, const FileData* file2); + + void ignoreLeadingArticles(std::string &name1, std::string &name2); extern const std::vector SortTypes; }; + +#endif // ES_APP_FILE_SORTS_H diff --git a/es-app/src/Gamelist.cpp b/es-app/src/Gamelist.cpp index 8c647fc4d0..51a6d9e2ba 100644 --- a/es-app/src/Gamelist.cpp +++ b/es-app/src/Gamelist.cpp @@ -1,45 +1,49 @@ #include "Gamelist.h" -#include "SystemData.h" -#include "pugixml/pugixml.hpp" -#include + +#include + +#include "utils/FileSystemUtil.h" +#include "FileData.h" +#include "FileFilterIndex.h" #include "Log.h" #include "Settings.h" -#include "Util.h" - -namespace fs = boost::filesystem; +#include "SystemData.h" +#include -FileData* findOrCreateFile(SystemData* system, const boost::filesystem::path& path, FileType type) +FileData* findOrCreateFile(SystemData* system, const std::string& path, FileType type) { - // first, verify that path is within the system's root folder FileData* root = system->getRootFolder(); - bool contains = false; - fs::path relative = removeCommonPath(path, root->getPath(), contains); + const std::string systemPath = root->getPath(); + + // first, verify that path is within the system's root folder + std::string relative = Utils::FileSystem::removeCommonPath(path, systemPath, contains, true); if(!contains) { LOG(LogError) << "File path \"" << path << "\" is outside system path \"" << system->getStartPath() << "\""; return NULL; } - auto path_it = relative.begin(); + Utils::FileSystem::stringList pathList = Utils::FileSystem::getPathList(relative); + + auto path_it = pathList.begin(); FileData* treeNode = root; bool found = false; - while(path_it != relative.end()) + + // iterate over all subpaths below the provided path + while(path_it != pathList.end()) { - const std::vector& children = treeNode->getChildren(); - found = false; - for(auto child_it = children.begin(); child_it != children.end(); child_it++) - { - if((*child_it)->getPath().filename() == *path_it) - { - treeNode = *child_it; - found = true; - break; - } + const std::unordered_map& children = treeNode->getChildrenByFilename(); + + std::string pathSegment = *path_it; + auto candidate = children.find(pathSegment); + found = candidate != children.cend(); + if (found) { + treeNode = candidate->second; } // this is the end - if(path_it == --relative.end()) + if(path_it == --pathList.end()) { if(found) return treeNode; @@ -50,8 +54,17 @@ FileData* findOrCreateFile(SystemData* system, const boost::filesystem::path& pa return NULL; } - FileData* file = new FileData(type, path, system); - treeNode->addChild(file); + FileData* file = new FileData(type, path, system->getSystemEnvData(), system); + + // skipping arcade assets from gamelist and add only to filesystem + // (fs) folders, i.e. entriess in gamelist with and not to + // fs-folders which are marked as in gamelist. NB: + // treeNode's type (=parent) is determined by the element in the + // gamelist and not by the fs-type. + if(!file->isArcadeAsset() && treeNode->getType() == FOLDER) + { + treeNode->addChild(file); + } return file; } @@ -61,12 +74,23 @@ FileData* findOrCreateFile(SystemData* system, const boost::filesystem::path& pa // if type is a folder it's gonna be empty, so don't bother if(type == FOLDER) { - LOG(LogWarning) << "gameList: folder doesn't already exist, won't create"; + std::string absFolder = Utils::FileSystem::getAbsolutePath(pathSegment, systemPath); + LOG(LogWarning) << "gameList: folder " << absFolder << " absent on fs, no FileData object created. Do remove leftover in gamelist.xml to remediate this warning."; + return NULL; + } + // discard constellations like scummvm/game.svm/game.svm as + // scummvm/game.svm/ is a GAME and not a FOLDER + if (treeNode->getType() == GAME) + { + std::string absFolder = Utils::FileSystem::getAbsolutePath(pathSegment, systemPath); + LOG(LogWarning) << "gameList: trying to add game '" << absFolder << "' to a parent entry is invalid, no FileData object created. Do remove nested in gamelist.xml to remediate this warning."; return NULL; } - - // create missing folder - FileData* folder = new FileData(FOLDER, treeNode->getPath().stem() / *path_it, system); + // create folder filedata object + std::string absPath = Utils::FileSystem::resolveRelativePath(treeNode->getPath() + "/" + pathSegment, systemPath, false, true); + FileData* folder = new FileData(FOLDER, absPath, system->getSystemEnvData(), system); + LOG(LogDebug) << "folder not found as FileData, adding: " << folder->getPath(); + treeNode->addChild(folder); treeNode = folder; } @@ -79,9 +103,11 @@ FileData* findOrCreateFile(SystemData* system, const boost::filesystem::path& pa void parseGamelist(SystemData* system) { + bool trustGamelist = Settings::getInstance()->getBool("ParseGamelistOnly"); std::string xmlpath = system->getGamelistPath(false); + const std::vector allowedExtensions = system->getExtensions(); - if(!boost::filesystem::exists(xmlpath)) + if(!Utils::FileSystem::exists(xmlpath)) return; LOG(LogInfo) << "Parsing XML file \"" << xmlpath << "\"..."; @@ -102,7 +128,7 @@ void parseGamelist(SystemData* system) return; } - fs::path relativeTo = system->getStartPath(); + std::string relativeTo = system->getStartPath(); const char* tagList[2] = { "game", "folder" }; FileType typeList[2] = { GAME, FOLDER }; @@ -112,28 +138,39 @@ void parseGamelist(SystemData* system) FileType type = typeList[i]; for(pugi::xml_node fileNode = root.child(tag); fileNode; fileNode = fileNode.next_sibling(tag)) { - fs::path path = resolvePath(fileNode.child("path").text().get(), relativeTo, false); - - if(!boost::filesystem::exists(path)) + std::string path = fileNode.child("path").text().get(); + path = Utils::FileSystem::resolveRelativePath(path, relativeTo, false, true); + + if(!trustGamelist && !Utils::FileSystem::exists(path)) { LOG(LogWarning) << "File \"" << path << "\" does not exist! Ignoring."; continue; } + // Check whether the file's extension is allowed in the system + if (i == 0 /*game*/ && std::find(allowedExtensions.cbegin(), allowedExtensions.cend(), Utils::FileSystem::getExtension(path)) == allowedExtensions.cend()) + { + LOG(LogDebug) << "file " << path << " found in gamelist, but has unregistered extension"; + continue; + } + FileData* file = findOrCreateFile(system, path, type); if(!file) { LOG(LogError) << "Error finding/creating FileData for \"" << path << "\", skipping."; continue; } + else if(!file->isArcadeAsset()) + { + std::string defaultName = file->metadata.get("name"); + file->metadata = MetaDataList::createFromXML(file->getType() == GAME ? GAME_METADATA : FOLDER_METADATA, fileNode, relativeTo); - //load the metadata - std::string defaultName = file->metadata.get("name"); - file->metadata = MetaDataList::createFromXML(GAME_METADATA, fileNode, relativeTo); + //make sure name gets set if one didn't exist + if(file->metadata.get("name").empty()) + file->metadata.set("name", defaultName); - //make sure name gets set if one didn't exist - if(file->metadata.get("name").empty()) - file->metadata.set("name", defaultName); + file->metadata.resetChangedFlag(); + } } } } @@ -145,10 +182,10 @@ void addFileDataNode(pugi::xml_node& parent, const FileData* file, const char* t //write metadata file->metadata.appendToXML(newNode, true, system->getStartPath()); - + if(newNode.children().begin() == newNode.child("name") //first element is name && ++newNode.children().begin() == newNode.children().end() //theres only one element - && newNode.child("name").text().get() == file->getCleanName()) //the name is the default + && newNode.child("name").text().get() == file->getDisplayName()) //the name is the default { //if the only info is the default name, don't bother with this node //delete it and ultimately do nothing @@ -157,7 +194,8 @@ void addFileDataNode(pugi::xml_node& parent, const FileData* file, const char* t //there's something useful in there so we'll keep the node, add the path // try and make the path relative if we can so things still work if we change the rom folder location in the future - newNode.prepend_child("path").text().set(makeRelativePath(file->getPath(), system->getStartPath(), false).generic_string().c_str()); + std::string relPath = Utils::FileSystem::createRelativePath(file->getPath(), system->getStartPath(), false, true); + newNode.prepend_child("path").text().set(relPath.c_str()); } } @@ -175,11 +213,13 @@ void updateGamelist(SystemData* system) pugi::xml_node root; std::string xmlReadPath = system->getGamelistPath(false); - if(boost::filesystem::exists(xmlReadPath)) + std::string relativeTo = system->getStartPath(); + + if(Utils::FileSystem::exists(xmlReadPath)) { //parse an existing file first pugi::xml_parse_result result = doc.load_file(xmlReadPath.c_str()); - + if(!result) { LOG(LogError) << "Error parsing XML file \"" << xmlReadPath << "\"!\n " << result.description(); @@ -197,54 +237,108 @@ void updateGamelist(SystemData* system) root = doc.append_child("gameList"); } + std::vector changedGames; + std::vector changedFolders; //now we have all the information from the XML. now iterate through all our games and add information from there FileData* rootFolder = system->getRootFolder(); if (rootFolder != nullptr) { - //get only files, no folders + int numUpdated = 0; + std::vector files = rootFolder->getFilesRecursive(GAME | FOLDER); - //iterate through all files, checking if they're already in the XML - std::vector::const_iterator fit = files.cbegin(); - while(fit != files.cend()) + + // Stage 1: iterate through all files in memory, checking for changes + for(std::vector::const_iterator fit = files.cbegin(); fit != files.cend(); ++fit) { - const char* tag = ((*fit)->getType() == GAME) ? "game" : "folder"; - // check if the file already exists in the XML - // if it does, remove it before adding - for(pugi::xml_node fileNode = root.child(tag); fileNode; fileNode = fileNode.next_sibling(tag)) + // do not touch if it wasn't changed anyway + if (!(*fit)->metadata.wasChanged()) + continue; + + // adding item to changed list + if ((*fit)->getType() == GAME) + { + changedGames.push_back((*fit)); + } + else { - pugi::xml_node pathNode = fileNode.child("path"); - if(!pathNode) + changedFolders.push_back((*fit)); + } + } + + + // Stage 2: iterate XML if needed, to remove and add changed items + const char* tagList[2] = { "game", "folder" }; + FileType typeList[2] = { GAME, FOLDER }; + std::vector changedList[2] = { changedGames, changedFolders }; + + for(int i = 0; i < 2; i++) + { + const char* tag = tagList[i]; + std::vector changes = changedList[i]; + + // check for changed items of this type + if (changes.size() > 0) { + // check if the item already exists in the XML + // if it does, remove all corresponding items before adding + for(pugi::xml_node fileNode = root.child(tag); fileNode; ) { - LOG(LogError) << "<" << tag << "> node contains no child!"; - continue; + pugi::xml_node pathNode = fileNode.child("path"); + + // we need this as we were deleting the iterator and things would become inconsistent + pugi::xml_node nextNode = fileNode.next_sibling(tag); + + if(!pathNode) + { + LOG(LogError) << "<" << tag << "> node contains no child!"; + continue; + } + + std::string xmlpath = pathNode.text().get(); + // apply the same transformation as in Gamelist::parseGamelist + xmlpath = Utils::FileSystem::resolveRelativePath(xmlpath, relativeTo, false, true); + + for(std::vector::const_iterator cfit = changes.cbegin(); cfit != changes.cend(); ++cfit) + { + if(xmlpath == (*cfit)->getPath()) + { + // found it + root.remove_child(fileNode); + break; + } + } + fileNode = nextNode; + } - fs::path nodePath = resolvePath(pathNode.text().get(), system->getStartPath(), true); - fs::path gamePath((*fit)->getPath()); - if(nodePath == gamePath || (fs::exists(nodePath) && fs::exists(gamePath) && fs::equivalent(nodePath, gamePath))) + // add items to XML + for(std::vector::const_iterator cfit = changes.cbegin(); cfit != changes.cend(); ++cfit) { - // found it - root.remove_child(fileNode); - break; + // it was either removed or never existed to begin with; either way, we can add it now + addFileDataNode(root, *cfit, tag, system); + ++numUpdated; } } + } - // it was either removed or never existed to begin with; either way, we can add it now - addFileDataNode(root, *fit, tag, system); + // now write the file - ++fit; - } + if (numUpdated > 0) { + const auto startTs = std::chrono::system_clock::now(); + + //make sure the folders leading up to this path exist (or the write will fail) + std::string xmlWritePath(system->getGamelistPath(true)); + Utils::FileSystem::createDirectory(Utils::FileSystem::getParent(xmlWritePath)); - //now write the file + LOG(LogInfo) << "Added/Updated " << numUpdated << " entities in '" << xmlReadPath << "'"; - //make sure the folders leading up to this path exist (or the write will fail) - boost::filesystem::path xmlWritePath(system->getGamelistPath(true)); - boost::filesystem::create_directories(xmlWritePath.parent_path()); + if (!doc.save_file(xmlWritePath.c_str())) { + LOG(LogError) << "Error saving gamelist.xml to \"" << xmlWritePath << "\" (for system " << system->getName() << ")!"; + } - if (!doc.save_file(xmlWritePath.c_str())) { - LOG(LogError) << "Error saving gamelist.xml to \"" << xmlWritePath << "\" (for system " << system->getName() << ")!"; + const auto endTs = std::chrono::system_clock::now(); + LOG(LogInfo) << "Saved gamelist.xml for system \"" << system->getName() << "\" in " << std::chrono::duration_cast(endTs - startTs).count() << " ms"; } }else{ LOG(LogError) << "Found no root folder for system \"" << system->getName() << "\"!"; diff --git a/es-app/src/Gamelist.h b/es-app/src/Gamelist.h index b681e91604..d9502a196d 100644 --- a/es-app/src/Gamelist.h +++ b/es-app/src/Gamelist.h @@ -1,4 +1,6 @@ #pragma once +#ifndef ES_APP_GAME_LIST_H +#define ES_APP_GAME_LIST_H class SystemData; @@ -7,3 +9,5 @@ void parseGamelist(SystemData* system); // Writes currently loaded metadata for a SystemData to gamelist.xml. void updateGamelist(SystemData* system); + +#endif // ES_APP_GAME_LIST_H diff --git a/es-app/src/MameNameMap.cpp b/es-app/src/MameNameMap.cpp deleted file mode 100644 index e2579c2361..0000000000 --- a/es-app/src/MameNameMap.cpp +++ /dev/null @@ -1,30452 +0,0 @@ -#define NULL 0 - -const char* mameNameToRealName[] = { - "005", "005", - "10yard", "10-Yard Fight (World, set 1)", - "10yard85", "10-Yard Fight '85 (US, Taito license)", - "10yardj", "10-Yard Fight (Japan)", - "11beat", "Eleven Beat", - "18w", "18 Wheeler (set 1)", - "18w2", "18 Wheeler (set 2)", - "18wheelr", "18 Wheeler (Deluxe) (Rev A)", - "18wheels", "18 Wheeler (Standard)", - "18wheelu", "18 Wheeler (Upright)", - "1941", "1941: Counter Attack (World 900227)", - "1941j", "1941: Counter Attack (Japan)", - "1941r1", "1941: Counter Attack (World)", - "1941u", "1941: Counter Attack (USA 900227)", - "1942", "1942 (Revision B)", - "1942a", "1942 (Revision A)", - "1942abl", "1942 (Revision A, bootleg)", - "1942b", "1942 (First Version)", - "1942p", "1942 (prototype)", - "1942w", "1942 (Williams Electronics license)", - "1943", "1943: The Battle of Midway (Euro)", - "1943b", "1943: Battle of Midway (bootleg, hack of Japan set)", - "1943j", "1943: Midway Kaisen (Japan, Rev B)", - "1943ja", "1943: Midway Kaisen (Japan)", - "1943kai", "1943 Kai: Midway Kaisen (Japan)", - "1943u", "1943: The Battle of Midway (US, Rev C)", - "1944", "1944: The Loop Master (USA 000620)", - "1944d", "1944: The Loop Master (USA 000620 Phoenix Edition) (bootleg)", - "1944j", "1944: The Loop Master (Japan 000620)", - "1945kiii", "1945k III", - "19in1", "19 in 1 MAME bootleg", - "19xx", "19XX: The War Against Destiny (USA 951207)", - "19xxa", "19XX: The War Against Destiny (Asia 951207)", - "19xxb", "19XX: The War Against Destiny (Brazil 951218)", - "19xxd", "19XX: The War Against Destiny (USA 951207 Phoenix Edition) (bootleg)", - "19xxh", "19XX: The War Against Destiny (Hispanic 951218)", - "19xxj", "19XX: The War Against Destiny (Japan 960104, yellow case)", - "19xxjr1", "19XX: The War Against Destiny (Japan 951225)", - "19xxjr2", "19XX: The War Against Destiny (Japan 951207)", - "1on1gov", "1 on 1 Government (Japan)", - "2020bb", "2020 Super Baseball (set 1)", - "2020bba", "2020 Super Baseball (set 2)", - "2020bbh", "2020 Super Baseball (set 3)", - "20pacgal", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.08)", - "20pacgalr0", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.00)", - "20pacgalr1", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.01)", - "20pacgalr2", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.02)", - "20pacgalr3", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.03)", - "20pacgalr4", "Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.04)", - "24cdjuke", "Midcoin Juke Box 24CD", - "25pacman", "Pac-Man - 25th Anniversary Edition (Rev 3.00)", - "25pacmano", "Pac-Man - 25th Anniversary Edition (Rev 2.00)", - "280zzzap", "280-ZZZAP", - "2mindril", "Two Minute Drill", - "30test", "30 Test (Remake)", - "39in1", "39 in 1 MAME bootleg", - "3bagflnz", "3 Bags Full (3VXFC5345, New Zealand)", - "3bagflvt", "3 Bags Full (5VXFC790, Victoria)", - "3countb", "3 Count Bout / Fire Suplex (NGM-043)(NGH-043)", - "3dobios", "3DO Bios", - "3ds", "Three Ds - Three Dealers Casino House", - "3in1semi", "XESS - The New Revolution (SemiCom 3-in-1)", - "3kokushi", "Sankokushi (Japan)", - "3on3dunk", "3 On 3 Dunk Madness (US, prototype? 1997/02/04)", - "3stooges", "The Three Stooges In Brides Is Brides (set 1)", - "3stoogesa", "The Three Stooges In Brides Is Brides (set 2)", - "3super8", "3 Super 8 (Italy)", - "3wishrd", "Three Wishes Red (Russia) (Atronic)", - "3wonders", "Three Wonders (World 910520)", - "3wondersb", "Three Wonders (bootleg)", - "3wondersh", "Three Wonders (hack)", - "3wondersr1", "Three Wonders (World 910513)", - "3wondersu", "Three Wonders (USA 910520)", - "3x3puzzl", "3X3 Puzzle (Enterprise)", - "3x3puzzla", "3X3 Puzzle (Normal)", - "40love", "Forty-Love", - "47pie2", "Idol Janshi Su-Chi-Pie 2 (v1.1)", - "47pie2o", "Idol Janshi Su-Chi-Pie 2 (v1.0)", - "48in1", "48 in 1 MAME bootleg (set 1, ver 3.09)", - "48in1a", "48 in 1 MAME bootleg (set 3, ver 3.02)", - "48in1b", "48 in 1 MAME bootleg (set 2, ver 3.09, alt flash)", - "4dwarrio", "4-D Warriors (315-5162)", - "4enlinea", "Cuatro en Linea", - "4enraya", "4 En Raya (set 1)", - "4enrayaa", "4 En Raya (set 2)", - "4in1", "4 Fun in 1", - "4in1a", "4 in 1 MAME bootleg (set 1, ver 3.00)", - "4in1b", "4 in 1 MAME bootleg (set 2)", - "4in1boot", "Puzzle King (includes bootleg of Snow Bros.)", - "4psimasy", "Mahjong 4P Simasyo (Japan)", - "4roses", "Four Roses (encrypted, set 1)", - "4rosesa", "Four Roses (encrypted, set 2)", - "500gp", "500 GP (5GP3 Ver. C)", - "50lions", "50 Lions (10120511, NSW/ACT)", - "50lionsa", "50 Lions (10156111, Malaysia)", - "5acespkr", "5-Aces Poker", - "5clown", "Five Clown (English, set 1)", - "5clowna", "Five Clown (English, set 2)", - "5clownsp", "Five Clown (Spanish hack)", - "600", "600", - "60in1", "60 in 1 MAME bootleg (ver 3.00)", - "64street", "64th. Street - A Detective Story (World)", - "64streetj", "64th. Street - A Detective Story (Japan)", - "720", "720 Degrees (rev 4)", - "720g", "720 Degrees (German, rev 2)", - "720gr1", "720 Degrees (German, rev 1)", - "720r1", "720 Degrees (rev 1)", - "720r2", "720 Degrees (rev 2)", - "720r3", "720 Degrees (rev 3)", - "7jigen", "7jigen no Youseitachi - Mahjong 7 Dimensions (Japan)", - "7mezzo", "7 e Mezzo", - "7ordi", "7 Ordi (Korea)", - "7smash", "7 Smash", - "7toitsu", "Chi-Toitsu", - "800fath", "800 Fathoms", - "86lions", "86 Lions", - "88games", "'88 Games", - "8ball", "Video Eight Ball", - "8ball1", "Video Eight Ball (Rev.1)", - "8ballact", "Eight Ball Action (DK conversion)", - "8ballact2", "Eight Ball Action (DKJr conversion)", - "8bpm", "Eight Ball Action (Pac-Man conversion)", - "98best44", "Neo Print - '98 NeoPri Best 44 (Japan)", - "99bottles", "99 Bottles of Beer", - "99lstwar", "'99: The Last War (set 1)", - "99lstwara", "'99: The Last War (set 2)", - "99lstwark", "'99: The Last War (Kyugo)", - "9ballsht", "9-Ball Shootout (set 1)", - "9ballsht2", "9-Ball Shootout (set 2)", - "9ballsht3", "9-Ball Shootout (set 3)", - "9ballshtc", "9-Ball Shootout Championship", - "a51mxr3k", "Area 51 / Maximum Force Duo (R3000)", - "a51site4", "Area 51: Site 4 (HD Rev 2.01, September 7, 1998)", - "a51site4a", "Area 51: Site 4 (HD Rev 2.0, September 11, 1998)", - "aadvent", "African Adventure (Konami Endeavour)", - "aafb", "All American Football (rev E)", - "aafbb", "All American Football (rev B)", - "aafbc", "All American Football (rev C)", - "aafbd2p", "All American Football (rev D, 2 Players)", - "aar_101", "Aaron Spelling (1.01)", - "aavenger", "Airborne Avenger", - "abacus", "Abacus (Ver 1.0)", - "abaseb", "Atari Baseball (set 1)", - "abaseb2", "Atari Baseball (set 2)", - "abattle", "Astro Battle (set 1)", - "abattle2", "Astro Battle (set 2)", - "abcop", "A.B. Cop (World, FD1094 317-0169b)", - "abcopj", "A.B. Cop (Japan, FD1094 317-0169b)", - "abigchs", "Big Cheese (Russia) (Atronic)", - "abnudge", "Animal Bonus Nudge (Version 2.1 Dual)", - "abnudgeb", "Animal Bonus Nudge (Version 2.0, set 1)", - "abnudged", "Animal Bonus Nudge (Version 2.0, set 2)", - "abnudgeo", "Animal Bonus Nudge (Version 1.7)", - "abscam", "Abscam", - "abunai", "Abunai Houkago - Mou Matenai (Japan 890325)", - "aburner", "After Burner", - "aburner2", "After Burner II", - "aburner2g", "After Burner II (German)", - "abv106", "Airborne", - "abv106r", "Airborne (Redemption)", - "ac1bbclb", "Big Break Club (Ace) (ACESYS1) (set 1)", - "ac1bbclba", "Big Break Club (Ace) (ACESYS1) (set 2)", - "ac1bluec", "Blue Chip (Pcp) (ACESYS1) (set 1)", - "ac1blueca", "Blue Chip (Pcp) (ACESYS1) (set 2)", - "ac1bluecb", "Blue Chip (Pcp) (ACESYS1) (set 3)", - "ac1bluecc", "Blue Chip (Pcp) (ACESYS1) (set 4)", - "ac1bluecd", "Blue Chip (Pcp) (ACESYS1) (set 5)", - "ac1clbmn", "Club Money (Ace) (ACESYS1) (set 1)", - "ac1clbsv", "Club Sovereign (Ace) (ACESYS1)", - "ac1clbxt", "Club Xtra (Ace) (ACESYS1) (set 1)", - "ac1clbxta", "Club Xtra (Ace) (ACESYS1) (set 2)", - "ac1dbldx", "Double Deluxe (Pcp) (ACESYS1)", - "ac1gogld", "Go For Gold (Ace) (ACESYS1) (set 1)", - "ac1hideh", "Hi De Hi Deluxe (Ace) (ACESYS1) (set 1)", - "ac1hideha", "Hi De Hi Deluxe (Ace) (ACESYS1) (set 2)", - "ac1hotpf", "Hot Profit (Ace) (ACESYS1)", - "ac1nudbk", "Nudge Break (Pcp) (ACESYS1) (set 1)", - "ac1nudbka", "Nudge Break (Pcp) (ACESYS1) (set 2)", - "ac1nudbkb", "Nudge Break (Pcp) (ACESYS1) (set 3)", - "ac1nudbkc", "Nudge Break (Pcp) (ACESYS1) (set 4)", - "ac1nudbkd", "Nudge Break (Pcp) (ACESYS1) (set 5)", - "ac1piaca", "Play It Again Casino (Ace) (ACESYS1)", - "ac1piacl", "Play It Again Club (Ace) (ACESYS1) (set 1)", - "ac1piacla", "Play It Again Club (Ace) (ACESYS1) (set 2)", - "ac1piaclb", "Play It Again Club (Ace) (ACESYS1) (set 3)", - "ac1piaclc", "Play It Again Club (Ace) (ACESYS1) (set 4)", - "ac1primt", "Primetime (Ace) (ACESYS1) (set 1)", - "ac1prmcl", "Premier Club (Ace) (ACESYS1) (set 1)", - "ac1prmcla", "Premier Club (Ace) (ACESYS1) (set 2)", - "ac1prmclb", "Premier Club (Ace) (ACESYS1) (set 3)", - "ac1prmclc", "Premier Club (Ace) (ACESYS1) (set 4)", - "ac1pster", "Pound Sterling (Ace) (ACESYS1)", - "ac1pstrt", "Pound Stretcher (Pcp) (ACESYS1)", - "ac1roll", "Roll Up (Pcp) (ACESYS1) (set 1)", - "ac1rolla", "Roll Up (Pcp) (ACESYS1) (set 2)", - "ac1rollb", "Roll Up (Pcp) (ACESYS1) (set 3)", - "ac1rundx", "Runner Deluxe Club (Ace) (ACESYS1) (set 1)", - "ac1rundxa", "Runner Deluxe Club (Ace) (ACESYS1) (set 2)", - "ac1shid", "Super Hi De Hi (Ace) (ACESYS1) (set 1)", - "ac1shida", "Super Hi De Hi (Ace) (ACESYS1) (set 2)", - "ac1sstrk", "Starstruck (Pcp) (ACESYS1) (set 1)", - "ac1sstrka", "Starstruck (Pcp) (ACESYS1) (set 2)", - "ac1sstrkb", "Starstruck (Pcp) (ACESYS1) (set 3)", - "ac1taklv", "Take It Or Leave It (Ace) (ACESYS1) (set 1)", - "ac1totb", "Top Of The Bill (Ace) (ACESYS1)", - "ac1xpres", "Xpress (Pcp) (ACESYS1)", - "ace", "Ace", - "aceattac", "Ace Attacker (FD1094 317-0059)", - "aceattaca", "Ace Attacker (Japan, System 16A, FD1094 317-0060)", - "acedrvrw", "Ace Driver: Racing Evolution (Rev. AD2)", - "acefruit", "Silhouette", - "acheart", "Arcana Heart", - "acheartf", "Arcana Heart Full", - "acitya", "Atlantic City Action", - "aclown", "Clown (Russia) (Atronic)", - "acombat", "Astro Combat (newer, CB)", - "acombat3", "Astro Combat (unencrypted)", - "acombato", "Astro Combat (older, PZ)", - "acommand", "Alien Command", - "acpsx", "Acclaim PSX", - "acrobatm", "Acrobat Mission", - "act2000", "Action 2000 (Version 3.5E Dual)", - "act2000b1", "Action 2000 (Version 3.5R, set 2)", - "act2000bx", "Action 2000 (Version 3.30XT, set 2)", - "act2000d1", "Action 2000 (Version 3.5R, set 1)", - "act2000dx", "Action 2000 (Version 3.30XT, set 1)", - "act2000o", "Action 2000 (Version 3.3)", - "act2000o2", "Action 2000 (Version 3.10XT)", - "act2000o3", "Action 2000 (Version 1.2)", - "act2000v1", "Action 2000 (Version 3.5R Dual)", - "act2000vx", "Action 2000 (Version 3.30XT Dual)", - "actfancr", "Act-Fancer Cybernetick Hyper Weapon (World revision 2)", - "actfancr1", "Act-Fancer Cybernetick Hyper Weapon (World revision 1)", - "actfancrj", "Act-Fancer Cybernetick Hyper Weapon (Japan revision 1)", - "actionhw", "Action Hollywood", - "ad2083", "A. D. 2083", - "ad4ctl", "Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 1)", - "ad4ctla", "Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 2)", - "ad4film", "Film Premiere (Video?) (Bellfruit) (Adder 4) (set 1)", - "ad4filma", "Film Premiere (Video?) (Bellfruit) (Adder 4) (set 2)", - "ad4skill", "Skill Dice (BFM) (Scorpion 4 + Adder 4)", - "ad5bpfpm", "Bullseye Pounds For Points (Mazooma) (Adder 5) (set 1)", - "ad5bpfpma", "Bullseye Pounds For Points (Mazooma) (Adder 5) (set 2)", - "ad5bpfpmb", "Bullseye Pounds For Points (Mazooma) (Adder 5) (set 3)", - "ad5bpfpmc", "Bullseye Pounds For Points (Mazooma) (Adder 5) (set 4)", - "ad5bpfpmd", "Bullseye Pounds For Points (Mazooma) (Adder 5) (set 5)", - "ad5btc", "Bullseye Triple Club (PR1758, BFGPBULS) (Bellfruit) (Adder 5) (set 1)", - "ad5btca", "Bullseye Triple Club (PR1758, BFGPBULS) (Bellfruit) (Adder 5) (set 3)", - "ad5btcb", "Bullseye Triple Club (PR1758, BFGNBULS) (Bellfruit) (Adder 5) (set 4)", - "ad5cmons", "Crazy Money (Bellfruit) (Adder 5) (set 1)", - "ad5cmonsa", "Crazy Money (Bellfruit) (Adder 5) (set 2)", - "ad5copsr", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 1)", - "ad5copsr0", "Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 7)", - "ad5copsr1", "Cops 'n' Robbers (PR2497) (Mazooma) (Adder 5) (set 2)", - "ad5copsr2", "Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 8)", - "ad5copsr3", "Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 1)", - "ad5copsr4", "Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 5)", - "ad5copsr5", "Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 2)", - "ad5copsr6", "Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 6)", - "ad5copsr7", "Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 4)", - "ad5copsra", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 2)", - "ad5copsrb", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 3)", - "ad5copsrc", "Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 1)", - "ad5copsrd", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 4)", - "ad5copsre", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 5)", - "ad5copsrf", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 6)", - "ad5copsrg", "Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 2)", - "ad5copsrh", "Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 1)", - "ad5copsri", "Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 2)", - "ad5copsrj", "Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 5)", - "ad5copsrk", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 7)", - "ad5copsrl", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 8)", - "ad5copsrm", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 9)", - "ad5copsrn", "Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 3)", - "ad5copsro", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 10)", - "ad5copsrp", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 11)", - "ad5copsrq", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 12)", - "ad5copsrr", "Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 4)", - "ad5copsrs", "Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 3)", - "ad5copsrt", "Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 4)", - "ad5copsru", "Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 6)", - "ad5copsrv", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 13)", - "ad5copsrw", "Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 14)", - "ad5copsrx", "Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 5)", - "ad5copsry", "Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 6)", - "ad5copsrz", "Cops 'n' Robbers (PR2497) (Mazooma) (Adder 5) (set 1)", - "ad5crcpt", "Cops 'n' Robbers Community Party (Bellfruit) (Adder 5) (set 1)", - "ad5crcpta", "Cops 'n' Robbers Community Party (Bellfruit) (Adder 5) (set 2)", - "ad5crsc", "Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 1)", - "ad5crsca", "Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 2)", - "ad5crscb", "Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 3)", - "ad5crscc", "Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 4)", - "ad5crscd", "Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 7)", - "ad5crsce", "Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 8)", - "ad5crscf", "Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 9)", - "ad5crscg", "Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 10)", - "ad5crsch", "Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 3)", - "ad5dnd", "Deal Or No Deal (Bellfruit) (Adder 5) (set 1)", - "ad5dnda", "Deal Or No Deal (Bellfruit) (Adder 5) (set 2)", - "ad5dndb", "Deal Or No Deal (Bellfruit) (Adder 5) (set 3)", - "ad5dndc", "Deal Or No Deal (Bellfruit) (Adder 5) (set 4)", - "ad5dndcl", "Deal Or No Deal Club (Bellfruit) (Adder 5) (set 1)", - "ad5dndcla", "Deal Or No Deal Club (Bellfruit) (Adder 5) (set 2)", - "ad5dndclb", "Deal Or No Deal Club (Bellfruit) (Adder 5) (set 3)", - "ad5dndclc", "Deal Or No Deal Club (Bellfruit) (Adder 5) (set 4)", - "ad5dndcld", "Deal Or No Deal Club (Bellfruit) (Adder 5) (set 5)", - "ad5dndcle", "Deal Or No Deal Club (Bellfruit) (Adder 5) (set 6)", - "ad5dndclf", "Deal Or No Deal Club (Bellfruit) (Adder 5) (set 20)", - "ad5dndclg", "Deal Or No Deal Club (Bellfruit) (Adder 5) (set 21)", - "ad5dndd", "Deal Or No Deal (Bellfruit) (Adder 5) (set 5)", - "ad5dnddd", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Adder 5) (set 1)", - "ad5dnddda", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Adder 5) (set 2)", - "ad5dnde", "Deal Or No Deal (Bellfruit) (Adder 5) (set 6)", - "ad5dndf", "Deal Or No Deal (Bellfruit) (Adder 5) (set 7)", - "ad5dndg", "Deal Or No Deal (Bellfruit) (Adder 5) (set 8)", - "ad5dndh", "Deal Or No Deal (Bellfruit) (Adder 5) (set 9)", - "ad5dndi", "Deal Or No Deal (Bellfruit) (Adder 5) (set 10)", - "ad5dndj", "Deal Or No Deal (Bellfruit) (Adder 5) (set 11)", - "ad5dndk", "Deal Or No Deal (Bellfruit) (Adder 5) (set 12)", - "ad5dndl", "Deal Or No Deal (Bellfruit) (Adder 5) (set 13)", - "ad5dndm", "Deal Or No Deal (Bellfruit) (Adder 5) (set 14)", - "ad5dndn", "Deal Or No Deal (Bellfruit) (Adder 5) (set 15)", - "ad5dndo", "Deal Or No Deal (Bellfruit) (Adder 5) (set 16)", - "ad5dndp", "Deal Or No Deal (Bellfruit) (Adder 5) (set 17)", - "ad5dndpg", "Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 1)", - "ad5dndpga", "Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 2)", - "ad5dndpgb", "Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 3)", - "ad5dndpgc", "Deal Or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 4)", - "ad5dndpl", "Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 1)", - "ad5dndpla", "Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 2)", - "ad5dndplb", "Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 3)", - "ad5dndplc", "Deal Or No Deal Platinum (Bellfruit) (Adder 5) (set 4)", - "ad5dndq", "Deal Or No Deal (Bellfruit) (Adder 5) (set 18)", - "ad5dndr", "Deal Or No Deal (Bellfruit) (Adder 5) (set 19)", - "ad5dndu", "Deal Or No Deal (Bellfruit) (Adder 5) (set 22)", - "ad5dndv", "Deal Or No Deal (Bellfruit) (Adder 5) (set 23)", - "ad5eyes", "Eyes Down (PR2242, MAZNEYDW) (Mazooma) (Adder 5) (set 1)", - "ad5eyesa", "Eyes Down (PR2242, MAZNEYDW) (Mazooma) (Adder 5) (set 2)", - "ad5eyesb", "Eyes Down (PR2246, MAZNEYDW) (Mazooma) (Adder 5) (set 1)", - "ad5eyesc", "Eyes Down (PR2246, MAZPEYDW) (Mazooma) (Adder 5) (set 1)", - "ad5eyesd", "Eyes Down (PR2242, MAZPEYDW) (Mazooma) (Adder 5) (set 1)", - "ad5eyese", "Eyes Down (PR2242, MAZPEYDW) (Mazooma) (Adder 5) (set 2)", - "ad5eyesf", "Eyes Down (PR2246, MAZPEYDW) (Mazooma) (Adder 5) (set 2)", - "ad5eyesg", "Eyes Down (PR2246, MAZNEYDW) (Mazooma) (Adder 5) (set 2)", - "ad5gldmn", "Gold Mine (Bellfruit) (Adder 5) (set 1)", - "ad5gldmna", "Gold Mine (Bellfruit) (Adder 5) (set 2)", - "ad5gldmnb", "Gold Mine (Bellfruit) (Adder 5) (set 3)", - "ad5gldmnc", "Gold Mine (Bellfruit) (Adder 5) (set 4)", - "ad5gldmnd", "Gold Mine (Bellfruit) (Adder 5) (set 5)", - "ad5gldmne", "Gold Mine (Bellfruit) (Adder 5) (set 6)", - "ad5gldmnf", "Gold Mine (Bellfruit) (Adder 5) (set 7)", - "ad5gldmng", "Gold Mine (Bellfruit) (Adder 5) (set 8)", - "ad5gldmnh", "Gold Mine (Bellfruit) (Adder 5) (set 9)", - "ad5gldmni", "Gold Mine (Bellfruit) (Adder 5) (set 10)", - "ad5gldmnj", "Gold Mine (Bellfruit) (Adder 5) (set 11)", - "ad5gldmnk", "Gold Mine (Bellfruit) (Adder 5) (set 12)", - "ad5gldwn", "Golden Winner (Mazooma) (Adder 5) (set 1)", - "ad5gldwna", "Golden Winner (Mazooma) (Adder 5) (set 2)", - "ad5hir", "Hi Roller (Bellfruit) (Adder 5) (set 1)", - "ad5hira", "Hi Roller (Bellfruit) (Adder 5) (set 2)", - "ad5hirb", "Hi Roller (Bellfruit) (Adder 5) (set 3)", - "ad5hirc", "Hi Roller (Bellfruit) (Adder 5) (set 4)", - "ad5hircl", "Hi Roller Club (Bellfruit) (Adder 5) (set 1)", - "ad5hircla", "Hi Roller Club (Bellfruit) (Adder 5) (set 2)", - "ad5hirclb", "Hi Roller Club (Bellfruit) (Adder 5) (set 3)", - "ad5jckmo", "Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 1)", - "ad5jckmoa", "Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 2)", - "ad5jckmob", "Jackpot Monopoly (PR2253, MAZNJACM) (Mazooma) (Adder 5)", - "ad5jckmoc", "Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 3)", - "ad5jckmod", "Jackpot Monopoly (PR2226, MAZPJACM) (Mazooma) (Adder 5) (set 1)", - "ad5jckmoe", "Jackpot Monopoly (PR2226, MAZPJACM) (Mazooma) (Adder 5) (set 2)", - "ad5mcob", "Monte Carlo Or Bust (Qps) (Adder 5) (set 1)", - "ad5mcoba", "Monte Carlo Or Bust (Qps) (Adder 5) (set 2)", - "ad5mcobb", "Monte Carlo Or Bust (Qps) (Adder 5) (set 3)", - "ad5mcobc", "Monte Carlo Or Bust (Qps) (Adder 5) (set 4)", - "ad5monop", "Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 1)", - "ad5monopa", "Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 2)", - "ad5monopb", "Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 3)", - "ad5monopc", "Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 4)", - "ad5monopd", "Random Monopoly (PR2221, MAZNRNDN) (Mazooma) (Adder 5) (set 1)", - "ad5monope", "Random Monopoly (PR2221, MAZNRNDN) (Mazooma) (Adder 5) (set 2)", - "ad5monopf", "Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 1)", - "ad5monopg", "Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 2)", - "ad5monoph", "Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 3)", - "ad5monopi", "Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 4)", - "ad5monopj", "Random Monopoly (PR2221, MAZPRNDN) (Mazooma) (Adder 5) (set 1)", - "ad5monopk", "Random Monopoly (PR2221, MAZPRNDN) (Mazooma) (Adder 5) (set 2)", - "ad5mowow", "Monopoly Wheel Of Wealth (PR2365, MAZNBPFP) (Mazooma) (Adder 5) (set 1)", - "ad5mowowa", "Monopoly Wheel Of Wealth (PR2365, MAZNWOWT) (Mazooma) (Adder 5) (set 1)", - "ad5mowowb", "Monopoly Wheel Of Wealth (PR2365, MAZNWOWT) (Mazooma) (Adder 5) (set 2)", - "ad5mowowc", "Monopoly Wheel Of Wealth (PR2389, MAZNWWBU) (Mazooma) (Adder 5)", - "ad5mowowd", "Monopoly Wheel Of Wealth (PR2365, MAZNMWOW) (Mazooma) (Adder 5)", - "ad5mowowe", "Monopoly Wheel Of Wealth (PR2365, MAZPBPFP) (Mazooma) (Adder 5) (set 1)", - "ad5mowowf", "Monopoly Wheel Of Wealth (PR2365, MAZPWOWT) (Mazooma) (Adder 5) (set 1)", - "ad5mowowg", "Monopoly Wheel Of Wealth (PR2365, MAZPWOWT) (Mazooma) (Adder 5) (set 2)", - "ad5mowowh", "Monopoly Wheel Of Wealth (PR2389, MAZPWWBU) (Mazooma) (Adder 5)", - "ad5mowowi", "Monopoly Wheel Of Wealth (PR2365, MAZPMWOW) (Mazooma) (Adder 5)", - "ad5mowowj", "Monopoly Wheel Of Wealth (PR3075) (Adder 5) (set 1)", - "ad5mowowk", "Monopoly Wheel Of Wealth (PR3075) (Adder 5) (set 2)", - "ad5mowowl", "Monopoly Wheel Of Wealth (PR2365, MAZNBPFP) (Mazooma) (Adder 5) (set 2)", - "ad5mowowm", "Monopoly Wheel Of Wealth (PR2365, MAZPBPFP) (Mazooma) (Adder 5) (set 2)", - "ad5mr2r", "Monopoly Road To Riches (Mazooma) (Adder 5) (set 1)", - "ad5mr2ra", "Monopoly Road To Riches (Mazooma) (Adder 5) (set 2)", - "ad5mr2rb", "Monopoly Road To Riches (Mazooma) (Adder 5) (set 3)", - "ad5mr2rc", "Monopoly Road To Riches (Mazooma) (Adder 5) (set 4)", - "ad5mr2rd", "Monopoly Road To Riches (Mazooma) (Adder 5) (set 5)", - "ad5mr2re", "Monopoly Road To Riches (Mazooma) (Adder 5) (set 6)", - "ad5mr2rf", "Monopoly Road To Riches (Mazooma) (Adder 5) (set 7)", - "ad5mr2rg", "Monopoly Road To Riches (Mazooma) (Adder 5) (set 8)", - "ad5mr2rh", "Monopoly Road To Riches (Mazooma) (Adder 5) (set 9)", - "ad5mww", "Random Monopoly Wonders Of The World (PR2284) (Mazooma) (Adder 5)", - "ad5mwwa", "Random Monopoly Wonders Of The World (PR2291) (Mazooma) (Adder 5)", - "ad5pking", "Poker King (Bellfruit) (Adder 5) (set 1)", - "ad5pkinga", "Poker King (Bellfruit) (Adder 5) (set 2)", - "ad5pp", "Pink Panther (PR2283, QPSNPINK) (Mazooma) (Adder 5) (set 1)", - "ad5ppa", "Pink Panther (PR2283, QPSNPINK) (Mazooma) (Adder 5) (set 2)", - "ad5ppb", "Pink Panther (PR2267, MAZNPINK) (Mazooma) (Adder 5) (set 1)", - "ad5ppbtb", "Pink Panther Break The Bank (PR2304, QPSNPPBB) (Qps) (Adder 5) (set 1)", - "ad5ppbtba", "Pink Panther Break The Bank (PR2304, QPSNPPBB) (Qps) (Adder 5) (set 2)", - "ad5ppbtbb", "Pink Panther Break The Bank (PR2304, QPSPPPBB) (Qps) (Adder 5) (set 1)", - "ad5ppbtbc", "Pink Panther Break The Bank (PR2304, QPSPPPBB) (Qps) (Adder 5) (set 2)", - "ad5ppc", "Pink Panther (PR2267, MAZNPINK) (Mazooma) (Adder 5) (set 2)", - "ad5ppd", "Pink Panther (MAZNPINK) (Mazooma) (Adder 5) (set 1)", - "ad5ppe", "Pink Panther (MAZNPINK) (Mazooma) (Adder 5) (set 2)", - "ad5ppf", "Pink Panther (PR2283, QPSPPINK) (Mazooma) (Adder 5) (set 1)", - "ad5ppg", "Pink Panther (PR2283, QPSPPINK) (Mazooma) (Adder 5) (set 2)", - "ad5pph", "Pink Panther (PR2267, MAZPPINK) (Mazooma) (Adder 5)", - "ad5ppi", "Pink Panther (MAZPPINK) (Mazooma) (Adder 5) (set 1)", - "ad5ppj", "Pink Panther (MAZPPINK) (Mazooma) (Adder 5) (set 2)", - "ad5rapid", "Rapid Pay (Bellfruit) (Adder 5) (set 1)", - "ad5rapida", "Rapid Pay (Bellfruit) (Adder 5) (set 2)", - "ad5rcash", "Reel Cash (Mazooma) (Adder 5) (set 1)", - "ad5rcasha", "Reel Cash (Mazooma) (Adder 5) (set 2)", - "ad5rroul", "Reel Roulette (QPSNRLRO) (Mazooma) (Adder 5)", - "ad5rroula", "Reel Roulette (QPSPRLRO) (Mazooma) (Adder 5)", - "ad5rroulb", "Reel Roulette (MAZNRERO) (Mazooma) (Adder 5)", - "ad5rroulc", "Reel Roulette (MAZPRERO) (Mazooma) (Adder 5)", - "ad5rsclb", "Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 1)", - "ad5rsclba", "Random Spinner Club (PR1826, BFGNRNDN) (Bellfruit) (Adder 5) (set 1)", - "ad5rsclbb", "Random Spinner Club (PR1826, BFGNRNDN) (Bellfruit) (Adder 5) (set 2)", - "ad5rsclbc", "Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 2)", - "ad5rsclbd", "Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 3)", - "ad5rsclbe", "Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 4)", - "ad5rsclbf", "Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 1)", - "ad5rsclbg", "Random Spinner Club (PR1826, BFGPRNDN) (Bellfruit) (Adder 5) (set 1)", - "ad5rsclbh", "Random Spinner Club (PR1826, BFGPRNDN) (Bellfruit) (Adder 5) (set 2)", - "ad5rsclbi", "Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 2)", - "ad5rsclbj", "Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 3)", - "ad5rsnw", "Random Spin 'n' Win (PR2226, MAZNRNDN) (Mazooma) (Adder 5) (set 1)", - "ad5rsnwa", "Random Spin 'n' Win (PR2226, MAZNRNDN) (Mazooma) (Adder 5) (set 2)", - "ad5rsnwb", "Random Spin 'n' Win (PR2226, MAZPRNDN) (Mazooma) (Adder 5) (set 1)", - "ad5rsnwc", "Random Spin 'n' Win (PR2226, MAZPRNDN) (Mazooma) (Adder 5) (set 2)", - "ad5rspin", "Random Spinner (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 1)", - "ad5rspinb", "Random Spinner (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 2)", - "ad5rspinc", "Random Spinner (Bellfruit) (Adder 5) (set 1)", - "ad5rsrm", "Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 1)", - "ad5rsrma", "Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 2)", - "ad5rsrr", "Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 3)", - "ad5rsrra", "Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 4)", - "ad5rwclb", "Random Winner Club (PR1756, BFGNRWSX) (Bellfruit) (Adder 5) (set 1)", - "ad5rwclba", "Random Winner Club (PR1756, BFGNRWSX) (Bellfruit) (Adder 5) (set 2)", - "ad5rwclbb", "Random Winner Club (PR1756, BFGPRWSX) (Bellfruit) (Adder 5) (set 1)", - "ad5rwclbc", "Random Winner Club (PR1756, BFGPRWSX) (Bellfruit) (Adder 5) (set 2)", - "ad5rwclbd", "Random Winner Club (PR1757, BFGPRWCL) (Bellfruit) (Adder 5)", - "ad5rwclbe", "Random Winner Club (PR1757, BFGNRWCL) (Bellfruit) (Adder 5)", - "ad5sslam", "Super Slam (Bellfruit) (Adder 5) (set 1)", - "ad5sslama", "Super Slam (Bellfruit) (Adder 5) (set 2)", - "ad5sslamb", "Super Slam (Bellfruit) (Adder 5) (set 3)", - "ad5sslamc", "Super Slam (Bellfruit) (Adder 5) (set 4)", - "ad5sslamd", "Super Slam (Bellfruit) (Adder 5) (set 5)", - "ad5sslame", "Super Slam (Bellfruit) (Adder 5) (set 6)", - "ad5sslamf", "Super Slam (Bellfruit) (Adder 5) (set 7)", - "ad5tornc", "Tornado Club (PR1629, 5.5, rv 8, BFGNTORD) (Bellfruit) (Adder 5)", - "ad5tornca", "Tornado Club (PR1629, 5.8, rv 7, BFGNTORD) (Bellfruit) (Adder 5)", - "ad5torncb", "Tornado Club (PR1629, 5.5, rv 8, BFGPTORD) (Bellfruit) (Adder 5)", - "ad5torncc", "Tornado Club (PR1629, 5.8, rv 7, BFGPTORD) (Bellfruit) (Adder 5)", - "ad5torncd", "Tornado Club (PR1627, 0.1, rv 1, BFGPTORN) (Bellfruit) (Adder 5)", - "ad5tornce", "Tornado Club (PR1627, 0.1, rv 1, BFGNTORN) (Bellfruit) (Adder 5)", - "ad5vlv", "Viva Las Vegas (Bellfruit) (Adder 5) (set 1)", - "ad5vlvb", "Viva Las Vegas (Bellfruit) (Adder 5) (set 2)", - "ad5vlvc", "Viva Las Vegas (Bellfruit) (Adder 5) (set 3)", - "ad5vlvd", "Viva Las Vegas (Bellfruit) (Adder 5) (set 4)", - "ad5vlve", "Viva Las Vegas (Bellfruit) (Adder 5) (set 5)", - "ad5vlvf", "Viva Las Vegas (Bellfruit) (Adder 5) (set 6)", - "ad5vpa", "Video Poker Ace (Bellfruit) (Adder 5) (set 1)", - "ad5vpaa", "Video Poker Ace (Bellfruit) (Adder 5) (set 2)", - "ad5vpab", "Video Poker Ace (Bellfruit) (Adder 5) (set 3)", - "ad5vpac", "Video Poker Ace (Bellfruit) (Adder 5) (set 4)", - "adillor", "Armadillo Racing (Rev. AM1 Ver.A)", - "adonis", "Adonis (0200751V, NSW/ACT)", - "adults", "Adults Only (Russia) (Extrema)", - "aerfboo2", "Aero Fighters (bootleg set 2)", - "aerfboot", "Aero Fighters (bootleg set 1)", - "aeroboto", "Aeroboto", - "aerofgt", "Aero Fighters (World / USA + Canada / Korea / Hong Kong / Taiwan) (newer hardware)", - "aerofgtb", "Aero Fighters (Taiwan / Japan, set 1)", - "aerofgtc", "Aero Fighters (Taiwan / Japan, set 2)", - "aerofgts", "Aero Fighters Special (Taiwan)", - "aerolitos", "Aerolitos (Spanish bootleg of Asteroids)", - "afighter", "Action Fighter (FD1089A 317-0018)", - "afire", "Astro Fire", - "afm_10", "Attack From Mars (1.0)", - "afm_11", "Attack From Mars (1.1)", - "afm_113", "Attack From Mars (1.13)", - "afm_113b", "Attack From Mars (1.13b)", - "afm_11u", "Attack From Mars (1.1 Ultrapin)", - "aftor", "Af-Tor", - "afv_l4", "Addams Family Values (Coin Dropper L-4)", - "agallet", "Air Gallet (Europe)", - "agalleth", "Air Gallet (Hong Kong)", - "agalletj", "Akuu Gallet (Japan)", - "agalletk", "Air Gallet (Korea)", - "agallett", "Air Gallet (Taiwan)", - "agalletu", "Air Gallet (USA)", - "agent777", "Agents 777", - "agentx1", "Agent X (prototype, rev 1)", - "agentx2", "Agent X (prototype, rev 2)", - "agentx3", "Agent X (prototype, rev 3)", - "agentx4", "Agent X (prototype, rev 4)", - "agress", "Agress - Missile Daisenryaku (Japan)", - "agressb", "Agress - Missile Daisenryaku (English bootleg)", - "agsoccer", "A.G. Soccer Ball", - "ainferno", "Air Inferno (US)", - "ainfernoj", "Air Inferno (Japan)", - "airass", "Air Assault (World)", - "airattck", "Air Attack (set 1)", - "airattcka", "Air Attack (set 2)", - "airbustr", "Air Buster: Trouble Specialty Raid Unit (World)", - "airbustrb", "Air Buster: Trouble Specialty Raid Unit (bootleg)", - "airbustrj", "Air Buster: Trouble Specialty Raid Unit (Japan)", - "airco22b", "Air Combat 22 (Rev. ACS1 Ver.B, Japan)", - "aircomb", "Air Combat (US)", - "aircombj", "Air Combat (Japan)", - "airduel", "Air Duel (Japan)", - "airlbios", "Naomi Airline Pilots Deluxe Bios", - "airrace", "Air Race (prototype)", - "airraid", "Air Raid (encrypted)", - "airtrix", "Air Trix", - "airwolf", "Airwolf", - "airwolfa", "Airwolf (US)", - "ajax", "Ajax", - "ajaxj", "Ajax (Japan)", - "akamaru", "Panel & Variety Akamaru Q Jousyou Dont-R", - "aking", "Angler King (AG1 Ver. A)", - "akiss", "Mahjong Angel Kiss", - "akkanvdr", "Akkanbeder (Ver 2.5J 1995/06/14)", - "akumajou", "Akuma-Jou Dracula (Japan version P)", - "akumajoun", "Akuma-Jou Dracula (Japan version N)", - "aladmdb", "Aladdin (bootleg of Japanese Megadrive version)", - "albatross", "Albatross (US Prototype?)", - "alcapone", "Al Capone", - "alcat_l7", "Alley Cats (Shuffle) (L-7)", - "alcon", "Alcon (US)", - "aleck64", "Aleck64 PIF BIOS", - "alexkidd", "Alex Kidd: The Lost Stars (set 2, unprotected)", - "alexkidd1", "Alex Kidd: The Lost Stars (set 1, FD1089A 317-0021)", - "alg_bios", "American Laser Games BIOS", - "algar_l1", "Algar (L-1)", - "ali", "Ali", - "alibaba", "Ali Baba and 40 Thieves", - "alibabab", "Mustafa and 40 Thieves (bootleg)", - "alien", "Alien: The Arcade Medal Edition", - "alien3", "Alien3: The Gun (World)", - "alien3u", "Alien3: The Gun (US)", - "alienar", "Alien Arena", - "alienaru", "Alien Arena (Stargate upgrade)", - "aliencha", "Alien Challenge (World)", - "alienchac", "Alien Challenge (China)", - "aliencr", "Alien Crush", - "alienfnt", "Alien Front (Rev T)", - "alienfnta", "Alien Front (Rev A)", - "alieninv", "Alien Invasion", - "alieninvp2", "Alien Invasion Part II", - "aliens", "Aliens (World set 1)", - "aliens2", "Aliens (World set 2)", - "aliens3", "Aliens (World set 3)", - "aliensa", "Aliens (Asia)", - "aliensec", "Alien Sector", - "aliensj", "Aliens (Japan set 1)", - "aliensj2", "Aliens (Japan set 2)", - "alienstr", "Alien Star", - "aliensu", "Aliens (US)", - "aliensyn", "Alien Syndrome (set 4, System 16B, unprotected)", - "aliensyn2", "Alien Syndrome (set 2, System 16A, FD1089A 317-0033)", - "aliensyn3", "Alien Syndrome (set 3, System 16B, FD1089A 317-0033)", - "aliensyn5", "Alien Syndrome (set 5, System 16A, FD1089B 317-0037)", - "aliensyn7", "Alien Syndrome (set 7, System 16B, MC-8123B 317-00xx)", - "aliensynj", "Alien Syndrome (set 6, Japan, new, System 16B, FD1089A 317-0033)", - "aliensynjo", "Alien Syndrome (set 1, Japan, old, System 16A, FD1089A 317-0033)", - "aligator", "Alligator Hunt", - "aligatorun", "Alligator Hunt (unprotected)", - "alleymas", "Alley Master", - "allied", "Allied System", - "alpha1v", "Alpha One (Vision Electronics)", - "alphaho", "Alpha Fighter / Head On", - "alpham2", "Alpha Mission II / ASO II - Last Guardian (NGM-007)(NGH-007)", - "alpham2p", "Alpha Mission II / ASO II - Last Guardian (prototype)", - "alphamis", "Alpha Mission", - "alphaone", "Alpha One (prototype, 3 lives)", - "alphaonea", "Alpha One (prototype, 5 lives)", - "alphaxz", "The Alphax Z (Japan)", - "alpilota", "Airline Pilots (Rev A)", - "alpiltdx", "Airline Pilots Deluxe (Rev B)", - "alpine", "Alpine Ski (set 1)", - "alpinea", "Alpine Ski (set 2)", - "alpinerc", "Alpine Racer (Rev. AR2 Ver.C)", - "alpinerd", "Alpine Racer (Rev. AR2 Ver.D)", - "alpinesa", "Alpine Surfer (Rev. AF2 Ver.A)", - "alpinr2a", "Alpine Racer 2 (Rev. ARS2 Ver.A)", - "alpinr2b", "Alpine Racer 2 (Rev. ARS2 Ver.B)", - "alpok_f6", "Alien Poker (L-6 French speech)", - "alpok_l2", "Alien Poker (L-2)", - "alpok_l6", "Alien Poker (L-6)", - "altair", "Altair", - "altbeast", "Altered Beast (set 8, 8751 317-0078)", - "altbeast2", "Altered Beast (set 2, MC-8123B 317-0066)", - "altbeast4", "Altered Beast (set 4, MC-8123B 317-0066)", - "altbeast5", "Altered Beast (set 5, FD1094 317-0069)", - "altbeast6", "Altered Beast (set 6, 8751 317-0076)", - "altbeastbl", "Altered Beast (Datsu bootleg)", - "altbeastj", "Juuouki (set 7, Japan, 8751 317-0077)", - "altbeastj1", "Juuouki (set 1, Japan, FD1094 317-0065)", - "altbeastj3", "Juuouki (set 3, Japan, FD1094 317-0068)", - "am_mg24", "Multi Game I (V.Ger 2.4)", - "am_mg3", "Multi Game III (V.Ger 3.5)", - "am_mg31i", "Multi Game III (S.Ita 3.1)", - "am_mg33i", "Multi Game III (S.Ita 3.3)", - "am_mg34i", "Multi Game III (S.Ita 3.4)", - "am_mg35i", "Multi Game III (S.Ita 3.5)", - "am_mg3a", "Multi Game III (V.Ger 3.64)", - "amatelas", "Sei Senshi Amatelass", - "amazon", "Soldier Girl Amazon", - "amazonh", "Amazon Hunt", - "ambush", "Ambush", - "ambushh", "Ambush (hack?)", - "ambushj", "Ambush (Japan)", - "ambushv", "Ambush (Volt Electronics)", - "amclink", "Amcoe Link Control Box (Version 2.2)", - "amerdart", "AmeriDarts (set 1)", - "amerdart2", "AmeriDarts (set 2)", - "amerdart3", "AmeriDarts (set 3)", - "america", "America 1492", - "amidar", "Amidar", - "amidar1", "Amidar (older)", - "amidarb", "Amidar (bootleg)", - "amidaro", "Amidar (Olympia)", - "amidars", "Amidar (Scramble hardware)", - "amidaru", "Amidar (Stern Electronics)", - "amigo", "Amigo", - "ampkr228", "American Poker II (iamp2 v28)", - "ampkr2b1", "American Poker II (bootleg, set 1)", - "ampkr2b2", "American Poker II (bootleg, set 2)", - "ampkr2b3", "American Poker II (bootleg, set 3)", - "ampkr2b4", "American Poker II (bootleg, set 4)", - "ampkr95", "American Poker 95", - "ampoker2", "American Poker II", - "amspdwy", "American Speedway (set 1)", - "amspdwya", "American Speedway (set 2)", - "amusco", "American Music Poker (V1.4)", - "amuse", "Amuse (Version 50.08 IBA)", - "amuse1", "Amuse (Version 30.08 IBA)", - "ancienta", "Ancient Atlantis (set 1)", - "ancientaa", "Ancient Atlantis (set 2)", - "ancientab", "Ancient Atlantis (set 3)", - "ancientac", "Ancient Atlantis (set 4)", - "ancientad", "Ancient Atlantis (set 5)", - "andretti", "Mario Andretti", - "andretti4", "Mario Andretti (rev.T4)", - "androdun", "Andro Dunos (NGM-049)(NGH-049)", - "andromed", "Andromeda (Japan?)", - "andromep", "Andromeda (set 1)", - "andromepa", "Andromeda (set 2)", - "angelkds", "Angel Kids (Japan)", - "anibonus", "Animal Bonus (Version 1.8E Dual)", - "anibonusb1", "Animal Bonus (Version 1.7R, set 1)", - "anibonusb2", "Animal Bonus (Version 1.7LT, set 1)", - "anibonusd1", "Animal Bonus (Version 1.7R, set 2)", - "anibonusd2", "Animal Bonus (Version 1.7LT, set 2)", - "anibonuso", "Animal Bonus (Version 1.5)", - "anibonuso2", "Animal Bonus (Version 1.4, set 1)", - "anibonuso3", "Animal Bonus (Version 1.4, set 2)", - "anibonusv1", "Animal Bonus (Version 1.8R Dual)", - "anibonusv2", "Animal Bonus (Version 1.8LT Dual)", - "anibonusxo", "Animal Bonus (Version 1.50XT)", - "anibonusxo2", "Animal Bonus (Version 1.40XT, set 1)", - "anibonusxo3", "Animal Bonus (Version 1.40XT, set 2)", - "animalc", "Animal Catch", - "animaljr", "Exciting Animal Land Jr. (USA)", - "animaljrj", "Waiwai Animal Land Jr. (Japan)", - "animaljrs", "Animalandia Jr. (Spanish)", - "anithunt", "Animal Treasure Hunt (Version 1.9R, set 1)", - "anithuntd1", "Animal Treasure Hunt (Version 1.9R, set 2)", - "anithunto", "Animal Treasure Hunt (Version 1.7)", - "anithunto2", "Animal Treasure Hunt (Version 1.5)", - "anithuntv1", "Animal Treasure Hunt (Version 1.9R Dual)", - "anmlbskt", "Animal Basket", - "antar", "Antar (set 1)", - "antar2", "Antar (set 2)", - "antcleo", "Antony and Cleopatra (10177211, Malaysia)", - "anteater", "Anteater", - "anteaterg", "Ameisenbaer (German)", - "anteateruk", "The Anteater (UK)", - "antiairc", "Anti-Aircraft [TTL]", - "aodk", "Aggressors of Dark Kombat / Tsuukai GANGAN Koushinkyoku (ADM-008)(ADH-008)", - "aof", "Art of Fighting / Ryuuko no Ken (NGM-044)(NGH-044)", - "aof2", "Art of Fighting 2 / Ryuuko no Ken 2 (NGM-056)", - "aof2a", "Art of Fighting 2 / Ryuuko no Ken 2 (NGH-056)", - "aof3", "Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden", - "aof3k", "Art of Fighting 3 - The Path of the Warrior (Korean release)", - "aoh", "Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07)", - "apache3", "Apache 3", - "apache3a", "Apache 3 (Kana Corporation license)", - "apb", "APB - All Points Bulletin (rev 7)", - "apb1", "APB - All Points Bulletin (rev 1)", - "apb2", "APB - All Points Bulletin (rev 2)", - "apb3", "APB - All Points Bulletin (rev 3)", - "apb4", "APB - All Points Bulletin (rev 4)", - "apb5", "APB - All Points Bulletin (rev 5)", - "apb6", "APB - All Points Bulletin (rev 6)", - "apbf", "APB - All Points Bulletin (French)", - "apbg", "APB - All Points Bulletin (German)", - "aplatoon", "Platoon V.?.? US", - "apollo13", "Apollo 13", - "aponow", "Apocaljpse Now (bootleg of Rescue)", - "apparel", "Apparel Night (Japan 860929)", - "apple10", "Apple 10 (Ver 1.21)", - "appoooh", "Appoooh", - "aquajack", "Aqua Jack (World)", - "aquajackj", "Aqua Jack (Japan)", - "aquajacku", "Aqua Jack (US)", - "aquajet", "Aqua Jet (Rev. AJ2 Ver.B)", - "aqualand", "Aqualand", - "aquarium", "Aquarium (Japan)", - "aquarush", "Aqua Rush (Japan, AQ1/VER.A1)", - "ar_airh", "SportTime Table Hockey (Arcadia, set 1, V 2.1)", - "ar_airh2", "SportTime Table Hockey (Arcadia, set 2)", - "ar_argh", "Aaargh (Arcadia)", - "ar_bios", "Arcadia System BIOS", - "ar_blast", "Blastaball (Arcadia, V 2.1)", - "ar_bowl", "SportTime Bowling (Arcadia, V 2.1)", - "ar_dart", "World Darts (Arcadia, set 1, V 2.1)", - "ar_dart2", "World Darts (Arcadia, set 2)", - "ar_dlta", "Delta Command (Arcadia)", - "ar_fast", "Magic Johnson's Fast Break (Arcadia, V 2.8)", - "ar_fasta", "Magic Johnson's Fast Break (Arcadia, V 2.7)", - "ar_ldrb", "Leader Board (Arcadia, set 1, V 2.5)", - "ar_ldrba", "Leader Board (Arcadia, set 2, V 2.4)", - "ar_ldrbb", "Leader Board (Arcadia, set 3)", - "ar_ninj", "Ninja Mission (Arcadia, set 1, V 2.5)", - "ar_ninj2", "Ninja Mission (Arcadia, set 2)", - "ar_pm", "Pharaohs Match (Arcadia)", - "ar_rdwr", "RoadWars (Arcadia, V 2.3)", - "ar_sdwr", "Sidewinder (Arcadia, set 1, V 2.1)", - "ar_sdwr2", "Sidewinder (Arcadia, set 2)", - "ar_socc", "World Trophy Soccer (Arcadia, V 3.0)", - "ar_spot", "Spot (Arcadia, V 2.0)", - "ar_sprg", "Space Ranger (Arcadia, V 2.0)", - "ar_xeon", "Xenon (Arcadia, V 2.3)", - "arabfgt", "Arabian Fight (World)", - "arabfgtj", "Arabian Fight (Japan)", - "arabfgtu", "Arabian Fight (US)", - "arabian", "Arabian", - "arabiana", "Arabian (Atari)", - "arabianm", "Arabian Magic (Ver 1.0O 1992/07/06)", - "arabianmj", "Arabian Magic (Ver 1.0J 1992/07/06)", - "arabianmu", "Arabian Magic (Ver 1.0A 1992/07/06)", - "arac6000", "Super Six Plus II English Mark Darts", - "aracnis", "Aracnis (bootleg of Scorpion on Moon Cresta hardware)", - "arbalest", "Arbalester", - "arcadecl", "Arcade Classics (prototype)", - "arcadian", "Arcadia (NMK)", - "archrivl", "Arch Rivals (rev 4.0 6/29/89)", - "archrivla", "Arch Rivals (rev 2.0 5/03/89)", - "archrivlb", "Arch Rivals (rev 2.0 5/03/89, 8-way Joystick bootleg)", - "arctthnd", "Arctic Thunder (v1.002)", - "arctthndult", "Ultimate Arctic Thunder", - "arcwins", "Arctic Wins (4XF5227H03, USA)", - "area51", "Area 51 (R3000)", - "area51a", "Area 51 (Atari Games license)", - "area51mx", "Area 51 / Maximum Force Duo v2.0", - "area51t", "Area 51 (Time Warner license)", - "area88", "Area 88 (Japan)", - "area88r", "Area 88 (Japan Resale Ver.)", - "arena", "Arena", - "arescue", "Air Rescue", - "argus", "Argus", - "argusg", "Argus (Gottlieb, prototype)", - "arian", "Arian Mission", - "arist_l1", "Aristocrat (Shuffle) (L-1)", - "aristmk5", "MKV Set/Clear Chips (USA)", - "aristmk6", "Aristocrat MK6 Base (15011025, Malaysia)", - "ark1ball", "Arkanoid (bootleg with MCU, harder)", - "arkangc", "Arkanoid (Game Corporation bootleg, set 1)", - "arkangc2", "Arkanoid (Game Corporation bootleg, set 2)", - "arkanoid", "Arkanoid (World)", - "arkanoidj", "Arkanoid (Japan)", - "arkanoidjb", "Arkanoid (bootleg with MCU, set 1)", - "arkanoidjb2", "Arkanoid (bootleg with MCU, set 2)", - "arkanoidjo", "Arkanoid (Japan, older)", - "arkanoidu", "Arkanoid (US)", - "arkanoiduo", "Arkanoid (US, older)", - "arkarea", "Ark Area", - "arkatayt", "Arkanoid (Tayto bootleg)", - "arkatour", "Tournament Arkanoid (US)", - "arkbloc2", "Block (Game Corporation bootleg, set 2)", - "arkbloc3", "Block (Game Corporation bootleg, set 3)", - "arkblock", "Block (Game Corporation bootleg, set 1)", - "arkgcbl", "Arkanoid (bootleg on Block hardware, set 1)", - "arkgcbla", "Arkanoid (bootleg on Block hardware, set 2)", - "arknoid2", "Arkanoid - Revenge of DOH (World)", - "arknoid2b", "Arkanoid - Revenge of DOH (Japan bootleg)", - "arknoid2j", "Arkanoid - Revenge of DOH (Japan)", - "arknoid2u", "Arkanoid - Revenge of DOH (US)", - "arkretrn", "Arkanoid Returns (Ver 2.02O 1997/02/10)", - "arkretrnj", "Arkanoid Returns (Ver 2.02J 1997/02/10)", - "arktayt2", "Arkanoid (Tayto bootleg, harder)", - "arlingtn", "Arlington Horse Racing (v1.21-D)", - "armchmp2", "Arm Champs II v2.6", - "armchmp2o", "Arm Champs II v1.7", - "armedf", "Armed Formation", - "armedff", "Armed Formation (Fillmore license)", - "armora", "Armor Attack", - "armorap", "Armor Attack (prototype)", - "armorar", "Armor Attack (Rock-Ola)", - "armorcar", "Armored Car (set 1)", - "armorcar2", "Armored Car (set 2)", - "armwar", "Armored Warriors (Euro 941024)", - "armwar1d", "Armored Warriors (Euro 941011 Phoenix Edition) (bootleg)", - "armwara", "Armored Warriors (Asia 940920)", - "armwarr1", "Armored Warriors (Euro 941011)", - "armwaru", "Armored Warriors (USA 941024)", - "armwaru1", "Armored Warriors (USA 940920)", - "armwrest", "Arm Wrestling", - "as_acp", "unknown Astra 'ACP' (Astra, V403)", - "as_bbr", "Bullion Bars (Astra, V101)", - "as_bbra", "Bullion Bars (Astra, V102,alt)", - "as_bbrb", "Bullion Bars (Astra, V201)", - "as_bbrc", "Bullion Bars (Astra, V003)", - "as_bbrd", "Bullion Bars (Astra, V102)", - "as_bbre", "Bullion Bars (Astra, V105)", - "as_bbrf", "Bullion Bars (Astra, V004)", - "as_big10", "Big 10 (Astra, V500)", - "as_big10a", "Big 10 (Astra, V503)", - "as_big10b", "Big 10 (Astra, V507)", - "as_big10c", "Big 10 (Astra, V601)", - "as_big10d", "Big 10 (Astra, V605)", - "as_big15", "Big 15 (Astra, V101)", - "as_bigcs", "Big Cash (Astra, V101)", - "as_bigcsa", "Big Cash (Astra, V103)", - "as_bigtm", "Big Time (Astra, V003)", - "as_celeb", "Celebration (Astra, V100)", - "as_celeba", "Celebration (Astra, V101)", - "as_celebb", "Celebration (Astra, V201)", - "as_colmn", "Colour Of Money (Astra, V200)", - "as_colmna", "Colour Of Money (Astra, V107)", - "as_colmnb", "Colour Of Money (Astra, V108)", - "as_colmnc", "Colour Of Money (Astra, V109)", - "as_colmnd", "Colour Of Money (Astra, V908)", - "as_cshah", "Cash Ahoi (Lowen, V105)", - "as_cshcs", "Cash Castle (Lowen, V006)", - "as_csv", "Slot Slant (?) (Astra, V202)", - "as_dblcs", "Double Cash (Astra, V110)", - "as_dblcsa", "Double Cash (Astra, V112)", - "as_dblcsb", "Double Cash (Astra, V108)", - "as_dblcsc", "Double Cash (Astra, V109)", - "as_dblcsd", "Double Cash (Astra, V106)", - "as_dblcse", "Double Cash (Astra, V102)", - "as_dblcsf", "Double Cash (Astra, V100)", - "as_dblcsg", "Double Cash (Astra, V100, alt)", - "as_dblcsh", "Double Cash (Astra, V004)", - "as_djp", "Double Jackpot (Astra, V107)", - "as_djpa", "Double Jackpot (Astra, V004)", - "as_djpb", "Double Jackpot (Astra, V109)", - "as_fortn", "Fortune Teller (Astra, V009)", - "as_gof", "Game Of Fortune (Lowen, V208)", - "as_hc", "Hokey Cokey (Astra, V107)", - "as_hca", "Hokey Cokey (Astra, V109)", - "as_hcb", "Hokey Cokey (Astra, V110)", - "as_hcc", "Hokey Cokey (Astra, V111)", - "as_hcd", "Hokey Cokey (Astra, V909)", - "as_hog", "Hearts Of Gold (Astra, V002)", - "as_hr", "Hot Reel (Astra, V004)", - "as_hxr", "Hot Cross Run (Astra, V108)", - "as_jackb", "Jackpot Bell (Astra, V104)", - "as_jjive", "Jungle Jive (Astra, V107)", - "as_jjivea", "Jungle Jive (Astra, V106)", - "as_jjiveb", "Jungle Jive (Astra, V104)", - "as_jjivec", "Jungle Jive (Astra, V102)", - "as_jjived", "Jungle Jive (Astra, V101)", - "as_jjivee", "Jungle Jive (Astra, V101, alt)", - "as_jjivef", "Jungle Jive (Astra, V004)", - "as_jjiveg", "Jungle Jive (Astra, V005)", - "as_jmpj", "Jumping Jackpots (Astra, V100)", - "as_jmpja", "Jumping Jackpots (Astra, V102)", - "as_jolly", "Jolly Roger (Astra, V103)", - "as_jpx", "Jackpot X (Astra, V100)", - "as_jpxa", "Jackpot X (Astra, V101)", - "as_jpxb", "Jackpot X (Astra, V002)", - "as_kingc", "King Cash (Astra, V106)", - "as_kingca", "King Cash (Astra, V103)", - "as_koc", "King Of Clubs (Astra, V200)", - "as_koca", "King Of Clubs (Astra, V101)", - "as_lbt", "Little Big 10 (Astra, V103)", - "as_lbta", "Little Big 10 (Astra, V102)", - "as_ldl", "Little Devils (Astra, V700)", - "as_ldla", "Little Devils (Astra, V600)", - "as_ldlb", "Little Devils (Astra, V312)", - "as_ldlc", "Little Devils (Astra, V003)", - "as_ldld", "Little Devils (Astra, V102)", - "as_ldle", "Little Devils (Astra, V103)", - "as_letsp", "Let's Party (Astra, V904)", - "as_mp", "Mission Possible (Lowen, V118)", - "as_mp2", "Mission Possible 2 (Lowen, V114)", - "as_otr", "Over The Rainbow (Astra, V104)", - "as_otra", "Over The Rainbow (Astra, V102)", - "as_party", "Party Time (Astra, V105)", - "as_partya", "Party Time (Astra, V110)", - "as_partyb", "Party Time (Astra, V112)", - "as_partyc", "Party Time (Astra, V206)", - "as_partyd", "Party Time (Astra, V401)", - "as_partye", "Party Time (Astra, V907)", - "as_partyf", "Party Time (Astra, V906)", - "as_pb", "Piggy Banking (Astra, V105)", - "as_pharg", "Pharaoh's Gold (Astra, V005)", - "as_pharga", "Pharaoh's Gold (Astra, V101)", - "as_phargb", "Pharaoh's Gold (Astra, V102)", - "as_phargc", "Pharaoh's Gold (Astra, V104)", - "as_phargd", "Pharaoh's Gold (Astra, V106)", - "as_pharge", "Pharaoh's Gold (Astra, V107)", - "as_pia", "Pay It Again (Astra, V202)", - "as_piaa", "Pay It Again (Astra, V206)", - "as_piab", "Pay It Again (Astra, V904)", - "as_ptf", "Party Fruits (Astra, V102)", - "as_ptfa", "Party Fruits (Astra, V803)", - "as_ptfb", "Party Fruits (Astra, V905)", - "as_ptfc", "Party Fruits (Astra)", - "as_rab", "Ring A Bell (Astra, V105)", - "as_raba", "Ring A Bell (Astra, V106)", - "as_rabb", "Ring A Bell (Astra, V107)", - "as_rabc", "Ring A Bell (Astra, V104)", - "as_rbg", "River Boat Gambler (Astra, V304)", - "as_rbga", "River Boat Gambler (Astra, V303)", - "as_rbgb", "River Boat Gambler (Astra, V104)", - "as_rbgc", "River Boat Gambler (Astra, V102)", - "as_rbgd", "River Boat Gambler (Astra, V101)", - "as_rbge", "River Boat Gambler (Astra, V008)", - "as_rbglo", "River Boat Gambler (Lowen, V106)", - "as_rox", "Roll X (Astra, V006)", - "as_rtr", "Ready To Roll (Astra, V101)", - "as_rtra", "Ready To Roll (Astra, V101, alt 1)", - "as_rtrb", "Ready To Roll (Astra, V101, alt 2)", - "as_rtrc", "Ready To Roll (Astra, V101, alt 3)", - "as_rtrd", "Ready To Roll (Astra, V100, )", - "as_rtre", "Ready To Roll (Astra, V100, alt)", - "as_rtrf", "Ready To Roll (Astra, V200)", - "as_rtrg", "Ready To Roll (Astra, V200, alt)", - "as_rtrh", "Ready To Roll (Astra, V202)", - "as_siu", "Step It Up (Astra, V202)", - "as_siua", "Step It Up (Astra, V203)", - "as_sld", "Super Little Devil (Astra, V700)", - "as_slda", "Super Little Devil (Astra, V600)", - "as_sldb", "Super Little Devil (Astra, V500)", - "as_sldc", "Super Little Devil (Astra, V400)", - "as_sldd", "Super Little Devil (Astra, V200)", - "as_slde", "Super Little Devil (Astra, V101)", - "as_sltcl", "Slots Classic (?) (Astra)", - "as_srb", "Super Ring a Bell (Astra, V004)", - "as_srba", "Super Ring a Bell (Astra, V100)", - "as_srbb", "Super Ring a Bell (Astra, V101)", - "as_srbc", "Super Ring a Bell (Astra, V201)", - "as_srbd", "Super Ring a Bell (Astra, V202)", - "as_srbe", "Super Ring a Bell (Astra, V203)", - "as_stp", "Stampede (Astra, V103)", - "as_stpa", "Stampede (Astra, V102)", - "as_stpb", "Stampede (Astra, V105)", - "as_tbl", "Triple Bells (Astra, V104)", - "as_tbla", "Triple Bells (Astra, V105)", - "as_tblb", "Triple Bells (Astra, V106)", - "as_tblc", "Triple Bells (Astra, V103)", - "as_tbld", "Triple Bells (Astra, V304)", - "as_tble", "Triple Bells (Astra, V303)", - "as_tblf", "Triple Bells (Astra, V301)", - "as_td", "Twin Dragons (Astra, V103)", - "as_tem", "Temptation (Astra, V101)", - "as_tema", "Temptation (Astra, V006)", - "as_topsl", "Top Slot (Astra, V103)", - "as_topsla", "Top Slot (Astra, V104)", - "as_topslb", "Top Slot (Astra, V201)", - "as_topslc", "Top Slot (Astra, V203)", - "as_topsld", "Top Slot (Astra, V205)", - "as_twp", "Twin Pots (Astra, V106)", - "as_twpa", "Twin Pots (Astra, V104)", - "as_vcv", "Viva Cash Vegas (Astra, V005)", - "as_vcva", "Viva Cash Vegas (Astra, V107)", - "as_vcvb", "Viva Cash Vegas (Astra, V106)", - "as_vcvc", "Viva Cash Vegas (Astra, V104)", - "as_vcvd", "Viva Cash Vegas (Astra, V102)", - "as_vcve", "Viva Cash Vegas (Astra, V101)", - "as_vn", "Vegas Nights (Astra, V205)", - "as_ws", "Win Streak (Astra, V100)", - "as_ww", "Wicked Willy (Astra, V203)", - "as_wwa", "Wicked Willy (Astra, V204)", - "as_wwb", "Wicked Willy (Astra, V205)", - "as_wwc", "Wicked Willy (Astra, V104)", - "as_wwd", "Wicked Willy (Astra, V103)", - "as_wwe", "Wicked Willy (Astra, V102)", - "ashnojoe", "Ashita no Joe (Japan)", - "ashura", "Ashura Blaster (World)", - "ashuraj", "Ashura Blaster (Japan)", - "ashurau", "Ashura Blaster (US)", - "asideral", "Ataque Sideral (Spanish bootleg of UniWar S)", - "asndynmt", "Asian Dynamite", - "aso", "ASO - Armored Scrum Object", - "asoccer", "American Soccer", - "assault", "Assault (Rev B)", - "assaultj", "Assault (Japan)", - "assaultp", "Assault Plus (Japan)", - "astannie", "Asteroid Annie and the Aliens", - "astdelux", "Asteroids Deluxe (rev 3)", - "astdelux1", "Asteroids Deluxe (rev 1)", - "astdelux2", "Asteroids Deluxe (rev 2)", - "asterix", "Asterix (ver EAD)", - "asterixaad", "Asterix (ver AAD)", - "asterixeaa", "Asterix (ver EAA)", - "asterixeac", "Asterix (ver EAC)", - "asterixj", "Asterix (ver JAD)", - "asterock", "Asterock (Sidam bootleg of Asteroids)", - "asterockv", "Asterock (Videotron bootleg of Asteroids)", - "asteroid", "Asteroids (rev 4)", - "asteroid1", "Asteroids (rev 1)", - "asteroid2", "Asteroids (rev 2)", - "asteroidb", "Asteroids (bootleg on Lunar Lander hardware)", - "astinvad", "Astro Invader", - "astoneag", "Stone Age (Astro, Ver. ENG.03.A)", - "astorm", "Alien Storm (World, 2 Players, FD1094 317-0154)", - "astorm3", "Alien Storm (World, 3 Players, FD1094 317-0148)", - "astormb2", "Alien Storm (bootleg, set 2)", - "astormbl", "Alien Storm (bootleg, set 1)", - "astormj", "Alien Storm (Japan, 2 Players, FD1094 317-0146)", - "astormu", "Alien Storm (US, 3 Players, FD1094 317-0147)", - "astrass", "Astra SuperStars (J 980514 V1.002)", - "astrians", "Astrians (clone of Swarm)", - "astrob", "Astro Blaster (version 3)", - "astrob1", "Astro Blaster (version 1)", - "astrob2", "Astro Blaster (version 2)", - "astrob2a", "Astro Blaster (version 2a)", - "astrobg", "Astro Blaster (German)", - "astrof", "Astro Fighter (set 1)", - "astrof2", "Astro Fighter (set 2)", - "astrof3", "Astro Fighter (set 3)", - "astrofl", "Astro Flash (Japan)", - "astron", "Astron Belt", - "astronp", "Astron Belt (Pioneer LDV1000)", - "astropal", "Astropal", - "astrowar", "Astro Wars", - "astyanax", "The Astyanax", - "asuka", "Asuka & Asuka (World)", - "asukaj", "Asuka & Asuka (Japan)", - "asurabld", "Asura Blade - Sword of Dynasty (Japan)", - "asurabus", "Asura Buster - Eternal Warriors (Japan)", - "asylum", "Asylum (prototype)", - "atamanot", "Computer Quiz Atama no Taisou (Japan)", - "atarians", "The Atarians", - "atarifb", "Atari Football (revision 2)", - "atarifb1", "Atari Football (revision 1)", - "atarifb4", "Atari Football (4 players)", - "atarisy1", "Atari System 1 BIOS", - "ataxx", "Ataxx (set 1)", - "ataxxa", "Ataxx (set 2)", - "ataxxe", "Ataxx (Europe)", - "ataxxj", "Ataxx (Japan)", - "atehate", "Athena no Hatena ?", - "atetris", "Tetris (set 1)", - "atetrisa", "Tetris (set 2)", - "atetrisb", "Tetris (bootleg set 1)", - "atetrisb2", "Tetris (bootleg set 2)", - "atetrisc", "Tetris (cocktail set 1)", - "atetrisc2", "Tetris (cocktail set 2)", - "athena", "Athena", - "atla_ltd", "Atlantis (LTD)", - "atlantca", "Atlantica (Russia) (Atronic) (set 1)", - "atlantcaa", "Atlantica (Russia) (Atronic) (set 2)", - "atlantip", "Atlantis", - "atlantis", "Battle of Atlantis (set 1)", - "atlantis2", "Battle of Atlantis (set 2)", - "atlantisb", "Battle of Atlantis (bootleg)", - "atlantol", "Atlant Olimpic", - "atleta", "Atleta", - "atluspsx", "Atlus PSX", - "atombjt", "Atom (bootleg of Bombjack Twin)", - "atomboy", "Atomic Boy (revision B)", - "atomboya", "Atomic Boy (revision A)", - "atomicp", "Atomic Point (Korea)", - "atompunk", "Atomic Punk (US)", - "atpsx", "Atari PSX", - "atronic", "Atronic SetUp/Clear Chips (Russia, set 1)", - "atronica", "Atronic SetUp/Clear Chips (Russia, set 2)", - "attack", "Attack", - "attackfc", "Attack Force", - "attckexd", "Attack [TTL]", - "attckufo", "Attack Ufo", - "attila", "Attila The Hun", - "atvtrack", "ATV Track (set 1)", - "atvtracka", "ATV Track (set 2)", - "atworld", "Around The World (Version 1.4R CGA)", - "atworldd1", "Around The World (Version 1.3R CGA)", - "atworlde1", "Around The World (Version 1.3E CGA)", - "aurail", "Aurail (set 3, US, unprotected)", - "aurail1", "Aurail (set 2, World, FD1089B 317-0168)", - "aurailj", "Aurail (set 1, Japan, FD1089A 317-0167)", - "ausfache", "Akatsuki Blitzkampf Ausf Achse", - "aust201", "Austin Powers (2.01)", - "aust300", "Austin Powers (3.00)", - "aust301", "Austin Powers (3.01)", - "austin", "Austin Powers (3.02)", - "austinf", "Austin Powers (France)", - "austing", "Austin Powers (Germany)", - "austini", "Austin Powers (Italy)", - "austnew", "Austin Powers (ARM7 Sound Board)", - "autmoon", "Autumn Moon (1VXFC5488, New Zealand)", - "automat", "Automat (bootleg of Robocop)", - "av2mj1bb", "AV2Mahjong No.1 Bay Bridge no Seijo (Japan)", - "av2mj2rg", "AV2Mahjong No.2 Rouge no Kaori (Japan)", - "avalnche", "Avalanche", - "avalon13", "The Key Of Avalon 1.3 - Chaotic Sabbat (client) (Rev C) (GDT-0010C)", - "avalon20", "The Key Of Avalon 2.0 - Eutaxy and Commandment (client) (Rev B) (GDT-0017B)", - "avalons", "The Key Of Avalon - The Wizard Master (server) (Rev C) (GDT-0005C)", - "avefenix", "Ave Fenix (Spanish bootleg of Phoenix)", - "avenger", "Avenger [TTL]", - "avengers", "Avengers (US set 1)", - "avengers2", "Avengers (US set 2)", - "avengrgs", "Avengers In Galactic Storm (US)", - "avengrgsj", "Avengers In Galactic Storm (Japan)", - "avsp", "Alien vs. Predator (Euro 940520)", - "avspa", "Alien vs. Predator (Asia 940520)", - "avspd", "Alien vs. Predator (Euro 940520 Phoenix Edition) (bootleg)", - "avsph", "Alien vs. Predator (Hispanic 940520)", - "avspirit", "Avenging Spirit", - "avspj", "Alien vs. Predator (Japan 940520)", - "avspu", "Alien vs. Predator (USA 940520)", - "avtbingo", "Arrow Bingo", - "avtnfl", "NFL (ver 109)", - "avtsym14", "Symbols (ver 1.4)", - "avtsym25", "Symbols (ver 2.5)", - "awbios", "Atomiswave Bios", - "aztarac", "Aztarac", - "azumanga", "Azumanga Daioh Puzzle Bobble (GDL-0018)", - "azurian", "Azurian Attack", - "b83catms", "Cat & Mouse (Bellfruit) (System 83)", - "b83cops", "Cops & Robbers (Bellfruit) (System 83)", - "b85bdclb", "Big Deal Club (System 85, set 1)", - "b85bdclba", "Big Deal Club (System 85, set 2)", - "b85bdclbb", "Big Deal Club (System 85, set 3)", - "b85cb7p", "Bar Sevens (Bellfruit) (Protocol) (System 85)", - "b85cblit", "Cash Blitz (System 85, set 1)", - "b85cblita", "Cash Blitz (System 85, set 2)", - "b85cblitb", "Cash Blitz (System 85, set 3)", - "b85cexpl", "Cash Explosion (System 85)", - "b85clbpm", "Club Premier (System 85)", - "b85cops", "Cops 'n' Robbers (Dutch) (Bellfruit) (System 85)", - "b85dbldl", "Double Dealer (System 85, set 1)", - "b85dbldla", "Double Dealer (System 85, set 2)", - "b85dbldlb", "Double Dealer (System 85, set 3)", - "b85disc", "Discovey (Dutch) (Bellfruit) (System 85)", - "b85hilo", "Hi Lo Silver (System 85, set 1)", - "b85hiloa", "Hi Lo Silver (System 85, set 2)", - "b85jkwld", "Jokers Wild (Dutch) (System 85)", - "b85jpclb", "Jackpot Club (System 85, set 1)", - "b85jpclba", "Jackpot Club (System 85, set 2)", - "b85jpclbb", "Jackpot Club (System 85, set 3)", - "b85jpclbc", "Jackpot Club (System 85, set 4)", - "b85koc", "King of Clubs (Bellfruit) (System 85, set 1)", - "b85koca", "King of Clubs (Bellfruit) (System 85, set 2)", - "b85luckd", "Lucky Dice (Dutch) (System 85)", - "b85lucky", "Lucky Cards (Dutch) (System 85)", - "b85potp", "Pick Of The Pack (System 85)", - "b85ritz", "The Ritz (System 85, set 1)", - "b85ritza", "The Ritz (System 85, set 2)", - "b85ritzb", "The Ritz (System 85, set 3)", - "b85ritzc", "The Ritz (System 85, set 4)", - "b85ritzd", "The Ritz (System 85, set 5)", - "b85royal", "The Royal (System 85)", - "b85scard", "Supercards (Dutch, Game Card 39-340-271?) (System 85)", - "b85sngam", "Super Nudge Gambler (System 85)", - "baboshka", "Baboshka (Russia) (Atronic)", - "babydad", "Baby Dado", - "babypac", "Baby Pac-Man (set 1)", - "babypac2", "Baby Pac-Man (set 2)", - "babypkr", "Baby Poker", - "backfire", "Backfire! (set 1)", - "backfirea", "Backfire! (set 2)", - "backfirt", "Back Fire (Tecmo, bootleg)", - "backgamn", "Backgammon", - "baddudes", "Bad Dudes vs. Dragonninja (US)", - "badgirls", "Bad Girls", - "badlands", "Bad Lands", - "badlandsb", "Bad Lands (bootleg)", - "badlandsb2", "Bad Lands (bootleg, alternate)", - "bagman", "Bagman", - "bagmanf", "Bagman (bootleg on Crazy Kong hardware)", - "bagmanm2", "Bagman (bootleg on Moon Cresta hardware, set 2)", - "bagmanmc", "Bagman (bootleg on Moon Cresta hardware, set 1)", - "bagmans", "Bagman (Stern Electronics, set 1)", - "bagmans2", "Bagman (Stern Electronics, set 2)", - "bagnard", "Le Bagnard (set 1)", - "bagnarda", "Le Bagnard (set 2)", - "bagnardi", "Le Bagnard (Itisa, Spain)", - "bakatono", "Bakatonosama Mahjong Manyuuki (MOM-002)(MOH-002)", - "bakubaku", "Baku Baku Animal (J 950407 V1.000)", - "bakubrkr", "Bakuretsu Breaker", - "bakuhatu", "Mahjong Bakuhatsu Junjouden (Japan)", - "bakutotu", "Bakutotsu Kijuutei", - "balcube", "Bal Cube", - "ballbomb", "Balloon Bomber", - "ballboy", "Ball Boy", - "ballbros", "Balloon Brothers", - "balonfgt", "Vs. Balloon Fight (set BF4 A-3)", - "baluba", "Baluba-louk no Densetsu (Japan)", - "bam2", "Bust a Move 2 (Japanese ROM ver. 1999/07/17 10:00:00)", - "bananadr", "Mahjong Banana Dream [BET] (Japan 891124)", - "bananas", "Bananas Go Bahamas (set 1)", - "bananasa", "Bananas Go Bahamas (set 2)", - "banbam", "BanBam", - "bandido", "Bandido", - "bang", "Bang!", - "bangball", "Bang Bang Ball (v1.05)", - "bangbead", "Bang Bead", - "bangj", "Gun Gabacho (Japan)", - "bankp", "Bank Panic", - "bankrob", "Bank Robbery (Ver. 3.32)", - "bankroba", "Bank Robbery (Ver. 2.00)", - "baraduke", "Baraduke", - "barbball", "Barroom Baseball (prototype)", - "barbwire", "Barb Wire", - "barline", "Barline (Japan?)", - "barra_l1", "Barracora (L-1)", - "barricad", "Barricade", - "barrier", "Barrier", - "baryon", "Baryon - Future Assault", - "basebal2", "Baseball: The Season II", - "bass", "Sega Bass Fishing (Japan)", - "bassang2", "Bass Angler 2 (GE865 VER. JAA)", - "bassangl", "Bass Angler (GE765 VER. JAA)", - "basschal", "Sega Bass Fishing Challenge", - "bassdx", "Sega Bass Fishing Deluxe (Japan)", - "batcir", "Battle Circuit (Euro 970319)", - "batcira", "Battle Circuit (Asia 970319)", - "batcird", "Battle Circuit (Euro 970319 Phoenix Edition) (bootleg)", - "batcirj", "Battle Circuit (Japan 970319)", - "batlball", "Battle Balls (Germany)", - "batlballa", "Battle Balls (Hong Kong)", - "batlballe", "Battle Balls (Hong Kong, earlier)", - "batlballu", "Battle Balls (US)", - "batlbubl", "Battle Bubble (v2.00)", - "batlgear", "Battle Gear", - "batlgr2", "Battle Gear 2 (v2.04J)", - "batlgr2a", "Battle Gear 2 (v2.01J)", - "batlzone", "Battle Zone (bootleg of Mayday)", - "batman", "Batman", - "batman2", "Batman Part 2", - "batmanf", "Batman Forever (4.0)", - "batmanf3", "Batman Forever (3.0)", - "batmanfr", "Batman Forever (JUE 960507 V1.000)", - "batrider", "Armed Police Batrider (Europe) (Fri Feb 13 1998)", - "batriderc", "Armed Police Batrider (China) (Fri Feb 13 1998)", - "batriderj", "Armed Police Batrider (Japan, B version) (Fri Feb 13 1998)", - "batriderja", "Armed Police Batrider (Japan, older version) (Mon Dec 22 1997)", - "batriderk", "Armed Police Batrider (Korea) (Fri Feb 13 1998)", - "batridert", "Armed Police Batrider (Taiwan) (Mon Dec 22 1997)", - "batrideru", "Armed Police Batrider (USA) (Fri Feb 13 1998)", - "batsugun", "Batsugun", - "batsuguna", "Batsugun (older set)", - "batsugunsp", "Batsugun - Special Version", - "battlane", "Battle Lane! Vol. 5 (set 1)", - "battlane2", "Battle Lane! Vol. 5 (set 2)", - "battlane3", "Battle Lane! Vol. 5 (set 3)", - "battlcry", "Battlecry", - "battlera", "Battle Rangers (World)", - "battles", "Battles", - "battlex", "Battle Cross", - "battlnts", "Battlantis (program code G)", - "battlntsa", "Battlantis (program code F)", - "battlntsj", "Battlantis (Japan, program code E)", - "battroad", "The Battle-Road", - "bayroute", "Bay Route (set 3, World, FD1094 317-0116)", - "bayroute1", "Bay Route (set 1, US, unprotected)", - "bayrouteb1", "Bay Route (encrypted, protected bootleg)", - "bayrouteb2", "Bay Route (Datsu bootleg)", - "bayroutej", "Bay Route (set 2, Japan, FD1094 317-0115)", - "baywatch", "Baywatch", - "bbakraid", "Battle Bakraid - Unlimited Version (USA) (Tue Jun 8 1999)", - "bbakraidj", "Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999)", - "bbakraidja", "Battle Bakraid (Japan) (Wed Apr 7 1999)", - "bballoon", "BnB Arcade", - "bballrmt", "Baseball (Ramtek) [TTL]", - "bballs", "Bouncing Balls", - "bbb108", "Big Bang Bar (Beta 1.8 US)", - "bbb109", "Big Bang Bar (Beta 1.9 US)", - "bbbowlin", "Big Ball Bowling (Bowler)", - "bbbxing", "Best Bout Boxing", - "bbeltzac", "Black Belt (Zaccaria)", - "bbmanw", "Bomber Man World / New Dyna Blaster - Global Quest", - "bbmanwj", "Bomber Man World (Japan)", - "bbmanwja", "Bomber Man World (Japan, revised sound hardware)", - "bbnny_l2", "Bugs Bunny Birthday Ball (L-2)", - "bbnny_lu", "Bugs Bunny Birthday Ball (LU-2) European", - "bbonk", "Bigfoot Bonkers", - "bbprot", "unknown fighting game 'BB' (prototype)", - "bbros", "Buster Bros. (USA)", - "bbust2", "Beast Busters 2nd Nightmare", - "bbusters", "Beast Busters (World)", - "bbustersu", "Beast Busters (US, Version 2)", - "bcats_l2", "Bad Cats (LA-2)", - "bcats_l5", "Bad Cats (L-5)", - "bchance", "Bonne Chance! (French/English)", - "bchancep", "Bonne Chance! (Golden Poker prequel HW)", - "bchopper", "Battle Chopper", - "bcrusher", "Bone Crusher", - "bcruzm12", "Battle Cruiser M-12", - "bcstry", "B.C. Story (set 1)", - "bcstrya", "B.C. Story (set 2)", - "bdrdown", "Border Down (Rev A) (GDL-0023A)", - "beachpt", "Beach Patrol (Russia) (Atronic)", - "beachspi", "Beach Spikers (GDS-0014)", - "beaminv", "Beam Invader", - "bearnec", "Bear Necessities (Russia) (Atronic)", - "beastf", "Beastie Feastie", - "beastrzr", "Beastorizer (USA)", - "beastrzrb", "Beastorizer (USA bootleg)", - "beatclck", "Beat the Clock", - "beathead", "BeatHead (prototype)", - "beautyb", "Beauty Block", - "beebop", "Bee Bop (set 1)", - "beebopa", "Bee Bop (set 2)", - "beebopb", "Bee Bop (set 3)", - "beebopc", "Bee Bop (set 4)", - "beebopd", "Bee Bop (set 5)", - "beebope", "Bee Bop (set 6)", - "beeline", "Beeline (39-360-075)", - "beetlem", "Beetlemania (set 1)", - "beetlema", "Beetlemania (set 2)", - "beetlemb", "Beetlemania (set 3)", - "beetlemc", "Beetlemania (set 4)", - "beetlemd", "Beetlemania (set 5)", - "beetleup", "Beetles Unplugged (Russia) (Atronic)", - "beezer", "Beezer (set 1)", - "beezer1", "Beezer (set 2)", - "begas", "Bega's Battle (Revision 3)", - "begas1", "Bega's Battle (Revision 1)", - "bel", "Behind Enemy Lines", - "bellring", "Bell Ringer", - "benberob", "Ben Bero Beh (Japan)", - "berabohm", "Beraboh Man (Japan, Rev C)", - "berabohmb", "Beraboh Man (Japan, Rev B)", - "berenstn", "The Berenstain Bears in Big Paw's Cave", - "berlwall", "The Berlin Wall", - "berlwallt", "The Berlin Wall (bootleg ?)", - "bermudat", "Bermuda Triangle (World?)", - "bermudata", "Bermuda Triangle (World Wars) (US)", - "bermudatj", "Bermuda Triangle (Japan)", - "berzerk", "Berzerk (set 1)", - "berzerk1", "Berzerk (set 2)", - "berzerkg", "Berzerk (German Speech)", - "bestbest", "Best Of Best", - "bestleag", "Best League (bootleg of Big Striker, Italian Serie A)", - "bestleaw", "Best League (bootleg of Big Striker, World Cup)", - "bestri", "Bestri (Korea)", - "bg_barmy", "Barmy Army (BGT)", - "bg_ddb", "Ding Dong Bells (BGT)", - "bg_max", "Max A Million (BGT) (set 1)", - "bg_maxa", "Max A Million (BGT) (set 2)", - "bgaregga", "Battle Garegga (Europe / USA / Japan / Asia) (Sat Feb 3 1996)", - "bgareggabl", "1945 Part-2 (Chinese hack of Battle Garegga)", - "bgareggacn", "Battle Garegga - Type 2 (Denmark / China) (Tue Apr 2 1996)", - "bgareggahk", "Battle Garegga (Austria / Hong Kong) (Sat Feb 3 1996)", - "bgaregganv", "Battle Garegga - New Version (Austria / Hong Kong) (Sat Mar 2 1996)", - "bgareggat2", "Battle Garegga - Type 2 (Europe / USA / Japan / Asia) (Sat Mar 2 1996)", - "bgareggatw", "Battle Garegga (Taiwan / Germany) (Thu Feb 1 1996)", - "bguns_l7", "Big Guns (L-7)", - "bguns_l8", "Big Guns (L-8)", - "bguns_la", "Big Guns (L-A)", - "bguns_p1", "Big Guns (P-1)", - "bhead2k", "Beach Head 2000 Install - 05/27/03", - "bhead2k2", "Beach Head 2002 Install - 05/27/03", - "bhead2k3", "Beach Head 2003 Desert War Install - 05/27/03", - "bhead2ka", "Beach Head 2000 Install - 09/16/01", - "bhol_ltd", "Black Hole (LTD)", - "big10", "Big 10", - "bigappg", "The Big Apple (2131-13, U5-0)", - "bigbang", "Big Bang (9th Nov. 1993)", - "bigblue", "Big Blue (Russia) (Atronic)", - "bigbucks", "Big Bucks", - "bigd2", "Big D2", - "bigdeal", "Big Deal (Hungarian, set 1)", - "bigdealb", "Big Deal (Hungarian, set 2)", - "bigevglf", "Big Event Golf (US)", - "bigevglfj", "Big Event Golf (Japan)", - "bigfghtr", "Tatakae! Big Fighter (Japan)", - "bigfight", "Big Fight - Big Trouble In The Atlantic Ocean", - "biggame", "Big Game", - "bighouse", "Big House", - "bighurt", "Frank Thomas' Big Hurt (rev.3)", - "bigkarnk", "Big Karnak", - "bigkong", "Big Kong", - "bigprowr", "The Big Pro Wrestling!", - "bigrun", "Big Run (11th Rallye version)", - "bigstrik", "Big Striker", - "bigstrkb", "Big Striker (bootleg)", - "bigstrkba", "Big Striker (bootleg w/Italian teams)", - "bigtown", "Big Town", - "bigtwin", "Big Twin", - "bigtwinb", "Big Twin (No Girls Conversion)", - "bijokkog", "Bijokko Gakuen (Japan 880116)", - "bijokkoy", "Bijokko Yume Monogatari (Japan 870925)", - "bikiniko", "BiKiNikko - Okinawa de Ippai Shichaimashita (Japan)", - "bikkuric", "Bikkuri Card (Japan)", - "billiard", "The Billiards (Video Hustler bootleg)", - "billlist", "Billard List", - "bilyard", "Billiard", - "bingo", "Bingo", - "bingoc", "Bingo Circus (Rev. A 891001)", - "bingoman", "Bingo Mania (P03-P07-P14)", - "bingomana", "Bingo Mania (A03)", - "bingor1", "Bingo Roll / Bell Star? (set 1)", - "bingor2", "Bingo Roll / Bell Star? (set 2)", - "bingor3", "Bingo Roll / Bell Star? (set 3)", - "bingor4", "Bingo Roll / Bell Star? (set 4)", - "bingor5", "Bingo Roll / Bell Star V3? (set 5)", - "bingowng", "Bingo (set 1)", - "bingownga", "Bingo (set 2)", - "bioatack", "Bio Attack", - "biofreak", "BioFreaks (prototype)", - "biomtoy", "Biomechanical Toy (Ver. 1.0.1885)", - "biomtoya", "Biomechanical Toy (Ver. 1.0.1884)", - "bionicc", "Bionic Commando (Euro)", - "bionicc1", "Bionic Commando (US set 1)", - "bionicc2", "Bionic Commando (US set 2)", - "bioship", "Bio-ship Paladin", - "biplane4", "Biplane 4 [TTL]", - "birdiy", "Birdiy", - "birdtry", "Birdie Try (Japan)", - "bishi", "Bishi Bashi Championship Mini Game Senshuken (ver JAA, 3 Players)", - "bishjan", "Bishou Jan (Japan, Ver. 2.03)", - "bjourney", "Blue's Journey / Raguy (ALM-001)(ALH-001)", - "bjpoker", "Poker / Black Jack (Model 7521)", - "bjtwin", "Bombjack Twin (set 1)", - "bjtwina", "Bombjack Twin (set 2)", - "bjtwinp", "Bombjack Twin (prototype? with adult pictures)", - "bk2k_l4", "Black Knight 2000 (L-4)", - "bk2k_lg1", "Black Knight 2000 (LG-1)", - "bk2k_lg3", "Black Knight 2000 (LG-3)", - "bk2k_pu1", "Black Knight 2000 (PU-1)", - "bk_f4", "Black Knight (L-4, French speech)", - "bk_l3", "Black Knight (L-3)", - "bk_l4", "Black Knight (L-4)", - "bking", "Birdie King", - "bking2", "Birdie King 2", - "bking3", "Birdie King 3", - "bkrtmaq", "Bakuretsu Quiz Ma-Q Dai Bouken (Japan)", - "black", "Czernyj Korabl (Arcade bootleg of ZX Spectrum 'Blackbeard')", - "black100", "Blackwater 100", - "black100s", "Blackwater 100 (Single Ball Play)", - "blackbd", "Black Beard (Russia, set 1)", - "blackbda", "Black Beard (Russia, set 2)", - "blackbdb", "Black Beard (Russia, set 3)", - "blackblt", "Black Belt", - "blackjck", "Black Jack (Pinball)", - "blackt96", "Black Touch '96", - "bladestl", "Blades of Steel (version T)", - "bladestle", "Blades of Steel (version E)", - "bladestll", "Blades of Steel (version L)", - "blakpyra", "Black Pyramid", - "blandia", "Blandia", - "blandiap", "Blandia (prototype)", - "blasted", "Blasted", - "blaster", "Blaster", - "blasterkit", "Blaster (conversion kit)", - "blastero", "Blaster (location test)", - "blasto", "Blasto", - "blastoff", "Blast Off (Japan)", - "blazeon", "Blaze On (Japan)", - "blazer", "Blazer (Japan)", - "blazlaz", "Blazing Lazers", - "blazstar", "Blazing Star", - "blbeauty", "Black Beauty (Shuffle)", - "blckhole", "Black Hole (Rev. 4)", - "blckhole2", "Black Hole (Rev. 2)", - "blckhols", "Black Hole (Sound Only)", - "blckjack", "Black Jack", - "bldwolf", "Bloody Wolf (US)", - "bldwolfj", "Narazumono Sentoubutai Bloody Wolf (Japan)", - "bldyr3b", "Bloody Roar 3 (bootleg)", - "bldyroar", "Bloody Roar (Japan)", - "bldyror2", "Bloody Roar 2 (World)", - "bldyror2a", "Bloody Roar 2 (Asia)", - "bldyror2j", "Bloody Roar 2 (Japan)", - "bldyror2u", "Bloody Roar 2 (USA)", - "blitz", "NFL Blitz (boot ROM 1.2)", - "blitz11", "NFL Blitz (boot ROM 1.1)", - "blitz2k", "NFL Blitz 2000 Gold Edition", - "blitz99", "NFL Blitz '99", - "blkbustr", "BlockBuster", - "blkdrgon", "Black Dragon (Japan)", - "blkdrgonb", "Black Dragon (bootleg)", - "blkfever", "Black Fever", - "blkheart", "Black Heart", - "blkheartj", "Black Heart (Japan)", - "blkhole", "Black Hole", - "blkou_f1", "Blackout (L-1, French Speech)", - "blkou_l1", "Blackout (L-1)", - "blkou_t1", "Blackout (T-1)", - "blkpnthr", "Black Panther", - "blkrhino", "Black Rhino (3VXFC5344, New Zealand)", - "blkshpsq", "Black Sheep Squadron", - "blktiger", "Black Tiger", - "blktigera", "Black Tiger (older)", - "blktigerb1", "Black Tiger (bootleg set 1)", - "blktigerb2", "Black Tiger (bootleg set 2)", - "blktouch", "Black Touch (Korea)", - "blmbycar", "Blomby Car", - "blmbycaru", "Blomby Car (not encrypted)", - "block", "Block Block (World 910910)", - "block2", "Block 2 (S.P.A. Co. bootleg)", - "blockade", "Blockade", - "blockbl", "Block Block (bootleg)", - "blockcar", "Block Carnival / Thunder & Lightning 2", - "blockcarb", "Block Carnival / Thunder & Lightning 2 (bootleg)", - "blocken", "Blocken (Japan)", - "blockgal", "Block Gal (MC-8123B, 317-0029)", - "blockgalb", "Block Gal (bootleg)", - "blockhl", "Block Hole", - "blockj", "Block Block (Japan 910910)", - "blockjoy", "Block Block (World 911106 Joystick)", - "blockout", "Block Out (set 1)", - "blockout2", "Block Out (set 2)", - "blockoutj", "Block Out (Japan)", - "bloodbro", "Blood Bros. (set 1)", - "bloodbroa", "Blood Bros. (set 2)", - "bloodbrob", "Blood Bros. (set 3)", - "bloodstm", "Blood Storm (v2.22)", - "bloodstm10", "Blood Storm (v1.04)", - "bloodstm11", "Blood Storm (v1.10)", - "bloodstm21", "Blood Storm (v2.10)", - "bloodstm22", "Blood Storm (v2.20)", - "bloodwar", "Blood Warrior", - "bloto", "Blits Loto (Russia) (Extrema)", - "bloxeed", "Bloxeed (Japan, FD1094 317-0139)", - "bloxeedc", "Bloxeed (World, C System)", - "bloxeedu", "Bloxeed (US, C System)", - "blpearl", "Black Pearl (Russia) (Extrema)", - "blstroid", "Blasteroids (rev 4)", - "blstroid2", "Blasteroids (rev 2)", - "blstroid3", "Blasteroids (rev 3)", - "blstroidg", "Blasteroids (German, rev 2)", - "blstroidh", "Blasteroids (with heads)", - "blswhstl", "Bells & Whistles (Version L)", - "bluehawk", "Blue Hawk", - "bluehawkn", "Blue Hawk (NTC)", - "blueprnt", "Blue Print (Midway)", - "blueprntj", "Blue Print (Jaleco)", - "blueshrk", "Blue Shark", - "blvelvet", "Black Velvet", - "blzntrnd", "Blazing Tornado", - "bm1stmix", "beatmania (ver JA-B)", - "bm2ndmix", "beatmania 2nd MIX (ver JA-B)", - "bm2ndmxa", "beatmania 2nd MIX (ver JA-A)", - "bm37th", "Beatmania III Append 7th Mix", - "bm3final", "Beatmania III The Final", - "bm3rdmix", "beatmania 3rd MIX (ver JA-A)", - "bm4thmix", "beatmania 4th MIX (ver JA-A)", - "bm5thmix", "beatmania 5th MIX (ver JA-A)", - "bm6thmix", "beatmania 6th MIX (ver JA-A)", - "bm7thmix", "beatmania 7th MIX (ver JA-B)", - "bmaster", "Blade Master (World)", - "bmcbowl", "Konkyuu no Hoshi", - "bmclubmx", "beatmania Club MIX (ver JA-A)", - "bmcompm2", "beatmania complete MIX 2 (ver JA-A)", - "bmcompmx", "beatmania complete MIX (ver JA-B)", - "bmcorerm", "beatmania CORE REMIX (ver JA-A)", - "bmcpokr", "unknown BMC poker game", - "bmdct", "beatmania featuring Dreams Come True (ver JA-A)", - "bmf_at", "Batman Forever (Austrian)", - "bmf_be", "Batman Forever (Belgian)", - "bmf_ch", "Batman Forever (Swiss)", - "bmf_cn", "Batman Forever (Canadian)", - "bmf_de", "Batman Forever (German)", - "bmf_fr", "Batman Forever (French)", - "bmf_it", "Batman Forever (Italian)", - "bmf_jp", "Batman Forever (Japanese)", - "bmf_nl", "Batman Forever (Dutch)", - "bmf_no", "Batman Forever (Norwegian)", - "bmf_sp", "Batman Forever (Spanish)", - "bmf_sv", "Batman Forever (Swedish)", - "bmf_time", "Batman Forever (Timed Play)", - "bmf_uk", "Batman Forever (English)", - "bmfinal", "beatmania THE FINAL (ver JA-A)", - "bmiidx", "beatmania IIDX (863 JAB)", - "bmiidx2", "beatmania IIDX 2nd style (GC985 JAA)", - "bmiidx3", "beatmania IIDX 3rd style (GC992 JAC)", - "bmiidx3a", "beatmania IIDX 3rd style (GC992 JAA)", - "bmiidx4", "beatmania IIDX 4th style (GCA03 JAA)", - "bmiidx5", "beatmania IIDX 5th style (GCA17 JAA)", - "bmiidx6", "beatmania IIDX 6th style (GCB4U JAB)", - "bmiidx6a", "beatmania IIDX 6th style (GCB4U JAA)", - "bmiidx7", "beatmania IIDX 7th style (GCB44 JAA)", - "bmiidx8", "beatmania IIDX 8th style (GCC44 JAA)", - "bmiidxa", "beatmania IIDX (863 JAA)", - "bmiidxc", "beatmania IIDX with DDR 2nd Club Version (896 JAB)", - "bmiidxc2", "Beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM)", - "bmiidxca", "beatmania IIDX with DDR 2nd Club Version (896 JAA)", - "bmiidxs", "beatmania IIDX Substream (983 JAA)", - "bmx", "BMX", - "bnglngby", "Vs. Raid on Bungeling Bay (RD4-2 B)", - "bnj", "Bump 'n' Jump", - "bnjm", "Bump 'n' Jump (Midway)", - "bnstars", "Vs. Janshi Brandnew Stars (MegaSystem32 Version)", - "bnstars1", "Vs. Janshi Brandnew Stars", - "bntyhunt", "Bounty Hunter (GCTech Co., LTD)", - "bnzabros", "Bonanza Bros (US, Floppy DS3-5000-07d? Based)", - "bnzabrosj", "Bonanza Bros (Japan, Floppy DS3-5000-07b Based)", - "bnzai_g3", "Banzai Run (L-3) Germany", - "bnzai_l1", "Banzai Run (L-1)", - "bnzai_l3", "Banzai Run (L-3)", - "bnzai_pa", "Banzai Run (P-A)", - "boblbobl", "Bobble Bobble (set 1)", - "boblbobl2", "Bobble Bobble (set 2)", - "bodyslam", "Body Slam (8751 317-0015)", - "bogeyman", "Bogey Manor", - "boggy84", "Boggy '84", - "boggy84b", "Boggy '84 (bootleg)", - "bombbee", "Bomb Bee", - "bomber", "Bomber (bootleg of Scramble)", - "bombjack", "Bomb Jack (set 1)", - "bombjack2", "Bomb Jack (set 2)", - "bombjackt", "Bomb Jack (Tecfri, Spain)", - "bombkick", "Bomb Kick (set 1)", - "bombkicka", "Bomb Kick (set 2)", - "bomblord", "Bomber Lord (bootleg)", - "bombrman", "Bomber Man (Japan)", - "bombsa", "Bombs Away", - "bonanza", "Touchstar Bonanza (Revision 3)", - "bonanzar2", "Touchstar Bonanza (Revision 2)", - "bonebstr", "Bone Busters Inc.", - "bongo", "Bongo", - "bonkadv", "B.C. Kid / Bonk's Adventure / Kyukyoku!! PC Genjin", - "bonuscrd", "Bonus Card (Austrian)", - "bonuscrda", "Bonus Card (Austrian, ATG Electronic hack)", - "bonzeadv", "Bonze Adventure (World, Newer)", - "bonzeadvo", "Bonze Adventure (World, Older)", - "bonzeadvu", "Bonze Adventure (US)", - "boobhack", "Booby Kids (Italian manufactured graphic hack / bootleg of Kid no Hore Hore Daisakusen (bootleg))", - "boogwing", "Boogie Wings (Euro v1.5, 92.12.07)", - "boogwinga", "Boogie Wings (Asia v1.5, 92.12.07)", - "bookra", "Book Of Ra (set 1)", - "bookthr", "Book Theatre (Ver 1.2)", - "boomrang", "Boomer Rang'r / Genesis (set 1)", - "boomranga", "Boomer Rang'r / Genesis (set 2)", - "boonggab", "Boong-Ga Boong-Ga (Spank'em!)", - "bootcamp", "Boot Camp", - "boothill", "Boot Hill", - "bop_l2", "The Machine: Bride of Pinbot (L-2)", - "bop_l3", "The Machine: Bride of Pinbot (L-3)", - "bop_l4", "The Machine: Bride of Pinbot (L-4)", - "bop_l5", "The Machine: Bride of Pinbot (L-5)", - "bop_l6", "The Machine: Bride of Pinbot (L-6)", - "bop_l7", "The Machine: Bride of Pinbot (L-7)", - "borench", "Borench", - "borntofi", "Born To Fight", - "bosco", "Bosconian (new version)", - "boscomd", "Bosconian (Midway, new version)", - "boscomdo", "Bosconian (Midway, old version)", - "boscoo", "Bosconian (old version)", - "boscoo2", "Bosconian (older version)", - "botanic", "Botanic (French)", - "botss", "Battle of the Solar System (rev. 1.1a 7/23/92)", - "botss11", "Battle of the Solar System (rev. 1.1 3/24/92)", - "bottl10b", "Bottle 10 (Italian, set 2)", - "bottle10", "Bottle 10 (Italian, set 1)", - "bottom9", "Bottom of the Ninth (version T)", - "bottom9n", "Bottom of the Ninth (version N)", - "bouldash", "Boulder Dash / Boulder Dash Part 2 (World)", - "bouldashj", "Boulder Dash / Boulder Dash Part 2 (Japan)", - "bounty", "The Bounty", - "bountyh", "Bounty Hunter", - "bowarrow", "Bow & Arrow (Prototype)", - "bowl3d", "3-D Bowling", - "bowler", "Bowling Alley", - "bowlrama", "Bowl-O-Rama", - "bowltry", "Bowling Try", - "boxer", "Boxer (prototype)", - "boxingb", "Boxing Bugs", - "boxingm", "Boxing Mania (ver JAA)", - "boxyboy", "Boxy Boy (SB?)", - "bpoker", "Video Poker (v1403)", - "br_l1", "Black Rose (L-1)", - "br_l3", "Black Rose (L-3)", - "br_l4", "Black Rose (L-4)", - "br_p17", "Black Rose (SP-1)", - "bradley", "Bradley Trainer", - "brain", "Brain", - "brapboys", "B.Rap Boys (World)", - "brapboysj", "B.Rap Boys Special (Japan)", - "brapboysu", "B.Rap Boys Special (US)", - "brasil", "Bra$il (Version 3)", - "brasil86", "Brasil 86", - "brasil87", "Brasil 87", - "brasil89", "Brasil 89 (set 1)", - "brasil89a", "Brasil 89 (set 2)", - "brasil93", "Brasil 93", - "braveff", "Brave Fire Fighters", - "brdrlinb", "Borderline (Karateco bootleg)", - "brdrline", "Borderline", - "brdrlinet", "Borderline (Tranquilizer Gun conversion)", - "brdrlins", "Borderline (Sidam bootleg)", - "break86", "Break '86", - "breakers", "Breakers", - "breakrev", "Breakers Revenge", - "breywood", "Breywood (Japan revision 2)", - "brickyrd", "Brickyard", - "brickzn", "Brick Zone (v5.0, Joystick)", - "brickzn11", "Brick Zone (v1.1)", - "brickznv4", "Brick Zone (v4.0, Spinner)", - "brival", "Burning Rival (World)", - "brivalj", "Burning Rival (Japan)", - "brix", "Brix", - "brixian", "Brixian", - "brkthru", "Break Thru (US)", - "brkthruj", "Kyohkoh-Toppa (Japan)", - "brod", "Brodjaga (Arcade bootleg of ZX Spectrum 'Inspector Gadget and the Circus of Fear')", - "bronx", "Bronx", - "brooklyn", "Brooklyn (set 1) (Bingo)", - "brooklyna", "Brooklyn (set 2) (Bingo)", - "brooks", "Brooks & Dunn (rev.T1)", - "brubber", "Burnin' Rubber", - "brutforc", "Brute Force", - "brvblade", "Brave Blade (World)", - "brvbladea", "Brave Blade (Asia)", - "brvbladej", "Brave Blade (Japan)", - "brvbladeu", "Brave Blade (USA)", - "brvteam", "Brave Team", - "bs94", "Buena Suerte '94", - "bsb105", "Breakshot (Beta)", - "bshark", "Battle Shark (World)", - "bsharkj", "Battle Shark (Japan)", - "bsharkjjs", "Battle Shark (Japan, Joystick)", - "bsharku", "Battle Shark (US)", - "bsktball", "Basketball", - "bsplash", "Banana Splash (set 1)", - "bssoccer", "Back Street Soccer (KRB-0031 PCB)", - "bssoccera", "Back Street Soccer (KRB-0032A PCB)", - "bstars", "Baseball Stars Professional (NGM-002)", - "bstars2", "Baseball Stars 2", - "bstarsh", "Baseball Stars Professional (NGH-002)", - "bstrk_l1", "Big Strike (Shuffle) (L-1)", - "bsuerte", "Buena Suerte (Spanish, set 1)", - "bsuertea", "Buena Suerte (Spanish, set 2)", - "bsuerteb", "Buena Suerte (Spanish, set 3)", - "bsuertec", "Buena Suerte (Spanish, set 4)", - "bsuerted", "Buena Suerte (Spanish, set 5)", - "bsuertee", "Buena Suerte (Spanish, set 6)", - "bsuertef", "Buena Suerte (Spanish, set 7)", - "bsuerteg", "Buena Suerte (Spanish, set 8)", - "bsuerteh", "Buena Suerte (Spanish, set 9)", - "bsuertei", "Buena Suerte (Spanish, set 10)", - "bsuertej", "Buena Suerte (Spanish, set 11)", - "bsuertek", "Buena Suerte (Spanish, set 12)", - "bsuertel", "Buena Suerte (Spanish, set 13)", - "bsuertem", "Buena Suerte (Spanish, set 14)", - "bsuerten", "Buena Suerte (Spanish, set 15)", - "bsuerteo", "Buena Suerte (Spanish, set 16)", - "bsuertep", "Buena Suerte (Spanish, set 17)", - "bsuerteq", "Buena Suerte (Spanish, set 18)", - "bsuerter", "Buena Suerte (Spanish, set 19)", - "bsuertes", "Buena Suerte (Spanish, set 20)", - "bsuertet", "Buena Suerte (Spanish, set 21)", - "bsuerteu", "Buena Suerte (Spanish, set 22)", - "bsv100r", "Breakshot (Redemption 1.0)", - "bsv102r", "Breakshot (Redemption 1.2)", - "bsv103", "Breakshot", - "btchamp", "Beat the Champ (GV053 UAA01)", - "btime", "Burger Time (Data East set 1)", - "btime2", "Burger Time (Data East set 2)", - "btime3", "Burger Time (Data East USA)", - "btimem", "Burger Time (Midway)", - "btippers", "Big Tippers (Russia)", - "btlecity", "Vs. Battle City", - "btlfield", "Battle Field (Japan)", - "btlfieldb", "Battle Field (bootleg)", - "btlkroad", "Battle K-Road", - "btltryst", "Battle Tryst (ver JAC)", - "btmn_101", "Batman (1.01)", - "btmn_103", "Batman (1.03)", - "btmn_106", "Batman (1.06)", - "btmn_g13", "Batman (1.03 Germany)", - "btoads", "Battletoads", - "bttf_a20", "Back To the Future (2.0)", - "bttf_a21", "Back To The Future (2.1)", - "bttf_a27", "Back To the Future (2.7)", - "bttf_g27", "Back To the Future (2.7 Germany)", - "bub68705", "Bubble Bobble (bootleg with 68705)", - "bubblem", "Bubble Memories: The Story Of Bubble Bobble III (Ver 2.4O 1996/02/15)", - "bubblemj", "Bubble Memories: The Story Of Bubble Bobble III (Ver 2.3J 1996/02/07)", - "bubbles", "Bubbles", - "bubblesp", "Bubbles (prototype version)", - "bubblesr", "Bubbles (Solid Red label)", - "bubbletr", "Bubble Trouble (Japan, Rev C)", - "bubl2000", "Bubble 2000", - "bublbob2", "Bubble Bobble II (Ver 2.5O 1994/10/05)", - "bublbob2p", "Bubble Bobble II (Ver 0.0J 1993/12/13, prototype)", - "bublbobl", "Bubble Bobble (Japan, Ver 0.1)", - "bublbobl1", "Bubble Bobble (Japan, Ver 0.0)", - "bublboblr", "Bubble Bobble (US, Ver 5.1)", - "bublboblr1", "Bubble Bobble (US, Ver 1.0)", - "bublpong", "Bubble Pong Pong", - "bubsymphb", "Bubble Symphony (bootleg with OKI6295)", - "bubsymphe", "Bubble Symphony (Ver 2.5O 1994/10/05)", - "bubsymphj", "Bubble Symphony (Ver 2.5J 1994/10/05)", - "bubsymphu", "Bubble Symphony (Ver 2.5A 1994/10/05)", - "bubsys", "Bubble System BIOS", - "bucaner", "Buccaneer", - "buccanrs", "Buccaneers (set 1)", - "buccanrsa", "Buccaneers (set 2)", - "buckrgrs", "Buck Rogers", - "buckrog", "Buck Rogers: Planet of Zoom", - "buckrogn", "Buck Rogers: Planet of Zoom (not encrypted, set 1)", - "buckrogn2", "Buck Rogers: Planet of Zoom (not encrypted, set 2)", - "bucky", "Bucky O'Hare (ver EAB)", - "buckyaab", "Bucky O'Hare (ver AAB)", - "buckyea", "Bucky O'Hare (ver EA)", - "buckyuab", "Bucky O'Hare (ver UAB)", - "bugfever", "Bugs Fever (Version 1.7R CGA)", - "bugfeverd", "Bugs Fever (Version 1.7E CGA)", - "bugfevero", "Bugs Fever (Version 1.6R CGA)", - "bugfeverv", "Bugs Fever (Version 1.7R Dual)", - "bugfeverv2", "Bugs Fever (Version 1.7E Dual)", - "buggyboy", "Buggy Boy/Speed Buggy (cockpit)", - "buggyboyjr", "Buggy Boy Junior/Speed Buggy (upright)", - "buggychl", "Buggy Challenge", - "buggychlt", "Buggy Challenge (Tecfri)", - "bujutsu", "Fighting Bujutsu", - "bullet", "Bullet (FD1094 317-0041)", - "bullfgt", "Bullfight (315-5065)", - "bullfgtr", "Bull Fighter", - "bullfgtrs", "Bull Fighter (Sega)", - "bullsdrt", "Bulls Eye Darts", - "bullsdrtg", "Bulls Eye Darts (Galaxian conversion)", - "bullseye", "301/Bullseye", - "bungeem", "Bungee Monkey (set 1)", - "bungeema", "Bungee Monkey (set 2)", - "buraiken", "Hissatsu Buraiken (Japan)", - "burglarx", "Burglar X", - "buriki", "Buriki One (rev.B)", - "burnforc", "Burning Force (Japan, new version (Rev C))", - "burnforco", "Burning Force (Japan, old version)", - "burningf", "Burning Fight (NGM-018)(NGH-018)", - "burningfh", "Burning Fight (NGH-018)(US)", - "burningfp", "Burning Fight (prototype)", - "bushido", "Bushido (set 1)", - "bushidoa", "Bushido (set 2)", - "buster", "Buster", - "butasan", "Butasan - Pig's & Bomber's (Japan, English)", - "butasanj", "Butasan (Japan, Japanese)", - "butrfly", "Butterfly Video Game (version U350C)", - "buzzard", "Buzzard", - "buzzundr", "Buzzundrum (Ace)", - "bwcasino", "Boardwalk Casino", - "bwidow", "Black Widow", - "bwings", "B-Wings (Japan new Ver.)", - "bwingsa", "B-Wings (Alt Ver.?)", - "bwingso", "B-Wings (Japan old Ver.)", - "bygone", "Bygone", - "bzone", "Battle Zone (rev 2)", - "bzonea", "Battle Zone (rev 1)", - "bzonec", "Battle Zone (cocktail)", - "c3_ppays", "The Phrase That Pays (Bellfruit) (Cobra 3?)", - "c3_rtime", "Radio Times (Bellfruit) (Cobra 3)", - "c3_telly", "Telly Addicts (Bellfruit) (Cobra 3)", - "c3_totp", "Top of the Pops (Bellfruit) (Cobra 3?)", - "cabal", "Cabal (World, Joystick version)", - "cabala", "Cabal (Alpha Trading)", - "cabalbl", "Cabal (bootleg of Joystick version, set 1, alternate sound hardware)", - "cabalbl2", "Cabal (bootleg of Joystick version, set 2)", - "cabalus", "Cabal (US set 1, Trackball version)", - "cabalus2", "Cabal (US set 2, Trackball version)", - "cabaret", "Cabaret", - "cachat", "Cachat (Japan)", - "cactjack", "Cactus Jack's", - "cactus", "Cactus (bootleg of Saboten Bombers)", - "cadanglr", "Angler Dangler (DECO Cassette)", - "cadash", "Cadash (World)", - "cadashf", "Cadash (France)", - "cadashg", "Cadash (Germany)", - "cadashi", "Cadash (Italy)", - "cadashj", "Cadash (Japan)", - "cadashp", "Cadash (World, prototype)", - "cadashu", "Cadash (US)", - "cafebrk", "Mahjong Cafe Break", - "cafedoll", "Mahjong Cafe Doll (Japan)", - "cafetime", "Mahjong Cafe Time", - "cairblad", "Change Air Blade (Japan)", - "calchase", "California Chase", - "calibr50", "Caliber 50", - "calipso", "Calipso", - "calorie", "Calorie Kun vs Moguranian", - "calorieb", "Calorie Kun vs Moguranian (bootleg)", - "calspeed", "California Speed (Version 2.1a, 4/17/98)", - "calspeeda", "California Speed (Version 1.0r7a 3/4/98)", - "cameltry", "Cameltry (US, YM2610)", - "cameltrya", "Cameltry (World, YM2203 + M6295)", - "cameltryau", "Cameltry (US, YM2203 + M6295)", - "cameltryj", "Cameltry (Japan, YM2610)", - "camlight", "Camel Lights", - "canasta", "Canasta '86'", - "candance", "Cannon Dancer (Japan)", - "candy", "Candy Candy", - "cannball", "Cannon Ball (Yun Sung, horizontal)", - "cannballv", "Cannon Ball (Yun Sung, vertical)", - "cannonb", "Cannon Ball (bootleg on Crazy Kong hardware) (set 1, buggy)", - "cannonb2", "Cannon Ball (bootleg on Crazy Kong hardware) (set 2, buggy)", - "cannonb3", "Cannon Ball (bootleg on Crazy Kong hardware) (set 3, no bonus game)", - "cannonbp", "Cannon Ball (Pac-Man Hardware)", - "canvas", "Canvas Croquis", - "canyon", "Canyon Bomber", - "canyonp", "Canyon Bomber (prototype)", - "capbowl", "Capcom Bowling (set 1)", - "capbowl2", "Capcom Bowling (set 2)", - "capbowl3", "Capcom Bowling (set 3)", - "capbowl4", "Capcom Bowling (set 4)", - "capcor", "Capitani Coraggiosi (Ver 1.3)", - "capitol", "Capitol", - "capsnk", "Capcom Vs. SNK Millennium Fight 2000 (JPN, USA, EXP, KOR, AUS) (Rev C)", - "capsnka", "Capcom Vs. SNK Millennium Fight 2000 (JPN, USA, EXP, KOR, AUS) (Rev A)", - "capsnkb", "Capcom Vs. SNK Millennium Fight 2000 (JPN, USA, EXP, KOR, AUS)", - "captaven", "Captain America and The Avengers (Asia Rev 1.4)", - "captavena", "Captain America and The Avengers (Asia Rev 1.0)", - "captavene", "Captain America and The Avengers (UK Rev 1.4)", - "captavenj", "Captain America and The Avengers (Japan Rev 0.2)", - "captavenu", "Captain America and The Avengers (US Rev 1.9)", - "captavenua", "Captain America and The Avengers (US Rev 1.4)", - "captavenuu", "Captain America and The Avengers (US Rev 1.6)", - "captcomm", "Captain Commando (World 911202)", - "captcommb", "Captain Commando (bootleg)", - "captcommj", "Captain Commando (Japan 911202)", - "captcommjr1", "Captain Commando (Japan 910928)", - "captcommr1", "Captain Commando (World 911014)", - "captcommu", "Captain Commando (USA 910928)", - "capunc", "Capitan Uncino (Ver 1.2)", - "car2", "Car 2 (bootleg of Head On 2)", - "caractn", "Car Action (set 1)", - "caractn2", "Car Action (set 2)", - "carb2002", "Carriage Bonus 2002 (bootleg)", - "carb2003", "Carriage Bonus 2003 (bootleg)", - "cardline", "Card Line", - "carhop", "Car Hop", - "carjmbre", "Car Jamboree", - "carket", "Carket Ball", - "carnevil", "CarnEvil (v1.0.3)", - "carnevil1", "CarnEvil (v1.0.1)", - "carnival", "Carnival (upright)", - "carnivalc", "Carnival (cocktail)", - "carnivalh", "Carnival (Head On hardware, set 1)", - "carnivalha", "Carnival (Head On hardware, set 2)", - "carnking", "Carnival King (v1.00.11)", - "carpolo", "Car Polo", - "carrera", "Carrera (Version 6.7)", - "cartfury", "Cart Fury", - "casanova", "Casanova", - "casbjack", "Casino Black Jack (color, Standard 00-05)", - "cascade", "Cascade", - "cashcade", "Cashcade (JPM) (SYSTEM5 VIDEO)", - "cashcrop", "Cash Crop (Russia)", - "cashquiz", "Cash Quiz (Type B, Version 5)", - "cashtrn", "Cash Train (v1.10)", - "casino5", "Casino Five (3315-02, U5-0)", - "caspoker", "Casino Poker (Ver PM86LO-35-5, German)", - "castaway", "Castaway (Russia) (Atronic) (set 1)", - "castawaya", "Castaway (Russia) (Atronic) (set 2)", - "castfant", "Astro Fantasia (DECO Cassette)", - "castfpt", "Fortune Pot (Castle) (MACH2000 V2rvA)", - "castrev", "Revolution (Castle) (MACH2000 V1rvE)", - "caswin", "Casino Winner", - "catacomb", "Catacomb", - "catacomp", "Catacomb (Pinball)", - "catapult", "Catapult", - "catch22", "Catch-22 (version 8.0)", - "catchp", "Catch (prototype)", - "caterplr", "Caterpillar (bootleg of Centipede)", - "catnmous", "Cat and Mouse (set 1)", - "catnmousa", "Cat and Mouse (set 2)", - "catt", "Catt (Japan)", - "cavelon", "Cavelon", - "caveman", "Caveman (Pinball/Video Combo, set 1)", - "cavemana", "Caveman (Pinball/Video Combo, set 2)", - "cavenger", "Cosmic Avenger", - "cavnegro", "Cavaleiro Negro", - "cavnegro1", "Cavaleiro Negro (alternate set 1)", - "cavnegro2", "Cavaleiro Negro (alternate set 2)", - "cawing", "Carrier Air Wing (World 901012)", - "cawingb2", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 2)", - "cawingbl", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 1)", - "cawingj", "U.S. Navy (Japan 901012)", - "cawingr1", "Carrier Air Wing (World 901009)", - "cawingu", "Carrier Air Wing (USA 901012)", - "cb2001", "Cherry Bonus 2001", - "cb3", "Cherry Bonus III (ver.1.40, encrypted)", - "cb3a", "Cherry Bonus III (ver.1.40, set 2)", - "cb3b", "Cherry Bonus III (alt)", - "cb3c", "Cherry Bonus III (alt, set 2)", - "cb3d", "Cherry Bonus III (set 3)", - "cb3e", "Cherry Bonus III (set 4, encrypted bootleg)", - "cbaj", "Cool Boarders Arcade Jam", - "cball", "Cannonball (Atari, prototype)", - "cbasebal", "Capcom Baseball (Japan)", - "cbdash", "Boulder Dash (DECO Cassette)", - "cbnj", "Bump 'n' Jump (DECO Cassette)", - "cbombers", "Chase Bombers (World)", - "cbombersj", "Chase Bombers (Japan)", - "cbombersp", "Chase Bombers (Japan Prototype)", - "cbtime", "Burger Time (DECO Cassette)", - "cburnrub", "Burnin' Rubber (DECO Cassette, set 1)", - "cburnrub2", "Burnin' Rubber (DECO Cassette, set 2)", - "cbuster", "Crude Buster (World FX version)", - "cbusterj", "Crude Buster (Japan)", - "cbusterw", "Crude Buster (World FU version)", - "cc_12", "Cactus Canyon (1.2)", - "cc_13", "Cactus Canyon (1.3)", - "ccasino", "Chinese Casino [BET] (Japan)", - "ccastles", "Crystal Castles (version 4)", - "ccastles1", "Crystal Castles (version 1)", - "ccastles2", "Crystal Castles (version 2)", - "ccastles3", "Crystal Castles (version 3)", - "ccastlesf", "Crystal Castles (version 3, French)", - "ccastlesg", "Crystal Castles (version 3, German)", - "ccastlesj", "Crystal Castles (joystick version)", - "ccastlesp", "Crystal Castles (version 3, Spanish)", - "ccboot", "Crazy Climber (bootleg set 1)", - "ccboot2", "Crazy Climber (bootleg set 2)", - "ccbootmr", "Crazy Climber (Model Racing bootleg)", - "ccclass", "Country Club Classic (v1.10 03-apr-1997)", - "cchance", "Cherry Chance", - "cchasm", "Cosmic Chasm (set 1)", - "cchasm1", "Cosmic Chasm (set 2)", - "cclimber", "Crazy Climber (US)", - "cclimberj", "Crazy Climber (Japan)", - "cclimbr2", "Crazy Climber 2 (Japan)", - "cclimbr2a", "Crazy Climber 2 (Japan, Harder)", - "cclimbroper", "Crazy Climber (Spanish, Operamatic bootleg)", - "cclownz", "Crazzy Clownz (Version 1.0)", - "ccruise", "Caribbean Cruise", - "cd32bios", "CD32 Bios", - "cdibios", "CD-i Bios", - "cdiscon1", "Disco No.1 (DECO Cassette)", - "cdsteljn", "DS Telejan (DECO Cassette, Japan)", - "cecmatch", "ChuckECheese's Match Game", - "centaur", "Centaur", - "centipdb", "Centipede (bootleg)", - "centipdd", "Centipede Dux (hack)", - "centiped", "Centipede (revision 3)", - "centiped2", "Centipede (revision 2)", - "centtime", "Centipede (1 player, timed)", - "cerberup", "Cerberus (Pinball)", - "cerberus", "Cerberus", - "cexplore", "Explorer (DECO Cassette)", - "cfarm", "Chicken Farm (Version 2.0)", - "cfblue", "Crazy Fruits Blue (Russia) (Atronic) (set 1)", - "cfbluea", "Crazy Fruits Blue (Russia) (Atronic) (set 2)", - "cfever1k", "Casino Fever 1k", - "cfever40", "Casino Fever 4.0", - "cfever50", "Casino Fever 5.0", - "cfever51", "Casino Fever 5.1", - "cfever61", "Casino Fever 6.1", - "cfghtice", "Fighting Ice Hockey (DECO Cassette)", - "cfgreen", "Crazy Fruits Green (Russia) (Atronic)", - "cfield", "Chaos Field (GDL-0025)", - "cfishing", "Fishing (DECO Cassette)", - "cflyball", "Flying Ball (DECO Cassette)", - "cftbl_l3", "Creature from the Black Lagoon (L-3,SP-1)", - "cftbl_l4", "Creature from the Black Lagoon (L-4)", - "cgangpzl", "Cosmo Gang the Puzzle (US)", - "cgangpzlj", "Cosmo Gang the Puzzle (Japan)", - "cgip30cs", "Credit Poker (ver.30c, standard)", - "cgold", "Caribbean Gold (3VXEC449, USA)", - "cgold2", "Caribbean Gold II (3XF5182H04, USA)", - "cgraplop", "Cluster Buster (DECO Cassette)", - "cgraplop2", "Graplop (no title screen) (DECO Cassette)", - "ch2000", "Fruit Bonus 2000 / New Cherry 2000 (Version 4.4E Dual)", - "ch2000b1", "Fruit Bonus 2000 / New Cherry 2000 (Version 4.4R, set 1)", - "ch2000b2", "Fruit Bonus 2000 / New Cherry 2000 (Version 4.1LT, set 1)", - "ch2000c1", "Fruit Bonus 2000 / New Cherry 2000 (Version 4.4R, set 2)", - "ch2000c2", "Fruit Bonus 2000 / New Cherry 2000 (Version 4.1LT, set 2)", - "ch2000d1", "Fruit Bonus 2000 / New Cherry 2000 (Version 4.4R, set 3)", - "ch2000d2", "Fruit Bonus 2000 / New Cherry 2000 (Version 4.1LT, set 3)", - "ch2000o", "Fruit Bonus 2000 / New Cherry 2000 (Version 3.9XT)", - "ch2000o2", "Fruit Bonus 2000 / New Cherry 2000 (Version 3.9D)", - "ch2000o3", "Fruit Bonus 2000 / New Cherry 2000 (Version 3.9)", - "ch2000v1", "Fruit Bonus 2000 / New Cherry 2000 (Version 4.4R Dual)", - "ch2000v2", "Fruit Bonus 2000 / New Cherry 2000 (Version 4.1LT Dual)", - "chainrec", "Chain Reaction (World, Version 2.2, 1995.09.25)", - "chaknpop", "Chack'n Pop", - "challeng", "Challenger", - "cham24", "Chameleon 24", - "chamburger", "Hamburger (DECO Cassette, Japan)", - "chameleo", "Chameleon", - "champbas", "Champion Base Ball", - "champbasj", "Champion Base Ball (Japan set 1)", - "champbasja", "Champion Base Ball (Japan set 2)", - "champbb2", "Champion Base Ball Part-2: Pair Play (set 1)", - "champbb2a", "Champion Baseball II (set 2)", - "champbb2j", "Champion Baseball II (Japan)", - "champbwl", "Championship Bowling", - "champwr", "Champion Wrestler (World)", - "champwrj", "Champion Wrestler (Japan)", - "champwru", "Champion Wrestler (US)", - "chanbara", "Chanbara", - "chance", "Chance", - "chance32", "Chance Thirty Two", - "changela", "Change Lanes", - "changes", "Changes", - "changesa", "Changes (EME license)", - "chaosbrk", "Chaos Breaker (v2.02J)", - "chaoshea", "Chaos Heat (V2.09O)", - "chaosheaj", "Chaos Heat (V2.08J)", - "charlien", "Charlie Ninja", - "charlies", "Charlie's Angels", - "chasehq", "Chase H.Q. (World)", - "chasehq2", "Chase H.Q. 2 (v2.0.6.JP)", - "chasehqj", "Chase H.Q. (Japan)", - "chasehqju", "Chase H.Q. (Japan, upright?)", - "chasehqu", "Chase H.Q. (US)", - "chboxing", "Champion Boxing", - "checkman", "Check Man", - "checkmanj", "Check Man (Japan)", - "checkmat", "Checkmate", - "cheekyms", "Cheeky Mouse", - "cheesech", "Cheese Chase", - "cheetah", "Cheetah", - "chelnov", "Chelnov - Atomic Runner (World)", - "chelnovj", "Chelnov - Atomic Runner (Japan)", - "chelnovu", "Chelnov - Atomic Runner (US)", - "chessc2", "Chess Challenge 2", - "chewheel", "Cherry Wheel (Version 1.7)", - "chewing", "Chewing Gum", - "cheyenne", "Cheyenne (version 1.0)", - "chicken", "Chicken (Russia) (Atronic)", - "chihiro", "Chihiro Bios", - "chikij", "Chiki Chiki Boys (Japan 900619)", - "chiller", "Chiller (version 3.0)", - "chillicc", "Chilli Con Cash (set 1)", - "chimerab", "Chimera Beast (prototype)", - "chinagat", "China Gate (US)", - "chinatow", "China Town (Ver 1B, Dino4 HW)", - "chinatwn", "China Town (Japan)", - "chinhero", "Chinese Hero", - "chinhero2", "Chinese Hero (older, set 1)", - "chinhero3", "Chinese Hero (older, set 2)", - "chinherot", "Chinese Heroe (Taito)", - "chinmoku", "Mahjong Chinmoku no Hentai (Japan 900511)", - "chinsan", "Ganbare Chinsan Ooshoubu (MC-8123A, 317-5012)", - "chkun", "Chance Kun (Japan)", - "chleague", "Champion League (Poker)", - "chleagul", "Champion League (Lattine)", - "chmpnum", "Champion Number (V0.74)", - "chocomk", "Musapey's Choco Marker (Rev A) (GDL-0014A)", - "chocovdr", "Uchuu Daisakusen: Chocovader Contactee (Japan, CVC1 Ver.A)", - "chokchok", "Choky! Choky!", - "choko", "Janpai Puzzle Choukou (Japan 010820)", - "choplift", "Choplifter (8751 315-5151)", - "chopliftbl", "Choplifter (bootleg)", - "chopliftu", "Choplifter (unprotected)", - "chopper", "Chopper I (US set 1)", - "choppera", "Chopper I (US set 2)", - "chopperb", "Chopper I (US set 3)", - "choysun", "Choy Sun Doa (20131511, Malaysia)", - "chqflag", "Chequered Flag", - "chqflagj", "Chequered Flag (Japan)", - "chry10", "Cherry 10 (bootleg with PIC16F84)", - "chryangl", "Cherry Angel", - "chrygld", "Cherry Gold I", - "chsuper2", "Champion Super 2 (V0.13)", - "chsuper3", "Champion Super 3 (V0.35)", - "chucklck", "Chuck-A-Luck", - "chukatai", "Chuka Taisen (World)", - "chukataij", "Chuka Taisen (Japan)", - "chukataiu", "Chuka Taisen (US)", - "chwrestl", "Champion Pro Wrestling", - "chwy", "Highway Chase (DECO Cassette)", - "ciclone", "Ciclone", - "circa33", "Circa 1933", - "circus", "Circus / Acrobat TV", - "circusc", "Circus Charlie (level select, set 1)", - "circusc2", "Circus Charlie (level select, set 2)", - "circusc3", "Circus Charlie (no level select)", - "circuscc", "Circus Charlie (Centuri)", - "circusce", "Circus Charlie (Centuri, earlier)", - "circusp", "Circus", - "cischeat", "Cisco Heat", - "citalcup", "Champion Italian Cup (bootleg V220IT)", - "citybomb", "City Bomber (World)", - "citybombj", "City Bomber (Japan)", - "citycon", "City Connection (set 1)", - "citycona", "City Connection (set 2)", - "citylove", "City Love (Japan 860908)", - "cityslck", "City Slicker", - "cj3play", "Triple Play (Ver. 1.10)", - "cjddzsp", "Super Dou Di Zhu Special (V122CN)", - "cjdh2", "Chao Ji Da Heng 2 (V311CN)", - "cjdh2a", "Chao Ji Da Heng 2 (V311CNA)", - "cjdh2b", "Chao Ji Da Heng 2 (V311CNB)", - "cjdh2c", "Chao Ji Da Heng 2 (V215CN)", - "cjffruit", "Funny Fruit (Ver. 1.13)", - "ckong", "Crazy Kong", - "ckongalc", "Crazy Kong (Alca bootleg)", - "ckongcv", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 2)", - "ckongg", "Crazy Kong (bootleg on Galaxian hardware)", - "ckonggx", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 1)", - "ckongis", "Crazy Kong (bootleg on Galaxian hardware, encrypted, set 3)", - "ckongmc", "Crazy Kong (bootleg on Moon Cresta hardware)", - "ckongo", "Crazy Kong (Orca bootleg)", - "ckongpt2", "Crazy Kong Part II (set 1)", - "ckongpt2a", "Crazy Kong Part II (set 2)", - "ckongpt2b", "Crazy Kong Part II (alternative levels)", - "ckongpt2j", "Crazy Kong Part II (Japan)", - "ckongpt2jeu", "Crazy Kong Part II (Jeutel bootleg)", - "ckongs", "Crazy Kong (Scramble hardware)", - "ckpt_a17", "Checkpoint (1.7)", - "clapapa", "Rootin' Tootin' / La-Pa-Pa (DECO Cassette)", - "clapapa2", "Rootin' Tootin' (DECO Cassette)", - "clas1812", "Class of 1812", - "classice", "Classic Edition (Version 1.6E)", - "classice1", "Classic Edition (Version 1.6R, set 1)", - "classice2", "Classic Edition (Version 1.6LT, set 1)", - "classiced1", "Classic Edition (Version 1.6R, set 2)", - "classiced2", "Classic Edition (Version 1.6LT, set 2)", - "classicev", "Classic Edition (Version 1.6E Dual)", - "classicev1", "Classic Edition (Version 1.6R Dual)", - "classicev2", "Classic Edition (Version 1.6LT Dual)", - "claybust", "Claybuster", - "claychal", "Sega Clay Challenge", - "claypign", "Clay Pigeon (version 2.0)", - "clayshoo", "Clay Shoot", - "clbowl", "Coors Light Bowling", - "cleanswp", "Clean Sweep [TTL]", - "cleoftp", "Cleopatra Fortune Plus (GDL-0012)", - "cleopatr", "Cleopatra Fortune (Ver 2.1J 1996/09/05)", - "cleoptra", "Cleopatra", - "cliffhgr", "Cliff Hanger (set 1)", - "cliffhgra", "Cliff Hanger (set 2)", - "clkwise", "Clockwise (1VXEC534, New Zealand)", - "cloak", "Cloak & Dagger (rev 5)", - "cloakfr", "Cloak & Dagger (French)", - "cloakgr", "Cloak & Dagger (German)", - "cloaksp", "Cloak & Dagger (Spanish)", - "clocknch", "Lock'n'Chase (DECO Cassette)", - "closeenc", "Close Encounters of the Third Kind", - "cloud9", "Cloud 9 (prototype)", - "clown", "Clown", - "clowns", "Clowns (rev. 2)", - "clowns1", "Clowns (rev. 1)", - "clshroad", "Clash-Road", - "clshroadd", "Clash-Road (Data East license)", - "clshroads", "Clash-Road (Status license)", - "cltchitr", "Clutch Hitter (US, FD1094 317-0176)", - "cltchitrj", "Clutch Hitter (Japan, FD1094 317-0175)", - "club90s", "Mahjong CLUB 90's (set 1) (Japan 900919)", - "club90sa", "Mahjong CLUB 90's (set 2) (Japan 900919)", - "clubk2k3", "Club Kart: European Session (2003)", - "clubk2kf", "Club Kart: European Session (2003, not protected)", - "clubkprz", "Club Kart Prize", - "clubkpzb", "Club Kart Prize Ver. B", - "clubkrtd", "Club Kart: European Session (Rev D)", - "clubkrte", "Club Kart: European Session", - "cluckypo", "Lucky Poker (DECO Cassette)", - "cluclu", "Vs. Clu Clu Land", - "cluedo", "Cluedo (prod. 2D)", - "cluedo2", "Cluedo (prod. 2)", - "cluedo2c", "Cluedo (prod. 2C)", - "cluedod", "Cluedo (prod. 2D) (Protocol)", - "cmagica", "Carta Magica (Ver 1.8)", - "cmanhat", "Manhattan (DECO Cassette)", - "cmast91", "Cherry Master '91 (ver.1.30)", - "cmast92", "Cherry Master '92", - "cmast97", "Cherry Master '97", - "cmaster", "Cherry Master I (ver.1.01, set 1)", - "cmasterb", "Cherry Master I (ver.1.01, set 2)", - "cmasterbv", "Cherry Master I (ver.1.01, set 4, with Blitz Poker ROM?)", - "cmasterc", "Cherry Master I (ver.1.01, set 3)", - "cmasterd", "Cherry Master I (ver.1.01, set 5)", - "cmastere", "Cherry Master I (ver.1.01, set 6)", - "cmasterf", "Cherry Master I (ver.1.01, set 7)", - "cmehyou", "Mahjong Circuit no Mehyou (Japan)", - "cmezspin", "Cherry Master I (E-Z Spin bootleg / hack)", - "cmfun", "Cherry Master (Fun USA v2.5 bootleg / hack)", - "cmissnx", "Mission-X (DECO Cassette)", - "cmkenosp", "Coinmaster Keno (Y2K, Spanish, 2000-12-14)", - "cmkenospa", "Coinmaster Keno (Y2K, Spanish, 2000-12-02)", - "cmmb162", "Centipede / Millipede / Missile Command / Let's Go Bowling (rev 1.62)", - "cmrltv75", "Coinmaster Roulette V75 (Y2K, Spanish)", - "cmv4", "Cherry Master (ver.4, set 1)", - "cmv4a", "Cherry Master (ver.4, set 2)", - "cmv801", "Cherry Master (Corsica, ver.8.01)", - "cmwm", "Cherry Master (Watermelon bootleg / hack)", - "cndypuzl", "Candy Puzzle (v1.0)", - "cnightst", "Night Star (DECO Cassette, set 1)", - "cnightst2", "Night Star (DECO Cassette, set 2)", - "cninja", "Caveman Ninja (World ver 4)", - "cninja1", "Caveman Ninja (World ver 1)", - "cninjabl", "Caveman Ninja (bootleg)", - "cninjabl2", "Caveman Ninja (bootleg, alt)", - "cninjau", "Caveman Ninja (US ver 4)", - "cntct_l1", "Contact (L-1)", - "cntforce", "Counterforce", - "cntine31", "Continental 3 in 1 (Bingo)", - "cntinntl", "Continental (Bingo)", - "cntrygrl", "Country Girl (Japan set 1)", - "cntrygrla", "Country Girl (Japan set 2)", - "cntsteer", "Counter Steer (Japan)", - "cobra", "Cobra Command (Data East LD, set 1)", - "cobraa", "Cobra Command (Data East LD, set 2)", - "cobracom", "Cobra-Command (World revision 5)", - "cobracomj", "Cobra-Command (Japan)", - "cobram3", "Cobra Command (M.A.C.H. 3 hardware)", - "cobrap", "Cobra", - "cobraseg", "Cobra Command (Sega LaserDisc Hardware)", - "code1d", "Code One Dispatch (ver D)", - "code1db", "Code One Dispatch (ver B)", - "colmns97", "Columns '97 (JET 961209 V1.000)", - "colony7", "Colony 7 (set 1)", - "colony7a", "Colony 7 (set 2)", - "colorama", "Colorama (English)", - "colt", "Colt", - "columbia", "Columbia", - "columbus", "Columbus (set 1)", - "columbusa", "Columbus (set 2)", - "columbusb", "Columbus (set 3)", - "columbusc", "Columbus (set 4)", - "columbusd", "Columbus (set 5)", - "columbuse", "Columbus (set 6)", - "columbusf", "Columbus (set 7)", - "column2j", "Columns II: The Voyage Through Time (Japan)", - "columns", "Columns (World)", - "columns2", "Columns II: The Voyage Through Time (World)", - "columnsj", "Columns (Japan)", - "columnsu", "Columns (US, cocktail)", - "combat", "Combat (version 3.0)", - "combatsc", "Combat School (joystick)", - "combatscb", "Combat School (bootleg)", - "combatscj", "Combat School (Japan trackball)", - "combatsct", "Combat School (trackball)", - "combh", "Combat Hawk", - "comebaby", "Come On Baby", - "comet_l4", "Comet (L-4)", - "comet_l5", "Comet (L-5)", - "comg074", "Cal Omega - Game 7.4 (Gaming Poker, W.Export)", - "comg076", "Cal Omega - Game 7.6 (Arcade Poker)", - "comg079", "Cal Omega - Game 7.9 (Arcade Poker)", - "comg080", "Cal Omega - Game 8.0 (Arcade Black Jack)", - "comg094", "Cal Omega - Game 9.4 (Keno)", - "comg107", "Cal Omega - Game 10.7c (Big Game)", - "comg123", "Cal Omega - Game 12.3 (Ticket Poker)", - "comg125", "Cal Omega - Game 12.5 (Bingo)", - "comg127", "Cal Omega - Game 12.7 (Keno)", - "comg128", "Cal Omega - Game 12.8 (Arcade Game)", - "comg134", "Cal Omega - Game 13.4 (Nudge Bingo)", - "comg145", "Cal Omega - Game 14.5 (Pixels)", - "comg157", "Cal Omega - Game 15.7 (Double-Draw Poker)", - "comg159", "Cal Omega - Game 15.9 (Wild Double-Up)", - "comg164", "Cal Omega - Game 16.4 (Keno)", - "comg168", "Cal Omega - Game 16.8 (Keno)", - "comg172", "Cal Omega - Game 17.2 (Double Double Poker)", - "comg175", "Cal Omega - Game 17.51 (Gaming Draw Poker)", - "comg176", "Cal Omega - Game 17.6 (Nudge Bingo)", - "comg181", "Cal Omega - Game 18.1 (Nudge Bingo)", - "comg183", "Cal Omega - Game 18.3 (Pixels)", - "comg185", "Cal Omega - Game 18.5 (Pixels)", - "comg186", "Cal Omega - Game 18.6 (Pixels)", - "comg187", "Cal Omega - Game 18.7 (Amusement Poker)", - "comg204", "Cal Omega - Game 20.4 (Super Blackjack)", - "comg208", "Cal Omega - Game 20.8 (Winner's Choice)", - "comg227", "Cal Omega - Game 22.7 (Amusement Poker, d/d)", - "comg230", "Cal Omega - Game 23.0 (FC Bingo (4-card))", - "comg236", "Cal Omega - Game 23.6 (Hotline)", - "comg239", "Cal Omega - Game 23.9 (Gaming Draw Poker)", - "comg240", "Cal Omega - Game 24.0 (Gaming Draw Poker, hold)", - "comg246", "Cal Omega - Game 24.6 (Hotline)", - "comg272a", "Cal Omega - Game 27.2 (Keno, amusement)", - "comg272b", "Cal Omega - Game 27.2 (Keno, gaming)", - "comg5108", "Cal Omega - Game 51.08 (CEI Video Poker, Jacks or Better)", - "comg903d", "Cal Omega - System 903 Diag.PROM", - "comg905d", "Cal Omega - System 905 Diag.PROM", - "commando", "Commando (World)", - "commandob", "Commando (bootleg set 1)", - "commandob2", "Commando (bootleg set 2)", - "commandoj", "Senjou no Ookami", - "commandou", "Commando (US set 1)", - "commandou2", "Commando (US set 2)", - "commandw", "Command War - Super Special Battle & War Game (Ver 0.0J) (Prototype)", - "commsega", "Commando (Sega)", - "comotion", "Comotion", - "compgolf", "Competition Golf Final Round (revision 3)", - "compgolfo", "Competition Golf Final Round (old version)", - "complexx", "Complex X", - "condor", "Condor (bootleg of Phoenix)", - "coneyis", "Old Coney Island!", - "confmiss", "Confidential Mission (GDS-0001)", - "congo", "Congo Bongo (Rev C, 2 board stack)", - "congo_13", "Congo (1.3)", - "congo_20", "Congo (2.0)", - "congo_21", "Congo (2.1)", - "congoa", "Congo Bongo (Rev C, 3 board stack)", - "conquer", "Conqueror", - "contcirc", "Continental Circus (World)", - "contcircj", "Continental Circus (Japan)", - "contcircu", "Continental Circus (US set 1)", - "contcircua", "Continental Circus (US set 2)", - "contra", "Contra (US, set 1)", - "contra1", "Contra (US, set 2)", - "contrab", "Contra (bootleg)", - "contrabj", "Contra (Japan bootleg, set 1)", - "contrabj1", "Contra (Japan bootleg, set 2)", - "contraj", "Contra (Japan, set 1)", - "contraj1", "Contra (Japan, set 2)", - "cookbib", "Cookie & Bibi (set 1)", - "cookbib2", "Cookie & Bibi 2", - "cookbib3", "Cookie & Bibi 3", - "cookbiba", "Cookie & Bibi (set 2)", - "cookrace", "Cook Race", - "coolmini", "Cool Minigame Collection", - "coolpool", "Cool Pool", - "coolridr", "Cool Riders", - "coozumou", "Oozumou - The Grand Sumo (DECO Cassette, Japan)", - "cop01", "Cop 01 (set 1)", - "cop01a", "Cop 01 (set 2)", - "cops", "Cops", - "copsnrob", "Cops'n Robbers", - "coralr2", "Coral Riches II (1VXFC5472, New Zealand)", - "coronatn", "Coronation Street Quiz Game", - "coronatnd", "Coronation Street Quiz Game (Protocol)", - "corsario", "Corsario", - "corv_21", "Corvette (2.1)", - "corv_lx1", "Corvette (LX1)", - "corv_px4", "Corvette (PX4)", - "cosflash", "Cosmic Flash", - "cosmccop", "Cosmic Cop (World)", - "cosmic", "Cosmic", - "cosmica", "Cosmic Alien (version II)", - "cosmica1", "Cosmic Alien (first version)", - "cosmica2", "Cosmic Alien (early version II?)", - "cosmicg", "Cosmic Guerilla", - "cosmicgi", "Cosmic Guerilla (Spanish bootleg)", - "cosmicm2", "Cosmic Monsters 2", - "cosmicmo", "Cosmic Monsters (version II)", - "cosmo", "Cosmo", - "cosmogng", "Cosmo Gang the Video (US)", - "cosmogngj", "Cosmo Gang the Video (Japan)", - "cosmos", "Cosmos", - "cotton", "Cotton (set 4, World, FD1094 317-0181a)", - "cotton2", "Cotton 2 (JUET 970902 V1.000)", - "cottonbm", "Cotton Boomerang (JUET 980709 V1.000)", - "cottong", "Cotocoto Cottong", - "cottonj", "Cotton (set 2, Japan, Rev B, FD1094 317-0179b)", - "cottonja", "Cotton (set 1, Japan, Rev A, FD1094 317-0179a)", - "cottonu", "Cotton (set 3, US, FD1094 317-0180)", - "countdwn", "Count-Down", - "countrun", "Counter Run (NS6201-A 1988.3)", - "countrunb", "Counter Run (bootleg set 1)", - "countrunb2", "Counter Run (bootleg set 2)", - "countryc", "Country Club", - "couple", "The Couples (set 1)", - "couplei", "The Couples (set 3)", - "couplep", "The Couples (set 2)", - "cowboy", "Cowboy Eight Ball", - "cowrace", "Cow Race (King Derby hack)", - "cp_15", "The Champion Pub (1.5)", - "cp_16", "The Champion Pub (1.6)", - "cpoker", "Champion Poker (v220I)", - "cpokerpk", "Champion Italian PK (bootleg, blue board)", - "cpokerpkg", "Champion Italian PK (bootleg, green board)", - "cpokert", "Champion Poker (v200G)", - "cpokerx", "Champion Poker (v100)", - "cppicf", "Peter Pepper's Ice Cream Factory (DECO Cassette, set 1)", - "cppicf2", "Peter Pepper's Ice Cream Factory (DECO Cassette, set 2)", - "cprobowl", "Pro Bowling (DECO Cassette)", - "cprogolf", "Tournament Pro Golf (DECO Cassette)", - "cprogolf18", "18 Challenge Pro Golf (DECO Cassette, Japan)", - "cprogolfj", "Tournament Pro Golf (DECO Cassette, Japan)", - "cps3boot", "CPS3 Multi-game bootleg for HD6417095 type SH2 (New Generation, 3rd Strike, JoJo's Venture, JoJo's Bizarre Adventure, Red Earth)", - "cps3boota", "CPS3 Multi-game bootleg for dead security cart (New Generation, 2nd Impact, 3rd Strike)", - "cps3bs32", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, V3)", - "cps3bs32a", "Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, older)", - "cpsoccer", "Pro Soccer (DECO Cassette)", - "cpsoccerj", "Pro Soccer (DECO Cassette, Japan)", - "cptennis", "Pro Tennis (DECO Cassette)", - "cpthook", "Captain Hook", - "cpzn1", "ZN1", - "cpzn2", "ZN2", - "cr589fw", "CD-ROM Drive Updater 2.0 (700B04)", - "cr589fwa", "CD-ROM Drive Updater (700A04)", - "crackndj", "Crackin' DJ", - "cracksht", "Crackshot (version 2.0)", - "crakndj2", "Crackin' DJ Part 2", - "crash", "Crash", - "crater", "Crater Raider", - "crazyblk", "Crazy Blocks", - "crazycop", "Crazy Cop (Japan)", - "crazyfgt", "Crazy Fight", - "crazywar", "Crazy War", - "crbaloon", "Crazy Balloon (set 1)", - "crbaloon2", "Crazy Balloon (set 2)", - "crgolf", "Crowns Golf (834-5419-04)", - "crgolfa", "Crowns Golf (834-5419-03)", - "crgolfb", "Crowns Golf (set 3)", - "crgolfbt", "Champion Golf (bootleg)", - "crgolfc", "Champion Golf", - "crgolfhi", "Crowns Golf in Hawaii", - "crimec", "Crime City (World)", - "crimecj", "Crime City (Japan)", - "crimecu", "Crime City (US)", - "crimep2", "Crime Patrol 2: Drug Wars v1.3", - "crimep211", "Crime Patrol 2: Drug Wars v1.1", - "crimepat", "Crime Patrol v1.4", - "crimfght", "Crime Fighters (US 4 players)", - "crimfght2", "Crime Fighters (World 2 Players)", - "crimfghtj", "Crime Fighters (Japan 2 Players)", - "crisscrs", "Criss Cross (Sweden)", - "critcrsh", "Critter Crusher (EA 951204 V1.000)", - "crkdown", "Crack Down (World, Floppy Based, FD1094 317-0058-04c)", - "crkdownj", "Crack Down (Japan, Floppy Based, FD1094 317-0058-04b Rev A)", - "crkdownu", "Crack Down (US, Floppy Based, FD1094 317-0058-04d)", - "crockman", "Crock-Man", - "croquis", "Croquis (Germany)", - "crospang", "Cross Pang", - "crossbld", "Cross Blades! (Japan)", - "crossbow", "Crossbow (version 2.0)", - "croupier", "Croupier (Playmark Roulette v.20.05)", - "croupiera", "Croupier (Playmark Roulette v.09.04)", - "crsbingo", "Poker Carnival", - "crshnscr", "Crash 'n Score [TTL]", - "crshrace", "Lethal Crash Race (set 1)", - "crshrace2", "Lethal Crash Race (set 2)", - "crsword", "Crossed Swords (ALM-002)(ALH-002)", - "crszone", "Crisis Zone (CSZO4 Ver. B)", - "crszonev2a", "Crisis Zone (CSZO2 Ver. A)", - "crszonev3a", "Crisis Zone (CSZO3 Ver. A)", - "crszonev3b", "Crisis Zone (CSZO3 Ver. B, set 1)", - "crszonev3b2", "Crisis Zone (CSZO3 Ver. B, set 2)", - "crszonev4a", "Crisis Zone (CSZO4 Ver. A)", - "crtaxihr", "Crazy Taxi High Roller (Rev B) (GDX-0002B)", - "cruisin", "Cruisin", - "crush", "Crush Roller (set 1)", - "crush2", "Crush Roller (set 2)", - "crush3", "Crush Roller (set 3)", - "crush4", "Crush Roller (set 4)", - "crushbl", "Crush Roller (bootleg set 1)", - "crushbl2", "Crush Roller (bootleg set 2)", - "crushbl3", "Crush Roller (bootleg set 3)", - "crusherm", "Crusher Makochan (Japan)", - "crushs", "Crush Roller (bootleg set 4)", - "crusnexo", "Cruis'n Exotica (version 2.4)", - "crusnexoa", "Cruis'n Exotica (version 2.0)", - "crusnexob", "Cruis'n Exotica (version 1.6)", - "crusnexoc", "Cruis'n Exotica (version 1.3)", - "crusnexod", "Cruis'n Exotica (version 1.0)", - "crusnusa", "Cruis'n USA (rev L4.1)", - "crusnusa21", "Cruis'n USA (rev L2.1)", - "crusnusa40", "Cruis'n USA (rev L4.0)", - "crusnwld", "Cruis'n World (rev L2.5)", - "crusnwld13", "Cruis'n World (rev L1.3)", - "crusnwld17", "Cruis'n World (rev L1.7)", - "crusnwld19", "Cruis'n World (rev L1.9)", - "crusnwld20", "Cruis'n World (rev L2.0)", - "crusnwld23", "Cruis'n World (rev L2.3)", - "crusnwld24", "Cruis'n World (rev L2.4)", - "cryptklr", "Crypt Killer (GQ420 UAA)", - "crysbios", "Crystal System BIOS", - "crysking", "The Crystal of Kings", - "crystal", "Crystal Colours (CMC hardware)", - "crystal2", "Crystal Gal 2 (Japan 860620)", - "crystalc", "Crystals Colours (Ver 1.01)", - "crystalg", "Crystal Gal (Japan 860512)", - "crystals", "Crystal Springs (10155811, Malaysia)", - "crzmon2", "Crazy Monkey 2 (100310)", - "crzmon2_2", "Crazy Monkey 2 (100311 Lottery)", - "crzmon2_3", "Crazy Monkey 2 (100315 Entertainment)", - "crzrally", "Crazy Rally (set 1)", - "crzrallya", "Crazy Rally (set 2)", - "crzrallyg", "Crazy Rally (Gecas license)", - "crzytaxi", "Crazy Taxi (JPN, USA, EXP, KOR, AUS)", - "csclub", "Capcom Sports Club (Euro 971017)", - "csclub1", "Capcom Sports Club (Euro 970722)", - "csclub1d", "Capcom Sports Club (Euro 970722 Phoenix Edition) (bootleg)", - "cscluba", "Capcom Sports Club (Asia 970722)", - "csclubh", "Capcom Sports Club (Hispanic 970722)", - "csclubj", "Capcom Sports Club (Japan 970722)", - "csclubjy", "Capcom Sports Club (Japan 970722, yellow case)", - "cscrtry", "Scrum Try (DECO Cassette, set 1)", - "cscrtry2", "Scrum Try (DECO Cassette, set 2)", - "csdtenis", "Super Doubles Tennis (DECO Cassette, Japan)", - "cshift", "Chicken Shift", - "cshooter", "Cross Shooter (not encrypted)", - "cshootere", "Cross Shooter (encrypted)", - "csilver", "Captain Silver (World)", - "csilverj", "Captain Silver (Japan)", - "csk227it", "Champion Skill (with Ability)", - "csk234it", "Champion Skill (Ability, Poker & Symbols)", - "cskater", "Skater (DECO Cassette, Japan)", - "csmash", "Cosmic Smash (JPN, USA, EXP, KOR, AUS) (Rev A)", - "csmasho", "Cosmic Smash (JPN, USA, EXP, KOR, AUS)", - "csmic_l1", "Cosmic Gunfight (L-1)", - "cspike", "Gun Spike (JPN) / Cannon Spike (USA, EXP, KOR, AUS)", - "csplayh1", "Super CD Dai8dan Mahjong Hanafuda Cosplay Tengoku (Japan)", - "csplayh5", "Mahjong Hanafuda Cosplay Tengoku 5 (Japan)", - "csplayh7", "Cosplay Tengoku 7 - Super Kogal Grandprix (Japan)", - "csprint", "Championship Sprint (rev 3)", - "csprint1", "Championship Sprint (rev 1)", - "csprint2", "Championship Sprint (rev 2)", - "csprintf", "Championship Sprint (French)", - "csprintg", "Championship Sprint (German, rev 2)", - "csprintg1", "Championship Sprint (German, rev 1)", - "csprints", "Championship Sprint (Spanish, rev 2)", - "csprints1", "Championship Sprint (Spanish, rev 1)", - "cstlevna", "Vs. Castlevania", - "cstripxi", "Casino Strip XI", - "csuperas", "Super Astro Fighter (DECO Cassette)", - "cswat", "Cosmoswat", - "csweetht", "Sweet Heart (DECO Cassette)", - "ct2k3sa", "Crouching Tiger Hidden Dragon 2003 Super Plus alternate (The King of Fighters 2001 bootleg)", - "ct2k3sp", "Crouching Tiger Hidden Dragon 2003 Super Plus (The King of Fighters 2001 bootleg)", - "ctcheese", "Cut The Cheese (Redemption)", - "ctchzdlx", "Cut The Cheese Deluxe (Redemption)", - "cterrani", "Terranean (DECO Cassette)", - "cthd2003", "Crouching Tiger Hidden Dragon 2003 (The King of Fighters 2001 bootleg)", - "ctisland", "Treasure Island (DECO Cassette, set 1)", - "ctisland2", "Treasure Island (DECO Cassette, set 2)", - "ctisland3", "Treasure Island (DECO Cassette, set 3)", - "ctomaday", "Captain Tomaday", - "ctornado", "Tornado (DECO Cassette)", - "ctribe", "The Combatribes (US)", - "ctribe1", "The Combatribes (US set 1?)", - "ctribeb", "The Combatribes (bootleg set 1)", - "ctribeb2", "The Combatribes (bootleg set 2)", - "ctribej", "The Combatribes (Japan)", - "ctrpllrp", "Caterpillar Pacman Hack", - "ctsttape", "Test Tape (DECO Cassette)", - "cubeqst", "Cube Quest (01/04/84)", - "cubeqsta", "Cube Quest (12/30/83)", - "cubybop", "Cuby Bop (location test)", - "cueball", "Cue Ball Wizard", - "cuebrick", "Cue Brick (World version D)", - "cuebrickj", "Cue Brick (Japan)", - "cultname", "Seimei-Kantei-Meimei-Ki Cult Name", - "cultures", "Jibun wo Migaku Culture School Mahjong Hen", - "cuoreuno", "Cuore 1 (Italian)", - "cupfinal", "Taito Cup Finals (Ver 1.0O 1993/02/28)", - "cupsoc", "Seibu Cup Soccer (set 1)", - "cupsoca", "Seibu Cup Soccer (set 2)", - "cupsocb", "Seibu Cup Soccer (set 3)", - "cupsocs", "Seibu Cup Soccer :Selection: (set 1)", - "cupsocs2", "Seibu Cup Soccer :Selection: (set 2)", - "cupsocsb", "Seibu Cup Soccer :Selection: (bootleg, set 1)", - "cupsocsb2", "Seibu Cup Soccer :Selection: (bootleg, set 2)", - "cupsocsb3", "Seibu Cup Soccer :Selection: (bootleg, set 3)", - "curvebal", "Curve Ball", - "cutieq", "Cutie Q", - "cv_10", "Cirqus Voltaire (1.0)", - "cv_11", "Cirqus Voltaire (1.1)", - "cv_13", "Cirqus Voltaire (1.3)", - "cv_14", "Cirqus Voltaire (1.4)", - "cv_20h", "Cirqus Voltaire (2.0H)", - "cvs2gd", "Capcom Vs. SNK 2 Millionaire Fighting 2001 (Rev A) (GDL-0007A)", - "cvsgd", "Capcom Vs. SNK Millennium Fight 2000 Pro (GDL-0004)", - "cworld", "Capcom World (Japan)", - "cworld2j", "Adventure Quiz Capcom World 2 (Japan 920611)", - "cybattlr", "Cybattler", - "cyberbal", "Cyberball (rev 4)", - "cyberbal2", "Cyberball (rev 2)", - "cyberbal2p", "Cyberball 2072 (2 player, rev 4)", - "cyberbal2p1", "Cyberball 2072 (2 player, rev 1)", - "cyberbal2p2", "Cyberball 2072 (2 player, rev 2)", - "cyberbal2p3", "Cyberball 2072 (2 player, rev 3)", - "cyberbalp", "Cyberball (prototype)", - "cyberbalt", "Tournament Cyberball 2072 (rev 2)", - "cyberbalt1", "Tournament Cyberball 2072 (rev 1)", - "cyberlip", "Cyber-Lip (NGM-010)", - "cybertnk", "Cyber Tank (v1.4)", - "cybots", "Cyberbots: Fullmetal Madness (Euro 950424)", - "cybotsj", "Cyberbots: Fullmetal Madness (Japan 950420)", - "cybotsjd", "Cyberbots: Fullmetal Madness (Japan 950424) (decrypted bootleg)", - "cybotsu", "Cyberbots: Fullmetal Madness (USA 950424)", - "cybotsud", "Cyberbots: Fullmetal Madness (USA 950424 Phoenix Edition) (bootleg)", - "cybrcomm", "Cyber Commando (Rev. CY1, Japan)", - "cybrcycc", "Cyber Cycles (Rev. CB2 Ver.C)", - "cybrnaut", "Cybernaut", - "cybsled", "Cyber Sled (World)", - "cybsledj", "Cyber Sled (Japan)", - "cyclemb", "Cycle Maabou (Japan)", - "cycln_l4", "Cyclone (L-4)", - "cycln_l5", "Cyclone (L-5)", - "cyclopes", "Cyclopes", - "cyclshtg", "Cycle Shooting", - "cyclwarr", "Cycle Warriors (set 1)", - "cyclwarra", "Cycle Warriors (set 2)", - "cyvern", "Cyvern (US)", - "cyvernj", "Cyvern (Japan)", - "czeroize", "Zeroize (DECO Cassette)", - "czmon_13", "Crazy Monkey (100311 World)", - "czmon_15", "Crazy Monkey (100311 Entertainment)", - "czmon_16", "Crazy Monkey (100312 Russia)", - "czmon_5", "Crazy Monkey (030421 World)", - "czmon_7", "Crazy Monkey (031110 World)", - "czmon_7a", "Crazy Monkey (bootleg, 031110, backdoor set 1)", - "czmon_7b", "Crazy Monkey (bootleg, 031110, backdoor set 2)", - "czmon_8", "Crazy Monkey (050120 World)", - "czmon_8a", "Crazy Monkey (bootleg, 050120, backdoor)", - "czmon_8b", "Crazy Monkey (bootleg, 050120, changed version text)", - "czmon_8c", "Crazy Monkey (bootleg, 050120, VIDEO GAME-1 CM01)", - "czmon_8d", "Crazy Monkey (bootleg, 050120, LOTTOGAME (I))", - "czmon_8e", "Crazy Monkey (bootleg, 050120, LOTO PROGRAM V-CM2)", - "czmon_8f", "Crazy Monkey (bootleg, 050120, LOTOS CM01)", - "czmon_9", "Crazy Monkey (070315 Russia)", - "czmon_9a", "Crazy Monkey (bootleg, 070315, VIDEO GAME-1 O01 set 1)", - "czmon_9b", "Crazy Monkey (bootleg, 070315, VIDEO GAME-1 O01 set 2)", - "czmon_9c", "Crazy Monkey (bootleg, 070315, payout percentage 70)", - "d9final", "Dream 9 Final (v2.24)", - "dacholer", "Dacholer", - "dadandrn", "Kyukyoku Sentai Dadandarn (ver JAA)", - "dai2kaku", "Dai-Dai-Kakumei (Japan)", - "dai3wksi", "Dai San Wakusei Meteor (Japan)", - "daikaiju", "Daikaiju no Gyakushu", - "daimakai", "Daimakaimura (Japan)", - "daimakair", "Daimakaimura (Japan Resale Ver.)", - "daimyojn", "Mahjong Daimyojin (Japan, T017-PB-00)", - "daioh", "Daioh (set 1)", - "daioha", "Daioh (set 2)", - "daireika", "Mahjong Daireikai (Japan)", - "dairesya", "Dai Ressya Goutou (Japan)", - "daisenpu", "Daisenpu (Japan)", - "daiskiss", "Daisu-Kiss (ver JAA)", - "daisyari", "Daisyarin [BET] (Japan)", - "daitorid", "Daitoride", - "daitorida", "Daitoride (YMF278B version)", - "daiyogen", "Mahjong Daiyogen (Japan)", - "dakar", "Dakar", - "dakkochn", "DakkoChan House (MC-8123B, 317-5014)", - "dambustr", "Dambusters (US, set 1)", - "dambustra", "Dambusters (US, set 2)", - "dambustruk", "Dambusters (UK)", - "danceyes", "Dancing Eyes (US, DC3/VER.C)", - "danceyesj", "Dancing Eyes (Japan, DC1/VER.A)", - "danchih", "Danchi de Hanafuda (J 990607 V1.400)", - "danchiq", "Danchi de Quiz Okusan Yontaku Desuyo! (J 001128 V1.200)", - "dangar", "Ufo Robo Dangar (12/1/1986)", - "dangar2", "Ufo Robo Dangar (9/26/1986)", - "dangarb", "Ufo Robo Dangar (bootleg)", - "dangcurv", "Dangerous Curves (Ver 2.2 J)", - "dangerz", "Danger Zone", - "dangseed", "Dangerous Seed (Japan)", - "dankuga", "Dan-Ku-Ga (Ver 0.0J 1994/12/13) (Prototype)", - "daraku", "Daraku Tenshi - The Fallen Angels", - "darius", "Darius (World)", - "darius2", "Darius II (triple screen) (Japan)", - "darius2d", "Darius II (dual screen) (Japan, Rev 2)", - "darius2do", "Darius II (dual screen) (Japan, Rev 1)", - "dariuse", "Darius (Extra) (Japan)", - "dariusg", "Darius Gaiden - Silver Hawk (Ver 2.5O 1994/09/19)", - "dariusgj", "Darius Gaiden - Silver Hawk (Ver 2.5J 1994/09/19)", - "dariusgu", "Darius Gaiden - Silver Hawk (Ver 2.5A 1994/09/19)", - "dariusgx", "Darius Gaiden - Silver Hawk Extra Version (Ver 2.7J 1995/03/06) (Official Hack)", - "dariusj", "Darius (Japan)", - "dariuso", "Darius (Japan old version)", - "darkadv", "Dark Adventure", - "darkedge", "Dark Edge (World)", - "darkedgej", "Dark Edge (Japan)", - "darkhleg", "Dark Horse Legend (GX706 VER. JAA)", - "darkhors", "Dark Horse (bootleg of Jockey Club II)", - "darkmist", "The Lost Castle In Darkmist", - "darkplnt", "Dark Planet", - "darkseal", "Dark Seal (World revision 3)", - "darkseal1", "Dark Seal (World revision 1)", - "darkseal2", "Dark Seal 2 (Japan v2.1)", - "darksealj", "Dark Seal (Japan revision 4)", - "darkshad", "Dark Shadow", - "darktowr", "Dark Tower", - "darkwar", "Dark Warrior", - "darthvdr", "Darth Vader (bootleg of Space Invaders)", - "darwin", "Darwin 4078 (Japan)", - "dassault", "Desert Assault (US)", - "dassault4", "Desert Assault (US 4 Players)", - "dayto2pe", "Daytona USA 2 Power Edition", - "daytona", "Daytona USA (Japan, Revision A)", - "daytona2", "Daytona USA 2 (Revision A)", - "daytona93", "Daytona USA Deluxe '93", - "daytonam", "Daytona USA (Japan, To The MAXX)", - "daytonas", "Daytona USA (With Saturn Adverts)", - "daytonase", "Daytona USA Special Edition (Japan, Revision A)", - "daytonat", "Daytona USA (Japan, Turbo hack, set 1)", - "daytonata", "Daytona USA (Japan, Turbo hack, set 2)", - "dazzler", "Dazzler", - "dbc", "Da Ban Cheng (Hong Kong, V027H)", - "dblaxle", "Double Axle (US)", - "dblaxleu", "Double Axle (US, earlier)", - "dblchal", "Double Challenge (Version 1.5R, set 1)", - "dblchalc1", "Double Challenge (Version 1.5R, set 2)", - "dblchald1", "Double Challenge (Version 1.5R, set 3)", - "dblchalo", "Double Challenge (Version 1.1)", - "dblchalv1", "Double Challenge (Version 1.5R Dual)", - "dblcrown", "Double Crown (v1.0.3)", - "dbldynj", "The Double Dynamites (Japan)", - "dbldynu", "The Double Dynamites (US)", - "dblewing", "Double Wings", - "dblplay", "Super Baseball Double Play Home Run Derby", - "dblpoint", "Double Point", - "dblpointd", "Double Point (Dong Bang Electron, bootleg?)", - "dbreed", "Dragon Breed (M81 PCB version)", - "dbreedm72", "Dragon Breed (M72 PCB version)", - "dbz", "Dragonball Z (rev B)", - "dbz2", "Dragonball Z 2 - Super Battle", - "dbza", "Dragonball Z (rev A)", - "dbzvrvs", "Dragon Ball Z V.R.V.S. (Japan)", - "dcclub", "Dynamic Country Club (World, ROM Based)", - "dcclubfd", "Dynamic Country Club (US, Floppy Based, FD1094 317-0058-09d)", - "dcclubj", "Dynamic Country Club (Japan, ROM Based)", - "dcheese", "Double Cheese", - "dcon", "D-Con", - "dcrown", "Dream Crown (Set 1)", - "dcrowna", "Dream Crown (Set 2)", - "dd_l2", "Dr. Dude (LA-2)", - "dd_p06", "Dr. Dude (PA-6 WPC)", - "dd_p6", "Dr. Dude (PA-6)", - "dd_p7", "Dr. Dude (PA-7 WPC)", - "dday", "D-Day", - "ddayc", "D-Day (Centuri)", - "ddayjlc", "D-Day (Jaleco set 1)", - "ddayjlca", "D-Day (Jaleco set 2)", - "ddcrew", "D. D. Crew (World, 3 Players, FD1094 317-0190)", - "ddcrew1", "D. D. Crew (World, 4 Players, FD1094 317-0187)", - "ddcrew2", "D. D. Crew (World, 2 Players, FD1094 317-0184)", - "ddcrewj", "D. D. Crew (Japan, 4 Players, FD1094 317-0185)", - "ddcrewj2", "D. D. Crew (Japan, 2 Players, FD1094 317-0182)", - "ddcrewu", "D. D. Crew (US, 4 Players, FD1094 317-0186)", - "ddealer", "Double Dealer", - "ddenlovj", "Don Den Lover Vol. 1 - Shiro Kuro Tsukeyo! (Japan)", - "ddenlovr", "Don Den Lover Vol. 1 (Hong Kong)", - "ddenlovrb", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea, bootleg)", - "ddenlovrk", "Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea)", - "ddonpach", "DoDonPachi (International, Master Ver. 97/02/05)", - "ddonpachj", "DoDonPachi (Japan, Master Ver. 97/02/05)", - "ddp2", "DoDonPachi II - Bee Storm (World, ver. 102)", - "ddp2100", "DoDonPachi II - Bee Storm (World, ver. 100)", - "ddp2100c", "DoDonPachi II - Bee Storm (China, ver. 100)", - "ddp2100hk", "DoDonPachi II - Bee Storm (Hong Kong, ver. 100)", - "ddp2100j", "DoDonPachi II - Bee Storm (Japan, ver. 100)", - "ddp2100k", "DoDonPachi II - Bee Storm (Korea, ver. 100)", - "ddp2100t", "DoDonPachi II - Bee Storm (Taiwan, ver. 100)", - "ddp2101", "DoDonPachi II - Bee Storm (World, ver. 101)", - "ddp2101c", "DoDonPachi II - Bee Storm (China, ver. 101)", - "ddp2101hk", "DoDonPachi II - Bee Storm (Hong Kong, ver. 101)", - "ddp2101j", "DoDonPachi II - Bee Storm (Japan, ver. 101)", - "ddp2101k", "DoDonPachi II - Bee Storm (Korea, ver. 101)", - "ddp2101t", "DoDonPachi II - Bee Storm (Taiwan, ver. 101)", - "ddp2c", "DoDonPachi II - Bee Storm (China, ver. 102)", - "ddp2hk", "DoDonPachi II - Bee Storm (Hong Kong, ver. 102)", - "ddp2j", "DoDonPachi II - Bee Storm (Japan, ver. 102)", - "ddp2k", "DoDonPachi II - Bee Storm (Korea, ver. 102)", - "ddp2t", "DoDonPachi II - Bee Storm (Taiwan, ver. 102)", - "ddpdfk", "DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23 MASTER VER 1.5)", - "ddpdfk10", "DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16 MASTER VER)", - "ddpdoj", "DoDonPachi Dai-Ou-Jou V101 (2002.04.05.Master Ver)", - "ddpdoja", "DoDonPachi Dai-Ou-Jou V100 (2002.04.05.Master Ver)", - "ddpdojb", "DoDonPachi Dai-Ou-Jou (2002.04.05 Master Ver)", - "ddpdojblk", "DoDonPachi Dai-Ou-Jou (2002.10.07.Black Ver)", - "ddpdojblka", "DoDonPachi Dai-Ou-Jou (2002.10.07 Black Ver)", - "ddpdojh", "Dodonpachi Daioujou Tamashii (V201, China)", - "ddr2m", "Dance Dance Revolution 2nd Mix (GN895 VER. JAA)", - "ddr2mc", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX CLUB VERSiON (GE896 VER. JAA)", - "ddr2mc2", "Dance Dance Revolution 2nd Mix with beatmaniaIIDX substream CLUB VERSiON 2 (GE984 VER. JAA)", - "ddr2ml", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAB)", - "ddr2mla", "Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAA)", - "ddr3ma", "Dance Dance Revolution 3rd Mix (GN887 VER. AAA)", - "ddr3mj", "Dance Dance Revolution 3rd Mix (GN887 VER. JAA)", - "ddr3mk", "Dance Dance Revolution 3rd Mix - Ver.Korea2 (GN887 VER. KBA)", - "ddr3mka", "Dance Dance Revolution 3rd Mix - Ver.Korea (GN887 VER. KAA)", - "ddr3mp", "Dance Dance Revolution 3rd Mix Plus (G*A22 VER. JAA)", - "ddr4m", "Dance Dance Revolution 4th Mix (G*A33 VER. AAA)", - "ddr4mj", "Dance Dance Revolution 4th Mix (G*A33 VER. JAA)", - "ddr4mp", "Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA)", - "ddr4mps", "Dance Dance Revolution 4th Mix Plus Solo (G*A34 VER. JBA)", - "ddr4ms", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. ABA)", - "ddr4msj", "Dance Dance Revolution 4th Mix Solo (G*A33 VER. JBA)", - "ddr5m", "Dance Dance Revolution 5th Mix (G*A27 VER. JAA)", - "ddra", "Dance Dance Revolution (GN845 VER. AAA)", - "ddragon", "Double Dragon (Japan)", - "ddragon2", "Double Dragon II - The Revenge (World)", - "ddragon2u", "Double Dragon II - The Revenge (US)", - "ddragon3", "Double Dragon 3 - The Rosetta Stone (US)", - "ddragon3b", "Double Dragon 3 - The Rosetta Stone (bootleg)", - "ddragon3j", "Double Dragon 3 - The Rosetta Stone (Japan)", - "ddragon3p", "Double Dragon 3 - The Rosetta Stone (prototype)", - "ddragon6809", "Double Dragon (bootleg with 3xM6809, set 1)", - "ddragon6809a", "Double Dragon (bootleg with 3xM6809, set 2)", - "ddragonb", "Double Dragon (bootleg with HD6309)", - "ddragonb2", "Double Dragon (bootleg)", - "ddragonba", "Double Dragon (bootleg with M6803)", - "ddragonu", "Double Dragon (US set 1)", - "ddragonua", "Double Dragon (US set 2)", - "ddragonub", "Double Dragon (US set 3)", - "ddragonw", "Double Dragon (World set 1)", - "ddragonw1", "Double Dragon (World set 2)", - "ddrbocd", "Dance Dance Revolution Best of Cool Dancers (GE892 VER. JAA)", - "ddream95", "Dunk Dream '95 (Japan 1.4, EAM)", - "ddrextrm", "Dance Dance Revolution Extreme (G*C36 VER. JAA)", - "ddribble", "Double Dribble", - "ddribblep", "Double Dribble (prototype?)", - "ddrj", "Dance Dance Revolution - Internet Ranking Ver (GC845 VER. JBA)", - "ddrja", "Dance Dance Revolution (GC845 VER. JAA)", - "ddrjb", "Dance Dance Revolution (GC845 VER. JAB)", - "ddrmax", "DDR Max - Dance Dance Revolution 6th Mix (G*B19 VER. JAA)", - "ddrmax2", "DDR Max 2 - Dance Dance Revolution 7th Mix (G*B20 VER. JAA)", - "ddrs2k", "Dance Dance Revolution Solo 2000 (GC905 VER. AAA)", - "ddrs2kj", "Dance Dance Revolution Solo 2000 (GC905 VER. JAA)", - "ddrsbm", "Dance Dance Revolution Solo Bass Mix (GQ894 VER. JAA)", - "ddru", "Dance Dance Revolution (GN845 VER. UAA)", - "ddrusa", "Dance Dance Revolution USA (G*A44 VER. UAA)", - "ddsom", "Dungeons & Dragons: Shadow over Mystara (Euro 960619)", - "ddsoma", "Dungeons & Dragons: Shadow over Mystara (Asia 960619)", - "ddsomb", "Dungeons & Dragons: Shadow over Mystara (Brazil 960223)", - "ddsomh", "Dungeons & Dragons: Shadow over Mystara (Hispanic 960223)", - "ddsomj", "Dungeons & Dragons: Shadow over Mystara (Japan 960619)", - "ddsomjr1", "Dungeons & Dragons: Shadow over Mystara (Japan 960206)", - "ddsomr1", "Dungeons & Dragons: Shadow over Mystara (Euro 960223)", - "ddsomr2", "Dungeons & Dragons: Shadow over Mystara (Euro 960209)", - "ddsomr3", "Dungeons & Dragons: Shadow over Mystara (Euro 960208)", - "ddsomu", "Dungeons & Dragons: Shadow over Mystara (USA 960619)", - "ddsomud", "Dungeons & Dragons: Shadow over Mystara (USA 960619 Phoenix Edition) (bootleg)", - "ddsomur1", "Dungeons & Dragons: Shadow over Mystara (USA 960209)", - "ddtod", "Dungeons & Dragons: Tower of Doom (Euro 940412)", - "ddtoda", "Dungeons & Dragons: Tower of Doom (Asia 940412)", - "ddtodar1", "Dungeons & Dragons: Tower of Doom (Asia 940113)", - "ddtodd", "Dungeons & Dragons: Tower of Doom (Euro 940412 Phoenix Edition) (bootleg)", - "ddtodh", "Dungeons & Dragons: Tower of Doom (Hispanic 940412)", - "ddtodhr1", "Dungeons & Dragons: Tower of Doom (Hispanic 940125)", - "ddtodhr2", "Dungeons & Dragons: Tower of Doom (Hispanic 940113)", - "ddtodj", "Dungeons & Dragons: Tower of Doom (Japan 940412)", - "ddtodjr1", "Dungeons & Dragons: Tower of Doom (Japan 940125)", - "ddtodjr2", "Dungeons & Dragons: Tower of Doom (Japan 940113)", - "ddtodr1", "Dungeons & Dragons: Tower of Doom (Euro 940113)", - "ddtodu", "Dungeons & Dragons: Tower of Doom (USA 940125)", - "ddtodur1", "Dungeons & Dragons: Tower of Doom (USA 940113)", - "ddungeon", "Dangerous Dungeons (set 1)", - "ddungeone", "Dangerous Dungeons (set 2)", - "ddux", "Dynamite Dux (set 3, World, FD1094 317-0096)", - "ddux1", "Dynamite Dux (set 1, 8751 317-0095)", - "dduxbl", "Dynamite Dux (Datsu bootleg)", - "dduxj", "Dynamite Dux (set 2, Japan, FD1094 317-0094)", - "ddz", "Dou Di Zhu", - "deadang", "Dead Angle", - "deadconx", "Dead Connection (World)", - "deadconxj", "Dead Connection (Japan)", - "deadeye", "Dead Eye", - "deadweap", "Deadly Weapon", - "dealer", "The Dealer", - "deathbrd", "Death Brade (Japan ver JM-3)", - "deathcox", "Death Crimson OX (JPN, USA, EXP, KOR, AUS)", - "deathrac", "Death Race [TTL]", - "deathsm2", "Deathsmiles II: Makai no Merry Christmas (2009/10/14 MASTER VER 4.00)", - "deathsml", "Deathsmiles (2007/10/09 MASTER VER)", - "decathlt", "Decathlete (JUET 960709 V1.001)", - "decathlto", "Decathlete (JUET 960424 V1.000)", - "decocass", "DECO Cassette System", - "deerhunt", "Deer Hunting USA V4.3", - "deerhunta", "Deer Hunting USA V4.2", - "deerhuntb", "Deer Hunting USA V4.0", - "deerhuntc", "Deer Hunting USA V3", - "deerhuntd", "Deer Hunting USA V2", - "deerhunte", "Deer Hunting USA V1", - "defcmnd", "Defense Command (Defender bootleg)", - "defence", "Defence Command (Defender bootleg)", - "defender", "Defender (Red label)", - "defenderb", "Defender (Blue label)", - "defenderg", "Defender (Green label)", - "defenderw", "Defender (White label)", - "defense", "Defense (System 16B, FD1089A 317-0028)", - "defndjeu", "Defender (bootleg)", - "deltrace", "Delta Race", - "deluxe5", "Deluxe 5 (ver. 0107, 07/01/2000, set 1)", - "deluxe5a", "Deluxe 5 (ver. 0107, 07/01/2000, set 2)", - "deluxe5b", "Deluxe 5 (ver. 0107, 07/01/2000, set 3)", - "demndrgn", "Demons & Dragons (prototype)", - "demoderb", "Demolition Derby", - "demoderbc", "Demolition Derby (cocktail)", - "demoderm", "Demolition Derby (MCR-3 Mono Board Version)", - "demofist", "Demolish Fist", - "demon", "Demon", - "demoneye", "Demoneye-X", - "demonwld", "Demon's World / Horror Story (set 1)", - "demonwld1", "Demon's World / Horror Story (set 2)", - "demonwld2", "Demon's World / Horror Story (set 3)", - "demonwld3", "Demon's World / Horror Story (set 4)", - "dendego", "Densha de GO! (Ver 2.2 J)", - "dendego2", "Densha de GO! 2 Kousoku-hen (Ver 2.5 J)", - "dendego23k", "Densha de GO! 2 Kousoku-hen 3000-bandai (Ver 2.20 J)", - "dendegox", "Densha de GO! EX (Ver 2.4 J)", - "denjinmk", "Denjin Makai", - "denseib", "Ghost Chaser Densei (SNES bootleg)", - "depthch", "Depthcharge", - "depthcho", "Depthcharge (older)", - "derbyo2k", "Derby Owners Club 2000 (Rev A)", - "derbyoc", "Derby Owners Club (JPN, USA, EXP, KOR, AUS) (Rev B)", - "derbyoc2", "Derby Owners Club II (JPN, USA, EXP, KOR, AUS) (Rev B)", - "derbyocw", "Derby Owners Club World Edition (JPN, USA, EXP, KOR, AUS) (Rev D)", - "deroon", "Deroon DeroDero", - "desert", "Desert Tank", - "desertbr", "Desert Breaker (World, FD1094 317-0196)", - "desertbrj", "Desert Breaker (Japan, FD1094 317-0194)", - "desertdn", "Desert Dan", - "desertgu", "Desert Gun", - "desertwr", "Desert War / Wangan Sensou", - "destdrby", "Destruction Derby [TTL]", - "desterth", "Destination Earth (bootleg of Lunar Rescue)", - "destiny", "Destiny - The Fortuneteller (USA)", - "destroyr", "Destroyer (version O2)", - "destroyr1", "Destroyer (version O1)", - "destryer", "Destroyer (Cidelsa) (set 1)", - "destryera", "Destroyer (Cidelsa) (set 2)", - "detatwin", "Detana!! Twin Bee (Japan ver. J)", - "detest", "Data East Test Chip", - "deucesw2", "Deuces Wild 2 - American Heritage (Ver. 2.02F)", - "devilfsg", "Devil Fish (Galaxian hardware, bootleg?)", - "devilfsh", "Devil Fish", - "devilw", "Devil World", - "devstors", "Devastators (ver. Z)", - "devstors2", "Devastators (ver. X)", - "devstors3", "Devastators (ver. V)", - "devzone", "Devil Zone", - "devzone2", "Devil Zone (easier)", - "df_djpkr", "Double Joker Poker (45%-75% payout)", - "dfeveron", "Dangun Feveron (Japan, Ver. 98/09/17)", - "dfndr_l4", "Defender (L-4)", - "dfruit", "Fruit Dream (Japan)", - "dh_lx2", "Dirty Harry (LX-2)", - "dharma", "Dharma Doujou", - "dharmak", "Dharma Doujou (Korea)", - "diamond", "Diamond Run", - "diamondp", "Diamond Lady", - "diehard", "Die Hard Arcade (UET 960515 V1.000)", - "dietgo", "Diet Go Go (Euro v1.1 1992.09.26)", - "dietgoe", "Diet Go Go (Euro v1.1 1992.08.04)", - "dietgoj", "Diet Go Go (Japan v1.1 1992.09.26)", - "dietgou", "Diet Go Go (USA v1.1 1992.09.26)", - "digdug", "Dig Dug (rev 2)", - "digdug1", "Dig Dug (rev 1)", - "digdug2", "Dig Dug II (New Ver.)", - "digdug2o", "Dig Dug II (Old Ver.)", - "digdugat", "Dig Dug (Atari, rev 2)", - "digdugat1", "Dig Dug (Atari, rev 1)", - "digger", "Digger", - "diggerc", "Digger (CVS)", - "diggerma", "Digger Man (prototype)", - "digsid", "Dig Dug (manufactured by Sidam)", - "dimahoo", "Dimahoo (Euro 000121)", - "dimahoou", "Dimahoo (USA 000121)", - "dimahoud", "Dimahoo (USA 000121 Phoenix Edition) (bootleg)", - "diner_l1", "Diner (L-1) Europe", - "diner_l3", "Diner (L-3)", - "diner_l4", "Diner (L-4)", - "dingo", "Dingo", - "dingoe", "Dingo (encrypted)", - "dino", "Cadillacs and Dinosaurs (World 930201)", - "dinoeggs", "Dinosaur Eggs", - "dinohunt", "Dinosaur Hunter (Chinese bootleg of Cadillacs and Dinosaurs)", - "dinoj", "Cadillacs: Kyouryuu Shin Seiki (Japan 930201)", - "dinopic", "Cadillacs and Dinosaurs (bootleg with PIC16c57, set 1)", - "dinopic2", "Cadillacs and Dinosaurs (bootleg with PIC16c57, set 2)", - "dinorex", "Dino Rex (World)", - "dinorexj", "Dino Rex (Japan)", - "dinorexu", "Dino Rex (US)", - "dinou", "Cadillacs and Dinosaurs (USA 930201)", - "dirtdash", "Dirt Dash (Rev. DT2)", - "dirtdvls", "Dirt Devils (set 1) (Revision A)", - "dirtdvlsa", "Dirt Devils (set 2) (Revision A)", - "dirtfoxj", "Dirt Fox (Japan)", - "dirtypig", "Dirty Pigskin Football", - "disco", "Disco No.1", - "disco79", "Disco '79", - "disco_l1", "Disco Fever (L-1)", - "discoboy", "Disco Boy", - "discoboyp", "Disco Boy (Promat license?)", - "discof", "Disco No.1 (Rev.F)", - "ditrio", "Diamond Trio (set 1)", - "diverboy", "Diver Boy", - "djboy", "DJ Boy (set 1)", - "djboya", "DJ Boy (set 2)", - "djboyj", "DJ Boy (Japan)", - "dkgensan", "Daiku no Gensan (Japan, M82)", - "dkgensanm72", "Daiku no Gensan (Japan, M72)", - "dking", "Donkey King", - "dkingjr", "Donkey King Jr. (bootleg of Donkey Kong Jr.)", - "dkong", "Donkey Kong (US set 1)", - "dkong3", "Donkey Kong 3 (US)", - "dkong3b", "Donkey Kong 3 (bootleg on Donkey Kong Jr. hardware)", - "dkong3j", "Donkey Kong 3 (Japan)", - "dkongf", "Donkey Kong Foundry (hack)", - "dkonghrd", "Donkey Kong (hard kit)", - "dkongj", "Donkey Kong (Japan set 1)", - "dkongjnrj", "Donkey Kong Junior (Japan?)", - "dkongjo", "Donkey Kong (Japan set 2)", - "dkongjo1", "Donkey Kong (Japan set 3)", - "dkongjr", "Donkey Kong Junior (US set F-2)", - "dkongjrb", "Donkey Kong Jr. (bootleg)", - "dkongjre", "Donkey Kong Junior (E kit)", - "dkongjrj", "Donkey Kong Jr. (Japan)", - "dkongjrm", "Donkey Kong Jr. (bootleg on Moon Cresta hardware)", - "dkongjrpb", "Donkey Kong Junior (P kit, bootleg)", - "dkongo", "Donkey Kong (US set 2)", - "dkongx", "Donkey Kong II - Jumpman Returns (V1.2) (hack)", - "dkongx11", "Donkey Kong II - Jumpman Returns (V1.1) (hack)", - "dlair", "Dragon's Lair (US Rev. F2)", - "dlair2", "Dragon's Lair 2: Time Warp (US v3.19)", - "dlair2_211", "Dragon's Lair 2: Time Warp (US v2.11)", - "dlair2_300", "Dragon's Lair 2: Time Warp (US v3.00)", - "dlair2_312", "Dragon's Lair 2: Time Warp (US v3.12)", - "dlair2_314", "Dragon's Lair 2: Time Warp (US v3.14)", - "dlair2_315", "Dragon's Lair 2: Time Warp (US v3.15)", - "dlair2_315s", "Dragon's Lair 2: Time Warp (Spanish v3.15)", - "dlair2_316e", "Dragon's Lair 2: Time Warp (Euro v3.16)", - "dlair2_317e", "Dragon's Lair 2: Time Warp (Euro v3.17)", - "dlair2_318", "Dragon's Lair 2: Time Warp (US v3.18)", - "dlair2_319e", "Dragon's Lair 2: Time Warp (Euro v3.19)", - "dlair2_319s", "Dragon's Lair 2: Time Warp (Spanish v3.19)", - "dlaira", "Dragon's Lair (US Rev. A, Pioneer PR-7820)", - "dlairb", "Dragon's Lair (US Rev. B, Pioneer PR-7820)", - "dlairc", "Dragon's Lair (US Rev. C, Pioneer PR-7820)", - "dlaird", "Dragon's Lair (US Rev. D, Pioneer LD-V1000)", - "dlaire", "Dragon's Lair (US Rev. E)", - "dlairf", "Dragon's Lair (US Rev. F)", - "dland", "Dream Land / Super Dream Land (bootleg of Bubble Bobble)", - "dleague", "Dynamite League (US)", - "dleaguej", "Dynamite League (Japan)", - "dleuro", "Dragon's Lair (European)", - "dlital", "Dragon's Lair (Italian)", - "dm_h5", "Demolition Man (H-5)", - "dm_h6", "Demolition Man (H-6)", - "dm_la1", "Demolition Man (LA-1)", - "dm_lx3", "Demolition Man (LX-3)", - "dm_lx4", "Demolition Man (LX-4)", - "dm_pa2", "Demolition Man (PA-2)", - "dm_px5", "Demolition Man (PX-5)", - "dmdtouch", "Diamond Touch (0400433V, Local)", - "dmndrby", "Diamond Derby (Newer)", - "dmndrbya", "Diamond Derby (Original)", - "dmnfrnt", "Demon Front (68k label V105, ROM M105XX 08/05/02) (ARM label V105, ROM 08/05/02 S105XX)", - "dmnfrnta", "Demon Front (68k label V102, ROM M102XX 06/19/02) (ARM label V102, ROM 05/24/02 S101XX)", - "dmnfrntb", "Demon Front (68k label V103, ROM M103XX 07/05/02) (ARM label V103, ROM 07/05/02 S103XX)", - "dmnfrntpcb", "Demon Front (68k label V107KR, ROM M107KR 11/03/03) (ARM label V106KR, ROM 10/16/03 S106KR) (JAMMA PCB)", - "dmx", "Dance Maniax (G*874 VER. JAA)", - "dmx2m", "Dance Maniax 2nd Mix (G*A39 VER. JAA)", - "dmx2majp", "Dance Maniax 2nd Mix Append J-Paradise (G*A38 VER. JAA)", - "dncfrks", "Dance Freaks (G*874 VER. KAA)", - "dncsprt", "Dancing Spirit (Russia) (Atronic)", - "dnmtdeka", "Dynamite Deka (J 960515 V1.000)", - "doa", "Dead or Alive (Model 2B, Revision B)", - "doa2", "Dead or Alive 2 (JPN, USA, EXP, KOR, AUS)", - "doa2m", "Dead or Alive 2 Millennium (JPN, USA, EXP, KOR, AUS)", - "doaa", "Dead or Alive (Model 2A, Revision A)", - "doapp", "Dead Or Alive ++ (Japan)", - "docastle", "Mr. Do's Castle (set 1)", - "docastle2", "Mr. Do's Castle (set 2)", - "docastleo", "Mr. Do's Castle (older)", - "dockman", "Dock Man", - "dodgecty", "Dodge City (9131-02)", - "dodgectya", "Dodge City (2131-82, U5-0D)", - "dodgectyb", "Dodge City (2131-82, U5-50)", - "dodgectyc", "Dodge City (2131-82, U5-0 GT)", - "dodgem", "Dodgem", - "dogfgt", "Acrobatic Dog-Fight", - "dogfgtj", "Dog-Fight (Japan)", - "dogfgtu", "Acrobatic Dog-Fight (USA)", - "dogfight", "Dog Fight (Thunderbolt)", - "dogosokb", "Dogou Souken (Joystick hack bootleg)", - "dogosoke", "Dogou Souken", - "dogpatch", "Dog Patch", - "dogyuun", "Dogyuun", - "dogyuuna", "Dogyuun (older set)", - "dogyuunt", "Dogyuun (location test)", - "dokaben", "Dokaben (Japan)", - "dokidoki", "Doki Doki Penguin Land", - "dokyusei", "Mahjong Doukyuusei", - "dokyusp", "Mahjong Doukyuusei Special", - "dollyptn", "Dolly Parton", - "dolmen", "Dolmen", - "dolphin", "Dolphin Blue", - "dolphinp", "Dolphin's Pearl (set 1)", - "dolphntr", "Dolphin Treasure (0200424V, NSW/ACT)", - "dolphtra", "Dolphin Treasure (0100424V, NSW/ACT)", - "domino", "Domino Man", - "domino2", "Domino II (Bingo)", - "dominob", "Domino Block", - "dominobv2", "Domino Block ver.2", - "dominos", "Dominos", - "dommy", "Dommy", - "doncdoon", "Hanabi de Doon! - Don-chan Puzzle", - "dondenmj", "Don Den Mahjong [BET] (Japan)", - "dondokod", "Don Doko Don (World)", - "dondokodj", "Don Doko Don (Japan)", - "dondokodu", "Don Doko Don (US)", - "donghaer", "Donggul Donggul Haerong", - "donpachi", "DonPachi (US)", - "donpachihk", "DonPachi (Hong Kong)", - "donpachij", "DonPachi (Japan)", - "donpachikr", "DonPachi (Korea)", - "dorachan", "Dorachan", - "doraemon", "Doraemon no Eawase Montage (prototype)", - "dorodon", "Dorodon (set 1)", - "dorodon2", "Dorodon (set 2)", - "dorunrun", "Do! Run Run (set 1)", - "dorunrun2", "Do! Run Run (set 2)", - "dorunrunc", "Do! Run Run (Do's Castle hardware, set 1)", - "dorunrunca", "Do! Run Run (Do's Castle hardware, set 2)", - "dotrikun", "Dottori Kun (new version)", - "dotrikun2", "Dottori Kun (old version)", - "dotron", "Discs of Tron (Upright)", - "dotrona", "Discs of Tron (Upright alternate)", - "dotrone", "Discs of Tron (Environmental)", - "doubledr", "Double Dragon (Neo-Geo)", - "douni", "Mr. Do vs. Unicorns", - "dowild", "Mr. Do's Wild Ride", - "downhill", "Downhill Bikers (DH3 Ver. A)", - "downtown", "DownTown / Mokugeki (set 1)", - "downtown2", "DownTown / Mokugeki (set 2)", - "downtownj", "DownTown / Mokugeki (joystick hack)", - "downtownp", "DownTown / Mokugeki (prototype)", - "dphl", "Draw Poker HI-LO (M.Kramer)", - "dphla", "Draw Poker HI-LO (Alt)", - "dphljp", "Draw Poker HI-LO (Japanese)", - "dphlunka", "Draw Poker HI-LO (unknown, rev 1)", - "dphlunkb", "Draw Poker HI-LO (unknown, rev 2)", - "dplay", "Double Play", - "dpoker", "Draw Poker (Bally, 03-20)", - "dquizgo", "Date Quiz Go Go (Korea)", - "dquizgo2", "Date Quiz Go Go Episode 2", - "drac_l1", "Bram Stoker's Dracula (L-1)", - "drac_p11", "Bram Stoker's Dracula (P-11)", - "draco", "Draco", - "dracula", "Dracula", - "dragchrn", "Dragon Chronicles (DC001 Ver. A)", - "dragfist", "Dragonfist", - "dragnblz", "Dragon Blaze", - "dragnfly", "Dragonfly (Konami Endeavour)", - "dragngun", "Dragon Gun (US)", - "dragngunj", "Dragon Gun (Japan)", - "dragon", "Dragon", - "dragoona", "Dragoon Might (ver AAB)", - "dragoonj", "Dragoon Might (ver JAA)", - "dragrace", "Drag Race", - "dragsphr", "Dragon Sphere", - "drakor", "Drakor", - "drakton", "Drakton (DK conversion)", - "drbyocwc", "Derby Owners Club World Edition (JPN, USA, EXP, KOR, AUS) (Rev C)", - "dreambal", "Dream Ball (Japan V2.4)", - "dreamwld", "Dream World", - "dremshpr", "Dream Shopper", - "drgnbowl", "Dragon Bowl", - "drgnbstr", "Dragon Buster", - "drgninja", "Dragonninja (Japan)", - "drgninjab", "Dragonninja (bootleg)", - "drgnmst", "Dragon Master", - "drgnunit", "Dragon Unit / Castle of Dragon", - "drgnwrld", "Dragon World (World, V040O)", - "drgnwrldv10c", "Zhong Guo Long (China, V010C)", - "drgnwrldv11h", "Dong Fang Zhi Zhu (Hong Kong, V011H)", - "drgnwrldv20j", "Zhong Guo Long (Japan, V020J)", - "drgnwrldv21", "Dragon World (World, V021O)", - "drgnwrldv21j", "Zhong Guo Long (Japan, V021J)", - "drgnwrldv30", "Dragon World (World, V030O)", - "drgpunch", "Dragon Punch (Japan)", - "drgw2", "Dragon World II (ver. 110X, Export)", - "drgw2c", "Zhong Guo Long II (ver. 100C, China)", - "drgw2j", "Chuugokuryuu II (ver. 100J, Japan)", - "drgw3", "Dragon World 3 (ver. 106)", - "drgw3100", "Dragon World 3 (Japan, ver. 100)", - "drgw3105", "Dragon World 3 (ver. 105)", - "drhl", "Drews Revenge (v.2.89, set 1)", - "drhla", "Drews Revenge (v.2.89, set 2)", - "dribling", "Dribbling", - "driblingbr", "Dribbling (bootleg, Brazil)", - "driblingo", "Dribbling (Olympia)", - "drifto94", "Drift Out '94 - The Hard Order (Japan)", - "driftout", "Drift Out (Europe)", - "driftoutj", "Drift Out (Japan)", - "drivedge", "Driver's Edge", - "driveout", "Drive Out (bootleg)", - "driveyes", "Driver's Eyes (Japan)", - "drivfrcb", "Driving Force (Galaxian conversion bootleg)", - "drivfrcg", "Driving Force (Galaxian conversion)", - "drivfrcp", "Driving Force (Pac-Man conversion)", - "drivfrct", "Top Racer (bootleg of Driving Force)", - "drktnjr", "Drakton (DKJr conversion)", - "drmario", "Vs. Dr. Mario", - "drmicro", "Dr. Micro", - "drmmake", "Dream Maker (Russia) (Atronic)", - "drmn", "DrumMania (GQ881 VER. JAD)", - "drmn10m", "DrumMania 10th Mix (G*D40 VER. JAA)", - "drmn2m", "DrumMania 2nd Mix (GE912 VER. JAB)", - "drmn2mpu", "DrumMania 2nd Mix Session Power Up Kit (GE912 VER. JAB)", - "drmn3m", "DrumMania 3rd Mix (G*A23 VER. JAA)", - "drmn4m", "DrumMania 4th Mix (G*A25 VER. JAA)", - "drmn5m", "DrumMania 5th Mix (G*B05 VER. JAA)", - "drmn6m", "DrumMania 6th Mix (G*B16 VER. JAA)", - "drmn7m", "DrumMania 7th Mix power-up ver. (G*C07 VER. JBA)", - "drmn7ma", "DrumMania 7th Mix (G*C07 VER. JAA)", - "drmn8m", "DrumMania 8th Mix (G*C07 VER. JAA)", - "drmn9m", "DrumMania 9th Mix (G*D09 VER. JAA)", - "drtomy", "Dr. Tomy", - "drtoppel", "Dr. Toppel's Adventure (World)", - "drtoppelj", "Dr. Toppel's Tankentai (Japan)", - "drtoppelu", "Dr. Toppel's Adventure (US)", - "drw80pk2", "Draw 80 Poker - Minn", - "drw80pkr", "Draw 80 Poker", - "dsaber", "Dragon Saber", - "dsaberj", "Dragon Saber (Japan, Rev B)", - "dsem", "Dancing Stage Euro Mix (G*936 VER. EAA)", - "dsem2", "Dancing Stage Euro Mix 2 (G*C23 VER. EAA)", - "dsfdct", "Dancing Stage featuring Dreams Come True (GC910 VER. JCA)", - "dsfdcta", "Dancing Stage featuring Dreams Come True (GC910 VER. JAA)", - "dsfdr", "Dancing Stage Featuring Disney's Rave (GCA37JAA)", - "dsftkd", "Dancing Stage featuring TRUE KiSS DESTiNATiON (G*884 VER. JAA)", - "dslayrr", "Dragon Slayer (Russia, set 1)", - "dslayrra", "Dragon Slayer (Russia, set 2)", - "dsmbl", "Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER)", - "dsoccr94", "Dream Soccer '94 (World, M107 hardware)", - "dsoccr94j", "Dream Soccer '94 (Japan, M92 hardware)", - "dspirit", "Dragon Spirit (new version (DS3))", - "dspirit1", "Dragon Spirit (old version (DS1))", - "dspirit2", "Dragon Spirit (DS2)", - "dstage", "Dancing Stage - Internet Ranking Ver (GC845 VER. EBA)", - "dstagea", "Dancing Stage (GN845 VER. EAA)", - "dstlk", "Darkstalkers: The Night Warriors (Euro 940705)", - "dstlka", "Darkstalkers: The Night Warriors (Asia 940705)", - "dstlkh", "Darkstalkers: The Night Warriors (Hispanic 940818)", - "dstlku", "Darkstalkers: The Night Warriors (USA 940818)", - "dstlku1d", "Darkstalkers: The Night Warriors (USA 940705 Phoenix Edition) (bootleg)", - "dstlkur1", "Darkstalkers: The Night Warriors (USA 940705)", - "dtfamily", "Diet Family", - "dtoyoken", "Mahjong Dai Touyouken (Japan)", - "dtrvwz5", "Deluxe Trivia ? Whiz (6221-70, U5-0A Edition 5)", - "dualaslt", "Dual Assault", - "dualgame", "Dual Games (prototype)", - "duckhunt", "Vs. Duck Hunt (set DH3 E)", - "dumpmtmt", "Dump Matsumoto (Japan, 8751 317-0011a)", - "dungdrag", "Dungeons & Dragons", - "dungeonm", "Dungeon Magic (Ver 2.1O 1994/02/18)", - "dungeonmu", "Dungeon Magic (Ver 2.1A 1994/02/18)", - "dunhuang", "Mahjong Dunhuang", - "dunkmnia", "Dunk Mania (Asia, DM2/VER.C)", - "dunkmniajc", "Dunk Mania (Japan, DM1/VER.C)", - "dunkshot", "Dunk Shot (FD1089A 317-0022)", - "dvisland", "Devil Island (Version 1.4R CGA)", - "dvislando", "Devil Island (Version 1.0R CGA)", - "dvlrider", "Devil Riders", - "dvlriderg", "Devil Riders (German speech)", - "dvlrideri", "Devil Riders (Italian speech)", - "dvlsdre", "Devil's Dare", - "dvlsdre2", "Devil's Dare (Sound Only)", - "dw2001", "Dragon World 2001 (V100?, Japan)", - "dw2v100x", "Dragon World II (ver. 100X, Export)", - "dw_l1", "Doctor Who (L-1)", - "dw_l2", "Doctor Who (L-2)", - "dw_p5", "Doctor Who (P-5)", - "dwarfd", "Draw Poker III / Dwarfs Den (Dwarf Gfx)", - "dwarfda", "Draw Poker III / Dwarfs Den (Card Gfx)", - "dwex", "Dragon World 3 EX (ver. 100)", - "dwpc", "Dragon World Pretty Chance (V101, Japan)", - "dybb99", "Dynamite Baseball '99 (JPN) / World Series '99 (USA, EXP, KOR, AUS) (Rev B)", - "dybbnao", "Dynamite Baseball NAOMI (JPN)", - "dyger", "Dyger (Korea set 1)", - "dygera", "Dyger (Korea set 2)", - "dygolf", "Dynamic Golf / Virtua Golf (Rev A) (GDS-0009A)", - "dynabb", "Dynamite Baseball", - "dynabb97", "Dynamite Baseball 97 (Revision A)", - "dynablst", "Dynablaster / Bomber Man", - "dynablstb", "Dynablaster / Bomber Man (bootleg)", - "dynablstb2", "Dynablaster / Bomber Man (bootleg, alt)", - "dynabomb", "Dynamite Bomber (Korea, Rev 1.5)", - "dynadice", "Dynamic Dice", - "dynagear", "Dyna Gear", - "dynamcop", "Dynamite Cop (Export, Model 2A)", - "dynamcopb", "Dynamite Cop (Export, Model 2B)", - "dynamcopc", "Dynamite Cop (USA, Model 2C)", - "dynamski", "Dynamic Ski", - "dynashot", "Dynamic Shoot Kyousou", - "dyndeka2", "Dynamite Deka 2 (Japan, Model 2A)", - "dyndeka2b", "Dynamite Deka 2 (Japan, Model 2B)", - "dynduke", "Dynamite Duke (Europe set 1)", - "dyndukea", "Dynamite Duke (Europe set 2)", - "dyndukej", "Dynamite Duke (Japan)", - "dyndukeu", "Dynamite Duke (US)", - "dynobop", "Dyno Bop", - "dynwar", "Dynasty Wars (USA, B-Board 89624B-?)", - "dynwara", "Dynasty Wars (USA, B-Board 88622B-3)", - "dynwarj", "Tenchi wo Kurau (Japan)", - "dynwarjr", "Tenchi wo Kurau (Japan Resale Ver.)", - "dzigzag", "Zig Zag (Dig Dug hardware)", - "eagle", "Eagle (set 1)", - "eagle2", "Eagle (set 2)", - "eagle3", "Eagle (set 3)", - "eaglshot", "Eagle Shot Golf", - "earthjkr", "U.N. Defense Force: Earth Joker (Japan)", - "earthjkrp", "U.N. Defense Force: Earth Joker (Japan, prototype?)", - "eatpm_4g", "Elvira and the Party Monsters (LG-4)", - "eatpm_4u", "Elvira and the Party Monsters (LU-4)", - "eatpm_l1", "Elvira and the Party Monsters (LA-1)", - "eatpm_l2", "Elvira and the Party Monsters (LA-2)", - "eatpm_l4", "Elvira and the Party Monsters (LA-4)", - "eatpm_p7", "Elvira and the Party Monsters (PA-7)", - "eballchp", "Eight Ball Champ", - "eballd14", "Eight Ball Deluxe (rev. 14)", - "eballdlx", "Eight Ball Deluxe (rev. 15)", - "eballdlxp1", "Eight Ball Deluxe (prototype rev. 1)", - "eballdlxp2", "Eight Ball Deluxe (prototype rev. 2)", - "eballdlxp3", "Eight Ball Deluxe (prototype rev. 3)", - "eballdlxp4", "Eight Ball Deluxe (prototype rev. 4)", - "ebases", "Extra Bases", - "ec_bar5", "Bar 5 (older PCB) (Electrocoin)", - "ec_bar7", "Bar 7 (Concept Games Ltd) (?)", - "ec_barx", "Bar X (Electrocoin) (set 1)", - "ec_barx__0", "Bar X (Electrocoin) (set 28)", - "ec_barx__1", "Bar X (Electrocoin) (set 29)", - "ec_barx__2", "Bar X (Electrocoin) (set 30)", - "ec_barx__3", "Bar X (Electrocoin) (set 31)", - "ec_barx__4", "Bar X (Electrocoin) (set 32)", - "ec_barx__5", "Bar X (Electrocoin) (set 33)", - "ec_barx__6", "Bar X (Electrocoin) (set 34)", - "ec_barx__7", "Bar X (Electrocoin) (set 35)", - "ec_barx__8", "Bar X (Electrocoin) (set 36)", - "ec_barx__9", "Bar X (Electrocoin) (set 37)", - "ec_barx__a", "Bar X (Electrocoin) (set 2)", - "ec_barx__a0", "Bar X (Electrocoin) (set 64)", - "ec_barx__a1", "Bar X (Electrocoin) (set 65)", - "ec_barx__a2", "Bar X (Electrocoin) (set 66)", - "ec_barx__a3", "Bar X (Electrocoin) (set 67)", - "ec_barx__a4", "Bar X (Electrocoin) (set 68)", - "ec_barx__a5", "Bar X (Electrocoin) (set 69)", - "ec_barx__a6", "Bar X (Electrocoin) (set 70)", - "ec_barx__a7", "Bar X (Electrocoin) (set 71)", - "ec_barx__a8", "Bar X (Electrocoin) (set 72)", - "ec_barx__a9", "Bar X (Electrocoin) (set 73)", - "ec_barx__aa", "Bar X (Electrocoin) (set 38)", - "ec_barx__ab", "Bar X (Electrocoin) (set 39)", - "ec_barx__ac", "Bar X (Electrocoin) (set 40)", - "ec_barx__ad", "Bar X (Electrocoin) (set 41)", - "ec_barx__ae", "Bar X (Electrocoin) (set 42)", - "ec_barx__af", "Bar X (Electrocoin) (set 43)", - "ec_barx__ag", "Bar X (Electrocoin) (set 44)", - "ec_barx__ah", "Bar X (Electrocoin) (set 45)", - "ec_barx__ai", "Bar X (Electrocoin) (set 46)", - "ec_barx__aj", "Bar X (Electrocoin) (set 47)", - "ec_barx__ak", "Bar X (Electrocoin) (set 48)", - "ec_barx__al", "Bar X (Electrocoin) (set 49)", - "ec_barx__am", "Bar X (Electrocoin) (set 50)", - "ec_barx__an", "Bar X (Electrocoin) (set 51)", - "ec_barx__ao", "Bar X (Electrocoin) (set 52)", - "ec_barx__ap", "Bar X (Electrocoin) (set 53)", - "ec_barx__aq", "Bar X (Electrocoin) (set 54)", - "ec_barx__ar", "Bar X (Electrocoin) (set 55)", - "ec_barx__as", "Bar X (Electrocoin) (set 56)", - "ec_barx__at", "Bar X (Electrocoin) (set 57)", - "ec_barx__au", "Bar X (Electrocoin) (set 58)", - "ec_barx__av", "Bar X (Electrocoin) (set 59)", - "ec_barx__aw", "Bar X (Electrocoin) (set 60)", - "ec_barx__ax", "Bar X (Electrocoin) (set 61)", - "ec_barx__ay", "Bar X (Electrocoin) (set 62)", - "ec_barx__az", "Bar X (Electrocoin) (set 63)", - "ec_barx__b", "Bar X (Electrocoin) (set 3)", - "ec_barx__ba", "Bar X (Electrocoin) (set 74)", - "ec_barx__bb", "Bar X (Electrocoin) (set 75)", - "ec_barx__bc", "Bar X (Electrocoin) (set 76)", - "ec_barx__bd", "Bar X (Electrocoin) (set 77)", - "ec_barx__be", "Bar X (Electrocoin) (set 78)", - "ec_barx__bf", "Bar X (Electrocoin) (set 79)", - "ec_barx__bg", "Bar X (Electrocoin) (set 80)", - "ec_barx__bh", "Bar X (Electrocoin) (set 81)", - "ec_barx__bi", "Bar X (Electrocoin) (set 82)", - "ec_barx__bj", "Bar X (Electrocoin) (set 83)", - "ec_barx__bk", "Bar X (Electrocoin) (set 84)", - "ec_barx__bl", "Bar X (Electrocoin) (set 85)", - "ec_barx__bm", "Bar X (Electrocoin) (set 86)", - "ec_barx__bn", "Bar X (Electrocoin) (set 87)", - "ec_barx__bo", "Bar X (Electrocoin) (set 88)", - "ec_barx__bp", "Bar X (Electrocoin) (set 89)", - "ec_barx__bq", "Bar X (Electrocoin) (set 90)", - "ec_barx__br", "Bar X (Electrocoin) (set 91)", - "ec_barx__bs", "Bar X (Electrocoin) (set 92)", - "ec_barx__bt", "Bar X (Electrocoin) (set 93)", - "ec_barx__bu", "Bar X (Electrocoin) (set 94)", - "ec_barx__c", "Bar X (Electrocoin) (set 4)", - "ec_barx__d", "Bar X (Electrocoin) (set 5)", - "ec_barx__e", "Bar X (Electrocoin) (set 6)", - "ec_barx__f", "Bar X (Electrocoin) (set 7)", - "ec_barx__g", "Bar X (Electrocoin) (set 8)", - "ec_barx__h", "Bar X (Electrocoin) (set 9)", - "ec_barx__i", "Bar X (Electrocoin) (set 10)", - "ec_barx__j", "Bar X (Electrocoin) (set 11)", - "ec_barx__k", "Bar X (Electrocoin) (set 12)", - "ec_barx__l", "Bar X (Electrocoin) (set 13)", - "ec_barx__m", "Bar X (Electrocoin) (set 14)", - "ec_barx__n", "Bar X (Electrocoin) (set 15)", - "ec_barx__o", "Bar X (Electrocoin) (set 16)", - "ec_barx__p", "Bar X (Electrocoin) (set 17)", - "ec_barx__q", "Bar X (Electrocoin) (set 18)", - "ec_barx__r", "Bar X (Electrocoin) (set 19)", - "ec_barx__s", "Bar X (Electrocoin) (set 20)", - "ec_barx__t", "Bar X (Electrocoin) (set 21)", - "ec_barx__u", "Bar X (Electrocoin) (set 22)", - "ec_barx__v", "Bar X (Electrocoin) (set 23)", - "ec_barx__w", "Bar X (Electrocoin) (set 24)", - "ec_barx__x", "Bar X (Electrocoin) (set 25)", - "ec_barx__y", "Bar X (Electrocoin) (set 26)", - "ec_barx__z", "Bar X (Electrocoin) (set 27)", - "ec_barxmab", "Bar X (MAB PCB) (Electrocoin)", - "ec_barxo", "Bar X (older PCB) (Electrocoin) (set 1)", - "ec_barxoa", "Bar X (older PCB) (Electrocoin) (set 2)", - "ec_barxob", "Bar X (older PCB) (Electrocoin) (set 3)", - "ec_barxoc", "Bar X (older PCB) (Electrocoin) (set 4)", - "ec_barxod", "Bar X (older PCB) (Electrocoin) (set 5)", - "ec_barxoe", "Bar X (older PCB) (Electrocoin) (set 6)", - "ec_big7", "Big 7 / Super Big 7 (Electrocoin) (set 1)", - "ec_big7__0", "Big 7 / Super Big 7 (Electrocoin) (set 28)", - "ec_big7__1", "Big 7 / Super Big 7 (Electrocoin) (set 29)", - "ec_big7__2", "Big 7 / Super Big 7 (Electrocoin) (set 30)", - "ec_big7__3", "Big 7 / Super Big 7 (Electrocoin) (set 31)", - "ec_big7__4", "Big 7 / Super Big 7 (Electrocoin) (set 32)", - "ec_big7__5", "Big 7 / Super Big 7 (Electrocoin) (set 33)", - "ec_big7__6", "Big 7 / Super Big 7 (Electrocoin) (set 34)", - "ec_big7__7", "Big 7 / Super Big 7 (Electrocoin) (set 35)", - "ec_big7__8", "Big 7 / Super Big 7 (Electrocoin) (set 36)", - "ec_big7__9", "Big 7 / Super Big 7 (Electrocoin) (set 37)", - "ec_big7__a", "Big 7 / Super Big 7 (Electrocoin) (set 2)", - "ec_big7__a0", "Big 7 / Super Big 7 (Electrocoin) (set 64)", - "ec_big7__a1", "Big 7 / Super Big 7 (Electrocoin) (set 65)", - "ec_big7__a2", "Big 7 / Super Big 7 (Electrocoin) (set 66)", - "ec_big7__aa", "Big 7 / Super Big 7 (Electrocoin) (set 38)", - "ec_big7__ab", "Big 7 / Super Big 7 (Electrocoin) (set 39)", - "ec_big7__ac", "Big 7 / Super Big 7 (Electrocoin) (set 40)", - "ec_big7__ad", "Big 7 / Super Big 7 (Electrocoin) (set 41)", - "ec_big7__ae", "Big 7 / Super Big 7 (Electrocoin) (set 42)", - "ec_big7__af", "Big 7 / Super Big 7 (Electrocoin) (set 43)", - "ec_big7__ag", "Big 7 / Super Big 7 (Electrocoin) (set 44)", - "ec_big7__ah", "Big 7 / Super Big 7 (Electrocoin) (set 45)", - "ec_big7__ai", "Big 7 / Super Big 7 (Electrocoin) (set 46)", - "ec_big7__aj", "Big 7 / Super Big 7 (Electrocoin) (set 47)", - "ec_big7__ak", "Big 7 / Super Big 7 (Electrocoin) (set 48)", - "ec_big7__al", "Big 7 / Super Big 7 (Electrocoin) (set 49)", - "ec_big7__am", "Big 7 / Super Big 7 (Electrocoin) (set 50)", - "ec_big7__an", "Big 7 / Super Big 7 (Electrocoin) (set 51)", - "ec_big7__ao", "Big 7 / Super Big 7 (Electrocoin) (set 52)", - "ec_big7__ap", "Big 7 / Super Big 7 (Electrocoin) (set 53)", - "ec_big7__aq", "Big 7 / Super Big 7 (Electrocoin) (set 54)", - "ec_big7__ar", "Big 7 / Super Big 7 (Electrocoin) (set 55)", - "ec_big7__as", "Big 7 / Super Big 7 (Electrocoin) (set 56)", - "ec_big7__at", "Big 7 / Super Big 7 (Electrocoin) (set 57)", - "ec_big7__au", "Big 7 / Super Big 7 (Electrocoin) (set 58)", - "ec_big7__av", "Big 7 / Super Big 7 (Electrocoin) (set 59)", - "ec_big7__aw", "Big 7 / Super Big 7 (Electrocoin) (set 60)", - "ec_big7__ax", "Big 7 / Super Big 7 (Electrocoin) (set 61)", - "ec_big7__ay", "Big 7 / Super Big 7 (Electrocoin) (set 62)", - "ec_big7__az", "Big 7 / Super Big 7 (Electrocoin) (set 63)", - "ec_big7__b", "Big 7 / Super Big 7 (Electrocoin) (set 3)", - "ec_big7__c", "Big 7 / Super Big 7 (Electrocoin) (set 4)", - "ec_big7__d", "Big 7 / Super Big 7 (Electrocoin) (set 5)", - "ec_big7__e", "Big 7 / Super Big 7 (Electrocoin) (set 6)", - "ec_big7__f", "Big 7 / Super Big 7 (Electrocoin) (set 7)", - "ec_big7__g", "Big 7 / Super Big 7 (Electrocoin) (set 8)", - "ec_big7__h", "Big 7 / Super Big 7 (Electrocoin) (set 9)", - "ec_big7__i", "Big 7 / Super Big 7 (Electrocoin) (set 10)", - "ec_big7__j", "Big 7 / Super Big 7 (Electrocoin) (set 11)", - "ec_big7__k", "Big 7 / Super Big 7 (Electrocoin) (set 12)", - "ec_big7__l", "Big 7 / Super Big 7 (Electrocoin) (set 13)", - "ec_big7__m", "Big 7 / Super Big 7 (Electrocoin) (set 14)", - "ec_big7__n", "Big 7 / Super Big 7 (Electrocoin) (set 15)", - "ec_big7__o", "Big 7 / Super Big 7 (Electrocoin) (set 16)", - "ec_big7__p", "Big 7 / Super Big 7 (Electrocoin) (set 17)", - "ec_big7__q", "Big 7 / Super Big 7 (Electrocoin) (set 18)", - "ec_big7__r", "Big 7 / Super Big 7 (Electrocoin) (set 19)", - "ec_big7__s", "Big 7 / Super Big 7 (Electrocoin) (set 20)", - "ec_big7__t", "Big 7 / Super Big 7 (Electrocoin) (set 21)", - "ec_big7__u", "Big 7 / Super Big 7 (Electrocoin) (set 22)", - "ec_big7__v", "Big 7 / Super Big 7 (Electrocoin) (set 23)", - "ec_big7__w", "Big 7 / Super Big 7 (Electrocoin) (set 24)", - "ec_big7__x", "Big 7 / Super Big 7 (Electrocoin) (set 25)", - "ec_big7__y", "Big 7 / Super Big 7 (Electrocoin) (set 26)", - "ec_big7__z", "Big 7 / Super Big 7 (Electrocoin) (set 27)", - "ec_bx125", "Bar X 125 (Electrocoin) (set 1)", - "ec_bx125a", "Bar X 125 (Electrocoin) (set 2)", - "ec_bx180", "Bar X (Z180 hardware) (Electrocoin) (set 1)", - "ec_bx180a", "Bar X (Z180 hardware) (Electrocoin) (set 2)", - "ec_bxd7s", "Bar X Diamond 7s (2006 COOL7) (Electrocoin) (set 1)", - "ec_bxd7s__a", "Bar X Diamond 7s (2006 COOL7) (Electrocoin) (set 2)", - "ec_bxd7s__b", "Bar X Diamond 7s (2006 COOL7) (Electrocoin) (set 3)", - "ec_bxd7s__c", "Bar X Diamond 7s (2006 COOL7) (Electrocoin) (set 4)", - "ec_bxd7s__d", "Bar X Diamond 7s (2006 COOL7) (Electrocoin) (set 5)", - "ec_casbx", "Casino Bar X (Electrocoin) (set 1)", - "ec_casbx__a", "Casino Bar X (Electrocoin) (set 2)", - "ec_casbx__b", "Casino Bar X (Electrocoin) (set 3)", - "ec_casbxcon", "Casino Bar X (Concept Games Ltd) (?)", - "ec_casbxo", "Casino Bar X (older PCB) (Electrocoin) (set 1)", - "ec_casbxoa", "Casino Bar X (older PCB) (Electrocoin) (set 2)", - "ec_casmb", "Casino Multi Bar (Concept Games Ltd) (?)", - "ec_fltr", "Flutter (Concept Games Ltd) (?)", - "ec_gold7", "Golden 7 (Concept Games Ltd) (?)", - "ec_jackb", "Jackpot Bars (MAB PCB?) (Concept Games Ltd) (?)", - "ec_laby", "Labyrinth (v8) (Electrocoin)", - "ec_labya", "Labyrinth (v10) (Electrocoin)", - "ec_mag7s", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 1)", - "ec_mag7s__0", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 28)", - "ec_mag7s__1", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 29)", - "ec_mag7s__2", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 30)", - "ec_mag7s__3", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 31)", - "ec_mag7s__4", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 32)", - "ec_mag7s__5", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 33)", - "ec_mag7s__6", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 34)", - "ec_mag7s__7", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 35)", - "ec_mag7s__8", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 36)", - "ec_mag7s__9", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 37)", - "ec_mag7s__a", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 2)", - "ec_mag7s__a0", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 64)", - "ec_mag7s__aa", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 38)", - "ec_mag7s__ab", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 39)", - "ec_mag7s__ac", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 40)", - "ec_mag7s__ad", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 41)", - "ec_mag7s__ae", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 42)", - "ec_mag7s__af", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 43)", - "ec_mag7s__ag", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 44)", - "ec_mag7s__ah", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 45)", - "ec_mag7s__ai", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 46)", - "ec_mag7s__aj", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 47)", - "ec_mag7s__ak", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 48)", - "ec_mag7s__al", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 49)", - "ec_mag7s__am", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 50)", - "ec_mag7s__an", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 51)", - "ec_mag7s__ao", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 52)", - "ec_mag7s__ap", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 53)", - "ec_mag7s__aq", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 54)", - "ec_mag7s__ar", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 55)", - "ec_mag7s__as", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 56)", - "ec_mag7s__at", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 57)", - "ec_mag7s__au", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 58)", - "ec_mag7s__av", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 59)", - "ec_mag7s__aw", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 60)", - "ec_mag7s__ax", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 61)", - "ec_mag7s__ay", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 62)", - "ec_mag7s__az", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 63)", - "ec_mag7s__b", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 3)", - "ec_mag7s__c", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 4)", - "ec_mag7s__d", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 5)", - "ec_mag7s__e", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 6)", - "ec_mag7s__f", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 7)", - "ec_mag7s__g", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 8)", - "ec_mag7s__h", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 9)", - "ec_mag7s__i", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 10)", - "ec_mag7s__j", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 11)", - "ec_mag7s__k", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 12)", - "ec_mag7s__l", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 13)", - "ec_mag7s__m", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 14)", - "ec_mag7s__n", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 15)", - "ec_mag7s__o", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 16)", - "ec_mag7s__p", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 17)", - "ec_mag7s__q", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 18)", - "ec_mag7s__r", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 19)", - "ec_mag7s__s", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 20)", - "ec_mag7s__t", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 21)", - "ec_mag7s__u", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 22)", - "ec_mag7s__v", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 23)", - "ec_mag7s__w", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 24)", - "ec_mag7s__x", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 25)", - "ec_mag7s__y", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 26)", - "ec_mag7s__z", "Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 27)", - "ec_mgbel", "Megabell (Concept Games Ltd) (?)", - "ec_multb", "Multi Bar (Concept Games Ltd) (?)", - "ec_ndgxs", "Nudge Xcess (MAB PCB?) (Concept Games Ltd) (?)", - "ec_oxocg", "Oxo Classic Gold (Electrocoin) (?)", - "ec_oxocl", "Oxo Club (Electrocoin) (?)", - "ec_oxogb", "Oxo Golden Bars (Electrocoin) (?)", - "ec_oxorl", "Oxo Reels (Electrocoin) (?)", - "ec_oxorv", "Oxo Revolution (Electrocoin) (?)", - "ec_penni", "Pennies From Heaven (v1) (Electrocoin)", - "ec_pennia", "Pennies From Heaven (v6) (Electrocoin)", - "ec_pyram", "Pyramid (v1) (Electrocoin)", - "ec_pyrama", "Pyramid (v6) (Electrocoin)", - "ec_rcc", "Royal Casino Club (Electrocoin) (?)", - "ec_rdht7", "Red Hot 7 (MAB PCB?) (Concept Games Ltd) (?)", - "ec_redbr", "Red Bar (Electrocoin) (set 1)", - "ec_redbr__0", "Red Bar (Electrocoin) (set 28)", - "ec_redbr__1", "Red Bar (Electrocoin) (set 29)", - "ec_redbr__2", "Red Bar (Electrocoin) (set 30)", - "ec_redbr__3", "Red Bar (Electrocoin) (set 31)", - "ec_redbr__4", "Red Bar (Electrocoin) (set 32)", - "ec_redbr__5", "Red Bar (Electrocoin) (set 33)", - "ec_redbr__6", "Red Bar (Electrocoin) (set 34)", - "ec_redbr__7", "Red Bar (Electrocoin) (set 35)", - "ec_redbr__8", "Red Bar (Electrocoin) (set 36)", - "ec_redbr__9", "Red Bar (Electrocoin) (set 37)", - "ec_redbr__a", "Red Bar (Electrocoin) (set 2)", - "ec_redbr__a0", "Red Bar (Electrocoin) (set 64)", - "ec_redbr__a1", "Red Bar (Electrocoin) (set 65)", - "ec_redbr__a2", "Red Bar (Electrocoin) (set 66)", - "ec_redbr__a3", "Red Bar (Electrocoin) (set 67)", - "ec_redbr__a4", "Red Bar (Electrocoin) (set 68)", - "ec_redbr__a5", "Red Bar (Electrocoin) (set 69)", - "ec_redbr__a6", "Red Bar (Electrocoin) (set 70)", - "ec_redbr__a7", "Red Bar (Electrocoin) (set 71)", - "ec_redbr__a8", "Red Bar (Electrocoin) (set 72)", - "ec_redbr__a9", "Red Bar (Electrocoin) (set 73)", - "ec_redbr__aa", "Red Bar (Electrocoin) (set 38)", - "ec_redbr__ab", "Red Bar (Electrocoin) (set 39)", - "ec_redbr__ac", "Red Bar (Electrocoin) (set 40)", - "ec_redbr__ad", "Red Bar (Electrocoin) (set 41)", - "ec_redbr__ae", "Red Bar (Electrocoin) (set 42)", - "ec_redbr__af", "Red Bar (Electrocoin) (set 43)", - "ec_redbr__ag", "Red Bar (Electrocoin) (set 44)", - "ec_redbr__ah", "Red Bar (Electrocoin) (set 45)", - "ec_redbr__ai", "Red Bar (Electrocoin) (set 46)", - "ec_redbr__aj", "Red Bar (Electrocoin) (set 47)", - "ec_redbr__ak", "Red Bar (Electrocoin) (set 48)", - "ec_redbr__al", "Red Bar (Electrocoin) (set 49)", - "ec_redbr__am", "Red Bar (Electrocoin) (set 50)", - "ec_redbr__an", "Red Bar (Electrocoin) (set 51)", - "ec_redbr__ao", "Red Bar (Electrocoin) (set 52)", - "ec_redbr__ap", "Red Bar (Electrocoin) (set 53)", - "ec_redbr__aq", "Red Bar (Electrocoin) (set 54)", - "ec_redbr__ar", "Red Bar (Electrocoin) (set 55)", - "ec_redbr__as", "Red Bar (Electrocoin) (set 56)", - "ec_redbr__at", "Red Bar (Electrocoin) (set 57)", - "ec_redbr__au", "Red Bar (Electrocoin) (set 58)", - "ec_redbr__av", "Red Bar (Electrocoin) (set 59)", - "ec_redbr__aw", "Red Bar (Electrocoin) (set 60)", - "ec_redbr__ax", "Red Bar (Electrocoin) (set 61)", - "ec_redbr__ay", "Red Bar (Electrocoin) (set 62)", - "ec_redbr__az", "Red Bar (Electrocoin) (set 63)", - "ec_redbr__b", "Red Bar (Electrocoin) (set 3)", - "ec_redbr__b0", "Red Bar (Electrocoin) (set 100)", - "ec_redbr__b1", "Red Bar (Electrocoin) (set 101)", - "ec_redbr__ba", "Red Bar (Electrocoin) (set 74)", - "ec_redbr__bb", "Red Bar (Electrocoin) (set 75)", - "ec_redbr__bc", "Red Bar (Electrocoin) (set 76)", - "ec_redbr__bd", "Red Bar (Electrocoin) (set 77)", - "ec_redbr__be", "Red Bar (Electrocoin) (set 78)", - "ec_redbr__bf", "Red Bar (Electrocoin) (set 79)", - "ec_redbr__bg", "Red Bar (Electrocoin) (set 80)", - "ec_redbr__bh", "Red Bar (Electrocoin) (set 81)", - "ec_redbr__bi", "Red Bar (Electrocoin) (set 82)", - "ec_redbr__bj", "Red Bar (Electrocoin) (set 83)", - "ec_redbr__bk", "Red Bar (Electrocoin) (set 84)", - "ec_redbr__bl", "Red Bar (Electrocoin) (set 85)", - "ec_redbr__bm", "Red Bar (Electrocoin) (set 86)", - "ec_redbr__bn", "Red Bar (Electrocoin) (set 87)", - "ec_redbr__bo", "Red Bar (Electrocoin) (set 88)", - "ec_redbr__bp", "Red Bar (Electrocoin) (set 89)", - "ec_redbr__bq", "Red Bar (Electrocoin) (set 90)", - "ec_redbr__br", "Red Bar (Electrocoin) (set 91)", - "ec_redbr__bs", "Red Bar (Electrocoin) (set 92)", - "ec_redbr__bt", "Red Bar (Electrocoin) (set 93)", - "ec_redbr__bu", "Red Bar (Electrocoin) (set 94)", - "ec_redbr__bv", "Red Bar (Electrocoin) (set 95)", - "ec_redbr__bw", "Red Bar (Electrocoin) (set 96)", - "ec_redbr__bx", "Red Bar (Electrocoin) (set 97)", - "ec_redbr__by", "Red Bar (Electrocoin) (set 98)", - "ec_redbr__c", "Red Bar (Electrocoin) (set 4)", - "ec_redbr__d", "Red Bar (Electrocoin) (set 5)", - "ec_redbr__e", "Red Bar (Electrocoin) (set 6)", - "ec_redbr__f", "Red Bar (Electrocoin) (set 7)", - "ec_redbr__g", "Red Bar (Electrocoin) (set 8)", - "ec_redbr__h", "Red Bar (Electrocoin) (set 9)", - "ec_redbr__i", "Red Bar (Electrocoin) (set 10)", - "ec_redbr__j", "Red Bar (Electrocoin) (set 11)", - "ec_redbr__k", "Red Bar (Electrocoin) (set 12)", - "ec_redbr__l", "Red Bar (Electrocoin) (set 13)", - "ec_redbr__m", "Red Bar (Electrocoin) (set 14)", - "ec_redbr__n", "Red Bar (Electrocoin) (set 15)", - "ec_redbr__o", "Red Bar (Electrocoin) (set 16)", - "ec_redbr__p", "Red Bar (Electrocoin) (set 17)", - "ec_redbr__q", "Red Bar (Electrocoin) (set 18)", - "ec_redbr__r", "Red Bar (Electrocoin) (set 19)", - "ec_redbr__s", "Red Bar (Electrocoin) (set 20)", - "ec_redbr__t", "Red Bar (Electrocoin) (set 21)", - "ec_redbr__u", "Red Bar (Electrocoin) (set 22)", - "ec_redbr__v", "Red Bar (Electrocoin) (set 23)", - "ec_redbr__w", "Red Bar (Electrocoin) (set 24)", - "ec_redbr__x", "Red Bar (Electrocoin) (set 25)", - "ec_redbr__y", "Red Bar (Electrocoin) (set 26)", - "ec_redbr__z", "Red Bar (Electrocoin) (set 27)", - "ec_sbarx", "Super Bar X (Electrocoin) (set 1)", - "ec_sbarx__0", "Super Bar X (Electrocoin) (set 28)", - "ec_sbarx__1", "Super Bar X (Electrocoin) (set 29)", - "ec_sbarx__2", "Super Bar X (Electrocoin) (set 30)", - "ec_sbarx__3", "Super Bar X (Electrocoin) (set 31)", - "ec_sbarx__4", "Super Bar X (Electrocoin) (set 32)", - "ec_sbarx__5", "Super Bar X (Electrocoin) (set 33)", - "ec_sbarx__6", "Super Bar X (Electrocoin) (set 34)", - "ec_sbarx__7", "Super Bar X (Electrocoin) (set 35)", - "ec_sbarx__8", "Super Bar X (Electrocoin) (set 36)", - "ec_sbarx__9", "Super Bar X (Electrocoin) (set 37)", - "ec_sbarx__a", "Super Bar X (Electrocoin) (set 2)", - "ec_sbarx__a0", "Super Bar X (Electrocoin) (set 64)", - "ec_sbarx__a1", "Super Bar X (Electrocoin) (set 65)", - "ec_sbarx__a2", "Super Bar X (Electrocoin) (set 66)", - "ec_sbarx__a3", "Super Bar X (Electrocoin) (set 67)", - "ec_sbarx__a4", "Super Bar X (Electrocoin) (set 68)", - "ec_sbarx__aa", "Super Bar X (Electrocoin) (set 38)", - "ec_sbarx__ab", "Super Bar X (Electrocoin) (set 39)", - "ec_sbarx__ac", "Super Bar X (Electrocoin) (set 40)", - "ec_sbarx__ad", "Super Bar X (Electrocoin) (set 41)", - "ec_sbarx__ae", "Super Bar X (Electrocoin) (set 42)", - "ec_sbarx__af", "Super Bar X (Electrocoin) (set 43)", - "ec_sbarx__ag", "Super Bar X (Electrocoin) (set 44)", - "ec_sbarx__ah", "Super Bar X (Electrocoin) (set 45)", - "ec_sbarx__ai", "Super Bar X (Electrocoin) (set 46)", - "ec_sbarx__aj", "Super Bar X (Electrocoin) (set 47)", - "ec_sbarx__ak", "Super Bar X (Electrocoin) (set 48)", - "ec_sbarx__al", "Super Bar X (Electrocoin) (set 49)", - "ec_sbarx__am", "Super Bar X (Electrocoin) (set 50)", - "ec_sbarx__an", "Super Bar X (Electrocoin) (set 51)", - "ec_sbarx__ao", "Super Bar X (Electrocoin) (set 52)", - "ec_sbarx__ap", "Super Bar X (Electrocoin) (set 53)", - "ec_sbarx__aq", "Super Bar X (Electrocoin) (set 54)", - "ec_sbarx__ar", "Super Bar X (Electrocoin) (set 55)", - "ec_sbarx__as", "Super Bar X (Electrocoin) (set 56)", - "ec_sbarx__at", "Super Bar X (Electrocoin) (set 57)", - "ec_sbarx__au", "Super Bar X (Electrocoin) (set 58)", - "ec_sbarx__av", "Super Bar X (Electrocoin) (set 59)", - "ec_sbarx__aw", "Super Bar X (Electrocoin) (set 60)", - "ec_sbarx__ax", "Super Bar X (Electrocoin) (set 61)", - "ec_sbarx__ay", "Super Bar X (Electrocoin) (set 62)", - "ec_sbarx__az", "Super Bar X (Electrocoin) (set 63)", - "ec_sbarx__b", "Super Bar X (Electrocoin) (set 3)", - "ec_sbarx__c", "Super Bar X (Electrocoin) (set 4)", - "ec_sbarx__d", "Super Bar X (Electrocoin) (set 5)", - "ec_sbarx__e", "Super Bar X (Electrocoin) (set 6)", - "ec_sbarx__f", "Super Bar X (Electrocoin) (set 7)", - "ec_sbarx__g", "Super Bar X (Electrocoin) (set 8)", - "ec_sbarx__h", "Super Bar X (Electrocoin) (set 9)", - "ec_sbarx__i", "Super Bar X (Electrocoin) (set 10)", - "ec_sbarx__j", "Super Bar X (Electrocoin) (set 11)", - "ec_sbarx__k", "Super Bar X (Electrocoin) (set 12)", - "ec_sbarx__l", "Super Bar X (Electrocoin) (set 13)", - "ec_sbarx__m", "Super Bar X (Electrocoin) (set 14)", - "ec_sbarx__n", "Super Bar X (Electrocoin) (set 15)", - "ec_sbarx__o", "Super Bar X (Electrocoin) (set 16)", - "ec_sbarx__p", "Super Bar X (Electrocoin) (set 17)", - "ec_sbarx__q", "Super Bar X (Electrocoin) (set 18)", - "ec_sbarx__r", "Super Bar X (Electrocoin) (set 19)", - "ec_sbarx__s", "Super Bar X (Electrocoin) (set 20)", - "ec_sbarx__t", "Super Bar X (Electrocoin) (set 21)", - "ec_sbarx__u", "Super Bar X (Electrocoin) (set 22)", - "ec_sbarx__v", "Super Bar X (Electrocoin) (set 23)", - "ec_sbarx__w", "Super Bar X (Electrocoin) (set 24)", - "ec_sbarx__x", "Super Bar X (Electrocoin) (set 25)", - "ec_sbarx__y", "Super Bar X (Electrocoin) (set 26)", - "ec_sbarx__z", "Super Bar X (Electrocoin) (set 27)", - "ec_sbxbr", "Super Bar X (Brunel Research) (set 1)", - "ec_sbxbra", "Super Bar X (Brunel Research) (set 2)", - "ec_sbxbrb", "Super Bar X (Brunel Research) (set 3)", - "ec_sbxbrc", "Super Bar X (Brunel Research) (set 4)", - "ec_sbxbrd", "Super Bar X (Brunel Research) (set 5)", - "ec_sbxbre", "Super Bar X (Brunel Research) (set 6)", - "ec_sbxbrf", "Super Bar X (Brunel Research) (set 7)", - "ec_sbxbrg", "Super Bar X (Brunel Research) (set 8)", - "ec_sbxbrh", "Super Bar X (Brunel Research) (set 9)", - "ec_secrt", "Secret Castle (v1) (Electrocoin)", - "ec_spbdx", "Super Bar X Deluxe (Electrocoin) (set 1)", - "ec_spbdx__a", "Super Bar X Deluxe (Electrocoin) (set 2)", - "ec_spbdx__b", "Super Bar X Deluxe (Electrocoin) (set 3)", - "ec_spbdx__c", "Super Bar X Deluxe (Electrocoin) (set 4)", - "ec_spbdx__d", "Super Bar X Deluxe (Electrocoin) (set 5)", - "ec_spbg7mab", "Super Big 7 (MAB PCB) (Electrocoin) (?)", - "ec_sphin", "Sphinx (v2) (Electrocoin) (set 1)", - "ec_sphina", "Sphinx (v2) (Electrocoin) (set 2)", - "ec_sphinb", "Sphinx (v1) (Electrocoin)", - "ec_stair", "Stairway To Heaven (v11) (Electrocoin)", - "ec_staira", "Stairway To Heaven (v1) (Electrocoin)", - "ec_stkex", "Stake X (Concept Games Ltd) (?)", - "ec_sumnc", "Casino Super Multi Nudger (Concept / Electrocoin Oxo) (?)", - "ec_sumnd", "Super Multi Nudger (Concept / Electrocoin Oxo) (?)", - "ec_supbxcon", "Super Bar X (MAB PCB) (Concept Games Ltd) (?)", - "ec_supbxmab", "Super Bar X (MAB PCB) (Electrocoin) (?)", - "ec_supmb", "Super Multi Bar (Concept Games Ltd) (?)", - "ec_suprl", "Super Reels (Electrocoin) (?)", - "ec_unk5", "unknown 'Electrocoin' Fruit Machines (Electrocoin) (set 1)", - "ec_unk5__a", "unknown 'Electrocoin' Fruit Machines (Electrocoin) (set 2)", - "ec_unk5__b", "unknown 'Electrocoin' Fruit Machines (Electrocoin) (set 3)", - "ec_unk5__c", "unknown 'Electrocoin' Fruit Machines (Electrocoin) (set 4)", - "ec_unkt", "unknown 'T' (MAB PCB?) (Concept Games Ltd) (?)", - "eca", "Emergency Call Ambulance", - "ecap", "Emergency Call Ambulance (US location test?)", - "ecax", "Emergency Call Ambulance (Export)", - "eclipse", "Eclipse", - "ecofghtr", "Eco Fighters (World 931203)", - "ecofghtra", "Eco Fighters (Asia 931203)", - "ecofghtrd", "Eco Fighters (World 931203 Phoenix Edition) (bootleg)", - "ecofghtrh", "Eco Fighters (Hispanic 931203)", - "ecofghtru", "Eco Fighters (USA 940215)", - "ecofghtru1", "Eco Fighters (USA 931203)", - "edf", "E.D.F. : Earth Defense Force", - "edfbl", "E.D.F. : Earth Defense Force (bootleg)", - "edfu", "E.D.F. : Earth Defense Force (North America)", - "edrandy", "The Cliffhanger - Edward Randy (World ver 3)", - "edrandy1", "The Cliffhanger - Edward Randy (World ver 1)", - "edrandy2", "The Cliffhanger - Edward Randy (World ver 2)", - "edrandyj", "The Cliffhanger - Edward Randy (Japan ver 3)", - "eforest", "Enchanted Forest (12XF528902, US)", - "eforesta", "Enchanted Forest (4VXFC818, NSW)", - "eforestb", "Enchanted Forest (3VXFC5343, New Zealand)", - "egghunt", "Egg Hunt", - "eggor", "Eggor", - "eggs", "Eggs (USA)", - "eggventr", "Egg Venture (Release 10)", - "eggventr2", "Egg Venture (Release 2)", - "eggventr7", "Egg Venture (Release 7)", - "eggventr8", "Egg Venture (Release 8)", - "eggventra", "Egg Venture (A.L. Release)", - "eggventrd", "Egg Venture Deluxe", - "ehrgeiz", "Ehrgeiz (US, EG3/VER.A)", - "ehrgeizaa", "Ehrgeiz (Asia, EG2/VER.A)", - "ehrgeizja", "Ehrgeiz (Japan, EG1/VER.A)", - "eightbll", "Eight Ball", - "eightfrc", "Eight Forces", - "eightman", "Eight Man (NGM-025)(NGH-025)", - "einning", "Extra Inning / Ball Park II", - "ejanhs", "E-Jan High School (Japan)", - "ejihon", "Ejihon Tantei Jimusyo (J 950613 V1.000)", - "ejollyx5", "Euro Jolly X5", - "ejollyx9", "Euro Jolly X9", - "ejsakura", "E-Jan Sakurasou (Japan, SYS386F V2.0)", - "ejsakura12", "E-Jan Sakurasou (Japan, SYS386F V1.2)", - "elandore", "Touryuu Densetsu Elan-Doree / Elan Doree - Legend of Dragoon (JUET 980922 V1.006)", - "eldorado", "El Dorado City of Gold", - "elecyoyo", "The Electric Yo-Yo (set 1)", - "elecyoyo2", "The Electric Yo-Yo (set 2)", - "elektra", "Elektra", - "elephfam", "Elephant Family (Italian, new)", - "elephfmb", "Elephant Family (Italian, old)", - "elevator", "Elevator Action", - "elevatorb", "Elevator Action (bootleg)", - "elgrande", "El Grande - 5 Card Draw (New)", - "elim2", "Eliminator (2 Players, set 1)", - "elim2a", "Eliminator (2 Players, set 2)", - "elim2c", "Eliminator (2 Players, cocktail)", - "elim4", "Eliminator (4 Players)", - "elim4p", "Eliminator (4 Players, prototype)", - "elvact2u", "Elevator Action II (Ver 2.2A 1995/02/20)", - "elvactr", "Elevator Action Returns (Ver 2.2O 1995/02/20)", - "elvactrj", "Elevator Action Returns (Ver 2.2J 1995/02/20)", - "elvis", "Elvis?", - "elvisf", "Elvis (5.00 France)", - "elvisf302", "Elvis (3.02 France)", - "elvisf303", "Elvis (3.03 France)", - "elvisf4", "Elvis (4.00 France)", - "elvisg", "Elvis (5.00 Germany)", - "elvisg302", "Elvis (3.02 Germany)", - "elvisg303", "Elvis (3.03 Germany)", - "elvisg4", "Elvis (4.00 Germany)", - "elvisi", "Elvis (5.00 Italy)", - "elvisi302", "Elvis (3.02 Italy)", - "elvisi303", "Elvis (3.03 Italy)", - "elvisi4", "Elvis (4.00 Italy)", - "elvisl", "Elvis (5.00 Spain)", - "elvisl302", "Elvis (3.02 Spain)", - "elvisl303", "Elvis (3.03 Spain)", - "elvisl4", "Elvis (4.00 Spain)", - "elvisp", "Elvis (5.00)", - "elvisp302", "Elvis (3.02)", - "elvisp303", "Elvis (3.03)", - "elvisp4", "Elvis (4.00)", - "embargo", "Embargo", - "embryon", "Embryon", - "emeralda", "Emeraldia (World)", - "emeraldaj", "Emeraldia (Japan Version B)", - "emeraldaja", "Emeraldia (Japan)", - "empcity", "Empire City: 1931 (bootleg?)", - "empcityi", "Empire City: 1931 (Italy)", - "empcityj", "Empire City: 1931 (Japan)", - "empcityu", "Empire City: 1931 (US)", - "empsback", "The Empire Strike Back", - "enchfrst", "Enchanted Forest (0400122V, Local)", - "enchlamp", "Enchanted Lamp (Konami Endeavour)", - "endless", "Gundam Wing: Endless Duel (SNES bootleg)", - "endurob2", "Enduro Racer (bootleg set 2)", - "endurobl", "Enduro Racer (bootleg set 1)", - "enduror", "Enduro Racer (YM2151, FD1089B 317-0013A)", - "enduror1", "Enduro Racer (YM2203, FD1089B 317-0013A)", - "enforce", "Enforce (World)", - "enforcej", "Enforce (Japan)", - "enforceja", "Enforce (Japan, Analog Controls)", - "enigma2", "Enigma II", - "enigma2a", "Enigma II (Space Invaders hardware)", - "enigma2b", "Phantoms II (Space Invaders hardware)", - "ep_21clb", "Twenty One Club (Maygay) (EPOCH) (3.2, set 1)", - "ep_21clba", "Twenty One Club (Maygay) (EPOCH) (3.2, set 2)", - "ep_25crt", "25 Carrot Gold (Maygay) (EPOCH) (1.2, set 1)", - "ep_25crta", "25 Carrot Gold (Maygay) (EPOCH) (1.1, set 2)", - "ep_25crtb", "25 Carrot Gold (Maygay) (EPOCH) (3.1, set 3)", - "ep_25crtc", "25 Carrot Gold (Maygay) (EPOCH) (4.1, set 4)", - "ep_25crtd", "25 Carrot Gold (Maygay) (EPOCH) (5.1, set 5)", - "ep_bartk", "Bar Trekkin (Maygay) (EPOCH) (4.5, set 1)", - "ep_bartka", "Bar Trekkin (Maygay) (EPOCH) (3.9, set 2)", - "ep_bartkb", "Bar Trekkin (Maygay) (EPOCH) (3.9, set 3)", - "ep_bartkc", "Bar Trekkin (Maygay) (EPOCH) (4.4, set 4)", - "ep_bartkd", "Bar Trekkin (Maygay) (EPOCH) (4.4, set 5)", - "ep_bartke", "Bar Trekkin (Maygay) (EPOCH) (4.5, set 6)", - "ep_bartkf", "Bar Trekkin (Maygay) (EPOCH) (4.2, set 7)", - "ep_baskr", "Pounds Of The Baskervilles (Maygay) (EPOCH) (1.7, set 1)", - "ep_baskra", "Pounds Of The Baskervilles (Maygay) (EPOCH) (2.2, set 2)", - "ep_baskrb", "Pounds Of The Baskervilles (Maygay) (EPOCH) (2.2, set 3)", - "ep_baskrc", "Pounds Of The Baskervilles (Maygay) (EPOCH) (1.7, set 4)", - "ep_baskrd", "Pounds Of The Baskervilles (Maygay) (EPOCH) (2.1, set 5)", - "ep_baskre", "Pounds Of The Baskervilles (Maygay) (EPOCH) (1.5, set 6)", - "ep_bathl", "Bat Outa Hell (Global) (EPOCH) (2.1, set 1)", - "ep_bathla", "Bat Outa Hell (Global) (EPOCH) (2.1, set 2)", - "ep_bathlb", "Bat Outa Hell (Global) (EPOCH) (2.2, set 3)", - "ep_bathlc", "Bat Outa Hell (Global) (EPOCH) (2.2, set 4)", - "ep_bathld", "Bat Outa Hell (Global) (EPOCH) (3.1, set 5)", - "ep_bathle", "Bat Outa Hell (Global) (EPOCH) (3.1, set 6)", - "ep_bathlf", "Bat Outa Hell (Global) (EPOCH) (4.1, set 7)", - "ep_bathlg", "Bat Outa Hell (Global) (EPOCH) (4.1, set 8)", - "ep_bathlh", "Bat Outa Hell (Global) (EPOCH) (3.3, set 9)", - "ep_batls", "Battleships (Maygay) (EPOCH) (2.2, set 1)", - "ep_batlsa", "Battleships (Maygay) (EPOCH) (2.2, set 2)", - "ep_batlsb", "Battleships (Maygay) (EPOCH) (1.9, set 3)", - "ep_batlsc", "Battleships (Maygay) (EPOCH) (1.9, set 4)", - "ep_bbars", "Balloon Bars (Maygay) (EPOCH) (1.2, set 1)", - "ep_bbarsa", "Balloon Bars (Maygay) (EPOCH) (1.2, set 2)", - "ep_bbarsb", "Balloon Bars (Maygay) (EPOCH) (2.0, set 3)", - "ep_bbarsc", "Balloon Bars (Maygay) (EPOCH) (2.0, set 4)", - "ep_bbonz", "Bingo Bonanza (Maygay - Union) (EPOCH) (set 1)", - "ep_bbonza", "Bingo Bonanza (Maygay - Union) (EPOCH) (set 2)", - "ep_beav3", "Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 3.3, set 1)", - "ep_beav3a", "Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 3.3, set 2)", - "ep_beav3b", "Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 4.2, set 3)", - "ep_beav3c", "Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 4.2, set 4)", - "ep_beavr", "Casino Beaver Las Vegas (Global) (EPOCH) (set 1)", - "ep_beavra", "Casino Beaver Las Vegas (Global) (EPOCH) (set 2)", - "ep_beavrb", "Casino Beaver Las Vegas (Global) (EPOCH) (set 3)", - "ep_beavrc", "Casino Beaver Las Vegas (Global) (EPOCH) (set 4)", - "ep_beavrd", "Casino Beaver Las Vegas (Global) (EPOCH) (set 5)", - "ep_beavre", "Casino Beaver Las Vegas (Global) (EPOCH) (set 6)", - "ep_beavrf", "Casino Beaver Las Vegas (Global) (EPOCH) (set 7)", - "ep_beavrg", "Casino Beaver Las Vegas (Global) (EPOCH) (set 8)", - "ep_beavrh", "Casino Beaver Las Vegas (Global) (EPOCH) (set 9)", - "ep_beavri", "Casino Beaver Las Vegas (Global) (EPOCH) (set 10)", - "ep_beavrj", "Casino Beaver Las Vegas (Global) (EPOCH) (set 11)", - "ep_beavrk", "Casino Beaver Las Vegas (Global) (EPOCH) (set 12)", - "ep_beavrl", "Casino Beaver Las Vegas (Global) (EPOCH) (set 13)", - "ep_beavrm", "Casino Beaver Las Vegas (Global) (EPOCH) (set 14)", - "ep_beavrn", "Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 2.3, set 5)", - "ep_beavro", "Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 2.3, set 6)", - "ep_bingb", "Bingo Belle (Maygay) (EPOCH) (1.3, set 1)", - "ep_bingba", "Bingo Belle (Maygay) (EPOCH) (1.3, set 2)", - "ep_bjclb", "Blackjack Club, The (Global) (EPOCH)", - "ep_braid", "Bank Raid (Extreme) (EPOCH) (BARA 0.1, set 1)", - "ep_braida", "Bank Raid (Extreme) (EPOCH) (BARA 0.1, set 2)", - "ep_braidb", "Bank Raid (Extreme) (EPOCH) (BARA 0.5, set 3)", - "ep_braidc", "Bank Raid (Extreme) (EPOCH) (BARA 0.5, set 4)", - "ep_braidd", "Bank Raid (Extreme) (EPOCH) (BARA 0.5, set 5)", - "ep_braide", "Bank Raid (Extreme) (EPOCH) (BARA 0.5, set 6)", - "ep_bubsq", "Bubble & Squeak (Extreme) (EPOCH) (BASQ 0.2, set 1)", - "ep_bubsqa", "Bubble & Squeak (Extreme) (EPOCH) (BASQ 0.2, set 2)", - "ep_bubsqb", "Bubble & Squeak (Extreme) (EPOCH) (BASQ 0.3, set 3)", - "ep_bubsqc", "Bubble & Squeak (Extreme) (EPOCH) (BASQ 0.3, set 4)", - "ep_bubsqd", "Bubble & Squeak (Extreme) (EPOCH) (BASQ 0.4, set 5)", - "ep_bvrcl", "Beaver Las Vegas Club (Global) (EPOCH) (set 1)", - "ep_bvrcla", "Beaver Las Vegas Club (Global) (EPOCH) (set 2)", - "ep_bvrclb", "Beaver Las Vegas Club (Global) (EPOCH) (set 3)", - "ep_bvrclc", "Beaver Las Vegas Club (Global) (EPOCH) (set 4)", - "ep_bvrcld", "Beaver Las Vegas Club (Global) (EPOCH) (set 5)", - "ep_bvrcle", "Beaver Las Vegas Club (Global) (EPOCH) (set 6)", - "ep_bvrclf", "Beaver Las Vegas Club (Global) (EPOCH) (set 7)", - "ep_bvrclg", "Beaver Las Vegas Club (Global) (EPOCH) (set 8)", - "ep_bvrclh", "Beaver Las Vegas Club (Global) (EPOCH) (set 9)", - "ep_bvrcli", "Beaver Las Vegas Club (Global) (EPOCH) (set 10)", - "ep_bvrclj", "Beaver Las Vegas Club (Global) (EPOCH) (set 11)", - "ep_bvrclk", "Beaver Las Vegas Club (Global) (EPOCH) (set 12)", - "ep_bvruc", "Beaver Uncovered (Global) (EPOCH) (1.4, set 1)", - "ep_bvruca", "Beaver Uncovered (Global) (EPOCH) (1.4, set 2)", - "ep_bvrucb", "Beaver Uncovered (Global) (EPOCH) (1.6, set 3)", - "ep_bvrucc", "Beaver Uncovered (Global) (EPOCH) (2.3, set 4)", - "ep_cahoy", "Cash Ahoy (Maygay - Eclipse?) (EPOCH) (set 1)", - "ep_cahoya", "Cash Ahoy (Maygay) (EPOCH) (set 2)", - "ep_cahoyb", "Cash Ahoy (Maygay) (EPOCH) (set 3)", - "ep_calyp", "Calypso (Maygay) (EPOCH) (2.2, set 1)", - "ep_calypa", "Calypso (Maygay) (EPOCH) (2.2, set 2)", - "ep_cascz", "Casino Crazy (Global) (EPOCH) (set 1)", - "ep_cascza", "Casino Crazy (Global) (EPOCH) (2.1, set 2)", - "ep_casgc", "Casino Grand Club (Maygay) (EPOCH) (1.1, set 1)", - "ep_casgca", "Casino Grand Club (Maygay) (EPOCH) (1.1, set 2)", - "ep_casgcb", "Casino Grand Club (Maygay) (EPOCH) (1.4, set 3)", - "ep_casgcc", "Casino Grand Club (Maygay) (EPOCH) (1.4, set 4)", - "ep_cashn", "Cashino (Maygay - Extreme) (EPOCH) (CSHI 1.0, set 1)", - "ep_cashna", "Cashino (Maygay - Extreme) (EPOCH) (CSHI 1.0, set 2)", - "ep_casrd", "Casino Royale Deluxe Club (Maygay) (EPOCH) (1.5, set 1)", - "ep_casrda", "Casino Royale Deluxe Club (Maygay) (EPOCH) (1.3, set 2)", - "ep_cbrcl", "Cannonball Run Club (Global) (EPOCH) (set 1)", - "ep_cbrcla", "Cannonball Run Club (Global) (EPOCH) (set 2)", - "ep_cbrclb", "Cannonball Run Club (Global) (EPOCH) (set 3)", - "ep_cbrclc", "Cannonball Run Club (Global) (EPOCH) (set 4)", - "ep_cbrcld", "Cannonball Run Club (Global) (EPOCH) (set 5)", - "ep_cbrcle", "Cannonball Run Club (Global) (EPOCH) (set 6)", - "ep_cbrclf", "Cannonball Run Club (Global) (EPOCH) (set 7)", - "ep_cbrclg", "Cannonball Run Club (Global) (EPOCH) (set 8)", - "ep_cbrclh", "Cannonball Run Club (Global) (EPOCH) (set 9)", - "ep_cbrcli", "Cannonball Run Club (Global) (EPOCH) (set 10)", - "ep_cbrclj", "Cannonball Run Club (Global) (EPOCH) (set 11)", - "ep_cbrclk", "Cannonball Run Club (Global) (EPOCH) (set 12)", - "ep_cbrun", "Cannonball Run (Global) (EPOCH) (2.2, set 1)", - "ep_cbruna", "Cannonball Run (Global) (EPOCH) (2.2, set 2)", - "ep_cbrunb", "Cannonball Run (Global) (EPOCH) (2.4, set 3)", - "ep_cbrunc", "Cannonball Run (Global) (EPOCH) (2.4, set 4)", - "ep_cbrund", "Cannonball Run (Global) (EPOCH) (3.1, set 5)", - "ep_cbrune", "Cannonball Run (Global) (EPOCH) (3.1, set 6)", - "ep_cclas", "Casino Classic (Global) (EPOCH) (set 1)", - "ep_cclasa", "Casino Classic (Global) (EPOCH) (set 2)", - "ep_ccock", "Cash Cocktail (Maygay) (EPOCH) (1.1, set 1)", - "ep_ccocka", "Cash Cocktail (Maygay) (EPOCH) (1.1, set 2)", - "ep_ccockb", "Cash Cocktail (Maygay) (EPOCH) (1.1, set 3)", - "ep_ccockc", "Cash Cocktail (Maygay) (EPOCH) (1.1, set 4)", - "ep_cdspn", "Cardinal Spin (Maygay) (EPOCH) (1.1, set 1)", - "ep_cdspna", "Cardinal Spin (Maygay) (EPOCH) (1.1, set 2)", - "ep_cfall", "Cash Falls (Maygay) (EPOCH) (1.2, set 1)", - "ep_cfalla", "Cash Falls (Maygay) (EPOCH) (1.3, set 2)", - "ep_cfallb", "Cash Falls (Maygay) (EPOCH) (1.3, set 3)", - "ep_cfallc", "Cash Falls (Maygay) (EPOCH) (2.3, set 4)", - "ep_cfalld", "Cash Falls (Maygay) (EPOCH) (2.3, set 5)", - "ep_cfalle", "Cash Falls (Maygay) (EPOCH) (3.2, set 6)", - "ep_cfallf", "Cash Falls (Maygay) (EPOCH) (3.2, set 7)", - "ep_cflow", "Cash Flow (Maygay) (EPOCH) (3.7, set 1)", - "ep_cflowa", "Cash Flow (Maygay) (EPOCH) (3.2, set 2)", - "ep_cflowc", "Cash Flow (Maygay) (EPOCH) (3.A, set 3)", - "ep_cflowd", "Cash Flow (Maygay) (EPOCH) (3.A, set 4)", - "ep_cgord", "Cash Gordon (Maygay) (EPOCH) (2.1, set 1)", - "ep_cgorda", "Cash Gordon (Maygay) (EPOCH) (2.3, set 2)", - "ep_cgordb", "Cash Gordon (Maygay) (EPOCH) (2.3, set 3)", - "ep_cgordc", "Cash Gordon (Maygay) (EPOCH) (1.9, set 4)", - "ep_cgrc", "Casino Grand Classic (Global) (EPOCH) (set 1)", - "ep_cgrca", "Casino Grand Classic (Global) (EPOCH) (set 2)", - "ep_cgred", "Club Greed (Global) (EPOCH) (set 1)", - "ep_cgreda", "Club Greed (Global) (EPOCH) (set 2)", - "ep_chock", "Chocks Away (Maygay) (EPOCH) (1.1, set 1)", - "ep_chocka", "Chocks Away (Maygay) (EPOCH) (1.1, set 2)", - "ep_chockb", "Chocks Away (Maygay) (EPOCH) (1.1, set 3)", - "ep_cock", "Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 1)", - "ep_cocka", "Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 2)", - "ep_cockb", "Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 3)", - "ep_cockc", "Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 4)", - "ep_cockd", "Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 5)", - "ep_cocke", "Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 6)", - "ep_commd", "Complete Madness (Maygay) (EPOCH) (2.2, set 1)", - "ep_commda", "Complete Madness (Maygay) (EPOCH) (2.2, set 2)", - "ep_commdb", "Complete Madness (Maygay) (EPOCH) (1.1, set 3)", - "ep_commdc", "Complete Madness (Maygay) (EPOCH) (1.2, set 4)", - "ep_commdd", "Complete Madness (Maygay) (EPOCH) (2.1, set 5)", - "ep_cor2", "Coronation Street 2 (Maygay) (EPOCH) (3.7, set 1)", - "ep_cor2a", "Coronation Street 2 (Maygay) (EPOCH) (3.7, set 2)", - "ep_cor2b", "Coronation Street 2 (Maygay) (EPOCH) (3.8, set 3)", - "ep_cor2c", "Coronation Street 2 (Maygay) (EPOCH) (3.8, set 4)", - "ep_cormn", "Coronation Street Monopoly Club (Maygay) (EPOCH) (1.7, set 1)", - "ep_cormna", "Coronation Street Monopoly Club (Maygay) (EPOCH) (1.7, set 2)", - "ep_cosc", "Carry On Screaming (Maygay) (EPOCH) (1.3, set 1)", - "ep_cosca", "Carry On Screaming (Maygay) (EPOCH) (1.3, set 2)", - "ep_cow", "Carry On Winning (Maygay) (EPOCH) (1.3, set 1)", - "ep_cowa", "Carry On Winning (Maygay) (EPOCH) (1.3, set 2)", - "ep_crazy", "Reel Crazy (Maygay) (EPOCH) (1.6, set 1)", - "ep_crazya", "Reel Crazy (Maygay) (EPOCH) (1.6, set 2)", - "ep_crazyb", "Reel Crazy (Maygay) (EPOCH) (2.6, set 3)", - "ep_crazyc", "Reel Crazy (Maygay) (EPOCH) (2.6, set 4)", - "ep_crazyd", "Reel Crazy (Maygay) (EPOCH) (1.9, set 5)", - "ep_crazye", "Reel Crazy (Maygay) (EPOCH) (1.9, set 6)", - "ep_crzbn", "Crazy Bingo (Maygay) (EPOCH) (1.1, set 1)", - "ep_crzbna", "Crazy Bingo (Maygay) (EPOCH) (1.1, set 2)", - "ep_crzbnb", "Crazy Bingo (Maygay) (EPOCH) (1.1 Gala, set 3)", - "ep_crzbnc", "Crazy Bingo (Maygay) (EPOCH) (1.1 Gala, set 4)", - "ep_cshpn", "Cash In The Pan (Maygay) (EPOCH) (1.1, set 1)", - "ep_cshpna", "Cash In The Pan (Maygay) (EPOCH) (1.1, set 2)", - "ep_cslay", "Cash Slayer (Global) (EPOCH) (1.4, set 1)", - "ep_cslaya", "Cash Slayer (Global) (EPOCH) (set 2)", - "ep_cstrk", "Crazy Streak Club (Global) (EPOCH) (set 1)", - "ep_cstrka", "Crazy Streak Club (Global) (EPOCH) (set 2)", - "ep_cstrkb", "Crazy Streak Club (Global) (EPOCH) (set 3)", - "ep_cstrkc", "Crazy Streak Club (Global) (EPOCH) (set 4)", - "ep_cstrkd", "Crazy Streak Club (Global) (EPOCH) (set 5)", - "ep_cstrke", "Crazy Streak Club (Global) (EPOCH) (set 6)", - "ep_cstrkf", "Crazy Streak Club (Global) (EPOCH) (set 7)", - "ep_cstrkg", "Crazy Streak Club (Global) (EPOCH) (set 8)", - "ep_ctc", "Cut Throat Cash (Global) (EPOCH) (1.2, set 1)", - "ep_ctca", "Cut Throat Cash (Global) (EPOCH) (1.2, set 2)", - "ep_ctit", "Cash Of The Titans (Maygay) (EPOCH) (1.5, set 1)", - "ep_ctita", "Cash Of The Titans (Maygay) (EPOCH) (1.5, set 2)", - "ep_cyc", "Cyclone (Extreme) (EPOCH) (CYCL 0.2, set 1)", - "ep_cyca", "Cyclone (Extreme) (EPOCH) (CYCL 0.2, set 2)", - "ep_cycb", "Cyclone (Extreme) (EPOCH) (CYCL 0.3, set 3)", - "ep_cycc", "Cyclone (Extreme) (EPOCH) (CYCL 0.3, set 4)", - "ep_cycd", "Cyclone (Extreme) (EPOCH) (CYCL 0.1, set 5)", - "ep_cyce", "Cyclone (Extreme) (EPOCH) (CYCL 0.1, set 6)", - "ep_cycl", "Cyclone Club (Maygay) (EPOCH) (3.1, set 1)", - "ep_cycla", "Cyclone Club (Maygay) (EPOCH) (3.1, set 2)", - "ep_cyclb", "Cyclone Club (Maygay) (EPOCH) (2.1, set 3)", - "ep_dblim", "Double Impact (Maygay - Impulse) (EPOCH) (set 1)", - "ep_dblima", "Double Impact (Maygay - Impulse) (EPOCH) (set 2)", - "ep_dblimb", "Double Impact (Maygay - Impulse) (EPOCH) (set 3)", - "ep_dblimc", "Double Impact (Maygay - Impulse) (EPOCH) (set 4)", - "ep_dblimd", "Double Impact (Maygay - Impulse) (EPOCH) (set 5)", - "ep_ddq", "Dungeons & Drag Queens (Global) (EPOCH) (1.4, set 1)", - "ep_ddqa", "Dungeons & Drag Queens (Global) (EPOCH) (1.4, set 2)", - "ep_ddqb", "Dungeons & Drag Queens (Global) (EPOCH) (2.1, set 3)", - "ep_ddqc", "Dungeons & Drag Queens (Global) (EPOCH) (2.1, set 4)", - "ep_ddqcl", "Dungeons & Drag Queens Club (Global) (EPOCH) (set 1)", - "ep_ddqcla", "Dungeons & Drag Queens Club (Global) (EPOCH) (set 2)", - "ep_ddqclb", "Dungeons & Drag Queens Club (Global) (EPOCH) (set 3)", - "ep_ddqclc", "Dungeons & Drag Queens Club (Global) (EPOCH) (set 4)", - "ep_ddqcld", "Dungeons & Drag Queens Club (Global) (EPOCH) (set 5)", - "ep_ddqcle", "Dungeons & Drag Queens Club (Global) (EPOCH) (set 6)", - "ep_ddqclf", "Dungeons & Drag Queens Club (Global) (EPOCH) (set 7)", - "ep_ddqclg", "Dungeons & Drag Queens Club (Global) (EPOCH) (set 8)", - "ep_ddqd", "Dungeons & Drag Queens (Global) (EPOCH) (2.2, set 5)", - "ep_ddqe", "Dungeons & Drag Queens (Global) (EPOCH) (2.2, set 6)", - "ep_ddqf", "Dungeons & Drag Queens (Global) (EPOCH) (2.4, set 7)", - "ep_ddqg", "Dungeons & Drag Queens (Global) (EPOCH) (2.4, set 8)", - "ep_ddqh", "Dungeons & Drag Queens (Global) (EPOCH) (2.5, set 9)", - "ep_ddqi", "Dungeons & Drag Queens (Global) (EPOCH) (2.5, set 10)", - "ep_dmbus", "Dambusters (Impulse) (EPOCH) (set 1)", - "ep_dmbusa", "Dambusters (Impulse) (EPOCH) (set 2)", - "ep_dmbusb", "Dambusters (Impulse) (EPOCH) (set 3)", - "ep_dmbusc", "Dambusters (Impulse) (EPOCH) (set 4)", - "ep_dmbusd", "Dambusters (Impulse) (EPOCH) (set 5)", - "ep_dmbuse", "Dambusters (Impulse) (EPOCH) (set 6)", - "ep_dmbusf", "Dambusters (Impulse) (EPOCH) (set 7)", - "ep_doubl", "Double Top (Maygay) (EPOCH) (1.4, set 1)", - "ep_doubla", "Double Top (Maygay) (EPOCH) (1.4, set 2)", - "ep_doublb", "Double Top (Maygay) (EPOCH) (1.6, set 3)", - "ep_doublc", "Double Top (Maygay) (EPOCH) (1.6, set 4)", - "ep_doubld", "Double Top (Maygay) (EPOCH) (1.4, set 5)", - "ep_duff", "The Simpsons - Duff Beer Guide (Maygay) (EPOCH) (set 1)", - "ep_duffa", "The Simpsons - Duff Beer Guide (Maygay) (EPOCH) (set 2)", - "ep_duffb", "The Simpsons - Duff Beer Guide (Maygay) (EPOCH) (set 3)", - "ep_duffc", "The Simpsons - Duff Beer Guide (Maygay) (EPOCH) (set 4)", - "ep_evil", "Evil Streak (Maygay) (EPOCH) (1.6, set 1)", - "ep_evila", "Evil Streak (Maygay) (EPOCH) (1.6, set 2)", - "ep_evilb", "Evil Streak (Maygay) (EPOCH) (1.4, set 3)", - "ep_fgods", "Fruit Of The Gods (Maygay) (EPOCH) (1.2, set 1)", - "ep_fgodsa", "Fruit Of The Gods (Maygay) (EPOCH) (1.2, set 2)", - "ep_fgodsb", "Fruit Of The Gods (Maygay) (EPOCH) (2.2, set 3)", - "ep_fgodsc", "Fruit Of The Gods (Maygay) (EPOCH) (2.2, set 4)", - "ep_fgodsd", "Fruit Of The Gods (Maygay) (EPOCH) (2.1, set 5)", - "ep_fgodse", "Fruit Of The Gods (Maygay) (EPOCH) (3.2, set 6)", - "ep_fgodsf", "Fruit Of The Gods (Maygay) (EPOCH) (1.1, set 7)", - "ep_fgodsg", "Fruit Of The Gods (Maygay) (EPOCH) (1.1, set 8)", - "ep_flash", "Flashback (Maygay - Impulse) (EPOCH) (set 1)", - "ep_flasha", "Flashback (Maygay - Impulse) (EPOCH) (set 2)", - "ep_flashb", "Flashback (Maygay - Impulse) (EPOCH) (set 3)", - "ep_flashc", "Flashback (Maygay - Impulse) (EPOCH) (set 4)", - "ep_flashd", "Flashback (Maygay - Impulse) (EPOCH) (set 5)", - "ep_flashe", "Flashback (Maygay - Impulse) (EPOCH) (set 6)", - "ep_flashf", "Flashback (Maygay - Impulse) (EPOCH) (set 7)", - "ep_fmf", "Full Moon Fever (Global) (EPOCH) (set 1)", - "ep_fmfa", "Full Moon Fever (Global) (EPOCH) (set 2)", - "ep_fnclb", "Fruit & Nudge Club (Maygay) (EPOCH) (set 1)", - "ep_fnclba", "Fruit & Nudge Club (Maygay) (EPOCH) (set 2)", - "ep_fog", "Fields of Gold (Global) (EPOCH) (set 1)", - "ep_foga", "Fields of Gold (Global) (EPOCH) (set 2)", - "ep_fortg", "Fortune & Glory (Maygay - Impulse) (EPOCH) (set 1)", - "ep_fortga", "Fortune & Glory (Maygay - Impulse) (EPOCH) (set 2)", - "ep_fortgb", "Fortune & Glory (Maygay - Impulse) (EPOCH) (set 3)", - "ep_fran", "Frantic (Maygay) (EPOCH) (set 1)", - "ep_frana", "Frantic (Maygay) (EPOCH) (set 2)", - "ep_fullm", "Full Moon Fever (Maygay - Impulse) (EPOCH) (set 1)", - "ep_fullma", "Full Moon Fever (Maygay - Impulse) (EPOCH) (set 2)", - "ep_fullmb", "Full Moon Fever (Maygay - Impulse) (EPOCH) (set 3)", - "ep_fullmc", "Full Moon Fever (Maygay - Impulse) (EPOCH) (set 4)", - "ep_fullmd", "Full Moon Fever (Maygay - Impulse) (EPOCH) (set 5)", - "ep_fullme", "Full Moon Fever (Maygay - Impulse) (EPOCH) (set 6)", - "ep_fullmf", "Full Moon Fever (Maygay - Impulse) (EPOCH) (set 7)", - "ep_funny", "Funny Money (Maygay) (EPOCH) (set 1)", - "ep_funnya", "Funny Money (Maygay) (EPOCH) (set 2)", - "ep_funnyb", "Funny Money (Maygay) (EPOCH) (set 3)", - "ep_funnyc", "Funny Money (Maygay) (EPOCH) (set 4)", - "ep_funnyd", "Funny Money (Maygay) (EPOCH) (set 5)", - "ep_funnye", "Funny Money (Maygay) (EPOCH) (set 6)", - "ep_funnyf", "Funny Money (Maygay) (EPOCH) (set 7)", - "ep_funnyg", "Funny Money (Maygay) (EPOCH) (set 8)", - "ep_geclb", "Great Escape Club (Maygay) (EPOCH) (1.C, set 1)", - "ep_geclba", "Great Escape Club (Maygay) (EPOCH) (1.C, set 2)", - "ep_geclbb", "Great Escape Club (Maygay) (EPOCH) (1.9, set 3)", - "ep_geron", "Geronimo (Maygay - Impulse) (EPOCH) (set 1)", - "ep_gerona", "Geronimo (Maygay - Impulse) (EPOCH) (set 2)", - "ep_geronb", "Geronimo (Maygay - Impulse) (EPOCH) (set 3)", - "ep_geronc", "Geronimo (Maygay - Impulse) (EPOCH) (set 4)", - "ep_gerond", "Geronimo (Maygay - Impulse) (EPOCH) (set 5)", - "ep_gerone", "Geronimo (Maygay - Impulse) (EPOCH) (set 6)", - "ep_gesc2", "Great Escape 2 (Maygay) (EPOCH) (2.1, set 1)", - "ep_gesc2a", "Great Escape 2 (Maygay) (EPOCH) (2.1, set 2)", - "ep_gldtp", "Gold Top (Maygay) (EPOCH) (1.1, set 1)", - "ep_gldtpa", "Gold Top (Maygay) (EPOCH) (1.1, set 2)", - "ep_goldf", "Gold Fever (Impulse) (EPOCH)", - "ep_greed", "Greed (Global) (EPOCH) (1.3, set 1)", - "ep_greeda", "Greed (Global) (EPOCH) (1.3, set 2)", - "ep_gresc", "Great Escape (Maygay) (EPOCH) (1.1, set 1)", - "ep_gresca", "Great Escape (Maygay) (EPOCH) (1.1, set 2)", - "ep_gridr", "Gridrunner (Maygay - Impulse) (EPOCH) (set 1)", - "ep_gridra", "Gridrunner (Maygay - Impulse) (EPOCH) (set 2)", - "ep_gridrb", "Gridrunner (Maygay - Impulse) (EPOCH) (set 3)", - "ep_gridrc", "Gridrunner (Maygay - Impulse) (EPOCH) (set 4)", - "ep_gridrd", "Gridrunner (Maygay - Impulse) (EPOCH) (set 5)", - "ep_grncl", "Grid Runner Club (Global) (EPOCH) (set 1)", - "ep_grncla", "Grid Runner Club (Global) (EPOCH) (set 2)", - "ep_grnclb", "Grid Runner Club (Global) (EPOCH) (set 3)", - "ep_grnclc", "Grid Runner Club (Global) (EPOCH) (set 4)", - "ep_grun", "Grid Runner (Global) (EPOCH) (set 1)", - "ep_gruna", "Grid Runner (Global) (EPOCH) (set 2)", - "ep_gtrot", "Globe Trotter (Global) (EPOCH) (set 1)", - "ep_gtrota", "Globe Trotter (Global) (EPOCH) (set 2)", - "ep_heybc", "Hey Big Spender Club (Global) (EPOCH) (set 1)", - "ep_heybca", "Hey Big Spender Club (Global) (EPOCH) (set 2)", - "ep_heybg", "Hey Big Spender (Global) (EPOCH) (set 1)", - "ep_heybga", "Hey Big Spender (Global) (EPOCH) (set 2)", - "ep_heybgb", "Hey Big Spender (Global) (EPOCH) (set 3)", - "ep_heybgc", "Hey Big Spender (Global) (EPOCH) (set 4)", - "ep_hhclb", "Haunted House Club (Maygay) (EPOCH) (1.4, set 1)", - "ep_hhclba", "Haunted House Club (Maygay) (EPOCH) (1.4, set 2)", - "ep_hhclbb", "Haunted House Club (Maygay) (EPOCH) (1.1, set 3)", - "ep_hhclbc", "Haunted House Club (Maygay) (EPOCH) (1.1, set 4)", - "ep_highv", "High Voltage (Maygay - Impulse) (EPOCH) (set 1)", - "ep_highva", "High Voltage (Maygay - Impulse) (EPOCH) (set 2)", - "ep_highvb", "High Voltage (Maygay - Impulse) (EPOCH) (set 3)", - "ep_highvc", "High Voltage (Maygay - Impulse) (EPOCH) (set 4)", - "ep_highvd", "High Voltage (Maygay - Impulse) (EPOCH) (set 5)", - "ep_highve", "High Voltage (Maygay - Impulse) (EPOCH) (set 6)", - "ep_highvf", "High Voltage (Maygay - Impulse) (EPOCH) (set 7)", - "ep_hiscl", "Hi Spirits Club (Global) (EPOCH) (set 1)", - "ep_hiscla", "Hi Spirits Club (Global) (EPOCH) (set 2)", - "ep_hispr", "Hi Spirits (Global) (EPOCH) (1.A, set 1)", - "ep_hispra", "Hi Spirits (Global) (EPOCH) (1.A, set 2)", - "ep_hisprb", "Hi Spirits (Global) (EPOCH) (4.2, set 3)", - "ep_hisprc", "Hi Spirits (Global) (EPOCH) (4.2, set 4)", - "ep_hisprd", "Hi Spirits (Global) (EPOCH) (3.2, set 5)", - "ep_hispre", "Hi Spirits (Global) (EPOCH) (3.2, set 6)", - "ep_hogmn", "Hog Money (Maygay - Impulse) (EPOCH) (set 1)", - "ep_hogmna", "Hog Money (Maygay - Impulse) (EPOCH) (set 2)", - "ep_hogmnb", "Hog Money (Maygay - Impulse) (EPOCH) (set 3)", - "ep_homer", "The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.A, set 1)", - "ep_homera", "The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (3.2, set 3)", - "ep_homerb", "The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (3.2, set 4)", - "ep_homerc", "The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.B, set 5)", - "ep_homerd", "The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.B, set 6)", - "ep_homere", "The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (3.1, set 7)", - "ep_homerf", "The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (3.1, set 8)", - "ep_homerg", "The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.1, set 9)", - "ep_homerh", "The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.1, set 10)", - "ep_homeri", "The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.9, set 2)", - "ep_htdgs", "Hot Dogs (Maygay) (EPOCH) (set 1)", - "ep_htdgsa", "Hot Dogs (Maygay) (EPOCH) (set 2)", - "ep_hubbl", "Hubble Bubble (Maygay) (EPOCH) (set 1)", - "ep_hubbla", "Hubble Bubble (Maygay) (EPOCH) (set 2)", - "ep_hur", "Hurricane (Global) (EPOCH) (set 1)", - "ep_hura", "Hurricane (Global) (EPOCH) (set 2)", - "ep_hurb", "Hurricane (Global) (EPOCH) (set 3)", - "ep_huric", "Hurricane (Maygay - Impulse) (EPOCH) (set 1)", - "ep_hurica", "Hurricane (Maygay - Impulse) (EPOCH) (set 2)", - "ep_huricb", "Hurricane (Maygay - Impulse) (EPOCH) (set 3)", - "ep_huricc", "Hurricane (Maygay - Impulse) (EPOCH) (set 4)", - "ep_huricd", "Hurricane (Maygay - Impulse) (EPOCH) (set 5)", - "ep_hurice", "Hurricane (Maygay - Impulse) (EPOCH) (set 6)", - "ep_hvns", "Heavens Above (Maygay) (EPOCH) (set 1)", - "ep_hvnsa", "Heavens Above (Maygay) (EPOCH) (set 2)", - "ep_hyst", "Hysteria (Maygay - Impulse) (EPOCH) (set 1)", - "ep_hysta", "Hysteria (Maygay - Impulse) (EPOCH) (set 2)", - "ep_icebg", "Ice Burger (Maygay) (EPOCH) (1.4, set 1)", - "ep_icebga", "Ice Burger (Maygay) (EPOCH) (1.2, set 2)", - "ep_icebgb", "Ice Burger (Maygay) (EPOCH) (1.4, set 3)", - "ep_icebgc", "Ice Burger (Maygay) (EPOCH) (1.3, set 4)", - "ep_icebgd", "Ice Burger (Maygay) (EPOCH) (1.1, set 5)", - "ep_icebge", "Ice Burger (Maygay) (EPOCH) (1.1, set 6)", - "ep_icebgf", "Ice Burger (Maygay) (EPOCH) (1.3, set 7)", - "ep_icebgg", "Ice Burger (Maygay) (EPOCH) (1.3, set 8)", - "ep_icebgh", "Ice Burger (Maygay) (EPOCH) (1.4, set 9)", - "ep_icebgi", "Ice Burger (Maygay) (EPOCH) (1.4, set 10)", - "ep_ifern", "Inferno (Impulse) (EPOCH) (set 1)", - "ep_iferna", "Inferno (Impulse) (EPOCH) (set 2)", - "ep_ijcl", "Italian Job Club (Maygay) (EPOCH) (2.6, set 1)", - "ep_ijcla", "Italian Job Club (Maygay) (EPOCH) (2.5, set 2)", - "ep_ijob", "Italian Job (Maygay) (EPOCH, v2.1)", - "ep_ijoba", "Italian Job (Maygay) (EPOCH, v1.1)", - "ep_imj", "I'm A Jackpot (Global) (EPOCH) (1.5)", - "ep_inca", "Inca Dinka Do (Maygay - Extreme) (EPOCH) (INCA 1.2, set 1)", - "ep_incaa", "Inca Dinka Do (Maygay - Extreme) (EPOCH) (INCA 1.2, set 2)", - "ep_incab", "Inca Dinka Do (Maygay - Extreme) (EPOCH) (INCA 1.1, set 3)", - "ep_itjb2", "Italian Job 2 (Maygay) (EPOCH) (1.5, set 1)", - "ep_itjb2a", "Italian Job 2 (Maygay) (EPOCH) (1.5, set 2)", - "ep_itjb2b", "Italian Job 2 (Maygay) (EPOCH) (2.3, set 3)", - "ep_itjb2c", "Italian Job 2 (Maygay) (EPOCH) (2.3, set 4)", - "ep_itjb3", "Italian Job 3 (Maygay) (EPOCH) (set 1)", - "ep_itjb3a", "Italian Job 3 (Maygay) (EPOCH) (set 2)", - "ep_jakbn", "Jackpot & The Beanstreak (Extreme) (EPOCH) (JABS 0.3, set 1)", - "ep_jakbna", "Jackpot & The Beanstreak (Extreme) (EPOCH) (JABS 0.3, set 2)", - "ep_jakbnb", "Jackpot & The Beanstreak (Extreme) (EPOCH) (JABS 0.5, set 3)", - "ep_jakbnc", "Jackpot & The Beanstreak (Extreme) (EPOCH) (JABS 0.5, set 4)", - "ep_jsttt", "Just The Ticket (Maygay) (EPOCH) (4.2, set 1)", - "ep_jsttta", "Just The Ticket (Maygay) (EPOCH) (4.2, set 2)", - "ep_jstttb", "Just The Ticket (Maygay) (EPOCH) (3.5, set 3)", - "ep_jstttc", "Just The Ticket (Maygay) (EPOCH) (3.4, set 4)", - "ep_jstttd", "Just The Ticket (Maygay) (EPOCH) (3.5, set 5)", - "ep_jsttte", "Just The Ticket (Maygay) (EPOCH) (3.5, set 6)", - "ep_jstttf", "Just The Ticket (Maygay) (EPOCH) (3.6, set 7)", - "ep_jstttg", "Just The Ticket (Maygay) (EPOCH) (3.6, set 8)", - "ep_kopcl", "Knockout Punch Club (Global) (EPOCH) (set 1)", - "ep_kopcla", "Knockout Punch Club (Global) (EPOCH) (set 2)", - "ep_kopclb", "Knockout Punch Club (Global) (EPOCH) (set 3)", - "ep_ll", "Lucky Ladders (Extreme) (EPOCH) (LULA 0.3, set 1)", - "ep_lla", "Lucky Ladders (Extreme) (EPOCH) (LULA 0.3, set 2)", - "ep_loadd", "Loaded (Maygay) (EPOCH) (LOAD 1.2, set 1)", - "ep_loadda", "Loaded (Maygay) (EPOCH) (LOAD 1.2, set 2)", - "ep_ltt", "Licence To Thrill (Global) (EPOCH) (set 1)", - "ep_ltta", "Licence To Thrill (Global) (EPOCH) (set 2)", - "ep_lug", "London Underground (Maygay) (EPOCH) (2.4, set 1)", - "ep_luga", "London Underground (Maygay) (EPOCH) (2.9, set 2)", - "ep_lugb", "London Underground (Maygay) (EPOCH) (3.1, set 3)", - "ep_lugc", "London Underground (Maygay) (EPOCH) (3.1, set 4)", - "ep_lukld", "Lucky Ladders (Maygay) (EPOCH) (LULA 0.2, set 1)", - "ep_luklda", "Lucky Ladders (Maygay) (EPOCH) (LULA 0.2, set 2)", - "ep_makmv", "Make Your Move (Global) (EPOCH) (set 1)", - "ep_makmva", "Make Your Move (Global) (EPOCH) (set 2)", - "ep_manic", "Manic Miner (Maygay - Impulse) (EPOCH) (set 1)", - "ep_manica", "Manic Miner (Maygay - Impulse) (EPOCH) (set 2)", - "ep_manicb", "Manic Miner (Maygay - Impulse) (EPOCH) (set 3)", - "ep_manicc", "Manic Miner (Maygay - Impulse) (EPOCH) (set 4)", - "ep_manicd", "Manic Miner (Maygay - Impulse) (EPOCH) (set 5)", - "ep_manice", "Manic Miner (Maygay - Impulse) (EPOCH) (set 6)", - "ep_manicf", "Manic Miner (Maygay - Impulse) (EPOCH) (set 7)", - "ep_mario", "Super Mario (Maygay) (EPOCH) (1.5, set 1)", - "ep_marioa", "Super Mario (Maygay) (EPOCH) (1.5, set 2)", - "ep_mariob", "Super Mario (Maygay) (EPOCH) (1.A, set 3)", - "ep_marioc", "Super Mario (Maygay) (EPOCH) (1.A, set 4)", - "ep_mariod", "Super Mario (Maygay) (EPOCH) (2.A, set 5)", - "ep_marioe", "Super Mario (Maygay) (EPOCH) (2.A, set 6)", - "ep_mariof", "Super Mario (Maygay) (EPOCH) (1.C, set 7)", - "ep_mariog", "Super Mario (Maygay) (EPOCH) (1.C, set 8)", - "ep_marioh", "Super Mario (Maygay) (EPOCH) (1.B, set 9)", - "ep_matrx", "Matrix (Maygay - Impulse) (EPOCH)", - "ep_merln", "Merlin's Magic (Maygay) (EPOCH) (1.91)", - "ep_midas", "Midas Touch Club (Maygay) (EPOCH) (1.1, set 1)", - "ep_midasa", "Midas Touch Club (Maygay) (EPOCH) (1.1, set 2)", - "ep_milhr", "Who Wants To Be A Millionhare? (Global) (EPOCH) (1.2, set 1)", - "ep_milhra", "Who Wants To Be A Millionhare? (Global) (EPOCH) (1.2, set 2)", - "ep_milhrb", "Who Wants To Be A Millionhare? (Global) (EPOCH) (1.3, set 3)", - "ep_milhrc", "Who Wants To Be A Millionhare? (Global) (EPOCH) (1.3, set 4)", - "ep_milhrd", "Who Wants To Be A Millionhare? (Global) (EPOCH) (1.6, set 5)", - "ep_milhre", "Who Wants To Be A Millionhare? (Global) (EPOCH) (1.6, set 6)", - "ep_milhrf", "Who Wants To Be A Millionhare? (Global) (EPOCH) (1.9, set 7)", - "ep_milhrg", "Who Wants To Be A Millionhare? (Global) (EPOCH) (1.9, set 8)", - "ep_mkart", "Mario Kart (Maygay) (EPOCH) (1.2, set 1)", - "ep_mkarta", "Mario Kart (Maygay) (EPOCH) (1.2, set 2)", - "ep_mkartb", "Mario Kart (Maygay) (EPOCH) (1.6, set 3)", - "ep_mkartc", "Mario Kart (Maygay) (EPOCH) (1.6, set 4)", - "ep_mkartd", "Mario Kart (Maygay) (EPOCH) (1.1, set 5)", - "ep_mkarte", "Mario Kart (Maygay) (EPOCH) (1.5, set 6)", - "ep_mlhrc", "Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 1)", - "ep_mlhrca", "Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 2)", - "ep_mlhrcb", "Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 3)", - "ep_mlhrcc", "Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 4)", - "ep_mlhrcd", "Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 5)", - "ep_mlhrce", "Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 6)", - "ep_monbs", "Monte Carlo Or Bust (Maygay) (EPOCH) (1.2, set 1)", - "ep_monbsa", "Monte Carlo Or Bust (Maygay) (EPOCH) (1.2, set 2)", - "ep_monky", "Monkey Business (Global) (EPOCH) (1.4, set 1)", - "ep_monkya", "Monkey Business (Global) (EPOCH) (1.5, set 2)", - "ep_monrt", "Money Returns Club, The (Global) (EPOCH) (set 1)", - "ep_monrta", "Money Returns Club, The (Global) (EPOCH) (set 2)", - "ep_monrtb", "Money Returns Club, The (Global) (EPOCH) (set 3)", - "ep_monrtc", "Money Returns Club, The (Global) (EPOCH) (set 4)", - "ep_monrtd", "Money Returns Club, The (Global) (EPOCH) (set 5)", - "ep_monrte", "Money Returns Club, The (Global) (EPOCH) (set 6)", - "ep_monrtf", "Money Returns Club, The (Global) (EPOCH) (set 7)", - "ep_monsh", "The Moonshine Club (Global) (EPOCH) (set 1)", - "ep_monsha", "The Moonshine Club (Global) (EPOCH) (set 2)", - "ep_monshb", "The Moonshine Club (Global) (EPOCH) (set 3)", - "ep_monshc", "The Moonshine Club (Global) (EPOCH) (set 4)", - "ep_monshd", "The Moonshine Club (Global) (EPOCH) (set 5)", - "ep_monshe", "The Moonshine Club (Global) (EPOCH) (set 6)", - "ep_monshf", "The Moonshine Club (Global) (EPOCH) (set 7)", - "ep_mrmus", "Mr Muscle (Maygay) (EPOCH) (1.2, set 1)", - "ep_mrmusa", "Mr Muscle (Maygay) (EPOCH) (1.2, set 2)", - "ep_mummy", "Mummy Talks (Impulse) (EPOCH) (set 1)", - "ep_mummya", "Mummy Talks (Impulse) (EPOCH) (set 2)", - "ep_mummyb", "Mummy Talks (Impulse) (EPOCH) (set 3)", - "ep_mummyc", "Mummy Talks (Impulse) (EPOCH) (set 4)", - "ep_mummyd", "Mummy Talks (Impulse) (EPOCH) (set 5)", - "ep_mummye", "Mummy Talks (Impulse) (EPOCH) (set 6)", - "ep_mummyf", "Mummy Talks (Impulse) (EPOCH) (set 7)", - "ep_mwom", "Mortal Wombat (Maygay) (EPOCH) (set 1)", - "ep_mwoma", "Mortal Wombat (Maygay) (EPOCH) (set 2)", - "ep_mwomb", "Mortal Wombat (Maygay) (EPOCH) (set 3)", - "ep_mwomc", "Mortal Wombat (Maygay) (EPOCH) (set 4)", - "ep_mwomd", "Mortal Wombat (Maygay) (EPOCH) (set 5)", - "ep_noter", "Note Runner (Maygay) (EPOCH) (NORU 0.1, set 1)", - "ep_notera", "Note Runner (Maygay) (EPOCH) (NORU 0.1, set 2)", - "ep_noterb", "Note Runner (Maygay) (EPOCH) (NORU 0.2, set 3)", - "ep_noterc", "Note Runner (Maygay) (EPOCH) (NORU 0.2, set 4)", - "ep_noterd", "Note Runner (Maygay) (EPOCH) (NORU 1.0, set 5)", - "ep_notere", "Note Runner (Maygay) (EPOCH) (NORU 1.0, set 6)", - "ep_nuns", "Nuns Of Navarone (Maygay) (EPOCH) (2.4, set 1)", - "ep_nunsa", "Nuns Of Navarone (Maygay) (EPOCH) (2.4, set 2)", - "ep_nyny", "New York New York (Maygay) (EPOCH) (3.6, set 1)", - "ep_nynya", "New York New York (Maygay) (EPOCH) (3.6, set 2)", - "ep_nynyb", "New York New York (Maygay) (EPOCH) (4.6, set 3)", - "ep_nynyc", "New York New York (Maygay) (EPOCH) (4.6, set 4)", - "ep_nynyd", "New York New York (Maygay) (EPOCH) (3.A, set 5)", - "ep_nynye", "New York New York (Maygay) (EPOCH) (3.A, set 6)", - "ep_nynyf", "New York New York (Maygay) (EPOCH) (3.9, set 7)", - "ep_otm", "Over The Moon (Maygay) (EPOCH) (1.2, set 1)", - "ep_otma", "Over The Moon (Maygay) (EPOCH) (1.2, set 2)", - "ep_otmcl", "Over The Moon Club (Maygay) (EPOCH) (set 1)", - "ep_otmcla", "Over The Moon Club (Maygay) (EPOCH) (set 2)", - "ep_ozzie", "Ozzie Ozzie Ozzie (Maygay) (EPOCH) (2.Z, set 1)", - "ep_ozziea", "Ozzie Ozzie Ozzie (Maygay) (EPOCH) ( .2, set 2)", - "ep_ozzieb", "Ozzie Ozzie Ozzie (Maygay) (EPOCH) (5.J, set 3)", - "ep_ozziec", "Ozzie Ozzie Ozzie (Maygay) (EPOCH) (6.J, set 4)", - "ep_ozzied", "Ozzie Ozzie Ozzie (Maygay) (EPOCH) (1.1, set 5)", - "ep_ozziee", "Ozzie Ozzie Ozzie (Maygay) (EPOCH) (1.1, set 6)", - "ep_ozzief", "Ozzie Ozzie Ozzie (Maygay) (EPOCH) (2.Z, set 7)", - "ep_ozzieg", "Ozzie Ozzie Ozzie (Maygay) (EPOCH) (0.2, set 8)", - "ep_ozzieh", "Ozzie Ozzie Ozzie (Maygay) (EPOCH) (0.2, set 9)", - "ep_party", "Party Party (Global) (EPOCH) (1.1)", - "ep_pascl", "Passport To Riches Classic Club (Maygay) (EPOCH) (1.2, set 1)", - "ep_pascla", "Passport To Riches Classic Club (Maygay) (EPOCH) (1.2, set 2)", - "ep_passp", "Passport To Riches Club (Maygay) (EPOCH) (1.2, set 1)", - "ep_passpa", "Passport To Riches Club (Maygay) (EPOCH) (1.2, set 2)", - "ep_passpb", "Passport To Riches Classic Club (Maygay) (EPOCH) (1.3, set 3)", - "ep_passpc", "Passport To Riches Classic Club (Maygay) (EPOCH) (1.3, set 4)", - "ep_pesos", "Pick Yer Pesos (Maygay - Impulse) (EPOCH) (set 1)", - "ep_pesosa", "Pick Yer Pesos (Maygay - Impulse) (EPOCH) (set 2)", - "ep_pesosb", "Pick Yer Pesos (Maygay - Impulse) (EPOCH) (set 3)", - "ep_pesosc", "Pick Yer Pesos (Maygay - Impulse) (EPOCH) (set 4)", - "ep_pharo", "Pharaoh's Treasure (Maygay) (EPOCH) (set 1)", - "ep_pharoa", "Pharaoh's Treasure (Maygay) (EPOCH) (set 2)", - "ep_pizza", "Pizza The Action (Maygay) (EPOCH) (2.3, set 1)", - "ep_pizzaa", "Pizza The Action (Maygay) (EPOCH) (2.3, set 2)", - "ep_pizzab", "Pizza The Action (Maygay) (EPOCH) (2.1, set 3)", - "ep_pizzac", "Pizza The Action (Maygay) (EPOCH) (2.1, set 4)", - "ep_pkni", "The Phoenix Knights (Global) (EPOCH) (1.1, set 1)", - "ep_pknia", "The Phoenix Knights (Global) (EPOCH) (1.1, set 2)", - "ep_pknib", "The Phoenix Knights (Global) (EPOCH) (1.3, set 3)", - "ep_pknic", "The Phoenix Knights (Global) (EPOCH) (1.3, set 4)", - "ep_pknid", "The Phoenix Knights (Global) (EPOCH) (1.4, set 5)", - "ep_pknie", "The Phoenix Knights (Global) (EPOCH) (1.7, set 6)", - "ep_pknif", "The Phoenix Knights (Global) (EPOCH) (1.7, set 7)", - "ep_pwrpl", "Power Play (Maygay) (EPOCH) (PPLY 0.3, set 1)", - "ep_pwrpla", "Power Play (Maygay) (EPOCH) (PPLY 0.3, set 2)", - "ep_rags", "Rags To Riches Club (Maygay) (EPOCH) (1.10, set 1)", - "ep_ragsa", "Rags To Riches Club (Maygay) (EPOCH) (1.10, set 2)", - "ep_rchik", "Rich Chics Club (Global) (EPOCH) (set 1)", - "ep_rchika", "Rich Chics Club (Global) (EPOCH) (set 2)", - "ep_react", "Reactor (Maygay - Impulse) (EPOCH) (set 1)", - "ep_reacta", "Reactor (Maygay - Impulse) (EPOCH) (set 2)", - "ep_reactb", "Reactor (Maygay - Impulse) (EPOCH) (set 3)", - "ep_reactc", "Reactor (Maygay - Impulse) (EPOCH) (set 4)", - "ep_reactd", "Reactor (Maygay - Impulse) (EPOCH) (set 5)", - "ep_reacte", "Reactor (Maygay - Impulse) (EPOCH) (set 6)", - "ep_redl", "Red Line (Extreme) (EPOCH) (RELI 0.1, set 1)", - "ep_redla", "Red Line (Extreme) (EPOCH) (RELI 0.1, set 2)", - "ep_rlgdt", "Reel Good Time (Rebuild) (Global) (Version 1.0) (EPOCH)", - "ep_roost", "Roosters Millions (Maygay) (EPOCH) (1.2, set 1)", - "ep_roosta", "Roosters Millions (Maygay) (EPOCH) (1.2, set 2)", - "ep_royrc", "Royal Roulette Club (Impulse) (EPOCH) (set 1)", - "ep_royrca", "Royal Roulette Club (Impulse) (EPOCH) (set 2)", - "ep_royrl", "Royal Roulette (Maygay) (EPOCH) (set 1)", - "ep_royrla", "Royal Roulette (Maygay) (EPOCH) (set 2)", - "ep_royrlb", "Royal Roulette (Maygay) (EPOCH) (set 3)", - "ep_royrlc", "Royal Roulette (Maygay) (EPOCH) (set 4)", - "ep_royrld", "Royal Roulette (Maygay) (EPOCH) (set 5)", - "ep_royrle", "Royal Roulette (Maygay) (EPOCH) (set 6)", - "ep_rtt", "Round The Twist (Maygay) (EPOCH) (set 1)", - "ep_rtta", "Round The Twist (Maygay) (EPOCH) (set 2)", - "ep_scrm", "Screamin Demon (Maygay) (EPOCH) (SCDE 2.0, set 1)", - "ep_scrma", "Screamin Demon (Maygay) (EPOCH) (SCDE 2.0, set 2)", - "ep_scrmb", "Screamin Demon (Maygay) (EPOCH) (SCDE 1.0, set 3)", - "ep_scrmc", "Screamin Demon (Maygay) (EPOCH) (SCDE 1.0, set 4)", - "ep_sdcla", "Spotted Dick Classic (Global) (EPOCH) (set 1)", - "ep_sdclaa", "Spotted Dick Classic (Global) (EPOCH) (set 2)", - "ep_sdclab", "Spotted Dick Classic (Global) (EPOCH) (set 3)", - "ep_sdclac", "Spotted Dick Classic (Global) (EPOCH) (set 4)", - "ep_sdclad", "Spotted Dick Classic (Global) (EPOCH) (set 5)", - "ep_sdclae", "Spotted Dick Classic (Global) (EPOCH) (set 6)", - "ep_sdclaf", "Spotted Dick Classic (Global) (EPOCH) (set 7)", - "ep_sdclag", "Spotted Dick Classic (Global) (EPOCH) (set 8)", - "ep_sdclb", "Spotted Dick Club (Global) (EPOCH) (set 1)", - "ep_sdclba", "Spotted Dick Club (Global) (EPOCH) (set 2)", - "ep_secag", "Secret Agent (Maygay) (EPOCH) (1.5, set 1)", - "ep_secaga", "Secret Agent (Maygay) (EPOCH) (1.5, set 2)", - "ep_secagb", "Secret Agent (Maygay) (EPOCH) (1.3, set 3)", - "ep_simfr", "Simply Fruits (Maygay) (EPOCH) (1.2, set 1)", - "ep_simfra", "Simply Fruits (Maygay) (EPOCH) (1.2, set 2)", - "ep_simp", "The Simpsons (Maygay) (EPOCH) (3.6, set 1)", - "ep_simpa", "The Simpsons (Maygay) (EPOCH) (3.5, set 2)", - "ep_simpb", "The Simpsons (Maygay) (EPOCH) (3.5, set 3)", - "ep_simpc", "The Simpsons (Maygay) (EPOCH) (4.5, set 4)", - "ep_simpd", "The Simpsons (Maygay) (EPOCH) (4.5, set 5)", - "ep_simpe", "The Simpsons (Maygay) (EPOCH) (1.5, set 6)", - "ep_simpf", "The Simpsons (Maygay) (EPOCH) (1.5, set 7)", - "ep_simpg", "The Simpsons (Maygay) (EPOCH) (2.5, set 8)", - "ep_simph", "The Simpsons (Maygay) (EPOCH) (2.5, set 9)", - "ep_simpj", "The Simpsons (Maygay) (EPOCH) (1.8, set 10)", - "ep_simpk", "The Simpsons (Maygay) (EPOCH) (1.8, set 11)", - "ep_simpl", "The Simpsons (Maygay) (EPOCH) (3.7, set 12)", - "ep_simpm", "The Simpsons (Maygay) (EPOCH) (3.7, set 13)", - "ep_smoke", "Holy Smoke! (Impulse) (EPOCH) (set 1)", - "ep_smokea", "Holy Smoke! (Impulse) (EPOCH) (set 2)", - "ep_smokeb", "Holy Smoke! (Impulse) (EPOCH) (set 3)", - "ep_smokec", "Holy Smoke! (Impulse) (EPOCH) (set 4)", - "ep_smoked", "Holy Smoke! (Impulse) (EPOCH) (set 5)", - "ep_smokee", "Holy Smoke! (Impulse) (EPOCH) (set 6)", - "ep_smokef", "Holy Smoke! (Impulse) (EPOCH) (set 7)", - "ep_smokeg", "Holy Smoke! (Impulse) (EPOCH) (set 8)", - "ep_smokeh", "Holy Smoke! (Impulse) (EPOCH) (set 9)", - "ep_smokei", "Holy Smoke! (Impulse) (EPOCH) (set 10)", - "ep_smokej", "Holy Smoke! (Impulse) (EPOCH) (set 11)", - "ep_snbev", "Saturday Night Beaver (Global) (EPOCH) (1.8, set 1)", - "ep_snbeva", "Saturday Night Beaver (Global) (EPOCH) (1.8, set 2)", - "ep_snbevb", "Saturday Night Beaver (Global) (EPOCH) (1.9, set 3)", - "ep_snbevc", "Saturday Night Beaver (Global) (EPOCH) (1.9, set 4)", - "ep_snbevd", "Saturday Night Beaver (Global) (EPOCH) (2.1, set 5)", - "ep_snbeve", "Saturday Night Beaver (Global) (EPOCH) (2.1, set 6)", - "ep_snset", "Sunset Strip (Extreme) (EPOCH) (SUST 0.1, set 1)", - "ep_snseta", "Sunset Strip (Extreme) (EPOCH) (SUST 0.1, set 2)", - "ep_snw", "Super Nudge Wink (Maygay - Union) (EPOCH) (set 1)", - "ep_snwa", "Super Nudge Wink (Maygay - Union) (EPOCH) (set 2)", - "ep_snwb", "Super Nudge Wink (Maygay - Union) (EPOCH) (set 3)", - "ep_snwc", "Super Nudge Wink (Maygay - Union) (EPOCH) (set 4)", - "ep_snwd", "Super Nudge Wink (Maygay - Union) (EPOCH) (set 5)", - "ep_spart", "Spartacash (Maygay - Impulse) (EPOCH) (set 1)", - "ep_sparta", "Spartacash (Maygay - Impulse) (EPOCH) (set 2)", - "ep_spartb", "Spartacash (Maygay - Impulse) (EPOCH) (set 3)", - "ep_spcbw", "Special Brew (Maygay) (EPOCH) (1.1, set 1)", - "ep_spcbwa", "Special Brew (Maygay) (EPOCH) (1.1, set 2)", - "ep_spcbwb", "Special Brew (Maygay) (EPOCH) (1.3, set 3)", - "ep_spcbwc", "Special Brew (Maygay) (EPOCH) (1.3, set 4)", - "ep_spcbwd", "Special Brew (Maygay) (EPOCH) (1.5, set 5)", - "ep_spcbwe", "Special Brew (Maygay) (EPOCH) (1.5, set 6)", - "ep_spcbwf", "Special Brew (Maygay) (EPOCH) (1.6, set 7)", - "ep_spcbwg", "Special Brew (Maygay) (EPOCH) (1.6, set 8)", - "ep_spcbwh", "Special Brew (Maygay) (EPOCH) (1.4, set 9)", - "ep_spcbwi", "Special Brew (Maygay) (EPOCH) (1.4, set 10)", - "ep_spcbwj", "Special Brew (Maygay) (EPOCH) (1.8, set 11)", - "ep_spcbwk", "Special Brew (Maygay) (EPOCH) (1.8, set 12)", - "ep_spcbwl", "Special Brew (Maygay) (EPOCH) (1.9, set 13)", - "ep_spcbwm", "Special Brew (Maygay) (EPOCH) (1.9, set 14)", - "ep_spec", "Spectre (Maygay) (EPOCH) (1.6, set 1)", - "ep_speca", "Spectre (Maygay) (EPOCH) (1.6, set 2)", - "ep_specb", "Spectre (Maygay) (EPOCH) (1.3, set 3)", - "ep_spin", "Spin On It (Maygay - Impulse) (EPOCH) (set 1)", - "ep_spina", "Spin On It (Maygay - Impulse) (EPOCH) (set 2)", - "ep_spinb", "Spin On It (Maygay - Impulse) (EPOCH) (set 3)", - "ep_spinc", "Spin On It (Maygay - Impulse) (EPOCH) (set 4)", - "ep_spind", "Spin On It (Maygay - Impulse) (EPOCH) (set 5)", - "ep_spine", "Spin On It (Maygay - Impulse) (EPOCH) (set 6)", - "ep_spirt", "Hi Spirits (Global) (EPOCH) (2.3, set 1)", - "ep_spirta", "Hi Spirits (Global) (EPOCH) (2.3, set 2)", - "ep_spirtb", "Hi Spirits (Global) (EPOCH) (4.1, set 3)", - "ep_spntn", "Spin & Tonic (Maygay - Impulse) (EPOCH) (set 1)", - "ep_spntna", "Spin & Tonic (Maygay - Impulse) (EPOCH) (set 2)", - "ep_spntnb", "Spin & Tonic (Maygay - Impulse) (EPOCH) (set 3)", - "ep_spntnc", "Spin & Tonic (Maygay - Impulse) (EPOCH) (set 4)", - "ep_spook", "Spooky Hollow (Global) (EPOCH) (1.3, set 1)", - "ep_spooka", "Spooky Hollow (Global) (EPOCH) (1.3, set 2)", - "ep_spookb", "Spooky Hollow (Global) (EPOCH) (2.7, set 3)", - "ep_srwin", "Sir Winalot (Maygay) (EPOCH) (2.6, set 1)", - "ep_srwina", "Sir Winalot (Maygay) (EPOCH) (3.3, set 2)", - "ep_srwinb", "Sir Winalot (Maygay) (EPOCH) (3.3, set 3)", - "ep_srwinc", "Sir Winalot (Maygay) (EPOCH) (2.6, set 4)", - "ep_srwind", "Sir Winalot (Maygay) (EPOCH) (2.1, set 5)", - "ep_step", "Stepping Stones (Maygay) (EPOCH) (1.0, set 1)", - "ep_stepa", "Stepping Stones (Maygay) (EPOCH) (1.0, set 2)", - "ep_stm", "Storm Force (Global) (EPOCH) (set 1)", - "ep_stma", "Storm Force (Global) (EPOCH) (set 2)", - "ep_stmb", "Storm Force (Global) (EPOCH) (set 3)", - "ep_stmc", "Storm Force (Global) (EPOCH) (set 4)", - "ep_stmcl", "Storm Force Club (Global) (EPOCH) (set 1)", - "ep_stmcla", "Storm Force Club (Global) (EPOCH) (set 2)", - "ep_strat", "Stratagem (Maygay) (EPOCH) (set 1)", - "ep_strata", "Stratagem (Maygay) (EPOCH) (set 2)", - "ep_subb", "Subbuteo (Maygay) (EPOCH) (set 1)", - "ep_subba", "Subbuteo (Maygay) (EPOCH) (set 2)", - "ep_subbb", "Subbuteo (Maygay) (EPOCH) (set 3)", - "ep_subbc", "Subbuteo (Maygay) (EPOCH) (set 4)", - "ep_subbd", "Subbuteo (Maygay) (EPOCH) (set 5)", - "ep_subbe", "Subbuteo (Maygay) (EPOCH) (set 6)", - "ep_subbf", "Subbuteo (Maygay) (EPOCH) (set 7)", - "ep_subbg", "Subbuteo (Maygay) (EPOCH) (set 8)", - "ep_survi", "Survival (Maygay) (EPOCH) (1.4, set 1)", - "ep_survia", "Survival (Maygay) (EPOCH) (1.4, set 2)", - "ep_tak5", "Take Five (Maygay - Union) (EPOCH) (set 1)", - "ep_tak5a", "Take Five (Maygay - Union) (EPOCH) (set 2)", - "ep_tcrwn", "Triple Crown (Maygay) (EPOCH) (2.2, set 1)", - "ep_tcrwna", "Triple Crown (Maygay) (EPOCH) (2.2, set 2)", - "ep_tcrwnb", "Triple Crown (Maygay) (EPOCH) (2.2, set 3)", - "ep_tcrwnc", "Triple Crown (Maygay) (EPOCH) (2.2, set 4)", - "ep_tcrwnd", "Triple Crown (Maygay) (EPOCH) (3.1, set 5)", - "ep_tcrwne", "Triple Crown (Maygay) (EPOCH) (3.1, set 6)", - "ep_tincn", "Tin Can Alley (Maygay) (EPOCH) (1.5, set 1)", - "ep_tincna", "Tin Can Alley (Maygay) (EPOCH) (1.5, set 2)", - "ep_tits", "Title Shot Club (Maygay) (EPOCH) (1.7, set 1)", - "ep_titsa", "Title Shot Club (Maygay) (EPOCH) (1.7, set 2)", - "ep_titsb", "Title Shot Club (Maygay) (EPOCH) (1.5, set 3)", - "ep_tod", "Truth Or Dare (Global) (EPOCH) (set 1)", - "ep_toda", "Truth Or Dare (Global) (EPOCH) (set 2)", - "ep_tonfn", "Tons Of Fun (Maygay) (EPOCH) (1.5, set 1)", - "ep_tonfna", "Tons Of Fun (Maygay) (EPOCH) (1.5, set 2)", - "ep_tortr", "Torture TV (Maygay) (EPOCH) (1.3, set 1)", - "ep_tortra", "Torture TV (Maygay) (EPOCH) (1.3, set 2)", - "ep_tp", "Trivial Pursuit (Maygay) (EPOCH) (3.5, set 1)", - "ep_tp2", "Trivial Pursuit 2 (Maygay) (EPOCH) (2.2, set 1)", - "ep_tp2a", "Trivial Pursuit 2 (Maygay) (EPOCH) (2.2, set 2)", - "ep_tpa", "Trivial Pursuit (Maygay) (EPOCH) (3.5, set 2)", - "ep_tpb", "Trivial Pursuit (Maygay) (EPOCH) (2.1, set 3)", - "ep_trail", "Trailblazer (Maygay - Impulse) (EPOCH) (set 1)", - "ep_traila", "Trailblazer (Maygay - Impulse) (EPOCH) (set 2)", - "ep_trailb", "Trailblazer (Maygay - Impulse) (EPOCH) (set 3)", - "ep_treas", "Treasure Hunt (Global) (EPOCH) (Version 1.6)", - "ep_tree", "Tree Amigos (Maygay) (EPOCH) (TRAM 0.3, set 1)", - "ep_treea", "Tree Amigos (Maygay) (EPOCH) (TRAM 0.3, set 2)", - "ep_trics", "Triple Cash (Maygay - Union) (EPOCH) (set 1)", - "ep_tricsa", "Triple Cash (Maygay - Union) (EPOCH) (set 2)", - "ep_tutcl", "Tutankhamun Club (Maygay) (EPOCH) (2.1, set 1)", - "ep_tutcla", "Tutankhamun Club (Maygay) (EPOCH) (2.1, set 2)", - "ep_tutclb", "Tutankhamun Club (Maygay) (EPOCH) (1.8, set 3)", - "ep_twarp", "Time Warp (Extreme) (EPOCH) (TWRP 0.1, set 1)", - "ep_twarpa", "Time Warp (Extreme) (EPOCH) (TWRP 0.1, set 2)", - "ep_twarpb", "Time Warp (Extreme) (EPOCH) (TWRP 0.4, set 3)", - "ep_twarpc", "Time Warp (Extreme) (EPOCH) (TWRP 0.4, set 4)", - "ep_utncl", "Utter Nutter Club (Global) (EPOCH) (set 1)", - "ep_utncla", "Utter Nutter Club (Global) (EPOCH) (set 2)", - "ep_utnut", "Utter Nutter (Global) (EPOCH) (set 1)", - "ep_utnuta", "Utter Nutter (Global) (EPOCH) (set 2)", - "ep_utnutb", "Utter Nutter (Global) (EPOCH) (set 3)", - "ep_utnutc", "Utter Nutter (Global) (EPOCH) (set 4)", - "ep_vipjv", "Viper Jive (Maygay - Extreme) (EPOCH) (JIVE 1.1, set 1)", - "ep_vipjva", "Viper Jive (Maygay - Extreme) (EPOCH) (JIVE 1.1, set 2)", - "ep_vipjvb", "Viper Jive (Maygay - Extreme) (EPOCH) (JIVE 2.2, set 3)", - "ep_vipjvc", "Viper Jive (Maygay - Extreme) (EPOCH) (JIVE 2.2, set 4)", - "ep_vipjvd", "Viper Jive (Maygay - Extreme) (EPOCH) (JIVE 2.1, set 5)", - "ep_wf", "Wildfire (Global) (EPOCH) (set 1)", - "ep_wfa", "Wildfire (Global) (EPOCH) (set 2)", - "ep_wfb", "Wildfire (Global) (EPOCH) (set 3)", - "ep_wfc", "Wildfire (Global) (EPOCH) (set 4)", - "ep_wfd", "Wildfire (Global) (EPOCH) (set 5)", - "ep_wfe", "Wildfire (Global) (EPOCH) (set 6)", - "ep_wff", "Wildfire (Global) (EPOCH) (set 7)", - "ep_wfg", "Wildfire (Global) (EPOCH) (set 8)", - "ep_wildf", "Wildfire (Maygay - Impulse) (EPOCH) (set 1)", - "ep_wildfa", "Wildfire (Maygay - Impulse) (EPOCH) (set 2)", - "ep_wipeo", "Wipeout (Maygay) (EPOCH) (set 1)", - "ep_wipeoa", "Wipeout (Maygay) (EPOCH) (set 2)", - "ep_wipeob", "Wipeout (Maygay) (EPOCH) (set 3)", - "ep_wipeoc", "Wipeout (Maygay) (EPOCH) (set 4)", - "ep_wipeoe", "Wipeout (Maygay) (EPOCH) (set 5)", - "ep_wleek", "Weakest Leek Club (Global) (EPOCH) (set 1)", - "ep_wleeka", "Weakest Leek Club (Global) (EPOCH) (set 2)", - "ep_word", "Word Up (Maygay) (EPOCH) (1.4, set 1)", - "ep_worda", "Word Up (Maygay) (EPOCH) (1.4, set 2)", - "ep_wordb", "Word Up (Maygay) (EPOCH) (2.4, set 3)", - "ep_wordc", "Word Up (Maygay) (EPOCH) (2.4, set 4)", - "ep_wordd", "Word Up (Maygay) (EPOCH) (3.1, set 5)", - "ep_worde", "Word Up (Maygay) (EPOCH) (3.1, set 6)", - "ep_wordf", "Word Up (Maygay) (EPOCH) (4.1, set 7)", - "ep_wordg", "Word Up (Maygay) (EPOCH) (4.1, set 8)", - "ep_wside", "Wildside (Global) (EPOCH) (1.2, set 1)", - "ep_wsidea", "Wildside (Global) (EPOCH) (set 2)", - "ep_wud", "What's Up Doc (Global) (EPOCH) (set 1)", - "ep_wuda", "What's Up Doc (Global) (EPOCH) (set 2)", - "ep_wudb", "What's Up Doc (Global) (EPOCH) (set 3)", - "ep_wudc", "What's Up Doc (Global) (EPOCH) (set 4)", - "ep_wudd", "What's Up Doc (Global) (EPOCH) (set 5)", - "ep_wude", "What's Up Doc (Global) (EPOCH) (set 6)", - "ep_xspot", "X Marks The Spot (Maygay) (EPOCH) (1.5, set 1)", - "ep_xspota", "X Marks The Spot (Maygay) (EPOCH) (1.5, set 2)", - "ep_xspotb", "X Marks The Spot (Maygay) (EPOCH) (1.4, set 3)", - "ep_xtra", "X-tra X-tra (Maygay) (EPOCH) (1.5, set 1)", - "ep_xtraa", "X-tra X-tra (Maygay) (EPOCH) (1.5, set 2)", - "eprom", "Escape from the Planet of the Robot Monsters (set 1)", - "eprom2", "Escape from the Planet of the Robot Monsters (set 2)", - "equites", "Equites", - "equitess", "Equites (Sega)", - "erosone", "Eros One", - "ertictac", "Erotictac/Tactic", - "ertictaca", "Erotictac/Tactic (ver 01)", - "ertictacb", "Erotictac/Tactic (set 2)", - "esb", "The Empire Strikes Back", - "escape", "Escape", - "esckids", "Escape Kids (Asia, 4 Players)", - "esckidsj", "Escape Kids (Japan, 2 Players)", - "esclwrld", "Escape from the Lost World", - "esclwrldg", "Escape from the Lost World (German)", - "escounts", "Every Second Counts (39-360-053)", - "esh", "Esh's Aurunmilla (set 1)", - "esha", "Esh's Aurunmilla (set 2)", - "esha_la1", "Earthshaker (LA-1)", - "esha_la3", "Earthshaker (LA-3)", - "esha_lg1", "Earthshaker (German) (LG-1)", - "esha_lg2", "Earthshaker (German) (LG-2)", - "esha_ma3", "Earthshaker (Metallica) (LA-3)", - "esha_pa1", "Earthshaker (Prototype) (PA-1)", - "esha_pr4", "Earthshaker (Family version) (PR-4)", - "eshb", "Esh's Aurunmilla (set 3)", - "espgal", "Espgaluda (2003/10/15 Master Ver)", - "espgal2", "Espgaluda II (2005/11/14 MASTER VER)", - "espial", "Espial (Europe)", - "espialu", "Espial (US?)", - "esprade", "ESP Ra.De. (International, Ver. 98/04/22)", - "espradej", "ESP Ra.De. (Japan, Ver. 98/04/21)", - "espradejo", "ESP Ra.De. (Japan, Ver. 98/04/14)", - "eswat", "E-Swat - Cyber Police (set 4, World, FD1094 317-0130)", - "eswatbl", "E-Swat - Cyber Police (bootleg)", - "eswatj", "E-Swat - Cyber Police (set 2, Japan, FD1094 317-0128)", - "eswatj1", "E-Swat - Cyber Police (set 1, Japan, FD1094 317-0131)", - "eswatu", "E-Swat - Cyber Police (set 3, US, FD1094 317-0129)", - "eto", "Kokontouzai Eto Monogatari (Japan)", - "euro2k2", "Europa 2002 (Ver 2.0, set 1)", - "euro2k2a", "Europa 2002 (Ver 2.0, set 2)", - "euro2k2s", "Europa 2002 Space (Ver 3.0)", - "euroch92", "Euro Champ '92 (World)", - "eurogame", "The Euro Game (set 1)", - "eurogamea", "The Euro Game (set 2)", - "europass", "Euro Pass (Ver 1.1)", - "evelknie", "Evel Knievel", - "evilngt", "Evil Night (ver UBA)", - "evilngte", "Evil Night (ver EAA)", - "evilston", "Evil Stone", - "evlfight", "Evil Fight", - "evosocc", "Evolution Soccer", - "ewf", "Earth Wind Fire", - "excalibr", "Excalibur", - "excelsr", "Excelsior (set 1)", - "excelsra", "Excelsior (set 2)", - "excitbj", "Exciting Black Jack", - "excitebk", "Vs. Excitebike (set EB4-4 A)", - "excitebka", "Vs. Excitebike (set EB4-3 ?)", - "excthour", "Exciting Hour", - "exctleag", "Excite League (FD1094 317-0079)", - "exctscc2", "Exciting Soccer II", - "exctsccr", "Exciting Soccer", - "exctsccra", "Exciting Soccer (alternate music)", - "exctsccrb", "Exciting Soccer (bootleg)", - "exctsccrj", "Exciting Soccer (Japan)", - "exctsccrjo", "Exciting Soccer (Japan, older)", - "exctsccru", "Exciting Soccer (US)", - "exedexes", "Exed Exes", - "exerion", "Exerion", - "exerionb", "Exerion (bootleg)", - "exeriont", "Exerion (Taito)", - "exerizer", "Exerizer (Japan)", - "exerizerb", "Exerizer (Japan) (bootleg)", - "exodus", "Exodus (bootleg?)", - "expcard", "Express Card / Top Card (Ver. 1.5)", - "explbrkr", "Explosive Breaker", - "explorer", "Explorer (bootleg of Scramble)", - "exprraid", "Express Raider (World, Rev 4)", - "exprraidi", "Express Raider (Italy)", - "exprraidu", "Express Raider (US, rev 5)", - "exsafar", "Safari (Russia) (Extrema)", - "extdwnhl", "Extreme Downhill (v1.5)", - "exterm", "Exterminator", - "extrmatn", "Extermination (World)", - "extrmatnj", "Extermination (Japan)", - "extrmatnu", "Extermination (US)", - "extrmth", "Treasure Hunt (Russia) (Extrema)", - "extrmti", "Treasure Island (Russia) (Extrema)", - "exvania", "Exvania (World)", - "exvaniaj", "Exvania (Japan)", - "exzisus", "Exzisus (Japan, dedicated)", - "exzisusa", "Exzisus (Japan, conversion)", - "exzisust", "Exzisus (TAD license)", - "eyes", "Eyes (US set 1)", - "eyes2", "Eyes (US set 2)", - "eyesb", "Eyes (bootleg set 1)", - "eyeszac", "Eyes (Italy)", - "eyeszacb", "Eyes (bootleg set 2, decrypted)", - "eztouch", "EZ Touch (v116 China)", - "f14_l1", "F14 Tomcat (L-1)", - "f14_p3", "F14 Tomcat (P-3)", - "f14_p4", "F14 Tomcat (P-4)", - "f15se", "F-15 Strike Eagle (rev. 2.2 02/25/91)", - "f15se21", "F-15 Strike Eagle (rev. 2.1 02/04/91)", - "f1dream", "F-1 Dream", - "f1dreamb", "F-1 Dream (bootleg)", - "f1en", "F1 Exhaust Note", - "f1gp", "F-1 Grand Prix", - "f1gp2", "F-1 Grand Prix Part II", - "f1gpb", "F-1 Grand Prix (Playmark bootleg)", - "f1gpp", "F1 Grand Prix", - "f1gpstar", "Grand Prix Star", - "f1gpstr2", "F-1 Grand Prix Star II", - "f1lap", "F1 Super Lap (World)", - "f1lapj", "F1 Super Lap (Japan)", - "f1superb", "F1 Super Battle", - "f355", "Ferrari F355 Challenge", - "f355bios", "Naomi Ferrari F355 Challenge Bios", - "f355twin", "Ferrari F355 Challenge (Twin)", - "f355twn2", "Ferrari F355 Challenge 2 (Twin)", - "fa", "F/A (Japan)", - "faceoff", "Face Off (Japan)", - "faeton", "Faeton", - "fairyl2", "Fairy Land 2 (set 1)", - "fairyl2a", "Fairy Land 2 (set 2)", - "fairyl2b", "Fairy Land 2 (set 3)", - "fairyl2bl", "Fairy Land 2 (bootleg)", - "falcnwld", "Falcons Wild - Wild Card 1991 (TVG)", - "falcnwlda", "Falcons Wild - World Wide Poker (Video Klein, set 1)", - "falcnwldb", "Falcons Wild - World Wide Poker (Video Klein, set 2)", - "falcnwldc", "Falcons Wild - World Wide Poker (Falcon original)", - "falcon", "Falcon (bootleg of Phoenix) (8085A CPU)", - "falconz", "Falcon (bootleg of Phoenix) (Z80 CPU)", - "famibox", "FamicomBox", - "famlyfun", "Family Fun!", - "fantasia", "Fantasia (940429 PCB, set 1)", - "fantasiaa", "Fantasia (940307 PCB)", - "fantasiab", "Fantasia (940429 PCB, set 2)", - "fantastc", "Fantastic (Galaga conversion on Galaxian hardware)", - "fantasy", "Fantasy (World)", - "fantasyj", "Fantasy (Japan)", - "fantasyu", "Fantasy (US)", - "fantazia", "Fantazia (bootleg?)", - "fantjour", "Fantastic Journey (ver EAA)", - "fantjoura", "Fantastic Journey (ver AAA)", - "fantland", "Fantasy Land (set 1)", - "fantlanda", "Fantasy Land (set 2)", - "fantsia2", "Fantasia II (Explicit)", - "fantsia2a", "Fantasia II (Less Explicit)", - "fantsy95", "Fantasy '95", - "fantzn2", "Fantasy Zone II - The Tears of Opa-Opa (MC-8123, 317-0057)", - "fantzn2x", "Fantasy Zone II - The Tears of Opa-Opa (System 16C version)", - "fantzn2xp", "Fantasy Zone II - The Tears of Opa-Opa (System 16C version, prototype)", - "fantzone", "Fantasy Zone (Rev A, unprotected)", - "fantzone1", "Fantasy Zone (unprotected)", - "fantzonep", "Fantasy Zone (317-5000)", - "fantzonepr", "Fantasy Zone (prototype)", - "farfalla", "Farfalla", - "farfallag", "Farfalla (German speech)", - "farfallai", "Farfalla (Italian speech)", - "farmer", "Farmers Rebellion", - "farwest", "Far West", - "fashion", "Fashion (Version 2.14)", - "fashiong", "Fashion Gambler (set 1)", - "fashiong2", "Fashion Gambler (set 2)", - "fastdraw", "Fast Draw Showdown v1.3", - "fastdrwp", "Fast Draw (poker conversion kit)?", - "fastfred", "Fast Freddie", - "fastlane", "Fast Lane", - "fateulc", "Fate: Unlimited Codes (FUD1 ver. A)", - "fateulcb", "Fate: Unlimited Codes (bootleg)", - "fatfursp", "Fatal Fury Special / Garou Densetsu Special (set 1)(NGM-058)(NGH-058)", - "fatfurspa", "Fatal Fury Special / Garou Densetsu Special (set 2)(NGM-058)(NGH-058)", - "fatfurwa", "Fatal Fury: Wild Ambition (rev.A)", - "fatfury1", "Fatal Fury - King of Fighters / Garou Densetsu - shukumei no tatakai (NGM-033)(NGH-033)", - "fatfury2", "Fatal Fury 2 / Garou Densetsu 2 - arata-naru tatakai (NGM-047)(NGH-047)", - "fatfury3", "Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - haruka-naru tatakai (NGM-069)(NGH-069)", - "fathom", "Fathom", - "fax", "FAX", - "fax2", "FAX 2", - "fb2010", "Fruit Bonus 2010", - "fb2gen", "Fruit Bonus 2nd Generation (Version 1.8E Dual)", - "fb2genc1", "Fruit Bonus 2nd Generation (Version 1.8R, set 1)", - "fb2genc2", "Fruit Bonus 2nd Generation (Version 1.8LT, set 1)", - "fb2gend1", "Fruit Bonus 2nd Generation (Version 1.8R, set 2)", - "fb2gend2", "Fruit Bonus 2nd Generation (Version 1.8LT, set 2)", - "fb2geno", "Fruit Bonus 2nd Generation (Version 1.6XT)", - "fb2geno2", "Fruit Bonus 2nd Generation (Version 1.5)", - "fb2genv1", "Fruit Bonus 2nd Generation (Version 1.8R Dual)", - "fb2genv2", "Fruit Bonus 2nd Generation (Version 1.8LT Dual)", - "fb2nd", "Fruit Bonus 2nd Edition (Version 1.8R, set 1)", - "fb2ndc2", "Fruit Bonus 2nd Edition (Version 1.8LT, set 1)", - "fb2ndd1", "Fruit Bonus 2nd Edition (Version 1.8R, set 2)", - "fb2ndd2", "Fruit Bonus 2nd Edition (Version 1.8LT, set 2)", - "fb2ndo", "Fruit Bonus 2nd Edition (Version 1.5)", - "fb2ndv1", "Fruit Bonus 2nd Edition (Version 1.8R Dual)", - "fb2ndv2", "Fruit Bonus 2nd Edition (Version 1.8LT Dual)", - "fb3g", "Fruit Bonus 3G (Version 1.0.3)", - "fb4", "Fruit Bonus 2004 (Version 1.5R, set 1)", - "fb4b2", "Fruit Bonus 2004 (Version 1.5LT, set 1)", - "fb4c1", "Fruit Bonus 2004 (Version 1.5R, set 2)", - "fb4c2", "Fruit Bonus 2004 (Version 1.5LT, set 2)", - "fb4d1", "Fruit Bonus 2004 (Version 1.5R, set 3)", - "fb4d2", "Fruit Bonus 2004 (Version 1.5LT, set 3)", - "fb4exp", "Fruit Bonus 2005 (2004 Export - Version 1.5E Dual)", - "fb4o", "Fruit Bonus 2004 (Version 1.3XT)", - "fb4o2", "Fruit Bonus 2004 (Version 1.2)", - "fb4v1", "Fruit Bonus 2004 (Version 1.5R Dual)", - "fb4v2", "Fruit Bonus 2004 (Version 1.5LT Dual)", - "fb5", "Fruit Bonus 2005 (Version 1.5SH, set 1)", - "fb5c", "Fruit Bonus 2005 (Version 1.5SH, set 2)", - "fb5d", "Fruit Bonus 2005 (Version 1.5SH, set 3)", - "fb5v", "Fruit Bonus 2005 (Version 1.5SH Dual)", - "fb6", "Fruit Bonus '06 - 10th anniversary (Version 1.7E CGA)", - "fb6d1", "Fruit Bonus '06 - 10th anniversary (Version 1.7R CGA)", - "fb6d2", "Fruit Bonus '06 - 10th anniversary (Version 1.7LT CGA)", - "fb6s1", "Fruit Bonus '06 - 10th anniversary (Version 1.7R CGA, Compact PCB)", - "fb6s2", "Fruit Bonus '06 - 10th anniversary (Version 1.7LT CGA, Compact PCB)", - "fb6s3", "Fruit Bonus '06 - 10th anniversary (Version 1.3R CGA, Compact PCB)", - "fb6se", "Fruit Bonus 2006 Special Edition (Version 1.4E CGA)", - "fb6sed1", "Fruit Bonus 2006 Special Edition (Version 1.4R CGA)", - "fb6sed2", "Fruit Bonus 2006 Special Edition (Version 1.4LT CGA)", - "fb6sev", "Fruit Bonus 2006 Special Edition (Version 1.4E Dual)", - "fb6sev1", "Fruit Bonus 2006 Special Edition (Version 1.4R Dual)", - "fb6sev2", "Fruit Bonus 2006 Special Edition (Version 1.4LT Dual)", - "fb6v", "Fruit Bonus '06 - 10th anniversary (Version 1.7E Dual)", - "fb6v1", "Fruit Bonus '06 - 10th anniversary (Version 1.7R Dual)", - "fb6v2", "Fruit Bonus '06 - 10th anniversary (Version 1.7LT Dual)", - "fbait2bc", "Fisherman's Bait 2 - A Bass Challenge (GE865 VER. UAB)", - "fbaitbc", "Fisherman's Bait - A Bass Challenge (GE765 VER. UAB)", - "fbaitmc", "Fisherman's Bait - Marlin Challenge (GX889 VER. EA)", - "fbaitmca", "Fisherman's Bait - Marlin Challenge (GX889 VER. AA)", - "fbaitmcj", "Fisherman's Bait - Marlin Challenge (GX889 VER. JA)", - "fbaitmcu", "Fisherman's Bait - Marlin Challenge (GX889 VER. UA)", - "fball_ii", "Fireball II", - "fbclass", "Fireball Classic", - "fbcrazy", "Football Crazy (Video Quiz)", - "fbdeluxe", "Fruit Bonus Deluxe (Version 1.0.9)", - "fbdeluxeo", "Fruit Bonus Deluxe (Version 1.0.7)", - "fbfrenzy", "Football Frenzy (NGM-034)(NGH-034)", - "fcnudge", "Fruit Carnival Nudge (Version 2.1 Dual)", - "fcnudgeo", "Fruit Carnival Nudge (Version 2.0, set 1)", - "fcnudgeo2", "Fruit Carnival Nudge (Version 2.0, set 2)", - "fcnudgeo3", "Fruit Carnival Nudge (Version 1.7)", - "fcockt2", "Fruit Cocktail 2 (080707 Russia)", - "fcockt2_3", "Fruit Cocktail 2 (080909 World)", - "fcockt2_4", "Fruit Cocktail 2 (081105 World)", - "fcockt2_4a", "Fruit Cocktail 2 (bootleg, 081105, banking address hack)", - "fcockt2_4b", "Fruit Cocktail 2 (bootleg, 081105, banking address hack, no credit limit)", - "fcockt2_4d", "Fruit Cocktail 2 (bootleg, 081105, banking address hack, payout percentage 70)", - "fcockt2_4f", "Fruit Cocktail 2 (bootleg, 081105, LOTOS FR02)", - "fcockt2_5", "Fruit Cocktail 2 (081106 Russia)", - "fcockt2_6", "Fruit Cocktail 2 (090528 Lottery)", - "fcockt2_7", "Fruit Cocktail 2 (090813 Entertainment)", - "fcockt2a", "Fruit Cocktail 2 (bootleg, 080707, banking address hack)", - "fcockt_10", "Fruit Cocktail (070517 Russia)", - "fcockt_11", "Fruit Cocktail (070822 Russia)", - "fcockt_12", "Fruit Cocktail (070911 Russia)", - "fcockt_14", "Fruit Cocktail (090708 Entertainment)", - "fcockt_3", "Fruit Cocktail (030623 World)", - "fcockt_5", "Fruit Cocktail (031111 World)", - "fcockt_6", "Fruit Cocktail (040216 World)", - "fcockt_6a", "Fruit Cocktail (bootleg, 040216, banking address hack)", - "fcockt_6b", "Fruit Cocktail (bootleg, 040216, backdoor)", - "fcockt_6c", "Fruit Cocktail (bootleg, 040216, LotoRossy+)", - "fcockt_6d", "Fruit Cocktail (bootleg, 040216, VIDEO GAME-1 FR01)", - "fcockt_7", "Fruit Cocktail (050118 World)", - "fcockt_7a", "Fruit Cocktail (bootleg, 050118, backdoor)", - "fcockt_7b", "Fruit Cocktail (bootleg, 050118, VIDEO GAME-1 FR01)", - "fcockt_7c", "Fruit Cocktail (bootleg, 050118, payout percentage 40)", - "fcockt_7d", "Fruit Cocktail (bootleg, 050118, payout percentage 60)", - "fcockt_7e", "Fruit Cocktail (bootleg, 050118, payout percentage 70)", - "fcockt_7f", "Fruit Cocktail (bootleg, 050118, changed version text)", - "fcockt_7g", "Fruit Cocktail (bootleg, 050118, LOTO PROGRAM V-FC2)", - "fcockt_7h", "Fruit Cocktail (bootleg, 050118, LOTOS FR01)", - "fcockt_8", "Fruit Cocktail (060111 World)", - "fcockt_8a", "Fruit Cocktail (bootleg, 060111, LOTO COCKTAIL V01-0001)", - "fcockt_8b", "Fruit Cocktail (bootleg, 060111, LOTTOGAME (I))", - "fcockt_9", "Fruit Cocktail (070305 Russia)", - "fcombat", "Field Combat", - "fcrash", "Final Crash (bootleg of Final Fight)", - "fearless", "Fearless Pinocchio (V101US)", - "fenix", "Fenix (bootleg of Phoenix)", - "feversoc", "Fever Soccer", - "feversos", "Fever SOS (International, Ver. 98/09/25)", - "ffantasy", "Fighting Fantasy (Japan revision 2)", - "ffantasya", "Fighting Fantasy (Japan)", - "ffantasybl", "Fighting Fantasy (bootleg with 68705)", - "ffight", "Final Fight (World, set 1)", - "ffight2b", "Final Fight 2 (SNES bootleg)", - "ffighta", "Final Fight (World, set 2)", - "ffightbl", "Final Fight (bootleg)", - "ffightj", "Final Fight (Japan)", - "ffightj1", "Final Fight (Japan 900112)", - "ffightj2", "Final Fight (Japan 900305)", - "ffightj3", "Final Fight (Japan 900613)", - "ffightjh", "Street Smart / Final Fight (Japan, hack)", - "ffightu", "Final Fight (USA, set 1)", - "ffightu1", "Final Fight (USA, set 2)", - "ffightua", "Final Fight (USA 900112)", - "ffightub", "Final Fight (USA 900613)", - "ffortune", "Fantasy Fortune (1VXFC5460, New Zealand)", - "ffreveng", "Final Fight Revenge (JUET 990714 V1.000)", - "ffv101", "Flipper Football (v1.01)", - "ffv104", "Flipper Football (v1.04)", - "fghtatck", "Fighter & Attacker (US)", - "fghtbskt", "Fighting Basketball", - "fghthist", "Fighter's History (World ver 43-07, DE-0380-2 PCB)", - "fghthistj", "Fighter's History (Japan ver 41-07, DE-0395-1 PCB)", - "fghthistja", "Fighter's History (Japan ver 41-05, DE-0380-2 PCB)", - "fghthistjb", "Fighter's History (Japan ver 41-04, DE-0380-1 PCB)", - "fghthistu", "Fighter's History (US ver 42-05, DE-0395-1 PCB)", - "fghthistua", "Fighter's History (US ver 42-03, DE-0380-2 PCB)", - "fghtjam", "Capcom Fighting Jam (JAM1 Ver. A)", - "fghtmn", "Fighting Mania (QG918 VER. EAA)", - "fghtmna", "Fighting Mania (QG918 VER. AAA)", - "fghtmnk", "Fighting Mania (QG918 VER. KAA)", - "fghtmnu", "Fighting Mania (QG918 VER. UAA)", - "fgoal", "Field Goal (set 1)", - "fgoala", "Field Goal (set 2)", - "fgtlayer", "Fighting Layer (Japan, FTL1/VER.A)", - "fh_905h", "Funhouse 9.05H", - "fh_l3", "Funhouse L-3", - "fh_l4", "Funhouse L-4", - "fh_l5", "Funhouse L-5", - "fh_l9", "Funhouse L-9 (SL-2m)", - "fh_l9b", "Funhouse L-9 (SL-2m) Bootleg Improved German translation", - "fhawk", "Fighting Hawk (World)", - "fhawkj", "Fighting Hawk (Japan)", - "fhboxers", "Funky Head Boxers (JUETBKAL 951218 V1.000)", - "fhunter", "Fortune Hunter (2XF5196I01, USA)", - "fhuntera", "Fortune Hunter (2XF5196I02, USA)", - "fieldday", "Field Day", - "fightfev", "Fight Fever (set 1)", - "fightfeva", "Fight Fever (set 2)", - "fightrol", "Fighting Roller", - "filetto", "Filetto (v1.05 901009)", - "filthyr", "Filthy Rich (Russia)", - "finalap2", "Final Lap 2", - "finalap2j", "Final Lap 2 (Japan)", - "finalap3", "Final Lap 3 (World, set 1)", - "finalap3a", "Final Lap 3 (World, set 2)", - "finalap3bl", "Final Lap 3 (bootleg)", - "finalap3j", "Final Lap 3 (Japan)", - "finalap3jc", "Final Lap 3 (Japan - Rev C)", - "finalapr", "Final Lap R (Rev. B)", - "finalaprj", "Final Lap R (Japan Rev. C)", - "finalapro", "Final Lap R", - "finalb", "Final Blow (World)", - "finalbj", "Final Blow (Japan)", - "finalbny", "Mahjong Final Bunny [BET] (Japan)", - "finalbu", "Final Blow (US)", - "finalgdr", "Final Godori (Korea, version 2.20.5915)", - "finalizr", "Finalizer - Super Transformation", - "finalizrb", "Finalizer - Super Transformation (bootleg)", - "finallap", "Final Lap (Rev E)", - "finallapc", "Final Lap (Rev C)", - "finallapd", "Final Lap (Rev D)", - "finallapjb", "Final Lap (Japan, Rev B)", - "finallapjc", "Final Lap (Japan, Rev C)", - "finalttr", "Final Tetris", - "findlove", "Zenkoku Seifuku Bishoujo Grand Prix Find Love (J 971212 V1.000)", - "findout", "Find Out (Version 4.04)", - "finehour", "Finest Hour (Japan)", - "finfurl", "Final Furlong (FF2 Ver. A)", - "finfurl2", "Final Furlong 2 (World)", - "finfurl2j", "Final Furlong 2 (Japan)", - "finlarch", "Final Arch (J 950714 V1.001)", - "fire_l3", "Fire! (L-3)", - "fireact", "Fire Action", - "fireactd", "Fire Action Deluxe", - "firebarr", "Fire Barrel (Japan)", - "firebatl", "Fire Battle", - "firebeas", "Firebeast (prototype)", - "firebird", "Hot Fire Birds", - "firefox", "Fire Fox (set 1)", - "firefoxa", "Fire Fox (set 2)", - "firehawk", "Fire Hawk", - "firemntn", "Fire Mountain", - "fireone", "Fire One", - "fireshrk", "Fire Shark", - "fireshrka", "Fire Shark (earlier)", - "fireshrkd", "Fire Shark (Korea, set 1, easier)", - "fireshrkdh", "Fire Shark (Korea, set 2, harder)", - "firetrap", "Fire Trap (US)", - "firetrapbl", "Fire Trap (Japan bootleg)", - "firetrapj", "Fire Trap (Japan)", - "firetrk", "Fire Truck / Smokey Joe", - "firstcl", "First Class Traveller (set 1)", - "fishfren", "Fishin' Frenzy (prototype)", - "fitegolf", "Fighting Golf (World?)", - "fitegolfu", "Fighting Golf (US)", - "fitfight", "Fit of Fighting", - "fitter", "Fitter", - "fitterbl", "Fitter (bootleg of Round-Up)", - "fiveside", "Five a Side Soccer (ver UAA)", - "fixeight", "FixEight (Europe)", - "fixeighta", "FixEight (Southeast Asia)", - "fixeightat", "FixEight (Southeast Asia, Taito license)", - "fixeightbl", "FixEight (Korea, bootleg)", - "fixeighth", "FixEight (Hong Kong)", - "fixeightht", "FixEight (Hong Kong, Taito license)", - "fixeightj", "FixEight (Japan)", - "fixeightjt", "FixEight (Japan, Taito license)", - "fixeightk", "FixEight (Korea)", - "fixeightkt", "FixEight (Korea, Taito license)", - "fixeightt", "FixEight (Europe, Taito license)", - "fixeighttw", "FixEight (Taiwan)", - "fixeighttwt", "FixEight (Taiwan, Taito license)", - "fixeightu", "FixEight (USA)", - "fixeightut", "FixEight (USA, Taito license)", - "fjbuster", "Fujiyama Buster (Japan)", - "fjholden", "FJ Holden", - "flamegun", "Flame Gunner", - "flamegunj", "Flame Gunner (Japan)", - "flash_l1", "Flash (L-1)", - "flash_t1", "Flash (T-1) Ted Estes", - "flashgal", "Flashgal (set 1)", - "flashgala", "Flashgal (set 2)", - "flashgdn", "Flash Gordon", - "flashgdnf", "Flash Gordon (French)", - "flashgdnp1", "Flash Gordon (prototype rev. 1)", - "flashgdnp2", "Flash Gordon (prototype rev. 2)", - "flashgdnv", "Flash Gordon (Vocalizer sound)", - "flicker", "Flicker (prototype)", - "flicky", "Flicky (128k Version, System 2, 315-5051)", - "flickyo", "Flicky (64k Version, System 1, 315-5051, set 1)", - "flickys1", "Flicky (64k Version, System 1, 315-5051, set 2)", - "flickys2", "Flicky (128k Version, System 2, not encrypted)", - "flight2k", "Flight 2000", - "flipjack", "Flipper Jack", - "flipmaze", "Flip Maze (V2.04J)", - "flipshot", "Battle Flip Shot", - "flipull", "Flipull (Japan)", - "flkatck", "Flak Attack (Japan)", - "flkatcka", "Flak Attack (Japan, PWB 450593 sub-board)", - "flower", "Flower (US)", - "flowerj", "Flower (Japan)", - "flstory", "The FairyLand Story", - "flstoryj", "The FairyLand Story (Japan)", - "flyball", "Flyball (rev 2)", - "flyball1", "Flyball (rev 1)", - "flyboy", "Fly-Boy", - "flyboyb", "Fly-Boy (bootleg)", - "flytiger", "Flying Tiger (set 1)", - "flytigera", "Flying Tiger (set 2)", - "fmaniac3", "Fishing Maniac 3", - "fncywld", "Fancy World - Earth of Crisis", - "fnkyfish", "Funky Fish", - "fnshark", "Flyin' Shark (bootleg of Hishou Zame)", - "foathens", "Flame of Athens", - "foodf", "Food Fight (rev 3)", - "foodf2", "Food Fight (rev 2)", - "foodfc", "Food Fight (cocktail)", - "footchmp", "Football Champ (World)", - "footchmpbl", "Football Champ (World) (bootleg)", - "forcebrk", "Force Break (bootleg)", - "forceii", "Force II", - "forgottn", "Forgotten Worlds (World)", - "forgottnu", "Forgotten Worlds (USA, B-Board 88621B-2, Rev. C)", - "forgottnu1", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. C)", - "forgottnua", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. A)", - "forgottnuaa", "Forgotten Worlds (USA, B-Board 88618B-2, Rev. AA)", - "formatz", "Formation Z", - "fort2b", "Fortress 2 Blue Arcade (ver 1.01 / pcb ver 3.05)", - "fort2ba", "Fortress 2 Blue Arcade (ver 1.00 / pcb ver 3.05)", - "fortecar", "Forte Card (Ver 103, English)", - "fortecrd", "Forte Card (Ver 110, Spanish)", - "fortune1", "Fortune I (PK485-S) Draw Poker", - "fotns", "Fist Of The North Star", - "fourtrax", "Four Trax", - "foxylady", "Foxy Lady", - "fpoint", "Flash Point (set 2, Japan, FD1094 317-0127A)", - "fpoint1", "Flash Point (set 1, Japan, FD1094 317-0127A)", - "fpointbj", "Flash Point (Japan, bootleg)", - "fpointbl", "Flash Point (World, bootleg)", - "fpwr2_l2", "Firepower II (L-2)", - "frankst", "Mary Shelley's Frankenstein", - "frankstg", "Mary Shelley's Frankenstein (Germany)", - "franticf", "Frantic Fred", - "freddy", "Freddy: A Nightmare on Elm Street (rev.3)", - "freddy4", "Freddy: A Nightmare on Elm Street (rev.4)", - "fredmem", "Fred Flintstones' Memory Match (World?, Ticket version, 3/17/95)", - "fredmemc", "Fred Flintstones' Memory Match (Mandarin Chinese, 3/17/95)", - "fredmemj", "Fred Flintstones' Memory Match (Japan, High Score version, 3/20/95)", - "fredmemuk", "Fred Flintstones' Memory Match (UK, 3/17/95)", - "fredmemus", "Fred Flintstones' Memory Match (US, High Score version, 3/10/95)", - "fredmesp", "Fred Flintstones' Memory Match (Spanish, 3/17/95)", - "freedom", "Freedom", - "freefall", "Freefall", - "freekick", "Free Kick (NS6201-A 1987.10)", - "freekicka", "Free Kick (NS6201-A 1987.9)", - "freekickb1", "Free Kick (bootleg set 1)", - "freekickb2", "Free Kick (bootleg set 2)", - "freekickb3", "Free Kick (bootleg set 3)", - "freeze", "Freeze", - "freezeat", "Freeze (Atari) (prototype, English voice, 96/10/25)", - "freezeat2", "Freeze (Atari) (prototype, 96/10/18)", - "freezeat3", "Freeze (Atari) (prototype, 96/10/07)", - "freezeat4", "Freeze (Atari) (prototype, 96/10/03)", - "freezeat5", "Freeze (Atari) (prototype, 96/09/20, AMOA-96)", - "freezeat6", "Freeze (Atari) (prototype, 96/09/07, Jamma-96)", - "freezeatjp", "Freeze (Atari) (prototype, Japanese voice, 96/10/25)", - "frenzy", "Frenzy", - "fresh", "Fruit Fresh (Italy)", - "friskyt", "Frisky Tom (set 1)", - "friskyta", "Frisky Tom (set 2)", - "frogf", "Frog (Falcon bootleg)", - "frogg", "Frog (Galaxian hardware)", - "frogger", "Frogger", - "froggermc", "Frogger (Moon Cresta hardware)", - "froggers", "Frog", - "froggers1", "Frogger (Sega set 1)", - "froggers2", "Frogger (Sega set 2)", - "froggrs", "Frogger (Scramble hardware)", - "frogs", "Frogs", - "fromanc2", "Taisen Idol-Mahjong Final Romance 2 (Japan)", - "fromanc4", "Taisen Mahjong Final Romance 4 (Japan)", - "fromance", "Idol-Mahjong Final Romance (Japan)", - "fromancr", "Taisen Mahjong Final Romance R (Japan)", - "frontier", "Frontier", - "frontlin", "Front Line", - "fround", "The Final Round (version M)", - "froundl", "The Final Round (version L)", - "frpwr_l2", "Firepower (L-2)", - "frpwr_l6", "Firepower (L-6)", - "frpwr_t6", "Firepower (T-6)", - "fruitbun", "Fruits & Bunny (World?)", - "fruitpc", "Fruit Land", - "fruitstb", "Fruit Star Bonus (Ver 8.20PIR)", - "fruitstr", "Fruit Star (encrypted)", - "fs_lx2", "The Flintstones (LX-2)", - "fs_lx4", "The Flintstones (LX-4)", - "fs_lx5", "The Flintstones (LX-5)", - "fs_sp2", "The Flintstones (SP-2)", - "fshark", "Flying Shark (World)", - "fsharkbt", "Flying Shark (bootleg with 8741)", - "fsoccer", "Fighting Soccer (version 4)", - "fsoccerb", "Fighting Soccer (Joystick hack bootleg)", - "fsoccerba", "Fighting Soccer (Joystick hack bootleg, alt)", - "fsoccerj", "Fighting Soccer (Japan)", - "fspiderb", "Frog & Spiders (bootleg?)", - "fstarfrc", "Final Star Force (US)", - "fstarfrcj", "Final Star Force (Japan)", - "fstation", "Fun Station Spielekoffer 9 Spiele", - "fswords", "Fighters Swords (Korean release of Samurai Shodown III)", - "ft_l3", "Fish Tales (L-3)", - "ft_l4", "Fish Tales (L-4)", - "ft_l5", "Fish Tales (L-5)", - "ft_p4", "Fish Tales (P-4)", - "ftimpact", "Fighters' Impact (Ver 2.02O)", - "ftimpactj", "Fighters' Impact (Ver 2.02J)", - "ftimpactu", "Fighters' Impact (Ver 2.02A)", - "ftimpcta", "Fighters' Impact A (Ver 2.00J)", - "ftspeed", "Faster Than Speed", - "fullthrl", "Full Throttle (Japan)", - "fun4", "Fun Four (Set 1) [TTL]", - "fun4a", "Fun Four (Set 2) [TTL]", - "funcsino", "Status Fun Casino (V1.3s)", - "funcube", "Funcube (v1.5)", - "funcube2", "Funcube 2 (v1.1)", - "funcube3", "Funcube 3 (v1.1)", - "funcube4", "Funcube 4 (v1.0)", - "funcube5", "Funcube 5 (v1.0)", - "funkball", "Funky Ball", - "funkybee", "Funky Bee", - "funkybeeb", "Funky Bee (bootleg, harder)", - "funkyfig", "The First Funky Fighter (set 1)", - "funkyfiga", "The First Funky Fighter (set 2)", - "funkyjet", "Funky Jet (World, rev 1)", - "funkyjeta", "Funky Jet (World)", - "funkyjetj", "Funky Jet (Japan, rev 2)", - "funlddlx", "Funny Land de Luxe", - "funnyfm", "Funny Farm (v1.17)", - "funnyfma", "Funny Farm (v1.26)", - "funnyfmb", "Funny Farm (v1.30)", - "funnymou", "Funny Mouse (Japan)", - "funquiz", "Fun World Quiz (Austrian)", - "funriver", "Fun River (Version 1.4R CGA)", - "funriverd1", "Fun River (Version 1.3R CGA)", - "funriverv", "Fun River (Version 1.4R Dual)", - "funybubl", "Funny Bubble", - "funybublc", "Funny Bubble (Comad version)", - "funystrp", "Funny Strip", - "futari10", "Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.)", - "futari15", "Mushihime-Sama Futari Ver 1.5 (2006/12/8.MASTER VER. 1.54.)", - "futari15a", "Mushihime-Sama Futari Ver 1.5 (2006/12/8 MASTER VER 1.54)", - "futaribl", "Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER)", - "futflash", "Future Flash", - "futrquen", "Future Queen", - "futspy", "Future Spy (315-5061)", - "futurspa", "Future Spa", - "futurwld", "Future World", - "fuudol", "Fuudol (Japan)", - "fvipers", "Fighting Vipers (Revision D)", - "fvipers2", "Fighting Vipers 2 (Revision A)", - "fx", "F-X (bootleg of S.R.D. Mission)", - "g13knd", "Golgo 13 Kiseki no Dandou (Japan, GLS1/VER.A)", - "g4u2", "Games 4 U 2 (94 5.6-0)", - "g4u3", "Games 4 U 3 (94 5.6-4)", - "g4u3a", "Games 4 U 3 (94 5.6-5)", - "g4u4", "Games 4 U 4 (94 5.6-5)", - "g4u5", "Games 4 U 5 (94 5.6-5)", - "g4u6", "Games 4 U 6 (94 5.6-5)", - "g4u7", "Games 4 U 7 (94 5.6-5a)", - "ga2", "Golden Axe: The Revenge of Death Adder (World)", - "ga2j", "Golden Axe: The Revenge of Death Adder (Japan)", - "ga2u", "Golden Axe: The Revenge of Death Adder (US)", - "gaia", "Gaia Crusaders", - "gaiapols", "Gaiapolis (ver EAF)", - "gaiapolsj", "Gaiapolis (ver JAF)", - "gaiapolsu", "Gaiapolis (ver UAF)", - "gaiden", "Ninja Gaiden (US)", - "gakupara", "Quiz Gakuen Paradise (Japan)", - "gakusai", "Mahjong Gakuensai (Japan)", - "gakusai2", "Mahjong Gakuensai 2 (Japan)", - "gal10ren", "Mahjong Gal 10-renpatsu (Japan)", - "gal3", "Galaxian 3 - Theater 6 : Project Dragoon", - "galactic", "Galactica - Batalha Espacial", - "galaga", "Galaga (Namco rev. B)", - "galaga3", "Galaga 3 (GP3 rev. D)", - "galaga3a", "Galaga 3 (GP3 rev. C)", - "galaga3b", "Galaga 3 (GP3)", - "galaga3c", "Galaga 3 (set 4)", - "galaga3m", "Galaga 3 (set 5)", - "galaga88", "Galaga '88", - "galaga88j", "Galaga '88 (Japan)", - "galagamf", "Galaga (Midway set 1 with fast shoot hack)", - "galagamk", "Galaga (Midway set 2)", - "galagamw", "Galaga (Midway set 1)", - "galagao", "Galaga (Namco)", - "galap1", "Space Invaders Galactica (galaxiana hack)", - "galap4", "Galaxian Part 4 (hack)", - "galapx", "Galaxian Part X (moonaln hack)", - "galastrm", "Galactic Storm (Japan)", - "galaxbsf", "Galaxian (bootleg, set 1)", - "galaxbsf2", "Galaxian (bootleg, set 3)", - "galaxi", "Galaxi (v2.0)", - "galaxia", "Galaxia (set 1)", - "galaxiaa", "Galaxia (set 2)", - "galaxiab", "Galaxia (set 3)", - "galaxiac", "Galaxia (set 4)", - "galaxian", "Galaxian (Namco set 1)", - "galaxiana", "Galaxian (Namco set 2)", - "galaxianbl", "Galaxian (bootleg, set 2)", - "galaxiani", "Galaxian (Irem)", - "galaxianm", "Galaxian (Midway set 1)", - "galaxianmo", "Galaxian (Midway set 2)", - "galaxiant", "Galaxian (Taito)", - "galaxrf", "Galaxian (Recreativos Franco S.A. Spanish bootleg)", - "galaxrfgg", "Galaxian Growing Galaxip / Galaxian Nave Creciente (Recreativos Franco S.A. Spanish bootleg)", - "galaxyfg", "Galaxy Fight - Universal Warriors", - "galaxygn", "Galaxy Gunners", - "galaxypi", "Galaxy", - "galaxyr", "Galaxy Ranger", - "galaxyrp", "Galaxy Ranger (Pioneer LDV1000)", - "galds", "Gals Ds - Three Dealers Casino House (bootleg?)", - "galemp", "Galaxy Empire (bootleg?)", - "galgame", "Galaxy Game", - "galgame2", "Galaxy Games StarPak 2", - "galgbios", "Galaxy Games (BIOS v1.90)", - "galhustl", "Gals Hustler", - "galivan", "Cosmo Police Galivan (12/26/1985)", - "galivan2", "Cosmo Police Galivan (12/16/1985)", - "galivan3", "Cosmo Police Galivan (12/11/1985)", - "galkaika", "Mahjong Gal no Kaika (Japan)", - "galkoku", "Mahjong Gal no Kokuhaku (Japan)", - "gallag", "Gallag", - "gallgall", "Gallagher's Gallery v2.2", - "gallop", "Gallop - Armed Police Unit (Japan)", - "galmedes", "Galmedes (Japan)", - "galpani2", "Gals Panic II (Asia)", - "galpani2e", "Gals Panic II (English)", - "galpani2e2", "Gals Panic II (English, 2 PCB ver.)", - "galpani2g", "Gals Panic II (Germany, 2 PCB ver.)", - "galpani2gs", "Gals Panic II (Germany, single PCB)", - "galpani2i", "Gals Panic II (Italy, single PCB)", - "galpani2j", "Gals Panic II (Japan)", - "galpani2t", "Gals Panic II (Taiwan)", - "galpani3", "Gals Panic 3 (Euro)", - "galpani3hk", "Gals Panic 3 (Hong Kong)", - "galpani3j", "Gals Panic 3 (Japan)", - "galpani3k", "Gals Panic 3 (Korea)", - "galpani4", "Gals Panic 4 (Japan)", - "galpani4k", "Gals Panic 4 (Korea)", - "galpanic", "Gals Panic (Unprotected)", - "galpanica", "Gals Panic (MCU Protected)", - "galpanis", "Gals Panic S - Extra Edition (Europe)", - "galpanisj", "Gals Panic S - Extra Edition (Japan)", - "galpanisk", "Gals Panic S - Extra Edition (Korea)", - "galpans2", "Gals Panic S2 (Japan)", - "galpans2a", "Gals Panic S2 (Asia)", - "galpans3", "Gals Panic S3 (Japan)", - "galpansu", "Gals Panic SU (Korea)", - "galsnew", "Gals Panic (US, EXPRO-02 PCB)", - "galsnewa", "Gals Panic (Export, EXPRO-02 PCB)", - "galsnewj", "Gals Panic (Japan, EXPRO-02 PCB)", - "galsnewk", "Gals Panic (Korea, EXPRO-02 PCB)", - "galspnbl", "Gals Pinball", - "galturbo", "Galaxian Turbo (superg hack)", - "galxwars", "Galaxy Wars (Universal set 1)", - "galxwars2", "Galaxy Wars (Universal set 2)", - "galxwarst", "Galaxy Wars (Taito?)", - "gamatron", "Gamatron", - "gamatros", "Gamatron (Sonic)", - "gambl186", "unknown 186 based gambling game (V398)", - "gambl186a", "unknown 186 based gambling game (V399)", - "gamecst2", "GameCristal (version 2.613)", - "gamecstl", "GameCristal", - "gametngk", "The Game Paradise - Master of Shooting! / Game Tengoku - The Game Paradise", - "gammagic", "Game Magic", - "gamshara", "Gamshara (10021 Ver.A)", - "gamt1", "Gaminator 1 (set 1)", - "gamt10", "Gaminator 10 (set 1)", - "gamt10a", "Gaminator 10 (set 2)", - "gamt10b", "Gaminator 10 (set 3)", - "gamt10bag", "Gaminator 10 (bootleg, Bag)", - "gamt10c", "Gaminator 10 (set 4)", - "gamt10d", "Gaminator 10 (set 5)", - "gamt10e", "Gaminator 10 (set 6)", - "gamt10ent", "Gaminator 10 (bootleg, Ent)", - "gamt10f", "Gaminator 10 (set 7)", - "gamt10g", "Gaminator 10 (set 8)", - "gamt10gmult", "Gaminator 10 (bootleg, Multiloto)", - "gamt10h", "Gaminator 10 (set 9)", - "gamt10i", "Gaminator 10 (set 10)", - "gamt10j", "Gaminator 10 (set 11)", - "gamt10k", "Gaminator 10 (set 12)", - "gamt10l", "Gaminator 10 (set 13)", - "gamt10lotc", "Gaminator 10 (bootleg, C-Loto)", - "gamt10lotm", "Gaminator 10 (bootleg, Lotomatic)", - "gamt10m", "Gaminator 10 (set 14)", - "gamt10n", "Gaminator 10 (set 15)", - "gamt10o", "Gaminator 10 (set 16)", - "gamt11", "Gaminator 11 (set 1)", - "gamt11a", "Gaminator 11 (set 2)", - "gamt11b", "Gaminator 11 (set 3)", - "gamt11bmult", "Gaminator 11 (bootleg, Multiloto)", - "gamt11c", "Gaminator 11 (set 4)", - "gamt12", "Gaminator 12 (set 1)", - "gamt12a", "Gaminator 12 (set 2)", - "gamt12b", "Gaminator 12 (set 3)", - "gamt16", "Gaminator 16 (set 1)", - "gamt16a", "Gaminator 16 (set 2)", - "gamt16b", "Gaminator 16 (set 3)", - "gamt16c", "Gaminator 16 (set 4)", - "gamt16d", "Gaminator 16 (set 5)", - "gamt16e", "Gaminator 16 (set 6)", - "gamt16f", "Gaminator 16 (set 7)", - "gamt16fmult", "Gaminator 16 (bootleg, Multiloto)", - "gamt16g", "Gaminator 16 (set 8)", - "gamt16h", "Gaminator 16 (set 9)", - "gamt16i", "Gaminator 16 (set 10)", - "gamt16j", "Gaminator 16 (set 11)", - "gamt16k", "Gaminator 16 (set 12)", - "gamt16lotc", "Gaminator 16 (bootleg, C-Loto)", - "gamt17", "Gaminator 17 (set 1)", - "gamt17a", "Gaminator 17 (set 2)", - "gamt17b", "Gaminator 17 (set 3)", - "gamt18", "Gaminator 18 (set 1)", - "gamt18a", "Gaminator 18 (set 2)", - "gamt18b", "Gaminator 18 (set 3)", - "gamt18bmult", "Gaminator 18 (bootleg, Multiloto)", - "gamt18c", "Gaminator 18 (set 4)", - "gamt18d", "Gaminator 18 (set 5)", - "gamt18ent", "Gaminator 18 (bootleg, Ent)", - "gamt18lotc", "Gaminator 18 (bootleg, C-Loto)", - "gamt19", "Gaminator 19 (set 1)", - "gamt19a", "Gaminator 19 (set 2)", - "gamt19ent", "Gaminator 19 (bootleg, Ent)", - "gamt19lotc", "Gaminator 19 (bootleg, C-Loto)", - "gamt19mult", "Gaminator 19 (bootleg, Multiloto)", - "gamt1a", "Gaminator 1 (set 2)", - "gamt1b", "Gaminator 1 (set 3)", - "gamt1ent", "Gaminator 1 (bootleg, Ent)", - "gamt1lotc", "Gaminator 1 (bootleg, C-Loto)", - "gamt20", "Gaminator 20 (set 1)", - "gamt20a", "Gaminator 20 (set 2)", - "gamt20b", "Gaminator 20 (set 3)", - "gamt20ent", "Gaminator 20 (bootleg, Ent)", - "gamt20lotc", "Gaminator 20 (bootleg, C-Loto)", - "gamt20lotm", "Gaminator 20 (bootleg, Lotomatic)", - "gamt21", "Gaminator 21 (set 1)", - "gamt21a", "Gaminator 21 (set 2)", - "gamt21amult", "Gaminator 21 (bootleg, Multiloto)", - "gamt22", "Gaminator 22 (set 1)", - "gamt22a", "Gaminator 22 (set 2)", - "gamt22amult", "Gaminator 22 (bootleg, Multiloto)", - "gamt22b", "Gaminator 22 (set 3)", - "gamt23", "Gaminator 23 (set 1)", - "gamt23a", "Gaminator 23 (set 2)", - "gamt23b", "Gaminator 23 (set 3)", - "gamt29", "Gaminator 29 (set 1)", - "gamt29a", "Gaminator 29 (set 2)", - "gamt30", "Gaminator 30 (set 1)", - "gamt31", "Gaminator 31 (set 1)", - "gamt31mult", "Gaminator 31 (bootleg, Multiloto)", - "gamt4", "Gaminator 4 (set 1)", - "gamt4a", "Gaminator 4 (set 2)", - "gamt4b", "Gaminator 4 (set 3)", - "gamt4c", "Gaminator 4 (set 4)", - "gamt4d", "Gaminator 4 (set 5)", - "gamt4dbag", "Gaminator 4 (bootleg, Bag, set 1)", - "gamt4e", "Gaminator 4 (set 6)", - "gamt4ent", "Gaminator 4 (bootleg, Ent)", - "gamt4f", "Gaminator 4 (set 7)", - "gamt4fbag", "Gaminator 4 (bootleg, Bag, set 2)", - "gamt4g", "Gaminator 4 (set 8)", - "gamt4h", "Gaminator 4 (set 9)", - "gamt4hbag", "Gaminator 4 (bootleg, Bag, set 3)", - "gamt4hmult", "Gaminator 4 (bootleg, Multiloto)", - "gamt4i", "Gaminator 4 (set 10)", - "gamt4ibag", "Gaminator 4 (bootleg, Bag, set 4)", - "gamt4j", "Gaminator 4 (set 11)", - "gamt4lotc", "Gaminator 4 (bootleg, C-Loto)", - "gamt4lotca", "Gaminator 4 (C-Loto, MK4)", - "gamt4lotm", "Gaminator 4 (bootleg, Lotomatic)", - "gamt5", "Gaminator 5 (set 1)", - "gamt6", "Gaminator 6 (set 1)", - "gamt6a", "Gaminator 6 (set 2)", - "gamt6b", "Gaminator 6 (set 3)", - "gamt6c", "Gaminator 6 (set 4)", - "gamt6d", "Gaminator 6 (set 5)", - "gamt6e", "Gaminator 6 (set 6)", - "gamt6ent", "Gaminator 6 (bootleg, Ent)", - "gamt6f", "Gaminator 6 (set 7)", - "gamt6lotc", "Gaminator 6 (bootleg, C-Loto)", - "gamt7", "Gaminator 7 (set 1)", - "gamt7a", "Gaminator 7 (set 2)", - "gamt7b", "Gaminator 7 (set 3)", - "gamt7c", "Gaminator 7 (set 4)", - "gamt7d", "Gaminator 7 (set 5)", - "gamt7e", "Gaminator 7 (set 6)", - "gamt7f", "Gaminator 7 (set 7)", - "gamt7g", "Gaminator 7 (set 8)", - "gamt7h", "Gaminator 7 (set 9)", - "gamt8", "Gaminator 8 (set 1)", - "gamt8a", "Gaminator 8 (set 2)", - "gamt8b", "Gaminator 8 (set 3)", - "gamt8c", "Gaminator 8 (set 4)", - "gamt8d", "Gaminator 8 (set 5)", - "gamt8lotc", "Gaminator 8 (bootleg, C-Loto)", - "gamt9", "Gaminator 9 (set 1)", - "gamt9a", "Gaminator 9 (set 2)", - "gamt9lotc", "Gaminator 9 (bootleg, C-Loto)", - "ganbare", "Ganbare! Marine Kun (Japan 2K0411)", - "gangonta", "Ganbare! Gonta!! 2 / Party Time: Gonta the Diver II (Japan Release)", - "gangrose", "Gangster's Roses (v4.70)", - "gangwars", "Gang Wars", - "gangwarsu", "Gang Wars (US)", - "ganjaja", "Ganbare Jajamaru Saisho wa Goo / Ganbare Jajamaru Hop Step & Jump", - "ganryu", "Ganryu / Musashi Ganryuki", - "gaplus", "Gaplus (GP2 rev. B)", - "gaplusa", "Gaplus (GP2)", - "gaplusd", "Gaplus (GP2 rev D, alternate hardware)", - "garage_4", "Garage (040219 World)", - "garage_4a", "Garage (bootleg, 040219, backdoor)", - "garage_4b", "Garage (bootleg, 040219, changed version text)", - "garage_4c", "Garage (bootleg, 040219, LOTO PROGRAM V-GG2)", - "garage_5", "Garage (050311 World)", - "garage_5a", "Garage (bootleg, 050311, backdoor)", - "garage_5b", "Garage (bootleg, 050311, VIDEO GAME-1 GA01)", - "garage_5c", "Garage (bootleg, 050311, payout percentage 70)", - "garage_5d", "Garage (bootleg, 050311, LOTTOGAME (I))", - "garage_5e", "Garage (bootleg, 050311, LOTOS GA01)", - "garage_6", "Garage (070213 Russia)", - "garage_7", "Garage (070329 Russia)", - "garage_9", "Garage (090715 Entertainment)", - "gardia", "Gardia (317-0006)", - "gardiab", "Gardia (317-0007?, bootleg)", - "garogun", "Garogun Seroyang (Korea)", - "garou", "Garou - Mark of the Wolves (NGM-2530)", - "garoubl", "Garou - Mark of the Wolves (bootleg)", - "garouh", "Garou - Mark of the Wolves (NGM-2530)(NGH-2530)", - "garoup", "Garou - Mark of the Wolves (prototype)", - "garuka", "Garuka (Japan ver. W)", - "garyoret", "Garyo Retsuden (Japan)", - "gatedoom", "Gate of Doom (US revision 4)", - "gatedoom1", "Gate of Doom (US revision 1)", - "gatsbee", "Gatsbee", - "gaunt2", "Gauntlet II", - "gaunt22p", "Gauntlet II (2 Players, rev 2)", - "gaunt22p1", "Gauntlet II (2 Players, rev 1)", - "gaunt22pg", "Gauntlet II (2 Players, German)", - "gaunt2g", "Gauntlet II (German)", - "gauntdl", "Gauntlet Dark Legacy (version DL 2.52)", - "gauntdl24", "Gauntlet Dark Legacy (version DL 2.4)", - "gauntleg", "Gauntlet Legends (version 1.6)", - "gauntleg12", "Gauntlet Legends (version 1.2)", - "gauntlet", "Gauntlet (rev 14)", - "gauntlet2p", "Gauntlet (2 Players, rev 6)", - "gauntlet2pg", "Gauntlet (2 Players, German, rev 4)", - "gauntlet2pg1", "Gauntlet (2 Players, German, rev 1)", - "gauntlet2pj", "Gauntlet (2 Players, Japanese, rev 5)", - "gauntlet2pj2", "Gauntlet (2 Players, Japanese, rev 2)", - "gauntlet2pr3", "Gauntlet (2 Players, rev 3)", - "gauntletg", "Gauntlet (German, rev 10)", - "gauntletgr3", "Gauntlet (German, rev 3)", - "gauntletgr6", "Gauntlet (German, rev 6)", - "gauntletgr8", "Gauntlet (German, rev 8)", - "gauntletj", "Gauntlet (Japanese, rev 13)", - "gauntletj12", "Gauntlet (Japanese, rev 12)", - "gauntletr1", "Gauntlet (rev 1)", - "gauntletr2", "Gauntlet (rev 2)", - "gauntletr4", "Gauntlet (rev 4)", - "gauntletr5", "Gauntlet (rev 5)", - "gauntletr7", "Gauntlet (rev 7)", - "gauntletr9", "Gauntlet (rev 9)", - "gauntlets", "Gauntlet (Spanish, rev 15)", - "gaxeduel", "Golden Axe - The Duel (JUETL 950117 V1.000)", - "gberet", "Green Beret", - "gberetb", "Green Beret (bootleg)", - "gblchmp", "Global Champion (Ver 2.1A 1994/07/29)", - "gbusters", "Gang Busters (set 1)", - "gbustersa", "Gang Busters (set 2)", - "gcastle", "Golden Castle (prototype?)", - "gchgchmp", "Gachaga Champ (GE877 VER. JAB)", - "gcpinbal", "Grand Cross", - "gdarius", "G-Darius (Ver 2.01J)", - "gdarius2", "G-Darius Ver.2 (Ver 2.03J)", - "gdariusb", "G-Darius (Ver 2.02A)", - "gdfs", "Mobil Suit Gundam Final Shooting (Japan)", - "gdvsgd", "Gundam vs. Gundam", - "geebee", "Gee Bee (Japan)", - "geebeeb", "Gee Bee (Europe)", - "geebeeg", "Gee Bee (US)", - "gegege", "GeGeGe no Kitarou Youkai Slot", - "geimulti", "GEI Multi Game", - "geishanz", "Geisha (0101408V, New Zealand)", - "gekiretu", "Quiz Gekiretsu Scramble (Japan)", - "gekiridn", "Gekirindan (Ver 2.3O 1995/09/21)", - "gekiridnj", "Gekirindan (Ver 2.3J 1995/09/21)", - "gekisha", "Mahjong Gekisha", - "gekisou", "Gekisou (Japan)", - "gekitsui", "Gekitsui Oh (Japan)", - "gekpurya", "Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev C) (GDT-0008C)", - "gemini", "Gemini Wing (Japan)", - "gemini2k", "Gemini 2000", - "gemini2k1", "Gemini 2000 (alternate set)", - "genesisp", "Genesis", - "genie", "Genie", - "geniep", "Genie (Pinball)", - "genix", "Genix Family", - "genpeitd", "Genpei ToumaDen", - "gensitou", "Genshi-Tou 1930's", - "geostorm", "Geo Storm (Japan)", - "gepoker", "Poker (Version 50.02 ICB, set 1)", - "gepoker1", "Poker (Version 50.02 ICB, set 2)", - "gepoker2", "Poker (Version 50.02 ICB, set 3)", - "getbass", "Get Bass", - "getrich", "Get Rich (Version 1.0.1)", - "getstarb1", "Get Star (bootleg set 1)", - "getstarb2", "Get Star (bootleg set 2)", - "getstarj", "Get Star (Japan)", - "gfire2", "Golden Fire II", - "gforce2", "Galaxy Force 2", - "gforce2j", "Galaxy Force 2 (Japan)", - "gforce2ja", "Galaxy Force 2 (Japan, Rev A)", - "ggate", "Golden Gate (set 1) (Bingo)", - "ggatea", "Golden Gate (set 2) (Bingo)", - "ggconnie", "Go! Go! Connie chan Jaka Jaka Janken", - "gghost", "Goalie Ghost", - "ggisuka", "Guilty Gear Isuka", - "ggram2", "Giant Gram: All Japan Pro Wrestling 2 (JPN, USA, EXP, KOR, AUS)", - "ggreats2", "Golfing Greats 2 (ver JAC)", - "gground", "Gain Ground (World, 3 Players, Floppy Based, FD1094 317-0058-03d Rev A)", - "ggroundj", "Gain Ground (Japan, 2 Players, Floppy Based, FD1094 317-0058-03b)", - "ggx", "Guilty Gear X (JPN)", - "ggx15", "Guilty Gear X ver. 1.5", - "ggxx", "Guilty Gear XX (GDL-0011)", - "ggxxac", "Guilty Gear XX Accent Core (GDL-0041)", - "ggxxrl", "Guilty Gear XX #Reload (Rev A) (GDL-0019A)", - "ggxxsla", "Guilty Gear XX Slash (Rev A) (GDL-0033A)", - "ghlpanic", "Ghoul Panic (Asia, OB2/VER.A)", - "ghoshunt", "Ghost Hunter", - "ghostb", "The Real Ghostbusters (US 2 Players, revision 2)", - "ghostb2a", "The Real Ghostbusters (US 2 Players)", - "ghostb3", "The Real Ghostbusters (US 3 Players)", - "ghostlop", "Ghostlop (prototype)", - "ghostmun", "Ghost Muncher", - "ghostsqu", "Ghost Squad (Rev A) (GDX-0012A)", - "ghouls", "Ghouls'n Ghosts (World)", - "ghoulsu", "Ghouls'n Ghosts (USA)", - "ghox", "Ghox (spinner)", - "ghoxj", "Ghox (joystick)", - "ghunter", "Gang Hunter (Spain)", - "ghv101", "Goofy Hoops", - "gi_l3", "Gilligan's Island (L-3)", - "gi_l4", "Gilligan's Island (L-4)", - "gi_l6", "Gilligan's Island (L-6)", - "gi_l9", "Gilligan's Island (L-9)", - "gigaman2", "Giga Man 2: The Power Fighters (bootleg of Mega Man 2: The Power Fighters)", - "gigandes", "Gigandes", - "gigandesa", "Gigandes (earlier)", - "gigas", "Gigas (MC-8123, 317-5002)", - "gigasb", "Gigas (bootleg)", - "gigasm2b", "Gigas Mark II (bootleg)", - "gigawing", "Giga Wing (USA 990222)", - "gigawinga", "Giga Wing (Asia 990222)", - "gigawingb", "Giga Wing (Brazil 990222)", - "gigawingd", "Giga Wing (USA 990222 Phoenix Edition) (bootleg)", - "gigawingh", "Giga Wing (Hispanic 990222)", - "gigawingj", "Giga Wing (Japan 990223)", - "gigawingjd", "Giga Wing (Japan 990223 Phoenix Edition) (bootleg)", - "gijoe", "G.I. Joe (World, EAB, set 1)", - "gijoea", "G.I. Joe (World, EB8, prototype?)", - "gijoej", "G.I. Joe (Japan, JAA)", - "gijoeu", "G.I. Joe (US, UAB)", - "gimeabrk", "Gimme A Break (7/7/85)", - "ginganin", "Ginga NinkyouDen (set 1)", - "ginganina", "Ginga NinkyouDen (set 2)", - "ginkun", "Ganbare Ginkun", - "gionbana", "Gionbana (Japan 890120)", - "girotutt", "GiroTutto", - "gjspace", "Gekitoride-Jong Space (10011 Ver.A)", - "gl_coc", "Carry On Clubbin' (Global) (v3.0) (Stealth)", - "gl_coc29", "Carry On Clubbin' (Global) (v2.9) (Stealth)", - "gl_coc29p", "Carry On Clubbin' (Global) (v2.9 Protocol) (Stealth)", - "gl_cocp", "Carry On Clubbin' (Global) (v3.0 Protocol) (Stealth)", - "gl_dow", "Deals On Wheels (Global) (v1.4) (Stealth)", - "gl_dowcl", "Deals On Wheels Club (Global) (v1.6) (Stealth)", - "gl_dowclp", "Deals On Wheels Club (Global) (v1.6 Protocol) (Stealth)", - "gl_dowp", "Deals On Wheels (Global) (v1.4 Protocol) (Stealth)", - "gl_grncl", "Grid Runner Club (Global) (Stealth?) (set 1)", - "gl_grncla", "Grid Runner Club (Global) (Stealth?) (set 2)", - "gl_hbh", "Heartbreak Hotel (Global) (v1.0) (Stealth)", - "gl_hbhcl", "Heartbreak Hotel Club (Global) (v1.9) (Stealth)", - "gl_hbhcla", "Heartbreak Hotel Club (Global) (Set 2) (Stealth)", - "gl_hbhclp", "Heartbreak Hotel Club (Global) (v1.9 Protocol) (Stealth)", - "gl_snbev", "Saturday Night Beaver (Global) (Stealth?) (set 1)", - "gl_snbeva", "Saturday Night Beaver (Global) (Stealth?) (set 2)", - "gl_uyr", "Up Yer Riggin Club (Global) (v2.8) (Stealth)", - "gl_uyrp", "Up Yer Riggin Club (Global) (v2.8 Protocol) (Stealth)", - "gl_wywh", "Wish You Were Here Club (Global) (v2.9) (Stealth)", - "gl_wywh24", "Wish You Were Here Club (Global) (v2.4) (Stealth)", - "gl_wywh24p", "Wish You Were Here Club (Global) (v2.4 Protocol) (Stealth)", - "gl_wywhp", "Wish You Were Here Club (Global) (v2.9 Protocol) (Stealth)", - "gladiatp", "Gladiators", - "gladiatr", "Gladiator (US)", - "glass", "Glass (Ver 1.1)", - "glass10", "Glass (Ver 1.0)", - "glassbrk", "Glass (Ver 1.0, Break Edition)", - "gldarrow", "Golden Arrow (Standard G8-03)", - "gldncrwn", "Golden Crown (Dutch, Game Card 95-752-011)", - "gldneye", "Goldeneye", - "gldnpkr", "Golden Poker (8VXEC037, New Zealand)", - "glfgreat", "Golfing Greats", - "glfgreatj", "Golfing Greats (Japan)", - "gloc", "G-LOC Air Battle (US)", - "glocr360", "G-LOC R360", - "glpracr", "Gallop Racer (English Ver 10.17.K)", - "glpracr2", "Gallop Racer 2 (USA)", - "glpracr2j", "Gallop Racer 2 (Japan)", - "glpracr2l", "Gallop Racer 2 Link HW (Japan)", - "glpracr3", "Gallop Racer 3 (Japan)", - "glpracrj", "Gallop Racer (Japanese Ver 9.01.12)", - "gluck2", "Good Luck II", - "gmahou", "Great Mahou Daisakusen (Japan 000121)", - "gmgalax", "Ghostmuncher Galaxian (bootleg)", - "gmine_l2", "Gold Mine (Shuffle) (L-2)", - "gmissile", "Guided Missile", - "gnbarich", "Gunbarich", - "gng", "Ghosts'n Goblins (World? set 1)", - "gnga", "Ghosts'n Goblins (World? set 2)", - "gngbl", "Ghosts'n Goblins (bootleg with Cross)", - "gngblita", "Ghosts'n Goblins (Italian bootleg, harder)", - "gngc", "Ghosts'n Goblins (World? set 3)", - "gngprot", "Ghosts'n Goblins (prototype)", - "gngt", "Ghosts'n Goblins (US)", - "gnome", "Gnome (070906 Russia)", - "gnome_10", "Gnome (100326 Lottery)", - "gnome_11", "Gnome (100326 Entertainment)", - "gnome_12", "Gnome (100326 Russia)", - "gnome_2", "Gnome (071115 Russia)", - "gnome_2a", "Gnome (bootleg, 071115, banking address hack)", - "gnome_3", "Gnome (080303 World)", - "gnome_3a", "Gnome (bootleg, 080303, banking address hack)", - "gnome_3b", "Gnome (bootleg, 080303, banking address hack, payout percentage 45)", - "gnome_3c", "Gnome (bootleg, 080303, banking address hack, payout percentage 60)", - "gnome_4", "Gnome (090402 Russia)", - "gnome_5", "Gnome (090406 World)", - "gnome_5a", "Gnome (bootleg, 090406, banking address hack, payout percentage 70)", - "gnome_5b", "Gnome (bootleg, 090406, LOTTOGAME (I))", - "gnome_7", "Gnome (090708 Lottery)", - "gnome_9", "Gnome (100326 World)", - "gnomea", "Gnome (bootleg, 070906, banking address hack set 1)", - "gnomeb", "Gnome (bootleg, 070906, banking address hack set 2)", - "gnomec", "Gnome (bootleg, 070906, banking address hack set 3)", - "gnomed", "Gnome (bootleg, 070906, VIDEO GAME-1 GN01)", - "gnomee", "Gnome (bootleg, 070906, LOTOS GN01)", - "gnr_300", "Guns N Roses (3.00)", - "go2000", "Go 2000", - "goal92", "Goal! '92", - "goaltogo", "Goal To Go", - "goalx3", "Goal! Goal! Goal!", - "gobyrc", "Go By RC (V2.03O)", - "godzilla", "Godzilla (Japan)", - "godzillp", "Godzilla (Pinball)", - "gogold", "Go For The Gold (Japan)", - "gogomile", "Go Go! Mile Smile", - "gogomilej", "Susume! Mile Smile (Japan)", - "goindol", "Goindol (World)", - "goindolk", "Goindol (Korea)", - "goindolu", "Goindol (US)", - "goinnuts", "Goin' Nuts", - "goketsuj", "Goketsuji Ichizoku: Matsuri Senzo Kuyou (v200906230)", - "gokuparo", "Gokujyou Parodius (ver JAD)", - "goldball", "Gold Ball (set 1)", - "goldballn", "Gold Ball (set 2)", - "goldbug", "Gold Bug", - "goldcity", "Gold City (Russia) (Atronic)", - "goldcue", "Golden Cue", - "goldenc", "Golden Canaries (1VXFC5462, New Zealand)", - "goldfish", "Gold Fish (020903, prototype)", - "goldfrui", "Gold Fruit", - "goldgame", "Golden Game (Bingo)", - "goldgkit1", "Golden Game Kit 1 Generation (Bingo)", - "goldgkitb", "Golden Game Kit Bingo Stake 6/10 (Bingo)", - "goldglen", "Golden Glenn (Russia) (Atronic)", - "goldgnew", "Golden Game Bingo New (Bingo)", - "goldgstake", "Golden Game Bingo Stake 6/10 (Bingo)", - "goldmedl", "Gold Medalist (set 1)", - "goldmedla", "Gold Medalist (set 2)", - "goldmedlb", "Gold Medalist (bootleg)", - "goldnaxe", "Golden Axe (set 6, US, 8751 317-123A)", - "goldnaxe1", "Golden Axe (set 1, World, FD1094 317-0110)", - "goldnaxe2", "Golden Axe (set 2, US, 8751 317-0112)", - "goldnaxe3", "Golden Axe (set 3, World, FD1094 317-0120)", - "goldnaxeb1", "Golden Axe (encrypted bootleg)", - "goldnaxeb2", "Golden Axe (bootleg)", - "goldnaxej", "Golden Axe (set 4, Japan, FD1094 317-0121)", - "goldnaxeu", "Golden Axe (set 5, US, FD1094 317-0122)", - "goldnpkb", "Golden Poker Double Up (Mini Boy)", - "goldnpkr", "Golden Poker Double Up (Big Boy)", - "goldprmd", "Golden Pyramids (MV4091, USA)", - "goldstar", "Golden Star", - "goldstbl", "Golden Star (Blue version)", - "goldwing", "Gold Wings", - "golgo13", "Golgo 13 (Japan, GLG1/VER.A)", - "gollygho", "Golly! Ghost!", - "gomoku", "Gomoku Narabe Renju", - "gondo", "Gondomania (US)", - "gonefsh2", "Gone Fishing 2", - "good", "Good (Korea)", - "goodejan", "Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 1)", - "goodejana", "Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 2)", - "goodluck", "Good Luck", - "goonies", "Vs. The Goonies (set E)", - "gorf", "Gorf", - "gorfpgm1", "Gorf (program 1)", - "gorfpgm1g", "Gorf (program 1, with German Language ROM)", - "gork", "Gork", - "gorkans", "Gorkans", - "gotcha", "Got-cha Mini Game Festival", - "gotya", "Got-Ya (12/24/1981, prototype?)", - "gowcaizr", "Voltage Fighter - Gowcaizer / Choujin Gakuen Gowcaizer", - "gp2quiz", "Gals Panic II - Quiz Version", - "gp2se", "Gals Panic II' - Special Edition (Japan)", - "gp98", "Grand Prix '98 (V100K)", - "gp_110", "Model 110", - "gpgolf", "Golden Par Golf (Joystick, V1.1)", - "gpilots", "Ghost Pilots (NGM-020)(NGH-020)", - "gpilotsh", "Ghost Pilots (NGH-020)(US)", - "gprider", "GP Rider (World, FD1094 317-0163)", - "gpriderj", "GP Rider (Japan, FD1094 317-0161)", - "gprideru", "GP Rider (US, FD1094 317-0162)", - "gprix", "Grand Prix (4.50)", - "gprix_301", "Grand Prix (3.01)", - "gprix_340", "Grand Prix (3.40)", - "gprix_350", "Grand Prix (3.50)", - "gprix_352", "Grand Prix (3.52)", - "gprix_400", "Grand Prix (4.00)", - "gprixf", "Grand Prix (4.50 France)", - "gprixf_301", "Grand Prix (3.01 France)", - "gprixf_340", "Grand Prix (3.40 France)", - "gprixf_350", "Grand Prix (3.50 France)", - "gprixf_352", "Grand Prix (3.52 France)", - "gprixf_400", "Grand Prix (4.00 France)", - "gprixg", "Grand Prix (4.50 Germany)", - "gprixg_301", "Grand Prix (3.01 Germany)", - "gprixg_340", "Grand Prix (3.40 Germany)", - "gprixg_350", "Grand Prix (3.50 Germany)", - "gprixg_352", "Grand Prix (3.52 Germany)", - "gprixg_400", "Grand Prix (4.00 Germany)", - "gprixi", "Grand Prix (4.50 Italy)", - "gprixi_301", "Grand Prix (3.01 Italy)", - "gprixi_340", "Grand Prix (3.40 Italy)", - "gprixi_350", "Grand Prix (3.50 Italy)", - "gprixi_352", "Grand Prix (3.52 Italy)", - "gprixi_400", "Grand Prix (4.00 Italy)", - "gprixl", "Grand Prix (4.50 Spain)", - "gprixl_301", "Grand Prix (3.01 Spain)", - "gprixl_340", "Grand Prix (3.40 Spain)", - "gprixl_350", "Grand Prix (3.50 Spain)", - "gprixl_352", "Grand Prix (3.52 Spain)", - "gprixl_400", "Grand Prix (4.00 Spain)", - "gpworld", "GP World", - "gq863", "Twinkle System", - "gradius", "Gradius (Japan, ROM version)", - "gradius2", "Gradius II - GOFER no Yabou (Japan New Ver.)", - "gradius2a", "Gradius II - GOFER no Yabou (Japan Old Ver.)", - "gradius2b", "Gradius II - GOFER no Yabou (Japan Older Ver.)", - "gradius3", "Gradius III (World, program code R)", - "gradius3a", "Gradius III (Asia)", - "gradius3j", "Gradius III (Japan, program code S)", - "gradius4", "Gradius 4: Fukkatsu", - "grainbow", "SD Gundam Sangokushi Rainbow Tairiku Senki", - "gram2000", "Giant Gram 2000 (JPN, USA, EXP, KOR, AUS)", - "grancan", "Grand Canyon (Russia) (Extrema)", - "grancapi", "Gran Capitan (Version 3)", - "grand_l4", "Grand Lizard (L-4)", - "grandprx", "Grand Prix", - "granny", "Granny and the Gators", - "granslam", "Grand Slam", - "granslam4", "Grand Slam (4 Players)", - "grasspin", "Grasspin", - "gratia", "Gratia - Second Earth (92047-01 version)", - "gratiaa", "Gratia - Second Earth (91022-10 version)", - "gravitar", "Gravitar (version 3)", - "gravitar2", "Gravitar (version 2)", - "gravp", "Gravitar (prototype)", - "grchamp", "Grand Champion", - "grdforce", "Guardian Force (JUET 980318 V0.105)", - "grdian", "Guardian (US)", - "grdians", "Guardians / Denjin Makai II", - "grdnstrm", "Guardian Storm (horizontal, not encrypted)", - "grdnstrmg", "Guardian Storm (Germany)", - "grdnstrmk", "Jeon Sin - Guardian Storm (Korea)", - "grdnstrmv", "Guardian Storm (vertical)", - "greatgun", "Great Guns", - "greatgur", "Great Gurianos (Japan?)", - "greenber", "Green Beret (Irem)", - "grescue", "Galaxy Rescue", - "grgar_l1", "Gorgar (L-1)", - "grgar_t1", "Gorgar (T-1)", - "gridiron", "Gridiron Fight", - "gridlee", "Gridlee", - "griffon", "Griffon (bootleg of Phoenix)", - "grindstm", "Grind Stormer", - "grindstma", "Grind Stormer (older set)", - "grmatch", "Grudge Match (Yankee Game Technology)", - "grndtour", "Grand Tour", - "grobda", "Grobda (New Ver.)", - "grobda2", "Grobda (Old Ver. set 1)", - "grobda3", "Grobda (Old Ver. set 2)", - "groovef", "Groove on Fight - Gouketsuji Ichizoku 3 (J 970416 V1.001)", - "groundfx", "Ground Effects / Super Ground Effects (Japan)", - "growl", "Growl (World)", - "growlp", "Growl (World, prototype)", - "growlu", "Growl (US)", - "grtesoro", "Gran Tesoro? / Play 2000 (v5.01) (Italy)", - "grtesoro4", "Gran Tesoro? / Play 2000 (v4.0) (Italy)", - "grudge", "Grudge Match (prototype)", - "gryzor", "Gryzor (set 1)", - "gryzor1", "Gryzor (set 2)", - "gs4002", "Selection (Version 40.02TMB, set 1)", - "gs4002a", "Selection (Version 40.02TMB, set 2)", - "gs_l3", "The Bally Game Show (L-3)", - "gs_l4", "The Bally Game Show (L-4)", - "gseeker", "Grid Seeker: Project Storm Hammer (Ver 1.3O)", - "gseekerj", "Grid Seeker: Project Storm Hammer (Ver 1.3J)", - "gseekeru", "Grid Seeker: Project Storm Hammer (Ver 1.3A)", - "gslgr94j", "Great Sluggers '94 (Japan)", - "gslgr94u", "Great Sluggers '94", - "gslugrsj", "Great Sluggers (Japan)", - "gstream", "G-Stream G2020", - "gstrik2", "Grand Striker 2 (Europe and Oceania)", - "gstrik2j", "Grand Striker 2 (Japan)", - "gstriker", "Grand Striker", - "gstrikera", "Grand Striker (Americas)", - "gstrikerj", "Grand Striker (Japan)", - "gsword", "Great Swordsman (World?)", - "gsword2", "Great Swordsman (Japan?)", - "gt103a1", "Trivia (Unsorted question roms)", - "gt103aa", "Trivia (Version 1.03a Alt questions 1)", - "gt103ab", "Trivia (Version 1.03a Alt questions 2)", - "gt103asx", "Trivia (Version 1.03a Sex questions)", - "gt2k", "Golden Tee 2K (v1.00)", - "gt2kp100", "Golden Tee 2K (v1.00) (alt protection)", - "gt2ks100", "Golden Tee 2K (v1.00S)", - "gt2kt500", "Golden Tee 2K Tournament (v5.00)", - "gt3d", "Golden Tee 3D Golf (v1.93N)", - "gt3dl19", "Golden Tee 3D Golf (v1.9L)", - "gt3dl191", "Golden Tee 3D Golf (v1.91L)", - "gt3dl192", "Golden Tee 3D Golf (v1.92L)", - "gt3ds192", "Golden Tee 3D Golf (v1.92S)", - "gt3dt211", "Golden Tee 3D Golf Tournament (v2.11)", - "gt3dt231", "Golden Tee 3D Golf Tournament (v2.31)", - "gt3dv14", "Golden Tee 3D Golf (v1.4)", - "gt3dv15", "Golden Tee 3D Golf (v1.5)", - "gt3dv16", "Golden Tee 3D Golf (v1.6)", - "gt3dv17", "Golden Tee 3D Golf (v1.7)", - "gt3dv18", "Golden Tee 3D Golf (v1.8)", - "gt507uk", "Trivia (UK Version 5.07)", - "gt97", "Golden Tee '97 (v1.30)", - "gt97s121", "Golden Tee '97 (v1.21S)", - "gt97t240", "Golden Tee '97 Tournament (v2.40)", - "gt97t243", "Golden Tee '97 Tournament (v2.43)", - "gt97v120", "Golden Tee '97 (v1.20)", - "gt97v121", "Golden Tee '97 (v1.21)", - "gt97v122", "Golden Tee '97 (v1.22)", - "gt98", "Golden Tee '98 (v1.10)", - "gt98s100", "Golden Tee '98 (v1.00S)", - "gt98t303", "Golden Tee '98 Tournament (v3.03)", - "gt98v100", "Golden Tee '98 (v1.00)", - "gt99", "Golden Tee '99 (v1.00)", - "gt99s100", "Golden Tee '99 (v1.00S)", - "gt99t400", "Golden Tee '99 Tournament (v4.00)", - "gtclassc", "Golden Tee Classic (v1.00)", - "gtclasscp", "Golden Tee Classic (v1.00) (alt protection)", - "gtclasscs", "Golden Tee Classic (v1.00S)", - "gtdiamond", "Golden Tee Diamond Edition Tournament (v3.05T ELC)", - "gteikob2", "Gingateikoku No Gyakushu (bootleg set 2)", - "gteikokb", "Gingateikoku No Gyakushu (bootleg set 1)", - "gteikoku", "Gingateikoku No Gyakushu", - "gtfore02", "Golden Tee Fore! 2002 (v2.01.04 UMV)", - "gtfore02o", "Golden Tee Fore! 2002 (v2.00.00)", - "gtfore04", "Golden Tee Fore! 2004", - "gtfore05", "Golden Tee Fore! 2005", - "gtfrk10m", "Guitar Freaks 10th Mix (G*D10 VER. JAB)", - "gtfrk10ma", "Guitar Freaks 10th Mix (G*D10 VER. JAA)", - "gtfrk10mb", "Guitar Freaks 10th Mix eAmusement (G*D10 VER. JBA)", - "gtfrk11m", "Guitar Freaks 11th Mix (G*D39 VER. JAA)", - "gtfrk3ma", "Guitar Freaks 3rd Mix (GE949 VER. JAB)", - "gtfrk3mb", "Guitar Freaks 3rd Mix - security cassette versionup (949JAZ02)", - "gtg", "Golden Tee Golf (Joystick, v3.1)", - "gtg2", "Golden Tee Golf II (Trackball, V2.2)", - "gtg2j", "Golden Tee Golf II (Joystick, V1.0)", - "gtg2t", "Golden Tee Golf II (Trackball, V1.1)", - "gtgt", "Golden Tee Golf (Trackball, v2.0)", - "gtgt1", "Golden Tee Golf (Trackball, v1.0)", - "gticlub", "GTI Club (ver EAA)", - "gticlub2", "GTI Club 2 (ver JAB)", - "gticlub2ea", "GTI Club 2 (ver EAA)", - "gticluba", "GTI Club (ver AAA)", - "gticlubj", "GTI Club (ver JAA)", - "gticlubu", "GTI Club (ver UAA)", - "gtipoker", "GTI Poker", - "gtipokra", "GTI Poker? (SMS hardware)", - "gtmr", "1000 Miglia: Great 1000 Miles Rally (94/07/18)", - "gtmr2", "Mille Miglia 2: Great 1000 Miles Rally (95/05/24)", - "gtmr2a", "Mille Miglia 2: Great 1000 Miles Rally (95/04/04)", - "gtmr2u", "Great 1000 Miles Rally 2 USA (95/05/18)", - "gtmra", "1000 Miglia: Great 1000 Miles Rally (94/06/13)", - "gtmre", "Great 1000 Miles Rally: Evolution Model!!! (94/09/06)", - "gtmrusa", "Great 1000 Miles Rally: U.S.A Version! (94/09/06)", - "gtrfrk2m", "Guitar Freaks 2nd Mix Ver 1.01 (GQ883 VER. JAD)", - "gtrfrk3m", "Guitar Freaks 3rd Mix (GE949 VER. JAC)", - "gtrfrk4m", "Guitar Freaks 4th Mix (G*A24 VER. JAA)", - "gtrfrk5m", "Guitar Freaks 5th Mix (G*A26 VER. JAA)", - "gtrfrk6m", "Guitar Freaks 6th Mix (G*B06 VER. JAA)", - "gtrfrk7m", "Guitar Freaks 7th Mix (G*B17 VER. JAA)", - "gtrfrk8m", "Guitar Freaks 8th Mix power-up ver. (G*C08 VER. JBA)", - "gtrfrk8ma", "Guitar Freaks 8th Mix (G*C08 VER. JAA)", - "gtrfrk9m", "Guitar Freaks 9th Mix (G*C39 VER. JAA)", - "gtrfrks", "Guitar Freaks (GQ886 VER. EAC)", - "gtrfrksa", "Guitar Freaks (GQ886 VER. AAC)", - "gtrfrksj", "Guitar Freaks (GQ886 VER. JAC)", - "gtrfrksu", "Guitar Freaks (GQ886 VER. UAC)", - "gtroppo", "Gone Troppo (1VXEC542, New Zealand)", - "gtroyal", "Golden Tee Royal Edition Tournament (v4.02T EDM)", - "gts1", "System 1", - "gts1s", "System 1 with sound board", - "gtsers1", "Trivia (Questions Series 1)", - "gtsers10", "Trivia (Questions Series 10)", - "gtsers10a", "Trivia (Questions Series 10 Alt Question Rom)", - "gtsers11", "Trivia (Questions Series 11)", - "gtsers11a", "Trivia (Questions Series 11 Alt Question Rom)", - "gtsers12", "Trivia (Questions Series 12)", - "gtsers14", "Trivia (Questions Series 14)", - "gtsers15", "Trivia (Questions Series 15)", - "gtsers2", "Trivia (Questions Series 2)", - "gtsers3", "Trivia (Questions Series 3)", - "gtsers4", "Trivia (Questions Series 4)", - "gtsers5", "Trivia (Questions Series 5)", - "gtsers7", "Trivia (Questions Series 7)", - "gtsers8", "Trivia (Questions Series 8)", - "gtsers9", "Trivia (Questions Series 9)", - "gtsersa", "Trivia (Alt revision questions set 1)", - "gtsersb", "Trivia (Alt revision questions set 2)", - "gtsupreme", "Golden Tee Supreme Edition Tournament (v5.10T ELC S)", - "guab", "Give us a Break (3rd edition)", - "guab21", "Give us a Break (21st edition)", - "guab3a", "Give us a Break (3rd edition alt?)", - "guab4", "Give us a Break (4th edition)", - "guab43", "Give us a Break (43rd edition)", - "guab6", "Give us a Break (6th edition)", - "guab6a", "Give us a Break (6th edition alt?)", - "guab7", "Give us a Break (7th edition)", - "guardian", "Guardians of the 'Hood", - "guiness", "The Guiness (Japan)", - "gulfstrm", "Gulf Storm (set 1)", - "gulfstrma", "Gulf Storm (set 2)", - "gulfstrmb", "Gulf Storm (set 3)", - "gulfstrmm", "Gulf Storm (Media Shoji)", - "gulfwar2", "Gulf War II (set 1)", - "gulfwar2a", "Gulf War II (set 2)", - "gumbo", "Gumbo", - "gunbalina", "Gunbalina (Japan, GNN1 Ver.A)", - "gunball", "Gun Ball (Japan)", - "gunbarl", "Gunbarl (Japan, GNB4/VER.A)", - "gunbird", "Gunbird (World)", - "gunbird2", "Gunbird 2", - "gunbirdj", "Gunbird (Japan)", - "gunbirdk", "Gunbird (Korea)", - "gunblade", "Gunblade NY (Revision A)", - "gunbuletj", "Gun Bullet (Japan, GN1)", - "gunbuletw", "Gun Bullet (World, GN3 Rev B)", - "gunbustr", "Gunbuster (World)", - "gunbustrj", "Gunbuster (Japan)", - "gunbustru", "Gunbuster (US)", - "gunchamp", "Gun Champ", - "gunchamps", "Gun Champ (newer, Super Shot hardware)", - "gundamex", "Mobile Suit Gundam EX Revue", - "gundamos", "Gundam Battle Operating Simulator (GDX-0013)", - "gundealr", "Gun Dealer", - "gundealra", "Gun Dealer (alt card set)", - "gundealrt", "Gun Dealer (Japan)", - "gundhara", "Gundhara", - "gundl94", "Gun Dealer '94", - "gundmct", "Mobile Suit Gundam: Federation Vs. Zeon (2001-02-08)", - "gundmgd", "Mobile Suit Gundam: Federation Vs. Zeon (GDL-0001)", - "gundmxgd", "Mobile Suit Gundam: Federation Vs. Zeon DX (GDL-0006)", - "gundzaft", "Gundam Seed: Federation vs. Z.A.F.T. (SED1 Ver. A)", - "gunfight", "Gun Fight (set 1)", - "gunfighto", "Gun Fight (set 2)", - "gunforc2", "Gun Force II (US)", - "gunforce", "Gunforce - Battle Fire Engulfed Terror Island (World)", - "gunforcej", "Gunforce - Battle Fire Engulfed Terror Island (Japan)", - "gunforceu", "Gunforce - Battle Fire Engulfed Terror Island (US)", - "gunfront", "Gun & Frontier (World)", - "gunfrontj", "Gun Frontier (Japan)", - "gunhard", "Gun Hard (Japan)", - "gunhohki", "Mahou Keibitai Gun Hohki (Japan)", - "gunlock", "Gunlock (Ver 2.3O 1994/01/20)", - "gunman", "Gunman [TTL]", - "gunmania", "GunMania (GL906 VER. JAA)", - "gunmast", "Gun Master", - "gunnail", "GunNail (28th May. 1992)", - "gunnrose", "Guns and Roses (C606191SMP, Australia)", - "gunpey", "Gunpey (Japan)", - "gunsmoke", "Gun.Smoke (World)", - "gunsmokej", "Gun.Smoke (Japan)", - "gunsmokeu", "Gun.Smoke (US set 1)", - "gunsmokeua", "Gun.Smoke (US set 2)", - "gunsur2", "Gun Survivor 2 Biohazard Code: Veronica (BHF1 Ver. E)", - "gunsur2e", "Gun Survivor 2 Biohazard Code: Veronica (BHF2 Ver. E)", - "gunwars", "Gunmen Wars (GM1 Ver. B)", - "gunwarsa", "Gunmen Wars (GM1 Ver. A)", - "gururin", "Gururin", - "gussun", "Gussun Oyoyo (Japan)", - "gutangtn", "Guttang Gottong", - "guts", "Guts n' Glory (prototype)", - "gutsn", "Guts'n (Japan)", - "guttangt", "Guttang Gottong (bootleg on Galaxian type hardware)", - "guwange", "Guwange (Japan, Master Ver. 99/06/24)", - "guwanges", "Guwange (Japan, Special Ver. 00/07/07)", - "guzzler", "Guzzler", - "guzzlers", "Guzzler (Swimmer Conversion)", - "gvrxpsup", "Global VR XP OS Update/Install - 06/11/02", - "gvrxpsys", "Global VR XP OS Install - 09/30/01", - "gw_l1", "The Getaway: High Speed II (L-1)", - "gw_l2", "The Getaway: High Speed II (L-2)", - "gw_l3", "The Getaway: High Speed II (L-3)", - "gw_l5", "The Getaway: High Speed II (L-5)", - "gw_p7", "The Getaway: High Speed II (P-7)", - "gw_pc", "The Getaway: High Speed II (P-C)", - "gwar", "Guerrilla War (US)", - "gwara", "Guerrilla War (Version 1)", - "gwarb", "Guerrilla War (Joystick hack bootleg)", - "gwarfare", "Global Warfare", - "gwarj", "Guevara (Japan)", - "gwarrior", "Galactic Warriors", - "gwing2", "Giga Wing 2 (JPN, USA, EXP, KOR, AUS)", - "gwinggen", "Giga Wing Generations (v2.02J)", - "gypmagic", "Gypsy Magic (Konami Endeavour)", - "gypsyjug", "Gypsy Juggler", - "gyrodine", "Gyrodine", - "gyrodinet", "Gyrodine (Taito Corporation license)", - "gyruss", "Gyruss", - "gyrussb", "Gyruss (bootleg?)", - "gyrussce", "Gyruss (Centuri)", - "hachamf", "Hacha Mecha Fighter (19th Sep. 1991)", - "hacher", "Hacher (hack of Win Win Bingo)", - "hachoo", "Hachoo!", - "haekaka", "Hae Hae Ka Ka Ka", - "hal21", "HAL21", - "hal21j", "HAL21 (Japan)", - "halley", "Halley Comet", - "halley87", "Halley's Comet '87", - "halleycj", "Halley's Comet (Japan, Older)", - "halleys", "Halley's Comet (US)", - "halleysc", "Halley's Comet (Japan, Newer)", - "hammer", "Hammer", - "hanaawas", "Hana Awase", - "hanagumi", "Sakura Taisen - Hanagumi Taisen Columns (J 971007 V1.010)", - "hanakanz", "Hana Kanzashi (Japan)", - "hanamai", "Hana no Mai (Japan)", - "hanamomb", "Mahjong Hana no Momoko gumi (Japan 881125)", - "hanamomo", "Mahjong Hana no Momoko gumi (Japan 881201)", - "hanaoji", "Hana to Ojisan [BET] (Japan 911209)", - "hanaroku", "Hanaroku", - "hanayara", "Hana wo Yaraneba! (Japan)", - "hangly", "Hangly-Man (set 1)", - "hangly2", "Hangly-Man (set 2)", - "hangly3", "Hangly-Man (set 3)", - "hangman", "Hangman", - "hangon", "Hang-On (Rev A)", - "hangon1", "Hang-On", - "hangon2", "Hang-On (ride-on)", - "hangonjr", "Hang-On Jr.", - "hangplt", "Hang Pilot (ver JAB)", - "hangpltu", "Hang Pilot (ver UAA)", - "happy6", "Happy 6-in-1 (ver. 102CN)", - "happy6101", "Happy 6-in-1 (ver. 101CN)", - "hapytour", "Happy Tour", - "hardbody", "Hardbody", - "hardbodyg", "Hardbody (German)", - "harddriv", "Hard Drivin' (cockpit, rev 7)", - "harddriv1", "Hard Drivin' (cockpit, rev 1)", - "harddriv2", "Hard Drivin' (cockpit, rev 2)", - "harddriv3", "Hard Drivin' (cockpit, rev 3)", - "harddrivb", "Hard Drivin' (cockpit, British, rev 7)", - "harddrivb5", "Hard Drivin' (cockpit, British, rev 5)", - "harddrivb6", "Hard Drivin' (cockpit, British, rev 6)", - "harddrivc", "Hard Drivin' (compact, rev 2)", - "harddrivc1", "Hard Drivin' (compact, rev 1)", - "harddrivcb", "Hard Drivin' (compact, British, rev 2)", - "harddrivcg", "Hard Drivin' (compact, German, rev 2)", - "harddrivg", "Hard Drivin' (cockpit, German, rev 7)", - "harddrivg4", "Hard Drivin' (cockpit, German, rev 4)", - "harddrivj", "Hard Drivin' (cockpit, Japan, rev 7)", - "harddrivj6", "Hard Drivin' (cockpit, Japan, rev 6)", - "harddunk", "Hard Dunk (World)", - "harddunkj", "Hard Dunk (Japan)", - "hardhat", "Hard Hat", - "hardhea2", "Hard Head 2 (v2.0)", - "hardhead", "Hard Head", - "hardheadb", "Hard Head (bootleg)", - "hardyard", "Hard Yardage (v1.20)", - "hardyard10", "Hard Yardage (v1.00)", - "harem", "Harem", - "haremchl", "Harem Challenge", - "harl_a10", "Harley Davidson (1.03 Display rev. 1.00)", - "harl_a13", "Harley Davidson (1.03)", - "harl_a18", "Harley Davidson (1.08)", - "harl_a30", "Harley Davidson (3.00)", - "harl_a40", "Harley Davidson (4.00)", - "harl_f13", "Harley Davidson (1.03 France)", - "harl_f18", "Harley Davidson (1.08 France)", - "harl_f30", "Harley Davidson (3.00 France)", - "harl_f40", "Harley Davidson (4.00 France)", - "harl_g13", "Harley Davidson (1.03 Germany)", - "harl_g18", "Harley Davidson (1.08 Germany)", - "harl_g30", "Harley Davidson (3.00 Germany)", - "harl_g40", "Harley Davidson (4.00 Germany)", - "harl_i13", "Harley Davidson (1.03 Italy)", - "harl_i18", "Harley Davidson (1.08 Italy)", - "harl_i30", "Harley Davidson (3.00 Italy)", - "harl_i40", "Harley Davidson (4.00 Italy)", - "harl_l13", "Harley Davidson (1.03 Spain)", - "harl_l18", "Harley Davidson (1.08 Spain)", - "harl_l30", "Harley Davidson (3.00 Spain)", - "harl_l40", "Harley Davidson (4.00 Spain)", - "harley", "Harley-Davidson and L.A. Riders (Revision B)", - "harleya", "Harley-Davidson and L.A. Riders (Revision A)", - "hasamu", "Hasamu (Japan)", - "hatena", "Adventure Quiz 2 - Hatena? no Daibouken (Japan 900228)", - "hatris", "Hatris (US)", - "hatrisj", "Hatris (Japan)", - "hattrick", "Hat Trick", - "haunthig", "Haunted House (IGS)", - "hawaii", "Hawaii (Russia)", - "hawkman", "Hawkman", - "hawkman1", "Hawkman (alternate set)", - "hayaosi1", "Hayaoshi Quiz Ouza Ketteisen - The King Of Quiz", - "hayaosi2", "Hayaoshi Quiz Grand Champion Taikai", - "hayaosi3", "Hayaoshi Quiz Nettou Namahousou", - "hb_bar7", "Bar Seven (Fairgames) (set 1)", - "hb_bar7a", "Bar Seven (Fairgames) (set 2)", - "hb_bigx", "Big X (JPM) (set 1)", - "hb_bigxa", "Big X (JPM) (set 2)", - "hb_bigxb", "Big X (JPM) (set 3)", - "hb_bigxc", "Big X (JPM) (set 4)", - "hb_bigxd", "Big X (JPM) (set 5)", - "hb_cashc", "Cash Crusade (Qps) (set 1)", - "hb_cashca", "Cash Crusade (Qps) (set 2)", - "hb_cashcb", "Cash Crusade (Qps) (set 3)", - "hb_cashx", "Cash X (Fairgames) (set 1)", - "hb_cashxa", "Cash X (Fairgames) (set 2)", - "hb_ccow", "Cash Cow (Qps) (set 1)", - "hb_ccowa", "Cash Cow (Qps) (set 2)", - "hb_ccowb", "Cash Cow (Qps) (set 3)", - "hb_cr", "Cash Raker (Qps) (set 1)", - "hb_cra", "Cash Raker (Qps) (set 2)", - "hb_crb", "Cash Raker (Qps) (set 3)", - "hb_cwf", "Cherry Win Falls (Fairgames) (set 1)", - "hb_cwfa", "Cherry Win Falls (Fairgames) (set 2)", - "hb_dac", "Dough & Arrow Club (Qps, set 1)", - "hb_daca", "Dough & Arrow Club (Qps, set 2)", - "hb_dacb", "Dough & Arrow Club (Qps, set 3)", - "hb_dacc", "Dough & Arrow Club (Qps, set 4)", - "hb_dacd", "Dough & Arrow Club (Qps, set 5)", - "hb_dace", "Dough & Arrow Club (Qps, set 6)", - "hb_dacf", "Dough & Arrow Club (Qps, set 7)", - "hb_dacg", "Dough & Arrow Club (Qps, set 8)", - "hb_dacz", "Dough & Arrow Club (Qps, set 9)", - "hb_frtcl", "Fruitopia Club (Qps) (set 1)", - "hb_frtcla", "Fruitopia Club (Qps) (set 2)", - "hb_frtclb", "Fruitopia Club (Qps) (set 3)", - "hb_frtclc", "Fruitopia Club (Qps) (set 4)", - "hb_frtcld", "Fruitopia Club (Qps) (set 5)", - "hb_frtcle", "Fruitopia Club (Qps) (set 6)", - "hb_frtclf", "Fruitopia Club (Qps) (set 7)", - "hb_frtclg", "Fruitopia Club (Qps) (set 8)", - "hb_frtclh", "Fruitopia Club (Qps) (set 9)", - "hb_frtcli", "Fruitopia Club (Qps) (set 10)", - "hb_frtclj", "Fruitopia Club (Qps) (set 11)", - "hb_frtclk", "Fruitopia Club (Qps) (set 12)", - "hb_frtcll", "Fruitopia Club (Qps) (set 13)", - "hb_frtclm", "Fruitopia Club (Qps) (set 14)", - "hb_frtcln", "Fruitopia Club (Qps) (set 15)", - "hb_gldpl", "Golden Palace (Qps / Mazooma) (set 1)", - "hb_gldpla", "Golden Palace (Qps / Mazooma) (set 2)", - "hb_gldwn", "Golden Winner (Fairgames) (set 1)", - "hb_gldwna", "Golden Winner (Fairgames) (set 2)", - "hb_gpal", "Golden Palace (Qps) (set 1)", - "hb_gpala", "Golden Palace (Qps) (set 2)", - "hb_gpalb", "Golden Palace (Qps) (set 3)", - "hb_gpalc", "Golden Palace (Qps) (set 4)", - "hb_gpald", "Golden Palace (Qps) (set 5)", - "hb_gpale", "Golden Palace (Qps) (set 6)", - "hb_gpalf", "Golden Palace (Qps) (set 7)", - "hb_gpalg", "Golden Palace (Qps) (set 8)", - "hb_gpalh", "Golden Palace (Qps) (set 9)", - "hb_gpali", "Golden Palace (Qps) (set 10)", - "hb_hotst", "Hot Stuff (JPM?) (set 1)", - "hb_hotsta", "Hot Stuff (JPM?) (set 2)", - "hb_hotstb", "Hot Stuff (JPM?) (set 3)", - "hb_hotstc", "Hot Stuff (JPM?) (set 4)", - "hb_hotstd", "Hot Stuff (JPM?) (set 5)", - "hb_hotste", "Hot Stuff (JPM?) (set 6)", - "hb_hotstf", "Hot Stuff (JPM?) (set 7)", - "hb_hotstg", "Hot Stuff (JPM?) (set 8)", - "hb_hotsth", "Hot Stuff (JPM?) (set 9)", - "hb_jailb", "Jail Break (Qps) (set 1)", - "hb_jailba", "Jail Break (Qps) (set 2)", - "hb_jkrwl", "Jokers Wild (Fairgames) (set 1)", - "hb_jkrwla", "Jokers Wild (Fairgames) (set 2)", - "hb_medal", "Medallion Job (Qps)", - "hb_mrmon", "Mr. Money (Qps) (set 1)", - "hb_mrmona", "Mr. Money (Qps) (set 2)", - "hb_mrmonb", "Mr. Money (Qps) (set 3)", - "hb_mrmonc", "Mr. Money (Qps) (set 4)", - "hb_rckrl", "Rock 'n' Roll (Qps) (set 1)", - "hb_rckrla", "Rock 'n' Roll (Qps) (set 2)", - "hb_rckrlb", "Rock 'n' Roll (Qps) (set 3)", - "hb_rckrlc", "Rock 'n' Roll (Qps) (set 4)", - "hb_rckrld", "Rock 'n' Roll (Qps) (set 5)", - "hb_rckrle", "Rock 'n' Roll (Qps) (set 6)", - "hb_rckrlf", "Rock 'n' Roll (Qps) (set 7)", - "hb_rckrlg", "Rock 'n' Roll (Qps) (set 8)", - "hb_rhv", "Red Hot Voucher (Qps) (set 1)", - "hb_rhva", "Red Hot Voucher (Qps) (set 2)", - "hb_ringb", "Ring A Bell (JPM) (set 1)", - "hb_ringba", "Ring A Bell (JPM) (set 2)", - "hb_ringbb", "Ring A Bell (JPM) (set 3)", - "hb_ringbc", "Ring A Bell (JPM) (set 4)", - "hb_ringbd", "Ring A Bell (JPM) (set 5)", - "hb_ringbe", "Ring A Bell (JPM) (set 6)", - "hb_ydd", "Yabba-Dabba-Dough (Qps) (set 1)", - "hb_ydda", "Yabba-Dabba-Dough (Qps) (set 2)", - "hbarrel", "Heavy Barrel (US)", - "hbarrelw", "Heavy Barrel (World)", - "hcastle", "Haunted Castle (version M)", - "hcastlee", "Haunted Castle (version E)", - "hcastlek", "Haunted Castle (version K)", - "hcrash", "Hyper Crash (version D)", - "hcrashc", "Hyper Crash (version C)", - "hd_l1", "Harley Davidson (L-1)", - "hd_l3", "Harley Davidson (L-3)", - "hdrivair", "Hard Drivin's Airborne (prototype)", - "hdrivairp", "Hard Drivin's Airborne (prototype, early rev)", - "headon", "Head On (2 players)", - "headon1", "Head On (1 player)", - "headon2", "Head On 2", - "headon2s", "Head On 2 (Sidam bootleg)", - "headonb", "Head On (bootleg on dedicated hardware)", - "headoni", "Head On (Irem, M-15 Hardware)", - "headonmz", "Head On (bootleg, alt maze)", - "headons", "Head On (Sidam bootleg, set 1)", - "headonsa", "Head On (Sidam bootleg, set 2)", - "heartatk", "Heart Attack", - "heartspd", "Hearts & Spades", - "heatbrl", "Heated Barrel (World version 3)", - "heatbrl2", "Heated Barrel (World version 2)", - "heatbrle", "Heated Barrel (Electronic Devices license)", - "heatbrlo", "Heated Barrel (World old version)", - "heatbrlu", "Heated Barrel (US)", - "heatof11", "Heat of Eleven '98 (ver EAA)", - "heavymtl", "Heavy Metal", - "heberpop", "Hebereke no Popoon (Japan)", - "hedpanic", "Head Panic (ver. 0117, 17/01/2000)", - "hedpanicf", "Head Panic (ver. 0315, 15/03/2000)", - "hedpanico", "Head Panic (ver. 0615, 15/06/1999)", - "heiankyo", "Heiankyo Alien", - "helifire", "HeliFire (set 1)", - "helifirea", "HeliFire (set 2)", - "hellfire", "Hellfire (2P set)", - "hellfire1", "Hellfire (1P set)", - "hellfire1a", "Hellfire (1P set, older)", - "hellfire2a", "Hellfire (2P set, older)", - "hellngt", "Hell Night (ver EAA)", - "herbiedk", "Herbie at the Olympics (DK conversion)", - "hercules", "Hercules", - "hermit", "The Hermit (Ver. 1.14)", - "hero", "Hero", - "herodk", "Hero in the Castle of Doom (DK conversion)", - "herodku", "Hero in the Castle of Doom (DK conversion not encrypted)", - "heuksun", "Heuk Sun Baek Sa (Korea)", - "hexa", "Hexa", - "hexagone", "L'Hexagone", - "hexion", "Hexion (Japan ver JAB)", - "hexpool", "Hex Pool (Shinkai)", - "hexpoola", "Hex Pool (Senko)", - "hg_frd", "Fruit Deuce (Hazel Grove)", - "hginga", "Hanafuda Hana Ginga", - "hgkairak", "Taisen Hot Gimmick Kairakuten (Japan)", - "hglbtrtr", "Harlem Globetrotters On Tour", - "hgokbang", "Hanafuda Hana Gokou Bangaihen (Japan)", - "hgokou", "Hanafuda Hana Gokou (Japan)", - "hh", "Haunted House (Rev. 2)", - "hh_1", "Haunted House (Rev. 1)", - "hharry", "Hammerin' Harry (World)", - "hharryu", "Hammerin' Harry (US)", - "hidctch2", "Hidden Catch 2 (pcb ver 3.03) (Kor/Eng) (AT89c52 protected)", - "hidctch2a", "Hidden Catch 2 (pcb ver 1.00) (Kor/Eng/Jpn/Chi)", - "hidctch3", "Hidden Catch 3 (ver 1.00 / pcb ver 3.05)", - "hideseek", "Hide & Seek", - "hidnc2k", "Hidden Catch 2000 (AT89c52 protected)", - "hidnctch", "Hidden Catch (World) / Tul Lin Gu Lim Chat Ki '98 (Korea) (pcb ver 3.03)", - "higemaru", "Pirate Ship Higemaru", - "highsplt", "Space Fever High Splitter (set 1)", - "highsplta", "Space Fever High Splitter (set 2)", - "highspltb", "Space Fever High Splitter (alt Sound)", - "hiimpact", "High Impact Football (rev LA5 02/15/91)", - "hiimpact1", "High Impact Football (rev LA1 12/16/90)", - "hiimpact2", "High Impact Football (rev LA2 12/26/90)", - "hiimpact3", "High Impact Football (rev LA3 12/27/90)", - "hiimpact4", "High Impact Football (rev LA4 02/04/91)", - "hiimpactp", "High Impact Football (prototype, rev 8.6 12/09/90)", - "hikaru", "Hikaru Bios", - "himesiki", "Himeshikibu (Japan)", - "hipai", "Hi Pai Paradise", - "hippodrm", "Hippodrome (US)", - "hirol_fr", "High Roller Casino (3.00 France)", - "hirol_gr", "High Roller Casino (3.00 Germany)", - "hirol_gr_210", "High Roller Casino (2.10 Germany)", - "hirol_it", "High Roller Casino (3.00 Italy)", - "hirolcas", "High Roller Casino (3.00)", - "hirolcas_210", "High Roller Casino (2.10)", - "hirolcat", "High Roller Casino (3.00) TEST", - "hironew", "High Roller Casino (ARM7 Sound Board)", - "hiryuken", "Hokuha Syourin Hiryu no Ken", - "hishouza", "Hishou Zame (Japan)", - "histryma", "The History of Martial Arts", - "hitice", "Hit the Ice (US)", - "hiticej", "Hit the Ice (Japan)", - "hitme", "Hit Me (set 1)", - "hitme1", "Hit Me (set 2)", - "hitnmiss", "Hit 'n Miss (version 3.0)", - "hitnmiss2", "Hit 'n Miss (version 2.0)", - "hitpoker", "Hit Poker (Bulgaria)", - "hjingi", "Hana Jingi (Japan, Bet)", - "hkagerou", "Hana Kagerou [BET] (Japan)", - "hldspin1", "Hold & Spin I (Version 2.7T, set 1)", - "hldspin1dt", "Hold & Spin I (Version 2.7T, set 2)", - "hldspin1o", "Hold & Spin I (Version 2.5T)", - "hldspin1vt", "Hold & Spin I (Version 2.7T Dual)", - "hldspin2", "Hold & Spin II (Version 2.8R, set 1)", - "hldspin2d1", "Hold & Spin II (Version 2.8R, set 2)", - "hldspin2o", "Hold & Spin II (Version 2.6)", - "hldspin2v1", "Hold & Spin II (Version 2.8R Dual)", - "hlywoodh", "Hollywood Heat", - "hmcompm2", "hiphopmania complete MIX 2 (ver UA-A)", - "hmcompmx", "hiphopmania complete MIX (ver UA-B)", - "hmgeo", "Heavy Metal Geomatrix (JPN, USA, EUR, ASI, AUS) (Rev A)", - "hnageman", "AV Hanafuda Hana no Ageman (Japan 900716)", - "hnayayoi", "Hana Yayoi (Japan)", - "hncholms", "Hunchback Olympic (Scramble hardware)", - "hndlchmp", "Handle Champ (GQ710 VER. JAB)", - "hnfubuki", "Hana Fubuki [BET] (Japan)", - "hng64", "Hyper NeoGeo 64 Bios", - "hngmnjpm", "Hangman (JPM)", - "hngmnjpmd", "Hangman (JPM) (Protocol)", - "hnkochou", "Hana Kochou (Japan, Bet)", - "hnoridur", "Hana Oriduru (Japan)", - "hnxmasev", "AV Hanafuda Hana no Christmas Eve (Japan 901204)", - "hoccer", "Hoccer (set 1)", - "hoccer2", "Hoccer (set 2)", - "hocrash", "Crash (bootleg of Head On)", - "hod", "House of Diamonds", - "hod2bios", "Naomi House of the Dead 2 Bios", - "hoedown", "Hoe Down", - "hogalley", "Vs. Hogan's Alley (set HA4-1 E-1)", - "holeland", "Hole Land", - "holo", "Holosseum (US)", - "homerun", "Moero!! Pro Yakyuu Homerun Kyousou", - "homo", "Homo", - "homura", "Homura (v2.04J)", - "honeydol", "Honey Dolls", - "hook", "Hook (World)", - "hook_401", "Hook (4.01)", - "hook_404", "Hook (4.04)", - "hook_408", "Hook (4.08)", - "hookj", "Hook (Japan)", - "hooku", "Hook (US)", - "hoops", "Hoops", - "hoops95", "Hoops (Europe/Asia 1.7)", - "hoops96", "Hoops '96 (Europe/Asia 2.0)", - "hopmappy", "Hopping Mappy", - "hopper", "SWP Hopper Board", - "hopprobo", "Hopper Robo", - "horekid", "Kid no Hore Hore Daisakusen", - "horekidb", "Kid no Hore Hore Daisakusen (bootleg)", - "horizon", "Horizon (Irem)", - "horshoes", "American Horseshoes (US)", - "hotblock", "Hot Blocks - Tetrix II", - "hotbubl", "Hot Bubble", - "hotchase", "Hot Chase", - "hotd", "House of the Dead", - "hotd2", "House of the Dead 2", - "hotd2o", "House of the Dead 2 (original)", - "hotd2p", "House of the Dead 2 (prototype)", - "hotd3", "The House of the Dead III (GDX-0001)", - "hotdebut", "Quiz de Idol! Hot Debut (Japan)", - "hotdoggn", "Hotdoggin'", - "hotdogst", "Hotdog Storm (International)", - "hotgm4ev", "Taisen Hot Gimmick 4 Ever (Japan)", - "hotgmck", "Taisen Hot Gimmick (Japan)", - "hotgmck3", "Taisen Hot Gimmick 3 Digital Surfing (Japan)", - "hotgmcki", "Mahjong Hot Gimmick Integral (Japan)", - "hotgmkmp", "Taisen Hot Gimmick Mix Party", - "hothand", "Hot Hand", - "hotmemry", "Hot Memory (V1.2, Germany, 12/28/94)", - "hotmemry11", "Hot Memory (V1.1, Germany, 11/30/94)", - "hotmind", "Hot Mind (Hard Times hardware)", - "hotminda", "Hot Mind (adjustable prize)", - "hotmindff", "Hot Mind (Fit of Fighting hardware)", - "hotpinbl", "Hot Pinball", - "hotrod", "Hot Rod (World, 3 Players, Turbo set 1, Floppy Based)", - "hotroda", "Hot Rod (World, 3 Players, Turbo set 2, Floppy Based)", - "hotrodj", "Hot Rod (Japan, 4 Players, Floppy Based)", - "hotshock", "Hot Shocker", - "hotshockb", "Hot Shocker (early revision?)", - "hotshots", "Hot Shots", - "hotslot", "Hot Slot (ver. 05.01)", - "hotslots", "Hot Slots (6.00)", - "hotsmash", "Vs. Hot Smash", - "hotstuff", "Olympic Hot Stuff (TAS 5 Reel System)", - "hottop", "Hot Toppings (Russia)", - "hotwheel", "Hot Wheels", - "hourouki", "Mahjong Hourouki Part 1 - Seisyun Hen (Japan)", - "housemn2", "House Mannequin Roppongi Live hen (Japan 870418)", - "housemnq", "House Mannequin (Japan 870217)", - "howzat", "Howzat!", - "hparadis", "Super Hana Paradise (Japan)", - "hpolym84", "Hyper Olympic '84", - "hpuncher", "Hard Puncher (Japan)", - "hrclass", "Home Run Classic (v1.21 12-feb-1997)", - "hrdtimes", "Hard Times (set 1)", - "hrdtimesa", "Hard Times (set 2)", - "hs_l3", "High Speed (L-3)", - "hs_l4", "High Speed (L-4)", - "hsf2", "Hyper Street Fighter 2: The Anniversary Edition (USA 040202)", - "hsf2a", "Hyper Street Fighter 2: The Anniversary Edition (Asia 040202)", - "hsf2d", "Hyper Street Fighter II: The Anniversary Edition (Asia 040202 Phoenix Edition) (bootleg)", - "hsf2j", "Hyper Street Fighter 2: The Anniversary Edition (Japan 031222)", - "hshavoc", "High Seas Havoc", - "hshot_p8", "Hot Shot Basketball (P-8)", - "hspot2", "Hot Spot 2", - "hspot3", "Hot Spot 3", - "hstennis", "Hot Shots Tennis (V1.1)", - "hstennis10", "Hot Shots Tennis (V1.0)", - "htchctch", "Hatch Catch", - "htengoku", "Hanafuda Hana Tengoku (Japan)", - "hthero", "Hat Trick Hero (Japan)", - "hthero93", "Hat Trick Hero '93 (Ver 1.0J 1993/02/28)", - "hthero94", "Hat Trick Hero '94 (Ver 2.2A 1994/05/26)", - "hthero95", "Hat Trick Hero '95 (Ver 2.5J 1994/11/03)", - "hthero95u", "Hat Trick Hero '95 (Ver 2.5A 1994/11/03)", - "httip_l1", "Hot Tip (L-1)", - "hulk", "Incredible Hulk,The", - "hunchbak", "Hunchback (set 1)", - "hunchbaka", "Hunchback (set 2)", - "hunchbkd", "Hunchback (DK conversion)", - "hunchbkg", "Hunchback (Galaxian hardware)", - "hunchbks", "Hunchback (Scramble hardware)", - "hunchbks2", "Hunchback (Scramble hardware, bootleg)", - "huncholy", "Hunchback Olympic", - "hurr_l2", "Hurricane (L-2)", - "hustle", "Hustle", - "hustler", "Video Hustler", - "hustlerb", "Video Hustler (bootleg, set 1)", - "hustlerb2", "Fatsy Gambler (Video Hustler bootleg)", - "hustlerb3", "Video Pool (Video Hustler bootleg)", - "hustlerb4", "Video Hustler (bootleg, set 2)", - "hustlerd", "Video Hustler (Dynamo Games)", - "hvnsgate", "Heaven's Gate", - "hvoltage", "High Voltage", - "hvymetal", "Heavy Metal (315-5135)", - "hvymetap", "Heavy Metal Meltdown", - "hvysmsh", "Heavy Smash (Europe version -2)", - "hvysmsha", "Heavy Smash (Asia version -4)", - "hvysmshj", "Heavy Smash (Japan version -2)", - "hvyunit", "Heavy Unit (World)", - "hvyunitj", "Heavy Unit (Japan, Newer)", - "hvyunitjo", "Heavy Unit (Japan, Older)", - "hvyunitu", "Heavy Unit -U.S.A. Version- (US)", - "hwchamp", "Heavyweight Champ", - "hwchampj", "Heavyweight Champ (Japan, FD1094 317-0046)", - "hwrace", "High Way Race", - "hydra", "Hydra", - "hydrap", "Hydra (prototype 5/14/90)", - "hydrap2", "Hydra (prototype 5/25/90)", - "hydrthnd", "Hydro Thunder", - "hyhoo", "Hayaoshi Taisen Quiz Hyhoo (Japan)", - "hyhoo2", "Hayaoshi Taisen Quiz Hyhoo 2 (Japan)", - "hyouban", "Mahjong Hyouban Musume [BET] (Japan)", - "hypbbc2p", "Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. JAA)", - "hypbbc2pk", "Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. KAA)", - "hypbl_l4", "HyperBall (L-4)", - "hyperath", "Hyper Athlete (GV021 Japan 1.00)", - "hyperbbc", "Hyper Bishi Bashi Champ (GQ876 VER. EAA)", - "hyperbbca", "Hyper Bishi Bashi Champ (GQ876 VER. AAA)", - "hyperpac", "Hyper Pacman", - "hyperpacb", "Hyper Pacman (bootleg)", - "hyperspc", "Hyperspace (bootleg of Asteroids)", - "hyperspt", "Hyper Sports", - "hypersptb", "Hyper Sports (bootleg)", - "hyperv2", "Hyper V2 (Global VR) Install - 06/12/02", - "hyperv2a", "Hyper V2 (Global VR) Install - 09/30/01", - "hyprdriv", "Hyperdrive", - "hyprduel", "Hyper Duel (Japan set 1)", - "hyprduel2", "Hyper Duel (Japan set 2)", - "hypreac2", "Mahjong Hyper Reaction 2 (Japan)", - "hypreact", "Mahjong Hyper Reaction (Japan)", - "hyprolym", "Hyper Olympic", - "hyprolymb", "Hyper Olympic (bootleg)", - "hypsptsp", "Hyper Sports Special (Japan)", - "i500_11b", "Indianapolis 500 (1.1 Belgium)", - "i500_11r", "Indianapolis 500 (1.1R)", - "ibara", "Ibara (2005/03/22 MASTER VER..)", - "ibarablk", "Ibara Kuro Black Label (2006/02/06. MASTER VER.)", - "ibarablka", "Ibara Kuro Black Label (2006/02/06 MASTER VER.)", - "iccash", "I C Cash (Russia) (Atronic)", - "iceclimb", "Vs. Ice Climber (set IC4-4 B-1)", - "iceclimba", "Vs. Ice Climber (set IC4-4 ?)", - "iceclmrd", "Vs. Ice Climber Dual (set IC4-4 A-1)", - "icecold", "Ice Cold Beer", - "icefever", "Ice Fever", - "ichiban", "Ichi Ban Jyan", - "ichir", "Puzzle & Action: Ichidant-R (World)", - "ichirj", "Puzzle & Action: Ichidant-R (Japan)", - "ichirjbl", "Puzzle & Action: Ichidant-R (Japan) (bootleg)", - "ichirk", "Puzzle & Action: Ichidant-R (Korea)", - "id4", "Independence Day", - "idhimitu", "Idol no Himitsu [BET] (Japan 890304)", - "idolmj", "Idol-Mahjong Housoukyoku (Japan)", - "idsoccer", "Indoor Soccer (set 1)", - "idsoccera", "Indoor Soccer (set 2)", - "iemoto", "Iemoto (Japan 871020)", - "iemotom", "Iemoto [BET] (Japan 871118)", - "iganinju", "Iga Ninjyutsuden (Japan)", - "igmo", "IGMO", - "igromula", "Igrosoft Multigame Bootleg (15 Games)", - "igromult", "Igrosoft Multigame Bootleg (10 Games)", - "igs_ncs", "New Champion Skill (v100n)", - "igs_ncs2", "New Champion Skill (v100n 2000)", - "igsm312", "unknown 'IGS 6POKER2' game (V312CN)", - "ij_l3", "Indiana Jones (L-3)", - "ij_l4", "Indiana Jones (L-4)", - "ij_l5", "Indiana Jones (L-5)", - "ij_l6", "Indiana Jones (L-6)", - "ij_l7", "Indiana Jones (L-7)", - "ij_lg7", "Indiana Jones (LG-7)", - "ikari", "Ikari Warriors (US JAMMA)", - "ikari3", "Ikari III - The Rescue (World, 8-Way Joystick)", - "ikari3j", "Ikari Three (Japan, Rotary Joystick)", - "ikari3k", "Ikari Three (Korea, 8-Way Joystick)", - "ikari3u", "Ikari III - The Rescue (US, Rotary Joystick)", - "ikaria", "Ikari Warriors (US)", - "ikarijp", "Ikari (Japan No Continues)", - "ikarijpb", "Ikari (Joystick hack bootleg)", - "ikarinc", "Ikari Warriors (US No Continues)", - "ikaruga", "Ikaruga (GDL-0010)", - "ikki", "Ikki (Japan)", - "illvelo", "Illvelo (Illmatic Envelope)", - "ilpag", "Il Pagliaccio (Italy, Ver. 2.7C)", - "imago", "Imago (cocktail set)", - "imagoa", "Imago (no cocktail set)", - "imekura", "Imekura Mahjong (Japan)", - "imgfight", "Image Fight (World, revision A)", - "imgfightj", "Image Fight (Japan)", - "imolagp", "Imola Grand Prix (set 1)", - "imolagpo", "Imola Grand Prix (set 2)", - "imsorry", "I'm Sorry (315-5110, US)", - "imsorryj", "Gonbee no I'm Sorry (315-5110, Japan)", - "inca", "Inca", - "incanp", "Incan Pyramids (Konami Endeavour)", - "ind250cc", "250 CC", - "indianbt", "Indian Battle", - "indianbtbr", "Indian Battle (Brazil)", - "indiandr", "Indian Dreaming (0100845V, Local)", - "indianmm", "Indian Dreaming - Maximillion$ (10130711, NSW/ACT)", - "indy4", "Indy 4 [TTL]", - "indy500", "INDY 500 Twin (Revision A, Newer)", - "indy500d", "INDY 500 Deluxe (Revision A)", - "indy500to", "INDY 500 Twin (Revision A)", - "indy800", "Indy 800 [TTL]", - "indyheat", "Danny Sullivan's Indy Heat", - "indytemp", "Indiana Jones and the Temple of Doom (set 1)", - "indytemp2", "Indiana Jones and the Temple of Doom (set 2)", - "indytemp3", "Indiana Jones and the Temple of Doom (set 3)", - "indytemp4", "Indiana Jones and the Temple of Doom (set 4)", - "indytempc", "Indiana Jones and the Temple of Doom (Cocktail)", - "indytempd", "Indiana Jones and the Temple of Doom (German)", - "inferno", "Inferno (Williams)", - "inidv3cy", "Initial D Arcade Stage Ver. 3 Cycraft Edition (Rev. B) (GDS-0039B)", - "initd", "Initial D Arcade Stage (Rev B) (Japan) (GDS-0020B)", - "initdexp", "Initial D Arcade Stage (Export) (GDS-0025)", - "initdv2e", "Initial D Arcade Stage Ver. 2 (Export) (GDS-0027)", - "initdv2j", "Initial D Arcade Stage Ver. 2 (Japan) (Rev. B) (GDS-0026B)", - "initdv2jo", "Initial D Arcade Stage Ver. 2 (Japan) (GDS-0026)", - "initdv3e", "Initial D Arcade Stage Ver. 3 (Export) (GDS-0033)", - "initdv3j", "Initial D Arcade Stage Ver. 3 (Japan) (Rev. C) (GDS-0032C)", - "initdv3jb", "Initial D Arcade Stage Ver. 3 (Japan) (Rev. B) (GDS-0032B)", - "inquiztr", "Inquizitor", - "insector", "Insector (prototype)", - "insectx", "Insector X (World)", - "insectxj", "Insector X (Japan)", - "intcup94", "International Cup '94 (Ver 2.2O 1994/05/26)", - "inthunt", "In The Hunt (World)", - "inthuntu", "In The Hunt (US)", - "intlaser", "International Team Laser (prototype)", - "intrepid", "Intrepid (set 1)", - "intrepid2", "Intrepid (set 2)", - "intrepidb", "Intrepid (Elsys bootleg, set 1)", - "intrepidb2", "Intrepid (Loris bootleg)", - "intrepidb3", "Intrepid (Elsys bootleg, set 2)", - "introdon", "Karaoke Quiz Intro Don Don! (J 960213 V1.000)", - "intrscti", "Intersecti", - "intruder", "Intruder", - "inttoote", "International Toote (Germany)", - "inttootea", "International Toote II (World?)", - "inufuku", "Quiz & Variety Sukusuku Inufuku (Japan)", - "inunoos", "Inu No Osanpo / Dog Walking (Rev A)", - "invad2ct", "Space Invaders II (Midway, cocktail)", - "invaddlx", "Space Invaders Deluxe", - "invader4", "Space Invaders Part Four", - "invaderl", "Space Invaders (Logitec)", - "invaders", "Space Invaders / Space Invaders M", - "invadpt2", "Space Invaders Part II (Taito)", - "invadpt2br", "Space Invaders Part II (Brazil)", - "invadrmr", "Space Invaders (Model Racing)", - "invasion", "Invasion (Sidam)", - "invasiona", "Invasion (bootleg set 1, normal graphics)", - "invasionb", "Invasion (bootleg set 2, no copyright)", - "invasionrz", "Invasion (bootleg set 3, R Z SRL Bologna)", - "invasionrza", "Invasion (bootleg set 4, R Z SRL Bologna)", - "invasnab", "Invasion - The Abductors (version 5.0)", - "invasnab3", "Invasion - The Abductors (version 3.0)", - "invasnab4", "Invasion - The Abductors (version 4.0)", - "invds", "Invinco / Deep Scan", - "invho2", "Invinco / Head On 2", - "invinco", "Invinco", - "invmulti", "Space Invaders Multigame (M8.03D)", - "invmultim1a", "Space Invaders Multigame (M8.01A)", - "invmultim2a", "Space Invaders Multigame (M8.02A)", - "invmultim2c", "Space Invaders Multigame (M8.02C)", - "invmultim3a", "Space Invaders Multigame (M8.03A)", - "invmultip", "Space Invaders Multigame (prototype)", - "invmultis1a", "Space Invaders Multigame (S0.81A)", - "invmultis2a", "Space Invaders Multigame (S0.82A)", - "invmultis3a", "Space Invaders Multigame (S0.83A)", - "invmultit3d", "Space Invaders Multigame (T8.03D)", - "invqix", "Space Invaders / Qix Silver Anniversary Edition (Ver. 2.03)", - "invrvnge", "Invader's Revenge (set 1)", - "invrvngea", "Invader's Revenge (set 2)", - "invrvngeb", "Invader's Revenge (set 3)", - "invrvngedu", "Invader's Revenge (Dutchford, single PCB)", - "invrvngegw", "Invader's Revenge (Game World, single PCB)", - "inwinner", "Instant Winner (Russia)", - "ipminvad", "IPM Invader", - "ipminvad1", "IPM Invader (Incomplete Dump)", - "ippatsu", "Ippatsu Gyakuten [BET] (Japan)", - "iqblock", "IQ-Block", - "iqblocka", "Shu Zi Le Yuan (V127M)", - "iqblockf", "Shu Zi Le Yuan (V113FR)", - "iqpipe", "IQ Pipe", - "irobot", "I, Robot", - "iron", "Iron (SNES bootleg)", - "ironclad", "Choutetsu Brikin'ger - Iron clad (Prototype)", - "ironclado", "Choutetsu Brikin'ger - Iron clad (Prototype, bootleg)", - "ironfort", "Iron Fortress", - "ironfortj", "Iron Fortress (Japan)", - "ironhors", "Iron Horse", - "ironmaid", "Iron Maiden", - "irrmaze", "The Irritating Maze / Ultra Denryu Iraira Bou", - "isgsm", "ISG Selection Master Type 2006 BIOS", - "island", "Island (050713 World)", - "island2", "Island 2 (060529 World)", - "island2_3", "Island 2 (061218 World)", - "island2_3a", "Island 2 (bootleg, 061218, VIDEO GAME-1 OS2-01)", - "island2_4", "Island 2 (070205 Russia)", - "island2_4a", "Island 2 (bootleg, 070205, banking address hack)", - "island2_5", "Island 2 (090528 Lottery)", - "island2_6", "Island 2 (090724 Entertainment)", - "island2a", "Island 2 (bootleg, 060529, banking address hack)", - "island2b", "Island 2 (bootleg, 060529, banking address hack, changed version text)", - "island2c", "Island 2 (bootleg, 060529, LOTTOGAME (I))", - "island_2", "Island (070409 Russia)", - "islanda", "Island (bootleg, 050713, backdoor)", - "islandb", "Island (bootleg, 050713, VIDEO GAME-1 OS01)", - "islandc", "Island (bootleg, 050713, LOTOS OS01)", - "istellar", "Interstellar Laser Fantasy", - "itaten", "Itazura Tenshi (Japan)", - "itazuram", "Itazura Monkey", - "iteagle", "Eagle BIOS", - "ivorytsk", "Ivory Tusk", - "ixion", "Ixion (prototype)", - "j2008", "unknown '008' (Unk) (MPS)", - "j2adnote", "Add A Note (JPM) (MPS, set 1)", - "j2adnotea", "Add A Note (JPM) (MPS, set 2)", - "j2adnoteb", "Add A Note (JPM) (MPS, set 3)", - "j2adnotec", "Add A Note (JPM) (MPS, set 4)", - "j2adnoted", "Add A Note (JPM) (MPS, set 5)", - "j2adnotee", "Add A Note (JPM) (MPS, set 6)", - "j2adnotef", "Add A Note (JPM) (MPS, set 7)", - "j2adnoteg", "Add A Note (JPM) (MPS, set 8)", - "j2adnoteh", "Add A Note (JPM) (MPS, set 9)", - "j2adnotei", "Add A Note (JPM) (MPS, set 10)", - "j2always", "Always Eight (Bwb) (MPS)", - "j2b7", "Bar 7? (JPM) (MPS)", - "j2bankch", "Bank Chase (JPM) (MPS)", - "j2bankrd", "Bank Raid (JPM) (MPS)", - "j2bigbnk", "Big Banker (JPM) (MPS)", - "j2bigbox", "Big Box (JPM) (MPS)", - "j2bigbuk", "Big Buck$ (JPM) (MPS)", - "j2bigdl", "Big Deal (JPM) (MPS)", - "j2bkroll", "Bank Roll (JPM) (MPS)", - "j2blkchy", "Black Cherry (JPM) (MPS)", - "j2blustr", "Blue Streak (Pcp) (MPS)", - "j2bodym", "Body Match (JPM) (MPS)", - "j2bonanz", "Bonanza (Eurocoin) (MPS)", - "j2cashab", "Cashablanca (JPM) (MPS)", - "j2cashbn", "Cash Bonus Club (JPM) (MPS)", - "j2cashfl", "Cash Falls (JPM) (MPS)", - "j2cashrl", "Cash Reels (JPM) (MPS)", - "j2cashro", "Cash Rolls (JPM) (MPS)", - "j2cashrv", "Cash Reserve (JPM) (MPS)", - "j2cashry", "Cashino Royale (Pcp) (MPS)", - "j2cashtd", "Cash Track Deluxe (JPM) (MPS)", - "j2cashtk", "Cash Track (JPM) (MPS)", - "j2casino", "Casino Classic (Pcp) (MPS)", - "j2chsn", "unknown 'chsnsn05' (Unk) (MPS)", - "j2clbbin", "Club Bingo (Crystal) (MPS)", - "j2club77", "Club 77 (Unk) (MPS)", - "j2coinct", "Coin Count (JPM) (MPS)", - "j2coinsh", "Coin Shoot (Bwb) (MPS)", - "j2contnd", "Continuous Nudger (Mdm) (MPS)", - "j2coppot", "Copper Pot (JPM) (MPS)", - "j2coprun", "Copper Run (JPM) (MPS)", - "j2cprndx", "Copper Run Deluxe (JPM) (MPS)", - "j2criscr", "Criss Cross Jackpot (Pcp) (MPS)", - "j2crkbnk", "Crack The Bank (JPM) (MPS)", - "j2crown", "Crown Dealer (Unk) (MPS)", - "j2cshalm", "Cash Alarm (Pcp) (MPS)", - "j2cshcrd", "Cash Cards (Pcp) (MPS)", - "j2cshfil", "Cash-Filla (Pcp) (MPS)", - "j2cshnud", "Cash Nudger (Mdm) (MPS)", - "j2cshsmh", "Cash Smash (Pcp) (MPS)", - "j2cvault", "Cash Vault (JPM) (MPS)", - "j2dropld", "Drop The Lot Deluxe (JPM) (MPS)", - "j2droplt", "Drop The Lot (JPM) (MPS)", - "j2ewn", "Each Way Nudger (JPM) (MPS)", - "j2ews", "Each Way Shuffle (JPM) (MPS)", - "j2exec", "Executive Club (JPM) (MPS)", - "j2fasttk", "Fast Trak (JPM) (MPS)", - "j2fiveal", "Five Alive (JPM) (MPS)", - "j2fiveln", "Five Liner (JPM) (MPS)", - "j2fivepn", "Fivepenny Nudger (Mdm) (MPS)", - "j2fqueen", "Find The Queen (JPM) (MPS)", - "j2frmtch", "Fruit Match (JPM) (MPS)", - "j2frucnx", "Fruit Connexion (Pcp) (MPS)", - "j2fullhs", "Full House Club (JPM) (MPS)", - "j2fws", "Five Way Shuffle (Set 1) (JPM) (MPS)", - "j2fwsa", "Five Way Shuffle (Set 2) (JPM) (MPS)", - "j2ghostb", "Ghostbuster (JPM) (MPS)", - "j2gldchy", "Golden Cherry (JPM) (MPS)", - "j2gldwin", "Golden Win (JPM) (MPS)", - "j2goldbr", "Golden Bars (JPM) (MPS)", - "j2goldrn", "Gold Run (JPM) (MPS)", - "j2hcash", "Hot Cash (Unk) (MPS)", - "j2hilocl", "Hi Lo Climber Club (Crystal) (MPS)", - "j2hinote", "Hi Note (JPM) (MPS)", - "j2hirola", "Hi Roll (Unk) (MPS)", - "j2hiroll", "Hi Roller (JPM) (MPS)", - "j2hitmon", "Hit Money (Pcp) (MPS)", - "j2hotpot", "Hot Pot (JPM) (MPS)", - "j2hotptd", "Hot Pot Deluxe (JPM) (MPS)", - "j2hotsht", "Hot Shot Club (JPM) (MPS)", - "j2hypnot", "Hypernote (JPM) (MPS)", - "j2jackbr", "Jackpot Bars (JPM) (MPS)", - "j2jackdc", "Jackpot Dice (JPM) (MPS)", - "j2jokers", "Jokers (JPM) (MPS)", - "j2kingcl", "King Of Clubs (JPM) (MPS)", - "j2lhs", "unknown 'lhs' (Unk) (MPS)", - "j2litean", "Lite A Nudge (JPM) (MPS)", - "j2litnot", "Lite A Note Club (Crystal) (MPS)", - "j2loots", "Loot Shoot (Pcp) (MPS)", - "j2lovshd", "Loot Shoot Deluxe (JPM) (MPS)", - "j2lovsht", "Loot Shoot (JPM) (MPS)", - "j2luckar", "Lucky Arrows (JPM) (MPS)", - "j2lucky2", "Lucky 2s (JPM) (MPS)", - "j2match", "Match It (JPM) (MPS)", - "j2maxima", "Maxima (Pcp) (MPS)", - "j2missis", "Mississippi Gambler Club (Crystal) (MPS)", - "j2monblt", "Money Belt (JPM) (MPS)", - "j2monbnd", "Money Bands (JPM) (MPS)", - "j2mongam", "Money Game (JPM) (MPS)", - "j2mongmd", "Money Game Deluxe (JPM) (MPS)", - "j2monmin", "Money Mine (Unk) (MPS)", - "j2monmtx", "Money Matrix (Bwb) (MPS)", - "j2montrp", "Money Trapper (Pcp) (MPS)", - "j2multwn", "Multi Win (JPM) (MPS)", - "j2nbz", "Nudge Bonanza (JPM) (MPS)", - "j2ncsp", "unknown 'ncsp0pp' (Bwb) (MPS)", - "j2nn2", "unknown 'nn_2' (Unk) (MPS)", - "j2nolimt", "No Limit Nudge (Mdm) (MPS)", - "j2notesh", "Note Shoot (JPM) (MPS)", - "j2notexc", "Note Exchange (Set 1) (JPM) (MPS)", - "j2notexca", "Note Exchange (Set 2) (JPM) (MPS)", - "j2notexcb", "Note Exchange (Set 3) (JPM) (MPS)", - "j2notspn", "Note Spinner (Unk) (MPS)", - "j2nrrp", "unknown 'nprpopp' (Bwb) (MPS)", - "j2nsc15", "unknown 'nsc15' (Pcp) (MPS)", - "j2nsw12", "unknown 'nsw12' (Pcp) (MPS)", - "j2nud5p", "5p Nudger (JPM) (MPS)", - "j2nudbnz", "Nudge Bonanza Deluxe (Set 1) (JPM) (MPS)", - "j2nudbnza", "Nudge Bonanza Deluxe (Set 2) (JPM) (MPS)", - "j2nuddud", "Nudge Double Up Deluxe (JPM) (MPS)", - "j2nuddup", "Nudge Double Up (JPM) (MPS)", - "j2nudfev", "Nudge Fever (Bwb) (MPS)", - "j2nudmon", "Nudge Money (Pcp) (MPS)", - "j2nudnud", "Nudge Nudge (JPM) (MPS)", - "j2nudshf", "Nudge Shuffler (JPM) (MPS)", - "j2nudup3", "Nudge Double Up MkIII (JPM) (MPS)", - "j2paypkt", "Pay Packet (Pcp) (MPS)", - "j2penny", "In For A Penny In For A Pound (Pcp) (MPS)", - "j2pharo", "Pharoah (Unk) (MPS)", - "j2pinac", "Pinnacle (JPM) (MPS)", - "j2pinclb", "Pinnacle Club (JPM) (MPS)", - "j2plsmnd", "Plus Money Deluxe (JPM) (MPS)", - "j2plsmon", "Plus Money (JPM) (MPS)", - "j2plsnud", "Plus Nudge (JPM) (MPS)", - "j2pndrsh", "Pound Rush (JPM) (MPS)", - "j2potlck", "Pot Luck (JPM) (MPS)", - "j2pyramd", "Pyramid (JPM) (MPS)", - "j2rdclb", "Royal Deal Club (JPM) (MPS)", - "j2reelbn", "Reel Bingo Club (Set 1) (JPM) (MPS)", - "j2reelbna", "Reel Bingo Club (Set 2) (JPM) (MPS)", - "j2reelbo", "Reel Bonus (JPM) (MPS)", - "j2reelcz", "Reel Crazy (JPM) (MPS)", - "j2reeldc", "Reel Deal Club (JPM) (MPS)", - "j2reelmc", "Reel Magic Club (JPM) (MPS)", - "j2reelmg", "Reel Magic (JPM) (MPS)", - "j2reelmgd", "Reel Magic (JPM) [Dutch] (MPS)", - "j2reelmo", "Reel Money (JPM) (MPS)", - "j2rm941", "unknown 'rm941' (Unk) (MPS)", - "j2rotnot", "Rota Note (JPM) (MPS)", - "j2roulcl", "Roulette Club (JPM) [Mps] (MPS)", - "j2sex", "Super Exchanger (Unk) (MPS)", - "j2silvcl", "Silver Classic (Pcp) (MPS)", - "j2silvsh", "Silver Shot (Pcp) (MPS)", - "j2sirich", "Strike It Rich (JPM) (MPS) (set 1)", - "j2siricha", "Strike It Rich (JPM) (MPS) (set 2)", - "j2sldgld", "Solid Gold (JPM) (MPS)", - "j2slvrgh", "Silver Ghost (JPM) (MPS)", - "j2sng", "Super Nudge Gambler (Cotswold Microsystems) (MPS)", - "j2spcrsv", "Special Reserve (JPM) (MPS)", - "j2ss", "Supa Stepper (JPM) (MPS)", - "j2sset", "Sunset Strip (v2.0) (Unk) (MPS?)", - "j2sstrea", "Supa Streak (Pcp) (MPS)", - "j2stahed", "Streets Ahead (JPM) (MPS)", - "j2strk10", "Strike Ten (Ace) (MPS)", - "j2supchy", "Super Cherry (Eurocoin) (MPS)", - "j2super7", "Super 7's (Unk) (MPS)", - "j2supfrc", "Supa Fruit Club (JPM) (MPS)", - "j2supfrt", "Supa Fruit (JPM) (MPS)", - "j2supln", "Super Line (JPM) (MPS)", - "j2suppot", "Super Pots (JPM) (MPS)", - "j2suprft", "Super Fruit (JPM) (MPS)", - "j2suprl", "Super Reel (JPM) (MPS)", - "j2suprsh", "Supershot (JPM) (MPS)", - "j2supsft", "Supashifta (JPM) (MPS)", - "j2supstp", "Supa Steppa (JPM) (MPS)", - "j2supstr", "Superstars (JPM) (MPS)", - "j2suptrk", "Supa Track (JPM) (MPS)", - "j2swbank", "Switch Back (JPM) (MPS)", - "j2take2", "Take 2 (JPM) (MPS)", - "j2topcd", "Top Card (Bwb) (MPS)", - "j2topsht", "Top Shot (JPM) (MPS)", - "j2trail", "Trailblazer (Bwb) (MPS)", - "j2tst", "MPS 1 Test Rom (JPM) (MPS)", - "j2tstplt", "Test Pilot (Set 1) (Pcp) (MPS)", - "j2tstplta", "Test Pilot (Set 2) (Pcp) (MPS)", - "j2tupnd", "Tuppenny Nudger (Mdm) (MPS)", - "j2tupnud", "Tuppenny Nudger (JPM) (MPS)", - "j2wag", "Win-A-Gain (Bwb) (MPS)", - "j2westrn", "Western (JPM) (MPS)", - "j2wrb", "Wild Reel Bingo (JPM) (MPS)", - "j2xxx", "Triple X (Bwb) (MPS)", - "j5ar80", "Around The World In Eighty Days (JPM) (SYSTEM5, set 1)", - "j5ar80a", "Around The World In Eighty Days (JPM) (SYSTEM5, set 2)", - "j5ar80b", "Around The World In Eighty Days (JPM) (SYSTEM5, set 3)", - "j5ar80c", "Around The World In Eighty Days (JPM) (SYSTEM5, set 4)", - "j5ar80cl", "Around The World Club (JPM) (SYSTEM5, set 1)", - "j5ar80cla", "Around The World Club (JPM) (SYSTEM5, set 2)", - "j5ar80clb", "Around The World Club (JPM) (SYSTEM5, set 3)", - "j5ar80clc", "Around The World Club (JPM) (SYSTEM5, set 4)", - "j5ar80d", "Around The World In Eighty Days (JPM) (SYSTEM5, set 5)", - "j5buc", "Buccaneer (JPM) (SYSTEM5)", - "j5cir", "Circus (JPM) (SYSTEM5, set 1)", - "j5cira", "Circus (JPM) (SYSTEM5, set 2)", - "j5cirb", "Circus (JPM) (SYSTEM5, set 3)", - "j5circ", "Circus (JPM) (SYSTEM5, set 4)", - "j5cird", "Circus (JPM) (SYSTEM5, set 5)", - "j5cire", "Circus (JPM) (SYSTEM5, set 6)", - "j5clbnud", "Club Nudger (JPM) (SYSTEM5-SAA, set 1)", - "j5clbnuda", "Club Nudger (JPM) (SYSTEM5-SAA, set 2)", - "j5daycls", "Daytona Classic (JPM) (SYSTEM5, set 1)", - "j5dayclsa", "Daytona Classic (JPM) (SYSTEM5, set 2)", - "j5daytn", "Daytona (JPM) (SYSTEM5, set 1)", - "j5daytna", "Daytona (JPM) (SYSTEM5, set 2)", - "j5dirty", "Dirty Dozen (JPM) (SYSTEM5, set 1)", - "j5dirtya", "Dirty Dozen (JPM) (SYSTEM5, set 2)", - "j5dirtyb", "Dirty Dozen (JPM) (SYSTEM5, set 3)", - "j5dirtyc", "Dirty Dozen (JPM) (SYSTEM5, set 4)", - "j5fair", "Fairground (JPM) (SYSTEM5, set 1)", - "j5faira", "Fairground (JPM) (SYSTEM5, set 2)", - "j5fairb", "Fairground (JPM) (SYSTEM5, set 3)", - "j5fairc", "Fairground (JPM) (SYSTEM5, set 4)", - "j5faird", "Fairground (JPM) (SYSTEM5, set 5)", - "j5faire", "Fairground (JPM) (SYSTEM5, set 6)", - "j5fairf", "Fairground (JPM) (SYSTEM5, set 7)", - "j5fairg", "Fairground (JPM) (SYSTEM5, set 8)", - "j5fairgd", "Fairground Attraction Club (JPM) (SYSTEM5, set 1)", - "j5fairgda", "Fairground Attraction Club (JPM) (SYSTEM5, set 2)", - "j5fairgdb", "Fairground Attraction Club (JPM) (SYSTEM5, set 3)", - "j5fairgdc", "Fairground Attraction Club (JPM) (SYSTEM5, set 4)", - "j5fairgdd", "Fairground Attraction Club (JPM) (SYSTEM5, set 5)", - "j5fairgde", "Fairground Attraction Club (JPM) (SYSTEM5, set 6)", - "j5fairh", "Fairground (JPM) (SYSTEM5, set 9)", - "j5fairi", "Fairground (JPM) (SYSTEM5, set 10)", - "j5fairj", "Fairground (JPM) (SYSTEM5, set 11)", - "j5fairk", "Fairground (JPM) (SYSTEM5, set 12)", - "j5fairl", "Fairground (JPM) (SYSTEM5, set 13)", - "j5fairm", "Fairground (JPM) (SYSTEM5, set 14)", - "j5fairn", "Fairground (JPM) (SYSTEM5, set 15)", - "j5fairo", "Fairground (JPM) (SYSTEM5, set 16)", - "j5fairp", "Fairground (JPM) (SYSTEM5, set 17)", - "j5fairq", "Fairground (JPM) (SYSTEM5, set 18)", - "j5fifth", "5th Avenue (JPM) (SYSTEM5-SAA)", - "j5filth", "Filthy Rich (JPM) (SYSTEM5, set 1)", - "j5filtha", "Filthy Rich (JPM) (SYSTEM5, set 2)", - "j5filthb", "Filthy Rich (JPM) (SYSTEM5, set 3)", - "j5filthc", "Filthy Rich (JPM) (SYSTEM5, set 4)", - "j5filthd", "Filthy Rich (JPM) (SYSTEM5, set 5)", - "j5filthe", "Filthy Rich (JPM) (SYSTEM5, set 6)", - "j5filthf", "Filthy Rich (JPM) (SYSTEM5, set 7)", - "j5filthg", "Filthy Rich (JPM) (SYSTEM5, set 8)", - "j5filthh", "Filthy Rich (JPM) (SYSTEM5, set 9)", - "j5filthi", "Filthy Rich (JPM) (SYSTEM5, set 10)", - "j5filthj", "Filthy Rich (JPM) (SYSTEM5, set 11)", - "j5firebl", "Fireball (JPM) (SYSTEM5-SAA, set 1)", - "j5firebla", "Fireball (JPM) (SYSTEM5-SAA, set 2)", - "j5fireblb", "Fireball (JPM) (SYSTEM5-SAA, set 3)", - "j5frmag", "Fruit Magic (JPM) (SYSTEM5-SAA)", - "j5goldbr", "Golden Bars (JPM) (SYSTEM5-SAA)", - "j5hagar", "Hagar (JPM) (SYSTEM5, set 1)", - "j5hagara", "Hagar (JPM) (SYSTEM5, set 2)", - "j5hagarb", "Hagar (JPM) (SYSTEM5, set 3)", - "j5hagarc", "Hagar (JPM) (SYSTEM5, set 4)", - "j5hagard", "Hagar (JPM) (SYSTEM5, set 5)", - "j5hagare", "Hagar (JPM) (SYSTEM5, set 6)", - "j5hagarf", "Hagar (JPM) (SYSTEM5, set 7)", - "j5hagarg", "Hagar (JPM) (SYSTEM5, set 8)", - "j5hagarh", "Hagar (JPM) (SYSTEM5, set 9)", - "j5hagari", "Hagar (JPM) (SYSTEM5, set 10)", - "j5hagarj", "Hagar (JPM) (SYSTEM5, set 11)", - "j5hagsho", "Hagar Showcase (JPM) (SYSTEM5, set 1)", - "j5hagshoa", "Hagar Showcase (JPM) (SYSTEM5, set 2)", - "j5hagshob", "Hagar Showcase (JPM) (SYSTEM5, set 3)", - "j5hagshoc", "Hagar Showcase (JPM) (SYSTEM5, set 4)", - "j5hilos", "Hi Lo Silver (JPM) (SYSTEM5)", - "j5holly", "Hollywood Nights (JPM) (SYSTEM5, set 1)", - "j5hollya", "Hollywood Nights (JPM) (SYSTEM5, set 2)", - "j5hollyb", "Hollywood Nights (JPM) (SYSTEM5, set 3)", - "j5hollyc", "Hollywood Nights (JPM) (SYSTEM5, set 4)", - "j5hollyd", "Hollywood Nights (JPM) (SYSTEM5, set 5)", - "j5hollye", "Hollywood Nights (JPM) (SYSTEM5, set 6)", - "j5hotdog", "Hot Dogs (JPM) (SYSTEM5, set 1)", - "j5hotdoga", "Hot Dogs (JPM) (SYSTEM5, set 2)", - "j5indsum", "Indian Summer (JPM) (SYSTEM5)", - "j5intr", "Intrigue (JPM) (SYSTEM5, set 1)", - "j5intra", "Intrigue (JPM) (SYSTEM5, set 2)", - "j5intrb", "Intrigue (JPM) (SYSTEM5, set 3)", - "j5intrc", "Intrigue (JPM) (SYSTEM5, set 4)", - "j5jokgld", "Jokers Gold (JPM) (SYSTEM5, set 1)", - "j5jokglda", "Jokers Gold (JPM) (SYSTEM5, set 2)", - "j5jokgldb", "Jokers Gold (JPM) (SYSTEM5, set 3)", - "j5jokgldc", "Jokers Gold (JPM) (SYSTEM5, set 4)", - "j5jokgldd", "Jokers Gold (JPM) (SYSTEM5, set 5)", - "j5jokglde", "Jokers Gold (JPM) (SYSTEM5, set 6)", - "j5jokgldf", "Jokers Gold (JPM) (SYSTEM5, set 7)", - "j5jokgldg", "Jokers Gold (JPM) (SYSTEM5, set 8)", - "j5jokgldh", "Jokers Gold (JPM) (SYSTEM5, set 9)", - "j5movie", "Movie Magic Club (Crystal) (SYSTEM5)", - "j5nite", "Nite Club (JPM) (SYSTEM5, set 1)", - "j5nitea", "Nite Club (JPM) (SYSTEM5, set 2)", - "j5nudfic", "Nudge Fiction (JPM) (SYSTEM5)", - "j5palm", "Palm Springs (JPM) (SYSTEM5, set 1)", - "j5palma", "Palm Springs (JPM) (SYSTEM5, set 2)", - "j5phnx", "Phoenix (JPM) (SYSTEM5, set 1)", - "j5phnxa", "Phoenix (JPM) (SYSTEM5, set 2)", - "j5popeye", "Popeye (JPM) (SYSTEM5, set 1)", - "j5popeyea", "Popeye (JPM) (SYSTEM5, set 2)", - "j5popeyeb", "Popeye (JPM) (SYSTEM5, set 3)", - "j5popeyec", "Popeye (JPM) (SYSTEM5, set 4)", - "j5popeyed", "Popeye (JPM) (SYSTEM5, set 5)", - "j5popeyee", "Popeye (JPM) (SYSTEM5, set 6)", - "j5popeyef", "Popeye (JPM) (SYSTEM5, set 7)", - "j5popeyeg", "Popeye (JPM) (SYSTEM5, set 8)", - "j5popeyeh", "Popeye (JPM) (SYSTEM5, set 9)", - "j5popeyei", "Popeye (JPM) (SYSTEM5, set 10)", - "j5popprz", "Prize Popeye Vending (JPM) (SYSTEM5, set 1)", - "j5popprza", "Prize Popeye Vending (JPM) (SYSTEM5, set 2)", - "j5popth", "Popeye's Treasure Hunt (JPM) (SYSTEM5, set 1)", - "j5poptha", "Popeye's Treasure Hunt (JPM) (SYSTEM5, set 2)", - "j5popthb", "Popeye's Treasure Hunt (JPM) (SYSTEM5, set 3)", - "j5reelgh", "Reel Ghost (JPM) (SYSTEM5-SAA)", - "j5revo", "Revolver (JPM) (SYSTEM5, set 1)", - "j5revoa", "Revolver (JPM) (SYSTEM5, set 2)", - "j5roul", "Roulette (JPM) (SYSTEM5)", - "j5roulcl", "Roulette Club (JPM) (SYSTEM5, set 1)", - "j5roulcla", "Roulette Club (JPM) (SYSTEM5, set 2)", - "j5roulclb", "Roulette Club (JPM) (SYSTEM5, set 3)", - "j5roulclc", "Roulette Club (JPM) (SYSTEM5, set 4)", - "j5sizl", "Sizzling (JPM) (SYSTEM5)", - "j5slvree", "Silver Reels (JPM) (SYSTEM5, set 1)", - "j5slvreea", "Silver Reels (JPM) (SYSTEM5, set 2)", - "j5slvstr", "Silver Streak (JPM) (SYSTEM5, set 1)", - "j5slvstra", "Silver Streak (JPM) (SYSTEM5, set 2)", - "j5slvstrb", "Silver Streak (JPM) (SYSTEM5, set 3)", - "j5street", "Streetwise (JPM) (SYSTEM5)", - "j5sup4", "Super 4 (JPM) (SYSTEM5-SAA)", - "j5supbar", "Super Bars (JPM) (SYSTEM5, set 1)", - "j5supbara", "Super Bars (JPM) (SYSTEM5, set 2)", - "j5suphi", "Super Hi-Lo (JPM) (SYSTEM5-SAA)", - "j5swop", "Swop A Fruit Club (JPM) (SYSTEM5-SAA)", - "j5td", "Tumbling Dice (JPM) (SYSTEM5-SAA)", - "j5term", "Terminator (JPM) (SYSTEM5)", - "j5topshp", "Top Of The Shop Club (JPM) (SYSTEM5)", - "j5trail", "Trailblazer Club (JPM) (SYSTEM5, set 1)", - "j5traila", "Trailblazer Club (JPM) (SYSTEM5, set 2)", - "j5trailb", "Trailblazer Club (JPM) (SYSTEM5, set 3)", - "j5tst1", "JPM System 5 Test Set (JPM) (SYSTEM5, set 1)", - "j5tst2", "JPM System 5 Test Set (JPM) (SYSTEM5, set 2)", - "j5tstal", "JPM System 5 Alpha Display Test Utility (JPM) (SYSTEM5)", - "j5uj", "Union Jackpot (JPM) (SYSTEM5, set 1)", - "j5uja", "Union Jackpot (JPM) (SYSTEM5, set 2)", - "j5ujb", "Union Jackpot (JPM) (SYSTEM5, set 3)", - "j5wsc", "Wall Street Club (JPM) (SYSTEM5, set 1)", - "j5wsca", "Wall Street Club (JPM) (SYSTEM5, set 2)", - "j6aceclb", "Ace Of Clubs (Crystal) (IMPACT, set 1)", - "j6aceclba", "Ace Of Clubs (Crystal) (IMPACT, set 2)", - "j6acehi", "Aces High (Ace) (IMPACT)", - "j6amdrm", "American Dream (Mdm) (IMPACT)", - "j6arcade", "Arcadia (JPM) (IMPACT) (V9, set 1)", - "j6arcadea", "Arcadia (JPM) (IMPACT) (V9, set 2)", - "j6arcadeb", "Arcadia (JPM) (IMPACT) (V9, set 3)", - "j6arcadec", "Arcadia (JPM) (IMPACT) (V9, set 4)", - "j6arcaded", "Arcadia (JPM) (IMPACT) (V9, set 5)", - "j6arcadee", "Arcadia (JPM) (IMPACT) (V10, set 1)", - "j6arcadef", "Arcadia (JPM) (IMPACT) (V10, set 2)", - "j6arcadeg", "Arcadia (JPM) (IMPACT) (V10, set 3)", - "j6arcadeh", "Arcadia (JPM) (IMPACT) (V10, set 4)", - "j6arcadei", "Arcadia (JPM) (IMPACT) (V10, set 5)", - "j6arcadej", "Arcadia (JPM) (IMPACT) (V10, set 6)", - "j6arcadek", "Arcadia (JPM) (IMPACT) (V10, set 7)", - "j6bags", "Three Bags Full (JPM) (IMPACT)", - "j6bbankr", "Big Banker (Crystal) (IMPACT) (BB 2 T 2)", - "j6big50", "Big 50 (JPM) (IMPACT) (set 1)", - "j6big50a", "Big 50 (JPM) (IMPACT) (set 2)", - "j6big50b", "Big 50 (JPM) (IMPACT) (set 3)", - "j6big50c", "Big 50 (JPM) (IMPACT) (set 4)", - "j6big50d", "Big 50 (JPM) (IMPACT) (set 5)", - "j6bigbnk", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 1)", - "j6bigbnka", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 2)", - "j6bigbnkb", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 3)", - "j6bigbnkc", "Big Banker (JPM) (IMPACT) (BB10C 20) (set 4)", - "j6bigbnkd", "Big Banker (JPM) (IMPACT) (BB8 H18)", - "j6bigbnke", "Big Banker (JPM) (IMPACT) (BB8 P H18)", - "j6bigbnkf", "Big Banker (JPM) (IMPACT) (BB8 AH18)", - "j6bigbnkg", "Big Banker (JPM) (IMPACT) (BB6 C 16) (set 1)", - "j6bigbnkh", "Big Banker (JPM) (IMPACT) (BB6 C 16) (set 2)", - "j6bigbnki", "Big Banker (JPM) (IMPACT) (BB2B H11)", - "j6bigbnkj", "Big Banker (JPM) (IMPACT) (BB2BP H11)", - "j6bigbnkk", "Big Banker (JPM) (IMPACT) (BB2B AH11)", - "j6bigbnkl", "Big Banker (JPM) (IMPACT) (BB2BI H11)", - "j6bigbnkm", "Big Banker (JPM) (IMPACT) (BB2II H08)", - "j6bigbnkn", "Big Banker (JPM) (IMPACT) (BB 9C 19)", - "j6bigbnko", "Big Banker (JPM) (IMPACT) (BB5 I H15)", - "j6bigbnkp", "Big Banker (JPM) (IMPACT) (BB4 I H09)", - "j6bigbuk", "Big Bucks (JPM) (IMPACT) (set 1)", - "j6bigbuka", "Big Bucks (JPM) (IMPACT) (set 2)", - "j6bigbukb", "Big Bucks (JPM) (IMPACT) (set 3)", - "j6bigbukc", "Big Bucks (JPM) (IMPACT) (set 4)", - "j6bigbukd", "Big Bucks (JPM) (IMPACT) (set 5)", - "j6bigbuke", "Big Bucks (JPM) (IMPACT) (set 6)", - "j6bigbukf", "Big Bucks (JPM) (IMPACT) (set 7)", - "j6bigbukg", "Big Bucks (JPM) (IMPACT) (set 8)", - "j6bigbukh", "Big Bucks (JPM) (IMPACT) (set 9)", - "j6bigbuki", "Big Bucks (JPM) (IMPACT) (set 10)", - "j6bigbukj", "Big Bucks (JPM) (IMPACT) (set 11)", - "j6bigcsh", "Big Cash Machine (Empire) (IMPACT)", - "j6bigpct", "Big Picture (Ace) (IMPACT) (set 1)", - "j6bigpcta", "Big Picture (Ace) (IMPACT) (set 2)", - "j6bigpctb", "Big Picture (Ace) (IMPACT) (set 3)", - "j6bigtop", "Big Top Club (JPM) (IMPACT) (set 1)", - "j6bigtopa", "Big Top Club (JPM) (IMPACT) (set 2)", - "j6bigtopb", "Big Top Club (JPM) (IMPACT) (set 3)", - "j6bigtopc", "Big Top Club (JPM) (IMPACT) (set 4)", - "j6bigwhl", "Big Wheel (JPM) (IMPACT) (set 1)", - "j6bigwhla", "Big Wheel (JPM) (IMPACT) (set 2)", - "j6bigwhlb", "Big Wheel (JPM) (IMPACT) (set 3)", - "j6bigwhlc", "Big Wheel (JPM) (IMPACT) (set 4)", - "j6bigwhld", "Big Wheel (JPM) (IMPACT) (set 5)", - "j6bigwhle", "Big Wheel (JPM) (IMPACT) (set 6)", - "j6bmc", "Big Money Club (Crystal) (IMPACT) (set 1)", - "j6bmca", "Big Money Club (Crystal) (IMPACT) (set 2)", - "j6bnkrcl", "Banker Club (JPM) (IMPACT) (V6, set 1)", - "j6bnkrcla", "Banker Club (JPM) (IMPACT) (V6, set 2)", - "j6bnkrclb", "Banker Club (JPM) (IMPACT) (V6, set 3)", - "j6bnkrclc", "Banker Club (JPM) (IMPACT) (V2)", - "j6bno", "Big Nite Out (Crystal) (IMPACT) (set 1)", - "j6bnoa", "Big Nite Out (Crystal) (IMPACT) (set 2)", - "j6bnob", "Big Nite Out (Crystal) (IMPACT) (set 3)", - "j6bnoc", "Big Nite Out (Crystal) (IMPACT) (set 4)", - "j6bnza", "Bonanza (JPM) (IMPACT) (BO1 H06)", - "j6bnzaa", "Bonanza (JPM) (IMPACT) (BO1 P H06)", - "j6bnzab", "Bonanza (JPM) (IMPACT) (BO1 AH06)", - "j6bnzac", "Bonanza (JPM) (IMPACT) (BO1 I H06)", - "j6bnzad", "Bonanza (JPM) (IMPACT) (BO 9 14)", - "j6bnzae", "Bonanza (JPM) (IMPACT) (BO 9P 14)", - "j6bnzaf", "Bonanza (JPM) (IMPACT) (BO 9 A 14)", - "j6bnzag", "Bonanza (JPM) (IMPACT) (BO 9I 14)", - "j6bnzah", "Bonanza (JPM) (IMPACT) (BO5 H10)", - "j6bnzai", "Bonanza (JPM) (IMPACT) (BO5 I H10)", - "j6bnzaj", "Bonanza (JPM) (IMPACT) (incomplete pair)", - "j6bnzak", "Bonanza (JPM) (IMPACT) (BO06 11)", - "j6brkout", "Breakout (JPM) (IMPACT) (set 1)", - "j6brkouta", "Breakout (JPM) (IMPACT) (set 2)", - "j6btbw", "Born To Be Wild Club (Crystal) (IMPACT) (set 1)", - "j6btbwa", "Born To Be Wild Club (Crystal) (IMPACT) (set 2)", - "j6btbwb", "Born To Be Wild Club (Crystal) (IMPACT) (set 3)", - "j6btbwc", "Born To Be Wild Club (Crystal) (IMPACT) (set 4)", - "j6btbwd", "Born To Be Wild Club (Crystal) (IMPACT) (set 5)", - "j6bucks", "Bucks Fizz (Ace) (IMPACT)", - "j6camelt", "Camelot (JPM) (IMPACT) (set 1)", - "j6camelta", "Camelot (JPM) (IMPACT) (set 2)", - "j6cameltb", "Camelot (JPM) (IMPACT) (set 3)", - "j6cameltc", "Camelot (JPM) (IMPACT) (set 4)", - "j6cameltd", "Camelot (JPM) (IMPACT) (set 5)", - "j6cas5", "Casino 5ive Liner (JPM) (IMPACT) (set 1)", - "j6cas5a", "Casino 5ive Liner (JPM) (IMPACT) (set 2)", - "j6cas5b", "Casino 5ive Liner (JPM) (IMPACT) (set 3)", - "j6cas5c", "Casino 5ive Liner (JPM) (IMPACT) (set 4)", - "j6cas5d", "Casino 5ive Liner (JPM) (IMPACT) (set 5)", - "j6cas5e", "Casino 5ive Liner (JPM) (IMPACT) (set 6)", - "j6cas5f", "Casino 5ive Liner (JPM) (IMPACT) (set 7)", - "j6cas5g", "Casino 5ive Liner (JPM) (IMPACT) (set 8)", - "j6cas5h", "Casino 5ive Liner (JPM) (IMPACT) (set 9)", - "j6cas5i", "Casino 5ive Liner (JPM) (IMPACT) (set 10)", - "j6cas5j", "Casino 5ive Liner (JPM) (IMPACT) (set 11)", - "j6cas5k", "Casino 5ive Liner (JPM) (IMPACT) (set 12)", - "j6cas5l", "Casino 5ive Liner (JPM) (IMPACT) (set 13)", - "j6cascla", "Casino Crazy Classic Club (JPM) (IMPACT) (set 1)", - "j6casclaa", "Casino Crazy Classic Club (JPM) (IMPACT) (set 2)", - "j6casclab", "Casino Crazy Classic Club (JPM) (IMPACT) (set 3)", - "j6casclac", "Casino Crazy Classic Club (JPM) (IMPACT) (set 4)", - "j6casclad", "Casino Crazy Classic Club (JPM) (IMPACT) (set 5)", - "j6casclae", "Casino Crazy Classic Club (JPM) (IMPACT) (set 6)", - "j6casclaf", "Casino Crazy Classic Club (JPM) (IMPACT) (set 7)", - "j6casclag", "Casino Crazy Classic Club (JPM) (IMPACT) (set 8)", - "j6casclah", "Casino Crazy Classic Club (JPM) (IMPACT) (set 9)", - "j6casclai", "Casino Crazy Classic Club (JPM) (IMPACT) (set 10)", - "j6casclaj", "Casino Crazy Classic Club (JPM) (IMPACT) (set 11)", - "j6casclak", "Casino Crazy Classic Club (JPM) (IMPACT) (set 12)", - "j6casclal", "Casino Crazy Classic Club (JPM) (IMPACT) (set 13)", - "j6casclam", "Casino Crazy Classic Club (JPM) (IMPACT) (set 14)", - "j6casclan", "Casino Crazy Classic Club (JPM) (IMPACT) (set 15)", - "j6casclao", "Casino Crazy Classic Club (JPM) (IMPACT) (set 16)", - "j6casclap", "Casino Crazy Classic Club (JPM) (IMPACT) (set 17)", - "j6casclaq", "Casino Crazy Classic Club (JPM) (IMPACT) (set 18)", - "j6casclar", "Casino Crazy Classic Club (JPM) (IMPACT) (set 19)", - "j6casclas", "Casino Crazy Classic Club (JPM) (IMPACT) (set 20)", - "j6casclat", "Casino Crazy Classic Club (JPM) (IMPACT) (set 21)", - "j6casclb", "Casino Crazy Club (JPM) (IMPACT) (set 1)", - "j6casclba", "Casino Crazy Club (JPM) (IMPACT) (set 2)", - "j6cascz", "Casino Crazy (JPM) (IMPACT) (set 1)", - "j6cascza", "Casino Crazy (JPM) (IMPACT) (set 2)", - "j6casczb", "Casino Crazy (JPM) (IMPACT) (set 3)", - "j6casczc", "Casino Crazy (JPM) (IMPACT) (set 4)", - "j6casczd", "Casino Crazy (JPM) (IMPACT) (set 5)", - "j6cascze", "Casino Crazy (JPM) (IMPACT) (set 6)", - "j6casczf", "Casino Crazy (JPM) (IMPACT) (set 7)", - "j6casczg", "Casino Crazy (JPM) (IMPACT) (set 8)", - "j6casczh", "Casino Crazy (JPM) (IMPACT) (set 9)", - "j6casczi", "Casino Crazy (JPM) (IMPACT) (set 10)", - "j6casczj", "Casino Crazy (JPM) (IMPACT) (set 11)", - "j6casczk", "Casino Crazy (JPM) (IMPACT) (set 12)", - "j6casczl", "Casino Crazy (JPM) (IMPACT) (set 13)", - "j6casczm", "Casino Crazy (JPM) (IMPACT) (set 14)", - "j6caslas", "Casino Las Vegas (JPM) (IMPACT) (set 1)", - "j6caslasa", "Casino Las Vegas (JPM) (IMPACT) (set 2)", - "j6caslasb", "Casino Las Vegas (JPM) (IMPACT) (set 3)", - "j6caslasc", "Casino Las Vegas (JPM) (IMPACT) (set 4)", - "j6ccc", "Casino Crazy Club (Crystal) (IMPACT) (set 1)", - "j6ccca", "Casino Crazy Club (Crystal) (IMPACT) (set 2)", - "j6cccb", "Casino Crazy Club (Crystal) (IMPACT) (set 3)", - "j6cccc", "Casino Crazy Club (Crystal) (IMPACT) (set 4)", - "j6cccla", "Casino Crazy Classic (JPM) (IMPACT) (set 1)", - "j6ccclaa", "Casino Crazy Classic (JPM) (IMPACT) (set 2)", - "j6ccclab", "Casino Crazy Classic (JPM) (IMPACT) (set 3)", - "j6ccclac", "Casino Crazy Classic (JPM) (IMPACT) (set 4)", - "j6ccclad", "Casino Crazy Classic (JPM) (IMPACT) (set 5)", - "j6ccclae", "Casino Crazy Classic (JPM) (IMPACT) (set 6)", - "j6ccclaf", "Casino Crazy Classic (JPM) (IMPACT) (set 7)", - "j6ccclag", "Casino Crazy Classic (JPM) (IMPACT) (set 8)", - "j6ccclah", "Casino Crazy Classic (JPM) (IMPACT) (set 9)", - "j6ccclai", "Casino Crazy Classic (JPM) (IMPACT) (set 10)", - "j6ccclaj", "Casino Crazy Classic (JPM) (IMPACT) (set 11)", - "j6ccclak", "Casino Crazy Classic (JPM) (IMPACT) (set 12)", - "j6cdivr", "Cash Diver (Crystal) (IMPACT)", - "j6cheque", "Cheque Mate (JPM) (IMPACT)", - "j6cluclb", "Cluedo Club (JPM) (IMPACT) (set 1)", - "j6cluclba", "Cluedo Club (JPM) (IMPACT) (set 2)", - "j6cluclbb", "Cluedo Club (JPM) (IMPACT) (set 3)", - "j6cluclbc", "Cluedo Club (JPM) (IMPACT) (set 4)", - "j6cluclbd", "Cluedo Club (JPM) (IMPACT) (set 5)", - "j6cluclbe", "Cluedo Club (JPM) (IMPACT) (set 6)", - "j6cluclbf", "Cluedo Club (JPM) (IMPACT) (set 7)", - "j6cluclbg", "Cluedo Club (JPM) (IMPACT) (set 8)", - "j6cluclbh", "Cluedo Club (JPM) (IMPACT) (set 9)", - "j6cluclbi", "Cluedo Club (JPM) (IMPACT) (set 10)", - "j6cluclbj", "Cluedo Club (JPM) (IMPACT) (set 11)", - "j6cluclbk", "Cluedo Club (JPM) (IMPACT) (set 12)", - "j6cluclbl", "Cluedo Club (JPM) (IMPACT) (set 13)", - "j6col", "Coliseum (Mdm) (IMPACT) (set 1)", - "j6cola", "Coliseum (Mdm) (IMPACT) (set 2)", - "j6colb", "Coliseum (Mdm) (IMPACT) (set 3)", - "j6colc", "Coliseum (Mdm) (IMPACT) (set 4)", - "j6colcsh", "Coliseum Cash (JPM) (IMPACT) (set 1)", - "j6colcsha", "Coliseum Cash (JPM) (IMPACT) (set 2)", - "j6colcshb", "Coliseum Cash (JPM) (IMPACT) (set 3)", - "j6colcshc", "Coliseum Cash (JPM) (IMPACT) (set 4)", - "j6colcshd", "Coliseum Cash (JPM) (IMPACT) (set 5)", - "j6cold", "Coliseum (Mdm) (IMPACT) (set 5)", - "j6cole", "Coliseum (Mdm) (IMPACT) (set 6)", - "j6colf", "Coliseum (Mdm) (IMPACT) (set 7)", - "j6colic", "Coliseum (Crystal) (IMPACT) (set 1)", - "j6colica", "Coliseum (Crystal) (IMPACT) (set 2)", - "j6colicb", "Coliseum (Crystal) (IMPACT) (set 3)", - "j6colicc", "Coliseum (Crystal) (IMPACT) (set 4)", - "j6colicd", "Coliseum (Crystal) (IMPACT) (set 5)", - "j6colmon", "Colour Of Money (JPM) (IMPACT) (set 1)", - "j6colmona", "Colour Of Money (JPM) (IMPACT) (set 2)", - "j6colmonb", "Colour Of Money (JPM) (IMPACT) (set 3)", - "j6colmonc", "Colour Of Money (JPM) (IMPACT) (set 4)", - "j6colmond", "Colour Of Money (JPM) (IMPACT) (set 5)", - "j6colmone", "Colour Of Money (JPM) (IMPACT) (set 6)", - "j6colmonf", "Colour Of Money (JPM) (IMPACT) (set 7)", - "j6colmong", "Colour Of Money (JPM) (IMPACT) (set 8)", - "j6colmonh", "Colour Of Money (JPM) (IMPACT) (set 9)", - "j6colmoni", "Colour Of Money (JPM) (IMPACT) (set 10)", - "j6colmonj", "Colour Of Money (JPM) (IMPACT) (set 11)", - "j6coprob", "Cops 'n' Robbers (Qps) (IMPACT) (set 1)", - "j6coproba", "Cops 'n' Robbers (Qps) (IMPACT) (set 2)", - "j6coprobb", "Cops 'n' Robbers (Qps) (IMPACT) (set 3)", - "j6coprobc", "Cops 'n' Robbers (Qps) (IMPACT) (set 4)", - "j6coprobd", "Cops 'n' Robbers (Qps) (IMPACT) (set 5)", - "j6coprobe", "Cops 'n' Robbers (Qps) (IMPACT) (set 6)", - "j6cpal", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 1)", - "j6cpala", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 2)", - "j6cpalb", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 3)", - "j6cpalc", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 4)", - "j6cpald", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 5)", - "j6cpale", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 6)", - "j6cpalf", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 7)", - "j6cpalg", "Caesars Palace (Whitbread / Crystal) (IMPACT) (set 8)", - "j6cpclb", "Caesar's Palace Club (JPM) (IMPACT) (set 1)", - "j6cpclba", "Caesar's Palace Club (JPM) (IMPACT) (set 2)", - "j6cpclbb", "Caesar's Palace Club (JPM) (IMPACT) (set 3)", - "j6crack", "Cracker (JPM) (IMPACT) (set 1)", - "j6cracka", "Cracker (JPM) (IMPACT) (set 2)", - "j6crackb", "Cracker (JPM) (IMPACT) (set 3)", - "j6crackc", "Cracker (JPM) (IMPACT) (set 4)", - "j6crackd", "Cracker (JPM) (IMPACT) (set 5)", - "j6cracke", "Cracker (JPM) (IMPACT) (set 6)", - "j6crackf", "Cracker (JPM) (IMPACT) (set 7)", - "j6crackg", "Cracker (JPM) (IMPACT) (set 8)", - "j6crackh", "Cracker (JPM) (IMPACT) (set 9)", - "j6cracki", "Cracker (JPM) (IMPACT) (set 10)", - "j6crackj", "Cracker (JPM) (IMPACT) (set 11)", - "j6crakr", "Cracker (Crystal) (IMPACT) (set 1)", - "j6crakra", "Cracker (Crystal) (IMPACT) (set 2)", - "j6crakrb", "Cracker (Crystal) (IMPACT) (set 3)", - "j6crsfir", "Cross Fire (JPM) (IMPACT) (set 1)", - "j6crsfira", "Cross Fire (JPM) (IMPACT) (set 2)", - "j6crzclb", "Crazy Club (JPM) (IMPACT) (set 1)", - "j6crzclba", "Crazy Club (JPM) (IMPACT) (set 2)", - "j6crzclbb", "Crazy Club (JPM) (IMPACT) (set 3)", - "j6crzclbc", "Crazy Club (JPM) (IMPACT) (set 4)", - "j6cshbeu", "Cash Box Club (Empire) (Euro) (IMPACT)", - "j6cshbox", "Cash Box Club (Empire) (IMPACT) (set 1)", - "j6cshboxa", "Cash Box Club (Empire) (IMPACT) (set 2)", - "j6cshboxb", "Cash Box Club (Empire) (IMPACT) (set 3)", - "j6cshbst", "Cash Buster (JPM) (IMPACT) (set 1)", - "j6cshbsta", "Cash Buster (JPM) (IMPACT) (set 2)", - "j6cshbstb", "Cash Buster (JPM) (IMPACT) (set 3)", - "j6cshbstc", "Cash Buster (JPM) (IMPACT) (set 4)", - "j6cshbstd", "Cash Buster (JPM) (IMPACT) (set 5)", - "j6cshcnt", "Cash Countdown (JPM) (IMPACT) (set 1)", - "j6cshcnta", "Cash Countdown (JPM) (IMPACT) (set 2)", - "j6cshrd", "Cash Raider (Ace) (IMPACT) (set 1)", - "j6cshrda", "Cash Raider (Ace) (IMPACT) (set 2)", - "j6cshrdb", "Cash Raider (Ace) (IMPACT) (set 3)", - "j6cshrdc", "Cash Raider (Ace) (IMPACT) (set 4)", - "j6cshrdd", "Cash Raider (Ace) (IMPACT) (set 5)", - "j6cshtwr", "Cash Towers (JPM) (IMPACT)", - "j6cshvgs", "Cash Vegas Strip (JPM) (IMPACT) (set 1)", - "j6cshvgsa", "Cash Vegas Strip (JPM) (IMPACT) (set 2)", - "j6cshvgsb", "Cash Vegas Strip (JPM) (IMPACT) (set 3)", - "j6cshvgsc", "Cash Vegas Strip (JPM) (IMPACT) (set 4)", - "j6cshvgsd", "Cash Vegas Strip (JPM) (IMPACT) (set 5)", - "j6cshvgse", "Cash Vegas Strip (JPM) (IMPACT) (set 6)", - "j6cshvgsf", "Cash Vegas Strip (JPM) (IMPACT) (set 7)", - "j6cshvgsg", "Cash Vegas Strip (JPM) (IMPACT) (set 8)", - "j6cshvgsh", "Cash Vegas Strip (JPM) (IMPACT) (set 9)", - "j6cshvgsi", "Cash Vegas Strip (JPM) (IMPACT) (set 10)", - "j6cshvgsj", "Cash Vegas Strip (JPM) (IMPACT) (set 11)", - "j6cshvgsk", "Cash Vegas Strip (JPM) (IMPACT) (set 12)", - "j6cshvgsl", "Cash Vegas Strip (JPM) (IMPACT) (set 13)", - "j6cshvgsm", "Cash Vegas Strip (JPM) (IMPACT) (set 14)", - "j6cshvgsn", "Cash Vegas Strip (JPM) (IMPACT) (set 15)", - "j6cshvgso", "Cash Vegas Strip (JPM) (IMPACT) (set 16)", - "j6cshvgsp", "Cash Vegas Strip (JPM) (IMPACT) (set 17)", - "j6cshvgsq", "Cash Vegas Strip (JPM) (IMPACT) (set 18)", - "j6cshvgsr", "Cash Vegas Strip (JPM) (IMPACT) (set 19)", - "j6daygld", "Daytona Gold (JPM) (IMPACT) (set 1)", - "j6dayglda", "Daytona Gold (JPM) (IMPACT) (set 2)", - "j6daygldb", "Daytona Gold (JPM) (IMPACT) (set 3)", - "j6daygldc", "Daytona Gold (JPM) (IMPACT) (set 4)", - "j6daygldd", "Daytona Gold (JPM) (IMPACT) (set 5)", - "j6dayglde", "Daytona Gold (JPM) (IMPACT) (set 6)", - "j6dayml", "Daytona Millennium (JPM) (IMPACT) (set 1)", - "j6daymla", "Daytona Millennium (JPM) (IMPACT) (set 2)", - "j6daymlb", "Daytona Millennium (JPM) (IMPACT) (set 3)", - "j6dmngz", "Diamond Geezer (JPM) (IMPACT)", - "j6dmnjkr", "Demon Jokers (JPM) (IMPACT) (set 1)", - "j6dmnjkra", "Demon Jokers (JPM) (IMPACT) (set 2)", - "j6dmnjkrb", "Demon Jokers (JPM) (IMPACT) (set 3)", - "j6dmnjkrc", "Demon Jokers (JPM) (IMPACT) (set 4)", - "j6drdogh", "Dr Dough (Qps) (IMPACT)", - "j6dyfl", "Do You Feel Lucky (JPM) (IMPACT) (set 1)", - "j6dyfla", "Do You Feel Lucky (JPM) (IMPACT) (set 2)", - "j6dyflb", "Do You Feel Lucky (JPM) (IMPACT) (set 3)", - "j6dyflc", "Do You Feel Lucky (JPM) (IMPACT) (set 4)", - "j6dyfld", "Do You Feel Lucky (JPM) (IMPACT) (set 5)", - "j6dyfle", "Do You Feel Lucky (JPM) (IMPACT) (set 6)", - "j6dyflf", "Do You Feel Lucky (JPM) (IMPACT) (set 7)", - "j6dyflg", "Do You Feel Lucky (JPM) (IMPACT) (set 8)", - "j6dyflh", "Do You Feel Lucky (JPM) (IMPACT) (set 9)", - "j6dyfli", "Do You Feel Lucky (JPM) (IMPACT) (set 10)", - "j6dyflj", "Do You Feel Lucky (JPM) (IMPACT) (set 11)", - "j6easy", "Easy Money (Crystal) (IMPACT) (set 1)", - "j6easya", "Easy Money (Crystal) (IMPACT) (set 2)", - "j6easyb", "Easy Money (Crystal) (IMPACT) (set 3)", - "j6easyc", "Easy Money (Crystal) (IMPACT) (set 4)", - "j6euphor", "Euphoria (Ace) (IMPACT) (set 1)", - "j6euphora", "Euphoria (Ace) (IMPACT) (set 2)", - "j6euphorb", "Euphoria (Ace) (IMPACT) (set 3)", - "j6euphorc", "Euphoria (Ace) (IMPACT) (set 4)", - "j6euphord", "Euphoria (Ace) (IMPACT) (set 5)", - "j6euphore", "Euphoria (Ace) (IMPACT) (set 6)", - "j6euphorf", "Euphoria (Ace) (IMPACT) (set 7)", - "j6ewn", "Each Way Nudger (JPM) (IMPACT)", - "j6ewndg", "Each Way Nudger (Crystal) (IMPACT) (set 1)", - "j6ewndga", "Each Way Nudger (Crystal) (IMPACT) (set 2)", - "j6ewndgb", "Each Way Nudger (Crystal) (IMPACT) (set 3)", - "j6fastfr", "Fast Fruits Club (Qps) (IMPACT) (set 1)", - "j6fastfra", "Fast Fruits Club (Qps) (IMPACT) (set 2)", - "j6fasttk", "Fast Trak (JPM) (IMPACT) (set 1)", - "j6fasttka", "Fast Trak (JPM) (IMPACT) (set 2)", - "j6fasttkb", "Fast Trak (JPM) (IMPACT) (set 3)", - "j6fasttkc", "Fast Trak (JPM) (IMPACT) (set 4)", - "j6fbcrz", "Football Crazy (JPM) (IMPACT)", - "j6ffc", "Frame & Fortune Club (Crystal) (IMPACT) (set 1)", - "j6ffca", "Frame & Fortune Club (Crystal) (IMPACT) (set 2)", - "j6ffcb", "Frame & Fortune Club (Crystal) (IMPACT) (set 3)", - "j6ffcc", "Frame & Fortune Club (Crystal) (IMPACT) (set 4)", - "j6ffcd", "Frame & Fortune Club (Crystal) (IMPACT) (set 5)", - "j6ffce", "Frame & Fortune Club (Crystal) (IMPACT) (set 6)", - "j6fifth", "5th Dimension (Ace) (IMPACT)", - "j6filth", "Filthy Rich Club (JPM) (IMPACT) (set 1)", - "j6filtha", "Filthy Rich Club (JPM) (IMPACT) (set 2)", - "j6filthb", "Filthy Rich Club (JPM) (IMPACT) (set 3)", - "j6filthc", "Filthy Rich Club (JPM) (IMPACT) (set 4)", - "j6firbl", "Fireball (JPM) (IMPACT) (set 1)", - "j6firbla", "Fireball (JPM) (IMPACT) (set 2)", - "j6firblb", "Fireball (JPM) (IMPACT) (set 3)", - "j6firblc", "Fireball (JPM) (IMPACT) (set 4)", - "j6firbld", "Fireball (JPM) (IMPACT) (set 5)", - "j6firclb", "Firecracker Club (JPM) (IMPACT) (set 1)", - "j6firclba", "Firecracker Club (JPM) (IMPACT) (set 2)", - "j6firclbb", "Firecracker Club (JPM) (IMPACT) (set 3)", - "j6firclbc", "Firecracker Club (JPM) (IMPACT) (set 4)", - "j6fireck", "Firecracker (JPM) (IMPACT) (set 1)", - "j6firecka", "Firecracker (JPM) (IMPACT) (set 2)", - "j6fireckb", "Firecracker (JPM) (IMPACT) (set 3)", - "j6fireckc", "Firecracker (JPM) (IMPACT) (set 4)", - "j6fireckd", "Firecracker (JPM) (IMPACT) (set 5)", - "j6firecke", "Firecracker (JPM) (IMPACT) (set 6)", - "j6fivalv", "Five Alive Club (JPM) (IMPACT) (set 1)", - "j6fivalva", "Five Alive Club (JPM) (IMPACT) (set 2)", - "j6fivalvb", "Five Alive Club (JPM) (IMPACT) (set 3)", - "j6fiveln", "Five Liner (JPM) (IMPACT) (set 1)", - "j6fivelna", "Five Liner (JPM) (IMPACT) (set 2)", - "j6fivelnb", "Five Liner (JPM) (IMPACT) (set 3)", - "j6fivelnc", "Five Liner (JPM) (IMPACT) (set 4)", - "j6footy", "Football Fever (Empire) (IMPACT) (set 1)", - "j6footya", "Football Fever (Empire) (IMPACT) (set 2)", - "j6footyb", "Football Fever (Empire) (IMPACT) (set 3)", - "j6framft", "Frame & Fortune Club (JPM) (IMPACT)", - "j6frc10", "Force 10 (JPM) (IMPACT) (set 1)", - "j6frc10a", "Force 10 (JPM) (IMPACT) (set 2)", - "j6frc10b", "Force 10 (JPM) (IMPACT) (set 3)", - "j6frc10c", "Force 10 (JPM) (IMPACT) (set 4)", - "j6frc10d", "Force 10 (JPM) (IMPACT) (set 5)", - "j6frtmch", "The Fruit Machine (JPM) (IMPACT)", - "j6frtpot", "Fruitpots (Qps) (IMPACT) (set 1)", - "j6frtpota", "Fruitpots (Qps) (IMPACT) (set 2)", - "j6frtpotb", "Fruitpots (Qps) (IMPACT) (set 3)", - "j6frtpotc", "Fruitpots (Qps) (IMPACT) (set 4)", - "j6gforce", "G Force (JPM) (IMPACT) (set 1)", - "j6gforcea", "G Force (JPM) (IMPACT) (set 2)", - "j6gforceb", "G Force (JPM) (IMPACT) (set 3)", - "j6gforcec", "G Force (JPM) (IMPACT) (set 4)", - "j6gforced", "G Force (JPM) (IMPACT) (15GBP Jackpot)", - "j6gidogh", "G.I. Dough (Ace) (IMPACT)", - "j6gldclb", "Gladiator Club (JPM) (IMPACT) (set 1)", - "j6gldclba", "Gladiator Club (JPM) (IMPACT) (set 2)", - "j6gldclbb", "Gladiator Club (JPM) (IMPACT) (set 3)", - "j6gldmin", "Gold Mine (Empire) (IMPACT)", - "j6gldpl", "Golden Palace (Qps) (IMPACT)", - "j6gogold", "Go For Gold (JPM) (IMPACT) (set 1)", - "j6gogolda", "Go For Gold (JPM) (IMPACT) (set 2)", - "j6gogoldb", "Go For Gold (JPM) (IMPACT) (set 3)", - "j6gogoldc", "Go For Gold (JPM) (IMPACT) (set 4)", - "j6golddm", "Golden Demons (JPM) (IMPACT) (set 1)", - "j6golddma", "Golden Demons (JPM) (IMPACT) (set 2)", - "j6goldgl", "Golden Goal (JPM) (IMPACT) (set 1)", - "j6goldgla", "Golden Goal (JPM) (IMPACT) (set 2)", - "j6goldglb", "Golden Goal (JPM) (IMPACT) (set 3)", - "j6goldglc", "Golden Goal (JPM) (IMPACT) (set 4)", - "j6goldgld", "Golden Goal (JPM) (IMPACT) (set 5)", - "j6goldgle", "Golden Goal (JPM) (IMPACT) (set 6)", - "j6goldglf", "Golden Goal (JPM) (IMPACT) (set 7)", - "j6goldglg", "Golden Goal (JPM) (IMPACT) (set 8)", - "j6goldglh", "Golden Goal (JPM) (IMPACT) (set 9)", - "j6goldgli", "Golden Goal (JPM) (IMPACT) (set 10)", - "j6goldglj", "Golden Goal (JPM) (IMPACT) (set 11)", - "j6goldglk", "Golden Goal (JPM) (IMPACT) (set 12)", - "j6goldgll", "Golden Goal (JPM) (IMPACT) (set 13)", - "j6grc", "Gold Rush Club (Crystal) (IMPACT) (set 1)", - "j6grca", "Gold Rush Club (Crystal) (IMPACT) (set 2)", - "j6guab", "Give Us A Break (JPM) (IMPACT) (set 1)", - "j6guaba", "Give Us A Break (JPM) (IMPACT) (set 2)", - "j6guabb", "Give Us A Break (JPM) (IMPACT) (set 3)", - "j6guabc", "Give Us A Break (JPM) (IMPACT) (set 4)", - "j6guabcl", "Give Us A Break Club (JPM) (IMPACT) (set 1)", - "j6guabcla", "Give Us A Break Club (JPM) (IMPACT) (set 2)", - "j6guabd", "Give Us A Break (JPM) (IMPACT) (set 5)", - "j6guabe", "Give Us A Break (JPM) (IMPACT) (set 6)", - "j6guabf", "Give Us A Break (JPM) (IMPACT) (set 7)", - "j6h5clb", "High Five Club (JPM) (IMPACT) (set 1)", - "j6h5clba", "High Five Club (JPM) (IMPACT) (set 2)", - "j6hapyhr", "Happy Hour (JPM) (IMPACT) (set 1)", - "j6hapyhra", "Happy Hour (JPM) (IMPACT) (set 2)", - "j6hapyhrb", "Happy Hour (JPM) (IMPACT) (set 3)", - "j6hdc", "Hot Dogs Club (Crystal) (IMPACT) (set 1)", - "j6hdca", "Hot Dogs Club (Crystal) (IMPACT) (set 2)", - "j6hdcb", "Hot Dogs Club (Crystal) (IMPACT) (set 3)", - "j6hdcc", "Hot Dogs Club (Crystal) (IMPACT) (set 4)", - "j6hdcd", "Hot Dogs Club (Crystal) (IMPACT) (set 5)", - "j6hdce", "Hot Dogs Club (Crystal) (IMPACT) (set 6)", - "j6hdcf", "Hot Dogs Club (Crystal) (IMPACT) (set 7)", - "j6hdcg", "Hot Dogs Club (Crystal) (IMPACT) (set 8)", - "j6hifly", "Hi Flyer (Crystal) (IMPACT)", - "j6hikar", "Hi Karate (Crystal) (IMPACT) (set 1)", - "j6hikara", "Hi Karate (Crystal) (IMPACT) (set 2)", - "j6hikarb", "Hi Karate (Crystal) (IMPACT) (set 3)", - "j6hilosv", "Hi Lo Silver (JPM) (IMPACT) (set 1)", - "j6hilosva", "Hi Lo Silver (JPM) (IMPACT) (set 2)", - "j6hilosvb", "Hi Lo Silver (JPM) (IMPACT) (set 3)", - "j6hilosvc", "Hi Lo Silver (JPM) (IMPACT) (set 4)", - "j6hilosvd", "Hi Lo Silver (JPM) (IMPACT) (set 5)", - "j6hilosve", "Hi Lo Silver (JPM) (IMPACT) (set 6)", - "j6hiphop", "Hip Hopper (Ace) (IMPACT) (set 1)", - "j6hiphopa", "Hip Hopper (Ace) (IMPACT) (set 2)", - "j6hiphopb", "Hip Hopper (Ace) (IMPACT) (set 3)", - "j6hiphopc", "Hip Hopper (Ace) (IMPACT) (set 4)", - "j6hiphopd", "Hip Hopper (Ace) (IMPACT) (set 5)", - "j6hirlcl", "Hi Roller Club (JPM) (IMPACT) (set 1)", - "j6hirlcla", "Hi Roller Club (JPM) (IMPACT) (set 2)", - "j6hirlclb", "Hi Roller Club (JPM) (IMPACT) (set 3)", - "j6hirlclc", "Hi Roller Club (JPM) (IMPACT) (set 4)", - "j6hirol", "Hi Roller (JPM) (IMPACT) (set 1)", - "j6hirola", "Hi Roller (JPM) (IMPACT) (set 2)", - "j6hirolb", "Hi Roller (JPM) (IMPACT) (set 3)", - "j6hirolc", "Hi Roller (JPM) (IMPACT) (set 4)", - "j6hirold", "Hi Roller (JPM) (IMPACT) (set 5)", - "j6hisprt", "High Spirits (Empire) (IMPACT) (prototype?)", - "j6histk", "Hi Stakes (Qps) (IMPACT) (set 1)", - "j6histka", "Hi Stakes (Qps) (IMPACT) (set 2)", - "j6hotsht", "Hot Shot (Ace) (IMPACT) (set 1)", - "j6hotshta", "Hot Shot (Ace) (IMPACT) (set 2)", - "j6hotshtb", "Hot Shot (Ace) (IMPACT) (set 3)", - "j6hotshtc", "Hot Shot (Ace) (IMPACT) (set 4)", - "j6hotshtd", "Hot Shot (Ace) (IMPACT) (set 5)", - "j6hotshte", "Hot Shot (Ace) (IMPACT) (set 6)", - "j6hotshtf", "Hot Shot (Ace) (IMPACT) (set 7)", - "j6hotshtg", "Hot Shot (Ace) (IMPACT) (set 8)", - "j6hotshth", "Hot Shot (Ace) (IMPACT) (set 9)", - "j6hotshti", "Hot Shot (Ace) (IMPACT) (set 10)", - "j6hotshtj", "Hot Shot (Ace) (IMPACT) (set 11)", - "j6hotshtk", "Hot Shot (Ace) (IMPACT) (set 12)", - "j6hotshtl", "Hot Shot (Ace) (IMPACT) (set 13)", - "j6impact", "Hi Impact (JPM) (IMPACT) (set 1)", - "j6impacta", "Hi Impact (JPM) (IMPACT) (set 2)", - "j6impactb", "Hi Impact (JPM) (IMPACT) (set 3)", - "j6impactc", "Hi Impact (JPM) (IMPACT) (15GBP Jackpot)", - "j6impls", "Impulse (Crystal) (IMPACT)", - "j6impuls", "Impulse (JPM) (IMPACT) (set 1)", - "j6impulsa", "Impulse (JPM) (IMPACT) (set 2)", - "j6impulsb", "Impulse (JPM) (IMPACT) (set 3)", - "j6impulsc", "Impulse (JPM) (IMPACT) (set 4)", - "j6impulsd", "Impulse (JPM) (IMPACT) (set 5)", - "j6impulse", "Impulse (JPM) (IMPACT) (set 6)", - "j6impulsf", "Impulse (JPM) (IMPACT) (set 7)", - "j6indy", "Indiana Jones (JPM) (IMPACT) (set 1)", - "j6indya", "Indiana Jones (JPM) (IMPACT) (set 2)", - "j6indyb", "Indiana Jones (JPM) (IMPACT) (set 3)", - "j6indyc", "Indiana Jones (JPM) (IMPACT) (set 4)", - "j6indyd", "Indiana Jones (JPM) (IMPACT) (set 5)", - "j6indye", "Indiana Jones (JPM) (IMPACT) (set 6)", - "j6indyf", "Indiana Jones (JPM) (IMPACT) (set 7)", - "j6indyg", "Indiana Jones (JPM) (IMPACT) (set 8)", - "j6indyge", "Indiana Jones (JPM) (IMPACT, German set 1)", - "j6indyge2", "Indiana Jones (JPM) (IMPACT, German set 2)", - "j6indyh", "Indiana Jones (JPM) (IMPACT) (set 9)", - "j6indyi", "Indiana Jones (JPM) (IMPACT) (set 10)", - "j6indyj", "Indiana Jones (JPM) (IMPACT) (set 11)", - "j6indyk", "Indiana Jones (JPM) (IMPACT) (set 12)", - "j6jackjs", "Jackpot Justice (Qps) (IMPACT) (set 1)", - "j6jackjsa", "Jackpot Justice (Qps) (IMPACT) (set 2)", - "j6jackjsb", "Jackpot Justice (Qps) (IMPACT) (set 3)", - "j6jackjsc", "Jackpot Justice (Qps) (IMPACT) (set 4)", - "j6jkpldx", "Jokers Plus Deluxe (JPM) (IMPACT) (set 1)", - "j6jkpldxa", "Jokers Plus Deluxe (JPM) (IMPACT) (set 2)", - "j6jkrgld", "Jokers Gold (JPM) (IMPACT)", - "j6jkrpls", "Jokers Plus (JPM) (IMPACT) (set 1)", - "j6jkrplsa", "Jokers Plus (JPM) (IMPACT) (set 2)", - "j6jkrplsb", "Jokers Plus (JPM) (IMPACT) (set 3)", - "j6jkrplsc", "Jokers Plus (JPM) (IMPACT) (set 4)", - "j6jkrplsd", "Jokers Plus (JPM) (IMPACT) (set 5)", - "j6jkrplse", "Jokers Plus (JPM) (IMPACT) (set 6)", - "j6jkwld", "Jokers Wild (JPM) (IMPACT)", - "j6jungfv", "Jungle Fever (Ace) (IMPACT)", - "j6kamel", "Kameleon (JPM) (IMPACT)", - "j6kapang", "Kapang! (Crystal) (IMPACT) (set 1)", - "j6kapanga", "Kapang! (Crystal) (IMPACT) (set 2)", - "j6kfc", "Kung Fu Club (Crystal) (IMPACT) (set 1)", - "j6kfca", "Kung Fu Club (Crystal) (IMPACT) (set 2)", - "j6kfcb", "Kung Fu Club (Crystal) (IMPACT) (set 3)", - "j6knight", "Your Lucky Knight (JPM) (IMPACT) (set 1)", - "j6knighta", "Your Lucky Knight (JPM) (IMPACT) (set 2)", - "j6knightb", "Your Lucky Knight (JPM) (IMPACT) (set 3)", - "j6knightc", "Your Lucky Knight (JPM) (IMPACT) (set 4)", - "j6knightd", "Your Lucky Knight (JPM) (IMPACT) (set 5)", - "j6knighte", "Your Lucky Knight (JPM) (IMPACT) (set 6)", - "j6kungfu", "Kung Fu (Ace) (IMPACT) (set 1)", - "j6kungfua", "Kung Fu (Ace) (IMPACT) (set 2)", - "j6kungfub", "Kung Fu (Ace) (IMPACT) (set 3)", - "j6kungfuc", "Kung Fu (Ace) (IMPACT) (set 4)", - "j6kungfud", "Kung Fu (Ace) (IMPACT) (set 5)", - "j6luckla", "Lucky Las Vegas (JPM) (IMPACT) (set 1)", - "j6lucklaa", "Lucky Las Vegas (JPM) (IMPACT) (set 2)", - "j6lucklab", "Lucky Las Vegas (JPM) (IMPACT) (set 3)", - "j6lucklo", "Lucky Lottery Club (Crystal) (IMPACT) (set 1)", - "j6luckloa", "Lucky Lottery Club (Crystal) (IMPACT) (set 2)", - "j6magcir", "Magic Circle Club (JPM) (IMPACT) (set 1)", - "j6magcira", "Magic Circle Club (JPM) (IMPACT) (set 2)", - "j6magcirb", "Magic Circle Club (JPM) (IMPACT) (set 3)", - "j6magcirc", "Magic Circle Club (JPM) (IMPACT) (set 4)", - "j6magcird", "Magic Circle Club (JPM) (IMPACT) (set 5)", - "j6mavrk", "Maverick (JPM) (IMPACT) (set 1)", - "j6mavrka", "Maverick (JPM) (IMPACT) (set 2)", - "j6mavrkb", "Maverick (JPM) (IMPACT) (set 3)", - "j6mavrkc", "Maverick (JPM) (IMPACT) (set 4)", - "j6mavrkd", "Maverick (JPM) (IMPACT) (set 5)", - "j6maxcsh", "Maximus Cash (JPM) (IMPACT)", - "j6maxod", "Maximum Overdrive (JPM) (IMPACT) (set 1)", - "j6maxoda", "Maximum Overdrive (JPM) (IMPACT) (set 2)", - "j6maxodb", "Maximum Overdrive (JPM) (IMPACT) (set 3)", - "j6maxodc", "Maximum Overdrive (JPM) (IMPACT) (set 4)", - "j6medal", "Medallion Job (Qps) (IMPACT) (set 1)", - "j6medala", "Medallion Job (Qps) (IMPACT) (set 2)", - "j6medalb", "Medallion Job (Qps) (IMPACT) (set 3)", - "j6medalc", "Medallion Job (Qps) (IMPACT) (set 4)", - "j6medald", "Medallion Job (Qps) (IMPACT) (set 5)", - "j6megbck", "Mega Bucks (JPM) (IMPACT) (set 1)", - "j6megbcka", "Mega Bucks (JPM) (IMPACT) (set 2)", - "j6megbckb", "Mega Bucks (JPM) (IMPACT) (set 3)", - "j6megbckc", "Mega Bucks (JPM) (IMPACT) (set 4)", - "j6megbckd", "Mega Bucks (JPM) (IMPACT) (set 5)", - "j6milln", "Millionaire (JPM) (IMPACT) (set 1)", - "j6millna", "Millionaire (JPM) (IMPACT) (set 2)", - "j6monmad", "Money Madness (Ace) (IMPACT)", - "j6mono60", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 1)", - "j6mono60a", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 2)", - "j6mono60b", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 3)", - "j6mono60c", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 4)", - "j6mono60d", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 5)", - "j6mono60e", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 6)", - "j6mono60f", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 7)", - "j6mono60g", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 8)", - "j6mono60h", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 9)", - "j6mono60i", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 10)", - "j6mono60j", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 11)", - "j6mono60k", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 12)", - "j6mono60l", "Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 13)", - "j6monobn", "Monopoly Bingo (JPM) (IMPACT) (set 1)", - "j6monobna", "Monopoly Bingo (JPM) (IMPACT) (set 2)", - "j6monobnb", "Monopoly Bingo (JPM) (IMPACT) (set 3)", - "j6monst", "Monster Cash Club (Crystal) (IMPACT) (set 1)", - "j6monsta", "Monster Cash Club (Crystal) (IMPACT) (set 2)", - "j6monstb", "Monster Cash Club (Crystal) (IMPACT) (set 3)", - "j6monstc", "Monster Cash Club (Crystal) (IMPACT) (set 4)", - "j6monstd", "Monster Cash Club (Crystal) (IMPACT) (set 5)", - "j6montlk", "Money Talks (JPM) (IMPACT) (set 1)", - "j6montlka", "Money Talks (JPM) (IMPACT) (set 2)", - "j6montlkb", "Money Talks (JPM) (IMPACT) (set 3)", - "j6montlkc", "Money Talks (JPM) (IMPACT) (set 4)", - "j6montlkd", "Money Talks (JPM) (IMPACT) (set 5)", - "j6montlke", "Money Talks (JPM) (IMPACT) (set 6)", - "j6montlkf", "Money Talks (JPM) (IMPACT) (set 7)", - "j6montlkg", "Money Talks (JPM) (IMPACT) (set 8)", - "j6montlkh", "Money Talks (JPM) (IMPACT) (set 9)", - "j6outlaw", "Outlaw (JPM) (IMPACT, v3)", - "j6outlawc", "Outlaw (JPM) (IMPACT, Club?)", - "j6outlawd", "Outlaw (JPM) (IMPACT, v3) (Protocol)", - "j6oxo", "Oxo (JPM) (IMPACT) (set 1)", - "j6oxoa", "Oxo (JPM) (IMPACT) (set 2)", - "j6oxob", "Oxo (JPM) (IMPACT) (set 3)", - "j6oxobin", "Oxo Bingo (JPM) (IMPACT) (set 1)", - "j6oxobina", "Oxo Bingo (JPM) (IMPACT) (set 2)", - "j6oxobinb", "Oxo Bingo (JPM) (IMPACT) (set 3)", - "j6oxobinc", "Oxo Bingo (JPM) (IMPACT) (set 4)", - "j6oxobind", "Oxo Bingo (JPM) (IMPACT) (set 5)", - "j6oxobine", "Oxo Bingo (JPM) (IMPACT) (set 6)", - "j6oxobinf", "Oxo Bingo (JPM) (IMPACT) (set 7)", - "j6oxoc", "Oxo (JPM) (IMPACT) (set 4)", - "j6oxod", "Oxo (JPM) (IMPACT) (set 5)", - "j6oxoe", "Oxo (JPM) (IMPACT) (set 6)", - "j6pacman", "Pac Man Plus (Qps) (IMPACT)", - "j6papa", "Paparazzi (Empire) (IMPACT) (set 1)", - "j6papaa", "Paparazzi (Empire) (IMPACT) (set 2)", - "j6papab", "Paparazzi (Empire) (IMPACT) (set 3)", - "j6papac", "Paparazzi (Empire) (IMPACT) (set 4)", - "j6papad", "Paparazzi (Empire) (IMPACT) (set 5)", - "j6papae", "Paparazzi (Empire) (IMPACT) (set 6)", - "j6papaf", "Paparazzi (Empire) (IMPACT) (set 7)", - "j6phxgld", "Phoenix Gold (JPM) (IMPACT) (set 1)", - "j6phxglda", "Phoenix Gold (JPM) (IMPACT) (set 2)", - "j6phxgldb", "Phoenix Gold (JPM) (IMPACT) (set 3)", - "j6phxgldc", "Phoenix Gold (JPM) (IMPACT) (set 4)", - "j6phxgldd", "Phoenix Gold (JPM) (IMPACT) (set 5)", - "j6phxglde", "Phoenix Gold (JPM) (IMPACT) (set 6)", - "j6phxgldf", "Phoenix Gold (JPM) (IMPACT) (set 7)", - "j6phxgldg", "Phoenix Gold (JPM) (IMPACT) (set 8)", - "j6pinfvr", "Pinball Fever (Crystal) (IMPACT)", - "j6pinwzc", "Pinball Wizard (Crystal) (IMPACT) (set 1)", - "j6pinwzca", "Pinball Wizard (Crystal) (IMPACT) (set 2)", - "j6pinwzcb", "Pinball Wizard (Crystal) (IMPACT) (set 3)", - "j6pinwzd", "Pinball Wizard (JPM) (IMPACT) (set 1)", - "j6pinwzda", "Pinball Wizard (JPM) (IMPACT) (set 2)", - "j6pinwzdb", "Pinball Wizard (JPM) (IMPACT) (set 3)", - "j6pinwzdc", "Pinball Wizard (JPM) (IMPACT) (set 4)", - "j6pinwzdd", "Pinball Wizard (JPM) (IMPACT) (set 5)", - "j6pinwzde", "Pinball Wizard (JPM) (IMPACT) (set 6)", - "j6pirgld", "Pirates Gold (JPM) (IMPACT) (set 1)", - "j6pirglda", "Pirates Gold (JPM) (IMPACT) (set 2)", - "j6pnxgd", "Phoenix Gold De Luxe (JPM) (IMPACT)", - "j6pnxmil", "Phoenix Millennium (JPM) (IMPACT) (set 1)", - "j6pnxmila", "Phoenix Millennium (JPM) (IMPACT) (set 2)", - "j6pnxmilb", "Phoenix Millennium (JPM) (IMPACT) (set 3)", - "j6pnxmilc", "Phoenix Millennium (JPM) (IMPACT) (set 4)", - "j6pog", "Pot Of Gold (Ace) (IMPACT) (set 1)", - "j6poga", "Pot Of Gold (Ace) (IMPACT) (set 2)", - "j6pogb", "Pot Of Gold (Ace) (IMPACT) (set 3)", - "j6pogc", "Pot Of Gold (Ace) (IMPACT) (set 4)", - "j6pogcls", "Pot Of Gold Classic (JPM) (IMPACT) (set 1)", - "j6pogclsa", "Pot Of Gold Classic (JPM) (IMPACT) (set 2)", - "j6pogclsb", "Pot Of Gold Classic (JPM) (IMPACT) (set 3)", - "j6pogd", "Pot Of Gold (Ace) (IMPACT) (set 5)", - "j6pompay", "Up Pompay (Ace) (IMPACT) (set 1)", - "j6pompaya", "Up Pompay (Ace) (IMPACT) (set 2)", - "j6pompayb", "Up Pompay (Ace) (IMPACT) (set 3)", - "j6pompayc", "Up Pompay (Ace) (IMPACT) (set 4)", - "j6popoli", "Popeye & Olive (JPM) (IMPACT) (set 1)", - "j6popolia", "Popeye & Olive (JPM) (IMPACT) (set 2)", - "j6potg", "Pot Of Gold (Crystal) (IMPACT) (set 1)", - "j6potga", "Pot Of Gold (Crystal) (IMPACT) (set 2)", - "j6potgb", "Pot Of Gold (Crystal) (IMPACT) (set 3)", - "j6pwrlin", "Power Lines (JPM) (IMPACT) (set 1)", - "j6pwrlina", "Power Lines (JPM) (IMPACT) (set 2)", - "j6pwrspn", "Powerspin (JPM) (IMPACT) (set 1)", - "j6pwrspna", "Powerspin (JPM) (IMPACT) (set 2)", - "j6pwrspnb", "Powerspin (JPM) (IMPACT) (set 3)", - "j6pwrspnc", "Powerspin (JPM) (IMPACT) (set 4)", - "j6pwrspnd", "Powerspin (JPM) (IMPACT) (set 5)", - "j6pwrspne", "Powerspin (JPM) (IMPACT) (set 6)", - "j6quantm", "Quantum Leap (JPM) (IMPACT) (set 1)", - "j6quantma", "Quantum Leap (JPM) (IMPACT) (set 2)", - "j6quantmb", "Quantum Leap (JPM) (IMPACT) (set 3)", - "j6quantmc", "Quantum Leap (JPM) (IMPACT) (set 4)", - "j6quick", "Quicksilver (RAL) (IMPACT)", - "j6r2rum", "Ready To Rumble (Crystal) (IMPACT) (set 1)", - "j6r2ruma", "Ready To Rumble (Crystal) (IMPACT) (set 2)", - "j6r2rumb", "Ready To Rumble (Crystal) (IMPACT) (set 3)", - "j6r2rumc", "Ready To Rumble (Crystal) (IMPACT) (set 4)", - "j6r2rumd", "Ready To Rumble (Crystal) (IMPACT) (set 5)", - "j6r2rume", "Ready To Rumble (Crystal) (IMPACT) (set 6)", - "j6ra", "Red Alert (JPM) (IMPACT) (set 1)", - "j6raa", "Red Alert (JPM) (IMPACT) (set 2)", - "j6rab", "Red Alert (JPM) (IMPACT) (set 3)", - "j6rac", "Red Alert (JPM) (IMPACT) (set 4)", - "j6raclb", "Red Alert Club (JPM) (IMPACT) (set 1)", - "j6raclba", "Red Alert Club (JPM) (IMPACT) (set 2)", - "j6raclbb", "Red Alert Club (JPM) (IMPACT) (set 3)", - "j6raclbc", "Red Alert Club (JPM) (IMPACT) (set 4)", - "j6raclbd", "Red Alert Club (JPM) (IMPACT) (set 5)", - "j6rad", "Red Alert (JPM) (IMPACT) (set 5)", - "j6rager", "Red Alert (JPM) [German] (IMPACT)", - "j6ramese", "Rameses' Riches Club (Crystal) (IMPACT) (set 1)", - "j6ramesea", "Rameses' Riches Club (Crystal) (IMPACT) (set 2)", - "j6rameseb", "Rameses' Riches Club (Crystal) (IMPACT) (set 3)", - "j6ramesec", "Rameses' Riches Club (Crystal) (IMPACT) (set 4)", - "j6ramesed", "Rameses' Riches Club (Crystal) (IMPACT) (set 5)", - "j6ramesee", "Rameses' Riches Club (Crystal) (IMPACT) (set 6)", - "j6ramesef", "Rameses' Riches Club (Crystal) (IMPACT) (set 7)", - "j6rccls", "Roller Coaster Classic (JPM) (IMPACT) (set 1)", - "j6rcclsa", "Roller Coaster Classic (JPM) (IMPACT) (set 2)", - "j6rcclsb", "Roller Coaster Classic (JPM) (IMPACT) (set 3)", - "j6rcclub", "Roller Coaster Club (JPM) (IMPACT) (set 1)", - "j6rccluba", "Roller Coaster Club (JPM) (IMPACT) (set 2)", - "j6rcclubb", "Roller Coaster Club (JPM) (IMPACT) (set 3)", - "j6redal", "Red Alert (Crystal) (IMPACT) (set 1)", - "j6redala", "Red Alert (Crystal) (IMPACT) (set 2)", - "j6redarw", "Red Arrow (JPM) (IMPACT) (set 1)", - "j6redarwa", "Red Arrow (JPM) (IMPACT) (set 2)", - "j6redarwb", "Red Arrow (JPM) (IMPACT) (set 3)", - "j6redarwc", "Red Arrow (JPM) (IMPACT) (set 4)", - "j6redarwd", "Red Arrow (JPM) (IMPACT) (set 5)", - "j6redarwe", "Red Arrow (JPM) (IMPACT) (set 6)", - "j6redarwf", "Red Arrow (JPM) (IMPACT) (set 7)", - "j6redarwg", "Red Arrow (JPM) (IMPACT) (set 8)", - "j6redarwh", "Red Arrow (JPM) (IMPACT) (set 9)", - "j6redarwi", "Red Arrow (JPM) (IMPACT) (set 10)", - "j6redarwj", "Red Arrow (JPM) (IMPACT) (set 11)", - "j6redarww", "Red Arrow (Whitbread / JPM) (IMPACT)", - "j6reddmn", "Red Demon (JPM) (IMPACT)", - "j6reelb", "Reel Bingo Classic Club (Crystal) (IMPACT) (set 1)", - "j6reelba", "Reel Bingo Classic Club (Crystal) (IMPACT) (set 2)", - "j6reelmn", "Reel Money (JPM) (IMPACT) (set 1)", - "j6reelmna", "Reel Money (JPM) (IMPACT) (set 2)", - "j6reelmnb", "Reel Money (JPM) (IMPACT) (set 3)", - "j6reelmnc", "Reel Money (JPM) (IMPACT) (set 4)", - "j6reelmnd", "Reel Money (JPM) (IMPACT) (set 5)", - "j6reelth", "Reel Thing (Ace) (IMPACT) set 1)", - "j6reeltha", "Reel Thing (Ace) (IMPACT) set 2)", - "j6reelthb", "Reel Thing (Ace) (IMPACT) set 3)", - "j6rh6", "Red Hot 6 (JPM) (IMPACT) (set 1)", - "j6rh6a", "Red Hot 6 (JPM) (IMPACT) (set 2)", - "j6rh6b", "Red Hot 6 (JPM) (IMPACT) (set 3)", - "j6rh6c", "Red Hot 6 (JPM) (IMPACT) (set 4)", - "j6rh6cl", "Red Hot Six Club (JPM) (IMPACT) (set 1)", - "j6rh6cla", "Red Hot Six Club (JPM) (IMPACT) (set 2)", - "j6rh6clb", "Red Hot Six Club (JPM) (IMPACT) (set 3)", - "j6rh6clc", "Red Hot Six Club (JPM) (IMPACT) (set 4)", - "j6rh6cld", "Red Hot Six Club (JPM) (IMPACT) (set 5)", - "j6rh6d", "Red Hot 6 (JPM) (IMPACT) (set 5)", - "j6rh6e", "Red Hot 6 (JPM) (IMPACT) (set 6)", - "j6rhchil", "Red Hot Chili Stepper (Ace) (IMPACT) (set 1)", - "j6rhchila", "Red Hot Chili Stepper (Ace) (IMPACT) (set 2)", - "j6rhchilb", "Red Hot Chili Stepper (Ace) (IMPACT) (set 3)", - "j6rhchilc", "Red Hot Chili Stepper (Ace) (IMPACT) (set 4)", - "j6rhchild", "Red Hot Chili Stepper (Ace) (IMPACT) (set 5)", - "j6richpk", "Rich Pickings (Ace) (IMPACT)", - "j6rico", "Ricochet (JPM) (IMPACT) (set 1)", - "j6ricoa", "Ricochet (JPM) (IMPACT) (set 2)", - "j6ricob", "Ricochet (JPM) (IMPACT) (set 3)", - "j6ricoc", "Ricochet (JPM) (IMPACT) (set 4)", - "j6ricod", "Ricochet (JPM) (IMPACT) (set 5)", - "j6ricoe", "Ricochet (JPM) (IMPACT) (set 6)", - "j6robin", "Robin Hood (Ace) (IMPACT) (set 1)", - "j6robina", "Robin Hood (Ace) (IMPACT) (set 2)", - "j6robinb", "Robin Hood (Ace) (IMPACT) (set 3)", - "j6robinc", "Robin Hood (Ace) (IMPACT) (set 4)", - "j6roller", "Roller Coaster (JPM) (IMPACT) (set 1)", - "j6rollera", "Roller Coaster (JPM) (IMPACT) (set 2)", - "j6rollerb", "Roller Coaster (JPM) (IMPACT) (set 3)", - "j6rollerc", "Roller Coaster (JPM) (IMPACT) (set 4)", - "j6rollerd", "Roller Coaster (JPM) (IMPACT) (set 5)", - "j6rollere", "Roller Coaster (JPM) (IMPACT) (set 6)", - "j6rollerf", "Roller Coaster (JPM) (IMPACT) (set 7)", - "j6rollerg", "Roller Coaster (JPM) (IMPACT) (set 8)", - "j6rollerh", "Roller Coaster (JPM) (IMPACT) (set 9)", - "j6rolleri", "Roller Coaster (JPM) (IMPACT) (set 10)", - "j6rollerj", "Roller Coaster (JPM) (IMPACT) (set 11)", - "j6rollerk", "Roller Coaster (JPM) (IMPACT) (set 12)", - "j6rollerl", "Roller Coaster (JPM) (IMPACT) (set 13)", - "j6rollerm", "Roller Coaster (JPM) (IMPACT) (set 14)", - "j6rollern", "Roller Coaster (JPM) (IMPACT) (set 15)", - "j6rollero", "Roller Coaster (JPM) (IMPACT) (set 16)", - "j6rollerp", "Roller Coaster (JPM) (IMPACT) (set 17)", - "j6roof", "Thru' The Roof (Ace) (IMPACT) (set 1)", - "j6roofa", "Thru' The Roof (Ace) (IMPACT) (set 2)", - "j6royfls", "Royal Flush Club (JPM) (IMPACT) (set 1)", - "j6royflsa", "Royal Flush Club (JPM) (IMPACT) (set 2)", - "j6royflsb", "Royal Flush Club (JPM) (IMPACT) (set 3)", - "j6royflsc", "Royal Flush Club (JPM) (IMPACT) (set 4)", - "j6royflsd", "Royal Flush Club (JPM) (IMPACT) (set 5)", - "j6royflse", "Royal Flush Club (JPM) (IMPACT) (set 6)", - "j6samur", "Samurai Club (JPM) (IMPACT) (set 1)", - "j6samura", "Samurai Club (JPM) (IMPACT) (set 2)", - "j6samurb", "Samurai Club (JPM) (IMPACT) (set 3)", - "j6samurc", "Samurai Club (JPM) (IMPACT) (set 4)", - "j6samurd", "Samurai Club (JPM) (IMPACT) (set 5)", - "j6scarlt", "Captain Scarlet (Ace) (IMPACT)", - "j6shoot", "ShootOut (JPM / Whitbread) (IMPACT)", - "j6showtm", "It's Showtime (JPM) (IMPACT) (set 1)", - "j6showtma", "It's Showtime (JPM) (IMPACT) (set 2)", - "j6showtmb", "It's Showtime (JPM) (IMPACT) (set 3)", - "j6showtmc", "It's Showtime (JPM) (IMPACT) (set 4)", - "j6showtmd", "It's Showtime (JPM) (IMPACT) (set 5)", - "j6showtme", "It's Showtime (JPM) (IMPACT) (set 6)", - "j6showtmf", "It's Showtime (JPM) (IMPACT) (set 7)", - "j6showtmg", "It's Showtime (JPM) (IMPACT) (set 8)", - "j6showtmh", "It's Showtime (JPM) (IMPACT) (set 9)", - "j6showtmi", "It's Showtime (JPM) (IMPACT) (set 10)", - "j6showtmj", "It's Showtime (JPM) (IMPACT) (set 11)", - "j6showtmk", "It's Showtime (JPM) (IMPACT) (set 12)", - "j6showtml", "It's Showtime (JPM) (IMPACT) (set 13)", - "j6sidewd", "Sidewinder (JPM) (IMPACT) (set 1)", - "j6sidewda", "Sidewinder (JPM) (IMPACT) (set 2)", - "j6sidewdb", "Sidewinder (JPM) (IMPACT) (set 3)", - "j6sidewdc", "Sidewinder (JPM) (IMPACT) (set 4)", - "j6sidewdd", "Sidewinder (JPM) (IMPACT) (set 5)", - "j6sidewde", "Sidewinder (JPM) (IMPACT) (set 6)", - "j6slagn", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 1)", - "j6slagna", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 2)", - "j6slagnb", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 3)", - "j6slagnc", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 4)", - "j6slagnd", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 5)", - "j6slagne", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 6)", - "j6slagnf", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 7)", - "j6slagng", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 8)", - "j6slagnh", "Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 9)", - "j6slvgst", "Silver Ghost (JPM) (IMPACT) (set 1)", - "j6slvgsta", "Silver Ghost (JPM) (IMPACT) (set 2)", - "j6slvgstb", "Silver Ghost (JPM) (IMPACT) (set 3)", - "j6slvgstc", "Silver Ghost (JPM) (IMPACT) (set 4)", - "j6slvgstd", "Silver Ghost (JPM) (IMPACT) (set 5)", - "j6slvgste", "Silver Ghost (JPM) (IMPACT) (set 6)", - "j6slvgstf", "Silver Ghost (JPM) (IMPACT) (set 7)", - "j6slvgstg", "Silver Ghost (JPM) (IMPACT) (set 8)", - "j6snakes", "Snakes & Ladders (JPM) (IMPACT) (set 1)", - "j6snakesa", "Snakes & Ladders (JPM) (IMPACT) (set 2)", - "j6snakesb", "Snakes & Ladders (JPM) (IMPACT) (set 3)", - "j6snakesc", "Snakes & Ladders (JPM) (IMPACT) (set 4)", - "j6snakesd", "Snakes & Ladders (JPM) (IMPACT) (set 5)", - "j6snakese", "Snakes & Ladders (JPM) (IMPACT) (set 6)", - "j6snakesf", "Snakes & Ladders (JPM) (IMPACT) (set 7)", - "j6snakesg", "Snakes & Ladders (JPM) (IMPACT) (set 8)", - "j6sonic", "Sonic The Hedgehog (JPM) (IMPACT) (set 1)", - "j6sonica", "Sonic The Hedgehog (JPM) (IMPACT) (set 2)", - "j6sonicb", "Sonic The Hedgehog (JPM) (IMPACT) (set 3)", - "j6sonicc", "Sonic The Hedgehog (JPM) (IMPACT) (set 4)", - "j6sonicd", "Sonic The Hedgehog (JPM) (IMPACT) (set 5)", - "j6sonice", "Sonic The Hedgehog (JPM) (IMPACT) (set 6)", - "j6sonicf", "Sonic The Hedgehog (JPM) (IMPACT) (set 7)", - "j6sonicg", "Sonic The Hedgehog (JPM) (IMPACT) (set 8)", - "j6sonich", "Sonic The Hedgehog (JPM) (IMPACT) (set 9)", - "j6spcinv", "Space Invaders (Crystal) (IMPACT)", - "j6stards", "Stardust (JPM) (IMPACT) (set 1)", - "j6stardsa", "Stardust (JPM) (IMPACT) (set 2)", - "j6stardsb", "Stardust (JPM) (IMPACT) (set 3)", - "j6stardsc", "Stardust (JPM) (IMPACT) (set 4)", - "j6start", "Starturn (JPM) (IMPACT) (set 1)", - "j6starta", "Starturn (JPM) (IMPACT) (set 2)", - "j6strk10", "Strike 10 (Ace) (IMPACT) (set 1)", - "j6strk10a", "Strike 10 (Ace) (IMPACT) (set 2)", - "j6strk10b", "Strike 10 (Ace) (IMPACT) (set 3)", - "j6strk10c", "Strike 10 (Ace) (IMPACT) (set 4)", - "j6strk10d", "Strike 10 (Ace) (IMPACT) (set 5)", - "j6strk10e", "Strike 10 (Ace) (IMPACT) (set 6)", - "j6strk10f", "Strike 10 (Ace) (IMPACT) (set 7)", - "j6strk10g", "Strike 10 (Ace) (IMPACT) (set 8)", - "j6strk10h", "Strike 10 (Ace) (IMPACT) (set 9)", - "j6strk10i", "Strike 10 (Ace) (IMPACT) (set 10)", - "j6strk10j", "Strike 10 (Ace) (IMPACT) (set 11)", - "j6strk10k", "Strike 10 (Ace) (IMPACT) (set 12)", - "j6supbrk", "Super Breakout (JPM) (IMPACT) (set 1)", - "j6supbrka", "Super Breakout (JPM) (IMPACT) (set 2)", - "j6supbrkb", "Super Breakout (JPM) (IMPACT) (set 3)", - "j6supbrkc", "Super Breakout (JPM) (IMPACT) (set 4)", - "j6supbrkd", "Super Breakout (JPM) (IMPACT) (set 5)", - "j6supbrke", "Super Breakout (JPM) (IMPACT) (set 6)", - "j6supbrkf", "Super Breakout (JPM) (IMPACT) (set 7)", - "j6supbrkg", "Super Breakout (JPM) (IMPACT) (set 8)", - "j6supbrkh", "Super Breakout (JPM) (IMPACT) (set 9)", - "j6supbrki", "Super Breakout (JPM) (IMPACT) (set 10)", - "j6supbrkj", "Super Breakout (JPM) (IMPACT) (set 11)", - "j6svndb", "7 Deadly Bins (Ace) (IMPACT)", - "j6swpdrp", "Swop Till Ya Drop (JPM) (IMPACT)", - "j6tbirds", "Thunderbirds (JPM) (IMPACT) (set 1)", - "j6tbirdsa", "Thunderbirds (JPM) (IMPACT) (set 2)", - "j6tbirdsb", "Thunderbirds (JPM) (IMPACT) (set 3)", - "j6tbirdsc", "Thunderbirds (JPM) (IMPACT) (set 4)", - "j6tbirdsd", "Thunderbirds (JPM) (IMPACT) (set 5)", - "j6tbirdse", "Thunderbirds (JPM) (IMPACT) (set 6)", - "j6tbirdsf", "Thunderbirds (JPM) (IMPACT) (set 7)", - "j6tbirdsg", "Thunderbirds (JPM) (IMPACT) (set 8)", - "j6tbirdsh", "Thunderbirds (JPM) (IMPACT) (set 9)", - "j6tbirdsi", "Thunderbirds (JPM) (IMPACT) (set 10)", - "j6tbirdsj", "Thunderbirds (JPM) (IMPACT) (set 11)", - "j6tbirdsk", "Thunderbirds (JPM) (IMPACT) (set 12)", - "j6tbirdsl", "Thunderbirds (JPM) (IMPACT) (set 13)", - "j6tbirdsm", "Thunderbirds (JPM) (IMPACT) (set 14)", - "j6tbirdsn", "Thunderbirds (JPM) (IMPACT) (set 15)", - "j6tbirdso", "Thunderbirds (JPM) (IMPACT) (set 16)", - "j6tbirdsp", "Thunderbirds (JPM) (IMPACT) (set 17)", - "j6tbirdsq", "Thunderbirds (JPM) (IMPACT) (set 18)", - "j6tbirdsr", "Thunderbirds (JPM) (IMPACT) (set 19)", - "j6tbrdcl", "Thunderbirds Club (JPM) (IMPACT) (set 1)", - "j6tbrdcla", "Thunderbirds Club (JPM) (IMPACT) (set 2)", - "j6tbrdclb", "Thunderbirds Club (JPM) (IMPACT) (set 3)", - "j6tbrdclc", "Thunderbirds Club (JPM) (IMPACT) (set 4)", - "j6tbrdcld", "Thunderbirds Club (JPM) (IMPACT) (set 5)", - "j6tbrdcle", "Thunderbirds Club (JPM) (IMPACT) (set 6)", - "j6tbrdclf", "Thunderbirds Club (JPM) (IMPACT) (set 7)", - "j6tbrdclg", "Thunderbirds Club (JPM) (IMPACT) (set 8)", - "j6tbrdclh", "Thunderbirds Club (JPM) (IMPACT) (set 9)", - "j6tbrdcli", "Thunderbirds Club (JPM) (IMPACT) (set 10)", - "j6tbrdclj", "Thunderbirds Club (JPM) (IMPACT) (set 11)", - "j6tbrdclk", "Thunderbirds Club (JPM) (IMPACT) (set 12)", - "j6tbrdcll", "Thunderbirds Club (JPM) (IMPACT) (set 13)", - "j6thril", "Thriller (Crystal) (IMPACT) (set 1)", - "j6thrila", "Thriller (Crystal) (IMPACT) (set 2)", - "j6tomb", "Tomb Raider (JPM) (IMPACT) (set 1)", - "j6tomba", "Tomb Raider (JPM) (IMPACT) (set 2)", - "j6tombb", "Tomb Raider (JPM) (IMPACT) (set 3)", - "j6tombc", "Tomb Raider (JPM) (IMPACT) (set 4)", - "j6tombd", "Tomb Raider (JPM) (IMPACT) (set 5)", - "j6tombe", "Tomb Raider (JPM) (IMPACT) (set 6)", - "j6tombf", "Tomb Raider (JPM) (IMPACT) (set 7)", - "j6tombg", "Tomb Raider (JPM) (IMPACT) (set 8)", - "j6topflg", "Top Flight (Ace) (IMPACT)", - "j6tqust", "Treasure Quest (Crystal) (IMPACT) (set 1)", - "j6tqusta", "Treasure Quest (Crystal) (IMPACT) (set 2)", - "j6tqustb", "Treasure Quest (Crystal) (IMPACT) (set 3)", - "j6tqustc", "Treasure Quest (Crystal) (IMPACT) (set 4)", - "j6tutti", "Tutti Frutti (Qps) (IMPACT)", - "j6twst", "Twister (Ace) (IMPACT) (set 1)", - "j6twsta", "Twister (Ace) (IMPACT) (set 2)", - "j6twstb", "Twister (Ace) (IMPACT) (set 3)", - "j6twstc", "Twister (Ace) (IMPACT) (set 4)", - "j6twstd", "Twister (Ace) (IMPACT) (set 5)", - "j6twstdt", "Twister (JPM) [Dutch] (IMPACT)", - "j6twste", "Twister (Ace) (IMPACT) (set 6)", - "j6twstf", "Twister (Ace) (IMPACT) (set 7)", - "j6twstg", "Twister (Ace) (IMPACT) (set 8)", - "j6twsth", "Twister (Ace) (IMPACT) (set 9)", - "j6twsti", "Twister (Ace) (IMPACT) (set 10)", - "j6twstj", "Twister (Ace) (IMPACT) (set 11)", - "j6untch", "Untouchables (JPM) (IMPACT) (set 1)", - "j6untcha", "Untouchables (JPM) (IMPACT) (set 2)", - "j6vindal", "Vindaloot (JPM) (IMPACT)", - "j6vivark", "Viva Rock Vegas (JPM) (IMPACT) (set 1)", - "j6vivarka", "Viva Rock Vegas (JPM) (IMPACT) (set 2)", - "j6vivarkb", "Viva Rock Vegas (JPM) (IMPACT) (set 3)", - "j6vivarkc", "Viva Rock Vegas (JPM) (IMPACT) (set 4)", - "j6vivarkd", "Viva Rock Vegas (JPM) (IMPACT) (set 5)", - "j6vivarke", "Viva Rock Vegas (JPM) (IMPACT) (set 6)", - "j6vivarkf", "Viva Rock Vegas (JPM) (IMPACT) (set 7)", - "j6vivarkg", "Viva Rock Vegas (JPM) (IMPACT) (set 8)", - "j6vivarkh", "Viva Rock Vegas (JPM) (IMPACT) (set 9)", - "j6vivarki", "Viva Rock Vegas (JPM) (IMPACT) (set 10)", - "j6vivarkj", "Viva Rock Vegas (JPM) (IMPACT) (set 11)", - "j6vivarkk", "Viva Rock Vegas (JPM) (IMPACT) (set 12)", - "j6vivrkc", "Viva Rock Vegas Club (JPM) (IMPACT) (set 1)", - "j6vivrkca", "Viva Rock Vegas Club (JPM) (IMPACT) (set 2)", - "j6vivrkcb", "Viva Rock Vegas Club (JPM) (IMPACT) (set 3)", - "j6wildw", "Wild West (Ace) (IMPACT) (set 1)", - "j6wildwa", "Wild West (Ace) (IMPACT) (set 2)", - "j6wildwb", "Wild West (Ace) (IMPACT) (set 3)", - "j6wildwc", "Wild West (Ace) (IMPACT) (set 4)", - "j6wildwd", "Wild West (Ace) (IMPACT) (set 5)", - "j6wildwe", "Wild West (Ace) (IMPACT) (set 6)", - "j6wildwf", "Wild West (Ace) (IMPACT) (set 7)", - "j6wildwg", "Wild West (Ace) (IMPACT) (set 8)", - "j6wizard", "Wizard Of Odds (JPM) (IMPACT) (set 1)", - "j6wizarda", "Wizard Of Odds (JPM) (IMPACT) (set 2)", - "j6wizardb", "Wizard Of Odds (JPM) (IMPACT) (set 3)", - "j6wizardc", "Wizard Of Odds (JPM) (IMPACT) (set 4)", - "j6wizardd", "Wizard Of Odds (JPM) (IMPACT) (set 5)", - "j6wizarde", "Wizard Of Odds (JPM) (IMPACT) (set 6)", - "j6wldkng", "Wild King Club (JPM) (IMPACT) (set 1)", - "j6wldknga", "Wild King Club (JPM) (IMPACT) (set 2)", - "j6wthing", "Wild Thing (Empire) (IMPACT) (set 1)", - "j6wthinga", "Wild Thing (Empire) (IMPACT) (set 2)", - "j6wthingb", "Wild Thing (Empire) (IMPACT) (set 3)", - "j7bmagic", "Black Magic (JPM)", - "j7bullio", "Bullionaire (Ace)", - "j7cexprs", "Cash Xpress (JPM)", - "j7clbmag", "Club Magic (JPM)", - "j7crztrl", "Crazy Trails (JPM)", - "j7fantaz", "Fantaztec (JPM)", - "j7kerchn", "Ker - Chinq (JPM)", - "j7r2roll", "Ready To Roll (JPM)", - "j7razzma", "Razzamataz (JPM) (set 1)", - "j7razzmaa", "Razzamataz (JPM) (set 2)", - "j7tubgld", "Turbo Gold (JPM)", - "j7wldwkd", "Wild 'N' Wicked (JPM)", - "j80alad", "Aladdin's Cave (PCP)", - "j80bac", "Bank A Coin (JPM) (SYSTEM80)", - "j80blbnk", "Blankity Bank (PCP) (SYSTEM80)", - "j80bounc", "Bouncer (JPM) (SYSTEM80)", - "j80fortr", "Fortune Trail (JPM)", - "j80frogh", "Frog Hop (JPM) (SYSTEM80)", - "j80fruit", "Fruit Snappa (JPM) (SYSTEM80)", - "j80golds", "Golden Steppa (JPM) (SYSTEM80)", - "j80hotln", "Hot Lines (JPM) (SYSTEM80)", - "j80mster", "Masterspy (Pcp)", - "j80myspn", "Mystery Spin (JPM) (SYSTEM80)", - "j80nudg2", "Nudge Double Up MkII (JPM) (SYSTEM80)", - "j80plsnd", "Plus Nudge (JPM)", - "j80rr", "Road Runner (JPM) (SYSTEM80, set 1)", - "j80rra", "Road Runner (JPM) (SYSTEM80, set 2)", - "j80supbk", "Superbank (JPM) (SYSTEM80)", - "j80supst", "Supa Steppa (JPM) (SYSTEM80)", - "j80topsp", "Top Sprint (JPM) (SYSTEM80)", - "j80topup", "Top Up (JPM) (SYSTEM80)", - "j80tumbl", "Tumble (JPM) (SYSTEM80)", - "j80wsprt", "Winsprint (JPM) (V4, 5x20p) (SYSTEM80)", - "j80wsprt2", "Winsprint (JPM) (V2, 10x10p) (SYSTEM80)", - "j80wsprt3", "Winsprint (JPM) (V3, 50p, 5 credits) (SYSTEM80)", - "j_ewnd20", "Each Way Nudger (Barcrest?, set 3, version 20?)", - "j_ewnda", "Each Way Nudger (Barcrest?, set 2)", - "j_ewnud", "Each Way Nudger (Barcrest?, set 1)", - "j_ews", "Each Way Shifter (Barcrest?, set 1, version 16)", - "j_ews8a", "Each Way Shifter (Barcrest?, set 2, version 8a)", - "j_luck2", "Lucky Twos?", - "j_luckac", "Lucky Aces (Unk)", - "j_nuddup", "Nudge Double Up (JPM SRU, set 1)", - "j_nuddup2", "Nudge Double Up (JPM SRU, set 2)", - "j_plus2", "Plus 2 (JPM)", - "j_super2", "Super 2 (JPM)", - "j_unk", "unknown SRU Game (JPM?)", - "jack", "Jack the Giantkiller (set 1)", - "jack2", "Jack the Giantkiller (set 2)", - "jack2opn", "Jacks to Open", - "jack3", "Jack the Giantkiller (set 3)", - "jackal", "Jackal (World, 8-way Joystick)", - "jackalj", "Tokushu Butai Jackal (Japan, 8-way Joystick)", - "jackalr", "Jackal (World, Rotary Joystick)", - "jackie", "Happy Jackie (v110U)", - "jackler", "Jackler (Jungler bootleg)", - "jackpool", "Jackpot Cards / Jackpot Pool (Italy)", - "jackrabt", "Jack Rabbit (set 1)", - "jackrabt2", "Jack Rabbit (set 2)", - "jackrabts", "Jack Rabbit (special)", - "jailbrek", "Jail Break", - "jailbrekb", "Jail Break (bootleg)", - "jajamaru", "Vs. Ninja Jajamaru Kun (Japan)", - "jambo", "Jambo! Safari (JPN, USA, EXP, KOR, AUS) (Rev A)", - "jamesb", "James Bond (Timed Play)", - "jamesb2", "James Bond (3/5-Ball)", - "janbari", "Mahjong Janjan Baribari (Japan)", - "jangou", "Jangou [BET] (Japan)", - "janjans1", "Lovely Pop Mahjong JangJang Shimasho (Japan)", - "janjans2", "Lovely Pop Mahjong JangJang Shimasho 2 (Japan)", - "jankenmn", "Janken Man Kattara Ageru", - "janoh", "Jan Oh (set 1)", - "janoha", "Jan Oh (set 2)", - "janptr96", "Janputer '96 (Japan)", - "janptrsp", "Janputer Special (Japan)", - "janputer", "New Double Bet Mahjong (bootleg of Janputer)", - "janshi", "Janshi", - "janshin", "Jyanshin Densetsu - Quest of Jongmaster", - "janshinp", "Mahjong Janshin Plus (Japan)", - "jansou", "Jansou (set 1)", - "jansoua", "Jansou (set 2)", - "jantotsu", "4nin-uchi Mahjong Jantotsu", - "jantouki", "Jong Tou Ki (Japan)", - "janyoup2", "Janyou Part II (ver 7.03, July 1 1983)", - "janyuki", "Jong Yu Ki (Japan)", - "jb_10b", "Jack*Bot (1.0B) (Belgium/Canada)", - "jb_10r", "Jack*Bot (1.0R)", - "jchan", "Jackie Chan - The Kung-Fu Master", - "jchan2", "Jackie Chan in Fists of Fire", - "jclub2", "Jockey Club II (newer hardware)", - "jclub2o", "Jockey Club II (older hardware)", - "jclub2ob", "Jockey Club II (older hardware, set 2)", - "jcross", "Jumping Cross", - "jd_l1", "Judge Dredd (L-1)", - "jd_l6", "Judge Dredd (L-6)", - "jd_l7", "Judge Dredd (L-7)", - "jdredd", "Judge Dredd (Rev C Dec. 17 1997)", - "jdreddb", "Judge Dredd (Rev B Nov. 26 1997)", - "jdreddp", "Judge Dredd (rev LA1, prototype)", - "jedi", "Return of the Jedi", - "jestmagi", "Jester Magic (Konami Endeavour)", - "jetfight", "Jet Fighter (Set1) [TTL]", - "jetfighta", "Jet Fighter (Set2) [TTL]", - "jetwave", "Jet Wave (EAB, Euro v1.04)", - "jetwavej", "Jet Wave (JAB, Japan v1.04)", - "jgakuen", "Shiritsu Justice Gakuen: Legion of Heroes (Japan 971117)", - "jigkmgri", "Jigoku Meguri (Japan)", - "jin", "Jin", - "jingbell", "Jingle Bell (Italy, V133I)", - "jingystm", "Jingi Storm - The Arcade (GDL-0037)", - "jitsupro", "Jitsuryoku!! Pro Yakyuu (Japan)", - "jituroku", "Jitsuroku Maru-chi Mahjong (Japan)", - "jjack", "Jumping Jack", - "jjparad2", "Jan Jan Paradise 2", - "jjparads", "Jan Jan Paradise", - "jjpoker", "Jackpot Joker Poker (set 1)", - "jjpokerb", "Jackpot Joker Poker (set 2)", - "jjsquawk", "J. J. Squawkers", - "jjsquawkb", "J. J. Squawkers (bootleg)", - "jjsquawkb2", "J. J. Squawkers (bootleg, Blandia Conversion)", - "jkrmast", "Joker Master", - "jleague", "The J.League 1994 (Japan)", - "jm_12b", "Johnny Mnemonic (1.2B) Belgium", - "jm_12r", "Johnny Mnemonic (1.2R)", - "jmpbreak", "Jumping Break", - "jnero", "Johnny Nero Action Hero", - "jngld_l2", "Jungle Lord (L-2)", - "jngolady", "Jangou Lady (Japan)", - "jockeyc", "Jockey Club", - "jockeygp", "Jockey Grand Prix (set 1)", - "jockeygpa", "Jockey Grand Prix (set 2)", - "joemac", "Tatakae Genshizin Joe & Mac (Japan ver 1)", - "joemacr", "Joe & Mac Returns (World, Version 1.1, 1994.05.27)", - "joemacra", "Joe & Mac Returns (World, Version 1.0, 1994.05.19)", - "jogakuen", "Mahjong Jogakuen (Japan)", - "joinem", "Joinem", - "jojo", "JoJo's Venture (USA 990128)", - "jojoba", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927)", - "jojoban", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927, NO CD)", - "jojobane", "JoJo's Bizarre Adventure (Euro 990927, NO CD)", - "jojobaner1", "JoJo's Bizarre Adventure (Euro 990913, NO CD)", - "jojobanr1", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913, NO CD)", - "jojobar1", "JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913)", - "jojoj", "JoJo no Kimyou na Bouken (Japan 990128)", - "jojojr1", "JoJo no Kimyou na Bouken (Japan 990108)", - "jojojr2", "JoJo no Kimyou na Bouken (Japan 981202)", - "jojon", "JoJo's Venture (Asia 990128, NO CD)", - "jojonr1", "JoJo's Venture (Asia 990108, NO CD)", - "jojonr2", "JoJo's Venture (Asia 981202, NO CD)", - "jojor1", "JoJo's Venture (USA 990108)", - "jojor2", "JoJo's Venture (USA 981202)", - "jokercrd", "Joker Card (Ver.A267BC, encrypted)", - "jokpoker", "Joker Poker (Version 16.03B)", - "jokpokera", "Joker Poker (Version 16.03BI 5-10-85, Joker Poker ICB 9-30-86)", - "jokpokerb", "Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86)", - "jokpokerc", "Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86)", - "jokrpokr", "Joker Poker", - "jokrwild", "Joker's Wild (encrypted)", - "jokrz_l3", "Jokerz! (L-3)", - "jokrz_l6", "Jokerz! (L-6)", - "jollycrd", "Jolly Card (Austrian)", - "jollyjgr", "Jolly Jogger", - "jolyc3x3", "Jolly Card (3x3 deal)", - "jolyc980", "Jolly Card Professional 2.0 (Spale Soft)", - "jolyccra", "Jolly Card (Croatian, set 1)", - "jolyccrb", "Jolly Card (Croatian, set 2)", - "jolycdab", "Jolly Card (Austrian, Fun World, bootleg)", - "jolycdev", "Jolly Card (Evona Electronic)", - "jolycdib", "Jolly Card (Italian, encrypted bootleg, set 1)", - "jolycdic", "Jolly Card (Italian, encrypted bootleg, set 2)", - "jolycdid", "Jolly Card (Italian, different colors, set 1)", - "jolycdie", "Jolly Card (Italian, different colors, set 2)", - "jolycdit", "Jolly Card (Italian, blue TAB board, encrypted)", - "jolycdsp", "Jolly Card (Spanish, blue TAB board, encrypted)", - "jolycmzs", "Jolly Card Professional 2.0 (MZS Tech)", - "jolyjokr", "Jolly Joker (98bet, set 1)", - "jolyjokra", "Jolly Joker (98bet, set 2)", - "jolyjokrb", "Jolly Joker (40bet, Croatian hack)", - "jolypark", "Jolly Park", - "jongbou", "Mahjong Block Jongbou (Japan)", - "jongkyo", "Jongkyo", - "jongtei", "Mahjong Jong-Tei (Japan, ver. NM532-01)", - "josvolly", "Joshi Volleyball", - "journey", "Journey", - "joust", "Joust (White/Green label)", - "joust2", "Joust 2 - Survival of the Fittest", - "joustr", "Joust (Solid Red label)", - "joustwr", "Joust (White/Red label)", - "joyfulr", "Joyful Road (Japan)", - "joyjoy", "Puzzled / Joy Joy Kid (NGM-021)(NGH-021)", - "joyman", "Joyman", - "jpark", "Jurassic Park (World)", - "jpark3", "Jurassic Park 3 (ver EBC)", - "jparkj", "Jurassic Park (Japan, Rev A, Deluxe)", - "jparkja", "Jurassic Park (Japan, Deluxe)", - "jparkjc", "Jurassic Park (Japan, Rev A, Conversion)", - "jpcoin", "Joker Poker (Coinmaster set 1)", - "jpcoin2", "Joker Poker (Coinmaster, Amusement Only)", - "jplstw20", "Lost World: Jurassic Park, The (2.00)", - "jplstw22", "Lost World: Jurassic Park, The (2.02)", - "jpopnics", "Jumping Pop (Nics, Korean bootleg of Plump Pop)", - "jptparty", "Jackpot Party (Russia)", - "jrking", "Junior King (bootleg of Donkey Kong Jr.)", - "jrpacman", "Jr. Pac-Man (11/9/83)", - "jrpacmanf", "Jr. Pac-Man (speedup hack)", - "jrpacmbl", "Jr. Pac-Man (Pengo hardware)", - "jsk", "Joryuu Syougi Kyoushitsu (Japan)", - "jspecter", "Jatre Specter (set 1)", - "jspecter2", "Jatre Specter (set 2)", - "jst_l2", "Joust (L-2)", - "jubileep", "Double-Up Poker (Jubilee)", - "juju", "JuJu Densetsu (Japan)", - "jujub", "JuJu Densetsu (Playmark bootleg)", - "jujuba", "JuJu Densetsu (Japan, bootleg)", - "jumpbug", "Jump Bug", - "jumpbugb", "Jump Bug (bootleg)", - "jumpcoas", "Jump Coaster", - "jumpcoast", "Jump Coaster (Taito)", - "jumping", "Jumping", - "jumpjkpt", "Jumping Jackpots (Russia) (Atronic)", - "jumpkids", "Jump Kids", - "jumppop", "Jumping Pop (set 1)", - "jumppope", "Jumping Pop (set 2)", - "jumpshot", "Jump Shot", - "jumpshotp", "Jump Shot Engineering Sample", - "junai", "Junai - Manatsu no First Kiss (Japan)", - "junai2", "Junai 2 - White Love Story (Japan)", - "jungleby", "Jungle Boy (bootleg)", - "jungleh", "Jungle Hunt (US)", - "junglehbr", "Jungle Hunt (Brazil)", - "junglek", "Jungle King (Japan)", - "junglekas", "Jungle King (alternate sound)", - "junglekj2", "Jungle King (Japan, earlier)", - "jungler", "Jungler", - "junglers", "Jungler (Stern Electronics)", - "junofrst", "Juno First", - "junofrstg", "Juno First (Gottlieb)", - "jupk_501", "Jurassic Park (5.01)", - "jupk_513", "Jurassic Park (5.13)", - "jupk_g51", "Jurassic Park (5.01 Germany)", - "jwildb52", "Joker's Wild (B52 system, set 1)", - "jwildb52a", "Joker's Wild (B52 system, set 2)", - "jwildb52h", "Joker's Wild (B52 system, Harrah's GFX)", - "jy_03", "Junk Yard (0.3)", - "jy_11", "Junk Yard (1.1)", - "jy_12", "Junk Yard (1.2)", - "jyangoku", "Jyangokushi: Haoh no Saihai (Japan 990527)", - "jzth", "Jue Zhan Tian Huang", - "kabukikl", "Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den", - "kabukiz", "Kabuki-Z (World)", - "kabukizj", "Kabuki-Z (Japan)", - "kageki", "Kageki (US)", - "kagekih", "Kageki (hack)", - "kagekij", "Kageki (Japan)", - "kaguya", "Mahjong Kaguyahime [BET] (Japan 880521)", - "kaguya2", "Mahjong Kaguyahime Sono2 [BET] (Japan 890829)", - "kaguya2f", "Mahjong Kaguyahime Sono2 Fukkokuban [BET] (Japan 010808)", - "kaiserkn", "Kaiser Knuckle (Ver 2.1O 1994/07/29)", - "kaiserknj", "Kaiser Knuckle (Ver 2.1J 1994/07/29)", - "kaitei", "Kaitei Takara Sagashi", - "kaiteids", "Kaitei Daisensou (Japan)", - "kaitein", "Kaitei Takara Sagashi (Namco license)", - "kaiunqz", "Kaiun Quiz (Japan, KW1/VER.A)", - "kakumei", "Mahjong Kakumei (Japan)", - "kakumei2", "Mahjong Kakumei 2 - Princess League (Japan)", - "kamakazi3", "Kamakazi III (superg hack)", - "kamenrid", "Masked Riders Club Battle Race", - "kamikaze", "Kamikaze", - "kamikcab", "Kamikaze Cabbie", - "kanatuen", "Kanatsuen no Onna [BET] (Japan 880905)", - "kangaroo", "Kangaroo", - "kangarooa", "Kangaroo (Atari)", - "kangaroob", "Kangaroo (bootleg)", - "kaos", "Kaos", - "karatblz", "Karate Blazers (World)", - "karatblzj", "Karate Blazers (Japan)", - "karatblzu", "Karate Blazers (US)", - "karatedo", "Karate Dou (Japan)", - "karatevs", "Taisen Karate Dou (Japan VS version)", - "karatour", "The Karate Tournament", - "karianx", "Karian Cross (Rev. 1.0)", - "karnov", "Karnov (US, rev 6)", - "karnova", "Karnov (US, rev 5)", - "karnovj", "Karnov (Japan)", - "karnovr", "Karnov's Revenge / Fighter's History Dynamite", - "karous", "Karous (GDL-0040)", - "kartduel", "Kart Duel (Japan, KTD1/VER.A)", - "kas89", "Kasino '89", - "kazan", "Ninja Kazan (World)", - "kbash", "Knuckle Bash", - "kbash2", "Knuckle Bash 2 (bootleg)", - "kbm", "Keyboardmania", - "kbm2nd", "Keyboardmania 2nd Mix", - "kbm3rd", "Keyboardmania 3rd Mix", - "kchamp", "Karate Champ (US)", - "kchampvs", "Karate Champ (US VS version, set 1)", - "kchampvs2", "Karate Champ (US VS version, set 2)", - "kdeadeye", "Dead Eye (GV054 UAA01)", - "kdynastg", "King of Dynast Gear (version 1.8)", - "keith", "Keith Courage In Alpha Zones", - "keithlcy", "Dramatic Adventure Quiz Keith & Lucy (Japan)", - "keks", "Keks (060328 World)", - "keks_2", "Keks (060403 World)", - "keks_2a", "Keks (bootleg, 060403, banking address hack)", - "keks_2b", "Keks (bootleg, 060403, banking address hack, changed version text)", - "keks_2c", "Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 1)", - "keks_2d", "Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 2)", - "keks_2e", "Keks (bootleg, 060403, banking address hack, payout percentage 60)", - "keks_2f", "Keks (bootleg, 060403, LOTTOGAME (I))", - "keks_2g", "Keks (bootleg, 060403, LOTOS KS01)", - "keks_3", "Keks (070119 Russia)", - "keks_3a", "Keks (bootleg, 070119, banking address hack set 1)", - "keks_3b", "Keks (bootleg, 070119, banking address hack set 2)", - "keks_4", "Keks (090604 Lottery)", - "keks_5", "Keks (090727 Entertainment)", - "keksa", "Keks (bootleg, 060328, banking address hack)", - "keksb", "Keks (bootleg, 060328, backdoor)", - "keksc", "Keks (bootleg, 060328, banking address hack, changed version text)", - "kengo", "Ken-Go", - "keroppi", "Kero Kero Keroppi's Let's Play Together (USA, Version 2.0)", - "keroppij", "Kero Kero Keroppi no Issyoni Asobou (Japan)", - "ket", "Ketsui: Kizuna Jigoku Tachi (2003/01/01. Master Ver.)", - "keta", "Ketsui: Kizuna Jigoku Tachi (2003/01/01 Master Ver.)", - "ketb", "Ketsui: Kizuna Jigoku Tachi (2003/01/01 Master Ver)", - "keyboard", "La Keyboard (GDS-0017)", - "kf10thep", "The King of Fighters 10th Anniversary Extra Plus (The King of Fighters 2002 bootleg)", - "kf2k2mp", "The King of Fighters 2002 Magic Plus (bootleg)", - "kf2k2mp2", "The King of Fighters 2002 Magic Plus II (bootleg)", - "kf2k2pla", "The King of Fighters 2002 Plus (bootleg set 2)", - "kf2k2pls", "The King of Fighters 2002 Plus (bootleg set 1)", - "kf2k3bl", "The King of Fighters 2003 (bootleg set 1)", - "kf2k3bla", "The King of Fighters 2003 (bootleg set 2)", - "kf2k3pcb", "The King of Fighters 2003 (Japan, JAMMA PCB)", - "kf2k3pl", "The King of Fighters 2004 Plus / Hero (The King of Fighters 2003 bootleg)", - "kf2k3upl", "The King of Fighters 2004 Ultra Plus (The King of Fighters 2003 bootleg)", - "kf2k5uni", "The King of Fighters 10th Anniversary 2005 Unique (The King of Fighters 2002 bootleg)", - "kftgoal", "Kick for the Goal", - "kgbird", "K.G. Bird (4VXFC5341, New Zealand, 5c)", - "kgbirda", "K.G. Bird (4VXFC5341, New Zealand, 10c)", - "kick", "Kick (upright)", - "kick4csh", "Kick '4' Cash", - "kickboy", "Kick Boy", - "kickc", "Kick (cocktail)", - "kicker", "Kicker", - "kickgoal", "Kick Goal", - "kickman", "Kickman (upright)", - "kicknrun", "Kick and Run (World)", - "kicknrunu", "Kick and Run (US)", - "kickoff", "Kick Off (Japan)", - "kickridr", "Kick Rider", - "kidniki", "Kid Niki - Radical Ninja (World)", - "kidnikiu", "Kid Niki - Radical Ninja (US)", - "kikaioh", "Choukou Senki Kikaioh (Japan 980914)", - "kikcubic", "Meikyu Jima (Japan)", - "kikcubicb", "Kickle Cubele", - "kikikai", "KiKi KaiKai", - "kikstart", "Kick Start - Wheelie King", - "killbld", "The Killing Blade (ver. 109, Chinese Board)", - "killbld104", "The Killing Blade (ver. 104)", - "killbldp", "The Killing Blade Plus (China, ver. 300)", - "killcom", "Killer Comet", - "kimbldhl", "Kimble Double HI-LO", - "kimblz80", "Kimble Double HI-LO (z80 version)", - "kingball", "King & Balloon (US)", - "kingballj", "King & Balloon (Japan)", - "kingdmgp", "Kingdom Grandprix", - "kingdrbb", "King Derby (Taiwan bootleg)", - "kingdrbb2", "King Derby (bootleg set 2)", - "kingdrby", "King Derby (1981)", - "kingofb", "King of Boxer (English)", - "kingpin", "Kingpin", - "kingrt66", "King of Route 66 (Rev A)", - "kingt_l1", "King Tut (Shuffle) (L-1)", - "kingtut", "King Tut (NSW, Australia)", - "kinniku", "Kinnikuman Muscle Grand Prix (KN1 Ver. A)", - "kinst", "Killer Instinct (v1.5d)", - "kinst13", "Killer Instinct (v1.3)", - "kinst14", "Killer Instinct (v1.4)", - "kinst2", "Killer Instinct 2 (v1.4)", - "kinst210", "Killer Instinct 2 (v1.0)", - "kinst211", "Killer Instinct 2 (v1.1)", - "kinst213", "Killer Instinct 2 (v1.3)", - "kinst2k3", "Killer Instinct 2 (v1.3k, upgrade kit)", - "kinst2k4", "Killer Instinct 2 (v1.4k, upgrade kit)", - "kinstb", "Killer Instinct (SNES bootleg)", - "kinstp", "Killer Instinct (proto v4.7)", - "kirameki", "Kirameki Star Road (Ver 2.10J 1997/08/29)", - "kirarast", "Ryuusei Janshi Kirara Star", - "kisekaeh", "Kisekae Hanafuda", - "kisekaem", "Kisekae Mahjong", - "kiss", "Kiss", - "kissp", "Kiss (prototype)", - "kittenk", "Kitten Kaboodle", - "kiwame", "Pro Mahjong Kiwame", - "kiwames", "Pro Mahjong Kiwame S (J 951020 V1.208)", - "kizuna", "Kizuna Encounter - Super Tag Battle / Fu'un Super Tag Battle", - "kizuna4p", "Kizuna Encounter - Super Tag Battle 4 Way Battle Version / Fu'un Super Tag Battle Special Version", - "kkotnoli", "Kkot No Li (Kill the Bees)", - "klax", "Klax (set 1)", - "klax2", "Klax (set 2)", - "klax3", "Klax (set 3)", - "klaxd", "Klax (Germany)", - "klaxj", "Klax (Japan)", - "klaxp1", "Klax (prototype set 1)", - "klaxp2", "Klax (prototype set 2)", - "klondkp", "KlonDike+", - "klxyj", "Kuai Le Xi You Ji", - "knckhead", "Knuckle Heads (World)", - "knckheadj", "Knuckle Heads (Japan)", - "knckheadjp", "Knuckle Heads (Japan, Prototype?)", - "kncljoe", "Knuckle Joe (set 1)", - "kncljoea", "Knuckle Joe (set 2)", - "kngtmare", "Knightmare (prototype)", - "knightb", "Knight Boy", - "knights", "Knights of the Round (World 911127)", - "knightsb", "Knights of the Round (bootleg)", - "knightsj", "Knights of the Round (Japan 911127, B-Board 91634B-2)", - "knightsja", "Knights of the Round (Japan 911127, B-Board 89625B-1)", - "knightsu", "Knights of the Round (USA 911127)", - "knockout", "Knock Out!! (bootleg?)", - "knpuzzle", "Kotoba no Puzzle Mojipittan (Japan, KPM1 Ver.A)", - "kod", "The King of Dragons (World 910805)", - "kodb", "The King of Dragons (bootleg)", - "kodj", "The King of Dragons (Japan 910805, B-Board 90629B-3)", - "kodja", "The King of Dragons (Japan 910805, B-Board 89625B-1)", - "kodr1", "The King of Dragons (World 910711)", - "kodu", "The King of Dragons (USA 910910)", - "kof10th", "The King of Fighters 10th Anniversary (The King of Fighters 2002 bootleg)", - "kof2000", "The King of Fighters 2000 (NGM-2570) (NGH-2570)", - "kof2000n", "The King of Fighters 2000 (not encrypted)", - "kof2001", "The King of Fighters 2001 (NGM-262?)", - "kof2001h", "The King of Fighters 2001 (NGH-2621)", - "kof2002", "The King of Fighters 2002 (NGM-2650)(NGH-2650)", - "kof2002b", "The King of Fighters 2002 (bootleg)", - "kof2003", "The King of Fighters 2003 (NGM-2710)", - "kof2003h", "The King of Fighters 2003 (NGH-2710)", - "kof2k4se", "The King of Fighters Special Edition 2004 (The King of Fighters 2002 bootleg)", - "kof94", "The King of Fighters '94 (NGM-055)(NGH-055)", - "kof95", "The King of Fighters '95 (NGM-084)", - "kof95a", "The King of Fighters '95 (NGM-084), alternate board", - "kof95h", "The King of Fighters '95 (NGH-084)", - "kof96", "The King of Fighters '96 (NGM-214)", - "kof96h", "The King of Fighters '96 (NGH-214)", - "kof97", "The King of Fighters '97 (NGM-2320)", - "kof97h", "The King of Fighters '97 (NGH-2320)", - "kof97k", "The King of Fighters '97 (Korean release)", - "kof97oro", "The King of Fighters '97 Oroshi Plus 2003 (bootleg)", - "kof97pls", "The King of Fighters '97 Plus (bootleg)", - "kof98", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (NGM-2420)", - "kof98a", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (NGM-2420, alternate board)", - "kof98h", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (NGH-2420)", - "kof98k", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (Korean board)", - "kof98ka", "The King of Fighters '98 - The Slugfest / King of Fighters '98 - dream match never ends (Korean board 2)", - "kof98um", "The King of Fighters '98: Ultimate Match (v1.00)", - "kof99", "The King of Fighters '99 - Millennium Battle (NGM-2510)", - "kof99e", "The King of Fighters '99 - Millennium Battle (earlier)", - "kof99h", "The King of Fighters '99 - Millennium Battle (NGH-2510)", - "kof99k", "The King of Fighters '99 - Millennium Battle (Korean release)", - "kof99p", "The King of Fighters '99 - Millennium Battle (prototype)", - "kofnw", "The King of Fighters Neowave", - "kofnwj", "The King of Fighters Neowave (Japan)", - "koftball", "King of Football", - "kofxi", "The King of Fighters XI", - "kog", "King of Gladiator (The King of Fighters '97 bootleg)", - "koikoi", "Koi Koi Part 2", - "koikois", "Koi Koi Shimasho", - "koikois2", "Koi Koi Shimasho 2 - Super Real Hanafuda (Japan)", - "koinomp", "Mahjong Koi no Magic Potion (Japan)", - "kok", "Povar / Sobrat' Buran / Agroprom (Arcade multi-game bootleg of ZX Spectrum 'Cookie', 'Jetpac' & 'Pssst')", - "kokoroj2", "Kokoroji 2", - "kollon", "Kollon (V2.04J)", - "kollonc", "Kollon (V2.04JC)", - "konam80a", "Konami 80's AC Special (GC826 VER. AAA)", - "konam80j", "Konami 80's Gallery (GC826 VER. JAA)", - "konam80k", "Konami 80's AC Special (GC826 VER. KAA)", - "konam80s", "Konami 80's AC Special (GC826 VER. EAA)", - "konam80u", "Konami 80's AC Special (GC826 VER. UAA)", - "konami88", "Konami '88", - "konamigt", "Konami GT", - "konamigv", "Baby Phoenix/GV System", - "konamigx", "System GX", - "konek", "Konek-Gorbunok", - "kong", "Kong (Donkey Kong conversion on Galaxian hardware)", - "konotako", "Kono Tako (10021 Ver.A)", - "kontest", "Konami Test Board (GX800, Japan)", - "konzero", "Zero (Konami Endeavour)", - "kopunch", "KO Punch", - "korinai", "Mahjong-zukino Korinai Menmen (Japan 880425)", - "korinaim", "Mahjong-zukino Korinai Menmen [BET] (Japan 880920)", - "korokoro", "Koro Koro Quest (Japan)", - "koroleva", "Snezhnaja Koroleva", - "korosuke", "Korosuke Roller (Japan)", - "koshien", "Ah Eikou no Koshien (Japan)", - "kosmokil", "Kosmo Killer", - "kosteel", "Kings of Steel", - "kotbinsp", "Kkot Bi Nyo Special (Korea)", - "kotbinyo", "Kkot Bi Nyo (Korea)", - "kothello", "Kyuukyoku no Othello", - "kotm", "King of the Monsters (set 1)", - "kotm2", "King of the Monsters 2 - The Next Thing (NGM-039)(NGH-039)", - "kotm2p", "King of the Monsters 2 - The Next Thing (prototype)", - "kotmh", "King of the Monsters (set 2)", - "kouyakyu", "The Koukouyakyuh", - "kov", "Knights of Valour / Sangoku Senki (ver. 117)", - "kov100", "Knights of Valour / Sangoku Senki (ver. 100, Japanese Board)", - "kov115", "Knights of Valour / Sangoku Senki (ver. 115)", - "kov2", "Knights of Valour 2 / Sangoku Senki 2 (ver. 107, 102, 100HK)", - "kov2100", "Knights of Valour 2 / Sangoku Senki 2 (ver. 100, 100, 100HK)", - "kov2101", "Knights of Valour 2 / Sangoku Senki 2 (ver. 101, 101, 100HK)", - "kov2102", "Knights of Valour 2 / Sangoku Senki 2 (ver. 102, 101, 100HK)", - "kov2103", "Knights of Valour 2 / Sangoku Senki 2 (ver. 103, 101, 100HK)", - "kov2106", "Knights of Valour 2 / Sangoku Senki 2 (ver. 106, 102, 100KH)", - "kov2nl", "Knights of Valour 2 New Legend (V302, China)", - "kov2nlo", "Knights of Valour 2 New Legend (V301, China)", - "kov2p", "Knights of Valour 2 Plus - Nine Dragons / Sangoku Senki 2 Plus - Nine Dragons (ver. M205XX, 200, 100CN)", - "kov2p202", "Knights of Valour 2 Plus - Nine Dragons / Sangoku Senki 2 Plus - Nine Dragons (ver. M202XX, 200, 100CN)", - "kov2p204", "Knights of Valour 2 Plus - Nine Dragons / Sangoku Senki 2 Plus - Nine Dragons (ver. M204XX, 200, 100CN)", - "kov3", "Knights of Valour 3 (V102, China)", - "kov7sprt", "Knights of Valour - The Seven Spirits", - "kovlsjb", "Knights of Valour: Luan Shi Jie Ba / Sangoku Senki: Luan Shi Jie Ba (ver. 200CN, set 1)", - "kovlsjba", "Knights of Valour: Luan Shi Jie Ba / Sangoku Senki: Luan Shi Jie Ba (ver. 200CN, set 2)", - "kovlsqh", "Knights of Valour: Luan Shi Quan Huang / Sangoku Senki: Luan Shi Quan Huang (ver. 200CN)", - "kovlsqh2", "Knights of Valour: Luan Shi Quan Huang 2 / Sangoku Senki: Luan Shi Quan Huang 2 (ver. 200CN)", - "kovplus", "Knights of Valour Plus / Sangoku Senki Plus (ver. 119, set 1)", - "kovplusa", "Knights of Valour Plus / Sangoku Senki Plus (ver. 119, set 2)", - "kovqhsgs", "Knights of Valour: Quan Huang San Guo Special / Sangoku Senki: Quan Huang San Guo Special (ver. 303CN)", - "kovsgqyz", "Knights of Valour: SanGuo QunYingZhuan / Sangoku Senki: SanGuo QunYingZhuan (bootleg, set 1)", - "kovsgqyza", "Knights of Valour: SanGuo QunYingZhuan / Sangoku Senki: SanGuo QunYingZhuan (bootleg, set 2)", - "kovsgqyzb", "Knights of Valour: SanGuo QunYingZhuan / Sangoku Senki: SanGuo QunYingZhuan (bootleg, set 3)", - "kovsh", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (ver. 104, CN)", - "kovsh101", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (ver. 101, CN)", - "kovsh102", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (ver. 102, CN)", - "kovsh103", "Knights of Valour Super Heroes / Sangoku Senki Super Heroes (ver. 103, CN)", - "kovshp", "Knights of Valour Super Heroes Plus / Sangoku Senki Super Heroes Plus (ver. 101)", - "kovshpa", "Knights of Valour Super Heroes Plus / Sangoku Senki Super Heroes Plus (ver. 100)", - "kovshxas", "Knights of Valour: Aoshi Sanguo / Sangoku Senki: Aoshi Sanguo (ver. 202CN)", - "kovytzy", "Knights of Valour: Yi Tong Zhong Yuan / Sangoku Senki: Yi Tong Zhong Yuan (ver. 201, China)", - "kozure", "Kozure Ookami (Japan)", - "kpv106", "Kingpin (Pinball)", - "kram", "Kram (set 1)", - "kram2", "Kram (set 2)", - "kram3", "Kram (encrypted)", - "kroozr", "Kozmik Kroozr", - "krull", "Krull", - "krullp", "Krull (Pinball)", - "krzybowl", "Krazy Bowl", - "ksayakyu", "Kusayakyuu", - "ktiger", "Kyukyoku Tiger (Japan)", - "ktiger2", "Kyukyoku Tiger II (Ver 2.1J 1995/11/30)", - "kuhga", "Kuhga - Operation Code 'Vapor Trail' (Japan revision 3)", - "kungfub", "Kung-Fu Master (bootleg set 1)", - "kungfub2", "Kung-Fu Master (bootleg set 2)", - "kungfum", "Kung-Fu Master (World)", - "kungfumd", "Kung-Fu Master (US)", - "kungfur", "Kung-Fu Roushi", - "kungfut", "Kung-Fu Taikun (set 1)", - "kungfuta", "Kung-Fu Taikun (set 2)", - "kuniokun", "Nekketsu Kouha Kunio-kun (Japan)", - "kuniokunb", "Nekketsu Kouha Kunio-kun (Japan bootleg)", - "kurikint", "Kuri Kinton (World)", - "kurikinta", "Kuri Kinton (World, prototype?)", - "kurikintj", "Kuri Kinton (Japan)", - "kurikintu", "Kuri Kinton (US)", - "kurucham", "Kurukuru Chameleon (GDL-0034)", - "kurufev", "Kurukuru Fever", - "kurukuru", "Kuru Kuru Pyon Pyon (Japan)", - "kviper", "Konami Viper BIOS", - "kyros", "Kyros", - "kyrosj", "Kyros No Yakata (Japan)", - "kyuhito", "Kyukyoku no Hito [BET] (Japan 880824)", - "kyukaidk", "Kyuukai Douchuuki (Japan, new version (Rev B))", - "kyukaidko", "Kyuukai Douchuuki (Japan, old version)", - "kyustrkr", "Last Striker / Kyuukyoku no Striker", - "kz26", "KZ-26", - "labyrunr", "Labyrinth Runner (Japan)", - "labyrunrk", "Labyrinth Runner (World Ver. K)", - "lacrazyc", "Let's Attack Crazy Cross (GV027 Asia 1.10)", - "ladybgb2", "Lady Bug (bootleg set 2)", - "ladybug", "Lady Bug", - "ladybugb", "Lady Bug (bootleg set 1)", - "ladybugg", "Lady Bug (bootleg on Galaxian hardware)", - "ladyfrog", "Lady Frog", - "ladygolf", "Vs. Stroke & Match Golf (Ladies Version, set LG4 ?)", - "ladygolfe", "Vs. Stroke & Match Golf (Ladies Version, set LG4 E)", - "ladykill", "Lady Killer", - "ladylinr", "Lady Liner", - "ladyluck", "Lady Luck", - "ladylukt", "Lady Luck (Taito)", - "ladymstr", "Lady Master of Kung Fu", - "ladyshot", "Lady Sharpshooter", - "ladyshota", "Lady Sharpshooter (alternate set)", - "lagirl", "LA Girl", - "lagunar", "Laguna Racer", - "lah_110", "Last Action Hero (1.10)", - "lah_112", "Last Action Hero (1.12)", - "lah_l104", "Last Action Hero (1.04 Spain)", - "lah_l108", "Last Action Hero (1.08 Spain)", - "lamachin", "L.A. Machineguns", - "landbrk", "Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 3.02)", - "landbrka", "Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 3.03) (AT89c52 protected)", - "landgear", "Landing Gear (Ver 4.2 O)", - "landgeara", "Landing Gear (Ver 3.1 O)", - "landgearj", "Landing Gear (Ver 4.2 J)", - "landgearja", "Landing Gear (Ver 3.0 J)", - "landhigh", "Landing High Japan", - "landmakr", "Land Maker (Ver 2.01J 1998/06/01)", - "landmakrp", "Land Maker (Ver 2.02O 1998/06/02) (Prototype)", - "lans2004", "Lansquenet 2004 (Shock Troopers - 2nd Squad bootleg)", - "lapbylap", "Lap By Lap", - "laperla", "La Perla Nera (Ver 2.0)", - "laperlag", "La Perla Nera Gold (Ver 2.0)", - "laser", "Astro Laser (bootleg of Space Laser)", - "laser2k1", "Laser 2001 (Ver 1.2)", - "laserbas", "Laser Base (set 1)", - "laserbasa", "Laser Base (set 2)", - "laserbat", "Laser Battle", - "lasso", "Lasso", - "lasstixx", "Laser Strixx 2", - "lastbank", "Last Bank (v1.16)", - "lastbh", "The Last Bounty Hunter v0.06", - "lastblad", "The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGM-2340)", - "lastbladh", "The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGH-2340)", - "lastbld2", "The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (NGM-2430)(NGH-2430)", - "lastbrnx", "Last Bronx (Export, Revision A)", - "lastbrnxj", "Last Bronx (Japan, Revision A)", - "lastbrnxu", "Last Bronx (USA, Revision A)", - "lastday", "The Last Day (set 1)", - "lastdaya", "The Last Day (set 2)", - "lastduel", "Last Duel (US New Ver.)", - "lastduelb", "Last Duel (bootleg)", - "lastduelj", "Last Duel (Japan)", - "lastduelo", "Last Duel (US Old Ver.)", - "lastfght", "Last Fighting", - "lastfort", "Last Fortress - Toride", - "lastforte", "Last Fortress - Toride (Erotic, Rev C)", - "lastfortea", "Last Fortress - Toride (Erotic, Rev A)", - "lastfortg", "Last Fortress - Toride (German)", - "lastfortk", "Last Fortress - Toride (Korea)", - "lastlap", "Last Lap", - "lastmisn", "Last Mission (US revision 6)", - "lastmisnj", "Last Mission (Japan)", - "lastmisno", "Last Mission (US revision 5)", - "lastsold", "The Last Soldier (Korean release of The Last Blade)", - "laststar", "The Last Starfighter (prototype)", - "lastsurv", "Last Survivor (Japan, FD1094 317-0083)", - "lasvegas", "Las Vegas, Nevada", - "lazarian", "Lazarian", - "lazercmd", "Lazer Command", - "lazrlord", "Lazer Lord", - "lbeach", "Long Beach", - "lbgrande", "Libero Grande (Asia, LG2/VER.A)", - "lbgrandeja", "Libero Grande (Japan, LG1/VER.A)", - "lbowling", "League Bowling (NGM-019)(NGH-019)", - "lc_11", "League Champ (1.1)", - "lca", "Lights...Camera...Action!", - "lca2", "Lights...Camera...Action! (rev.2)", - "ldrink", "Lucky Drink (set 1)", - "ldrinka", "Lucky Drink (set 2)", - "ldrun", "Lode Runner (set 1)", - "ldrun2", "Lode Runner II - The Bungeling Strikes Back", - "ldrun3", "Lode Runner III - The Golden Labyrinth", - "ldrun3j", "Lode Runner III - Majin No Fukkatsu", - "ldrun4", "Lode Runner IV - Teikoku Karano Dasshutsu", - "ldruna", "Lode Runner (set 2)", - "le2", "Lethal Enforcers II: Gun Fighters (ver EAA)", - "le2j", "Lethal Enforcers II: The Western (ver JAA)", - "le2u", "Lethal Enforcers II: Gun Fighters (ver UAA)", - "leadang", "Lead Angle (Japan)", - "leader", "Leader", - "leaguemn", "Yakyuu Kakutou League-Man (Japan)", - "lectrono", "Lectronamo", - "ledstorm", "Led Storm (US)", - "ledstorm2", "Led Storm Rally 2011 (US)", - "legend", "Legend", - "legendb", "Legion (bootleg of Legend)", - "legendoh", "Legend of Heroes", - "legendos", "Legend of Success Joe / Ashita no Joe Densetsu", - "legion", "Legion - Spinner-87 (World ver 2.03)", - "legionna", "Legionnaire (World)", - "legionnau", "Legionnaire (US)", - "legiono", "Chouji Meikyuu Legion (Japan bootleg ver 1.05)", - "legofair", "Koukuu Kihei Monogatari - The Legend of Air Cavalry (Japan)", - "leking", "Le King", - "lemans24", "Le Mans 24 (Revision B)", - "lemmings", "Lemmings (US prototype)", - "lemnangl", "Mahjong Lemon Angel (Japan)", - "leprechn", "Leprechaun", - "leprechp", "Leprechaun (Pacific)", - "leprgld", "Leprechaun's Gold (Russia)", - "lethalen", "Lethal Enforcers (ver UAE, 11/19/92 15:04)", - "lethaleneab", "Lethal Enforcers (ver EAB, 10/14/92 19:53)", - "lethaleneae", "Lethal Enforcers (ver EAE, 11/19/92 16:24)", - "lethalenj", "Lethal Enforcers (ver JAD, 12/04/92 17:16)", - "lethalenua", "Lethal Enforcers (ver UAA, 08/17/92 21:38)", - "lethalenub", "Lethal Enforcers (ver UAB, 09/01/92 11:12)", - "lethalenux", "Lethal Enforcers (ver unknown, US, 08/06/92 15:11, hacked/proto?)", - "lethalj", "Lethal Justice", - "lethalth", "Lethal Thunder (World)", - "levers", "Levers", - "lghost", "Laser Ghost (World, FD1094 317-0166)", - "lghostu", "Laser Ghost (US, FD1094 317-0165)", - "lgp", "Laser Grand Prix", - "lgtnfght", "Lightning Fighters (World)", - "lgtnfghta", "Lightning Fighters (Asia)", - "lgtnfghtu", "Lightning Fighters (US)", - "lhaunt_10", "Lucky Haunter (090712 Entertainment)", - "lhaunt_11", "Lucky Haunter (100331 Entertainment)", - "lhaunt_2", "Lucky Haunter (030804 World)", - "lhaunt_4", "Lucky Haunter (031111 World)", - "lhaunt_4a", "Lucky Haunter (bootleg, 031111, backdoor)", - "lhaunt_5", "Lucky Haunter (040216 World)", - "lhaunt_5a", "Lucky Haunter (bootleg, 040216, backdoor)", - "lhaunt_6", "Lucky Haunter (040825 World)", - "lhaunt_6a", "Lucky Haunter (bootleg, 040825, backdoor)", - "lhaunt_6b", "Lucky Haunter (bootleg, 040825, VIDEO GAME-1 PB01)", - "lhaunt_6c", "Lucky Haunter (bootleg, 040825, changed version text)", - "lhaunt_6d", "Lucky Haunter (bootleg, 040825, LOTTOGAME (I))", - "lhaunt_6e", "Lucky Haunter (bootleg, 040825, LOTO PROGRAM V-LH2)", - "lhaunt_6f", "Lucky Haunter (bootleg, 040825, LOTOS PB01)", - "lhaunt_7", "Lucky Haunter (070402 Russia)", - "lhaunt_8", "Lucky Haunter (070604 Russia)", - "lhb", "Long Hu Bang (China, V035C)", - "lhb2", "Long Hu Bang II (Hong Kong, V185H)", - "lhbv33c", "Long Hu Bang (China, V033C)", - "lhzb2", "Mahjong Long Hu Zheng Ba 2 (set 1)", - "lhzb2a", "Mahjong Long Hu Zheng Ba 2 (VS221M)", - "lhzb3", "Long Hu Zheng Ba 3", - "lhzb4", "Long Hu Zheng Ba 4", - "liberate", "Liberation", - "liberateb", "Liberation (bootleg)", - "liberatr", "Liberator (set 1)", - "liberatr2", "Liberator (set 2)", - "liblrabl", "Libble Rabble", - "lifefrce", "Lifeforce (US)", - "lifefrcej", "Lifeforce (Japan)", - "lightbr", "Light Bringer (Ver 2.2O 1994/04/08)", - "lightbrj", "Light Bringer (Ver 2.1J 1994/02/18)", - "lightnin", "Lightning", - "lindbios", "Sega Lindbergh Bios", - "linkypip", "Linky Pipe", - "liquidk", "Liquid Kids (World)", - "liquidku", "Liquid Kids (US)", - "lithero", "Little Hero", - "littlerb", "Little Robin", - "livegal", "Live Gal (Japan 870530)", - "livequiz", "Live Quiz Show", - "lizard", "Pinball Lizard", - "lizwiz", "Lizard Wizard", - "lkage", "The Legend of Kage", - "lkageb", "The Legend of Kage (bootleg set 1)", - "lkageb2", "The Legend of Kage (bootleg set 2)", - "lkageb3", "The Legend of Kage (bootleg set 3)", - "lkageo", "The Legend of Kage (older)", - "lkageoo", "The Legend of Kage (oldest)", - "llander", "Lunar Lander (rev 2)", - "llander1", "Lunar Lander (rev 1)", - "llcharm", "Lucky Lady's Charm (set 1)", - "llcharma", "Lucky Lady's Charm (set 2)", - "lluck3x3", "Lucky Lady (3x3 deal)", - "lluck4x1", "Lucky Lady (4x1 aces)", - "lnc", "Lock'n'Chase", - "lockload", "Locked 'n Loaded (World)", - "lockloadu", "Locked 'n Loaded (US, Dragon Gun conversion)", - "lockon", "Lock-On (rev. E)", - "lockonc", "Lock-On (rev. C)", - "locoboot", "Loco-Motion (bootleg)", - "locomotn", "Loco-Motion", - "locomotp", "Locomotion", - "loderndf", "Lode Runner - The Dig Fight (ver. B)", - "loderndfa", "Lode Runner - The Dig Fight (ver. A)", - "loffire", "Line of Fire / Bakudan Yarou (World, FD1094 317-0136)", - "loffirej", "Line of Fire / Bakudan Yarou (Japan, FD1094 317-0134)", - "loffireu", "Line of Fire / Bakudan Yarou (US, FD1094 317-0135)", - "logger", "Logger", - "logicpr2", "Logic Pro 2 (Japan)", - "logicpro", "Logic Pro (Japan)", - "loht", "Legend of Hero Tonma", - "lohtb", "Legend of Hero Tonma (unprotected bootleg)", - "lohtb2", "Legend of Hero Tonma (Japan, bootleg with i8751)", - "lohtj", "Legend of Hero Tonma (Japan)", - "lol", "Life of Luxury (Russia)", - "lomakai", "Legend of Makai (World)", - "looper", "Looper", - "looping", "Looping", - "loopingv", "Looping (Venture Line license, set 1)", - "loopingva", "Looping (Venture Line license, set 2)", - "lordgun", "Lord of Gun (USA)", - "lordofk", "The Lord of King (Japan)", - "lortium", "Lortium", - "lostspc", "Lost in Space", - "losttomb", "Lost Tomb (easy)", - "losttombh", "Lost Tomb (hard)", - "lostwrld", "Lost Worlds (Japan)", - "lostwrldo", "Lost Worlds (Japan Old Ver.)", - "lostwrlp", "Lost World", - "lostwsga", "The Lost World (Revision A)", - "lotlot", "Lot Lot", - "lotr", "Lord Of The Rings, The (10.00)", - "lotr401", "Lord Of The Rings, The (4.01)", - "lotr410", "Lord Of The Rings, The (4.10)", - "lotr5", "Lord Of The Rings, The (5.00)", - "lotr501", "Lord Of The Rings, The (5.01)", - "lotr6", "Lord Of The Rings, The (6.00)", - "lotr7", "Lord Of The Rings, The (7.00)", - "lotr8", "Lord Of The Rings, The (8.00)", - "lotr9", "Lord Of The Rings, The (9.00)", - "lotr_fr", "Lord Of The Rings, The (10.00 France)", - "lotr_fr401", "Lord Of The Rings, The (4.01 France)", - "lotr_fr410", "Lord Of The Rings, The (4.10 France)", - "lotr_fr5", "Lord Of The Rings, The (5.0 France)", - "lotr_fr501", "Lord Of The Rings, The (5.01 France)", - "lotr_fr6", "Lord Of The Rings, The (6.0 France)", - "lotr_fr7", "Lord Of The Rings, The (7.0 France)", - "lotr_fr8", "Lord Of The Rings, The (8.0 France)", - "lotr_fr9", "Lord Of The Rings, The (9.0 France)", - "lotr_gr", "Lord Of The Rings, The (10.00 Germany)", - "lotr_gr401", "Lord Of The Rings, The (4.01 Germany)", - "lotr_gr410", "Lord Of The Rings, The (4.10 Germany)", - "lotr_gr5", "Lord Of The Rings, The (5.0 Germany)", - "lotr_gr501", "Lord Of The Rings, The (5.01 Germany)", - "lotr_gr6", "Lord Of The Rings, The (6.0 Germany)", - "lotr_gr7", "Lord Of The Rings, The (7.0 Germany)", - "lotr_gr8", "Lord Of The Rings, The (8.0 Germany)", - "lotr_gr9", "Lord Of The Rings, The (9.0 Germany)", - "lotr_it", "Lord Of The Rings, The (10.00 Italy)", - "lotr_it401", "Lord Of The Rings, The (4.01 Italy)", - "lotr_it410", "Lord Of The Rings, The (4.10 Italy)", - "lotr_it5", "Lord Of The Rings, The (5.0 Italy)", - "lotr_it501", "Lord Of The Rings, The (5.01 Italy)", - "lotr_it6", "Lord Of The Rings, The (6.0 Italy)", - "lotr_it7", "Lord Of The Rings, The (7.0 Italy)", - "lotr_it8", "Lord Of The Rings, The (8.0 Italy)", - "lotr_it9", "Lord Of The Rings, The (9.0 Italy)", - "lotr_le", "Lord Of The Rings, The (10.02 Limited Edition)", - "lotr_sp", "Lord Of The Rings, The (10.00 Spain)", - "lotr_sp401", "Lord Of The Rings, The (4.01 Spain)", - "lotr_sp5", "Lord Of The Rings, The (5.0 Spain)", - "lotr_sp501", "Lord Of The Rings, The (5.01 Spain)", - "lotr_sp6", "Lord Of The Rings, The (6.0 Spain)", - "lotr_sp7", "Lord Of The Rings, The (7.0 Spain)", - "lotr_sp8", "Lord Of The Rings, The (8.0 Spain)", - "lotr_sp9", "Lord Of The Rings, The (9.0 Spain)", - "lottof2", "Lotto Fun 2", - "lottofun", "Lotto Fun", - "lovehous", "Mahjong Love House [BET] (Japan 901024)", - "loverboy", "Lover Boy", - "lovewin", "Love To Win (Russia)", - "lpadv", "Logic Pro Adventure (Japan)", - "lrescue", "Lunar Rescue", - "lrescuem", "Lunar Rescue (Model Racing bootleg, set 1)", - "lrescuem2", "Lunar Rescue (Model Racing bootleg, set 2)", - "lresort", "Last Resort", - "lsasquad", "Land Sea Air Squad / Riku Kai Kuu Saizensen", - "lsrcu_l2", "Laser Cue (L-2)", - "lsrquiz", "Laser Quiz Italy", - "lsrquiz2", "Laser Quiz 2 Italy (v1.0)", - "ltcasinn", "Little Casino (newer)", - "ltcasino", "Little Casino (older)", - "luckboom", "Lucky Boom", - "luckboomh", "Lucky Boom (Hard Times hardware)", - "luckfoun", "Lucky Fountain (Konami Endeavour)", - "luckgrln", "Lucky Girl (newer Z180 based hardware)", - "luckshel", "Lucky Shell (Russia) (Extrema)", - "lucky74", "Lucky 74 (bootleg, set 1)", - "lucky74a", "Lucky 74 (bootleg, set 3)", - "lucky74b", "Lucky 74 (bootleg, set 2)", - "lucky8", "New Lucky 8 Lines (set 1, W-4)", - "lucky8a", "New Lucky 8 Lines (set 2, W-4)", - "lucky8b", "New Lucky 8 Lines (set 3, W-4, extended gfx)", - "lucky8c", "New Lucky 8 Lines (set 4, W-4)", - "lucky8d", "New Lucky 8 Lines (set 5, W-4, main 40%, d-up 60%)", - "lucky8e", "New Lucky 8 Lines (set 6, W-4, main 40%, d-up 60%)", - "lucky_l1", "Lucky Seven (L-1)", - "luckygrl", "Lucky Girl? (Wing)", - "luckylad", "Lucky Lady (Wing, encrypted)", - "luckyrlt", "Lucky Roulette Plus (6-players, Spanish)", - "luckywld", "Lucky & Wild", - "luckywldj", "Lucky & Wild (Japan)", - "luctoday", "Lucky Today", - "lunapark", "Luna Park (set 1, dual program)", - "lunaparkb", "Luna Park (set 2, dual program)", - "lunaparkc", "Luna Park (set 3)", - "lunarba1", "Lunar Battle (prototype, earlier)", - "lunarbat", "Lunar Battle (prototype, later)", - "lunelle", "Lunelle", - "lupin3", "Lupin III (set 1)", - "lupin3a", "Lupin III (set 2)", - "lupinsho", "Lupin The Third - The Shooting (GDS-0018)", - "luplup", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 3.0 / 990128)", - "luplup29", "Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 2.9 / 990108)", - "luptype", "Lupin The Third - The Typing (Rev A) (GDS-0021A)", - "lvcards", "Lovely Cards", - "lvgirl94", "Las Vegas Girl (Girl '94)", - "lvpoker", "Lovely Poker [BET]", - "lw3_200", "Lethal Weapon 3 (2.00)", - "lw3_205", "Lethal Weapon 3 (2.05)", - "lw3_207", "Lethal Weapon 3 (2.07 Canada)", - "lw3_208", "Lethal Weapon 3 (2.08)", - "lwar_a83", "Laser War (8.3)", - "lwar_e90", "Laser War (9.0 Europe)", - "lwings", "Legendary Wings (US set 1)", - "lwings2", "Legendary Wings (US set 2)", - "lwingsb", "Legendary Wings (bootleg)", - "lwingsj", "Ares no Tsubasa (Japan)", - "lzbal_l2", "Laser Ball (L-2)", - "lzbal_t2", "Laser Ball (T-2)", - "m1albsq", "Albert Square (Maygay) v4.1 (M1A/B)", - "m1albsq1", "Albert Square (Maygay) v1.1 (M1A/B)", - "m1albsq1p", "Albert Square (Maygay) v1.1 (Protocol) (M1A/B)", - "m1albsq2", "Albert Square (Maygay) v2.2 (M1A/B)", - "m1albsq3", "Albert Square (Maygay) v3.0 (M1A/B)", - "m1albsqp", "Albert Square (Maygay) v4.1 (Protocol) (M1A/B)", - "m1alley", "Alley Cat (Maygay) (M1A/B)", - "m1apollo", "Apollo 9 (Maygay) vA.1 (Newer) (M1A/B)", - "m1apollo11", "Apollo 9 (Maygay) v11? (M1A/B)", - "m1apollo11b", "Apollo 9 (Maygay) v11? (BwB Rebuild) (M1A/B)", - "m1apollo11p", "Apollo 9 (Maygay) v11? (Protocol) (M1A/B)", - "m1apollo2", "Apollo 9 (Maygay) v2.1 (M1A/B)", - "m1apollo2p", "Apollo 9 (Maygay) v2.1 (Protocol) (M1A/B)", - "m1apollo3", "Apollo 9 (Maygay) v3.1 (M1A/B)", - "m1apollo3p", "Apollo 9 (Maygay) v3.1 (Protocol) (M1A/B)", - "m1apollo4", "Apollo 9 (Maygay) v4.1 (Newer) (M1A/B)", - "m1apollo4o", "Apollo 9 (Maygay) v4.1 (Older, Token)(M1A/B)", - "m1apollo4p", "Apollo 9 (Maygay) v4.1 (Newer) (Protocol) (M1A/B)", - "m1apollo5", "Apollo 9 (Maygay) v5.1 (M1A/B)", - "m1apollo5p", "Apollo 9 (Maygay) v5.1 (Protocol) (M1A/B)", - "m1apollo7", "Apollo 9 (Maygay) v7.1 (M1A/B)", - "m1apollo7p", "Apollo 9 (Maygay) v7.1 (Protocol) (M1A/B)", - "m1apollo8", "Apollo 9 (Maygay) v8.1 (M1A/B)", - "m1apollo8p", "Apollo 9 (Maygay) v8.1 (Protocol) (M1A/B)", - "m1apollo9", "Apollo 9 (Maygay) v9.1 (M1A/B)", - "m1apollo9p", "Apollo 9 (Maygay) v9.1 (Protocol) (M1A/B)", - "m1apolloa", "Apollo 9 (Maygay) vA.1 (Older) (M1A/B)", - "m1apolloao", "Apollo 9 (Maygay) vA.1 (Older, 15GBP) (M1A/B)", - "m1apolloap", "Apollo 9 (Maygay) vA.1 (Older) (Protocol) (M1A/B)", - "m1apolloh", "Apollo 9 (Maygay) vA.1 (Newer) (Hack?) (M1A/B)", - "m1apollop", "Apollo 9 (Maygay) vA.1 (Newer) (Protocol) (M1A/B)", - "m1atunk", "Random Runner (Avantime?)", - "m1bankbs", "Bank Buster Club (Maygay) v2.9 (M1A/B)", - "m1bankbso", "Bank Buster Club (Maygay) v2.8 (M1A/B)", - "m1bankbsp", "Bank Buster Club (Maygay) v2.9 (Protocol) (M1A/B)", - "m1bankrl", "Bank Roll (Maygay) v1.1 (M1A/B)", - "m1bankrl2p", "Bank Roll (Maygay) v2.1 (Protocol) (M1A/B)", - "m1bankrlp", "Bank Roll (Maygay) v1.1 (Protocol) (M1A/B)", - "m1bargn", "Bar-gain (Maygay) v7.1 (M1A/B)", - "m1bargnc", "Casino Bar-gain (Maygay) v5.1 (M1A/B)", - "m1bargncp", "Casino Bar-gain (Maygay) v5.1 (Protocol)(M1A/B)", - "m1bargnp", "Bar-gain (Maygay) v7.1 (Protocol) (M1A/B)", - "m1bghou", "Big Ghoulies (Gemini) (M1A/B) (set 1)", - "m1bghoua", "Big Ghoulies (Gemini) (M1A/B) (set 2)", - "m1bghoub", "Big Ghoulies (Gemini) (M1A/B) (set 3)", - "m1bghouc", "Big Ghoulies (Gemini) (M1A/B) (set 4)", - "m1bghoud", "Big Ghoulies (Gemini) (M1A/B) (set 5)", - "m1bghoue", "Big Ghoulies (Gemini) (M1A/B) (set 6)", - "m1bghouf", "Big Ghoulies (Gemini) (M1A/B) (set 7)", - "m1bghoug", "Big Ghoulies (Gemini) (M1A/B) (set 8)", - "m1bigdel", "Big Deal (Maygay) (M1A/B)", - "m1bignit", "Mike Reid's Big Night Out (Maygay) (M1A/B) (set 1)", - "m1bignita", "Mike Reid's Big Night Out (Maygay) (M1A/B) (set 2)", - "m1bignitb", "Mike Reid's Big Night Out (Maygay) (M1A/B) (set 3)", - "m1bignitc", "Mike Reid's Big Night Out (Maygay) (M1A/B) (set 4)", - "m1blkhol", "Black Hole (Dutch) (Maygay) (M1A/B)", - "m1bluemx", "Blue Max (Maygay) v2.1 (M1A/B)", - "m1bluemxp", "Blue Max (Maygay) v2.1 (Protocol) (M1A/B)", - "m1bondi", "Bondi Beach (Maygay) v1.1 (Newer) (M1A/B)", - "m1bondi1", "Bondi Beach (Maygay) v1.1 (M1A/B)", - "m1bondi1p", "Bondi Beach (Maygay) v1.1 (Protocol) (M1A/B)", - "m1bondi2", "Bondi Beach (Maygay) v2.1 (M1A/B)", - "m1bondi2p", "Bondi Beach (Maygay) v2.1 (Protocol) (M1A/B)", - "m1bondi2po", "Bondi Beach (Maygay) v2.1 (Older) (Protocol) (M1A/B)", - "m1bondi3", "Bondi Beach (Maygay) v3.1 (M1A/B)", - "m1bondi4", "Bondi Beach (Maygay) v4.1 (M1A/B)", - "m1bondi4p", "Bondi Beach (Maygay) v4.1 (Protocol) (M1A/B)", - "m1bondip", "Bondi Beach (Maygay) v1.1 (Newer) (Protocol) (M1A/B)", - "m1bountc", "Bounty Hunter Club (Maygay) v1.3 (M1A/B)", - "m1bountcp", "Bounty Hunter Club (Maygay) v1.3 (Protocol) (M1A/B)", - "m1calyps", "Calypso (Maygay) (M1A/B) (set 1)", - "m1calypsa", "Calypso (Maygay) (M1A/B) (set 2)", - "m1calypsb", "Calypso (Maygay) (M1A/B) (set 3)", - "m1casclb", "Casino Club (Maygay) v1.2 (M1A/B)", - "m1casclb1", "Casino Club (Maygay) v1.1 (M1A/B)", - "m1casclbp", "Casino Club (Maygay) v1.2 (Protocol) (M1A/B)", - "m1casgcl", "Casino Gambler Club (Maygay) v1.2 (M1A/B)", - "m1casgclp", "Casino Gambler Club (Maygay) v1.2 (Protocol) (M1A/B)", - "m1cashc", "Cash Classic (Maygay) (M1A/B) (set 1)", - "m1cashca", "Cash Classic (Maygay) (M1A/B) (set 2)", - "m1cashln", "Cash Lines (Maygay) (M1A/B)", - "m1casroy", "Casino Royale Club (Maygay) v1.2 (M1A/B)", - "m1casroy1", "Casino Royale Club (Maygay) v1.1 (M1A/B)", - "m1casroyp", "Casino Royale Club (Maygay) v1.2 (Protocol) (M1A/B)", - "m1chain", "Chain Reaction (Maygay) (M1A/B)", - "m1cik", "Cash Is King (Maygay) v11? (M1A/B)", - "m1cik11", "Cash Is King (Maygay) v1.1 (M1A/B)", - "m1cik11n", "Cash Is King (Maygay) v1.1 (alternate) (M1A/B)", - "m1cik11np", "Cash Is King (Maygay) v1.1 (alternate,Protocol) (M1A/B)", - "m1cik11p", "Cash Is King (Maygay) v1.1 (Protocol) (M1A/B)", - "m1cik12", "Cash Is King (Maygay) v1.2 (M1A/B)", - "m1cik21", "Cash Is King (Maygay) v2.1 (M1A/B)", - "m1cik21p", "Cash Is King (Maygay) v2.1 (Protocol) (M1A/B)", - "m1cik31", "Cash Is King (Maygay) v3.1 (M1A/B)", - "m1cik31p", "Cash Is King (Maygay) v3.1 (Protocol) (M1A/B)", - "m1cik41", "Cash Is King (Maygay) v4.1 (M1A/B)", - "m1cik41p", "Cash Is King (Maygay) v4.1 (Protocol) (M1A/B)", - "m1cik51", "Cash Is King (Maygay) v5.1 (M1A/B)", - "m1cik51o", "Cash Is King (Maygay) v5.1 (Older) (M1A/B)", - "m1cik51p", "Cash Is King (Maygay) v5.1 (Protocol) (M1A/B)", - "m1cikh", "Cash Is King (Maygay) v11? (Hack?) (M1A/B)", - "m1cikp", "Cash Is King (Maygay) v11? (Protocol) (M1A/B)", - "m1clbfvr", "Club Fever (Maygay) v1.1 (M1A/B)", - "m1clbfvrp", "Club Fever (Maygay) v1.1 (Protocol) (M1A/B)", - "m1cluecb", "Cluedo Club (Maygay) v3.1 (M1A/B)", - "m1cluecb1", "Cluedo Club (Maygay) v1.1 (M1A/B)", - "m1cluecb1p", "Cluedo Club (Maygay) v1.1 (Protocol) (M1A/B)", - "m1cluecb2", "Cluedo Club (Maygay) v2.1 (M1A/B)", - "m1cluecb2p", "Cluedo Club (Maygay) v2.1 (Protocol) (M1A/B)", - "m1cluecbp", "Cluedo Club (Maygay) v3.1 (Protocol) (M1A/B)", - "m1cluedo", "Cluedo (Maygay) v6.1 (M1A/B)", - "m1cluedo1", "Cluedo (Maygay) v1.1 (M1A/B)", - "m1cluedo1h", "Cluedo (Maygay) v1.1 (Hack?) (M1A/B)", - "m1cluedo1p", "Cluedo (Maygay) v1.1 (Protocol) (M1A/B)", - "m1cluedo3", "Cluedo (Maygay) v3.1 (M1A/B)", - "m1cluedo3h", "Cluedo (Maygay) v3.1 (Hack?) (M1A/B)", - "m1cluedo3p", "Cluedo (Maygay) v3.1 (Protocol) (M1A/B)", - "m1cluedo4", "Cluedo (Maygay) v4.1 (M1A/B)", - "m1cluedo4p", "Cluedo (Maygay) v4.1 (Protocol) (M1A/B)", - "m1cluedo5", "Cluedo (Maygay) v5.1 (M1A/B)", - "m1cluedo5p", "Cluedo (Maygay) v5.1 (Protocol) (M1A/B)", - "m1cluedob1", "Cluedo (Maygay/BwB) v1.1 (M1A/B)", - "m1cluedob1h", "Cluedo (Maygay/BwB) v1.1 (Hack?) (M1A/B)", - "m1cluedob1p", "Cluedo (Maygay/BwB) v1.1 (Protocol) (M1A/B)", - "m1cluedob2", "Cluedo (Maygay/BwB) v2.1 (M1A/B)", - "m1cluedob2h", "Cluedo (Maygay/BwB) v2.1 (Hack?) (M1A/B)", - "m1cluedob2p", "Cluedo (Maygay/BwB) v2.1 (Protocol) (M1A/B)", - "m1cluedoi", "Cluedo (Maygay) v7.2 (Isle of Man) (M1A/B)", - "m1cluedoip", "Cluedo (Maygay) v7.2 (Isle of Man) (Protocol) (M1A/B)", - "m1cluedon", "Cluedo (Maygay) v1.2 (Newer) (M1A/B)", - "m1cluedonp", "Cluedo (Maygay) v1.2 (Newer) (Protocol) (M1A/B)", - "m1cluedop", "Cluedo (Maygay) v6.1 (Protocol) (M1A/B)", - "m1cluesh", "Super Cluedo Showcase (Maygay) v1.2 (M1A/B)", - "m1cluesho", "Super Cluedo Showcase (Maygay) v1.2 (Older) (M1A/B)", - "m1clueshop", "Super Cluedo Showcase (Maygay) v1.2 (Older) (Protocol) (M1A/B)", - "m1clueshp", "Super Cluedo Showcase (Maygay) v1.2 (Protocol) (M1A/B)", - "m1cluess", "Cluedo Super Sleuth (Maygay) v2.3 (M1A/B)", - "m1cluessa", "Cluedo Super Sleuth (Maygay) v1.2 (Newer) (M1A/B)", - "m1cluessap", "Cluedo Super Sleuth (Maygay) v1.2 (Newer) (Protocol) (M1A/B)", - "m1cluessb", "Cluedo Super Sleuth (Maygay) v7.1 (Older) (M1A/B)", - "m1cluessbp", "Cluedo Super Sleuth (Maygay) v7.1 (Older) (Protocol) (M1A/B)", - "m1cluessc", "Cluedo Super Sleuth (Maygay) v6.1 (Older) (M1A/B)", - "m1cluesscp", "Cluedo Super Sleuth (Maygay) v6.1 (Older) (Protocol) (M1A/B)", - "m1cluessd", "Cluedo Super Sleuth (Maygay) v5.1 (Older) (M1A/B)", - "m1cluessdp", "Cluedo Super Sleuth (Maygay) v5.1 (Older) (Protocol) (M1A/B)", - "m1cluesse", "Cluedo Super Sleuth (Maygay) v2.1 (Older) (M1A/B)", - "m1cluessep", "Cluedo Super Sleuth (Maygay) v2.1 (Older) (Protocol) (M1A/B)", - "m1cluessf", "Cluedo Super Sleuth (Maygay) v1.1 (Older) (M1A/B)", - "m1cluessfp", "Cluedo Super Sleuth (Maygay) v1.1 (Older) (Protocol) (M1A/B)", - "m1cluessg", "Cluedo Super Sleuth (Maygay) v7.1 (15GBP Jackpot) (Older) (M1A/B)", - "m1cluessh", "Cluedo Super Sleuth (Maygay) v2.3 (Newer) (Hack) (M1A/B)", - "m1cluessi", "Cluedo Super Sleuth (Maygay) v2.1 (10GBP Jackpot) (Older) (M1A/B)", - "m1cluessj", "Cluedo Super Sleuth (Maygay) v2.3 (5GBP Jackpot) (Older) (M1A/B)", - "m1cluessk", "Cluedo Super Sleuth (Maygay) v1.2 (Older) (M1A/B)", - "m1cluessl", "Cluedo Super Sleuth (Maygay) v4.1 (Older) (M1A/B)", - "m1cluesslp", "Cluedo Super Sleuth (Maygay) v4.1 (Older) (Protocol) (M1A/B)", - "m1cluessm", "Cluedo Super Sleuth (Maygay) v3.1 (Older) (M1A/B)", - "m1cluessmp", "Cluedo Super Sleuth (Maygay) v3.1 (Older) (Protocol) (M1A/B)", - "m1cluessn", "Cluedo Super Sleuth (Maygay) v1.1 (10GBP Jackpot) (Older) (M1A/B)", - "m1cluesso", "Cluedo Super Sleuth (Maygay) v2.1 (Older, alternate) (M1A/B)", - "m1cluessop", "Cluedo Super Sleuth (Maygay) v2.1 (Older, alternate) (Protocol) (M1A/B)", - "m1cluessp", "Cluedo Super Sleuth (Maygay) v2.3 (Newer) (Protocol) (M1A/B)", - "m1cluessq", "Cluedo Super Sleuth (Maygay) v5.1 (Older, alternate) (M1A/B)", - "m1cluessqp", "Cluedo Super Sleuth (Maygay) v5.1 (Older, alternate) (Protocol) (M1A/B)", - "m1cluessr", "Cluedo Super Sleuth (Maygay) v3.1 (Older, alternate) (M1A/B)", - "m1cluessrp", "Cluedo Super Sleuth (Maygay) v3.1 (Older, alternate) (Protocol) (M1A/B)", - "m1cluesss", "Cluedo Super Sleuth (Maygay) v4.1? (Older, alternate) (M1A/B)", - "m1cluesssp", "Cluedo Super Sleuth (Maygay) v4.1? (Older, alternate) (Protocol) (M1A/B)", - "m1coderd", "Code Red Club (Maygay) v2.1 (M1A/B)", - "m1coderdp", "Code Red Club (Maygay) v2.1 (Protocol) (M1A/B)", - "m1coro", "Coronation Street (Maygay) (M1A/B)", - "m1coro10h1", "Coronation Street (Maygay) v1.0 (Hack 1) (M1A/B)", - "m1coro10h2", "Coronation Street (Maygay) v1.0 (Hack 2) (M1A/B)", - "m1coro10h3", "Coronation Street (Maygay) v1.0 (Hack 3) (M1A/B)", - "m1coro11n", "Coronation Street (Maygay) v1.1 (Newer) (M1A/B)", - "m1coro11np", "Coronation Street (Maygay) v1.1 (Newer) (Protocol) (M1A/B)", - "m1coro12a", "Coronation Street (Maygay) v1.2 (Newer, G?) (Alternate) (M1A/B)", - "m1coro12g", "Coronation Street (Maygay) v1.2 (Newer, G?) (M1A/B)", - "m1coro12gp", "Coronation Street (Maygay) v1.2 (Newer, G?) (Protocol) (M1A/B)", - "m1coro12n", "Coronation Street (Maygay) v1.2 (Newer) (M1A/B)", - "m1coro12np", "Coronation Street (Maygay) v1.2 (Newer) (Protocol) (M1A/B)", - "m1coro21n", "Coronation Street (Maygay) v2.1 (Newer) (M1A/B)", - "m1coro21np", "Coronation Street (Maygay) v2.1 (Newer) (Protocol) (M1A/B)", - "m1coro21v", "Coronation Street (Maygay) v2.1 (Multivend) (M1A/B)", - "m1coro21vp", "Coronation Street (Maygay) v2.1 (Multivend) (Protocol)(M1A/B)", - "m1coro22n", "Coronation Street (Maygay) v2.2 (Newer) (M1A/B)", - "m1coro30h", "Coronation Street (Maygay) v3.0 (Hack) (M1A/B)", - "m1coro31", "Coronation Street (Maygay) v3.1 (Older) (M1A/B)", - "m1coro31p", "Coronation Street (Maygay) v3.1 (Older) (Protocol) (M1A/B)", - "m1coro32g", "Coronation Street (Maygay) v3.2 (Newer, G?) (M1A/B)", - "m1coro32gh", "Coronation Street (Maygay) v3.2 (Newer, G?) (Hack) (M1A/B)", - "m1coro32n", "Coronation Street (Maygay) v3.2 (Newer) (M1A/B)", - "m1coro32np", "Coronation Street (Maygay) v3.2 (Newer) (Protocol) (M1A/B)", - "m1coro81", "Coronation Street (Maygay) v8.1 (M1A/B)", - "m1coro81p", "Coronation Street (Maygay) v8.1 (Protocol) (M1A/B)", - "m1corocb", "Coronation Street Club (Maygay) v2.1 (M1A/B)", - "m1corocb1", "Coronation Street Club (Maygay) v1.1 (M1A/B)", - "m1corocb1p", "Coronation Street Club (Maygay) v1.1 (Protocol)(M1A/B)", - "m1corocbp", "Coronation Street Club (Maygay) v2.1 (Protocol) (M1A/B)", - "m1corop", "Coronation Street (Maygay) (Protocol) (M1A/B)", - "m1cororr", "Coronation Street - Rovers Return (Maygay) (set 1) (M1A/B)", - "m1cororra", "Coronation Street - Rovers Return (Maygay) (set 1) (Alternate) (M1A/B)", - "m1cororrb", "Coronation Street - Rovers Return (Maygay) (set 2) (M1A/B)", - "m1cororrb1", "Coronation Street - Rovers Return (Maygay) (set 2) (Alternate) (M1A/B)", - "m1cororrbh", "Coronation Street - Rovers Return (Maygay) (set 2) (Hack) (M1A/B)", - "m1cororrbp", "Coronation Street - Rovers Return (Maygay) (set 2) (Protocol) (M1A/B)", - "m1cororrc", "Coronation Street - Rovers Return (Maygay) (set 3) (M1A/B)", - "m1cororrc1", "Coronation Street - Rovers Return (Maygay) (set 3) (Alternate 1) (M1A/B)", - "m1cororrc2", "Coronation Street - Rovers Return (Maygay) (set 3) (Alternate 2) (M1A/B)", - "m1cororrd", "Coronation Street - Rovers Return (Maygay) (set 4) (M1A/B)", - "m1cororrdp", "Coronation Street - Rovers Return (Maygay) (set 4) (Protocol) (M1A/B)", - "m1cororre", "Coronation Street - Rovers Return (Maygay) (set 5) (M1A/B)", - "m1cororrf", "Coronation Street - Rovers Return (Maygay) (set 6) (BW) (M1A/B)", - "m1cororrfp", "Coronation Street - Rovers Return (Maygay) (set 6) (BW) (Protocol) (M1A/B)", - "m1cororrg", "Coronation Street - Rovers Return (Maygay) (set 7) (M1A/B)", - "m1cororrgp", "Coronation Street - Rovers Return (Maygay) (set 7) (Protocol) (M1A/B)", - "m1cororrh", "Coronation Street - Rovers Return (Maygay) (set 8) (M1A/B)", - "m1cororri", "Coronation Street - Rovers Return (Maygay) (set 9) (M1A/B)", - "m1cororrip", "Coronation Street - Rovers Return (Maygay) (set 9) (Protocol) (M1A/B)", - "m1cororrj", "Coronation Street - Rovers Return (Maygay) (set 10) (M1A/B)", - "m1cororrjp", "Coronation Street - Rovers Return (Maygay) (set 10) (Protocol) (M1A/B)", - "m1cororrk", "Coronation Street - Rovers Return (Maygay) (set 11) (M1A/B)", - "m1cororrl", "Coronation Street - Rovers Return (Maygay) (set 12) (M1A/B)", - "m1cororrlp", "Coronation Street - Rovers Return (Maygay) (set 12) (Protocol) (M1A/B)", - "m1cororrp", "Coronation Street - Rovers Return (Maygay) (set 1) (Protocol) (M1A/B)", - "m1corosh", "Coronation Street Showcase (Maygay) v1.1 (M1A/B)", - "m1coroshp", "Coronation Street Showcase (Maygay) v1.1 (Protocol)(M1A/B)", - "m1criss", "Criss Cross Club (Maygay) (Dutch) (M1A/B)", - "m1crzco", "Crazy Cobra (Gemini) (M1A/B) (set 1)", - "m1crzcoa", "Crazy Cobra (Gemini) (M1A/B) (set 2)", - "m1crzcob", "Crazy Cobra (Gemini) (M1A/B) (set 3)", - "m1crzcoc", "Crazy Cobra (Gemini) (M1A/B) (set 4)", - "m1crzcod", "Crazy Cobra (Gemini) (M1A/B) (set 5)", - "m1crzcoe", "Crazy Cobra (Gemini) (M1A/B) (set 6)", - "m1digdel", "Diggers Delight (Global) (M1A/B) (set 1)", - "m1digdela", "Diggers Delight (Global) (M1A/B) (set 2)", - "m1dkong", "Donkey Kong (Maygay) v9.2 (M1A/B)", - "m1dkong11", "Donkey Kong (Maygay) v1.1 (M1A/B)", - "m1dkong11p", "Donkey Kong (Maygay) v1.1 (M1A/B) (Protocol?)", - "m1dkong21", "Donkey Kong (Maygay) v2.1 (Older) (M1A/B)", - "m1dkong21n", "Donkey Kong (Maygay) v2.1 (M1A/B)", - "m1dkong21p", "Donkey Kong (Maygay) v2.1 (Older) (Protocol) (M1A/B)", - "m1dkong31", "Donkey Kong (Maygay) v3.1 (M1A/B)", - "m1dkong31p", "Donkey Kong (Maygay) v3.1 (Protocol) (M1A/B)", - "m1dkong41", "Donkey Kong (Maygay) v4.1 (M1A/B)", - "m1dkong41p", "Donkey Kong (Maygay) v4.1 (Protocol) (M1A/B)", - "m1dkong51", "Donkey Kong (Maygay) v5.1 (M1A/B)", - "m1dkong51p", "Donkey Kong (Maygay) v5.1 (Protocol) (M1A/B)", - "m1dkong81", "Donkey Kong (Maygay) v8.1 (Older) (M1A/B)", - "m1dkong81n", "Donkey Kong (Maygay) v8.1 (M1A/B)", - "m1dkong81na", "Donkey Kong (Maygay) v8.1 (Alternate) (M1A/B)", - "m1dkong81np", "Donkey Kong (Maygay) v8.1 (Protocol) (M1A/B)", - "m1dkong81p", "Donkey Kong (Maygay) v8.1 (Older) (Protocol) (M1A/B)", - "m1dkong91", "Donkey Kong (Maygay) v9.1 (Older) (M1A/B)", - "m1dkong91a", "Donkey Kong (Maygay) v9.1 (Older) (Alternate) (M1A/B)", - "m1dkong91h1", "Donkey Kong (Maygay) v9.1 (Older) (Hack 1) (M1A/B)", - "m1dkong91h2", "Donkey Kong (Maygay) v9.1 (Older) (Hack 2) (M1A/B)", - "m1dkong91n", "Donkey Kong (Maygay) v9.1 (M1A/B)", - "m1dkong91na", "Donkey Kong (Maygay) v9.1 (Alternate) (M1A/B)", - "m1dkong91np", "Donkey Kong (Maygay) v9.1 (Protocol) (M1A/B)", - "m1dkong91p", "Donkey Kong (Maygay) v9.1 (Older) (Protocol) (M1A/B)", - "m1dkonga", "Donkey Kong (Maygay) v9.2 (Alternate) (M1A/B)", - "m1dkongp", "Donkey Kong (Maygay) v9.2 (Protocol) (M1A/B)", - "m1dm4ev", "Diamonds Are Forever Club (Maygay) v5.1 (M1A/B)", - "m1dm4ev11", "Diamonds Are Forever Club (Maygay) v1.1 (M1A/B)", - "m1dm4evp", "Diamonds Are Forever Club (Maygay) v5.1 (Protocol) n(M1A/B)", - "m1dmnhrt", "Diamond Hearts (Maygay) (M1A/B)", - "m1dxmono", "Deluxe Monopoly (Maygay) v5.1 (M1A/B)", - "m1dxmono11", "Deluxe Monopoly (Maygay) v1.1 (M1A/B)", - "m1dxmono11m", "Deluxe Monopoly (Maygay) v1.1 (Code M) (M1A/B)", - "m1dxmono11mb", "Deluxe Monopoly (Maygay) v1.1 (Code M, Alternate) (M1A/B)", - "m1dxmono11o", "Deluxe Monopoly (Maygay) v1.1 (Older) (M1A/B)", - "m1dxmono11p", "Deluxe Monopoly (Maygay) v1.1 (Protocol) (M1A/B)", - "m1dxmono12", "Deluxe Monopoly (Maygay) v1.2 (M1A/B)", - "m1dxmono12a", "Deluxe Monopoly (Maygay) v1.2 (Alternate) (M1A/B)", - "m1dxmono12n", "Deluxe Monopoly (Maygay) v1.2 (Newer) (M1A/B)", - "m1dxmono12p", "Deluxe Monopoly (Maygay) v1.2 (Protocol) (M1A/B)", - "m1dxmono21p", "Deluxe Monopoly (Maygay) v2.1 (Protocol) (M1A/B)", - "m1dxmono30h", "Deluxe Monopoly (Maygay) v3.0 (Hack) (M1A/B)", - "m1dxmono31b", "Deluxe Monopoly (Maygay) v3.1 (BwB set) (M1A/B)", - "m1dxmono31h", "Deluxe Monopoly (Maygay) v3.1 (Hack) (M1A/B)", - "m1dxmono31h2", "Deluxe Monopoly (Maygay) v3.1 (Alternate Hack) (M1A/B)", - "m1dxmono31p", "Deluxe Monopoly (Maygay) v3.1 (Protocol) (M1A/B)", - "m1dxmono51", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B)", - "m1dxmono51o", "Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B) (alt?)", - "m1dxmono51p", "Deluxe Monopoly (Maygay) v5.1 (Older) (Protocol) (M1A/B)", - "m1dxmonop", "Deluxe Monopoly (Maygay) v5.1 (Protocol) (M1A/B)", - "m1eastnd", "Eastenders (Maygay) (M1A/B) (set 1)", - "m1eastnd0", "Eastenders (Maygay) (M1A/B) (set 28)", - "m1eastnd1", "Eastenders (Maygay) (M1A/B) (set 29)", - "m1eastnd2", "Eastenders (Maygay) (M1A/B) (set 30)", - "m1eastnd3", "Eastenders (Maygay) (M1A/B) (set 31)", - "m1eastnd4", "Eastenders (Maygay) (M1A/B) (set 32)", - "m1eastnd5", "Eastenders (Maygay) (M1A/B) (set 33)", - "m1eastnd6", "Eastenders (Maygay) (M1A/B) (set 34)", - "m1eastnd7", "Eastenders (Maygay) (M1A/B) (set 35)", - "m1eastnd8", "Eastenders (Maygay) (M1A/B) (set 36)", - "m1eastnd9", "Eastenders (Maygay) (M1A/B) (set 37)", - "m1eastnda", "Eastenders (Maygay) (M1A/B) (set 2)", - "m1eastndaa", "Eastenders (Maygay) (M1A/B) (set 38)", - "m1eastndab", "Eastenders (Maygay) (M1A/B) (set 39)", - "m1eastndac", "Eastenders (Maygay) (M1A/B) (set 40)", - "m1eastndad", "Eastenders (Maygay) (M1A/B) (set 41)", - "m1eastndae", "Eastenders (Maygay) (M1A/B) (set 42)", - "m1eastndaf", "Eastenders (Maygay) (M1A/B) (set 43)", - "m1eastndb", "Eastenders (Maygay) (M1A/B) (set 3)", - "m1eastndc", "Eastenders (Maygay) (M1A/B) (set 4)", - "m1eastndd", "Eastenders (Maygay) (M1A/B) (set 5)", - "m1eastnde", "Eastenders (Maygay) (M1A/B) (set 6)", - "m1eastndf", "Eastenders (Maygay) (M1A/B) (set 7)", - "m1eastndg", "Eastenders (Maygay) (M1A/B) (set 8)", - "m1eastndh", "Eastenders (Maygay) (M1A/B) (set 9)", - "m1eastndi", "Eastenders (Maygay) (M1A/B) (set 10)", - "m1eastndj", "Eastenders (Maygay) (M1A/B) (set 11)", - "m1eastndk", "Eastenders (Maygay) (M1A/B) (set 12)", - "m1eastndl", "Eastenders (Maygay) (M1A/B) (set 13)", - "m1eastndn", "Eastenders (Maygay) (M1A/B) (set 15)", - "m1eastndp", "Eastenders (Maygay) (M1A/B) (set 17)", - "m1eastndq", "Eastenders (Maygay) (M1A/B) (set 18)", - "m1eastndr", "Eastenders (Maygay) (M1A/B) (set 19)", - "m1eastnds", "Eastenders (Maygay) (M1A/B) (set 20)", - "m1eastndt", "Eastenders (Maygay) (M1A/B) (set 21)", - "m1eastndu", "Eastenders (Maygay) (M1A/B) (set 22)", - "m1eastndv", "Eastenders (Maygay) (M1A/B) (set 23)", - "m1eastndw", "Eastenders (Maygay) (M1A/B) (set 24)", - "m1eastndx", "Eastenders (Maygay) (M1A/B) (set 25)", - "m1eastndy", "Eastenders (Maygay) (M1A/B) (set 26)", - "m1eastndz", "Eastenders (Maygay) (M1A/B) (set 27)", - "m1eastqv", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 1)", - "m1eastqv0", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 28)", - "m1eastqv1", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 29)", - "m1eastqv2", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 30)", - "m1eastqv3", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 31)", - "m1eastqv5", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 33)", - "m1eastqv6", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 34)", - "m1eastqv7", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 35)", - "m1eastqv8", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 36)", - "m1eastqva", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 2)", - "m1eastqvaa", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 38)", - "m1eastqvb", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 3)", - "m1eastqvc", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 4)", - "m1eastqvd", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 5)", - "m1eastqvf", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 7)", - "m1eastqvg", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 8)", - "m1eastqvh", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 9)", - "m1eastqvi", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 10)", - "m1eastqvj", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 11)", - "m1eastqvk", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 12)", - "m1eastqvl", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 13)", - "m1eastqvm", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 14)", - "m1eastqvn", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 15)", - "m1eastqvo", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 16)", - "m1eastqvp", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 17)", - "m1eastqvq", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 18)", - "m1eastqvr", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 19)", - "m1eastqvs", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 20)", - "m1eastqvt", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 21)", - "m1eastqvu", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 22)", - "m1eastqvv", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 23)", - "m1eastqvw", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 24)", - "m1eastqvx", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 25)", - "m1eastqvy", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 26)", - "m1eastqvz", "Eastenders - Queen Vic (Maygay) (M1A/B) (set 27)", - "m1expclb", "Explorer Club (Maygay) (M1A/B) (set 2)", - "m1expclba", "Explorer Club (Maygay) (M1A/B) (set 3)", - "m1fantfb", "Fantasy Football (Maygay) (M1A/B) (set 1)", - "m1fantfba", "Fantasy Football (Maygay) (M1A/B) (set 2)", - "m1fantfbb", "Fantasy Football (Maygay) (M1A/B) (set 3)", - "m1fantfbc", "Fantasy Football (Maygay) (M1A/B) (set 4)", - "m1fantfbd", "Fantasy Football (Maygay) (M1A/B) (set 5)", - "m1fantfbf", "Fantasy Football (Maygay) (M1A/B) (set 7)", - "m1fantfbg", "Fantasy Football (Maygay) (M1A/B) (set 8)", - "m1fantfbh", "Fantasy Football (Maygay) (M1A/B) (set 9)", - "m1fantfbj", "Fantasy Football (Maygay) (M1A/B) (set 11)", - "m1fantfbk", "Fantasy Football (Maygay) (M1A/B) (set 12)", - "m1fantfbl", "Fantasy Football (Maygay) (M1A/B) (set 13)", - "m1fight", "Fight Night (Maygay) (M1A/B) (set 1)", - "m1fighta", "Fight Night (Maygay) (M1A/B) (set 2)", - "m1fightb", "Fight Night (Maygay) (M1A/B) (set 3)", - "m1fightc", "Fight Night (Maygay) (M1A/B) (set 4)", - "m1fightd", "Fight Night (Maygay) (M1A/B) (set 5)", - "m1fighte", "Fight Night (Maygay) (M1A/B) (set 6)", - "m1fightg", "Fight Night (Maygay) (M1A/B) (set 8)", - "m1fighth", "Fight Night (Maygay) (M1A/B) (set 9)", - "m1fighti", "Fight Night (Maygay) (M1A/B) (set 10)", - "m1fightj", "Fight Night (Maygay) (M1A/B) (set 11)", - "m1fightk", "Fight Night (Maygay) (M1A/B) (set 12)", - "m1fightl", "Fight Night (Maygay) (M1A/B) (set 13)", - "m1fightm", "Fight Night (Maygay) (M1A/B) (set 14)", - "m1fightn", "Fight Night (Maygay) (M1A/B) (set 15)", - "m1fighto", "Fight Night (Maygay) (M1A/B) (set 16)", - "m1fightp", "Fight Night (Maygay) (M1A/B) (set 17)", - "m1fightq", "Fight Night (Maygay) (M1A/B) (set 18)", - "m1fightr", "Fight Night (Maygay) (M1A/B) (set 19)", - "m1fights", "Fight Night (Maygay) (M1A/B) (set 20)", - "m1fightt", "Fight Night (Maygay) (M1A/B) (set 21)", - "m1fightu", "Fight Night (Maygay) (M1A/B) (set 22)", - "m1fightv", "Fight Night (Maygay) (M1A/B) (set 23)", - "m1fightw", "Fight Night (Maygay) (M1A/B) (set 24)", - "m1fightx", "Fight Night (Maygay) (M1A/B) (set 25)", - "m1fivest", "Five Star (Dutch) (Maygay) (M1A/B)", - "m1frexpl", "Fruit Explosion (Maygay) (M1A/B) (set 1)", - "m1frexpla", "Fruit Explosion (Maygay) (M1A/B) (set 2)", - "m1frexplc", "Fruit Explosion (Maygay) (M1A/B) (set 4)", - "m1frexpld", "Fruit Explosion (Maygay) (M1A/B) (set 5)", - "m1frexple", "Fruit Explosion (Maygay) (M1A/B) (set 6)", - "m1frexplg", "Fruit Explosion (Maygay) (M1A/B) (set 8)", - "m1frexplh", "Fruit Explosion (Maygay) (M1A/B) (set 9)", - "m1frexpli", "Fruit Explosion (Maygay) (M1A/B) (set 10)", - "m1frexplj", "Fruit Explosion (Maygay) (M1A/B) (set 11)", - "m1frexplk", "Fruit Explosion (Maygay) (M1A/B) (set 12)", - "m1frexpll", "Fruit Explosion (Maygay) (M1A/B) (set 13)", - "m1frexplm", "Fruit Explosion (Maygay) (M1A/B) (set 14)", - "m1frexpln", "Fruit Explosion (Maygay) (M1A/B) (set 15)", - "m1frexplo", "Fruit Explosion (Maygay) (M1A/B) (set 16)", - "m1frexplp", "Fruit Explosion (Maygay) (M1A/B) (set 17)", - "m1frexplq", "Fruit Explosion (Maygay) (M1A/B) (set 18)", - "m1frexplr", "Fruit Explosion (Maygay) (M1A/B) (set 19)", - "m1frexpls", "Fruit Explosion (Maygay) (M1A/B) (set 20)", - "m1frexplt", "Fruit Explosion (Maygay) (M1A/B) (set 21)", - "m1frexplu", "Fruit Explosion (Maygay) (M1A/B) (set 22)", - "m1frexplv", "Fruit Explosion (Maygay) (M1A/B) (set 23)", - "m1glad", "Gladiators (Maygay) (M1A/B) (set 1)", - "m1glad0", "Gladiators (Maygay) (M1A/B) (set 28)", - "m1glad1", "Gladiators (Maygay) (M1A/B) (set 29)", - "m1glada", "Gladiators (Maygay) (M1A/B) (set 2)", - "m1gladb", "Gladiators (Maygay) (M1A/B) (set 3)", - "m1gladc", "Gladiators (Maygay) (M1A/B) (set 4)", - "m1gladd", "Gladiators (Maygay) (M1A/B) (set 5)", - "m1glade", "Gladiators (Maygay) (M1A/B) (set 6)", - "m1gladf", "Gladiators (Maygay) (M1A/B) (set 7)", - "m1gladg", "Gladiators (Maygay) (M1A/B) (set 8)", - "m1gladh", "Gladiators (Maygay) (M1A/B) (set 9)", - "m1gladj", "Gladiators (Maygay) (M1A/B) (set 11)", - "m1gladk", "Gladiators (Maygay) (M1A/B) (set 12)", - "m1gladl", "Gladiators (Maygay) (M1A/B) (set 13)", - "m1gladm", "Gladiators (Maygay) (M1A/B) (set 14)", - "m1gladn", "Gladiators (Maygay) (M1A/B) (set 15)", - "m1glado", "Gladiators (Maygay) (M1A/B) (set 16)", - "m1gladp", "Gladiators (Maygay) (M1A/B) (set 17)", - "m1gladq", "Gladiators (Maygay) (M1A/B) (set 18)", - "m1gladr", "Gladiators (Maygay) (M1A/B) (set 19)", - "m1glads", "Gladiators (Maygay) (M1A/B) (set 20)", - "m1gladt", "Gladiators (Maygay) (M1A/B) (set 21)", - "m1gladu", "Gladiators (Maygay) (M1A/B) (set 22)", - "m1gladv", "Gladiators (Maygay) (M1A/B) (set 23)", - "m1gladw", "Gladiators (Maygay) (M1A/B) (set 24)", - "m1gladx", "Gladiators (Maygay) (M1A/B) (set 25)", - "m1glady", "Gladiators (Maygay) (M1A/B) (set 26)", - "m1gladz", "Gladiators (Maygay) (M1A/B) (set 27)", - "m1gold10", "Golden 10 (German) (Maygay) (M1A/B)", - "m1goldng", "Golden Nugget Club (Maygay) (M1A/B) (set 1)", - "m1goldnga", "Golden Nugget Club (Maygay) (M1A/B) (set 2)", - "m1goldngb", "Golden Nugget Club (Maygay) (M1A/B) (set 3)", - "m1goldngc", "Golden Nugget Club (Maygay) (M1A/B) (set 4)", - "m1goldngd", "Golden Nugget Club (Maygay) (M1A/B) (set 5)", - "m1goldnge", "Golden Nugget Club (Maygay) (M1A/B) (set 6)", - "m1goldsv", "Gold & Silver (Maygay) (M1A/B) (set 1)", - "m1goldsva", "Gold & Silver (Maygay) (M1A/B) (set 2)", - "m1gresc", "Great Escape, The (Maygay) (M1A/B) (set 1)", - "m1gresca", "Great Escape, The (Maygay) (M1A/B) (set 2)", - "m1grescb", "Great Escape, The (Maygay) (M1A/B) (set 3)", - "m1grescc", "Great Escape, The (Maygay) (M1A/B) (set 4)", - "m1grescd", "Great Escape, The (Maygay) (M1A/B) (set 5)", - "m1gresce", "Great Escape, The (Maygay) (M1A/B) (set 6)", - "m1grescf", "Great Escape, The (Maygay) (M1A/B) (set 7)", - "m1grescg", "Great Escape, The (Maygay) (M1A/B) (set 8)", - "m1gresch", "Great Escape, The (Maygay) (M1A/B) (set 9)", - "m1gresci", "Great Escape, The (Maygay) (M1A/B) (set 10)", - "m1grescj", "Great Escape, The (Maygay) (M1A/B) (set 11)", - "m1gresck", "Great Escape, The (Maygay) (M1A/B) (set 12)", - "m1grescl", "Great Escape, The (Maygay) (M1A/B) (set 13)", - "m1grescm", "Great Escape, The (Maygay) (M1A/B) (set 14)", - "m1grescn", "Great Escape, The (Maygay) (M1A/B) (set 15)", - "m1gresco", "Great Escape, The (Maygay) (M1A/B) (set 16)", - "m1grescp", "Great Escape, The (Maygay) (M1A/B) (set 17)", - "m1grescq", "Great Escape, The (Maygay) (M1A/B) (set 18)", - "m1gskill", "Greek Skill (Hitech Amusement)", - "m1guvnor", "The Guvnor (Maygay) (M1A/B) (set 1)", - "m1guvnora", "The Guvnor (Maygay) (M1A/B) (set 2)", - "m1guvnorb", "The Guvnor (Maygay) (M1A/B) (set 3)", - "m1guvnorc", "The Guvnor (Maygay) (M1A/B) (set 4)", - "m1guvnord", "The Guvnor (Maygay) (M1A/B) (set 5)", - "m1guvnore", "The Guvnor (Maygay) (M1A/B) (set 6)", - "m1guvnorf", "The Guvnor (Maygay) (M1A/B) (set 7)", - "m1guvnorg", "The Guvnor (Maygay) (M1A/B) (set 8)", - "m1guvnorh", "The Guvnor (Maygay) (M1A/B) (set 9)", - "m1guvnori", "The Guvnor (Maygay) (M1A/B) (set 10)", - "m1guvnorj", "The Guvnor (Maygay) (M1A/B) (set 11)", - "m1guvnork", "The Guvnor (Maygay) (M1A/B) (set 12)", - "m1guvnorl", "The Guvnor (Maygay) (M1A/B) (set 13)", - "m1guvnorm", "The Guvnor (Maygay) (M1A/B) (set 14)", - "m1guvnorn", "The Guvnor (Maygay) (M1A/B) (set 15)", - "m1guvnoro", "The Guvnor (Maygay) (M1A/B) (set 16)", - "m1guvnorp", "The Guvnor (Maygay) (M1A/B) (set 17)", - "m1guvnorq", "The Guvnor (Maygay) (M1A/B) (set 18)", - "m1guvnorr", "The Guvnor (Maygay) (M1A/B) (set 19)", - "m1guvnors", "The Guvnor (Maygay) (M1A/B) (set 20)", - "m1guvnort", "The Guvnor (Maygay) (M1A/B) (set 21)", - "m1hiloc", "Hi Lo Casino (Global) (M1A/B) (set 1)", - "m1hiloca", "Hi Lo Casino (Global) (M1A/B) (set 2)", - "m1hotpot", "Hot Pots (Maygay) (M1A/B) (set 1)", - "m1hotpot0", "Hot Pots (Maygay) (M1A/B) (set 28)", - "m1hotpotd", "Hot Pots (Maygay) (M1A/B) (set 5)", - "m1hotpote", "Hot Pots (Maygay) (M1A/B) (set 6)", - "m1hotpoth", "Hot Pots (Maygay) (M1A/B) (set 9)", - "m1hotpoti", "Hot Pots (Maygay) (M1A/B) (set 10)", - "m1hotpotj", "Hot Pots (Maygay) (M1A/B) (set 11)", - "m1hotpotk", "Hot Pots (Maygay) (M1A/B) (set 12)", - "m1hotpotl", "Hot Pots (Maygay) (M1A/B) (set 13)", - "m1hotpotm", "Hot Pots (Maygay) (M1A/B) (set 14)", - "m1hotpotn", "Hot Pots (Maygay) (M1A/B) (set 15)", - "m1hotpoto", "Hot Pots (Maygay) (M1A/B) (set 16)", - "m1hotpotp", "Hot Pots (Maygay) (M1A/B) (set 17)", - "m1hotpotq", "Hot Pots (Maygay) (M1A/B) (set 18)", - "m1hotpotr", "Hot Pots (Maygay) (M1A/B) (set 19)", - "m1hotpots", "Hot Pots (Maygay) (M1A/B) (set 20)", - "m1hotpott", "Hot Pots (Maygay) (M1A/B) (set 21)", - "m1hotpotu", "Hot Pots (Maygay) (M1A/B) (set 22)", - "m1hotpotv", "Hot Pots (Maygay) (M1A/B) (set 23)", - "m1hotpotw", "Hot Pots (Maygay) (M1A/B) (set 24)", - "m1hotpotx", "Hot Pots (Maygay) (M1A/B) (set 25)", - "m1hotpoty", "Hot Pots (Maygay) (M1A/B) (set 26)", - "m1hotpotz", "Hot Pots (Maygay) (M1A/B) (set 27)", - "m1htclb", "Hi Tension Club (Maygay) (M1A/B) (set 1)", - "m1htclba", "Hi Tension Club (Maygay) (M1A/B) (set 2)", - "m1imclb", "Instant Millionaire Club (Maygay) (M1A/B) (set 1)", - "m1imclba", "Instant Millionaire Club (Maygay) (M1A/B) (set 2)", - "m1imclbb", "Instant Millionaire Club (Maygay) (M1A/B) (set 3)", - "m1infern", "Inferno (Maygay) (M1A/B) (set 1)", - "m1inferna", "Inferno (Maygay) (M1A/B) (set 2)", - "m1infernb", "Inferno (Maygay) (M1A/B) (set 3)", - "m1infernc", "Inferno (Maygay) (M1A/B) (set 4)", - "m1infernd", "Inferno (Maygay) (M1A/B) (set 5)", - "m1inferne", "Inferno (Maygay) (M1A/B) (set 6)", - "m1infernf", "Inferno (Maygay) (M1A/B) (set 7)", - "m1inferng", "Inferno (Maygay) (M1A/B) (set 8)", - "m1infernh", "Inferno (Maygay) (M1A/B) (set 9)", - "m1inferni", "Inferno (Maygay) (M1A/B) (set 10)", - "m1infernj", "Inferno (Maygay) (M1A/B) (set 11)", - "m1infernk", "Inferno (Maygay) (M1A/B) (set 12)", - "m1infernl", "Inferno (Maygay) (M1A/B) (set 13)", - "m1inwin", "Instant Win (Maygay) (M1A/B) (set 1)", - "m1inwina", "Instant Win (Maygay) (M1A/B) (set 2)", - "m1inwinb", "Instant Win (Maygay) (M1A/B) (set 3)", - "m1inwinc", "Instant Win (Maygay) (M1A/B) (set 4)", - "m1inwinf", "Instant Win (Maygay) (M1A/B) (set 7)", - "m1inwinh", "Instant Win (Maygay) (M1A/B) (set 9)", - "m1inwini", "Instant Win (Maygay) (M1A/B) (set 10)", - "m1inwinj", "Instant Win (Maygay) (M1A/B) (set 11)", - "m1inwink", "Instant Win (Maygay) (M1A/B) (set 12)", - "m1inwinl", "Instant Win (Maygay) (M1A/B) (set 13)", - "m1inwinm", "Instant Win (Maygay) (M1A/B) (set 14)", - "m1inwinn", "Instant Win (Maygay) (M1A/B) (set 15)", - "m1inwino", "Instant Win (Maygay) (M1A/B) (set 16)", - "m1inwinp", "Instant Win (Maygay) (M1A/B) (set 17)", - "m1inwinq", "Instant Win (Maygay) (M1A/B) (set 18)", - "m1inwinr", "Instant Win (Maygay) (M1A/B) (set 19)", - "m1inwins", "Instant Win (Maygay) (M1A/B) (set 20)", - "m1inwint", "Instant Win (Maygay) (M1A/B) (set 21)", - "m1inwinu", "Instant Win (Maygay) (M1A/B) (set 22)", - "m1inwinv", "Instant Win (Maygay) (M1A/B) (set 23)", - "m1inwinw", "Instant Win (Maygay) (M1A/B) (set 24)", - "m1inwinx", "Instant Win (Maygay) (M1A/B) (set 25)", - "m1itjob", "Italian Job (Maygay) (M1A/B) (set 1)", - "m1itjobc", "Italian Job (Maygay) (M1A/B) (set 4)", - "m1itjobd", "Italian Job (Maygay) (M1A/B) (set 5)", - "m1itjobe", "Italian Job (Maygay) (M1A/B) (set 6)", - "m1itjobf", "Italian Job (Maygay) (M1A/B) (set 7)", - "m1itjobg", "Italian Job (Maygay) (M1A/B) (set 8)", - "m1itjobh", "Italian Job (Maygay) (M1A/B) (set 9)", - "m1itjobi", "Italian Job (Maygay) (M1A/B) (set 10)", - "m1itjobj", "Italian Job (Maygay) (M1A/B) (set 11)", - "m1itjobk", "Italian Job (Maygay) (M1A/B) (set 12)", - "m1itjobl", "Italian Job (Maygay) (M1A/B) (set 13)", - "m1itjobm", "Italian Job (Maygay) (M1A/B) (set 14)", - "m1itjobn", "Italian Job (Maygay) (M1A/B) (set 15)", - "m1itjobo", "Italian Job (Maygay) (M1A/B) (set 16)", - "m1itjobp", "Italian Job (Maygay) (M1A/B) (set 17)", - "m1itjobq", "Italian Job (Maygay) (M1A/B) (set 18)", - "m1itjobr", "Italian Job (Maygay) (M1A/B) (set 19)", - "m1itsko", "It's A Knockout (Maygay) (M1A/B) (set 1)", - "m1itsko0", "It's A Knockout (Maygay) (M1A/B) (set 28)", - "m1itsko1", "It's A Knockout (Maygay) (M1A/B) (set 29)", - "m1itsko2", "It's A Knockout (Maygay) (M1A/B) (set 30)", - "m1itsko3", "It's A Knockout (Maygay) (M1A/B) (set 31)", - "m1itsko4", "It's A Knockout (Maygay) (M1A/B) (set 32)", - "m1itsko5", "It's A Knockout (Maygay) (M1A/B) (set 33)", - "m1itsko6", "It's A Knockout (Maygay) (M1A/B) (set 34)", - "m1itsko7", "It's A Knockout (Maygay) (M1A/B) (set 35)", - "m1itsko8", "It's A Knockout (Maygay) (M1A/B) (set 36)", - "m1itskoa", "It's A Knockout (Maygay) (M1A/B) (set 2)", - "m1itskob", "It's A Knockout (Maygay) (M1A/B) (set 3)", - "m1itskoc", "It's A Knockout (Maygay) (M1A/B) (set 4)", - "m1itskod", "It's A Knockout (Maygay) (M1A/B) (set 5)", - "m1itskoe", "It's A Knockout (Maygay) (M1A/B) (set 6)", - "m1itskof", "It's A Knockout (Maygay) (M1A/B) (set 7)", - "m1itskog", "It's A Knockout (Maygay) (M1A/B) (set 8)", - "m1itskoh", "It's A Knockout (Maygay) (M1A/B) (set 9)", - "m1itskoi", "It's A Knockout (Maygay) (M1A/B) (set 10)", - "m1itskoj", "It's A Knockout (Maygay) (M1A/B) (set 11)", - "m1itskok", "It's A Knockout (Maygay) (M1A/B) (set 12)", - "m1itskol", "It's A Knockout (Maygay) (M1A/B) (set 13)", - "m1itskom", "It's A Knockout (Maygay) (M1A/B) (set 14)", - "m1itskon", "It's A Knockout (Maygay) (M1A/B) (set 15)", - "m1itskoo", "It's A Knockout (Maygay) (M1A/B) (set 16)", - "m1itskop", "It's A Knockout (Maygay) (M1A/B) (set 17)", - "m1itskoq", "It's A Knockout (Maygay) (M1A/B) (set 18)", - "m1itskor", "It's A Knockout (Maygay) (M1A/B) (set 19)", - "m1itskos", "It's A Knockout (Maygay) (M1A/B) (set 20)", - "m1itskot", "It's A Knockout (Maygay) (M1A/B) (set 21)", - "m1itskou", "It's A Knockout (Maygay) (M1A/B) (set 22)", - "m1itskov", "It's A Knockout (Maygay) (M1A/B) (set 23)", - "m1itskow", "It's A Knockout (Maygay) (M1A/B) (set 24)", - "m1itskox", "It's A Knockout (Maygay) (M1A/B) (set 25)", - "m1itskoy", "It's A Knockout (Maygay) (M1A/B) (set 26)", - "m1itskoz", "It's A Knockout (Maygay) (M1A/B) (set 27)", - "m1jbond", "James Bond (Maygay) (M1A/B) (set 1)", - "m1jbonda", "James Bond (Maygay) (M1A/B) (set 2)", - "m1jbondb", "James Bond (Maygay) (M1A/B) (set 3)", - "m1jbondc", "James Bond (Maygay) (M1A/B) (set 4)", - "m1jbondd", "James Bond (Maygay) (M1A/B) (set 5)", - "m1jbonde", "James Bond (Maygay) (M1A/B) (set 6)", - "m1jbondf", "James Bond (Maygay) (M1A/B) (set 7)", - "m1jbondg", "James Bond (Maygay) (M1A/B) (set 8)", - "m1jbondh", "James Bond (Maygay) (M1A/B) (set 9)", - "m1jbondi", "James Bond (Maygay) (M1A/B) (set 10)", - "m1jbondj", "James Bond (Maygay) (M1A/B) (set 11)", - "m1jbondk", "James Bond (Maygay) (M1A/B) (set 12)", - "m1jbondl", "James Bond (Maygay) (M1A/B) (set 13)", - "m1jbondm", "James Bond (Maygay) (M1A/B) (set 14)", - "m1jbondn", "James Bond (Maygay) (M1A/B) (set 15)", - "m1jbondo", "James Bond (Maygay) (M1A/B) (set 16)", - "m1jbondp", "James Bond (Maygay) (M1A/B) (set 17)", - "m1jbondq", "James Bond (Maygay) (M1A/B) (set 18)", - "m1jdwins", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 1)", - "m1jdwinsa", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 2)", - "m1jdwinsb", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 3)", - "m1jdwinsc", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 4)", - "m1jdwinsd", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 5)", - "m1jdwinse", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 6)", - "m1jdwinsf", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 7)", - "m1jdwinsg", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 8)", - "m1jdwinsh", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 9)", - "m1jdwinsi", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 10)", - "m1jdwinsj", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 11)", - "m1jdwinsk", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 12)", - "m1jdwinsl", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 13)", - "m1jdwinsm", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 14)", - "m1jdwinsn", "Jim Davison's Winning Streak (Maygay) (M1A/B) (set 15)", - "m1jpmult", "Jackpot Multiplier (Maygay) (M1A/B) (set 1)", - "m1jpmulta", "Jackpot Multiplier (Maygay) (M1A/B) (set 2)", - "m1jtjob", "Just The Job (Global) (M1A/B) (set 1)", - "m1jtjoba", "Just The Job (Global) (M1A/B) (set 2)", - "m1jtjobb", "Just The Job (Global) (M1A/B) (set 3)", - "m1jtjobc", "Just The Job (Global) (M1A/B) (set 4)", - "m1jtjobd", "Just The Job (Global) (M1A/B) (set 5)", - "m1jtjobe", "Just The Job (Global) (M1A/B) (set 6)", - "m1kingsw", "King Of The Swingers (Global) (M1A/B) (set 1)", - "m1kingswa", "King Of The Swingers (Global) (M1A/B) (set 2)", - "m1kingswb", "King Of The Swingers (Global) (M1A/B) (set 3)", - "m1kingswc", "King Of The Swingers (Global) (M1A/B) (set 4)", - "m1lca", "Lights Camera Action (Global) (M1A/B) (set 1)", - "m1lcaa", "Lights Camera Action (Global) (M1A/B) (set 2)", - "m1lcab", "Lights Camera Action (Global) (M1A/B) (set 3)", - "m1lcac", "Lights Camera Action (Global) (M1A/B) (set 4)", - "m1liveam", "Living In America (Maygay) (M1A/B) (set 1)", - "m1liveama", "Living In America (Maygay) (M1A/B) (set 2)", - "m1liveamb", "Living In America (Maygay) (M1A/B) (set 3)", - "m1lotmil", "Lottery Millionaire Club (Maygay) (M1A/B) (set 1)", - "m1lotmila", "Lottery Millionaire Club (Maygay) (M1A/B) (set 2)", - "m1lotmilb", "Lottery Millionaire Club (Maygay) (M1A/B) (set 3)", - "m1lotmilc", "Lottery Millionaire Club (Maygay) (M1A/B) (set 4)", - "m1luckno", "Lucky Numbers (Maygay) (M1A/B) (set 1)", - "m1lucknoa", "Lucky Numbers (Maygay) (M1A/B) (set 2)", - "m1lucknob", "Lucky Numbers (Maygay) (M1A/B) (set 3)", - "m1lucknoc", "Lucky Numbers (Maygay) (M1A/B) (set 4)", - "m1lucknod", "Lucky Numbers (Maygay) (M1A/B) (set 5)", - "m1lucknoe", "Lucky Numbers (Maygay) (M1A/B) (set 6)", - "m1lucknof", "Lucky Numbers (Maygay) (M1A/B) (set 7)", - "m1lucknog", "Lucky Numbers (Maygay) (M1A/B) (set 8)", - "m1lucknoh", "Lucky Numbers (Maygay) (M1A/B) (set 9)", - "m1lucknoi", "Lucky Numbers (Maygay) (M1A/B) (set 10)", - "m1lucknoj", "Lucky Numbers (Maygay) (M1A/B) (set 11)", - "m1lucknok", "Lucky Numbers (Maygay) (M1A/B) (set 12)", - "m1lucknol", "Lucky Numbers (Maygay) (M1A/B) (set 13)", - "m1lucknom", "Lucky Numbers (Maygay) (M1A/B) (set 14)", - "m1lucknon", "Lucky Numbers (Maygay) (M1A/B) (set 15)", - "m1lucknoo", "Lucky Numbers (Maygay) (M1A/B) (set 16)", - "m1lucknop", "Lucky Numbers (Maygay) (M1A/B) (set 17)", - "m1lucknoq", "Lucky Numbers (Maygay) (M1A/B) (set 18)", - "m1lucknor", "Lucky Numbers (Maygay) (M1A/B) (set 19)", - "m1lucknos", "Lucky Numbers (Maygay) (M1A/B) (set 20)", - "m1luxor", "Luxor Casino (Gemini) (M1A/B) (set 1)", - "m1luxora", "Luxor Casino (Gemini) (M1A/B) (set 2)", - "m1luxorb", "Luxor Casino (Gemini) (M1A/B) (set 3)", - "m1luxorc", "Luxor Casino (Gemini) (M1A/B) (set 4)", - "m1magic", "Magic Squares (Maygay) (M1A/B) (set 1)", - "m1magica", "Magic Squares (Maygay) (M1A/B) (set 2)", - "m1magicb", "Magic Squares (Maygay) (M1A/B) (set 3)", - "m1magicc", "Magic Squares (Maygay) (M1A/B) (set 4)", - "m1manhat", "Manhattan Skylines (Maygay) (M1A/B)", - "m1mb", "Monkey Business (Global) (M1A/B) (set 1)", - "m1mba", "Monkey Business (Global) (M1A/B) (set 2)", - "m1mbb", "Monkey Business (Global) (M1A/B) (set 3)", - "m1mbc", "Monkey Business (Global) (M1A/B) (set 4)", - "m1mbclb", "Monkey Business Club (Global) (M1A/B)", - "m1monclb", "Monopoly Club (Maygay) (M1A/B) (set 1)", - "m1monclba", "Monopoly Club (Maygay) (M1A/B) (set 2)", - "m1monclbb", "Monopoly Club (Maygay) (M1A/B) (set 3)", - "m1monclbc", "Monopoly Club (Maygay) (M1A/B) (set 4)", - "m1monclbd", "Monopoly Club (Maygay) (M1A/B) (set 5)", - "m1monclbe", "Monopoly Club (Maygay) (M1A/B) (set 6)", - "m1monclbf", "Monopoly Club (Maygay) (M1A/B) (set 7)", - "m1monclbg", "Monopoly Club (Maygay) (M1A/B) (set 8)", - "m1monclbh", "Monopoly Club (Maygay) (M1A/B) (set 9)", - "m1monclbi", "Monopoly Club (Maygay) (M1A/B) (set 10)", - "m1monclbj", "Monopoly Club (Maygay) (M1A/B) (set 11)", - "m1monclbk", "Monopoly Club (Maygay) (M1A/B) (set 12)", - "m1monclbl", "Monopoly Club (Maygay) (M1A/B) (set 13)", - "m1monclbm", "Monopoly Club (Maygay) (M1A/B) (set 14)", - "m1moncls", "Monopoly Classic (Maygay) (M1A/B) (set 1)", - "m1monclsa", "Monopoly Classic (Maygay) (M1A/B) (set 2)", - "m1monclsb", "Monopoly Classic (Maygay) (M1A/B) (set 3)", - "m1monclsc", "Monopoly Classic (Maygay) (M1A/B) (set 4)", - "m1monclsd", "Monopoly Classic (Maygay) (M1A/B) (set 5)", - "m1mongam", "Money Game Club (Maygay) (M1A/B) (set 1)", - "m1mongama", "Money Game Club (Maygay) (M1A/B) (set 2)", - "m1mongamb", "Money Game Club (Maygay) (M1A/B) (set 3)", - "m1monmon", "Money Money Money (Maygay) (M1A/B) (set 1)", - "m1monmona", "Money Money Money (Maygay) (M1A/B) (set 2)", - "m1monmonb", "Money Money Money (Maygay) (M1A/B) (set 3)", - "m1monmonc", "Money Money Money (Maygay) (M1A/B) (set 4)", - "m1monmond", "Money Money Money (Maygay) (M1A/B) (set 5)", - "m1monmone", "Money Money Money (Maygay) (M1A/B) (set 6)", - "m1monmonf", "Money Money Money (Maygay) (M1A/B) (set 7)", - "m1monmong", "Money Money Money (Maygay) (M1A/B) (set 8)", - "m1monmonh", "Money Money Money (Maygay) (M1A/B) (set 9)", - "m1monmoni", "Money Money Money (Maygay) (M1A/B) (set 10)", - "m1monmonj", "Money Money Money (Maygay) (M1A/B) (set 11)", - "m1monmonk", "Money Money Money (Maygay) (M1A/B) (set 12)", - "m1monmonl", "Money Money Money (Maygay) (M1A/B) (set 13)", - "m1monmonm", "Money Money Money (Maygay) (M1A/B) (set 14)", - "m1monmonn", "Money Money Money (Maygay) (M1A/B) (set 15)", - "m1monmono", "Money Money Money (Maygay) (M1A/B) (set 16)", - "m1monmonp", "Money Money Money (Maygay) (M1A/B) (set 17)", - "m1monmonq", "Money Money Money (Maygay) (M1A/B) (set 18)", - "m1monmonr", "Money Money Money (Maygay) (M1A/B) (set 19)", - "m1monmons", "Money Money Money (Maygay) (M1A/B) (set 20)", - "m1monmont", "Money Money Money (Maygay) (M1A/B) (set 21)", - "m1monmonu", "Money Money Money (Maygay) (M1A/B) (set 22)", - "m1monmonv", "Money Money Money (Maygay) (M1A/B) (set 23)", - "m1monmonw", "Money Money Money (Maygay) (M1A/B) (set 24)", - "m1mono", "Monopoly (Maygay) (M1A/B) (set 1)", - "m1mono0", "Monopoly (Maygay) (M1A/B) (set 28)", - "m1mono1", "Monopoly (Maygay) (M1A/B) (set 29)", - "m1mono2", "Monopoly (Maygay) (M1A/B) (set 30)", - "m1mono3", "Monopoly (Maygay) (M1A/B) (set 31)", - "m1mono4", "Monopoly (Maygay) (M1A/B) (set 32)", - "m1mono5", "Monopoly (Maygay) (M1A/B) (set 33)", - "m1mono6", "Monopoly (Maygay) (M1A/B) (set 34)", - "m1mono7", "Monopoly (Maygay) (M1A/B) (set 35)", - "m1mono8", "Monopoly (Maygay) (M1A/B) (set 36)", - "m1mono9", "Monopoly (Maygay) (M1A/B) (set 37)", - "m1monoa", "Monopoly (Maygay) (M1A/B) (set 2)", - "m1monoaa", "Monopoly (Maygay) (M1A/B) (set 38)", - "m1monoc", "Monopoly (Maygay) (M1A/B) (set 4)", - "m1monod", "Monopoly (Maygay) (M1A/B) (set 5)", - "m1monodt", "Monopoly (Dutch) (Maygay) (M1A/B)", - "m1monoe", "Monopoly (Maygay) (M1A/B) (set 6)", - "m1monof", "Monopoly (Maygay) (M1A/B) (set 7)", - "m1monog", "Monopoly (Maygay) (M1A/B) (set 8)", - "m1monoh", "Monopoly (Maygay) (M1A/B) (set 9)", - "m1monoi", "Monopoly (Maygay) (M1A/B) (set 10)", - "m1monok", "Monopoly (Maygay) (M1A/B) (set 12)", - "m1monol", "Monopoly (Maygay) (M1A/B) (set 13)", - "m1monom", "Monopoly (Maygay) (M1A/B) (set 14)", - "m1monon", "Monopoly (Maygay) (M1A/B) (set 15)", - "m1monoo", "Monopoly (Maygay) (M1A/B) (set 16)", - "m1monop", "Monopoly (Maygay) (M1A/B) (set 17)", - "m1monoq", "Monopoly (Maygay) (M1A/B) (set 18)", - "m1monor", "Monopoly (Maygay) (M1A/B) (set 19)", - "m1monos", "Monopoly (Maygay) (M1A/B) (set 20)", - "m1monot", "Monopoly (Maygay) (M1A/B) (set 21)", - "m1monou", "Monopoly (Maygay) (M1A/B) (set 22)", - "m1monov", "Monopoly (Maygay) (M1A/B) (set 23)", - "m1monow", "Monopoly (Maygay) (M1A/B) (set 24)", - "m1monox", "Monopoly (Maygay) (M1A/B) (set 25)", - "m1monoy", "Monopoly (Maygay) (M1A/B) (set 26)", - "m1monoz", "Monopoly (Maygay) (M1A/B) (set 27)", - "m1monstr", "Monster Cash (Maygay) (M1A/B) (set 1)", - "m1monstra", "Monster Cash (Maygay) (M1A/B) (set 2)", - "m1monstrb", "Monster Cash (Maygay) (M1A/B) (set 3)", - "m1monstrc", "Monster Cash (Maygay) (M1A/B) (set 4)", - "m1nhp", "Noel's House Party (Maygay) (M1A/B) (set 1)", - "m1nhpa", "Noel's House Party (Maygay) (M1A/B) (set 2)", - "m1nhpb", "Noel's House Party (Maygay) (M1A/B) (set 3)", - "m1nhpc", "Noel's House Party (Maygay) (M1A/B) (set 4)", - "m1nhpd", "Noel's House Party (Maygay) (M1A/B) (set 5)", - "m1nhpe", "Noel's House Party (Maygay) (M1A/B) (set 6)", - "m1nhpf", "Noel's House Party (Maygay) (M1A/B) (set 7)", - "m1nhpg", "Noel's House Party (Maygay) (M1A/B) (set 8)", - "m1nhph", "Noel's House Party (Maygay) (M1A/B) (set 9)", - "m1nhpi", "Noel's House Party (Maygay) (M1A/B) (set 10)", - "m1nhpj", "Noel's House Party (Maygay) (M1A/B) (set 11)", - "m1nhpk", "Noel's House Party (Maygay) (M1A/B) (set 12)", - "m1nhpl", "Noel's House Party (Maygay) (M1A/B) (set 13)", - "m1nhpm", "Noel's House Party (Maygay) (M1A/B) (set 14)", - "m1nudbnk", "Nudge Banker (Maygay) (M1A/B) (set 1)", - "m1nudbnka", "Nudge Banker (Maygay) (M1A/B) (set 2)", - "m1nudbnkb", "Nudge Banker (Maygay) (M1A/B) (set 3)", - "m1nudbnkc", "Nudge Banker (Maygay) (M1A/B) (set 4)", - "m1nudbnkd", "Nudge Banker (Maygay) (M1A/B) (set 5)", - "m1nudbnke", "Nudge Banker (Maygay) (M1A/B) (set 6)", - "m1nudbnkf", "Nudge Banker (Maygay) (M1A/B) (set 7)", - "m1nudbnkg", "Nudge Banker (Maygay) (M1A/B) (set 8)", - "m1nudbnkh", "Nudge Banker (Maygay) (M1A/B) (set 9)", - "m1nudbnki", "Nudge Banker (Maygay) (M1A/B) (set 10)", - "m1nudbnkj", "Nudge Banker (Maygay) (M1A/B) (set 11)", - "m1nudbnkk", "Nudge Banker (Maygay) (M1A/B) (set 12)", - "m1nudbnkl", "Nudge Banker (Maygay) (M1A/B) (set 13)", - "m1nudbnkm", "Nudge Banker (Maygay) (M1A/B) (set 14)", - "m1nudbnkn", "Nudge Banker (Maygay) (M1A/B) (set 15)", - "m1nudbnko", "Nudge Banker (Maygay) (M1A/B) (set 16)", - "m1nudbnkp", "Nudge Banker (Maygay) (M1A/B) (set 17)", - "m1nudbnkq", "Nudge Banker (Maygay) (M1A/B) (set 18)", - "m1nudbnkr", "Nudge Banker (Maygay) (M1A/B) (set 19)", - "m1nudbnks", "Nudge Banker (Maygay) (M1A/B) (set 20)", - "m1nudbnkt", "Nudge Banker (Maygay) (M1A/B) (set 21)", - "m1nudbnku", "Nudge Banker (Maygay) (M1A/B) (set 22)", - "m1nudbnkv", "Nudge Banker (Maygay) (M1A/B) (set 23)", - "m1nudunl", "Nudges Unlimited (Maygay) (M1A/B) (set 1)", - "m1nudunla", "Nudges Unlimited (Maygay) (M1A/B) (set 2)", - "m1nudunlb", "Nudges Unlimited (Maygay) (M1A/B) (set 3)", - "m1nudunlc", "Nudges Unlimited (Maygay) (M1A/B) (set 4)", - "m1nudunld", "Nudges Unlimited (Maygay) (M1A/B) (set 5)", - "m1nudunle", "Nudges Unlimited (Maygay) (M1A/B) (set 6)", - "m1omega", "Omega (Maygay) (M1A/B) (set 1)", - "m1omegaa", "Omega (Maygay) (M1A/B) (set 2)", - "m1onbus", "On The Buses (Maygay) (M1A/B) (set 1)", - "m1onbusa", "On The Buses (Maygay) (M1A/B) (set 2)", - "m1onbusb", "On The Buses (Maygay) (M1A/B) (set 3)", - "m1onbusc", "On The Buses (Maygay) (M1A/B) (set 4)", - "m1onbusd", "On The Buses (Maygay) (M1A/B) (set 5)", - "m1onbuse", "On The Buses (Maygay) (M1A/B) (set 6)", - "m1onbusf", "On The Buses (Maygay) (M1A/B) (set 7)", - "m1onbusg", "On The Buses (Maygay) (M1A/B) (set 8)", - "m1onbush", "On The Buses (Maygay) (M1A/B) (set 9)", - "m1onbusi", "On The Buses (Maygay) (M1A/B) (set 10)", - "m1onbusj", "On The Buses (Maygay) (M1A/B) (set 11)", - "m1onbusk", "On The Buses (Maygay) (M1A/B) (set 12)", - "m1onbusl", "On The Buses (Maygay) (M1A/B) (set 13)", - "m1onbusm", "On The Buses (Maygay) (M1A/B) (set 14)", - "m1onbusn", "On The Buses (Maygay) (M1A/B) (set 15)", - "m1onbuso", "On The Buses (Maygay) (M1A/B) (set 16)", - "m1onbusp", "On The Buses (Maygay) (M1A/B) (set 17)", - "m1ott", "Over The Top (Maygay) (M1A/B) (set 1)", - "m1otta", "Over The Top (Maygay) (M1A/B) (set 2)", - "m1piggy", "Piggy Bank (Maygay) (M1A/B) (set 1)", - "m1piggya", "Piggy Bank (Maygay) (M1A/B) (set 2)", - "m1piggyb", "Piggy Bank (Maygay) (M1A/B) (set 3)", - "m1piggyc", "Piggy Bank (Maygay) (M1A/B) (set 4)", - "m1pinkp", "Pink Panther (Maygay) (M1A/B) (set 1)", - "m1pinkpa", "Pink Panther (Maygay) (M1A/B) (set 2)", - "m1pinkpb", "Pink Panther (Maygay) (M1A/B) (set 3)", - "m1pinkpc", "Pink Panther (Maygay) (M1A/B) (set 4)", - "m1pinkpd", "Pink Panther (Maygay) (M1A/B) (set 5)", - "m1pinkpe", "Pink Panther (Maygay) (M1A/B) (set 6)", - "m1pinkpf", "Pink Panther (Maygay) (M1A/B) (set 7)", - "m1pinkpg", "Pink Panther (Maygay) (M1A/B) (set 8)", - "m1pinkph", "Pink Panther (Maygay) (M1A/B) (set 9)", - "m1pinkpi", "Pink Panther (Maygay) (M1A/B) (set 10)", - "m1pinkpj", "Pink Panther (Maygay) (M1A/B) (set 11)", - "m1pinkpk", "Pink Panther (Maygay) (M1A/B) (set 12)", - "m1pinkpl", "Pink Panther (Maygay) (M1A/B) (set 13)", - "m1pinkpm", "Pink Panther (Maygay) (M1A/B) (set 14)", - "m1pinkpn", "Pink Panther (Maygay) (M1A/B) (set 15)", - "m1pinkpo", "Pink Panther (Maygay) (M1A/B) (set 16)", - "m1pinkpp", "Pink Panther (Maygay) (M1A/B) (set 17)", - "m1pinkpq", "Pink Panther (Maygay) (M1A/B) (set 18)", - "m1pinkpr", "Pink Panther (Maygay) (M1A/B) (set 19)", - "m1ppc", "Pink Panther Club (Maygay) (M1A/B) (set 1)", - "m1ppca", "Pink Panther Club (Maygay) (M1A/B) (set 2)", - "m1ppcb", "Pink Panther Club (Maygay) (M1A/B) (set 3)", - "m1ppdt", "Pink Panther (German) (Maygay) (M1A/B)", - "m1przclu", "Prize Cluedo (Maygay) (M1A/B) (set 1)", - "m1przclua", "Prize Cluedo (Maygay) (M1A/B) (set 2)", - "m1przclub", "Prize Cluedo (Maygay) (M1A/B) (set 3)", - "m1przee", "Prize Eastenders (Maygay) (M1A/B) (set 1)", - "m1przeea", "Prize Eastenders (Maygay) (M1A/B) (set 2)", - "m1przeeb", "Prize Eastenders (Maygay) (M1A/B) (set 3)", - "m1przeec", "Prize Eastenders (Maygay) (M1A/B) (set 4)", - "m1races", "A Day At The Races (Maygay) (M1A/B) (set 1)", - "m1racesa", "A Day At The Races (Maygay) (M1A/B) (set 2)", - "m1racesb", "A Day At The Races (Maygay) (M1A/B) (set 3)", - "m1racesc", "A Day At The Races (Maygay) (M1A/B) (set 4)", - "m1reeldm", "Reel Diamonds (Maygay) (M1A/B) (set 1)", - "m1reeldma", "Reel Diamonds (Maygay) (M1A/B) (set 2)", - "m1reeldmb", "Reel Diamonds (Maygay) (M1A/B) (set 3)", - "m1reeldmc", "Reel Diamonds (Maygay) (M1A/B) (set 4)", - "m1reeldmd", "Reel Diamonds (Maygay) (M1A/B) (set 5)", - "m1reeldme", "Reel Diamonds (Maygay) (M1A/B) (set 6)", - "m1reeldmf", "Reel Diamonds (Maygay) (M1A/B) (set 7)", - "m1reeldmg", "Reel Diamonds (Maygay) (M1A/B) (set 8)", - "m1reeldmh", "Reel Diamonds (Maygay) (M1A/B) (set 9)", - "m1reeldmi", "Reel Diamonds (Maygay) (M1A/B) (set 10)", - "m1reeldmj", "Reel Diamonds (Maygay) (M1A/B) (set 11)", - "m1reeldmk", "Reel Diamonds (Maygay) (M1A/B) (set 12)", - "m1reeldml", "Reel Diamonds (Maygay) (M1A/B) (set 13)", - "m1reeldmm", "Reel Diamonds (Maygay) (M1A/B) (set 14)", - "m1reeldmn", "Reel Diamonds (Maygay) (M1A/B) (set 15)", - "m1reeldmo", "Reel Diamonds (Maygay) (M1A/B) (set 16)", - "m1retpp", "Return Of The Pink Panther (Maygay) (M1A/B) (set 1)", - "m1retppa", "Return Of The Pink Panther (Maygay) (M1A/B) (set 2)", - "m1retppb", "Return Of The Pink Panther (Maygay) (M1A/B) (set 3)", - "m1retppc", "Return Of The Pink Panther (Maygay) (M1A/B) (set 4)", - "m1retppd", "Return Of The Pink Panther (Maygay) (M1A/B) (set 5)", - "m1search", "Search Light (Maygay) (M1A/B) (set 1)", - "m1searcha", "Search Light (Maygay) (M1A/B) (set 2)", - "m1searchb", "Search Light (Maygay) (M1A/B) (set 3)", - "m1simps", "The Simpsons (Maygay) (M1A/B) (set 1)", - "m1simpsa", "The Simpsons (Maygay) (M1A/B) (set 2)", - "m1simpsb", "The Simpsons (Maygay) (M1A/B) (set 3)", - "m1simpsc", "The Simpsons (Maygay) (M1A/B) (set 4)", - "m1simpsd", "The Simpsons (Maygay) (M1A/B) (set 5)", - "m1simpse", "The Simpsons (Maygay) (M1A/B) (set 6)", - "m1simpsf", "The Simpsons (Maygay) (M1A/B) (set 7)", - "m1simpsg", "The Simpsons (Maygay) (M1A/B) (set 8)", - "m1sirich", "Strike It Rich (Maygay) (M1A/B) (set 1)", - "m1siricha", "Strike It Rich (Maygay) (M1A/B) (set 2)", - "m1sirichb", "Strike It Rich (Maygay) (M1A/B) (set 3)", - "m1sirichc", "Strike It Rich (Maygay) (M1A/B) (set 4)", - "m1sixspn", "Six Spinner (Maygay) (M1A/B)", - "m1spid", "Spiderman (Maygay) (M1A/B) (set 1)", - "m1spida", "Spiderman (Maygay) (M1A/B) (set 2)", - "m1spidb", "Spiderman (Maygay) (M1A/B) (set 3)", - "m1sprnov", "Super Nova (Dutch) (Maygay) (M1A/B)", - "m1sptlgt", "Spotlight (Maygay) (M1A/B) (set 1)", - "m1sptlgta", "Spotlight (Maygay) (M1A/B) (set 2)", - "m1sptlgtb", "Spotlight (Maygay) (M1A/B) (set 3)", - "m1sptlgtc", "Spotlight (Maygay) (M1A/B) (set 4)", - "m1sptlgtd", "Spotlight (Maygay) (M1A/B) (set 5)", - "m1sptlgte", "Spotlight (Maygay) (M1A/B) (set 6)", - "m1startr", "Star Trekking (Mdm) (M1A/B) (set 1)", - "m1startra", "Star Trekking (Mdm) (M1A/B) (set 2)", - "m1startrb", "Star Trekking (Mdm) (M1A/B) (set 3)", - "m1startrc", "Star Trekking (Mdm) (M1A/B) (set 4)", - "m1startrd", "Star Trekking (Mdm) (M1A/B) (set 5)", - "m1startre", "Star Trekking (Mdm) (M1A/B) (set 6)", - "m1startrf", "Star Trekking (Mdm) (M1A/B) (set 7)", - "m1startrg", "Star Trekking (Mdm) (M1A/B) (set 8)", - "m1startrh", "Star Trekking (Mdm) (M1A/B) (set 9)", - "m1startri", "Star Trekking (Mdm) (M1A/B) (set 10)", - "m1startrj", "Star Trekking (Mdm) (M1A/B) (set 11)", - "m1startrk", "Star Trekking (Mdm) (M1A/B) (set 12)", - "m1startrm", "Star Trekking (Mdm) (M1A/B) (set 14)", - "m1startrn", "Star Trekking (Mdm) (M1A/B) (set 15)", - "m1startro", "Star Trekking (Mdm) (M1A/B) (set 16)", - "m1startrp", "Star Trekking (Mdm) (M1A/B) (set 17)", - "m1startrq", "Star Trekking (Mdm) (M1A/B) (set 18)", - "m1startrr", "Star Trekking (Mdm) (M1A/B) (set 19)", - "m1sudnim", "Sudden Impact (Maygay) (M1A/B) (set 1)", - "m1sudnima", "Sudden Impact (Maygay) (M1A/B) (set 2)", - "m1sudnimb", "Sudden Impact (Maygay) (M1A/B) (set 3)", - "m1sudnimc", "Sudden Impact (Maygay) (M1A/B) (set 4)", - "m1suppot", "Super Pots (Maygay) (M1A/B) (set 1)", - "m1suppot0", "Super Pots (Maygay) (M1A/B) (set 28)", - "m1suppota", "Super Pots (Maygay) (M1A/B) (set 2)", - "m1suppotb", "Super Pots (Maygay) (M1A/B) (set 3)", - "m1suppotc", "Super Pots (Maygay) (M1A/B) (set 4)", - "m1suppotd", "Super Pots (Maygay) (M1A/B) (set 5)", - "m1suppote", "Super Pots (Maygay) (M1A/B) (set 6)", - "m1suppotf", "Super Pots (Maygay) (M1A/B) (set 7)", - "m1suppotg", "Super Pots (Maygay) (M1A/B) (set 8)", - "m1suppoti", "Super Pots (Maygay) (M1A/B) (set 10)", - "m1suppotj", "Super Pots (Maygay) (M1A/B) (set 11)", - "m1suppotk", "Super Pots (Maygay) (M1A/B) (set 12)", - "m1suppotl", "Super Pots (Maygay) (M1A/B) (set 13)", - "m1suppotm", "Super Pots (Maygay) (M1A/B) (set 14)", - "m1suppotn", "Super Pots (Maygay) (M1A/B) (set 15)", - "m1suppoto", "Super Pots (Maygay) (M1A/B) (set 16)", - "m1suppotp", "Super Pots (Maygay) (M1A/B) (set 17)", - "m1suppotq", "Super Pots (Maygay) (M1A/B) (set 18)", - "m1suppotr", "Super Pots (Maygay) (M1A/B) (set 19)", - "m1suppots", "Super Pots (Maygay) (M1A/B) (set 20)", - "m1suppott", "Super Pots (Maygay) (M1A/B) (set 21)", - "m1suppotu", "Super Pots (Maygay) (M1A/B) (set 22)", - "m1suppotv", "Super Pots (Maygay) (M1A/B) (set 23)", - "m1suppotw", "Super Pots (Maygay) (M1A/B) (set 24)", - "m1suppotx", "Super Pots (Maygay) (M1A/B) (set 25)", - "m1suppoty", "Super Pots (Maygay) (M1A/B) (set 26)", - "m1suppotz", "Super Pots (Maygay) (M1A/B) (set 27)", - "m1sycc", "Stake Yer Claim Club (Global) (M1A/B) (set 1)", - "m1sycca", "Stake Yer Claim Club (Global) (M1A/B) (set 2)", - "m1syccb", "Stake Yer Claim Club (Global) (M1A/B) (set 3)", - "m1taknot", "Take Note (Maygay) (M1A/B)", - "m1thatlf", "That's Life (Maygay) (M1A/B) (set 1)", - "m1thatlfa", "That's Life (Maygay) (M1A/B) (set 2)", - "m1thatlfb", "That's Life (Maygay) (M1A/B) (set 3)", - "m1thatlfc", "That's Life (Maygay) (M1A/B) (set 4)", - "m1thatlfd", "That's Life (Maygay) (M1A/B) (set 5)", - "m1thrill", "Thrills 'n' Spills (Global) (M1A/B) (set 1)", - "m1thrilla", "Thrills 'n' Spills (Global) (M1A/B) (set 2)", - "m1thrillb", "Thrills 'n' Spills (Global) (M1A/B) (set 3)", - "m1thrillc", "Thrills 'n' Spills (Global) (M1A/B) (set 4)", - "m1topstr", "Top Strike (Maygay - Bwb) (M1A/B)", - "m1topten", "Top Tenner (Maygay) (M1A/B) (set 1)", - "m1toptena", "Top Tenner (Maygay) (M1A/B) (set 2)", - "m1tpclb", "Trivial Pursuit Club (Maygay) (M1A/B) (set 1)", - "m1tpclba", "Trivial Pursuit Club (Maygay) (M1A/B) (set 2)", - "m1tpclbb", "Trivial Pursuit Club (Maygay) (M1A/B) (set 3)", - "m1tpclbc", "Trivial Pursuit Club (Maygay) (M1A/B) (set 4)", - "m1trivia", "Trivial Pursuit (Maygay) (M1A/B) (set 1)", - "m1triviaa", "Trivial Pursuit (Maygay) (M1A/B) (set 2)", - "m1triviab", "Trivial Pursuit (Maygay) (M1A/B) (set 3)", - "m1triviac", "Trivial Pursuit (Maygay) (M1A/B) (set 4)", - "m1triviad", "Trivial Pursuit (Maygay) (M1A/B) (set 5)", - "m1triviae", "Trivial Pursuit (Maygay) (M1A/B) (set 6)", - "m1triviaf", "Trivial Pursuit (Maygay) (M1A/B) (set 7)", - "m1triviag", "Trivial Pursuit (Maygay) (M1A/B) (set 8)", - "m1triviah", "Trivial Pursuit (Maygay) (M1A/B) (set 9)", - "m1triviai", "Trivial Pursuit (Maygay) (M1A/B) (set 10)", - "m1triviaj", "Trivial Pursuit (Maygay) (M1A/B) (set 11)", - "m1triviak", "Trivial Pursuit (Maygay) (M1A/B) (set 12)", - "m1trivial", "Trivial Pursuit (Maygay) (M1A/B) (set 13)", - "m1trivian", "Trivial Pursuit (Maygay) (M1A/B) (set 15)", - "m1triviap", "Trivial Pursuit (Maygay) (M1A/B) (set 17)", - "m1triviaq", "Trivial Pursuit (Maygay) (M1A/B) (set 18)", - "m1triviar", "Trivial Pursuit (Maygay) (M1A/B) (set 19)", - "m1trivias", "Trivial Pursuit (Maygay) (M1A/B) (set 20)", - "m1triviat", "Trivial Pursuit (Maygay) (M1A/B) (set 21)", - "m1triviau", "Trivial Pursuit (Maygay) (M1A/B) (set 22)", - "m1triviav", "Trivial Pursuit (Maygay) (M1A/B) (set 23)", - "m1triviaw", "Trivial Pursuit (Maygay) (M1A/B) (set 24)", - "m1triviax", "Trivial Pursuit (Maygay) (M1A/B) (set 25)", - "m1triviay", "Trivial Pursuit (Maygay) (M1A/B) (set 26)", - "m1triviaz", "Trivial Pursuit (Maygay) (M1A/B) (set 27)", - "m1trtr", "Trick Or Treat (Global) (M1A/B) (set 1)", - "m1trtra", "Trick Or Treat (Global) (M1A/B) (set 2)", - "m1trtrcl", "Trick Or Treat Club (Global) (M1A/B)", - "m1tstunt", "Test Unit (Maygay) (M1A/B)", - "m1ttcash", "Tick Tock Cash (Empire) (M1A/B)", - "m1ultchl", "Ultimate Challenge (Maygay) (M1A/B) (set 1)", - "m1ultchla", "Ultimate Challenge (Maygay) (M1A/B) (set 2)", - "m1ultchlb", "Ultimate Challenge (Maygay) (M1A/B) (set 3)", - "m1ultchlc", "Ultimate Challenge (Maygay) (M1A/B) (set 4)", - "m1undsie", "Under Siege (Maygay) (M1A/B) (set 1)", - "m1undsiea", "Under Siege (Maygay) (M1A/B) (set 2)", - "m1undsieb", "Under Siege (Maygay) (M1A/B) (set 3)", - "m1undsiec", "Under Siege (Maygay) (M1A/B) (set 4)", - "m1vegas", "Vegas Gambler Club (Maygay) (M1A/B) (set 1)", - "m1vegasa", "Vegas Gambler Club (Maygay) (M1A/B) (set 2)", - "m1vegasb", "Vegas Gambler Club (Maygay) (M1A/B) (set 3)", - "m1vegcrw", "Vegetable Crew (Global) (M1A/B)", - "m1wagon", "Wagon Trail (Maygay) (M1A/B) (set 1)", - "m1wagona", "Wagon Trail (Maygay) (M1A/B) (set 2)", - "m1wagonb", "Wagon Trail (Maygay) (M1A/B) (set 3)", - "m1wagonc", "Wagon Trail (Maygay) (M1A/B) (set 4)", - "m1winenc", "John Francombe's Winners Enclosure (Maygay) (M1A/B) (set 1)", - "m1winenca", "John Francombe's Winners Enclosure (Maygay) (M1A/B) (set 2)", - "m1winencb", "John Francombe's Winners Enclosure (Maygay) (M1A/B) (set 3)", - "m1winencc", "John Francombe's Winners Enclosure (Maygay) (M1A/B) (set 4)", - "m1wldzne", "Wild Zone (Maygay) (M1A/B) (set 1)", - "m1wldznea", "Wild Zone (Maygay) (M1A/B) (set 2)", - "m1wldzneb", "Wild Zone (Maygay) (M1A/B) (set 3)", - "m1wldznec", "Wild Zone (Maygay) (M1A/B) (set 4)", - "m1wldzned", "Wild Zone (Maygay) (M1A/B) (set 5)", - "m1wldznee", "Wild Zone (Maygay) (M1A/B) (set 6)", - "m1wldznef", "Wild Zone (Maygay) (M1A/B) (set 7)", - "m1wldzneg", "Wild Zone (Maygay) (M1A/B) (set 8)", - "m1wldzneh", "Wild Zone (Maygay) (M1A/B) (set 9)", - "m1wldznei", "Wild Zone (Maygay) (M1A/B) (set 10)", - "m1wldznej", "Wild Zone (Maygay) (M1A/B) (set 11)", - "m1wldznek", "Wild Zone (Maygay) (M1A/B) (set 12)", - "m1wldznel", "Wild Zone (Maygay) (M1A/B) (set 13)", - "m1wldznem", "Wild Zone (Maygay) (M1A/B) (set 14)", - "m1wldznen", "Wild Zone (Maygay) (M1A/B) (set 15)", - "m1wldzneo", "Wild Zone (Maygay) (M1A/B) (set 16)", - "m1wldznep", "Wild Zone (Maygay) (M1A/B) (set 17)", - "m1wldzneq", "Wild Zone (Maygay) (M1A/B) (set 18)", - "m1wldzner", "Wild Zone (Maygay) (M1A/B) (set 19)", - "m1wldznes", "Wild Zone (Maygay) (M1A/B) (set 20)", - "m1wotw", "War Of The Worlds (Maygay) (M1A/B) (set 1)", - "m1wotwa", "War Of The Worlds (Maygay) (M1A/B) (set 2)", - "m1wotwb", "War Of The Worlds (Maygay) (M1A/B) (set 3)", - "m21", "21 (Mirco)", - "m2hilite", "Hi-Lights (Barcrest) (MPU2)", - "m2svlite", "Silver Lights (Barcrest) (MPU2)", - "m3acech", "Ace Chase (Bwb) (MPU3)", - "m3autort", "Autoroute (Barcrest) (MPU3)", - "m3bankr", "Banker (Bwb) (MPU3)", - "m3big20j", "Big 20 Joker (Barcrest) (MPU3)", - "m3biggam", "The Big Game (Barcrest) (MPU3)", - "m3bigsht", "Big Shot (Barcrest) (MPU3)", - "m3blkhle", "Black Hole (Barcrest) (MPU3)", - "m3cabret", "Cabaret (Barcrest) (MPU3, set 1)", - "m3cabreta", "Cabaret (Barcrest) (MPU3, set 2)", - "m3cdash", "Cash Dash (Pcp) (MPU3)", - "m3chase", "Chase It (Bwb) (MPU3)", - "m3circle", "Special Circle Club (Barcrest) (MPU3, set 1)", - "m3circlea", "Special Circle Club (Barcrest) (MPU3, set 2)", - "m3circleb", "Special Circle Club (Barcrest) (MPU3, set 3)", - "m3cjoker", "Crazy Joker (Barcrest) (MPU3)", - "m3cskill", "Circle Skill (Barcrest) (MPU3)", - "m3cunlim", "Chances Unlimited (Barcrest) (MPU3)", - "m3fortun", "Fortune Numbers (Barcrest) (MPU3, set 1)", - "m3fortuna", "Fortune Numbers (Barcrest) (MPU3, set 2)", - "m3fortund", "Fortune Numbers (Barcrest) [Dutch] (MPU3)", - "m3gaward", "Golden Award (Barcrest) (MPU3)", - "m3gcrown", "Golden Crowns (Mdm) (MPU3)", - "m3gmine", "Gold Mine (Bwb) (MPU3)", - "m3hprvpr", "Hyper Viper (Barcrest) (MPU3)", - "m3lineup", "Line Up (Barcrest) (MPU3)", - "m3llotto", "Lucky Lotto (Barcrest) (MPU3)", - "m3loony", "Loonybin (Pcp) (MPU3)", - "m3lstrik", "Lucky Strike Club (Barcrest) (MPU3, set 1)", - "m3lstrika", "Lucky Strike Club (Barcrest) (MPU3, set 2)", - "m3magrp", "Magic Replay (Barcrest) (MPU3)", - "m3minmax", "Mini Max (Associated Leisure) (MPU3)", - "m3mremon", "More Money (VFS) (MPU3)", - "m3nnice", "Naughty But Nice (Barcrest) (MPU3)", - "m3nudge", "Nudges Unlimited (Barcrest) (MPU3)", - "m3oddson", "Odds On (Barcrest) (MPU3)", - "m3online", "On Line (Pcp) (MPU3)", - "m3optunl", "Options Unlimited (Barcrest) (MPU3)", - "m3oxo", "Noughts 'n' Crosses (VFS) (MPU3)", - "m3ratrce", "Rat Race (Bwb) (MPU3)", - "m3razdaz", "Razzle Dazzle (Barcrest) (MPU3, set 1)", - "m3razdaza", "Razzle Dazzle (Barcrest) (MPU3, set 2)", - "m3razdazd", "Razzle Dazzle (Barcrest) [Dutch] (MPU3)", - "m3replay", "Instant Replay (Barcrest) (MPU3)", - "m3rockpl", "Rock Pile (Pcp) (MPU3)", - "m3rollem", "Roll 'Em (Pcp) (MPU3)", - "m3rxchng", "Royal Exchange Club (Barcrest) (MPU3)", - "m3scoop", "Scoop (Peter Simper, prototype?) (MPU3)", - "m3sdeal", "Super Deal (Barcrest) (MPU3)", - "m3sexcu", "Super Exchanges Unlimited (Barcrest) (MPU3)", - "m3slight", "Strike A Light (Barcrest) (MPU3)", - "m3snaphp", "Snap Happy (Pcp) (MPU3)", - "m3snappy", "Snappy Viper (Barcrest) (MPU3)", - "m3spoof", "Spoof (Pcp) (MPU3, set 1)", - "m3spoofa", "Spoof (Pcp) (MPU3, set 2)", - "m3supadr", "Super Adders & Ladders (Barcrest) (MPU3)", - "m3supasw", "Supaswop (Bwb) (MPU3)", - "m3suplin", "Super Line Up (Barcrest) (MPU3, set 1)", - "m3suplina", "Super Line Up (Barcrest) (MPU3, set 2)", - "m3supnud", "Super Nudges Unlimited (Barcrest) (MPU3)", - "m3supser", "Super Series (Barcrest) (MPU3)", - "m3supspo", "Super Spoof (Pcp) (MPU3, set 1)", - "m3supspoa", "Super Spoof (Pcp) (MPU3, set 2)", - "m3supwin", "Super Win (Bwb) (MPU3, set 1)", - "m3supwina", "Super Win (Bwb) (MPU3, set 2)", - "m3sweep", "Sweep Stake Club (Barcrest) (MPU3, set 1)", - "m3sweepa", "Sweep Stake Club (Barcrest) (MPU3, set 2)", - "m3tfair", "Tuppenny Fair (Mdm) (MPU3)", - "m3tlktwn", "Talk of the Town (MPU3?)", - "m3toplin", "Top Line (Pcp) (MPU3)", - "m3topsht", "Top Shot (Barcrest) (MPU3)", - "m3tst", "MPU3 Unit Test (Program 5) (Barcrest) (MPU3)", - "m3wacky", "Wacky Racer (Mdm) (MPU3)", - "m3wigwam", "Wig Wam (Pcp) (MPU3)", - "m3winagn", "Win-A-Gain (Bwb) (MPU3, set 1)", - "m3winagna", "Win-A-Gain (Bwb) (MPU3, set 2)", - "m3winagnb", "Win-A-Gain (Bwb) (MPU3, set 3)", - "m3winstr", "Winstrike (Bwb) (MPU3)", - "m3winstra", "Winstrike (Barcrest) (MPU3)", - "m3xchngg", "Exchanges Galore (Barcrest) (MPU3)", - "m3xchngu", "Exchanges Unlimited (Barcrest) (MPU3, set 1)", - "m3xchngua", "Exchanges Unlimited (Barcrest) (MPU3, set 2)", - "m4", "M-4", - "m421", "Twenty One (Barcrest) (MPU4)", - "m421club", "21 Club (Barcrest) [DTW, Dutch] (MPU4)", - "m42punlm", "2p Unlimited (Mdm) (MPU4)", - "m4aao", "Against All Odds (Eurotek) (MPU4)", - "m4abeaut", "American Beauty (Avantime?) (MPU4) (AB, set 1)", - "m4abeaut_1", "American Beauty (Avantime?) (MPU4) (AB, set 2)", - "m4abeaut_2", "American Beauty (Avantime?) (MPU4) (AB, set 3)", - "m4abeaut_3", "American Beauty (Avantime?) (MPU4) (AB, set 4)", - "m4abeaut_4", "American Beauty (Avantime?) (MPU4) (AB, set 5)", - "m4abeaut_5", "American Beauty (Avantime?) (MPU4) (AB, set 6)", - "m4abeaut_6", "American Beauty (Avantime?) (MPU4) (AB, set 7)", - "m4abeaut_7", "American Beauty (Avantime?) (MPU4) (AB, set 8)", - "m4abeaut_8", "American Beauty (Avantime?) (MPU4) (AB, set 9)", - "m4abeaut_9", "American Beauty (Avantime?) (MPU4) (AB, set 10)", - "m4abeaut_c1", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 1)", - "m4abeaut_c10", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 10)", - "m4abeaut_c11", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 11)", - "m4abeaut_c12", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 12)", - "m4abeaut_c13", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 13)", - "m4abeaut_c14", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 14)", - "m4abeaut_c15", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 15)", - "m4abeaut_c16", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 1)", - "m4abeaut_c17", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 2)", - "m4abeaut_c18", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 3)", - "m4abeaut_c19", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 4)", - "m4abeaut_c2", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 2)", - "m4abeaut_c20", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 5)", - "m4abeaut_c21", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 6)", - "m4abeaut_c22", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 7)", - "m4abeaut_c23", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 8)", - "m4abeaut_c24", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 9)", - "m4abeaut_c25", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 10)", - "m4abeaut_c26", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 11)", - "m4abeaut_c27", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 12)", - "m4abeaut_c28", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 13)", - "m4abeaut_c29", "American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 14)", - "m4abeaut_c3", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 3)", - "m4abeaut_c30", "American Beauty (Avantime?) (MPU4) (M2C1, Czech, set 1)", - "m4abeaut_c31", "American Beauty (Avantime?) (MPU4) (M2C1, Czech, set 2)", - "m4abeaut_c4", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 4)", - "m4abeaut_c5", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 5)", - "m4abeaut_c6", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 6)", - "m4abeaut_c7", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 7)", - "m4abeaut_c8", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 8)", - "m4abeaut_c9", "American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 9)", - "m4abeaut_i1", "American Beauty (Avantime?) (MPU4) (A2I0, Israel, set 1)", - "m4abeaut_i2", "American Beauty (Avantime?) (MPU4) (A2I0, Israel, set 2)", - "m4abeaut_k1", "American Beauty (Avantime?) (MPU4) (A2K0, set 1)", - "m4abeaut_k2", "American Beauty (Avantime?) (MPU4) (A2K0, set 2)", - "m4abeaut_l1", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 1)", - "m4abeaut_l10", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 10)", - "m4abeaut_l11", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 11)", - "m4abeaut_l12", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 12)", - "m4abeaut_l13", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 1)", - "m4abeaut_l14", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 2)", - "m4abeaut_l15", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 3)", - "m4abeaut_l16", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 4)", - "m4abeaut_l17", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 5)", - "m4abeaut_l18", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 6)", - "m4abeaut_l19", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 7)", - "m4abeaut_l2", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 2)", - "m4abeaut_l20", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 8)", - "m4abeaut_l21", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 9)", - "m4abeaut_l22", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 10)", - "m4abeaut_l23", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 11)", - "m4abeaut_l24", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 12)", - "m4abeaut_l25", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 13)", - "m4abeaut_l26", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 14)", - "m4abeaut_l27", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 15)", - "m4abeaut_l28", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 16)", - "m4abeaut_l29", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 17)", - "m4abeaut_l3", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 3)", - "m4abeaut_l30", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 18)", - "m4abeaut_l31", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 19)", - "m4abeaut_l32", "American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 20)", - "m4abeaut_l33", "American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 1)", - "m4abeaut_l34", "American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 2)", - "m4abeaut_l35", "American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 3)", - "m4abeaut_l36", "American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 4)", - "m4abeaut_l37", "American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 5)", - "m4abeaut_l38", "American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 6)", - "m4abeaut_l4", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 4)", - "m4abeaut_l5", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 5)", - "m4abeaut_l6", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 6)", - "m4abeaut_l7", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 7)", - "m4abeaut_l8", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 8)", - "m4abeaut_l9", "American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 9)", - "m4abeaut_m1", "American Beauty (Avantime?) (MPU4) (ABM1, Montenegro, set 1)", - "m4abeaut_m2", "American Beauty (Avantime?) (MPU4) (ABM1, Montenegro, set 2)", - "m4abeaut_m3", "American Beauty (Avantime?) (MPU4) (ABM2, Montenegro, set 1)", - "m4abeaut_m4", "American Beauty (Avantime?) (MPU4) (ABM2, Montenegro, set 2)", - "m4abeaut_pb1", "American Beauty (Avantime?) (MPU4) (AJL0, Project Bar, set 1)", - "m4abeaut_pb2", "American Beauty (Avantime?) (MPU4) (AJL0, Project Bar, set 2)", - "m4abeaut_r1", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 1)", - "m4abeaut_r10", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 10)", - "m4abeaut_r11", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 11)", - "m4abeaut_r12", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 12)", - "m4abeaut_r13", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 13)", - "m4abeaut_r14", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 14)", - "m4abeaut_r2", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 2)", - "m4abeaut_r3", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 3)", - "m4abeaut_r4", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 4)", - "m4abeaut_r5", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 5)", - "m4abeaut_r6", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 6)", - "m4abeaut_r7", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 7)", - "m4abeaut_r8", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 8)", - "m4abeaut_r9", "American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 9)", - "m4abeaut_s1", "American Beauty (Avantime?) (MPU4) (ABS1, Slovakia, set 1)", - "m4abeaut_s2", "American Beauty (Avantime?) (MPU4) (ABS1, Slovakia, set 2)", - "m4abeaut_s3", "American Beauty (Avantime?) (MPU4) (ABS2, Slovakia, set 1)", - "m4abeaut_s4", "American Beauty (Avantime?) (MPU4) (ABS2, Slovakia, set 2)", - "m4abeaut_u1", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 1)", - "m4abeaut_u10", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 10)", - "m4abeaut_u11", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 11)", - "m4abeaut_u12", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 12)", - "m4abeaut_u13", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 13)", - "m4abeaut_u14", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 14)", - "m4abeaut_u15", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 15)", - "m4abeaut_u16", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 16)", - "m4abeaut_u17", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 17)", - "m4abeaut_u18", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 18)", - "m4abeaut_u19", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 19)", - "m4abeaut_u2", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 2)", - "m4abeaut_u20", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 20)", - "m4abeaut_u21", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 21)", - "m4abeaut_u22", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 22)", - "m4abeaut_u23", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 23)", - "m4abeaut_u24", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 24)", - "m4abeaut_u25", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 25)", - "m4abeaut_u26", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 26)", - "m4abeaut_u27", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 27)", - "m4abeaut_u28", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 28)", - "m4abeaut_u29", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 29)", - "m4abeaut_u3", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 3)", - "m4abeaut_u30", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 30)", - "m4abeaut_u31", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 31)", - "m4abeaut_u32", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 32)", - "m4abeaut_u33", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 33)", - "m4abeaut_u34", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 34)", - "m4abeaut_u35", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 35)", - "m4abeaut_u36", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 36)", - "m4abeaut_u37", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 37)", - "m4abeaut_u38", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 38)", - "m4abeaut_u39", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 39)", - "m4abeaut_u4", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 4)", - "m4abeaut_u40", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 40)", - "m4abeaut_u41", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 41)", - "m4abeaut_u42", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 42)", - "m4abeaut_u43", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 43)", - "m4abeaut_u44", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 44)", - "m4abeaut_u45", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 45)", - "m4abeaut_u46", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 46)", - "m4abeaut_u47", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 47)", - "m4abeaut_u48", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 48)", - "m4abeaut_u49", "American Beauty (Avantime?) (MPU4) (ABU2, Ukraine, set 1)", - "m4abeaut_u5", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 5)", - "m4abeaut_u50", "American Beauty (Avantime?) (MPU4) (ABU2, Ukraine, set 2)", - "m4abeaut_u51", "American Beauty (Avantime?) (MPU4) (ABU2, Ukraine, set 3)", - "m4abeaut_u52", "American Beauty (Avantime?) (MPU4) (ABU2, Ukraine, set 4)", - "m4abeaut_u53", "American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 1)", - "m4abeaut_u54", "American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 2)", - "m4abeaut_u55", "American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 3)", - "m4abeaut_u56", "American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 4)", - "m4abeaut_u57", "American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 5)", - "m4abeaut_u58", "American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 6)", - "m4abeaut_u59", "American Beauty (Avantime?) (MPU4) (A2U3, Ukraine, set 1)", - "m4abeaut_u6", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 6)", - "m4abeaut_u60", "American Beauty (Avantime?) (MPU4) (A2U3, Ukraine, set 2)", - "m4abeaut_u61", "American Beauty (Avantime?) (MPU4) (A3U2, Ukraine, set 1)", - "m4abeaut_u62", "American Beauty (Avantime?) (MPU4) (A3U2, Ukraine, set 2)", - "m4abeaut_u63", "American Beauty (Avantime?) (MPU4) (A3U2, Ukraine, set 3)", - "m4abeaut_u64", "American Beauty (Avantime?) (MPU4) (A3U2, Ukraine, set 4)", - "m4abeaut_u7", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 7)", - "m4abeaut_u8", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 8)", - "m4abeaut_u9", "American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 9)", - "m4abra", "Abracadabra (Bwb) (MPU4) (set 1)", - "m4abra__a", "Abracadabra (Bwb) (MPU4) (set 2)", - "m4abra__b", "Abracadabra (Bwb) (MPU4) (set 3)", - "m4abra__c", "Abracadabra (Bwb) (MPU4) (set 4)", - "m4acechs", "Ace Chase (Barcrest) (MPU4) (set 1)", - "m4acechs__a", "Ace Chase (Barcrest) (MPU4) (set 2)", - "m4acechs__b", "Ace Chase (Barcrest) (MPU4) (set 3)", - "m4acechs__c", "Ace Chase (Barcrest) (MPU4) (set 4)", - "m4acechs__d", "Ace Chase (Barcrest) (MPU4) (set 5)", - "m4acechs__e", "Ace Chase (Barcrest) (MPU4) (set 6)", - "m4acechs__f", "Ace Chase (Barcrest) (MPU4) (set 7)", - "m4acechs__g", "Ace Chase (Barcrest) (MPU4) (set 8)", - "m4acechs__h", "Ace Chase (Barcrest) (MPU4) (set 9)", - "m4acechs__i", "Ace Chase (Barcrest) (MPU4) (set 10)", - "m4acechs__j", "Ace Chase (Barcrest) (MPU4) (set 11)", - "m4acechs__k", "Ace Chase (Barcrest) (MPU4) (set 12)", - "m4acechs__l", "Ace Chase (Barcrest) (MPU4) (set 13)", - "m4acechs__m", "Ace Chase (Barcrest) (MPU4) (set 14)", - "m4acechs__n", "Ace Chase (Barcrest) (MPU4) (set 15)", - "m4acechs__o", "Ace Chase (Barcrest) (MPU4) (set 16)", - "m4acechs__p", "Ace Chase (Barcrest) (MPU4) (set 17)", - "m4acechs__q", "Ace Chase (Barcrest) (MPU4) (set 18)", - "m4acechs__r", "Ace Chase (Barcrest) (MPU4) (set 19)", - "m4acechs__s", "Ace Chase (Barcrest) (MPU4) (set 20)", - "m4acechs__t", "Ace Chase (Barcrest) (MPU4) (set 21)", - "m4acechs__u", "Ace Chase (Barcrest) (MPU4) (set 22)", - "m4actbnk", "Action Bank (Barcrest) (MPU4) (set 1)", - "m4actbnk__a", "Action Bank (Barcrest) (MPU4) (set 2)", - "m4actbnk__b", "Action Bank (Barcrest) (MPU4) (set 3)", - "m4actbnk__c", "Action Bank (Barcrest) (MPU4) (set 4)", - "m4actbnk__d", "Action Bank (Barcrest) (MPU4) (set 5)", - "m4actbnk__e", "Action Bank (Barcrest) (MPU4) (set 6)", - "m4actbnk__f", "Action Bank (Barcrest) (MPU4) (set 7)", - "m4actbnk__g", "Action Bank (Barcrest) (MPU4) (set 8)", - "m4actbnk__h", "Action Bank (Barcrest) (MPU4) (set 9)", - "m4actbnk__i", "Action Bank (Barcrest) (MPU4) (set 10)", - "m4actbnka", "Action Bank (Barcrest) (Mod 2 type, AC3.0) (MPU4)", - "m4actbnkb", "Action Bank (Barcrest) (Mod 2 type, ACT2.0) (MPU4)", - "m4actclb", "Action Club (Barcrest) (MPU4) (1.9)", - "m4actclba", "Action Club (Barcrest) (MPU4) (1.1)", - "m4actnot", "Action Note (Barcrest) (MPU4) (AN 1.2)", - "m4actpak", "Action Pack (Barcrest) (MPU4) (AP 0.4)", - "m4actpaka", "Action Pack (Barcrest) (MPU4) (AP 0.5)", - "m4addr", "Adders & Ladders (Barcrest) (MPU4) (A6L 0.1)", - "m4addr10", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0, set 1)", - "m4addr10_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0, set 2)", - "m4addr10c", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, set 1)", - "m4addr10c_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, set 2)", - "m4addr10d", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0D, set 1)", - "m4addr10d_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0D, set 2)", - "m4addr10yd", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0YD, set 1)", - "m4addr10yd_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0YD, set 2)", - "m4addr3", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0, set 1)", - "m4addr3_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0, set 2)", - "m4addr3_b", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0, set 3)", - "m4addr3_c", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0, set 4)", - "m4addr3_d", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0, set 5)", - "m4addr3d", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0D, set 1)", - "m4addr3d_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0D, set 2)", - "m4addr3d_b", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0D, set 3)", - "m4addr3d_c", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0D, set 4)", - "m4addr3yd", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0YD, set 1)", - "m4addr3yd_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0YD, set 2)", - "m4addr3yd_b", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0YD, set 3)", - "m4addr3yd_c", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 3.0YD, set 4)", - "m4addr4", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 4.0, set 1)", - "m4addr4_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 4.0, set 2)", - "m4addr4c", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 4.0C, set 1)", - "m4addr4c_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 4.0C, set 2)", - "m4addr4c_b", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 4.0C, set 3)", - "m4addr4d", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 4.0D, set 1)", - "m4addr4yd", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 4.0YD, set 1)", - "m4addr5", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 5.0, set 1)", - "m4addr5_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 5.0, set 2)", - "m4addr5c", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 5.0C, set 1)", - "m4addr5c_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 5.0C, set 2)", - "m4addr5d", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 5.0D, set 1)", - "m4addr5d_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 5.0D, set 2)", - "m4addr5yd", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 5.0YD, set 1)", - "m4addr5yd_a", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 5.0YD, set 2)", - "m4addr6lc", "Adders & Ladders (Barcrest) (MPU4) (A6L 0.1C)", - "m4addr6ld", "Adders & Ladders (Barcrest) (MPU4) (A6L 0.1D)", - "m4addr6lk", "Adders & Ladders (Barcrest) (MPU4) (A6L 0.1K)", - "m4addr6ly", "Adders & Ladders (Barcrest) (MPU4) (A6L 0.1Y)", - "m4addr6lybd", "Adders & Ladders (Barcrest) (MPU4) (A6L 0.1YBD)", - "m4addr6lyd", "Adders & Ladders (Barcrest) (MPU4) (A6L 0.1YD)", - "m4addr_h1", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack?, set 1)", - "m4addr_h2", "Adders & Ladders (Bwb / Barcrest) (MPU4) (ADD 1.0C, hack?, set 2)", - "m4addrc", "Adders & Ladders Classic (Barcrest) (MPU4) (set 1)", - "m4addrc__a", "Adders & Ladders Classic (Barcrest) (MPU4) (set 2)", - "m4addrc__b", "Adders & Ladders Classic (Barcrest) (MPU4) (set 3)", - "m4addrc__c", "Adders & Ladders Classic (Barcrest) (MPU4) (set 4)", - "m4addrc__d", "Adders & Ladders Classic (Barcrest) (MPU4) (set 5)", - "m4addrc__e", "Adders & Ladders Classic (Barcrest) (MPU4) (set 6)", - "m4addrc__f", "Adders & Ladders Classic (Barcrest) (MPU4) (set 7)", - "m4addrc__h", "Adders & Ladders Classic (Barcrest) (MPU4) (set 8)", - "m4addrc__i", "Adders & Ladders Classic (Barcrest) (MPU4) (set 9)", - "m4addrc__j", "Adders & Ladders Classic (Barcrest) (MPU4) (set 10)", - "m4addrc__k", "Adders & Ladders Classic (Barcrest) (MPU4) (set 11)", - "m4addrc__l", "Adders & Ladders Classic (Barcrest) (MPU4) (set 12)", - "m4addrc__m", "Adders & Ladders Classic (Barcrest) (MPU4) (set 13)", - "m4addrc__n", "Adders & Ladders Classic (Barcrest) (MPU4) (set 14)", - "m4addrcc", "Adders & Ladders Classic Club (Barcrest) (MPU4) (set 1)", - "m4addrcc__a", "Adders & Ladders Classic Club (Barcrest) (MPU4) (set 2)", - "m4addrcc__b", "Adders & Ladders Classic Club (Barcrest) (MPU4) (set 3)", - "m4addrcc__c", "Adders & Ladders Classic Club (Barcrest) (MPU4) (set 4)", - "m4addrcc__d", "Adders & Ladders Classic Club (Barcrest) (MPU4) (set 5)", - "m4addrd", "Adders & Ladders (Barcrest) (DAL, Dutch) (MPU4)", - "m4aladn", "Aladdin's Cave (Crystal) (MPU4) (set 1)", - "m4aladna", "Aladdin's Cave (Crystal) (MPU4) (set 2)", - "m4aladnb", "Aladdin's Cave (Crystal) (MPU4) (set 3)", - "m4aladnc", "Aladdin's Cave (Crystal) (MPU4) (set 4)", - "m4aladnd", "Aladdin's Cave (Crystal) (MPU4) (set 5)", - "m4aladne", "Aladdin's Cave (Crystal) (MPU4) (set 6)", - "m4aladnf", "Aladdin's Cave (Crystal) (MPU4) (set 7)", - "m4aladng", "Aladdin's Cave (Crystal) (MPU4) (set 8)", - "m4aladnh", "Aladdin's Cave (Crystal) (MPU4) (set 9)", - "m4aladni", "Aladdin's Cave (Crystal) (MPU4) (set 10)", - "m4aliz", "AlizBaz (Qps) (German) (MPU4)", - "m4alladv", "All Cash Advance (Barcrest) (MPU4) (C2B 6.0)", - "m4alpha", "Alphabet (Barcrest) [A4B 1.0] (MPU4)", - "m4amalad", "American Aladdin (Avantime?) (MPU4) (set 1)", - "m4amalad__a", "American Aladdin (Avantime?) (MPU4) (set 2)", - "m4amalad__b", "American Aladdin (Avantime?) (MPU4) (set 3)", - "m4amalad__c", "American Aladdin (Avantime?) (MPU4) (set 4)", - "m4amalad__d", "American Aladdin (Avantime?) (MPU4) (set 5)", - "m4amalad__e", "American Aladdin (Avantime?) (MPU4) (set 6)", - "m4amalad__f", "American Aladdin (Avantime?) (MPU4) (set 7)", - "m4amalad__g", "American Aladdin (Avantime?) (MPU4) (set 8)", - "m4amalad__h", "American Aladdin (Avantime?) (MPU4) (set 9)", - "m4amalad__i", "American Aladdin (Avantime?) (MPU4) (set 10)", - "m4amalad__j", "American Aladdin (Avantime?) (MPU4) (set 11)", - "m4amalad__k", "American Aladdin (Avantime?) (MPU4) (set 12)", - "m4amalad__l", "American Aladdin (Avantime?) (MPU4) (set 13)", - "m4amalad__m", "American Aladdin (Avantime?) (MPU4) (set 14)", - "m4amalad__n", "American Aladdin (Avantime?) (MPU4) (set 15)", - "m4ambass", "Ambassador (Barcrest) (DAM, Dutch) (MPU4)", - "m4amhiwy", "American Highway (Barcrest) (MPU4) (DAH)", - "m4andybt", "Andy's Big Time Club (Barcrest) (MPU4) (set 1)", - "m4andybt__a", "Andy's Big Time Club (Barcrest) (MPU4) (set 2)", - "m4andybt__b", "Andy's Big Time Club (Barcrest) (MPU4) (set 3)", - "m4andybt__c", "Andy's Big Time Club (Barcrest) (MPU4) (set 4)", - "m4andycp", "Andy Capp (Bwb / Barcrest) (MPU4) (AC10)", - "m4andycp10_a", "Andy Capp (Bwb / Barcrest) (MPU4) (AC10, hack?)", - "m4andycp10c", "Andy Capp (Bwb / Barcrest) (MPU4) (AC10C)", - "m4andycp10c_a", "Andy Capp (Bwb / Barcrest) (MPU4) (AC10C, hack?, set 1)", - "m4andycp10c_b", "Andy Capp (Bwb / Barcrest) (MPU4) (AC10C, hack?, set 2)", - "m4andycp10c_c", "Andy Capp (Bwb / Barcrest) (MPU4) (AC10C, hack?, set 3)", - "m4andycp10c_d", "Andy Capp (Bwb / Barcrest) (MPU4) (AC10C, hack?, set 4)", - "m4andycp10d", "Andy Capp (Bwb / Barcrest) (MPU4) (AC10D)", - "m4andycp10k", "Andy Capp (Bwb / Barcrest) (MPU4) (AC10K)", - "m4andycp10yd", "Andy Capp (Bwb / Barcrest) (MPU4) (AC10YD)", - "m4andycp20", "Andy Capp (Barcrest) (MPU4) (hack?, set 1)", - "m4andycp20_a", "Andy Capp (Barcrest) (MPU4) (hack?, set 2)", - "m4andycp20_b", "Andy Capp (Barcrest) (MPU4) (hack?, set 3)", - "m4andycp8", "Andy Capp (Barcrest) (MPU4) (AM8)", - "m4andycp8ad", "Andy Capp (Barcrest) (MPU4) (AN8 AD)", - "m4andycp8b", "Andy Capp (Barcrest) (MPU4) (AN8 B)", - "m4andycp8c", "Andy Capp (Barcrest) (MPU4) (AN8 C)", - "m4andycp8d", "Andy Capp (Barcrest) (MPU4) (AN8 D)", - "m4andycp8k", "Andy Capp (Barcrest) (MPU4) (AN8 K)", - "m4andycp8kd", "Andy Capp (Barcrest) (MPU4) (AN8 KD)", - "m4andycp8y", "Andy Capp (Barcrest) (MPU4) (AN8 Y)", - "m4andycp8yd", "Andy Capp (Barcrest) (MPU4) (AN8 YD)", - "m4andycpac", "Andy Capp (Bwb / Barcrest) (MPU4) (AC5)", - "m4andycpac_a", "Andy Capp (Bwb / Barcrest) (MPU4) (AC5, hack?)", - "m4andycpacc", "Andy Capp (Bwb / Barcrest) (MPU4) (AC5 C)", - "m4andycpacc_a", "Andy Capp (Bwb / Barcrest) (MPU4) (AC5 C, hack?, set 1)", - "m4andycpacc_b", "Andy Capp (Bwb / Barcrest) (MPU4) (AC5 C, hack?, set 2)", - "m4andycpacc_c", "Andy Capp (Bwb / Barcrest) (MPU4) (AC5 C, hack?, set 3)", - "m4andycpacc_d", "Andy Capp (Bwb / Barcrest) (MPU4) (AC5 C, hack?, set 4)", - "m4andycpacc_e", "Andy Capp (Bwb / Barcrest) (MPU4) (AC5 C, hack?, set 5)", - "m4andycpaccsd", "Andy Capp (Bwb / Barcrest) (MPU4) (ACC5)", - "m4andycpacd", "Andy Capp (Bwb / Barcrest) (MPU4) (AC5 D)", - "m4andycpack", "Andy Capp (Bwb / Barcrest) (MPU4) (AC5 K)", - "m4andycpacyd", "Andy Capp (Bwb / Barcrest) (MPU4) (AC5 YD)", - "m4andycpc2", "Andy Capp (Barcrest) (MPU4) (C2T, set 1)", - "m4andycpc2_a", "Andy Capp (Barcrest) (MPU4) (C2T, set 2)", - "m4andycpc2ad", "Andy Capp (Barcrest) (MPU4) (C2T AD)", - "m4andycpc2b", "Andy Capp (Barcrest) (MPU4) (C2T B)", - "m4andycpc2bd", "Andy Capp (Barcrest) (MPU4) (C2T BD)", - "m4andycpc2d", "Andy Capp (Barcrest) (MPU4) (C2T D)", - "m4andycpc2k", "Andy Capp (Barcrest) (MPU4) (C2T K)", - "m4andycpc2kd", "Andy Capp (Barcrest) (MPU4) (C2T KD)", - "m4andycpc2r", "Andy Capp (Barcrest) (MPU4) (C2T R)", - "m4andycpc2rd", "Andy Capp (Barcrest) (MPU4) (C2T RD)", - "m4andycpc2y", "Andy Capp (Barcrest) (MPU4) (C2T Y)", - "m4andycpc2yd", "Andy Capp (Barcrest) (MPU4) (C2T YD)", - "m4andycpc5", "Andy Capp (Barcrest) (MPU4) (C5T)", - "m4andycpc5ad", "Andy Capp (Barcrest) (MPU4) (C5T AD)", - "m4andycpc5b", "Andy Capp (Barcrest) (MPU4) (C5T B)", - "m4andycpc5bd", "Andy Capp (Barcrest) (MPU4) (C5T BD)", - "m4andycpc5d", "Andy Capp (Barcrest) (MPU4) (C5T D)", - "m4andycpc5k", "Andy Capp (Barcrest) (MPU4) (C5T K)", - "m4andycpc5kd", "Andy Capp (Barcrest) (MPU4) (C5T KD)", - "m4andycpc5y", "Andy Capp (Barcrest) (MPU4) (C5T Y)", - "m4andycpc5yd", "Andy Capp (Barcrest) (MPU4) (C5T YD)", - "m4andycpd", "Andy Capp (Barcrest) (MPU4) (AND)", - "m4andycpdc", "Andy Capp (Barcrest) (MPU4) (AND C)", - "m4andycpdd", "Andy Capp (Barcrest) (MPU4) (AND D)", - "m4andycpdk", "Andy Capp (Barcrest) (MPU4) (AND K)", - "m4andycpdut", "Andy Capp (Barcrest) [DAC 1.3, Dutch] (MPU4)", - "m4andycpdy", "Andy Capp (Barcrest) (MPU4) (AND Y, set 1)", - "m4andycpdy_a", "Andy Capp (Barcrest) (MPU4) (AND Y, set 2)", - "m4andycpdyd", "Andy Capp (Barcrest) (MPU4) (AND YD)", - "m4andyfh", "Andy's Full House (Barcrest) (MPU4) (set 1)", - "m4andyfh__0", "Andy's Full House (Barcrest) (MPU4) (set 28)", - "m4andyfh__1", "Andy's Full House (Barcrest) (MPU4) (set 29)", - "m4andyfh__2", "Andy's Full House (Barcrest) (MPU4) (set 30)", - "m4andyfh__3", "Andy's Full House (Barcrest) (MPU4) (set 31)", - "m4andyfh__4", "Andy's Full House (Barcrest) (MPU4) (set 32)", - "m4andyfh__5", "Andy's Full House (Barcrest) (MPU4) (set 33)", - "m4andyfh__6", "Andy's Full House (Barcrest) (MPU4) (set 34)", - "m4andyfh__7", "Andy's Full House (Barcrest) (MPU4) (set 35)", - "m4andyfh__8", "Andy's Full House (Barcrest) (MPU4) (set 36)", - "m4andyfh__9", "Andy's Full House (Barcrest) (MPU4) (set 37)", - "m4andyfh__a", "Andy's Full House (Barcrest) (MPU4) (set 2)", - "m4andyfh__a0", "Andy's Full House (Barcrest) (MPU4) (set 64)", - "m4andyfh__a1", "Andy's Full House (Barcrest) (MPU4) (set 65)", - "m4andyfh__a2", "Andy's Full House (Barcrest) (MPU4) (set 66)", - "m4andyfh__a3", "Andy's Full House (Barcrest) (MPU4) (set 67)", - "m4andyfh__a4", "Andy's Full House (Barcrest) (MPU4) (set 68)", - "m4andyfh__aa", "Andy's Full House (Barcrest) (MPU4) (set 38)", - "m4andyfh__ab", "Andy's Full House (Barcrest) (MPU4) (set 39)", - "m4andyfh__ac", "Andy's Full House (Barcrest) (MPU4) (set 40)", - "m4andyfh__ad", "Andy's Full House (Barcrest) (MPU4) (set 41)", - "m4andyfh__ae", "Andy's Full House (Barcrest) (MPU4) (set 42)", - "m4andyfh__af", "Andy's Full House (Barcrest) (MPU4) (set 43)", - "m4andyfh__ag", "Andy's Full House (Barcrest) (MPU4) (set 44)", - "m4andyfh__ah", "Andy's Full House (Barcrest) (MPU4) (set 45)", - "m4andyfh__ai", "Andy's Full House (Barcrest) (MPU4) (set 46)", - "m4andyfh__aj", "Andy's Full House (Barcrest) (MPU4) (set 47)", - "m4andyfh__ak", "Andy's Full House (Barcrest) (MPU4) (set 48)", - "m4andyfh__al", "Andy's Full House (Barcrest) (MPU4) (set 49)", - "m4andyfh__am", "Andy's Full House (Barcrest) (MPU4) (set 50)", - "m4andyfh__an", "Andy's Full House (Barcrest) (MPU4) (set 51)", - "m4andyfh__ao", "Andy's Full House (Barcrest) (MPU4) (set 52)", - "m4andyfh__ap", "Andy's Full House (Barcrest) (MPU4) (set 53)", - "m4andyfh__aq", "Andy's Full House (Barcrest) (MPU4) (set 54)", - "m4andyfh__ar", "Andy's Full House (Barcrest) (MPU4) (set 55)", - "m4andyfh__as", "Andy's Full House (Barcrest) (MPU4) (set 56)", - "m4andyfh__at", "Andy's Full House (Barcrest) (MPU4) (set 57)", - "m4andyfh__au", "Andy's Full House (Barcrest) (MPU4) (set 58)", - "m4andyfh__av", "Andy's Full House (Barcrest) (MPU4) (set 59)", - "m4andyfh__aw", "Andy's Full House (Barcrest) (MPU4) (set 60)", - "m4andyfh__ax", "Andy's Full House (Barcrest) (MPU4) (set 61)", - "m4andyfh__ay", "Andy's Full House (Barcrest) (MPU4) (set 62)", - "m4andyfh__az", "Andy's Full House (Barcrest) (MPU4) (set 63)", - "m4andyfh__b", "Andy's Full House (Barcrest) (MPU4) (set 3)", - "m4andyfh__c", "Andy's Full House (Barcrest) (MPU4) (set 4)", - "m4andyfh__d", "Andy's Full House (Barcrest) (MPU4) (set 5)", - "m4andyfh__e", "Andy's Full House (Barcrest) (MPU4) (set 6)", - "m4andyfh__f", "Andy's Full House (Barcrest) (MPU4) (set 7)", - "m4andyfh__g", "Andy's Full House (Barcrest) (MPU4) (set 8)", - "m4andyfh__h", "Andy's Full House (Barcrest) (MPU4) (set 9)", - "m4andyfh__i", "Andy's Full House (Barcrest) (MPU4) (set 10)", - "m4andyfh__j", "Andy's Full House (Barcrest) (MPU4) (set 11)", - "m4andyfh__k", "Andy's Full House (Barcrest) (MPU4) (set 12)", - "m4andyfh__l", "Andy's Full House (Barcrest) (MPU4) (set 13)", - "m4andyfh__m", "Andy's Full House (Barcrest) (MPU4) (set 14)", - "m4andyfh__n", "Andy's Full House (Barcrest) (MPU4) (set 15)", - "m4andyfh__o", "Andy's Full House (Barcrest) (MPU4) (set 16)", - "m4andyfh__p", "Andy's Full House (Barcrest) (MPU4) (set 17)", - "m4andyfh__q", "Andy's Full House (Barcrest) (MPU4) (set 18)", - "m4andyfh__r", "Andy's Full House (Barcrest) (MPU4) (set 19)", - "m4andyfh__s", "Andy's Full House (Barcrest) (MPU4) (set 20)", - "m4andyfh__t", "Andy's Full House (Barcrest) (MPU4) (set 21)", - "m4andyfh__u", "Andy's Full House (Barcrest) (MPU4) (set 22)", - "m4andyfh__v", "Andy's Full House (Barcrest) (MPU4) (set 23)", - "m4andyfh__w", "Andy's Full House (Barcrest) (MPU4) (set 24)", - "m4andyfh__x", "Andy's Full House (Barcrest) (MPU4) (set 25)", - "m4andyfh__y", "Andy's Full House (Barcrest) (MPU4) (set 26)", - "m4andyfh__z", "Andy's Full House (Barcrest) (MPU4) (set 27)", - "m4andyfl", "Andy Loves Flo (Bwb / Barcrest) (MPU4) (AL4 2.1KS)", - "m4andyfl3", "Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1)", - "m4andyfl3ad", "Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1AD)", - "m4andyfl3b", "Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1B)", - "m4andyfl3bd", "Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1BD)", - "m4andyfl3d", "Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1D)", - "m4andyfl3k", "Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1K)", - "m4andyfl3kd", "Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1KD)", - "m4andyfl3y", "Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1Y)", - "m4andyfl3yd", "Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1YD)", - "m4andyfl8", "Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1)", - "m4andyfl8ad", "Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1AD)", - "m4andyfl8b", "Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1B)", - "m4andyfl8bd", "Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1BD)", - "m4andyfl8bs", "Andy Loves Flo (Bwb / Barcrest) (MPU4) (AL_ 2.4KS)", - "m4andyfl8c", "Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1C)", - "m4andyfl8d", "Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1D)", - "m4andyfl8k", "Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1K)", - "m4andyfl8kd", "Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1KD)", - "m4andyfl8y", "Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1Y)", - "m4andyflf", "Andy Loves Flo (Barcrest) (MPU4) (ALF 2.0)", - "m4andyflfb", "Andy Loves Flo (Barcrest) (MPU4) (ALF 2.0B)", - "m4andyflfc", "Andy Loves Flo (Barcrest) (MPU4) (ALF 2.0C)", - "m4andyflfk", "Andy Loves Flo (Barcrest) (MPU4) (ALF 2.0K)", - "m4andyflfr", "Andy Loves Flo (Barcrest) (MPU4) (ALF 2.0R)", - "m4andyflt", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4)", - "m4andyfltad", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4AD)", - "m4andyfltb", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4B)", - "m4andyfltbd", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4BD)", - "m4andyfltd", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4D)", - "m4andyfltk", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4K)", - "m4andyfltkd", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4KD)", - "m4andyfltr", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4R)", - "m4andyfltrd", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4RD)", - "m4andyflty", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4Y)", - "m4andyfltyd", "Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4YD)", - "m4andyflu", "Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3)", - "m4andyfluad", "Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3AD)", - "m4andyflub", "Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3B)", - "m4andyflubd", "Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3BD)", - "m4andyflud", "Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3D)", - "m4andyfluk", "Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3K)", - "m4andyflukd", "Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3KD)", - "m4andyflur", "Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3R)", - "m4andyflurd", "Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3RD)", - "m4andyfluy", "Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3Y)", - "m4andyfluyd", "Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3YD)", - "m4andyge", "Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3, set 1)", - "m4andyge28", "Andy's Great Escape (Barcrest) (MPU4) (A28 0.1)", - "m4andyge28ad", "Andy's Great Escape (Barcrest) (MPU4) (A28 0.1AD)", - "m4andyge28b", "Andy's Great Escape (Barcrest) (MPU4) (A28 0.1B)", - "m4andyge28bd", "Andy's Great Escape (Barcrest) (MPU4) (A28 0.1BD)", - "m4andyge28c", "Andy's Great Escape (Barcrest) (MPU4) (A28 0.1C)", - "m4andyge28d", "Andy's Great Escape (Barcrest) (MPU4) (A28 0.1D)", - "m4andyge28k", "Andy's Great Escape (Barcrest) (MPU4) (A28 0.1K)", - "m4andyge28kd", "Andy's Great Escape (Barcrest) (MPU4) (A28 0.1KD)", - "m4andyge28y", "Andy's Great Escape (Barcrest) (MPU4) (A28 0.1Y)", - "m4andyge28yd", "Andy's Great Escape (Barcrest) (MPU4) (A28 0.1YD)", - "m4andyge2t", "Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1)", - "m4andyge2tad", "Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1AD)", - "m4andyge2tb", "Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1B)", - "m4andyge2tbd", "Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1BD)", - "m4andyge2td", "Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1D)", - "m4andyge2tk", "Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1K)", - "m4andyge2tkd", "Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1KD)", - "m4andyge2ty", "Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1Y)", - "m4andyge2tyd", "Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1YD)", - "m4andyge5t", "Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1)", - "m4andyge5tad", "Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1AD)", - "m4andyge5tb", "Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1B)", - "m4andyge5tbd", "Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1BD)", - "m4andyge5td", "Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1D)", - "m4andyge5tk", "Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1K)", - "m4andyge5tkd", "Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1KD)", - "m4andyge5ty", "Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1Y)", - "m4andyge5tyd", "Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1YD)", - "m4andyge_h1", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (8V1 3.0, hack?, set 1)", - "m4andyge_h2", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (8V1 3.0, hack?, set 2)", - "m4andyge_h3", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (8V1 0.3, hack?, set 1)", - "m4andyge_h4", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (8V1 0.3, hack?, set 2)", - "m4andyge_hx1", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG5 3.0CX, hack?, set 1)", - "m4andyge_hx2", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG5 3.0CX, hack?, set 2)", - "m4andyge_hx3", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG5 3.0CX, hack?, set 3)", - "m4andyge_hx4", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG5 3.0CX, hack?, set 4)", - "m4andyge_hx5", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG__2.0CX, hack?)", - "m4andygeg5", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG5 3.0)", - "m4andygeg5a", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG5 3.0A)", - "m4andygeg5c", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG5 3.0C)", - "m4andygeg5d", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG5 3.0D)", - "m4andygeg5k", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG5 3.0K)", - "m4andygeg5yd", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG5 3.0YD)", - "m4andygeg_2", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG__2.0)", - "m4andygeg_2c", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG__2.0C)", - "m4andygeg_2d", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG__2.0D)", - "m4andygeg_2k", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG__2.0K)", - "m4andygeg_2yd", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AG__2.0YD)", - "m4andygegc2", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AGC 2.0)", - "m4andygegc2d", "Andy's Great Escape (Bwb / Barcrest) (MPU4) (AGC 2.0D)", - "m4andygen2_a", "Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3, set 2)", - "m4andygen2c", "Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3C)", - "m4andygen2d", "Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3D)", - "m4andygen2k", "Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3K)", - "m4andygen2y", "Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3Y)", - "m4apach", "Apache (Barcrest) (MPU4 w/ Plasma DMD?)", - "m4apachg", "Apache Gold (Empire) (MPU4, set 1)", - "m4apachga", "Apache Gold (Empire) (MPU4, set 2)", - "m4apachgb", "Apache Gold (Empire) (MPU4, set 3)", - "m4apachgc", "Apache Gold (Empire) (MPU4, set 4)", - "m4apachgd", "Apache Gold (Empire) (MPU4, set 5)", - "m4apachge", "Apache Gold (Empire) (MPU4, set 6)", - "m4apachgf", "Apache Gold (Empire) (MPU4, set 7)", - "m4atlan", "Atlantis (Barcrest) (DAT, Dutch) (MPU4)", - "m4bagcsh", "Bags Of Cash Club (Crystal) (MPU4) (set 1)", - "m4bagcsha", "Bags Of Cash Club (Crystal) (MPU4) (set 2)", - "m4bagtel", "Bagatelle (Barcrest) (MPU4) (set 1)", - "m4bagtel__0", "Bagatelle (Barcrest) (MPU4) (set 28)", - "m4bagtel__1", "Bagatelle (Barcrest) (MPU4) (set 29)", - "m4bagtel__2", "Bagatelle (Barcrest) (MPU4) (set 30)", - "m4bagtel__3", "Bagatelle (Barcrest) (MPU4) (set 31)", - "m4bagtel__4", "Bagatelle (Barcrest) (MPU4) (set 32)", - "m4bagtel__5", "Bagatelle (Barcrest) (MPU4) (set 33)", - "m4bagtel__6", "Bagatelle (Barcrest) (MPU4) (set 34)", - "m4bagtel__7", "Bagatelle (Barcrest) (MPU4) (set 35)", - "m4bagtel__8", "Bagatelle (Barcrest) (MPU4) (set 36)", - "m4bagtel__9", "Bagatelle (Barcrest) (MPU4) (set 37)", - "m4bagtel__a", "Bagatelle (Barcrest) (MPU4) (set 2)", - "m4bagtel__aa", "Bagatelle (Barcrest) (MPU4) (set 38)", - "m4bagtel__ab", "Bagatelle (Barcrest) (MPU4) (set 39)", - "m4bagtel__ac", "Bagatelle (Barcrest) (MPU4) (set 40)", - "m4bagtel__ad", "Bagatelle (Barcrest) (MPU4) (set 41)", - "m4bagtel__ae", "Bagatelle (Barcrest) (MPU4) (set 42)", - "m4bagtel__af", "Bagatelle (Barcrest) (MPU4) (set 43)", - "m4bagtel__ag", "Bagatelle (Barcrest) (MPU4) (set 45)", - "m4bagtel__b", "Bagatelle (Barcrest) (MPU4) (set 3)", - "m4bagtel__c", "Bagatelle (Barcrest) (MPU4) (set 4)", - "m4bagtel__d", "Bagatelle (Barcrest) (MPU4) (set 5)", - "m4bagtel__e", "Bagatelle (Barcrest) (MPU4) (set 6)", - "m4bagtel__f", "Bagatelle (Barcrest) (MPU4) (set 7)", - "m4bagtel__g", "Bagatelle (Barcrest) (MPU4) (set 8)", - "m4bagtel__h", "Bagatelle (Barcrest) (MPU4) (set 9)", - "m4bagtel__i", "Bagatelle (Barcrest) (MPU4) (set 10)", - "m4bagtel__j", "Bagatelle (Barcrest) (MPU4) (set 11)", - "m4bagtel__k", "Bagatelle (Barcrest) (MPU4) (set 12)", - "m4bagtel__l", "Bagatelle (Barcrest) (MPU4) (set 13)", - "m4bagtel__m", "Bagatelle (Barcrest) (MPU4) (set 14)", - "m4bagtel__n", "Bagatelle (Barcrest) (MPU4) (set 15)", - "m4bagtel__o", "Bagatelle (Barcrest) (MPU4) (set 16)", - "m4bagtel__p", "Bagatelle (Barcrest) (MPU4) (set 17)", - "m4bagtel__q", "Bagatelle (Barcrest) (MPU4) (set 18)", - "m4bagtel__r", "Bagatelle (Barcrest) (MPU4) (set 19)", - "m4bagtel__s", "Bagatelle (Barcrest) (MPU4) (set 20)", - "m4bagtel__t", "Bagatelle (Barcrest) (MPU4) (set 21)", - "m4bagtel__u", "Bagatelle (Barcrest) (MPU4) (set 22)", - "m4bagtel__v", "Bagatelle (Barcrest) (MPU4) (set 23)", - "m4bagtel__w", "Bagatelle (Barcrest) (MPU4) (set 24)", - "m4bagtel__x", "Bagatelle (Barcrest) (MPU4) (set 25)", - "m4bagtel__y", "Bagatelle (Barcrest) (MPU4) (set 26)", - "m4bagtel__z", "Bagatelle (Barcrest) (MPU4) (set 27)", - "m4bandgd", "Bands Of Gold (Eurogames) (MPU4)", - "m4bangin", "Bangin' Away (Global) (MPU4, set 1)", - "m4bangina", "Bangin' Away (Global) (MPU4, set 2)", - "m4banginb", "Bangin' Away (Global) (MPU4, set 3)", - "m4bangrs", "Bangers 'n' Cash (Empire) (MPU4, set 1)", - "m4bangrsa", "Bangers 'n' Cash (Empire) (MPU4, set 2)", - "m4bangrsb", "Bangers 'n' Cash (Empire) (MPU4, set 3)", - "m4bankrd", "Bank Raid (Empire) (MPU4, set 1)", - "m4bankrda", "Bank Raid (Empire) (MPU4, set 2)", - "m4bankrdb", "Bank Raid (Empire) (MPU4, set 3)", - "m4bankrdc", "Bank Raid (Empire) (MPU4, set 4)", - "m4bankrdd", "Bank Raid (Empire) (MPU4, set 5)", - "m4barcrz", "Bar Crazy (unknown) (MPU4?)", - "m4bben", "Big Ben (Avantime?) (MPU4) (set 1)", - "m4bben__a", "Big Ben (Avantime?) (MPU4) (set 2)", - "m4bben__b", "Big Ben (Avantime?) (MPU4) (set 3)", - "m4bben__c", "Big Ben (Avantime?) (MPU4) (set 4)", - "m4bben__d", "Big Ben (Avantime?) (MPU4) (set 5)", - "m4bben__e", "Big Ben (Avantime?) (MPU4) (set 6)", - "m4bben__f", "Big Ben (Avantime?) (MPU4) (set 7)", - "m4bben__g", "Big Ben (Avantime?) (MPU4) (set 8)", - "m4bben__h", "Big Ben (Avantime?) (MPU4) (set 9)", - "m4bben__i", "Big Ben (Avantime?) (MPU4) (set 10)", - "m4bbox", "Brain Box (Avantime?) (MPU4) (set 1)", - "m4bbox__a", "Brain Box (Avantime?) (MPU4) (set 2)", - "m4bbox__b", "Brain Box (Avantime?) (MPU4) (set 3)", - "m4bbox__c", "Brain Box (Avantime?) (MPU4) (set 4)", - "m4bbox__d", "Brain Box (Avantime?) (MPU4) (set 5)", - "m4bbox__e", "Brain Box (Avantime?) (MPU4) (set 6)", - "m4bbox__f", "Brain Box (Avantime?) (MPU4) (set 7)", - "m4bbox__g", "Brain Box (Avantime?) (MPU4) (set 8)", - "m4bbox__h", "Brain Box (Avantime?) (MPU4) (set 9)", - "m4bbox__i", "Brain Box (Avantime?) (MPU4) (set 10)", - "m4bclimb", "Bear Climber (MPU4?)", - "m4bdash", "Boulder Dash (Barcrest) (MPU4) (set 1)", - "m4bdash__0", "Boulder Dash (Barcrest) (MPU4) (set 28)", - "m4bdash__1", "Boulder Dash (Barcrest) (MPU4) (set 29)", - "m4bdash__2", "Boulder Dash (Barcrest) (MPU4) (set 30)", - "m4bdash__3", "Boulder Dash (Barcrest) (MPU4) (set 31)", - "m4bdash__4", "Boulder Dash (Barcrest) (MPU4) (set 32)", - "m4bdash__5", "Boulder Dash (Barcrest) (MPU4) (set 33)", - "m4bdash__6", "Boulder Dash (Barcrest) (MPU4) (set 34)", - "m4bdash__7", "Boulder Dash (Barcrest) (MPU4) (set 35)", - "m4bdash__8", "Boulder Dash (Barcrest) (MPU4) (set 36)", - "m4bdash__9", "Boulder Dash (Barcrest) (MPU4) (set 37)", - "m4bdash__a", "Boulder Dash (Barcrest) (MPU4) (set 2)", - "m4bdash__a0", "Boulder Dash (Barcrest) (MPU4) (set 64)", - "m4bdash__a1", "Boulder Dash (Barcrest) (MPU4) (set 65)", - "m4bdash__a2", "Boulder Dash (Barcrest) (MPU4) (set 66)", - "m4bdash__a3", "Boulder Dash (Barcrest) (MPU4) (set 67)", - "m4bdash__a4", "Boulder Dash (Barcrest) (MPU4) (set 68)", - "m4bdash__aa", "Boulder Dash (Barcrest) (MPU4) (set 38)", - "m4bdash__ab", "Boulder Dash (Barcrest) (MPU4) (set 39)", - "m4bdash__ac", "Boulder Dash (Barcrest) (MPU4) (set 40)", - "m4bdash__ad", "Boulder Dash (Barcrest) (MPU4) (set 41)", - "m4bdash__ae", "Boulder Dash (Barcrest) (MPU4) (set 42)", - "m4bdash__af", "Boulder Dash (Barcrest) (MPU4) (set 43)", - "m4bdash__ag", "Boulder Dash (Barcrest) (MPU4) (set 44)", - "m4bdash__ah", "Boulder Dash (Barcrest) (MPU4) (set 45)", - "m4bdash__ai", "Boulder Dash (Barcrest) (MPU4) (set 46)", - "m4bdash__aj", "Boulder Dash (Barcrest) (MPU4) (set 47)", - "m4bdash__ak", "Boulder Dash (Barcrest) (MPU4) (set 48)", - "m4bdash__al", "Boulder Dash (Barcrest) (MPU4) (set 49)", - "m4bdash__am", "Boulder Dash (Barcrest) (MPU4) (set 50)", - "m4bdash__an", "Boulder Dash (Barcrest) (MPU4) (set 51)", - "m4bdash__ao", "Boulder Dash (Barcrest) (MPU4) (set 52)", - "m4bdash__ap", "Boulder Dash (Barcrest) (MPU4) (set 53)", - "m4bdash__aq", "Boulder Dash (Barcrest) (MPU4) (set 54)", - "m4bdash__ar", "Boulder Dash (Barcrest) (MPU4) (set 55)", - "m4bdash__as", "Boulder Dash (Barcrest) (MPU4) (set 56)", - "m4bdash__at", "Boulder Dash (Barcrest) (MPU4) (set 57)", - "m4bdash__au", "Boulder Dash (Barcrest) (MPU4) (set 58)", - "m4bdash__av", "Boulder Dash (Barcrest) (MPU4) (set 59)", - "m4bdash__aw", "Boulder Dash (Barcrest) (MPU4) (set 60)", - "m4bdash__ax", "Boulder Dash (Barcrest) (MPU4) (set 61)", - "m4bdash__ay", "Boulder Dash (Barcrest) (MPU4) (set 62)", - "m4bdash__az", "Boulder Dash (Barcrest) (MPU4) (set 63)", - "m4bdash__b", "Boulder Dash (Barcrest) (MPU4) (set 3)", - "m4bdash__c", "Boulder Dash (Barcrest) (MPU4) (set 4)", - "m4bdash__d", "Boulder Dash (Barcrest) (MPU4) (set 5)", - "m4bdash__e", "Boulder Dash (Barcrest) (MPU4) (set 6)", - "m4bdash__f", "Boulder Dash (Barcrest) (MPU4) (set 7)", - "m4bdash__g", "Boulder Dash (Barcrest) (MPU4) (set 8)", - "m4bdash__h", "Boulder Dash (Barcrest) (MPU4) (set 9)", - "m4bdash__i", "Boulder Dash (Barcrest) (MPU4) (set 10)", - "m4bdash__j", "Boulder Dash (Barcrest) (MPU4) (set 11)", - "m4bdash__k", "Boulder Dash (Barcrest) (MPU4) (set 12)", - "m4bdash__l", "Boulder Dash (Barcrest) (MPU4) (set 13)", - "m4bdash__m", "Boulder Dash (Barcrest) (MPU4) (set 14)", - "m4bdash__n", "Boulder Dash (Barcrest) (MPU4) (set 15)", - "m4bdash__o", "Boulder Dash (Barcrest) (MPU4) (set 16)", - "m4bdash__p", "Boulder Dash (Barcrest) (MPU4) (set 17)", - "m4bdash__q", "Boulder Dash (Barcrest) (MPU4) (set 18)", - "m4bdash__r", "Boulder Dash (Barcrest) (MPU4) (set 19)", - "m4bdash__s", "Boulder Dash (Barcrest) (MPU4) (set 20)", - "m4bdash__t", "Boulder Dash (Barcrest) (MPU4) (set 21)", - "m4bdash__u", "Boulder Dash (Barcrest) (MPU4) (set 22)", - "m4bdash__v", "Boulder Dash (Barcrest) (MPU4) (set 23)", - "m4bdash__w", "Boulder Dash (Barcrest) (MPU4) (set 24)", - "m4bdash__x", "Boulder Dash (Barcrest) (MPU4) (set 25)", - "m4bdash__y", "Boulder Dash (Barcrest) (MPU4) (set 26)", - "m4bdash__z", "Boulder Dash (Barcrest) (MPU4) (set 27)", - "m4berser", "Berserk (Barcrest) (MPU4) (set 1)", - "m4berser__0", "Berserk (Barcrest) (MPU4) (set 28)", - "m4berser__1", "Berserk (Barcrest) (MPU4) (set 29)", - "m4berser__a", "Berserk (Barcrest) (MPU4) (set 2)", - "m4berser__b", "Berserk (Barcrest) (MPU4) (set 3)", - "m4berser__c", "Berserk (Barcrest) (MPU4) (set 4)", - "m4berser__d", "Berserk (Barcrest) (MPU4) (set 5)", - "m4berser__e", "Berserk (Barcrest) (MPU4) (set 6)", - "m4berser__f", "Berserk (Barcrest) (MPU4) (set 7)", - "m4berser__g", "Berserk (Barcrest) (MPU4) (set 8)", - "m4berser__h", "Berserk (Barcrest) (MPU4) (set 9)", - "m4berser__i", "Berserk (Barcrest) (MPU4) (set 10)", - "m4berser__j", "Berserk (Barcrest) (MPU4) (set 11)", - "m4berser__k", "Berserk (Barcrest) (MPU4) (set 12)", - "m4berser__l", "Berserk (Barcrest) (MPU4) (set 13)", - "m4berser__m", "Berserk (Barcrest) (MPU4) (set 14)", - "m4berser__n", "Berserk (Barcrest) (MPU4) (set 15)", - "m4berser__o", "Berserk (Barcrest) (MPU4) (set 16)", - "m4berser__p", "Berserk (Barcrest) (MPU4) (set 17)", - "m4berser__q", "Berserk (Barcrest) (MPU4) (set 18)", - "m4berser__r", "Berserk (Barcrest) (MPU4) (set 19)", - "m4berser__s", "Berserk (Barcrest) (MPU4) (set 20)", - "m4berser__t", "Berserk (Barcrest) (MPU4) (set 21)", - "m4berser__u", "Berserk (Barcrest) (MPU4) (set 22)", - "m4berser__v", "Berserk (Barcrest) (MPU4) (set 23)", - "m4berser__w", "Berserk (Barcrest) (MPU4) (set 24)", - "m4berser__x", "Berserk (Barcrest) (MPU4) (set 25)", - "m4berser__y", "Berserk (Barcrest) (MPU4) (set 26)", - "m4berser__z", "Berserk (Barcrest) (MPU4) (set 27)", - "m4bigapl", "The Big Apple (Mdm) (MPU4, set 1)", - "m4bigapla", "The Big Apple (Mdm) (MPU4, set 2)", - "m4bigaplb", "The Big Apple (Mdm) (MPU4, set 3)", - "m4bigaplc", "The Big Apple (Mdm) (MPU4, set 4)", - "m4bigapld", "The Big Apple (Mdm) (MPU4, set 5)", - "m4bigaple", "The Big Apple (Mdm) (MPU4, set 6)", - "m4bigban", "Big Bandit (Nova) (MPU4)", - "m4bigben", "Big Ben (Coinworld) (MPU4, set 1)", - "m4bigbena", "Big Ben (Coinworld) (MPU4, set 2)", - "m4bigbenb", "Big Ben (Coinworld) (MPU4, set 3)", - "m4bigbend", "Big Ben (Coinworld) (MPU4, set 4)", - "m4bigbene", "Big Ben (Coinworld) (MPU4, set 5)", - "m4bigbn", "Big Ben (Barcrest) (DBB, Dutch) (MPU4)", - "m4bigchd", "Big Chief (Barcrest) [BCH, Dutch] (MPU4)", - "m4bigchf", "Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 1)", - "m4bigchfa", "Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 2)", - "m4bigchfb", "Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 3)", - "m4bigchfc", "Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 4)", - "m4bigchs", "Big Cheese (Empire) (MPU4, set 1)", - "m4bigchsa", "Big Cheese (Empire) (MPU4, set 2)", - "m4bigchsb", "Big Cheese (Empire) (MPU4, set 3)", - "m4bigmt", "The Big Match (Bwb) (MPU4) (set 1)", - "m4bigmt__a", "The Big Match (Bwb) (MPU4) (set 2)", - "m4bigmt__b", "The Big Match (Bwb) (MPU4) (set 3)", - "m4bigmt__c", "The Big Match (Bwb) (MPU4) (set 4)", - "m4bigmt__d", "The Big Match (Bwb) (MPU4) (set 5)", - "m4bigmt__e", "The Big Match (Bwb) (MPU4) (set 6)", - "m4bigmt__f", "The Big Match (Bwb) (MPU4) (set 7)", - "m4bingbl", "Bingo Belle (Bwb) (MPU4) (set 1)", - "m4bingbl__a", "Bingo Belle (Bwb) (MPU4) (set 2)", - "m4bingbl__b", "Bingo Belle (Bwb) (MPU4) (set 3)", - "m4bingbl__c", "Bingo Belle (Bwb) (MPU4) (set 4)", - "m4bingbl__d", "Bingo Belle (Bwb) (MPU4) (set 5)", - "m4bingbl__e", "Bingo Belle (Bwb) (MPU4) (set 6)", - "m4bingbl__f", "Bingo Belle (Bwb) (MPU4) (set 7)", - "m4bingbl__g", "Bingo Belle (Bwb) (MPU4) (set 8)", - "m4bingbs", "Bingo Belle Showcase (Bwb) (MPU4) (set 1)", - "m4bingbs__a", "Bingo Belle Showcase (Bwb) (MPU4) (set 2)", - "m4bingbs__b", "Bingo Belle Showcase (Bwb) (MPU4) (set 3)", - "m4bingbs__c", "Bingo Belle Showcase (Bwb) (MPU4) (set 4)", - "m4bingbs__d", "Bingo Belle Showcase (Bwb) (MPU4) (set 5)", - "m4bingbs__e", "Bingo Belle Showcase (Bwb) (MPU4) (set 6)", - "m4bingbs__f", "Bingo Belle Showcase (Bwb) (MPU4) (set 7)", - "m4bingcl", "Bingo Club (Bwb) (MPU4) (set 1)", - "m4bingcl__a", "Bingo Club (Bwb) (MPU4) (set 2)", - "m4bingcl__b", "Bingo Club (Bwb) (MPU4) (set 3)", - "m4bj", "Black Jack (Barcrest) [Dutch] (MPU4)", - "m4bjac", "Blackjack Club (Barcrest) (MPU4) (set 1)", - "m4bjaca", "Blackjack Club (Barcrest) (MPU4) (set 2)", - "m4bjack", "Black Jack (Barcrest) (MPU4) (set 1)", - "m4bjacka", "Black Jack (Barcrest) (MPU4) (set 2)", - "m4bjc", "Black Jack Club (Barcrest) (Dutch) (MPU4)", - "m4bjsm", "Blackjack Super Multi (Barcrest) (MPU4) (SM H)", - "m4bjsma", "Blackjack Super Multi (Barcrest) (MPU4)", - "m4blflsh", "Blue Flash (Bwb) (MPU4) (set 1)", - "m4blflsha", "Blue Flash (Bwb) (MPU4) (set 2)", - "m4blflshb", "Blue Flash (Bwb) (MPU4) (set 3)", - "m4blflshc", "Blue Flash (Bwb) (MPU4) (set 4)", - "m4blflshd", "Blue Flash (Bwb) (MPU4) (set 5)", - "m4blflshe", "Blue Flash (Bwb) (MPU4) (set 6)", - "m4blkbul", "Super Play (Black Bull?) (Czech) (Barcrest) [XSP] (MPU4)", - "m4blkbuld", "Gun Smoke (Barcrest) (Dutch, alt sound roms) (MPU4)", - "m4blkcat", "Black Cat (Barcrest) (Dutch) (MPU4) (DBL 1.4)", - "m4blkgd", "Black Gold (Gemini) (MPU4) (set 1)", - "m4blkgda", "Black Gold (Gemini) (MPU4) (set 2)", - "m4blkmgc", "Black Magic (Avantime?) (MPU4) (Latvia, set 1)", - "m4blkmgc_1", "Black Magic (Avantime?) (MPU4) (Latvia, set 2)", - "m4blkmgc_u1", "Black Magic (Avantime?) (MPU4) (Ukraine, set 1)", - "m4blkmgc_u2", "Black Magic (Avantime?) (MPU4) (Ukraine, set 2)", - "m4blkmgc_u3", "Black Magic (Avantime?) (MPU4) (Ukraine, set 3)", - "m4blkmgc_u4", "Black Magic (Avantime?) (MPU4) (Ukraine, set 4)", - "m4blkmgc_u5", "Black Magic (Avantime?) (MPU4) (Ukraine, set 5)", - "m4blkmgc_u6", "Black Magic (Avantime?) (MPU4) (Ukraine, set 6)", - "m4blkwhd", "Black & White (Barcrest) [Dutch] (MPU4) (DBW 1.1)", - "m4blsbys", "Blues Boys (Bwb) (MPU4) (set 1)", - "m4blsbys__0", "Blues Boys (Bwb) (MPU4) (set 28)", - "m4blsbys__1", "Blues Boys (Bwb) (MPU4) (set 29)", - "m4blsbys__2", "Blues Boys (Bwb) (MPU4) (set 30)", - "m4blsbys__3", "Blues Boys (Bwb) (MPU4) (set 31)", - "m4blsbys__4", "Blues Boys (Bwb) (MPU4) (set 32)", - "m4blsbys__5", "Blues Boys (Bwb) (MPU4) (set 33)", - "m4blsbys__6", "Blues Boys (Bwb) (MPU4) (set 34)", - "m4blsbys__7", "Blues Boys (Bwb) (MPU4) (set 35)", - "m4blsbys__8", "Blues Boys (Bwb) (MPU4) (set 36)", - "m4blsbys__9", "Blues Boys (Bwb) (MPU4) (set 37)", - "m4blsbys__a", "Blues Boys (Bwb) (MPU4) (set 2)", - "m4blsbys__aa", "Blues Boys (Bwb) (MPU4) (set 38)", - "m4blsbys__ab", "Blues Boys (Bwb) (MPU4) (set 39)", - "m4blsbys__ac", "Blues Boys (Bwb) (MPU4) (set 40)", - "m4blsbys__ad", "Blues Boys (Bwb) (MPU4) (set 41)", - "m4blsbys__b", "Blues Boys (Bwb) (MPU4) (set 3)", - "m4blsbys__c", "Blues Boys (Bwb) (MPU4) (set 4)", - "m4blsbys__d", "Blues Boys (Bwb) (MPU4) (set 5)", - "m4blsbys__e", "Blues Boys (Bwb) (MPU4) (set 6)", - "m4blsbys__f", "Blues Boys (Bwb) (MPU4) (set 7)", - "m4blsbys__g", "Blues Boys (Bwb) (MPU4) (set 8)", - "m4blsbys__h", "Blues Boys (Bwb) (MPU4) (set 9)", - "m4blsbys__i", "Blues Boys (Bwb) (MPU4) (set 10)", - "m4blsbys__j", "Blues Boys (Bwb) (MPU4) (set 11)", - "m4blsbys__k", "Blues Boys (Bwb) (MPU4) (set 12)", - "m4blsbys__l", "Blues Boys (Bwb) (MPU4) (set 13)", - "m4blsbys__m", "Blues Boys (Bwb) (MPU4) (set 14)", - "m4blsbys__n", "Blues Boys (Bwb) (MPU4) (set 15)", - "m4blsbys__o", "Blues Boys (Bwb) (MPU4) (set 16)", - "m4blsbys__p", "Blues Boys (Bwb) (MPU4) (set 17)", - "m4blsbys__q", "Blues Boys (Bwb) (MPU4) (set 18)", - "m4blsbys__r", "Blues Boys (Bwb) (MPU4) (set 19)", - "m4blsbys__s", "Blues Boys (Bwb) (MPU4) (set 20)", - "m4blsbys__t", "Blues Boys (Bwb) (MPU4) (set 21)", - "m4blsbys__u", "Blues Boys (Bwb) (MPU4) (set 22)", - "m4blsbys__v", "Blues Boys (Bwb) (MPU4) (set 23)", - "m4blsbys__w", "Blues Boys (Bwb) (MPU4) (set 24)", - "m4blsbys__x", "Blues Boys (Bwb) (MPU4) (set 25)", - "m4blsbys__y", "Blues Boys (Bwb) (MPU4) (set 26)", - "m4blsbys__z", "Blues Boys (Bwb) (MPU4) (set 27)", - "m4blstbk", "Blast A Bank (Barcrest) (MPU4)", - "m4bluedm", "Blue Diamond (Barcrest) (MPU4) (DBD1.0)", - "m4bluemn", "Blue Moon (Barcrest) (MPU4) (BLU 2.3)", - "m4bluemna", "Blue Moon (Barcrest) (MPU4) (BLU 2.1)", - "m4bluemnb", "Blue Moon (Barcrest) (MPU4) (BLU 1.1)", - "m4bluesn", "Blues Boys (Nova) (MPU4)", - "m4blztrl", "Blazing Trails (Mdm) (MPU4, set 1)", - "m4blztrla", "Blazing Trails (Mdm) (MPU4, set 2)", - "m4bnknot", "Bank A Note (Barcrest) [BN 1.0] (MPU4)", - "m4bnkrol", "Bank Roller Club (Barcrest) (MPU4) (set 1)", - "m4bnkrol__a", "Bank Roller Club (Barcrest) (MPU4) (set 2)", - "m4bnkrol__b", "Bank Roller Club (Barcrest) (MPU4) (set 3)", - "m4bnkrol__c", "Bank Roller Club (Barcrest) (MPU4) (set 4)", - "m4bnkrol__d", "Bank Roller Club (Barcrest) (MPU4) (set 5)", - "m4bnkrol__e", "Bank Roller Club (Barcrest) (MPU4) (set 6)", - "m4bodymt", "Body Match (Mdm) (MPU4)", - "m4boltbl", "Bolt From The Blue (DJE) (MPU4, set 1)", - "m4boltbla", "Bolt From The Blue (DJE) (MPU4, set 2)", - "m4boltblb", "Bolt From The Blue (DJE) (MPU4, set 3)", - "m4boltblc", "Bolt From The Blue (DJE) (MPU4, set 4)", - "m4bonzbn", "Bingo Bonanza (unknown) (MPU4?)", - "m4booze", "Booze Cruise (Extreme) (MPU4)", - "m4brdway", "Broadway (Barcrest) (DBR, Dutch) (MPU4)", - "m4brktak", "Break & Take (Barcrest) (MPU4)", - "m4brnze", "Bronze Voyage (unknown) (MPU4) (set 1)", - "m4brnzea", "Bronze Voyage (unknown) (MPU4) (set 2)", - "m4brnzeb", "Bronze Voyage (unknown) (MPU4) (set 3)", - "m4brook", "Brooklyn (Barcrest) (MPU4) (PFT 1.8)", - "m4btclok", "Beat The Clock (Barcrest) (MPU4)", - "m4buc", "Buccaneer (Barcrest) (MPU4) (set 1)", - "m4buc__0", "Buccaneer (Barcrest) (MPU4) (set 28)", - "m4buc__1", "Buccaneer (Barcrest) (MPU4) (set 29)", - "m4buc__2", "Buccaneer (Barcrest) (MPU4) (set 30)", - "m4buc__3", "Buccaneer (Barcrest) (MPU4) (set 31)", - "m4buc__4", "Buccaneer (Barcrest) (MPU4) (set 32)", - "m4buc__5", "Buccaneer (Barcrest) (MPU4) (set 33)", - "m4buc__6", "Buccaneer (Barcrest) (MPU4) (set 34)", - "m4buc__7", "Buccaneer (Barcrest) (MPU4) (set 35)", - "m4buc__8", "Buccaneer (Barcrest) (MPU4) (set 36)", - "m4buc__9", "Buccaneer (Barcrest) (MPU4) (set 37)", - "m4buc__a", "Buccaneer (Barcrest) (MPU4) (set 2)", - "m4buc__aa", "Buccaneer (Barcrest) (MPU4) (set 38)", - "m4buc__ab", "Buccaneer (Barcrest) (MPU4) (set 39)", - "m4buc__ac", "Buccaneer (Barcrest) (MPU4) (set 40)", - "m4buc__ad", "Buccaneer (Barcrest) (MPU4) (set 41)", - "m4buc__ae", "Buccaneer (Barcrest) (MPU4) (set 42)", - "m4buc__af", "Buccaneer (Barcrest) (MPU4) (set 43)", - "m4buc__ag", "Buccaneer (Barcrest) (MPU4) (set 44)", - "m4buc__ah", "Buccaneer (Barcrest) (MPU4) (set 45)", - "m4buc__ai", "Buccaneer (Barcrest) (MPU4) (set 46)", - "m4buc__aj", "Buccaneer (Barcrest) (MPU4) (set 47)", - "m4buc__ak", "Buccaneer (Barcrest) (MPU4) (set 48)", - "m4buc__al", "Buccaneer (Barcrest) (MPU4) (set 49)", - "m4buc__am", "Buccaneer (Barcrest) (MPU4) (set 50)", - "m4buc__an", "Buccaneer (Barcrest) (MPU4) (set 51)", - "m4buc__ao", "Buccaneer (Barcrest) (MPU4) (set 52)", - "m4buc__ap", "Buccaneer (Barcrest) (MPU4) (set 53)", - "m4buc__aq", "Buccaneer (Barcrest) (MPU4) (set 54)", - "m4buc__ar", "Buccaneer (Barcrest) (MPU4) (set 55)", - "m4buc__as", "Buccaneer (Barcrest) (MPU4) (set 56)", - "m4buc__at", "Buccaneer (Barcrest) (MPU4) (set 57)", - "m4buc__au", "Buccaneer (Barcrest) (MPU4) (set 58)", - "m4buc__av", "Buccaneer (Barcrest) (MPU4) (set 59)", - "m4buc__aw", "Buccaneer (Barcrest) (MPU4) (set 60)", - "m4buc__ax", "Buccaneer (Barcrest) (MPU4) (set 61)", - "m4buc__ay", "Buccaneer (Barcrest) (MPU4) (set 62)", - "m4buc__az", "Buccaneer (Barcrest) (MPU4) (set 63)", - "m4buc__b", "Buccaneer (Barcrest) (MPU4) (set 3)", - "m4buc__c", "Buccaneer (Barcrest) (MPU4) (set 4)", - "m4buc__d", "Buccaneer (Barcrest) (MPU4) (set 5)", - "m4buc__e", "Buccaneer (Barcrest) (MPU4) (set 6)", - "m4buc__f", "Buccaneer (Barcrest) (MPU4) (set 7)", - "m4buc__g", "Buccaneer (Barcrest) (MPU4) (set 8)", - "m4buc__h", "Buccaneer (Barcrest) (MPU4) (set 9)", - "m4buc__i", "Buccaneer (Barcrest) (MPU4) (set 10)", - "m4buc__j", "Buccaneer (Barcrest) (MPU4) (set 11)", - "m4buc__k", "Buccaneer (Barcrest) (MPU4) (set 12)", - "m4buc__l", "Buccaneer (Barcrest) (MPU4) (set 13)", - "m4buc__m", "Buccaneer (Barcrest) (MPU4) (set 14)", - "m4buc__n", "Buccaneer (Barcrest) (MPU4) (set 15)", - "m4buc__o", "Buccaneer (Barcrest) (MPU4) (set 16)", - "m4buc__p", "Buccaneer (Barcrest) (MPU4) (set 17)", - "m4buc__q", "Buccaneer (Barcrest) (MPU4) (set 18)", - "m4buc__r", "Buccaneer (Barcrest) (MPU4) (set 19)", - "m4buc__s", "Buccaneer (Barcrest) (MPU4) (set 20)", - "m4buc__t", "Buccaneer (Barcrest) (MPU4) (set 21)", - "m4buc__u", "Buccaneer (Barcrest) (MPU4) (set 22)", - "m4buc__v", "Buccaneer (Barcrest) (MPU4) (set 23)", - "m4buc__w", "Buccaneer (Barcrest) (MPU4) (set 24)", - "m4buc__x", "Buccaneer (Barcrest) (MPU4) (set 25)", - "m4buc__y", "Buccaneer (Barcrest) (MPU4) (set 26)", - "m4buc__z", "Buccaneer (Barcrest) (MPU4) (set 27)", - "m4bucclb", "Buccaneer Club (Crystal) (MPU4) (set 1)", - "m4bucclba", "Buccaneer Club (Crystal) (MPU4) (set 2)", - "m4bucclbb", "Buccaneer Club (Crystal) (MPU4) (set 3)", - "m4bucclbc", "Buccaneer Club (Crystal) (MPU4) (set 4)", - "m4bucks", "Bucks Fizz Club (Barcrest) (MPU4)", - "m4bullio", "Bullion Club (Crystal) (MPU4) (set 1)", - "m4bullioa", "Bullion Club (Crystal) (MPU4) (set 2)", - "m4bulliob", "Bullion Club (Crystal) (MPU4) (set 3)", - "m4c2", "Circus Circus 2 (Nova?) (MPU4)", - "m4c9", "Cloud Nine (Barcrest) (MPU4) (set 1)", - "m4c999", "Cloud 999 (Barcrest) (MPU4) (OC9 0.3, set 1)", - "m4c999a", "Cloud 999 (Barcrest) (MPU4) (OC9 0.3, set 2)", - "m4c999b", "Cloud 999 (Barcrest) (MPU4) (CLN 3.6)", - "m4c999c", "Cloud 999 (Barcrest) (MPU4) (CLN 3.0)", - "m4c9__0", "Cloud Nine (Barcrest) (MPU4) (set 28)", - "m4c9__1", "Cloud Nine (Barcrest) (MPU4) (set 29)", - "m4c9__2", "Cloud Nine (Barcrest) (MPU4) (set 30)", - "m4c9__3", "Cloud Nine (Barcrest) (MPU4) (set 31)", - "m4c9__4", "Cloud Nine (Barcrest) (MPU4) (set 32)", - "m4c9__5", "Cloud Nine (Barcrest) (MPU4) (set 33)", - "m4c9__6", "Cloud Nine (Barcrest) (MPU4) (set 34)", - "m4c9__7", "Cloud Nine (Barcrest) (MPU4) (set 35)", - "m4c9__8", "Cloud Nine (Barcrest) (MPU4) (set 36)", - "m4c9__9", "Cloud Nine (Barcrest) (MPU4) (set 37)", - "m4c9__a", "Cloud Nine (Barcrest) (MPU4) (set 2)", - "m4c9__a0", "Cloud Nine (Barcrest) (MPU4) (set 64)", - "m4c9__a1", "Cloud Nine (Barcrest) (MPU4) (set 65)", - "m4c9__a2", "Cloud Nine (Barcrest) (MPU4) (set 66)", - "m4c9__a3", "Cloud Nine (Barcrest) (MPU4) (set 67)", - "m4c9__aa", "Cloud Nine (Barcrest) (MPU4) (set 38)", - "m4c9__ab", "Cloud Nine (Barcrest) (MPU4) (set 39)", - "m4c9__ac", "Cloud Nine (Barcrest) (MPU4) (set 40)", - "m4c9__ad", "Cloud Nine (Barcrest) (MPU4) (set 41)", - "m4c9__ae", "Cloud Nine (Barcrest) (MPU4) (set 42)", - "m4c9__af", "Cloud Nine (Barcrest) (MPU4) (set 43)", - "m4c9__ag", "Cloud Nine (Barcrest) (MPU4) (set 44)", - "m4c9__ah", "Cloud Nine (Barcrest) (MPU4) (set 45)", - "m4c9__ai", "Cloud Nine (Barcrest) (MPU4) (set 46)", - "m4c9__aj", "Cloud Nine (Barcrest) (MPU4) (set 47)", - "m4c9__ak", "Cloud Nine (Barcrest) (MPU4) (set 48)", - "m4c9__al", "Cloud Nine (Barcrest) (MPU4) (set 49)", - "m4c9__am", "Cloud Nine (Barcrest) (MPU4) (set 50)", - "m4c9__an", "Cloud Nine (Barcrest) (MPU4) (set 51)", - "m4c9__ao", "Cloud Nine (Barcrest) (MPU4) (set 52)", - "m4c9__ap", "Cloud Nine (Barcrest) (MPU4) (set 53)", - "m4c9__aq", "Cloud Nine (Barcrest) (MPU4) (set 54)", - "m4c9__ar", "Cloud Nine (Barcrest) (MPU4) (set 55)", - "m4c9__as", "Cloud Nine (Barcrest) (MPU4) (set 56)", - "m4c9__at", "Cloud Nine (Barcrest) (MPU4) (set 57)", - "m4c9__au", "Cloud Nine (Barcrest) (MPU4) (set 58)", - "m4c9__av", "Cloud Nine (Barcrest) (MPU4) (set 59)", - "m4c9__aw", "Cloud Nine (Barcrest) (MPU4) (set 60)", - "m4c9__ax", "Cloud Nine (Barcrest) (MPU4) (set 61)", - "m4c9__ay", "Cloud Nine (Barcrest) (MPU4) (set 62)", - "m4c9__az", "Cloud Nine (Barcrest) (MPU4) (set 63)", - "m4c9__b", "Cloud Nine (Barcrest) (MPU4) (set 3)", - "m4c9__c", "Cloud Nine (Barcrest) (MPU4) (set 4)", - "m4c9__d", "Cloud Nine (Barcrest) (MPU4) (set 5)", - "m4c9__e", "Cloud Nine (Barcrest) (MPU4) (set 6)", - "m4c9__f", "Cloud Nine (Barcrest) (MPU4) (set 7)", - "m4c9__g", "Cloud Nine (Barcrest) (MPU4) (set 8)", - "m4c9__h", "Cloud Nine (Barcrest) (MPU4) (set 9)", - "m4c9__i", "Cloud Nine (Barcrest) (MPU4) (set 10)", - "m4c9__j", "Cloud Nine (Barcrest) (MPU4) (set 11)", - "m4c9__k", "Cloud Nine (Barcrest) (MPU4) (set 12)", - "m4c9__l", "Cloud Nine (Barcrest) (MPU4) (set 13)", - "m4c9__m", "Cloud Nine (Barcrest) (MPU4) (set 14)", - "m4c9__n", "Cloud Nine (Barcrest) (MPU4) (set 15)", - "m4c9__o", "Cloud Nine (Barcrest) (MPU4) (set 16)", - "m4c9__p", "Cloud Nine (Barcrest) (MPU4) (set 17)", - "m4c9__q", "Cloud Nine (Barcrest) (MPU4) (set 18)", - "m4c9__r", "Cloud Nine (Barcrest) (MPU4) (set 19)", - "m4c9__s", "Cloud Nine (Barcrest) (MPU4) (set 20)", - "m4c9__t", "Cloud Nine (Barcrest) (MPU4) (set 21)", - "m4c9__u", "Cloud Nine (Barcrest) (MPU4) (set 22)", - "m4c9__v", "Cloud Nine (Barcrest) (MPU4) (set 23)", - "m4c9__w", "Cloud Nine (Barcrest) (MPU4) (set 24)", - "m4c9__x", "Cloud Nine (Barcrest) (MPU4) (set 25)", - "m4c9__y", "Cloud Nine (Barcrest) (MPU4) (set 26)", - "m4c9__z", "Cloud Nine (Barcrest) (MPU4) (set 27)", - "m4c9c", "Cloud Nine Club (Barcrest) (MPU4) (CNC 2.1)", - "m4calama", "Calamari Club (Barcrest) (MPU4) (set 1)", - "m4calama__a", "Calamari Club (Barcrest) (MPU4) (set 2)", - "m4calama__b", "Calamari Club (Barcrest) (MPU4) (set 3)", - "m4calama__c", "Calamari Club (Barcrest) (MPU4) (set 4)", - "m4calama__d", "Calamari Club (Barcrest) (MPU4) (set 5)", - "m4calama__e", "Calamari Club (Barcrest) (MPU4) (set 6)", - "m4calama__f", "Calamari Club (Barcrest) (MPU4) (set 7)", - "m4calama__g", "Calamari Club (Barcrest) (MPU4) (set 8)", - "m4calama__h", "Calamari Club (Barcrest) (MPU4) (set 9)", - "m4calama__i", "Calamari Club (Barcrest) (MPU4) (set 10)", - "m4calama__j", "Calamari Club (Barcrest) (MPU4) (set 11)", - "m4calicl", "California Club (Barcrest) (MPU4) (set 1)", - "m4calicla", "California Club (Barcrest) (MPU4) (set 2)", - "m4caliclb", "California Club (Barcrest) (MPU4) (set 3)", - "m4caliclc", "California Club (Barcrest) (MPU4) (set 4)", - "m4calicld", "California Club (Barcrest) (MPU4) (set 5)", - "m4captb", "Captain Bear (MPU4?)", - "m4cardcs", "Card Cash (Barcrest) (MPU4) (CCS 1.9)", - "m4carou", "Carousel Club (Crystal) (MPU4) (set 1)", - "m4caroua", "Carousel Club (Crystal) (MPU4) (set 2)", - "m4caroub", "Carousel Club (Crystal) (MPU4) (set 3)", - "m4carouc", "Carousel Club (Crystal) (MPU4) (set 4)", - "m4cashat", "Cash Attack (Barcrest) (MPU4) (set 1)", - "m4cashat__0", "Cash Attack (Barcrest) (MPU4) (set 28)", - "m4cashat__1", "Cash Attack (Barcrest) (MPU4) (set 29)", - "m4cashat__2", "Cash Attack (Barcrest) (MPU4) (set 30)", - "m4cashat__3", "Cash Attack (Barcrest) (MPU4) (set 31)", - "m4cashat__4", "Cash Attack (Barcrest) (MPU4) (set 32)", - "m4cashat__5", "Cash Attack (Barcrest) (MPU4) (set 33)", - "m4cashat__6", "Cash Attack (Barcrest) (MPU4) (set 34)", - "m4cashat__7", "Cash Attack (Barcrest) (MPU4) (set 35)", - "m4cashat__8", "Cash Attack (Barcrest) (MPU4) (set 36)", - "m4cashat__9", "Cash Attack (Barcrest) (MPU4) (set 37)", - "m4cashat__a", "Cash Attack (Barcrest) (MPU4) (set 2)", - "m4cashat__aa", "Cash Attack (Barcrest) (MPU4) (set 38)", - "m4cashat__ab", "Cash Attack (Barcrest) (MPU4) (set 39)", - "m4cashat__ac", "Cash Attack (Barcrest) (MPU4) (set 40)", - "m4cashat__ad", "Cash Attack (Barcrest) (MPU4) (set 41)", - "m4cashat__ae", "Cash Attack (Barcrest) (MPU4) (set 42)", - "m4cashat__af", "Cash Attack (Barcrest) (MPU4) (set 43)", - "m4cashat__ag", "Cash Attack (Barcrest) (MPU4) (set 44)", - "m4cashat__ah", "Cash Attack (Barcrest) (MPU4) (set 45)", - "m4cashat__ai", "Cash Attack (Barcrest) (MPU4) (set 46)", - "m4cashat__aj", "Cash Attack (Barcrest) (MPU4) (set 47)", - "m4cashat__ak", "Cash Attack (Barcrest) (MPU4) (set 48)", - "m4cashat__al", "Cash Attack (Barcrest) (MPU4) (set 49)", - "m4cashat__am", "Cash Attack (Barcrest) (MPU4) (set 50)", - "m4cashat__an", "Cash Attack (Barcrest) (MPU4) (set 51)", - "m4cashat__ao", "Cash Attack (Barcrest) (MPU4) (set 52)", - "m4cashat__ap", "Cash Attack (Barcrest) (MPU4) (set 53)", - "m4cashat__aq", "Cash Attack (Barcrest) (MPU4) (set 54)", - "m4cashat__ar", "Cash Attack (Barcrest) (MPU4) (set 55)", - "m4cashat__b", "Cash Attack (Barcrest) (MPU4) (set 3)", - "m4cashat__c", "Cash Attack (Barcrest) (MPU4) (set 4)", - "m4cashat__d", "Cash Attack (Barcrest) (MPU4) (set 5)", - "m4cashat__e", "Cash Attack (Barcrest) (MPU4) (set 6)", - "m4cashat__f", "Cash Attack (Barcrest) (MPU4) (set 7)", - "m4cashat__g", "Cash Attack (Barcrest) (MPU4) (set 8)", - "m4cashat__h", "Cash Attack (Barcrest) (MPU4) (set 9)", - "m4cashat__i", "Cash Attack (Barcrest) (MPU4) (set 10)", - "m4cashat__j", "Cash Attack (Barcrest) (MPU4) (set 11)", - "m4cashat__k", "Cash Attack (Barcrest) (MPU4) (set 12)", - "m4cashat__l", "Cash Attack (Barcrest) (MPU4) (set 13)", - "m4cashat__m", "Cash Attack (Barcrest) (MPU4) (set 14)", - "m4cashat__n", "Cash Attack (Barcrest) (MPU4) (set 15)", - "m4cashat__o", "Cash Attack (Barcrest) (MPU4) (set 16)", - "m4cashat__p", "Cash Attack (Barcrest) (MPU4) (set 17)", - "m4cashat__q", "Cash Attack (Barcrest) (MPU4) (set 18)", - "m4cashat__r", "Cash Attack (Barcrest) (MPU4) (set 19)", - "m4cashat__s", "Cash Attack (Barcrest) (MPU4) (set 20)", - "m4cashat__t", "Cash Attack (Barcrest) (MPU4) (set 21)", - "m4cashat__u", "Cash Attack (Barcrest) (MPU4) (set 22)", - "m4cashat__v", "Cash Attack (Barcrest) (MPU4) (set 23)", - "m4cashat__w", "Cash Attack (Barcrest) (MPU4) (set 24)", - "m4cashat__x", "Cash Attack (Barcrest) (MPU4) (set 25)", - "m4cashat__y", "Cash Attack (Barcrest) (MPU4) (set 26)", - "m4cashat__z", "Cash Attack (Barcrest) (MPU4) (set 27)", - "m4cashcn", "Cash Connect (Barcrest) (MPU4) (CCO 3.2)", - "m4cashco", "Cash Counter (Barcrest) (MPU4) (C3 2.4)", - "m4cashcoa", "Cash Counter (Barcrest) (MPU4) (C3 1.8)", - "m4cashcob", "Cash Counter (Barcrest) (MPU4) (CO 0.5)", - "m4cashcoc", "Cash Counter (Barcrest) (MPU4) (C3 3.1)", - "m4cashcod", "Cash Connect (Barcrest) (MPU4) (C3 2.0)", - "m4cashln", "Cash Lines (Barcrest) (MPU4) (set 1)", - "m4cashln__0", "Cash Lines (Barcrest) (MPU4) (set 28)", - "m4cashln__1", "Cash Lines (Barcrest) (MPU4) (set 29)", - "m4cashln__2", "Cash Lines (Barcrest) (MPU4) (set 30)", - "m4cashln__3", "Cash Lines (Barcrest) (MPU4) (set 31)", - "m4cashln__4", "Cash Lines (Barcrest) (MPU4) (set 32)", - "m4cashln__5", "Cash Lines (Barcrest) (MPU4) (set 33)", - "m4cashln__6", "Cash Lines (Barcrest) (MPU4) (set 34)", - "m4cashln__7", "Cash Lines (Barcrest) (MPU4) (set 35)", - "m4cashln__8", "Cash Lines (Barcrest) (MPU4) (set 36)", - "m4cashln__9", "Cash Lines (Barcrest) (MPU4) (set 37)", - "m4cashln__a", "Cash Lines (Barcrest) (MPU4) (set 2)", - "m4cashln__a0", "Cash Lines (Barcrest) (MPU4) (set 64)", - "m4cashln__a1", "Cash Lines (Barcrest) (MPU4) (set 65)", - "m4cashln__a2", "Cash Lines (Barcrest) (MPU4) (set 66)", - "m4cashln__a3", "Cash Lines (Barcrest) (MPU4) (set 67)", - "m4cashln__a4", "Cash Lines (Barcrest) (MPU4) (set 68)", - "m4cashln__a5", "Cash Lines (Barcrest) (MPU4) (set 69)", - "m4cashln__a6", "Cash Lines (Barcrest) (MPU4) (set 70)", - "m4cashln__a7", "Cash Lines (Barcrest) (MPU4) (set 71)", - "m4cashln__a8", "Cash Lines (Barcrest) (MPU4) (set 72)", - "m4cashln__a9", "Cash Lines (Barcrest) (MPU4) (set 73)", - "m4cashln__aa", "Cash Lines (Barcrest) (MPU4) (set 38)", - "m4cashln__ab", "Cash Lines (Barcrest) (MPU4) (set 39)", - "m4cashln__ac", "Cash Lines (Barcrest) (MPU4) (set 40)", - "m4cashln__ad", "Cash Lines (Barcrest) (MPU4) (set 41)", - "m4cashln__ae", "Cash Lines (Barcrest) (MPU4) (set 42)", - "m4cashln__af", "Cash Lines (Barcrest) (MPU4) (set 43)", - "m4cashln__ag", "Cash Lines (Barcrest) (MPU4) (set 44)", - "m4cashln__ah", "Cash Lines (Barcrest) (MPU4) (set 45)", - "m4cashln__ai", "Cash Lines (Barcrest) (MPU4) (set 46)", - "m4cashln__aj", "Cash Lines (Barcrest) (MPU4) (set 47)", - "m4cashln__ak", "Cash Lines (Barcrest) (MPU4) (set 48)", - "m4cashln__al", "Cash Lines (Barcrest) (MPU4) (set 49)", - "m4cashln__am", "Cash Lines (Barcrest) (MPU4) (set 50)", - "m4cashln__an", "Cash Lines (Barcrest) (MPU4) (set 51)", - "m4cashln__ao", "Cash Lines (Barcrest) (MPU4) (set 52)", - "m4cashln__ap", "Cash Lines (Barcrest) (MPU4) (set 53)", - "m4cashln__aq", "Cash Lines (Barcrest) (MPU4) (set 54)", - "m4cashln__ar", "Cash Lines (Barcrest) (MPU4) (set 55)", - "m4cashln__as", "Cash Lines (Barcrest) (MPU4) (set 56)", - "m4cashln__at", "Cash Lines (Barcrest) (MPU4) (set 57)", - "m4cashln__au", "Cash Lines (Barcrest) (MPU4) (set 58)", - "m4cashln__av", "Cash Lines (Barcrest) (MPU4) (set 59)", - "m4cashln__aw", "Cash Lines (Barcrest) (MPU4) (set 60)", - "m4cashln__ax", "Cash Lines (Barcrest) (MPU4) (set 61)", - "m4cashln__ay", "Cash Lines (Barcrest) (MPU4) (set 62)", - "m4cashln__az", "Cash Lines (Barcrest) (MPU4) (set 63)", - "m4cashln__b", "Cash Lines (Barcrest) (MPU4) (set 3)", - "m4cashln__ba", "Cash Lines (Barcrest) (MPU4) (set 74)", - "m4cashln__bb", "Cash Lines (Barcrest) (MPU4) (set 75)", - "m4cashln__bc", "Cash Lines (Barcrest) (MPU4) (set 76)", - "m4cashln__bd", "Cash Lines (Barcrest) (MPU4) (set 77)", - "m4cashln__be", "Cash Lines (Barcrest) (MPU4) (set 78)", - "m4cashln__bf", "Cash Lines (Barcrest) (MPU4) (set 79)", - "m4cashln__bg", "Cash Lines (Barcrest) (MPU4) (set 80)", - "m4cashln__bh", "Cash Lines (Barcrest) (MPU4) (set 81)", - "m4cashln__bi", "Cash Lines (Barcrest) (MPU4) (set 82)", - "m4cashln__bj", "Cash Lines (Barcrest) (MPU4) (set 83)", - "m4cashln__c", "Cash Lines (Barcrest) (MPU4) (set 4)", - "m4cashln__d", "Cash Lines (Barcrest) (MPU4) (set 5)", - "m4cashln__e", "Cash Lines (Barcrest) (MPU4) (set 6)", - "m4cashln__f", "Cash Lines (Barcrest) (MPU4) (set 7)", - "m4cashln__g", "Cash Lines (Barcrest) (MPU4) (set 8)", - "m4cashln__h", "Cash Lines (Barcrest) (MPU4) (set 9)", - "m4cashln__i", "Cash Lines (Barcrest) (MPU4) (set 10)", - "m4cashln__j", "Cash Lines (Barcrest) (MPU4) (set 11)", - "m4cashln__k", "Cash Lines (Barcrest) (MPU4) (set 12)", - "m4cashln__l", "Cash Lines (Barcrest) (MPU4) (set 13)", - "m4cashln__m", "Cash Lines (Barcrest) (MPU4) (set 14)", - "m4cashln__n", "Cash Lines (Barcrest) (MPU4) (set 15)", - "m4cashln__o", "Cash Lines (Barcrest) (MPU4) (set 16)", - "m4cashln__p", "Cash Lines (Barcrest) (MPU4) (set 17)", - "m4cashln__q", "Cash Lines (Barcrest) (MPU4) (set 18)", - "m4cashln__r", "Cash Lines (Barcrest) (MPU4) (set 19)", - "m4cashln__s", "Cash Lines (Barcrest) (MPU4) (set 20)", - "m4cashln__t", "Cash Lines (Barcrest) (MPU4) (set 21)", - "m4cashln__u", "Cash Lines (Barcrest) (MPU4) (set 22)", - "m4cashln__v", "Cash Lines (Barcrest) (MPU4) (set 23)", - "m4cashln__w", "Cash Lines (Barcrest) (MPU4) (set 24)", - "m4cashln__x", "Cash Lines (Barcrest) (MPU4) (set 25)", - "m4cashln__y", "Cash Lines (Barcrest) (MPU4) (set 26)", - "m4cashln__z", "Cash Lines (Barcrest) (MPU4) (set 27)", - "m4cashmn", "Cash Machine (Barcrest) (MPU4) (set 1)", - "m4cashmn__0", "Cash Machine (Barcrest) (MPU4) (set 28)", - "m4cashmn__1", "Cash Machine (Barcrest) (MPU4) (set 29)", - "m4cashmn__2", "Cash Machine (Barcrest) (MPU4) (set 30)", - "m4cashmn__3", "Cash Machine (Barcrest) (MPU4) (set 31)", - "m4cashmn__4", "Cash Machine (Barcrest) (MPU4) (set 32)", - "m4cashmn__5", "Cash Machine (Barcrest) (MPU4) (set 33)", - "m4cashmn__6", "Cash Machine (Barcrest) (MPU4) (set 34)", - "m4cashmn__7", "Cash Machine (Barcrest) (MPU4) (set 35)", - "m4cashmn__8", "Cash Machine (Barcrest) (MPU4) (set 36)", - "m4cashmn__9", "Cash Machine (Barcrest) (MPU4) (set 37)", - "m4cashmn__a", "Cash Machine (Barcrest) (MPU4) (set 2)", - "m4cashmn__aa", "Cash Machine (Barcrest) (MPU4) (set 38)", - "m4cashmn__ab", "Cash Machine (Barcrest) (MPU4) (set 39)", - "m4cashmn__ac", "Cash Machine (Barcrest) (MPU4) (set 40)", - "m4cashmn__ad", "Cash Machine (Barcrest) (MPU4) (set 41)", - "m4cashmn__ae", "Cash Machine (Barcrest) (MPU4) (set 42)", - "m4cashmn__af", "Cash Machine (Barcrest) (MPU4) (set 43)", - "m4cashmn__ag", "Cash Machine (Barcrest) (MPU4) (set 44)", - "m4cashmn__ah", "Cash Machine (Barcrest) (MPU4) (set 45)", - "m4cashmn__ai", "Cash Machine (Barcrest) (MPU4) (set 46)", - "m4cashmn__aj", "Cash Machine (Barcrest) (MPU4) (set 47)", - "m4cashmn__ak", "Cash Machine (Barcrest) (MPU4) (set 48)", - "m4cashmn__al", "Cash Machine (Barcrest) (MPU4) (set 49)", - "m4cashmn__b", "Cash Machine (Barcrest) (MPU4) (set 3)", - "m4cashmn__c", "Cash Machine (Barcrest) (MPU4) (set 4)", - "m4cashmn__d", "Cash Machine (Barcrest) (MPU4) (set 5)", - "m4cashmn__e", "Cash Machine (Barcrest) (MPU4) (set 6)", - "m4cashmn__f", "Cash Machine (Barcrest) (MPU4) (set 7)", - "m4cashmn__g", "Cash Machine (Barcrest) (MPU4) (set 8)", - "m4cashmn__h", "Cash Machine (Barcrest) (MPU4) (set 9)", - "m4cashmn__i", "Cash Machine (Barcrest) (MPU4) (set 10)", - "m4cashmn__j", "Cash Machine (Barcrest) (MPU4) (set 11)", - "m4cashmn__k", "Cash Machine (Barcrest) (MPU4) (set 12)", - "m4cashmn__l", "Cash Machine (Barcrest) (MPU4) (set 13)", - "m4cashmn__m", "Cash Machine (Barcrest) (MPU4) (set 14)", - "m4cashmn__n", "Cash Machine (Barcrest) (MPU4) (set 15)", - "m4cashmn__o", "Cash Machine (Barcrest) (MPU4) (set 16)", - "m4cashmn__p", "Cash Machine (Barcrest) (MPU4) (set 17)", - "m4cashmn__q", "Cash Machine (Barcrest) (MPU4) (set 18)", - "m4cashmn__r", "Cash Machine (Barcrest) (MPU4) (set 19)", - "m4cashmn__s", "Cash Machine (Barcrest) (MPU4) (set 20)", - "m4cashmn__t", "Cash Machine (Barcrest) (MPU4) (set 21)", - "m4cashmn__u", "Cash Machine (Barcrest) (MPU4) (set 22)", - "m4cashmn__v", "Cash Machine (Barcrest) (MPU4) (set 23)", - "m4cashmn__w", "Cash Machine (Barcrest) (MPU4) (set 24)", - "m4cashmn__x", "Cash Machine (Barcrest) (MPU4) (set 25)", - "m4cashmn__y", "Cash Machine (Barcrest) (MPU4) (set 26)", - "m4cashmn__z", "Cash Machine (Barcrest) (MPU4) (set 27)", - "m4cashmn__za", "Cash Machine (Barcrest) (MPU4) (CMH 0.6Y, hack?)", - "m4cashmn__zb", "Cash Machine (Barcrest) (MPU4) (CMA 0.7C, hack?)", - "m4cashmx", "Cash Matrix (Barcrest) (MPU4) (CM 1.7, set 1)", - "m4cashmxa", "Cash Matrix (Barcrest) (MPU4) (CM 1.7, set 2)", - "m4cashzn", "Cash Zone (Barcrest) (MPU4) (CAZ 1.2)", - "m4cashzna", "Cash Zone (Barcrest) (MPU4) (CAZ 1.5)", - "m4casmul", "Casino Multiplay (Barcrest) (MPU4)", - "m4casot", "Old Timer (Barcrest) (Dutch, alt 'Black and White' sound roms) (DOT1.1)", - "m4cbing", "Cherry Bingo (Redpoint Systems) (MPU4)", - "m4ccc", "Criss Cross Crazy (Coinworld) (MPU4?)", - "m4cclimb", "Crazy Climber (Crystal) (MPU4) (set 1)", - "m4cclimba", "Crazy Climber (Crystal) (MPU4) (set 2)", - "m4ccop", "Cash Cops (MPU4?) (set 1)", - "m4ccopa", "Cash Cops (MPU4?) (set 2)", - "m4ccopb", "Cash Cops (MPU4?) (set 3)", - "m4celclb", "Celebration Club (Barcrest) (MPU4)", - "m4centpt", "Centrepoint (Barcrest) (v1.3) (MPU4)", - "m4centpta", "Centrepoint (Barcrest) (v1.5) (MPU4)", - "m4ceptr", "Ceptor (Barcrest) (Dutch) (MPU4) (DCE 1.0)", - "m4cfinln", "Cup Final (Nova) (MPU4) (set 1)", - "m4cfinln__a", "Cup Final (Nova) (MPU4) (set 2)", - "m4ch30", "unknown MPU4 'CH3 0.1' (Barcrest) (MPU4)", - "m4chacec", "Chase The Ace [Cards] (Empire) (MPU4, set 1)", - "m4chaceca", "Chase The Ace [Cards] (Empire) (MPU4, set 2)", - "m4chacef", "Chase The Ace [Fruits] (Empire) (MPU4, set 1)", - "m4chacefa", "Chase The Ace [Fruits] (Empire) (MPU4, set 2)", - "m4chacefb", "Chase The Ace [Fruits] (Empire) (MPU4, set 3)", - "m4chacefc", "Chase The Ace [Fruits] (Empire) (MPU4, set 4)", - "m4chasei", "Chase Invaders (Barcrest) (MPU4) (set 1)", - "m4chaseia", "Chase Invaders (Barcrest) (MPU4) (set 2)", - "m4chaseib", "Chase Invaders (Barcrest) (MPU4) (set 3)", - "m4chaseic", "Chase Invaders (Barcrest) (MPU4) (set 4)", - "m4chaseid", "Chase Invaders (Barcrest) (MPU4) (set 5)", - "m4chaseie", "Chase Invaders (Barcrest) (MPU4) (set 6)", - "m4chaseif", "Chase Invaders (Barcrest) (MPU4) (set 7)", - "m4cheryo", "Cherryo (Barcrest) (DCH, Dutch) (MPU4)", - "m4clab", "Cash Lab (Qps) (MPU4) (set 1)", - "m4clab__a", "Cash Lab (Qps) (MPU4) (set 2)", - "m4clab__b", "Cash Lab (Qps) (MPU4) (set 3)", - "m4clab__c", "Cash Lab (Qps) (MPU4) (set 4)", - "m4clab__d", "Cash Lab (Qps) (MPU4) (set 5)", - "m4clab__e", "Cash Lab (Qps) (MPU4) (set 6)", - "m4clab__f", "Cash Lab (Qps) (MPU4) (set 7)", - "m4clab__g", "Cash Lab (Qps) (MPU4) (set 8)", - "m4clab__h", "Cash Lab (Qps) (MPU4) (set 9)", - "m4clab__i", "Cash Lab (Qps) (MPU4) (set 10)", - "m4clab__j", "Cash Lab (Qps) (MPU4) (set 11)", - "m4class", "First Class (Barcrest) [DFC, Dutch] (MPU4) (set 1)", - "m4classa", "First Class (Barcrest) [DFC, Dutch] (MPU4) (set 2)", - "m4clbclm", "Club Climber (Barcrest) (MPU4, C1C 3.3)", - "m4clbclma", "Club Climber (Barcrest) (MPU4, CC 4.5)", - "m4clbcls", "Club Classic (Barcrest) (MPU4)", - "m4clbcnt", "Club Connect (Barcrest) (MPU4) (set 1)", - "m4clbcnta", "Club Connect (Barcrest) (MPU4) (set 2)", - "m4clbcntb", "Club Connect (Barcrest) (MPU4) (set 3)", - "m4clbcntc", "Club Connect (Barcrest) (MPU4) (set 4)", - "m4clbcntd", "Club Connect (Barcrest) (MPU4) (set 5)", - "m4clbdbl", "Club Double (Barcrest) (MPU4) (CD 1.6)", - "m4clbrpl", "Club Replay (PCP) (MPU4) (01)", - "m4clbshf", "Club Shuffle (Barcrest) (MPU4)", - "m4clbveg", "Club Vegas (Barcrest) (MPU4) (set 1)", - "m4clbvega", "Club Vegas (Barcrest) (MPU4) (set 2)", - "m4clbvegb", "Club Vegas (Barcrest) (MPU4) (set 3)", - "m4clbvegc", "Club Vegas (Barcrest) (MPU4) (set 4)", - "m4clbx", "Club X (Barcrest) (MPU4) (set 1)", - "m4clbxa", "Club X (Barcrest) (MPU4) (set 2)", - "m4clbxb", "Club X (Barcrest) (MPU4) (set 3)", - "m4cld02", "unknown MPU4 'CLD 0.2C' (MPU4?)", - "m4click", "Clickity Click (Barcrest) (MPU4 w/ Plasma DMD)", - "m4clr", "MPU4 Meter Clear ROM", - "m4cmont", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 1)", - "m4cmont_1", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 2)", - "m4cmont_10", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 11)", - "m4cmont_11", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 12)", - "m4cmont_12", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 13)", - "m4cmont_13", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 14)", - "m4cmont_2", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 3)", - "m4cmont_3", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 4)", - "m4cmont_4", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 5)", - "m4cmont_5", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 6)", - "m4cmont_6", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 7)", - "m4cmont_7", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 8)", - "m4cmont_8", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 9)", - "m4cmont_9", "Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 10)", - "m4cmont_gt1", "Casino Monte Carlo (Avantime?) (MPU4) (GTR, set 1)", - "m4cmont_gt2", "Casino Monte Carlo (Avantime?) (MPU4) (GTR, set 2)", - "m4cmont_gt3", "Casino Monte Carlo (Avantime?) (MPU4) (GTR, set 3)", - "m4cmont_l1", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 1)", - "m4cmont_l10", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 10)", - "m4cmont_l11", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 11)", - "m4cmont_l12", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 12)", - "m4cmont_l13", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 13)", - "m4cmont_l14", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 14)", - "m4cmont_l15", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 15)", - "m4cmont_l16", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 16)", - "m4cmont_l2", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 2)", - "m4cmont_l3", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 3)", - "m4cmont_l4", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 4)", - "m4cmont_l5", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 5)", - "m4cmont_l6", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 6)", - "m4cmont_l7", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 7)", - "m4cmont_l8", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 8)", - "m4cmont_l9", "Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 9)", - "m4cmont_r1", "Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 1)", - "m4cmont_r2", "Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 2)", - "m4cmont_r3", "Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 3)", - "m4cmont_r4", "Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 4)", - "m4cmont_r5", "Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 5)", - "m4cmont_r6", "Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 6)", - "m4cmont_r7", "Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 7)", - "m4cmont_r8", "Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 8)", - "m4cmont_u1", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 1)", - "m4cmont_u10", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 10)", - "m4cmont_u11", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 11)", - "m4cmont_u12", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 12)", - "m4cmont_u13", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 13)", - "m4cmont_u14", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 14)", - "m4cmont_u15", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 15)", - "m4cmont_u16", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 16)", - "m4cmont_u17", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 17)", - "m4cmont_u18", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 18)", - "m4cmont_u19", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 19)", - "m4cmont_u2", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 2)", - "m4cmont_u20", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 20)", - "m4cmont_u21", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 21)", - "m4cmont_u22", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 22)", - "m4cmont_u23", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 23)", - "m4cmont_u24", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 24)", - "m4cmont_u25", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 25)", - "m4cmont_u26", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 26)", - "m4cmont_u27", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 27)", - "m4cmont_u3", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 3)", - "m4cmont_u4", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 4)", - "m4cmont_u5", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 5)", - "m4cmont_u6", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 6)", - "m4cmont_u7", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 7)", - "m4cmont_u8", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 8)", - "m4cmont_u9", "Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 9)", - "m4cojok", "Carry On Joker (Barcrest) (MPU4) (set 1)", - "m4cojok__a", "Carry On Joker (Barcrest) (MPU4) (set 2)", - "m4cojok__b", "Carry On Joker (Barcrest) (MPU4) (set 3)", - "m4cojok__c", "Carry On Joker (Barcrest) (MPU4) (set 4)", - "m4cojok__d", "Carry On Joker (Barcrest) (MPU4) (set 5)", - "m4cojok__e", "Carry On Joker (Barcrest) (MPU4) (set 6)", - "m4cojok__f", "Carry On Joker (Barcrest) (MPU4) (set 7)", - "m4coloss", "Colossus (Mdm) (MPU4, set 1)", - "m4colossa", "Colossus (Mdm) (MPU4, set 2)", - "m4colossb", "Colossus (Mdm) (MPU4, set 3)", - "m4colossc", "Colossus (Mdm) (MPU4, set 4)", - "m4colossd", "Colossus (Mdm) (MPU4, set 5)", - "m4colosse", "Colossus (Mdm) (MPU4, set 6)", - "m4colossf", "Colossus (Mdm) (MPU4, set 7)", - "m4colossg", "Colossus (Mdm) (MPU4, set 8)", - "m4coney", "Coney Island (Qps) (MPU4)", - "m4conn4", "Connect 4", - "m4copcsh", "Coppa Cash (Barcrest) (MPU4) (FC 2.0)", - "m4coscas", "Cosmic Casino (Barcrest) (MPU4) (set 1)", - "m4coscas__a", "Cosmic Casino (Barcrest) (MPU4) (set 2)", - "m4coscas__b", "Cosmic Casino (Barcrest) (MPU4) (set 3)", - "m4coscas__c", "Cosmic Casino (Barcrest) (MPU4) (set 4)", - "m4coscas__d", "Cosmic Casino (Barcrest) (MPU4) (set 5)", - "m4coscas__e", "Cosmic Casino (Barcrest) (MPU4) (set 6)", - "m4coscas__f", "Cosmic Casino (Barcrest) (MPU4) (set 7)", - "m4coscas__g", "Cosmic Casino (Barcrest) (MPU4) (set 8)", - "m4coscas__h", "Cosmic Casino (Barcrest) (MPU4) (set 9)", - "m4coscas__i", "Cosmic Casino (Barcrest) (MPU4) (set 10)", - "m4coscas__j", "Cosmic Casino (Barcrest) (MPU4) (set 11)", - "m4coscas__k", "Cosmic Casino (Barcrest) (MPU4) (set 12)", - "m4coscas__l", "Cosmic Casino (Barcrest) (MPU4) (set 13)", - "m4coscas__m", "Cosmic Casino (Barcrest) (MPU4) (set 14)", - "m4coscas__n", "Cosmic Casino (Barcrest) (MPU4) (set 15)", - "m4coscas__o", "Cosmic Casino (Barcrest) (MPU4) (set 16)", - "m4coscas__p", "Cosmic Casino (Barcrest) (MPU4) (set 17)", - "m4coscas__q", "Cosmic Casino (Barcrest) (MPU4) (set 18)", - "m4coscas__r", "Cosmic Casino (Barcrest) (MPU4) (set 19)", - "m4coscas__s", "Cosmic Casino (Barcrest) (MPU4) (set 20)", - "m4coscas__t", "Cosmic Casino (Barcrest) (MPU4) (set 21)", - "m4coscas__u", "Cosmic Casino (Barcrest) (MPU4) (set 22)", - "m4coscas__v", "Cosmic Casino (Barcrest) (MPU4) (set 23)", - "m4cpfinl", "Cup Final (Bwb) (MPU4) (set 1)", - "m4cpfinl__a", "Cup Final (Bwb) (MPU4) (set 2)", - "m4cpfinl__b", "Cup Final (Bwb) (MPU4) (set 3)", - "m4cpfinl__c", "Cup Final (Bwb) (MPU4) (set 4)", - "m4cpfinl__d", "Cup Final (Bwb) (MPU4) (set 5)", - "m4cpfinl__e", "Cup Final (Bwb) (MPU4) (set 6)", - "m4cpfinl__f", "Cup Final (Bwb) (MPU4) (set 7)", - "m4cpfinl__g", "Cup Final (Bwb) (MPU4) (set 8)", - "m4cpfinl__h", "Cup Final (Bwb) (MPU4) (set 9)", - "m4cpfinl__i", "Cup Final (Bwb) (MPU4) (set 10)", - "m4cpfinl__j", "Cup Final (Bwb) (MPU4) (set 11)", - "m4cpfinl__k", "Cup Final (Bwb) (MPU4) (set 12)", - "m4cpycat", "Copy Cat (Barcrest) (MPU4) (set 1)", - "m4cpycat__0", "Copy Cat (Barcrest) (MPU4) (set 28)", - "m4cpycat__1", "Copy Cat (Barcrest) (MPU4) (set 29)", - "m4cpycat__2", "Copy Cat (Barcrest) (MPU4) (set 30)", - "m4cpycat__3", "Copy Cat (Barcrest) (MPU4) (set 31)", - "m4cpycat__4", "Copy Cat (Barcrest) (MPU4) (set 32)", - "m4cpycat__5", "Copy Cat (Barcrest) (MPU4) (set 33)", - "m4cpycat__6", "Copy Cat (Barcrest) (MPU4) (set 34)", - "m4cpycat__7", "Copy Cat (Barcrest) (MPU4) (set 35)", - "m4cpycat__8", "Copy Cat (Barcrest) (MPU4) (set 36)", - "m4cpycat__a", "Copy Cat (Barcrest) (MPU4) (set 2)", - "m4cpycat__b", "Copy Cat (Barcrest) (MPU4) (set 3)", - "m4cpycat__c", "Copy Cat (Barcrest) (MPU4) (set 4)", - "m4cpycat__d", "Copy Cat (Barcrest) (MPU4) (set 5)", - "m4cpycat__e", "Copy Cat (Barcrest) (MPU4) (set 6)", - "m4cpycat__f", "Copy Cat (Barcrest) (MPU4) (set 7)", - "m4cpycat__g", "Copy Cat (Barcrest) (MPU4) (set 8)", - "m4cpycat__h", "Copy Cat (Barcrest) (MPU4) (set 9)", - "m4cpycat__i", "Copy Cat (Barcrest) (MPU4) (set 10)", - "m4cpycat__j", "Copy Cat (Barcrest) (MPU4) (set 11)", - "m4cpycat__k", "Copy Cat (Barcrest) (MPU4) (set 12)", - "m4cpycat__l", "Copy Cat (Barcrest) (MPU4) (set 13)", - "m4cpycat__m", "Copy Cat (Barcrest) (MPU4) (set 14)", - "m4cpycat__n", "Copy Cat (Barcrest) (MPU4) (set 15)", - "m4cpycat__o", "Copy Cat (Barcrest) (MPU4) (set 16)", - "m4cpycat__p", "Copy Cat (Barcrest) (MPU4) (set 17)", - "m4cpycat__q", "Copy Cat (Barcrest) (MPU4) (set 18)", - "m4cpycat__r", "Copy Cat (Barcrest) (MPU4) (set 19)", - "m4cpycat__s", "Copy Cat (Barcrest) (MPU4) (set 20)", - "m4cpycat__t", "Copy Cat (Barcrest) (MPU4) (set 21)", - "m4cpycat__u", "Copy Cat (Barcrest) (MPU4) (set 22)", - "m4cpycat__v", "Copy Cat (Barcrest) (MPU4) (set 23)", - "m4cpycat__w", "Copy Cat (Barcrest) (MPU4) (set 24)", - "m4cpycat__x", "Copy Cat (Barcrest) (MPU4) (set 25)", - "m4cpycat__y", "Copy Cat (Barcrest) (MPU4) (set 26)", - "m4cpycat__z", "Copy Cat (Barcrest) (MPU4) (set 27)", - "m4crdome", "Crystal Dome (Barcrest) (MPU4) (set 1)", - "m4crdome__a", "Crystal Dome (Barcrest) (MPU4) (set 2)", - "m4crdome__b", "Crystal Dome (Barcrest) (MPU4) (set 3)", - "m4crdome__c", "Crystal Dome (Barcrest) (MPU4) (set 4)", - "m4crdome__d", "Crystal Dome (Barcrest) (MPU4) (set 5)", - "m4crdome__e", "Crystal Dome (Barcrest) (MPU4) (set 6)", - "m4crdome__f", "Crystal Dome (Barcrest) (MPU4) (set 7)", - "m4crdome__g", "Crystal Dome (Barcrest) (MPU4) (set 8)", - "m4crdome__h", "Crystal Dome (Barcrest) (MPU4) (set 9)", - "m4crdome__i", "Crystal Dome (Barcrest) (MPU4) (set 10)", - "m4crdome__j", "Crystal Dome (Barcrest) (MPU4) (set 11)", - "m4crdome__k", "Crystal Dome (Barcrest) (MPU4) (set 12)", - "m4crdome__l", "Crystal Dome (Barcrest) (MPU4) (set 13)", - "m4crdome__m", "Crystal Dome (Barcrest) (MPU4) (set 14)", - "m4crdome__n", "Crystal Dome (Barcrest) (MPU4) (set 15)", - "m4crfire", "Crossfire (Empire) (MPU4, set 1)", - "m4crfirea", "Crossfire (Empire) (MPU4, set 2)", - "m4crjwl", "Crown Jewels Club (Barcrest) (MPU4) (set 1)", - "m4crjwl2", "Crown Jewels Mk II Club (Barcrest) (MPU4) (set 1)", - "m4crjwl2a", "Crown Jewels Mk II Club (Barcrest) (MPU4) (set 2)", - "m4crjwl2b", "Crown Jewels Mk II Club (Barcrest) (MPU4) (set 3)", - "m4crjwla", "Crown Jewels Club (Barcrest) (MPU4) (set 2)", - "m4crjwlb", "Crown Jewels Club (Barcrest) (MPU4) (set 3)", - "m4crjwlc", "Crown Jewels Club (Barcrest) (MPU4) (set 4)", - "m4crkpot", "Crackpot 100 Club (Barcrest) (MPU4) (set 1, C1P 1.2)", - "m4crkpota", "Crackpot 100 Club (Barcrest) (MPU4) (set 2, CP 3.8)", - "m4crkpotb", "Crackpot 100 Club (Barcrest) (MPU4) (set 3, CP 3.1)", - "m4crmaze", "Crystal Maze (Barcrest) (MPU4) (CRM 3.0)", - "m4crmaze__c", "Crystal Maze (Barcrest) (MPU4) (CRM 2.3)", - "m4crmaze__d", "Crystal Maze (Barcrest) (MPU4) (CRM 3.0AD)", - "m4crmaze__e", "Crystal Maze (Barcrest) (MPU4) (CRM 3.0B)", - "m4crmaze__f", "Crystal Maze (Barcrest) (MPU4) (CRM 3.0BD)", - "m4crmaze__g", "Crystal Maze (Barcrest) (MPU4) (CRM 3.0C)", - "m4crmaze__h", "Crystal Maze (Barcrest) (MPU4) (CRM 3.0D)", - "m4crmaze__i", "Crystal Maze (Barcrest) (MPU4) (CRM 3.0KD)", - "m4crmaze__j", "Crystal Maze (Barcrest) (MPU4) (CRM 3.0YD)", - "m4crmaze__k", "Crystal Maze (Barcrest) (MPU4) (CRM 3.0K)", - "m4crmaze__l", "Crystal Maze (Barcrest) (MPU4) (CRM 3.0Y)", - "m4crmaze__m", "Crystal Maze (Barcrest) (MPU4) (CRM 3.0, hack?)", - "m4crmaze__n", "Crystal Maze (Bwb / Barcrest) (MPU4) (CRC 0.7, hack?)", - "m4crmaze__o", "Crystal Maze (Bwb / Barcrest) (MPU4) (CR5 1.0, hack?)", - "m4crmaze__p", "Crystal Maze (Bwb / Barcrest) (MPU4) (CRC 1.3, hack?)", - "m4crmaze__q", "Crystal Maze (Bwb / Barcrest) (MPU4) (CR5 2.0, hack?, set 1)", - "m4crmaze__r", "Crystal Maze (Bwb / Barcrest) (MPU4) (CR5 2.0, hack?, set 2)", - "m4crmaze__s", "Crystal Maze (Bwb / Barcrest) (MPU4) (CR8 1.2, hack?)", - "m4crzbn", "Crazy Bingo (Union) (MPU4)", - "m4crzcap", "Crazy Capers (Empire) (MPU4, set 1)", - "m4crzcapa", "Crazy Capers (Empire) (MPU4, set 2)", - "m4crzcapb", "Crazy Capers (Empire) (MPU4, set 3)", - "m4crzcapc", "Crazy Capers (Empire) (MPU4, set 4)", - "m4crzcav", "Crazy Cavern (Nova) (MPU4)", - "m4crzcl", "Crazy Climber Club (Crystal) (MPU4) (set 1)", - "m4crzcla", "Crazy Climber Club (Crystal) (MPU4) (set 2)", - "m4crzclb", "Crazy Climber Club (Crystal) (MPU4) (set 3)", - "m4crzclc", "Crazy Climber Club (Crystal) (MPU4) (set 4)", - "m4crzcld", "Crazy Climber Club (Crystal) (MPU4) (set 5)", - "m4crzcsn", "Crazy Casino (Nova) (MPU4)", - "m4crzjk", "Crazy Jokers (Nova?) (MPU4)", - "m4crzjwl", "Crown Jewels (Barcrest) (German) (MPU4) (set 1)", - "m4crzjwla", "Crown Jewels (Barcrest) (German) (MPU4) (set 2)", - "m4crzjwlb", "Crown Jewels (Barcrest) (German) (MPU4) (set 3)", - "m4crzjwlc", "Crown Jewels (Barcrest) (German) (MPU4) (set 4)", - "m4crzjwld", "Crown Jewels (Barcrest) (German) (MPU4) (set 5)", - "m4crzjwle", "Crown Jewels (Barcrest) (German) (MPU4) (set 6)", - "m4crzjwlf", "Crown Jewels (Barcrest) (German) (MPU4) (set 7)", - "m4crzjwlg", "Crown Jewels (Barcrest) (German) (MPU4) (set 8)", - "m4crzjwlh", "Crown Jewels (Barcrest) (German) (MPU4) (set 9)", - "m4cshenc", "Cash Encounters (Barcrest) (MPU4) (set 1)", - "m4cshenc__a", "Cash Encounters (Barcrest) (MPU4) (set 2)", - "m4cshenc__b", "Cash Encounters (Barcrest) (MPU4) (set 3)", - "m4cshenc__c", "Cash Encounters (Barcrest) (MPU4) (set 4)", - "m4cshenc__d", "Cash Encounters (Barcrest) (MPU4) (set 5)", - "m4cshino", "Cashino Deluxe (Pcp) (MPU4)", - "m4csoc", "Championship Soccer (Bwb) (MPU4) (set 1)", - "m4csoc__a", "Championship Soccer (Bwb) (MPU4) (set 2)", - "m4csoc__b", "Championship Soccer (Bwb) (MPU4) (set 3)", - "m4csoc__c", "Championship Soccer (Bwb) (MPU4) (set 4)", - "m4csoc__d", "Championship Soccer (Bwb) (MPU4) (set 5)", - "m4csoc__e", "Championship Soccer (Bwb) (MPU4) (set 6)", - "m4csoc__f", "Championship Soccer (Bwb) (MPU4) (set 7)", - "m4csoc__g", "Championship Soccer (Bwb) (MPU4) (set 8)", - "m4csoc__h", "Championship Soccer (Bwb) (MPU4) (set 9)", - "m4csoc__i", "Championship Soccer (Bwb) (MPU4) (set 10)", - "m4csoc__j", "Championship Soccer (Bwb) (MPU4) (set 11)", - "m4cstrik", "Cash Strike (Empire) (MPU4, set 1)", - "m4cstrika", "Cash Strike (Empire) (MPU4, set 2)", - "m4cstrikb", "Cash Strike (Empire) (MPU4, set 3)", - "m4cstrikc", "Cash Strike (Empire) (MPU4, set 4)", - "m4ctn", "Tuppenny Nudger Classic (Mdm?) (MPU4)", - "m4cwalk", "Cake Walk (Union) (MPU4)", - "m4czne", "Cash Zone (Bwb) (MPU4)", - "m4danced", "Dancing Diamonds (Bwb) (MPU4) (set 1)", - "m4danced__a", "Dancing Diamonds (Bwb) (MPU4) (set 2)", - "m4danced__b", "Dancing Diamonds (Bwb) (MPU4) (set 3)", - "m4danced__c", "Dancing Diamonds (Bwb) (MPU4) (set 4)", - "m4danced__d", "Dancing Diamonds (Bwb) (MPU4) (set 5)", - "m4danced__e", "Dancing Diamonds (Bwb) (MPU4) (set 6)", - "m4danced__f", "Dancing Diamonds (Bwb) (MPU4) (set 7)", - "m4danced__g", "Dancing Diamonds (Bwb) (MPU4) (set 8)", - "m4danced__h", "Dancing Diamonds (Bwb) (MPU4) (set 9)", - "m4danced__i", "Dancing Diamonds (Bwb) (MPU4) (set 10)", - "m4danced__j", "Dancing Diamonds (Bwb) (MPU4) (set 11)", - "m4danced__k", "Dancing Diamonds (Bwb) (MPU4) (set 12)", - "m4danced__l", "Dancing Diamonds (Bwb) (MPU4) (set 13)", - "m4danced__m", "Dancing Diamonds (Bwb) (MPU4) (set 14)", - "m4danced__n", "Dancing Diamonds (Bwb) (MPU4) (set 15)", - "m4danced__o", "Dancing Diamonds (Bwb) (MPU4) (set 16)", - "m4danced__p", "Dancing Diamonds (Bwb) (MPU4) (set 17)", - "m4danced__q", "Dancing Diamonds (Bwb) (MPU4) (set 18)", - "m4danced__r", "Dancing Diamonds (Bwb) (MPU4) (set 19)", - "m4danced__s", "Dancing Diamonds (Bwb) (MPU4) (set 20)", - "m4danced__t", "Dancing Diamonds (Bwb) (MPU4) (set 21)", - "m4danced__u", "Dancing Diamonds (Bwb) (MPU4) (set 22)", - "m4danced__v", "Dancing Diamonds (Bwb) (MPU4) (set 23)", - "m4danced__w", "Dancing Diamonds (Bwb) (MPU4) (set 24)", - "m4daytn", "Daytona (Bwb) (MPU4) (set 1)", - "m4daytn__a", "Daytona (Bwb) (MPU4) (set 2)", - "m4daytn__b", "Daytona (Bwb) (MPU4) (set 3)", - "m4daytn__c", "Daytona (Bwb) (MPU4) (set 4)", - "m4daytn__d", "Daytona (Bwb) (MPU4) (set 5)", - "m4daytn__e", "Daytona (Bwb) (MPU4) (set 6)", - "m4daytn__f", "Daytona (Bwb) (MPU4) (set 7)", - "m4daytn__g", "Daytona (Bwb) (MPU4) (set 8)", - "m4daytn__h", "Daytona (Bwb) (MPU4) (set 9)", - "m4daytn__i", "Daytona (Bwb) (MPU4) (set 10)", - "m4daytn__j", "Daytona (Bwb) (MPU4) (set 11)", - "m4daytn__k", "Daytona (Bwb) (MPU4) (set 12)", - "m4daytn__l", "Daytona (Bwb) (MPU4) (set 13)", - "m4daytn__m", "Daytona (Bwb) (MPU4) (set 14)", - "m4daytn__n", "Daytona (Bwb) (MPU4) (set 15)", - "m4dbl9", "Double 9's (Barcrest) (MPU4) (set 1)", - "m4dbl9a", "Double 9's (Barcrest) (MPU4) (set 2)", - "m4dblchn", "Double Chance (DJE) (MPU4)", - "m4dbldm", "Double Diamond Club (Barcrest) (MPU4) (set 1)", - "m4dbldm__a", "Double Diamond Club (Barcrest) (MPU4) (set 2)", - "m4dbldm__b", "Double Diamond Club (Barcrest) (MPU4) (set 3)", - "m4dbldm__c", "Double Diamond Club (Barcrest) (MPU4) (set 4)", - "m4dblup", "Double Up (Barcrest) (MPU4) (DU 1.5)", - "m4dcrls", "Double Crazy Reels (Qps) (MPU4) (set 1)", - "m4dcrls__a", "Double Crazy Reels (Qps) (MPU4) (set 2)", - "m4dcrls__b", "Double Crazy Reels (Qps) (MPU4) (set 3)", - "m4dcrls__c", "Double Crazy Reels (Qps) (MPU4) (set 4)", - "m4dcrls__d", "Double Crazy Reels (Qps) (MPU4) (set 5)", - "m4dcrls__e", "Double Crazy Reels (Qps) (MPU4) (set 6)", - "m4dcrls__f", "Double Crazy Reels (Qps) (MPU4) (set 7)", - "m4dcrls__g", "Double Crazy Reels (Qps) (MPU4) (set 8)", - "m4dcrls__h", "Double Crazy Reels (Qps) (MPU4) (set 9)", - "m4dcrls__i", "Double Crazy Reels (Qps) (MPU4) (set 10)", - "m4dcrls__j", "Double Crazy Reels (Qps) (MPU4) (set 11)", - "m4dcrls__k", "Double Crazy Reels (Qps) (MPU4) (set 12)", - "m4dcrls__l", "Double Crazy Reels (Qps) (MPU4) (set 13)", - "m4dcrls__m", "Double Crazy Reels (Qps) (MPU4) (set 14)", - "m4dcrls__n", "Double Crazy Reels (Qps) (MPU4) (set 15)", - "m4dcrls__o", "Double Crazy Reels (Qps) (MPU4) (set 16)", - "m4dcrls__p", "Double Crazy Reels (Qps) (MPU4) (set 17)", - "m4dcrls__q", "Double Crazy Reels (Qps) (MPU4) (set 18)", - "m4dcrls__r", "Double Crazy Reels (Qps) (MPU4) (set 19)", - "m4ddb", "Ding Dong Bells (Coinworld) (MPU4) (set 1)", - "m4ddba", "Ding Dong Bells (Coinworld) (MPU4) (set 2)", - "m4denmen", "Dennis The Menace (Barcrest) (MPU4) (DEN 1.2)", - "m4denmen_h1", "Dennis The Menace (Barcrest) (MPU4) (DMT 0.1, hack?)", - "m4denmen_h2", "Dennis The Menace (Barcrest) (MPU4) (V1 0.1, hack, set 1)", - "m4denmen_h3", "Dennis The Menace (Barcrest) (MPU4) (V1 0.1, hack, set 2)", - "m4denmend5", "Dennis The Menace (Barcrest) (MPU4) (DM5 0.1))", - "m4denmend5ad", "Dennis The Menace (Barcrest) (MPU4) (DM5 0.1AD)", - "m4denmend5b", "Dennis The Menace (Barcrest) (MPU4) (DM5 0.1B)", - "m4denmend5bd", "Dennis The Menace (Barcrest) (MPU4) (DM5 0.1BD)", - "m4denmend5d", "Dennis The Menace (Barcrest) (MPU4) (DM5 0.1D)", - "m4denmend5k", "Dennis The Menace (Barcrest) (MPU4) (DM5 0.1K)", - "m4denmend5kd", "Dennis The Menace (Barcrest) (MPU4) (DM5 0.1KD)", - "m4denmend5y", "Dennis The Menace (Barcrest) (MPU4) (DM5 0.1Y)", - "m4denmend5yd", "Dennis The Menace (Barcrest) (MPU4) (DM5 0.1YD)", - "m4denmend8", "Dennis The Menace (Barcrest) (MPU4) (DM8 0.1)", - "m4denmend8c", "Dennis The Menace (Barcrest) (MPU4) (DM8 0.1C)", - "m4denmend8d", "Dennis The Menace (Barcrest) (MPU4) (DM8 0.1D)", - "m4denmend8k", "Dennis The Menace (Barcrest) (MPU4) (DM8 0.1K)", - "m4denmend8y", "Dennis The Menace (Barcrest) (MPU4) (DM8 0.1Y)", - "m4denmend8yd", "Dennis The Menace (Barcrest) (MPU4) (DM8 0.1YD)", - "m4denmendnb", "Dennis The Menace (Barcrest) (MPU4) (DEN 1.2B)", - "m4denmendnc", "Dennis The Menace (Barcrest) (MPU4) (DEN 1.2C)", - "m4denmendnd", "Dennis The Menace (Barcrest) (MPU4) (DEN 1.2D)", - "m4denmendnk", "Dennis The Menace (Barcrest) (MPU4) (DEN 1.2K)", - "m4denmendny", "Dennis The Menace (Barcrest) (MPU4) (DEN 1.2Y)", - "m4denmendt", "Dennis The Menace (Barcrest) (MPU4) (DMT 0.1)", - "m4denmendtad", "Dennis The Menace (Barcrest) (MPU4) (DMT 0.1AD)", - "m4denmendtb", "Dennis The Menace (Barcrest) (MPU4) (DMT 0.1B)", - "m4denmendtbd", "Dennis The Menace (Barcrest) (MPU4) (DMT 0.1BD)", - "m4denmendtd", "Dennis The Menace (Barcrest) (MPU4) (DMT 0.1D)", - "m4denmendtk", "Dennis The Menace (Barcrest) (MPU4) (DMT 0.1K)", - "m4denmendtkd", "Dennis The Menace (Barcrest) (MPU4) (DMT 0.1KD)", - "m4denmendty", "Dennis The Menace (Barcrest) (MPU4) (DMT 0.1Y)", - "m4denmendtyd", "Dennis The Menace (Barcrest) (MPU4) (DMT 0.1YD)", - "m4dnj", "Double Nudge (unknown) (MPU4) (set 1)", - "m4dnja", "Double Nudge (unknown) (MPU4) (set 2)", - "m4dnjb", "Double Nudge (unknown) (MPU4) (set 3)", - "m4drac", "Dracula (Barcrest - Nova) (German) (MPU4) (set 1)", - "m4draca", "Dracula (Barcrest - Nova) (German) (MPU4) (set 2)", - "m4dracb", "Dracula (Barcrest - Nova) (German) (MPU4) (set 3)", - "m4dragon", "Dragon (Nova) (MPU4)", - "m4dtyfre", "Duty Free (Barcrest) (MPU4) (DUT 0.4)", - "m4dtyfre_h1", "Duty Free (Bwb / Barcrest) (MPU4) (DF4 4.1, hack?)", - "m4dtyfre_h2", "Duty Free (Barcrest) (MPU4) (DFT 0.1, hack?)", - "m4dtyfrebwb", "Duty Free (Bwb / Barcrest) (MPU4) (DF10 4.3, set 1)", - "m4dtyfrebwb_a", "Duty Free (Bwb / Barcrest) (MPU4) (DF10 4.3, set 2)", - "m4dtyfrebwb_b", "Duty Free (Bwb / Barcrest) (MPU4) (DF8 4.2)", - "m4dtyfrebwb_c", "Duty Free (Bwb / Barcrest) (MPU4) (DF8 2.2, set 1)", - "m4dtyfrebwb_d", "Duty Free (Bwb / Barcrest) (MPU4) (DF8 2.2, set 2)", - "m4dtyfrebwb_e", "Duty Free (Bwb / Barcrest) (MPU4) (DF4 4.1)", - "m4dtyfrebwb_f", "Duty Free (Bwb / Barcrest) (MPU4) (DF4 2.1)", - "m4dtyfrebwb_g", "Duty Free (Bwb / Barcrest) (MPU4) (DF4 1.1)", - "m4dtyfrebwb_h", "Duty Free (Bwb / Barcrest) (MPU4) (DFC 2.3)", - "m4dtyfref5", "Duty Free (Barcrest) (MPU4) (DF5 0.3)", - "m4dtyfref5ad", "Duty Free (Barcrest) (MPU4) (DF5 0.3AD)", - "m4dtyfref5b", "Duty Free (Barcrest) (MPU4) (DF5 0.3B)", - "m4dtyfref5bd", "Duty Free (Barcrest) (MPU4) (DF5 0.3BD)", - "m4dtyfref5d", "Duty Free (Barcrest) (MPU4) (DF5 0.3D)", - "m4dtyfref5k", "Duty Free (Barcrest) (MPU4) (DF5 0.3K)", - "m4dtyfref5kd", "Duty Free (Barcrest) (MPU4) (DF5 0.3KD)", - "m4dtyfref5r", "Duty Free (Barcrest) (MPU4) (DF5 0.3R)", - "m4dtyfref5rd", "Duty Free (Barcrest) (MPU4) (DF5 0.3RD)", - "m4dtyfref5y", "Duty Free (Barcrest) (MPU4) (DF5 0.3Y)", - "m4dtyfref5yd", "Duty Free (Barcrest) (MPU4) (DF5 0.3YD)", - "m4dtyfref8", "Duty Free (Barcrest) (MPU4) (DF8 0.1)", - "m4dtyfref8c", "Duty Free (Barcrest) (MPU4) (DF8 0.1C)", - "m4dtyfref8d", "Duty Free (Barcrest) (MPU4) (DF8 0.1D)", - "m4dtyfref8k", "Duty Free (Barcrest) (MPU4) (DF8 0.1K)", - "m4dtyfref8y", "Duty Free (Barcrest) (MPU4) (DF8 0.1Y)", - "m4dtyfref8yd", "Duty Free (Barcrest) (MPU4) (DF8 0.1YD)", - "m4dtyfreft", "Duty Free (Barcrest) (MPU4) (DFT 0.1)", - "m4dtyfreftad", "Duty Free (Barcrest) (MPU4) (DFT 0.1AD)", - "m4dtyfreftb", "Duty Free (Barcrest) (MPU4) (DFT 0.1B)", - "m4dtyfreftbd", "Duty Free (Barcrest) (MPU4) (DFT 0.1BD)", - "m4dtyfreftd", "Duty Free (Barcrest) (MPU4) (DFT 0.1D)", - "m4dtyfreftk", "Duty Free (Barcrest) (MPU4) (DFT 0.1K)", - "m4dtyfreftkd", "Duty Free (Barcrest) (MPU4) (DFT 0.1KD)", - "m4dtyfrefty", "Duty Free (Barcrest) (MPU4) (DFT 0.1Y)", - "m4dtyfreftyd", "Duty Free (Barcrest) (MPU4) (DFT 0.1YD)", - "m4dtyfreutb", "Duty Free (Barcrest) (MPU4) (DUT 0.4B)", - "m4dtyfreutc", "Duty Free (Barcrest) (MPU4) (DUT 0.4C)", - "m4dtyfrexd", "Duty Free (Barcrest) (MPU4) (XD5 0.2)", - "m4dtyfrexd_a", "Duty Free (Barcrest) (MPU4) (XD5 0.1)", - "m4dtyfrexdad", "Duty Free (Barcrest) (MPU4) (XD5 0.2AD)", - "m4dtyfrexdb", "Duty Free (Barcrest) (MPU4) (XD5 0.2B)", - "m4dtyfrexdbd", "Duty Free (Barcrest) (MPU4) (XD5 0.2BD)", - "m4dtyfrexdc", "Duty Free (Barcrest) (MPU4) (XD5 0.2C)", - "m4dtyfrexdd", "Duty Free (Barcrest) (MPU4) (XD5 0.2D)", - "m4dtyfrexdk", "Duty Free (Barcrest) (MPU4) (XD5 0.2K)", - "m4dtyfrexdkd", "Duty Free (Barcrest) (MPU4) (XD5 0.2KD)", - "m4dtyfrexdr", "Duty Free (Barcrest) (MPU4) (XD5 0.2R)", - "m4dtyfrexdrd", "Duty Free (Barcrest) (MPU4) (XD5 0.2RD)", - "m4dtyfrexdy", "Duty Free (Barcrest) (MPU4) (XD5 0.2Y)", - "m4dtyfrexdyd", "Duty Free (Barcrest) (MPU4) (XD5 0.2YD)", - "m4dtyfrexf", "Duty Free (Barcrest) (MPU4) (XFT 0.1)", - "m4dtyfrexfad", "Duty Free (Barcrest) (MPU4) (XFT 0.1AD)", - "m4dtyfrexfb", "Duty Free (Barcrest) (MPU4) (XFT 0.1B)", - "m4dtyfrexfbd", "Duty Free (Barcrest) (MPU4) (XFT 0.1BD)", - "m4dtyfrexfc", "Duty Free (Barcrest) (MPU4) (XFT 0.1C)", - "m4dtyfrexfd", "Duty Free (Barcrest) (MPU4) (XFT 0.1D)", - "m4dtyfrexfk", "Duty Free (Barcrest) (MPU4) (XFT 0.1K)", - "m4dtyfrexfkd", "Duty Free (Barcrest) (MPU4) (XFT 0.1KD)", - "m4dtyfrexfr", "Duty Free (Barcrest) (MPU4) (XFT 0.1R)", - "m4dtyfrexfrd", "Duty Free (Barcrest) (MPU4) (XFT 0.1RD)", - "m4dtyfrexfy", "Duty Free (Barcrest) (MPU4) (XFT 0.1Y)", - "m4dtyfrexfyd", "Duty Free (Barcrest) (MPU4) (XFT 0.1YD)", - "m4dz", "Danger Zone (Crystal) (MPU4)", - "m4eaw", "Everyone's A Winner (Barcrest) (MPU4) (set 1)", - "m4eaw__0", "Everyone's A Winner (Barcrest) (MPU4) (set 28)", - "m4eaw__1", "Everyone's A Winner (Barcrest) (MPU4) (set 29)", - "m4eaw__2", "Everyone's A Winner (Barcrest) (MPU4) (set 30)", - "m4eaw__3", "Everyone's A Winner (Barcrest) (MPU4) (set 31)", - "m4eaw__4", "Everyone's A Winner (Barcrest) (MPU4) (set 32)", - "m4eaw__5", "Everyone's A Winner (Barcrest) (MPU4) (set 33)", - "m4eaw__6", "Everyone's A Winner (Barcrest) (MPU4) (set 34)", - "m4eaw__7", "Everyone's A Winner (Barcrest) (MPU4) (set 35)", - "m4eaw__8", "Everyone's A Winner (Barcrest) (MPU4) (set 36)", - "m4eaw__9", "Everyone's A Winner (Barcrest) (MPU4) (set 37)", - "m4eaw__a", "Everyone's A Winner (Barcrest) (MPU4) (set 2)", - "m4eaw__a0", "Everyone's A Winner (Barcrest) (MPU4) (set 64)", - "m4eaw__a1", "Everyone's A Winner (Barcrest) (MPU4) (set 65)", - "m4eaw__a2", "Everyone's A Winner (Barcrest) (MPU4) (set 66)", - "m4eaw__a3", "Everyone's A Winner (Barcrest) (MPU4) (set 67)", - "m4eaw__a4", "Everyone's A Winner (Barcrest) (MPU4) (set 68)", - "m4eaw__a5", "Everyone's A Winner (Barcrest) (MPU4) (set 69)", - "m4eaw__a6", "Everyone's A Winner (Barcrest) (MPU4) (set 70)", - "m4eaw__a7", "Everyone's A Winner (Barcrest) (MPU4) (set 71)", - "m4eaw__a8", "Everyone's A Winner (Barcrest) (MPU4) (set 72)", - "m4eaw__a9", "Everyone's A Winner (Barcrest) (MPU4) (set 73)", - "m4eaw__aa", "Everyone's A Winner (Barcrest) (MPU4) (set 38)", - "m4eaw__ab", "Everyone's A Winner (Barcrest) (MPU4) (set 39)", - "m4eaw__ac", "Everyone's A Winner (Barcrest) (MPU4) (set 40)", - "m4eaw__ad", "Everyone's A Winner (Barcrest) (MPU4) (set 41)", - "m4eaw__ae", "Everyone's A Winner (Barcrest) (MPU4) (set 42)", - "m4eaw__af", "Everyone's A Winner (Barcrest) (MPU4) (set 43)", - "m4eaw__ag", "Everyone's A Winner (Barcrest) (MPU4) (set 44)", - "m4eaw__ah", "Everyone's A Winner (Barcrest) (MPU4) (set 45)", - "m4eaw__ai", "Everyone's A Winner (Barcrest) (MPU4) (set 46)", - "m4eaw__aj", "Everyone's A Winner (Barcrest) (MPU4) (set 47)", - "m4eaw__ak", "Everyone's A Winner (Barcrest) (MPU4) (set 48)", - "m4eaw__al", "Everyone's A Winner (Barcrest) (MPU4) (set 49)", - "m4eaw__am", "Everyone's A Winner (Barcrest) (MPU4) (set 50)", - "m4eaw__an", "Everyone's A Winner (Barcrest) (MPU4) (set 51)", - "m4eaw__ao", "Everyone's A Winner (Barcrest) (MPU4) (set 52)", - "m4eaw__ap", "Everyone's A Winner (Barcrest) (MPU4) (set 53)", - "m4eaw__aq", "Everyone's A Winner (Barcrest) (MPU4) (set 54)", - "m4eaw__ar", "Everyone's A Winner (Barcrest) (MPU4) (set 55)", - "m4eaw__as", "Everyone's A Winner (Barcrest) (MPU4) (set 56)", - "m4eaw__at", "Everyone's A Winner (Barcrest) (MPU4) (set 57)", - "m4eaw__au", "Everyone's A Winner (Barcrest) (MPU4) (set 58)", - "m4eaw__av", "Everyone's A Winner (Barcrest) (MPU4) (set 59)", - "m4eaw__aw", "Everyone's A Winner (Barcrest) (MPU4) (set 60)", - "m4eaw__ax", "Everyone's A Winner (Barcrest) (MPU4) (set 61)", - "m4eaw__ay", "Everyone's A Winner (Barcrest) (MPU4) (set 62)", - "m4eaw__az", "Everyone's A Winner (Barcrest) (MPU4) (set 63)", - "m4eaw__b", "Everyone's A Winner (Barcrest) (MPU4) (set 3)", - "m4eaw__ba", "Everyone's A Winner (Barcrest) (MPU4) (set 74)", - "m4eaw__bb", "Everyone's A Winner (Barcrest) (MPU4) (set 75)", - "m4eaw__bc", "Everyone's A Winner (Barcrest) (MPU4) (set 76)", - "m4eaw__bd", "Everyone's A Winner (Barcrest) (MPU4) (set 77)", - "m4eaw__be", "Everyone's A Winner (Barcrest) (MPU4) (set 78)", - "m4eaw__bf", "Everyone's A Winner (Barcrest) (MPU4) (set 79)", - "m4eaw__bg", "Everyone's A Winner (Barcrest) (MPU4) (set 80)", - "m4eaw__bh", "Everyone's A Winner (Barcrest) (MPU4) (set 81)", - "m4eaw__bi", "Everyone's A Winner (Barcrest) (MPU4) (set 82)", - "m4eaw__bj", "Everyone's A Winner (Barcrest) (MPU4) (set 83)", - "m4eaw__bk", "Everyone's A Winner (Barcrest) (MPU4) (set 84)", - "m4eaw__bl", "Everyone's A Winner (Barcrest) (MPU4) (set 85)", - "m4eaw__bm", "Everyone's A Winner (Barcrest) (MPU4) (set 86)", - "m4eaw__bn", "Everyone's A Winner (Barcrest) (MPU4) (set 87)", - "m4eaw__bo", "Everyone's A Winner (Barcrest) (MPU4) (set 88)", - "m4eaw__bp", "Everyone's A Winner (Barcrest) (MPU4) (set 89)", - "m4eaw__bq", "Everyone's A Winner (Barcrest) (MPU4) (set 90)", - "m4eaw__br", "Everyone's A Winner (Barcrest) (MPU4) (set 91)", - "m4eaw__bs", "Everyone's A Winner (Barcrest) (MPU4) (set 92)", - "m4eaw__bt", "Everyone's A Winner (Barcrest) (MPU4) (set 93)", - "m4eaw__bu", "Everyone's A Winner (Barcrest) (MPU4) (set 94)", - "m4eaw__bv", "Everyone's A Winner (Barcrest) (MPU4) (set 95)", - "m4eaw__bw", "Everyone's A Winner (Barcrest) (MPU4) (set 96)", - "m4eaw__bx", "Everyone's A Winner (Barcrest) (MPU4) (set 97)", - "m4eaw__bz", "Everyone's A Winner (Barcrest) (MPU4) (set 99)", - "m4eaw__c", "Everyone's A Winner (Barcrest) (MPU4) (set 4)", - "m4eaw__d", "Everyone's A Winner (Barcrest) (MPU4) (set 5)", - "m4eaw__e", "Everyone's A Winner (Barcrest) (MPU4) (set 6)", - "m4eaw__f", "Everyone's A Winner (Barcrest) (MPU4) (set 7)", - "m4eaw__g", "Everyone's A Winner (Barcrest) (MPU4) (set 8)", - "m4eaw__h", "Everyone's A Winner (Barcrest) (MPU4) (set 9)", - "m4eaw__i", "Everyone's A Winner (Barcrest) (MPU4) (set 10)", - "m4eaw__j", "Everyone's A Winner (Barcrest) (MPU4) (set 11)", - "m4eaw__k", "Everyone's A Winner (Barcrest) (MPU4) (set 12)", - "m4eaw__l", "Everyone's A Winner (Barcrest) (MPU4) (set 13)", - "m4eaw__m", "Everyone's A Winner (Barcrest) (MPU4) (set 14)", - "m4eaw__n", "Everyone's A Winner (Barcrest) (MPU4) (set 15)", - "m4eaw__o", "Everyone's A Winner (Barcrest) (MPU4) (set 16)", - "m4eaw__p", "Everyone's A Winner (Barcrest) (MPU4) (set 17)", - "m4eaw__q", "Everyone's A Winner (Barcrest) (MPU4) (set 18)", - "m4eaw__r", "Everyone's A Winner (Barcrest) (MPU4) (set 19)", - "m4eaw__s", "Everyone's A Winner (Barcrest) (MPU4) (set 20)", - "m4eaw__t", "Everyone's A Winner (Barcrest) (MPU4) (set 21)", - "m4eaw__u", "Everyone's A Winner (Barcrest) (MPU4) (set 22)", - "m4eaw__v", "Everyone's A Winner (Barcrest) (MPU4) (set 23)", - "m4eaw__w", "Everyone's A Winner (Barcrest) (MPU4) (set 24)", - "m4eaw__x", "Everyone's A Winner (Barcrest) (MPU4) (set 25)", - "m4eaw__y", "Everyone's A Winner (Barcrest) (MPU4) (set 26)", - "m4eaw__z", "Everyone's A Winner (Barcrest) (MPU4) (set 27)", - "m4eezee", "Eezee Fruits (Union) (MPU4)", - "m4eighth", "Eighth Wonder (Barcrest) (MPU4) (WON 2.2)", - "m4eightha", "Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 1)", - "m4eighthb", "Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 2)", - "m4eighthc", "Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 3)", - "m4eighthd", "Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 4, bad?)", - "m4eighthe", "Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 5)", - "m4eighthf", "Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 6)", - "m4eighthg", "Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 7)", - "m4elitc", "Elite Club (Crystal) (MPU4) (set 1)", - "m4elitca", "Elite Club (Crystal) (MPU4) (set 2)", - "m4elite", "Elite (Barcrest) (MPU4 w/ Plasma DMD?)", - "m4eureka", "Eureka (Empire) (MPU4, set 1)", - "m4eurekaa", "Eureka (Empire) (MPU4, set 2)", - "m4eurekab", "Eureka (Empire) (MPU4, set 3)", - "m4ewshft", "Each Way Shifter (Mdm) (MPU4)", - "m4excal", "Excalibur (Bwb) (MPU4) (set 1)", - "m4excal__a", "Excalibur (Bwb) (MPU4) (set 2)", - "m4excal__b", "Excalibur (Bwb) (MPU4) (set 3)", - "m4excal__c", "Excalibur (Bwb) (MPU4) (set 4)", - "m4excal__d", "Excalibur (Bwb) (MPU4) (set 5)", - "m4excal__e", "Excalibur (Bwb) (MPU4) (set 6)", - "m4excal__f", "Excalibur (Bwb) (MPU4) (set 7)", - "m4excal__g", "Excalibur (Bwb) (MPU4) (set 8)", - "m4excal__h", "Excalibur (Bwb) (MPU4) (set 9)", - "m4excal__i", "Excalibur (Bwb) (MPU4) (set 10)", - "m4excal__j", "Excalibur (Bwb) (MPU4) (set 11)", - "m4excaln", "Excalibur (Nova) (MPU4) (set 1)", - "m4excaln__a", "Excalibur (Nova) (MPU4) (set 2)", - "m4excam", "Excalibur (Mdm) (MPU4)", - "m4exgam", "Extra Game (Fairplay - Barcrest) (MPU4)", - "m4exlin", "Extra Lines (Pcp) (MPU4) (set 1)", - "m4exlina", "Extra Lines (Pcp) (MPU4) (set 2)", - "m4exotic", "Exotic Fruits (Bwb) (MPU4) (set 1)", - "m4exotic__a", "Exotic Fruits (Bwb) (MPU4) (set 2)", - "m4exotic__b", "Exotic Fruits (Bwb) (MPU4) (set 3)", - "m4exotic__c", "Exotic Fruits (Bwb) (MPU4) (set 4)", - "m4exotic__d", "Exotic Fruits (Bwb) (MPU4) (set 5)", - "m4exotic__e", "Exotic Fruits (Bwb) (MPU4) (set 6)", - "m4exprs", "Express (Barcrest) (DXP, Dutch) (MPU4)", - "m4fairg", "Fairground (Crystal) (MPU4)", - "m4fastfw", "Fast Forward (Barcrest) (MPU4) (set 1)", - "m4fastfw__a", "Fast Forward (Barcrest) (MPU4) (set 2)", - "m4fastfw__b", "Fast Forward (Barcrest) (MPU4) (set 3)", - "m4fastfw__c", "Fast Forward (Barcrest) (MPU4) (set 4)", - "m4fastfw__d", "Fast Forward (Barcrest) (MPU4) (set 5)", - "m4fastfw__e", "Fast Forward (Barcrest) (MPU4) (set 6)", - "m4fastfw__f", "Fast Forward (Barcrest) (MPU4) (set 7)", - "m4firebl", "Fireball (Mdm) (MPU4, set 1)", - "m4firebla", "Fireball (Mdm) (MPU4, set 2)", - "m4fireblb", "Fireball (Mdm) (MPU4, set 3)", - "m4fireblc", "Fireball (Mdm) (MPU4, set 4)", - "m4firebld", "Fireball (Mdm) (MPU4, set 5)", - "m4firice", "Fire & Ice (Bwb) (MPU4) (set 1)", - "m4firice__a", "Fire & Ice (Bwb) (MPU4) (set 2)", - "m4firice__b", "Fire & Ice (Bwb) (MPU4) (set 3)", - "m4firice__c", "Fire & Ice (Bwb) (MPU4) (set 4)", - "m4firice__d", "Fire & Ice (Bwb) (MPU4) (set 5)", - "m4firice__e", "Fire & Ice (Bwb) (MPU4) (set 6)", - "m4firice__f", "Fire & Ice (Bwb) (MPU4) (set 7)", - "m4firice__g", "Fire & Ice (Bwb) (MPU4) (set 8)", - "m4firice__h", "Fire & Ice (Bwb) (MPU4) (set 9)", - "m4firice__i", "Fire & Ice (Bwb) (MPU4) (set 10)", - "m4firice__j", "Fire & Ice (Bwb) (MPU4) (set 11)", - "m4flash", "Flash Cash (Barcrest) (MPU4, FC 1.0)", - "m4flshlt", "Flashlite (Bwb) (MPU4) (set 1)", - "m4flshlta", "Flashlite (Bwb) (MPU4) (set 2)", - "m4flshltb", "Flashlite (Bwb) (MPU4) (set 3)", - "m4flshltc", "Flashlite (Bwb) (MPU4) (set 4)", - "m4flshltd", "Flashlite (Bwb) (MPU4) (set 5)", - "m4flshlte", "Flashlite (Bwb) (MPU4) (set 6)", - "m4flshltf", "Flashlite (Bwb) (MPU4) (set 7)", - "m4flshltg", "Flashlite (Bwb) (MPU4) (set 8)", - "m4fortcb", "Fortune Club (Barcrest) (MPU4) (set 1)", - "m4fortcba", "Fortune Club (Barcrest) (MPU4) (set 2)", - "m4fortcbb", "Fortune Club (Barcrest) (MPU4) (set 3)", - "m4fourmr", "Four More (Bwb) (MPU4)", - "m4frcrak", "Fruit Cracker (Pcp) (MPU4)", - "m4frdrop", "Fruit Drop (Union) (MPU4)", - "m4fright", "Fright Night (Empire) (MPU4, v4.1X)", - "m4frighta", "Fright Night (Empire) (MPU4, v4.1)", - "m4frightb", "Fright Night (Empire) (MPU4, v4.1i)", - "m4frightc", "Fright Night (Empire) (MPU4, v?.?, set 1)", - "m4frightd", "Fright Night (Empire) (MPU4, v3.3)", - "m4frighte", "Fright Night (Empire) (MPU4, v3.0)", - "m4frightf", "Fright Night (Empire) (MPU4, v?.?, set 2)", - "m4frkstn", "Frank 'n' Stein (Crystal) (MPU4, set 1)", - "m4frkstna", "Frank 'n' Stein (Crystal) (MPU4, set 2)", - "m4frkstnb", "Frank 'n' Stein (Crystal) (MPU4, set 3)", - "m4frkstnc", "Frank 'n' Stein (Crystal) (MPU4, set 4)", - "m4frkstnd", "Frank 'n' Stein (Crystal) (MPU4, set 5)", - "m4frkstne", "Frank 'n' Stein (Crystal) (MPU4, set 6)", - "m4frkstnf", "Frank 'n' Stein (Crystal) (MPU4, set 7)", - "m4frkstng", "Frank 'n' Stein (Crystal) (MPU4, set 8)", - "m4frkstnh", "Frank 'n' Stein (Crystal) (MPU4, set 9)", - "m4frmani", "Fruit Mania (Crystal) (MPU4) (set 1)", - "m4frmania", "Fruit Mania (Crystal) (MPU4) (set 2)", - "m4frmanib", "Fruit Mania (Crystal) (MPU4) (set 3)", - "m4frmanic", "Fruit Mania (Crystal) (MPU4) (set 4)", - "m4frmtx", "Fruit Matrix (Avantime?) (MPU4) (set 1)", - "m4frmtx__a", "Fruit Matrix (Avantime?) (MPU4) (set 2)", - "m4frmtx__b", "Fruit Matrix (Avantime?) (MPU4) (set 3)", - "m4frmtx__c", "Fruit Matrix (Avantime?) (MPU4) (set 4)", - "m4frmtx__d", "Fruit Matrix (Avantime?) (MPU4) (set 5)", - "m4frmtx__e", "Fruit Matrix (Avantime?) (MPU4) (set 6)", - "m4frmtx__f", "Fruit Matrix (Avantime?) (MPU4) (set 7)", - "m4frnudg", "Fruit & Nudge (Avantime?) (MPU4) (set 1)", - "m4frnudg__a", "Fruit & Nudge (Avantime?) (MPU4) (set 2)", - "m4frnudg__b", "Fruit & Nudge (Avantime?) (MPU4) (set 3)", - "m4frnudg__c", "Fruit & Nudge (Avantime?) (MPU4) (set 4)", - "m4front", "Final Frontier (Mdm) (MPU4)", - "m4frtfl", "Fruit Full (Barcrest) (MPU4) (set 1)", - "m4frtfla", "Fruit Full (Barcrest) (MPU4) (set 2)", - "m4frtflc", "Fruit Full Club (Barcrest) (MPU4)", - "m4frtgm", "Fruit Game (Barcrest) (MPU4)", - "m4frtlnk", "Fruit Link Club (Barcrest) (MPU4) (set 1)", - "m4frtlnka", "Fruit Link Club (Barcrest) (MPU4) (set 2)", - "m4frtprs", "Fruit Preserve (Barcrest) (MPU4) (F4P 1.1, set 1)", - "m4frtprsa", "Fruit Preserve (Barcrest) (MPU4) (F4P 1.1, set 2)", - "m4fsx", "Fun Spot X (MPU4?) (set 1)", - "m4fsxa", "Fun Spot X (MPU4?) (set 2)", - "m4fsxb", "Fun Spot X (MPU4?) (set 3)", - "m4ftladn", "Find the Lady (Nova) (MPU4)", - "m4funh", "Fun House (unknown) (MPU4)", - "m4gambal", "Gamball (Barcrest) (MPU4) (set 1)", - "m4gambal__a", "Gamball (Barcrest) (MPU4) (set 2)", - "m4gambal__b", "Gamball (Barcrest) (MPU4) (set 3)", - "m4gambal__c", "Gamball (Barcrest) (MPU4) (set 4)", - "m4gamblr", "The Gambler (Empire) (MPU4, set 1)", - "m4gamblra", "The Gambler (Empire) (MPU4, set 2)", - "m4gamblrb", "The Gambler (Empire) (MPU4, set 3)", - "m4gb006", "Games Bond 006 (Barcrest) (MPU4) (set 1)", - "m4gb006__a", "Games Bond 006 (Barcrest) (MPU4) (set 2)", - "m4gb006__b", "Games Bond 006 (Barcrest) (MPU4) (set 3)", - "m4gb006__c", "Games Bond 006 (Barcrest) (MPU4) (set 4)", - "m4gbust", "Ghost Buster (Barcrest) (MPU4) (set 1)", - "m4gbust__a", "Ghost Buster (Barcrest) (MPU4) (set 2)", - "m4gbust__b", "Ghost Buster (Barcrest) (MPU4) (set 3)", - "m4gbust__c", "Ghost Buster (Barcrest) (MPU4) (set 4)", - "m4gbust__d", "Ghost Buster (Barcrest) (MPU4) (set 5)", - "m4gbust__e", "Ghost Buster (Barcrest) (MPU4) (set 6)", - "m4gbust__f", "Ghost Buster (Barcrest) (MPU4) (set 7)", - "m4gbust__g", "Ghost Buster (Barcrest) (MPU4) (set 8)", - "m4gbust__h", "Ghost Buster (Barcrest) (MPU4) (set 9)", - "m4gbust__i", "Ghost Buster (Barcrest) (MPU4) (set 10)", - "m4gbust__j", "Ghost Buster (Barcrest) (MPU4) (set 11)", - "m4gbust__k", "Ghost Buster (Barcrest) (MPU4) (set 12)", - "m4gbust__l", "Ghost Buster (Barcrest) (MPU4) (set 13)", - "m4gbust__m", "Ghost Buster (Barcrest) (MPU4) (set 14)", - "m4gbust__n", "Ghost Buster (Barcrest) (MPU4) (set 15)", - "m4gbust__o", "Ghost Buster (Barcrest) (MPU4) (set 16)", - "m4gbust__p", "Ghost Buster (Barcrest) (MPU4) (set 17)", - "m4gbust__q", "Ghost Buster (Barcrest) (MPU4) (set 18)", - "m4gbust__r", "Ghost Buster (Barcrest) (MPU4) (set 19)", - "m4gbust__s", "Ghost Buster (Barcrest) (MPU4) (set 20)", - "m4gbust__t", "Ghost Buster (Barcrest) (MPU4) (set 21)", - "m4gbust__u", "Ghost Buster (Barcrest) (MPU4) (set 22)", - "m4gbust__v", "Ghost Buster (Barcrest) (MPU4) (set 23)", - "m4gbust__w", "Ghost Buster (Barcrest) (MPU4) (set 24)", - "m4gclue", "Give Us A Clue (Barcrest) (MPU4) (set 1)", - "m4gclue__a", "Give Us A Clue (Barcrest) (MPU4) (set 2)", - "m4gclue__b", "Give Us A Clue (Barcrest) (MPU4) (set 3)", - "m4gclue__c", "Give Us A Clue (Barcrest) (MPU4) (set 4)", - "m4gclue__d", "Give Us A Clue (Barcrest) (MPU4) (set 5)", - "m4gclue__e", "Give Us A Clue (Barcrest) (MPU4) (set 6)", - "m4gclue__f", "Give Us A Clue (Barcrest) (MPU4) (set 7)", - "m4gclue__g", "Give Us A Clue (Barcrest) (MPU4) (set 8)", - "m4gclue__h", "Give Us A Clue (Barcrest) (MPU4) (set 9)", - "m4gclue__i", "Give Us A Clue (Barcrest) (MPU4) (set 10)", - "m4gclue__j", "Give Us A Clue (Barcrest) (MPU4) (set 11)", - "m4gclue__k", "Give Us A Clue (Barcrest) (MPU4) (set 12)", - "m4gclue__l", "Give Us A Clue (Barcrest) (MPU4) (set 13)", - "m4gclue__m", "Give Us A Clue (Barcrest) (MPU4) (set 14)", - "m4gclue__n", "Give Us A Clue (Barcrest) (MPU4) (set 15)", - "m4gclue__o", "Give Us A Clue (Barcrest) (MPU4) (set 16)", - "m4gclue__p", "Give Us A Clue (Barcrest) (MPU4) (set 17)", - "m4gclue__q", "Give Us A Clue (Barcrest) (MPU4) (set 18)", - "m4gclue__r", "Give Us A Clue (Barcrest) (MPU4) (set 19)", - "m4gclue__s", "Give Us A Clue (Barcrest) (MPU4) (set 20)", - "m4gclue__t", "Give Us A Clue (Barcrest) (MPU4) (set 21)", - "m4gclue__u", "Give Us A Clue (Barcrest) (MPU4) (set 22)", - "m4gclue__v", "Give Us A Clue (Barcrest) (MPU4) (set 23)", - "m4gclue__w", "Give Us A Clue (Barcrest) (MPU4) (set 24)", - "m4giant", "Giant (Barcrest) (DGI, Dutch) (MPU4)", - "m4gldgat", "Golden Gate (Barcrest) [DGG, Dutch] (MPU4)", - "m4gldjok", "Golden Joker (Barcrest) (Dutch) (MPU4) (DGJ 1.2)", - "m4gldstr", "Gold Strike (Barcrest) (MPU4) (G4S 2.0)", - "m4gnsmk", "Gun Smoke (Barcrest) (Dutch) (MPU4)", - "m4gobana", "Go Bananas (Union) (MPU4, set 1)", - "m4gobanaa", "Go Bananas (Union) (MPU4, set 2)", - "m4gobanab", "Go Bananas (Union) (MPU4, set 3)", - "m4gobanac", "Go Bananas (Union) (MPU4, set 4)", - "m4gobanad", "Go Bananas (Union) (MPU4, set 5)", - "m4goldfc", "Gold Fever (Crystal) (MPU4) (set 1)", - "m4goldfca", "Gold Fever (Crystal) (MPU4) (set 2)", - "m4goldfcb", "Gold Fever (Crystal) (MPU4) (set 3)", - "m4goldfv", "Gold Fever (Empire) (MPU4)", - "m4goldnn", "Golden Years (Nova) (MPU4)", - "m4goldxc", "Gold Exchange Club (Crystal) (MPU4) (set 1)", - "m4goldxca", "Gold Exchange Club (Crystal) (MPU4) (set 2)", - "m4goldxcb", "Gold Exchange Club (Crystal) (MPU4) (set 3)", - "m4goldxcc", "Gold Exchange Club (Crystal) (MPU4) (set 4)", - "m4goldxcd", "Gold Exchange Club (Crystal) (MPU4) (set 5)", - "m4goldxce", "Gold Exchange Club (Crystal) (MPU4) (set 6)", - "m4goodtm", "Let The Good Times Roll (Barcrest) (MPU4) (set 1)", - "m4goodtm__0", "Let The Good Times Roll (Barcrest) (MPU4) (set 28)", - "m4goodtm__1", "Let The Good Times Roll (Barcrest) (MPU4) (set 29)", - "m4goodtm__2", "Let The Good Times Roll (Barcrest) (MPU4) (set 30)", - "m4goodtm__3", "Let The Good Times Roll (Barcrest) (MPU4) (set 31)", - "m4goodtm__4", "Let The Good Times Roll (Barcrest) (MPU4) (set 32)", - "m4goodtm__5", "Let The Good Times Roll (Barcrest) (MPU4) (set 33)", - "m4goodtm__6", "Let The Good Times Roll (Barcrest) (MPU4) (set 34)", - "m4goodtm__7", "Let The Good Times Roll (Barcrest) (MPU4) (set 35)", - "m4goodtm__8", "Let The Good Times Roll (Barcrest) (MPU4) (set 36)", - "m4goodtm__9", "Let The Good Times Roll (Barcrest) (MPU4) (set 37)", - "m4goodtm__a", "Let The Good Times Roll (Barcrest) (MPU4) (set 2)", - "m4goodtm__a0", "Let The Good Times Roll (Barcrest) (MPU4) (set 64)", - "m4goodtm__a1", "Let The Good Times Roll (Barcrest) (MPU4) (set 65)", - "m4goodtm__a2", "Let The Good Times Roll (Barcrest) (MPU4) (set 66)", - "m4goodtm__a3", "Let The Good Times Roll (Barcrest) (MPU4) (set 67)", - "m4goodtm__a4", "Let The Good Times Roll (Barcrest) (MPU4) (set 68)", - "m4goodtm__a5", "Let The Good Times Roll (Barcrest) (MPU4) (set 69)", - "m4goodtm__a6", "Let The Good Times Roll (Barcrest) (MPU4) (set 70)", - "m4goodtm__aa", "Let The Good Times Roll (Barcrest) (MPU4) (set 38)", - "m4goodtm__ab", "Let The Good Times Roll (Barcrest) (MPU4) (set 39)", - "m4goodtm__ac", "Let The Good Times Roll (Barcrest) (MPU4) (set 40)", - "m4goodtm__ad", "Let The Good Times Roll (Barcrest) (MPU4) (set 41)", - "m4goodtm__ae", "Let The Good Times Roll (Barcrest) (MPU4) (set 42)", - "m4goodtm__af", "Let The Good Times Roll (Barcrest) (MPU4) (set 43)", - "m4goodtm__ag", "Let The Good Times Roll (Barcrest) (MPU4) (set 44)", - "m4goodtm__ah", "Let The Good Times Roll (Barcrest) (MPU4) (set 45)", - "m4goodtm__ai", "Let The Good Times Roll (Barcrest) (MPU4) (set 46)", - "m4goodtm__aj", "Let The Good Times Roll (Barcrest) (MPU4) (set 47)", - "m4goodtm__ak", "Let The Good Times Roll (Barcrest) (MPU4) (set 48)", - "m4goodtm__al", "Let The Good Times Roll (Barcrest) (MPU4) (set 49)", - "m4goodtm__am", "Let The Good Times Roll (Barcrest) (MPU4) (set 50)", - "m4goodtm__an", "Let The Good Times Roll (Barcrest) (MPU4) (set 51)", - "m4goodtm__ao", "Let The Good Times Roll (Barcrest) (MPU4) (set 52)", - "m4goodtm__ap", "Let The Good Times Roll (Barcrest) (MPU4) (set 53)", - "m4goodtm__aq", "Let The Good Times Roll (Barcrest) (MPU4) (set 54)", - "m4goodtm__ar", "Let The Good Times Roll (Barcrest) (MPU4) (set 55)", - "m4goodtm__as", "Let The Good Times Roll (Barcrest) (MPU4) (set 56)", - "m4goodtm__at", "Let The Good Times Roll (Barcrest) (MPU4) (set 57)", - "m4goodtm__au", "Let The Good Times Roll (Barcrest) (MPU4) (set 58)", - "m4goodtm__av", "Let The Good Times Roll (Barcrest) (MPU4) (set 59)", - "m4goodtm__aw", "Let The Good Times Roll (Barcrest) (MPU4) (set 60)", - "m4goodtm__ax", "Let The Good Times Roll (Barcrest) (MPU4) (set 61)", - "m4goodtm__ay", "Let The Good Times Roll (Barcrest) (MPU4) (set 62)", - "m4goodtm__az", "Let The Good Times Roll (Barcrest) (MPU4) (set 63)", - "m4goodtm__b", "Let The Good Times Roll (Barcrest) (MPU4) (set 3)", - "m4goodtm__c", "Let The Good Times Roll (Barcrest) (MPU4) (set 4)", - "m4goodtm__d", "Let The Good Times Roll (Barcrest) (MPU4) (set 5)", - "m4goodtm__e", "Let The Good Times Roll (Barcrest) (MPU4) (set 6)", - "m4goodtm__f", "Let The Good Times Roll (Barcrest) (MPU4) (set 7)", - "m4goodtm__g", "Let The Good Times Roll (Barcrest) (MPU4) (set 8)", - "m4goodtm__h", "Let The Good Times Roll (Barcrest) (MPU4) (set 9)", - "m4goodtm__i", "Let The Good Times Roll (Barcrest) (MPU4) (set 10)", - "m4goodtm__j", "Let The Good Times Roll (Barcrest) (MPU4) (set 11)", - "m4goodtm__k", "Let The Good Times Roll (Barcrest) (MPU4) (set 12)", - "m4goodtm__l", "Let The Good Times Roll (Barcrest) (MPU4) (set 13)", - "m4goodtm__m", "Let The Good Times Roll (Barcrest) (MPU4) (set 14)", - "m4goodtm__n", "Let The Good Times Roll (Barcrest) (MPU4) (set 15)", - "m4goodtm__o", "Let The Good Times Roll (Barcrest) (MPU4) (set 16)", - "m4goodtm__p", "Let The Good Times Roll (Barcrest) (MPU4) (set 17)", - "m4goodtm__q", "Let The Good Times Roll (Barcrest) (MPU4) (set 18)", - "m4goodtm__r", "Let The Good Times Roll (Barcrest) (MPU4) (set 19)", - "m4goodtm__s", "Let The Good Times Roll (Barcrest) (MPU4) (set 20)", - "m4goodtm__t", "Let The Good Times Roll (Barcrest) (MPU4) (set 21)", - "m4goodtm__u", "Let The Good Times Roll (Barcrest) (MPU4) (set 22)", - "m4goodtm__v", "Let The Good Times Roll (Barcrest) (MPU4) (set 23)", - "m4goodtm__w", "Let The Good Times Roll (Barcrest) (MPU4) (set 24)", - "m4goodtm__x", "Let The Good Times Roll (Barcrest) (MPU4) (set 25)", - "m4goodtm__y", "Let The Good Times Roll (Barcrest) (MPU4) (set 26)", - "m4goodtm__z", "Let The Good Times Roll (Barcrest) (MPU4) (set 27)", - "m4graff", "Graffiti (Barcrest) (MPU4) (set 1)", - "m4graff__a", "Graffiti (Barcrest) (MPU4) (set 2)", - "m4graff__b", "Graffiti (Barcrest) (MPU4) (set 3)", - "m4graffd", "Grafitti (Barcrest) [Dutch] (MPU4)", - "m4grands", "Grandstand Club (Barcrest) (MPU4) (G2D 4.0)", - "m4grandsa", "Grandstand Club (Barcrest) (MPU4) (GD 1.1)", - "m4grbbnk", "Grab The Bank (Barcrest) (MPU4) (G4B 2.0)", - "m4grbbnka", "Grab The Bank (Barcrest) (MPU4) (G4B 2.1)", - "m4grbbnkb", "Grab The Bank (Barcrest) (MPU4) (G4B 1.0)", - "m4gtrain", "Ghost Train (Empire) (MPU4, set 1)", - "m4gtraina", "Ghost Train (Empire) (MPU4, set 2)", - "m4gtrainb", "Ghost Train (Empire) (MPU4, set 3)", - "m4gtrainc", "Ghost Train (Empire) (MPU4, set 4)", - "m4gvibes", "Good Vibrations (Union - Empire) (MPU4, set 1)", - "m4gvibesa", "Good Vibrations (Union - Empire) (MPU4, set 2)", - "m4hapfrt", "Happy Fruits (Coinworld) (MPU4) (set 1)", - "m4hapfrta", "Happy Fruits (Coinworld) (MPU4) (set 2)", - "m4hapfrtb", "Happy Fruits (Coinworld) (MPU4) (set 3)", - "m4harle", "Harlequin (Bwb) (MPU4) (set 1)", - "m4harle__a", "Harlequin (Bwb) (MPU4) (set 2)", - "m4harle__b", "Harlequin (Bwb) (MPU4) (set 3)", - "m4harle__c", "Harlequin (Bwb) (MPU4) (set 4)", - "m4harle__d", "Harlequin (Bwb) (MPU4) (set 5)", - "m4harle__e", "Harlequin (Bwb) (MPU4) (set 6)", - "m4harle__f", "Harlequin (Bwb) (MPU4) (set 7)", - "m4harle__g", "Harlequin (Bwb) (MPU4) (set 8)", - "m4harle__h", "Harlequin (Bwb) (MPU4) (set 9)", - "m4harle__i", "Harlequin (Bwb) (MPU4) (set 10)", - "m4harle__j", "Harlequin (Bwb) (MPU4) (set 11)", - "m4harle__k", "Harlequin (Bwb) (MPU4) (set 12)", - "m4harle__l", "Harlequin (Bwb) (MPU4) (set 13)", - "m4harle__m", "Harlequin (Bwb) (MPU4) (set 14)", - "m4harle__n", "Harlequin (Bwb) (MPU4) (set 15)", - "m4harle__o", "Harlequin (Bwb) (MPU4) (set 16)", - "m4harle__p", "Harlequin (Bwb) (MPU4) (set 17)", - "m4harle__q", "Harlequin (Bwb) (MPU4) (set 18)", - "m4harle__r", "Harlequin (Bwb) (MPU4) (set 19)", - "m4harle__s", "Harlequin (Bwb) (MPU4) (set 20)", - "m4harle__t", "Harlequin (Bwb) (MPU4) (set 21)", - "m4harle__u", "Harlequin (Bwb) (MPU4) (set 22)", - "m4harle__v", "Harlequin (Bwb) (MPU4) (set 23)", - "m4harle__w", "Harlequin (Bwb) (MPU4) (set 24)", - "m4harle__x", "Harlequin (Bwb) (MPU4) (set 25)", - "m4haunt", "Haunted House (Empire) (MPU4, set 1)", - "m4haunta", "Haunted House (Empire) (MPU4, set 2)", - "m4hauntb", "Haunted House (Empire) (MPU4, set 3)", - "m4hauntc", "Haunted House (Empire) (MPU4, set 4)", - "m4hauntd", "Haunted House (Empire) (MPU4, set 5)", - "m4hijinx", "Hi Jinx (Barcrest) (MPU4) (set 1)", - "m4hijinx__0", "Hi Jinx (Barcrest) (MPU4) (set 28)", - "m4hijinx__1", "Hi Jinx (Barcrest) (MPU4) (set 29)", - "m4hijinx__2", "Hi Jinx (Barcrest) (MPU4) (set 30)", - "m4hijinx__3", "Hi Jinx (Barcrest) (MPU4) (set 31)", - "m4hijinx__4", "Hi Jinx (Barcrest) (MPU4) (set 32)", - "m4hijinx__5", "Hi Jinx (Barcrest) (MPU4) (set 33)", - "m4hijinx__6", "Hi Jinx (Barcrest) (MPU4) (set 34)", - "m4hijinx__7", "Hi Jinx (Barcrest) (MPU4) (set 35)", - "m4hijinx__8", "Hi Jinx (Barcrest) (MPU4) (set 36)", - "m4hijinx__9", "Hi Jinx (Barcrest) (MPU4) (set 37)", - "m4hijinx__a", "Hi Jinx (Barcrest) (MPU4) (set 2)", - "m4hijinx__aa", "Hi Jinx (Barcrest) (MPU4) (set 38)", - "m4hijinx__ab", "Hi Jinx (Barcrest) (MPU4) (set 39)", - "m4hijinx__b", "Hi Jinx (Barcrest) (MPU4) (set 3)", - "m4hijinx__c", "Hi Jinx (Barcrest) (MPU4) (set 4)", - "m4hijinx__d", "Hi Jinx (Barcrest) (MPU4) (set 5)", - "m4hijinx__e", "Hi Jinx (Barcrest) (MPU4) (set 6)", - "m4hijinx__f", "Hi Jinx (Barcrest) (MPU4) (set 7)", - "m4hijinx__g", "Hi Jinx (Barcrest) (MPU4) (set 8)", - "m4hijinx__h", "Hi Jinx (Barcrest) (MPU4) (set 9)", - "m4hijinx__i", "Hi Jinx (Barcrest) (MPU4) (set 10)", - "m4hijinx__j", "Hi Jinx (Barcrest) (MPU4) (set 11)", - "m4hijinx__k", "Hi Jinx (Barcrest) (MPU4) (set 12)", - "m4hijinx__l", "Hi Jinx (Barcrest) (MPU4) (set 13)", - "m4hijinx__m", "Hi Jinx (Barcrest) (MPU4) (set 14)", - "m4hijinx__n", "Hi Jinx (Barcrest) (MPU4) (set 15)", - "m4hijinx__o", "Hi Jinx (Barcrest) (MPU4) (set 16)", - "m4hijinx__p", "Hi Jinx (Barcrest) (MPU4) (set 17)", - "m4hijinx__q", "Hi Jinx (Barcrest) (MPU4) (set 18)", - "m4hijinx__r", "Hi Jinx (Barcrest) (MPU4) (set 19)", - "m4hijinx__s", "Hi Jinx (Barcrest) (MPU4) (set 20)", - "m4hijinx__t", "Hi Jinx (Barcrest) (MPU4) (set 21)", - "m4hijinx__u", "Hi Jinx (Barcrest) (MPU4) (set 22)", - "m4hijinx__v", "Hi Jinx (Barcrest) (MPU4) (set 23)", - "m4hijinx__w", "Hi Jinx (Barcrest) (MPU4) (set 24)", - "m4hijinx__x", "Hi Jinx (Barcrest) (MPU4) (set 25)", - "m4hijinx__y", "Hi Jinx (Barcrest) (MPU4) (set 26)", - "m4hijinx__z", "Hi Jinx (Barcrest) (MPU4) (set 27)", - "m4hilonv", "Hi Lo Casino (Nova) (MPU4)", - "m4hirise", "High Rise (Barcrest) (MPU4) (set 1)", - "m4hirisea", "High Rise (Barcrest) (MPU4) (set 2)", - "m4hiriseb", "High Rise (Barcrest) (MPU4) (set 3)", - "m4hirisec", "High Rise (Barcrest) (MPU4) (set 4)", - "m4hirised", "High Rise (Barcrest) (MPU4) (set 5)", - "m4hirisee", "High Rise (Barcrest) (MPU4) (set 6)", - "m4hirol", "Hi Roller Club (Crystal) (MPU4) (set 1)", - "m4hirola", "Hi Roller Club (Crystal) (MPU4) (set 2)", - "m4hiroll", "High Roller (Barcrest) (MPU4)", - "m4hisprt", "High Spirits (Empire) (MPU4, set 1)", - "m4hisprta", "High Spirits (Empire) (MPU4, set 2)", - "m4hisprtb", "High Spirits (Empire) (MPU4, set 3)", - "m4hisprtc", "High Spirits (Empire) (MPU4, set 4)", - "m4hisprtd", "High Spirits (Empire) (MPU4, set 5)", - "m4hisprte", "High Spirits (Empire) (MPU4, set 6)", - "m4hittop", "Hit The Top (Barcrest) (MPU4) (set 1)", - "m4hittop__0", "Hit The Top (Barcrest) (MPU4) (set 28)", - "m4hittop__1", "Hit The Top (Barcrest) (MPU4) (set 29)", - "m4hittop__2", "Hit The Top (Barcrest) (MPU4) (set 30)", - "m4hittop__3", "Hit The Top (Barcrest) (MPU4) (set 31)", - "m4hittop__4", "Hit The Top (Barcrest) (MPU4) (set 32)", - "m4hittop__5", "Hit The Top (Barcrest) (MPU4) (set 33)", - "m4hittop__6", "Hit The Top (Barcrest) (MPU4) (set 34)", - "m4hittop__7", "Hit The Top (Barcrest) (MPU4) (set 35)", - "m4hittop__8", "Hit The Top (Barcrest) (MPU4) (set 36)", - "m4hittop__9", "Hit The Top (Barcrest) (MPU4) (set 37)", - "m4hittop__a", "Hit The Top (Barcrest) (MPU4) (set 2)", - "m4hittop__aa", "Hit The Top (Barcrest) (MPU4) (set 38)", - "m4hittop__ab", "Hit The Top (Barcrest) (MPU4) (set 39)", - "m4hittop__ac", "Hit The Top (Barcrest) (MPU4) (set 40)", - "m4hittop__ad", "Hit The Top (Barcrest) (MPU4) (set 41)", - "m4hittop__ae", "Hit The Top (Barcrest) (MPU4) (set 42)", - "m4hittop__af", "Hit The Top (Barcrest) (MPU4) (set 43)", - "m4hittop__ag", "Hit The Top (Barcrest) (MPU4) (set 44)", - "m4hittop__ah", "Hit The Top (Barcrest) (MPU4) (set 45)", - "m4hittop__ai", "Hit The Top (Barcrest) (MPU4) (set 46)", - "m4hittop__aj", "Hit The Top (Barcrest) (MPU4) (set 47)", - "m4hittop__ak", "Hit The Top (Barcrest) (MPU4) (set 48)", - "m4hittop__al", "Hit The Top (Barcrest) (MPU4) (set 49)", - "m4hittop__am", "Hit The Top (Barcrest) (MPU4) (set 50)", - "m4hittop__an", "Hit The Top (Barcrest) (MPU4) (set 51)", - "m4hittop__ao", "Hit The Top (Barcrest) (MPU4) (set 52)", - "m4hittop__ap", "Hit The Top (Barcrest) (MPU4) (set 53)", - "m4hittop__aq", "Hit The Top (Barcrest) (MPU4) (set 54)", - "m4hittop__ar", "Hit The Top (Barcrest) (MPU4) (set 55)", - "m4hittop__as", "Hit The Top (Barcrest) (MPU4) (set 56)", - "m4hittop__at", "Hit The Top (Barcrest) (MPU4) (set 57)", - "m4hittop__au", "Hit The Top (Barcrest) (MPU4) (set 58)", - "m4hittop__av", "Hit The Top (Barcrest) (MPU4) (set 59)", - "m4hittop__aw", "Hit The Top (Barcrest) (MPU4) (set 60)", - "m4hittop__ax", "Hit The Top (Barcrest) (MPU4) (set 61)", - "m4hittop__b", "Hit The Top (Barcrest) (MPU4) (set 3)", - "m4hittop__c", "Hit The Top (Barcrest) (MPU4) (set 4)", - "m4hittop__d", "Hit The Top (Barcrest) (MPU4) (set 5)", - "m4hittop__e", "Hit The Top (Barcrest) (MPU4) (set 6)", - "m4hittop__f", "Hit The Top (Barcrest) (MPU4) (set 7)", - "m4hittop__g", "Hit The Top (Barcrest) (MPU4) (set 8)", - "m4hittop__h", "Hit The Top (Barcrest) (MPU4) (set 9)", - "m4hittop__i", "Hit The Top (Barcrest) (MPU4) (set 10)", - "m4hittop__j", "Hit The Top (Barcrest) (MPU4) (set 11)", - "m4hittop__k", "Hit The Top (Barcrest) (MPU4) (set 12)", - "m4hittop__l", "Hit The Top (Barcrest) (MPU4) (set 13)", - "m4hittop__m", "Hit The Top (Barcrest) (MPU4) (set 14)", - "m4hittop__n", "Hit The Top (Barcrest) (MPU4) (set 15)", - "m4hittop__o", "Hit The Top (Barcrest) (MPU4) (set 16)", - "m4hittop__p", "Hit The Top (Barcrest) (MPU4) (set 17)", - "m4hittop__q", "Hit The Top (Barcrest) (MPU4) (set 18)", - "m4hittop__r", "Hit The Top (Barcrest) (MPU4) (set 19)", - "m4hittop__s", "Hit The Top (Barcrest) (MPU4) (set 20)", - "m4hittop__t", "Hit The Top (Barcrest) (MPU4) (set 21)", - "m4hittop__u", "Hit The Top (Barcrest) (MPU4) (set 22)", - "m4hittop__v", "Hit The Top (Barcrest) (MPU4) (set 23)", - "m4hittop__w", "Hit The Top (Barcrest) (MPU4) (set 24)", - "m4hittop__x", "Hit The Top (Barcrest) (MPU4) (set 25)", - "m4hittop__y", "Hit The Top (Barcrest) (MPU4) (set 26)", - "m4hittop__z", "Hit The Top (Barcrest) (MPU4) (set 27)", - "m4hittp2", "Hit The Top (Barcrest) (MPU4, Mod 2 type, H4T 2.0, set 1)", - "m4hittp2a", "Hit The Top (Barcrest) (MPU4, Mod 2 type, H4T 2.0, set 2)", - "m4holdon", "Hold On (Barcrest) (Dutch) (MPU4)", - "m4holdtm", "Hold Timer (Barcrest) (Dutch) (MPU4) (DHT)", - "m4holywd", "Hollywood (Bwb) (MPU4)", - "m4hotcsh", "Hot Cash (Empire) (MPU4, set 1)", - "m4hotcsha", "Hot Cash (Empire) (MPU4, set 2)", - "m4hotcshb", "Hot Cash (Empire) (MPU4, set 3)", - "m4hotcshc", "Hot Cash (Empire) (MPU4, set 4)", - "m4hotrod", "Hot Rod (Barcrest) (MPU4) (set 1)", - "m4hotrod__a", "Hot Rod (Barcrest) (MPU4) (set 2)", - "m4hotrod__b", "Hot Rod (Barcrest) (MPU4) (set 3)", - "m4hotrod__c", "Hot Rod (Barcrest) (MPU4) (set 4)", - "m4hotrod__d", "Hot Rod (Barcrest) (MPU4) (set 5)", - "m4hotrod__e", "Hot Rod (Barcrest) (MPU4) (set 6)", - "m4hotrod__f", "Hot Rod (Barcrest) (MPU4) (set 7)", - "m4hotrod__g", "Hot Rod (Barcrest) (MPU4) (set 8)", - "m4hotrod__h", "Hot Rod (Barcrest) (MPU4) (set 9)", - "m4hotrod__i", "Hot Rod (Barcrest) (MPU4) (set 10)", - "m4hotrod__j", "Hot Rod (Barcrest) (MPU4) (set 11)", - "m4hotrod__k", "Hot Rod (Barcrest) (MPU4) (set 12)", - "m4hotrod__l", "Hot Rod (Barcrest) (MPU4) (set 13)", - "m4hotrod__m", "Hot Rod (Barcrest) (MPU4) (set 14)", - "m4hotrod__n", "Hot Rod (Barcrest) (MPU4) (set 15)", - "m4hotrod__o", "Hot Rod (Barcrest) (MPU4) (set 16)", - "m4hotrod__p", "Hot Rod (Barcrest) (MPU4) (set 17)", - "m4hotrod__q", "Hot Rod (Barcrest) (MPU4) (set 18)", - "m4hotrod__r", "Hot Rod (Barcrest) (MPU4) (set 19)", - "m4hotrod__s", "Hot Rod (Barcrest) (MPU4) (set 20)", - "m4hotrod__t", "Hot Rod (Barcrest) (MPU4) (set 21)", - "m4hotrod__u", "Hot Rod (Barcrest) (MPU4) (set 22)", - "m4hotrod__v", "Hot Rod (Barcrest) (MPU4) (set 23)", - "m4hpyjok", "Happy Joker (Barcrest) (Dutch) (MPU4) (DHJ1.2)", - "m4hslo", "unknown MPU4 'HOT 3.0' (MPU4?)", - "m4hstr", "Happy Streak (Coinworld) (MPU4) (set 1)", - "m4hstra", "Happy Streak (Coinworld) (MPU4) (set 2)", - "m4hstrb", "Happy Streak (Coinworld) (MPU4) (set 3)", - "m4hstrcs", "Casino Happy Streak (Coinworld) (MPU4) (set 1)", - "m4hstrcsa", "Casino Happy Streak (Coinworld) (MPU4) (set 2)", - "m4hstrcsb", "Casino Happy Streak (Coinworld) (MPU4) (set 3)", - "m4hstrcsc", "Casino Happy Streak (Coinworld) (MPU4) (set 4)", - "m4hstrcsd", "Casino Happy Streak (Coinworld) (MPU4) (set 5)", - "m4hvhel", "Heaven & Hell (Bwb) (MPU4) (set 1)", - "m4hvhel__a", "Heaven & Hell (Bwb) (MPU4) (set 2)", - "m4hvhel__b", "Heaven & Hell (Bwb) (MPU4) (set 3)", - "m4hvhel__c", "Heaven & Hell (Bwb) (MPU4) (set 4)", - "m4hvhel__d", "Heaven & Hell (Bwb) (MPU4) (set 5)", - "m4hvhel__e", "Heaven & Hell (Bwb) (MPU4) (set 6)", - "m4hvhel__f", "Heaven & Hell (Bwb) (MPU4) (set 7)", - "m4hvhel__g", "Heaven & Hell (Bwb) (MPU4) (set 8)", - "m4hvhel__h", "Heaven & Hell (Bwb) (MPU4) (set 9)", - "m4hypclb", "Hyper Viper Club (Barcrest) (MPU4) (set 1)", - "m4hypclb__a", "Hyper Viper Club (Barcrest) (MPU4) (set 2)", - "m4hypclb__b", "Hyper Viper Club (Barcrest) (MPU4) (set 3)", - "m4hypclb__c", "Hyper Viper Club (Barcrest) (MPU4) (set 4)", - "m4hypvip", "Hyper Viper (Barcrest) (MPU4) (set 1)", - "m4hypvip__a", "Hyper Viper (Barcrest) (MPU4) (set 2)", - "m4hypvip__b", "Hyper Viper (Barcrest) (MPU4) (set 3)", - "m4hypvip__c", "Hyper Viper (Barcrest) (MPU4) (set 4)", - "m4hypvip__d", "Hyper Viper (Barcrest) (MPU4) (set 5)", - "m4hypvip__e", "Hyper Viper (Barcrest) (MPU4) (set 6)", - "m4hypvip__f", "Hyper Viper (Barcrest) (MPU4) (set 7)", - "m4hypvip__g", "Hyper Viper (Barcrest) (MPU4) (set 8)", - "m4hypvip__h", "Hyper Viper (Barcrest) (MPU4) (set 9)", - "m4hypvip__i", "Hyper Viper (Barcrest) (MPU4) (set 10)", - "m4hypvip__j", "Hyper Viper (Barcrest) (MPU4) (set 11)", - "m4hypvip__k", "Hyper Viper (Barcrest) (MPU4) (set 12)", - "m4hypvip__l", "Hyper Viper (Barcrest) (MPU4) (set 13)", - "m4hypvip__m", "Hyper Viper (Barcrest) (MPU4) (set 14)", - "m4hypvip__n", "Hyper Viper (Barcrest) (MPU4) (set 15)", - "m4hypvip__o", "Hyper Viper (Barcrest) (MPU4) (set 16)", - "m4hypvip__p", "Hyper Viper (Barcrest) (MPU4) (set 17)", - "m4hypvip__q", "Hyper Viper (Barcrest) (MPU4) (set 18)", - "m4hypvip__r", "Hyper Viper (Barcrest) (MPU4) (set 19)", - "m4hypvip__s", "Hyper Viper (Barcrest) (MPU4) (set 20)", - "m4hypvip__t", "Hyper Viper (Barcrest) (MPU4) (set 21)", - "m4hypvip__u", "Hyper Viper (Barcrest) (MPU4) (set 22)", - "m4hypvip__v", "Hyper Viper (Barcrest) (MPU4) (set 23)", - "m4indycr", "Indy Cars (Bwb) (MPU4) (set 1)", - "m4indycr__a", "Indy Cars (Bwb) (MPU4) (set 2)", - "m4indycr__b", "Indy Cars (Bwb) (MPU4) (set 3)", - "m4indycr__c", "Indy Cars (Bwb) (MPU4) (set 4)", - "m4indycr__d", "Indy Cars (Bwb) (MPU4) (set 5)", - "m4indycr__e", "Indy Cars (Bwb) (MPU4) (set 6)", - "m4indycr__f", "Indy Cars (Bwb) (MPU4) (set 7)", - "m4intcep", "Interceptor (Barcrest) (MPU4) (INT 3.0)", - "m4intcepa", "Interceptor (Barcrest) (MPU4) (INT 3.0X)", - "m4intcepb", "Interceptor (Barcrest) (MPU4) (INT 1.1)", - "m4jakjok", "Jackpot Jokers (Bwb) (MPU4) (set 1)", - "m4jakjok__a", "Jackpot Jokers (Bwb) (MPU4) (set 2)", - "m4jakjok__b", "Jackpot Jokers (Bwb) (MPU4) (set 3)", - "m4jakjok__c", "Jackpot Jokers (Bwb) (MPU4) (set 4)", - "m4jakjoka", "Jackpot Jokers (alt) (Bwb) (MPU4)", - "m4jflash", "Jumping Jack Flash (Bwb) (MPU4) (set 1)", - "m4jflash__a", "Jumping Jack Flash (Bwb) (MPU4) (set 2)", - "m4jflash__b", "Jumping Jack Flash (Bwb) (MPU4) (set 3)", - "m4jflash__c", "Jumping Jack Flash (Bwb) (MPU4) (set 4)", - "m4jflash__d", "Jumping Jack Flash (Bwb) (MPU4) (set 5)", - "m4jflash__e", "Jumping Jack Flash (Bwb) (MPU4) (set 6)", - "m4jflash__f", "Jumping Jack Flash (Bwb) (MPU4) (set 7)", - "m4jflash__g", "Jumping Jack Flash (Bwb) (MPU4) (set 8)", - "m4jflash__h", "Jumping Jack Flash (Bwb) (MPU4) (set 9)", - "m4jflash__i", "Jumping Jack Flash (Bwb) (MPU4) (set 10)", - "m4jiggin", "Jiggin' In The Riggin' (Global) (MPU4) (set 1)", - "m4jiggina", "Jiggin' In The Riggin' (Global) (MPU4) (set 2)", - "m4jjc", "Jumping Jack Cash (Pcp) (MPU4) (set 1)", - "m4jjca", "Jumping Jack Cash (Pcp) (MPU4) (set 2)", - "m4jne", "The Jackpot's Not Enough (Empire) (MPU4)", - "m4jok2k", "Joker 2000 (Avantime?) (MPU4) (set 1)", - "m4jok2k__a", "Joker 2000 (Avantime?) (MPU4) (set 2)", - "m4jok2k__b", "Joker 2000 (Avantime?) (MPU4) (set 3)", - "m4jok300", "Jokers 300 (Barcrest) (German?) (MPU4)", - "m4jokmil", "Jokers Millennium (Barcrest) (German) (MPU4)", - "m4jolgem", "Jolly Gems (Barcrest) (MPU4) (set 1)", - "m4jolgem__0", "Jolly Gems (Barcrest) (MPU4) (set 28)", - "m4jolgem__1", "Jolly Gems (Barcrest) (MPU4) (set 29)", - "m4jolgem__2", "Jolly Gems (Barcrest) (MPU4) (set 30)", - "m4jolgem__3", "Jolly Gems (Barcrest) (MPU4) (set 31)", - "m4jolgem__4", "Jolly Gems (Barcrest) (MPU4) (set 32)", - "m4jolgem__5", "Jolly Gems (Barcrest) (MPU4) (set 33)", - "m4jolgem__6", "Jolly Gems (Barcrest) (MPU4) (set 34)", - "m4jolgem__7", "Jolly Gems (Barcrest) (MPU4) (set 35)", - "m4jolgem__8", "Jolly Gems (Barcrest) (MPU4) (set 36)", - "m4jolgem__9", "Jolly Gems (Barcrest) (MPU4) (set 37)", - "m4jolgem__a", "Jolly Gems (Barcrest) (MPU4) (set 2)", - "m4jolgem__aa", "Jolly Gems (Barcrest) (MPU4) (set 38)", - "m4jolgem__ab", "Jolly Gems (Barcrest) (MPU4) (set 39)", - "m4jolgem__ac", "Jolly Gems (Barcrest) (MPU4) (set 40)", - "m4jolgem__ad", "Jolly Gems (Barcrest) (MPU4) (set 41)", - "m4jolgem__ae", "Jolly Gems (Barcrest) (MPU4) (set 42)", - "m4jolgem__af", "Jolly Gems (Barcrest) (MPU4) (set 43)", - "m4jolgem__ag", "Jolly Gems (Barcrest) (MPU4) (set 44)", - "m4jolgem__ah", "Jolly Gems (Barcrest) (MPU4) (set 45)", - "m4jolgem__ai", "Jolly Gems (Barcrest) (MPU4) (set 46)", - "m4jolgem__aj", "Jolly Gems (Barcrest) (MPU4) (set 47)", - "m4jolgem__ak", "Jolly Gems (Barcrest) (MPU4) (set 48)", - "m4jolgem__al", "Jolly Gems (Barcrest) (MPU4) (set 49)", - "m4jolgem__am", "Jolly Gems (Barcrest) (MPU4) (set 50)", - "m4jolgem__an", "Jolly Gems (Barcrest) (MPU4) (set 51)", - "m4jolgem__ao", "Jolly Gems (Barcrest) (MPU4) (set 52)", - "m4jolgem__ap", "Jolly Gems (Barcrest) (MPU4) (set 53)", - "m4jolgem__b", "Jolly Gems (Barcrest) (MPU4) (set 3)", - "m4jolgem__c", "Jolly Gems (Barcrest) (MPU4) (set 4)", - "m4jolgem__d", "Jolly Gems (Barcrest) (MPU4) (set 5)", - "m4jolgem__e", "Jolly Gems (Barcrest) (MPU4) (set 6)", - "m4jolgem__f", "Jolly Gems (Barcrest) (MPU4) (set 7)", - "m4jolgem__g", "Jolly Gems (Barcrest) (MPU4) (set 8)", - "m4jolgem__h", "Jolly Gems (Barcrest) (MPU4) (set 9)", - "m4jolgem__i", "Jolly Gems (Barcrest) (MPU4) (set 10)", - "m4jolgem__j", "Jolly Gems (Barcrest) (MPU4) (set 11)", - "m4jolgem__k", "Jolly Gems (Barcrest) (MPU4) (set 12)", - "m4jolgem__l", "Jolly Gems (Barcrest) (MPU4) (set 13)", - "m4jolgem__m", "Jolly Gems (Barcrest) (MPU4) (set 14)", - "m4jolgem__n", "Jolly Gems (Barcrest) (MPU4) (set 15)", - "m4jolgem__o", "Jolly Gems (Barcrest) (MPU4) (set 16)", - "m4jolgem__p", "Jolly Gems (Barcrest) (MPU4) (set 17)", - "m4jolgem__q", "Jolly Gems (Barcrest) (MPU4) (set 18)", - "m4jolgem__r", "Jolly Gems (Barcrest) (MPU4) (set 19)", - "m4jolgem__s", "Jolly Gems (Barcrest) (MPU4) (set 20)", - "m4jolgem__t", "Jolly Gems (Barcrest) (MPU4) (set 21)", - "m4jolgem__u", "Jolly Gems (Barcrest) (MPU4) (set 22)", - "m4jolgem__v", "Jolly Gems (Barcrest) (MPU4) (set 23)", - "m4jolgem__w", "Jolly Gems (Barcrest) (MPU4) (set 24)", - "m4jolgem__x", "Jolly Gems (Barcrest) (MPU4) (set 25)", - "m4jolgem__y", "Jolly Gems (Barcrest) (MPU4) (set 26)", - "m4jolgem__z", "Jolly Gems (Barcrest) (MPU4) (set 27)", - "m4joljok", "Jolly Joker (Barcrest) (MPU4)", - "m4joljokd", "Jolly Joker (Barcrest) [Dutch] (MPU4) (DJJ)", - "m4joljokh", "Jolly Joker (Barcrest) [Hungarian] (MPU4) (HJJ)", - "m4joltav", "Jolly Taverner (Barcrest) (MPU4) (set 1)", - "m4joltava", "Jolly Taverner (Barcrest) (MPU4) (set 2)", - "m4joltavb", "Jolly Taverner (Barcrest) (MPU4) (set 3)", - "m4jp777", "Jackpot 777 (Cotswold Microsystems) (MPU4)", - "m4jpgem", "Jackpot Gems (Barcrest) (MPU4) (set 1)", - "m4jpgem__0", "Jackpot Gems (Barcrest) (MPU4) (set 28)", - "m4jpgem__1", "Jackpot Gems (Barcrest) (MPU4) (set 29)", - "m4jpgem__2", "Jackpot Gems (Barcrest) (MPU4) (set 30)", - "m4jpgem__3", "Jackpot Gems (Barcrest) (MPU4) (set 31)", - "m4jpgem__4", "Jackpot Gems (Barcrest) (MPU4) (set 32)", - "m4jpgem__5", "Jackpot Gems (Barcrest) (MPU4) (set 33)", - "m4jpgem__6", "Jackpot Gems (Barcrest) (MPU4) (set 34)", - "m4jpgem__7", "Jackpot Gems (Barcrest) (MPU4) (set 35)", - "m4jpgem__8", "Jackpot Gems (Barcrest) (MPU4) (set 36)", - "m4jpgem__9", "Jackpot Gems (Barcrest) (MPU4) (set 37)", - "m4jpgem__a", "Jackpot Gems (Barcrest) (MPU4) (set 2)", - "m4jpgem__a0", "Jackpot Gems (Barcrest) (MPU4) (set 64)", - "m4jpgem__a1", "Jackpot Gems (Barcrest) (MPU4) (set 65)", - "m4jpgem__a2", "Jackpot Gems (Barcrest) (MPU4) (set 66)", - "m4jpgem__a3", "Jackpot Gems (Barcrest) (MPU4) (set 67)", - "m4jpgem__a4", "Jackpot Gems (Barcrest) (MPU4) (set 68)", - "m4jpgem__a5", "Jackpot Gems (Barcrest) (MPU4) (set 69)", - "m4jpgem__a6", "Jackpot Gems (Barcrest) (MPU4) (set 70)", - "m4jpgem__a7", "Jackpot Gems (Barcrest) (MPU4) (set 71)", - "m4jpgem__a8", "Jackpot Gems (Barcrest) (MPU4) (set 72)", - "m4jpgem__a9", "Jackpot Gems (Barcrest) (MPU4) (set 73)", - "m4jpgem__aa", "Jackpot Gems (Barcrest) (MPU4) (set 38)", - "m4jpgem__ab", "Jackpot Gems (Barcrest) (MPU4) (set 39)", - "m4jpgem__ac", "Jackpot Gems (Barcrest) (MPU4) (set 40)", - "m4jpgem__ad", "Jackpot Gems (Barcrest) (MPU4) (set 41)", - "m4jpgem__ae", "Jackpot Gems (Barcrest) (MPU4) (set 42)", - "m4jpgem__af", "Jackpot Gems (Barcrest) (MPU4) (set 43)", - "m4jpgem__ag", "Jackpot Gems (Barcrest) (MPU4) (set 44)", - "m4jpgem__ah", "Jackpot Gems (Barcrest) (MPU4) (set 45)", - "m4jpgem__ai", "Jackpot Gems (Barcrest) (MPU4) (set 46)", - "m4jpgem__aj", "Jackpot Gems (Barcrest) (MPU4) (set 47)", - "m4jpgem__ak", "Jackpot Gems (Barcrest) (MPU4) (set 48)", - "m4jpgem__al", "Jackpot Gems (Barcrest) (MPU4) (set 49)", - "m4jpgem__am", "Jackpot Gems (Barcrest) (MPU4) (set 50)", - "m4jpgem__an", "Jackpot Gems (Barcrest) (MPU4) (set 51)", - "m4jpgem__ao", "Jackpot Gems (Barcrest) (MPU4) (set 52)", - "m4jpgem__ap", "Jackpot Gems (Barcrest) (MPU4) (set 53)", - "m4jpgem__aq", "Jackpot Gems (Barcrest) (MPU4) (set 54)", - "m4jpgem__ar", "Jackpot Gems (Barcrest) (MPU4) (set 55)", - "m4jpgem__as", "Jackpot Gems (Barcrest) (MPU4) (set 56)", - "m4jpgem__at", "Jackpot Gems (Barcrest) (MPU4) (set 57)", - "m4jpgem__au", "Jackpot Gems (Barcrest) (MPU4) (set 58)", - "m4jpgem__av", "Jackpot Gems (Barcrest) (MPU4) (set 59)", - "m4jpgem__aw", "Jackpot Gems (Barcrest) (MPU4) (set 60)", - "m4jpgem__ax", "Jackpot Gems (Barcrest) (MPU4) (set 61)", - "m4jpgem__ay", "Jackpot Gems (Barcrest) (MPU4) (set 62)", - "m4jpgem__az", "Jackpot Gems (Barcrest) (MPU4) (set 63)", - "m4jpgem__b", "Jackpot Gems (Barcrest) (MPU4) (set 3)", - "m4jpgem__ba", "Jackpot Gems (Barcrest) (MPU4) (set 74)", - "m4jpgem__bb", "Jackpot Gems (Barcrest) (MPU4) (set 75)", - "m4jpgem__bc", "Jackpot Gems (Barcrest) (MPU4) (set 76)", - "m4jpgem__bd", "Jackpot Gems (Barcrest) (MPU4) (set 77)", - "m4jpgem__be", "Jackpot Gems (Barcrest) (MPU4) (set 78)", - "m4jpgem__bf", "Jackpot Gems (Barcrest) (MPU4) (set 79)", - "m4jpgem__bg", "Jackpot Gems (Barcrest) (MPU4) (set 80)", - "m4jpgem__bh", "Jackpot Gems (Barcrest) (MPU4) (set 81)", - "m4jpgem__bi", "Jackpot Gems (Barcrest) (MPU4) (set 82)", - "m4jpgem__bj", "Jackpot Gems (Barcrest) (MPU4) (set 83)", - "m4jpgem__bk", "Jackpot Gems (Barcrest) (MPU4) (set 84)", - "m4jpgem__bl", "Jackpot Gems (Barcrest) (MPU4) (set 85)", - "m4jpgem__bm", "Jackpot Gems (Barcrest) (MPU4) (set 86)", - "m4jpgem__bn", "Jackpot Gems (Barcrest) (MPU4) (set 87)", - "m4jpgem__bo", "Jackpot Gems (Barcrest) (MPU4) (set 88)", - "m4jpgem__bp", "Jackpot Gems (Barcrest) (MPU4) (set 89)", - "m4jpgem__c", "Jackpot Gems (Barcrest) (MPU4) (set 4)", - "m4jpgem__d", "Jackpot Gems (Barcrest) (MPU4) (set 5)", - "m4jpgem__e", "Jackpot Gems (Barcrest) (MPU4) (set 6)", - "m4jpgem__f", "Jackpot Gems (Barcrest) (MPU4) (set 7)", - "m4jpgem__g", "Jackpot Gems (Barcrest) (MPU4) (set 8)", - "m4jpgem__h", "Jackpot Gems (Barcrest) (MPU4) (set 9)", - "m4jpgem__i", "Jackpot Gems (Barcrest) (MPU4) (set 10)", - "m4jpgem__j", "Jackpot Gems (Barcrest) (MPU4) (set 11)", - "m4jpgem__k", "Jackpot Gems (Barcrest) (MPU4) (set 12)", - "m4jpgem__l", "Jackpot Gems (Barcrest) (MPU4) (set 13)", - "m4jpgem__m", "Jackpot Gems (Barcrest) (MPU4) (set 14)", - "m4jpgem__n", "Jackpot Gems (Barcrest) (MPU4) (set 15)", - "m4jpgem__o", "Jackpot Gems (Barcrest) (MPU4) (set 16)", - "m4jpgem__p", "Jackpot Gems (Barcrest) (MPU4) (set 17)", - "m4jpgem__q", "Jackpot Gems (Barcrest) (MPU4) (set 18)", - "m4jpgem__r", "Jackpot Gems (Barcrest) (MPU4) (set 19)", - "m4jpgem__s", "Jackpot Gems (Barcrest) (MPU4) (set 20)", - "m4jpgem__t", "Jackpot Gems (Barcrest) (MPU4) (set 21)", - "m4jpgem__u", "Jackpot Gems (Barcrest) (MPU4) (set 22)", - "m4jpgem__v", "Jackpot Gems (Barcrest) (MPU4) (set 23)", - "m4jpgem__w", "Jackpot Gems (Barcrest) (MPU4) (set 24)", - "m4jpgem__x", "Jackpot Gems (Barcrest) (MPU4) (set 25)", - "m4jpgem__y", "Jackpot Gems (Barcrest) (MPU4) (set 26)", - "m4jpgem__z", "Jackpot Gems (Barcrest) (MPU4) (set 27)", - "m4jpgemc", "Jackpot Gems Classic (Barcrest) (MPU4) (set 1)", - "m4jpgemc__a", "Jackpot Gems Classic (Barcrest) (MPU4) (set 2)", - "m4jpgemc__b", "Jackpot Gems Classic (Barcrest) (MPU4) (set 3)", - "m4jpgemc__c", "Jackpot Gems Classic (Barcrest) (MPU4) (set 4)", - "m4jpgemc__d", "Jackpot Gems Classic (Barcrest) (MPU4) (set 5)", - "m4jpgemc__e", "Jackpot Gems Classic (Barcrest) (MPU4) (set 6)", - "m4jpgemc__f", "Jackpot Gems Classic (Barcrest) (MPU4) (set 7)", - "m4jpgemc__g", "Jackpot Gems Classic (Barcrest) (MPU4) (set 8)", - "m4jpgemc__h", "Jackpot Gems Classic (Barcrest) (MPU4) (set 9)", - "m4jpgemc__i", "Jackpot Gems Classic (Barcrest) (MPU4) (set 10)", - "m4jpgemc__j", "Jackpot Gems Classic (Barcrest) (MPU4) (set 11)", - "m4jpgemc__k", "Jackpot Gems Classic (Barcrest) (MPU4) (set 12)", - "m4jpgemc__l", "Jackpot Gems Classic (Barcrest) (MPU4) (set 13)", - "m4jpgemc__m", "Jackpot Gems Classic (Barcrest) (MPU4) (set 14)", - "m4jpgemc__n", "Jackpot Gems Classic (Barcrest) (MPU4) (set 15)", - "m4jpgemc__o", "Jackpot Gems Classic (Barcrest) (MPU4) (set 16)", - "m4jpgemc__p", "Jackpot Gems Classic (Barcrest) (MPU4) (set 17)", - "m4jpgemc__q", "Jackpot Gems Classic (Barcrest) (MPU4) (set 18)", - "m4jpgemc__r", "Jackpot Gems Classic (Barcrest) (MPU4) (set 19)", - "m4jpgemc__s", "Jackpot Gems Classic (Barcrest) (MPU4) (set 20)", - "m4jpgemc__t", "Jackpot Gems Classic (Barcrest) (MPU4) (set 21)", - "m4jpgemc__u", "Jackpot Gems Classic (Barcrest) (MPU4) (set 22)", - "m4jpgemc__v", "Jackpot Gems Classic (Barcrest) (MPU4) (set 23)", - "m4jpgemc__w", "Jackpot Gems Classic (Barcrest) (MPU4) (set 24)", - "m4jpjmp", "Jackpot Jump (Barcrest) (MPU4) (set 1)", - "m4jpjmpa", "Jackpot Jump (Barcrest) (MPU4) (set 2)", - "m4jpmcla", "Old Timer (Barcrest) (Dutch, alt 'JPM Classic' sound roms) (DOT1.1)", - "m4jungj", "Jungle Japes (MPU4?) (set 1)", - "m4jungja", "Jungle Japes (MPU4?) (set 2)", - "m4jungjb", "Jungle Japes (MPU4?) (set 3)", - "m4jungjc", "Jungle Japes (MPU4?) (set 4)", - "m4jungjk", "Jungle Jackpots (Qps) (MPU4) (set 1)", - "m4jungjk__a", "Jungle Jackpots (Qps) (MPU4) (set 2)", - "m4jungjk__b", "Jungle Jackpots (Qps) (MPU4) (set 3)", - "m4jungjk__c", "Jungle Jackpots (Qps) (MPU4) (set 4)", - "m4jungjk__d", "Jungle Jackpots (Qps) (MPU4) (set 5)", - "m4jungjk__e", "Jungle Jackpots (Qps) (MPU4) (set 6)", - "m4jwlcwn", "Jewel In the Crown (Barcrest) (MPU4) (set 1)", - "m4jwlcwn__0", "Jewel In the Crown (Barcrest) (MPU4) (set 28)", - "m4jwlcwn__1", "Jewel In the Crown (Barcrest) (MPU4) (set 29)", - "m4jwlcwn__2", "Jewel In the Crown (Barcrest) (MPU4) (set 30)", - "m4jwlcwn__3", "Jewel In the Crown (Barcrest) (MPU4) (set 31)", - "m4jwlcwn__4", "Jewel In the Crown (Barcrest) (MPU4) (set 32)", - "m4jwlcwn__5", "Jewel In the Crown (Barcrest) (MPU4) (set 33)", - "m4jwlcwn__6", "Jewel In the Crown (Barcrest) (MPU4) (set 34)", - "m4jwlcwn__a", "Jewel In the Crown (Barcrest) (MPU4) (set 2)", - "m4jwlcwn__b", "Jewel In the Crown (Barcrest) (MPU4) (set 3)", - "m4jwlcwn__c", "Jewel In the Crown (Barcrest) (MPU4) (set 4)", - "m4jwlcwn__d", "Jewel In the Crown (Barcrest) (MPU4) (set 5)", - "m4jwlcwn__e", "Jewel In the Crown (Barcrest) (MPU4) (set 6)", - "m4jwlcwn__f", "Jewel In the Crown (Barcrest) (MPU4) (set 7)", - "m4jwlcwn__g", "Jewel In the Crown (Barcrest) (MPU4) (set 8)", - "m4jwlcwn__h", "Jewel In the Crown (Barcrest) (MPU4) (set 9)", - "m4jwlcwn__i", "Jewel In the Crown (Barcrest) (MPU4) (set 10)", - "m4jwlcwn__j", "Jewel In the Crown (Barcrest) (MPU4) (set 11)", - "m4jwlcwn__k", "Jewel In the Crown (Barcrest) (MPU4) (set 12)", - "m4jwlcwn__l", "Jewel In the Crown (Barcrest) (MPU4) (set 13)", - "m4jwlcwn__m", "Jewel In the Crown (Barcrest) (MPU4) (set 14)", - "m4jwlcwn__n", "Jewel In the Crown (Barcrest) (MPU4) (set 15)", - "m4jwlcwn__o", "Jewel In the Crown (Barcrest) (MPU4) (set 16)", - "m4jwlcwn__p", "Jewel In the Crown (Barcrest) (MPU4) (set 17)", - "m4jwlcwn__q", "Jewel In the Crown (Barcrest) (MPU4) (set 18)", - "m4jwlcwn__r", "Jewel In the Crown (Barcrest) (MPU4) (set 19)", - "m4jwlcwn__s", "Jewel In the Crown (Barcrest) (MPU4) (set 20)", - "m4jwlcwn__t", "Jewel In the Crown (Barcrest) (MPU4) (set 21)", - "m4jwlcwn__u", "Jewel In the Crown (Barcrest) (MPU4) (set 22)", - "m4jwlcwn__v", "Jewel In the Crown (Barcrest) (MPU4) (set 23)", - "m4jwlcwn__w", "Jewel In the Crown (Barcrest) (MPU4) (set 24)", - "m4jwlcwn__x", "Jewel In the Crown (Barcrest) (MPU4) (set 25)", - "m4jwlcwn__y", "Jewel In the Crown (Barcrest) (MPU4) (set 26)", - "m4jwlcwn__z", "Jewel In the Crown (Barcrest) (MPU4) (set 27)", - "m4kingg", "King George (Avantime?) (MPU4) (set 1)", - "m4kingg__a", "King George (Avantime?) (MPU4) (set 2)", - "m4kingq", "Kings & Queens (Barcrest) (MPU4) (set 1)", - "m4kingq__a", "Kings & Queens (Barcrest) (MPU4) (set 2)", - "m4kingq__b", "Kings & Queens (Barcrest) (MPU4) (set 3)", - "m4kingq__c", "Kings & Queens (Barcrest) (MPU4) (set 4)", - "m4kingq__d", "Kings & Queens (Barcrest) (MPU4) (set 5)", - "m4kingq__e", "Kings & Queens (Barcrest) (MPU4) (set 6)", - "m4kingq__f", "Kings & Queens (Barcrest) (MPU4) (set 7)", - "m4kingq__g", "Kings & Queens (Barcrest) (MPU4) (set 8)", - "m4kingq__h", "Kings & Queens (Barcrest) (MPU4) (set 9)", - "m4kingq__i", "Kings & Queens (Barcrest) (MPU4) (set 10)", - "m4kingq__j", "Kings & Queens (Barcrest) (MPU4) (set 11)", - "m4kingq__k", "Kings & Queens (Barcrest) (MPU4) (set 12)", - "m4kingq__l", "Kings & Queens (Barcrest) (MPU4) (set 13)", - "m4kingq__m", "Kings & Queens (Barcrest) (MPU4) (set 14)", - "m4kingq__n", "Kings & Queens (Barcrest) (MPU4) (set 15)", - "m4kingq__o", "Kings & Queens (Barcrest) (MPU4) (set 16)", - "m4kingq__p", "Kings & Queens (Barcrest) (MPU4) (set 17)", - "m4kingq__r", "Kings & Queens (Barcrest) (MPU4) (set 18)", - "m4kingq__s", "Kings & Queens (Barcrest) (MPU4) (set 19)", - "m4kingq__t", "Kings & Queens (Barcrest) (MPU4) (set 20)", - "m4kingqc", "Kings & Queens Classic (Barcrest) (MPU4) (set 1)", - "m4kingqc__0", "Kings & Queens Classic (Barcrest) (MPU4) (set 26)", - "m4kingqc__1", "Kings & Queens Classic (Barcrest) (MPU4) (set 27)", - "m4kingqc__2", "Kings & Queens Classic (Barcrest) (MPU4) (set 28)", - "m4kingqc__3", "Kings & Queens Classic (Barcrest) (MPU4) (set 29)", - "m4kingqc__4", "Kings & Queens Classic (Barcrest) (MPU4) (set 30)", - "m4kingqc__5", "Kings & Queens Classic (Barcrest) (MPU4) (set 31)", - "m4kingqc__a", "Kings & Queens Classic (Barcrest) (MPU4) (set 2)", - "m4kingqc__b", "Kings & Queens Classic (Barcrest) (MPU4) (set 3)", - "m4kingqc__c", "Kings & Queens Classic (Barcrest) (MPU4) (set 4)", - "m4kingqc__d", "Kings & Queens Classic (Barcrest) (MPU4) (set 5)", - "m4kingqc__e", "Kings & Queens Classic (Barcrest) (MPU4) (set 6)", - "m4kingqc__f", "Kings & Queens Classic (Barcrest) (MPU4) (set 7)", - "m4kingqc__g", "Kings & Queens Classic (Barcrest) (MPU4) (set 8)", - "m4kingqc__h", "Kings & Queens Classic (Barcrest) (MPU4) (set 9)", - "m4kingqc__i", "Kings & Queens Classic (Barcrest) (MPU4) (set 10)", - "m4kingqc__j", "Kings & Queens Classic (Barcrest) (MPU4) (set 11)", - "m4kingqc__k", "Kings & Queens Classic (Barcrest) (MPU4) (set 12)", - "m4kingqc__l", "Kings & Queens Classic (Barcrest) (MPU4) (set 13)", - "m4kingqc__m", "Kings & Queens Classic (Barcrest) (MPU4) (set 14)", - "m4kingqc__n", "Kings & Queens Classic (Barcrest) (MPU4) (set 15)", - "m4kingqc__q", "Kings & Queens Classic (Barcrest) (MPU4) (set 16)", - "m4kingqc__r", "Kings & Queens Classic (Barcrest) (MPU4) (set 17)", - "m4kingqc__s", "Kings & Queens Classic (Barcrest) (MPU4) (set 18)", - "m4kingqc__t", "Kings & Queens Classic (Barcrest) (MPU4) (set 19)", - "m4kingqc__u", "Kings & Queens Classic (Barcrest) (MPU4) (set 20)", - "m4kingqc__v", "Kings & Queens Classic (Barcrest) (MPU4) (set 21)", - "m4kingqc__w", "Kings & Queens Classic (Barcrest) (MPU4) (set 22)", - "m4kingqc__x", "Kings & Queens Classic (Barcrest) (MPU4) (set 23)", - "m4kingqc__y", "Kings & Queens Classic (Barcrest) (MPU4) (set 24)", - "m4kingqc__z", "Kings & Queens Classic (Barcrest) (MPU4) (set 25)", - "m4kingqn", "Kings & Queens Club (Crystal) (MPU4) (set 1)", - "m4kingqna", "Kings & Queens Club (Crystal) (MPU4) (set 2)", - "m4kqclub", "Kings & Queens Club (Newby) (MPU4)", - "m4lazy", "Lazy Bones (Bwb) (MPU4) (set 1)", - "m4lazya", "Lazy Bones (Bwb) (MPU4) (set 2)", - "m4lazyb", "Lazy Bones (Bwb) (MPU4) (set 3)", - "m4libty", "Liberty (Barcrest) (Dutch) (MPU4)", - "m4lineup", "Line Up (Bwb - Barcrest) (MPU4) (set 1)", - "m4lineupa", "Line Up (Bwb - Barcrest) (MPU4) (set 2)", - "m4ln7", "Lucky No7 (Bwb) (MPU4) (set 1)", - "m4ln7__a", "Lucky No7 (Bwb) (MPU4) (set 2)", - "m4ln7__b", "Lucky No7 (Bwb) (MPU4) (set 3)", - "m4ln7__c", "Lucky No7 (Bwb) (MPU4) (set 4)", - "m4ln7__d", "Lucky No7 (Bwb) (MPU4) (set 5)", - "m4loadmn", "Loads A Money (Barcrest) (MPU4) (set 1)", - "m4loadmna", "Loads A Money (Barcrest) (MPU4) (set 2)", - "m4loadmnb", "Loads A Money (Barcrest) (MPU4) (set 3)", - "m4looplt", "Loop The Loot (Qps) (MPU4) (set 1)", - "m4looplt__a", "Loop The Loot (Qps) (MPU4) (set 2)", - "m4looplt__b", "Loop The Loot (Qps) (MPU4) (set 3)", - "m4looplt__c", "Loop The Loot (Qps) (MPU4) (set 4)", - "m4looplt__d", "Loop The Loot (Qps) (MPU4) (set 5)", - "m4looplt__e", "Loop The Loot (Qps) (MPU4) (set 6)", - "m4looplt__f", "Loop The Loot (Qps) (MPU4) (set 7)", - "m4looplt__g", "Loop The Loot (Qps) (MPU4) (set 8)", - "m4looplt__h", "Loop The Loot (Qps) (MPU4) (set 9)", - "m4looplt__i", "Loop The Loot (Qps) (MPU4) (set 10)", - "m4looplt__j", "Loop The Loot (Qps) (MPU4) (set 11)", - "m4looplt__k", "Loop The Loot (Qps) (MPU4) (set 12)", - "m4looplt__l", "Loop The Loot (Qps) (MPU4) (set 13)", - "m4looplt__m", "Loop The Loot (Qps) (MPU4) (set 14)", - "m4lotclb", "Lottery Club (Crystal) (MPU4) (set 1)", - "m4lotclba", "Lottery Club (Crystal) (MPU4) (set 2)", - "m4lotty", "Lotty Time (Union) (MPU4)", - "m4luck7", "Lucky 7 (Barcrest) (Dutch) (MPU4)", - "m4luckdv", "Lucky Devil (Barcrest) [Czech] (MPU4)", - "m4luckdvd", "Lucky Devil (Barcrest) [Dutch] (MPU4) (DLD)", - "m4lucklv", "Lucky Las Vegas (Barcrest) (MPU4) (set 1)", - "m4lucklv__0", "Lucky Las Vegas (Barcrest) (MPU4) (set 28)", - "m4lucklv__1", "Lucky Las Vegas (Barcrest) (MPU4) (set 29)", - "m4lucklv__2", "Lucky Las Vegas (Barcrest) (MPU4) (set 30)", - "m4lucklv__3", "Lucky Las Vegas (Barcrest) (MPU4) (set 31)", - "m4lucklv__4", "Lucky Las Vegas (Barcrest) (MPU4) (set 32)", - "m4lucklv__5", "Lucky Las Vegas (Barcrest) (MPU4) (set 33)", - "m4lucklv__6", "Lucky Las Vegas (Barcrest) (MPU4) (set 34)", - "m4lucklv__7", "Lucky Las Vegas (Barcrest) (MPU4) (set 35)", - "m4lucklv__8", "Lucky Las Vegas (Barcrest) (MPU4) (set 36)", - "m4lucklv__9", "Lucky Las Vegas (Barcrest) (MPU4) (set 37)", - "m4lucklv__a", "Lucky Las Vegas (Barcrest) (MPU4) (set 2)", - "m4lucklv__aa", "Lucky Las Vegas (Barcrest) (MPU4) (set 38)", - "m4lucklv__ab", "Lucky Las Vegas (Barcrest) (MPU4) (set 39)", - "m4lucklv__ac", "Lucky Las Vegas (Barcrest) (MPU4) (set 40)", - "m4lucklv__ad", "Lucky Las Vegas (Barcrest) (MPU4) (set 41)", - "m4lucklv__ae", "Lucky Las Vegas (Barcrest) (MPU4) (set 42)", - "m4lucklv__af", "Lucky Las Vegas (Barcrest) (MPU4) (set 43)", - "m4lucklv__ag", "Lucky Las Vegas (Barcrest) (MPU4) (set 44)", - "m4lucklv__ah", "Lucky Las Vegas (Barcrest) (MPU4) (set 45)", - "m4lucklv__ai", "Lucky Las Vegas (Barcrest) (MPU4) (set 46)", - "m4lucklv__b", "Lucky Las Vegas (Barcrest) (MPU4) (set 3)", - "m4lucklv__c", "Lucky Las Vegas (Barcrest) (MPU4) (set 4)", - "m4lucklv__d", "Lucky Las Vegas (Barcrest) (MPU4) (set 5)", - "m4lucklv__e", "Lucky Las Vegas (Barcrest) (MPU4) (set 6)", - "m4lucklv__f", "Lucky Las Vegas (Barcrest) (MPU4) (set 7)", - "m4lucklv__g", "Lucky Las Vegas (Barcrest) (MPU4) (set 8)", - "m4lucklv__h", "Lucky Las Vegas (Barcrest) (MPU4) (set 9)", - "m4lucklv__i", "Lucky Las Vegas (Barcrest) (MPU4) (set 10)", - "m4lucklv__j", "Lucky Las Vegas (Barcrest) (MPU4) (set 11)", - "m4lucklv__k", "Lucky Las Vegas (Barcrest) (MPU4) (set 12)", - "m4lucklv__l", "Lucky Las Vegas (Barcrest) (MPU4) (set 13)", - "m4lucklv__m", "Lucky Las Vegas (Barcrest) (MPU4) (set 14)", - "m4lucklv__n", "Lucky Las Vegas (Barcrest) (MPU4) (set 15)", - "m4lucklv__o", "Lucky Las Vegas (Barcrest) (MPU4) (set 16)", - "m4lucklv__p", "Lucky Las Vegas (Barcrest) (MPU4) (set 17)", - "m4lucklv__q", "Lucky Las Vegas (Barcrest) (MPU4) (set 18)", - "m4lucklv__r", "Lucky Las Vegas (Barcrest) (MPU4) (set 19)", - "m4lucklv__s", "Lucky Las Vegas (Barcrest) (MPU4) (set 20)", - "m4lucklv__t", "Lucky Las Vegas (Barcrest) (MPU4) (set 21)", - "m4lucklv__u", "Lucky Las Vegas (Barcrest) (MPU4) (set 22)", - "m4lucklv__v", "Lucky Las Vegas (Barcrest) (MPU4) (set 23)", - "m4lucklv__w", "Lucky Las Vegas (Barcrest) (MPU4) (set 24)", - "m4lucklv__x", "Lucky Las Vegas (Barcrest) (MPU4) (set 25)", - "m4lucklv__y", "Lucky Las Vegas (Barcrest) (MPU4) (set 26)", - "m4lucklv__z", "Lucky Las Vegas (Barcrest) (MPU4) (set 27)", - "m4lucksc", "Lucky Strike Club (Barcrest) (MPU4) (set 1)", - "m4lucksc__a", "Lucky Strike Club (Barcrest) (MPU4) (set 2)", - "m4lucksc__b", "Lucky Strike Club (Barcrest) (MPU4) (set 3)", - "m4lucksc__c", "Lucky Strike Club (Barcrest) (MPU4) (set 4)", - "m4lucksc__d", "Lucky Strike Club (Barcrest) (MPU4) (set 5)", - "m4lucksc__e", "Lucky Strike Club (Barcrest) (MPU4) (set 6)", - "m4lucksc__f", "Lucky Strike Club (Barcrest) (MPU4) (set 7)", - "m4lucksc__g", "Lucky Strike Club (Barcrest) (MPU4) (set 8)", - "m4lucksc__h", "Lucky Strike Club (Barcrest) (MPU4) (set 9)", - "m4lucksc__i", "Lucky Strike Club (Barcrest) (MPU4) (set 10)", - "m4lucksc__j", "Lucky Strike Club (Barcrest) (MPU4) (set 11)", - "m4lucksc__k", "Lucky Strike Club (Barcrest) (MPU4) (set 12)", - "m4lucksc__l", "Lucky Strike Club (Barcrest) (MPU4) (set 13)", - "m4luckst", "Lucky Strike (Barcrest) (MPU4) (set 1)", - "m4luckst__0", "Lucky Strike (Barcrest) (MPU4) (set 28)", - "m4luckst__1", "Lucky Strike (Barcrest) (MPU4) (set 29)", - "m4luckst__2", "Lucky Strike (Barcrest) (MPU4) (set 30)", - "m4luckst__3", "Lucky Strike (Barcrest) (MPU4) (set 31)", - "m4luckst__4", "Lucky Strike (Barcrest) (MPU4) (set 32)", - "m4luckst__5", "Lucky Strike (Barcrest) (MPU4) (set 33)", - "m4luckst__6", "Lucky Strike (Barcrest) (MPU4) (set 34)", - "m4luckst__7", "Lucky Strike (Barcrest) (MPU4) (set 35)", - "m4luckst__8", "Lucky Strike (Barcrest) (MPU4) (set 36)", - "m4luckst__9", "Lucky Strike (Barcrest) (MPU4) (set 37)", - "m4luckst__a", "Lucky Strike (Barcrest) (MPU4) (set 2)", - "m4luckst__aa", "Lucky Strike (Barcrest) (MPU4) (set 38)", - "m4luckst__ab", "Lucky Strike (Barcrest) (MPU4) (set 39)", - "m4luckst__ac", "Lucky Strike (Barcrest) (MPU4) (set 40)", - "m4luckst__ad", "Lucky Strike (Barcrest) (MPU4) (set 41)", - "m4luckst__ae", "Lucky Strike (Barcrest) (MPU4) (set 42)", - "m4luckst__af", "Lucky Strike (Barcrest) (MPU4) (set 43)", - "m4luckst__ag", "Lucky Strike (Barcrest) (MPU4) (set 44)", - "m4luckst__ah", "Lucky Strike (Barcrest) (MPU4) (set 45)", - "m4luckst__ai", "Lucky Strike (Barcrest) (MPU4) (set 46)", - "m4luckst__aj", "Lucky Strike (Barcrest) (MPU4) (set 47)", - "m4luckst__ak", "Lucky Strike (Barcrest) (MPU4) (set 48)", - "m4luckst__al", "Lucky Strike (Barcrest) (MPU4) (set 49)", - "m4luckst__am", "Lucky Strike (Barcrest) (MPU4) (set 50)", - "m4luckst__an", "Lucky Strike (Barcrest) (MPU4) (set 51)", - "m4luckst__ao", "Lucky Strike (Barcrest) (MPU4) (set 52)", - "m4luckst__ap", "Lucky Strike (Barcrest) (MPU4) (set 53)", - "m4luckst__aq", "Lucky Strike (Barcrest) (MPU4) (set 54)", - "m4luckst__ar", "Lucky Strike (Barcrest) (MPU4) (set 55)", - "m4luckst__as", "Lucky Strike (Barcrest) (MPU4) (set 56)", - "m4luckst__at", "Lucky Strike (Barcrest) (MPU4) (set 57)", - "m4luckst__au", "Lucky Strike (Barcrest) (MPU4) (set 58)", - "m4luckst__av", "Lucky Strike (Barcrest) (MPU4) (set 59)", - "m4luckst__aw", "Lucky Strike (Barcrest) (MPU4) (set 60)", - "m4luckst__b", "Lucky Strike (Barcrest) (MPU4) (set 3)", - "m4luckst__c", "Lucky Strike (Barcrest) (MPU4) (set 4)", - "m4luckst__d", "Lucky Strike (Barcrest) (MPU4) (set 5)", - "m4luckst__e", "Lucky Strike (Barcrest) (MPU4) (set 6)", - "m4luckst__f", "Lucky Strike (Barcrest) (MPU4) (set 7)", - "m4luckst__g", "Lucky Strike (Barcrest) (MPU4) (set 8)", - "m4luckst__h", "Lucky Strike (Barcrest) (MPU4) (set 9)", - "m4luckst__i", "Lucky Strike (Barcrest) (MPU4) (set 10)", - "m4luckst__j", "Lucky Strike (Barcrest) (MPU4) (set 11)", - "m4luckst__k", "Lucky Strike (Barcrest) (MPU4) (set 12)", - "m4luckst__l", "Lucky Strike (Barcrest) (MPU4) (set 13)", - "m4luckst__m", "Lucky Strike (Barcrest) (MPU4) (set 14)", - "m4luckst__n", "Lucky Strike (Barcrest) (MPU4) (set 15)", - "m4luckst__p", "Lucky Strike (Barcrest) (MPU4) (set 17)", - "m4luckst__q", "Lucky Strike (Barcrest) (MPU4) (set 18)", - "m4luckst__r", "Lucky Strike (Barcrest) (MPU4) (set 19)", - "m4luckst__s", "Lucky Strike (Barcrest) (MPU4) (set 20)", - "m4luckst__t", "Lucky Strike (Barcrest) (MPU4) (set 21)", - "m4luckst__u", "Lucky Strike (Barcrest) (MPU4) (set 22)", - "m4luckst__v", "Lucky Strike (Barcrest) (MPU4) (set 23)", - "m4luckst__w", "Lucky Strike (Barcrest) (MPU4) (set 24)", - "m4luckst__x", "Lucky Strike (Barcrest) (MPU4) (set 25)", - "m4luckst__y", "Lucky Strike (Barcrest) (MPU4) (set 26)", - "m4luckst__z", "Lucky Strike (Barcrest) (MPU4) (set 27)", - "m4luckwb", "Lucky Wild Boar (Barcrest) (MPU4) (set 1)", - "m4luckwba", "Lucky Wild Boar (Barcrest) (MPU4) (set 2)", - "m4luckwbb", "Lucky Wild Boar (Barcrest) (MPU4) (set 3)", - "m4luckwbc", "Lucky Wild Boar (Barcrest) (MPU4) (set 4)", - "m4luckwbd", "Lucky Wild Boar (Barcrest) (MPU4) (set 5)", - "m4luckwbe", "Lucky Wild Boar (Barcrest) (MPU4) (set 6)", - "m4luckwbf", "Lucky Wild Boar (Barcrest) (MPU4) (set 7)", - "m4luxor", "Luxor (Barcrest) (MPU4) (set 1)", - "m4luxor__a", "Luxor (Barcrest) (MPU4) (set 2)", - "m4luxor__b", "Luxor (Barcrest) (MPU4) (set 3)", - "m4luxor__c", "Luxor (Barcrest) (MPU4) (set 4)", - "m4luxor__d", "Luxor (Barcrest) (MPU4) (set 5)", - "m4luxor__e", "Luxor (Barcrest) (MPU4) (set 6)", - "m4luxor__f", "Luxor (Barcrest) (MPU4) (set 7)", - "m4luxor__g", "Luxor (Barcrest) (MPU4) (set 8)", - "m4luxor__h", "Luxor (Barcrest) (MPU4) (set 9)", - "m4luxor__i", "Luxor (Barcrest) (MPU4) (set 10)", - "m4luxor__j", "Luxor (Barcrest) (MPU4) (set 11)", - "m4luxor__k", "Luxor (Barcrest) (MPU4) (set 12)", - "m4luxor__l", "Luxor (Barcrest) (MPU4) (set 13)", - "m4luxor__m", "Luxor (Barcrest) (MPU4) (set 14)", - "m4luxor__n", "Luxor (Barcrest) (MPU4) (set 15)", - "m4luxor__o", "Luxor (Barcrest) (MPU4) (set 16)", - "m4luxor__p", "Luxor (Barcrest) (MPU4) (set 17)", - "m4luxor__q", "Luxor (Barcrest) (MPU4) (set 18)", - "m4luxor__r", "Luxor (Barcrest) (MPU4) (set 19)", - "m4luxor__s", "Luxor (Barcrest) (MPU4) (set 20)", - "m4luxor__t", "Luxor (Barcrest) (MPU4) (set 21)", - "m4luxor__u", "Luxor (Barcrest) (MPU4) (set 22)", - "m4luxor__v", "Luxor (Barcrest) (MPU4) (set 23)", - "m4luxor__w", "Luxor (Barcrest) (MPU4) (set 24)", - "m4luxor__x", "Luxor (Barcrest) (MPU4) (set 25)", - "m4luxor__y", "Luxor (Barcrest) (MPU4) (set 26)", - "m4luxor__z", "Luxor (Barcrest) (MPU4) (set 27)", - "m4lvlcl", "Lucky Las Vegas Classic (Barcrest) (MPU4) (set 1)", - "m4lvlcl__a", "Lucky Las Vegas Classic (Barcrest) (MPU4) (set 2)", - "m4lvlcl__b", "Lucky Las Vegas Classic (Barcrest) (MPU4) (set 3)", - "m4lvlcl__c", "Lucky Las Vegas Classic (Barcrest) (MPU4) (set 4)", - "m4lvlcl__d", "Lucky Las Vegas Classic (Barcrest) (MPU4) (set 5)", - "m4lvlcl__e", "Lucky Las Vegas Classic (Barcrest) (MPU4) (set 6)", - "m4lvlcl__f", "Lucky Las Vegas Classic (Barcrest) (MPU4) (set 7)", - "m4madhse", "Mad House (Barcrest) (MPU4) (set 1)", - "m4madhse__0", "Mad House (Barcrest) (MPU4) (set 28)", - "m4madhse__a", "Mad House (Barcrest) (MPU4) (set 2)", - "m4madhse__b", "Mad House (Barcrest) (MPU4) (set 3)", - "m4madhse__c", "Mad House (Barcrest) (MPU4) (set 4)", - "m4madhse__d", "Mad House (Barcrest) (MPU4) (set 5)", - "m4madhse__e", "Mad House (Barcrest) (MPU4) (set 6)", - "m4madhse__f", "Mad House (Barcrest) (MPU4) (set 7)", - "m4madhse__g", "Mad House (Barcrest) (MPU4) (set 8)", - "m4madhse__h", "Mad House (Barcrest) (MPU4) (set 9)", - "m4madhse__i", "Mad House (Barcrest) (MPU4) (set 10)", - "m4madhse__j", "Mad House (Barcrest) (MPU4) (set 11)", - "m4madhse__k", "Mad House (Barcrest) (MPU4) (set 12)", - "m4madhse__l", "Mad House (Barcrest) (MPU4) (set 13)", - "m4madhse__m", "Mad House (Barcrest) (MPU4) (set 14)", - "m4madhse__n", "Mad House (Barcrest) (MPU4) (set 15)", - "m4madhse__o", "Mad House (Barcrest) (MPU4) (set 16)", - "m4madhse__p", "Mad House (Barcrest) (MPU4) (set 17)", - "m4madhse__q", "Mad House (Barcrest) (MPU4) (set 18)", - "m4madhse__r", "Mad House (Barcrest) (MPU4) (set 19)", - "m4madhse__s", "Mad House (Barcrest) (MPU4) (set 20)", - "m4madhse__t", "Mad House (Barcrest) (MPU4) (set 21)", - "m4madhse__u", "Mad House (Barcrest) (MPU4) (set 22)", - "m4madhse__v", "Mad House (Barcrest) (MPU4) (set 23)", - "m4madhse__w", "Mad House (Barcrest) (MPU4) (set 24)", - "m4madhse__x", "Mad House (Barcrest) (MPU4) (set 25)", - "m4madhse__y", "Mad House (Barcrest) (MPU4) (set 26)", - "m4madhse__z", "Mad House (Barcrest) (MPU4) (set 27)", - "m4madmnc", "Mad Money Classic (Bwb) (MPU4) (set 1)", - "m4madmnc__a", "Mad Money Classic (Bwb) (MPU4) (set 2)", - "m4madmnc__b", "Mad Money Classic (Bwb) (MPU4) (set 3)", - "m4madmnc__c", "Mad Money Classic (Bwb) (MPU4) (set 4)", - "m4madmnc__d", "Mad Money Classic (Bwb) (MPU4) (set 5)", - "m4madmnc__e", "Mad Money Classic (Bwb) (MPU4) (set 6)", - "m4madmnc__f", "Mad Money Classic (Bwb) (MPU4) (set 7)", - "m4madmnc__g", "Mad Money Classic (Bwb) (MPU4) (set 8)", - "m4madmnc__h", "Mad Money Classic (Bwb) (MPU4) (set 9)", - "m4madmnc__i", "Mad Money Classic (Bwb) (MPU4) (set 10)", - "m4madmnc__j", "Mad Money Classic (Bwb) (MPU4) (set 11)", - "m4madmnc__k", "Mad Money Classic (Bwb) (MPU4) (set 12)", - "m4madmnc__l", "Mad Money Classic (Bwb) (MPU4) (set 13)", - "m4madmnc__m", "Mad Money Classic (Bwb) (MPU4) (set 14)", - "m4madmnc__n", "Mad Money Classic (Bwb) (MPU4) (set 15)", - "m4madmnc__o", "Mad Money Classic (Bwb) (MPU4) (set 16)", - "m4madmnc__p", "Mad Money Classic (Bwb) (MPU4) (set 17)", - "m4madmnc__q", "Mad Money Classic (Bwb) (MPU4) (set 18)", - "m4madmnc__r", "Mad Money Classic (Bwb) (MPU4) (set 19)", - "m4madmnc__s", "Mad Money Classic (Bwb) (MPU4) (set 20)", - "m4madmnc__t", "Mad Money Classic (Bwb) (MPU4) (set 21)", - "m4madmnc__u", "Mad Money Classic (Bwb) (MPU4) (set 22)", - "m4madmnc__v", "Mad Money Classic (Bwb) (MPU4) (set 23)", - "m4madmnc__w", "Mad Money Classic (Bwb) (MPU4) (set 24)", - "m4madmon", "Mad Money (Bwb) (MPU4) (set 1)", - "m4madmon__a", "Mad Money (Bwb) (MPU4) (set 2)", - "m4madmon__b", "Mad Money (Bwb) (MPU4) (set 3)", - "m4madmon__c", "Mad Money (Bwb) (MPU4) (set 4)", - "m4madmon__d", "Mad Money (Bwb) (MPU4) (set 5)", - "m4madmon__e", "Mad Money (Bwb) (MPU4) (set 6)", - "m4madmon__f", "Mad Money (Bwb) (MPU4) (set 7)", - "m4madmon__g", "Mad Money (Bwb) (MPU4) (set 8)", - "m4madmon__h", "Mad Money (Bwb) (MPU4) (set 9)", - "m4madmon__i", "Mad Money (Bwb) (MPU4) (set 10)", - "m4madmon__j", "Mad Money (Bwb) (MPU4) (set 11)", - "m4madmon__k", "Mad Money (Bwb) (MPU4) (set 12)", - "m4mag7s", "Magnificent 7s (Barcrest) (MPU4) (set 1)", - "m4mag7s__0", "Magnificent 7s (Barcrest) (MPU4) (set 28)", - "m4mag7s__1", "Magnificent 7s (Barcrest) (MPU4) (set 29)", - "m4mag7s__2", "Magnificent 7s (Barcrest) (MPU4) (set 30)", - "m4mag7s__3", "Magnificent 7s (Barcrest) (MPU4) (set 31)", - "m4mag7s__4", "Magnificent 7s (Barcrest) (MPU4) (set 32)", - "m4mag7s__5", "Magnificent 7s (Barcrest) (MPU4) (set 33)", - "m4mag7s__6", "Magnificent 7s (Barcrest) (MPU4) (set 34)", - "m4mag7s__7", "Magnificent 7s (Barcrest) (MPU4) (set 35)", - "m4mag7s__8", "Magnificent 7s (Barcrest) (MPU4) (set 36)", - "m4mag7s__9", "Magnificent 7s (Barcrest) (MPU4) (set 37)", - "m4mag7s__a", "Magnificent 7s (Barcrest) (MPU4) (set 2)", - "m4mag7s__aa", "Magnificent 7s (Barcrest) (MPU4) (set 38)", - "m4mag7s__ab", "Magnificent 7s (Barcrest) (MPU4) (set 39)", - "m4mag7s__ac", "Magnificent 7s (Barcrest) (MPU4) (set 40)", - "m4mag7s__ad", "Magnificent 7s (Barcrest) (MPU4) (set 41)", - "m4mag7s__ae", "Magnificent 7s (Barcrest) (MPU4) (set 42)", - "m4mag7s__af", "Magnificent 7s (Barcrest) (MPU4) (set 43)", - "m4mag7s__ag", "Magnificent 7s (Barcrest) (MPU4) (set 44)", - "m4mag7s__ah", "Magnificent 7s (Barcrest) (MPU4) (set 45)", - "m4mag7s__ai", "Magnificent 7s (Barcrest) (MPU4) (set 46)", - "m4mag7s__aj", "Magnificent 7s (Barcrest) (MPU4) (set 47)", - "m4mag7s__ak", "Magnificent 7s (Barcrest) (MPU4) (set 48)", - "m4mag7s__al", "Magnificent 7s (Barcrest) (MPU4) (set 49)", - "m4mag7s__am", "Magnificent 7s (Barcrest) (MPU4) (set 50)", - "m4mag7s__an", "Magnificent 7s (Barcrest) (MPU4) (set 51)", - "m4mag7s__ao", "Magnificent 7s (Barcrest) (MPU4) (set 52)", - "m4mag7s__ap", "Magnificent 7s (Barcrest) (MPU4) (set 53)", - "m4mag7s__aq", "Magnificent 7s (Barcrest) (MPU4) (set 54)", - "m4mag7s__ar", "Magnificent 7s (Barcrest) (MPU4) (set 55)", - "m4mag7s__as", "Magnificent 7s (Barcrest) (MPU4) (set 56)", - "m4mag7s__at", "Magnificent 7s (Barcrest) (MPU4) (set 57)", - "m4mag7s__au", "Magnificent 7s (Barcrest) (MPU4) (set 58)", - "m4mag7s__av", "Magnificent 7s (Barcrest) (MPU4) (set 59)", - "m4mag7s__aw", "Magnificent 7s (Barcrest) (MPU4) (set 60)", - "m4mag7s__ax", "Magnificent 7s (Barcrest) (MPU4) (set 61)", - "m4mag7s__b", "Magnificent 7s (Barcrest) (MPU4) (set 3)", - "m4mag7s__c", "Magnificent 7s (Barcrest) (MPU4) (set 4)", - "m4mag7s__d", "Magnificent 7s (Barcrest) (MPU4) (set 5)", - "m4mag7s__e", "Magnificent 7s (Barcrest) (MPU4) (set 6)", - "m4mag7s__f", "Magnificent 7s (Barcrest) (MPU4) (set 7)", - "m4mag7s__g", "Magnificent 7s (Barcrest) (MPU4) (set 8)", - "m4mag7s__h", "Magnificent 7s (Barcrest) (MPU4) (set 9)", - "m4mag7s__i", "Magnificent 7s (Barcrest) (MPU4) (set 10)", - "m4mag7s__j", "Magnificent 7s (Barcrest) (MPU4) (set 11)", - "m4mag7s__k", "Magnificent 7s (Barcrest) (MPU4) (set 12)", - "m4mag7s__l", "Magnificent 7s (Barcrest) (MPU4) (set 13)", - "m4mag7s__m", "Magnificent 7s (Barcrest) (MPU4) (set 14)", - "m4mag7s__n", "Magnificent 7s (Barcrest) (MPU4) (set 15)", - "m4mag7s__o", "Magnificent 7s (Barcrest) (MPU4) (set 16)", - "m4mag7s__p", "Magnificent 7s (Barcrest) (MPU4) (set 17)", - "m4mag7s__q", "Magnificent 7s (Barcrest) (MPU4) (set 18)", - "m4mag7s__r", "Magnificent 7s (Barcrest) (MPU4) (set 19)", - "m4mag7s__s", "Magnificent 7s (Barcrest) (MPU4) (set 20)", - "m4mag7s__t", "Magnificent 7s (Barcrest) (MPU4) (set 21)", - "m4mag7s__u", "Magnificent 7s (Barcrest) (MPU4) (set 22)", - "m4mag7s__v", "Magnificent 7s (Barcrest) (MPU4) (set 23)", - "m4mag7s__w", "Magnificent 7s (Barcrest) (MPU4) (set 24)", - "m4mag7s__x", "Magnificent 7s (Barcrest) (MPU4) (set 25)", - "m4mag7s__y", "Magnificent 7s (Barcrest) (MPU4) (set 26)", - "m4mag7s__z", "Magnificent 7s (Barcrest) (MPU4) (set 27)", - "m4magdrg", "Magic Dragon (Barcrest) (MPU4) (DMD1.0)", - "m4magi7", "Magic 7's (Crystal) (MPU4) (set 1)", - "m4magi7a", "Magic 7's (Crystal) (MPU4) (set 2)", - "m4maglin", "Magic Liner (Barcrest) (MPU4) (DMA2.1)", - "m4magrep", "Magic Replay (Barcrest) (Dutch) (MPU4)", - "m4magtbo", "Magic Turbo (Barcrest) (MPU4)", - "m4makmnt", "Make A Mint (Barcrest) (MPU4) (set 1)", - "m4makmnt__0", "Make A Mint (Barcrest) (MPU4) (set 28)", - "m4makmnt__1", "Make A Mint (Barcrest) (MPU4) (set 29)", - "m4makmnt__2", "Make A Mint (Barcrest) (MPU4) (set 30)", - "m4makmnt__3", "Make A Mint (Barcrest) (MPU4) (set 31)", - "m4makmnt__4", "Make A Mint (Barcrest) (MPU4) (set 32)", - "m4makmnt__5", "Make A Mint (Barcrest) (MPU4) (set 33)", - "m4makmnt__6", "Make A Mint (Barcrest) (MPU4) (set 34)", - "m4makmnt__7", "Make A Mint (Barcrest) (MPU4) (set 35)", - "m4makmnt__8", "Make A Mint (Barcrest) (MPU4) (set 36)", - "m4makmnt__9", "Make A Mint (Barcrest) (MPU4) (set 37)", - "m4makmnt__a", "Make A Mint (Barcrest) (MPU4) (set 2)", - "m4makmnt__aa", "Make A Mint (Barcrest) (MPU4) (set 38)", - "m4makmnt__ab", "Make A Mint (Barcrest) (MPU4) (set 39)", - "m4makmnt__ac", "Make A Mint (Barcrest) (MPU4) (set 40)", - "m4makmnt__ad", "Make A Mint (Barcrest) (MPU4) (set 41)", - "m4makmnt__ae", "Make A Mint (Barcrest) (MPU4) (set 42)", - "m4makmnt__af", "Make A Mint (Barcrest) (MPU4) (set 43)", - "m4makmnt__ag", "Make A Mint (Barcrest) (MPU4) (set 44)", - "m4makmnt__ah", "Make A Mint (Barcrest) (MPU4) (set 45)", - "m4makmnt__ai", "Make A Mint (Barcrest) (MPU4) (set 46)", - "m4makmnt__aj", "Make A Mint (Barcrest) (MPU4) (set 47)", - "m4makmnt__ak", "Make A Mint (Barcrest) (MPU4) (set 48)", - "m4makmnt__al", "Make A Mint (Barcrest) (MPU4) (set 49)", - "m4makmnt__am", "Make A Mint (Barcrest) (MPU4) (set 50)", - "m4makmnt__an", "Make A Mint (Barcrest) (MPU4) (set 51)", - "m4makmnt__ao", "Make A Mint (Barcrest) (MPU4) (set 52)", - "m4makmnt__ap", "Make A Mint (Barcrest) (MPU4) (set 53)", - "m4makmnt__aq", "Make A Mint (Barcrest) (MPU4) (set 54)", - "m4makmnt__ar", "Make A Mint (Barcrest) (MPU4) (set 55)", - "m4makmnt__as", "Make A Mint (Barcrest) (MPU4) (set 56)", - "m4makmnt__b", "Make A Mint (Barcrest) (MPU4) (set 3)", - "m4makmnt__c", "Make A Mint (Barcrest) (MPU4) (set 4)", - "m4makmnt__d", "Make A Mint (Barcrest) (MPU4) (set 5)", - "m4makmnt__e", "Make A Mint (Barcrest) (MPU4) (set 6)", - "m4makmnt__f", "Make A Mint (Barcrest) (MPU4) (set 7)", - "m4makmnt__g", "Make A Mint (Barcrest) (MPU4) (set 8)", - "m4makmnt__h", "Make A Mint (Barcrest) (MPU4) (set 9)", - "m4makmnt__i", "Make A Mint (Barcrest) (MPU4) (set 10)", - "m4makmnt__j", "Make A Mint (Barcrest) (MPU4) (set 11)", - "m4makmnt__k", "Make A Mint (Barcrest) (MPU4) (set 12)", - "m4makmnt__l", "Make A Mint (Barcrest) (MPU4) (set 13)", - "m4makmnt__m", "Make A Mint (Barcrest) (MPU4) (set 14)", - "m4makmnt__n", "Make A Mint (Barcrest) (MPU4) (set 15)", - "m4makmnt__o", "Make A Mint (Barcrest) (MPU4) (set 16)", - "m4makmnt__p", "Make A Mint (Barcrest) (MPU4) (set 17)", - "m4makmnt__q", "Make A Mint (Barcrest) (MPU4) (set 18)", - "m4makmnt__r", "Make A Mint (Barcrest) (MPU4) (set 19)", - "m4makmnt__s", "Make A Mint (Barcrest) (MPU4) (set 20)", - "m4makmnt__t", "Make A Mint (Barcrest) (MPU4) (set 21)", - "m4makmnt__u", "Make A Mint (Barcrest) (MPU4) (set 22)", - "m4makmnt__v", "Make A Mint (Barcrest) (MPU4) (set 23)", - "m4makmnt__w", "Make A Mint (Barcrest) (MPU4) (set 24)", - "m4makmnt__x", "Make A Mint (Barcrest) (MPU4) (set 25)", - "m4makmnt__y", "Make A Mint (Barcrest) (MPU4) (set 26)", - "m4makmnt__z", "Make A Mint (Barcrest) (MPU4) (set 27)", - "m4matdr", "Matador (unknown) (MPU4?)", - "m4maxmze", "Maximize (Union) (MPU4, set 1)", - "m4maxmzea", "Maximize (Union) (MPU4, set 2)", - "m4maxmzeb", "Maximize (Union) (MPU4, set 3)", - "m4maxmzec", "Maximize (Union) (MPU4, set 4)", - "m4maxmzed", "Maximize (Union) (MPU4, set 5)", - "m4mayhem", "Mayhem (Mdm) (MPU4, set 1)", - "m4mayhema", "Mayhem (Mdm) (MPU4, set 2)", - "m4mbel", "Millennium Bells (Avantime?) (MPU4) (set 1)", - "m4mbel__0", "Millennium Bells (Avantime?) (MPU4) (set 28)", - "m4mbel__1", "Millennium Bells (Avantime?) (MPU4) (set 29)", - "m4mbel__2", "Millennium Bells (Avantime?) (MPU4) (set 30)", - "m4mbel__3", "Millennium Bells (Avantime?) (MPU4) (set 31)", - "m4mbel__4", "Millennium Bells (Avantime?) (MPU4) (set 32)", - "m4mbel__5", "Millennium Bells (Avantime?) (MPU4) (set 33)", - "m4mbel__6", "Millennium Bells (Avantime?) (MPU4) (set 34)", - "m4mbel__7", "Millennium Bells (Avantime?) (MPU4) (set 35)", - "m4mbel__8", "Millennium Bells (Avantime?) (MPU4) (set 36)", - "m4mbel__9", "Millennium Bells (Avantime?) (MPU4) (set 37)", - "m4mbel__a", "Millennium Bells (Avantime?) (MPU4) (set 2)", - "m4mbel__a0", "Millennium Bells (Avantime?) (MPU4) (set 64)", - "m4mbel__aa", "Millennium Bells (Avantime?) (MPU4) (set 38)", - "m4mbel__ab", "Millennium Bells (Avantime?) (MPU4) (set 39)", - "m4mbel__ac", "Millennium Bells (Avantime?) (MPU4) (set 40)", - "m4mbel__ad", "Millennium Bells (Avantime?) (MPU4) (set 41)", - "m4mbel__ae", "Millennium Bells (Avantime?) (MPU4) (set 42)", - "m4mbel__af", "Millennium Bells (Avantime?) (MPU4) (set 43)", - "m4mbel__ag", "Millennium Bells (Avantime?) (MPU4) (set 44)", - "m4mbel__ah", "Millennium Bells (Avantime?) (MPU4) (set 45)", - "m4mbel__ai", "Millennium Bells (Avantime?) (MPU4) (set 46)", - "m4mbel__aj", "Millennium Bells (Avantime?) (MPU4) (set 47)", - "m4mbel__ak", "Millennium Bells (Avantime?) (MPU4) (set 48)", - "m4mbel__al", "Millennium Bells (Avantime?) (MPU4) (set 49)", - "m4mbel__am", "Millennium Bells (Avantime?) (MPU4) (set 50)", - "m4mbel__an", "Millennium Bells (Avantime?) (MPU4) (set 51)", - "m4mbel__ao", "Millennium Bells (Avantime?) (MPU4) (set 52)", - "m4mbel__ap", "Millennium Bells (Avantime?) (MPU4) (set 53)", - "m4mbel__aq", "Millennium Bells (Avantime?) (MPU4) (set 54)", - "m4mbel__ar", "Millennium Bells (Avantime?) (MPU4) (set 55)", - "m4mbel__as", "Millennium Bells (Avantime?) (MPU4) (set 56)", - "m4mbel__at", "Millennium Bells (Avantime?) (MPU4) (set 57)", - "m4mbel__au", "Millennium Bells (Avantime?) (MPU4) (set 58)", - "m4mbel__av", "Millennium Bells (Avantime?) (MPU4) (set 59)", - "m4mbel__aw", "Millennium Bells (Avantime?) (MPU4) (set 60)", - "m4mbel__ax", "Millennium Bells (Avantime?) (MPU4) (set 61)", - "m4mbel__ay", "Millennium Bells (Avantime?) (MPU4) (set 62)", - "m4mbel__az", "Millennium Bells (Avantime?) (MPU4) (set 63)", - "m4mbel__b", "Millennium Bells (Avantime?) (MPU4) (set 3)", - "m4mbel__c", "Millennium Bells (Avantime?) (MPU4) (set 4)", - "m4mbel__d", "Millennium Bells (Avantime?) (MPU4) (set 5)", - "m4mbel__e", "Millennium Bells (Avantime?) (MPU4) (set 6)", - "m4mbel__f", "Millennium Bells (Avantime?) (MPU4) (set 7)", - "m4mbel__g", "Millennium Bells (Avantime?) (MPU4) (set 8)", - "m4mbel__h", "Millennium Bells (Avantime?) (MPU4) (set 9)", - "m4mbel__i", "Millennium Bells (Avantime?) (MPU4) (set 10)", - "m4mbel__j", "Millennium Bells (Avantime?) (MPU4) (set 11)", - "m4mbel__k", "Millennium Bells (Avantime?) (MPU4) (set 12)", - "m4mbel__m", "Millennium Bells (Avantime?) (MPU4) (set 14)", - "m4mbel__n", "Millennium Bells (Avantime?) (MPU4) (set 15)", - "m4mbel__o", "Millennium Bells (Avantime?) (MPU4) (set 16)", - "m4mbel__p", "Millennium Bells (Avantime?) (MPU4) (set 17)", - "m4mbel__q", "Millennium Bells (Avantime?) (MPU4) (set 18)", - "m4mbel__r", "Millennium Bells (Avantime?) (MPU4) (set 19)", - "m4mbel__s", "Millennium Bells (Avantime?) (MPU4) (set 20)", - "m4mbel__t", "Millennium Bells (Avantime?) (MPU4) (set 21)", - "m4mbel__u", "Millennium Bells (Avantime?) (MPU4) (set 22)", - "m4mbel__v", "Millennium Bells (Avantime?) (MPU4) (set 23)", - "m4mbel__w", "Millennium Bells (Avantime?) (MPU4) (set 24)", - "m4mbel__x", "Millennium Bells (Avantime?) (MPU4) (set 25)", - "m4mbel__y", "Millennium Bells (Avantime?) (MPU4) (set 26)", - "m4mbel__z", "Millennium Bells (Avantime?) (MPU4) (set 27)", - "m4mecca", "Mecca Money (Union) (MPU4)", - "m4megbks", "Mega Bucks (Barcrest) (MPU4) (BUC 4.1X)", - "m4megbksa", "Mega Bucks (Barcrest) (MPU4) (BUC 4.1CX)", - "m4megbksb", "Mega Bucks (Barcrest) (MPU4) (BUC 4.1XD)", - "m4megbksc", "Mega Bucks (Barcrest) (MPU4) (BUC 3.1)", - "m4meglnk", "Megalink (Barcrest) (Dutch) (MPU4)", - "m4mgpn", "Monaco Grand Prix (Nova) (MPU4)", - "m4milclb", "Millionaire's Club (Barcrest) (MPU4) (set 1)", - "m4milclba", "Millionaire's Club (Barcrest) (MPU4) (set 2)", - "m4milclbb", "Millionaire's Club (Barcrest) (MPU4) (set 3)", - "m4milclbc", "Millionaire's Club (Barcrest) (MPU4) (set 4)", - "m4milclbd", "Millionaire's Club (Barcrest) (MPU4) (set 5)", - "m4milrou", "Millennium Roulette (Avantime?) (MPU4) (set 1)", - "m4milrou__a", "Millennium Roulette (Avantime?) (MPU4) (set 2)", - "m4mirage", "Mirage (Barcrest) (MPU4) (RAG 4.1)", - "m4mjp", "Mega Jackpot (Avantime?) (MPU4) (set 1)", - "m4mjp__a", "Mega Jackpot (Avantime?) (MPU4) (set 2)", - "m4mjp__b", "Mega Jackpot (Avantime?) (MPU4) (set 3)", - "m4mjp__c", "Mega Jackpot (Avantime?) (MPU4) (set 4)", - "m4mjp__d", "Mega Jackpot (Avantime?) (MPU4) (set 5)", - "m4mjp__e", "Mega Jackpot (Avantime?) (MPU4) (set 6)", - "m4mjp__f", "Mega Jackpot (Avantime?) (MPU4) (set 7)", - "m4mjp__g", "Mega Jackpot (Avantime?) (MPU4) (set 8)", - "m4mmm", "Money Mummy Money (Bwb) (MPU4) (set 1)", - "m4mmm__a", "Money Mummy Money (Bwb) (MPU4) (set 2)", - "m4mmm__b", "Money Mummy Money (Bwb) (MPU4) (set 3)", - "m4mmm__c", "Money Mummy Money (Bwb) (MPU4) (set 4)", - "m4mmm__d", "Money Mummy Money (Bwb) (MPU4) (set 5)", - "m4mmm__e", "Money Mummy Money (Bwb) (MPU4) (set 6)", - "m4mmm__f", "Money Mummy Money (Bwb) (MPU4) (set 7)", - "m4moneym", "Money Maker (Barcrest) (MPU4)", - "m4monspn", "Money Spinner (Empire) (MPU4, set 1)", - "m4monspna", "Money Spinner (Empire) (MPU4, set 2)", - "m4monspnb", "Money Spinner (Empire) (MPU4, set 3)", - "m4monte", "Monte Carlo (Barcrest) (MPU4) (set 1)", - "m4monte__a", "Monte Carlo (Barcrest) (MPU4) (set 2)", - "m4monte__b", "Monte Carlo (Barcrest) (MPU4) (set 3)", - "m4monte__c", "Monte Carlo (Barcrest) (MPU4) (set 4)", - "m4monte__d", "Monte Carlo (Barcrest) (MPU4) (set 5)", - "m4monte__e", "Monte Carlo (Barcrest) (MPU4) (set 6)", - "m4monte__f", "Monte Carlo (Barcrest) (MPU4) (set 7)", - "m4monte__g", "Monte Carlo (Barcrest) (MPU4) (set 8)", - "m4monte__h", "Monte Carlo (Barcrest) (MPU4) (set 9)", - "m4monte__i", "Monte Carlo (Barcrest) (MPU4) (set 10)", - "m4monte__j", "Monte Carlo (Barcrest) (MPU4) (set 11)", - "m4monte__k", "Monte Carlo (Barcrest) (MPU4) (set 12)", - "m4monte__l", "Monte Carlo (Barcrest) (MPU4) (set 13)", - "m4monte__m", "Monte Carlo (Barcrest) (MPU4) (set 14)", - "m4montrl", "Money Trail (Crystal) (MPU4) (set 1)", - "m4montrla", "Money Trail (Crystal) (MPU4) (set 2)", - "m4montrlb", "Money Trail (Crystal) (MPU4) (set 3)", - "m4montrlc", "Money Trail (Crystal) (MPU4) (set 4)", - "m4montrld", "Money Trail (Crystal) (MPU4) (set 5)", - "m4multcl", "Multiplay Club (Barcrest) (MPU4, MP 2.8)", - "m4multwy", "Multiway (Barcrest) (Dutch) (MPU4)", - "m4mystiq", "Mystique Club (Crystal) (MPU4) (set 1)", - "m4mystiqa", "Mystique Club (Crystal) (MPU4) (set 2)", - "m4mystiqb", "Mystique Club (Crystal) (MPU4) (set 3)", - "m4mystiqc", "Mystique Club (Crystal) (MPU4) (set 4)", - "m4ndup", "Nudge Double Up Deluxe (Crystal) (MPU4) (set 1)", - "m4ndupa", "Nudge Double Up Deluxe (Crystal) (MPU4) (set 2)", - "m4ndupb", "Nudge Double Up Deluxe (Crystal) (MPU4) (set 3)", - "m4ndupc", "Nudge Double Up Deluxe (Crystal) (MPU4) (set 4)", - "m4nhtt", "New Hit the Top (Barcrest) (MPU4) (set 1)", - "m4nhtt__a", "New Hit the Top (Barcrest) (MPU4) (set 2)", - "m4nhtt__b", "New Hit the Top (Barcrest) (MPU4) (set 3)", - "m4nhtt__c", "New Hit the Top (Barcrest) (MPU4) (set 4)", - "m4nhtt__d", "New Hit the Top (Barcrest) (MPU4) (set 5)", - "m4nhtt__e", "New Hit the Top (Barcrest) (MPU4) (set 6)", - "m4nhtt__f", "New Hit the Top (Barcrest) (MPU4) (set 7)", - "m4nhtt__g", "New Hit the Top (Barcrest) (MPU4) (set 8)", - "m4nhtt__h", "New Hit the Top (Barcrest) (MPU4) (set 9)", - "m4nhtt__i", "New Hit the Top (Barcrest) (MPU4) (set 10)", - "m4nhtt__j", "New Hit the Top (Barcrest) (MPU4) (set 11)", - "m4nick", "Nickelodeon (Barcrest) (MPU4) (set 1)", - "m4nicka", "Nickelodeon (Barcrest) (MPU4) (set 2)", - "m4nickb", "Nickelodeon (Barcrest) (MPU4) (set 3)", - "m4nickc", "Nickelodeon (Barcrest) (MPU4) (set 4)", - "m4nickd", "Nickelodeon (Barcrest) (MPU4) (set 5)", - "m4nicke", "Nickelodeon (Barcrest) (MPU4) (set 6)", - "m4nifty", "Nifty Fifty (Barcrest) (MPU4) (NF 2.0)", - "m4niftya", "Nifty Fifty (Barcrest) (MPU4) (NF 2.1, set 1)", - "m4niftyb", "Nifty Fifty (Barcrest) (MPU4) (NF 2.1, set 2)", - "m4nile", "Nile Jewels (Barcrest) (German) (MPU4) (GJN0.8)", - "m4nnww", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 1)", - "m4nnww__0", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 28)", - "m4nnww__1", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 29)", - "m4nnww__2", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 30)", - "m4nnww__3", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 31)", - "m4nnww__4", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 32)", - "m4nnww__5", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 33)", - "m4nnww__6", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 34)", - "m4nnww__7", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 35)", - "m4nnww__8", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 36)", - "m4nnww__9", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 37)", - "m4nnww__a", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 2)", - "m4nnww__aa", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 38)", - "m4nnww__ab", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 39)", - "m4nnww__ac", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 40)", - "m4nnww__ad", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 41)", - "m4nnww__ae", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 42)", - "m4nnww__af", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 43)", - "m4nnww__ag", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 44)", - "m4nnww__ah", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 45)", - "m4nnww__ai", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 46)", - "m4nnww__aj", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 47)", - "m4nnww__ak", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 48)", - "m4nnww__al", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 49)", - "m4nnww__am", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 50)", - "m4nnww__an", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 51)", - "m4nnww__ao", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 52)", - "m4nnww__ap", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 53)", - "m4nnww__aq", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 54)", - "m4nnww__ar", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 55)", - "m4nnww__as", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 56)", - "m4nnww__at", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 57)", - "m4nnww__au", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 58)", - "m4nnww__av", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 59)", - "m4nnww__aw", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 60)", - "m4nnww__ax", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 61)", - "m4nnww__ay", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 62)", - "m4nnww__az", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 63)", - "m4nnww__b", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 3)", - "m4nnww__c", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 4)", - "m4nnww__d", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 5)", - "m4nnww__e", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 6)", - "m4nnww__f", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 7)", - "m4nnww__g", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 8)", - "m4nnww__h", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 9)", - "m4nnww__i", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 10)", - "m4nnww__j", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 11)", - "m4nnww__k", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 12)", - "m4nnww__l", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 13)", - "m4nnww__m", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 14)", - "m4nnww__n", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 15)", - "m4nnww__o", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 16)", - "m4nnww__p", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 17)", - "m4nnww__q", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 18)", - "m4nnww__r", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 19)", - "m4nnww__s", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 20)", - "m4nnww__t", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 21)", - "m4nnww__u", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 22)", - "m4nnww__v", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 23)", - "m4nnww__w", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 24)", - "m4nnww__x", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 25)", - "m4nnww__y", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 26)", - "m4nnww__z", "Nudge Nudge Wink Wink (Barcrest) (MPU4) (set 27)", - "m4nnwwc", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 1)", - "m4nnwwc__0", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 28)", - "m4nnwwc__1", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 29)", - "m4nnwwc__2", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 30)", - "m4nnwwc__3", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 31)", - "m4nnwwc__4", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 32)", - "m4nnwwc__5", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 33)", - "m4nnwwc__6", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 34)", - "m4nnwwc__7", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 35)", - "m4nnwwc__8", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 36)", - "m4nnwwc__9", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 37)", - "m4nnwwc__a", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 2)", - "m4nnwwc__aa", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 38)", - "m4nnwwc__ab", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 39)", - "m4nnwwc__ac", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 40)", - "m4nnwwc__ad", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 41)", - "m4nnwwc__b", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 3)", - "m4nnwwc__c", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 4)", - "m4nnwwc__d", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 5)", - "m4nnwwc__e", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 6)", - "m4nnwwc__f", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 7)", - "m4nnwwc__g", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 8)", - "m4nnwwc__h", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 9)", - "m4nnwwc__i", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 10)", - "m4nnwwc__j", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 11)", - "m4nnwwc__k", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 12)", - "m4nnwwc__l", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 13)", - "m4nnwwc__m", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 14)", - "m4nnwwc__n", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 15)", - "m4nnwwc__o", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 16)", - "m4nnwwc__p", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 17)", - "m4nnwwc__q", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 18)", - "m4nnwwc__r", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 19)", - "m4nnwwc__s", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 20)", - "m4nnwwc__t", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 21)", - "m4nnwwc__u", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 22)", - "m4nnwwc__v", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 23)", - "m4nnwwc__w", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 24)", - "m4nnwwc__x", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 25)", - "m4nnwwc__y", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 26)", - "m4nnwwc__z", "Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (set 27)", - "m4nod", "Nod And A Wink (Eurotech) (MPU4)", - "m4nspot", "Night Spot Club (Barcrest) (MPU4) (set 1)", - "m4nspota", "Night Spot Club (Barcrest) (MPU4) (set 2)", - "m4nspotb", "Night Spot Club (Barcrest) (MPU4) (set 3)", - "m4nud2p", "2p Nudger (Mdm?) (MPU4)", - "m4nudbnk", "Nudge Banker (Barcrest) (MPU4) (set 1)", - "m4nudbnk__a", "Nudge Banker (Barcrest) (MPU4) (set 2)", - "m4nudbnk__b", "Nudge Banker (Barcrest) (MPU4) (set 3)", - "m4nudbnk__c", "Nudge Banker (Barcrest) (MPU4) (set 4)", - "m4nudbnk__d", "Nudge Banker (Barcrest) (MPU4) (set 5)", - "m4nudbon", "Nudge Bonanza (Mdm) (MPU4, set 1)", - "m4nudbona", "Nudge Bonanza (Mdm) (MPU4, set 2)", - "m4nudgem", "Nudge Gems (Mdm) (MPU4)", - "m4nudgwc", "Nudge-A-Win (Concept Games Ltd) (MPU4) (set 1)", - "m4nudgwc__a", "Nudge-A-Win (Concept Games Ltd) (MPU4) (set 2)", - "m4nudgwc__b", "Nudge-A-Win (Concept Games Ltd) (MPU4) (set 3)", - "m4nudgwc__c", "Nudge-A-Win (Concept Games Ltd) (MPU4) (set 4)", - "m4nudgwc__d", "Nudge-A-Win (Concept Games Ltd) (MPU4) (set 5)", - "m4nudgwc__e", "Nudge-A-Win (Concept Games Ltd) (MPU4) (set 6)", - "m4nudgwc__f", "Nudge-A-Win (Concept Games Ltd) (MPU4) (set 7)", - "m4nudgwc__g", "Nudge-A-Win (Concept Games Ltd) (MPU4) (set 8)", - "m4nudgwc__h", "Nudge-A-Win (Concept Games Ltd) (MPU4) (set 9)", - "m4nudqst", "Nudge Quest (Barcrest) (MPU4) (NQ 2.0)", - "m4nudshf", "Nudge Shuffle (Barcrest) (MPU4) (set 1)", - "m4nudshfa", "Nudge Shuffle (Barcrest) (MPU4) (set 2)", - "m4nudshfb", "Nudge Shuffle (Barcrest) (MPU4) (set 3)", - "m4nudshfc", "Nudge Shuffle (Barcrest) (MPU4) (set 4)", - "m4nudup", "Nudge Up (Barcrest) (Dutch) (MPU4)", - "m4nudwin", "Nudge & Win (Crystal) (MPU4) (set 1)", - "m4nudwina", "Nudge & Win (Crystal) (MPU4) (set 2)", - "m4num1", "Number One (Barcrest) (Dutch) (MPU4)", - "m4oadrac", "Ooh Aah Dracula (Barcrest) (MPU4) (set 1)", - "m4oadrac__a", "Ooh Aah Dracula (Barcrest) (MPU4) (set 2)", - "m4oadrac__b", "Ooh Aah Dracula (Barcrest) (MPU4) (set 3)", - "m4oadrac__c", "Ooh Aah Dracula (Barcrest) (MPU4) (set 4)", - "m4oadrac__d", "Ooh Aah Dracula (Barcrest) (MPU4) (set 5)", - "m4oadrac__e", "Ooh Aah Dracula (Barcrest) (MPU4) (set 6)", - "m4oadrac__f", "Ooh Aah Dracula (Barcrest) (MPU4) (set 7)", - "m4oadrac__g", "Ooh Aah Dracula (Barcrest) (MPU4) (set 8)", - "m4oadrac__h", "Ooh Aah Dracula (Barcrest) (MPU4) (set 9)", - "m4octo", "Octopus (Nova) (MPU4)", - "m4oldtmr", "Old Timer (Barcrest) (Dutch) (MPU4) (DOT1.1)", - "m4olygn", "Olympic Gold (German) (Nova) (MPU4) (set 1)", - "m4olygn__a", "Olympic Gold (German) (Nova) (MPU4) (set 2)", - "m4omega", "Omega (Barcrest) (Dutch) (MPU4)", - "m4ordmnd", "Oriental Diamonds (Barcrest) (German) (MPU4)", - "m4orland", "Orlando Magic (Bwb) (MPU4) (set 1)", - "m4orland__a", "Orlando Magic (Bwb) (MPU4) (set 2)", - "m4orland__b", "Orlando Magic (Bwb) (MPU4) (set 3)", - "m4orland__c", "Orlando Magic (Bwb) (MPU4) (set 4)", - "m4orland__d", "Orlando Magic (Bwb) (MPU4) (set 5)", - "m4orland__e", "Orlando Magic (Bwb) (MPU4) (set 6)", - "m4orland__f", "Orlando Magic (Bwb) (MPU4) (set 7)", - "m4orland__g", "Orlando Magic (Bwb) (MPU4) (set 8)", - "m4orland__h", "Orlando Magic (Bwb) (MPU4) (set 9)", - "m4overmn", "Over The Moon (Barcrest) (MPU4) (set 1)", - "m4overmn__0", "Over The Moon (Barcrest) (MPU4) (set 28)", - "m4overmn__1", "Over The Moon (Barcrest) (MPU4) (set 29)", - "m4overmn__2", "Over The Moon (Barcrest) (MPU4) (set 30)", - "m4overmn__3", "Over The Moon (Barcrest) (MPU4) (set 31)", - "m4overmn__4", "Over The Moon (Barcrest) (MPU4) (set 32)", - "m4overmn__5", "Over The Moon (Barcrest) (MPU4) (set 33)", - "m4overmn__6", "Over The Moon (Barcrest) (MPU4) (set 34)", - "m4overmn__7", "Over The Moon (Barcrest) (MPU4) (set 35)", - "m4overmn__8", "Over The Moon (Barcrest) (MPU4) (set 36)", - "m4overmn__a", "Over The Moon (Barcrest) (MPU4) (set 2)", - "m4overmn__b", "Over The Moon (Barcrest) (MPU4) (set 3)", - "m4overmn__c", "Over The Moon (Barcrest) (MPU4) (set 4)", - "m4overmn__d", "Over The Moon (Barcrest) (MPU4) (set 5)", - "m4overmn__e", "Over The Moon (Barcrest) (MPU4) (set 6)", - "m4overmn__f", "Over The Moon (Barcrest) (MPU4) (set 7)", - "m4overmn__g", "Over The Moon (Barcrest) (MPU4) (set 8)", - "m4overmn__h", "Over The Moon (Barcrest) (MPU4) (set 9)", - "m4overmn__i", "Over The Moon (Barcrest) (MPU4) (set 10)", - "m4overmn__j", "Over The Moon (Barcrest) (MPU4) (set 11)", - "m4overmn__k", "Over The Moon (Barcrest) (MPU4) (set 12)", - "m4overmn__l", "Over The Moon (Barcrest) (MPU4) (set 13)", - "m4overmn__m", "Over The Moon (Barcrest) (MPU4) (set 14)", - "m4overmn__n", "Over The Moon (Barcrest) (MPU4) (set 15)", - "m4overmn__o", "Over The Moon (Barcrest) (MPU4) (set 16)", - "m4overmn__p", "Over The Moon (Barcrest) (MPU4) (set 17)", - "m4overmn__q", "Over The Moon (Barcrest) (MPU4) (set 18)", - "m4overmn__r", "Over The Moon (Barcrest) (MPU4) (set 19)", - "m4overmn__s", "Over The Moon (Barcrest) (MPU4) (set 20)", - "m4overmn__t", "Over The Moon (Barcrest) (MPU4) (set 21)", - "m4overmn__u", "Over The Moon (Barcrest) (MPU4) (set 22)", - "m4overmn__v", "Over The Moon (Barcrest) (MPU4) (set 23)", - "m4overmn__w", "Over The Moon (Barcrest) (MPU4) (set 24)", - "m4overmn__x", "Over The Moon (Barcrest) (MPU4) (set 25)", - "m4overmn__y", "Over The Moon (Barcrest) (MPU4) (set 26)", - "m4overmn__z", "Over The Moon (Barcrest) (MPU4) (set 27)", - "m4paracl", "Paradise Club (Crystal) (MPU4) (set 1)", - "m4paracla", "Paradise Club (Crystal) (MPU4) (set 2)", - "m4pbnudg", "Pinball Nudger (Empire) (MPU4, set 1)", - "m4pbnudga", "Pinball Nudger (Empire) (MPU4, set 2)", - "m4pbnudgb", "Pinball Nudger (Empire) (MPU4, set 3)", - "m4pick", "Pick A Fruit (JPM) (MPU4)", - "m4pitfal", "Pitfall (Empire) (MPU4, set 1)", - "m4pitfala", "Pitfall (Empire) (MPU4, set 2)", - "m4pitfalb", "Pitfall (Empire) (MPU4, set 3)", - "m4pitfalc", "Pitfall (Empire) (MPU4, set 4)", - "m4placbt", "Place Your Bets (Barcrest) (MPU4) (set 1)", - "m4placbt__0", "Place Your Bets (Barcrest) (MPU4) (set 28)", - "m4placbt__1", "Place Your Bets (Barcrest) (MPU4) (set 29)", - "m4placbt__2", "Place Your Bets (Barcrest) (MPU4) (set 30)", - "m4placbt__3", "Place Your Bets (Barcrest) (MPU4) (set 31)", - "m4placbt__4", "Place Your Bets (Barcrest) (MPU4) (set 32)", - "m4placbt__5", "Place Your Bets (Barcrest) (MPU4) (set 33)", - "m4placbt__6", "Place Your Bets (Barcrest) (MPU4) (set 34)", - "m4placbt__7", "Place Your Bets (Barcrest) (MPU4) (set 35)", - "m4placbt__8", "Place Your Bets (Barcrest) (MPU4) (set 36)", - "m4placbt__9", "Place Your Bets (Barcrest) (MPU4) (set 37)", - "m4placbt__a", "Place Your Bets (Barcrest) (MPU4) (set 2)", - "m4placbt__aa", "Place Your Bets (Barcrest) (MPU4) (set 38)", - "m4placbt__ab", "Place Your Bets (Barcrest) (MPU4) (set 39)", - "m4placbt__ac", "Place Your Bets (Barcrest) (MPU4) (set 40)", - "m4placbt__ad", "Place Your Bets (Barcrest) (MPU4) (set 41)", - "m4placbt__ae", "Place Your Bets (Barcrest) (MPU4) (set 42)", - "m4placbt__af", "Place Your Bets (Barcrest) (MPU4) (set 43)", - "m4placbt__ag", "Place Your Bets (Barcrest) (MPU4) (set 44)", - "m4placbt__ah", "Place Your Bets (Barcrest) (MPU4) (set 45)", - "m4placbt__ai", "Place Your Bets (Barcrest) (MPU4) (set 46)", - "m4placbt__aj", "Place Your Bets (Barcrest) (MPU4) (set 47)", - "m4placbt__ak", "Place Your Bets (Barcrest) (MPU4) (set 48)", - "m4placbt__al", "Place Your Bets (Barcrest) (MPU4) (set 49)", - "m4placbt__am", "Place Your Bets (Barcrest) (MPU4) (set 50)", - "m4placbt__an", "Place Your Bets (Barcrest) (MPU4) (set 51)", - "m4placbt__ao", "Place Your Bets (Barcrest) (MPU4) (set 52)", - "m4placbt__b", "Place Your Bets (Barcrest) (MPU4) (set 3)", - "m4placbt__c", "Place Your Bets (Barcrest) (MPU4) (set 4)", - "m4placbt__d", "Place Your Bets (Barcrest) (MPU4) (set 5)", - "m4placbt__e", "Place Your Bets (Barcrest) (MPU4) (set 6)", - "m4placbt__f", "Place Your Bets (Barcrest) (MPU4) (set 7)", - "m4placbt__g", "Place Your Bets (Barcrest) (MPU4) (set 8)", - "m4placbt__h", "Place Your Bets (Barcrest) (MPU4) (set 9)", - "m4placbt__i", "Place Your Bets (Barcrest) (MPU4) (set 10)", - "m4placbt__j", "Place Your Bets (Barcrest) (MPU4) (set 11)", - "m4placbt__k", "Place Your Bets (Barcrest) (MPU4) (set 12)", - "m4placbt__l", "Place Your Bets (Barcrest) (MPU4) (set 13)", - "m4placbt__m", "Place Your Bets (Barcrest) (MPU4) (set 14)", - "m4placbt__n", "Place Your Bets (Barcrest) (MPU4) (set 15)", - "m4placbt__o", "Place Your Bets (Barcrest) (MPU4) (set 16)", - "m4placbt__p", "Place Your Bets (Barcrest) (MPU4) (set 17)", - "m4placbt__q", "Place Your Bets (Barcrest) (MPU4) (set 18)", - "m4placbt__r", "Place Your Bets (Barcrest) (MPU4) (set 19)", - "m4placbt__s", "Place Your Bets (Barcrest) (MPU4) (set 20)", - "m4placbt__t", "Place Your Bets (Barcrest) (MPU4) (set 21)", - "m4placbt__u", "Place Your Bets (Barcrest) (MPU4) (set 22)", - "m4placbt__v", "Place Your Bets (Barcrest) (MPU4) (set 23)", - "m4placbt__w", "Place Your Bets (Barcrest) (MPU4) (set 24)", - "m4placbt__x", "Place Your Bets (Barcrest) (MPU4) (set 25)", - "m4placbt__y", "Place Your Bets (Barcrest) (MPU4) (set 26)", - "m4placbt__z", "Place Your Bets (Barcrest) (MPU4) (set 27)", - "m4pont", "Pontoon Club (Barcrest) (MPU4) (PON 3.0)", - "m4ponta", "Pontoon Club (Barcrest) (MPU4) (PON 4.0)", - "m4potblk", "Pot Black (Barcrest) (MPU4) (set 1)", - "m4potblk__0", "Pot Black (Barcrest) (MPU4) (set 28)", - "m4potblk__1", "Pot Black (Barcrest) (MPU4) (set 29)", - "m4potblk__2", "Pot Black (Barcrest) (MPU4) (set 30)", - "m4potblk__3", "Pot Black (Barcrest) (MPU4) (set 31)", - "m4potblk__4", "Pot Black (Barcrest) (MPU4) (set 32)", - "m4potblk__5", "Pot Black (Barcrest) (MPU4) (set 33)", - "m4potblk__6", "Pot Black (Barcrest) (MPU4) (set 34)", - "m4potblk__7", "Pot Black (Barcrest) (MPU4) (set 35)", - "m4potblk__8", "Pot Black (Barcrest) (MPU4) (set 36)", - "m4potblk__9", "Pot Black (Barcrest) (MPU4) (set 37)", - "m4potblk__a", "Pot Black (Barcrest) (MPU4) (set 2)", - "m4potblk__aa", "Pot Black (Barcrest) (MPU4) (set 38)", - "m4potblk__ab", "Pot Black (Barcrest) (MPU4) (set 39)", - "m4potblk__ac", "Pot Black (Barcrest) (MPU4) (set 40)", - "m4potblk__ad", "Pot Black (Barcrest) (MPU4) (set 41)", - "m4potblk__ae", "Pot Black (Barcrest) (MPU4) (set 42)", - "m4potblk__af", "Pot Black (Barcrest) (MPU4) (set 43)", - "m4potblk__ag", "Pot Black (Barcrest) (MPU4) (set 44)", - "m4potblk__ah", "Pot Black (Barcrest) (MPU4) (set 45)", - "m4potblk__ai", "Pot Black (Barcrest) (MPU4) (set 46)", - "m4potblk__aj", "Pot Black (Barcrest) (MPU4) (set 47)", - "m4potblk__ak", "Pot Black (Barcrest) (MPU4) (set 48)", - "m4potblk__al", "Pot Black (Barcrest) (MPU4) (set 49)", - "m4potblk__am", "Pot Black (Barcrest) (MPU4) (set 50)", - "m4potblk__an", "Pot Black (Barcrest) (MPU4) (set 51)", - "m4potblk__ao", "Pot Black (Barcrest) (MPU4) (set 52)", - "m4potblk__ap", "Pot Black (Barcrest) (MPU4) (set 53)", - "m4potblk__aq", "Pot Black (Barcrest) (MPU4) (set 54)", - "m4potblk__ar", "Pot Black (Barcrest) (MPU4) (set 55)", - "m4potblk__as", "Pot Black (Barcrest) (MPU4) (set 56)", - "m4potblk__at", "Pot Black (Barcrest) (MPU4) (set 57)", - "m4potblk__au", "Pot Black (Barcrest) (MPU4) (set 58)", - "m4potblk__av", "Pot Black (Barcrest) (MPU4) (set 59)", - "m4potblk__aw", "Pot Black (Barcrest) (MPU4) (set 60)", - "m4potblk__ax", "Pot Black (Barcrest) (MPU4) (set 61)", - "m4potblk__b", "Pot Black (Barcrest) (MPU4) (set 3)", - "m4potblk__c", "Pot Black (Barcrest) (MPU4) (set 4)", - "m4potblk__d", "Pot Black (Barcrest) (MPU4) (set 5)", - "m4potblk__e", "Pot Black (Barcrest) (MPU4) (set 6)", - "m4potblk__f", "Pot Black (Barcrest) (MPU4) (set 7)", - "m4potblk__g", "Pot Black (Barcrest) (MPU4) (set 8)", - "m4potblk__h", "Pot Black (Barcrest) (MPU4) (set 9)", - "m4potblk__i", "Pot Black (Barcrest) (MPU4) (set 10)", - "m4potblk__j", "Pot Black (Barcrest) (MPU4) (set 11)", - "m4potblk__k", "Pot Black (Barcrest) (MPU4) (set 12)", - "m4potblk__l", "Pot Black (Barcrest) (MPU4) (set 13)", - "m4potblk__m", "Pot Black (Barcrest) (MPU4) (set 14)", - "m4potblk__n", "Pot Black (Barcrest) (MPU4) (set 15)", - "m4potblk__o", "Pot Black (Barcrest) (MPU4) (set 16)", - "m4potblk__p", "Pot Black (Barcrest) (MPU4) (set 17)", - "m4potblk__q", "Pot Black (Barcrest) (MPU4) (set 18)", - "m4potblk__r", "Pot Black (Barcrest) (MPU4) (set 19)", - "m4potblk__s", "Pot Black (Barcrest) (MPU4) (set 20)", - "m4potblk__t", "Pot Black (Barcrest) (MPU4) (set 21)", - "m4potblk__u", "Pot Black (Barcrest) (MPU4) (set 22)", - "m4potblk__v", "Pot Black (Barcrest) (MPU4) (set 23)", - "m4potblk__w", "Pot Black (Barcrest) (MPU4) (set 24)", - "m4potblk__x", "Pot Black (Barcrest) (MPU4) (set 25)", - "m4potblk__y", "Pot Black (Barcrest) (MPU4) (set 26)", - "m4potblk__z", "Pot Black (Barcrest) (MPU4) (set 27)", - "m4potlck", "Pot Luck 100 Club (Barcrest) (MPU4) (P1L 2.2)", - "m4potlcka", "Pot Luck 100 Club (Barcrest) (MPU4) (PL 2.7)", - "m4prem", "Premier (Barcrest) (MPU4) (DPM)", - "m4przdty", "Prize Duty Free (Barcrest) (MPU4) (set 1)", - "m4przdty__a", "Prize Duty Free (Barcrest) (MPU4) (set 2)", - "m4przdty__b", "Prize Duty Free (Barcrest) (MPU4) (set 3)", - "m4przdty__c", "Prize Duty Free (Barcrest) (MPU4) (set 4)", - "m4przdty__d", "Prize Duty Free (Barcrest) (MPU4) (set 5)", - "m4przdty__e", "Prize Duty Free (Barcrest) (MPU4) (set 6)", - "m4przdty__f", "Prize Duty Free (Barcrest) (MPU4) (set 7)", - "m4przdty__g", "Prize Duty Free (Barcrest) (MPU4) (set 8)", - "m4przdty__h", "Prize Duty Free (Barcrest) (MPU4) (set 9)", - "m4przdty__i", "Prize Duty Free (Barcrest) (MPU4) (set 10)", - "m4przdty__j", "Prize Duty Free (Barcrest) (MPU4) (set 11)", - "m4przdty__k", "Prize Duty Free (Barcrest) (MPU4) (set 12)", - "m4przdty__l", "Prize Duty Free (Barcrest) (MPU4) (set 13)", - "m4przdty__m", "Prize Duty Free (Barcrest) (MPU4) (set 14)", - "m4przdty__n", "Prize Duty Free (Barcrest) (MPU4) (set 15)", - "m4przdty__o", "Prize Duty Free (Barcrest) (MPU4) (set 16)", - "m4przdty__p", "Prize Duty Free (Barcrest) (MPU4) (set 17)", - "m4przfrt", "Prize Fruit & Loot (Barcrest) (MPU4) (set 1)", - "m4przfrt__a", "Prize Fruit & Loot (Barcrest) (MPU4) (set 2)", - "m4przfrt__b", "Prize Fruit & Loot (Barcrest) (MPU4) (set 3)", - "m4przfrt__c", "Prize Fruit & Loot (Barcrest) (MPU4) (set 4)", - "m4przfrt__d", "Prize Fruit & Loot (Barcrest) (MPU4) (set 5)", - "m4przfrt__e", "Prize Fruit & Loot (Barcrest) (MPU4) (set 6)", - "m4przfrt__f", "Prize Fruit & Loot (Barcrest) (MPU4) (set 7)", - "m4przfrt__g", "Prize Fruit & Loot (Barcrest) (MPU4) (set 8)", - "m4przfrt__h", "Prize Fruit & Loot (Barcrest) (MPU4) (set 9)", - "m4przfrt__i", "Prize Fruit & Loot (Barcrest) (MPU4) (set 10)", - "m4przfrt__j", "Prize Fruit & Loot (Barcrest) (MPU4) (set 11)", - "m4przfrt__k", "Prize Fruit & Loot (Barcrest) (MPU4) (set 12)", - "m4przfrt__l", "Prize Fruit & Loot (Barcrest) (MPU4) (set 13)", - "m4przhr", "Prize High Roller (Barcrest) (MPU4) (set 1)", - "m4przhr__a", "Prize High Roller (Barcrest) (MPU4) (set 2)", - "m4przhr__b", "Prize High Roller (Barcrest) (MPU4) (set 3)", - "m4przhr__c", "Prize High Roller (Barcrest) (MPU4) (set 4)", - "m4przhr__d", "Prize High Roller (Barcrest) (MPU4) (set 5)", - "m4przhr__e", "Prize High Roller (Barcrest) (MPU4) (set 6)", - "m4przhr__f", "Prize High Roller (Barcrest) (MPU4) (set 7)", - "m4przhr__g", "Prize High Roller (Barcrest) (MPU4) (set 8)", - "m4przhr__h", "Prize High Roller (Barcrest) (MPU4) (set 9)", - "m4przhr__i", "Prize High Roller (Barcrest) (MPU4) (set 10)", - "m4przhr__j", "Prize High Roller (Barcrest) (MPU4) (set 11)", - "m4przhr__k", "Prize High Roller (Barcrest) (MPU4) (set 12)", - "m4przhr__l", "Prize High Roller (Barcrest) (MPU4) (set 13)", - "m4przhr__m", "Prize High Roller (Barcrest) (MPU4) (set 14)", - "m4przhr__n", "Prize High Roller (Barcrest) (MPU4) (set 15)", - "m4przhr__o", "Prize High Roller (Barcrest) (MPU4) (set 16)", - "m4przhr__p", "Prize High Roller (Barcrest) (MPU4) (set 17)", - "m4przlux", "Prize Luxor (Barcrest) (MPU4) (set 1)", - "m4przlux__a", "Prize Luxor (Barcrest) (MPU4) (set 2)", - "m4przlux__b", "Prize Luxor (Barcrest) (MPU4) (set 3)", - "m4przlux__c", "Prize Luxor (Barcrest) (MPU4) (set 4)", - "m4przlux__d", "Prize Luxor (Barcrest) (MPU4) (set 5)", - "m4przlux__e", "Prize Luxor (Barcrest) (MPU4) (set 6)", - "m4przlux__f", "Prize Luxor (Barcrest) (MPU4) (set 7)", - "m4przmc", "Prize Monte Carlo (Barcrest) (MPU4) (set 1)", - "m4przmc__a", "Prize Monte Carlo (Barcrest) (MPU4) (set 2)", - "m4przmc__b", "Prize Monte Carlo (Barcrest) (MPU4) (set 3)", - "m4przmc__c", "Prize Monte Carlo (Barcrest) (MPU4) (set 4)", - "m4przmc__d", "Prize Monte Carlo (Barcrest) (MPU4) (set 5)", - "m4przmc__e", "Prize Monte Carlo (Barcrest) (MPU4) (set 6)", - "m4przmc__f", "Prize Monte Carlo (Barcrest) (MPU4) (set 7)", - "m4przmns", "Prize Money Showcase (Barcrest) (MPU4) (set 1)", - "m4przmns__a", "Prize Money Showcase (Barcrest) (MPU4) (set 2)", - "m4przmns__b", "Prize Money Showcase (Barcrest) (MPU4) (set 3)", - "m4przmns__c", "Prize Money Showcase (Barcrest) (MPU4) (set 4)", - "m4przmns__d", "Prize Money Showcase (Barcrest) (MPU4) (set 5)", - "m4przmns__e", "Prize Money Showcase (Barcrest) (MPU4) (set 6)", - "m4przmns__f", "Prize Money Showcase (Barcrest) (MPU4) (set 7)", - "m4przmns__g", "Prize Money Showcase (Barcrest) (MPU4) (set 8)", - "m4przmns__h", "Prize Money Showcase (Barcrest) (MPU4) (set 9)", - "m4przmns__i", "Prize Money Showcase (Barcrest) (MPU4) (set 10)", - "m4przmns__j", "Prize Money Showcase (Barcrest) (MPU4) (set 11)", - "m4przmns__k", "Prize Money Showcase (Barcrest) (MPU4) (set 12)", - "m4przmns__l", "Prize Money Showcase (Barcrest) (MPU4) (set 13)", - "m4przmns__m", "Prize Money Showcase (Barcrest) (MPU4) (set 14)", - "m4przmns__n", "Prize Money Showcase (Barcrest) (MPU4) (set 15)", - "m4przmon", "Prize Money (Barcrest) (MPU4) (set 1)", - "m4przmon__0", "Prize Money (Barcrest) (MPU4) (set 28)", - "m4przmon__1", "Prize Money (Barcrest) (MPU4) (set 29)", - "m4przmon__a", "Prize Money (Barcrest) (MPU4) (set 2)", - "m4przmon__b", "Prize Money (Barcrest) (MPU4) (set 3)", - "m4przmon__c", "Prize Money (Barcrest) (MPU4) (set 4)", - "m4przmon__d", "Prize Money (Barcrest) (MPU4) (set 5)", - "m4przmon__e", "Prize Money (Barcrest) (MPU4) (set 6)", - "m4przmon__f", "Prize Money (Barcrest) (MPU4) (set 7)", - "m4przmon__g", "Prize Money (Barcrest) (MPU4) (set 8)", - "m4przmon__h", "Prize Money (Barcrest) (MPU4) (set 9)", - "m4przmon__i", "Prize Money (Barcrest) (MPU4) (set 10)", - "m4przmon__j", "Prize Money (Barcrest) (MPU4) (set 11)", - "m4przmon__k", "Prize Money (Barcrest) (MPU4) (set 12)", - "m4przmon__l", "Prize Money (Barcrest) (MPU4) (set 13)", - "m4przmon__m", "Prize Money (Barcrest) (MPU4) (set 14)", - "m4przmon__n", "Prize Money (Barcrest) (MPU4) (set 15)", - "m4przmon__o", "Prize Money (Barcrest) (MPU4) (set 16)", - "m4przmon__p", "Prize Money (Barcrest) (MPU4) (set 17)", - "m4przmon__q", "Prize Money (Barcrest) (MPU4) (set 18)", - "m4przmon__r", "Prize Money (Barcrest) (MPU4) (set 19)", - "m4przmon__s", "Prize Money (Barcrest) (MPU4) (set 20)", - "m4przmon__t", "Prize Money (Barcrest) (MPU4) (set 21)", - "m4przmon__u", "Prize Money (Barcrest) (MPU4) (set 22)", - "m4przmon__v", "Prize Money (Barcrest) (MPU4) (set 23)", - "m4przmon__w", "Prize Money (Barcrest) (MPU4) (set 24)", - "m4przmon__x", "Prize Money (Barcrest) (MPU4) (set 25)", - "m4przmon__y", "Prize Money (Barcrest) (MPU4) (set 26)", - "m4przmon__z", "Prize Money (Barcrest) (MPU4) (set 27)", - "m4przrf", "Prize Rich And Famous (Barcrest) (MPU4) (set 1)", - "m4przrf__a", "Prize Rich And Famous (Barcrest) (MPU4) (set 2)", - "m4przrf__b", "Prize Rich And Famous (Barcrest) (MPU4) (set 3)", - "m4przrf__c", "Prize Rich And Famous (Barcrest) (MPU4) (set 4)", - "m4przrf__d", "Prize Rich And Famous (Barcrest) (MPU4) (set 5)", - "m4przrf__e", "Prize Rich And Famous (Barcrest) (MPU4) (set 6)", - "m4przrf__f", "Prize Rich And Famous (Barcrest) (MPU4) (set 7)", - "m4przrf__g", "Prize Rich And Famous (Barcrest) (MPU4) (set 8)", - "m4przrf__h", "Prize Rich And Famous (Barcrest) (MPU4) (set 9)", - "m4przrf__i", "Prize Rich And Famous (Barcrest) (MPU4) (set 10)", - "m4przrf__j", "Prize Rich And Famous (Barcrest) (MPU4) (set 11)", - "m4przrfm", "Prize Run For Your Money (Barcrest) (MPU4) (set 1)", - "m4przrfm__a", "Prize Run For Your Money (Barcrest) (MPU4) (set 2)", - "m4przrfm__b", "Prize Run For Your Money (Barcrest) (MPU4) (set 3)", - "m4przrfm__c", "Prize Run For Your Money (Barcrest) (MPU4) (set 4)", - "m4przrfm__d", "Prize Run For Your Money (Barcrest) (MPU4) (set 5)", - "m4przrfm__e", "Prize Run For Your Money (Barcrest) (MPU4) (set 6)", - "m4przrfm__f", "Prize Run For Your Money (Barcrest) (MPU4) (set 7)", - "m4przrfm__g", "Prize Run For Your Money (Barcrest) (MPU4) (set 8)", - "m4przrfm__h", "Prize Run For Your Money (Barcrest) (MPU4) (set 9)", - "m4przrfm__i", "Prize Run For Your Money (Barcrest) (MPU4) (set 10)", - "m4przrfm__j", "Prize Run For Your Money (Barcrest) (MPU4) (set 11)", - "m4przrfm__k", "Prize Run For Your Money (Barcrest) (MPU4) (set 12)", - "m4przrfm__l", "Prize Run For Your Money (Barcrest) (MPU4) (set 13)", - "m4przrfm__m", "Prize Run For Your Money (Barcrest) (MPU4) (set 14)", - "m4przrfm__n", "Prize Run For Your Money (Barcrest) (MPU4) (set 15)", - "m4przrfm__o", "Prize Run For Your Money (Barcrest) (MPU4) (set 16)", - "m4przsss", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 1)", - "m4przsss__0", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 28)", - "m4przsss__a", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 2)", - "m4przsss__b", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 3)", - "m4przsss__c", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 4)", - "m4przsss__d", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 5)", - "m4przsss__e", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 6)", - "m4przsss__f", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 7)", - "m4przsss__g", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 8)", - "m4przsss__h", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 9)", - "m4przsss__i", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 10)", - "m4przsss__j", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 11)", - "m4przsss__k", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 12)", - "m4przsss__l", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 13)", - "m4przsss__m", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 14)", - "m4przsss__n", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 15)", - "m4przsss__o", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 16)", - "m4przsss__p", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 17)", - "m4przsss__q", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 18)", - "m4przsss__r", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 19)", - "m4przsss__s", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 20)", - "m4przsss__t", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 21)", - "m4przsss__u", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 22)", - "m4przsss__v", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 23)", - "m4przsss__w", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 24)", - "m4przsss__x", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 25)", - "m4przsss__y", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 26)", - "m4przsss__z", "Prize Spend Spend Spend (Barcrest) (MPU4) (set 27)", - "m4przve", "Prize Viva Esapana (Barcrest) (MPU4) (set 1)", - "m4przve__a", "Prize Viva Esapana (Barcrest) (MPU4) (set 2)", - "m4przve__b", "Prize Viva Esapana (Barcrest) (MPU4) (set 3)", - "m4przve__c", "Prize Viva Esapana (Barcrest) (MPU4) (set 4)", - "m4przve__d", "Prize Viva Esapana (Barcrest) (MPU4) (set 5)", - "m4przve__e", "Prize Viva Esapana (Barcrest) (MPU4) (set 6)", - "m4przve__f", "Prize Viva Esapana (Barcrest) (MPU4) (set 7)", - "m4przve__g", "Prize Viva Esapana (Barcrest) (MPU4) (set 8)", - "m4przve__h", "Prize Viva Esapana (Barcrest) (MPU4) (set 9)", - "m4przve__i", "Prize Viva Esapana (Barcrest) (MPU4) (set 10)", - "m4przve__j", "Prize Viva Esapana (Barcrest) (MPU4) (set 11)", - "m4przve__k", "Prize Viva Esapana (Barcrest) (MPU4) (set 12)", - "m4przve__l", "Prize Viva Esapana (Barcrest) (MPU4) (set 13)", - "m4przve__m", "Prize Viva Esapana (Barcrest) (MPU4) (set 14)", - "m4przve__n", "Prize Viva Esapana (Barcrest) (MPU4) (set 15)", - "m4przve__o", "Prize Viva Esapana (Barcrest) (MPU4) (set 16)", - "m4przve__p", "Prize Viva Esapana (Barcrest) (MPU4) (set 17)", - "m4przwo", "Prize What's On (Barcrest) (MPU4) (set 1)", - "m4przwo__a", "Prize What's On (Barcrest) (MPU4) (set 2)", - "m4przwo__b", "Prize What's On (Barcrest) (MPU4) (set 3)", - "m4przwo__c", "Prize What's On (Barcrest) (MPU4) (set 4)", - "m4przwo__d", "Prize What's On (Barcrest) (MPU4) (set 5)", - "m4przwo__e", "Prize What's On (Barcrest) (MPU4) (set 6)", - "m4przwo__f", "Prize What's On (Barcrest) (MPU4) (set 7)", - "m4przwta", "Prize Winner Takes All (Barcrest) (MPU4) (set 1)", - "m4przwta__a", "Prize Winner Takes All (Barcrest) (MPU4) (set 2)", - "m4przwta__b", "Prize Winner Takes All (Barcrest) (MPU4) (set 3)", - "m4przwta__c", "Prize Winner Takes All (Barcrest) (MPU4) (set 4)", - "m4przwta__d", "Prize Winner Takes All (Barcrest) (MPU4) (set 5)", - "m4przwta__e", "Prize Winner Takes All (Barcrest) (MPU4) (set 6)", - "m4przwta__f", "Prize Winner Takes All (Barcrest) (MPU4) (set 7)", - "m4przwta__g", "Prize Winner Takes All (Barcrest) (MPU4) (set 8)", - "m4przwta__h", "Prize Winner Takes All (Barcrest) (MPU4) (set 9)", - "m4przwta__i", "Prize Winner Takes All (Barcrest) (MPU4) (set 10)", - "m4przwta__j", "Prize Winner Takes All (Barcrest) (MPU4) (set 11)", - "m4przwta__k", "Prize Winner Takes All (Barcrest) (MPU4) (set 12)", - "m4przwta__l", "Prize Winner Takes All (Barcrest) (MPU4) (set 13)", - "m4przwta__m", "Prize Winner Takes All (Barcrest) (MPU4) (set 14)", - "m4przwta__n", "Prize Winner Takes All (Barcrest) (MPU4) (set 15)", - "m4przwta__o", "Prize Winner Takes All (Barcrest) (MPU4) (set 16)", - "m4przwta__p", "Prize Winner Takes All (Barcrest) (MPU4) (set 17)", - "m4ptblkc", "Pot Black Casino (Bwb - Barcrest) (MPU4)", - "m4pulwnc", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 1)", - "m4pulwnc__0", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 28)", - "m4pulwnc__1", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 29)", - "m4pulwnc__2", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 30)", - "m4pulwnc__3", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 31)", - "m4pulwnc__4", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 32)", - "m4pulwnc__a", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 2)", - "m4pulwnc__b", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 3)", - "m4pulwnc__c", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 4)", - "m4pulwnc__d", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 5)", - "m4pulwnc__e", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 6)", - "m4pulwnc__f", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 7)", - "m4pulwnc__g", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 8)", - "m4pulwnc__h", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 9)", - "m4pulwnc__i", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 10)", - "m4pulwnc__j", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 11)", - "m4pulwnc__k", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 12)", - "m4pulwnc__l", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 13)", - "m4pulwnc__m", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 14)", - "m4pulwnc__n", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 15)", - "m4pulwnc__o", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 16)", - "m4pulwnc__p", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 17)", - "m4pulwnc__q", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 18)", - "m4pulwnc__r", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 19)", - "m4pulwnc__s", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 20)", - "m4pulwnc__t", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 21)", - "m4pulwnc__u", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 22)", - "m4pulwnc__v", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 23)", - "m4pulwnc__w", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 24)", - "m4pulwnc__x", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 25)", - "m4pulwnc__y", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 26)", - "m4pulwnc__z", "Pull-A-Win (Concept Games Ltd) (MPU4) (set 27)", - "m4purmad", "Pure Madness (Union)", - "m4pzbing", "Prize Bingo (Bwb) (MPU4) (set 1)", - "m4pzbing__a", "Prize Bingo (Bwb) (MPU4) (set 2)", - "m4pzbing__b", "Prize Bingo (Bwb) (MPU4) (set 3)", - "m4pzbing__c", "Prize Bingo (Bwb) (MPU4) (set 4)", - "m4pzbing__d", "Prize Bingo (Bwb) (MPU4) (set 5)", - "m4pzbing__e", "Prize Bingo (Bwb) (MPU4) (set 6)", - "m4quidin", "Quids In (Bwb) (MPU4) (set 1)", - "m4quidin__a", "Quids In (Bwb) (MPU4) (set 2)", - "m4quidin__b", "Quids In (Bwb) (MPU4) (set 3)", - "m4quidis", "Quids In Showcase (Bwb) (MPU4) (set 1)", - "m4quidis__a", "Quids In Showcase (Bwb) (MPU4) (set 2)", - "m4quidis__b", "Quids In Showcase (Bwb) (MPU4) (set 3)", - "m4quidis__c", "Quids In Showcase (Bwb) (MPU4) (set 4)", - "m4quidis__d", "Quids In Showcase (Bwb) (MPU4) (set 5)", - "m4r2r", "Reel 2 Reel (Barcrest) (MPU4)", - "m4ra", "Red Alert (Barcrest) (MPU4) (set 1)", - "m4ra__a", "Red Alert (Barcrest) (MPU4) (set 2)", - "m4ra__b", "Red Alert (Barcrest) (MPU4) (set 3)", - "m4ra__c", "Red Alert (Barcrest) (MPU4) (set 4)", - "m4ra__d", "Red Alert (Barcrest) (MPU4) (set 5)", - "m4ra__e", "Red Alert (Barcrest) (MPU4) (set 6)", - "m4ra__f", "Red Alert (Barcrest) (MPU4) (set 7)", - "m4ra__g", "Red Alert (Barcrest) (MPU4) (set 8)", - "m4ra__h", "Red Alert (Barcrest) (MPU4) (set 9)", - "m4ra__i", "Red Alert (Barcrest) (MPU4) (set 10)", - "m4ra__j", "Red Alert (Barcrest) (MPU4) (set 11)", - "m4ra__k", "Red Alert (Barcrest) (MPU4) (set 12)", - "m4ra__l", "Red Alert (Barcrest) (MPU4) (set 13)", - "m4ra__m", "Red Alert (Barcrest) (MPU4) (set 14)", - "m4ra__n", "Red Alert (Barcrest) (MPU4) (set 15)", - "m4ra__o", "Red Alert (Barcrest) (MPU4) (set 16)", - "m4ra__p", "Red Alert (Barcrest) (MPU4) (set 17)", - "m4ra__q", "Red Alert (Barcrest) (MPU4) (set 18)", - "m4ra__r", "Red Alert (Barcrest) (MPU4) (set 19)", - "m4rackem", "Rack Em Up (Bwb) (MPU4) (set 1)", - "m4rackem__a", "Rack Em Up (Bwb) (MPU4) (set 2)", - "m4rackem__b", "Rack Em Up (Bwb) (MPU4) (set 3)", - "m4rackem__c", "Rack Em Up (Bwb) (MPU4) (set 4)", - "m4rackem__d", "Rack Em Up (Bwb) (MPU4) (set 5)", - "m4rags", "Rags To Riches Club (Crystal) (MPU4) (set 1)", - "m4ragsa", "Rags To Riches Club (Crystal) (MPU4) (set 2)", - "m4ragsb", "Rags To Riches Club (Crystal) (MPU4) (set 3)", - "m4ragsc", "Rags To Riches Club (Crystal) (MPU4) (set 4)", - "m4randr", "Random Roulette (Barcrest) (Dutch) (MPU4)", - "m4rbgold", "Rainbow Gold (Bwb) (MPU4) (set 1)", - "m4rbgold__a", "Rainbow Gold (Bwb) (MPU4) (set 2)", - "m4rbgold__b", "Rainbow Gold (Bwb) (MPU4) (set 3)", - "m4rbgold__c", "Rainbow Gold (Bwb) (MPU4) (set 4)", - "m4rbgold__d", "Rainbow Gold (Bwb) (MPU4) (set 5)", - "m4rbgold__e", "Rainbow Gold (Bwb) (MPU4) (set 6)", - "m4rbgold__f", "Rainbow Gold (Bwb) (MPU4) (set 7)", - "m4rbgold__g", "Rainbow Gold (Bwb) (MPU4) (set 8)", - "m4rbgold__h", "Rainbow Gold (Bwb) (MPU4) (set 9)", - "m4rbgold__i", "Rainbow Gold (Bwb) (MPU4) (set 10)", - "m4rbgold__j", "Rainbow Gold (Bwb) (MPU4) (set 11)", - "m4rbgold__k", "Rainbow Gold (Bwb) (MPU4) (set 12)", - "m4rbgold__l", "Rainbow Gold (Bwb) (MPU4) (set 13)", - "m4rbgold__m", "Rainbow Gold (Bwb) (MPU4) (set 14)", - "m4rbgold__n", "Rainbow Gold (Bwb) (MPU4) (set 15)", - "m4rbgold__o", "Rainbow Gold (Bwb) (MPU4) (set 16)", - "m4rbgold__p", "Rainbow Gold (Bwb) (MPU4) (set 17)", - "m4rbgold__q", "Rainbow Gold (Bwb) (MPU4) (set 18)", - "m4rckrol", "Rock 'n' Roll (Union - Empire) (MPU4, set 1)", - "m4rckrola", "Rock 'n' Roll (Union - Empire) (MPU4, set 2)", - "m4rckrolb", "Rock 'n' Roll (Union - Empire) (MPU4, set 3)", - "m4rdeal", "Reel Deal (Qps) (MPU4) (set 1)", - "m4rdeal__a", "Reel Deal (Qps) (MPU4) (set 2)", - "m4rdeal__b", "Reel Deal (Qps) (MPU4) (set 3)", - "m4rdeal__c", "Reel Deal (Qps) (MPU4) (set 4)", - "m4rdeal__d", "Reel Deal (Qps) (MPU4) (set 5)", - "m4rdeal__e", "Reel Deal (Qps) (MPU4) (set 6)", - "m4rdeal__f", "Reel Deal (Qps) (MPU4) (set 7)", - "m4rdeal__g", "Reel Deal (Qps) (MPU4) (set 8)", - "m4rdeal__h", "Reel Deal (Qps) (MPU4) (set 9)", - "m4rdeal__i", "Reel Deal (Qps) (MPU4) (set 10)", - "m4rdht", "Red Heat (Golden Nugget?) (Barcrest) (MPU4) (DRH 1.2)", - "m4ready", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 1)", - "m4ready__0", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 28)", - "m4ready__1", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 29)", - "m4ready__2", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 30)", - "m4ready__3", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 31)", - "m4ready__4", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 32)", - "m4ready__5", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 33)", - "m4ready__6", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 34)", - "m4ready__7", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 35)", - "m4ready__8", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 36)", - "m4ready__9", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 37)", - "m4ready__a", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 2)", - "m4ready__a0", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 64)", - "m4ready__a1", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 65)", - "m4ready__a2", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 66)", - "m4ready__a3", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 67)", - "m4ready__a4", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 68)", - "m4ready__a5", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 69)", - "m4ready__aa", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 38)", - "m4ready__ab", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 39)", - "m4ready__ac", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 40)", - "m4ready__ad", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 41)", - "m4ready__ae", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 42)", - "m4ready__af", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 43)", - "m4ready__ag", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 44)", - "m4ready__ah", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 45)", - "m4ready__ai", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 46)", - "m4ready__aj", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 47)", - "m4ready__ak", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 48)", - "m4ready__al", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 49)", - "m4ready__am", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 50)", - "m4ready__an", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 51)", - "m4ready__ao", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 52)", - "m4ready__ap", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 53)", - "m4ready__aq", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 54)", - "m4ready__ar", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 55)", - "m4ready__as", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 56)", - "m4ready__at", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 57)", - "m4ready__au", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 58)", - "m4ready__av", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 59)", - "m4ready__aw", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 60)", - "m4ready__ax", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 61)", - "m4ready__ay", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 62)", - "m4ready__az", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 63)", - "m4ready__b", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 3)", - "m4ready__c", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 4)", - "m4ready__d", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 5)", - "m4ready__e", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 6)", - "m4ready__f", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 7)", - "m4ready__g", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 8)", - "m4ready__h", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 9)", - "m4ready__i", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 10)", - "m4ready__j", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 11)", - "m4ready__k", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 12)", - "m4ready__l", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 13)", - "m4ready__m", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 14)", - "m4ready__n", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 15)", - "m4ready__o", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 16)", - "m4ready__p", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 17)", - "m4ready__q", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 18)", - "m4ready__r", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 19)", - "m4ready__s", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 20)", - "m4ready__t", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 21)", - "m4ready__u", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 22)", - "m4ready__v", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 23)", - "m4ready__w", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 24)", - "m4ready__x", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 25)", - "m4ready__y", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 26)", - "m4ready__z", "Ready Steady Go (Barcrest) (type 2) (MPU4) (set 27)", - "m4reelpk", "Reel Poker (Barcrest) (MPU4)", - "m4reeltm", "Reel Timer (Barcrest) (MPU4) (DWT)", - "m4remag", "unknown MPU4 'ZTP 0.7' (MPU4?)", - "m4revolv", "Revolva (Union) (MPU4)", - "m4rfym", "Run For Your Money (Barcrest) (MPU4) (set 1)", - "m4rfym__0", "Run For Your Money (Barcrest) (MPU4) (set 28)", - "m4rfym__1", "Run For Your Money (Barcrest) (MPU4) (set 29)", - "m4rfym__2", "Run For Your Money (Barcrest) (MPU4) (set 30)", - "m4rfym__3", "Run For Your Money (Barcrest) (MPU4) (set 31)", - "m4rfym__4", "Run For Your Money (Barcrest) (MPU4) (set 32)", - "m4rfym__5", "Run For Your Money (Barcrest) (MPU4) (set 33)", - "m4rfym__6", "Run For Your Money (Barcrest) (MPU4) (set 34)", - "m4rfym__7", "Run For Your Money (Barcrest) (MPU4) (set 35)", - "m4rfym__8", "Run For Your Money (Barcrest) (MPU4) (set 36)", - "m4rfym__9", "Run For Your Money (Barcrest) (MPU4) (set 37)", - "m4rfym__a", "Run For Your Money (Barcrest) (MPU4) (set 2)", - "m4rfym__a0", "Run For Your Money (Barcrest) (MPU4) (set 64)", - "m4rfym__a1", "Run For Your Money (Barcrest) (MPU4) (set 65)", - "m4rfym__a2", "Run For Your Money (Barcrest) (MPU4) (set 66)", - "m4rfym__a3", "Run For Your Money (Barcrest) (MPU4) (set 67)", - "m4rfym__a4", "Run For Your Money (Barcrest) (MPU4) (set 68)", - "m4rfym__a5", "Run For Your Money (Barcrest) (MPU4) (set 69)", - "m4rfym__aa", "Run For Your Money (Barcrest) (MPU4) (set 38)", - "m4rfym__ab", "Run For Your Money (Barcrest) (MPU4) (set 39)", - "m4rfym__ac", "Run For Your Money (Barcrest) (MPU4) (set 40)", - "m4rfym__ad", "Run For Your Money (Barcrest) (MPU4) (set 41)", - "m4rfym__ae", "Run For Your Money (Barcrest) (MPU4) (set 42)", - "m4rfym__af", "Run For Your Money (Barcrest) (MPU4) (set 43)", - "m4rfym__ag", "Run For Your Money (Barcrest) (MPU4) (set 44)", - "m4rfym__ah", "Run For Your Money (Barcrest) (MPU4) (set 45)", - "m4rfym__ai", "Run For Your Money (Barcrest) (MPU4) (set 46)", - "m4rfym__aj", "Run For Your Money (Barcrest) (MPU4) (set 47)", - "m4rfym__ak", "Run For Your Money (Barcrest) (MPU4) (set 48)", - "m4rfym__al", "Run For Your Money (Barcrest) (MPU4) (set 49)", - "m4rfym__am", "Run For Your Money (Barcrest) (MPU4) (set 50)", - "m4rfym__an", "Run For Your Money (Barcrest) (MPU4) (set 51)", - "m4rfym__ao", "Run For Your Money (Barcrest) (MPU4) (set 52)", - "m4rfym__ap", "Run For Your Money (Barcrest) (MPU4) (set 53)", - "m4rfym__aq", "Run For Your Money (Barcrest) (MPU4) (set 54)", - "m4rfym__ar", "Run For Your Money (Barcrest) (MPU4) (set 55)", - "m4rfym__as", "Run For Your Money (Barcrest) (MPU4) (set 56)", - "m4rfym__at", "Run For Your Money (Barcrest) (MPU4) (set 57)", - "m4rfym__au", "Run For Your Money (Barcrest) (MPU4) (set 58)", - "m4rfym__av", "Run For Your Money (Barcrest) (MPU4) (set 59)", - "m4rfym__aw", "Run For Your Money (Barcrest) (MPU4) (set 60)", - "m4rfym__ax", "Run For Your Money (Barcrest) (MPU4) (set 61)", - "m4rfym__ay", "Run For Your Money (Barcrest) (MPU4) (set 62)", - "m4rfym__az", "Run For Your Money (Barcrest) (MPU4) (set 63)", - "m4rfym__b", "Run For Your Money (Barcrest) (MPU4) (set 3)", - "m4rfym__c", "Run For Your Money (Barcrest) (MPU4) (set 4)", - "m4rfym__d", "Run For Your Money (Barcrest) (MPU4) (set 5)", - "m4rfym__e", "Run For Your Money (Barcrest) (MPU4) (set 6)", - "m4rfym__f", "Run For Your Money (Barcrest) (MPU4) (set 7)", - "m4rfym__g", "Run For Your Money (Barcrest) (MPU4) (set 8)", - "m4rfym__h", "Run For Your Money (Barcrest) (MPU4) (set 9)", - "m4rfym__i", "Run For Your Money (Barcrest) (MPU4) (set 10)", - "m4rfym__j", "Run For Your Money (Barcrest) (MPU4) (set 11)", - "m4rfym__k", "Run For Your Money (Barcrest) (MPU4) (set 12)", - "m4rfym__l", "Run For Your Money (Barcrest) (MPU4) (set 13)", - "m4rfym__m", "Run For Your Money (Barcrest) (MPU4) (set 14)", - "m4rfym__n", "Run For Your Money (Barcrest) (MPU4) (set 15)", - "m4rfym__o", "Run For Your Money (Barcrest) (MPU4) (set 16)", - "m4rfym__p", "Run For Your Money (Barcrest) (MPU4) (set 17)", - "m4rfym__q", "Run For Your Money (Barcrest) (MPU4) (set 18)", - "m4rfym__r", "Run For Your Money (Barcrest) (MPU4) (set 19)", - "m4rfym__s", "Run For Your Money (Barcrest) (MPU4) (set 20)", - "m4rfym__t", "Run For Your Money (Barcrest) (MPU4) (set 21)", - "m4rfym__u", "Run For Your Money (Barcrest) (MPU4) (set 22)", - "m4rfym__v", "Run For Your Money (Barcrest) (MPU4) (set 23)", - "m4rfym__w", "Run For Your Money (Barcrest) (MPU4) (set 24)", - "m4rfym__x", "Run For Your Money (Barcrest) (MPU4) (set 25)", - "m4rfym__y", "Run For Your Money (Barcrest) (MPU4) (set 26)", - "m4rfym__z", "Run For Your Money (Barcrest) (MPU4) (set 27)", - "m4rhfev", "Red Hot Fever (Bwb) (MPU4) (set 1)", - "m4rhfev__a", "Red Hot Fever (Bwb) (MPU4) (set 2)", - "m4rhfev__b", "Red Hot Fever (Bwb) (MPU4) (set 3)", - "m4rhfev__c", "Red Hot Fever (Bwb) (MPU4) (set 4)", - "m4rhfev__d", "Red Hot Fever (Bwb) (MPU4) (set 5)", - "m4rhfevc", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 1)", - "m4rhfevc__a", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 2)", - "m4rhfevc__b", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 3)", - "m4rhfevc__c", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 4)", - "m4rhfevc__d", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 5)", - "m4rhfevc__e", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 6)", - "m4rhfevc__f", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 7)", - "m4rhfevc__g", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 8)", - "m4rhfevc__h", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 9)", - "m4rhfevc__i", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 10)", - "m4rhfevc__j", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 11)", - "m4rhfevc__k", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 12)", - "m4rhfevc__l", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 13)", - "m4rhfevc__m", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 14)", - "m4rhfevc__n", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 15)", - "m4rhfevc__o", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 16)", - "m4rhfevc__p", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 17)", - "m4rhfevc__q", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 18)", - "m4rhfevc__r", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 19)", - "m4rhfevc__s", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 20)", - "m4rhfevc__t", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 21)", - "m4rhfevc__u", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 22)", - "m4rhfevc__v", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 23)", - "m4rhfevc__w", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 24)", - "m4rhfevc__x", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 25)", - "m4rhfevc__y", "Red Hot Fever (Concept Games Ltd) (MPU4) (set 26)", - "m4rhnote", "Red Hot Notes (Qps) (MPU4) (set 1)", - "m4rhnote__a", "Red Hot Notes (Qps) (MPU4) (set 2)", - "m4rhnote__b", "Red Hot Notes (Qps) (MPU4) (set 3)", - "m4rhnote__c", "Red Hot Notes (Qps) (MPU4) (set 4)", - "m4rhnote__d", "Red Hot Notes (Qps) (MPU4) (set 5)", - "m4rhnote__e", "Red Hot Notes (Qps) (MPU4) (set 6)", - "m4rhnote__f", "Red Hot Notes (Qps) (MPU4) (set 7)", - "m4rhnote__g", "Red Hot Notes (Qps) (MPU4) (set 8)", - "m4rhnote__h", "Red Hot Notes (Qps) (MPU4) (set 9)", - "m4rhnote__i", "Red Hot Notes (Qps) (MPU4) (set 10)", - "m4rhnote__j", "Red Hot Notes (Qps) (MPU4) (set 11)", - "m4rhnote__k", "Red Hot Notes (Qps) (MPU4) (set 12)", - "m4rhnote__l", "Red Hot Notes (Qps) (MPU4) (set 13)", - "m4rhnote__m", "Red Hot Notes (Qps) (MPU4) (set 14)", - "m4rhnote__n", "Red Hot Notes (Qps) (MPU4) (set 15)", - "m4rhnote__o", "Red Hot Notes (Qps) (MPU4) (set 16)", - "m4rhnote__p", "Red Hot Notes (Qps) (MPU4) (set 17)", - "m4rhnote__q", "Red Hot Notes (Qps) (MPU4) (set 18)", - "m4rhnote__r", "Red Hot Notes (Qps) (MPU4) (set 19)", - "m4rhnote__s", "Red Hot Notes (Qps) (MPU4) (set 20)", - "m4rhnote__t", "Red Hot Notes (Qps) (MPU4) (set 21)", - "m4rhnote__u", "Red Hot Notes (Qps) (MPU4) (set 22)", - "m4rhnote__v", "Red Hot Notes (Qps) (MPU4) (set 23)", - "m4rhnote__w", "Red Hot Notes (Qps) (MPU4) (set 24)", - "m4rhnote__x", "Red Hot Notes (Qps) (MPU4) (set 25)", - "m4rhnote__y", "Red Hot Notes (Qps) (MPU4) (set 26)", - "m4rhog", "Road Hog (Barcrest) (MPU4) (RR6 1.2)", - "m4rhog2", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 1)", - "m4rhog2__a", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 2)", - "m4rhog2__b", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 3)", - "m4rhog2__c", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 4)", - "m4rhog2__d", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 5)", - "m4rhog2__e", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 6)", - "m4rhog2__f", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 7)", - "m4rhog2__g", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 8)", - "m4rhog2__h", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 9)", - "m4rhog2__i", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 10)", - "m4rhog2__j", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 11)", - "m4rhog2__k", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 12)", - "m4rhog2__l", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 13)", - "m4rhog2__m", "Road Hog 2 - I'm Back (Barcrest) (MPU4) (set 14)", - "m4rhog_h1", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0, hack?, set 1)", - "m4rhog_h10", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 1.0, hack?, set 3)", - "m4rhog_h11", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 1.0, hack?, set 4)", - "m4rhog_h12", "Road Hog (Barcrest) (MPU4) (RR6 1.2?, hack?)", - "m4rhog_h13", "Road Hog (Barcrest) (MPU4) (RR6 1.2, hack?)", - "m4rhog_h14", "Road Hog (Barcrest) (MPU4) (RR6 1.2C, hack?, set 1)", - "m4rhog_h15", "Road Hog (Barcrest) (MPU4) (RR6 1.2C, hack?, set 2)", - "m4rhog_h2", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0, hack?, set 2)", - "m4rhog_h3", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0, hack?, set 3)", - "m4rhog_h4", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0, hack?, set 4)", - "m4rhog_h5", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0, hack?, set 5)", - "m4rhog_h6", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0, hack?, set 6)", - "m4rhog_h7", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0, hack?, set 7)", - "m4rhog_h8", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 1.0, hack?, set 1)", - "m4rhog_h9", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 1.0, hack?, set 2)", - "m4rhog_roc", "Road Hog (Bwb / Barcrest) (MPU4) (ROC 2.0, bad)", - "m4rhogc", "Road Hog Club (Barcrest) (MPU4) (set 1)", - "m4rhogc__a", "Road Hog Club (Barcrest) (MPU4) (set 2)", - "m4rhogc__b", "Road Hog Club (Barcrest) (MPU4) (set 3)", - "m4rhogr1", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 1.0)", - "m4rhogr1c", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 1.0C)", - "m4rhogr1d", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 1.0D)", - "m4rhogr1k", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 1.0K, set 1)", - "m4rhogr1k_a", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 1.0K, set 2, wrong version number?)", - "m4rhogr1y", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 1.0Y)", - "m4rhogr1yd", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 1.0YD)", - "m4rhogr2", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0)", - "m4rhogr2c", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0C)", - "m4rhogr2d", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0D)", - "m4rhogr2k", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0K)", - "m4rhogr2y", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0Y)", - "m4rhogr2yd", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 2.0YD)", - "m4rhogr3", "Road Hog (Bwb / Barcrest) (MPU4) (RO_ 3.0)", - "m4rhogr6ad", "Road Hog (Barcrest) (MPU4) (RR6 1.2AD)", - "m4rhogr6b", "Road Hog (Barcrest) (MPU4) (RR6 1.2B)", - "m4rhogr6c", "Road Hog (Barcrest) (MPU4) (RR6 1.2C)", - "m4rhogr6d", "Road Hog (Barcrest) (MPU4) (RR6 1.2D)", - "m4rhogr6k", "Road Hog (Barcrest) (MPU4) (RR6 1.2K)", - "m4rhogr6y", "Road Hog (Barcrest) (MPU4) (RR6 1.2Y)", - "m4rhogr6y_a", "Road Hog (Barcrest) (MPU4) (RR6 1.1Y)", - "m4rhogr6yd", "Road Hog (Barcrest) (MPU4) (RR6 1.2YD)", - "m4rhr", "Red Hot Roll (Barcrest) (MPU4) (set 1)", - "m4rhr__0", "Red Hot Roll (Barcrest) (MPU4) (set 28)", - "m4rhr__1", "Red Hot Roll (Barcrest) (MPU4) (set 29)", - "m4rhr__2", "Red Hot Roll (Barcrest) (MPU4) (set 30)", - "m4rhr__3", "Red Hot Roll (Barcrest) (MPU4) (set 31)", - "m4rhr__4", "Red Hot Roll (Barcrest) (MPU4) (set 32)", - "m4rhr__5", "Red Hot Roll (Barcrest) (MPU4) (set 33)", - "m4rhr__6", "Red Hot Roll (Barcrest) (MPU4) (set 34)", - "m4rhr__7", "Red Hot Roll (Barcrest) (MPU4) (set 35)", - "m4rhr__8", "Red Hot Roll (Barcrest) (MPU4) (set 36)", - "m4rhr__9", "Red Hot Roll (Barcrest) (MPU4) (set 37)", - "m4rhr__a", "Red Hot Roll (Barcrest) (MPU4) (set 2)", - "m4rhr__a0", "Red Hot Roll (Barcrest) (MPU4) (set 64)", - "m4rhr__a1", "Red Hot Roll (Barcrest) (MPU4) (set 65)", - "m4rhr__a2", "Red Hot Roll (Barcrest) (MPU4) (set 66)", - "m4rhr__a3", "Red Hot Roll (Barcrest) (MPU4) (set 67)", - "m4rhr__a4", "Red Hot Roll (Barcrest) (MPU4) (RH8 0.1C)", - "m4rhr__aa", "Red Hot Roll (Barcrest) (MPU4) (set 38)", - "m4rhr__ab", "Red Hot Roll (Barcrest) (MPU4) (set 39)", - "m4rhr__ac", "Red Hot Roll (Barcrest) (MPU4) (set 40)", - "m4rhr__ad", "Red Hot Roll (Barcrest) (MPU4) (set 41)", - "m4rhr__ae", "Red Hot Roll (Barcrest) (MPU4) (set 42)", - "m4rhr__af", "Red Hot Roll (Barcrest) (MPU4) (set 43)", - "m4rhr__ag", "Red Hot Roll (Barcrest) (MPU4) (set 44)", - "m4rhr__ah", "Red Hot Roll (Barcrest) (MPU4) (set 45)", - "m4rhr__ai", "Red Hot Roll (Barcrest) (MPU4) (set 46)", - "m4rhr__aj", "Red Hot Roll (Barcrest) (MPU4) (set 47)", - "m4rhr__ak", "Red Hot Roll (Barcrest) (MPU4) (set 48)", - "m4rhr__al", "Red Hot Roll (Barcrest) (MPU4) (set 49)", - "m4rhr__am", "Red Hot Roll (Barcrest) (MPU4) (set 50)", - "m4rhr__an", "Red Hot Roll (Barcrest) (MPU4) (set 51)", - "m4rhr__ao", "Red Hot Roll (Barcrest) (MPU4) (set 52)", - "m4rhr__ap", "Red Hot Roll (Barcrest) (MPU4) (set 53)", - "m4rhr__aq", "Red Hot Roll (Barcrest) (MPU4) (set 54)", - "m4rhr__ar", "Red Hot Roll (Barcrest) (MPU4) (set 55)", - "m4rhr__as", "Red Hot Roll (Barcrest) (MPU4) (set 56)", - "m4rhr__at", "Red Hot Roll (Barcrest) (MPU4) (set 57)", - "m4rhr__au", "Red Hot Roll (Barcrest) (MPU4) (set 58)", - "m4rhr__av", "Red Hot Roll (Barcrest) (MPU4) (set 59)", - "m4rhr__aw", "Red Hot Roll (Barcrest) (MPU4) (set 60)", - "m4rhr__ax", "Red Hot Roll (Barcrest) (MPU4) (set 61)", - "m4rhr__ay", "Red Hot Roll (Barcrest) (MPU4) (set 62)", - "m4rhr__az", "Red Hot Roll (Barcrest) (MPU4) (set 63)", - "m4rhr__b", "Red Hot Roll (Barcrest) (MPU4) (set 3)", - "m4rhr__c", "Red Hot Roll (Barcrest) (MPU4) (set 4)", - "m4rhr__d", "Red Hot Roll (Barcrest) (MPU4) (set 5)", - "m4rhr__e", "Red Hot Roll (Barcrest) (MPU4) (set 6)", - "m4rhr__f", "Red Hot Roll (Barcrest) (MPU4) (set 7)", - "m4rhr__g", "Red Hot Roll (Barcrest) (MPU4) (set 8)", - "m4rhr__h", "Red Hot Roll (Barcrest) (MPU4) (set 9)", - "m4rhr__i", "Red Hot Roll (Barcrest) (MPU4) (set 10)", - "m4rhr__j", "Red Hot Roll (Barcrest) (MPU4) (set 11)", - "m4rhr__k", "Red Hot Roll (Barcrest) (MPU4) (set 12)", - "m4rhr__l", "Red Hot Roll (Barcrest) (MPU4) (set 13)", - "m4rhr__m", "Red Hot Roll (Barcrest) (MPU4) (set 14)", - "m4rhr__n", "Red Hot Roll (Barcrest) (MPU4) (set 15)", - "m4rhr__o", "Red Hot Roll (Barcrest) (MPU4) (set 16)", - "m4rhr__p", "Red Hot Roll (Barcrest) (MPU4) (set 17)", - "m4rhr__q", "Red Hot Roll (Barcrest) (MPU4) (set 18)", - "m4rhr__r", "Red Hot Roll (Barcrest) (MPU4) (set 19)", - "m4rhr__s", "Red Hot Roll (Barcrest) (MPU4) (set 20)", - "m4rhr__t", "Red Hot Roll (Barcrest) (MPU4) (set 21)", - "m4rhr__u", "Red Hot Roll (Barcrest) (MPU4) (set 22)", - "m4rhr__v", "Red Hot Roll (Barcrest) (MPU4) (set 23)", - "m4rhr__w", "Red Hot Roll (Barcrest) (MPU4) (set 24)", - "m4rhr__x", "Red Hot Roll (Barcrest) (MPU4) (set 25)", - "m4rhr__y", "Red Hot Roll (Barcrest) (MPU4) (set 26)", - "m4rhr__z", "Red Hot Roll (Barcrest) (MPU4) (set 27)", - "m4rhrc", "Red Hot Roll Classic (Barcrest) (MPU4) (set 1)", - "m4rhrc__0", "Red Hot Roll Classic (Barcrest) (MPU4) (set 28)", - "m4rhrc__1", "Red Hot Roll Classic (Barcrest) (MPU4) (set 29)", - "m4rhrc__2", "Red Hot Roll Classic (Barcrest) (MPU4) (set 30)", - "m4rhrc__3", "Red Hot Roll Classic (Barcrest) (MPU4) (set 31)", - "m4rhrc__4", "Red Hot Roll Classic (Barcrest) (MPU4) (set 32)", - "m4rhrc__5", "Red Hot Roll Classic (Barcrest) (MPU4) (set 33)", - "m4rhrc__6", "Red Hot Roll Classic (Barcrest) (MPU4) (set 34)", - "m4rhrc__7", "Red Hot Roll Classic (Barcrest) (MPU4) (set 35)", - "m4rhrc__8", "Red Hot Roll Classic (Barcrest) (MPU4) (set 36)", - "m4rhrc__a", "Red Hot Roll Classic (Barcrest) (MPU4) (set 2)", - "m4rhrc__aa", "Red Hot Roll Classic (Barcrest) (MPU4) (set 38)", - "m4rhrc__b", "Red Hot Roll Classic (Barcrest) (MPU4) (set 3)", - "m4rhrc__c", "Red Hot Roll Classic (Barcrest) (MPU4) (set 4)", - "m4rhrc__d", "Red Hot Roll Classic (Barcrest) (MPU4) (set 5)", - "m4rhrc__e", "Red Hot Roll Classic (Barcrest) (MPU4) (set 6)", - "m4rhrc__f", "Red Hot Roll Classic (Barcrest) (MPU4) (set 7)", - "m4rhrc__g", "Red Hot Roll Classic (Barcrest) (MPU4) (set 8)", - "m4rhrc__h", "Red Hot Roll Classic (Barcrest) (MPU4) (set 9)", - "m4rhrc__i", "Red Hot Roll Classic (Barcrest) (MPU4) (set 10)", - "m4rhrc__j", "Red Hot Roll Classic (Barcrest) (MPU4) (set 11)", - "m4rhrc__k", "Red Hot Roll Classic (Barcrest) (MPU4) (set 12)", - "m4rhrc__l", "Red Hot Roll Classic (Barcrest) (MPU4) (set 13)", - "m4rhrc__m", "Red Hot Roll Classic (Barcrest) (MPU4) (set 14)", - "m4rhrc__n", "Red Hot Roll Classic (Barcrest) (MPU4) (set 15)", - "m4rhrc__o", "Red Hot Roll Classic (Barcrest) (MPU4) (set 16)", - "m4rhrc__p", "Red Hot Roll Classic (Barcrest) (MPU4) (set 17)", - "m4rhrc__q", "Red Hot Roll Classic (Barcrest) (MPU4) (set 18)", - "m4rhrc__r", "Red Hot Roll Classic (Barcrest) (MPU4) (set 19)", - "m4rhrc__s", "Red Hot Roll Classic (Barcrest) (MPU4) (set 20)", - "m4rhrc__t", "Red Hot Roll Classic (Barcrest) (MPU4) (set 21)", - "m4rhrc__u", "Red Hot Roll Classic (Barcrest) (MPU4) (set 22)", - "m4rhrc__v", "Red Hot Roll Classic (Barcrest) (MPU4) (set 23)", - "m4rhrc__w", "Red Hot Roll Classic (Barcrest) (MPU4) (set 24)", - "m4rhrc__x", "Red Hot Roll Classic (Barcrest) (MPU4) (set 25)", - "m4rhrc__y", "Red Hot Roll Classic (Barcrest) (MPU4) (set 26)", - "m4rhrc__z", "Red Hot Roll Classic (Barcrest) (MPU4) (set 27)", - "m4rhrcl", "Red Hot Roll Club (Barcrest) (MPU4) (set 1)", - "m4rhrcl__a", "Red Hot Roll Club (Barcrest) (MPU4) (set 2)", - "m4rhrcl__b", "Red Hot Roll Club (Barcrest) (MPU4) (set 3)", - "m4rhrcl__c", "Red Hot Roll Club (Barcrest) (MPU4) (set 4)", - "m4rhrock", "Red Hot Rocks (Qps) (MPU4) (set 1)", - "m4rhrock__a", "Red Hot Rocks (Qps) (MPU4) (set 2)", - "m4rhs", "Rocky Horror Show (Barcrest) (MPU4) (set 1)", - "m4rhs__a", "Rocky Horror Show (Barcrest) (MPU4) (set 2)", - "m4rhs__b", "Rocky Horror Show (Barcrest) (MPU4) (set 3)", - "m4rhs__c", "Rocky Horror Show (Barcrest) (MPU4) (set 4)", - "m4rhs__d", "Rocky Horror Show (Barcrest) (MPU4) (set 5)", - "m4rhs__e", "Rocky Horror Show (Barcrest) (MPU4) (set 6)", - "m4rhs__f", "Rocky Horror Show (Barcrest) (MPU4) (set 7)", - "m4rhs__g", "Rocky Horror Show (Barcrest) (MPU4) (set 8)", - "m4rhs__h", "Rocky Horror Show (Barcrest) (MPU4) (set 9)", - "m4rhs__i", "Rocky Horror Show (Barcrest) (MPU4) (set 10)", - "m4rhs__j", "Rocky Horror Show (Barcrest) (MPU4) (set 11)", - "m4rhs__k", "Rocky Horror Show (Barcrest) (MPU4) (set 12)", - "m4rhs__l", "Rocky Horror Show (Barcrest) (MPU4) (set 13)", - "m4rhwhl", "Red Hot Wheels (Qps) (MPU4) (set 1)", - "m4rhwhl__a", "Red Hot Wheels (Qps) (MPU4) (set 2)", - "m4rhwhl__b", "Red Hot Wheels (Qps) (MPU4) (set 3)", - "m4rhwhl__c", "Red Hot Wheels (Qps) (MPU4) (set 4)", - "m4richfm", "Rich & Famous (Barcrest) (MPU4) (set 1)", - "m4richfm__0", "Rich & Famous (Barcrest) (MPU4) (set 28)", - "m4richfm__1", "Rich & Famous (Barcrest) (MPU4) (set 29)", - "m4richfm__2", "Rich & Famous (Barcrest) (MPU4) (set 30)", - "m4richfm__3", "Rich & Famous (Barcrest) (MPU4) (set 31)", - "m4richfm__a", "Rich & Famous (Barcrest) (MPU4) (set 2)", - "m4richfm__b", "Rich & Famous (Barcrest) (MPU4) (set 3)", - "m4richfm__c", "Rich & Famous (Barcrest) (MPU4) (set 4)", - "m4richfm__d", "Rich & Famous (Barcrest) (MPU4) (set 5)", - "m4richfm__e", "Rich & Famous (Barcrest) (MPU4) (set 6)", - "m4richfm__f", "Rich & Famous (Barcrest) (MPU4) (set 7)", - "m4richfm__g", "Rich & Famous (Barcrest) (MPU4) (set 8)", - "m4richfm__h", "Rich & Famous (Barcrest) (MPU4) (set 9)", - "m4richfm__i", "Rich & Famous (Barcrest) (MPU4) (set 10)", - "m4richfm__j", "Rich & Famous (Barcrest) (MPU4) (set 11)", - "m4richfm__k", "Rich & Famous (Barcrest) (MPU4) (set 12)", - "m4richfm__l", "Rich & Famous (Barcrest) (MPU4) (set 13)", - "m4richfm__m", "Rich & Famous (Barcrest) (MPU4) (set 14)", - "m4richfm__n", "Rich & Famous (Barcrest) (MPU4) (set 15)", - "m4richfm__o", "Rich & Famous (Barcrest) (MPU4) (set 16)", - "m4richfm__p", "Rich & Famous (Barcrest) (MPU4) (set 17)", - "m4richfm__q", "Rich & Famous (Barcrest) (MPU4) (set 18)", - "m4richfm__r", "Rich & Famous (Barcrest) (MPU4) (set 19)", - "m4richfm__s", "Rich & Famous (Barcrest) (MPU4) (set 20)", - "m4richfm__t", "Rich & Famous (Barcrest) (MPU4) (set 21)", - "m4richfm__u", "Rich & Famous (Barcrest) (MPU4) (set 22)", - "m4richfm__v", "Rich & Famous (Barcrest) (MPU4) (set 23)", - "m4richfm__w", "Rich & Famous (Barcrest) (MPU4) (set 24)", - "m4richfm__x", "Rich & Famous (Barcrest) (MPU4) (set 25)", - "m4richfm__y", "Rich & Famous (Barcrest) (MPU4) (set 26)", - "m4richfm__z", "Rich & Famous (Barcrest) (MPU4) (set 27)", - "m4ringfr", "Ring Of Fire (Barcrest) (MPU4)", - "m4riocr", "Rio Grande (Crystal) (MPU4) (set 1)", - "m4riocra", "Rio Grande (Crystal) (MPU4) (set 2)", - "m4riotrp", "Rio Tropico (unknown) (MPU4)", - "m4rlpick", "Reel Picks (Crystal) (MPU4) (set 1)", - "m4rlpicka", "Reel Picks (Crystal) (MPU4) (set 2)", - "m4rlpickb", "Reel Picks (Crystal) (MPU4) (set 3)", - "m4rlpickc", "Reel Picks (Crystal) (MPU4) (set 4)", - "m4rltst", "MPU4 Reel Test (3.0)", - "m4rmg", "unknown MPU4 'CTP 0.4' (MPU4?)", - "m4rmtp", "Reel Magic Turbo Play (Avantime?) (MPU4) (set 1)", - "m4rmtp__a", "Reel Magic Turbo Play (Avantime?) (MPU4) (set 2)", - "m4rmtp__b", "Reel Magic Turbo Play (Avantime?) (MPU4) (set 3)", - "m4rmtp__c", "Reel Magic Turbo Play (Avantime?) (MPU4) (set 4)", - "m4rmtp__d", "Reel Magic Turbo Play (Avantime?) (MPU4) (set 5)", - "m4rmtp__e", "Reel Magic Turbo Play (Avantime?) (MPU4) (set 6)", - "m4rmtp__f", "Reel Magic Turbo Play (Avantime?) (MPU4) (set 7)", - "m4rmtp__g", "Reel Magic Turbo Play (Avantime?) (MPU4) (set 8)", - "m4rmtpd", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 1)", - "m4rmtpd__0", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 28)", - "m4rmtpd__1", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 29)", - "m4rmtpd__2", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 30)", - "m4rmtpd__3", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 31)", - "m4rmtpd__4", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 32)", - "m4rmtpd__5", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 33)", - "m4rmtpd__6", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 34)", - "m4rmtpd__7", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 35)", - "m4rmtpd__8", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 36)", - "m4rmtpd__9", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 37)", - "m4rmtpd__a", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 2)", - "m4rmtpd__aa", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 38)", - "m4rmtpd__ab", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 39)", - "m4rmtpd__ac", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 40)", - "m4rmtpd__ad", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 41)", - "m4rmtpd__ae", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 42)", - "m4rmtpd__af", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 43)", - "m4rmtpd__ag", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 44)", - "m4rmtpd__ah", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 45)", - "m4rmtpd__ai", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 46)", - "m4rmtpd__aj", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 47)", - "m4rmtpd__ak", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 48)", - "m4rmtpd__al", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 49)", - "m4rmtpd__am", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 50)", - "m4rmtpd__b", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 3)", - "m4rmtpd__c", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 4)", - "m4rmtpd__d", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 5)", - "m4rmtpd__e", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 6)", - "m4rmtpd__f", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 7)", - "m4rmtpd__g", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 8)", - "m4rmtpd__h", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 9)", - "m4rmtpd__i", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 10)", - "m4rmtpd__j", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 11)", - "m4rmtpd__k", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 12)", - "m4rmtpd__l", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 13)", - "m4rmtpd__m", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 14)", - "m4rmtpd__n", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 15)", - "m4rmtpd__o", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 16)", - "m4rmtpd__p", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 17)", - "m4rmtpd__q", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 18)", - "m4rmtpd__r", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 19)", - "m4rmtpd__s", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 20)", - "m4rmtpd__t", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 21)", - "m4rmtpd__u", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 22)", - "m4rmtpd__v", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 23)", - "m4rmtpd__w", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 24)", - "m4rmtpd__x", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 25)", - "m4rmtpd__y", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 26)", - "m4rmtpd__z", "Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 27)", - "m4roadrn", "Road Runner (Barcrest) (Dutch) (MPU4) (DRO1.9)", - "m4robo", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 1)", - "m4robo__0", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 14)", - "m4robo__1", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 2)", - "m4robo__2", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 3)", - "m4robo__3", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 4)", - "m4robo__4", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 5)", - "m4robo__5", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 6)", - "m4robo__6", "Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 1)", - "m4robo__7", "Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 2)", - "m4robo__8", "Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 3)", - "m4robo__9", "Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 4)", - "m4robo__a", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 7)", - "m4robo__aa", "Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 5)", - "m4robo__ab", "Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 6)", - "m4robo__b", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 8)", - "m4robo__c", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 9)", - "m4robo__d", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 10)", - "m4robo__e", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 11)", - "m4robo__f", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 12)", - "m4robo__g", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 13)", - "m4robo__h", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 14)", - "m4robo__i", "Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 15)", - "m4robo__j", "Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 7)", - "m4robo__k", "Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 8)", - "m4robo__l", "Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 9)", - "m4robo__m", "Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 10)", - "m4robo__n", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 1)", - "m4robo__o", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 2)", - "m4robo__p", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 3)", - "m4robo__q", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 4)", - "m4robo__r", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 5)", - "m4robo__s", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 6)", - "m4robo__t", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 7)", - "m4robo__u", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 8)", - "m4robo__v", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 9)", - "m4robo__w", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 10)", - "m4robo__x", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 11)", - "m4robo__y", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 12)", - "m4robo__z", "Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 13)", - "m4rockmn", "Rocket Money (Barcrest) (MPU4) (set 1)", - "m4rockmn__a", "Rocket Money (Barcrest) (MPU4) (set 2)", - "m4rockmn__b", "Rocket Money (Barcrest) (MPU4) (set 3)", - "m4rockmn__c", "Rocket Money (Barcrest) (MPU4) (set 4)", - "m4rockmn__d", "Rocket Money (Barcrest) (MPU4) (set 5)", - "m4rockmn__e", "Rocket Money (Barcrest) (MPU4) (set 6)", - "m4rockmn__f", "Rocket Money (Barcrest) (MPU4) (set 7)", - "m4rockmn__g", "Rocket Money (Barcrest) (MPU4) (set 8)", - "m4rockmn__h", "Rocket Money (Barcrest) (MPU4) (set 9)", - "m4rockmn__i", "Rocket Money (Barcrest) (MPU4) (set 10)", - "m4rockmn__j", "Rocket Money (Barcrest) (MPU4) (set 11)", - "m4rockmn__k", "Rocket Money (Barcrest) (MPU4) (set 12)", - "m4rotex", "Rotex (Union) (MPU4)", - "m4royjwl", "Royal Jewels (Barcrest) (MPU4)", - "m4rsg", "Ready Steady Go (Barcrest) (MPU4, Mod 2 type, V1.2)", - "m4rsga", "Ready Steady Go (Barcrest) (MPU4, Mod 2 type, V1.0)", - "m4runawy", "Runaway Trail (Barcrest) (MPU4)", - "m4runawyb", "Runaway Trail (Barcrest) (v1.2?) (MPU4)", - "m4rwb", "Red White & Blue (Barcrest) (MPU4) (DRW)", - "m4safar", "Safari Club (Mdm) (MPU4)", - "m4salsa", "Salsa (Barcrest) (MPU4) (DSA)", - "m4samu", "Samurai (Barcrest) (Dutch) (MPU4)", - "m4sayno", "Say No More (Barcrest) (MPU4) (set 1)", - "m4sayno__a", "Say No More (Barcrest) (MPU4) (set 2)", - "m4sayno__b", "Say No More (Barcrest) (MPU4) (set 3)", - "m4sayno__c", "Say No More (Barcrest) (MPU4) (set 4)", - "m4sayno__d", "Say No More (Barcrest) (MPU4) (set 5)", - "m4sb5", "Sunset Boulevard (Barcrest) (MPU4) (BSB 0.3)", - "m4sbx", "Super Bear X (MPU4?) (set 1)", - "m4sbxa", "Super Bear X (MPU4?) (set 2)", - "m4sbxb", "Super Bear X (MPU4?) (set 3)", - "m4sbxc", "Super Bear X (MPU4?) (set 4)", - "m4sbxd", "Super Bear X (MPU4?) (set 5)", - "m4sbxe", "Super Bear X (MPU4?) (set 6)", - "m4screw", "Screwin' Around (Global) (MPU4, v0.8)", - "m4screwa", "Screwin' Around (Global) (MPU4, v0.7)", - "m4screwb", "Screwin' Around (Global) (MPU4, v0.5)", - "m4screwp", "Screwin' Around (Global) (MPU4, v0.8) (Protocol)", - "m4sctagt", "Secret Agent (Nova) (MPU4)", - "m4sdquid", "Sundance Quid (Qps) (MPU4) (set 1)", - "m4sdquid__a", "Sundance Quid (Qps) (MPU4) (set 2)", - "m4sdquid__b", "Sundance Quid (Qps) (MPU4) (set 3)", - "m4sdquid__c", "Sundance Quid (Qps) (MPU4) (set 4)", - "m4sdquid__d", "Sundance Quid (Qps) (MPU4) (set 5)", - "m4sdquid__e", "Sundance Quid (Qps) (MPU4) (set 6)", - "m4sdquid__f", "Sundance Quid (Qps) (MPU4) (set 7)", - "m4sdquid__g", "Sundance Quid (Qps) (MPU4) (set 8)", - "m4sdquid__h", "Sundance Quid (Qps) (MPU4) (set 9)", - "m4sdquid__i", "Sundance Quid (Qps) (MPU4) (set 10)", - "m4sdquid__j", "Sundance Quid (Qps) (MPU4) (set 11)", - "m4sdquid__k", "Sundance Quid (Qps) (MPU4) (set 12)", - "m4select", "Select (Union) (MPU4)", - "m4sgrab", "Smash 'n' Grab (Barcrest) (MPU4) (SAG 1.0, set 1)", - "m4sgraba", "Smash 'n' Grab (Barcrest) (MPU4) (set 1.0, set 2)", - "m4sgrabb", "Smash 'n' Grab (Barcrest) (MPU4) (SAG 3.4)", - "m4shkwav", "Shockwave (Qps) (MPU4) (set 1)", - "m4shkwav__a", "Shockwave (Qps) (MPU4) (set 2)", - "m4shkwav__b", "Shockwave (Qps) (MPU4) (set 3)", - "m4shkwav__c", "Shockwave (Qps) (MPU4) (set 4)", - "m4shkwav__d", "Shockwave (Qps) (MPU4) (set 5)", - "m4shkwav__e", "Shockwave (Qps) (MPU4) (set 6)", - "m4shkwav__f", "Shockwave (Qps) (MPU4) (set 7)", - "m4shkwav__g", "Shockwave (Qps) (MPU4) (set 8)", - "m4shocm", "Showcase Crystal Maze (Barcrest) (MPU4) (set 1)", - "m4shocm__a", "Showcase Crystal Maze (Barcrest) (MPU4) (set 2)", - "m4shocm__b", "Showcase Crystal Maze (Barcrest) (MPU4) (set 3)", - "m4shocm__c", "Showcase Crystal Maze (Barcrest) (MPU4) (set 4)", - "m4shocm__d", "Showcase Crystal Maze (Barcrest) (MPU4) (set 5)", - "m4shocm__e", "Showcase Crystal Maze (Barcrest) (MPU4) (set 6)", - "m4shocm__f", "Showcase Crystal Maze (Barcrest) (MPU4) (set 7)", - "m4shocm__g", "Showcase Crystal Maze (Barcrest) (MPU4) (set 8)", - "m4shocm__h", "Showcase Crystal Maze (Barcrest) (MPU4) (set 9)", - "m4shocm__i", "Showcase Crystal Maze (Barcrest) (MPU4) (set 10)", - "m4shocm__j", "Showcase Crystal Maze (Barcrest) (MPU4) (set 11)", - "m4shodf", "Showcase Duty Free (Barcrest) (MPU4) (set 1)", - "m4shodf__a", "Showcase Duty Free (Barcrest) (MPU4) (set 2)", - "m4shodf__b", "Showcase Duty Free (Barcrest) (MPU4) (set 3)", - "m4shodf__c", "Showcase Duty Free (Barcrest) (MPU4) (set 4)", - "m4shodf__d", "Showcase Duty Free (Barcrest) (MPU4) (set 5)", - "m4shodf__e", "Showcase Duty Free (Barcrest) (MPU4) (set 6)", - "m4shodf__f", "Showcase Duty Free (Barcrest) (MPU4) (set 7)", - "m4shodf__g", "Showcase Duty Free (Barcrest) (MPU4) (set 8)", - "m4shodf__h", "Showcase Duty Free (Barcrest) (MPU4) (set 9)", - "m4shodf__i", "Showcase Duty Free (Barcrest) (MPU4) (set 10)", - "m4shodf__j", "Showcase Duty Free (Barcrest) (MPU4) (set 11)", - "m4shodf__k", "Showcase Duty Free (Barcrest) (MPU4) (set 12)", - "m4shodf__l", "Showcase Duty Free (Barcrest) (MPU4) (set 13)", - "m4shoknr", "Shock 'n' Roll (Qps) (MPU4) (set 1)", - "m4shoknr__a", "Shock 'n' Roll (Qps) (MPU4) (set 2)", - "m4shoknr__b", "Shock 'n' Roll (Qps) (MPU4) (set 3)", - "m4shoknr__c", "Shock 'n' Roll (Qps) (MPU4) (set 4)", - "m4showtm", "Show Timer (Barcrest) (Dutch) (MPU4) (DSH1.3)", - "m4silnud", "Silver Nudger (Mdm?) (MPU4)", - "m4silshd", "Silver Shadow (Barcrest) (MPU4)", - "m4silshda", "Silver Shadow (Barcrest) (MPU4) (SH 2.0, set 1)", - "m4silshdb", "Silver Shadow (Barcrest) (MPU4) (SH 2.0, set 2)", - "m4sinbd", "Sinbad (Bwb) (MPU4) (set 1)", - "m4sinbd__a", "Sinbad (Bwb) (MPU4) (set 2)", - "m4sinbd__b", "Sinbad (Bwb) (MPU4) (set 3)", - "m4sinbd__c", "Sinbad (Bwb) (MPU4) (set 4)", - "m4sinbd__d", "Sinbad (Bwb) (MPU4) (set 5)", - "m4sinbd__e", "Sinbad (Bwb) (MPU4) (set 6)", - "m4sinbd__f", "Sinbad (Bwb) (MPU4) (set 7)", - "m4sinbd__g", "Sinbad (Bwb) (MPU4) (set 8)", - "m4sinbd__h", "Sinbad (Bwb) (MPU4) (set 9)", - "m4sinbd__i", "Sinbad (Bwb) (MPU4) (set 10)", - "m4sinbd__j", "Sinbad (Bwb) (MPU4) (set 11)", - "m4sinbd__k", "Sinbad (Bwb) (MPU4) (set 12)", - "m4sinbd__l", "Sinbad (Bwb) (MPU4) (set 13)", - "m4sinbd__m", "Sinbad (Bwb) (MPU4) (set 14)", - "m4sinbd__n", "Sinbad (Bwb) (MPU4) (set 15)", - "m4sinbd__o", "Sinbad (Bwb) (MPU4) (set 16)", - "m4sinbd__p", "Sinbad (Bwb) (MPU4) (set 17)", - "m4sinbd__q", "Sinbad (Bwb) (MPU4) (set 18)", - "m4sinbd__r", "Sinbad (Bwb) (MPU4) (set 19)", - "m4sinbd__s", "Sinbad (Bwb) (MPU4) (set 20)", - "m4sinbd__t", "Sinbad (Bwb) (MPU4) (set 21)", - "m4sinbd__u", "Sinbad (Bwb) (MPU4) (set 22)", - "m4sinbd__v", "Sinbad (Bwb) (MPU4) (set 23)", - "m4sinbd__w", "Sinbad (Bwb) (MPU4) (set 24)", - "m4sinbd__x", "Sinbad (Bwb) (MPU4) (set 25)", - "m4sinbdn", "Sinbad (Nova) (MPU4) (set 1)", - "m4sinbdn__a", "Sinbad (Nova) (MPU4) (set 2)", - "m4sinbdn__b", "Sinbad (Nova) (MPU4) (set 3)", - "m4sinbdn__c", "Sinbad (Nova) (MPU4) (set 4)", - "m4sinbdn__d", "Sinbad (Nova) (MPU4) (set 5)", - "m4sinbdn__e", "Sinbad (Nova) (MPU4) (set 6)", - "m4sinbdn__f", "Sinbad (Nova) (MPU4) (set 7)", - "m4sky", "Sky Sports (Bwb) (MPU4) (set 1)", - "m4sky__a", "Sky Sports (Bwb) (MPU4) (set 2)", - "m4sky__b", "Sky Sports (Bwb) (MPU4) (set 3)", - "m4sky__c", "Sky Sports (Bwb) (MPU4) (set 4)", - "m4sky__d", "Sky Sports (Bwb) (MPU4) (set 5)", - "m4smshgb", "Smash 'n' Grab (Mdm) (MPU4, set 1)", - "m4smshgba", "Smash 'n' Grab (Mdm) (MPU4, set 2)", - "m4smshgbb", "Smash 'n' Grab (Mdm) (MPU4, set 3)", - "m4smshgbc", "Smash 'n' Grab (Mdm) (MPU4, set 4)", - "m4snklad", "Snakes & Ladders (Mdm) (MPU4)", - "m4snookr", "Snooker (Eurocoin) (MPU4)", - "m4snowbl", "Snowball Bingo (Mdm) (MPU4)", - "m4solsil", "Solid Silver Club (Barcrest) (MPU4) (SOS 2.2)", - "m4solsila", "Solid Silver Club (Barcrest) (MPU4) (SOS 2.1)", - "m4souls", "Soul Sister (Bwb) (MPU4) (set 1)", - "m4souls__a", "Soul Sister (Bwb) (MPU4) (set 2)", - "m4souls__b", "Soul Sister (Bwb) (MPU4) (set 3)", - "m4souls__c", "Soul Sister (Bwb) (MPU4) (set 4)", - "m4souls__d", "Soul Sister (Bwb) (MPU4) (set 5)", - "m4souls__e", "Soul Sister (Bwb) (MPU4) (set 6)", - "m4souls__f", "Soul Sister (Bwb) (MPU4) (set 7)", - "m4specu", "Speculator Club (Bwb) (MPU4)", - "m4spinbt", "Spin The Bottle (Bwb) (MPU4) (set 1)", - "m4spinbt__a", "Spin The Bottle (Bwb) (MPU4) (set 2)", - "m4spinbt__b", "Spin The Bottle (Bwb) (MPU4) (set 3)", - "m4spinbt__c", "Spin The Bottle (Bwb) (MPU4) (set 4)", - "m4spinbt__d", "Spin The Bottle (Bwb) (MPU4) (set 5)", - "m4spinbt__e", "Spin The Bottle (Bwb) (MPU4) (set 6)", - "m4spinbt__f", "Spin The Bottle (Bwb) (MPU4) (set 7)", - "m4spinbt__g", "Spin The Bottle (Bwb) (MPU4) (set 8)", - "m4spnwin", "Spin A Win (Cotswold Microsystems) (MPU4) (set 1)", - "m4spnwina", "Spin A Win (Cotswold Microsystems) (MPU4) (set 2)", - "m4spnwnc", "Spin-A-Win (Concept Games Ltd) (MPU4) (set 1)", - "m4spnwnc__a", "Spin-A-Win (Concept Games Ltd) (MPU4) (set 2)", - "m4spnwnc__b", "Spin-A-Win (Concept Games Ltd) (MPU4) (set 3)", - "m4spotln", "Spotlight (Nova) (MPU4)", - "m4spton", "Spot On (Pcp) (MPU4)", - "m4squid", "Squids In (Barcrest) (MPU4) (set 1)", - "m4squid__a", "Squids In (Barcrest) (MPU4) (set 2)", - "m4squid__b", "Squids In (Barcrest) (MPU4) (set 3)", - "m4squid__c", "Squids In (Barcrest) (MPU4) (set 4)", - "m4ssclas", "Super Streak Classic (Barcrest) (MPU4) (set 1)", - "m4ssclas__a", "Super Streak Classic (Barcrest) (MPU4) (set 2)", - "m4ssclas__b", "Super Streak Classic (Barcrest) (MPU4) (set 3)", - "m4ssclas__c", "Super Streak Classic (Barcrest) (MPU4) (set 4)", - "m4ssclas__d", "Super Streak Classic (Barcrest) (MPU4) (set 5)", - "m4ssclas__e", "Super Streak Classic (Barcrest) (MPU4) (set 6)", - "m4ssclas__f", "Super Streak Classic (Barcrest) (MPU4) (hack)", - "m4sss", "Spend Spend Spend (Barcrest) (MPU4) (set 1)", - "m4sss__a", "Spend Spend Spend (Barcrest) (MPU4) (set 2)", - "m4sss__b", "Spend Spend Spend (Barcrest) (MPU4) (set 3)", - "m4sss__c", "Spend Spend Spend (Barcrest) (MPU4) (set 4)", - "m4sss__d", "Spend Spend Spend (Barcrest) (MPU4) (set 5)", - "m4sss__e", "Spend Spend Spend (Barcrest) (MPU4) (set 6)", - "m4sss__f", "Spend Spend Spend (Barcrest) (MPU4) (set 7)", - "m4sss__g", "Spend Spend Spend (Barcrest) (MPU4) (set 8)", - "m4sss__h", "Spend Spend Spend (Barcrest) (MPU4) (set 9)", - "m4sss__i", "Spend Spend Spend (Barcrest) (MPU4) (set 10)", - "m4sss__j", "Spend Spend Spend (Barcrest) (MPU4) (set 11)", - "m4sss__k", "Spend Spend Spend (Barcrest) (MPU4) (set 12)", - "m4sss__l", "Spend Spend Spend (Barcrest) (MPU4) (set 13)", - "m4sstrek", "Super Streak (bootleg) (MPU4)", - "m4stakeu", "Stake Up Club (Barcrest) (MPU4) (SU 4.4)", - "m4stakeua", "Stake Up Club (Barcrest) (MPU4) (SU 4.8)", - "m4stakex", "Stake X (Leisurama) (MPU4, set 1)", - "m4stakexa", "Stake X (Leisurama) (MPU4, set 2)", - "m4stand2", "Stand To Deliver (DJE) (MPU4)", - "m4starbr", "Stars And Bars (Barcrest) (Dutch) (MPU4)", - "m4stards", "Stardust (Barcrest) (Dutch) (MPU4)", - "m4starst", "Stars & Stripes (Bwb) (MPU4) (set 1)", - "m4starst__a", "Stars & Stripes (Bwb) (MPU4) (set 2)", - "m4starst__b", "Stars & Stripes (Bwb) (MPU4) (set 3)", - "m4starst__c", "Stars & Stripes (Bwb) (MPU4) (set 4)", - "m4starst__d", "Stars & Stripes (Bwb) (MPU4) (set 5)", - "m4starst__e", "Stars & Stripes (Bwb) (MPU4) (set 6)", - "m4starst__f", "Stars & Stripes (Bwb) (MPU4) (set 7)", - "m4starst__g", "Stars & Stripes (Bwb) (MPU4) (set 8)", - "m4starst__h", "Stars & Stripes (Bwb) (MPU4) (set 9)", - "m4starst__i", "Stars & Stripes (Bwb) (MPU4) (set 10)", - "m4starst__j", "Stars & Stripes (Bwb) (MPU4) (set 11)", - "m4stc", "unknown MPU4 'STC 0.1' (Barcrest) (MPU4)", - "m4steptm", "Step Timer (Barcrest) (Dutch) (MPU4) (DST 1.1)", - "m4stopcl", "Stop the Clock (Barcrest) (MPU4) (SC2.5)", - "m4sunclb", "Sun Club (Bwb) (MPU4) (set 1)", - "m4sunclba", "Sun Club (Bwb) (MPU4) (set 2)", - "m4sunday", "Sunday Sport (Pcp) (MPU4)", - "m4sunscl", "Sunset Club (Bwb) (MPU4) (set 1)", - "m4sunscla", "Sunset Club (Bwb) (MPU4) (set 2)", - "m4sunsclb", "Sunset Club (Bwb) (MPU4) (set 3)", - "m4sunset", "Sunset Boulevard (Barcrest) (MPU4) (BSB 0.4)", - "m4sunseta", "Sunset Boulevard (Barcrest) (MPU4) (B25 1.2, set 1)", - "m4sunsetb", "Sunset Boulevard (Barcrest) (MPU4) (B25 1.2, set 2)", - "m4sunsetc", "Sunset Boulevard (Barcrest) (MPU4) (OSB 0.2)", - "m4sunsetd", "Sunset Boulevard (Barcrest) (MPU4) (SBU 2.0)", - "m4sunsete", "Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.1)", - "m4sunsetf", "Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 1)", - "m4sunsetg", "Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 2)", - "m4sunseth", "Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 3, bad)", - "m4sunseti", "Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 4)", - "m4sunsetj", "Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 5)", - "m4sunsetk", "Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.1)", - "m4sunsetl", "Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 1)", - "m4sunsetm", "Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 2)", - "m4sunsetn", "Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 3)", - "m4sunseto", "Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 4)", - "m4sunsetp", "Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 5)", - "m4sunsetq", "Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 6)", - "m4sunsetr", "Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 7)", - "m4sunsets", "Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 8)", - "m4sunsett", "Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 9)", - "m4supbf", "Super Bucks Fizz Club (Barcrest) (MPU4) (set 1)", - "m4supbfa", "Super Bucks Fizz Club (Barcrest) (MPU4) (set 2)", - "m4supbjc", "Super Blackjack Club (Barcrest) (MPU4) (set 1)", - "m4supbjca", "Super Blackjack Club (Barcrest) (MPU4) (set 2)", - "m4supbjcb", "Super Blackjack Club (Barcrest) (MPU4) (set 3)", - "m4supbjcc", "Super Blackjack Club (Barcrest) (MPU4) (set 4)", - "m4supbjcd", "Super Blackjack Club (Barcrest) (MPU4) (set 5)", - "m4supfru", "Supafruits (Union) (MPU4, set 1)", - "m4supfrua", "Supafruits (Union) (MPU4, set 2)", - "m4suphv", "Super Hyper Viper (Barcrest) (MPU4) (set 1)", - "m4suphv__a", "Super Hyper Viper (Barcrest) (MPU4) (set 2)", - "m4suphv__b", "Super Hyper Viper (Barcrest) (MPU4) (set 3)", - "m4suphv__c", "Super Hyper Viper (Barcrest) (MPU4) (set 4)", - "m4suphv__d", "Super Hyper Viper (Barcrest) (MPU4) (set 5)", - "m4suphv__e", "Super Hyper Viper (Barcrest) (MPU4) (set 6)", - "m4suphv__f", "Super Hyper Viper (Barcrest) (MPU4) (set 7)", - "m4suphv__g", "Super Hyper Viper (Barcrest) (MPU4) (set 8)", - "m4suphv__h", "Super Hyper Viper (Barcrest) (MPU4) (set 9)", - "m4suphv__i", "Super Hyper Viper (Barcrest) (MPU4) (set 10)", - "m4suphv__j", "Super Hyper Viper (Barcrest) (MPU4) (set 11)", - "m4suphv__k", "Super Hyper Viper (Barcrest) (MPU4) (set 12)", - "m4suphv__l", "Super Hyper Viper (Barcrest) (MPU4) (set 13)", - "m4suphv__m", "Super Hyper Viper (Barcrest) (MPU4) (set 14)", - "m4suphv__n", "Super Hyper Viper (Barcrest) (MPU4) (set 15)", - "m4suphv__o", "Super Hyper Viper (Barcrest) (MPU4) (set 16)", - "m4suphv__p", "Super Hyper Viper (Barcrest) (MPU4) (set 17)", - "m4supjst", "Super Jester (Pcp) (MPU4) (set 1)", - "m4supjsta", "Super Jester (Pcp) (MPU4) (set 2)", - "m4supjstb", "Super Jester (Pcp) (MPU4) (set 3)", - "m4supjstc", "Super Jester (Pcp) (MPU4) (set 4)", - "m4supjstd", "Super Jester (Pcp) (MPU4) (set 5)", - "m4supjste", "Super Jester (Pcp) (MPU4) (set 6)", - "m4supleg", "Super League (Bwb) (MPU4) (set 1)", - "m4supleg__a", "Super League (Bwb) (MPU4) (set 2)", - "m4supleg__b", "Super League (Bwb) (MPU4) (set 3)", - "m4supleg__c", "Super League (Bwb) (MPU4) (set 4)", - "m4supleg__d", "Super League (Bwb) (MPU4) (set 5)", - "m4suplegw", "Super League (Whitbread / Bwb) (MPU4)", - "m4supscr", "Super Soccer (Bwb) (MPU4) (set 1)", - "m4supscr__a", "Super Soccer (Bwb) (MPU4) (set 2)", - "m4supscr__b", "Super Soccer (Bwb) (MPU4) (set 3)", - "m4supscr__c", "Super Soccer (Bwb) (MPU4) (set 4)", - "m4supscr__d", "Super Soccer (Bwb) (MPU4) (set 5)", - "m4supscr__e", "Super Soccer (Bwb) (MPU4) (set 6)", - "m4supscr__f", "Super Soccer (Bwb) (MPU4) (set 7)", - "m4supscr__g", "Super Soccer (Bwb) (MPU4) (set 8)", - "m4supscr__h", "Super Soccer (Bwb) (MPU4) (set 9)", - "m4supscr__i", "Super Soccer (Bwb) (MPU4) (set 10)", - "m4supscr__j", "Super Soccer (Bwb) (MPU4) (set 11)", - "m4supscr__k", "Super Soccer (Bwb) (MPU4) (set 12)", - "m4supscr__l", "Super Soccer (Bwb) (MPU4) (set 13)", - "m4supscr__m", "Super Soccer (Bwb) (MPU4) (set 14)", - "m4supscr__n", "Super Soccer (Bwb) (MPU4) (set 15)", - "m4supsl", "Supa Silva (Barcrest) (MPU4)", - "m4supslt", "Supa Slot (Barcrest) (MPU4)", - "m4supst", "Super Streak (Barcrest) (MPU4) (set 1)", - "m4supst__0", "Super Streak (Barcrest) (MPU4) (set 28)", - "m4supst__1", "Super Streak (Barcrest) (MPU4) (set 29)", - "m4supst__2", "Super Streak (Barcrest) (MPU4) (set 30)", - "m4supst__3", "Super Streak (Barcrest) (MPU4) (set 31)", - "m4supst__4", "Super Streak (Barcrest) (MPU4) (set 32)", - "m4supst__5", "Super Streak (Barcrest) (MPU4) (set 33)", - "m4supst__6", "Super Streak (Barcrest) (MPU4) (set 34)", - "m4supst__7", "Super Streak (Barcrest) (MPU4) (set 35)", - "m4supst__8", "Super Streak (Barcrest) (MPU4) (set 36)", - "m4supst__9", "Super Streak (Barcrest) (MPU4) (set 37)", - "m4supst__a", "Super Streak (Barcrest) (MPU4) (set 2)", - "m4supst__a0", "Super Streak (Barcrest) (MPU4) (set 64)", - "m4supst__a1", "Super Streak (Barcrest) (MPU4) (set 65)", - "m4supst__a2", "Super Streak (Barcrest) (MPU4) (set 66)", - "m4supst__a3", "Super Streak (Barcrest) (MPU4) (set 67)", - "m4supst__a4", "Super Streak (Barcrest) (MPU4) (set 68)", - "m4supst__a5", "Super Streak (Barcrest) (MPU4) (set 69)", - "m4supst__a6", "Super Streak (Barcrest) (MPU4) (set 70)", - "m4supst__a7", "Super Streak (Barcrest) (MPU4) (set 71)", - "m4supst__a8", "Super Streak (Barcrest) (MPU4) (set 72)", - "m4supst__a9", "Super Streak (Barcrest) (MPU4) (set 73)", - "m4supst__aa", "Super Streak (Barcrest) (MPU4) (set 38)", - "m4supst__ab", "Super Streak (Barcrest) (MPU4) (set 39)", - "m4supst__ac", "Super Streak (Barcrest) (MPU4) (set 40)", - "m4supst__ad", "Super Streak (Barcrest) (MPU4) (set 41)", - "m4supst__ae", "Super Streak (Barcrest) (MPU4) (set 42)", - "m4supst__af", "Super Streak (Barcrest) (MPU4) (set 43)", - "m4supst__ag", "Super Streak (Barcrest) (MPU4) (set 44)", - "m4supst__ah", "Super Streak (Barcrest) (MPU4) (set 45)", - "m4supst__ai", "Super Streak (Barcrest) (MPU4) (set 46)", - "m4supst__aj", "Super Streak (Barcrest) (MPU4) (set 47)", - "m4supst__ak", "Super Streak (Barcrest) (MPU4) (set 48)", - "m4supst__al", "Super Streak (Barcrest) (MPU4) (set 49)", - "m4supst__am", "Super Streak (Barcrest) (MPU4) (set 50)", - "m4supst__an", "Super Streak (Barcrest) (MPU4) (set 51)", - "m4supst__ao", "Super Streak (Barcrest) (MPU4) (set 52)", - "m4supst__ap", "Super Streak (Barcrest) (MPU4) (set 53)", - "m4supst__aq", "Super Streak (Barcrest) (MPU4) (set 54)", - "m4supst__ar", "Super Streak (Barcrest) (MPU4) (set 55)", - "m4supst__as", "Super Streak (Barcrest) (MPU4) (set 56)", - "m4supst__at", "Super Streak (Barcrest) (MPU4) (set 57)", - "m4supst__au", "Super Streak (Barcrest) (MPU4) (set 58)", - "m4supst__av", "Super Streak (Barcrest) (MPU4) (set 59)", - "m4supst__aw", "Super Streak (Barcrest) (MPU4) (set 60)", - "m4supst__ax", "Super Streak (Barcrest) (MPU4) (set 61)", - "m4supst__ay", "Super Streak (Barcrest) (MPU4) (set 62)", - "m4supst__az", "Super Streak (Barcrest) (MPU4) (set 63)", - "m4supst__b", "Super Streak (Barcrest) (MPU4) (set 3)", - "m4supst__b0", "Super Streak (Barcrest) (MPU4) (set 100)", - "m4supst__b1", "Super Streak (Barcrest) (MPU4) (set 101)", - "m4supst__b2", "Super Streak (Barcrest) (MPU4) (set 102)", - "m4supst__b3", "Super Streak (Barcrest) (MPU4) (set 103)", - "m4supst__b4", "Super Streak (Barcrest) (MPU4) (set 104)", - "m4supst__b5", "Super Streak (Barcrest) (MPU4) (set 105)", - "m4supst__ba", "Super Streak (Barcrest) (MPU4) (set 74)", - "m4supst__bb", "Super Streak (Barcrest) (MPU4) (set 75)", - "m4supst__bc", "Super Streak (Barcrest) (MPU4) (set 76)", - "m4supst__bd", "Super Streak (Barcrest) (MPU4) (set 77)", - "m4supst__be", "Super Streak (Barcrest) (MPU4) (set 78)", - "m4supst__bf", "Super Streak (Barcrest) (MPU4) (set 79)", - "m4supst__bg", "Super Streak (Barcrest) (MPU4) (set 80)", - "m4supst__bh", "Super Streak (Barcrest) (MPU4) (set 81)", - "m4supst__bi", "Super Streak (Barcrest) (MPU4) (set 82)", - "m4supst__bj", "Super Streak (Barcrest) (MPU4) (set 83)", - "m4supst__bk", "Super Streak (Barcrest) (MPU4) (set 84)", - "m4supst__bl", "Super Streak (Barcrest) (MPU4) (set 85)", - "m4supst__bm", "Super Streak (Barcrest) (MPU4) (set 86)", - "m4supst__bn", "Super Streak (Barcrest) (MPU4) (set 87)", - "m4supst__bo", "Super Streak (Barcrest) (MPU4) (set 88)", - "m4supst__bp", "Super Streak (Barcrest) (MPU4) (set 89)", - "m4supst__bq", "Super Streak (Barcrest) (MPU4) (set 90)", - "m4supst__br", "Super Streak (Barcrest) (MPU4) (set 91)", - "m4supst__bs", "Super Streak (Barcrest) (MPU4) (set 92)", - "m4supst__bt", "Super Streak (Barcrest) (MPU4) (set 93)", - "m4supst__bu", "Super Streak (Barcrest) (MPU4) (set 94)", - "m4supst__bv", "Super Streak (Barcrest) (MPU4) (set 95)", - "m4supst__bw", "Super Streak (Barcrest) (MPU4) (set 96)", - "m4supst__bx", "Super Streak (Barcrest) (MPU4) (set 97)", - "m4supst__by", "Super Streak (Barcrest) (MPU4) (set 98)", - "m4supst__bz", "Super Streak (Barcrest) (MPU4) (set 99)", - "m4supst__c", "Super Streak (Barcrest) (MPU4) (set 4)", - "m4supst__d", "Super Streak (Barcrest) (MPU4) (set 5)", - "m4supst__e", "Super Streak (Barcrest) (MPU4) (set 6)", - "m4supst__f", "Super Streak (Barcrest) (MPU4) (set 7)", - "m4supst__g", "Super Streak (Barcrest) (MPU4) (set 8)", - "m4supst__h", "Super Streak (Barcrest) (MPU4) (set 9)", - "m4supst__i", "Super Streak (Barcrest) (MPU4) (set 10)", - "m4supst__j", "Super Streak (Barcrest) (MPU4) (set 11)", - "m4supst__k", "Super Streak (Barcrest) (MPU4) (set 12)", - "m4supst__l", "Super Streak (Barcrest) (MPU4) (set 13)", - "m4supst__m", "Super Streak (Barcrest) (MPU4) (set 14)", - "m4supst__n", "Super Streak (Barcrest) (MPU4) (set 15)", - "m4supst__o", "Super Streak (Barcrest) (MPU4) (set 16)", - "m4supst__p", "Super Streak (Barcrest) (MPU4) (set 17)", - "m4supst__q", "Super Streak (Barcrest) (MPU4) (set 18)", - "m4supst__r", "Super Streak (Barcrest) (MPU4) (set 19)", - "m4supst__s", "Super Streak (Barcrest) (MPU4) (set 20)", - "m4supst__t", "Super Streak (Barcrest) (MPU4) (set 21)", - "m4supst__u", "Super Streak (Barcrest) (MPU4) (set 22)", - "m4supst__v", "Super Streak (Barcrest) (MPU4) (set 23)", - "m4supst__w", "Super Streak (Barcrest) (MPU4) (set 24)", - "m4supst__x", "Super Streak (Barcrest) (MPU4) (set 25)", - "m4supst__y", "Super Streak (Barcrest) (MPU4) (set 26)", - "m4supst__z", "Super Streak (Barcrest) (MPU4) (set 27)", - "m4suptrn", "Supatron (Barcrest) (MPU4)", - "m4suptub", "Super Tubes (Barcrest) (MPU4) (S4T 1.0, set 1))", - "m4suptuba", "Super Tubes (Barcrest) (MPU4) (S4T 1.0, set 2)", - "m4suptwo", "Super Two (Barcrest) (MPU4)", - "m4sure", "Sure Thing (Bwb) (MPU4) (set 1)", - "m4sure__a", "Sure Thing (Bwb) (MPU4) (set 2)", - "m4sure__b", "Sure Thing (Bwb) (MPU4) (set 3)", - "m4sure__c", "Sure Thing (Bwb) (MPU4) (set 4)", - "m4surf", "Super Surfin' (Gemini) (MPU4) (set 1)", - "m4surfa", "Super Surfin' (Gemini) (MPU4) (set 2)", - "m4surfb", "Super Surfin' (Gemini) (MPU4) (set 3)", - "m4swpnot", "Swap-A-Note (Barcrest) (v3.3) (MPU4)", - "m4swpnota", "Swap-A-Note (Barcrest) (v3.2D) (MPU4)", - "m4t266", "unknown MPU4 'TTO 1.1' (MPU4?)", - "m4taj", "Taj Mahal (Barcrest) (Dutch) (MPU4)", - "m4take2", "Take Two (Barcrest) (MPU4) (TTO 1.2)", - "m4take2a", "Take Two (Barcrest) (MPU4) (TTO 1.1)", - "m4take5", "Take 5 (Barcrest) (MPU4)", - "m4takepk", "Take Your Pick (Barcrest) (MPU4) (set 1)", - "m4takepk__0", "Take Your Pick (Barcrest) (MPU4) (set 28)", - "m4takepk__1", "Take Your Pick (Barcrest) (MPU4) (set 29)", - "m4takepk__a", "Take Your Pick (Barcrest) (MPU4) (set 2)", - "m4takepk__b", "Take Your Pick (Barcrest) (MPU4) (set 3)", - "m4takepk__c", "Take Your Pick (Barcrest) (MPU4) (set 4)", - "m4takepk__d", "Take Your Pick (Barcrest) (MPU4) (set 5)", - "m4takepk__e", "Take Your Pick (Barcrest) (MPU4) (set 6)", - "m4takepk__f", "Take Your Pick (Barcrest) (MPU4) (set 7)", - "m4takepk__g", "Take Your Pick (Barcrest) (MPU4) (set 8)", - "m4takepk__h", "Take Your Pick (Barcrest) (MPU4) (set 9)", - "m4takepk__i", "Take Your Pick (Barcrest) (MPU4) (set 10)", - "m4takepk__j", "Take Your Pick (Barcrest) (MPU4) (set 11)", - "m4takepk__k", "Take Your Pick (Barcrest) (MPU4) (set 12)", - "m4takepk__l", "Take Your Pick (Barcrest) (MPU4) (set 13)", - "m4takepk__m", "Take Your Pick (Barcrest) (MPU4) (set 14)", - "m4takepk__n", "Take Your Pick (Barcrest) (MPU4) (set 15)", - "m4takepk__o", "Take Your Pick (Barcrest) (MPU4) (set 16)", - "m4takepk__p", "Take Your Pick (Barcrest) (MPU4) (set 17)", - "m4takepk__q", "Take Your Pick (Barcrest) (MPU4) (set 18)", - "m4takepk__r", "Take Your Pick (Barcrest) (MPU4) (set 19)", - "m4takepk__s", "Take Your Pick (Barcrest) (MPU4) (set 20)", - "m4takepk__t", "Take Your Pick (Barcrest) (MPU4) (set 21)", - "m4takepk__u", "Take Your Pick (Barcrest) (MPU4) (set 22)", - "m4takepk__v", "Take Your Pick (Barcrest) (MPU4) (set 23)", - "m4takepk__w", "Take Your Pick (Barcrest) (MPU4) (set 24)", - "m4takepk__x", "Take Your Pick (Barcrest) (MPU4) (set 25)", - "m4takepk__y", "Take Your Pick (Barcrest) (MPU4) (set 26)", - "m4takepk__z", "Take Your Pick (Barcrest) (MPU4) (set 27)", - "m4tbplay", "Turbo Play (Barcrest) (Dutch) (MPU4) (DTP) (set 1)", - "m4tbplaya", "Turbo Play (Barcrest) (Dutch) (MPU4) (DTP) (set 2)", - "m4tbplayb", "Turbo Play (Barcrest) (Dutch) (MPU4) (DTP) (set 3)", - "m4tbreel", "Turbo Reel (Barcrest) (Dutch) (MPU4) (set 1)", - "m4tbrldx", "Turbo Reel (Barcrest) (Dutch) (MPU4) (set 3, Deluxe?)", - "m4techno", "Techno Reel (Barcrest) (MPU4) (DTE) (set 1)", - "m4technoa", "Techno Reel (Barcrest) (MPU4) (DTE) (set 2)", - "m4tenten", "10 X 10 (Barcrest) (MPU4) (set 1)", - "m4tenten__0", "10 X 10 (Barcrest) (MPU4) (set 28)", - "m4tenten__1", "10 X 10 (Barcrest) (MPU4) (set 29)", - "m4tenten__2", "10 X 10 (Barcrest) (MPU4) (set 30)", - "m4tenten__3", "10 X 10 (Barcrest) (MPU4) (set 31)", - "m4tenten__4", "10 X 10 (Barcrest) (MPU4) (set 32)", - "m4tenten__5", "10 X 10 (Barcrest) (MPU4) (set 33)", - "m4tenten__6", "10 X 10 (Barcrest) (MPU4) (set 34)", - "m4tenten__7", "10 X 10 (Barcrest) (MPU4) (set 35)", - "m4tenten__8", "10 X 10 (Barcrest) (MPU4) (set 36)", - "m4tenten__9", "10 X 10 (Barcrest) (MPU4) (set 37)", - "m4tenten__a", "10 X 10 (Barcrest) (MPU4) (set 2)", - "m4tenten__a0", "10 X 10 (Barcrest) (MPU4) (set 64)", - "m4tenten__a1", "10 X 10 (Barcrest) (MPU4) (set 65)", - "m4tenten__a2", "10 X 10 (Barcrest) (MPU4) (set 66)", - "m4tenten__aa", "10 X 10 (Barcrest) (MPU4) (set 38)", - "m4tenten__ab", "10 X 10 (Barcrest) (MPU4) (set 39)", - "m4tenten__ac", "10 X 10 (Barcrest) (MPU4) (set 40)", - "m4tenten__ad", "10 X 10 (Barcrest) (MPU4) (set 41)", - "m4tenten__ae", "10 X 10 (Barcrest) (MPU4) (set 42)", - "m4tenten__af", "10 X 10 (Barcrest) (MPU4) (set 43)", - "m4tenten__ag", "10 X 10 (Barcrest) (MPU4) (set 44)", - "m4tenten__ah", "10 X 10 (Barcrest) (MPU4) (set 45)", - "m4tenten__ai", "10 X 10 (Barcrest) (MPU4) (set 46)", - "m4tenten__aj", "10 X 10 (Barcrest) (MPU4) (set 47)", - "m4tenten__ak", "10 X 10 (Barcrest) (MPU4) (set 48)", - "m4tenten__al", "10 X 10 (Barcrest) (MPU4) (set 49)", - "m4tenten__am", "10 X 10 (Barcrest) (MPU4) (set 50)", - "m4tenten__an", "10 X 10 (Barcrest) (MPU4) (set 51)", - "m4tenten__ao", "10 X 10 (Barcrest) (MPU4) (set 52)", - "m4tenten__ap", "10 X 10 (Barcrest) (MPU4) (set 53)", - "m4tenten__aq", "10 X 10 (Barcrest) (MPU4) (set 54)", - "m4tenten__ar", "10 X 10 (Barcrest) (MPU4) (set 55)", - "m4tenten__as", "10 X 10 (Barcrest) (MPU4) (set 56)", - "m4tenten__at", "10 X 10 (Barcrest) (MPU4) (set 57)", - "m4tenten__au", "10 X 10 (Barcrest) (MPU4) (set 58)", - "m4tenten__av", "10 X 10 (Barcrest) (MPU4) (set 59)", - "m4tenten__aw", "10 X 10 (Barcrest) (MPU4) (set 60)", - "m4tenten__ax", "10 X 10 (Barcrest) (MPU4) (set 61)", - "m4tenten__ay", "10 X 10 (Barcrest) (MPU4) (set 62)", - "m4tenten__az", "10 X 10 (Barcrest) (MPU4) (set 63)", - "m4tenten__b", "10 X 10 (Barcrest) (MPU4) (set 3)", - "m4tenten__c", "10 X 10 (Barcrest) (MPU4) (set 4)", - "m4tenten__d", "10 X 10 (Barcrest) (MPU4) (set 5)", - "m4tenten__e", "10 X 10 (Barcrest) (MPU4) (set 6)", - "m4tenten__f", "10 X 10 (Barcrest) (MPU4) (set 7)", - "m4tenten__g", "10 X 10 (Barcrest) (MPU4) (set 8)", - "m4tenten__h", "10 X 10 (Barcrest) (MPU4) (set 9)", - "m4tenten__i", "10 X 10 (Barcrest) (MPU4) (set 10)", - "m4tenten__j", "10 X 10 (Barcrest) (MPU4) (set 11)", - "m4tenten__k", "10 X 10 (Barcrest) (MPU4) (set 12)", - "m4tenten__l", "10 X 10 (Barcrest) (MPU4) (set 13)", - "m4tenten__m", "10 X 10 (Barcrest) (MPU4) (set 14)", - "m4tenten__n", "10 X 10 (Barcrest) (MPU4) (set 15)", - "m4tenten__o", "10 X 10 (Barcrest) (MPU4) (set 16)", - "m4tenten__p", "10 X 10 (Barcrest) (MPU4) (set 17)", - "m4tenten__q", "10 X 10 (Barcrest) (MPU4) (set 18)", - "m4tenten__r", "10 X 10 (Barcrest) (MPU4) (set 19)", - "m4tenten__s", "10 X 10 (Barcrest) (MPU4) (set 20)", - "m4tenten__t", "10 X 10 (Barcrest) (MPU4) (set 21)", - "m4tenten__u", "10 X 10 (Barcrest) (MPU4) (set 22)", - "m4tenten__v", "10 X 10 (Barcrest) (MPU4) (set 23)", - "m4tenten__w", "10 X 10 (Barcrest) (MPU4) (set 24)", - "m4tenten__x", "10 X 10 (Barcrest) (MPU4) (set 25)", - "m4tenten__y", "10 X 10 (Barcrest) (MPU4) (set 26)", - "m4tenten__z", "10 X 10 (Barcrest) (MPU4) (set 27)", - "m4thehit", "The Hit (Barcrest) (MPU4)", - "m4themob", "The Mob (Mdm) (MPU4, set 1)", - "m4themoba", "The Mob (Mdm) (MPU4, set 2)", - "m4themobb", "The Mob (Mdm) (MPU4, set 3)", - "m4thestr", "The Streak (Barcrest) (MPU4) (set 1)", - "m4thestr__a", "The Streak (Barcrest) (MPU4) (set 2)", - "m4thestr__b", "The Streak (Barcrest) (MPU4) (set 3)", - "m4thestr__c", "The Streak (Barcrest) (MPU4) (set 4)", - "m4thestr__d", "The Streak (Barcrest) (MPU4) (set 5)", - "m4thestr__e", "The Streak (Barcrest) (MPU4) (set 6)", - "m4thestr__f", "The Streak (Barcrest) (MPU4) (set 7)", - "m4thestr__g", "The Streak (Barcrest) (MPU4) (set 8)", - "m4thestr__h", "The Streak (Barcrest) (MPU4) (set 9)", - "m4thestr__i", "The Streak (Barcrest) (MPU4) (set 10)", - "m4thestr__j", "The Streak (Barcrest) (MPU4) (set 11)", - "m4thestr__k", "The Streak (Barcrest) (MPU4) (set 12)", - "m4thestr__l", "The Streak (Barcrest) (MPU4) (set 13)", - "m4thestr__m", "The Streak (Barcrest) (MPU4) (set 14)", - "m4thestr__n", "The Streak (Barcrest) (MPU4) (set 15)", - "m4thestr__o", "The Streak (Barcrest) (MPU4) (set 16)", - "m4thestr__p", "The Streak (Barcrest) (MPU4) (set 17)", - "m4thestr__q", "The Streak (Barcrest) (MPU4) (set 18)", - "m4thestr__r", "The Streak (Barcrest) (MPU4) (set 19)", - "m4thestr__s", "The Streak (Barcrest) (MPU4) (set 20)", - "m4thestr__t", "The Streak (Barcrest) (MPU4) (set 21)", - "m4thestr__u", "The Streak (Barcrest) (MPU4) (set 22)", - "m4thestr__v", "The Streak (Barcrest) (MPU4) (set 23)", - "m4thestr__w", "The Streak (Barcrest) (MPU4) (set 24)", - "m4thestr__x", "The Streak (Barcrest) (MPU4) (set 25)", - "m4thestr__y", "The Streak (Barcrest) (MPU4) (set 26)", - "m4tic", "Tic Tac Toe (Barcrest) (MPU4) (set 1)", - "m4tic__a", "Tic Tac Toe (Barcrest) (MPU4) (set 2)", - "m4tic__b", "Tic Tac Toe (Barcrest) (MPU4) (set 3)", - "m4tic__c", "Tic Tac Toe (Barcrest) (MPU4) (set 4)", - "m4tic__d", "Tic Tac Toe (Barcrest) (MPU4) (set 5)", - "m4tic__e", "Tic Tac Toe (Barcrest) (MPU4) (set 6)", - "m4tic__f", "Tic Tac Toe (Barcrest) (MPU4) (set 7)", - "m4tic__g", "Tic Tac Toe (Barcrest) (MPU4) (set 8)", - "m4tic__h", "Tic Tac Toe (Barcrest) (MPU4) (set 9)", - "m4tic__i", "Tic Tac Toe (Barcrest) (MPU4) (set 10)", - "m4tic__j", "Tic Tac Toe (Barcrest) (MPU4) (set 11)", - "m4tic__k", "Tic Tac Toe (Barcrest) (MPU4) (set 12)", - "m4tic__l", "Tic Tac Toe (Barcrest) (MPU4) (set 13)", - "m4tic__m", "Tic Tac Toe (Barcrest) (MPU4) (set 14)", - "m4tic__n", "Tic Tac Toe (Barcrest) (MPU4) (set 15)", - "m4tic__o", "Tic Tac Toe (Barcrest) (MPU4) (set 16)", - "m4tic__p", "Tic Tac Toe (Barcrest) (MPU4) (set 17)", - "m4tic__r", "Tic Tac Toe (Barcrest) (MPU4) (set 18)", - "m4tic__s", "Tic Tac Toe (Barcrest) (MPU4) (set 19)", - "m4ticcla", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 1)", - "m4ticcla__0", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 28)", - "m4ticcla__a", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 2)", - "m4ticcla__b", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 3)", - "m4ticcla__c", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 4)", - "m4ticcla__d", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 5)", - "m4ticcla__e", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 6)", - "m4ticcla__f", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 7)", - "m4ticcla__g", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 8)", - "m4ticcla__h", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 9)", - "m4ticcla__i", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 10)", - "m4ticcla__j", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 11)", - "m4ticcla__k", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 12)", - "m4ticcla__l", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 13)", - "m4ticcla__m", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 14)", - "m4ticcla__n", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 15)", - "m4ticcla__o", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 16)", - "m4ticcla__p", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 17)", - "m4ticcla__q", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 18)", - "m4ticcla__r", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 19)", - "m4ticcla__s", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 20)", - "m4ticcla__t", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 21)", - "m4ticcla__u", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 22)", - "m4ticcla__v", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 23)", - "m4ticcla__w", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 24)", - "m4ticcla__x", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 25)", - "m4ticcla__y", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 26)", - "m4ticcla__z", "Tic Tac Toe Classic (Barcrest) (MPU4) (set 27)", - "m4ticglc", "Tic Tac Toe Gold (Barcrest) (MPU4) (set 1)", - "m4ticglc__a", "Tic Tac Toe Gold (Barcrest) (MPU4) (set 2)", - "m4ticglc__b", "Tic Tac Toe Gold (Barcrest) (MPU4) (set 3)", - "m4ticglc__c", "Tic Tac Toe Gold (Barcrest) (MPU4) (set 4)", - "m4ticglc__d", "Tic Tac Toe Gold (Barcrest) (MPU4) (set 5)", - "m4tiktak", "Tic Tak Cash (Barcrest) (MPU4)", - "m4toma", "Tomahawk (Barcrest) (MPU4)", - "m4toot", "Ten Out Of Ten (Barcrest) (MPU4) (set 1)", - "m4toot__0", "Ten Out Of Ten (Barcrest) (MPU4) (set 28)", - "m4toot__1", "Ten Out Of Ten (Barcrest) (MPU4) (set 29)", - "m4toot__2", "Ten Out Of Ten (Barcrest) (MPU4) (set 30)", - "m4toot__3", "Ten Out Of Ten (Barcrest) (MPU4) (set 31)", - "m4toot__4", "Ten Out Of Ten (Barcrest) (MPU4) (set 32)", - "m4toot__5", "Ten Out Of Ten (Barcrest) (MPU4) (set 33)", - "m4toot__6", "Ten Out Of Ten (Barcrest) (MPU4) (set 34)", - "m4toot__7", "Ten Out Of Ten (Barcrest) (MPU4) (set 35)", - "m4toot__8", "Ten Out Of Ten (Barcrest) (MPU4) (set 36)", - "m4toot__9", "Ten Out Of Ten (Barcrest) (MPU4) (set 37)", - "m4toot__a", "Ten Out Of Ten (Barcrest) (MPU4) (set 2)", - "m4toot__aa", "Ten Out Of Ten (Barcrest) (MPU4) (set 38)", - "m4toot__ab", "Ten Out Of Ten (Barcrest) (MPU4) (set 39)", - "m4toot__ac", "Ten Out Of Ten (Barcrest) (MPU4) (set 40)", - "m4toot__ad", "Ten Out Of Ten (Barcrest) (MPU4) (set 41)", - "m4toot__ae", "Ten Out Of Ten (Barcrest) (MPU4) (set 42)", - "m4toot__af", "Ten Out Of Ten (Barcrest) (MPU4) (set 43)", - "m4toot__ag", "Ten Out Of Ten (Barcrest) (MPU4) (set 44)", - "m4toot__ah", "Ten Out Of Ten (Barcrest) (MPU4) (set 45)", - "m4toot__ai", "Ten Out Of Ten (Barcrest) (MPU4) (set 46)", - "m4toot__aj", "Ten Out Of Ten (Barcrest) (MPU4) (set 47)", - "m4toot__ak", "Ten Out Of Ten (Barcrest) (MPU4) (set 48)", - "m4toot__al", "Ten Out Of Ten (Barcrest) (MPU4) (set 49)", - "m4toot__b", "Ten Out Of Ten (Barcrest) (MPU4) (set 3)", - "m4toot__c", "Ten Out Of Ten (Barcrest) (MPU4) (set 4)", - "m4toot__d", "Ten Out Of Ten (Barcrest) (MPU4) (set 5)", - "m4toot__e", "Ten Out Of Ten (Barcrest) (MPU4) (set 6)", - "m4toot__f", "Ten Out Of Ten (Barcrest) (MPU4) (set 7)", - "m4toot__g", "Ten Out Of Ten (Barcrest) (MPU4) (set 8)", - "m4toot__h", "Ten Out Of Ten (Barcrest) (MPU4) (set 9)", - "m4toot__i", "Ten Out Of Ten (Barcrest) (MPU4) (set 10)", - "m4toot__j", "Ten Out Of Ten (Barcrest) (MPU4) (set 11)", - "m4toot__k", "Ten Out Of Ten (Barcrest) (MPU4) (set 12)", - "m4toot__l", "Ten Out Of Ten (Barcrest) (MPU4) (set 13)", - "m4toot__m", "Ten Out Of Ten (Barcrest) (MPU4) (set 14)", - "m4toot__n", "Ten Out Of Ten (Barcrest) (MPU4) (set 15)", - "m4toot__o", "Ten Out Of Ten (Barcrest) (MPU4) (set 16)", - "m4toot__p", "Ten Out Of Ten (Barcrest) (MPU4) (set 17)", - "m4toot__q", "Ten Out Of Ten (Barcrest) (MPU4) (set 18)", - "m4toot__r", "Ten Out Of Ten (Barcrest) (MPU4) (set 19)", - "m4toot__s", "Ten Out Of Ten (Barcrest) (MPU4) (set 20)", - "m4toot__t", "Ten Out Of Ten (Barcrest) (MPU4) (set 21)", - "m4toot__u", "Ten Out Of Ten (Barcrest) (MPU4) (set 22)", - "m4toot__v", "Ten Out Of Ten (Barcrest) (MPU4) (set 23)", - "m4toot__w", "Ten Out Of Ten (Barcrest) (MPU4) (set 24)", - "m4toot__x", "Ten Out Of Ten (Barcrest) (MPU4) (set 25)", - "m4toot__y", "Ten Out Of Ten (Barcrest) (MPU4) (set 26)", - "m4toot__z", "Ten Out Of Ten (Barcrest) (MPU4) (set 27)", - "m4toot__za", "Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3, hack?)", - "m4toot__zb", "Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.4, hack?)", - "m4topact", "Top Action (Barcrest) (Dutch) (MPU4) (set 1)", - "m4topacta", "Top Action (Barcrest) (Dutch) (MPU4) (set 2)", - "m4topdk", "Top Deck (Barcrest) (Dutch) (MPU4)", - "m4topdog", "Top Dog (Barcrest) (MPU4) (set 1)", - "m4topdog__a", "Top Dog (Barcrest) (MPU4) (set 2)", - "m4topdog__b", "Top Dog (Barcrest) (MPU4) (set 3)", - "m4topdog__c", "Top Dog (Barcrest) (MPU4) (set 4)", - "m4topdog__d", "Top Dog (Barcrest) (MPU4) (set 5)", - "m4topdog__e", "Top Dog (Barcrest) (MPU4) (set 6)", - "m4topdog__f", "Top Dog (Barcrest) (MPU4) (set 7)", - "m4topdog__g", "Top Dog (Barcrest) (MPU4) (set 8)", - "m4topdog__h", "Top Dog (Barcrest) (MPU4) (set 9)", - "m4topdog__i", "Top Dog (Barcrest) (MPU4) (set 10)", - "m4topdog__j", "Top Dog (Barcrest) (MPU4) (set 11)", - "m4topdog__k", "Top Dog (Barcrest) (MPU4) (set 12)", - "m4topdog__l", "Top Dog (Barcrest) (MPU4) (set 13)", - "m4topdog__m", "Top Dog (Barcrest) (MPU4) (set 14)", - "m4topdog__n", "Top Dog (Barcrest) (MPU4) (set 15)", - "m4topdog__o", "Top Dog (Barcrest) (MPU4) (set 16)", - "m4topdog__p", "Top Dog (Barcrest) (MPU4) (set 17)", - "m4topdog__q", "Top Dog (Barcrest) (MPU4) (set 18)", - "m4topdog__r", "Top Dog (Barcrest) (MPU4) (set 19)", - "m4topdog__s", "Top Dog (Barcrest) (MPU4) (set 20)", - "m4topdog__t", "Top Dog (Barcrest) (MPU4) (set 21)", - "m4topdog__u", "Top Dog (Barcrest) (MPU4) (set 22)", - "m4topdog__v", "Top Dog (Barcrest) (MPU4) (set 23)", - "m4topdog__w", "Top Dog (Barcrest) (MPU4) (set 24)", - "m4topdog__x", "Top Dog (Barcrest) (MPU4) (set 25)", - "m4topdog__y", "Top Dog (Barcrest) (MPU4) (set 26)", - "m4topdog__z", "Top Dog (Barcrest) (MPU4) (set 27)", - "m4topgr", "Top Gear (Barcrest) (MPU4)", - "m4toplot", "Top The Lot (Barcrest) (MPU4, T4L 1.0)", - "m4toprn", "Top Run (Barcrest) (Dutch) (MPU4)", - "m4topst", "Top Stop (Barcrest) (MPU4)", - "m4toptak", "Top Take (Barcrest) (MPU4)", - "m4topten", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4)", - "m4topten__0", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2YD)", - "m4topten__1", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2H)", - "m4topten__2", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2K)", - "m4topten__3", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2R)", - "m4topten__4", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2)", - "m4topten__5", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2Y)", - "m4topten__6", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2AD)", - "m4topten__7", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2B)", - "m4topten__8", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2BD)", - "m4topten__9", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2C)", - "m4topten__a", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0, hack?)", - "m4topten__aa", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2D)", - "m4topten__ab", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2DH)", - "m4topten__ac", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2KD)", - "m4topten__ad", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2RD)", - "m4topten__ae", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2YD)", - "m4topten__af", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2H)", - "m4topten__ag", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2K)", - "m4topten__ah", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2R)", - "m4topten__ai", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2)", - "m4topten__aj", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2Y)", - "m4topten__ak", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4AD)", - "m4topten__al", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4B)", - "m4topten__am", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4BD)", - "m4topten__an", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4C)", - "m4topten__ao", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4D)", - "m4topten__ap", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4DH)", - "m4topten__aq", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4KD)", - "m4topten__ar", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4RD)", - "m4topten__as", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4YD)", - "m4topten__at", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4H)", - "m4topten__au", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4K)", - "m4topten__av", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4R)", - "m4topten__aw", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4Y)", - "m4topten__ax", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.1)", - "m4topten__b", "Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2, hack?)", - "m4topten__e", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0AD)", - "m4topten__f", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0B)", - "m4topten__g", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0BD)", - "m4topten__h", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0C)", - "m4topten__i", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0D)", - "m4topten__j", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0DH)", - "m4topten__k", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0KD)", - "m4topten__l", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0RD)", - "m4topten__m", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0YD)", - "m4topten__n", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0H)", - "m4topten__o", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0K)", - "m4topten__p", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0R)", - "m4topten__q", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0)", - "m4topten__r", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0Y)", - "m4topten__s", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2AD)", - "m4topten__t", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2B)", - "m4topten__u", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2BD)", - "m4topten__v", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2C)", - "m4topten__w", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2D)", - "m4topten__x", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2DH)", - "m4topten__y", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2KD)", - "m4topten__z", "Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2RD)", - "m4toptena", "Top Tenner (Barcrest) (MPU4, Mod 2 type, TP 2.7)", - "m4toptim", "Top Timer (Barcrest) (Dutch) (MPU4) (DTT) (set 1)", - "m4toptima", "Top Timer (Barcrest) (Dutch) (MPU4) (DTT) (set 2)", - "m4tornad", "Tornado (Qps) (MPU4) (set 1)", - "m4tornad__a", "Tornado (Qps) (MPU4) (set 2)", - "m4tornad__b", "Tornado (Qps) (MPU4) (set 3)", - "m4tornad__c", "Tornado (Qps) (MPU4) (set 4)", - "m4tornad__d", "Tornado (Qps) (MPU4) (set 5)", - "m4tornad__e", "Tornado (Qps) (MPU4) (set 6)", - "m4tornad__f", "Tornado (Qps) (MPU4) (set 7)", - "m4tornad__g", "Tornado (Qps) (MPU4) (set 8)", - "m4treel", "Turbo Reels (unknown) (MPU4?) (set 1)", - "m4treela", "Turbo Reels (unknown) (MPU4?) (set 2)", - "m4trex", "Trex (Bwb) (MPU4) (set 1)", - "m4trex__a", "Trex (Bwb) (MPU4) (set 2)", - "m4trex__b", "Trex (Bwb) (MPU4) (set 3)", - "m4trex__c", "Trex (Bwb) (MPU4) (set 4)", - "m4trex__d", "Trex (Bwb) (MPU4) (set 5)", - "m4trex__e", "Trex (Bwb) (MPU4) (set 6)", - "m4trex__f", "Trex (Bwb) (MPU4) (set 7)", - "m4trex__g", "Trex (Bwb) (MPU4) (set 8)", - "m4trex__h", "Trex (Bwb) (MPU4) (set 9)", - "m4trex__i", "Trex (Bwb) (MPU4) (set 10)", - "m4trex__j", "Trex (Bwb) (MPU4) (set 11)", - "m4trex__k", "Trex (Bwb) (MPU4) (set 12)", - "m4trex__l", "Trex (Bwb) (MPU4) (set 13)", - "m4trg", "Turbo Reel Gambler (Avantime?) (MPU4) (set 1)", - "m4trg__0", "Turbo Reel Gambler (Avantime?) (MPU4) (set 28)", - "m4trg__1", "Turbo Reel Gambler (Avantime?) (MPU4) (set 29)", - "m4trg__2", "Turbo Reel Gambler (Avantime?) (MPU4) (set 30)", - "m4trg__3", "Turbo Reel Gambler (Avantime?) (MPU4) (set 31)", - "m4trg__4", "Turbo Reel Gambler (Avantime?) (MPU4) (set 32)", - "m4trg__a", "Turbo Reel Gambler (Avantime?) (MPU4) (set 2)", - "m4trg__b", "Turbo Reel Gambler (Avantime?) (MPU4) (set 3)", - "m4trg__c", "Turbo Reel Gambler (Avantime?) (MPU4) (set 4)", - "m4trg__d", "Turbo Reel Gambler (Avantime?) (MPU4) (set 5)", - "m4trg__e", "Turbo Reel Gambler (Avantime?) (MPU4) (set 6)", - "m4trg__f", "Turbo Reel Gambler (Avantime?) (MPU4) (set 7)", - "m4trg__g", "Turbo Reel Gambler (Avantime?) (MPU4) (set 8)", - "m4trg__h", "Turbo Reel Gambler (Avantime?) (MPU4) (set 9)", - "m4trg__i", "Turbo Reel Gambler (Avantime?) (MPU4) (set 10)", - "m4trg__j", "Turbo Reel Gambler (Avantime?) (MPU4) (set 11)", - "m4trg__k", "Turbo Reel Gambler (Avantime?) (MPU4) (set 12)", - "m4trg__l", "Turbo Reel Gambler (Avantime?) (MPU4) (set 13)", - "m4trg__m", "Turbo Reel Gambler (Avantime?) (MPU4) (set 14)", - "m4trg__n", "Turbo Reel Gambler (Avantime?) (MPU4) (set 15)", - "m4trg__o", "Turbo Reel Gambler (Avantime?) (MPU4) (set 16)", - "m4trg__p", "Turbo Reel Gambler (Avantime?) (MPU4) (set 17)", - "m4trg__q", "Turbo Reel Gambler (Avantime?) (MPU4) (set 18)", - "m4trg__r", "Turbo Reel Gambler (Avantime?) (MPU4) (set 19)", - "m4trg__s", "Turbo Reel Gambler (Avantime?) (MPU4) (set 20)", - "m4trg__t", "Turbo Reel Gambler (Avantime?) (MPU4) (set 21)", - "m4trg__u", "Turbo Reel Gambler (Avantime?) (MPU4) (set 22)", - "m4trg__v", "Turbo Reel Gambler (Avantime?) (MPU4) (set 23)", - "m4trg__w", "Turbo Reel Gambler (Avantime?) (MPU4) (set 24)", - "m4trg__x", "Turbo Reel Gambler (Avantime?) (MPU4) (set 25)", - "m4trg__y", "Turbo Reel Gambler (Avantime?) (MPU4) (set 26)", - "m4trg__z", "Turbo Reel Gambler (Avantime?) (MPU4) (set 27)", - "m4tribnk", "Triple Bank (Barcrest) (Dutch) (MPU4)", - "m4tricol", "Tricolor (Barcrest) (Dutch) (MPU4)", - "m4tridic", "Triple Dice (Barcrest) (Dutch) (MPU4)", - "m4trimad", "Triple Madness (Union) (MPU4)", - "m4tropcl", "Tropicana Club (Barcrest) (MPU4) (set 1)", - "m4tropcla", "Tropicana Club (Barcrest) (MPU4) (set 2)", - "m4tropclb", "Tropicana Club (Barcrest) (MPU4) (set 3)", - "m4tropclc", "Tropicana Club (Barcrest) (MPU4) (set 4)", - "m4tropcld", "Tropicana Club (Barcrest) (MPU4) (set 5)", - "m4tst", "MPU4 Unit Test (Program 4)", - "m4tst2", "MPU4 Unit Test (Program 2)", - "m4ttak", "Tic Tac Take (unknown) (MPU4)", - "m4ttdia", "Ten Ten Do It Again (Barcrest) (MPU4) (set 1)", - "m4ttdia__a", "Ten Ten Do It Again (Barcrest) (MPU4) (set 2)", - "m4ttdia__b", "Ten Ten Do It Again (Barcrest) (MPU4) (set 3)", - "m4ttdia__c", "Ten Ten Do It Again (Barcrest) (MPU4) (set 4)", - "m4ttdia__d", "Ten Ten Do It Again (Barcrest) (MPU4) (set 5)", - "m4ttdia__e", "Ten Ten Do It Again (Barcrest) (MPU4) (set 6)", - "m4ttdia__f", "Ten Ten Do It Again (Barcrest) (MPU4) (set 7)", - "m4ttdia__g", "Ten Ten Do It Again (Barcrest) (MPU4) (set 8)", - "m4ttdia__h", "Ten Ten Do It Again (Barcrest) (MPU4) (set 9)", - "m4ttdia__i", "Ten Ten Do It Again (Barcrest) (MPU4) (set 10)", - "m4ttdia__j", "Ten Ten Do It Again (Barcrest) (MPU4) (set 11)", - "m4ttdia__k", "Ten Ten Do It Again (Barcrest) (MPU4) (set 12)", - "m4ttdia__l", "Ten Ten Do It Again (Barcrest) (MPU4) (set 13)", - "m4ttdia__m", "Ten Ten Do It Again (Barcrest) (MPU4) (set 14)", - "m4ttrail", "Treasure Trail (Empire) (MPU4, set 1)", - "m4ttraila", "Treasure Trail (Empire) (MPU4, set 2)", - "m4ttrailb", "Treasure Trail (Empire) (MPU4, set 3)", - "m4tupen", "Tuppenny Cracker (Barcrest - Bootleg) (MPU4)", - "m4tutcl", "Tutti Fruity Classic (Barcrest) (MPU4) (set 1)", - "m4tutcl__a", "Tutti Fruity Classic (Barcrest) (MPU4) (set 2)", - "m4tutcl__b", "Tutti Fruity Classic (Barcrest) (MPU4) (set 3)", - "m4tutcl__c", "Tutti Fruity Classic (Barcrest) (MPU4) (set 4)", - "m4tutcl__d", "Tutti Fruity Classic (Barcrest) (MPU4) (set 5)", - "m4tutcl__e", "Tutti Fruity Classic (Barcrest) (MPU4) (set 6)", - "m4tutcl__f", "Tutti Fruity Classic (Barcrest) (MPU4) (set 7)", - "m4tutcl__g", "Tutti Fruity Classic (Barcrest) (MPU4) (set 8)", - "m4tutcl__h", "Tutti Fruity Classic (Barcrest) (MPU4) (set 9)", - "m4tutcl__i", "Tutti Fruity Classic (Barcrest) (MPU4) (set 10)", - "m4tutcl__j", "Tutti Fruity Classic (Barcrest) (MPU4) (set 11)", - "m4tutcl__k", "Tutti Fruity Classic (Barcrest) (MPU4) (set 12)", - "m4tutfrt", "Tutti Fruity (Barcrest) (MPU4) (set 1)", - "m4tutfrt__0", "Tutti Fruity (Barcrest) (MPU4) (set 28)", - "m4tutfrt__1", "Tutti Fruity (Barcrest) (MPU4) (set 29)", - "m4tutfrt__2", "Tutti Fruity (Barcrest) (MPU4) (set 30)", - "m4tutfrt__3", "Tutti Fruity (Barcrest) (MPU4) (set 31)", - "m4tutfrt__4", "Tutti Fruity (Barcrest) (MPU4) (set 32)", - "m4tutfrt__5", "Tutti Fruity (Barcrest) (MPU4) (set 33)", - "m4tutfrt__6", "Tutti Fruity (Barcrest) (MPU4) (set 34)", - "m4tutfrt__7", "Tutti Fruity (Barcrest) (MPU4) (set 35)", - "m4tutfrt__8", "Tutti Fruity (Barcrest) (MPU4) (set 36)", - "m4tutfrt__9", "Tutti Fruity (Barcrest) (MPU4) (set 37)", - "m4tutfrt__a", "Tutti Fruity (Barcrest) (MPU4) (set 2)", - "m4tutfrt__a0", "Tutti Fruity (Barcrest) (MPU4) (set 64)", - "m4tutfrt__a1", "Tutti Fruity (Barcrest) (MPU4) (set 65)", - "m4tutfrt__a2", "Tutti Fruity (Barcrest) (MPU4) (set 66)", - "m4tutfrt__a3", "Tutti Fruity (Barcrest) (MPU4) (set 67)", - "m4tutfrt__a4", "Tutti Fruity (Barcrest) (MPU4) (set 68)", - "m4tutfrt__a5", "Tutti Fruity (Barcrest) (MPU4) (set 69)", - "m4tutfrt__aa", "Tutti Fruity (Barcrest) (MPU4) (set 38)", - "m4tutfrt__ab", "Tutti Fruity (Barcrest) (MPU4) (set 39)", - "m4tutfrt__ac", "Tutti Fruity (Barcrest) (MPU4) (set 40)", - "m4tutfrt__ad", "Tutti Fruity (Barcrest) (MPU4) (set 41)", - "m4tutfrt__ae", "Tutti Fruity (Barcrest) (MPU4) (set 42)", - "m4tutfrt__af", "Tutti Fruity (Barcrest) (MPU4) (set 43)", - "m4tutfrt__ag", "Tutti Fruity (Barcrest) (MPU4) (set 44)", - "m4tutfrt__ai", "Tutti Fruity (Barcrest) (MPU4) (set 46)", - "m4tutfrt__aj", "Tutti Fruity (Barcrest) (MPU4) (set 47)", - "m4tutfrt__ak", "Tutti Fruity (Barcrest) (MPU4) (set 48)", - "m4tutfrt__al", "Tutti Fruity (Barcrest) (MPU4) (set 49)", - "m4tutfrt__am", "Tutti Fruity (Barcrest) (MPU4) (set 50)", - "m4tutfrt__an", "Tutti Fruity (Barcrest) (MPU4) (set 51)", - "m4tutfrt__ao", "Tutti Fruity (Barcrest) (MPU4) (set 52)", - "m4tutfrt__ap", "Tutti Fruity (Barcrest) (MPU4) (set 53)", - "m4tutfrt__aq", "Tutti Fruity (Barcrest) (MPU4) (set 54)", - "m4tutfrt__ar", "Tutti Fruity (Barcrest) (MPU4) (set 55)", - "m4tutfrt__as", "Tutti Fruity (Barcrest) (MPU4) (set 56)", - "m4tutfrt__at", "Tutti Fruity (Barcrest) (MPU4) (set 57)", - "m4tutfrt__au", "Tutti Fruity (Barcrest) (MPU4) (set 58)", - "m4tutfrt__av", "Tutti Fruity (Barcrest) (MPU4) (set 59)", - "m4tutfrt__aw", "Tutti Fruity (Barcrest) (MPU4) (set 60)", - "m4tutfrt__ax", "Tutti Fruity (Barcrest) (MPU4) (set 61)", - "m4tutfrt__ay", "Tutti Fruity (Barcrest) (MPU4) (set 62)", - "m4tutfrt__az", "Tutti Fruity (Barcrest) (MPU4) (set 63)", - "m4tutfrt__b", "Tutti Fruity (Barcrest) (MPU4) (set 3)", - "m4tutfrt__c", "Tutti Fruity (Barcrest) (MPU4) (set 4)", - "m4tutfrt__d", "Tutti Fruity (Barcrest) (MPU4) (set 5)", - "m4tutfrt__e", "Tutti Fruity (Barcrest) (MPU4) (set 6)", - "m4tutfrt__f", "Tutti Fruity (Barcrest) (MPU4) (set 7)", - "m4tutfrt__g", "Tutti Fruity (Barcrest) (MPU4) (set 8)", - "m4tutfrt__h", "Tutti Fruity (Barcrest) (MPU4) (set 9)", - "m4tutfrt__i", "Tutti Fruity (Barcrest) (MPU4) (set 10)", - "m4tutfrt__j", "Tutti Fruity (Barcrest) (MPU4) (set 11)", - "m4tutfrt__k", "Tutti Fruity (Barcrest) (MPU4) (set 12)", - "m4tutfrt__l", "Tutti Fruity (Barcrest) (MPU4) (set 13)", - "m4tutfrt__m", "Tutti Fruity (Barcrest) (MPU4) (set 14)", - "m4tutfrt__n", "Tutti Fruity (Barcrest) (MPU4) (set 15)", - "m4tutfrt__o", "Tutti Fruity (Barcrest) (MPU4) (set 16)", - "m4tutfrt__p", "Tutti Fruity (Barcrest) (MPU4) (set 17)", - "m4tutfrt__q", "Tutti Fruity (Barcrest) (MPU4) (set 18)", - "m4tutfrt__r", "Tutti Fruity (Barcrest) (MPU4) (set 19)", - "m4tutfrt__s", "Tutti Fruity (Barcrest) (MPU4) (set 20)", - "m4tutfrt__t", "Tutti Fruity (Barcrest) (MPU4) (set 21)", - "m4tutfrt__u", "Tutti Fruity (Barcrest) (MPU4) (set 22)", - "m4tutfrt__v", "Tutti Fruity (Barcrest) (MPU4) (set 23)", - "m4tutfrt__w", "Tutti Fruity (Barcrest) (MPU4) (set 24)", - "m4tutfrt__x", "Tutti Fruity (Barcrest) (MPU4) (set 25)", - "m4tutfrt__y", "Tutti Fruity (Barcrest) (MPU4) (set 26)", - "m4tutfrt__z", "Tutti Fruity (Barcrest) (MPU4) (set 27)", - "m4twilgt", "Twilight (Barcrest) (Dutch) (MPU4)", - "m4twintm", "Twin Timer (Barcrest) (MPU4) (D2T 1.1)", - "m4twist", "Twist Again (Barcrest) (MPU4) (set 1)", - "m4twista", "Twist Again (Barcrest) (MPU4) (set 2)", - "m4twistb", "Twist Again (Barcrest) (MPU4) (set 3)", - "m4twstcl", "Twister Club (Crystal) (MPU4) (set 1)", - "m4twstcla", "Twister Club (Crystal) (MPU4) (set 2)", - "m4twstclb", "Twister Club (Crystal) (MPU4) (set 3)", - "m4twstr", "Twister (Crystal) (MPU4) (set 1)", - "m4twstra", "Twister (Crystal) (MPU4) (set 2)", - "m4twstrb", "Twister (Crystal) (MPU4) (set 3)", - "m4twstrc", "Twister (Crystal) (MPU4) (set 4)", - "m4twstrd", "Twister (Crystal) (MPU4) (set 5)", - "m4tylb", "Thank Your Lucky Bars (Crystal) (MPU4) (set 1)", - "m4tylba", "Thank Your Lucky Bars (Crystal) (MPU4) (set 2)", - "m4typcl", "Take Your Pick Club (Barcrest) (MPU4) (set 1)", - "m4typcl__a", "Take Your Pick Club (Barcrest) (MPU4) (set 2)", - "m4typcl__b", "Take Your Pick Club (Barcrest) (MPU4) (set 3)", - "m4typcl__c", "Take Your Pick Club (Barcrest) (MPU4) (set 4)", - "m4typcl__d", "Take Your Pick Club (Barcrest) (MPU4) (set 5)", - "m4unibox", "Unibox (Union) (MPU4, set 1)", - "m4uniboxa", "Unibox (Union) (MPU4, set 2)", - "m4unique", "Unique (Union) (MPU4, set 1)", - "m4uniquep", "Unique (Union) (MPU4, set 2)", - "m4univ", "Universe (Barcrest) (Dutch) (MPU4) (DUN)", - "m4unkjok", "unknown MPU4 'Joker' (MPU4?) (set 1)", - "m4unkjoka", "unknown MPU4 'Joker' (MPU4?) (set 2)", - "m4unkjokb", "unknown MPU4 'Joker' (MPU4?) (set 3)", - "m4unkjokc", "unknown MPU4 'Joker' (MPU4?) (set 4)", - "m4uuaw", "Up Up and Away (Barcrest) (MPU4) (set 1)", - "m4uuaw__0", "Up Up and Away (Barcrest) (MPU4) (set 28)", - "m4uuaw__1", "Up Up and Away (Barcrest) (MPU4) (set 29)", - "m4uuaw__2", "Up Up and Away (Barcrest) (MPU4) (set 30)", - "m4uuaw__3", "Up Up and Away (Barcrest) (MPU4) (set 31)", - "m4uuaw__4", "Up Up and Away (Barcrest) (MPU4) (set 32)", - "m4uuaw__5", "Up Up and Away (Barcrest) (MPU4) (set 33)", - "m4uuaw__6", "Up Up and Away (Barcrest) (MPU4) (set 34)", - "m4uuaw__7", "Up Up and Away (Barcrest) (MPU4) (set 35)", - "m4uuaw__8", "Up Up and Away (Barcrest) (MPU4) (set 36)", - "m4uuaw__9", "Up Up and Away (Barcrest) (MPU4) (set 37)", - "m4uuaw__a", "Up Up and Away (Barcrest) (MPU4) (set 2)", - "m4uuaw__aa", "Up Up and Away (Barcrest) (MPU4) (set 38)", - "m4uuaw__ab", "Up Up and Away (Barcrest) (MPU4) (set 39)", - "m4uuaw__ac", "Up Up and Away (Barcrest) (MPU4) (set 40)", - "m4uuaw__ad", "Up Up and Away (Barcrest) (MPU4) (set 41)", - "m4uuaw__ae", "Up Up and Away (Barcrest) (MPU4) (set 42)", - "m4uuaw__af", "Up Up and Away (Barcrest) (MPU4) (set 43)", - "m4uuaw__ag", "Up Up and Away (Barcrest) (MPU4) (set 44)", - "m4uuaw__ah", "Up Up and Away (Barcrest) (MPU4) (set 45)", - "m4uuaw__ai", "Up Up and Away (Barcrest) (MPU4) (set 46)", - "m4uuaw__aj", "Up Up and Away (Barcrest) (MPU4) (set 47)", - "m4uuaw__ak", "Up Up and Away (Barcrest) (MPU4) (set 48)", - "m4uuaw__al", "Up Up and Away (Barcrest) (MPU4) (set 49)", - "m4uuaw__am", "Up Up and Away (Barcrest) (MPU4) (set 50)", - "m4uuaw__an", "Up Up and Away (Barcrest) (MPU4) (set 51)", - "m4uuaw__ao", "Up Up and Away (Barcrest) (MPU4) (set 52)", - "m4uuaw__ap", "Up Up and Away (Barcrest) (MPU4) (set 53)", - "m4uuaw__aq", "Up Up and Away (Barcrest) (MPU4) (set 54)", - "m4uuaw__b", "Up Up and Away (Barcrest) (MPU4) (set 3)", - "m4uuaw__c", "Up Up and Away (Barcrest) (MPU4) (set 4)", - "m4uuaw__d", "Up Up and Away (Barcrest) (MPU4) (set 5)", - "m4uuaw__e", "Up Up and Away (Barcrest) (MPU4) (set 6)", - "m4uuaw__f", "Up Up and Away (Barcrest) (MPU4) (set 7)", - "m4uuaw__g", "Up Up and Away (Barcrest) (MPU4) (set 8)", - "m4uuaw__h", "Up Up and Away (Barcrest) (MPU4) (set 9)", - "m4uuaw__i", "Up Up and Away (Barcrest) (MPU4) (set 10)", - "m4uuaw__j", "Up Up and Away (Barcrest) (MPU4) (set 11)", - "m4uuaw__k", "Up Up and Away (Barcrest) (MPU4) (set 12)", - "m4uuaw__l", "Up Up and Away (Barcrest) (MPU4) (set 13)", - "m4uuaw__m", "Up Up and Away (Barcrest) (MPU4) (set 14)", - "m4uuaw__n", "Up Up and Away (Barcrest) (MPU4) (set 15)", - "m4uuaw__o", "Up Up and Away (Barcrest) (MPU4) (set 16)", - "m4uuaw__p", "Up Up and Away (Barcrest) (MPU4) (set 17)", - "m4uuaw__q", "Up Up and Away (Barcrest) (MPU4) (set 18)", - "m4uuaw__r", "Up Up and Away (Barcrest) (MPU4) (set 19)", - "m4uuaw__s", "Up Up and Away (Barcrest) (MPU4) (set 20)", - "m4uuaw__t", "Up Up and Away (Barcrest) (MPU4) (set 21)", - "m4uuaw__u", "Up Up and Away (Barcrest) (MPU4) (set 22)", - "m4uuaw__v", "Up Up and Away (Barcrest) (MPU4) (set 23)", - "m4uuaw__w", "Up Up and Away (Barcrest) (MPU4) (set 24)", - "m4uuaw__x", "Up Up and Away (Barcrest) (MPU4) (set 25)", - "m4uuaw__y", "Up Up and Away (Barcrest) (MPU4) (set 26)", - "m4uuaw__z", "Up Up and Away (Barcrest) (MPU4) (set 27)", - "m4vdexpr", "Voodoo Express (Bwb) (MPU4) (set 1)", - "m4vdexpr__a", "Voodoo Express (Bwb) (MPU4) (set 2)", - "m4vdexpr__b", "Voodoo Express (Bwb) (MPU4) (set 3)", - "m4vdexpr__c", "Voodoo Express (Bwb) (MPU4) (set 4)", - "m4vdexpr__d", "Voodoo Express (Bwb) (MPU4) (set 5)", - "m4vegast", "Vegas Strip (Barcrest) (MPU4) (set 1)", - "m4vegast__a", "Vegas Strip (Barcrest) (MPU4) (set 2)", - "m4vegast__b", "Vegas Strip (Barcrest) (MPU4) (set 3)", - "m4vegast__c", "Vegas Strip (Barcrest) (MPU4) (set 4)", - "m4vegast__d", "Vegas Strip (Barcrest) (MPU4) (set 5)", - "m4vegast__e", "Vegas Strip (Barcrest) (MPU4) (set 6)", - "m4vegast__f", "Vegas Strip (Barcrest) (MPU4) (set 7)", - "m4vegast__g", "Vegas Strip (Barcrest) (MPU4) (set 8)", - "m4vegast__h", "Vegas Strip (Barcrest) (MPU4) (set 9)", - "m4vegast__i", "Vegas Strip (Barcrest) (MPU4) (set 10)", - "m4vegast__j", "Vegas Strip (Barcrest) (MPU4) (set 11)", - "m4vegast__k", "Vegas Strip (Barcrest) (MPU4) (set 12)", - "m4vegast__l", "Vegas Strip (Barcrest) (MPU4) (set 13)", - "m4vegast__m", "Vegas Strip (Barcrest) (MPU4) (set 14)", - "m4vegast__n", "Vegas Strip (Barcrest) (MPU4) (set 15)", - "m4vegast__o", "Vegas Strip (Barcrest) (MPU4) (set 16)", - "m4vegast__p", "Vegas Strip (Barcrest) (MPU4) (set 17)", - "m4vegast__q", "Vegas Strip (Barcrest) (MPU4) (set 18)", - "m4vegast__r", "Vegas Strip (Barcrest) (MPU4) (set 19)", - "m4vegast__s", "Vegas Strip (Barcrest) (MPU4) (set 20)", - "m4vegast__t", "Vegas Strip (Barcrest) (MPU4) (set 21)", - "m4vegast__u", "Vegas Strip (Barcrest) (MPU4) (set 22)", - "m4vegast__v", "Vegas Strip (Barcrest) (MPU4) (set 23)", - "m4vegast__w", "Vegas Strip (Barcrest) (MPU4) (set 24)", - "m4vegast__x", "Vegas Strip (Barcrest) (MPU4) (set 25)", - "m4vegastg", "Vegas Strip (Barcrest) [German] (MPU4)", - "m4vfm", "Value For Money (Global) (MPU4)", - "m4vivaes", "Viva Espana (Barcrest) (MPU4) (set 1)", - "m4vivaes__0", "Viva Espana (Barcrest) (MPU4) (set 28)", - "m4vivaes__1", "Viva Espana (Barcrest) (MPU4) (set 29)", - "m4vivaes__2", "Viva Espana (Barcrest) (MPU4) (set 30)", - "m4vivaes__3", "Viva Espana (Barcrest) (MPU4) (set 31)", - "m4vivaes__4", "Viva Espana (Barcrest) (MPU4) (set 32)", - "m4vivaes__5", "Viva Espana (Barcrest) (MPU4) (set 33)", - "m4vivaes__6", "Viva Espana (Barcrest) (MPU4) (set 34)", - "m4vivaes__7", "Viva Espana (Barcrest) (MPU4) (set 35)", - "m4vivaes__8", "Viva Espana (Barcrest) (MPU4) (set 36)", - "m4vivaes__9", "Viva Espana (Barcrest) (MPU4) (set 37)", - "m4vivaes__a", "Viva Espana (Barcrest) (MPU4) (set 2)", - "m4vivaes__aa", "Viva Espana (Barcrest) (MPU4) (set 38)", - "m4vivaes__ab", "Viva Espana (Barcrest) (MPU4) (set 39)", - "m4vivaes__ac", "Viva Espana (Barcrest) (MPU4) (set 40)", - "m4vivaes__ad", "Viva Espana (Barcrest) (MPU4) (set 41)", - "m4vivaes__ae", "Viva Espana (Barcrest) (MPU4) (set 42)", - "m4vivaes__af", "Viva Espana (Barcrest) (MPU4) (set 43)", - "m4vivaes__ag", "Viva Espana (Barcrest) (MPU4) (set 44)", - "m4vivaes__ah", "Viva Espana (Barcrest) (MPU4) (set 45)", - "m4vivaes__ai", "Viva Espana (Barcrest) (MPU4) (set 46)", - "m4vivaes__aj", "Viva Espana (Barcrest) (MPU4) (set 47)", - "m4vivaes__ak", "Viva Espana (Barcrest) (MPU4) (set 48)", - "m4vivaes__al", "Viva Espana (Barcrest) (MPU4) (set 49)", - "m4vivaes__am", "Viva Espana (Barcrest) (MPU4) (set 50)", - "m4vivaes__an", "Viva Espana (Barcrest) (MPU4) (set 51)", - "m4vivaes__ao", "Viva Espana (Barcrest) (MPU4) (set 52)", - "m4vivaes__ap", "Viva Espana (Barcrest) (MPU4) (set 53)", - "m4vivaes__b", "Viva Espana (Barcrest) (MPU4) (set 3)", - "m4vivaes__c", "Viva Espana (Barcrest) (MPU4) (set 4)", - "m4vivaes__d", "Viva Espana (Barcrest) (MPU4) (set 5)", - "m4vivaes__e", "Viva Espana (Barcrest) (MPU4) (set 6)", - "m4vivaes__f", "Viva Espana (Barcrest) (MPU4) (set 7)", - "m4vivaes__g", "Viva Espana (Barcrest) (MPU4) (set 8)", - "m4vivaes__h", "Viva Espana (Barcrest) (MPU4) (set 9)", - "m4vivaes__i", "Viva Espana (Barcrest) (MPU4) (set 10)", - "m4vivaes__j", "Viva Espana (Barcrest) (MPU4) (set 11)", - "m4vivaes__k", "Viva Espana (Barcrest) (MPU4) (set 12)", - "m4vivaes__l", "Viva Espana (Barcrest) (MPU4) (set 13)", - "m4vivaes__m", "Viva Espana (Barcrest) (MPU4) (set 14)", - "m4vivaes__n", "Viva Espana (Barcrest) (MPU4) (set 15)", - "m4vivaes__o", "Viva Espana (Barcrest) (MPU4) (set 16)", - "m4vivaes__p", "Viva Espana (Barcrest) (MPU4) (set 17)", - "m4vivaes__q", "Viva Espana (Barcrest) (MPU4) (set 18)", - "m4vivaes__r", "Viva Espana (Barcrest) (MPU4) (set 19)", - "m4vivaes__s", "Viva Espana (Barcrest) (MPU4) (set 20)", - "m4vivaes__t", "Viva Espana (Barcrest) (MPU4) (set 21)", - "m4vivaes__u", "Viva Espana (Barcrest) (MPU4) (set 22)", - "m4vivaes__v", "Viva Espana (Barcrest) (MPU4) (set 23)", - "m4vivaes__w", "Viva Espana (Barcrest) (MPU4) (set 24)", - "m4vivaes__x", "Viva Espana (Barcrest) (MPU4) (set 25)", - "m4vivaes__y", "Viva Espana (Barcrest) (MPU4) (set 26)", - "m4vivaes__z", "Viva Espana (Barcrest) (MPU4) (set 27)", - "m4vivalv", "Viva Las Vegas (Barcrest) (MPU4) (set 1)", - "m4vivalv__0", "Viva Las Vegas (Barcrest) (MPU4) (set 28)", - "m4vivalv__1", "Viva Las Vegas (Barcrest) (MPU4) (set 29)", - "m4vivalv__2", "Viva Las Vegas (Barcrest) (MPU4) (set 30)", - "m4vivalv__3", "Viva Las Vegas (Barcrest) (MPU4) (set 31)", - "m4vivalv__4", "Viva Las Vegas (Barcrest) (MPU4) (set 32)", - "m4vivalv__5", "Viva Las Vegas (Barcrest) (MPU4) (set 33)", - "m4vivalv__6", "Viva Las Vegas (Barcrest) (MPU4) (set 34)", - "m4vivalv__7", "Viva Las Vegas (Barcrest) (MPU4) (set 35)", - "m4vivalv__8", "Viva Las Vegas (Barcrest) (MPU4) (set 36)", - "m4vivalv__a", "Viva Las Vegas (Barcrest) (MPU4) (set 2)", - "m4vivalv__b", "Viva Las Vegas (Barcrest) (MPU4) (set 3)", - "m4vivalv__c", "Viva Las Vegas (Barcrest) (MPU4) (set 4)", - "m4vivalv__e", "Viva Las Vegas (Barcrest) (MPU4) (set 6)", - "m4vivalv__f", "Viva Las Vegas (Barcrest) (MPU4) (set 7)", - "m4vivalv__g", "Viva Las Vegas (Barcrest) (MPU4) (set 8)", - "m4vivalv__h", "Viva Las Vegas (Barcrest) (MPU4) (set 9)", - "m4vivalv__i", "Viva Las Vegas (Barcrest) (MPU4) (set 10)", - "m4vivalv__j", "Viva Las Vegas (Barcrest) (MPU4) (set 11)", - "m4vivalv__k", "Viva Las Vegas (Barcrest) (MPU4) (set 12)", - "m4vivalv__l", "Viva Las Vegas (Barcrest) (MPU4) (set 13)", - "m4vivalv__m", "Viva Las Vegas (Barcrest) (MPU4) (set 14)", - "m4vivalv__n", "Viva Las Vegas (Barcrest) (MPU4) (set 15)", - "m4vivalv__o", "Viva Las Vegas (Barcrest) (MPU4) (set 16)", - "m4vivalv__p", "Viva Las Vegas (Barcrest) (MPU4) (set 17)", - "m4vivalv__q", "Viva Las Vegas (Barcrest) (MPU4) (set 18)", - "m4vivalv__r", "Viva Las Vegas (Barcrest) (MPU4) (set 19)", - "m4vivalv__s", "Viva Las Vegas (Barcrest) (MPU4) (set 20)", - "m4vivalv__t", "Viva Las Vegas (Barcrest) (MPU4) (set 21)", - "m4vivalv__u", "Viva Las Vegas (Barcrest) (MPU4) (set 22)", - "m4vivalv__v", "Viva Las Vegas (Barcrest) (MPU4) (set 23)", - "m4vivalv__w", "Viva Las Vegas (Barcrest) (MPU4) (set 24)", - "m4vivalv__x", "Viva Las Vegas (Barcrest) (MPU4) (set 25)", - "m4vivalv__y", "Viva Las Vegas (Barcrest) (MPU4) (set 26)", - "m4vivalv__z", "Viva Las Vegas (Barcrest) (MPU4) (set 27)", - "m4vivalvd", "Viva Las Vegas (Barcrest) [Dutch] (MPU4) (DLV)", - "m4vivan", "Viva Las Vegas (Nova) (MPU4)", - "m4vivess", "Viva Espana Showcase (Barcrest) (MPU4) (set 1)", - "m4vivess__a", "Viva Espana Showcase (Barcrest) (MPU4) (set 2)", - "m4vivess__b", "Viva Espana Showcase (Barcrest) (MPU4) (set 3)", - "m4vivess__c", "Viva Espana Showcase (Barcrest) (MPU4) (set 4)", - "m4vivess__d", "Viva Espana Showcase (Barcrest) (MPU4) (set 5)", - "m4vivess__f", "Viva Espana Showcase (Barcrest) (MPU4) (set 6)", - "m4vivess__g", "Viva Espana Showcase (Barcrest) (MPU4) (set 7)", - "m4vivess__i", "Viva Espana Showcase (Barcrest) (MPU4) (set 8)", - "m4vivess__j", "Viva Espana Showcase (Barcrest) (MPU4) (set 9)", - "m4vivess__k", "Viva Espana Showcase (Barcrest) (MPU4) (set 10)", - "m4vivess__l", "Viva Espana Showcase (Barcrest) (MPU4) (set 11)", - "m4vivess__m", "Viva Espana Showcase (Barcrest) (MPU4) (set 12)", - "m4vivess__n", "Viva Espana Showcase (Barcrest) (MPU4) (set 13)", - "m4vivess__o", "Viva Espana Showcase (Barcrest) (MPU4) (set 14)", - "m4vivess__p", "Viva Espana Showcase (Barcrest) (MPU4) (set 15)", - "m4viz", "Viz (Barcrest) (MPU4) (set 1)", - "m4viz__a", "Viz (Barcrest) (MPU4) (set 2)", - "m4viz__b", "Viz (Barcrest) (MPU4) (set 3)", - "m4viz__c", "Viz (Barcrest) (MPU4) (set 4)", - "m4viz__d", "Viz (Barcrest) (MPU4) (set 5)", - "m4viz__e", "Viz (Barcrest) (MPU4) (set 6)", - "m4viz__f", "Viz (Barcrest) (MPU4) (set 7)", - "m4viz__g", "Viz (Barcrest) (MPU4) (set 8)", - "m4viz__h", "Viz (Barcrest) (MPU4) (set 9)", - "m4viz__i", "Viz (Barcrest) (MPU4) (set 10)", - "m4viz__j", "Viz (Barcrest) (MPU4) (set 11)", - "m4viz__k", "Viz (Barcrest) (MPU4) (set 12)", - "m4viz__l", "Viz (Barcrest) (MPU4) (set 13)", - "m4viz__m", "Viz (Barcrest) (MPU4) (set 14)", - "m4viz__n", "Viz (Barcrest) (MPU4) (set 15)", - "m4viz__o", "Viz (Barcrest) (MPU4) (set 16)", - "m4viz__p", "Viz (Barcrest) (MPU4) (set 17)", - "m4viz__q", "Viz (Barcrest) (MPU4) (set 18)", - "m4viz__r", "Viz (Barcrest) (MPU4) (set 19)", - "m4viz__s", "Viz (Barcrest) (MPU4) (set 20)", - "m4viz__t", "Viz (Barcrest) (MPU4) (set 21)", - "m4viz__u", "Viz (Barcrest) (MPU4) (set 22)", - "m4viz__v", "Viz (Barcrest) (MPU4) (set 23)", - "m4viz__w", "Viz (Barcrest) (MPU4) (set 24)", - "m4volcan", "Volcano (Bwb) (MPU4) (set 1)", - "m4volcan__a", "Volcano (Bwb) (MPU4) (set 2)", - "m4volcan__b", "Volcano (Bwb) (MPU4) (set 3)", - "m4volcan__c", "Volcano (Bwb) (MPU4) (set 4)", - "m4volcan__d", "Volcano (Bwb) (MPU4) (set 5)", - "m4volcan__e", "Volcano (Bwb) (MPU4) (set 6)", - "m4volcan__f", "Volcano (Bwb) (MPU4) (set 7)", - "m4volcan__g", "Volcano (Bwb) (MPU4) (set 8)", - "m4voodoo", "Voodoo 1000 (Barcrest) (Dutch) (MPU4) (DDO 3.2)", - "m4wayin", "Way In (Barcrest) (MPU4) (set 1)", - "m4wayina", "Way In (Barcrest) (MPU4) (set 2)", - "m4wcnov", "World Cup (Nova) (MPU4)", - "m4wife", "Money Or Yer Wife (Gemini) (MPU4)", - "m4wildms", "Wild Mystery (Barcrest) (Dutch) (MPU4)", - "m4wildtm", "Wild Timer (Barcrest) (Dutch) (MPU4) (DWT 1.3)", - "m4wnud", "unknown MPU4 'W Nudge' (MPU4?)", - "m4wta", "Winner Takes All (Barcrest) (MPU4) (set 1)", - "m4wta__0", "Winner Takes All (Barcrest) (MPU4) (set 28)", - "m4wta__1", "Winner Takes All (Barcrest) (MPU4) (set 29)", - "m4wta__2", "Winner Takes All (Barcrest) (MPU4) (set 30)", - "m4wta__3", "Winner Takes All (Barcrest) (MPU4) (set 31)", - "m4wta__4", "Winner Takes All (Barcrest) (MPU4) (set 32)", - "m4wta__5", "Winner Takes All (Barcrest) (MPU4) (set 33)", - "m4wta__6", "Winner Takes All (Barcrest) (MPU4) (set 34)", - "m4wta__7", "Winner Takes All (Barcrest) (MPU4) (set 35)", - "m4wta__8", "Winner Takes All (Barcrest) (MPU4) (set 36)", - "m4wta__9", "Winner Takes All (Barcrest) (MPU4) (set 37)", - "m4wta__aa", "Winner Takes All (Barcrest) (MPU4) (set 38)", - "m4wta__ab", "Winner Takes All (Barcrest) (MPU4) (set 39)", - "m4wta__ac", "Winner Takes All (Barcrest) (MPU4) (set 40)", - "m4wta__ad", "Winner Takes All (Barcrest) (MPU4) (set 41)", - "m4wta__ae", "Winner Takes All (Barcrest) (MPU4) (set 42)", - "m4wta__af", "Winner Takes All (Barcrest) (MPU4) (set 43)", - "m4wta__ag", "Winner Takes All (Barcrest) (MPU4) (set 44)", - "m4wta__b", "Winner Takes All (Barcrest) (MPU4) (set 3)", - "m4wta__d", "Winner Takes All (Barcrest) (MPU4) (set 5)", - "m4wta__e", "Winner Takes All (Barcrest) (MPU4) (set 6)", - "m4wta__f", "Winner Takes All (Barcrest) (MPU4) (set 7)", - "m4wta__g", "Winner Takes All (Barcrest) (MPU4) (set 8)", - "m4wta__h", "Winner Takes All (Barcrest) (MPU4) (set 9)", - "m4wta__i", "Winner Takes All (Barcrest) (MPU4) (set 10)", - "m4wta__j", "Winner Takes All (Barcrest) (MPU4) (set 11)", - "m4wta__k", "Winner Takes All (Barcrest) (MPU4) (set 12)", - "m4wta__l", "Winner Takes All (Barcrest) (MPU4) (set 13)", - "m4wta__m", "Winner Takes All (Barcrest) (MPU4) (set 14)", - "m4wta__n", "Winner Takes All (Barcrest) (MPU4) (set 15)", - "m4wta__o", "Winner Takes All (Barcrest) (MPU4) (set 16)", - "m4wta__p", "Winner Takes All (Barcrest) (MPU4) (set 17)", - "m4wta__q", "Winner Takes All (Barcrest) (MPU4) (set 18)", - "m4wta__r", "Winner Takes All (Barcrest) (MPU4) (set 19)", - "m4wta__s", "Winner Takes All (Barcrest) (MPU4) (set 20)", - "m4wta__t", "Winner Takes All (Barcrest) (MPU4) (set 21)", - "m4wta__u", "Winner Takes All (Barcrest) (MPU4) (set 22)", - "m4wta__v", "Winner Takes All (Barcrest) (MPU4) (set 23)", - "m4wta__w", "Winner Takes All (Barcrest) (MPU4) (set 24)", - "m4wta__x", "Winner Takes All (Barcrest) (MPU4) (set 25)", - "m4wta__y", "Winner Takes All (Barcrest) (MPU4) (set 26)", - "m4wta__z", "Winner Takes All (Barcrest) (MPU4) (set 27)", - "m4wwc", "Wacky Weekend Club (Global) (MPU4) (set 1)", - "m4wwca", "Wacky Weekend Club (Global) (MPU4) (set 2)", - "m4wwcb", "Wacky Weekend Club (Global) (MPU4) (set 3)", - "m4xch", "X-change (Bwb) (MPU4) (set 1)", - "m4xch__a", "X-change (Bwb) (MPU4) (set 2)", - "m4xch__b", "X-change (Bwb) (MPU4) (set 3)", - "m4xch__c", "X-change (Bwb) (MPU4) (set 4)", - "m4xch__d", "X-change (Bwb) (MPU4) (set 5)", - "m4xch__e", "X-change (Bwb) (MPU4) (set 6)", - "m4xch__f", "X-change (Bwb) (MPU4) (set 7)", - "m4xch__g", "X-change (Bwb) (MPU4) (set 8)", - "m4xch__h", "X-change (Bwb) (MPU4) (set 9)", - "m4xch__i", "X-change (Bwb) (MPU4) (set 10)", - "m4xch__j", "X-change (Bwb) (MPU4) (set 11)", - "m4xch__k", "X-change (Bwb) (MPU4) (set 12)", - "m4xs", "X-s (Bwb) (MPU4) (set 1)", - "m4xs__a", "X-s (Bwb) (MPU4) (set 2)", - "m4xs__b", "X-s (Bwb) (MPU4) (set 3)", - "m4xs__c", "X-s (Bwb) (MPU4) (set 4)", - "m4xs__d", "X-s (Bwb) (MPU4) (set 5)", - "m4xs__e", "X-s (Bwb) (MPU4) (set 6)", - "m4xs__f", "X-s (Bwb) (MPU4) (set 7)", - "m4xtrm", "X-treme (Bwb) (MPU4) (set 1)", - "m4xtrm__a", "X-treme (Bwb) (MPU4) (set 2)", - "m4xtrm__b", "X-treme (Bwb) (MPU4) (set 3)", - "m4zill", "Zillionare's Challenge (Pure Leisure) (MPU4) (set 1)", - "m4zilla", "Zillionare's Challenge (Pure Leisure) (MPU4) (set 2)", - "m55050", "Fifty Fifty (Bwb) (MPU5)", - "m5aceclb", "Ace Of Clubs (Empire) (MPU5, set 1)", - "m5aceclba", "Ace Of Clubs (Empire) (MPU5, set 2)", - "m5aceclbb", "Ace Of Clubs (Empire) (MPU5, set 3)", - "m5addams", "Addams Family (Barcrest) (MPU5) (v0.5, set 1)", - "m5addamsa", "Addams Family (Barcrest) (MPU5) (v0.5, set 2)", - "m5addamsb", "Addams Family (Barcrest) (MPU5) (v0.5, set 3)", - "m5addamsc", "Addams Family (Barcrest) (MPU5) (v0.5, set 4)", - "m5addamsd", "Addams Family (Barcrest) (MPU5) (v0.5, set 5)", - "m5addamse", "Addams Family (Barcrest) (MPU5) (v0.5, set 6)", - "m5addamsf", "Addams Family (Barcrest) (MPU5) (v0.5, set 7)", - "m5addamsg", "Addams Family (Barcrest) (MPU5) (v0.5, set 8)", - "m5addamsh", "Addams Family (Barcrest) (MPU5) (v0.2, set 1)", - "m5addamsi", "Addams Family (Barcrest) (MPU5) (v0.2, set 2)", - "m5addamsj", "Addams Family (Barcrest) (MPU5) (v0.2, set 3)", - "m5addamsk", "Addams Family (Barcrest) (MPU5) (v0.3, set 1)", - "m5addamsl", "Addams Family (Barcrest) (MPU5) (v0.3, set 2)", - "m5addamsm", "Addams Family (Barcrest) (MPU5) (v0.3, set 3)", - "m5addamsn", "Addams Family (Barcrest) (MPU5) (v0.3, set 4)", - "m5addamso", "Addams Family (Barcrest) (MPU5) (v0.3, set 5)", - "m5addamsp", "Addams Family (Barcrest) (MPU5) (v0.3, set 6)", - "m5addamsq", "Addams Family (Barcrest) (MPU5) (v0.3, set 7)", - "m5addamsr", "Addams Family (Barcrest) (MPU5) (v0.3, set 8)", - "m5addamss", "Addams Family (Barcrest) (MPU5) (v0.3, set 9)", - "m5addlad", "Adders & Ladders (Barcrest) (MPU5, v0.6, set 1)", - "m5addlada", "Adders & Ladders (Barcrest) (MPU5, v0.6, set 2)", - "m5addladb", "Adders & Ladders (Barcrest) (MPU5, v0.6, set 3)", - "m5addladc", "Adders & Ladders (Barcrest) (MPU5, v0.6, set 4)", - "m5addladd", "Adders & Ladders (Barcrest) (MPU5, v0.6, set 5)", - "m5addlade", "Adders & Ladders (Barcrest) (MPU5, v0.6, set 6)", - "m5addladf", "Adders & Ladders (Barcrest) (MPU5, v0.6, set 7)", - "m5addladg", "Adders & Ladders (Barcrest) (MPU5, v0.6, set 8)", - "m5addladh", "Adders & Ladders (Barcrest) (MPU5, v0.6, set 9)", - "m5addladi", "Adders & Ladders (Barcrest) (MPU5, v0.6, set 10)", - "m5addladj", "Adders & Ladders (Barcrest) (MPU5, v0.1, set 1)", - "m5addladk", "Adders & Ladders (Barcrest) (MPU5, v0.1, set 2)", - "m5addladl", "Adders & Ladders (Barcrest) (MPU5, v0.1, set 3)", - "m5addladm", "Adders & Ladders (Barcrest) (MPU5, v0.1, set 4)", - "m5addladn", "Adders & Ladders (Barcrest) (MPU5, v0.1, set 5)", - "m5addlado", "Adders & Ladders (Barcrest) (MPU5, v0.1, set 6)", - "m5addladp", "Adders & Ladders (Barcrest) (MPU5, v0.1, set 7)", - "m5addladq", "Adders & Ladders (Barcrest) (MPU5, v0.4, set 1)", - "m5addladr", "Adders & Ladders (Barcrest) (MPU5, v0.4, set 2)", - "m5addlads", "Adders & Ladders (Barcrest) (MPU5, v?.?)", - "m5all41", "All 4 One (Vivid) (MPU5, set 1)", - "m5all41a", "All 4 One (Vivid) (MPU5, set 2)", - "m5all41b", "All 4 One (Vivid) (MPU5, set 3)", - "m5all41c", "All 4 One (Vivid) (MPU5, set 4)", - "m5all41d", "All 4 One (Vivid) (MPU5, set 5)", - "m5all41e", "All 4 One (Vivid) (MPU5, set 6)", - "m5all41f", "All 4 One (Vivid) (MPU5, set 7)", - "m5all41g", "All 4 One (Vivid) (MPU5, set 8)", - "m5all41h", "All 4 One (Vivid) (MPU5, set 9)", - "m5all41i", "All 4 One (Vivid) (MPU5, set 10)", - "m5all41j", "All 4 One (Vivid) (MPU5, set 11)", - "m5all41k", "All 4 One (Vivid) (MPU5, set 12)", - "m5all41l", "All 4 One (Vivid) (MPU5, set 13)", - "m5all41low", "All 4 One (Lowen) (MPU5)", - "m5all41m", "All 4 One (Vivid) (MPU5, set 14)", - "m5arab", "Arabian Nights (Barcrest) (MPU5) (set 1)", - "m5arab03", "Arabian Nights (Barcrest) (MPU5) (set 2)", - "m5ashock", "Aftershock (Barcrest - Red Gaming) (MPU5, v1.2)", - "m5ashocka", "Aftershock (Barcrest - Red Gaming) (MPU5, v1.3)", - "m5atlan", "Atlantic (Vivid) (MPU5, v1.4)", - "m5atlana", "Atlantic (Vivid) (MPU5, v1.2)", - "m5austin", "Austin Powers (Barcrest) (MPU5) (set 1)", - "m5austin10", "Austin Powers (Barcrest) (MPU5) (set 2)", - "m5austin11", "Austin Powers (Barcrest) (MPU5) (set 3)", - "m5bankrl", "The Bank Roll (Barcrest) (MPU5)", - "m5barkng", "Barking Mad (Barcrest) (MPU5)", - "m5barmy", "Barmy Army (Barcrest) (MPU5)", - "m5barxdx", "Bar X Deluxe (Empire) (MPU5)", - "m5baxe", "Battle Axe (Barcrest) (MPU5) (set 1)", - "m5baxe04", "Battle Axe (Barcrest) (MPU5) (set 2)", - "m5bbank", "Break The Bank (Barcrest - Red Gaming) (MPU5) (set 1)", - "m5bbank13", "Break The Bank (Barcrest - Red Gaming) (MPU5) (set 2)", - "m5bbro", "Big Brother (Barcrest) (MPU5) (set 1)", - "m5bbro02", "Big Brother (Barcrest) (MPU5) (set 2)", - "m5bbrocl", "Big Brother Club (Barcrest) (MPU5)", - "m5beans", "Full Of Beans (Barcrest) (MPU5) (set 1)", - "m5beansa", "Full Of Beans (Barcrest) (MPU5) (set 2)", - "m5bigchs", "The Big Cheese (Barcrest) (MPU5) (set 1)", - "m5bigchs05", "The Big Cheese (Barcrest) (MPU5) (set 2)", - "m5biggam", "The Big Game (Barcrest) (MPU5) (set 1)", - "m5biggam11", "The Big Game (Barcrest) (MPU5) (set 2)", - "m5bigsht", "Big Shot (Barcrest - Red Gaming) (MPU5) (set 1)", - "m5bigsht04", "Big Shot (Barcrest - Red Gaming) (MPU5) (set 2)", - "m5bigsht11", "Big Shot (Barcrest - Red Gaming) (MPU5) (set 3)", - "m5bigsht13", "Big Shot (Barcrest - Red Gaming) (MPU5) (set 4)", - "m5bigshta", "Big Shot (Barcrest - Red Gaming) (MPU5) (set 5)", - "m5bling", "Bling King Crazy (Barcrest) (MPU5)", - "m5blkwht", "Black & White (Barcrest) (MPU5) (set 1)", - "m5blkwht01", "Black & White (Barcrest) (MPU5) (set 3)", - "m5blkwht11", "Black & White (Barcrest) (MPU5) (set 2)", - "m5bnkrs", "Bonkers (Barcrest - Red Gaming) (MPU5)", - "m5bnzclb", "Bonanza Club (Empire) (MPU5) (set 1)", - "m5bnzclb11", "Bonanza Club (Empire) (MPU5) (set 2)", - "m5btlbnk", "Bottle Bank (Vivid) (MPU5)", - "m5bttf", "Back To The Features (Vivid) (MPU5) (set 1)", - "m5bttfa", "Back To The Features (Vivid) (MPU5) (set 2)", - "m5bukroo", "Buckaroo (Empire) (MPU5)", - "m5bwaves", "Brain Waves (Barcrest) (MPU5) (set 1)", - "m5bwaves07", "Brain Waves (Barcrest) (MPU5) (set 2)", - "m5caesc", "Caesar's Cash (Vivid) (MPU5)", - "m5carclb", "Caribbean Club (Barcrest) (MPU5)", - "m5card", "Card Shark (Vivid) (MPU5)", - "m5carou", "Carousel (Empire) (MPU5)", - "m5carpet", "Magic Carpet (Bwb) (MPU5) (set 1)", - "m5carpet12", "Magic Carpet (Bwb) (MPU5) (set 2)", - "m5carwsh", "Car Wash (Bwb) (MPU5) (set 1)", - "m5carwsh10", "Car Wash (Bwb) (MPU5) (set 2)", - "m5casfev", "Casino Fever (Red Gaming) (MPU5) (set 1)", - "m5casfev12", "Casino Fever (Red Gaming) (MPU5) (set 2)", - "m5cashar", "Cash Arena (Barcrest) (MPU5) (set 1)", - "m5cashar04", "Cash Arena (Barcrest) (MPU5) (set 2)", - "m5cashat", "Cash Attack (Barcrest) (MPU5)", - "m5cashln", "Cash Lines (Barcrest) (MPU5)", - "m5cashrn", "Cash Run (Barcrest) (MPU5) (set 1)", - "m5cashrn01", "Cash Run (Barcrest) (MPU5) (set 2)", - "m5cashrn02", "Cash Run (Barcrest) (MPU5) (set 3)", - "m5cashrn04", "Cash Run (Barcrest) (MPU5) (set 4)", - "m5casroc", "Casino Royale Club (Empire) (MPU5)", - "m5cbrun", "Cannonball Run (Empire) (MPU5)", - "m5cbw", "Ca$h Bang Wallop (Barcrest) (MPU5) (set 1)", - "m5cbwa", "Ca$h Bang Wallop (Barcrest) (MPU5) (set 2)", - "m5centcl", "Centurion Club (Empire) (MPU5) (set 1)", - "m5centcl20", "Centurion Club (Empire) (MPU5) (set 2)", - "m5centcl21", "Centurion Club (Empire) (MPU5) (set 3)", - "m5centcl21a", "Centurion Club (Empire) (MPU5) (set 4)", - "m5centcla", "Centurion Club (Empire) (MPU5) (set 5)", - "m5circlb", "Circus Club (Bwb) (MPU5) (set 1)", - "m5circlb00", "Circus Club (Bwb) (MPU5) (set 2)", - "m5circlb15", "Circus Club (Bwb) (MPU5) (set 3)", - "m5circlb33", "Circus Club (Bwb) (MPU5) (set 4)", - "m5circus", "Circus (Bwb) (MPU5) (set 1)", - "m5circus0a", "Circus (Bwb) (MPU5) (set 2)", - "m5circus0b", "Circus (Bwb) (MPU5) (set 3)", - "m5circus11", "Circus (Bwb) (MPU5) (set 6)", - "m5circus20", "Circus (Bwb) (MPU5) (set 4)", - "m5circus21", "Circus (Bwb) (MPU5) (set 5)", - "m5clbtro", "Club Tropicana (Empire) (MPU5) (set 1)", - "m5clbtro24", "Club Tropicana (Empire) (MPU5) (set 2)", - "m5clbtro25", "Club Tropicana (Empire) (MPU5) (set 3)", - "m5clifhn", "Cliffhanger (Vivid) (MPU5)", - "m5clown", "Clown In Around (Bwb) (MPU5) (set 1)", - "m5clown11", "Clown In Around (Bwb) (MPU5) (set 2)", - "m5clown13", "Clown In Around (Bwb) (MPU5) (set 3)", - "m5clr", "MPU 5 Ram & Meter Clear (Barcrest) (MPU5)", - "m5clubsn", "Club Sandwich (Bwb) (MPU5) (set 1)", - "m5clubsn11", "Club Sandwich (Bwb) (MPU5) (set 2)", - "m5clubsn14", "Club Sandwich (Bwb) (MPU5) (set 3)", - "m5clubsn16", "Club Sandwich (Bwb) (MPU5) (set 4)", - "m5cmass", "Critical Mass (Barcrest - Red Gaming) (MPU5)", - "m5cnct4", "Connect 4 (Vivid) (MPU5) (set 1)", - "m5cnct415", "Connect 4 (Vivid) (MPU5) (set 2)", - "m5cnct420", "Connect 4 (Vivid) (MPU5) (set 3)", - "m5cockdd", "Cock A Doodle Dough! (Empire) (MPU5) (set 1)", - "m5cockdd05", "Cock A Doodle Dough! (Empire) (MPU5) (set 2)", - "m5codft", "The Codfather (Barcrest) (MPU5) (set 1)", - "m5codft02", "The Codfather (Barcrest) (MPU5) (set 2)", - "m5coloss", "Colossus Club (Empire) (MPU5)", - "m5cos", "Costa Del Cash Casino (Barcrest) (MPU5)", - "m5cosclb", "Costa Del Cash Club (Barcrest) (MPU5)", - "m5costa", "Costa Del Cash (Barcrest) (MPU5)", - "m5cpcash", "Captain Cash (Barcrest) (MPU5)", - "m5croclb", "Crocodile Rock Club (Empire) (MPU5)", - "m5crocrk", "Crocodile Rock (Empire) (MPU5) (set 1)", - "m5crocrk10", "Crocodile Rock (Empire) (MPU5) (set 2)", - "m5crsfir", "Crossfire (Empire) (MPU5)", - "m5crzkni", "Crazy Crazy Knights (Barcrest) (MPU5) (set 1)", - "m5crzkni03", "Crazy Crazy Knights (Barcrest) (MPU5) (set 2)", - "m5cshkcb", "Card Shark Club (Vivid) (MPU5) (set 1)", - "m5cshkcb12", "Card Shark Club (Vivid) (MPU5) (set 2)", - "m5cshkcb13", "Card Shark Club (Vivid) (MPU5) (set 3)", - "m5cshstx", "Cash Stax (Bwb) (MPU5)", - "m5cworan", "Clockwork Oranges (Empire) (MPU5) (set 1)", - "m5cworan12", "Clockwork Oranges (Empire) (MPU5) (set 2)", - "m5dblfun", "Double Fun (Lowen) (MPU5)", - "m5dblqts", "Double Or Quits (Bwb) (MPU5) (set 1)", - "m5dblqts1b", "Double Or Quits (Bwb) (MPU5) (set 4)", - "m5dblqtsa", "Double Or Quits (Bwb) (MPU5) (set 2)", - "m5dblqtsb", "Double Or Quits (Bwb) (MPU5) (set 3)", - "m5dbubl", "Double Bubble (Barcrest - Red Gaming) (MPU5)", - "m5devil", "Devil Of A Deal (Vivid) (MPU5)", - "m5dick", "Dick Turnip (Bwb) (MPU5) (set 1)", - "m5dick10", "Dick Turnip (Bwb) (MPU5) (set 2)", - "m5dmnf", "Diamonds Are Forever (Empire) (MPU5) (set 1)", - "m5dmnf10", "Diamonds Are Forever (Empire) (MPU5) (set 2)", - "m5dmnfcl", "Diamonds Are Forever Club (Empire) (MPU5) (set 1)", - "m5dmnfcl04", "Diamonds Are Forever Club (Empire) (MPU5) (set 2)", - "m5dmnstr", "Demon Streak (Barcrest - Red Gaming) (MPU5, set 1)", - "m5dmnstra", "Demon Streak (Barcrest - Red Gaming) (MPU5, set 2)", - "m5donna", "Donna Kebab (Bwb) (MPU5, set 1)", - "m5donnaa", "Donna Kebab (Bwb) (MPU5, set 3)", - "m5donnad", "Donna Kebab (Bwb) (MPU5, set 1, Datapak)", - "m5doshpk", "Do$h 'n' Pecks (Barcrest) (MPU5) (set 1)", - "m5doshpk05", "Do$h 'n' Pecks (Barcrest) (MPU5) (set 2)", - "m5draclb", "Ooh Aah Dracula Club (Barcrest) (MPU5) (set 1)", - "m5draclb01", "Ooh Aah Dracula Club (Barcrest) (MPU5) (set 3)", - "m5draclb07", "Ooh Aah Dracula Club (Barcrest) (MPU5) (set 2)", - "m5dragnd", "Dragon Drop (Barcrest - Red Gaming) (MPU5, set 1)", - "m5dragnda", "Dragon Drop (Barcrest - Red Gaming) (MPU5, set 2)", - "m5eggold", "Egyptian Gold (Bwb) (MPU5)", - "m5egr", "Elvis Gold Rush (Barcrest) (MPU5, set 1)", - "m5egra", "Elvis Gold Rush (Barcrest) (MPU5, set 2)", - "m5egss", "Elvis Gold Super Streak (Barcrest) (MPU5, set 1)", - "m5egssa", "Elvis Gold Super Streak (Barcrest) (MPU5, set 2)", - "m5elband", "El Bandido Club (Vivid) (MPU5)", - "m5elim", "Eliminator (Barcrest) (MPU5) (set 1)", - "m5elim03", "Eliminator (Barcrest) (MPU5) (set 2)", - "m5elim04", "Eliminator (Barcrest) (MPU5) (set 3)", - "m5evgrhr", "Elvis Gold Red Hot Roll (Barcrest) (MPU5, set 1)", - "m5evgrhra", "Elvis Gold Red Hot Roll (Barcrest) (MPU5, set 2)", - "m5ewn", "Each Way Nudge (Barcrest) (MPU5) (set 1)", - "m5ewn08", "Each Way Nudge (Barcrest) (MPU5) (set 2)", - "m5extrm", "Extreme (Empire) (MPU5)", - "m5extrmm", "Extreme Madness (Empire) (MPU5) (set 1)", - "m5extrmm04a", "Extreme Madness (Empire) (MPU5) (set 2)", - "m5extrmm04b", "Extreme Madness (Empire) (MPU5) (set 3)", - "m5extrmm10", "Extreme Madness (Empire) (MPU5) (set 4)", - "m5fair", "Fairground Attraction (Vivid) (MPU5)", - "m5fatcat", "Fat Cat (Empire) (MPU5)", - "m5fewmor", "A Few Dollars More (Empire) (MPU5) (v0.2, set 1)", - "m5fewmora", "A Few Dollars More (Empire) (MPU5) (v0.2, set 2)", - "m5fewmorb", "A Few Dollars More (Empire) (MPU5) (v0.3, set 1)", - "m5fewmorc", "A Few Dollars More (Empire) (MPU5) (v0.3, set 2)", - "m5fiddle", "On The Fiddle (Barcrest) (MPU5) (set 1)", - "m5fiddle03", "On The Fiddle (Barcrest) (MPU5) (set 2)", - "m5fire", "All Fired Up (Barcrest) (MPU5)", - "m5firebl", "Fireball (Barcrest) (MPU5)", - "m5fishcl", "Fish Full Of Dollars Club (Empire) (MPU5)", - "m5fishdl", "Fish Full Of Dollars (Empire) (MPU5) (set 1)", - "m5fishdl10", "Fish Full Of Dollars (Empire) (MPU5) (set 2)", - "m5flipcr", "Flippin Crazy (Barcrest) (MPU5)", - "m5fmonty", "The Full Monty (Empire) (MPU5) (set 1)", - "m5fmonty04a", "The Full Monty (Empire) (MPU5) (set 2)", - "m5fmonty04b", "The Full Monty (Empire) (MPU5) (set 3)", - "m5fmonty04c", "The Full Monty (Empire) (MPU5) (set 4)", - "m5fmount", "Full Mountie (Empire) (MPU5)", - "m5fnfair", "Funfair (Barcrest - Red Gaming) (MPU5)", - "m5fnfaird", "Funfair (Barcrest - Red Gaming) (MPU5) (Datapak)", - "m5fortby", "Fort Boyard (Barcrest) (MPU5) (set 1)", - "m5fortby01", "Fort Boyard (Barcrest) (MPU5) (set 2)", - "m5frnzy", "Frenzy (Barcrest) (MPU5) (set 1)", - "m5frnzya", "Frenzy (Barcrest) (MPU5) (set 2)", - "m5funsun", "Fun In The Sun (Barcrest) (MPU5) (set 1)", - "m5funsun03", "Fun In The Sun (Barcrest) (MPU5) (set 2)", - "m5fusir", "Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 1)", - "m5fusir11", "Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 2)", - "m5fusir12", "Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 3)", - "m5gdrag", "Golden Dragon (Barcrest) (MPU5)", - "m5gdrgcl", "Golden Dragon Club (Barcrest) (MPU5) (set 1)", - "m5gdrgcl05", "Golden Dragon Club (Barcrest) (MPU5) (set 2)", - "m5ggems", "Giant Gems (Vivid) (MPU5) (set 1)", - "m5ggems20", "Giant Gems (Vivid) (MPU5) (set 2)", - "m5gimmie", "Gimmie Gimmie Gimmie (Barcrest) (MPU5)", - "m5gkeys", "Golden Keys (Barcrest) (MPU5)", - "m5goape", "Going Ape (Bwb) (MPU5)", - "m5gophcl", "Gopher Gold Club (Empire) (MPU5)", - "m5gophr", "Gopher Gold (Empire) (MPU5)", - "m5gpclub", "Get Plastered Club (Bwb) (MPU5)", - "m5groll", "Golden Roll (Vivid) (MPU5)", - "m5grush", "Gold Rush (Barcrest) (MPU5) (set 1)", - "m5grush01", "Gold Rush (Barcrest) (MPU5) (set 6)", - "m5grush02", "Gold Rush (Barcrest) (MPU5) (set 5)", - "m5grush03", "Gold Rush (Barcrest) (MPU5) (set 4)", - "m5grush04", "Gold Rush (Barcrest) (MPU5) (set 3)", - "m5grush10", "Gold Rush (Barcrest) (MPU5) (set 2)", - "m5grush5", "Gold Rush Five Liner (Barcrest) (MPU5) (set 1)", - "m5grush504", "Gold Rush Five Liner (Barcrest) (MPU5) (set 2)", - "m5gruss", "Gold Rush Sit Down (Barcrest) (MPU5)", - "m5grusst", "Gold Rush Stampede (Barcrest) (MPU5) (set 1)", - "m5grusst03", "Gold Rush Stampede (Barcrest) (MPU5) (set 3)", - "m5grusst04", "Gold Rush Stampede (Barcrest) (MPU5) (set 2)", - "m5gsstrk", "Gold Super Streak (Barcrest) (MPU5) (set 1)", - "m5gsstrk07", "Gold Super Streak (Barcrest) (MPU5) (set 2)", - "m5gstrik", "Gold Strike (Barcrest) (MPU5) (set 1)", - "m5gstrik01", "Gold Strike (Barcrest) (MPU5) (set 4)", - "m5gstrik01a", "Gold Strike (Barcrest) (MPU5) (set 5)", - "m5gstrik02", "Gold Strike (Barcrest) (MPU5) (set 3)", - "m5gstrik11", "Gold Strike (Barcrest) (MPU5) (set 2)", - "m5gstrika", "Gold Strike (Barcrest) (MPU5) (set 6)", - "m5hellrz", "Hellraiser (Barcrest) (MPU5)", - "m5hgl", "Happy Go Lucky (Bwb) (MPU5) (set 1)", - "m5hgl14", "Happy Go Lucky (Bwb) (MPU5) (set 3)", - "m5hgl16", "Happy Go Lucky (Bwb) (MPU5) (set 2)", - "m5hiclau", "High Claudius (Vivid) (MPU5)", - "m5hifly", "High Flyer (Barcrest) (MPU5) (set 1)", - "m5hifly03", "High Flyer (Barcrest) (MPU5) (set 2)", - "m5hifly04", "High Flyer (Barcrest) (MPU5) (set 3)", - "m5hilok", "Hi Lo Karate (Vivid) (MPU5)", - "m5hisprt", "High Spirits (Empire) (MPU5)", - "m5hlsumo", "Hi Lo Sumo (Barcrest) (MPU5)", - "m5hocscl", "Hocus Pocus Club (Empire) (MPU5)", - "m5hocus", "Hocus Pocus (Empire) (MPU5) (set 1)", - "m5hocus10", "Hocus Pocus (Empire) (MPU5) (set 2)", - "m5holy", "The Holy Grail (Barcrest) (MPU5) (set 1)", - "m5holy10", "The Holy Grail (Barcrest) (MPU5) (set 2)", - "m5honmon", "Honey Money (Vivid) (MPU5) (set 1)", - "m5honmona", "Honey Money (Vivid) (MPU5) (set 2)", - "m5hopidl", "Hop Idol (Vivid) (MPU5)", - "m5horn", "Horn Of Plenty (Barcrest / Whitbread) (MPU5)", - "m5hotrk", "Hot Rocks (Barcrest) (MPU5)", - "m5hotsht", "Hot Shots (Empire) (MPU5) (set 1)", - "m5hotsht07a", "Hot Shots (Empire) (MPU5) (set 2)", - "m5hotsht08", "Hot Shots (Empire) (MPU5) (set 3)", - "m5hotsht08a", "Hot Shots (Empire) (MPU5) (set 4)", - "m5hotsht10", "Hot Shots (Empire) (MPU5) (set 5)", - "m5hotsht10a", "Hot Shots (Empire) (MPU5) (set 6)", - "m5hotslt", "Hot Slot (Barcrest) (MPU5)", - "m5hotstf", "Hot Stuff (Barcrest) (MPU5)", - "m5hula", "Hula Moolah (Empire) (MPU5) (set 1)", - "m5hula10", "Hula Moolah (Empire) (MPU5) (set 2)", - "m5hulacl", "Hula Moolah Club (Empire) (MPU5)", - "m5hypalx", "Hypalinx (Barcrest - Red Gaming) (MPU5)", - "m5hypno", "Hypnotic (Vivid) (MPU5)", - "m5hypvip", "Hyper Viper (Barcrest) (MPU5)", - "m5invad", "Invaders (Barcrest - Red Gaming) (MPU5)", - "m5jackbx", "Jack In The Box (Empire) (MPU5) (set 1)", - "m5jackbx03", "Jack In The Box (Empire) (MPU5) (set 2)", - "m5jackp2", "Jackpoteers 2 (Barcrest) (MPU5) (set 1)", - "m5jackp2a", "Jackpoteers 2 (Barcrest) (MPU5) (set 2)", - "m5jackpt", "Jackpoteers (Barcrest) (MPU5) (set 1)", - "m5jackpt07", "Jackpoteers (Barcrest) (MPU5) (set 2)", - "m5jakjok", "Jackpot Jokers (Lowen) (MPU5)", - "m5jcptgn", "Jackpot Genie (Barcrest - Red Gaming) (MPU5)", - "m5jcy", "Juicy Fruits (Empire) (MPU5)", - "m5jlstrk", "Jewel Strike (Barcrest - Red Gaming) (MPU5)", - "m5jlyjwl", "Jolly Jewels (Barcrest) (MPU5) (set 1)", - "m5jlyjwl01", "Jolly Jewels (Barcrest) (MPU5) (set 2)", - "m5jlyjwl02", "Jolly Jewels (Barcrest) (MPU5) (set 3)", - "m5jlyrog", "Jolly Roger (Barcrest) (MPU5) (set 1)", - "m5jlyroga", "Jolly Roger (Barcrest) (MPU5) (set 2)", - "m5jmpgem", "Jumping Gems (Empire) (MPU5) (set 1)", - "m5jmpgem01", "Jumping Gems (Empire) (MPU5) (set 2)", - "m5jmpgem03", "Jumping Gems (Empire) (MPU5) (set 3)", - "m5jmpgmc", "Jumping Gems Club (Empire) (MPU5)", - "m5jmpjok", "Jumpin Jokers (Vivid) (MPU5) (set 1)", - "m5jmpjok11", "Jumpin Jokers (Vivid) (MPU5) (set 2)", - "m5jmpjoka", "Jumpin Jokers (Vivid) (MPU5) (set 3)", - "m5jmpjokb", "Jumpin Jokers (Vivid) (MPU5) (set 4)", - "m5jokpak", "Joker In The Pack (Bwb) (MPU5)", - "m5kaleid", "Kaleidoscope Club (Empire) (MPU5)", - "m5kcclb", "King Cobra Club (Empire) (MPU5) (set 1)", - "m5kcclb24", "King Cobra Club (Empire) (MPU5) (set 2)", - "m5kingko", "King KO (Barcrest) (MPU5) (set 1)", - "m5kingko04", "King KO (Barcrest) (MPU5) (set 2)", - "m5kingko05", "King KO (Barcrest) (MPU5) (set 3)", - "m5kingqc", "Kings & Queens Club (Empire) (MPU5) (set 1)", - "m5kingqc06", "Kings & Queens Club (Empire) (MPU5) (set 2)", - "m5kingqc07", "Kings & Queens Club (Empire) (MPU5) (set 3)", - "m5kingqc08", "Kings & Queens Club (Empire) (MPU5) (set 4)", - "m5kkebab", "King Kebab (Barcrest) (MPU5) (set 1)", - "m5kkebab10", "King Kebab (Barcrest) (MPU5) (set 2)", - "m5kkebaba", "King Kebab (Barcrest) (MPU5) (set 3)", - "m5korma", "Korma Chameleon (Empire) (MPU5) (set 1)", - "m5korma12", "Korma Chameleon (Empire) (MPU5) (set 2)", - "m5kormcl", "Korma Chameleon Club (Empire) (MPU5)", - "m5lock", "Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 1)", - "m5lock12", "Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 3)", - "m5lock13", "Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 2)", - "m5lockcl", "Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 1)", - "m5lockcl14", "Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 3)", - "m5lockcl15", "Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 2)", - "m5loony", "Loony Juice (Vivid) (MPU5)", - "m5loot", "Loot 'n' Khamun (Vivid) (MPU5, set 1)", - "m5loota", "Loot 'n' Khamun (Vivid) (MPU5, set 2)", - "m5lotta", "Lotta Luck (Barcrest) (MPU5)", - "m5lvwire", "Live Wire (Bwb) (MPU5) (set 1)", - "m5lvwirea", "Live Wire (Bwb) (MPU5) (set 2)", - "m5mag7s", "Magnificent 7s (Vivid) (MPU5, set 1)", - "m5mag7sa", "Magnificent 7s (Vivid) (MPU5, set 2)", - "m5mag7sb", "Magnificent 7s (Vivid) (MPU5, set 3)", - "m5mag7sc", "Magnificent 7s (Vivid) (MPU5, set 4)", - "m5mag7sd", "Magnificent 7s (Vivid) (MPU5, set 5)", - "m5mag7se", "Magnificent 7s (Vivid) (MPU5, set 6)", - "m5martns", "Money Mad Martians (Barcrest) (MPU5) (set 1)", - "m5martns07", "Money Mad Martians (Barcrest) (MPU5) (set 2)", - "m5mega", "Mega Zone (Barcrest) (MPU5)", - "m5minesw", "Minesweeper (Bwb) (MPU5)", - "m5mmak", "Money Maker (Barcrest) (MPU5) (set 1)", - "m5mmak06", "Money Maker (Barcrest) (MPU5) (set 2)", - "m5monjok", "Monedin Joker (Spanish) (Barcrest) (MPU5) (set 1)", - "m5monjoka", "Monedin Joker (Spanish) (Barcrest) (MPU5) (set 2)", - "m5monmst", "Money Monster (Empire) (MPU5) (set 1)", - "m5monmsta", "Money Monster (Empire) (MPU5) (set 2)", - "m5monty", "Monty Python (Barcrest) (MPU5)", - "m5mpfc", "Monty Python's Flying Circus (Barcrest) (MPU5)", - "m5mpfccl", "Monty Python's Flying Circus Club (Barcrest) (MPU5)", - "m5mprio", "Monty Python Rio (Barcrest) (MPU5)", - "m5msf", "Manic Streak Features (Vivid) (MPU5, set 1)", - "m5msfa", "Manic Streak Features (Vivid) (MPU5, set 2)", - "m5neptun", "Neptunes Treasure (Barcrest) (MPU5)", - "m5nitro", "Nitro (Barcrest - Red Gaming) (MPU5)", - "m5nnww", "Nudge Nudge Wink Wink (Barcrest) (MPU5)", - "m5nnwwgl", "Nudge Nudge Wink Wink Gold (Barcrest) (MPU5)", - "m5oohaah", "Ooh Aah Dracula (Barcrest) (MPU5) (set 1)", - "m5oohaah01", "Ooh Aah Dracula (Barcrest) (MPU5) (set 2)", - "m5oohrio", "Ooh Ahh Dracula Rio (Barcrest) (MPU5)", - "m5openbx", "Open The Box (Barcrest) (MPU5) (set 1)", - "m5openbx01", "Open The Box (Barcrest) (MPU5) (set 4)", - "m5openbx05", "Open The Box (Barcrest) (MPU5) (set 3)", - "m5openbx06", "Open The Box (Barcrest) (MPU5) (set 2)", - "m5overld", "Overload (Barcrest) (MPU5) (set 1)", - "m5overld02", "Overload (Barcrest) (MPU5) (set 2)", - "m5overld10", "Overload (Barcrest) (MPU5) (set 3)", - "m5overld11", "Overload (Barcrest) (MPU5) (set 4)", - "m5paint", "Paint The Town Red (Barcrest - Red Gaming) (MPU5)", - "m5peepsh", "Peep Show (Barcrest) (MPU5)", - "m5piefac", "Pie Factory (Vivid) (MPU5) (set 1)", - "m5piefac12", "Pie Factory (Vivid) (MPU5) (set 3)", - "m5piefac23", "Pie Factory (Vivid) (MPU5) (set 2)", - "m5piefaca", "Pie Factory (Vivid) (MPU5) (set 4)", - "m5piefc2", "Pie Factory 2 (Vivid) (MPU5) (set 1)", - "m5piefc2a", "Pie Factory 2 (Vivid) (MPU5) (set 2)", - "m5piefc2b", "Pie Factory 2 (Vivid) (MPU5) (set 3)", - "m5piefcr", "Pie Factory Rio (Vivid) (MPU5)", - "m5ppussy", "Pink Pussy (Mdm) (MPU5)", - "m5psy2", "Psycho Cash Beast 2 (Barcrest) (MPU5)", - "m5psyccl", "Psycho Cash Beast Club (Barcrest) (MPU5) (set 1)", - "m5psyccl01", "Psycho Cash Beast Club (Barcrest) (MPU5) (set 2)", - "m5psyccla", "Psycho Cash Beast Club (Bwb) (MPU5) (set 1)", - "m5psyccla02", "Psycho Cash Beast Club (Bwb) (MPU5) (set 3)", - "m5psyccla24", "Psycho Cash Beast Club (Bwb) (MPU5) (set 2)", - "m5psycho", "Psycho Cash Beast (Barcrest) (MPU5) (set 1)", - "m5psycho06", "Psycho Cash Beast (Barcrest) (MPU5) (set 2)", - "m5psychoa", "Psycho Cash Beast (Bwb) (MPU5) (set 1)", - "m5psychoa21", "Psycho Cash Beast (Bwb) (MPU5) (set 2)", - "m5ptyani", "Party Animal (Barcrest) (MPU5) (set 1)", - "m5ptyani01", "Party Animal (Barcrest) (MPU5) (set 2)", - "m5qdraw", "Quick On The Draw (Vivid) (MPU5) (set 1)", - "m5qdraw12", "Quick On The Draw (Vivid) (MPU5) (set 2)", - "m5qdraw14", "Quick On The Draw (Vivid) (MPU5) (set 3)", - "m5qdraw15", "Quick On The Draw (Vivid) (MPU5) (set 4)", - "m5qdrawa", "Quick On The Draw (Vivid) (MPU5) (set 5)", - "m5qdrawb", "Quick On The Draw (Vivid) (MPU5) (set 6)", - "m5qshot", "Quack Shot (Barcrest) (MPU5) (set 1)", - "m5qshot04", "Quack Shot (Barcrest) (MPU5) (set 2)", - "m5quake", "Quake (Barcrest - Red Gaming) (MPU5)", - "m5rainrn", "Rainbow Runner (Barcrest - Red Gaming) (MPU5, set 1)", - "m5rainrna", "Rainbow Runner (Barcrest - Red Gaming) (MPU5, set 2)", - "m5rampg", "Rampage (Barcrest - Red Gaming) (MPU5) (set 1)", - "m5rampg11", "Rampage (Barcrest - Red Gaming) (MPU5) (set 2)", - "m5rampg12", "Rampage (Barcrest - Red Gaming) (MPU5) (set 3)", - "m5ramrcl", "Ram Raid Club (Empire) (MPU5)", - "m5ramrd", "Ram Raid (Empire) (MPU5)", - "m5ratpk", "Rat Pack (Vivid) (MPU5) (set 1)", - "m5ratpka", "Rat Pack (Vivid) (MPU5) (set 2)", - "m5rawin", "Reel A Win (Vivid / Whitbread) (MPU5)", - "m5razdz", "Razzle Dazzle Club (Barcrest) (MPU5) (set 1)", - "m5razdz10", "Razzle Dazzle Club (Barcrest) (MPU5) (set 2)", - "m5razdz11", "Razzle Dazzle Club (Barcrest) (MPU5) (set 3)", - "m5rcx", "Royal Exchange Club (Barcrest) (MPU5) (set 1)", - "m5rcxa", "Royal Exchange Club (Barcrest) (MPU5) (set 2)", - "m5rdwarf", "Red Dwarf (Barcrest - Red Gaming) (MPU5)", - "m5redbal", "Random Red Ball (Vivid) (MPU5)", - "m5redrck", "Ready To Rock (Barcrest) (MPU5) (set 1)", - "m5redrck10", "Ready To Rock (Barcrest) (MPU5) (set 2)", - "m5redrcka", "Ready To Rock (Barcrest) (MPU5) (set 3)", - "m5redx", "Red X (Barcrest - Red Gaming) (MPU5) (set 1)", - "m5redx12", "Red X (Barcrest - Red Gaming) (MPU5) (set 2)", - "m5reelth", "Reel Thunder (Bwb) (MPU5)", - "m5reelwn", "Reel A Win (Bwb) (MPU5) (set 1)", - "m5reelwn24", "Reel A Win (Bwb) (MPU5) (set 2)", - "m5resfrg", "Reservoir Frogs (Empire) (MPU5)", - "m5revo", "Revolution (Barcrest) (MPU5) (set 1)", - "m5revo13", "Revolution (Barcrest) (MPU5) (set 2)", - "m5revoa", "Revolution (Barcrest) (MPU5) (set 3)", - "m5rfymc", "Run For Your Money Club (Barcrest) (MPU5) (set 1)", - "m5rfymc06", "Run For Your Money Club (Barcrest) (MPU5) (Set 2)", - "m5rgclb", "Rio Grande Club (Barcrest) (MPU5) (set 1)", - "m5rgclb01", "Rio Grande Club (Barcrest) (MPU5) (set 7)", - "m5rgclb01a", "Rio Grande Club (Barcrest) (MPU5) (set 8)", - "m5rgclb03", "Rio Grande Club (Barcrest) (MPU5) (set 6)", - "m5rgclb11", "Rio Grande Club (Barcrest) (MPU5) (set 2)", - "m5rgclb12", "Rio Grande Club (Barcrest) (MPU5) (set 3)", - "m5rgclb20", "Rio Grande Club (Barcrest) (MPU5) (set 4)", - "m5rgclb21", "Rio Grande Club (Barcrest) (MPU5) (set 5)", - "m5rhkni", "Red Hot Knights (Barcrest) (MPU5)", - "m5rhrg", "Red Hot Roll Gold (Barcrest) (MPU5) (set 1)", - "m5rhrga", "Red Hot Roll Gold (Barcrest) (MPU5) (set 2)", - "m5rhrgt", "Red Hot Roll Triple (Barcrest) (MPU5) (set 1)", - "m5rhrgt02", "Red Hot Roll Triple (Barcrest) (MPU5) (set 3)", - "m5rhrgt12", "Red Hot Roll Triple (Barcrest) (MPU5) (set 2)", - "m5ritj", "Rumble In The Jungle (Barcrest) (MPU5)", - "m5rlup", "Roll Up (Bwb) (MPU5)", - "m5rollup", "Roll Up Roll Up (Vivid) (MPU5)", - "m5rollx", "Roll X (Empire) (MPU5) (set 1)", - "m5rollx12", "Roll X (Empire) (MPU5) (set 2)", - "m5ronr", "Reel Or No Reel (Empire) (MPU5) (set 1)", - "m5ronr05", "Reel Or No Reel (Empire) (MPU5) (set 2)", - "m5ronr07", "Reel Or No Reel (Empire) (MPU5) (set 3)", - "m5roof", "Raise The Roof (Barcrest) (MPU5) (set 1)", - "m5roofa", "Raise The Roof (Barcrest) (MPU5) (set 2)", - "m5round", "Round & Round (Bwb) (MPU5)", - "m5roundl", "Round & Round (Lowen) (MPU5)", - "m5rthh", "Return To The Haunted House (Empire) (MPU5)", - "m5rub", "Rubies & Diamonds (Barcrest) (MPU5)", - "m5rwb", "Red White & Blue (Barcrest) (MPU5)", - "m5rwbbwb", "Red White & Blue (Bwb) (MPU5) (set 1)", - "m5rwbbwb15", "Red White & Blue (Bwb) (MPU5) (set 4)", - "m5rwbbwb24", "Red White & Blue (Bwb) (MPU5) (set 2)", - "m5rwbbwb25", "Red White & Blue (Bwb) (MPU5) (set 3)", - "m5sblz", "Snail Blazer (Barcrest - Red Gaming) (MPU5)", - "m5scfinl", "Super Cup Final (Lowen) (MPU5)", - "m5scharg", "Super Charged (Barcrest) (MPU5) (set 1)", - "m5scharg05", "Super Charged (Barcrest) (MPU5) (set 2)", - "m5scharg06", "Super Charged (Barcrest) (MPU5) (set 3)", - "m5scharga", "Super Charged (Barcrest) (MPU5) (set 4)", - "m5sec7", "Secret 7s (Bwb) (MPU5) (set 1)", - "m5sec7a", "Secret 7s (Bwb) (MPU5) (set 2)", - "m5seven", "Seven Deadly Spins (Barcrest) (MPU5)", - "m5shark", "Shark Raving Mad (Vivid) (MPU5) (set 1)", - "m5sharka", "Shark Raving Mad (Vivid) (MPU5) (set 2)", - "m5sheik", "Sheik Yer Money (Barcrest) (MPU5)", - "m5showtm", "Showtime (Barcrest) (MPU5)", - "m5sil7", "Silver 7s (Bwb) (MPU5) (set 1)", - "m5sil7a", "Silver 7s (Bwb) (MPU5) (set 2)", - "m5silver", "Silver Screen (Barcrest) (MPU5) (set 1)", - "m5silver03", "Silver Screen (Barcrest) (MPU5) (set 3)", - "m5silver06", "Silver Screen (Barcrest) (MPU5) (set 2)", - "m5sixsht", "Six Shooter (Vivid) (MPU5) (v1.1, set 1)", - "m5sixshta", "Six Shooter (Vivid) (MPU5) (v1.1, set 2)", - "m5sixshtb", "Six Shooter (Vivid) (MPU5) (v2.0, set 1)", - "m5sixshtc", "Six Shooter (Vivid) (MPU5) (v2.0, set 2)", - "m5sixshtd", "Six Shooter (Vivid) (MPU5) (v2.0, set 3)", - "m5sixshte", "Six Shooter (Vivid) (MPU5) (v2.0, set 4)", - "m5sixshtf", "Six Shooter (Vivid) (MPU5) (v2.0, set 5)", - "m5sixshtg", "Six Shooter (Vivid) (MPU5) (v2.0, set 6)", - "m5sixshth", "Six Shooter (Vivid) (MPU5) (v2.0, set 7)", - "m5sixshti", "Six Shooter (Vivid) (MPU5) (v2.1, set 1)", - "m5sixshtj", "Six Shooter (Vivid) (MPU5) (v2.1, set 2)", - "m5sixshtk", "Six Shooter (Vivid) (MPU5) (v2.1, set 3)", - "m5sixshtl", "Six Shooter (Vivid) (MPU5) (v2.1, set 4)", - "m5sixshtm", "Six Shooter (Vivid) (MPU5) (v2.1, set 5)", - "m5sixshtn", "Six Shooter (Vivid) (MPU5) (v2.1, set 6)", - "m5skulcl", "Skullduggery Club (Empire) (MPU5) (set 1)", - "m5skulcl20", "Skullduggery Club (Empire) (MPU5) (set 2)", - "m5skulcl23", "Skullduggery Club (Empire) (MPU5) (set 3)", - "m5slide", "Slider (Barcrest - Red Gaming) (MPU5)", - "m5smobik", "Smokey Bikin (Bwb) (MPU5) (set 1)", - "m5smobik12", "Smokey Bikin (Bwb) (MPU5) (set 2)", - "m5sondr", "Son Of Dracula (Barcrest) (MPU5) (set 1)", - "m5sondr05", "Son Of Dracula (Barcrest) (MPU5) (set 2)", - "m5sondra", "Son Of Dracula (Barcrest) (MPU5) (15GBP Jackpot)", - "m5spddmn", "Speed Demon (Vivid) (MPU5)", - "m5speccl", "Spectrum Club (Vivid) (MPU5)", - "m5spicer", "The Spice Is Right (Barcrest) (MPU5) (set 1)", - "m5spicer06", "The Spice Is Right (Barcrest) (MPU5) (set 2)", - "m5spiker", "Spiker The Biker (Barcrest) (MPU5) (set 1)", - "m5spiker02", "Spiker The Biker (Barcrest) (MPU5) (set 2)", - "m5spikera", "Spiker The Biker (Barcrest) (MPU5) (set 3)", - "m5spins", "Spinsation (Barcrest) (MPU5)", - "m5squids", "Squids In (Barcrest) (MPU5) (set 1)", - "m5squids04a", "Squids In (Barcrest) (MPU5) (set 2)", - "m5squids05", "Squids In (Barcrest) (MPU5) (set 3)", - "m5squids06", "Squids In (Barcrest) (MPU5) (set 4)", - "m5sstrk", "Super Streak (Barcrest) (MPU5) (set 1)", - "m5sstrk02a", "Super Streak (Barcrest) (MPU5) (set 2)", - "m5starcl", "Stars & Stripes Club (Vivid) (MPU5)", - "m5stars", "Stars & Stripes (Vivid) (MPU5) (set 1)", - "m5stars10", "Stars & Stripes (Vivid) (MPU5) (set 8)", - "m5stars10a", "Stars & Stripes (Vivid) (MPU5) (set 9)", - "m5stars13a", "Stars & Stripes (Vivid) (MPU5) (set 2)", - "m5stars20", "Stars & Stripes (Vivid) (MPU5) (set 7)", - "m5stars22", "Stars & Stripes (Vivid) (MPU5) (set 6)", - "m5stars25", "Stars & Stripes (Vivid) (MPU5) (set 5)", - "m5stars25a", "Stars & Stripes (Vivid) (MPU5) (set 4)", - "m5stars26", "Stars & Stripes (Vivid) (MPU5) (set 3)", - "m5startr", "Stars & Stripes Triple (Vivid) (MPU5)", - "m5stax", "Stax Of Cash (Barcrest) (MPU5)", - "m5supnov", "Supernova (Barcrest) (MPU5) (set 1)", - "m5supnova", "Supernova (Barcrest) (MPU5) (set 2)", - "m5supro", "Super Roulette (Vivid) (MPU5) (set 1)", - "m5suproa", "Super Roulette (Vivid) (MPU5) (set 2)", - "m5supstr", "Super Star (Barcrest) (MPU5) (set 1)", - "m5supstra", "Super Star (Barcrest) (MPU5) (set 2)", - "m5tball", "Thunderball (Empire) (MPU5)", - "m5tbird", "Thunderbird (Barcrest) (MPU5)", - "m5tempcl", "Temple Of Treasure Club (Barcrest) (MPU5)", - "m5tempp", "Temple Of Pleasure (Vivid) (MPU5)", - "m5tempt", "Temple Of Treasure (Barcrest) (MPU5) (set 1)", - "m5tempt05", "Temple Of Treasure (Barcrest) (MPU5) (set 2)", - "m5tempt2", "Temple Of Treasure 2 (Barcrest) (MPU5) (set 1)", - "m5tempt203", "Temple Of Treasure 2 (Barcrest) (MPU5) (set 2)", - "m5tempt2a", "Temple Of Treasure 2 (Barcrest) (MPU5) (set 3)", - "m5tempta", "Temple Of Treasure (Barcrest) (MPU5) (set 3)", - "m5temptb", "Temple Of Treasure (Barcrest) (MPU5) (set 4)", - "m5thtsmg", "That's Magic (Barcrest - Red Gaming) (MPU5)", - "m5tictac", "Tic Tac Tut (Vivid) (MPU5)", - "m5tictacbwb", "Tic Tac Tut (Bwb) (MPU5) (set 1)", - "m5tictacbwb16", "Tic Tac Tut (Bwb) (MPU5) (set 2)", - "m5tomb", "Tomb Raiders (Empire) (MPU5)", - "m5topdog", "Top Dog (Barcrest) (MPU5) (set 1)", - "m5topdog04", "Top Dog (Barcrest) (MPU5) (set 2)", - "m5topdoga", "Top Dog (Barcrest) (MPU5) (set 3)", - "m5topdol", "Top Dollar (Barcrest - Red Gaming) (MPU5) (set 1)", - "m5topdola", "Top Dollar (Barcrest - Red Gaming) (MPU5) (set 2)", - "m5trail", "Trailblazer Club (Barcrest) (MPU5)", - "m5trclb", "Tomb Raiders Club (Empire) (MPU5)", - "m5tsar", "Tsar Wars (Empire) (MPU5)", - "m5tst", "MPU 5 Test Rom (Barcrest) (MPU5)", - "m5ttop", "Treble Top (Empire) (MPU5) (set 1)", - "m5ttop04", "Treble Top (Empire) (MPU5) (set 2)", - "m5ttop10", "Treble Top (Empire) (MPU5) (set 3)", - "m5ttopcl", "Treble Top Club (Empire) (MPU5)", - "m5ttwo", "Take Two (Barcrest) (MPU5)", - "m5ultimo", "Ultimo (Barcrest) (MPU5) (set 1)", - "m5ultimo03a", "Ultimo (Barcrest) (MPU5) (set 2)", - "m5ultimo04", "Ultimo (Barcrest) (MPU5) (set 3)", - "m5upover", "Up & Over (Barcrest) (MPU5) (set 1)", - "m5upover15", "Up & Over (Barcrest) (MPU5) (set 2)", - "m5vampup", "Vamp It Up (Barcrest) (MPU5)", - "m5vertcl", "Vertigo Club (Empire) (MPU5)", - "m5vertgo", "Vertigo (Empire) (MPU5)", - "m5whdres", "Who Dares Spins (MPU5)", - "m5winway", "Winning Ways (MPU5)", - "m5wking", "Wild King (Barcrest) (MPU5) (set 1)", - "m5wking05", "Wild King (Barcrest) (MPU5) (set 2)", - "m5wonga", "A Fish Called Wonga (Empire) (MPU5)", - "m5wthing", "Wild Thing Club (Empire) (MPU5) (set 1)", - "m5wthing11", "Wild Thing Club (Empire) (MPU5) (set 2)", - "m5wthing20", "Wild Thing Club (Empire) (MPU5) (set 3)", - "m5xchn", "Exchanges Unlimited (Barcrest) (MPU5)", - "m5xena", "Xena Warrior Princess (Bwb) (MPU5)", - "m5xfact", "X Factor (Empire) (MPU5) (set 1)", - "m5xfact02", "X Factor (Empire) (MPU5) (set 2)", - "m5xfact04", "X Factor (Empire) (MPU5) (set 3)", - "m5xfact11", "X Factor (Empire) (MPU5) (set 4)", - "m5zigzag", "Zig Zag (Barcrest - Red Gaming) (MPU5)", - "m660", "Mission 660 (US)", - "m660b", "Mission 660 (bootleg)", - "m660j", "Mission 660 (Japan)", - "m79amb", "M-79 Ambush", - "m_mpac", "Mr. and Mrs. PacMan", - "m_tppokr", "Top Poker (Dutch, Game Card 95-750-899)", - "mac2bios", "Multi Amenity Cassette System 2 BIOS", - "macattck", "Mac Attack", - "mace", "Mace: The Dark Age (boot ROM 1.0ce, HDD 1.0b)", - "macea", "Mace: The Dark Age (HDD 1.0a)", - "mach2", "Mach 2", - "mach3", "M.A.C.H. 3", - "macha", "Monoshiri Quiz Osyaberi Macha (Japan)", - "machbrkr", "Mach Breakers - Numan Athletics 2 (Japan)", - "machomou", "Macho Mouse", - "machridr", "Vs. Mach Rider (Endurance Course Version)", - "machridra", "Vs. Mach Rider (Fighting Course Version, set MR4-1 A)", - "macross", "Super Spacefortress Macross / Chou-Jikuu Yousai Macross", - "macross2", "Super Spacefortress Macross II / Chou-Jikuu Yousai Macross II", - "macrossp", "Macross Plus", - "macsbios", "Multi Amenity Cassette System BIOS", - "madalien", "Mad Alien", - "madaliena", "Mad Alien (Highway Chase)", - "madball", "Mad Ball V2.0", - "madballn", "Mad Ball V2.0 (With Nudity)", - "madcrash", "Mad Crasher", - "madcrush", "Mad Crusher (Japan)", - "maddog", "Mad Dog McCree v2.03 board rev.B", - "maddog2", "Mad Dog II: The Lost Gold v2.04", - "maddog21", "Mad Dog II: The Lost Gold v1.0", - "maddog22", "Mad Dog II: The Lost Gold v2.02", - "maddoga", "Mad Dog McCree v1C board rev.A", - "maddonna", "Mad Donna (set 1)", - "maddonnb", "Mad Donna (set 2)", - "madgear", "Mad Gear (US)", - "madgearj", "Mad Gear (Japan)", - "madmotor", "Mad Motor", - "madrace", "Mad Race", - "madshark", "Mad Shark", - "madzoo", "Mad Zoo (version U450C)", - "magdrop", "Magical Drop (Japan, Version 1.1, 1995.06.21)", - "magdrop2", "Magical Drop II", - "magdrop3", "Magical Drop III", - "magdropp", "Magical Drop Plus 1 (Japan, Version 2.1, 1995.09.12)", - "magerror", "Magical Error wo Sagase", - "magic", "Magic", - "magic10", "Magic's 10 (ver. 16.55)", - "magic102", "Magic's 10 2 (ver 1.1)", - "magic10a", "Magic's 10 (ver. 16.54)", - "magic10b", "Magic's 10 (ver. 16.45)", - "magic10c", "Magic's 10 (ver. 16.15)", - "magicard", "Magic Card (set 1)", - "magicarda", "Magic Card (set 2)", - "magicardb", "Magic Card (set 3)", - "magicarde", "Magic Card Export 94", - "magicardj", "Magic Card Jackpot (4.01)", - "magicbal", "Magicball Fighting (Korea)", - "magicbom", "Magic Bomb (Version 1)", - "magicbub", "Magic Bubble", - "magicbuba", "Magic Bubble (Adult version)", - "magicfly", "Magic Fly", - "magicle", "Magic Lotto Export (5.03)", - "magicmsk", "Magic Mask (MV4115, Export)", - "magicrd2", "Magic Card II (Bulgarian)", - "magicrd2a", "Magic Card II (Nov, Yugoslavian)", - "magicrd2b", "Magic Card II (green TAB or Impera board)", - "magicrd2c", "Magic Card II (blue TAB board, encrypted)", - "magicstk", "Magic Sticks", - "magictg", "Magic the Gathering: Armageddon (set 1)", - "magictga", "Magic the Gathering: Armageddon (set 2)", - "magix", "Magix / Rock", - "magixb", "Magix / Rock (no copyright message)", - "magjoker", "Magic Joker (v1.25.10.2000)", - "maglord", "Magician Lord (NGM-005)", - "maglordh", "Magician Lord (NGH-005)", - "magmax", "Mag Max", - "magodds", "Magical Odds (set 1)", - "magoddsa", "Magical Odds (set 2)", - "magoddsb", "Magical Odds (set 3)", - "magoddsc", "Magical Odds (set 4, custom encrypted CPU block)", - "magoddsd", "Magical Odds (set 5, custom encrypted CPU block)", - "magspeed", "Magical Speed", - "magspot", "Magical Spot", - "magspot2", "Magical Spot II", - "magtouch", "Magical Touch", - "magtruck", "Magical Truck Adventure", - "magworm", "Magic Worm (bootleg of Centipede, set 1)", - "magworma", "Magic Worm (bootleg of Centipede, set 2)", - "magzun", "Magical Zunou Power (J 961031 V1.000)", - "mahjngoh", "Mahjong Oh (V2.06J)", - "mahmajn", "Tokoro San no MahMahjan (Japan, ROM Based)", - "mahmajn2", "Tokoro San no MahMahjan 2 (Japan, ROM Based)", - "mahoudai", "Mahou Daisakusen (Japan)", - "mahretsu", "Mahjong Kyo Retsuden (NGM-004)(NGH-004)", - "maiko", "Maikobana (Japan 900802)", - "mainevt", "The Main Event (4 Players ver. Y)", - "mainevt2p", "The Main Event (2 Players ver. X)", - "mainevto", "The Main Event (4 Players ver. F)", - "mainline", "Mainline Double Joker Poker", - "mainsnk", "Main Event (1984)", - "majest12", "Majestic Twelve - The Space Invaders Part IV (Japan)", - "majorpkr", "Major Poker (v2.0)", - "majrjhdx", "Mahjong Raijinhai DX", - "majs101b", "Mahjong Studio 101 [BET] (Japan)", - "majtitl2", "Major Title 2 (World)", - "majtitl2j", "Major Title 2 (Japan)", - "majtitle", "Major Title (World)", - "majtitlej", "Major Title (Japan)", - "majuu", "Majuu no Ohkoku", - "majxtal7", "Mahjong X-Tal 7 - Crystal Mahjong / Mahjong Diamond 7 (Japan)", - "makaiden", "Makai Densetsu (Japan)", - "makaijan", "Makaijan [BET] (Japan)", - "makaimur", "Makai-Mura (Japan)", - "makaimurc", "Makai-Mura (Japan Revision C)", - "makaimurg", "Makai-Mura (Japan Revision G)", - "maketrax", "Make Trax (US set 1)", - "maketrxb", "Make Trax (US set 2)", - "makyosen", "Makyou Senshi (Japan)", - "maletmad", "Mallet Madness v2.1", - "malzak", "Malzak", - "malzak2", "Malzak II", - "mamboagg", "Mambo A Go-Go (GQA40 VER. JAB)", - "mamboagga", "Mambo A Go-Go e-Amusement (GQA40 VER. JRB)", - "mamonoro", "Mamoru-kun wa Norowarete Shimatta!", - "mangchi", "Mang-Chi", - "manhatan", "Manhattan 24 Bunsyo (Japan)", - "maniach", "Mania Challenge (set 1)", - "maniach2", "Mania Challenge (set 2)", - "maniacsp", "Maniac Square (prototype)", - "maniacsq", "Maniac Square (unprotected)", - "manicpnc", "Manic Panic Ghosts!", - "manohman", "Mann, oh-Mann", - "manxtt", "Manx TT Superbike - DX (Revision D)", - "manxttc", "Manx TT Superbike - Twin (Revision C)", - "manybloc", "Many Block", - "mappy", "Mappy (US)", - "mappyj", "Mappy (Japan)", - "marble", "Marble Madness (set 1)", - "marble2", "Marble Madness (set 2)", - "marble3", "Marble Madness (set 3)", - "marble4", "Marble Madness (set 4)", - "marble5", "Marble Madness (set 5 - LSI Cartridge)", - "margmgc", "Margarita Magic (01J00101, NSW/ACT)", - "marineb", "Marine Boy", - "marinedt", "Marine Date", - "mariner", "Mariner", - "mario", "Mario Bros. (US, Revision F)", - "marioe", "Mario Bros. (US, Revision E)", - "marioj", "Mario Bros. (Japan)", - "marioo", "Mario Bros. (US, Unknown Rev)", - "markham", "Markham", - "mars", "Mars", - "marsp", "Mars - God of War", - "marstv", "Mars TV (JPN)", - "martmast", "Martial Masters (ver. 104, 102, 102US)", - "martmastc", "Martial Masters (ver. 104, 102, 101CN)", - "martmastc102", "Martial Masters (ver. 102, 101, 101CN)", - "maruchan", "Maru-Chan de Goo! (J 971216 V1.000)", - "marukin", "Super Marukin-Ban (Japan 901017)", - "marukodq", "Chibi Marukochan Deluxe Quiz", - "marvins", "Marvin's Maze", - "marvland", "Marvel Land (US)", - "marvlandj", "Marvel Land (Japan)", - "masao", "Masao", - "maski", "Maski Show (Russia) (Extrema)", - "mastboy", "Master Boy (Spanish, PCB Rev A)", - "mastboyi", "Master Boy (Italian, PCB Rev A)", - "masterw", "Master of Weapon (World)", - "masterwj", "Master of Weapon (Japan)", - "masterwu", "Master of Weapon (US)", - "mastkin", "The Masters of Kin", - "mastninj", "Master Ninja (bootleg of Shadow Warriors / Ninja Gaiden)", - "matahari", "Mata Hari", - "match98", "Match '98 (ver. 1.33)", - "matchit", "Match It", - "matchit2", "Match It II", - "matmania", "Mat Mania", - "matrim", "Matrimelee / Shin Gouketsuji Ichizoku Toukon (NGM-2660) (NGH-2660)", - "matrimbl", "Matrimelee / Shin Gouketsuji Ichizoku Toukon (bootleg)", - "mausuke", "Mausuke no Ojama the World (J 960314 V1.000)", - "mav_100", "Maverick (1.00)", - "mav_400", "Maverick (Display Rev. 4.00)", - "mav_401", "Maverick (Display Rev. 4.01)", - "mav_402", "Maverick (Display Rev. 4.02)", - "maverik", "Maverik", - "maxaflex", "Max-A-Flex", - "maxf_102", "Maximum Force v1.02", - "maxf_ng", "Maximum Force (No Gore version)", - "maxforce", "Maximum Force v1.05", - "maxidbl", "Maxi Double Poker (Ver. 1.10)", - "maxideal", "Maxi-Dealer", - "maxrpm", "Max RPM (ver 2)", - "maxspeed", "Maximum Speed", - "maya", "Maya (set 1)", - "mayaa", "Maya (set 2)", - "mayday", "Mayday (set 1)", - "maydaya", "Mayday (set 2)", - "maydayb", "Mayday (set 3)", - "mayhem", "Mayhem 2002", - "mayjin3", "Mayjinsen 3", - "mayjinsn", "Mayjinsen", - "mayjisn2", "Mayjinsen 2", - "mayumi", "Kikiippatsu Mayumi-chan (Japan)", - "mazan", "Mazan: Flash of the Blade (MAZ2 Ver. A)", - "mazana", "Mazan: Flash of the Blade (MAZ3 Ver. A)", - "maze", "Amazing Maze", - "mazeinv", "Maze Invaders (prototype)", - "mazerbla", "Mazer Blazer (set 1)", - "mazerblaa", "Mazer Blazer (set 2)", - "mazinger", "Mazinger Z (World)", - "mazingerj", "Mazinger Z (Japan)", - "mb_10", "Monster Bash (1.0)", - "mb_106", "Monster Bash (1.06)", - "mb_106b", "Monster Bash (1.06b)", - "mbaa", "Melty Blood Actress Again", - "mbaaa", "Melty Blood Actress Again (Ver. A)", - "mbomberj", "Muscle Bomber: The Body Explosion (Japan 930713)", - "mbombrd", "Muscle Bomber Duo: Ultimate Team Battle (World 931206)", - "mbombrdj", "Muscle Bomber Duo: Heat Up Warriors (Japan 931206)", - "mbossy", "Mike Bossy", - "mbrush", "Magic Brush (bootleg of Crush Roller)", - "mcastle", "Magic Castle", - "mcastlef", "Magic Castle (French speech)", - "mcastleg", "Magic Castle (German speech)", - "mcastlei", "Magic Castle (Italian speech)", - "mcatadv", "Magical Cat Adventure", - "mcatadvj", "Magical Cat Adventure (Japan)", - "mchampdx", "Multi Champ Deluxe (ver. 0106, 06/01/2000)", - "mchampdxa", "Multi Champ Deluxe (ver. 1126, 26/11/1999)", - "mchampdxb", "Multi Champ Deluxe (ver. 1114, 14/11/1999)", - "mcitylov", "City Love [BET] (Japan 860904)", - "mclass", "Magic Class (Ver 2.2)", - "mcnpshnt", "Mahjong Campus Hunting (Japan)", - "mcolors", "Magic Colors (ver. 1.7a)", - "mcombat", "Missile Combat (Videotron bootleg, set 1)", - "mcombata", "Missile Combat (Videotron bootleg, set 2)", - "mcombats", "Missile Combat (Sidam bootleg)", - "mcontest", "Miss Mahjong Contest (Japan)", - "mdhorse", "Derby Quiz My Dream Horse (Japan, MDH1/VER.A2)", - "mdntmrdr", "Midnight Marauders (Gun game)", - "mdrawpkr", "Draw Poker - Joker's Wild (Standard)", - "mdrawpkra", "Draw Poker - Joker's Wild (02-11)", - "mdrink", "Magic Drink (Ver 1.2)", - "mechatt", "Mechanized Attack (World)", - "mechattj", "Mechanized Attack (Japan)", - "mechattu", "Mechanized Attack (US)", - "mechattu1", "Mechanized Attack (US, Version 1, Single Player)", - "medlanes", "Meadows Lanes", - "medusa", "Medusa", - "megaaton", "Meg Aaton", - "megablst", "Mega Blast (World)", - "megablstj", "Mega Blast (Japan)", - "megablstu", "Mega Blast (US)", - "megadble", "Mega Double Poker (Ver. 1.63 Espagnol)", - "megadblj", "Mega Double Poker Jackpot (Ver. 1.26)", - "megadon", "Megadon", - "megadpkr", "Mega Double Poker (conversion kit, set 1)", - "megadpkrb", "Mega Double Poker (conversion kit, set 2)", - "megaforc", "Mega Force", - "megakat", "Mega Katok 2", - "megaline", "Mega Lines", - "megaman", "Mega Man: The Power Battle (CPS1, USA 951006)", - "megaman2", "Mega Man 2: The Power Fighters (USA 960708)", - "megaman2a", "Mega Man 2: The Power Fighters (Asia 960708)", - "megaman2h", "Mega Man 2: The Power Fighters (Hispanic 960712)", - "megamana", "Mega Man: The Power Battle (CPS1, Asia 951006)", - "megamn2d", "Mega Man 2: The Power Fighters (USA 960708 Phoenix Edition) (bootleg)", - "megaphx", "Mega Phoenix", - "megaplay", "Mega Play BIOS", - "megat2", "Pit Boss Megatouch II (9255-10-01 ROG, Standard version)", - "megat2a", "Pit Boss Megatouch II (9255-10-01 ROE, Standard version)", - "megat2b", "Pit Boss Megatouch II (9255-10-01 ROD, Standard version)", - "megat2ca", "Pit Boss Megatouch II (9255-10-06 ROG, California version)", - "megat2caa", "Pit Boss Megatouch II (9255-10-06 ROE, California version)", - "megat2mn", "Pit Boss Megatouch II (9255-10-02 ROG, Minnesota version)", - "megat3", "Megatouch III (9255-20-01 RON, Standard version)", - "megat3a", "Megatouch III (9255-20-01 ROK, Standard version)", - "megat3b", "Megatouch III (9255-20-01 ROF, Standard version)", - "megat3c", "Megatouch III (9255-20-01 ROB, Standard version)", - "megat3ca", "Megatouch III (9255-20-06 RON, California version)", - "megat3caa", "Megatouch III (9255-20-06 ROD, California version)", - "megat3d", "Megatouch III (9255-20-01 ROA, Standard version)", - "megat3nj", "Megatouch III (9255-20-07 ROG, New Jersey version)", - "megat3te", "Megatouch III Tournament Edition (9255-30-01 ROE, Standard version)", - "megat4", "Megatouch IV (9255-40-01 ROE, Standard version)", - "megat4a", "Megatouch IV (9255-40-01 ROD, Standard version)", - "megat4b", "Megatouch IV (9255-40-01 ROB, Standard version)", - "megat4c", "Megatouch IV (9255-40-01 ROA, Standard version)", - "megat4d", "Megatouch IV (9255-40-01 RO, Standard version)", - "megat4s", "Super Megatouch IV (9255-41-01 ROG, Standard version)", - "megat4sa", "Super Megatouch IV (9255-41-01 ROE, Standard version)", - "megat4sb", "Super Megatouch IV (9255-41-01 ROC, Standard version)", - "megat4smn", "Super Megatouch IV (9255-41-02 ROC, Minnesota version)", - "megat4snj", "Super Megatouch IV (9255-41-07 ROG, New Jersey version)", - "megat4st", "Super Megatouch IV Tournament Edition (9255-51-01 ROB, Standard version)", - "megat4stg", "Super Megatouch IV Turnier Version (9255-51-50 ROA, Bi-Lingual GER/ENG version)", - "megat4te", "Megatouch IV Tournament Edition (9255-50-01 ROD, Standard version)", - "megat4tea", "Megatouch IV Tournament Edition (9255-50-01 ROA, Standard version)", - "megat5", "Megatouch 5 (9255-60-01 ROI, Standard version)", - "megat5a", "Megatouch 5 (9255-60-01 ROC, Standard version)", - "megat5nj", "Megatouch 5 (9255-60-07 RON, New Jersey version)", - "megat5t", "Megatouch 5 Tournament Edition (9255-70-01 ROC, Standard version)", - "megat5tg", "Megatouch 5 Turnier Version (9255-70-50 ROD, Bi-Lingual GER/ENG version)", - "megat6", "Megatouch 6 (9255-80-01 ROA, Standard version)", - "megatack", "Megatack", - "megatech", "Mega-Tech", - "megazone", "Mega Zone (Konami set 1)", - "megazonea", "Mega Zone (Konami set 2)", - "megazoneb", "Mega Zone (Kosuka set 1)", - "megazonec", "Mega Zone (Kosuka set 2)", - "megazonei", "Mega Zone (Interlogic)", - "meijinsn", "Meijinsen", - "meikyuh", "Meikyuu Hunter G (Japan, set 1)", - "meikyuha", "Meikyuu Hunter G (Japan, set 2)", - "meltyb", "Melty Blood Act Cadenza Ver B (GDL-0039)", - "meltyba", "Melty Blood Act Cadenza Ver B (Rev A) (GDL-0039A)", - "meltybld", "Melty Blood Act Cadenza (Rev C) (GDL-0028C)", - "memlane", "Memory Lane", - "meosism", "Meosis Magic (Japan)", - "mephistp", "Mephisto (rev. 1.2)", - "mephistp1", "Mephisto (rev. 1.1)", - "mercs", "Mercs (World 900302)", - "mercsj", "Senjou no Ookami II (Japan 900302)", - "mercsu", "Mercs (USA 900608)", - "mercsur1", "Mercs (USA 900302)", - "merlinmm", "Merlins Money Maze", - "mermaid", "Mermaid", - "merryjn", "Merry Joiner", - "metafox", "Meta Fox", - "metalb", "Metal Black (World)", - "metalbj", "Metal Black (Japan)", - "metalman", "Metal Man", - "metalmx", "Metal Maniax (prototype)", - "metamrph", "Metamorphic Force (ver EAA)", - "metamrphj", "Metamorphic Force (ver JAA)", - "metamrphu", "Metamorphic Force (ver UAA)", - "meteor", "Meteoroids", - "meteorho", "Meteor (bootleg of Asteroids)", - "meteorp", "Meteor (Stern)", - "meteort", "Meteor (Taito)", - "meteorts", "Meteorites (bootleg of Asteroids)", - "metlclsh", "Metal Clash (Japan)", - "metlhawk", "Metal Hawk (Rev C)", - "metlhawkj", "Metal Hawk (Japan, Rev F)", - "metlsavr", "Metal Saver", - "metmqstr", "Metamoqester (International)", - "metrocrs", "Metro-Cross (set 1)", - "metrocrsa", "Metro-Cross (set 2)", - "mexico", "Mexico 86 (German speech)", - "mexico86", "Mexico 86 (bootleg of Kick and Run)", - "mf_achas", "Astro Chase (Max-A-Flex)", - "mf_bdash", "Boulder Dash (Max-A-Flex)", - "mf_brist", "Bristles (Max-A-Flex)", - "mf_flip", "Flip & Flop (Max-A-Flex)", - "mfightc", "Mahjong Fight Club (ver JAD)", - "mfightcc", "Mahjong Fight Club (ver JAC)", - "mfish_11", "Multi Fish (031124)", - "mfish_12", "Multi Fish (040308)", - "mfish_12a", "Multi Fish (bootleg, 040308, banking address hack)", - "mfish_13", "Multi Fish (040316)", - "mfish_3", "Multi Fish (021124)", - "mfish_3a", "Multi Fish (bootleg, 021124, banking address hack)", - "mfish_6", "Multi Fish (030124)", - "mfish_8", "Multi Fish (030522)", - "mfjump", "Monster Farm Jump (Japan)", - "mfunclub", "Mahjong Fun Club - Idol Saizensen (Japan)", - "mg_alad", "Aladdin's Cave (Maygay M2)", - "mg_bb", "Big Break (Maygay M2)", - "mg_ewg", "Each Way Gambler (Maygay M2)", - "mg_gbr", "Guinness Book Of Records (Maygay M2)", - "mg_jv", "Jack & Vera (Maygay M2)", - "mg_kf", "Krypton Factor (Maygay M2)", - "mg_lug", "London Underground (Maygay M2)", - "mg_pbw", "Pinball Wizard (Maygay M2)", - "mg_risk", "Risk (Maygay M2)", - "mg_scl", "Super Clue (Maygay M2)", - "mgakuen", "Mahjong Gakuen", - "mgakuen2", "Mahjong Gakuen 2 Gakuen-chou no Fukushuu", - "mgcldate", "Magical Date / Magical Date - dokidoki kokuhaku daisakusen (Ver 2.02J)", - "mgcldtex", "Magical Date EX / Magical Date - sotsugyou kokuhaku daisakusen (Ver 2.01J)", - "mgcrystl", "Magical Crystals (World, 92/01/10)", - "mgcrystlj", "Magical Crystals (Japan, 92/01/13)", - "mgcrystlo", "Magical Crystals (World, 91/12/10)", - "mgcs", "Mahjong Man Guan Cai Shen (V103CS)", - "mgdh", "Mahjong Man Guan Da Heng (Taiwan, V125T1)", - "mgdha", "Mahjong Man Guan Da Heng (Taiwan, V123T1)", - "mgfx", "Man Guan Fu Xing", - "mgion", "Gionbana [BET] (Japan 890207)", - "mgmen89", "Mahjong G-MEN'89 (Japan 890425)", - "mgnumber", "Magic Number", - "mgolf", "Atari Mini Golf (prototype)", - "mgprem11", "Magic Premium (v1.1)", - "mhavoc", "Major Havoc (rev 3)", - "mhavoc2", "Major Havoc (rev 2)", - "mhavocp", "Major Havoc (prototype)", - "mhavocrv", "Major Havoc (Return to Vax)", - "mhgaiden", "Mahjong Hourouki Gaiden (Japan)", - "mhhonban", "Mahjong Housoukyoku Honbanchuu (Japan)", - "mia", "M.I.A. - Missing in Action (version T)", - "mia2", "M.I.A. - Missing in Action (version S)", - "miaj", "M.I.A. - Missing in Action (Japan)", - "michigan", "Michigan (Bingo)", - "michkit1", "Michigan Bingo Kit 1 Generation (Bingo)", - "michkitb", "Michigan Kit Bingo Stake 6/10 (Bingo)", - "michnew", "Michigan Bingo New (Bingo)", - "michstake", "Michigan Bingo Stake 6/10 (Bingo)", - "micrombc", "Microman Battle Charge (J 990326 V1.000)", - "midearth", "Middle Earth", - "midnrun", "Midnight Run (Euro v1.11)", - "midres", "Midnight Resistance (World)", - "midresb", "Midnight Resistance (bootleg with 68705)", - "midresj", "Midnight Resistance (Japan)", - "midresu", "Midnight Resistance (US)", - "miexchng", "Money Puzzle Exchanger / Money Idol Exchanger", - "mightguy", "Mighty Guy", - "mightybj", "Vs. Mighty Bomb Jack (Japan)", - "mikie", "Mikie", - "mikiehs", "Mikie (High School Graffiti)", - "mikiej", "Shinnyuushain Tooru-kun", - "mil4000", "Millennium Nuovo 4000 (Version 2.0)", - "mil4000a", "Millennium Nuovo 4000 (Version 1.8)", - "mil4000b", "Millennium Nuovo 4000 (Version 1.5)", - "mil4000c", "Millennium Nuovo 4000 (Version 1.6)", - "millipdd", "Millipede Dux (hack)", - "milliped", "Millipede", - "milln_l3", "Millionaire (L-3)", - "millpac", "Millpac (bootleg of Centipede)", - "millsun", "Millennium Sun", - "mimonkey", "Mighty Monkey", - "mimonsco", "Mighty Monkey (bootleg on Super Cobra hardware)", - "mimonscr", "Mighty Monkey (bootleg on Scramble hardware)", - "minasan", "Minasanno Okagesamadesu! Daisugorokutaikai (MOM-001)(MOH-001)", - "minefld", "Minefield", - "mineswpr", "Minesweeper", - "mineswpr4", "Minesweeper (4-Player)", - "minferno", "Inferno (Meadows)", - "miniboy7", "Mini Boy 7 (set 1)", - "miniboy7a", "Mini Boy 7 (set 2)", - "miniboy7b", "Mini Boy 7 (set 3)", - "minigolf", "Mini Golf (11/25/85)", - "minigolf2", "Mini Golf (10/8/85)", - "minivadr", "Mini Vaders", - "mirage", "Mirage Youjuu Mahjongden (Japan)", - "mirax", "Mirax (set 1)", - "miraxa", "Mirax (set 2)", - "mirderby", "Miracle Derby - Ascot", - "mirninja", "Mirai Ninja (Japan)", - "misncrft", "Mission Craft (version 2.7)", - "misncrfta", "Mission Craft (version 2.4)", - "missb2", "Miss Bubble II", - "missile", "Missile Command (rev 3)", - "missile1", "Missile Command (rev 1)", - "missile2", "Missile Command (rev 2)", - "missilem", "Missile Command Multigame", - "missmw96", "Miss Mister World '96 (Nude)", - "missw96", "Miss World '96 (Nude) (set 1)", - "missw96a", "Miss World '96 (Nude) (set 2)", - "missw96b", "Miss World '96 (Nude) (set 3)", - "mizubaku", "Mizubaku Daibouken (Japan)", - "mj2", "Sega Network Taisen Mahjong MJ 2 (Rev C) (GDX-0006C)", - "mj3", "Sega Network Taisen Mahjong MJ 3 (Rev D) (GDX-0017D)", - "mj3f", "Sega Network Taisen Mahjong MJ 3 (Rev F) (GDX-0017F)", - "mj4simai", "Wakakusamonogatari Mahjong Yonshimai (Japan)", - "mjanbari", "Medal Mahjong Janjan Baribari [BET] (Japan)", - "mjangels", "Mahjong Angels - Comic Theater Vol.2 (Japan)", - "mjapinky", "Almond Pinky [BET] (Japan)", - "mjcamera", "Mahjong Camera Kozou (set 1) (Japan 881109)", - "mjcamerb", "Mahjong Camera Kozou (set 2) (Japan 881109)", - "mjchuuka", "Mahjong Chuukanejyo (China)", - "mjclinic", "Mahjong Clinic (Japan)", - "mjclub", "Mahjong Club [BET] (Japan)", - "mjcomv1", "Mahjong Comic Gekijou Vol.1 (Japan)", - "mjdchuka", "Mahjong The Dai Chuuka Ken (China, v. D111)", - "mjdejav2", "Mahjong Shinkirou Deja Vu 2 (Japan)", - "mjdejavu", "Mahjong Shinkirou Deja Vu (Japan)", - "mjderngr", "Mahjong Derringer (Japan)", - "mjdialq2", "Mahjong Dial Q2 (Japan)", - "mjdiplob", "Mahjong Diplomat [BET] (Japan)", - "mjegolf", "Mahjong Erotica Golf (Japan)", - "mjelct3", "Mahjong Electron Base (parts 2 & 3, Japan)", - "mjelct3a", "Mahjong Electron Base (parts 2 & 3, alt., Japan)", - "mjelctrb", "Mahjong Electron Base (parts 2 & 4, Japan, bootleg)", - "mjelctrn", "Mahjong Electron Base (parts 2 & 4, Japan)", - "mjflove", "Mahjong Fantasic Love (Japan)", - "mjfocus", "Mahjong Focus (Japan 890313)", - "mjfocusm", "Mahjong Focus [BET] (Japan 890510)", - "mjfriday", "Mahjong Friday (Japan)", - "mjgaiden", "Mahjong Gaiden [BET] (Japan 870803)", - "mjgottsu", "Mahjong Gottsu ee-kanji (Japan)", - "mjgottub", "Medal Mahjong Gottsu ee-kanji [BET] (Japan)", - "mjgtaste", "Mahjong G-Taste", - "mjhokite", "Mahjong Hourouki Okite (Japan)", - "mjifb", "Mahjong If...? [BET]", - "mjifb2", "Mahjong If...? [BET](2921)", - "mjifb3", "Mahjong If...? [BET](2931)", - "mjikaga", "Mahjong Ikaga Desu ka (Japan)", - "mjkinjas", "Mahjong Kinjirareta Asobi (Japan)", - "mjkjidai", "Mahjong Kyou Jidai (Japan)", - "mjkoiura", "Mahjong Koi Uranai (Japan set 1)", - "mjkojink", "Mahjong Kojinkyouju (Private Teacher) (Japan)", - "mjlaman", "Mahjong La Man (Japan)", - "mjleague", "Major League", - "mjlstory", "Mahjong Jikken Love Story (Japan)", - "mjmania", "Mahjong Mania - Kairakukan e Youkoso (Japan)", - "mjmyornt", "Mahjong The Mysterious Orient", - "mjmyster", "Mahjong The Mysterious World (set 1)", - "mjmyuniv", "Mahjong The Mysterious Universe", - "mjmywrld", "Mahjong The Mysterious World (set 2)", - "mjnanpaa", "Mahjong Nanpa Story (Japan 890712)", - "mjnanpas", "Mahjong Nanpa Story (Japan 890713)", - "mjnanpau", "Mahjong Nanpa Story (Ura) (Japan 890805)", - "mjnatsu", "Mahjong Natsu Monogatari (Japan)", - "mjnquest", "Mahjong Quest (Japan)", - "mjnquestb", "Mahjong Quest (No Nudity)", - "mjprivat", "Mahjong Private (Japan)", - "mjreach", "Mahjong Reach (bootleg)", - "mjreach1", "Mahjong Reach Ippatsu (Japan)", - "mjsenka", "Mahjong Senka (Japan)", - "mjsikakb", "Mahjong Shikaku (Japan 880722)", - "mjsikakc", "Mahjong Shikaku (Japan 880806)", - "mjsikakd", "Mahjong Shikaku (Japan 880802)", - "mjsikaku", "Mahjong Shikaku (Japan 880908)", - "mjsister", "Mahjong Sisters (Japan)", - "mjsiyoub", "Mahjong Shiyou (Japan)", - "mjtensin", "Mahjong Tensinhai (Japan)", - "mjuraden", "Mahjong Uranai Densetsu (Japan)", - "mjvegas", "Mahjong Vegas (Japan)", - "mjvegasa", "Mahjong Vegas (Japan, unprotected)", - "mjyarou", "Mahjong Yarou [BET] (Japan)", - "mjyougo", "Mahjong-yougo no Kisotairyoku (Japan)", - "mjyuugi", "Mahjong Yuugi (Japan set 1)", - "mjyuugia", "Mahjong Yuugi (Japan set 2)", - "mjzoomin", "Mahjong Channel Zoom In (Japan)", - "mk", "Mortal Kombat (rev 5.0 T-Unit 03/19/93)", - "mk2", "Mortal Kombat II (rev L3.1)", - "mk2chal", "Mortal Kombat II Challenger (hack)", - "mk2r11", "Mortal Kombat II (rev L1.1)", - "mk2r14", "Mortal Kombat II (rev L1.4)", - "mk2r20", "Mortal Kombat II (rev L2.0)", - "mk2r21", "Mortal Kombat II (rev L2.1)", - "mk2r30", "Mortal Kombat II (rev L3.0)", - "mk2r31e", "Mortal Kombat II (rev L3.1 (European))", - "mk2r32e", "Mortal Kombat II (rev L3.2 (European))", - "mk2r42", "Mortal Kombat II (rev L4.2, hack)", - "mk2r91", "Mortal Kombat II (rev L9.1, hack)", - "mk3", "Mortal Kombat 3 (rev 2.1)", - "mk3mdb", "Mortal Kombat 3 (bootleg of Megadrive version)", - "mk3p40", "Mortal Kombat 3 (rev 1 chip label p4.0)", - "mk3r10", "Mortal Kombat 3 (rev 1.0)", - "mk3r20", "Mortal Kombat 3 (rev 2.0)", - "mk4", "Mortal Kombat 4 (version 3.0)", - "mk4a", "Mortal Kombat 4 (version 2.1)", - "mk4b", "Mortal Kombat 4 (version 1.0)", - "mk6nsw11", "Aristocrat MK6 Base (11011901, NSW/ACT)", - "mkartagp", "Mario Kart Arcade GP (MKA2 Ver.B)", - "mkeibaou", "Mahjong Keibaou (Japan)", - "mkla1", "Mortal Kombat (rev 1.0 08/09/92)", - "mkla2", "Mortal Kombat (rev 2.0 08/18/92)", - "mkla3", "Mortal Kombat (rev 3.0 08/31/92)", - "mkla4", "Mortal Kombat (rev 4.0 09/28/92)", - "mknifty", "Mortal Kombat (Nifty Kombo, hack)", - "mknifty666", "Mortal Kombat (Nifty Kombo 666, hack)", - "mkoiuraa", "Mahjong Koi Uranai (Japan set 2)", - "mkprot4", "Mortal Kombat (prototype, rev 4.0 07/14/92)", - "mkprot8", "Mortal Kombat (prototype, rev 8.0 07/21/92)", - "mkprot9", "Mortal Kombat (prototype, rev 9.0 07/28/92)", - "mkr4", "Mortal Kombat (rev 4.0 T-Unit 02/11/93)", - "mktturbo", "Mortal Kombat (Turbo Ninja T-Unit 03/19/93, hack)", - "mkyawdim", "Mortal Kombat (Yawdim bootleg, set 1)", - "mkyawdim2", "Mortal Kombat (Yawdim bootleg, set 2)", - "mkyturbo", "Mortal Kombat (Turbo 3.1 09/09/93, hack)", - "mkyturboe", "Mortal Kombat (Turbo 3.0 08/31/92, hack)", - "mladyhtr", "Mahjong The Lady Hunter (Japan 900509)", - "mlander", "Moon Lander (bootleg of Lunar Rescue)", - "mlanding", "Midnight Landing (Germany)", - "mm_05", "Medieval Madness (0.50)", - "mm_10", "Medieval Madness (1.0)", - "mm_109", "Medieval Madness (1.09)", - "mm_109b", "Medieval Madness (1.09B)", - "mm_109c", "Medieval Madness (1.09C Profanity)", - "mm_10u", "Medieval Madness (1.0 Ultrapin)", - "mmaiko", "Maikobana [BET] (Japan 900911)", - "mmancp2u", "Mega Man: The Power Battle (CPS2, USA 951006, SAMPLE Version)", - "mmatrix", "Mars Matrix: Hyper Solid Shooting (USA 000412)", - "mmatrixd", "Mars Matrix: Hyper Solid Shooting (USA 000412 Phoenix Edition) (bootleg)", - "mmatrixj", "Mars Matrix: Hyper Solid Shooting (Japan 000412)", - "mmaulers", "Monster Maulers (ver EAA)", - "mmaze", "Marchen Maze (Japan)", - "mmcamera", "Mahjong Camera Kozou [BET] (Japan 890509)", - "mmehyou", "Medal Mahjong Circuit no Mehyou [BET] (Japan)", - "mmm_ldip", "Lucky Dip (Maygay)", - "mmmbanc", "Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.)", - "mmonkey", "Minky Monkey", - "mmpanic", "Monkey Mole Panic (USA)", - "mmpork", "Muchi Muchi Pork! (2007/ 4/17 MASTER VER.)", - "mmsikaku", "Mahjong Shikaku [BET] (Japan 880929)", - "mnchmobl", "Munch Mobile (US)", - "mnfb_c27", "Monday Night Football (2.7, 50cts)", - "mnight", "Mutant Night", - "mntecrlo", "Monte Carlo (Pinball)", - "mnumber", "Mystery Number", - "mnumitg", "Magic Number (Italian Gambling Game, Ver 1.5)", - "mocapb", "Mocap Boxing (ver AAA)", - "mocapbj", "Mocap Boxing (ver JAA)", - "mocapglf", "Mocap Golf (ver UAA)", - "moegonta", "Moeyo Gonta!! (Japan)", - "moeru", "Moeru Casinyo (GDL-0013)", - "mofflott", "Maze of Flott (Japan)", - "moguchan", "Mogu Chan (bootleg?)", - "mogura", "Mogura Desse (Japan)", - "mohicans", "Mohican Sun (Konami Endeavour)", - "mok", "The Maze of the Kings (GDS-0022)", - "mole", "Mole Attack", - "momoko", "Momoko 120%", - "momotaro", "Mahjong Momotarou (Japan)", - "monacogp", "Monaco GP (Set 1) [TTL]", - "monacogpa", "Monaco GP (Set 2) [TTL]", - "moneybnk", "Money In The Bank (NSW, Australia)", - "moneymac", "Money Machine (Version 1.7E Dual)", - "moneymacd1", "Money Machine (Version 1.7R)", - "moneymacd2", "Money Machine (Version 1.7LT)", - "moneymacv1", "Money Machine (Version 1.7R Dual)", - "moneymacv2", "Money Machine (Version 1.7LT Dual)", - "mongolnw", "Mongolfier New (Italian)", - "monkelf", "Monky Elf (Korean bootleg of Avenging Spirit)", - "monkeyba", "Monkey Ball (GDS-0008)", - "monkeyd", "Monkey Donkey", - "mononew", "Monopoly (ARM7 Sound Board)", - "monop233", "Monopoly (2.33)", - "monop251", "Monopoly (2.51)", - "monop301", "Monopoly (3.01)", - "monop303", "Monopoly (3.03)", - "monoplcl", "Monopoly Classic (JPM) (SYSTEM5 VIDEO)", - "monopldx", "Monopoly Deluxe (JPM) (SYSTEM5 VIDEO)", - "monopolf", "Monopoly (France)", - "monopolg", "Monopoly (Germany)", - "monopoli", "Monopoly (Italy)", - "monopoll", "Monopoly (Spain)", - "monopolp", "Monopoly (3.20)", - "monopoly", "Monopoly (JPM) (SYSTEM5 VIDEO, set 1)", - "monopolya", "Monopoly (JPM) (SYSTEM5 VIDEO, set 2)", - "monopred", "Monopoly (Coin dropper)", - "monrobwl", "Stars & Strikes (Bowler)", - "monshow", "The Monster Show (Konami Endeavour)", - "monspdr", "Money Spider (Ace)", - "monsterb", "Monster Bash", - "monsterb2", "Monster Bash (2 board version)", - "monsterz", "Monster Zero", - "montana", "Montana Bingo Stake 6/10 (Bingo)", - "montecar", "Monte Carlo", - "monymony", "Money Money", - "monzagp", "Monza GP", - "monzagpb", "Monza GP (bootleg)", - "moomesa", "Wild West C.O.W.-Boys of Moo Mesa (ver EAB)", - "moomesaaab", "Wild West C.O.W.-Boys of Moo Mesa (ver AAB)", - "moomesabl", "Wild West C.O.W.-Boys of Moo Mesa (bootleg)", - "moomesauab", "Wild West C.O.W.-Boys of Moo Mesa (ver UAB)", - "moomesauac", "Wild West C.O.W.-Boys of Moo Mesa (ver UAC)", - "moonal2", "Moon Alien Part 2", - "moonal2b", "Moon Alien Part 2 (older version)", - "moonaln", "Moon Alien", - "moonbase", "Moon Base (set 1)", - "moonbasea", "Moon Base (set 2)", - "mooncmw", "Moon War (Moon Cresta bootleg)", - "mooncptc", "Moon Cresta (Petaco S.A. Spanish bootleg)", - "mooncreg", "Moon Cresta (Electrogame S.A. Spanish bootleg)", - "mooncrgx", "Moon Cresta (Galaxian hardware)", - "mooncrs2", "Moon Cresta (bootleg set 2)", - "mooncrs3", "Moon Cresta (bootleg set 3)", - "mooncrs4", "Moon Crest (Moon Cresta bootleg)", - "mooncrsb", "Moon Cresta (bootleg set 1)", - "mooncrsl", "Cresta Mundo (Laguna S.A. Spanish Moon Cresta bootleg)", - "mooncrst", "Moon Cresta (Nichibutsu)", - "mooncrstg", "Moon Cresta (Gremlin)", - "mooncrsto", "Moon Cresta (Nichibutsu, old rev)", - "mooncrstu", "Moon Cresta (Nichibutsu USA, unencrypted)", - "mooncrstuk", "Moon Cresta (Nichibutsu UK)", - "mooncrstuku", "Moon Cresta (Nichibutsu UK, unencrypted)", - "moonlght", "Moon Light (bootleg of Golden Star)", - "moonqsr", "Moon Quasar", - "moonwar", "Moonwar", - "moonwara", "Moonwar (older)", - "moonwarp", "Moon War (prototype on Frenzy hardware)", - "moremore", "More More", - "moremorp", "More More Plus", - "mosaic", "Mosaic", - "mosaica", "Mosaic (Fuuki)", - "mosaicf2", "Mosaic (F2 System)", - "mosyougi", "Syougi No Tatsujin - Master of Syougi", - "motofren", "Moto Frenzy", - "motofrenft", "Moto Frenzy (Field Test Version)", - "motofrenmd", "Moto Frenzy (Mini Deluxe)", - "motofrenmf", "Moto Frenzy (Mini Deluxe Field Test Version)", - "motorace", "MotoRace USA", - "motoraid", "Motor Raid - Twin", - "motos", "Motos", - "mototour", "MotoTour / Zippy Race (Tecfri license)", - "motoxgo", "Motocross Go! (MG3 Ver. A)", - "motoxgov1a", "Motocross Go! (MG1 Ver. A, set 1)", - "motoxgov1a2", "Motocross Go! (MG1 Ver. A, set 2)", - "motoxgov2a", "Motocross Go! (MG2 Ver. A)", - "motrdome", "MotorDome", - "motrshow", "Motor Show (set 1)", - "motrshowa", "Motor Show (set 2)", - "mouja", "Mouja (Japan)", - "mouseatk", "Mouse Attack", - "mouser", "Mouser", - "mouserc", "Mouser (Cosmos)", - "mousn_l1", "Mousin' Around! (LA-1)", - "mousn_l4", "Mousin' Around! (LA-4)", - "mousn_lu", "Mousin' Around! (LU-1)", - "mousn_lx", "Mousin' Around! (LX-1)", - "moviecrd", "Movie Card", - "movmastr", "Movie Masters", - "mp_bio", "Bio-hazard Battle (Mega Play)", - "mp_col3", "Columns III (Mega Play)", - "mp_gaxe2", "Golden Axe II (Mega Play)", - "mp_gslam", "Grand Slam (Mega Play)", - "mp_mazin", "Mazin Wars / Mazin Saga (Mega Play)", - "mp_shnb3", "Shinobi III (Mega Play)", - "mp_soni2", "Sonic The Hedgehog 2 (Mega Play)", - "mp_sonic", "Sonic The Hedgehog (Mega Play)", - "mp_sor2", "Streets of Rage II (Mega Play)", - "mp_twc", "Tecmo World Cup (Mega Play)", - "mpang", "Mighty! Pang (Euro 001010)", - "mpangj", "Mighty! Pang (Japan 001011)", - "mpangr1", "Mighty! Pang (Euro 000925)", - "mpangu", "Mighty! Pang (USA 001010)", - "mpatrol", "Moon Patrol", - "mpatrolw", "Moon Patrol (Williams)", - "mplanets", "Mad Planets", - "mplanetsuk", "Mad Planets (UK)", - "mpoker", "Multi-Poker", - "mquake", "Moonquake", - "mranger", "Moon Ranger (bootleg of Moon Patrol)", - "mrblack", "Mr. Black", - "mrblack1", "Mr. Black (alternate set)", - "mrblkz80", "Mr. Black (Z-80 CPU)", - "mrdig", "Mr. Dig", - "mrdo", "Mr. Do!", - "mrdofix", "Mr. Do! (bugfixed)", - "mrdot", "Mr. Do! (Taito)", - "mrdoy", "Mr. Do! (prototype)", - "mrdrillr", "Mr. Driller (US, DRI3/VER.A2)", - "mrdrillrj", "Mr. Driller (Japan, DRI1/VER.A2)", - "mrdrilr2", "Mr. Driller 2 (Japan, DR21 Ver.A)", - "mrdrilrg", "Mr. Driller G (Japan, DRG1 Ver.A)", - "mrdrilrga", "Mr. Driller G ALT (Japan, DRG1 Ver.A)", - "mrdrlr2a", "Mr. Driller 2 (Asia, DR22 Ver.A)", - "mrdu", "Mr. Du!", - "mrflea", "The Amazing Adventures of Mr. F. Lea", - "mrgoemon", "Mr. Goemon (Japan)", - "mrheli", "Mr. HELI no Daibouken", - "mrjong", "Mr. Jong (Japan)", - "mrkicker", "Mr. Kicker", - "mrkougar", "Mr. Kougar", - "mrkougar2", "Mr. Kougar (earlier)", - "mrkougb", "Mr. Kougar (bootleg set 1)", - "mrkougb2", "Mr. Kougar (bootleg set 2)", - "mrlo", "Mr. Lo!", - "mrokumei", "Mahjong Rokumeikan (Japan)", - "mrtlbeat", "Martial Beat (G*B47 VER. JBA)", - "mrtnt", "Mr. TNT", - "mrviking", "Mister Viking (315-5041)", - "mrvikingj", "Mister Viking (315-5041, Japan)", - "ms4plus", "Metal Slug 4 Plus (bootleg)", - "ms5pcb", "Metal Slug 5 (JAMMA PCB)", - "ms5plus", "Metal Slug 5 Plus (bootleg)", - "msbingo", "Miss Bingo", - "mschamp", "Ms. Pacman Champion Edition / Zola-Puc Gal", - "mschamps", "Ms. Pacman Champion Edition / Super Zola-Puc Gal", - "mscoutm", "Mahjong Scout Man (Japan)", - "msgogo", "Mouse Shooter GoGo", - "msgundam", "Mobile Suit Gundam", - "msgundam1", "Mobile Suit Gundam (Japan)", - "msh", "Marvel Super Heroes (Euro 951024)", - "msha", "Marvel Super Heroes (Asia 951024)", - "mshb", "Marvel Super Heroes (Brazil 951117)", - "msheartb", "Ms. Pac-Man Heart Burn", - "mshh", "Marvel Super Heroes (Hispanic 951117)", - "mshj", "Marvel Super Heroes (Japan 951117)", - "mshjr1", "Marvel Super Heroes (Japan 951024)", - "mshu", "Marvel Super Heroes (USA 951024)", - "mshud", "Marvel Super Heroes (US 951024 Phoenix Edition) (bootleg)", - "mshuttle", "Moon Shuttle (US? set 1)", - "mshuttle2", "Moon Shuttle (US? set 2)", - "mshuttlej", "Moon Shuttle (Japan set 1)", - "mshuttlej2", "Moon Shuttle (Japan set 2)", - "mshvsf", "Marvel Super Heroes Vs. Street Fighter (Euro 970625)", - "mshvsfa", "Marvel Super Heroes Vs. Street Fighter (Asia 970625)", - "mshvsfa1", "Marvel Super Heroes Vs. Street Fighter (Asia 970620)", - "mshvsfb", "Marvel Super Heroes Vs. Street Fighter (Brazil 970827)", - "mshvsfb1", "Marvel Super Heroes Vs. Street Fighter (Brazil 970625)", - "mshvsfh", "Marvel Super Heroes Vs. Street Fighter (Hispanic 970625)", - "mshvsfj", "Marvel Super Heroes Vs. Street Fighter (Japan 970707)", - "mshvsfj1", "Marvel Super Heroes Vs. Street Fighter (Japan 970702)", - "mshvsfj2", "Marvel Super Heroes Vs. Street Fighter (Japan 970625)", - "mshvsfu", "Marvel Super Heroes Vs. Street Fighter (USA 970827)", - "mshvsfu1", "Marvel Super Heroes Vs. Street Fighter (USA 970625)", - "mshvsfu1d", "Marvel Super Heroes Vs. Street Fighter (USA 970625 Phoenix Edition) (bootleg)", - "msisaac", "Metal Soldier Isaac II", - "msjiken", "Mahjong Satsujin Jiken (Japan 881017)", - "mslider", "Monster Slider (Japan)", - "mslug", "Metal Slug - Super Vehicle-001", - "mslug2", "Metal Slug 2 - Super Vehicle-001/II (NGM-2410)(NGH-2410)", - "mslug3", "Metal Slug 3 (NGM-2560)", - "mslug3b6", "Metal Slug 6 (Metal Slug 3 bootleg)", - "mslug3h", "Metal Slug 3 (NGH-2560)", - "mslug4", "Metal Slug 4 (NGM-2630)", - "mslug4h", "Metal Slug 4 (NGH-2630)", - "mslug5", "Metal Slug 5 (NGM-2680)", - "mslug5h", "Metal Slug 5 (NGH-2680)", - "mslug6", "Metal Slug 6", - "mslugx", "Metal Slug X - Super Vehicle-001 (NGM-2500)(NGH-2500)", - "mspacii", "Ms. Pac-Man II (Orca bootleg set 1)", - "mspacii2", "Ms. Pac-Man II (Orca bootleg set 2)", - "mspacmab", "Ms. Pac-Man (bootleg)", - "mspacman", "Ms. Pac-Man", - "mspacmanbg", "Ms. Pac-Man ('Made in Greece' bootleg)", - "mspacmancr", "Ms. Pac-Man (bootleg on Crush Roller Hardware)", - "mspacmat", "Ms. Pac Attack", - "mspacmbe", "Ms. Pac-Man (bootleg, encrypted)", - "mspacmnf", "Ms. Pac-Man (speedup hack)", - "mspacpls", "Ms. Pac-Man Plus", - "mspuzzle", "Miss Puzzle", - "mspuzzleg", "Miss Puzzle (Clone of Gumbo)", - "mspuzzlen", "Miss Puzzle (Nudes)", - "mstadium", "Main Stadium (Japan)", - "mstworld", "Monsters World (bootleg of Super Pang)", - "msword", "Magic Sword: Heroic Fantasy (World 900725)", - "mswordj", "Magic Sword: Heroic Fantasy (Japan 900623)", - "mswordr1", "Magic Sword: Heroic Fantasy (World 900623)", - "mswordu", "Magic Sword: Heroic Fantasy (USA 900725)", - "mt_aftrb", "After Burner (Mega-Tech, SMS based)", - "mt_arrow", "Arrow Flash (Mega-Tech)", - "mt_astrm", "Alien Storm (Mega-Tech)", - "mt_astro", "Astro Warrior (Mega-Tech, SMS based)", - "mt_asyn", "Alien Syndrome (Mega-Tech, SMS based)", - "mt_bbros", "Bonanza Bros. (Mega-Tech)", - "mt_beast", "Altered Beast (Mega-Tech)", - "mt_calga", "California Games (Mega-Tech)", - "mt_cols", "Columns (Mega-Tech)", - "mt_crack", "Crack Down (Mega-Tech)", - "mt_eswat", "Cyber Police ESWAT: Enhanced Special Weapons and Tactics (Mega-Tech)", - "mt_fshrk", "Fire Shark (Mega-Tech)", - "mt_fwrld", "Forgotten Worlds (Mega-Tech)", - "mt_fz", "Fantasy Zone (Mega-Tech, SMS based)", - "mt_gaxe", "Golden Axe (Mega-Tech)", - "mt_gaxe2", "Golden Axe II (Mega-Tech)", - "mt_gfoot", "Great Football (Mega-Tech, SMS based)", - "mt_ggolf", "Great Golf (Mega-Tech, SMS based)", - "mt_gng", "Ghouls'n Ghosts (Mega-Tech)", - "mt_gsocr", "Great Soccer (Mega-Tech, SMS based)", - "mt_kcham", "Kid Chameleon (Mega-Tech)", - "mt_lastb", "Last Battle (Mega-Tech)", - "mt_mlh", "Mario Lemieux Hockey (Mega-Tech)", - "mt_mwalk", "Michael Jackson's Moonwalker (Mega-Tech)", - "mt_mystd", "Mystic Defender (Mega-Tech)", - "mt_orun", "Out Run (Mega-Tech, SMS based)", - "mt_parlg", "Parlour Games (Mega-Tech, SMS based)", - "mt_revsh", "The Revenge of Shinobi (Mega-Tech)", - "mt_shado", "Shadow Dancer (Mega-Tech)", - "mt_shang", "Super Hang-On (Mega-Tech)", - "mt_shar2", "Space Harrier II (Mega-Tech)", - "mt_shnbi", "Shinobi (Mega-Tech, SMS based)", - "mt_smgp", "Super Monaco GP (Mega-Tech)", - "mt_soni2", "Sonic The Hedgehog 2 (Mega-Tech)", - "mt_sonia", "Sonic The Hedgehog (Mega-Tech, set 2)", - "mt_sonic", "Sonic The Hedgehog (Mega-Tech, set 1)", - "mt_spman", "Spider-Man vs The Kingpin (Mega-Tech)", - "mt_srage", "Streets of Rage (Mega-Tech)", - "mt_srbb", "Super Real Basketball (Mega-Tech)", - "mt_stbld", "Super Thunder Blade (Mega-Tech)", - "mt_stf", "Joe Montana II: Sports Talk Football (Mega-Tech)", - "mt_tetri", "Tetris (Mega-Tech)", - "mt_tfor2", "Thunder Force II MD (Mega-Tech)", - "mt_tgolf", "Arnold Palmer Tournament Golf (Mega-Tech)", - "mt_tlbba", "Tommy Lasorda Baseball (Mega-Tech)", - "mt_tout", "Turbo Outrun (Mega-Tech)", - "mt_wcsoc", "World Championship Soccer (Mega-Tech)", - "mt_wwar", "Wrestle War (Mega-Tech)", - "mtburn", "Money To Burn (Russia)", - "mtetrisc", "Magical Tetris Challenge (981009 Japan)", - "mtkob2", "Mushiking The King Of Beetle 2K3 2nd", - "mtlchamp", "Martial Champion (ver EAB)", - "mtlchamp1", "Martial Champion (ver EAA)", - "mtlchampa", "Martial Champion (ver AAA)", - "mtlchampj", "Martial Champion (ver JAA)", - "mtlchampu", "Martial Champion (ver UAE)", - "mtlchampu1", "Martial Champion (ver UAD)", - "mtrain", "Magic Train (Ver. 1.31)", - "mtrainnv", "Magic Train (Clear NVRAM ROM?)", - "mtrap", "Mouse Trap (version 5)", - "mtrap3", "Mouse Trap (version 3)", - "mtrap4", "Mouse Trap (version 4)", - "mtrapb", "Mouse Trap (bootleg)", - "mtwins", "Mega Twins (World 900619)", - "mugsmash", "Mug Smashers", - "multchmp", "Multi Champ (World, ver. 2.5)", - "multchmpk", "Multi Champ (Korea)", - "multigam", "Multi Game (set 1)", - "multigm2", "Multi Game 2", - "multigm3", "Multi Game III", - "multigmb", "Multi Game (set 2)", - "multigmt", "Multi Game (Tung Sheng Electronics)", - "multiped", "Multipede (Centipede/Millipede multigame kit)", - "multiwin", "Multi Win (Ver.0167, encrypted)", - "mundial", "Mundial 90", - "murogem", "Muroge Monaco (set 1)", - "murogema", "Muroge Monaco (set 2)", - "murogemb", "Muroge Monaco (set 3)", - "murogmbl", "Muroge Monaco (bootleg?)", - "mushi2ea", "MushiKing II - The King Of Beetle II ENG (Ver. 2.001)", - "mushik2e", "MushiKing II - The King Of Beetle II ENG (Ver. 1.001)", - "mushisam", "Mushihime-Sama (2004/10/12.MASTER VER.)", - "mushisama", "Mushihime-Sama (2004/10/12 MASTER VER.)", - "mushisamb", "Mushihime-Sama (2004/10/12 MASTER VER)", - "mushitam", "Puzzle! Mushihime-Tama (2005/09/09.MASTER VER)", - "mushitama", "Puzzle! Mushihime-Tama (2005/09/09 MASTER VER)", - "mushmagi", "Mushroom Magic (Russia) (Atronic)", - "musicbal", "Music Ball", - "musicsrt", "Music Sort (ver 2.02, English)", - "musobana", "Musoubana (Japan)", - "mustache", "Mustache Boy", - "mustang", "US AAF Mustang (25th May. 1990)", - "mustangb", "US AAF Mustang (bootleg)", - "mustangb2", "US AAF Mustang (TAB Austria bootleg)", - "mustangs", "US AAF Mustang (25th May. 1990 / Seoul Trading)", - "mutantf", "Mutant Fighter (World ver EM-5)", - "mutantf3", "Mutant Fighter (World ver EM-3)", - "mutantf4", "Mutant Fighter (World ver EM-4)", - "mutnat", "Mutation Nation (NGM-014)(NGH-014)", - "mv1bon", "Believe It Or Not (Maygay, MV1 Video)", - "mv1cpc", "Caesar's Palace Club (Maygay, MV1 Video, set 1)", - "mv1cpca", "Caesar's Palace Club (Maygay, MV1 Video, set 2)", - "mv1cpcb", "Caesar's Palace Club (Maygay, MV1 Video, set 3)", - "mv1cwq", "Crossword Quiz (Maygay, MV1 Video, set 1)", - "mv1cwqa", "Crossword Quiz (Maygay, MV1 Video, set 2)", - "mv1guac", "Give Us A Clue (Maygay, MV1 Video, set 1)", - "mv1guaca", "Give Us A Clue (Maygay, MV1 Video, set 2)", - "mv1sfx", "Special Effects (Maygay, MV1 Video, set 1)", - "mv1sfx2", "Special Effects V2 (Maygay, MV1 Video)", - "mv1sfxa", "Special Effects (Maygay, MV1 Video, set 2)", - "mv1wc", "World Cup (Maygay, MV1 Video)", - "mv4in1", "Mini Vegas 4in1", - "mvp", "MVP (set 2, US, FD1094 317-0143)", - "mvpj", "MVP (set 1, Japan, FD1094 317-0142)", - "mvsc", "Marvel Vs. Capcom: Clash of Super Heroes (Euro 980123)", - "mvsc2", "Marvel Vs. Capcom 2 New Age of Heroes (JPN, USA, EUR, ASI, AUS) (Rev A)", - "mvsca", "Marvel Vs. Capcom: Clash of Super Heroes (Asia 980123)", - "mvscar1", "Marvel Vs. Capcom: Clash of Super Heroes (Asia 980112)", - "mvscb", "Marvel Vs. Capcom: Clash of Super Heroes (Brazil 980123)", - "mvsch", "Marvel Vs. Capcom: Clash of Super Heroes (Hispanic 980123)", - "mvscj", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123)", - "mvscjr1", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980112)", - "mvscjsing", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123) (Single PCB)", - "mvscr1", "Marvel Vs. Capcom: Clash of Super Heroes (Euro 980112)", - "mvscu", "Marvel Vs. Capcom: Clash of Super Heroes (USA 980123)", - "mvscud", "Marvel Vs. Capcom: Clash of Super Heroes (USA 980123 Phoenix Edition) (bootleg)", - "mvscur1", "Marvel Vs. Capcom: Clash of Super Heroes (USA 971222)", - "mwalk", "Michael Jackson's Moonwalker (World, FD1094/8751 317-0159)", - "mwalkbl", "Michael Jackson's Moonwalker (bootleg)", - "mwalkj", "Michael Jackson's Moonwalker (Japan, FD1094/8751 317-0157)", - "mwalku", "Michael Jackson's Moonwalker (US, FD1094/8751 317-0158)", - "mwarr", "Mighty Warriors", - "mwskins", "Skins Game (1.06)", - "mwskinsa", "Skins Game (1.06, alt)", - "mwskinso", "Skins Game (1.04)", - "mx5000", "MX5000", - "myangel", "Kosodate Quiz My Angel (Japan)", - "myangel2", "Kosodate Quiz My Angel 2 (Japan)", - "myangel3", "Kosodate Quiz My Angel 3 (Japan, KQT1/VER.A)", - "myfairld", "Virtual Mahjong 2 - My Fair Lady (J 980608 V1.000)", - "myhero", "My Hero (US, not encrypted)", - "myherok", "My Hero (Korea)", - "myqbert", "Mello Yello Q*bert", - "mystcast", "Mystery Castle", - "mystic", "Mystic", - "mysticm", "Mystic Marathon", - "mysticmp", "Mystic Marathon (prototype)", - "mysticri", "Mystic Riders (World)", - "mysticrib", "Mystic Riders (bootleg?)", - "myststar", "Mystic Star", - "mystston", "Mysterious Stones - Dr. John's Adventure", - "myststono", "Mysterious Stones - Dr. Kick in Adventure", - "myststonoi", "Mysterious Stones - Dr. Kick in Adventure (Itisa PCB)", - "mystwarr", "Mystic Warriors (ver EAA)", - "mystwarra", "Mystic Warriors (ver AAA)", - "mystwarrj", "Mystic Warriors (ver JAA)", - "mystwarru", "Mystic Warriors (ver UAA)", - "nagano98", "Nagano Winter Olympics '98 (GX720 EAA)", - "naganoj", "Hyper Olympic in Nagano (GX720 JAA)", - "nam1975", "NAM-1975 (NGM-001)(NGH-001)", - "namcostr", "Namco Stars", - "nametune", "Name That Tune (set 1)", - "nametune2", "Name That Tune (3/23/86)", - "naname", "Naname de Magic! (Japan)", - "naomi", "Naomi Bios", - "naomi2", "Naomi 2 Bios", - "naomigd", "Naomi GD-ROM Bios", - "narc", "Narc (rev 7.00)", - "narc2", "Narc (rev 2.00)", - "narc3", "Narc (rev 3.20)", - "nascar", "Nascar (4.50)", - "nascar_301", "Nascar (3.01)", - "nascar_340", "Nascar (3.40)", - "nascar_350", "Nascar (3.50)", - "nascar_352", "Nascar (3.52)", - "nascar_400", "Nascar (4.00)", - "nascarl", "Nascar (4.50 Spain)", - "nascarl_301", "Nascar (3.01 Spain)", - "nascarl_340", "Nascar (3.40 Spain)", - "nascarl_350", "Nascar (3.50 Spain)", - "nascarl_352", "Nascar (3.52 Spain)", - "nascarl_400", "Nascar (4.00 Spain)", - "nastar", "Nastar (World)", - "nastarw", "Nastar Warrior (US)", - "natodef", "NATO Defense", - "natodefa", "NATO Defense (alternate mazes)", - "natsuiro", "Natsuiro Mahjong (Japan)", - "naughtyb", "Naughty Boy", - "naughtyba", "Naughty Boy (bootleg)", - "naughtybc", "Naughty Boy (Cinematronics)", - "navarone", "Navarone", - "nbaf_11", "NBA Fastbreak (1.1)", - "nbaf_115", "NBA Fastbreak (1.15)", - "nbaf_11a", "NBA Fastbreak (1.1 - S2.0)", - "nbaf_11s", "NBA Fastbreak (1.1 - S0.4)", - "nbaf_21", "NBA Fastbreak (2.1)", - "nbaf_22", "NBA Fastbreak (2.2)", - "nbaf_23", "NBA Fastbreak (2.3)", - "nbaf_31", "NBA Fastbreak (3.1 - S3.0)", - "nbaf_31a", "NBA Fastbreak (3.1 - S1.0)", - "nbahangt", "NBA Hangtime (rev L1.1 04/16/96)", - "nbajam", "NBA Jam (rev 3.01 04/07/93)", - "nbajamex", "NBA Jam Extreme", - "nbajamr2", "NBA Jam (rev 2.00 02/10/93)", - "nbajamte", "NBA Jam TE (rev 4.0 03/23/94)", - "nbajamte1", "NBA Jam TE (rev 1.0 01/17/94)", - "nbajamte2", "NBA Jam TE (rev 2.0 01/28/94)", - "nbajamte3", "NBA Jam TE (rev 3.0 03/04/94)", - "nbajamten", "NBA Jam T.E. Nani Edition (rev 5.2 8/11/95, prototype)", - "nbamht", "NBA Maximum Hangtime (rev 1.03 06/09/97)", - "nbamht1", "NBA Maximum Hangtime (rev 1.0 11/08/96)", - "nbanfl", "NBA Showtime / NFL Blitz 2000", - "nbapbp", "NBA Play By Play", - "nbashowt", "NBA Showtime: NBA on NBC", - "nbbatman", "Ninja Baseball Bat Man (World)", - "nbbatman2bl", "Ninja Baseball Bat Man II (bootleg)", - "nbbatmanu", "Ninja Baseball Bat Man (US)", - "nc96", "New Cherry '96 Special Edition (v3.63, C1 PCB)", - "nc96a", "New Cherry '96 Special Edition (v3.62, C1 PCB)", - "nc96b", "New Cherry '96 Special Edition (v3.54, D PCB)", - "nc96c", "New Cherry '96 Special Edition (v3.62, DK PCB)", - "nc96txt", "New Cherry '96 Special Edition (v1.32 Texas XT, C2 PCB)", - "ncb3", "Cherry Bonus III (ver.1.40, set 1)", - "nclubv3", "Name Club Ver.3 (J 970723 V1.000)", - "ncombat", "Ninja Combat (NGM-009)", - "ncombath", "Ninja Combat (NGH-009)", - "ncommand", "Ninja Commando", - "ncv1", "Namco Classic Collection Vol.1", - "ncv1j", "Namco Classic Collection Vol.1 (Japan, v1.00)", - "ncv1j2", "Namco Classic Collection Vol.1 (Japan, v1.03)", - "ncv2", "Namco Classic Collection Vol.2", - "ncv2j", "Namco Classic Collection Vol.2 (Japan)", - "ndcfboxa", "Naomi DIMM Firmware Update for CF-BOX (Rev A) (GDS-0042A)", - "ndxron10", "Royal on Ten (Noraut Deluxe hack)", - "nebulray", "Nebulas Ray (World, NR2)", - "nebulrayj", "Nebulas Ray (Japan, NR1)", - "neckneck", "Neck-n-Neck (v1.2)", - "nekkyoku", "Rettou Juudan Nekkyoku Janshi - Higashi Nippon Hen (Japan)", - "nemesis", "Nemesis (ROM version)", - "nemesisp", "Nemesis", - "nemesisuk", "Nemesis (World?, ROM version)", - "nemo", "Nemo (World 901130)", - "nemoj", "Nemo (Japan 901120)", - "neobattl", "SD Gundam Neo Battling (Japan)", - "neobombe", "Neo Bomberman", - "neocup98", "Neo-Geo Cup '98 - The Road to the Victory", - "neodrift", "Neo Drift Out - New Technology", - "neogeo", "Neo-Geo", - "neomrdo", "Neo Mr. Do!", - "neptunp2", "Neptune's Pearls 2", - "neruton", "Mahjong Neruton Haikujiradan (Japan, Rev. B?)", - "nerutona", "Mahjong Neruton Haikujiradan (Japan, Rev. A?)", - "netchu02", "Netchuu Pro Yakyuu 2002 (NPY1 Ver. A)", - "netmerc", "NetMerc?", - "nettoqc", "Nettoh Quiz Champion (Japan)", - "netwars", "Net Wars", - "nevada", "VLC Nevada", - "newapunk", "New Atomic Punk - Global Quest (US)", - "newdixie", "New Dixieland (Bingo)", - "newfant", "New Fantasia (1995 copyright)", - "newfanta", "New Fantasia (1994 copyright)", - "newhilop", "New Hi-Low Poker", - "newmcard", "New Magic Card", - "newpuc2", "Newpuc2 (set 1)", - "newpuc2b", "Newpuc2 (set 2)", - "newpuckx", "New Puck-X", - "news", "News (set 1)", - "newsa", "News (set 2)", - "newsin7", "New Sinbad 7", - "newtangl", "New Tropical Angel", - "newwave", "New Wave", - "nextfase", "Next Fase (bootleg of Phoenix)", - "nf_20", "No Fear: Dangerous Sports (2.0)", - "nf_22", "No Fear: Dangerous Sports (2.2)", - "nf_23", "No Fear: Dangerous Sports (2.3)", - "nf_23f", "No Fear: Dangerous Sports (2.3F)", - "nf_23x", "No Fear: Dangerous Sports (2.3X)", - "nfb96", "New Fruit Bonus '96 Special Edition (v3.63, C1 PCB)", - "nfb96a", "New Fruit Bonus '96 Special Edition (v3.62, C1 PCB)", - "nfb96b", "New Fruit Bonus '96 Special Edition (v3.54, D PCB)", - "nfb96c", "New Fruit Bonus '96 Special Edition (v3.62, DK PCB)", - "nfb96se", "New Fruit Bonus '96 Special Edition (bootleg, set 1)", - "nfb96sea", "New Fruit Bonus '96 Special Edition (bootleg, set 2)", - "nfb96seb", "New Fruit Bonus '96 Special Edition (bootleg, set 3)", - "nfb96txt", "New Fruit Bonus '96 Special Edition (v1.22 Texas XT, C2 PCB)", - "nfl", "NFL", - "nflclsfb", "NFL Classic Football (US, NCF3 Ver.A.)", - "nflfoot", "NFL Football", - "nfm", "New Fruit Machine (Ming-Yang Electronic)", - "nfsug", "Need For Speed: Underground Install (2 Discs) (v1.1)", - "ngalsumr", "Night Gal Summer", - "ngbc", "Neo-Geo Battle Coliseum", - "ngdup23a", "Naomi DIMM Firmware Updater (Rev A) (GDS-0023A)", - "ngdup23c", "Naomi DIMM Firmware Updater (Rev C) (GDS-0023C)", - "ngdup23e", "Naomi DIMM Firmware Updater (Rev E) (GDS-0023E)", - "ngg_10", "No Good Gofers (1.0)", - "ngg_13", "No Good Gofers (1.3)", - "ngg_p06", "No Good Gofers (p0.6)", - "ngndshkr", "Nitro Ground Shaker", - "ngold", "Jack Potten's Poker (NGold, set 1)", - "ngolda", "Jack Potten's Poker (NGold, set 2)", - "ngoldb", "Jack Potten's Poker (NGold, set 3)", - "ngpgal", "Nekketsu Grand-Prix Gal (Japan)", - "ngtbunny", "Night Bunny (Japan 840601 MRN 2-10)", - "nhidctch", "New Hidden Catch (World) / New Tul Lin Gu Lim Chat Ki '98 (Korea) (pcb ver 3.02)", - "nibbler", "Nibbler (rev 9)", - "nibbler6", "Nibbler (rev 6)", - "nibbler8", "Nibbler (rev 8)", - "nibblero", "Nibbler (Olympia - rev 8)", - "nibblerp", "Nibbler (Pioneer Balloon conversion)", - "nightgal", "Night Gal (Japan 840920 AG 1-00)", - "nightlov", "Night Love (Japan 860705)", - "nightr20", "Night Rider (rev. 20)", - "nightrai", "Night Raid (V2.03J)", - "nightrdr", "Night Rider (rev. 21)", - "nightstr", "Night Striker (World)", - "nightstrj", "Night Striker (Japan)", - "nightstru", "Night Striker (US)", - "ninclown", "Ninja Clowns (08/27/91)", - "nineball", "Nine Ball", - "ninja", "Ninja (315-5102)", - "ninjak", "The Ninja Kids (World)", - "ninjakd2", "Ninja-Kid II / NinjaKun Ashura no Shou (set 1)", - "ninjakd2a", "Ninja-Kid II / NinjaKun Ashura no Shou (set 2, bootleg?)", - "ninjakd2b", "Ninja-Kid II / NinjaKun Ashura no Shou (set 3, bootleg?)", - "ninjakj", "The Ninja Kids (Japan)", - "ninjaku", "The Ninja Kids (US)", - "ninjakun", "Ninjakun Majou no Bouken", - "ninjamas", "Ninja Master's - haoh-ninpo-cho", - "ninjaslt", "Ninja Assault (NJA3 Ver. A)", - "ninjaslt1", "Ninja Assault (NJA1 Ver. A)", - "ninjaslt2", "Ninja Assault (NJA2 Ver. A)", - "ninjaslt4", "Ninja Assault (NJA4 Ver. A)", - "ninjaw", "The Ninja Warriors (World)", - "ninjawj", "The Ninja Warriors (Japan)", - "ninjawu", "The Ninja Warriors (US)", - "ninjemak", "Ninja Emaki (US)", - "nitd", "Nightmare in the Dark", - "nitdbl", "Nightmare in the Dark (bootleg)", - "nitedrvr", "Night Driver", - "nitrobal", "Nitro Ball (US)", - "niyanpai", "Niyanpai (Japan)", - "nkdodge", "Nekketsu Koukou Dodgeball Bu (Japan)", - "nkdodgeb", "Nekketsu Koukou Dodgeball Bu (Japan, bootleg)", - "nkishusp", "Mahjong Nenrikishu SP (Japan, V250J)", - "nmaster", "Oni - The Ninja Master (Japan)", - "nmg5", "Multi 5 / New Multi Game 5 (set 1)", - "nmg5a", "Multi 5 / New Multi Game 5 (set 2)", - "nmg5e", "Multi 5 / New Multi Game 5 (set 3, earlier)", - "nmouse", "Naughty Mouse (set 1)", - "nmouseb", "Naughty Mouse (set 2)", - "nmoves", "Night Moves", - "nmsengen", "Nekketsu Mahjong Sengen! AFTER 5 (Japan)", - "nndmseal", "Nandemo Seal Iinkai", - "nndmseala", "Nandemo Seal Iinkai (Astro Boy ver.)", - "noahsark", "Noah's Ark", - "nob", "Noboranka (Japan)", - "nobb", "Noboranka (Japan, bootleg)", - "nomnlnd", "No Man's Land", - "nomnlndg", "No Man's Land (Gottlieb)", - "noraut3a", "Noraut Joker Poker (V3.010a)", - "noraut3b", "Noraut Joker Poker (V3.011a)", - "norautdx", "Noraut Deluxe Poker (console)", - "norautjo", "Noraut Joker Poker (original)", - "norautjp", "Noraut Joker Poker (alt)", - "norautp", "Noraut Poker", - "norautpl", "Noraut Joker Poker (Prologic HW)", - "norautpn", "Noraut Deluxe Poker (bootleg)", - "norautra", "Noraut Red Hot Joker Poker (alt HW)", - "norautrh", "Noraut Red Hot Joker Poker", - "norautu", "Noraut Poker (NTX10A)", - "norautua", "Noraut unknown set 1 (console)", - "norautub", "Noraut unknown set 2 (console)", - "nost", "Nostradamus", - "nostj", "Nostradamus (Japan)", - "nostk", "Nostradamus (Korea)", - "nouryoku", "Nouryoku Koujou Iinkai", - "nouryokup", "Nouryoku Koujou Iinkai (prototype)", - "nova2001", "Nova 2001 (Japan)", - "nova2001u", "Nova 2001 (US)", - "novoplay", "Novo Play Multi Card / Club Card", - "npcartv1", "Neo Print V1 (World)", - "nprinces", "Ninja Princess (315-5051, 64k Ver. bootleg?)", - "nprincesb", "Ninja Princess (315-5051?, 128k Ver. bootleg?)", - "nprinceso", "Ninja Princess (315-5098, 128k Ver.)", - "nprincesu", "Ninja Princess (64k Ver. not encrypted)", - "nprsp", "NeopriSP Retro Collection (Japan)", - "nrallyx", "New Rally X", - "nrallyxb", "New Rally X (bootleg?)", - "nratechu", "Neratte Chu", - "ns8lines", "New Lucky 8 Lines / New Super 8 Lines (W-4)", - "ns8linew", "New Lucky 8 Lines / New Super 8 Lines (F-5, Witch Bonus)", - "nslasher", "Night Slashers (Korea Rev 1.3)", - "nslasherj", "Night Slashers (Japan Rev 1.2)", - "nslashers", "Night Slashers (Over Sea Rev 1.2)", - "nslasheru", "Night Slashers (US Rev 1.2, HuC6280 Sound CPU)", - "nsmpoker", "NSM Poker (TMS9995)", - "nspirit", "Ninja Spirit", - "nspiritj", "Saigo no Nindou (Japan)", - "nss", "Nintendo Super System BIOS", - "nss_actr", "Act Raiser (Nintendo Super System)", - "nss_adam", "The Addams Family (Nintendo Super System)", - "nss_aten", "David Crane's Amazing Tennis (Nintendo Super System)", - "nss_con3", "Contra 3: The Alien Wars (Nintendo Super System)", - "nss_fzer", "F-Zero (Nintendo Super System)", - "nss_lwep", "Lethal Weapon (Nintendo Super System)", - "nss_ncaa", "NCAA Basketball (Nintendo Super System)", - "nss_rob3", "Robocop 3 (Nintendo Super System)", - "nss_skin", "Skins Game (Nintendo Super System)", - "nss_smw", "Super Mario World (Nintendo Super System)", - "nss_ssoc", "Super Soccer (Nintendo Super System)", - "nss_sten", "Super Tennis (Nintendo Super System)", - "nstocker", "Night Stocker (10/6/86)", - "nstocker2", "Night Stocker (8/27/86)", - "nstrphnx", "New Star's Phoenix (Italian speech)", - "nsub", "N-Sub (upright)", - "ntcash", "NtCash", - "ntopstar", "Mahjong Nerae! Top Star (Japan)", - "nudgeit", "Nudge-It", - "nugent", "Nugent", - "numanath", "Numan Athletics (World)", - "numanathj", "Numan Athletics (Japan)", - "number1", "Number One", - "number10", "Number Dieci (Poker)", - "numbr10l", "Number Dieci (Lattine)", - "nunchaku", "Nunchackun", - "nwarr", "Night Warriors: Darkstalkers' Revenge (Euro 950316)", - "nwarra", "Night Warriors: Darkstalkers' Revenge (Asia 950302)", - "nwarrb", "Night Warriors: Darkstalkers' Revenge (Brazil 950403)", - "nwarrh", "Night Warriors: Darkstalkers' Revenge (Hispanic 950403)", - "nwarru", "Night Warriors: Darkstalkers' Revenge (USA 950406)", - "nwarrud", "Night Warriors: Darkstalkers' Revenge (USA 950406 Phoenix Edition) (bootleg)", - "nyanpani", "Nyan Nyan Panic (Japan)", - "nycaptor", "N.Y. Captor", - "nyjoker", "New York Joker", - "nyny", "New York! New York!", - "nynyg", "New York! New York! (Gottlieb)", - "nzeroteam", "New Zero Team", - "obaoba", "Oba-Oba", - "obaoba1", "Oba-Oba (alternate set)", - "oceanhun", "The Ocean Hunter", - "odeontw2", "Odeon Twister 2 (v202.19)", - "odin", "Odin", - "odin_dlx", "Odin De Luxe", - "odisea", "Odisea Paris-Dakar", - "oedfight", "Oedo Fight (Japan Bloodshed Ver.)", - "officeye", "Office Yeo In Cheon Ha (version 1.2)", - "offroad", "Ironman Ivan Stewart's Super Off-Road", - "offroadc", "Off Road Challenge (v1.63)", - "offroadc1", "Off Road Challenge (v1.10)", - "offroadc3", "Off Road Challenge (v1.30)", - "offroadc4", "Off Road Challenge (v1.40)", - "offroadc5", "Off Road Challenge (v1.50)", - "offroadt", "Ironman Ivan Stewart's Super Off-Road Track-Pak", - "offroadt2p", "Ironman Ivan Stewart's Super Off-Road Track-Pak (2 Players)", - "offrthnd", "Offroad Thunder", - "offtwall", "Off the Wall (2/3-player upright)", - "offtwallc", "Off the Wall (2-player cocktail)", - "ogonsiro", "Ougon no Shiro (Japan)", - "ohbakyuun", "Oh! Bakyuuun (Japan, OB1/VER.A)", - "ohmygod", "Oh My God! (Japan)", - "ohpaipee", "Oh! Paipee (Japan 890227)", - "oigas", "Oigas (bootleg)", - "oinori", "Oinori-daimyoujin Matsuri", - "oisipuzl", "Oishii Puzzle Ha Irimasenka", - "ojanko2", "Ojanko Yakata 2bankan (Japan)", - "ojankoc", "Ojanko Club (Japan)", - "ojankohs", "Ojanko High School (Japan)", - "ojankoy", "Ojanko Yakata (Japan)", - "ojousan", "Ojousan (Japan 871204)", - "ojousanm", "Ojousan [BET] (Japan 870108)", - "olds", "Oriental Legend Special / Xi You Shi E Zhuan Super (ver. 101, Korean Board)", - "olds100", "Oriental Legend Special / Xi You Shi E Zhuan Super (ver. 100, set 1)", - "olds100a", "Oriental Legend Special / Xi You Shi E Zhuan Super (ver. 100, set 2)", - "olds103t", "Oriental Legend Special / Xi You Shi E Zhuan Super (ver. 103, China, Tencent) (unprotected)", - "oldsplus", "Oriental Legend Special Plus / Xi You Shi E Zhuan Super Plus", - "olibochu", "Oli-Boo-Chu", - "oligam", "Olympian Games (Russia)", - "ollie", "Ollie King (GDX-0007)", - "olympic", "Olympic Games", - "olympus", "Olympus", - "olysoc92", "Olympic Soccer '92 (set 1)", - "olysoc92a", "Olympic Soccer '92 (set 2)", - "omega", "Omega", - "omegaf", "Omega Fighter", - "omegafs", "Omega Fighter Special", - "omegrace", "Omega Race (set 1)", - "omegrace2", "Omega Race (set 2)", - "omni", "Omni", - "omni_l1", "Omni (Shuffle) (L-1)", - "omotesnd", "Omotesandou (Japan 890215)", - "oneshot", "One Shot One Kill", - "onetwo", "One + Two", - "onetwoe", "One + Two (earlier)", - "onna34ro", "Onna Sansirou - Typhoon Gal (set 1)", - "onna34roa", "Onna Sansirou - Typhoon Gal (set 2)", - "opaopa", "Opa Opa (MC-8123, 317-0042)", - "opengolf", "Konami's Open Golf Championship (ver EAE)", - "opengolf2", "Konami's Open Golf Championship (ver EAD)", - "openice", "2 On 2 Open Ice Challenge (rev 1.21)", - "openmj", "Open Mahjong [BET] (Japan)", - "opthund", "Operation: Thunder", - "optiger", "Operation Tiger", - "opwolf", "Operation Wolf (World, set 1)", - "opwolf3", "Operation Wolf 3 (World)", - "opwolf3u", "Operation Wolf 3 (US)", - "opwolfa", "Operation Wolf (World, set 2)", - "opwolfb", "Operation Bear (bootleg of Operation Wolf)", - "opwolfj", "Operation Wolf (Japan)", - "opwolfu", "Operation Wolf (US)", - "orangec", "Orange Club - Maruhi Kagai Jugyou (Japan 880213)", - "orangeci", "Orange Club - Maru-hi Ippatsu Kaihou [BET] (Japan 880221)", - "orbatak", "Orbatak (prototype)", - "orbit", "Orbit", - "orbit1", "Orbit 1", - "orbitor1", "Orbitor 1", - "orbitron", "Orbitron", - "orbs", "Orbs (10/7/94 prototype?)", - "ordyne", "Ordyne (Japan, English Version)", - "ordynej", "Ordyne (Japan)", - "orleg2", "Oriental Legend 2 (V104, China)", - "orleg2o", "Oriental Legend 2 (V103, China)", - "orlegend", "Oriental Legend / Xi You Shi E Zhuan (ver. 126)", - "orlegend105k", "Oriental Legend / Xi You Shi E Zhuan (ver. 105, Korean Board)", - "orlegend111c", "Oriental Legend / Xi You Shi E Zhuan (ver. 111, Chinese Board)", - "orlegendc", "Oriental Legend / Xi You Shi E Zhuan (ver. 112, Chinese Board)", - "orlegendca", "Oriental Legend / Xi You Shi E Zhuan (ver. ???, Chinese Board)", - "orlegende", "Oriental Legend / Xi You Shi E Zhuan (ver. 112)", - "orunners", "OutRunners (World)", - "orunnersj", "OutRunners (Japan)", - "orunnersu", "OutRunners (US)", - "oscar", "Psycho-Nics Oscar (World revision 0)", - "oscarj1", "Psycho-Nics Oscar (Japan revision 1)", - "oscarj2", "Psycho-Nics Oscar (Japan revision 2)", - "oscaru", "Psycho-Nics Oscar (US)", - "osman", "Osman (World)", - "otatidai", "Disco Mahjong Otachidai no Okite (Japan)", - "otchart", "Off The Charts (Russia)", - "otenamhf", "Otenami Haiken Final (V2.07JC)", - "otenamih", "Otenami Haiken (V2.04J)", - "otenki", "Otenki Kororin (V2.01J)", - "othello", "Othello (version 3.0)", - "othellos", "Othello Shiyouyo (J 980423 V1.002)", - "othldrby", "Othello Derby (Japan)", - "othunder", "Operation Thunderbolt (World)", - "othunderj", "Operation Thunderbolt (Japan)", - "othunderu", "Operation Thunderbolt (US)", - "othunderuo", "Operation Thunderbolt (US, older)", - "otonano", "Otona no Mahjong (Japan 880628)", - "otrigger", "OutTrigger (JPN, USA, EXP, KOR, AUS)", - "otwalls", "Off the Wall (Sente)", - "outfxies", "The Outfoxies (World, OU2)", - "outfxiesj", "The Outfoxies (Japan, OU1)", - "outlaw", "Outlaw [TTL]", - "outline", "Outline", - "outr2", "Out Run 2 (Rev A) (GDX-0004A)", - "outr2st", "Out Run 2 Special Tours (Rev A) (GDX-0014A)", - "outrun", "Out Run (sitdown/upright, Rev B)", - "outrunb", "Out Run (bootleg)", - "outrundx", "Out Run (deluxe sitdown)", - "outrundxa", "Out Run (deluxe sitdown earlier version)", - "outrundxj", "Out Run (Japan, deluxe sitdown, FD1089A 317-0019)", - "outrunra", "Out Run (sitdown/upright, Rev A)", - "outzone", "Out Zone", - "outzonea", "Out Zone (old set)", - "outzoneb", "Out Zone (older set)", - "outzonec", "Out Zone (oldest set)", - "outzoneh", "Out Zone (harder)", - "overdriv", "Over Drive", - "overrev", "Over Rev (Model 2C, Revision A)", - "overrevb", "Over Rev (Model 2B, Revision B)", - "overtop", "Over Top", - "ozmawars", "Ozma Wars (set 1)", - "ozmawars2", "Ozma Wars (set 2)", - "ozon1", "Ozon I", - "p47", "P-47 - The Phantom Fighter (World)", - "p47aces", "P-47 Aces", - "p47j", "P-47 - The Freedom Fighter (Japan)", - "p47je", "P-47 - The Freedom Fighter (Japan, Export)", - "p911", "Police 911 (ver UAD)", - "p9112", "Police 911 2 (ver A)", - "p911e", "Police 24/7 (ver EAA)", - "p911j", "Keisatsukan Shinjuku 24ji (ver JAC)", - "p911kc", "Police 911 (ver KAC)", - "p911uc", "Police 911 (ver UAC)", - "pacapp", "Paca Paca Passion (Japan, PPP1/VER.A2)", - "pacapp2", "Paca Paca Passion 2 (Japan, PKS1/VER.A)", - "pacappsp", "Paca Paca Passion Special (Japan, PSP1/VER.A)", - "pacgal", "Pac-Gal", - "pacheart", "Pac-Man (Hearts)", - "pachifev", "Pachifever", - "pachiten", "Medal Mahjong Pachi-Slot Tengoku [BET] (Japan)", - "pacland", "Pac-Land (World)", - "paclandj", "Pac-Land (Japan new)", - "paclandjo", "Pac-Land (Japan old)", - "paclandjo2", "Pac-Land (Japan older)", - "paclandm", "Pac-Land (Midway)", - "paclandp", "Pac-Land (United Amusements PC Engine)", - "pacman", "Pac-Man (Midway)", - "pacmanbl", "Pac-Man (Galaxian hardware, set 1)", - "pacmanbla", "Pac-Man (Galaxian hardware, set 2)", - "pacmanf", "Pac-Man (Midway, speedup hack)", - "pacmania", "Pac-Mania", - "pacmaniaj", "Pac-Mania (Japan)", - "pacmansp", "Puck Man (Spanish, 'Made in Greece' bootleg)", - "pacmod", "Pac-Man (Midway, harder)", - "pacnchmp", "Pac-Man & Chomp Chomp", - "pacnpal", "Pac & Pal", - "pacnpal2", "Pac & Pal (older)", - "pacominv", "Pacom Invader", - "pacplus", "Pac-Man Plus", - "pacslot", "Pac-Slot", - "pacuman", "Pacu-Man (Spanish bootleg of Puck Man)", - "paddle2", "Paddle 2 (bootleg on Block hardware)", - "paddlema", "Paddle Mania", - "paintlad", "Painted Lady (Splash) (Ver. 1.3 US)", - "paintrlr", "Paint Roller (bootleg of Crush Roller)", - "pairlove", "Pairs Love", - "pairs", "Pairs (V1.2, 09/30/94)", - "pairsa", "Pairs (09/07/94)", - "pairsnb", "Pairs (Nichibutsu) (Japan 890822)", - "pairsred", "Pairs Redemption (V1.0, 10/25/94)", - "pairsten", "Pairs (System Ten) (Japan 890826)", - "pajaroes", "Pajaro del Espacio (Spanish bootleg of UniWar S)", - "palamed", "Palamedes (Japan)", - "pandoras", "Pandora's Palace", - "pang", "Pang (World)", - "pang3", "Pang! 3 (Euro 950601)", - "pang3b", "Pang! 3 (bootleg)", - "pang3j", "Pang! 3: Kaitou Tachi no Karei na Gogo (Japan 950511)", - "pang3r1", "Pang! 3 (Euro 950511)", - "pangb", "Pang (bootleg, set 1)", - "pangb2", "Pang (bootleg, set 4)", - "pangba", "Pang (bootleg, set 3)", - "pangbold", "Pang (bootleg, set 2)", - "pangofun", "Pango Fun (Italy)", - "pangpang", "Pang Pang", - "pangpoms", "Pang Pom's", - "pangpomsm", "Pang Pom's (Mitchell)", - "panic", "Space Panic (version E)", - "panic2", "Space Panic (set 2)", - "panic3", "Space Panic (set 3)", - "panicbom", "Panic Bomber", - "panicger", "Space Panic (German)", - "panich", "Space Panic (harder)", - "panicprk", "Panic Park (PNP2 Ver. A)", - "panicprkj", "Panic Park (PNP1 Ver. B)", - "panicr", "Panic Road (Japan)", - "panicrg", "Panic Road (Germany)", - "panicstr", "Panic Street (Japan)", - "panikuru", "Panicuru Panekuru (Japan, PPA1 Ver.A)", - "panther", "Panther", - "panthera", "Panthera", - "panzer", "Panzer (bootleg of Spectar)", - "paperboy", "Paperboy (rev 3)", - "paperboyr1", "Paperboy (rev 1)", - "paperboyr2", "Paperboy (rev 2)", - "papillon", "Papillon", - "paprazzi", "Paparazzi", - "para2dx", "Paradise 2 Deluxe", - "paradice", "Paradice (Dutch, Game Card 95-750-615)", - "paradise", "Paradise", - "paradlx", "Paradise Deluxe", - "paragon", "Paragon", - "paranoia", "Paranoia", - "parentj", "Parent Jack", - "parodius", "Parodius DA! (World, set 1)", - "parodiusa", "Parodius DA! (Asia)", - "parodiuse", "Parodius DA! (World, set 2)", - "parodiusj", "Parodius DA! (Japan)", - "parrot3", "Parrot Poker III (Version 2.6E Dual)", - "parrot3b1", "Parrot Poker III (Version 2.6R, set 1)", - "parrot3d1", "Parrot Poker III (Version 2.6R, set 2)", - "parrot3o", "Parrot Poker III (Version 2.4)", - "parrot3v1", "Parrot Poker III (Version 2.6R Dual)", - "party", "Party", - "pasha2", "Pasha Pasha 2", - "pass", "Pass", - "passht4b", "Passing Shot (4 Players) (bootleg)", - "passsht", "Passing Shot (World, 2 Players, FD1094 317-0080)", - "passsht16a", "Passing Shot (Japan, 4 Players, System 16A, FD1094 317-0071)", - "passshta", "Passing Shot (World, 4 Players, FD1094 317-0074)", - "passshtb", "Passing Shot (2 Players) (bootleg)", - "passshtj", "Passing Shot (Japan, 4 Players, FD1094 317-0070)", - "pastelg", "Pastel Gal (Japan 851224)", - "patimono", "Mahjong Pachinko Monogatari (Japan)", - "pb_l2", "Pin-Bot (L-2)", - "pb_l3", "Pin-Bot (L-3)", - "pb_l5", "Pin-Bot (L-5)", - "pbaction", "Pinball Action (set 1)", - "pbaction2", "Pinball Action (set 2)", - "pbaction3", "Pinball Action (set 3, encrypted)", - "pbaction4", "Pinball Action (set 4, encrypted)", - "pbaction5", "Pinball Action (set 5, encrypted)", - "pballoon", "Pioneer Balloon", - "pballoonr", "Pioneer Balloon (Rock-Ola license)", - "pbancho", "Gyakuten!! Puzzle Bancho (Japan)", - "pbchmp95", "Pinball Champ '95", - "pbillian", "Prebillian", - "pbillrd", "Perfect Billiard", - "pbillrds", "Perfect Billiard (MC-8123, 317-0030)", - "pblbeach", "Pebble Beach - The Great Shot (JUE 950913 V0.990)", - "pbobbl2n", "Puzzle Bobble 2 / Bust-A-Move Again (Neo-Geo)", - "pbobble", "Puzzle Bobble (Japan, B-System)", - "pbobble2", "Puzzle Bobble 2 (Ver 2.3O 1995/07/31)", - "pbobble2j", "Puzzle Bobble 2 (Ver 2.2J 1995/07/20)", - "pbobble2o", "Puzzle Bobble 2 (Ver 2.2O 1995/07/20)", - "pbobble2u", "Bust-A-Move Again (Ver 2.3A 1995/07/31)", - "pbobble2x", "Puzzle Bobble 2X (Ver 2.2J 1995/11/11)", - "pbobble3", "Puzzle Bobble 3 (Ver 2.1O 1996/09/27)", - "pbobble3j", "Puzzle Bobble 3 (Ver 2.1J 1996/09/27)", - "pbobble3u", "Puzzle Bobble 3 (Ver 2.1A 1996/09/27)", - "pbobble4", "Puzzle Bobble 4 (Ver 2.04O 1997/12/19)", - "pbobble4j", "Puzzle Bobble 4 (Ver 2.04J 1997/12/19)", - "pbobble4u", "Puzzle Bobble 4 (Ver 2.04A 1997/12/19)", - "pbobblen", "Puzzle Bobble / Bust-A-Move (Neo-Geo) (NGM-083)", - "pbobblenb", "Puzzle Bobble / Bust-A-Move (Neo-Geo) (bootleg)", - "pbss330", "Pit Boss Superstar III 30 (9233-00-01)", - "pbst30", "Pit Boss Supertouch 30 (9234-10-01)", - "pbst30b", "Pit Boss Supertouch 30 (9234-00-01)", - "pc_1942", "1942 (PlayChoice-10)", - "pc_bball", "Baseball (PlayChoice-10)", - "pc_bfght", "Balloon Fight (PlayChoice-10)", - "pc_bload", "Bases Loaded (Prototype, PlayChoice-10)", - "pc_bstar", "Baseball Stars: Be a Champ! (PlayChoice-10)", - "pc_cntra", "Contra (PlayChoice-10)", - "pc_cshwk", "Captain Sky Hawk (PlayChoice-10)", - "pc_cvnia", "Castlevania (PlayChoice-10)", - "pc_dbldr", "Double Dribble (PlayChoice-10)", - "pc_ddrgn", "Double Dragon (PlayChoice-10)", - "pc_drmro", "Dr. Mario (PlayChoice-10)", - "pc_duckh", "Duck Hunt (PlayChoice-10)", - "pc_ebike", "Excite Bike (PlayChoice-10)", - "pc_ftqst", "Uncle Fester's Quest: The Addams Family (PlayChoice-10)", - "pc_gntlt", "Gauntlet (PlayChoice-10)", - "pc_golf", "Golf (PlayChoice-10)", - "pc_goons", "The Goonies (PlayChoice-10)", - "pc_grdue", "Gradius (PlayChoice-10, older)", - "pc_grdus", "Gradius (PlayChoice-10)", - "pc_hgaly", "Hogan's Alley (PlayChoice-10)", - "pc_kngfu", "Kung Fu (PlayChoice-10)", - "pc_mario", "Mario Bros. (PlayChoice-10)", - "pc_miket", "Mike Tyson's Punch-Out!! (PlayChoice-10)", - "pc_mman3", "Mega Man III (PlayChoice-10)", - "pc_moglf", "Mario's Open Golf (PlayChoice-10)", - "pc_mtoid", "Metroid (PlayChoice-10)", - "pc_ngai2", "Ninja Gaiden Episode II: The Dark Sword of Chaos (PlayChoice-10)", - "pc_ngai3", "Ninja Gaiden Episode III: The Ancient Ship of Doom (PlayChoice-10)", - "pc_ngaid", "Ninja Gaiden (PlayChoice-10)", - "pc_pinbt", "PinBot (PlayChoice-10)", - "pc_pwbld", "Power Blade (PlayChoice-10)", - "pc_pwrst", "Pro Wrestling (PlayChoice-10)", - "pc_radr2", "Rad Racer II (PlayChoice-10)", - "pc_radrc", "Rad Racer (PlayChoice-10)", - "pc_rcpam", "R.C. Pro-Am (PlayChoice-10)", - "pc_rkats", "Rockin' Kats (PlayChoice-10)", - "pc_rnatk", "Rush'n Attack (PlayChoice-10)", - "pc_rrngr", "Chip'n Dale: Rescue Rangers (PlayChoice-10)", - "pc_rygar", "Rygar (PlayChoice-10)", - "pc_sjetm", "Solar Jetman (PlayChoice-10)", - "pc_smb", "Super Mario Bros. (PlayChoice-10)", - "pc_smb2", "Super Mario Bros. 2 (PlayChoice-10)", - "pc_smb3", "Super Mario Bros. 3 (PlayChoice-10)", - "pc_suprc", "Super C (PlayChoice-10)", - "pc_tbowl", "Tecmo Bowl (PlayChoice-10)", - "pc_tenis", "Tennis (PlayChoice-10)", - "pc_tkfld", "Track & Field (PlayChoice-10)", - "pc_tmnt", "Teenage Mutant Ninja Turtles (PlayChoice-10)", - "pc_tmnt2", "Teenage Mutant Ninja Turtles II: The Arcade Game (PlayChoice-10)", - "pc_trjan", "Trojan (PlayChoice-10)", - "pc_vball", "Volley Ball (PlayChoice-10)", - "pc_virus", "Virus (Dr. Mario prototype, PlayChoice-10)", - "pc_wcup", "Nintendo World Cup (PlayChoice-10)", - "pc_wgnmn", "Wild Gunman (PlayChoice-10)", - "pc_ynoid", "Yo! Noid (PlayChoice-10)", - "pcktgal", "Pocket Gal (Japan)", - "pcktgal2", "Pocket Gal 2 (English)", - "pcktgal2j", "Pocket Gal 2 (Japanese)", - "pcktgalb", "Pocket Gal (bootleg)", - "pclb297w", "Print Club 2 '97 Winter Ver (J 971017 V1.100)", - "pclb298a", "Print Club 2 '98 Autumn Ver (J 980827 V1.000)", - "pclb2elk", "Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000)", - "pclub2", "Print Club 2 (U 970921 V1.000)", - "pclub298", "Print Club 2 '98 Spring Ver (J 971017 V1.100)", - "pclub2fc", "Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100)", - "pclub2kc", "Print Club Kome Kome Club (J 970203 V1.000)", - "pclub2v3", "Print Club 2 Vol. 3 (U 990310 V1.000)", - "pclubj", "Print Club (Japan Vol.1)", - "pclubjv2", "Print Club (Japan Vol.2)", - "pclubjv4", "Print Club (Japan Vol.4)", - "pclubjv5", "Print Club (Japan Vol.5)", - "pclubol", "Print Club Olive (J 980717 V1.000)", - "pclubor", "Print Club Goukakenran (J 991104 V1.000)", - "pclubpok", "Print Club Pokemon B (U 991126 V1.000)", - "pclubys", "Puzzle Club (Yun Sung, set 1)", - "pclubysa", "Puzzle Club (Yun Sung, set 2)", - "pcnfrk3m", "Percussion Freaks 3rd Mix (G*A23 VER. KAA)", - "pdrift", "Power Drift (World, Rev A)", - "pdrifta", "Power Drift (World)", - "pdrifte", "Power Drift (World, Earlier)", - "pdriftj", "Power Drift (Japan)", - "pebe0014", "Player's Edge Plus (BE0014) Blackjack", - "pecmen", "Mr. & Mrs. Pec-Men", - "peekaboo", "Peek-a-Boo!", - "peepshow", "Nozokimeguri Mahjong Peep Show (Japan 890404)", - "peggle", "Peggle (Joystick, v1.0)", - "pegglet", "Peggle (Trackball, v1.0)", - "peip0041", "Player's Edge Plus (IP0041) Double Deuces Wild Poker - French", - "peip0074", "Player's Edge Plus (IP0074) Joker Poker - French", - "peip0079", "Player's Edge Plus (IP0079) Standard Draw Poker - French", - "peke1012", "Player's Edge Plus (KE1012) Keno", - "peke1013", "Player's Edge Plus (KE1013) Keno", - "penalty", "Penalty (Bingo)", - "penbros", "Penguin Brothers (Japan)", - "penfan", "Penfan Girls - Step1. Mild Mind (set 1)", - "penfana", "Penfan Girls - Step1. Mild Mind (set 2)", - "pengadvb", "Penguin Adventure (bootleg of MSX version)", - "pengo", "Pengo (set 1 rev c)", - "pengo2", "Pengo (set 2)", - "pengo2u", "Pengo (set 2 not encrypted)", - "pengo3u", "Pengo (set 3 not encrypted)", - "pengo4", "Pengo (set 4)", - "pengob", "Pengo (bootleg)", - "penky", "Penky", - "penta", "Penta", - "pentacup", "Pentacup (rev. 1)", - "pentacup2", "Pentacup (rev. 2)", - "pepp0002", "Player's Edge Plus (PP0002) Standard Draw Poker", - "pepp0002a", "Player's Edge Plus (PP0002) Standard Draw Poker (International)", - "pepp0008", "Player's Edge Plus (PP0008) Standard Draw Poker", - "pepp0010", "Player's Edge Plus (PP0010) Standard Draw Poker", - "pepp0014", "Player's Edge Plus (PP0014) Standard Draw Poker (International)", - "pepp0014a", "Player's Edge Plus (PP0014) Standard Draw Poker", - "pepp0023", "Player's Edge Plus (PP0023) 10's or Better", - "pepp0040", "Player's Edge Plus (PP0040) Standard Draw Poker", - "pepp0041", "Player's Edge Plus (PP0041) Standard Draw Poker", - "pepp0043", "Player's Edge Plus (PP0043) 10's or Better", - "pepp0045", "Player's Edge Plus (PP0045) 10's or Better", - "pepp0046", "Player's Edge Plus (PP0046) 10's or Better", - "pepp0051", "Player's Edge Plus (PP0051) Joker Poker", - "pepp0053", "Player's Edge Plus (PP0053) Joker Poker (Aces or Better)", - "pepp0055", "Player's Edge Plus (PP0055) Deuces Wild Poker (set 1)", - "pepp0055a", "Player's Edge Plus (PP0055) Deuces Wild Poker (set 2)", - "pepp0055b", "Player's Edge Plus (PP0055) Deuces Wild Poker (set 3)", - "pepp0057", "Player's Edge Plus (PP0057) Deuces Wild Poker (set 1)", - "pepp0057a", "Player's Edge Plus (PP0057) Deuces Wild Poker (set 2)", - "pepp0059", "Player's Edge Plus (PP0059) Two Pair or Better (set 1)", - "pepp0059a", "Player's Edge Plus (PP0059) Two Pair or Better (set 2)", - "pepp0060", "Player's Edge Plus (PP0060) Standard Draw Poker (set 1)", - "pepp0060a", "Player's Edge Plus (PP0060) Standard Draw Poker (set 2)", - "pepp0064", "Player's Edge Plus (PP0064) Joker Poker", - "pepp0065", "Player's Edge Plus (PP0065) Joker Poker (Aces or Better)", - "pepp0083", "Player's Edge Plus (PP0083) 10's or Better", - "pepp0103", "Player's Edge Plus (PP0103) Deuces Wild Poker", - "pepp0116", "Player's Edge Plus (PP0116) Standard Draw Poker", - "pepp0118", "Player's Edge Plus (PP0118) Standard Draw Poker", - "pepp0120", "Player's Edge Plus (PP0120) Wild Sevens Poker", - "pepp0125", "Player's Edge Plus (PP0125) Deuces Wild Poker", - "pepp0126", "Player's Edge Plus (PP0126) Deuces Wild Poker", - "pepp0127", "Player's Edge Plus (PP0127) Deuces Joker Wild Poker", - "pepp0158", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 1)", - "pepp0158a", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 2)", - "pepp0158b", "Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 3)", - "pepp0159", "Player's Edge Plus (PP0159) Standard Draw Poker (International)", - "pepp0171", "Player's Edge Plus (PP0171) Joker Poker", - "pepp0178", "Player's Edge Plus (PP0178) 4 of a Kind Bonus Poker (Operator selectable special 4 of a Kind)", - "pepp0188", "Player's Edge Plus (PP0188) Standard Draw Poker (set 1)", - "pepp0188a", "Player's Edge Plus (PP0188) Standard Draw Poker (set 2)", - "pepp0190", "Player's Edge Plus (PP0190) Deuces Wild Poker", - "pepp0197", "Player's Edge Plus (PP0197) Standard Draw Poker (set 1)", - "pepp0197a", "Player's Edge Plus (PP0197) Standard Draw Poker (set 2)", - "pepp0203", "Player's Edge Plus (PP0203) 4 of a Kind Bonus Poker (set 1)", - "pepp0203a", "Player's Edge Plus (PP0203) 4 of a Kind Bonus Poker (set 2)", - "pepp0203b", "Player's Edge Plus (PP0203) 4 of a Kind Bonus Poker (set 3)", - "pepp0219", "Player's Edge Plus (PP0219) Standard Draw Poker", - "pepp0221", "Player's Edge Plus (PP0221) Standard Draw Poker (set 1)", - "pepp0221a", "Player's Edge Plus (PP0221) Standard Draw Poker (set 2)", - "pepp0224", "Player's Edge Plus (PP0224) Deuces Wild Poker (set 1)", - "pepp0224a", "Player's Edge Plus (PP0224) Deuces Wild Poker (set 2)", - "pepp0230", "Player's Edge Plus (PP0230) Standard Draw Poker", - "pepp0249", "Player's Edge Plus (PP0249) Deuces Wild Poker", - "pepp0250", "Player's Edge Plus (PP0250) Double Down Stud Poker", - "pepp0265", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 1)", - "pepp0265a", "Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 2)", - "pepp0274", "Player's Edge Plus (PP0274) Standard Draw Poker", - "pepp0290", "Player's Edge Plus (PP0290) Deuces Wild Poker", - "pepp0291", "Player's Edge Plus (PP0291) Deuces Wild Poker", - "pepp0409", "Player's Edge Plus (PP0409) 4 of a Kind Bonus Poker", - "pepp0410", "Player's Edge Plus (PP0410) 4 of a Kind Bonus Poker", - "pepp0417", "Player's Edge Plus (PP0417) Deuces Wild Poker (set 1)", - "pepp0417a", "Player's Edge Plus (PP0417) Deuces Wild Poker (set 2)", - "pepp0419", "Player's Edge Plus (PP0419) Standard Draw Poker", - "pepp0420", "Player's Edge Plus (PP0420) Standard Draw Poker", - "pepp0423", "Player's Edge Plus (PP0423) Standard Draw Poker", - "pepp0426", "Player's Edge Plus (PP0426) Joker Poker", - "pepp0428", "Player's Edge Plus (PP0428) Joker Poker", - "pepp0429", "Player's Edge Plus (PP0429) Joker Poker (Aces or Better)", - "pepp0434", "Player's Edge Plus (PP0434) Bonus Poker Deluxe", - "pepp0447", "Player's Edge Plus (PP0447) Standard Draw Poker (set 1)", - "pepp0447a", "Player's Edge Plus (PP0447) Standard Draw Poker (set 2)", - "pepp0449", "Player's Edge Plus (PP0449) Standard Draw Poker", - "pepp0452", "Player's Edge Plus (PP0452) Double Deuces Wild Poker", - "pepp0454", "Player's Edge Plus (PP0454) Bonus Poker Deluxe", - "pepp0455", "Player's Edge Plus (PP0455) Joker Poker", - "pepp0458", "Player's Edge Plus (PP0458) Joker Poker (Aces or Better)", - "pepp0488", "Player's Edge Plus (PP0488) Standard Draw Poker (Arizona Charlie's)", - "pepp0508", "Player's Edge Plus (PP0508) Loose Deuce Deuces Wild! Poker", - "pepp0509", "Player's Edge Plus (PP0509) Standard Draw Poker", - "pepp0510", "Player's Edge Plus (PP0510) Standard Draw Poker", - "pepp0514", "Player's Edge Plus (PP0514) Double Bonus Poker (set 1)", - "pepp0514a", "Player's Edge Plus (PP0514) Double Bonus Poker (set 2)", - "pepp0514b", "Player's Edge Plus (PP0514) Double Bonus Poker (set 3)", - "pepp0515", "Player's Edge Plus (PP0515) Double Bonus Poker (set 1)", - "pepp0515a", "Player's Edge Plus (PP0515) Double Bonus Poker (set 2)", - "pepp0516", "Player's Edge Plus (PP0516) Double Bonus Poker (set 1)", - "pepp0516a", "Player's Edge Plus (PP0516) Double Bonus Poker (set 2)", - "pepp0531", "Player's Edge Plus (PP0531) Joker Poker", - "pepp0536", "Player's Edge Plus (PP0536) Joker Poker", - "pepp0538", "Player's Edge Plus (PP0538) Double Bonus Poker", - "pepp0540", "Player's Edge Plus (PP0540) Double Bonus Poker", - "pepp0542", "Player's Edge Plus (PP0542) One Eyed Jacks Wild Poker", - "pepp0568", "Player's Edge Plus (PP0568) Joker Poker", - "pepp0585", "Player's Edge Plus (PP0585) Standard Draw Poker", - "pepp0713", "Player's Edge Plus (PP0713) Bonus Poker Deluxe", - "pepp0725", "Player's Edge Plus (PP0725) Double Bonus Poker (set 1)", - "pepp0725a", "Player's Edge Plus (PP0725) Double Bonus Poker (set 2)", - "pepp0726", "Player's Edge Plus (PP0726) Double Bonus Poker", - "pepp0728", "Player's Edge Plus (PP0728) Double Bonus Poker", - "pepp0760", "Player's Edge Plus (PP0760) Double Down Stud Poker", - "pepp0763", "Player's Edge Plus (PP0763) 4 of a Kind Bonus Poker", - "pepp0775", "Player's Edge Plus (PP0775) Royal Deuces Poker??", - "pepper2", "Pepper II (version 8)", - "pepper27", "Pepper II (version 7)", - "peps0014", "Player's Edge Plus (PS0014) Super Joker Slots", - "peps0021", "Player's Edge Plus (PS0021) Red White & Blue Slots", - "peps0022", "Player's Edge Plus (PS0022) Red White & Blue Slots", - "peps0042", "Player's Edge Plus (PS0042) Double Diamond Slots", - "peps0043", "Player's Edge Plus (PS0043) Double Diamond Slots", - "peps0045", "Player's Edge Plus (PS0045) Red White & Blue Slots", - "peps0047", "Player's Edge Plus (PS0047) Wild Cherry Slots", - "peps0092", "Player's Edge Plus (PS0092) Wild Cherry Slots", - "peps0206", "Player's Edge Plus (PS0206) Red White & Blue Slots", - "peps0207", "Player's Edge Plus (PS0207) Red White & Blue Slots", - "peps0296", "Player's Edge Plus (PS0296) Haywire Slots", - "peps0298", "Player's Edge Plus (PS0298) Double Diamond Slots", - "peps0308", "Player's Edge Plus (PS0308) Double Jackpot Slots", - "peps0364", "Player's Edge Plus (PS0364) Red White & Blue Slots", - "peps0426", "Player's Edge Plus (PS0426) Sizzling Sevens Slots", - "peps0581", "Player's Edge Plus (PS0581) Red White & Blue Slots", - "peps0615", "Player's Edge Plus (PS0615) Chaos Slots", - "peps0631", "Player's Edge Plus (PS0631) Red White & Blue Slots", - "peps0716", "Player's Edge Plus (PS0716) River Gambler Slots", - "pepsiman", "PEPSI Man", - "percuss", "The Percussor", - "perestro", "Perestroika Girls", - "perestrof", "Perestroika Girls (Fuuki license)", - "perfect", "Perfect Game (Russia)", - "perfrman", "Performan (Japan)", - "perfrmanu", "Performan (US)", - "pesadelo", "Pesadelo (bootleg of Knightmare on MSX)", - "peset001", "Player's Edge Plus (Set001) Set Chip", - "peset038", "Player's Edge Plus (Set038) Set Chip", - "pestplce", "Pest Place", - "petaco", "Petaco", - "petaco2", "Petaco 2", - "peterpak", "Peter Pack-Rat", - "pettanp", "Pettan Pyuu (Japan)", - "pex0002p", "Player's Edge Plus (X000002P+XP000038) Standard Draw Poker", - "pex0002pa", "Player's Edge Plus (X000002P+XP000109) Standard Draw Poker", - "pex0040p", "Player's Edge Plus (X000040P+XP000038) Standard Draw Poker", - "pex0045p", "Player's Edge Plus (X000045P+XP000038) 10's or Better", - "pex0046p", "Player's Edge Plus (X000046P+XP000038) 10's or Better", - "pex0053p", "Player's Edge Plus (X000053P+XP000038) Joker Poker (Aces or Better)", - "pex0054p", "Player's Edge Plus (X000054P+XP000038) Deuces Wild Poker", - "pex0055p", "Player's Edge Plus (X000055P+XP000019) Deuces Wild Poker", - "pex0055pa", "Player's Edge Plus (X000055P+XP000022) Deuces Wild Poker (The Orleans)", - "pex0055pb", "Player's Edge Plus (X000055P+XP000023) Deuces Wild Poker", - "pex0055pc", "Player's Edge Plus (X000055P+XP000028) Deuces Wild Poker", - "pex0055pd", "Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker", - "pex0055pe", "Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker", - "pex0055pf", "Player's Edge Plus (X000055P+XP000040) Deuces Wild Poker", - "pex0055pg", "Player's Edge Plus (X000055P+XP000053) Deuces Wild Poker", - "pex0055ph", "Player's Edge Plus (X000055P+XP000055) Deuces Wild Poker", - "pex0055pi", "Player's Edge Plus (X000055P+XP000063) Deuces Wild Poker", - "pex0055pj", "Player's Edge Plus (X000055P+XP000075) Deuces Wild Poker", - "pex0055pk", "Player's Edge Plus (X000055P+XP000079) Deuces Wild Poker", - "pex0055pl", "Player's Edge Plus (X000055P+XP000094) Deuces Wild Poker", - "pex0055pm", "Player's Edge Plus (X000055P+XP000095) Deuces Wild Poker", - "pex0055pn", "Player's Edge Plus (X000055P+XP000098) Deuces Wild Poker", - "pex0055po", "Player's Edge Plus (X000055P+XP000102) Deuces Wild Poker", - "pex0055pp", "Player's Edge Plus (X000055P+XP000104) Deuces Wild Poker", - "pex0055pq", "Player's Edge Plus (X000055P+XP000112) Deuces Wild Poker", - "pex0055pr", "Player's Edge Plus (X000055P+XP000126) Deuces Wild Poker", - "pex0060p", "Player's Edge Plus (X000060P+XP000038) Standard Draw Poker", - "pex0158p", "Player's Edge Plus (X000158P+XP000038) 4 of a Kind Bonus Poker", - "pex0171p", "Player's Edge Plus (X000171P+XP000038) Joker Poker", - "pex0188p", "Player's Edge Plus (X000188P+XP000038) Standard Draw Poker", - "pex0190p", "Player's Edge Plus (X000190P+XP000053) Deuces Wild Poker", - "pex0197p", "Player's Edge Plus (X000197P+XP000038) Standard Draw Poker", - "pex0203p", "Player's Edge Plus (X000203P+XP000038) 4 of a Kind Bonus Poker", - "pex0224p", "Player's Edge Plus (X000224P+XP000053) Deuces Wild Poker", - "pex0225p", "Player's Edge Plus (X000225P+XP000079) Dueces Joker Wild Poker", - "pex0265p", "Player's Edge Plus (X000265P+XP000038) 4 of a Kind Bonus Poker", - "pex0291p", "Player's Edge Plus (X000291P+XP000053) Deuces Wild Poker", - "pex0417p", "Player's Edge Plus (X000417P+XP000053) Deuces Wild Poker", - "pex0430p", "Player's Edge Plus (X000430P+XP000079) Dueces Joker Wild Poker", - "pex0434p", "Player's Edge Plus (X000434P+XP000038) Bonus Poker Deluxe", - "pex0447p", "Player's Edge Plus (X000447P+XP000038) Standard Draw Poker", - "pex0449p", "Player's Edge Plus (X000449P+XP000038) Standard Draw Poker", - "pex0451p", "Player's Edge Plus (X000451P+XP000038) Bonus Poker Deluxe", - "pex0452p", "Player's Edge Plus (X000452P+XP000038) Double Deuces Wild Poker", - "pex0454p", "Player's Edge Plus (X000454P+XP000038) Bonus Poker Deluxe", - "pex0458p", "Player's Edge Plus (X000458P+XP000038) Joker Poker (Aces or Better)", - "pex0459p", "Player's Edge Plus (X000459P+XP000038) Joker Poker", - "pex0459pa", "Player's Edge Plus (X000459P+XP000155) Joker Poker", - "pex0508p", "Player's Edge Plus (X000508P+XP000038) Loose Deuce Deuces Wild! Poker", - "pex0514p", "Player's Edge Plus (X000514P+XP000038) Double Bonus Poker", - "pex0515p", "Player's Edge Plus (X000515P+XP000038) Double Bonus Poker", - "pex0536p", "Player's Edge Plus (X000536P+XP000038) Joker Poker", - "pex0537p", "Player's Edge Plus (X000537P+XP000038) Standard Draw Poker", - "pex0568p", "Player's Edge Plus (X000568P+XP000038) Joker Poker", - "pex0581p", "Player's Edge Plus (X000581P+XP000038) 4 of a Kind Bonus Poker", - "pex0588p", "Player's Edge Plus (X000588P+XP000038) Joker Poker", - "pex0725p", "Player's Edge Plus (X000725P+XP000038) Double Bonus Poker", - "pex0726p", "Player's Edge Plus (X000726P+XP000038) Double Bonus Poker", - "pex0727p", "Player's Edge Plus (X000727P+XP000038) Double Bonus Poker", - "pex0763p", "Player's Edge Plus (X000763P+XP000038) 4 of a Kind Bonus Poker", - "pex0838s", "Player's Edge Plus (X000838S+XS000002) Five Times Pay Slots", - "pex0841s", "Player's Edge Plus (X000841S+XS000002) Five Times Pay Slots", - "pex0998s", "Player's Edge Plus (X000998S+XS000006) Triple Triple Diamond Slots", - "pex1087s", "Player's Edge Plus (X001087S+XS000006) Double Double Diamond Slots", - "pex2018p", "Player's Edge Plus (X002018P+XP000038) Full House Bonus Poker", - "pex2025p", "Player's Edge Plus (X002025P+XP000019) Deuces Wild Bonus Poker", - "pex2026p", "Player's Edge Plus (X002026P+XP000019) Deuces Wild Bonus Poker", - "pex2027p", "Player's Edge Plus (X002027P+XP000019) Deuces Wild Bonus Poker", - "pex2031p", "Player's Edge Plus (X002031P+XP000112) Lucky Deal Poker", - "pex2035p", "Player's Edge Plus (X002035P+XP000112) White Hot Aces Poker", - "pex2036p", "Player's Edge Plus (X002036P+XP000112) White Hot Aces Poker", - "pex2040p", "Player's Edge Plus (X002040P+XP000038) Nevada Bonus Poker", - "pex2042p", "Player's Edge Plus (X002042P+XP000038) Triple Bonus Poker", - "pex2043p", "Player's Edge Plus (X002043P+XP000038) Triple Bonus Poker", - "pex2045p", "Player's Edge Plus (X002045P+XP000038) Triple Bonus Poker", - "pex2066p", "Player's Edge Plus (X002066P+XP000038) Double Double Bonus Poker", - "pex2067p", "Player's Edge Plus (X002067P+XP000038) Double Double Bonus Poker", - "pex2068p", "Player's Edge Plus (X002068P+XP000038) Double Double Bonus Poker", - "pex2069p", "Player's Edge Plus (X002069P+XP000038) Double Double Bonus Poker", - "pex2070p", "Player's Edge Plus (X002070P+XP000038) Double Double Bonus Poker", - "pex2121p", "Player's Edge Plus (X002121P+XP000038) Standard Draw Poker", - "pex2121pa", "Player's Edge Plus (X002121P+XP000037) Standard Draw Poker", - "pex2150p", "Player's Edge Plus (X002150P+XP000038) 4 of a Kind Bonus Poker", - "pex2172p", "Player's Edge Plus (X002172P+XP000112) Ace$ Bonus Poker", - "pex2180p", "Player's Edge Plus (X002180P+XP000038) Double Bonus Poker", - "pex2241p", "Player's Edge Plus (X002241P+XP000079) 4 of a Kind Bonus Poker", - "pex2244p", "Player's Edge Plus (X002244P+XP000079) Double Bonus Poker", - "pex2245p", "Player's Edge Plus (X002245P+XP000055) Standard Draw Poker", - "pex2245pa", "Player's Edge Plus (X002245P+XP000079) Standard Draw Poker", - "pex2250p", "Player's Edge Plus (X002250P+XP000050) Shockwave Poker", - "pex2251p", "Player's Edge Plus (X002251P+XP000050) Shockwave Poker", - "pex2283p", "Player's Edge Plus (X002283P+XP000057) Dealt Deuces Wild Bonus Poker", - "pex2284p", "Player's Edge Plus (X002284P+XP000057) Barbaric Decues Wild Bonus Poker", - "pex2302p", "Player's Edge Plus (X002302P+XP000038) Bonus Poker Deluxe", - "pex2303p", "Player's Edge Plus (X002303P+XP000112) White Hot Aces Poker", - "pex2307p", "Player's Edge Plus (X002307P+XP000112) Triple Double Bonus Poker", - "pex2314p", "Player's Edge Plus (X002314P+XP000112) Triple Bonus Poker Plus", - "pex2374p", "Player's Edge Plus (X002374P+XP000112) Super Aces Poker (Horseshoe)", - "pex2377p", "Player's Edge Plus (X002377P+XP000112) Super Double Bonus Poker", - "pex2420p", "Player's Edge Plus (X002420P+XP000064) Deuces Wild Bonus Poker - French", - "pex2440p", "Player's Edge Plus (X002440P+XP000053) Deuces Wild Poker", - "pex2461p", "Player's Edge Plus (X002461P+XP000055) Joker Poker (Two Pair or Better)", - "pexm001p", "Player's Edge Plus (XM00001P+XMP00003) Multi-Poker", - "pexm002p", "Player's Edge Plus (XM00002P+XMP00006) Multi-Poker", - "pexm003p", "Player's Edge Plus (XM00003P+XMP00024) Multi-Poker", - "pexm004p", "Player's Edge Plus (XM00004P+XMP00002) Multi-Poker", - "pexm005p", "Player's Edge Plus (XM00005P+XMP00004) Multi-Poker", - "pexm006p", "Player's Edge Plus (XM00006P+XMP00006) Multi-Poker", - "pexm007p", "Player's Edge Plus (XM00007P+XMP00006) Multi-Poker", - "pexm008p", "Player's Edge Plus (XM00008P+XMP00006) Multi-Poker", - "pexmp017", "Player's Edge Plus (XMP00017) 5-in-1 Wingboard (CG2298)", - "pexmp017a", "Player's Edge Plus (XMP00017) 5-in-1 Wingboard (CG2352)", - "pexmp017b", "Player's Edge Plus (XMP00017) 5-in-1 Wingboard (CG2426)", - "pexmp030", "Player's Edge Plus (XMP00030) 5-in-1 Wingboard (CG2426)", - "pf2012", "Psychic Force 2012", - "pfevr_l2", "Pennant Fever (L-2)", - "pfevr_p3", "Pennant Fever (P-3)", - "pfghtj", "Pocket Fighter (Japan 970904)", - "pgalvip", "Pocket Gals V.I.P (set 1)", - "pgalvipa", "Pocket Gals V.I.P (set 2)", - "pgear", "Powered Gear: Strategic Variant Armor Equipment (Japan 941024)", - "pgearr1", "Powered Gear: Strategic Variant Armor Equipment (Japan 940916)", - "pgm", "PGM (Polygame Master) System BIOS", - "pgm3in1", "Photo Y2K 2 (Flash 3-in-1)", - "pgoal", "Pleasure Goal / Futsal - 5 on 5 Mini Soccer (NGM-219)", - "phantasm", "Phantasm (Japan)", - "phantom", "Phantom (bootleg of Spectar)", - "phantom2", "Phantom II", - "phantoma", "Phantomas (bootleg of Spectar)", - "phantomp", "Phantom Pays (4VXFC5431, New Zealand)", - "pharo_l2", "Pharaoh (L-2)", - "pharrier", "Planet Harriers", - "phelios", "Phelios (Japan)", - "phklad", "Klad / Labyrinth (Photon System)", - "phnix_l1", "Phoenix (L-1)", - "phoenix", "Phoenix (Amstar)", - "phoenix3", "Phoenix (T.P.N.)", - "phoenixa", "Phoenix (Centuri, set 1)", - "phoenixb", "Phoenix (Centuri, set 2)", - "phoenixc", "Phoenix (Irecsa / G.G.I Corp, set 1)", - "phoenixc2", "Phoenix (Irecsa / G.G.I Corp, set 2)", - "phoenixc3", "Phoenix (Irecsa / G.G.I Corp, set 3)", - "phoenixc4", "Phoenix (Irecsa / G.G.I Corp, set 4)", - "phoenixj", "Phoenix (Taito Japan)", - "phoenixs", "Phoenix (Spanish bootleg)", - "phoenixt", "Phoenix (Taito)", - "phoenxp2", "Phoenix Part 2", - "photof", "Photo Finish (bootleg?)", - "photoply", "Photo Play 2000 (v2.01)", - "photoy2k", "Photo Y2K (ver. 105)", - "photoy2k102", "Photo Y2K (ver. 102, Japanese Board)", - "photoy2k104", "Photo Y2K (ver. 104)", - "phozon", "Phozon (Japan)", - "phozons", "Phozon (Sidam)", - "phpython", "Python (Photon System)", - "phrcraze", "Phraze Craze (6221-40, U5-0A)", - "phrcrazea", "Phraze Craze (6221-40, U5-0)", - "phrcrazeb", "Phraze Craze (6221-40, U5-3A Expanded Questions)", - "phrcrazec", "Phraze Craze (6221-40, U5-3 Expanded Questions)", - "phrcrazev", "Phraze Craze (6221-45, U5-2 Vertical)", - "phtetris", "Tetris (Photon System)", - "piccolop", "Piccolo Poker 100", - "pickin", "Pickin'", - "pickwin", "Pick 'n Win (Version 2.9E Dual)", - "pickwinb1", "Pick 'n Win (Version 2.9R, set 1)", - "pickwinbt", "Pick 'n Win (Version 2.8T, set 1)", - "pickwind1", "Pick 'n Win (Version 2.9R, set 2)", - "pickwindt", "Pick 'n Win (Version 2.8T, set 2)", - "pickwino", "Pick 'n Win (Version 2.6)", - "pickwino2", "Pick 'n Win (Version 2.5T)", - "pickwinv1", "Pick 'n Win (Version 2.9R Dual)", - "pickwinvt", "Pick 'n Win (Version 2.8T, Dual)", - "pignewt", "Pig Newton (version C)", - "pignewta", "Pig Newton (version A)", - "pigout", "Pig Out: Dine Like a Swine! (set 1)", - "pigouta", "Pig Out: Dine Like a Swine! (set 2)", - "pigskin", "Pigskin 621AD (rev 1.1K 8/01/90)", - "pigskina", "Pigskin 621AD (rev 2.0 7/06/90)", - "pigskinb", "Pigskin 621AD (rev 1.1 6/05/90)", - "pimbal", "Pimbal (Pinball 3000)", - "pinball", "Pinball", - "pinbo", "Pinbo (set 1)", - "pinboa", "Pinbo (set 2)", - "pinbos", "Pinbo (bootleg)", - "pinchamp", "Pinball Champ", - "pinchamp7", "Pinball Champ (7 digits)", - "pinchamp7g", "Pinball Champ (7 digits German speech)", - "pinchamp7i", "Pinball Champ (7 digits Italian speech)", - "pinchampg", "Pinball Champ (German speech)", - "pinchampi", "Pinball Champ (Italian speech)", - "pinclown", "Clown (Inder)", - "pingpong", "Konami's Ping-Pong", - "pinkiri8", "Pinkiri 8", - "pinkswts", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER....)", - "pinkswtsa", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER...)", - "pinkswtsb", "Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER.)", - "pinkswtsx", "Pink Sweets: Ibara Sorekara (2006/xx/xx MASTER VER.)", - "pinpool", "Pinball Pool", - "pipedrm", "Pipe Dream (World)", - "pipedrmj", "Pipe Dream (Japan)", - "pipedrmt", "Pipe Dream (Taiwan)", - "pipedrmu", "Pipe Dream (US)", - "pipeline", "Pipeline", - "pipibibs", "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 1)", - "pipibibsa", "Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 2)", - "pipibibsbl", "Pipi & Bibis / Whoopee!! (bootleg)", - "pipibibsp", "Pipi & Bibis / Whoopee!! (prototype)", - "pir2001", "Pirate 2001 (Version 2.5E Dual)", - "pir2001b1", "Pirate 2001 (Version 2.5R, set 1)", - "pir2001bx", "Pirate 2001 (Version 2.40XT, set 1)", - "pir2001d1", "Pirate 2001 (Version 2.5R, set 2)", - "pir2001dx", "Pirate 2001 (Version 2.40XT, set 2)", - "pir2001o", "Pirate 2001 (Version 2.3N)", - "pir2001o2", "Pirate 2001 (Version 2.3)", - "pir2001o3", "Pirate 2001 (Version 2.20XT)", - "pir2001v1", "Pirate 2001 (Version 2.5R Dual)", - "pir2001vx", "Pirate 2001 (Version 2.40XT Dual)", - "pir2002", "Pirate 2002 (Version 2.0E Dual)", - "pir2002b1", "Pirate 2002 (Version 2.0R, set 1)", - "pir2002bx", "Pirate 2002 (Version 1.90XT, set 1)", - "pir2002d1", "Pirate 2002 (Version 2.0R, set 2)", - "pir2002dx", "Pirate 2002 (Version 1.90XT, set 2)", - "pir2002o", "Pirate 2002 (Version 1.8N)", - "pir2002o2", "Pirate 2002 (Version 1.8)", - "pir2002o3", "Pirate 2002 (Version 1.70XT)", - "pir2002v1", "Pirate 2002 (Version 2.0R Dual)", - "pir2002vx", "Pirate 2002 (Version 1.90XT Dual)", - "piranha", "Piranha", - "piranhah", "Piranha (hack)", - "piranhao", "Piranha (older)", - "pirate2", "Pirate 2 (061005 World)", - "pirate2_2", "Pirate 2 (070126 Russia)", - "pirate2_2a", "Pirate 2 (bootleg, 070126, banking address hack)", - "pirate2_3", "Pirate 2 (090528 Lottery)", - "pirate2_4", "Pirate 2 (090730 Entertainment)", - "pirate2a", "Pirate 2 (bootleg, 061005, banking address hack set 1)", - "pirate2b", "Pirate 2 (bootleg, 061005, banking address hack set 2)", - "pirate2c", "Pirate 2 (bootleg, 061005, banking address hack, changed version text set 1)", - "pirate2d", "Pirate 2 (bootleg, 061005, banking address hack, changed version text set 2)", - "pirate2e", "Pirate 2 (bootleg, 061005, banking address hack, changed version text set 3)", - "pirate2f", "Pirate 2 (bootleg, 061005, VIDEO GAME-1 PR01)", - "pirate2g", "Pirate 2 (bootleg, 061005, LOTTOGAME (I))", - "pirate2h", "Pirate 2 (bootleg, 061005, LOTOS PR01)", - "pirate_2", "Pirate (060210 World)", - "pirate_3", "Pirate (060803 World)", - "pirate_4", "Pirate (070412 Russia)", - "pirates", "Pirates", - "piratetr", "Pirate Treasure", - "pirati", "Pirati", - "piratpet", "Pirate Pete", - "pirpok2", "Pirate Poker II (Version 2.4E Dual)", - "pirpok2b1", "Pirate Poker II (Version 2.2R, set 1)", - "pirpok2d1", "Pirate Poker II (Version 2.2R, set 2)", - "pirpok2o", "Pirate Poker II (Version 2.0)", - "pirpok2v1", "Pirate Poker II (Version 2.2R Dual)", - "pisces", "Pisces", - "piscesb", "Pisces (bootleg)", - "pistoldm", "Pistol Daimyo no Bouken (Japan)", - "pitboss", "The Pit Boss (2214-04)", - "pitboss2", "Pit Boss II (9221-01C)", - "pitbossa", "The Pit Boss (2214-03, U5-0C)", - "pitbossa1", "The Pit Boss (2214-03, U5-1C)", - "pitbossb", "The Pit Boss (2214-02?)", - "pitbossc", "The Pit Boss (2214-?)", - "pitbossm", "Pit Boss Megastar (9244-00-01)", - "pitbossma", "Pit Boss Megastar (9243-00-01)", - "pitbosss", "Pit Boss Superstar (9221-10-00B)", - "pitbosssa", "Pit Boss Superstar (9221-10-00A)", - "pitbosssc", "Pit Boss Superstar (9221-12-01)", - "pitfall2", "Pitfall II (315-5093)", - "pitfall2a", "Pitfall II (315-5093, Flicky Conversion)", - "pitfall2u", "Pitfall II (not encrypted)", - "pitfight", "Pit Fighter (rev 9)", - "pitfight3", "Pit Fighter (rev 3)", - "pitfight4", "Pit Fighter (rev 4)", - "pitfight5", "Pit Fighter (rev 5)", - "pitfight6", "Pit Fighter (rev 6)", - "pitfight7", "Pit Fighter (rev 7)", - "pitfightb", "Pit Fighter (bootleg)", - "pitfightj", "Pit Fighter (Japan, 2 players)", - "pitnrun", "Pit & Run - F-1 Race (set 1)", - "pitnruna", "Pit & Run - F-1 Race (set 2)", - "pjustic", "Moero Justice Gakuen (JPN) / Project Justice (USA, EXP, KOR, AUS) (Rev A)", - "pkgnsh", "Pachinko Gindama Shoubu (Japan)", - "pkgnshdx", "Pachinko Gindama Shoubu DX (Japan)", - "pkladies", "Poker Ladies", - "pkladiesbl", "Poker Ladies (Censored bootleg)", - "pkladiesl", "Poker Ladies (Leprechaun ver. 510)", - "pkladiesla", "Poker Ladies (Leprechaun ver. 401)", - "pkrdewin", "Poker De Win", - "pkrmast", "Poker Master (set 1)", - "pkrmasta", "Poker Master (set 2)", - "pkrno_l1", "Pokerino (L-1)", - "pkscram", "PK Scramble", - "pktet346", "PK Tetris (v346I)", - "pktgaldx", "Pocket Gal Deluxe (Euro v3.00)", - "pktgaldxb", "Pocket Gal Deluxe (Euro v3.00, bootleg)", - "pktgaldxj", "Pocket Gal Deluxe (Japan v3.00)", - "pkunwar", "Penguin-Kun Wars (US)", - "pkunwarj", "Penguin-Kun Wars (Japan)", - "platoon", "Vs. Platoon", - "play_a24", "Playboy 35th Anniversary (2.4)", - "playball", "PlayBall! (prototype)", - "playboy", "Playboy", - "playboyf", "Playboy (5.00 France)", - "playboyf_203", "Playboy (2.03 France)", - "playboyf_300", "Playboy (3.00 France)", - "playboyf_303", "Playboy (3.03 France)", - "playboyf_401", "Playboy (4.01 France)", - "playboyg", "Playboy (5.00 Germany)", - "playboyg_203", "Playboy (2.03 Germany)", - "playboyg_300", "Playboy (3.00 Germany)", - "playboyg_303", "Playboy (3.03 Germany)", - "playboyg_401", "Playboy (4.01 Germany)", - "playboyi", "Playboy (5.00 Italy)", - "playboyi_203", "Playboy (2.03 Italy)", - "playboyi_300", "Playboy (3.00 Italy)", - "playboyi_303", "Playboy (3.03 Italy)", - "playboyi_401", "Playboy (4.01 Italy)", - "playboyl", "Playboy (5.00 Spain)", - "playboyl_203", "Playboy (2.03 Spain)", - "playboyl_300", "Playboy (3.00 Spain)", - "playboyl_303", "Playboy (3.03 Spain)", - "playboyl_401", "Playboy (4.01 Spain)", - "playboys", "Playboy (5.00)", - "playboys_203", "Playboy (2.03)", - "playboys_300", "Playboy (3.00)", - "playboys_303", "Playboy (3.03)", - "playboys_401", "Playboy (4.01)", - "playch10", "PlayChoice-10 BIOS", - "playnew", "Playboy (ARM7 Sound Board)", - "plegends", "Gogetsuji Legends (US, Ver. 95/06/20)", - "plegendsj", "Gouketsuji Gaiden - Saikyou Densetsu (Japan, Ver. 95/06/20)", - "pleiadbl", "Pleiads (bootleg set 1)", - "pleiadce", "Pleiads (Centuri)", - "pleiads", "Pleiads (Tehkan)", - "pleiadsb2", "Pleiads (bootleg set 2)", - "plgirls", "Play Girls", - "plgirls2", "Play Girls 2", - "plotting", "Plotting (World set 1)", - "plottinga", "Plotting (World set 2, protected)", - "plottingb", "Plotting (World set 3, earliest version)", - "plottingu", "Plotting (US)", - "plsmaswd", "Plasma Sword: Nightmare of Bilstein (USA 980316)", - "plsmaswda", "Plasma Sword: Nightmare of Bilstein (Asia 980316)", - "pltkids", "Pilot Kids (Model 2B, Revision A)", - "pltkidsa", "Pilot Kids (Model 2A)", - "plumppop", "Plump Pop (Japan)", - "plusalph", "Plus Alpha", - "plygonet", "Polygonet Commanders (ver UAA)", - "pma", "PMA Poker", - "pmpoker", "PlayMan Poker (German)", - "pmv112", "Pinball Magic", - "pmv112r", "Pinball Magic (Redemption)", - "pnchmn", "Punch Mania: Hokuto No Ken (GQ918 VER. JAB)", - "pnchmn2", "Punch Mania 2: Hokuto No Ken (GQA09 JAA)", - "pnchmna", "Punch Mania: Hokuto No Ken (GQ918 VER. JAB ALT CD)", - "pnickj", "Pnickies (Japan 940608)", - "pnkpnthr", "Pink Panther", - "pntnpuzl", "Paint & Puzzle", - "pnyaa", "Pochi and Nyaa", - "pocketrc", "Pocket Racer (Japan, PKR1/VER.B)", - "podrace", "Star Wars Pod Racer", - "poitto", "Poitto!", - "poizone", "Poizone", - "pokasuka", "Pokasuka Ghost", - "pokechmp", "Poke Champ", - "poker41", "Four in One Poker", - "poker52", "Poker 52 (Ver. 1.2)", - "poker72", "Poker Monarch (v2.50)", - "poker91", "Poker 91", - "pokerdub", "unknown French poker game", - "pokerduc", "unknown encrypted poker game", - "pokermon", "Mundial/Mondial (Italian/French)", - "pokeroul", "Poker Roulette (Version 8.22)", - "pokersis", "unknown Sisteme France Poker", - "pokio", "Pokio (Dutch, Game Card 95-750-278)", - "pokonl97", "Poker Only '97 (ver. 3.3)", - "pokrdice", "Poker Dice", - "polar", "Polar Explorer", - "polaris", "Polaris (Latest version)", - "polarisa", "Polaris (First revision)", - "polarisbr", "Polaris (Brazil)", - "polariso", "Polaris (Original version)", - "polepos", "Pole Position (World)", - "polepos2", "Pole Position II (Japan)", - "polepos2a", "Pole Position II (Atari)", - "polepos2b", "Pole Position II (bootleg)", - "polepos2bi", "Gran Premio F1 (Italian bootleg of Pole Position II)", - "poleposa1", "Pole Position (Atari version 1)", - "poleposa2", "Pole Position (Atari version 2)", - "poleposj", "Pole Position (Japan)", - "poleposn", "Pole Position (Sonic)", - "polic_l2", "Police Force (LA-2)", - "polic_l3", "Police Force (LA-3)", - "polic_l4", "Police Force (LA-4)", - "policetr", "Police Trainer (Rev 1.3)", - "policetr10", "Police Trainer (Rev 1.0)", - "policetr11", "Police Trainer (Rev 1.1)", - "policetr13a", "Police Trainer (Rev 1.3B Newer)", - "policetr13b", "Police Trainer (Rev 1.3B)", - "pollux", "Pollux (set 1)", - "polluxa", "Pollux (set 2)", - "polluxa2", "Pollux (set 3)", - "polynetw", "Poly-Net Warriors (ver JAA)", - "polyplay", "Poly-Play", - "polystar", "Tobe! Polystars (ver JAA)", - "pomp_l1", "Pompeii (Shuffle) (L-1)", - "pompingw", "Pomping World (Japan)", - "ponchin", "Mahjong Pon Chin Kan (Japan set 1)", - "ponchina", "Mahjong Pon Chin Kan (Japan set 2)", - "pong", "Pong (Rev E) external", - "pongf", "Pong (Rev E)", - "ponpoko", "Ponpoko", - "ponpokov", "Ponpoko (Venture Line)", - "pontoon", "Pontoon (FD1094 317-0153)", - "ponttehk", "Pontoon (Tehkan)", - "pool10", "Pool 10 (Italian, set 1)", - "pool10b", "Pool 10 (Italian, set 2)", - "pool10c", "Pool 10 (Italian, set 3)", - "pool10d", "Pool 10 (Italian, set 4)", - "pool10e", "Pool 10 (Italian, Dino 4 hardware, encrypted)", - "pool10f", "Pool 10 (Italian, set 5)", - "pool10g", "Pool 10 (Italian, set 6)", - "pool10h", "Pool 10 (Italian, set 7)", - "pool10i", "Pool 10 (Italian, set 8)", - "pool_l6", "Pool Sharks (LA-6)", - "pool_l7", "Pool Sharks (LA-7)", - "pool_le2", "Pool Sharks (LE-2)", - "pool_p7", "Pool Sharks (PA-7)", - "poolcham", "Pool Champion", - "poolchama", "Pool Champion (alternate sound)", - "poolchami", "Pool Champion (Italian speech)", - "poolshrk", "Poolshark", - "pootan", "Pootan", - "pooyan", "Pooyan", - "pooyans", "Pooyan (Stern Electronics)", - "pop_hh", "Popper (Hard Head bootleg)", - "pop_lx5", "Popeye Saves The Earth (LX-5)", - "pop_pa3", "Popeye Saves The Earth (PA-3)", - "popbingo", "Pop Bingo", - "popbounc", "Pop 'n Bounce / Gapporin", - "popeye", "Popeye (revision D)", - "popeyebl", "Popeye (bootleg)", - "popeyef", "Popeye (revision F)", - "popeyeman", "Popeye-Man", - "popeyeu", "Popeye (revision D not protected)", - "popflame", "Pop Flamer (protected)", - "popflamea", "Pop Flamer (not protected)", - "popflameb", "Pop Flamer (hack?)", - "popflamen", "Pop Flamer (bootleg on Naughty Boy PCB)", - "popn2", "Pop'n Music 2 (ver JA-A)", - "popn4", "Pop'n Music 4", - "popn5", "Pop'n Music 5", - "popn6", "Pop'n Music 6", - "popn7", "Pop'n Music 7", - "popn8", "Pop'n Music 8", - "popn9", "Pop'n Music 9 (ver JAB)", - "popnanm2", "Pop'n Music Animelo 2", - "popnpop", "Pop'n Pop (Ver 2.07O 1998/02/09)", - "popnpopj", "Pop'n Pop (Ver 2.07J 1998/02/09)", - "popnpopu", "Pop'n Pop (Ver 2.07A 1998/02/09)", - "popobear", "PoPo Bear", - "popper", "Popper", - "popshot", "Pop Shot (prototype)", - "popspops", "Pop's Pop's", - "porky", "Porky", - "porter", "Port Man (bootleg on Moon Cresta hardware)", - "portman", "Port Man", - "portrait", "Portraits (set 1)", - "portraita", "Portraits (set 2)", - "potgame", "Pot Game (Italian)", - "potgoldu", "Pot O' Gold (U.S. Games, v400x?)", - "potnpkra", "Jack Potten's Poker (set 2)", - "potnpkrb", "Jack Potten's Poker (set 3)", - "potnpkrc", "Jack Potten's Poker (set 4)", - "potnpkrd", "Jack Potten's Poker (set 5)", - "potnpkre", "Jack Potten's Poker (set 6)", - "potnpkrf", "Jack Potten's Poker (set 7, Royale GFX)", - "poto_a32", "The Phantom of the Opera (3.2)", - "potogold", "Pot of Gold", - "potopoto", "Poto Poto (Japan)", - "pottnpkr", "Jack Potten's Poker (set 1)", - "poundfor", "Pound for Pound (World)", - "poundforj", "Pound for Pound (Japan)", - "poundforu", "Pound for Pound (US)", - "pow", "P.O.W. - Prisoners of War (US version 1)", - "powerbal", "Power Balls", - "powerbals", "Power Balls (Super Slam conversion)", - "powercrd", "Power Card (Ver 0263, encrypted)", - "powerdrv", "Power Drive", - "powerins", "Power Instinct (USA)", - "powerinsa", "Power Instinct (USA, bootleg set 1)", - "powerinsb", "Power Instinct (USA, bootleg set 2)", - "powerinsj", "Gouketsuji Ichizoku (Japan)", - "powj", "Datsugoku - Prisoners of War (Japan)", - "powrplay", "Power Play", - "powyak96", "Jikkyou Powerful Pro Yakyuu '96 (GV017 Japan 1.03)", - "powyakex", "Jikkyou Powerful Pro Yakyuu EX (GX802 VER. JAB)", - "ppan", "Peter Pan (bootleg of Hook)", - "ppcar", "Pang Pang Car", - "ppchamp", "Pasha Pasha Champ Mini Game Festival (Korea)", - "ppd", "ParaParaDancing", - "ppking", "Ping-Pong King", - "ppmast93", "Ping Pong Masters '93", - "ppp", "ParaParaParadise", - "ppp11", "ParaParaParadise v1.1", - "ppp1mp", "ParaParaParadise 1st Mix Plus", - "ppp2nd", "ParaParaParadise 2nd Mix", - "pprobe", "Planet Probe (prototype?)", - "ppsatan", "Poka Poka Satan (Japan)", - "ppspeed", "Speed Up (Spanish bootleg of Pole Position)", - "pr_5xcsh", "5x Cash (Project) (PROCONN)", - "pr_7hvn", "777 Heaven (Project) (PROCONN)", - "pr_7hvna", "777 Heaven (Project) (10GBP Jackpot) (PROCONN)", - "pr_7hvnb", "777 Heaven (Project) (20p 6GBP Jackpot Version 114) (PROCONN)", - "pr_7hvnc", "777 Heaven (Project) (10p 3GBP Jackpot Version 380) (PROCONN)", - "pr_7hvnd", "777 Heaven (Project) (5p 3GBP Jackpot Version 105) (PROCONN)", - "pr_7hvne", "777 Heaven (Project) (set 6) (PROCONN)", - "pr_7hvnf", "777 Heaven (Project) (set 7) (PROCONN)", - "pr_7hvng", "777 Heaven (Project) (set 8) (PROCONN)", - "pr_7hvnh", "777 Heaven (Project) (set 9) (PROCONN)", - "pr_7hvni", "777 Heaven (Project) (set 10) (PROCONN)", - "pr_7hvnj", "777 Heaven (Project) (set 11) (PROCONN)", - "pr_7hvnk", "777 Heaven (Project) (set 12) (PROCONN)", - "pr_7hvnl", "777 Heaven (Project) (set 13) (PROCONN)", - "pr_7hvnm", "777 Heaven (Project) (set 14) (PROCONN)", - "pr_7hvnn", "777 Heaven (Project) (set 15) (PROCONN)", - "pr_7hvno", "777 Heaven (Project) (set 16) (PROCONN)", - "pr_7hvnp", "777 Heaven (Project) (set 17) (PROCONN)", - "pr_7hvnq", "777 Heaven (Project) (set 18) (PROCONN)", - "pr_7hvnr", "777 Heaven (Project) (set 19) (PROCONN)", - "pr_7hvns", "777 Heaven (Project) (set 20) (PROCONN)", - "pr_7hvnt", "777 Heaven (Project) (set 21) (PROCONN)", - "pr_7hvnu", "777 Heaven (Project) (set 22) (PROCONN)", - "pr_alwy9", "Always Nine (Pcp) (set 1) (PROCONN)", - "pr_alwy9a", "Always Nine (Pcp) (set 2) (PROCONN)", - "pr_barbl", "Bars & Bells (Project) (PROCONN)", - "pr_batls", "Battleships (Project) (set 1) (PROCONN)", - "pr_batlsa", "Battleships (Project) (set 2) (PROCONN)", - "pr_batlsb", "Battleships (Project) (set 3) (PROCONN)", - "pr_bears", "Bear Streak (set 1) (Coinworld)", - "pr_bearsa", "Bear Streak (set 2) (Coinworld)", - "pr_bearsb", "Bear Streak (set 3) (Coinworld)", - "pr_bearx", "Bear X (Version 2.3) (Coinworld)", - "pr_bearxa", "Bear X (Version 2.2) (Coinworld)", - "pr_bearxb", "Bear X (Version 1.3) (Coinworld)", - "pr_bearxc", "Bear X (20p set 1) (Coinworld)", - "pr_bearxd", "Bear X (20p set 2) (Coinworld)", - "pr_bearxe", "Bear X (10p set 1) (Coinworld)", - "pr_bearxf", "Bear X (10p set 2) (Coinworld)", - "pr_bearxg", "Bear X (10p set 3) (Coinworld)", - "pr_bearxh", "Bear X (10p set 4?) (Coinworld)", - "pr_bearxi", "Bear X (10p set 5) (Coinworld)", - "pr_bearxj", "Bear X (code 813) (Coinworld)", - "pr_bearxk", "Bear X (8GBP Token?) (Coinworld)", - "pr_bearxl", "Bear X (Version 41) (Coinworld)", - "pr_bearxlp", "Bear X (Version 41, Protocol) (Coinworld)", - "pr_bearxm", "Bear X (Version 31) (Coinworld)", - "pr_bigdp", "Big Dipper (Project) (set 1) (PROCONN)", - "pr_bigdpa", "Big Dipper (Project) (set 2) (PROCONN)", - "pr_btwar", "Beat The Warden (Project) (set 1) (PROCONN)", - "pr_btwara", "Beat The Warden (Project) (set 2) (PROCONN)", - "pr_btwarb", "Beat The Warden (Project) (set 3) (PROCONN)", - "pr_bulbn", "Bully's Big Night (Project) (PROCONN)", - "pr_bulbna", "Bully's Big Night (Project) (set 1) (PROCONN)", - "pr_bulbnb", "Bully's Big Night (Project) (set 2) (PROCONN)", - "pr_buljp", "Bully's Jackpot (Project) (set 1) (PROCONN)", - "pr_buljpa", "Bully's Jackpot (Project) (set 2) (PROCONN)", - "pr_bulls", "Bullseye (Project) (set 1) (PROCONN)", - "pr_bullsa", "Bullseye (Project) (set 2) (PROCONN)", - "pr_bullsb", "Bullseye (Project) (set 3) (PROCONN)", - "pr_cas7", "Casino Jackpot 7s (Project) (PROCONN)", - "pr_cashb", "Cash Back (Project) (PROCONN)", - "pr_chico", "Chico the Bandit (Project) (set 1) (PROCONN)", - "pr_chicoa", "Chico the Bandit (Project) (set 2) (PROCONN)", - "pr_chicob", "Chico the Bandit (Project) (set 3) (PROCONN)", - "pr_coolm", "Cool Million (Project) (set 1) (PROCONN)", - "pr_coolma", "Cool Million (Project) (set 2) (PROCONN)", - "pr_coolmb", "Cool Million (Project) (set 3) (PROCONN)", - "pr_coyot", "Crazy Coyote (Pcp) (10p) (PROCONN)", - "pr_coyota", "Crazy Coyote (Pcp) (20p) (PROCONN)", - "pr_crz77", "Crazy 777s (Project) (PROCONN)", - "pr_crzbr", "Crazy Bars (Project) (PROCONN)", - "pr_crzpy", "Crazy Pays (Project) (PROCONN)", - "pr_dblup", "Double Up (Project) (PROCONN)", - "pr_fire", "Fircecracker (Project) (PROCONN)", - "pr_flshc", "Flash The Cash (Project) (PROCONN)", - "pr_fspot", "Fun Spot (Version 4.1) (Coinworld)", - "pr_fspota", "Fun Spot (Version 3.1) (Coinworld)", - "pr_fspotb", "Fun Spot (Version 2.1, set 1) (Coinworld)", - "pr_fspotc", "Fun Spot (Version 2.1, 20p stake, 82%) (Coinworld)", - "pr_fspotd", "Fun Spot (Version 2.1, 7 button) (Coinworld)", - "pr_fspote", "Fun Spot (Version 1.1, set 1) (Coinworld)", - "pr_fspotf", "Fun Spot (Version 1.1, 20p stake, 82%) (Coinworld)", - "pr_fspotg", "Fun Spot (Version 1.1, 6 button) (Coinworld)", - "pr_ftwhl", "Fortune Wheel (Project) (PROCONN)", - "pr_funrn", "Fun On The Run (Project) (PROCONN)", - "pr_gdft", "Good Fortune (Project) (PROCONN)", - "pr_gldng", "Golden Nugget (Project) (PROCONN)", - "pr_gldnl", "Golden Nile (Project) (PROCONN)", - "pr_gnuc", "Golden Nugget (Version 2.2) (Coinworld)", - "pr_gnuca", "Golden Nugget (Version 1.2) (Coinworld)", - "pr_gogld", "Go For Gold (Project) (PROCONN)", - "pr_happy", "Happy Days (Project) (PROCONN)", - "pr_heato", "The Heat Is On (Project) (PROCONN)", - "pr_hiclm", "Hi Climber (Project) (PROCONN)", - "pr_hit6", "Hit The Six (Project) (set 1) (PROCONN)", - "pr_hit6a", "Hit The Six (Project) (set 2) (PROCONN)", - "pr_hit6b", "Hit The Six (Project) (set 3) (PROCONN)", - "pr_hotcs", "Hot Cash (Project) (PROCONN)", - "pr_hotsp", "Hot Spots (Project) (PROCONN)", - "pr_jkpt7", "Jackpot 7's (Project) (PROCONN)", - "pr_jkrwd", "Jokers Wild (Project) (PROCONN)", - "pr_jumpj", "Jumping Jacks (Project) (set 1) (PROCONN)", - "pr_jumpja", "Jumping Jacks (Project) (set 2) (PROCONN)", - "pr_lday", "'L' Of A Day (Project) (Cash set) (PROCONN)", - "pr_ldaya", "'L' Of A Day (Project) (Token set) (PROCONN)", - "pr_magln", "Magic Lines (Version 2.1) (Coinworld)", - "pr_maglna", "Magic Lines (Version 1.1) (Coinworld)", - "pr_medl", "Medalist (Project) (PROCONN)", - "pr_megmn", "Mega Money (Project) (PROCONN)", - "pr_nifty", "Nifty Fifty (Project) (PROCONN)", - "pr_nudxs", "Nudge XS (Project) (PROCONN)", - "pr_qksht", "Quickshot (Maygay) (PROCONN)", - "pr_rags", "Rags To Riches (Project) (PROCONN)", - "pr_reflx", "Reflex (Project) (PROCONN)", - "pr_roadr", "Road Riot (Project) (PROCONN)", - "pr_roll", "The Roll (Project) (PROCONN)", - "pr_sevab", "Seven's Above (Project) (PROCONN)", - "pr_sevml", "Sevens & Melons (Project) (PROCONN)", - "pr_sptb", "Simply the Best (Pcp) (PROCONN?)", - "pr_supbr", "Super Bars (PCP) (PROCONN)", - "pr_swop", "Swop It (Ace)", - "pr_theme", "Theme Park (Project) (PROCONN)", - "pr_trktp", "Trick or Treat (Protocol?) (Project) (PROCONN)", - "pr_trktr", "Trick or Treat (Project) (PROCONN)", - "pr_trpx", "Triple X (Project) (PROCONN)", - "pr_ttrai", "Treasure Trail (Project) (PROCONN)", - "pr_upnun", "Up & Under (Project) (PROCONN)", - "pr_walls", "Wall Street (Project) (PROCONN)", - "pr_whlft", "Wheel Of Fortune (Project) (PROCONN)", - "pr_wldkn", "Wild Kings (Project) (PROCONN)", - "pr_wnstk", "Winning Streak (Version 1.1) (Coinworld)", - "prehisle", "Prehistoric Isle in 1930 (World)", - "prehislek", "Prehistoric Isle in 1930 (Korea)", - "prehisleu", "Prehistoric Isle in 1930 (US)", - "preisle2", "Prehistoric Isle 2", - "prikura", "Princess Clara Daisakusen (J 960910 V1.000)", - "primella", "Primella", - "primglex", "Prime Goal EX (Japan, PG1/VER.A)", - "primrag2", "Primal Rage 2 (Ver 0.36a)", - "primrage", "Primal Rage (version 2.3)", - "primrage20", "Primal Rage (version 2.0)", - "princess", "Cosmic Princess", - "prmrsocr", "Premier Soccer (ver EAB)", - "prmrsocrj", "Premier Soccer (ver JAB)", - "prmtmfgt", "Prime Time Fighter (Ver 2.1A 1993/05/21) (New Version)", - "prmtmfgto", "Prime Time Fighter (Ver 2.1A 1993/05/21) (Old Version)", - "profpac", "Professor Pac-Man", - "progear", "Progear (USA 010117)", - "progeara", "Progear (Asia 010117)", - "progearj", "Progear no Arashi (Japan 010117)", - "progearjbl", "Progear no Arashi (Japan 010117) (decrypted bootleg)", - "progearjd", "Progear no Arashi (Japan 010117 Phoenix Edition) (bootleg)", - "progearud", "Progear (USA 010117 Phoenix Edition) (bootleg)", - "progolf", "18 Holes Pro Golf (set 1)", - "progolfa", "18 Holes Pro Golf (set 2)", - "progress", "Progress", - "promutrv", "Progressive Music Trivia (Question set 1)", - "promutrva", "Progressive Music Trivia (Question set 2)", - "promutrvb", "Progressive Music Trivia (Question set 3)", - "promutrvc", "Progressive Music Trivia (Question set 4)", - "propcycl", "Prop Cycle (Rev. PR2 Ver.A)", - "prosoccr", "Pro Soccer", - "prosport", "Pro Sports - Bowling, Tennis, and Golf (set 1)", - "prosporta", "Pro Sports - Bowling, Tennis, and Golf (set 2)", - "protennb", "Tennis (bootleg of Pro Tennis)", - "prtyanim", "Party Animal", - "prtytime", "Party Time: Gonta the Diver II / Ganbare! Gonta!! 2 (World Release)", - "psailor1", "Bishoujo Janshi Pretty Sailor 18-kin (Japan)", - "psailor2", "Bishoujo Janshi Pretty Sailor 2 (Japan)", - "psarc95", "PS Arcade 95", - "psattack", "P's Attack", - "psoldier", "Perfect Soldiers (Japan)", - "pspikes", "Power Spikes (World)", - "pspikes2", "Power Spikes II (NGM-068)", - "pspikesb", "Power Spikes (bootleg)", - "pspikesc", "Power Spikes (China)", - "pspikesk", "Power Spikes (Korea)", - "pspikesu", "Power Spikes (US)", - "pss61", "Super Mario Kart / Super Mario Collection / Star Fox (Super Famicom Box)", - "pss62", "New Super 3D Golf Simulation - Waialae No Kiseki / Super Mahjong 2 (Super Famicom Box)", - "pss63", "Super Donkey Kong / Super Tetris 2 + Bombliss (Super Famicom Box)", - "pss64", "Super Donkey Kong / Super Bomberman 2 (Super Famicom Box)", - "pstadium", "Mahjong Panic Stadium (Japan)", - "pstlpkr", "Pistol Poker", - "pstone", "Power Stone (JPN, USA, EUR, ASI, AUS)", - "pstone2", "Power Stone 2 (JPN, USA, EUR, ASI, AUS)", - "psurge", "Power Surge", - "psychic5", "Psychic 5 (set 1)", - "psychic5a", "Psychic 5 (set 2)", - "psychos", "Psycho Soldier (US)", - "psychosj", "Psycho Soldier (Japan)", - "psyforce", "Psychic Force (Ver 2.4O)", - "psyforcej", "Psychic Force (Ver 2.4J)", - "psyforcex", "Psychic Force EX (Ver 2.0J)", - "psyvar2", "Psyvariar 2 - The Will To Fabricate (GDL-0024)", - "psyvaria", "Psyvariar -Medium Unit- (V2.04J)", - "psyvarrv", "Psyvariar -Revision- (V2.04J)", - "ptblank", "Point Blank (World, GN2 Rev B)", - "ptblank2", "Point Blank 2 (GNB5/VER.A)", - "ptblank2ua", "Point Blank 2 (US, GNB3/VER.A)", - "ptblank3", "Point Blank 3 (Asia, GNN2 Ver.A)", - "ptrmj", "PT Reach Mahjong (Japan)", - "pturn", "Parallel Turn", - "puchicar", "Puchi Carat (Ver 2.02O 1997/10/29)", - "puchicarj", "Puchi Carat (Ver 2.02J 1997/10/29)", - "puckman", "Puck Man (Japan set 1)", - "puckmanb", "Puck Man (bootleg set 1)", - "puckmanf", "Puck Man (speedup hack)", - "puckmanh", "Puck Man (bootleg set 2)", - "puckmod", "Puck Man (Japan set 2)", - "puckpepl", "Puck People", - "puckpkmn", "Puckman Pockimon (set 1)", - "puckpkmna", "Puckman Pockimon (set 2)", - "puckpkmnb", "Puckman Pockimon (set 3)", - "pulirula", "PuLiRuLa (World)", - "pulirulaj", "PuLiRuLa (Japan)", - "pulltabs", "Pull Tabs", - "pulsar", "Pulsar", - "pulstar", "Pulstar", - "punchita", "Punch-Out!! (Italian bootleg)", - "punchout", "Punch-Out!!", - "punchoutj", "Punch-Out!! (Japan)", - "punchy", "Punchy The Clown", - "punipic", "The Punisher (bootleg with PIC16c57, set 1)", - "punipic2", "The Punisher (bootleg with PIC16c57, set 2)", - "punipic3", "The Punisher (bootleg with PIC16c57, set 3)", - "punisher", "The Punisher (World 930422)", - "punisherbz", "Biaofeng Zhanjing (Chinese bootleg of The Punisher)", - "punisherh", "The Punisher (Hispanic 930422)", - "punisherj", "The Punisher (Japan 930422)", - "punisheru", "The Punisher (USA 930422)", - "punk", "Punk!", - "punkshot", "Punk Shot (US 4 Players)", - "punkshot2", "Punk Shot (US 2 Players)", - "punkshotj", "Punk Shot (Japan 2 Players)", - "pururun", "Pururun", - "pushman", "Pushman (Korea, set 1)", - "pushmana", "Pushman (Korea, set 2)", - "pushmans", "Pushman (American Sammy license)", - "pushmant", "Pushman (Top Tronic license)", - "pushover", "Push Over (Summit Coin)", - "puyo", "Puyo Puyo (World)", - "puyobl", "Puyo Puyo (World, bootleg)", - "puyoda", "Puyo Puyo Da!", - "puyofev", "Puyo Puyo Fever (GDS-0031)", - "puyofevp", "Puyo Puyo Fever (prototype ver 0.01)", - "puyoj", "Puyo Puyo (Japan, Rev B)", - "puyoja", "Puyo Puyo (Japan, Rev A)", - "puyopuy2", "Puyo Puyo 2 (Japan)", - "puyosun", "Puyo Puyo Sun (J 961115 V0.001)", - "puzlbang", "Puzzle Bang Bang (Korea, version 2.9 / 990108)", - "puzlbanga", "Puzzle Bang Bang (Korea, version 2.8 / 990106)", - "puzlclub", "Puzzle Club (Japan prototype)", - "puzldama", "Taisen Puzzle-dama (ver JAA)", - "puzlstar", "Puzzle Star (ver. 100MG)", - "puzzldpr", "Puzzle De Pon! R!", - "puzzledp", "Puzzle De Pon!", - "puzzlekg", "Puzzle King (Dance & Puzzle)", - "puzzlet", "Puzzlet (Japan)", - "puzzli", "Puzzli", - "puzzli2", "Puzzli 2 (ver. 100)", - "puzzli2s", "Puzzli 2 Super (ver. 200)", - "puzzloop", "Puzz Loop (Europe, v0.94)", - "puzzloopa", "Puzz Loop (Asia)", - "puzzloope", "Puzz Loop (Europe, v0.93)", - "puzzloopj", "Puzz Loop (Japan)", - "puzzloopk", "Puzz Loop (Korea)", - "puzzloopu", "Puzz Loop (USA)", - "puzznic", "Puzznic (World)", - "puzznici", "Puzznic (Italian bootleg)", - "puzznicj", "Puzznic (Japan)", - "pwerplay", "Power Play (Pinball)", - "pwheelsj", "Power Wheels (Japan)", - "pwrgoal", "Taito Power Goal (Ver 2.5O 1994/11/03)", - "pwrinst2", "Power Instinct 2 (US, Ver. 94/04/08)", - "pwrinst2j", "Gouketsuji Ichizoku 2 (Japan, Ver. 94/04/08)", - "pwrkick", "Power Kick (Japan)", - "pwrshovl", "Power Shovel ni Norou!! - Power Shovel Simulator", - "py2k2", "Photo Y2K 2", - "pyenaget", "Pye-nage Taikai", - "pyramid", "Pyramid (Dutch, Game Card 95-750-898)", - "pyros", "Pyros (US)", - "pyson", "Konami Pyson BIOS", - "pz_f4", "The Party Zone (F-4)", - "pz_l1", "The Party Zone (L-1)", - "pz_l2", "The Party Zone (L-2)", - "pz_l3", "The Party Zone (L-3)", - "pzlbowl", "Puzzle De Bowling (Japan)", - "pzlbreak", "Puzzle Break", - "pzlestar", "Puzzle Star (Sang Ho Soft)", - "pzletime", "Puzzle Time (prototype)", - "pzloop2", "Puzz Loop 2 (Euro 010302)", - "pzloop2j", "Puzz Loop 2 (Japan 010226)", - "pzloop2jr1", "Puzz Loop 2 (Japan 010205)", - "qad", "Quiz & Dragons: Capcom Quiz Game (USA 920701)", - "qadjr", "Quiz & Dragons: Capcom Quiz Game (Japan Resale Ver. 940921)", - "qb3", "QB-3 (prototype)", - "qbert", "Q*bert (US set 1)", - "qberta", "Q*bert (US set 2)", - "qbertj", "Q*bert (Japan)", - "qbertqub", "Q*bert's Qubes", - "qberttst", "Q*bert (early test version)", - "qbquest", "Q*Bert's Quest", - "qbtrktst", "Q*bert Board Input Test Rom", - "qc", "Quarter Horse Classic", - "qcrayon", "Quiz Crayon Shinchan (Japan)", - "qcrayon2", "Crayon Shinchan Orato Asobo (Japan)", - "qdrmfgp", "Quiz Do Re Mi Fa Grand Prix (Japan)", - "qdrmfgp2", "Quiz Do Re Mi Fa Grand Prix 2 - Shin-Kyoku Nyuukadayo (Japan)", - "qgakumon", "Quiz Gakumon no Susume (Japan ver. JA2 Type L)", - "qgh", "Quiz Ghost Hunter (Japan, ROM Based)", - "qix", "Qix (Rev 2)", - "qix2", "Qix II (Tournament)", - "qixa", "Qix (set 2, smaller roms)", - "qixb", "Qix (set 2, larger roms)", - "qixo", "Qix (set 3, earlier)", - "qjinsei", "Quiz Jinsei Gekijoh (Japan)", - "qmegamis", "Quiz Ah Megamisama (JPN, USA, EXP, KOR, AUS)", - "qmhayaku", "Quiz-Mahjong Hayaku Yatteyo! (Japan)", - "qndream", "Quiz Nanairo Dreams: Nijiirochou no Kiseki (Japan 960826)", - "qntoond", "Quintoon (Dutch, Game Card 95-750-243)", - "qntoondo", "Quintoon (Dutch, Game Card 95-750-136)", - "qos", "A Question of Sport (set 1, 39-960-107)", - "qosa", "A Question of Sport (set 2, 39-960-099)", - "qosb", "A Question of Sport (set 3, 39-960-089)", - "qotn", "Queen of the Nile (0200439V, NSW/ACT)", - "qrouka", "Quiz Rouka Ni Tattenasai (Japan, ROM Based)", - "qsangoku", "Quiz Sangokushi (Japan)", - "qsww", "Quiz Syukudai wo Wasuremashita (Japan, Floppy Based, FD1094 317-0058-08b)", - "qtheater", "Quiz Theater - 3tsu no Monogatari (Ver 2.3J 1994/11/10)", - "qtono1", "Quiz Tonosama no Yabou (Japan)", - "qtono2j", "Quiz Tonosama no Yabou 2: Zenkoku-ban (Japan 950123)", - "qtorimon", "Quiz Torimonochou (Japan)", - "quake", "Quake Arcade Tournament (Release Beta 2)", - "quantum", "Quantum (rev 2)", - "quantum1", "Quantum (rev 1)", - "quantump", "Quantum (prototype)", - "quaquiz2", "Quadro Quiz II", - "quarterb", "Quarterback (set 1)", - "quarterba", "Quarterback (set 2)", - "quarterh", "Quarter Horse (set 1, Pioneer PR-8210)", - "quarterha", "Quarter Horse (set 2, Pioneer PR-8210)", - "quarterhb", "Quarter Horse (set 3, Pioneer LD-V2000)", - "quartet", "Quartet (Rev A, 8751 315-5194)", - "quartet2", "Quartet 2 (8751 317-0010)", - "quartet2a", "Quartet 2 (unprotected)", - "quarteta", "Quartet (8751 315-5194)", - "quarth", "Quarth (Japan)", - "quasar", "Quasar (set 1)", - "quasara", "Quasar (set 2)", - "queen", "Queen?", - "queenotg", "Queen of the Games", - "quester", "Quester (Japan)", - "questers", "Quester Special Edition (Japan)", - "quickjac", "Quick Jack", - "quicksil", "Quicksilver", - "quintond", "Quintoon (UK, Game Card 95-751-206, Datapak)", - "quintono", "Quintoon (UK, Game Card 95-750-203)", - "quintoon", "Quintoon (UK, Game Card 95-750-206)", - "quiz", "Quiz (Revision 2)", - "quiz18k", "Miyasu Nonki no Quiz 18-Kin", - "quiz211", "Quiz (Revision 2.11)", - "quiz365", "Quiz 365 (Japan)", - "quiz365t", "Quiz 365 (Hong Kong & Taiwan)", - "quizard", "Quizard 3.2", - "quizchq", "Quiz Channel Question (Ver 1.00) (Japan)", - "quizchql", "Quiz Channel Question (Ver 1.23) (Taiwan?)", - "quizdai2", "Quiz Meitantei Neo & Geo - Quiz Daisousa Sen part 2 (NGM-042)(NGH-042)", - "quizdais", "Quiz Daisousa Sen - The Last Count Down (NGM-023)(NGH-023)", - "quizdaisk", "Quiz Daisousa Sen - The Last Count Down (Korean release)", - "quizdna", "Quiz DNA no Hanran (Japan)", - "quizf1", "Quiz F1 1-2 Finish (Japan)", - "quizhq", "Quiz H.Q. (Japan)", - "quizhuhu", "Moriguchi Hiroko no Quiz de Hyuu!Hyuu! (Ver 2.2J 1995/05/25)", - "quizkof", "Quiz King of Fighters (SAM-080)(SAH-080)", - "quizkofk", "Quiz King of Fighters (Korean release)", - "quizmeku", "Quiz Mekurumeku Story (Japan, ROM Based)", - "quizmoon", "Quiz Bisyoujo Senshi Sailor Moon - Chiryoku Tairyoku Toki no Un", - "quizmstr", "Quizmaster (German)", - "quizo", "Quiz Olympic (set 1)", - "quizoa", "Quiz Olympic (set 2)", - "quizpani", "Quiz Panicuru Fantasy", - "quizpun", "Quiz Punch", - "quizpun2", "Quiz Punch 2", - "quizqgd", "Quiz Keitai Q mode (GDL-0017)", - "quizrd12", "Quizard 1.2", - "quizrd17", "Quizard 1.7", - "quizrd18", "Quizard 1.8", - "quizrd22", "Quizard 2.2", - "quizrd23", "Quizard 2.3", - "quizrd34", "Quizard 3.4", - "quizrr40", "Quizard Rainbow 4.0", - "quizrr41", "Quizard Rainbow 4.1", - "quizrr42", "Quizard Rainbow 4.2", - "quizshow", "Quiz Show", - "quiztou", "Nettou! Gekitou! Quiztou!! (Japan)", - "quiztvqq", "Quiz TV Gassyuukoku Q&Q (Japan)", - "quizvadr", "Quizvaders (39-360-078)", - "quizvid", "Video Quiz", - "qwak", "Qwak (prototype)", - "qzchikyu", "Quiz Chikyu Bouei Gun (Japan)", - "qzkklgy2", "Quiz Kokology 2", - "qzkklogy", "Quiz Kokology", - "qzquest", "Quiz Quest - Hime to Yuusha no Monogatari (Japan)", - "qzshowby", "Quiz Sekai wa SHOW by shobai (Japan)", - "r2dtank", "R2D Tank", - "r2dx_v33", "Raiden II / DX (newer V33 PCB)", - "raaspec", "Spectrum I+", - "rab_103", "Adventures of Rocky and Bullwinkle and Friends (1.03 Spain)", - "rab_130", "Adventures of Rocky and Bullwinkle and Friends (1.30)", - "rab_320", "Adventures of Rocky and Bullwinkle and Friends (3.20)", - "rabbit", "Rabbit (Japan)", - "rabbitpk", "Rabbit Poker (Arizona Poker v1.1?)", - "rabiolep", "Rabio Lepus (Japan)", - "raccoon", "Raccoon World", - "racedriv", "Race Drivin' (cockpit, rev 5)", - "racedriv1", "Race Drivin' (cockpit, rev 1)", - "racedriv2", "Race Drivin' (cockpit, rev 2)", - "racedriv3", "Race Drivin' (cockpit, rev 3)", - "racedriv4", "Race Drivin' (cockpit, rev 4)", - "racedrivb", "Race Drivin' (cockpit, British, rev 5)", - "racedrivb1", "Race Drivin' (cockpit, British, rev 1)", - "racedrivb4", "Race Drivin' (cockpit, British, rev 4)", - "racedrivc", "Race Drivin' (compact, rev 5)", - "racedrivc1", "Race Drivin' (compact, rev 1)", - "racedrivc2", "Race Drivin' (compact, rev 2)", - "racedrivc4", "Race Drivin' (compact, rev 4)", - "racedrivcb", "Race Drivin' (compact, British, rev 5)", - "racedrivcb4", "Race Drivin' (compact, British, rev 4)", - "racedrivcg", "Race Drivin' (compact, German, rev 5)", - "racedrivcg4", "Race Drivin' (compact, German, rev 4)", - "racedrivg", "Race Drivin' (cockpit, German, rev 5)", - "racedrivg1", "Race Drivin' (cockpit, German, rev 2)", - "racedrivg4", "Race Drivin' (cockpit, German, rev 4)", - "racedrivpan", "Race Drivin' Panorama (prototype, rev 2.1)", - "raceon", "Race On! (RO2 Ver. A)", - "rachero", "Racing Hero (FD1094 317-0144)", - "racinfrc", "Racin' Force (ver EAC)", - "racinfrcu", "Racin' Force (ver UAB)", - "racingb", "Racing Beat (World)", - "racingbj", "Racing Beat (Japan)", - "racingj", "Racing Jam (JAC)", - "racingj2", "Racing Jam: Chapter 2 (EAE)", - "racingj2j", "Racing Jam: Chapter 2 (JAE)", - "racjamdx", "Racing Jam DX", - "rackempp", "Rack 'em Up! (Pinball)", - "rackemup", "Rack 'em Up (program code L)", - "racknrol", "Rack + Roll", - "radarscp", "Radar Scope", - "radarscp1", "Radar Scope (TRS01)", - "radarzon", "Radar Zone", - "radarzon1", "Radar Zone (Rev.1)", - "radarzont", "Radar Zone (Tuni)", - "radcl_g1", "Radical! (G-1)", - "radcl_l1", "Radical! (L-1)", - "radcl_p3", "Radical! (P-3)", - "radikalb", "Radikal Bikers (Version 2.02)", - "radirgy", "Radirgy (GDL-0032)", - "radirgya", "Radirgy (Rev A) (GDL-0032A)", - "radirgyn", "Radirgy Noa", - "radm", "Rad Mobile (World)", - "radmu", "Rad Mobile (US)", - "radr", "Rad Rally (World)", - "radrad", "Radical Radial", - "radrj", "Rad Rally (Japan)", - "radru", "Rad Rally (US)", - "raflesia", "Rafflesia (315-5162)", - "ragnagrd", "Ragnagard / Shin-Oh-Ken", - "ragtime", "The Great Ragtime Show (Japan v1.5, 92.12.07)", - "ragtimea", "The Great Ragtime Show (Japan v1.3, 92.11.26)", - "raiden", "Raiden (set 1)", - "raiden2", "Raiden II (set 1, US Fabtek)", - "raiden2a", "Raiden II (set 2, Hong Kong, Metrotainment)", - "raiden2b", "Raiden II (set 3, Japan)", - "raiden2c", "Raiden II (set 4, Italy)", - "raiden2d", "Raiden II (set 5, Easy Version)", - "raiden2e", "Raiden II (set 6, Easy Version)", - "raiden2f", "Raiden II (set 7, US Fabtek, Easy Version)", - "raiden2g", "Raiden II (set 8, US Fabtek, Easy Version)", - "raiden2nl", "Raiden II (set 9, The Netherlands)", - "raiden3", "Raiden III (v2.01J)", - "raiden4", "Raiden IV (v1.00J)", - "raidena", "Raiden (set 2)", - "raidenb", "Raiden (set 3)", - "raidendx", "Raiden DX (UK)", - "raidendxa1", "Raiden DX (Hong Kong, set 1)", - "raidendxa2", "Raiden DX (Hong Kong, set 2)", - "raidendxg", "Raiden DX (Germany)", - "raidendxj", "Raiden DX (Japan)", - "raidendxnl", "Raiden DX (The Netherlands)", - "raidendxu", "Raiden DX (US)", - "raidenk", "Raiden (Korea)", - "raident", "Raiden (Taiwan)", - "raidenu", "Raiden (US set 1)", - "raidenua", "Raiden (US set 2)", - "raiders", "Raiders", - "raiders5", "Raiders5", - "raiders5t", "Raiders5 (Japan)", - "raidersr3", "Raiders (Rev.3)", - "raiga", "Raiga - Strato Fighter (Japan)", - "raimais", "Raimais (World)", - "raimaisj", "Raimais (Japan)", - "raimaisjo", "Raimais (Japan, first revision)", - "raimfire", "Ready...Aim...Fire!", - "raizpin", "Raizin Ping Pong", - "rally", "Rally", - "rallybik", "Rally Bike / Dash Yarou", - "rallys", "Rallys (bootleg of Spectar, set 1)", - "rallysa", "Rallys (bootleg of Spectar, set 2)", - "rallyx", "Rally X (32k Ver.?)", - "rallyxa", "Rally X", - "rallyxm", "Rally X (Midway)", - "rallyxmr", "Rally X (Model Racing bootleg)", - "rambo3", "Rambo III (Europe)", - "rambo3p", "Rambo III (Europe, Proto?)", - "rambo3u", "Rambo III (US)", - "rampage", "Rampage (Rev 3, 8/27/86)", - "rampage2", "Rampage (Rev 2, 8/4/86)", - "rampart", "Rampart (Trackball)", - "rampart2p", "Rampart (Joystick)", - "rampartj", "Rampart (Japan, Joystick)", - "ramtek3", "unknown Ramtek Game (Maybe Hockey?) [TTL]", - "rangrmsn", "Ranger Mission", - "raphero", "Rapid Hero", - "rapidfip", "Rapid Fire", - "rapidfir", "Rapid Fire v1.1 (Build 239)", - "rapidfira", "Rapid Fire v1.1 (Build 238)", - "rapidfire", "Rapid Fire v1.0 (Build 236)", - "rapidrvr", "Rapid River (RD3 Ver. C)", - "rapidrvrp", "Rapid River (prototype)", - "rapidrvrv2c", "Rapid River (RD2 Ver. C)", - "rasce", "Ra Sceptor (Russia)", - "rascot", "Royal Ascot (Japan, terminal?)", - "rastan", "Rastan (World Rev 1)", - "rastana", "Rastan (World)", - "rastanu", "Rastan (US Rev 1)", - "rastanua", "Rastan (US)", - "rastanub", "Rastan (US, Earlier code base)", - "rastsag2", "Rastan Saga 2 (Japan)", - "rastsaga", "Rastan Saga (Japan Rev 1)", - "rastsagaa", "Rastan Saga (Japan)", - "ratrc_l1", "Rat Race (L-1)", - "raven", "Raven", - "raveracj", "Rave Racer (Rev. RV1 Ver.B, Japan)", - "raveracja", "Rave Racer (Rev. RV1, Japan)", - "raveracw", "Rave Racer (Rev. RV2, World)", - "raycris", "Ray Crisis (V2.03J)", - "rayforce", "Ray Force (Ver 2.3A 1994/01/20)", - "rayforcej", "Ray Force (Ver 2.3J 1994/01/20)", - "raystorm", "Ray Storm (Ver 2.06A)", - "raystormj", "Ray Storm (Ver 2.05J)", - "raystormo", "Ray Storm (Ver 2.05O)", - "raystormu", "Ray Storm (Ver 2.05A)", - "razmataz", "Razzmatazz", - "rbff1", "Real Bout Fatal Fury / Real Bout Garou Densetsu (NGM-095)(NGH-095)", - "rbff1a", "Real Bout Fatal Fury / Real Bout Garou Densetsu (bug fix revision)", - "rbff2", "Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - the newcomers (NGM-2400)", - "rbff2h", "Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - the newcomers (NGH-2400)", - "rbff2k", "Real Bout Fatal Fury 2 - The Newcomers (Korean release)", - "rbffspec", "Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special", - "rbffspeck", "Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Korean release)", - "rbibb", "Vs. Atari R.B.I. Baseball (set 1)", - "rbibba", "Vs. Atari R.B.I. Baseball (set 2)", - "rbisland", "Rainbow Islands (new version)", - "rbislande", "Rainbow Islands (Extra)", - "rbislando", "Rainbow Islands (old version)", - "rblaster", "Road Blaster (Data East LD)", - "rbmk", "Real Battle Mahjong King", - "rbtapper", "Tapper (Root Beer)", - "rcasino", "Royal Casino (D-2608208A1-2)", - "rcasino1", "Royal Casino (D-2608208A1-1, Larger Board)", - "rcasinoo", "Royal Casino (D-2608208A1-1, Smaller Board)", - "rcdego", "RC De Go (V2.03J)", - "rcdino4", "unknown encrypted Royal Card (Dino4 HW)", - "rchase", "Rail Chase (World)", - "rchase2", "Rail Chase 2 (Revision A)", - "rchasej", "Rail Chase (Japan)", - "rcirulet", "Ruleta RCI (6-players, Spanish)", - "rclimb", "Rock Climber (040815 World)", - "rclimb_3", "Rock Climber (040827 World)", - "rclimb_3a", "Rock Climber (bootleg, 040827, backdoor)", - "rclimb_3b", "Rock Climber (bootleg, 040827, new service menu)", - "rclimb_3c", "Rock Climber (bootleg, 040827, VIDEO GAME-1 SK01)", - "rclimb_3d", "Rock Climber (bootleg, 040827, LOTTOGAME (I))", - "rclimb_3e", "Rock Climber (bootleg, 040827, LOTOS SK01)", - "rclimb_4", "Rock Climber (070322 Russia)", - "rclimb_5", "Rock Climber (070621 Russia)", - "rclimb_7", "Rock Climber (090716 Entertainment)", - "rcorsair", "Red Corsair", - "rctnew", "Roller Coaster Tycoon (ARM7 Sound Board)", - "rctycn", "Roller Coaster Tycoon (7.02)", - "rctycn_400", "Roller Coaster Tycoon (4.00)", - "rctycn_600", "Roller Coaster Tycoon (6.00)", - "rctycn_701", "Roller Coaster Tycoon (7.01)", - "rctycnf", "Roller Coaster Tycoon (7.02 France)", - "rctycnf_400", "Roller Coaster Tycoon (4.00 France)", - "rctycnf_600", "Roller Coaster Tycoon (6.00 France)", - "rctycnf_701", "Roller Coaster Tycoon (7.01 France)", - "rctycng", "Roller Coaster Tycoon (7.02 Germany)", - "rctycng_400", "Roller Coaster Tycoon (4.00 Germany)", - "rctycng_701", "Roller Coaster Tycoon (7.01 Germany)", - "rctycni", "Roller Coaster Tycoon (7.02 Italy)", - "rctycni_400", "Roller Coaster Tycoon (4.00 Italy)", - "rctycni_600", "Roller Coaster Tycoon (6.00 Italy)", - "rctycni_701", "Roller Coaster Tycoon (7.01 Italy)", - "rctycnl", "Roller Coaster Tycoon (7.02 Spain)", - "rctycnl_400", "Roller Coaster Tycoon (4.00 Spain)", - "rctycnl_600", "Roller Coaster Tycoon (6.00 Spain)", - "rctycnl_701", "Roller Coaster Tycoon (7.01 Spain)", - "rdaction", "Rad Action / NinjaKun Ashura no Shou", - "rdft", "Raiden Fighters (Japan set 1)", - "rdft2", "Raiden Fighters 2 - Operation Hell Dive (Germany)", - "rdft22kc", "Raiden Fighters 2 - Operation Hell Dive 2000 (China, SYS386I)", - "rdft2a", "Raiden Fighters 2 - Operation Hell Dive (Hong Kong)", - "rdft2a2", "Raiden Fighters 2 - Operation Hell Dive (Korea)", - "rdft2j", "Raiden Fighters 2 - Operation Hell Dive (Japan set 1)", - "rdft2j2", "Raiden Fighters 2 - Operation Hell Dive (Japan set 2)", - "rdft2t", "Raiden Fighters 2 - Operation Hell Dive (Taiwan)", - "rdft2u", "Raiden Fighters 2 - Operation Hell Dive (US)", - "rdft2us", "Raiden Fighters 2 - Operation Hell Dive (US, single board)", - "rdfta", "Raiden Fighters (Austria)", - "rdftadi", "Raiden Fighters (Korea)", - "rdftam", "Raiden Fighters (Hong Kong)", - "rdftau", "Raiden Fighters (Australia)", - "rdftit", "Raiden Fighters (Italy)", - "rdftj", "Raiden Fighters (Japan set 2)", - "rdfts", "Raiden Fighters (Taiwan, single board)", - "rdftu", "Raiden Fighters (US)", - "rdkng_l1", "Road Kings (L-1)", - "rdkng_l2", "Road Kings (L-2)", - "rdkng_l3", "Road Kings (L-3)", - "rdkng_l4", "Road Kings (L-4)", - "re800ea", "Ruleta RE-800 (earlier, no attract)", - "re800v1", "Ruleta RE-800 (v1.0)", - "re800v3", "Ruleta RE-800 (v3.0)", - "re900", "Ruleta RE-900", - "reactor", "Reactor", - "reaktor", "Reaktor (Track & Field conversion)", - "real", "Real", - "realbrk", "Billiard Academy Real Break (Europe)", - "realbrkj", "Billiard Academy Real Break (Japan)", - "realbrkk", "Billiard Academy Real Break (Korea)", - "realbrod", "The Real Broadway (9131-20-00 R0A)", - "realpunc", "Real Puncher", - "rebus", "Rebus", - "recalh", "Recalhorn (Ver 1.42J 1994/5/11) (Prototype)", - "record", "Record (Version 1)", - "recordbr", "Recordbreaker (World)", - "redalert", "Red Alert", - "redbaron", "Red Baron (Revised Hardware)", - "redbarona", "Red Baron", - "redclash", "Red Clash (set 1)", - "redclasha", "Red Clash (set 2)", - "redclashk", "Red Clash (Kaneko)", - "redearth", "Red Earth (Euro 961121)", - "redearthr1", "Red Earth (Euro 961023)", - "redfoxwp2", "Red Fox War Planes II (China, set 1)", - "redfoxwp2a", "Red Fox War Planes II (China, set 2)", - "redhawk", "Red Hawk (US)", - "redhawkb", "Red Hawk (bootleg)", - "redhawke", "Red Hawk (Excellent Co., Ltd)", - "redhawki", "Red Hawk (Italy)", - "redlin2p", "Redline Racer (2 players)", - "redrobin", "Red Robin", - "redufo", "Defend the Terra Attack on the Red UFO", - "redufob", "Defend the Terra Attack on the Red UFO (bootleg)", - "reelemin", "Reel 'Em In (Russia)", - "reelfun", "Reel Fun (Version 7.03)", - "reelfun1", "Reel Fun (Version 7.01)", - "reelquak", "Reel'N Quake! (Ver. 1.05)", - "reelrock", "Reelin-n-Rockin (0100779V, Local)", - "regulus", "Regulus (315-5033, Rev A.)", - "reguluso", "Regulus (315-5033)", - "regulusu", "Regulus (not encrypted)", - "reikaids", "Reikai Doushi (Japan)", - "relief", "Relief Pitcher (set 1, 07 Jun 1992 / 28 May 1992)", - "relief2", "Relief Pitcher (set 2, 26 Apr 1992 / 08 Apr 1992)", - "relief3", "Relief Pitcher (set 3, 10 Apr 1992 / 08 Apr 1992)", - "renaiclb", "Mahjong Ren-ai Club (Japan)", - "renegade", "Renegade (US)", - "renju", "Renju Kizoku", - "repulse", "Repulse", - "rescraid", "Rescue Raider (5/11/87) (non-cartridge)", - "rescraida", "Rescue Raider (stand-alone)", - "rescu911", "Rescue 911 (rev.1)", - "rescue", "Rescue", - "rescueb", "Rescue (bootleg)", - "resdnt", "Resident (040415 World)", - "resdnt_2", "Resident (040513 World)", - "resdnt_2a", "Resident (bootleg, 040513, backdoor)", - "resdnt_2b", "Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 1)", - "resdnt_2c", "Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 2)", - "resdnt_2d", "Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 3)", - "resdnt_2e", "Resident (bootleg, 040513, LOTTOGAME (I))", - "resdnt_2f", "Resident (bootleg, 040513, LOTO PROGRAM V-RS2)", - "resdnt_2g", "Resident (bootleg, 040513, LOTOS SE01)", - "resdnt_3", "Resident (070222 Russia)", - "resdnt_6", "Resident (100311 World)", - "resdnt_8", "Resident (100311 Entertainment)", - "resdnt_9", "Resident (100316 Russia)", - "retofinv", "Return of the Invaders", - "retofinv1", "Return of the Invaders (bootleg set 1)", - "retofinv2", "Return of the Invaders (bootleg set 2)", - "revenger", "Revenger", - "revx", "Revolution X (Rev. 1.0 6/16/94)", - "rezon", "Rezon", - "rezont", "Rezon (Taito)", - "rf2", "Konami RF2 - Red Fighter", - "rfjet", "Raiden Fighters Jet (Germany)", - "rfjet2kc", "Raiden Fighters Jet 2000 (China, SYS386I)", - "rfjeta", "Raiden Fighters Jet (Korea)", - "rfjetj", "Raiden Fighters Jet (Japan)", - "rfjets", "Raiden Fighters Jet (US, single board)", - "rfjetsa", "Raiden Fighters Jet (US, single board, test version?)", - "rfjett", "Raiden Fighters Jet (Taiwan)", - "rfjetu", "Raiden Fighters Jet (US)", - "rflshdlx", "Royal Flush Deluxe", - "rfmpb", "Pinball 2000: Revenge From Mars (rev. 1)", - "rfmpbr2", "Pinball 2000: Revenge From Mars (rev. 2)", - "rgum", "Royal Gum (Italy)", - "ribbit", "Ribbit!", - "ridgera2", "Ridge Racer 2 (Rev. RRS2, World)", - "ridgera2j", "Ridge Racer 2 (Rev. RRS1 Ver.B, Japan)", - "ridgera2ja", "Ridge Racer 2 (Rev. RRS1, Japan)", - "ridgerac", "Ridge Racer (Rev. RR3, World)", - "ridgerac3", "Ridge Racer (Rev. RR2 Ver.B, World, 3-screen?)", - "ridgeracb", "Ridge Racer (Rev. RR2, World)", - "ridgeracf", "Ridge Racer Full Scale (World)", - "ridgeracj", "Ridge Racer (Rev. RR1, Japan)", - "ridhero", "Riding Hero (NGM-006)(NGH-006)", - "ridheroh", "Riding Hero (set 2)", - "ridingf", "Riding Fight (Ver 1.0O)", - "ridingfj", "Riding Fight (Ver 1.0J)", - "ridingfu", "Riding Fight (Ver 1.0A)", - "ridleofp", "Riddle of Pythagoras (Japan)", - "rimrockn", "Rim Rockin' Basketball (V2.2)", - "rimrockn12", "Rim Rockin' Basketball (V1.2)", - "rimrockn16", "Rim Rockin' Basketball (V1.6)", - "rimrockn20", "Rim Rockin' Basketball (V2.0)", - "ringdest", "Ring of Destruction: Slammasters II (Euro 940902)", - "ringdesta", "Ring of Destruction: Slammasters II (Asia 940831)", - "ringdstd", "Ring of Destruction: Slammasters II (Euro 940902 Phoenix Edition) (bootleg)", - "ringfgt", "Ring Fighter (set 1)", - "ringfgt2", "Ring Fighter (set 2)", - "ringking", "Ring King (US set 1)", - "ringking2", "Ring King (US set 2)", - "ringking3", "Ring King (US set 3)", - "ringkingw", "Ring King (US, Wood Place Inc.)", - "ringohja", "Ring no Ohja (Japan 2 Players ver. N)", - "ringout", "Ring Out 4x4", - "ringrage", "Ring Rage (Ver 2.3O 1992/08/09)", - "ringragej", "Ring Rage (Ver 2.3J 1992/08/09)", - "ringrageu", "Ring Rage (Ver 2.3A 1992/08/09)", - "rio", "Rio", - "riot", "Riot", - "riotcity", "Riot City (Japan)", - "rip300", "Ripley's Believe It or Not! (3.00)", - "rip301", "Ripley's Believe It or Not! (3.01)", - "rip302", "Ripley's Believe It or Not! (3.02)", - "rip310", "Ripley's Believe It or Not! (3.10)", - "ripcord", "Rip Cord", - "ripf300", "Ripley's Believe It or Not! (3.00 France)", - "ripf301", "Ripley's Believe It or Not! (3.01 France)", - "ripf302", "Ripley's Believe It or Not! (3.02 France)", - "ripf310", "Ripley's Believe It or Not! (3.10 France)", - "ripg300", "Ripley's Believe It or Not! (3.00 Germany)", - "ripg301", "Ripley's Believe It or Not! (3.01 Germany)", - "ripg302", "Ripley's Believe It or Not! (3.02 Germany)", - "ripg310", "Ripley's Believe It or Not! (3.10 Germany)", - "ripi300", "Ripley's Believe It or Not! (3.00 Italy)", - "ripi301", "Ripley's Believe It or Not! (3.01 Italy)", - "ripi302", "Ripley's Believe It or Not! (3.02 Italy)", - "ripi310", "Ripley's Believe It or Not! (3.10 Italy)", - "ripl300", "Ripley's Believe It or Not! (3.00 Spain)", - "ripl301", "Ripley's Believe It or Not! (3.01 Spain)", - "ripl302", "Ripley's Believe It or Not! (3.02 Spain)", - "ripl310", "Ripley's Believe It or Not! (3.10 Spain)", - "ripleys", "Ripley's Believe It or Not! (3.20)", - "ripleysf", "Ripley's Believe It or Not! (3.20 France)", - "ripleysg", "Ripley's Believe It or Not! (3.20 Germany)", - "ripleysi", "Ripley's Believe It or Not! (3.20 Italy)", - "ripleysl", "Ripley's Believe It or Not! (3.20 Spain)", - "ripoff", "Rip Off", - "ripribit", "Ripper Ribbit (Version 2.8.4)", - "riskchal", "Risky Challenge", - "riviera", "Riviera Hi-Score (2131-08, U5-4A)", - "rivieraa", "Riviera Hi-Score (2131-08, U5-4)", - "rivierab", "Riviera Hi-Score (2131-08, U5-2D)", - "rjammer", "Roller Jammer", - "rltennis", "Reality Tennis", - "rmancp2j", "Rockman: The Power Battle (CPS2, Japan 950922)", - "rmgoldyh", "Real Mahjong Gold Yumehai / Super Real Mahjong GOLD part.2 [BET] (Japan)", - "rmhaihai", "Real Mahjong Haihai (Japan)", - "rmhaihib", "Real Mahjong Haihai [BET] (Japan)", - "rmhaijin", "Real Mahjong Haihai Jinji Idou Hen (Japan)", - "rmhaisei", "Real Mahjong Haihai Seichouhen (Japan)", - "rmpgwt", "Rampage: World Tour (rev 1.3)", - "rmpgwt11", "Rampage: World Tour (rev 1.1)", - "roadblst", "Road Blasters (upright, rev 4)", - "roadblst1", "Road Blasters (upright, rev 1)", - "roadblst2", "Road Blasters (upright, rev 2)", - "roadblst3", "Road Blasters (upright, rev 3)", - "roadblstc", "Road Blasters (cockpit, rev 2)", - "roadblstc1", "Road Blasters (cockpit, rev 1)", - "roadblstcg", "Road Blasters (cockpit, German, rev 1)", - "roadblstg", "Road Blasters (upright, German, rev 3)", - "roadblstg1", "Road Blasters (upright, German, rev 1)", - "roadblstg2", "Road Blasters (upright, German, rev 2)", - "roadburn", "Road Burners", - "roadedge", "Roads Edge / Round Trip (rev.B)", - "roadf", "Road Fighter (set 1)", - "roadf2", "Road Fighter (set 2)", - "roadriot", "Road Riot 4WD (set 1, 13 Nov 1991)", - "roadrioto", "Road Riot 4WD (set 2, 04 Jun 1991)", - "roadrunm", "Road Runner (Midway)", - "roadrunn", "Road Runner (rev 2)", - "roadrunn1", "Road Runner (rev 1)", - "roadrunn2", "Road Runner (rev 1+)", - "roadrunr", "Road Runner", - "robadv", "Robin's Adventure (Version 1.7E Dual)", - "robadv2", "Robin's Adventure 2 (Version 1.7E Dual)", - "robadv2c1", "Robin's Adventure 2 (Version 1.7R, set 1)", - "robadv2c2", "Robin's Adventure 2 (Version 1.7LT, set 1)", - "robadv2c3", "Robin's Adventure 2 (Version 1.7SH, set 1)", - "robadv2d1", "Robin's Adventure 2 (Version 1.7R, set 2)", - "robadv2d2", "Robin's Adventure 2 (Version 1.7LT, set 2)", - "robadv2d3", "Robin's Adventure 2 (Version 1.7SH, set 2)", - "robadv2o", "Robin's Adventure 2 (Version 1.5SH)", - "robadv2o2", "Robin's Adventure 2 (Version 1.5)", - "robadv2v1", "Robin's Adventure 2 (Version 1.7R Dual)", - "robadv2v2", "Robin's Adventure 2 (Version 1.7LT Dual)", - "robadv2v3", "Robin's Adventure 2 (Version 1.7SH Dual)", - "robadvc1", "Robin's Adventure (Version 1.7R, set 1)", - "robadvd1", "Robin's Adventure (Version 1.7R, set 2)", - "robadvo", "Robin's Adventure (Version 1.5)", - "robadvv1", "Robin's Adventure (Version 1.7R Dual)", - "robby", "The Adventures of Robby Roto!", - "robo_a34", "Robocop (3.4)", - "roboarmy", "Robo Army", - "robocop", "Robocop (World revision 4)", - "robocop2", "Robocop 2 (Euro/Asia v0.10)", - "robocop2j", "Robocop 2 (Japan v0.11)", - "robocop2u", "Robocop 2 (US v0.05)", - "robocopb", "Robocop (World bootleg)", - "robocopj", "Robocop (Japan)", - "robocopu", "Robocop (US revision 1)", - "robocopu0", "Robocop (US revision 0)", - "robocopw", "Robocop (World revision 3)", - "robokid", "Atomic Robo-kid", - "robokidj", "Atomic Robo-kid (Japan, set 1)", - "robokidj2", "Atomic Robo-kid (Japan, set 2)", - "robot", "Robot (Zaccaria)", - "robotbwl", "Robot Bowl", - "robotf", "Robot (Zaccaria, French speech)", - "robotg", "Robot (Zaccaria, German speech)", - "roboti", "Robot (Zaccaria, Italian speech)", - "robotron", "Robotron: 2084 (Solid Blue label)", - "robotronyo", "Robotron: 2084 (Yellow/Orange label)", - "robowars", "Robo-War", - "robowres", "Robo Wres 2001", - "robowresb", "Robo Wres 2001 (bootleg)", - "rock", "Rock", - "rock2500", "Rock 2500", - "rock_enc", "Rock Encore", - "rockclim", "Rock Climber", - "rockduck", "Rock Duck (prototype?)", - "rockman2j", "Rockman 2: The Power Fighters (Japan 960708)", - "rockmanj", "Rockman: The Power Battle (CPS1, Japan 950922)", - "rockn", "Rock'n Tread (Japan)", - "rockn2", "Rock'n Tread 2 (Japan)", - "rockn3", "Rock'n 3 (Japan)", - "rockn4", "Rock'n 4 (Japan, prototype)", - "rockna", "Rock'n Tread (Japan, alternate)", - "rocknms", "Rock'n MegaSession (Japan)", - "rockrage", "Rock'n Rage (World)", - "rockragea", "Rock'n Rage (prototype?)", - "rockragej", "Koi no Hotrock (Japan)", - "rocktris", "Rock Tris", - "rocktrv2", "MTV Rock-N-Roll Trivia (Part 2)", - "rocky", "Rocky", - "rocnrope", "Roc'n Rope", - "rocnropek", "Roc'n Rope (Kosuka)", - "rodland", "Rod-Land (World)", - "rodlandj", "Rod-Land (Japan)", - "rodlandjb", "Rod-Land (Japan bootleg)", - "rohga", "Rohga Armor Force (Asia/Europe v5.0)", - "rohga1", "Rohga Armor Force (Asia/Europe v3.0 set 1)", - "rohga2", "Rohga Armor Force (Asia/Europe v3.0 set 2)", - "rohgah", "Rohga Armor Force (Hong Kong v3.0)", - "rohgau", "Rohga Armor Force (US v1.0)", - "roishtar", "The Return of Ishtar", - "roldfrog", "The Return of Lady Frog (set 1)", - "roldfroga", "The Return of Lady Frog (set 2)", - "roldisco", "Roller Disco", - "rollace", "Roller Aces (set 1)", - "rollace2", "Roller Aces (set 2)", - "rollerg", "Rollergames (US)", - "rollergj", "Rollergames (Japan)", - "rollfr_2", "Roll Fruit (040318)", - "rollfr_3", "Roll Fruit (080327)", - "rollfr_4", "Roll Fruit (080331)", - "rollingc", "Rolling Crash / Moon Base", - "rollr_e1", "Rollergames (PU-1)", - "rollr_ex", "Rollergames (EXPERIMENTAL)", - "rollr_g3", "Rollergames (LG-3) Germany", - "rollr_l2", "Rollergames (L-2)", - "rollr_l3", "Rollergames (LU-3) Europe", - "rollr_p2", "Rollergames (PA-2 / PA-1 Sound)", - "rollston", "Rolling Stones", - "romanl", "Roman Legions (Konami Endeavour)", - "rompers", "Rompers (Japan, new version (Rev B))", - "romperso", "Rompers (Japan, old version)", - "rongrong", "Puzzle Game Rong Rong (Europe)", - "rongrongg", "Puzzle Game Rong Rong (Germany)", - "rongrongj", "Puzzle Game Rong Rong (Japan)", - "ronjan", "Ron Jan (Super)", - "ropeman", "Ropeman (bootleg of Roc'n Rope)", - "rotaryf", "Rotary Fighter", - "rotation", "Rotation VIII", - "rotd", "Rage of the Dragons (NGM-264?)", - "rotr", "Rise of the Robots (prototype)", - "roughrac", "Rough Racer (Japan, Floppy Based, FD1094 317-0058-06b)", - "rougien", "Rougien", - "roul", "Super Lucky Roulette", - "roundup", "Round-Up", - "roundup5", "Round Up 5 - Super Delta Force", - "route16", "Route 16 (set 1)", - "route16a", "Route 16 (set 2)", - "route16b", "Route 16 (bootleg)", - "routex", "Route X (bootleg)", - "royal", "Royal (Pool 10 hack)", - "royalcdfr", "Royal Card (French)", - "royalcrd", "Royal Card (Austrian, set 1)", - "royalcrda", "Royal Card (Austrian, set 2)", - "royalcrdb", "Royal Card (Austrian/Polish, set 3)", - "royalcrdc", "Royal Card (Austrian, set 4)", - "royalcrdd", "Royal Card (Austrian, set 5)", - "royalcrde", "Royal Card (Austrian, set 6)", - "royalcrdf", "Royal Card (Slovak, encrypted)", - "royalcrdg", "Royal Card (Austrian, set 7, CMC C1030 HW)", - "royalcrdp", "Royal Card v2.0 Professional", - "royalcrdt", "Royal Card (TAB original)", - "royale", "Royale (set 1)", - "royalea", "Royale (set 2)", - "royalmah", "Royal Mahjong (Falcon bootleg, v1.01)", - "royalmj", "Royal Mahjong (Japan, v1.13)", - "royalngt", "Royal Night [BET] (Japan 840220 RN 2-00)", - "royalqn", "Royal Queen [BET] (Japan 841010 RQ 0-07)", - "royclark", "Roy Clark - The Entertainer", - "roylcrdn", "Royal Card (Nichibutsu)", - "roypok96", "Royal Poker '96 (set 1)", - "roypok96a", "Royal Poker '96 (set 2)", - "roypok96b", "Royal Poker '96 (set 3)", - "rpatrol", "River Patrol (Orca)", - "rpatrolb", "River Patrol (bootleg)", - "rpunch", "Rabbit Punch (US)", - "rranger", "Rough Ranger (v2.0)", - "rrangerb", "Rough Ranger (v2.0, bootleg)", - "rrreveng", "Road Riot's Revenge (prototype, Sep 06, 1994)", - "rrrevenga", "Road Riot's Revenge (prototype, Jan 27, 1994, set 1)", - "rrrevengb", "Road Riot's Revenge (prototype, Jan 27, 1994, set 2)", - "rrvac", "Ridge Racer V Arcade Battle (RRV3 Ver. A)", - "rs_l6", "Red and Ted's Road Show (L-6)", - "rs_la4", "Red and Ted's Road Show (La-4)", - "rs_la5", "Red and Ted's Road Show (La-5)", - "rs_lx2", "Red and Ted's Road Show (Lx-2)", - "rs_lx3", "Red and Ted's Road Show (Lx-3)", - "rs_lx4", "Red and Ted's Road Show (Lx-4)", - "rs_lx5", "Red and Ted's Road Show (Lx-5)", - "rsgun", "Radiant Silvergun (JUET 980523 V1.000)", - "rshark", "R-Shark", - "rthun2", "Rolling Thunder 2", - "rthun2j", "Rolling Thunder 2 (Japan)", - "rthunder", "Rolling Thunder (rev 3)", - "rthunder1", "Rolling Thunder (rev 1)", - "rthunder2", "Rolling Thunder (rev 2)", - "rtriv", "Romar Triv", - "rtype", "R-Type (World)", - "rtype2", "R-Type II", - "rtype2j", "R-Type II (Japan)", - "rtype2jc", "R-Type II (Japan, revision C)", - "rtypeb", "R-Type (World bootleg)", - "rtypej", "R-Type (Japan)", - "rtypejp", "R-Type (Japan prototype)", - "rtypeleo", "R-Type Leo (World)", - "rtypeleoj", "R-Type Leo (Japan)", - "rtypeu", "R-Type (US)", - "rugby", "Rugby? (four roses hardware)", - "rugrats", "Rug Rats", - "rumba", "Rumba Lumber", - "rumblef", "The Rumble Fish", - "rumblef2", "The Rumble Fish 2", - "runark", "Runark (Japan)", - "runaway", "Runaway (prototype)", - "rundeep", "Run Deep", - "rungun", "Run and Gun (ver EAA 1993 10.8)", - "rungun2", "Run and Gun 2 (ver UAA)", - "runguna", "Run and Gun (ver EAA 1993 10.4)", - "rungunu", "Run and Gun (ver UAB 1993 10.12)", - "rungunua", "Run and Gun (ver UBA 1993 10.8)", - "rushatck", "Rush'n Attack (US)", - "rushcrsh", "Rush & Crash (Japan)", - "rushhero", "Rushing Heroes (ver UAB)", - "rvrbt_l3", "Riverboat Gambler (L-3)", - "rvschool", "Rival Schools: United By Fate (Euro 971117)", - "rvschoola", "Rival Schools: United By Fate (Asia 971117)", - "rvschoolu", "Rival Schools: United By Fate (USA 971117)", - "rygar", "Rygar (US set 1)", - "rygar2", "Rygar (US set 2)", - "rygar3", "Rygar (US set 3 Old Version)", - "rygarj", "Argus no Senshi (Japan)", - "ryorioh", "Gourmet Battle Quiz Ryohrioh CooKing (Japan)", - "ryouran", "VS Mahjong Otome Ryouran", - "ryujin", "Ryu Jin (Japan)", - "ryukendn", "Ninja Ryukenden (Japan, set 1)", - "ryukendna", "Ninja Ryukenden (Japan, set 2)", - "ryukobou", "Mahjong Ryukobou (Japan, V030J)", - "ryukyu", "RyuKyu (Japan, FD1094 317-5023)", - "ryuuha", "Ryuuha [BET] (Japan 871027)", - "s1945", "Strikers 1945 (World)", - "s1945a", "Strikers 1945 (Japan / World)", - "s1945bl", "Strikers 1945 (Hong Kong, bootleg)", - "s1945ii", "Strikers 1945 II", - "s1945iii", "Strikers 1945 III (World) / Strikers 1999 (Japan)", - "s1945j", "Strikers 1945 (Japan)", - "s1945jn", "Strikers 1945 (Japan, unprotected)", - "s1945k", "Strikers 1945 (Korea)", - "s1945p", "Strikers 1945 Plus", - "s80tst", "System 80 Test", - "sabotenb", "Saboten Bombers (set 1)", - "sabotenba", "Saboten Bombers (set 2)", - "sadari", "Sadari", - "safari", "Safari (set 1)", - "safaria", "Safari (set 2, bootleg?)", - "safarir", "Safari Rally (World)", - "safarirj", "Safari Rally (Japan)", - "safemon", "Safe Money (Konami Endeavour)", - "sagaia", "Sagaia (dual screen) (World)", - "sailormn", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Europe)", - "sailormnh", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Hong Kong)", - "sailormnj", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Japan)", - "sailormnk", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Korea)", - "sailormno", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Europe)", - "sailormnoh", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Hong Kong)", - "sailormnoj", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Japan)", - "sailormnok", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Korea)", - "sailormnot", "Pretty Soldier Sailor Moon (Ver. 95/03/22, Taiwan)", - "sailormnou", "Pretty Soldier Sailor Moon (Ver. 95/03/22, USA)", - "sailormnt", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, Taiwan)", - "sailormnu", "Pretty Soldier Sailor Moon (Ver. 95/03/22B, USA)", - "sailorwa", "Mahjong Sailor Wars (Japan set 2)", - "sailorwr", "Mahjong Sailor Wars-R [BET] (Japan)", - "sailorws", "Mahjong Sailor Wars (Japan set 1)", - "saiyugou", "Sai Yu Gou Ma Roku (Japan)", - "saiyugoub1", "Sai Yu Gou Ma Roku (Japan bootleg 1)", - "saiyugoub2", "Sai Yu Gou Ma Roku (Japan bootleg 2)", - "saiyukip", "Slot Poker Saiyuki (Japan)", - "saklove", "Ying Hua Lian 2.0 (China, Ver. 1.02)", - "salamand", "Salamander (version D)", - "salamandj", "Salamander (version J)", - "salarymc", "Salary Man Champ (GCA18 VER. JAA)", - "salmankt", "Salary Man Kintarou", - "salmndr2", "Salamander 2 (ver JAA)", - "salmndr2a", "Salamander 2 (ver AAB)", - "saloon", "Saloon (French, encrypted)", - "samba", "Samba De Amigo (JPN) (Rev B)", - "samba2k", "Samba de Amigo ver. 2000", - "sambap", "Samba De Amigo (prototype)", - "samesame", "Same! Same! Same! (1P set)", - "samesame2", "Same! Same! Same! (2P set)", - "sammymdl", "Sammy Medal Game System Bios", - "sams64", "Samurai Shodown 64 / Samurai Spirits 64", - "sams64_2", "Samurai Shodown: Warrior's Rage / Samurai Spirits 2: Asura Zanmaden", - "samsh5sp", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-2720)", - "samsh5sph", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (2nd release, less censored)", - "samsh5spho", "Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720) (1st release, censored)", - "samsho", "Samurai Shodown / Samurai Spirits (NGM-045)", - "samsho2", "Samurai Shodown II / Shin Samurai Spirits - Haohmaru jigokuhen (NGM-063)(NGH-063)", - "samsho2k", "Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II)", - "samsho3", "Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGM-087)", - "samsho3h", "Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGH-087)", - "samsho4", "Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (NGM-222)(NGH-222)", - "samsho4k", "Pae Wang Jeon Seol / Legend of a Warrior (Korean censored Samurai Shodown IV)", - "samsho5", "Samurai Shodown V / Samurai Spirits Zero (NGM-2700)", - "samsho5b", "Samurai Shodown V / Samurai Spirits Zero (bootleg)", - "samsho5h", "Samurai Shodown V / Samurai Spirits Zero (NGH-2700)", - "samshoh", "Samurai Shodown / Samurai Spirits (NGH-045)", - "samspsen", "Samurai Spirits Sen (v1.00)", - "samsptk", "Samurai Spirits Tenkaichi Kenkakuden", - "samurai", "Samurai", - "samuraia", "Samurai Aces (World)", - "sandor", "Puzzle & Action: Sando-R (J 951114 V1.000)", - "sandscrp", "Sand Scorpion", - "sandscrpa", "Sand Scorpion (Earlier)", - "sandscrpb", "Sand Scorpion (Chinese Title Screen, Revised Hardware)", - "sanjeon", "DaeJeon! SanJeon SuJeon (AJTUE 990412 V1.000)", - "santam", "Santa Maria (Russia) (Atronic)", - "sarge", "Sarge", - "sarukani", "Saru-Kani-Hamu-Zou (Japan)", - "sasissu", "Taisen Tanto-R Sashissu!! (J 980216 V1.000)", - "sasuke", "Sasuke vs. Commander", - "satansat", "Satan of Saturn (set 1)", - "satansata", "Satan of Saturn (set 2)", - "satansatind", "Satan of Saturn (Inder S.A., bootleg)", - "saturn2", "Saturn 2", - "saturnzi", "Saturn", - "sauro", "Sauro", - "saurop", "Sauro (Philko license)", - "savagere", "Savage Reign / Fu'un Mokushiroku - kakutou sousei", - "savanna", "Savanna (Jungler bootleg)", - "savgbees", "Savage Bees", - "savquest", "Savage Quest", - "sb2003", "Super Bubble 2003 (World, Ver 1.0)", - "sb2003a", "Super Bubble 2003 (Asia, Ver 1.0)", - "sbagman", "Super Bagman", - "sbagmans", "Super Bagman (Stern Electronics)", - "sbasebal", "Super Champion Baseball (US)", - "sbasketb", "Super Basketball (version I, encrypted)", - "sbaskete", "Super Basketball (version E, encrypted)", - "sbasketg", "Super Basketball (version G, encrypted)", - "sbasketh", "Super Basketball (version H, unprotected)", - "sbbros", "Super Buster Bros. (USA 901001)", - "sbdk", "Super Bike (DK conversion)", - "sbishi", "Super Bishi Bashi Championship (ver JAA, 2 Players)", - "sbishik", "Super Bishi Bashi Championship (ver KAA, 3 Players)", - "sblast2b", "Sonic Blast Man 2 Special Turbo (SNES bootleg)", - "sblazerp", "Star Blazer (Pioneer LDV1000)", - "sbm", "Sonic Blast Man (Japan)", - "sboblboa", "Super Bobble Bobble (set 1)", - "sboblbob", "Super Bobble Bobble (set 2)", - "sbomber", "Space Bomber (ver. B)", - "sbombera", "Space Bomber", - "sbowling", "Strike Bowling", - "sbp", "Super Bubble Pop", - "sbrkout", "Super Breakout (rev 04)", - "sbrkout3", "Super Breakout (rev 03)", - "sbsgomo", "Space Battle Ship Gomorrah", - "sbugger", "Space Bugger (set 1)", - "sbuggera", "Space Bugger (set 2)", - "sburners", "Street Burners [TTL]", - "sc1actv8", "Active 8 (Dutch) (Bellfruit) (Scorpion 1)", - "sc1armad", "Armada (Dutch) (Bellfruit) (Scorpion 1)", - "sc1barcd", "Barcode (Bellfruit) (set 1) (Scorpion 1)", - "sc1barcda", "Barcode (Bellfruit) (set 2) (Scorpion 1)", - "sc1bartk", "Bar Trek (Bellfruit) (Scorpion 1)", - "sc1bigmt", "The Big Match (Dutch) (Bellfruit) (Scorpion 1)", - "sc1boncl", "Bonanza Club (unknown) (Scorpion 1)", - "sc1btbc", "Beat The Bank Club (unknown) (Scorpion 1?)", - "sc1btclk", "Beat The Clock (Mdm) (set 1) (Scorpion 2/3?)", - "sc1btclka", "Beat The Clock (Mdm) (set 2) (Scorpion 2/3?)", - "sc1btclkb", "Beat The Clock (Mdm) (set 3) (Scorpion 2/3?)", - "sc1calyp", "Calypso (Dutch) (Bellfruit) (Scorpion 1)", - "sc1carro", "Carrousel (Dutch) (Bellfruit) (Scorpion 1)", - "sc1ccoin", "Cash Coin (Dutch) (Bellfruit) (Scorpion 1)", - "sc1ccroc", "Crazy Crocs (Mdm) (set 1) (Scorpion 2/3?)", - "sc1ccroca", "Crazy Crocs (Mdm) (set 2) (Scorpion 2/3?)", - "sc1ccrocb", "Crazy Crocs (Mdm) (set 3) (Scorpion 2/3?)", - "sc1ccrocc", "Crazy Crocs (Mdm) (set 4) (Scorpion 2/3?)", - "sc1cdm", "Club Diamond (Crystal) (set 1) (Scorpion 1)", - "sc1cdmp", "Club Diamond (Crystal) (set 1, Protocol) (Scorpion 1)", - "sc1cexpd", "Cash Explosion (Dutch) (Bellfruit) (Scorpion 1)", - "sc1cexpl", "Cash Explosion (Bellfruit) (set 1) (Scorpion 1)", - "sc1cexpla", "Cash Explosion (Bellfruit) (set 2) (Scorpion 1)", - "sc1cexplb", "Cash Explosion (Bellfruit) (set 3) (Scorpion 1)", - "sc1chain", "Chain Reaction (Bellfruit) (set 1) (Scorpion 1)", - "sc1chainp", "Chain Reaction (Bellfruit) (set 1, Protocol) (Scorpion 1)", - "sc1china", "China Town Club (Bellfruit) (set 2) (Scorpion 1)", - "sc1chinaa", "China Town Club (Bellfruit) (set 1) (Scorpion 1)", - "sc1chinaap", "China Town Club (Bellfruit) (set 1, Protocol) (Scorpion 1)", - "sc1chinab", "China Town Club (Bellfruit) (set 3) (Scorpion 1)", - "sc1chinabp", "China Town Club (Bellfruit) (set 3, Protocol) (Scorpion 1)", - "sc1chinap", "China Town Club (Bellfruit) (set 2, Protocol) (Scorpion 1)", - "sc1chqfl", "Chequered Flag (Global)", - "sc1cl2k", "Club 2000 (Dutch) (Bellfruit) (Scorpion 1)", - "sc1cl2k1", "Club 2001 (Dutch (Bellfruit) (Scorpion 1)", - "sc1cl65", "Club 65 Special (Bellfruit) (set 1) (Scorpion 1)", - "sc1cl65a", "Club 65 Special (Bellfruit) (set 5) (Scorpion 1)", - "sc1cl65ap", "Club 65 Special (Bellfruit) (set 5, Protocol) (Scorpion 1)", - "sc1cl65b", "Club 65 Special (Bellfruit) (set 4) (Scorpion 1)", - "sc1cl65bp", "Club 65 Special (Bellfruit) (set 4, Protocol) (Scorpion 1)", - "sc1cl65c", "Club 65 Special (Bellfruit) (set 3) (Scorpion 1)", - "sc1cl65cp", "Club 65 Special (Bellfruit) (set 3, Protocol) (Scorpion 1)", - "sc1cl65d", "Club 65 Special (Bellfruit) (set 2) (Scorpion 1)", - "sc1cl65dp", "Club 65 Special (Bellfruit) (set 2, Protocol) (Scorpion 1)", - "sc1class", "Classic (Dutch) (Bellfruit) (Scorpion 1)", - "sc1clatt", "Club Attraction (UK, Game Card 39-370-196)", - "sc1clatta", "Club Attraction (set 2)", - "sc1clb3", "Club 3000 (Dutch) (Bellfruit) (Scorpion 1)", - "sc1clbdm", "Club Diamond (Dutch) (Bellfruit) (Scorpion 1)", - "sc1clbdy", "Club Dynamite (Global) (set 1)", - "sc1clbdya", "Club Dynamite (Global) (set 2)", - "sc1clbrn", "Club Runner (Dutch) (unknown) (Scorpion 1)", - "sc1clbsp", "Club Spinner (Dutch) (unknown) (Scorpion 1)", - "sc1clbtm", "Club Temptation (Bellfruit) (set 1) (Scorpion 1)", - "sc1clbtma", "Club Temptation (Bellfruit) (set 2) (Scorpion 1)", - "sc1clbw", "Club Wise (Bellfruit) (set 2) (Scorpion 1)", - "sc1clbwa", "Club Wise (Bellfruit) (set 1) (Scorpion 1)", - "sc1clbxp", "Club Explosion (Bellfruit) (Scorpion 1) (set 1)", - "sc1clbxpa", "Club Explosion (Bellfruit) (Scorpion 1) (set 2)", - "sc1clins", "Cash Lines (Bellfruit) (Scorpion 1) (set 1)", - "sc1clinsa", "Cash Lines (Bellfruit) (Scorpion 1) (set 2)", - "sc1clinsb", "Cash Lines (Bellfruit) (Scorpion 1) (set 3)", - "sc1clinsc", "Cash Lines (Bellfruit) (Scorpion 1) (set 4)", - "sc1clinsd", "Cash Lines (Bellfruit) (Scorpion 1) (set 5)", - "sc1clinse", "Cash Lines (Bellfruit) (Scorpion 1) (set 6)", - "sc1clown", "Clown Around (Dutch) (Bellfruit) (Scorpion 1)", - "sc1copdd", "Cops 'n' Robbers Deluxe (Dutch) (Bellfruit) (Scorpion 1)", - "sc1copdx", "Cops 'n' Robbers (Bellfruit) (set 3) (Scorpion 1)", - "sc1cops", "Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 1)", - "sc1copsa", "Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 1)", - "sc1count", "Count Cash Club (Bellfruit) (set 2) (Scorpion 1)", - "sc1counta", "Count Cash Club (Bellfruit) (set 1) (Scorpion 1)", - "sc1countap", "Count Cash Club (Bellfruit) (set 1, Protocol) (Scorpion 1)", - "sc1countp", "Count Cash Club (Bellfruit) (set 2, Protocol) (Scorpion 1)", - "sc1crocr", "Croc And Roll (Mdm) (Scorpion 2/3?)", - "sc1crzyc", "Crazy Cash (Global) (set 1)", - "sc1crzyca", "Crazy Cash (Global) (set 2)", - "sc1cscl", "Cash Classic (Global) (set 1)", - "sc1cscla", "Cash Classic (Global) (set 2)", - "sc1cshat", "Cash Attraction (Bellfruit) (set 5, Protocol) (Scorpion 1)", - "sc1cshata", "Cash Attraction (Bellfruit) (set 1) (Scorpion 1)", - "sc1cshatb", "Cash Attraction (Bellfruit) (set 5) (Scorpion 1)", - "sc1cshatc", "Cash Attraction (Bellfruit) (set 2) (Scorpion 1)", - "sc1cshatf", "Cash Attraction (Bellfruit) (set 2, Protocol) (Scorpion 1)", - "sc1cshatg", "Cash Attraction (Bellfruit) (set 4, Protocol) (Scorpion 1)", - "sc1cshath", "Cash Attraction (Bellfruit) (set 3, Protocol) (Scorpion 1)", - "sc1cshati", "Cash Attraction (Bellfruit) (set 1, Protocol) (Scorpion 1)", - "sc1cshcd", "Cash Card (Dutch) (Bellfruit) (Scorpion 1)", - "sc1cshcda", "Cash Card (Bellfruit) (set 1) (Scorpion 1)", - "sc1cshcdb", "Cash Card (Bellfruit) (set 2) (Scorpion 1)", - "sc1cshin", "Cashino (Dutch) (Bellfruit) (Scorpion 1)", - "sc1cshwz", "Cash Wise (Bellfruit) (set 2) (Scorpion 1)", - "sc1cshwza", "Cash Wise (Bellfruit) (set 1) (Scorpion 1)", - "sc1cshwzb", "Cash Wise (Bellfruit) (set 3) (Scorpion 1)", - "sc1cshwzc", "Cash Wise (Bellfruit) (set 2, Protocol) (Scorpion 1)", - "sc1cshwzd", "Cash Wise (Bellfruit) (set 4, Protocol) (Scorpion 1)", - "sc1cshwze", "Cash Wise (Bellfruit) (set 1, Protocol) (Scorpion 1)", - "sc1cshwzf", "Cash Wise (Bellfruit) (set 3, Protocol) (Scorpion 1)", - "sc1cshwzg", "Cash Wise (Bellfruit) (set 4) (Scorpion 1)", - "sc1cwcl", "Clockwise (Bellfruit) (Scorpion 1)", - "sc1czbrk", "Crazy Break (Dutch) (unknown) (Scorpion 1)", - "sc1dago", "Dagobert's Vault (Dutch) (Elam) (Scorpion 1)", - "sc1days", "All In A Days Work (Global) (set 1)", - "sc1daysa", "All In A Days Work (Global) (set 2)", - "sc1dblch", "Double Chance (Bellfruit) (set 1) (Scorpion 1)", - "sc1dblcha", "Double Chance (Bellfruit) (set 2, bad) (Scorpion 1)", - "sc1dblchb", "Double Chance (Bellfruit) (set 3) (Scorpion 1)", - "sc1dip", "Diplomat (Eurocoin) (Scorpion 1)", - "sc1disc", "Discovey (Dutch) (Bellfruit) (Scorpion 1)", - "sc1dream", "Dream Machine (Dutch) (Bellfruit) (Scorpion 1)", - "sc1driv", "Driving School (Global) (set 1)", - "sc1driva", "Driving School (Global) (set 2)", - "sc1drivb", "Driving School (Global) (set 3)", - "sc1drivc", "Driving School (Global) (set 4)", - "sc1druby", "Diamonds & Rubys (Bellfruit) (Scorpion ?) (set 1)", - "sc1drubya", "Diamonds & Rubys (Bellfruit) (Scorpion ?) (set 2)", - "sc1energ", "Energy (Dutch) (unknown) (Scorpion 1)", - "sc1final", "Final Touch (Dutch) (unknown) (Scorpion 1)", - "sc1flash", "Flash (Dutch) (Bellfruit) (Scorpion 1)", - "sc1frpus", "Fruit Pursuit (Bellfruit) (set 1) (Scorpion 1?)", - "sc1frpusa", "Fruit Pursuit (Bellfruit) (set 2) (Scorpion 1?)", - "sc1frtln", "Fruit Lines (Dutch) (Bellfruit) (set 2) (Scorpion 1)", - "sc1fruit", "Fruit Lines (Dutch) (Bellfruit) (set 1) (Scorpion 1)", - "sc1funh", "Fun House Club (Bellfruit) (set 1) (Scorpion 1)", - "sc1funha", "Fun House Club (Bellfruit) (set 2) (Scorpion 1)", - "sc1funhp", "Fun House Club (Bellfruit) (set 1, Protocol, bad) (Scorpion 1)", - "sc1goldw", "Golden Winner (Bellfruit) (Scorpion ?)", - "sc1gprix", "Grand Prix (Dutch) (Dutch) (Bellfruit) (Scorpion 1)", - "sc1gslam", "Grand Slam (Dutch) (Bellfruit) (Scorpion 1)", - "sc1gtime", "Good Times (Dutch) (Bellfruit) (Scorpion 1)", - "sc1happy", "Happy Hour (Dutch) (Bellfruit) (Scorpion 1)", - "sc1hfcc", "Hi Flyer Club (Crystal) (set 1) (Scorpion 1)", - "sc1hfccp", "Hi Flyer Club (Crystal) (set 1, Protocol) (Scorpion 1)", - "sc1hipt", "High Point (Bellfruit) (Scorpion 1) (set 1)", - "sc1hipta", "High Point (Bellfruit) (Scorpion 1) (set 2)", - "sc1impc", "Impact (Dutch) (Bellfruit) (Scorpion 1)", - "sc1kings", "Kings Club (Dutch) (Bellfruit) (Scorpion 1)", - "sc1lamb", "Lambada (Eurocoin) (Scorpion 1)", - "sc1linx", "Linx (Bellfruit) (set 1) (Scorpion 1)", - "sc1linxa", "Linx (Bellfruit) (set 2) (Scorpion 1)", - "sc1linxp", "Linx (Bellfruit) (set 3, Protocol) (Scorpion 1)", - "sc1lotus", "Lotus SE (Dutch) (set 1)", - "sc1lotusa", "Lotus SE (Dutch) (set 2)", - "sc1ltdv", "Little Devil (Pcp)", - "sc1magc", "Magic Circle (Dutch) (Bellfruit) (Scorpion 1)", - "sc1manha", "Manhattan (Dutch) (Bellfruit) (Scorpion 1)", - "sc1mast", "Master Club (Dutch) (Bellfruit) (Scorpion 1)", - "sc1mist", "Mistral (Dutch) (Bellfruit) (Scorpion 1)", - "sc1moonl", "Moon Lite (Bwb)", - "sc1ofs56", "Only Fools and Horses (Bellfruit) (Scorpion 1?)", - "sc1olym", "Olympia (Dutch) (Bellfruit) (Scorpion 1)", - "sc1orac", "Oracle (Dutch) (Bellfruit) (Scorpion 1)", - "sc1pwrl", "Power Lines (Bellfruit) (set 1) (Scorpion 1)", - "sc1quat", "Quatro (Dutch) (Bellfruit) (Scorpion 1)", - "sc1rain", "Rainbow (Dutch) (Bellfruit) (Scorpion 1)", - "sc1re", "Reel Cash (Dutch) (Bellfruit) (Scorpion 1)", - "sc1reply", "Replay (Eurocoin) (Scorpion 1)", - "sc1rese", "Reel Cash SE (Dutch) (Bellfruit) (Scorpion 1)", - "sc1revo", "Revolution (Dutch) (Bellfruit) (Scorpion 1)", - "sc1rose", "Rose 'n' Crown (Dutch) (Bellfruit) (Scorpion 1)", - "sc1roul", "Roulette (Dutch, Game Card 39-360-129?)", - "sc1s1000", "Super 1000 (Deltasoft)", - "sc1sant", "Santana (Dutch) (Bellfruit) (Scorpion 1)", - "sc1sat", "Satellite (Dutch) (Bellfruit) (Scorpion 1)", - "sc1satse", "Satellite SE (Dutch) (Bellfruit) (Scorpion 1)", - "sc1scunk", "unknown Scorpion 1 'Super ?' (Bellfruit) (Scorpion 1)", - "sc1shan", "Shanghai (Dutch) (Bellfruit) (Scorpion 1)", - "sc1sir", "Strike It Rich (Bellfruit) (set 1) (Scorpion 1)", - "sc1sira", "Strike It Rich (Bellfruit) (set 3, bad) (Scorpion 1)", - "sc1sirb", "Strike It Rich (Bellfruit) (set 2) (Scorpion 1)", - "sc1sirc", "Strike It Rich (Bellfruit) (set 4, bad) (Scorpion 1)", - "sc1smoke", "Smokey Vs The Bandit (Mdm) (set 1) (Scorpion 2/3?)", - "sc1smokea", "Smokey Vs The Bandit (Mdm) (set 2) (Scorpion 2/3?)", - "sc1spct", "Spectre (Bellfruit) (set 1) (Scorpion 1)", - "sc1spcta", "Spectre (Bellfruit) (set 2) (Scorpion 1)", - "sc1spit", "Spitfire (Dutch) (Elam) (Scorpion 1)", - "sc1ster", "Sterling (Dutch) (Bellfruit) (Scorpion 1)", - "sc1str4", "Strike 4 (Dutch) (Bellfruit) (Scorpion 1) (set 1)", - "sc1str4a", "Strike 4 (Dutch) (Bellfruit) (Scorpion 1) (set 2)", - "sc1strk", "Strike (Dutch) (Bellfruit) (Scorpion 1)", - "sc1supfl", "Super Flush (Dutch) (Bellfruit) (Scorpion 1)", - "sc1sups", "Superstar (Dutch) (unknown) (Scorpion 1)", - "sc1t1k", "Top 1000 (Dutch) (Eurocoin) (Scorpion 1)", - "sc1tiara", "Tiara (Dutch) (Bellfruit) (Scorpion 1)", - "sc1torn", "Tornado (Dutch) (Bellfruit) (set 1) (Scorpion 1)", - "sc1torna", "Tornado (Dutch) (Bellfruit) (set 2) (Scorpion 1)", - "sc1tri", "Tri Star (Bellfruit) (set 1) (Scorpion 1)", - "sc1tria", "Tri Star (Bellfruit) (set 2) (Scorpion 1)", - "sc1triap", "Tri Star (Bellfruit) (set 2, Protocol) (Scorpion 1)", - "sc1trib", "Tri Star (Bellfruit) (set 3) (Scorpion 1)", - "sc1tribp", "Tri Star (Bellfruit) (set 3, Protocol) (Scorpion 1)", - "sc1twice", "Twice As Nice (Associated Leisure) (Scorpion 1)", - "sc1typ", "Typhoon Club (Bellfruit) (set 1) (Scorpion 1)", - "sc1typp", "Typhoon Club (Bellfruit) (set 1, Protocol) (Scorpion 1)", - "sc1ult", "Ultimate (Dutch) (Bellfruit) (Scorpion 1)", - "sc1vent", "Ventura (Dutch) (Bellfruit) (Scorpion 1)", - "sc1vict", "Victory (Dutch) (Bellfruit) (Scorpion 1)", - "sc1voy", "Voyager (Dutch) (Elam) (set 1) (Scorpion 1)", - "sc1voya", "Voyager (Dutch) (Elam) (set 2) (Scorpion 1)", - "sc1vsd", "Vegas Super Deal (Global)", - "sc1winfl", "Winfalls (Dutch) (Bellfruit) (Scorpion 1)", - "sc1winst", "Winning Streak (Bellfruit) (set 1) (Scorpion 1)", - "sc1winsta", "Winning Streak (Bellfruit) (set 2) (Scorpion 1)", - "sc1winstp", "Winning Streak (Bellfruit) (set 1, Protocol) (Scorpion 1)", - "sc1wof", "Wheel Of Fortune (Global) (set 1)", - "sc1wofa", "Wheel Of Fortune (Global) (set 2)", - "sc1wofb", "Wheel Of Fortune (Global) (set 3)", - "sc1wthn", "Wild Thing (Eurocoin) (Scorpion 1)", - "sc1wud", "What's Up Dr (Scorpion 1?)", - "sc1zep", "Zeppelin (Dutch) (Elam) (Scorpion 1)", - "sc2bar7", "Bar 7 (Concept) (set 1)", - "sc2bar7a", "Bar 7 (Concept) (set 2)", - "sc2bar7b", "Bar 7 (Concept) (set 3)", - "sc2bar7c", "Bar 7 (Concept) (set 4)", - "sc2bar7d", "Bar 7 (Concept) (set 5)", - "sc2bar7e", "Bar 7 (Concept) (set 6)", - "sc2bar7f", "Bar 7 (Concept) (set 7)", - "sc2bar7g", "Bar 7 (Concept) (set 8)", - "sc2bar7h", "Bar 7 (Concept) (set 9)", - "sc2bar7i", "Bar 7 (Concept) (set 10)", - "sc2bar7j", "Bar 7 (Concept) (set 11)", - "sc2bar7k", "Bar 7 (Concept) (set 12)", - "sc2bbar7", "Big Bar 7 (Concept) (set 1)", - "sc2bbar7a", "Big Bar 7 (Concept) (set 2)", - "sc2bbar7b", "Big Bar 7 (Concept) (set 3)", - "sc2bbar7c", "Big Bar 7 (Concept) (set 4)", - "sc2bbar7d", "Big Bar 7 (Concept) (set 5)", - "sc2bbar7e", "Big Bar 7 (Concept) (set 6)", - "sc2bbar7f", "Big Bar 7 (Concept) (set 7)", - "sc2bbar7g", "Big Bar 7 (Concept) (set 8)", - "sc2bbar7h", "Big Bar 7 (Concept) (set 9)", - "sc2bbar7i", "Big Bar 7 (Concept) (set 10)", - "sc2bbar7j", "Big Bar 7 (Concept) (set 11)", - "sc2bbar7k", "Big Bar 7 (Concept) (set 12)", - "sc2bbar7l", "Big Bar 7 (Concept) (set 13)", - "sc2bbar7m", "Big Bar 7 (Concept) (set 14)", - "sc2bbar7n", "Big Bar 7 (Concept) (set 15)", - "sc2bbar7o", "Big Bar 7 (Concept) (set 16)", - "sc2bbar7p", "Big Bar 7 (Concept) (set 17)", - "sc2brkfs", "The Big Breakfast (set 2) (Scorpion 2/3)", - "sc2brkfs1", "The Big Breakfast (set 1 UK, Single Site) (Scorpion 2/3)", - "sc2brkfs1p", "The Big Breakfast (set 1 UK, Single Site, Protocol) (Scorpion 2/3)", - "sc2brkfs2", "The Big Breakfast (set 4 UK, Arcade, 8GBP Jackpot) (Scorpion 2/3)", - "sc2brkfs3", "The Big Breakfast (set 3) (Scorpion 2/3)", - "sc2brkfs3p", "The Big Breakfast (set 4 UK, Arcade, 8GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2brkfs4", "The Big Breakfast (set 5 UK, Arcade, 10GBP Jackpot) (Scorpion 2/3)", - "sc2brkfs4p", "The Big Breakfast (set 5 UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2brkfs5", "The Big Breakfast (set 6 UK, Arcade, 10GBP Jackpot) (Scorpion 2/3)", - "sc2brkfs5p", "The Big Breakfast (set 6 UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2brkfs6", "The Big Breakfast (set 3, Protocol) (Scorpion 2/3)", - "sc2brkfsm", "The Big Breakfast Casino (Scorpion 2/3)", - "sc2brkfsm1", "The Big Breakfast Casino (Mazooma, set 1) (Scorpion 2/3)", - "sc2brkfsm2", "The Big Breakfast Casino (Mazooma, set 2) (Scorpion 2/3)", - "sc2brkfsp", "The Big Breakfast (set 2, Protocol) (Scorpion 2/3)", - "sc2call", "It's Your Call (Global) (v2.7) (Scorpion 2/3)", - "sc2callc", "It's Your Call (Club?) (Global) (v1.6) (Scorpion 2/3)", - "sc2callcp", "It's Your Call (Club?) (Global) (v1.6 Protocol) (Scorpion 2/3)", - "sc2callp", "It's Your Call (Global) (v2.7 Protocol) (Scorpion 2/3)", - "sc2casr", "Casino Royale (Bellfruit) (set 5, UK, 10GBP Jackpot, 3rd Triennial) (Scorpion 2/3)", - "sc2casr1", "Casino Royale (Bellfruit) (set 4, UK, 3rd Triennial) (Scorpion 2/3)", - "sc2casr1p", "Casino Royale (Bellfruit) (set 4, UK, 3rd Triennial, Protocol) (Scorpion 2/3)", - "sc2casr2", "Casino Royale (Bellfruit) (set 3, UK) (Scorpion 2/3)", - "sc2casr2p", "Casino Royale (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)", - "sc2casr3", "Casino Royale (Bellfruit) (set 1, UK, 8GBP Jackpot) (Scorpion 2/3)", - "sc2casr3p", "Casino Royale (Bellfruit) (set 1, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2casr4", "Casino Royale (Bellfruit) (set 2, UK) (Scorpion 2/3)", - "sc2casr4p", "Casino Royale (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)", - "sc2casrp", "Casino Royale (Bellfruit) (set 5, UK, 10GBP Jackpot, 3rd Triennial, Protocol) (Scorpion 2/3)", - "sc2catms", "Cat & Mouse (Bellfruit) (set 4, Deluxe) (Scorpion 2/3)", - "sc2catms1", "Cat & Mouse (Bellfruit) (set 10) (Scorpion 2/3)", - "sc2catms1p", "Cat & Mouse (Bellfruit) (set 10, Protocol) (Scorpion 2/3)", - "sc2catms2", "Cat & Mouse (Bellfruit) (set 9) (Scorpion 2/3)", - "sc2catms2p", "Cat & Mouse (Bellfruit) (set 9, Protocol) (Scorpion 2/3)", - "sc2catms3", "Cat & Mouse (Bellfruit) (set 1) (Scorpion 2/3)", - "sc2cb7", "Super Bar 7 Casino (Bellfruit) (set 3, UK) (Scorpion 2/3)", - "sc2cb71", "Super Bar 7 Casino (Bellfruit) (set 1, UK, All Cash) (Scorpion 2/3)", - "sc2cb72", "Super Bar 7 Casino (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2cb72p", "Super Bar 7 Casino (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2cb7p", "Super Bar 7 Casino (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)", - "sc2cexpl", "Cash Explosion (Bellfruit) (set 2, Protocol) (Scorpion 2)", - "sc2cexpla", "Cash Explosion (Bellfruit) (set 1, Protocol) (Scorpion 2)", - "sc2cexplb", "Cash Explosion (Bellfruit) (set 3, Protocol) (Scorpion 2)", - "sc2cexplc", "Cash Explosion (Bellfruit) (set 2) (Scorpion 2)", - "sc2cexpld", "Cash Explosion (Bellfruit) (set 1) (Scorpion 2)", - "sc2cexple", "Cash Explosion (Bellfruit) (set 3) (Scorpion 2)", - "sc2cgc", "Carrot Gold Club (Bellfruit) (Protocol) (Scorpion 2/3)", - "sc2cgcas", "Club Grand Casino (Bellfruit) (set 1) (Scorpion 2/3)", - "sc2cgcas1", "Club Grand Casino (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2cgcas1p", "Club Grand Casino (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2cgcasp", "Club Grand Casino (Bellfruit) (set 1, Protocol) (Scorpion 2/3)", - "sc2cmbt", "Cat & Mouse & Bonzo Too (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2cmbtp", "Cat & Mouse & Bonzo Too (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2cnile", "Cash On The Nile Club (Bellfruit) (set 2 UK, 150GBP Jackpot) (Scorpion 2/3)", - "sc2cnile1", "Cash On The Nile Club (Bellfruit) (set 1 UK, 150GBP Jackpot) (Scorpion 2/3)", - "sc2cnile2", "Cash On The Nile Club (Bellfruit) (set 3 UK, 200GBP Jackpot) (Scorpion 2/3)", - "sc2cnile2p", "Cash On The Nile Club (Bellfruit) (set 3 UK, 200GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2cnilep", "Cash On The Nile Club (Bellfruit) (set 2 UK, 150GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2copcl", "Cops 'n' Robbers Club (Bellfruit) (set 9, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2copcl1", "Cops 'n' Robbers Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2copcl10", "Cops 'n' Robbers Club (Bellfruit) (set 6, UK) (Scorpion 2/3)", - "sc2copcl11", "Cops 'n' Robbers Club (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2copcl11p", "Cops 'n' Robbers Club (Bellfruit) (set 11, UK, Protocol) (Scorpion 2/3)", - "sc2copcl12", "Cops 'n' Robbers Club (Bellfruit) (set 10, UK, Protocol) (Scorpion 2/3)", - "sc2copcl1p", "Cops 'n' Robbers Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2copcl2", "Cops 'n' Robbers Club (Bellfruit) (set 10, UK) (Scorpion 2/3)", - "sc2copcl3", "Cops 'n' Robbers Club (Bellfruit) (set 12, UK) (Scorpion 2/3)", - "sc2copcl3p", "Cops 'n' Robbers Club (Bellfruit) (set 12, UK, Protocol) (Scorpion 2/3)", - "sc2copcl4", "Cops 'n' Robbers Club (Bellfruit) (set 3, UK) (Scorpion 2/3)", - "sc2copcl5", "Cops 'n' Robbers Club (Bellfruit) (set 11, UK) (Scorpion 2/3)", - "sc2copcl6", "Cops 'n' Robbers Club (Bellfruit) (set 4, UK) (Scorpion 2/3)", - "sc2copcl6p", "Cops 'n' Robbers Club (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3)", - "sc2copcl7", "Cops 'n' Robbers Club (Bellfruit) (set 5, UK) (Scorpion 2/3)", - "sc2copcl8", "Cops 'n' Robbers Club (Bellfruit) (set 8, UK) (Scorpion 2/3)", - "sc2copcl8p", "Cops 'n' Robbers Club (Bellfruit) (set 8, UK, Protocol) (Scorpion 2/3)", - "sc2copcl9", "Cops 'n' Robbers Club (Bellfruit) (set 7, UK) (Scorpion 2/3)", - "sc2copcl9p", "Cops 'n' Robbers Club (Bellfruit) (set 7, UK, Protocol) (Scorpion 2/3)", - "sc2copclp", "Cops 'n' Robbers Club (Bellfruit) (set 9, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2copdc", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 7, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2copdc1", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 3, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2copdc1p", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 3, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2copdc2", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 4, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2copdc2p", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 4, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2copdc3", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 5, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2copdc3p", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 5, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2copdc4", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 6, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2copdc4p", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 6, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2copdc5", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 1, UK, 200GBP Jackpot) (Scorpion 2/3)", - "sc2copdc5p", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 1, UK, 200GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2copdc6", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2copdcp", "Cops 'n' Robbers Club Deluxe (Bellfruit) (set 7, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2cops", "Cops 'n' Robbers (Bellfruit) (set 6) (Scorpion 2/3)", - "sc2cops1p", "Cops 'n' Robbers (Bellfruit) (set 6, Protocol) (Scorpion 2/3)", - "sc2cops2", "Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3)", - "sc2cops3", "Cops 'n' Robbers (Bellfruit) (set 3) (Scorpion 2/3)", - "sc2cops3p", "Cops 'n' Robbers (Bellfruit) (set 3, Protocol) (Scorpion 2/3)", - "sc2cops4", "Cops 'n' Robbers (Bellfruit) (set 5) (Scorpion 2/3)", - "sc2cops5", "Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3)", - "sc2copsc", "Casino Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3)", - "sc2copsc1", "Casino Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3)", - "sc2copsc1p", "Casino Cops 'n' Robbers (Bellfruit) (set 2, Protocol) (Scorpion 2/3)", - "sc2copsc1pa", "Casino Cops 'n' Robbers (Bellfruit) (set 2, Protocol) (Scorpion 2/3) (alt matrix rom)", - "sc2copscp", "Casino Cops 'n' Robbers (Bellfruit) (set 1, Protocol) (Scorpion 2/3)", - "sc2copsp", "Cops 'n' Robbers (Bellfruit) (set 4, Protocol) (Scorpion 2/3)", - "sc2cpe", "Club Public Enemy No.1 (set 5, UK) (Scorpion 2/3)", - "sc2cpe1", "Club Public Enemy No.1 (set 4, UK) (Scorpion 2/3)", - "sc2cpe1p", "Club Public Enemy No.1 (set 4, UK, Protocol) (Scorpion 2/3)", - "sc2cpe2", "Club Public Enemy No.1 (set 3, UK) (Scorpion 2/3)", - "sc2cpe2p", "Club Public Enemy No.1 (set 3, UK, Protocol) (Scorpion 2/3)", - "sc2cpe3", "Club Public Enemy No.1 (set 1, UK) (Scorpion 2/3)", - "sc2cpe3p", "Club Public Enemy No.1 (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2cpe4", "Club Public Enemy No.1 (set 2, UK) (Scorpion 2/3)", - "sc2cpe4p", "Club Public Enemy No.1 (set 2, UK, Protocol) (Scorpion 2/3)", - "sc2cpep", "Club Public Enemy No.1 (set 5, UK, Protocol) (Scorpion 2/3)", - "sc2cpg", "Pharaoh's Gold Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2cpg1", "Pharaoh's Gold Club (Bellfruit) (set 3, UK, p65) (Scorpion 2/3)", - "sc2cpg1p", "Pharaoh's Gold Club (Bellfruit) (set 3, UK, p65, Protocol) (Scorpion 2/3)", - "sc2cpg2", "Pharaoh's Gold Club (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2cpg2p", "Pharaoh's Gold Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2cpgp", "Pharaoh's Gold Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2cshcl", "Cashino Club (Bellfruit) (set 2) (Scorpion 2/3)", - "sc2cshcl1", "Cashino Club (Bellfruit) (set 1) (Scorpion 2/3)", - "sc2cshcl1p", "Cashino Club (Bellfruit) (set 1, Protocol) (Scorpion 2/3)", - "sc2cshclp", "Cashino Club (Bellfruit) (set 2, Protocol) (Scorpion 2/3)", - "sc2ctms2", "Cat & Mouse (Bellfruit) (set 2) (Scorpion 2/3)", - "sc2ctms21", "Cat & Mouse (Bellfruit) (set 7) (Scorpion 2/3)", - "sc2ctms21p", "Cat & Mouse (Bellfruit) (set 7, Protocol) (Scorpion 2/3)", - "sc2ctms22", "Cat & Mouse (Bellfruit) (set 6) (Scorpion 2/3)", - "sc2ctms22p", "Cat & Mouse (Bellfruit) (set 6, Protocol) (Scorpion 2/3)", - "sc2ctms23", "Cat & Mouse (Bellfruit) (set 5) (Scorpion 2/3)", - "sc2ctms23p", "Cat & Mouse (Bellfruit) (set 5, Protocol) (Scorpion 2/3)", - "sc2ctms24p", "Cat & Mouse (Bellfruit) (set 8, Protocol) (Scorpion 2/3)", - "sc2ctms25", "Cat & Mouse (Bellfruit) (set 3) (Scorpion 2/3)", - "sc2cvega", "Cash Vegas (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2cvega1", "Cash Vegas (Bellfruit) (set 4, UK, 10GBP Jackpot, 3rd Triennial) (Scorpion 2/3)", - "sc2cvega1p", "Cash Vegas (Bellfruit) (set 4, UK, 10GBP Jackpot, 3rd Triennial, Protocol) (Scorpion 2/3)", - "sc2cvega2", "Cash Vegas (Bellfruit) (set 3, UK, 8GBP Jackpot) (Scorpion 2/3)", - "sc2cvega2p", "Cash Vegas (Bellfruit) (set 3, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2cvega3", "Cash Vegas (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2cvega3p", "Cash Vegas (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2cvega4p", "Cash Vegas (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2dbl", "Double Diamond (Bellfruit) (set 2, UK) (Scorpion 2/3)", - "sc2dbl1", "Double Diamond (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2dbl1p", "Double Diamond (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2dblp", "Double Diamond (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)", - "sc2dels", "Del's Millions (Bellfruit) (set 9, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2dels1", "Del's Millions (Bellfruit) (set 10, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2dels1p", "Del's Millions (Bellfruit) (set 10, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2dels2", "Del's Millions (Bellfruit) (set 7, UK, 8GBP Jackpot) (Scorpion 2/3)", - "sc2dels2p", "Del's Millions (Bellfruit) (set 7, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2dels3", "Del's Millions (Bellfruit) (set 3, UK, 8GBP Jackpot) (Scorpion 2/3)", - "sc2dels3p", "Del's Millions (Bellfruit) (set 3, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2dels4", "Del's Millions (Bellfruit) (set 6, UK) (Scorpion 2/3)", - "sc2dels4p", "Del's Millions (Bellfruit) (set 6, UK, Protocol) (Scorpion 2/3)", - "sc2dels5", "Del's Millions (Bellfruit) (set 5, UK) (Scorpion 2/3)", - "sc2dels6", "Del's Millions (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2dels7", "Del's Millions (Bellfruit) (set 2, UK) (Scorpion 2/3)", - "sc2dels8", "Del's Millions (Bellfruit) (set 8, UK) (Scorpion 2/3)", - "sc2dels9", "Del's Millions (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3)", - "sc2delsd", "Del's Millions (Bellfruit) (set 4, Deluxe) (Scorpion 2/3)", - "sc2delsm", "Del's Millions (Bellfruit/Mazooma) (DMVMAZ11_N) (Scorpion 2/3)", - "sc2delsm1", "Del's Millions (Bellfruit/Mazooma) (DMVMAZ13_N) (Scorpion 2/3)", - "sc2delsm1p", "Del's Millions (Bellfruit/Mazooma) (DMVMAZ14_N) (Scorpion 2/3)", - "sc2delsm2", "Del's Millions (Bellfruit/Mazooma) (DMVMAZ11_P) (Scorpion 2/3)", - "sc2delsm2p", "Del's Millions (Bellfruit/Mazooma) (DMVMAZ12_P) (Scorpion 2/3)", - "sc2delsm3", "Del's Millions (Bellfruit/Mazooma) (DMVMAZ13_P) (Scorpion 2/3)", - "sc2delsm3p", "Del's Millions (Bellfruit/Mazooma) (DMVMAZ14_P) (Scorpion 2/3)", - "sc2delsmp", "Del's Millions (Bellfruit/Mazooma) (DMVMAZ12_N) (Scorpion 2/3)", - "sc2delsp", "Del's Millions (Bellfruit) (set 9, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2dick", "Spotted Dick (Global) (v3.1) (Scorpion 2/3)", - "sc2dick1", "Spotted Dick (Global) (v2.2) (Scorpion 2/3)", - "sc2dick2", "Spotted Dick (Global) (v1.5) (Scorpion 2/3)", - "sc2dick2e", "Spotted Dick (Global) (v?.? Euro) (Scorpion 2/3)", - "sc2dick2eu", "Spotted Dick (Global) (v?.? Euro unencrypted) (Scorpion 2/3)", - "sc2dick2p", "Spotted Dick (Global) (v1.5 Protocol ) (Scorpion 2/3)", - "sc2dickp", "Spotted Dick (Global) (v3.1 Protocol) (Scorpion 2/3)", - "sc2downt", "Down Town (Bellfruit) (set 7, UK) (Scorpion 2/3)", - "sc2downt1", "Down Town (Bellfruit) (set 4, UK, 16RM motor) (Scorpion 2/3)", - "sc2downt1p", "Down Town (Bellfruit) (set 4, UK, 16RM motor, Protocol) (Scorpion 2/3)", - "sc2downt2", "Down Town (Bellfruit) (set 6, UK) (Scorpion 2/3)", - "sc2downt2p", "Down Town (Bellfruit) (set 7, UK, Protocol) (Scorpion 2/3)", - "sc2downt3", "Down Town (Bellfruit) (set 11, UK, 15RM motor) (Scorpion 2/3)", - "sc2downt3a", "Down Town (Bellfruit) (set 8, UK) (Scorpion 2/3)", - "sc2downt3ap", "Down Town (Bellfruit) (set 8, UK, Protocol) (Scorpion 2/3)", - "sc2downt3p", "Down Town (Bellfruit) (set 11, UK, 15RM motor, Protocol) (Scorpion 2/3)", - "sc2downt4", "Down Town (Bellfruit) (set 10, UK, 15RM motor) (Scorpion 2/3)", - "sc2downt4a", "Down Town (Bellfruit) (set 9, UK) (Scorpion 2/3)", - "sc2downt4ap", "Down Town (Bellfruit) (set 9, UK, Protocol) (Scorpion 2/3)", - "sc2downt4p", "Down Town (Bellfruit) (set 10, UK, 15RM motor, Protocol) (Scorpion 2/3)", - "sc2downt5", "Down Town (Bellfruit) (set 5, UK) (Scorpion 2/3)", - "sc2downt6", "Down Town (Bellfruit) (set 1, UK, 16RM motor) (Scorpion 2/3)", - "sc2downt7", "Down Town (Bellfruit) (set 2, Irish, 16RM motor) (Scorpion 2/3)", - "sc2downt8a", "Down Town (Bellfruit) (set 3, UK, 16RM motor) (Scorpion 2/3)", - "sc2downt8ap", "Down Town (Bellfruit) (set 3, UK, 16RM motor, Protocol) (Scorpion 2/3)", - "sc2downtp", "Down Town (Bellfruit) (set 6, UK, Protocol) (Scorpion 2/3)", - "sc2drwho", "Dr.Who The Timelord (set 1, UK, Single Site) (Scorpion 2/3)", - "sc2drwho1", "Dr.Who The Timelord (set 2, UK, Arcade) (Scorpion 2/3)", - "sc2drwho1p", "Dr.Who The Timelord (set 2, UK, Arcade, Protocol) (Scorpion 2/3)", - "sc2drwho2", "Dr.Who The Timelord (set 3, UK, no Jackpot spin) (Scorpion 2/3)", - "sc2drwho2p", "Dr.Who The Timelord (set 3, UK, no Jackpot spin, Protocol) (Scorpion 2/3)", - "sc2drwho3", "Dr.Who The Timelord (set 4, UK, Arcade) (Scorpion 2/3)", - "sc2drwho3p", "Dr.Who The Timelord (set 4, UK, Arcade, Protocol) (Scorpion 2/3)", - "sc2drwho4", "Dr.Who The Timelord (set 5, UK) (Scorpion 2/3)", - "sc2drwho4p", "Dr.Who The Timelord (set 5, UK, Protocol) (Scorpion 2/3)", - "sc2drwho5", "Dr.Who The Timelord (set 6, UK, Arcade, 8GBP Jackpot) (Scorpion 2/3)", - "sc2drwho5p", "Dr.Who The Timelord (set 6, UK, Arcade, 8GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2drwho6", "Dr.Who The Timelord (set 7, UK, Arcade) (Scorpion 2/3)", - "sc2drwho6p", "Dr.Who The Timelord (set 7, UK, Arcade, Protocol) (Scorpion 2/3)", - "sc2drwho7", "Dr.Who The Timelord (set 8, UK, Arcade, 10GBP Jackpot) (Scorpion 2/3)", - "sc2drwho7p", "Dr.Who The Timelord (set 8, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2drwhodx", "Dr.Who The Timelord Deluxe (set 1) (Scorpion 2/3)", - "sc2drwhodx1", "Dr.Who The Timelord Deluxe (set 2) (Scorpion 2/3)", - "sc2drwhomz", "Dr.Who The Timelord (Mazooma) (Scorpion 2/3)", - "sc2drwhomzp", "Dr.Who The Timelord (Mazooma, Protocol) (Scorpion 2/3)", - "sc2drwhop", "Dr.Who The Timelord (set 1, UK, Single Site Protocol) (Scorpion 2/3)", - "sc2drwhou", "Dr.Who The Timelord (set 1, UK, Single Site) (Scorpion 2/3) (not encrypted)", - "sc2easy", "Easy Money (Bellfruit) (set 1) (Scorpion 2/3)", - "sc2easy1", "Easy Money (Bellfruit) (set 3) (Scorpion 2/3)", - "sc2easy1p", "Easy Money (Bellfruit) (set 3, Protocol) (Scorpion 2/3)", - "sc2easy2", "Easy Money (Bellfruit) (set 2) (Scorpion 2/3)", - "sc2easy2p", "Easy Money (Bellfruit) (set 2, Protocol) (Scorpion 2/3)", - "sc2easyp", "Easy Money (Bellfruit) (set 1, Protocol) (Scorpion 2/3)", - "sc2eggs", "Eggs On Legs Tour (Bellfruit) (set 2, UK, Arcade, 10GBP Jackpot) (Scorpion 2/3)", - "sc2eggs1", "Eggs On Legs Tour (Bellfruit) (set 1, UK, Arcade, 10GBP Jackpot?) (Scorpion 2/3)", - "sc2eggs1p", "Eggs On Legs Tour (Bellfruit) (set 1, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2eggsp", "Eggs On Legs Tour (Bellfruit) (set 2, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2flaca", "Flash Cash (Bellfruit) (set 3, UK, 10GBP Jackpot, 3rd Triennial) (Scorpion 2/3)", - "sc2flaca1", "Flash Cash (Bellfruit) (set 1, UK, 10GBP Jackpot, 2nd Triennial) (Scorpion 2/3)", - "sc2flaca1p", "Flash Cash (Bellfruit) (set 1, UK, 10GBP Jackpot, 2nd Triennial, Protocol) (Scorpion 2/3)", - "sc2flaca2", "Flash Cash (Bellfruit) (set 2, UK, 10GBP Jackpot, 2nd Triennial) (Scorpion 2/3)", - "sc2flaca2p", "Flash Cash (Bellfruit) (set 2, UK, 10GBP Jackpot, 2nd Triennial, Protocol) (Scorpion 2/3)", - "sc2flacap", "Flash Cash (Bellfruit) (set 3, UK, 10GBP Jackpot, 3rd Triennial, Protocol) (Scorpion 2/3)", - "sc2flutr", "Flutter (Concept)", - "sc2focus", "Focus (Dutch, Game Card 95-750-347) (Scorpion 2/3)", - "sc2foot", "Football Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2foot1", "Football Club (Bellfruit) (set 3, UK, 100GBP Jackpot) (Scorpion 2/3)", - "sc2foot1p", "Football Club (Bellfruit) (set 3, UK, 100GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2foot2", "Football Club (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2foot2p", "Football Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2footp", "Football Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2gcclb", "Golden Casino Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2gcclb1", "Golden Casino Club (Bellfruit) (set 3, UK, 100GBP Jackpot) (Scorpion 2/3)", - "sc2gcclb1p", "Golden Casino Club (Bellfruit) (set 3, UK, 100GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2gcclb2", "Golden Casino Club (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2gcclb2p", "Golden Casino Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2gcclbp", "Golden Casino Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2goldr", "Gold Reserve (Mdm) (v1.3) (Scorpion 2/3)", - "sc2goldr1", "Gold Reserve (Mdm) (set 2) (Scorpion 2/3)", - "sc2goldrp", "Gold Reserve (Mdm) (v1.3 Protocol) (Scorpion 2/3)", - "sc2groul", "Golden Roulette (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2groulp", "Golden Roulette (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)", - "sc2gsclb", "The Game Show Club (Bellfruit) (set 4, UK, Arcade, p65) (Scorpion 2/3)", - "sc2gsclb1", "The Game Show Club (Bellfruit) (set 7, UK, Arcade, 250GBP Jackpot, p65) (Scorpion 2/3)", - "sc2gsclb1p", "The Game Show Club (Bellfruit) (set 7, UK, Arcade, 250GBP Jackpot, p65, Protocol) (Scorpion 2/3)", - "sc2gsclb2", "The Game Show Club (Bellfruit) (set 3, UK, Arcade) (Scorpion 2/3)", - "sc2gsclb2p", "The Game Show Club (Bellfruit) (set 3, UK, Arcade, Protocol) (Scorpion 2/3)", - "sc2gsclb3", "The Game Show Club (Bellfruit) (set 5, UK, Arcade) (Scorpion 2/3)", - "sc2gsclb3p", "The Game Show Club (Bellfruit) (set 5, UK, Arcade, Protocol) (Scorpion 2/3)", - "sc2gsclb4", "The Game Show Club (Bellfruit) (set 6, UK, Arcade) (Scorpion 2/3)", - "sc2gsclb4p", "The Game Show Club (Bellfruit) (set 6, UK, Arcade, Protocol) (Scorpion 2/3)", - "sc2gsclb5", "The Game Show Club (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2gsclb6", "The Game Show Club (Bellfruit) (set 8, UK) (Scorpion 2/3)", - "sc2gsclb6p", "The Game Show Club (Bellfruit) (set 8, UK, Protocol) (Scorpion 2/3)", - "sc2gsclb7", "The Game Show Club (Bellfruit) (set 2, UK) (Scorpion 2/3)", - "sc2gsclbp", "The Game Show Club (Bellfruit) (set 4, UK, Arcade, p65, Protocol) (Scorpion 2/3)", - "sc2gslam", "Club Grand Slam (UK, set 2) (Scorpion 2/3)", - "sc2gslam1", "Club Grand Slam (UK, set 1) (Scorpion 2/3)", - "sc2gslam1p", "Club Grand Slam (UK, set 1, Protocol) (Scorpion 2/3)", - "sc2gslamp", "Club Grand Slam (UK, set 2, Protocol) (Scorpion 2/3)", - "sc2gtr", "The Great Train Robbery (Bellfruit) (Scorpion 2/3)", - "sc2heypr", "Hey Presto (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2heyprp", "Hey Presto (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2hifly", "High Flyer (Mdm) (v4.1) (Scorpion 2/3)", - "sc2hifly2", "High Flyer (Mdm) (v3.1) (Scorpion 2/3)", - "sc2hifly3", "High Flyer (Mdm) (v2.1) (Scorpion 2/3)", - "sc2hifly4", "High Flyer (Mdm) (v?.?) (Scorpion 2/3)", - "sc2hypr", "Hyperactive (Bellfruit) (set 1, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2hypr1", "Hyperactive (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2hypr1p", "Hyperactive (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2hyprp", "Hyperactive (Bellfruit) (set 1, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2inst", "Instant Jackpot (Bellfruit) (set 6, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2inst1", "Instant Jackpot (Bellfruit) (set 7, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2inst1p", "Instant Jackpot (Bellfruit) (set 7, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2inst2", "Instant Jackpot (Bellfruit) (set 4, UK) (Scorpion 2/3)", - "sc2inst2p", "Instant Jackpot (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3)", - "sc2inst3", "Instant Jackpot (Bellfruit) (set 5, UK, 8GBP Jackpot) (Scorpion 2/3)", - "sc2inst3p", "Instant Jackpot (Bellfruit) (set 5, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2inst4", "Instant Jackpot (Bellfruit) (set 3, UK) (Scorpion 2/3)", - "sc2inst4p", "Instant Jackpot (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)", - "sc2inst5", "Instant Jackpot (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2inst6", "Instant Jackpot (Bellfruit) (set 2, UK) (Scorpion 2/3)", - "sc2instp", "Instant Jackpot (Bellfruit) (set 6, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2kcclb", "King Cash Club (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2kcclb1", "King Cash Club (Bellfruit) (set 2, UK) (Scorpion 2/3)", - "sc2kcclb1p", "King Cash Club (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)", - "sc2kcclbp", "King Cash Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2luvv", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/25p) (Scorpion 2/3)", - "sc2luvv1", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/20p) (Scorpion 2/3)", - "sc2luvv1p", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/20p, Protocol) (Scorpion 2/3)", - "sc2luvv2", "Luvvly Jubbly (set 2, UK, Multisite) (Scorpion 2/3)", - "sc2luvv2p", "Luvvly Jubbly (set 2, UK, Multisite, Protocol) (Scorpion 2/3)", - "sc2luvv4", "Luvvly Jubbly (set 4, UK, Multisite 4GBP/5p) (Scorpion 2/3)", - "sc2luvv4p", "Luvvly Jubbly (set 4, UK, Multisite 4GBP/5p, Protocol) (Scorpion 2/3)", - "sc2luvv6p", "Luvvly Jubbly (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2luvvp", "Luvvly Jubbly (set 3, UK, Multisite 10GBP/25p, Protocol) (Scorpion 2/3)", - "sc2maina", "Main Attraction (Bellfruit) (Scorpion 2/3)", - "sc2majes", "Majestic Bells (Bellfruit) (set 1) (set 1)", - "sc2majesp", "Majestic Bells (Bellfruit) (set 1, Protocol) (set 2)", - "sc2mam", "Make A Million (Bellfruit) (set 4, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2mam1", "Make A Million (Bellfruit) (set 5, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2mam1p", "Make A Million (Bellfruit) (set 5, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2mam2", "Make A Million (Bellfruit) (set 3, UK, 8GBP Jackpot) (Scorpion 2/3)", - "sc2mam2p", "Make A Million (Bellfruit) (set 3, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2mam3", "Make A Million (Bellfruit) (set 2, UK) (Scorpion 2/3)", - "sc2mam3a", "Make A Million (Bellfruit) (set 2, UK, alt) (Scorpion 2/3)", - "sc2mam3p", "Make A Million (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)", - "sc2mam4", "Make A Million (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2mam4p", "Make A Million (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2mamcl", "Make A Million Club (Bellfruit) (set 3, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2mamcl1", "Make A Million Club (Bellfruit) (set 4, UK) (Scorpion 2/3)", - "sc2mamcl1p", "Make A Million Club (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3)", - "sc2mamcl2", "Make A Million Club (Bellfruit) (set 2, UK) (Scorpion 2/3)", - "sc2mamcl2p", "Make A Million Club (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)", - "sc2mamcl3", "Make A Million Club (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2mamclp", "Make A Million Club (Bellfruit) (set 3, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2mamp", "Make A Million (Bellfruit) (set 4, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2motd", "Match Of The Day (Bellfruit) (set 9, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2motd1", "Match Of The Day (Bellfruit) (set 7, UK, 10GBP Jackpot, 1st Triennial) (Scorpion 2/3)", - "sc2motd1p", "Match Of The Day (Bellfruit) (set 7, UK, 10GBP Jackpot, 1st Triennial, Protocol) (Scorpion 2/3)", - "sc2motd2", "Match Of The Day (Bellfruit) (set 8, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2motd2p", "Match Of The Day (Bellfruit) (set 8, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2motd3", "Match Of The Day (Bellfruit) (set 6, UK) (Scorpion 2/3)", - "sc2motd3p", "Match Of The Day (Bellfruit) (set 6, UK, Protocol) (Scorpion 2/3)", - "sc2motd4", "Match Of The Day (Bellfruit) (set 3, UK, Arcade) (Scorpion 2/3)", - "sc2motd4p", "Match Of The Day (Bellfruit) (set 3, UK, Arcade, Protocol) (Scorpion 2/3)", - "sc2motd5", "Match Of The Day (Bellfruit) (set 2, UK, Single Site) (Scorpion 2/3)", - "sc2motd5p", "Match Of The Day (Bellfruit) (set 2, UK, Single Site, Protocol) (Scorpion 2/3)", - "sc2motd6", "Match Of The Day (Bellfruit) (set 4, Irish, 8GBP Jackpot) (Scorpion 2/3)", - "sc2motd6p", "Match Of The Day (Bellfruit) (set 4, Irish, 8GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2motd7", "Match Of The Day (Bellfruit) (set 5, UK) (Scorpion 2/3)", - "sc2motd8p", "Match Of The Day (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3)", - "sc2motd9", "Match Of The Day (Bellfruit) (set 1, Irish) (Scorpion 2/3)", - "sc2motdp", "Match Of The Day (Bellfruit) (set 9, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2ofool", "Only Fools & Horses (Bellfruit) (set 3) (Scorpion 2/3)", - "sc2ofool1", "Only Fools & Horses (Bellfruit) (set 1) (Scorpion 2/3)", - "sc2ofool2", "Only Fools & Horses (Bellfruit) (set 4) (Scorpion 2/3)", - "sc2ofool3", "Only Fools & Horses (Bellfruit) (set 2) (Scorpion 2/3)", - "sc2ofool4", "Only Fools & Horses (Bellfruit) (set 5) (Scorpion 2/3)", - "sc2olgld", "Olympic Gold (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2olgld1", "Olympic Gold (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3)", - "sc2olgld1p", "Olympic Gold (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc2olgldp", "Olympic Gold (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2payr", "Pay Roll Casino (Bellfruit/Mazooma) (Scorpion 2/3)", - "sc2pe1g", "Public Enemy No.1 (Bellfruit) [German] (Scorpion 2/3)", - "sc2pick", "Pick Of The Bunch (Global) (v2.3) (Scorpion 2/3)", - "sc2pickc", "Pick Of The Bunch (Club?) (Global) (v1.9) (Scorpion 2/3)", - "sc2pickcp", "Pick Of The Bunch (Club?) (Global) (v1.9 Protocol) (Scorpion 2/3)", - "sc2pickp", "Pick Of The Bunch (Global) (v2.3 Protocol) (Scorpion 2/3)", - "sc2prem", "Premier Club Manager (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2prem1", "Premier Club Manager (Bellfruit) (set 3, UK) (Scorpion 2/3)", - "sc2prem1p", "Premier Club Manager (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)", - "sc2prem2", "Premier Club Manager (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2prom", "Along The Prom (Bellfruit) (Scorpion 2/3)", - "sc2ptytm", "Party Time (Bellfruit) (set 2) (Scorpion 2/3)", - "sc2ptytm1", "Party Time (Bellfruit) (set 1) (Scorpion 2/3)", - "sc2ptytmp", "Party Time (Bellfruit) (set 2, Protocol) (Scorpion 2/3)", - "sc2relgm", "Reel Gems (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2relgm1p", "Reel Gems (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)", - "sc2relgmp", "Reel Gems (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2rock", "How Big's Your Rock? (Global) (v1.5) (Scorpion 2/3)", - "sc2rock1", "How Big's Your Rock? (Global) (v1.4) (Scorpion 2/3)", - "sc2rock1p", "How Big's Your Rock? (Global) (v1.4 Protocol) (Scorpion 2/3)", - "sc2rocke", "How Big's Your Rock? (Global) (v?.? Euro) (Scorpion 2/3)", - "sc2rockp", "How Big's Your Rock? (Global) (v1.5 Protocol) (Scorpion 2/3)", - "sc2scc", "Safe Cracker Club (Mdm) (v4.4) (Scorpion 2/3)", - "sc2scshx", "Super Cash X (Concept)", - "sc2scshxcas", "Super Casino Cash X (Concept)", - "sc2scshxgman", "Super Cash X (Concept) (Gamesman Hardware)", - "sc2scshxstar", "Super Cash X (Concept) (Starpoint Hardware)", - "sc2sghst", "Super Ghost (Concept)", - "sc2showt", "Showtime Spectacular (Bellfruit) (set 4, UK) (Scorpion 2/3)", - "sc2showt1", "Showtime Spectacular (Bellfruit) (set 5, UK) (Scorpion 2/3)", - "sc2showt1p", "Showtime Spectacular (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3)", - "sc2showt2", "Showtime Spectacular (Bellfruit) (set 3, UK) (Scorpion 2/3)", - "sc2showt2p", "Showtime Spectacular (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)", - "sc2showt3", "Showtime Spectacular (Bellfruit) (set 2, UK) (Scorpion 2/3)", - "sc2showt3p", "Showtime Spectacular (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)", - "sc2showt4", "Showtime Spectacular (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2showt4p", "Showtime Spectacular (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2showtp", "Showtime Spectacular (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3)", - "sc2smnud", "Super Multi Nudger (Concept)", - "sc2sstar", "Super Star (Bellfruit) (set 2, UK, 3rd Triennial) (Scorpion 2/3)", - "sc2sstar1", "Super Star (Bellfruit) (set 1, UK, 2nd Triennial) (Scorpion 2/3)", - "sc2sstar1p", "Super Star (Bellfruit) (set 1, UK, 2nd Triennial, Protocol) (Scorpion 2/3)", - "sc2sstar2", "Super Star (Bellfruit) (set 4, UK, 2nd Triennial) (Scorpion 2/3)", - "sc2sstar2p", "Super Star (Bellfruit) (set 4, UK, 2nd Triennial, Protocol) (Scorpion 2/3)", - "sc2sstar3", "Super Star (Bellfruit) (set 3, UK, 2nd Triennial) (Scorpion 2/3)", - "sc2sstar3p", "Super Star (Bellfruit) (set 3, UK, 2nd Triennial, Protocol) (Scorpion 2/3)", - "sc2sstarp", "Super Star (Bellfruit) (set 2, UK, 3rd Triennial, Protocol) (Scorpion 2/3)", - "sc2suprz", "Surprise Surprize (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2suprz1", "Surprise Surprize (Bellfruit) (set 2, UK) (Scorpion 2/3)", - "sc2suprz1p", "Surprise Surprize (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3)", - "sc2suprz2", "Surprise Surprize (Bellfruit) (set 4, UK) (Scorpion 2/3)", - "sc2suprz2p", "Surprise Surprize (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3)", - "sc2suprz3", "Surprise Surprize (Bellfruit) (set 3, UK) (Scorpion 2/3)", - "sc2suprzp", "Surprise Surprize (Bellfruit) (set 1, UK, Protocol)(Scorpion 2/3)", - "sc2topwk", "Top Wack (Bellfruit) (set 1, UK, 10GBP Jackpot, 1st Triennial) (Scorpion 2/3)", - "sc2topwkp", "Top Wack (Bellfruit) (set 1, UK, 10GBP Jackpot, 1st Triennial, Protocol) (Scorpion 2/3)", - "sc2town", "Round The Town (Bellfruit) (set 6) (Scorpion 2/3)", - "sc2town1", "Round The Town (Bellfruit) (set 4) (Scorpion 2/3)", - "sc2town1a", "Round The Town (Bellfruit) (set 4, alt) (Scorpion 2/3)", - "sc2town1p", "Round The Town (Bellfruit) (set 4, Protocol) (Scorpion 2/3)", - "sc2town2", "Round The Town (Bellfruit) (set 2) (Scorpion 2/3)", - "sc2town3", "Round The Town (Bellfruit) (set 3) (Scorpion 2/3)", - "sc2town3p", "Round The Town (Bellfruit) (set 3, Protocol) (Scorpion 2/3)", - "sc2town4", "Round The Town (Bellfruit) (set 1) (Scorpion 2/3)", - "sc2town5", "Round The Town (Bellfruit) (set 5) (Scorpion 2/3)", - "sc2townp", "Round The Town (Bellfruit) (set 6, Protocol) (Scorpion 2/3)", - "sc2wembl", "Match Of The Day - Road To Wembley (Bellfruit) (set 8, UK, 10GBP Jackpot, 15RM motor) (Scorpion 2/3)", - "sc2wembl1", "Match Of The Day - Road To Wembley (Bellfruit) (set 6, UK, 15RM motor) (Scorpion 2/3)", - "sc2wembl10", "Match Of The Day - Road To Wembley (Bellfruit) (set 5, Irish, 8GBP Jackpot, 16RM motor) (Scorpion 2/3)", - "sc2wembl1p", "Match Of The Day - Road To Wembley (Bellfruit) (set 6, UK, 15RM motor, Protocol) (Scorpion 2/3)", - "sc2wembl2", "Match Of The Day - Road To Wembley (Bellfruit) (set 7, UK) (Scorpion 2/3)", - "sc2wembl2p", "Match Of The Day - Road To Wembley (Bellfruit) (set 7, UK, Protocol) (Scorpion 2/3)", - "sc2wembl4p", "Match Of The Day - Road To Wembley (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3)", - "sc2wembl5a", "Match Of The Day - Road To Wembley (Bellfruit) (set 2, UK, 16RM motor) (Scorpion 2/3)", - "sc2wembl5ap", "Match Of The Day - Road To Wembley (Bellfruit) (set 2, UK, 16RM motor, Protocol) (Scorpion 2/3)", - "sc2wembl6ap", "Match Of The Day - Road To Wembley (Bellfruit) (set 4, Arcade, 16RM motor, Protocol) (Scorpion 2/3)", - "sc2wembl7a", "Match Of The Day - Road To Wembley (Bellfruit) (set 1, UK, 8GBP Jackpot, 16RM motor) (Scorpion 2/3)", - "sc2wembl7ap", "Match Of The Day - Road To Wembley (Bellfruit) (set 5, Irish, 8GBP Jackpot, 16RM motor, Protocol) (Scorpion 2/3)", - "sc2wembl8", "Match Of The Day - Road To Wembley (Bellfruit) (set 3, UK) (Scorpion 2/3)", - "sc2wembl9", "Match Of The Day - Road To Wembley (Bellfruit) (set 4, Arcade, 16RM motor) (Scorpion 2/3)", - "sc2wemblm", "Match Of The Day - Road To Wembley (Bellfruit/Mazooma) (Scorpion 2/3)", - "sc2wemblp", "Match Of The Day - Road To Wembley (Bellfruit) (set 8, UK, 10GBP Jackpot, 15RM motor, Protocol) (Scorpion 2/3)", - "sc2winst", "Winning Streak (Bellfruit) (set 1) (Scorpion 2)", - "sc2winstb", "Winning Streak (Bellfruit) (set 3) (Scorpion 2)", - "sc2winstbp", "Winning Streak (Bellfruit) (set 3, Protocol) (Scorpion 2)", - "sc2winstd", "Winning Streak (Bellfruit) (set 2) (Scorpion 2)", - "sc2winstdp", "Winning Streak (Bellfruit) (set 2, Protocol) (Scorpion 2)", - "sc2winste", "Winning Streak (Bellfruit) (set 4) (Scorpion 2)", - "sc2winstep", "Winning Streak (Bellfruit) (set 4, Protocol) (Scorpion 2)", - "sc2winstf", "Winning Streak (Bellfruit) (set 6) (Scorpion 2)", - "sc2winstfp", "Winning Streak (Bellfruit) (set 6, Protocol) (Scorpion 2)", - "sc2winstg", "Winning Streak (Bellfruit) (set 5) (Scorpion 2)", - "sc2winstp", "Winning Streak (Bellfruit) (set 1, Protocol) (Scorpion 2)", - "sc2wwcl", "Wild West Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3)", - "sc2wwcl1", "Wild West Club (Bellfruit) (set 1, UK) (Scorpion 2/3)", - "sc2wwcl1p", "Wild West Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3)", - "sc2wwclp", "Wild West Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3)", - "sc4a40", "Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 1)", - "sc4a40a", "Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 2)", - "sc4a40b", "Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 3)", - "sc4a40c", "Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 4)", - "sc4a40cl", "Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 1)", - "sc4a40cla", "Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 2)", - "sc4a40clb", "Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 3)", - "sc4a40clc", "Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 4)", - "sc4abra", "Abracadabra (Qps) (Scorpion 4) (set 1, 041)", - "sc4abraa", "Abracadabra (Qps) (Scorpion 4) (set 2, 041)", - "sc4abrab", "Abracadabra (Qps) (Scorpion 4) (set 3, 044)", - "sc4abrac", "Abracadabra (Qps) (Scorpion 4) (set 4, 044)", - "sc4abrad", "Abracadabra (Qps) (Scorpion 4) (set 5, 014)", - "sc4abrae", "Abracadabra (Qps) (Scorpion 4) (set 6, 014)", - "sc4acesh", "Aces High (Mazooma) (Scorpion 4) (set 1)", - "sc4acesha", "Aces High (Mazooma) (Scorpion 4) (set 2)", - "sc4aceshb", "Aces High (Mazooma) (Scorpion 4) (set 3)", - "sc4aceshc", "Aces High (Mazooma) (Scorpion 4) (set 4)", - "sc4adjb", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 1)", - "sc4adjba", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 2)", - "sc4adjbb", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 3)", - "sc4adjbc", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 4)", - "sc4adjbd", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 5)", - "sc4adjbe", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 6)", - "sc4adjbf", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 7)", - "sc4adjbg", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 8)", - "sc4adjbh", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 9)", - "sc4adjbi", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (Set 10)", - "sc4adren", "Adrenalin (Mazooma) (Scorpion 4) (set 1)", - "sc4adrena", "Adrenalin (Mazooma) (Scorpion 4) (set 2)", - "sc4adrenb", "Adrenalin (Mazooma) (Scorpion 4) (set 3)", - "sc4adrenc", "Adrenalin (Mazooma) (Scorpion 4) (set 4)", - "sc4adsnt", "Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 1)", - "sc4adsnta", "Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 2)", - "sc4adwta", "Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 1)", - "sc4adwtaa", "Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 2)", - "sc4alad", "Aladdin's Cave (Mazooma) (Scorpion 4) (set 1)", - "sc4alada", "Aladdin's Cave (Mazooma) (Scorpion 4) (set 2)", - "sc4aztec", "Aztec Casino (Dutch) (Bellfruit) (Scorpion 4)", - "sc4azteca", "Aztec (Dutch) (Bellfruit) (Scorpion 4)", - "sc4bankb", "Bankety Bank (Qps) (Scorpion 4) (set 1)", - "sc4bankba", "Bankety Bank (Qps) (Scorpion 4) (set 2)", - "sc4bantm", "Bantam Of The Opera (Mazooma) (Scorpion 4) (set 1)", - "sc4bantma", "Bantam Of The Opera (Mazooma) (Scorpion 4) (set 2)", - "sc4bantmb", "Bantam Of The Opera (Mazooma) (Scorpion 4) (set 3)", - "sc4bantmc", "Bantam Of The Opera (Mazooma) (Scorpion 4) (set 4)", - "sc4bar7", "Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 1)", - "sc4bar7a", "Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 2)", - "sc4bar7b", "Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 1)", - "sc4bar7c", "Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 2)", - "sc4bar7d", "Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 3)", - "sc4bar7e", "Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 4)", - "sc4batl", "Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 1)", - "sc4batla", "Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 2)", - "sc4bb", "Bankety Bank (Qps) (Scorpion 4) (set 3)", - "sc4bba", "Bankety Bank (Qps) (Scorpion 4) (set 4)", - "sc4bbclb", "Bankety Bank Club (V1.0) (Qps) (Scorpion 4)", - "sc4bbclba", "Bankety Bank Club (V1.1) (Qps) (Scorpion 4)", - "sc4bbclbb", "Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 1)", - "sc4bbclbc", "Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 2)", - "sc4bblas", "Big Blaster (Mazooma) (Scorpion 4) (set 1)", - "sc4bblasa", "Big Blaster (Mazooma) (Scorpion 4) (set 2)", - "sc4bblasb", "Big Blaster (Mazooma) (Scorpion 4) (set 3)", - "sc4bblasc", "Big Blaster (Mazooma) (Scorpion 4) (set 4)", - "sc4bblasd", "Big Blaster (Mazooma) (Scorpion 4) (set 5)", - "sc4bblase", "Big Blaster (Mazooma) (Scorpion 4) (set 6)", - "sc4bblasf", "Big Blaster (Mazooma) (Scorpion 4) (set 7)", - "sc4bbust", "Blockbuster (Mazooma) (Scorpion 4)", - "sc4bed", "Bedazzled (Mazooma) (Scorpion 4) (set 1)", - "sc4beda", "Bedazzled (Mazooma) (Scorpion 4) (set 2)", - "sc4bedb", "Bedazzled (Mazooma) (Scorpion 4) (set 3)", - "sc4bedc", "Bedazzled (Mazooma) (Scorpion 4) (set 4)", - "sc4bedcl", "Bedazzled Club (Mazooma) (Scorpion 4) (set 1)", - "sc4bedcla", "Bedazzled Club (Mazooma) (Scorpion 4) (set 2)", - "sc4bedclb", "Bedazzled Club (Mazooma) (Scorpion 4) (set 3)", - "sc4bedclc", "Bedazzled Club (Mazooma) (Scorpion 4) (set 4)", - "sc4bedcld", "Bedazzled Club (Mazooma) (Scorpion 4) (set 5)", - "sc4bedd", "Bedazzled (Mazooma) (Scorpion 4) (set 5)", - "sc4bede", "Bedazzled (Mazooma) (Scorpion 4) (set 6)", - "sc4bgold", "Black Gold (Nova) (Scorpion 4) (set 1)", - "sc4bgolda", "Black Gold (Nova) (Scorpion 4) (set 2)", - "sc4bigdl", "Big Deal (Qps) (Scorpion 4) (set 1)", - "sc4bigdla", "Big Deal (Qps) (Scorpion 4) (set 2)", - "sc4bingb", "Bingo Belle (Mazooma) (Scorpion 4) (set 1)", - "sc4bingba", "Bingo Belle (Mazooma) (Scorpion 4) (set 2)", - "sc4blast", "Blast Off (011) (Qps) (Scorpion 4) (set 1)", - "sc4blasta", "Blast Off (041) (Qps) (Scorpion 4) (set 1)", - "sc4blastb", "Blast Off (011) (Qps) (Scorpion 4) (set 2)", - "sc4blastc", "Blast Off (041) (Qps) (Scorpion 4) (set 2)", - "sc4blastd", "Blast Off (042) (Qps) (Scorpion 4) (set 1)", - "sc4blaste", "Blast Off (042) (Qps) (Scorpion 4) (set 2)", - "sc4blokq", "Blockbuster (Qps) (Scorpion 4) (set 1)", - "sc4blokqa", "Blockbuster (Qps) (Scorpion 4) (set 2)", - "sc4blokqb", "Blockbuster (Qps) (Scorpion 4) (set 3)", - "sc4blokqc", "Blockbuster (Qps) (Scorpion 4) (set 4)", - "sc4blokqd", "Blockbuster (Qps) (Scorpion 4) (set 5)", - "sc4blokqe", "Blockbuster (Qps) (Scorpion 4) (set 6)", - "sc4blue", "Blue Rinse (Mazooma) (Scorpion 4) (set 1)", - "sc4bluea", "Blue Rinse (Mazooma) (Scorpion 4) (set 2)", - "sc4blueb", "Blue Rinse (Mazooma) (Scorpion 4) (set 3)", - "sc4bluec", "Blue Rinse (Mazooma) (Scorpion 4) (set 4)", - "sc4blued", "Blue Rinse (Mazooma) (Scorpion 4) (set 5)", - "sc4bluee", "Blue Rinse (Mazooma) (Scorpion 4) (set 6)", - "sc4bob", "Bobby Dazzler (Mazooma) (Scorpion 4) (set 1)", - "sc4boba", "Bobby Dazzler (Mazooma) (Scorpion 4) (set 2)", - "sc4bobb", "Bobby Dazzler (Mazooma) (Scorpion 4) (set 3)", - "sc4bobc", "Bobby Dazzler (Mazooma) (Scorpion 4) (set 4)", - "sc4bobcl", "Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 1)", - "sc4bobcla", "Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 2)", - "sc4bobd", "Bobby Dazzler (Mazooma) (Scorpion 4) (set 5)", - "sc4bobe", "Bobby Dazzler (Mazooma) (Scorpion 4) (set 6)", - "sc4bobf", "Bobby Dazzler (Mazooma) (Scorpion 4) (set 7)", - "sc4bobg", "Bobby Dazzler (Mazooma) (Scorpion 4) (set 8)", - "sc4bobh", "Bobby Dazzler (Mazooma) (Scorpion 4) (set 9)", - "sc4bobi", "Bobby Dazzler (Mazooma) (Scorpion 4) (set 10)", - "sc4bonbx", "Bar X (Mazooma) (Scorpion 4) (set 1)", - "sc4bonbxa", "Bar X (Mazooma) (Scorpion 4) (set 6)", - "sc4bonbxb", "Bar X (Mazooma) (Scorpion 4) (set 7)", - "sc4bonbxc", "Bar X (Mazooma) (Scorpion 4) (set 2)", - "sc4bonbxd", "Bar X (Mazooma) (Scorpion 4) (set 3)", - "sc4bonbxe", "Bar X (Mazooma) (Scorpion 4) (set 4)", - "sc4bonbxf", "Bar X (Mazooma) (Scorpion 4) (set 5)", - "sc4bonbxg", "Bar X (Mazooma) (Scorpion 4) (set 8)", - "sc4bonbxh", "Bar X (Mazooma) (Scorpion 4) (set 9)", - "sc4bonbxi", "Bar X (Mazooma) (Scorpion 4) (set 10)", - "sc4bonbxj", "Bar X (Mazooma) (Scorpion 4) (set 11)", - "sc4bonbxk", "Bar X (Mazooma) (Scorpion 4) (set 12)", - "sc4bonbxl", "Bar X (Mazooma) (Scorpion 4) (set 13)", - "sc4boomb", "Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 1)", - "sc4boomba", "Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 2)", - "sc4botn", "Back Of The Net (Qps) (Scorpion 4) (set 1, 011)", - "sc4botna", "Back Of The Net (Qps) (Scorpion 4) (set 2, 011)", - "sc4bpb", "Bully's Prize Board (Bellfruit) (Scorpion 4) (set 1)", - "sc4bpba", "Bully's Prize Board (Bellfruit) (Scorpion 4) (set 3)", - "sc4bpbb", "Bully's Prize Board (Bellfruit) (Scorpion 4) (set 4)", - "sc4bpbc", "Bully's Prize Board (Bellfruit) (Scorpion 4) (set 2)", - "sc4bpbd", "Bully's Prize Board (Bellfruit) (Scorpion 4) (set 5)", - "sc4bpbe", "Bully's Prize Board (Bellfruit) (Scorpion 4) (set 6)", - "sc4brix", "Brix (German) (Nova) (Scorpion 4) (set 1)", - "sc4brixa", "Brix (German) (Nova) (Scorpion 4) (set 2)", - "sc4brixb", "Brix (German) (Nova) (Scorpion 4) (set 3)", - "sc4brkfs", "The Big Breakfast (BFM) (Scorpion 4) (set 1)", - "sc4brkfsa", "The Big Breakfast (BFM) (Scorpion 4) (set 2)", - "sc4brkfsb", "The Big Breakfast (BFM) (Scorpion 4) (set 3)", - "sc4brkfsc", "The Big Breakfast (BFM) (Scorpion 4) (set 4)", - "sc4brksp", "Break The Spell (Mazooma) (Scorpion 4) (set 1)", - "sc4brkspa", "Break The Spell (Mazooma) (Scorpion 4) (set 2)", - "sc4broll", "Bank Roll (Mazooma) (Scorpion 4) (set 1)", - "sc4brolla", "Bank Roll (Mazooma) (Scorpion 4) (set 2)", - "sc4brollb", "Bank Roll (Mazooma) (Scorpion 4) (set 3)", - "sc4brollc", "Bank Roll (Mazooma) (Scorpion 4) (set 4)", - "sc4bsp", "Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 1)", - "sc4bspa", "Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 2)", - "sc4bspb", "Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 3)", - "sc4bspc", "Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 4)", - "sc4bspd", "Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 5)", - "sc4bspe", "Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 1)", - "sc4bspf", "Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 2)", - "sc4bspg", "Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 6)", - "sc4bugs", "Bugs Money (Bellfruit) (Scorpion 4) (set 1)", - "sc4bugsa", "Bugs Money (Bellfruit) (Scorpion 4) (set 2)", - "sc4bugsb", "Bugs Money (Bellfruit) (Scorpion 4) (set 3)", - "sc4bugsc", "Bugs Money (Bellfruit) (Scorpion 4) (set 4)", - "sc4bulcl", "Bullseye Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4bulcla", "Bullseye Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4bulclb", "Bullseye Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4bulclc", "Bullseye Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4bulcld", "Bullseye Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4bulcle", "Bullseye Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4bulclf", "Bullseye Club (Bellfruit) (Scorpion 4) (set 7)", - "sc4bulclg", "Bullseye Club (Bellfruit) (Scorpion 4) (set 8)", - "sc4bulclh", "Bullseye Club (Bellfruit) (Scorpion 4) (set 9)", - "sc4bulcli", "Bullseye Club (Bellfruit) (Scorpion 4) (set 10)", - "sc4bulcs", "Bullseye Classic (Bellfruit) (Scorpion 4) (set 1)", - "sc4bulcsa", "Bullseye Classic (Bellfruit) (Scorpion 4) (set 2)", - "sc4bulcsb", "Bullseye Classic (Bellfruit) (Scorpion 4) (set 3)", - "sc4bulcsc", "Bullseye Classic (Bellfruit) (Scorpion 4) (set 4)", - "sc4bull", "Bullseye (Bellfruit) (Scorpion 4) (set 1)", - "sc4bulla", "Bullseye (Bellfruit) (Scorpion 4) (set 2)", - "sc4bullb", "Bullseye (Bellfruit) (Scorpion 4) (set 3)", - "sc4bullc", "Bullseye (Bellfruit) (Scorpion 4) (set 4)", - "sc4butch", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 1)", - "sc4butcha", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 2)", - "sc4butchb", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 3)", - "sc4butchc", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 4)", - "sc4butchd", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 5)", - "sc4butche", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 6)", - "sc4butchf", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 7)", - "sc4butchg", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 8)", - "sc4bwow", "Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 1)", - "sc4bwowa", "Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 2)", - "sc4cabin", "Cabin Fever (Mazooma) (Scorpion 4) (set 1)", - "sc4cabina", "Cabin Fever (Mazooma) (Scorpion 4) (set 2)", - "sc4cabinb", "Cabin Fever (Mazooma) (Scorpion 4) (set 3)", - "sc4cabinc", "Cabin Fever (Mazooma) (Scorpion 4) (set 4)", - "sc4cabind", "Cabin Fever (Mazooma) (Scorpion 4) (set 5)", - "sc4cabine", "Cabin Fever (Mazooma) (Scorpion 4) (set 6)", - "sc4cabinf", "Cabin Fever (Mazooma) (Scorpion 4) (set 7)", - "sc4cabing", "Cabin Fever (Mazooma) (Scorpion 4) (set 8)", - "sc4cabinh", "Cabin Fever (Mazooma) (Scorpion 4) (set 9)", - "sc4cabini", "Cabin Fever (Mazooma) (Scorpion 4) (set 10)", - "sc4cabinj", "Cabin Fever (Mazooma) (Scorpion 4) (set 11)", - "sc4cabink", "Cabin Fever (Mazooma) (Scorpion 4) (set 12)", - "sc4cabinl", "Cabin Fever (Mazooma) (Scorpion 4) (set 13)", - "sc4cabinm", "Cabin Fever (Mazooma) (Scorpion 4) (set 14)", - "sc4cad", "Cash Adder (V1.0) (Qps) (Scorpion 4) (set 1)", - "sc4cada", "Cash Adder (V1.0) (Qps) (Scorpion 4) (set 2)", - "sc4cadb", "Cash Adder (V011) (Qps) (Scorpion 4) (set 1)", - "sc4cadc", "Cash Adder (V041) (Qps) (Scorpion 4) (set 1)", - "sc4cadcl", "Cash Adder Club (411) (Qps) (Scorpion 4) (set 1)", - "sc4cadcla", "Cash Adder Club (411) (Qps) (Scorpion 4) (set 2)", - "sc4cadd", "Cash Adder (V012) (Qps) (Scorpion 4) (set 1)", - "sc4cade", "Cash Adder (V042) (Qps) (Scorpion 4) (set 1)", - "sc4cadf", "Cash Adder (V1.0) (Qps) (Scorpion 4) (set 3)", - "sc4cadg", "Cash Adder (V1.0) (Qps) (Scorpion 4) (set 4)", - "sc4cadh", "Cash Adder (V011) (Qps) (Scorpion 4) (set 2)", - "sc4cadi", "Cash Adder (V041) (Qps) (Scorpion 4) (set 2)", - "sc4cadj", "Cash Adder (V012) (Qps) (Scorpion 4) (set 2)", - "sc4cadk", "Cash Adder (V042) (Qps) (Scorpion 4) (set 2)", - "sc4cadl", "Cash Adder (V013) (Qps) (Scorpion 4) (set 1)", - "sc4cadm", "Cash Adder (V013) (Qps) (Scorpion 4) (set 2)", - "sc4cadn", "Cash Adder (V014) (Qps) (Scorpion 4) (set 1)", - "sc4cado", "Cash Adder (V043) (Qps) (Scorpion 4) (set 1)", - "sc4cadp", "Cash Adder (V014) (Qps) (Scorpion 4) (set 2)", - "sc4cadq", "Cash Adder (V043) (Qps) (Scorpion 4) (set 2)", - "sc4canca", "Can Can Cash Casino (Mazooma) (Scorpion 4) (set 1)", - "sc4cancaa", "Can Can Cash Casino (Mazooma) (Scorpion 4) (set 2)", - "sc4cancab", "Can Can Cash Casino (Mazooma) (Scorpion 4) (set 3)", - "sc4cancac", "Can Can Cash Casino (Mazooma) (Scorpion 4) (set 4)", - "sc4captn", "Captain Cash (Qps) (Scorpion 4) (set 1)", - "sc4captna", "Captain Cash (Qps) (Scorpion 4) (set 4)", - "sc4captnb", "Captain Cash (Qps) (Scorpion 4) (set 2)", - "sc4captnc", "Captain Cash (Qps) (Scorpion 4) (set 3)", - "sc4captnd", "Captain Cash (Qps) (Scorpion 4) (set 5)", - "sc4captne", "Captain Cash (Qps) (Scorpion 4) (set 6)", - "sc4captnf", "Captain Cash (Qps) (Scorpion 4) (set 7)", - "sc4cari", "Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 1)", - "sc4caria", "Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 2)", - "sc4carib", "Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 3)", - "sc4caric", "Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 4)", - "sc4carid", "Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 5)", - "sc4carie", "Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 6)", - "sc4cariq", "Caribbean Cash (Qps) (Scorpion 4) (set 1)", - "sc4cariqa", "Caribbean Cash (Qps) (Scorpion 4) (set 2)", - "sc4cariqb", "Caribbean Cash (Qps) (Scorpion 4) (set 3)", - "sc4cariqc", "Caribbean Cash (Qps) (Scorpion 4) (set 4)", - "sc4cariqd", "Caribbean Cash (Qps) (Scorpion 4) (set 5)", - "sc4cariqe", "Caribbean Cash (Qps) (Scorpion 4) (set 6)", - "sc4cariqf", "Caribbean Cash (Qps) (Scorpion 4) (set 7)", - "sc4cariqg", "Caribbean Cash (Qps) (Scorpion 4) (set 8)", - "sc4carry", "Carry On Winning (Bellfruit) (Scorpion 4) (set 1)", - "sc4carrya", "Carry On Winning (Bellfruit) (Scorpion 4) (set 2)", - "sc4cashg", "Cashanova (German) (Mazooma / Nova) (Scorpion 4)", - "sc4cashm", "Cashanova (Mazooma) (Scorpion 4) (set 1)", - "sc4cashma", "Cashanova (Mazooma) (Scorpion 4) (set 2)", - "sc4cashmb", "Cashanova (Mazooma) (Scorpion 4) (set 3)", - "sc4cashmc", "Cashanova (Mazooma) (Scorpion 4) (set 4)", - "sc4cashmd", "Cashanova (Mazooma) (Scorpion 4) (set 5)", - "sc4cashme", "Cashanova (Mazooma) (Scorpion 4) (set 6)", - "sc4cashn", "Cashanova (Dutch) (Mazooma / Eurocoin) (Scorpion 4)", - "sc4casry", "Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 1)", - "sc4casrya", "Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 1)", - "sc4casryb", "Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 2)", - "sc4casryc", "Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 2)", - "sc4casryd", "Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 1)", - "sc4casrye", "Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 2)", - "sc4casxt", "Casino Xtravaganza (Mazooma) (Scorpion 4) (set 1)", - "sc4casxta", "Casino Xtravaganza (Mazooma) (Scorpion 4) (set 2)", - "sc4casxtb", "Casino Xtravaganza (Mazooma) (Scorpion 4) (set 3)", - "sc4casxtc", "Casino Xtravaganza (Mazooma) (Scorpion 4) (set 4)", - "sc4casxtd", "Casino Xtravaganza (Mazooma) (Scorpion 4) (set 5)", - "sc4casxte", "Casino Xtravaganza (Mazooma) (Scorpion 4) (set 6)", - "sc4cbaz", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4cbaza", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4cbazb", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4cbazc", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4cbazd", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4cbaze", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4cbazf", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 7)", - "sc4cbazg", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 8)", - "sc4cbazh", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 9)", - "sc4cbazi", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 10)", - "sc4cbazj", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 11)", - "sc4cbazk", "Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 12)", - "sc4cblas", "Cash Blast (Voodoo Games) (Scorpion 4) (set 1)", - "sc4cblasa", "Cash Blast (Voodoo Games) (Scorpion 4) (set 2)", - "sc4cburn", "Cash 'n' Burn (Qps) (Scorpion 4) (set 1)", - "sc4cburna", "Cash 'n' Burn (Qps) (Scorpion 4) (set 2)", - "sc4ccc", "Criss Cross Crazy (Dutch) (Bellfruit) (Scorpion 4)", - "sc4cccsh", "Criss Cross Cash (Mazooma) (Scorpion 4) (set 1)", - "sc4cccsha", "Criss Cross Cash (Mazooma) (Scorpion 4) (set 2)", - "sc4cccshb", "Criss Cross Cash (Mazooma) (Scorpion 4) (set 3)", - "sc4cccshc", "Criss Cross Cash (Mazooma) (Scorpion 4) (set 4)", - "sc4cccshd", "Criss Cross Cash (Mazooma) (Scorpion 4) (set 5)", - "sc4cccshe", "Criss Cross Cash (Mazooma) (Scorpion 4) (set 6)", - "sc4cckey", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 1)", - "sc4cckeya", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 2)", - "sc4cckeyb", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 3)", - "sc4cckeyc", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 4)", - "sc4cckeyd", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 5)", - "sc4cckeye", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 6)", - "sc4cckeyf", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 7)", - "sc4cckeyg", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 8)", - "sc4cckeyh", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 9)", - "sc4cckeyi", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 11)", - "sc4cckeyj", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 10)", - "sc4cckeyk", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 12)", - "sc4cckeyl", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 13)", - "sc4cckeym", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 14)", - "sc4cckeyn", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 15)", - "sc4cckeyo", "Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 16)", - "sc4cclas", "Club Class (Bellfruit) (Scorpion 4) (set 1)", - "sc4cclas0", "Club Class (Bellfruit) (Scorpion 4) (set 24)", - "sc4cclas1", "Club Class (Bellfruit) (Scorpion 4) (set 25)", - "sc4cclas2", "Club Class (Bellfruit) (Scorpion 4) (set 26)", - "sc4cclas3", "Club Class (Bellfruit) (Scorpion 4) (set 27)", - "sc4cclas4", "Club Class (Bellfruit) (Scorpion 4) (set 28)", - "sc4cclasa", "Club Class (Bellfruit) (Scorpion 4) (set 2)", - "sc4cclasb", "Club Class (Bellfruit) (Scorpion 4) (set 3)", - "sc4cclasc", "Club Class (Bellfruit) (Scorpion 4) (set 4)", - "sc4cclasd", "Club Class (Bellfruit) (Scorpion 4) (set 5)", - "sc4cclase", "Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 1)", - "sc4cclasf", "Club Class (Bellfruit) (Scorpion 4) (set 6)", - "sc4cclasg", "Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 2)", - "sc4cclash", "Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 3)", - "sc4cclasi", "Club Class (Bellfruit) (Scorpion 4) (set 7)", - "sc4cclasj", "Club Class (Bellfruit) (Scorpion 4) (set 8)", - "sc4cclask", "Club Class (Bellfruit) (Scorpion 4) (set 9)", - "sc4cclasl", "Club Class (Bellfruit) (Scorpion 4) (set 10)", - "sc4cclasm", "Club Class (Bellfruit) (Scorpion 4) (set 11)", - "sc4cclasn", "Club Class (Bellfruit) (Scorpion 4) (set 12)", - "sc4cclaso", "Club Class (Bellfruit) (Scorpion 4) (set 13)", - "sc4cclasp", "Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 4)", - "sc4cclasq", "Club Class (Bellfruit) (Scorpion 4) (set 14)", - "sc4cclasr", "Club Class (Bellfruit) (Scorpion 4) (set 15)", - "sc4cclass", "Club Class (Bellfruit) (Scorpion 4) (set 16)", - "sc4cclast", "Club Class (Bellfruit) (Scorpion 4) (set 17)", - "sc4cclasu", "Club Class (Bellfruit) (Scorpion 4) (set 18)", - "sc4cclasv", "Club Class (Bellfruit) (Scorpion 4) (set 19)", - "sc4cclasw", "Club Class (Bellfruit) (Scorpion 4) (set 20)", - "sc4cclasx", "Club Class (Bellfruit) (Scorpion 4) (set 21)", - "sc4cclasy", "Club Class (Bellfruit) (Scorpion 4) (set 22)", - "sc4cclasz", "Club Class (Bellfruit) (Scorpion 4) (set 23)", - "sc4cclim", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 1)", - "sc4cclima", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 2)", - "sc4cclimb", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 3)", - "sc4cclimc", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 4)", - "sc4cclimd", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 5)", - "sc4cclime", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 13)", - "sc4cclimf", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 14)", - "sc4cclimg", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 15)", - "sc4cclimh", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 6)", - "sc4cclimi", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 7)", - "sc4cclimj", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 16)", - "sc4cclimk", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 17)", - "sc4ccliml", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 18)", - "sc4cclimm", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 8)", - "sc4cclimn", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 9)", - "sc4cclimo", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 10)", - "sc4cclimp", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 11)", - "sc4cclimq", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 19)", - "sc4cclimr", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 20)", - "sc4cclims", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 12)", - "sc4cclimt", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 21)", - "sc4cclimu", "Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 22)", - "sc4ccogs", "Clever Cogs (Qps) (Scorpion 4)", - "sc4cconx", "Cash Connexion (Mazooma) (Scorpion 4) (set 1)", - "sc4cconxa", "Cash Connexion (Mazooma) (Scorpion 4) (set 2)", - "sc4cconxb", "Cash Connexion (Mazooma) (Scorpion 4) (set 3)", - "sc4cconxc", "Cash Connexion (Mazooma) (Scorpion 4) (set 4)", - "sc4cconxd", "Cash Connexion (Mazooma) (Scorpion 4) (set 5)", - "sc4ccrus", "Cash Crusaders (Mazooma) (Scorpion 4) (set 1)", - "sc4ccrusa", "Cash Crusaders (Mazooma) (Scorpion 4) (set 2)", - "sc4ccrusb", "Cash Crusaders (Mazooma) (Scorpion 4) (set 3)", - "sc4celeb", "I'm A Celebrity (Bellfruit) (Scorpion 4) (set 1)", - "sc4celeba", "I'm A Celebrity (Bellfruit) (Scorpion 4) (set 2)", - "sc4celebb", "I'm A Celebrity (Bellfruit) (Scorpion 4) (set 3)", - "sc4celebc", "I'm A Celebrity (Bellfruit) (Scorpion 4) (set 4)", - "sc4celebd", "I'm A Celebrity (Bellfruit) (Scorpion 4) (set 5)", - "sc4cerup", "Cash Eruption (Mazooma) (Scorpion 4)", - "sc4cexpl", "Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 1)", - "sc4cexpla", "Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 2)", - "sc4cexplb", "Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 3)", - "sc4cexplc", "Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 4)", - "sc4cexpld", "Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 1)", - "sc4cexple", "Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 2)", - "sc4cexplf", "Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 5)", - "sc4cexplg", "Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 6)", - "sc4cfcas", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 1)", - "sc4cfcas0", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 18)", - "sc4cfcas1", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 19)", - "sc4cfcas2", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 20)", - "sc4cfcas3", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 9)", - "sc4cfcas4", "Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 1)", - "sc4cfcas5", "Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 2)", - "sc4cfcas6", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 21)", - "sc4cfcas7", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 22)", - "sc4cfcas8", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 23)", - "sc4cfcas9", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 10)", - "sc4cfcasa", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 2)", - "sc4cfcasaa", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 24)", - "sc4cfcasab", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 11)", - "sc4cfcasac", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 12)", - "sc4cfcasad", "Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 3)", - "sc4cfcasae", "Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 4)", - "sc4cfcasaf", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 25)", - "sc4cfcasag", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 26)", - "sc4cfcasah", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 27)", - "sc4cfcasai", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 28)", - "sc4cfcasaj", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 29)", - "sc4cfcasak", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 30)", - "sc4cfcasal", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 31)", - "sc4cfcasam", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 32)", - "sc4cfcasb", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 3)", - "sc4cfcasc", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 5)", - "sc4cfcasd", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 6)", - "sc4cfcase", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 4)", - "sc4cfcasf", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 5)", - "sc4cfcasg", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 7)", - "sc4cfcash", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 8)", - "sc4cfcasi", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 1)", - "sc4cfcasj", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 2)", - "sc4cfcask", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 6)", - "sc4cfcasl", "Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 2)", - "sc4cfcasm", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 7)", - "sc4cfcasn", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 3)", - "sc4cfcaso", "Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 4)", - "sc4cfcasp", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 8)", - "sc4cfcasq", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 9)", - "sc4cfcasr", "Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 1)", - "sc4cfcass", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 10)", - "sc4cfcast", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 11)", - "sc4cfcasu", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 12)", - "sc4cfcasv", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 13)", - "sc4cfcasw", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 14)", - "sc4cfcasx", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 15)", - "sc4cfcasy", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 16)", - "sc4cfcasz", "Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 17)", - "sc4cfcla", "Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 1)", - "sc4cfclab", "Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 2)", - "sc4cfclac", "Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 3)", - "sc4cfclad", "Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 4)", - "sc4cfclae", "Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 5)", - "sc4cfclaf", "Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 6)", - "sc4cfclb", "Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4cfclba", "Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4cfclbb", "Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4cfdu", "Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 1)", - "sc4cfdua", "Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 2)", - "sc4cfdub", "Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 3)", - "sc4cfduc", "Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 4)", - "sc4cfgcl", "Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4cfgcla", "Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4cfgclb", "Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4cfgclc", "Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4cfqps", "Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 1)", - "sc4cfqpsa", "Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 4)", - "sc4cfqpsb", "Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 2)", - "sc4cfqpsc", "Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 1)", - "sc4cfqpsd", "Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 3)", - "sc4cfqpse", "Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 2)", - "sc4cfqpsf", "Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 3)", - "sc4cfqpsg", "Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 4)", - "sc4cfqpsh", "Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 5)", - "sc4cfqpsi", "Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 6)", - "sc4cfqpsj", "Crazy Fruits SP98 (PR4613) (Qps) (Scorpion 4)", - "sc4cfqpsk", "Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 1)", - "sc4cfqpsl", "Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 1)", - "sc4cfqpsm", "Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 1)", - "sc4cfqpsn", "Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 2)", - "sc4cfqpso", "Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 2)", - "sc4cfqpsp", "Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 3)", - "sc4chain", "Chain Reaction (Bellfruit) (Scorpion 4) (set 1)", - "sc4chaina", "Chain Reaction (Bellfruit) (Scorpion 4) (set 2)", - "sc4chainb", "Chain Reaction (Bellfruit) (Scorpion 4) (set 3)", - "sc4chainc", "Chain Reaction (Bellfruit) (Scorpion 4) (set 4)", - "sc4chand", "Cash In Hand (Bellfruit) (Scorpion 4) (set 1)", - "sc4chanda", "Cash In Hand (Bellfruit) (Scorpion 4) (set 2)", - "sc4chandb", "Cash In Hand (Bellfruit) (Scorpion 4) (set 3)", - "sc4chandc", "Cash In Hand (Bellfruit) (Scorpion 4) (set 4)", - "sc4chavi", "Chav It (Bellfruit) (Scorpion 4) (set 1)", - "sc4chavia", "Chav It (Bellfruit) (Scorpion 4) (set 2)", - "sc4chavib", "Chav It (Bellfruit) (Scorpion 4) (set 3)", - "sc4chavic", "Chav It (Bellfruit) (Scorpion 4) (set 4)", - "sc4chavid", "Chav It (Bellfruit) (Scorpion 4) (set 5)", - "sc4chavie", "Chav It (Bellfruit) (Scorpion 4) (set 6)", - "sc4chavif", "Chav It (Bellfruit) (Scorpion 4) (set 7)", - "sc4chavig", "Chav It (Bellfruit) (Scorpion 4) (set 8)", - "sc4chavy", "Chavy Chase (Mazooma) (Scorpion 4) (set 1)", - "sc4chavya", "Chavy Chase (Mazooma) (Scorpion 4) (set 2)", - "sc4chavyb", "Chavy Chase (Mazooma) (Scorpion 4) (set 3)", - "sc4chavyc", "Chavy Chase (Mazooma) (Scorpion 4) (set 4)", - "sc4chavyd", "Chavy Chase (Mazooma) (Scorpion 4) (set 5)", - "sc4chavye", "Chavy Chase (Mazooma) (Scorpion 4) (set 6)", - "sc4chavyf", "Chavy Chase (Mazooma) (Scorpion 4) (set 7)", - "sc4chavyg", "Chavy Chase (Mazooma) (Scorpion 4) (set 8)", - "sc4chick", "Chickendales (Mazooma) (Scorpion 4)", - "sc4chub", "Chubby Does Vegas (Mazooma) (Scorpion 4) (set 1)", - "sc4chuba", "Chubby Does Vegas (Mazooma) (Scorpion 4) (set 2)", - "sc4chubb", "Chubby Does Vegas (Mazooma) (Scorpion 4) (set 3)", - "sc4cinv", "Cash Invaders (Bellfruit) (Scorpion 4) (set 1)", - "sc4cinva", "Cash Invaders (Bellfruit) (Scorpion 4) (set 2)", - "sc4cinvb", "Cash Invaders (Bellfruit) (Scorpion 4) (set 3)", - "sc4cinvc", "Cash Invaders (Bellfruit) (Scorpion 4) (set 4)", - "sc4cinvd", "Cash Invaders (Bellfruit) (Scorpion 4) (set 5)", - "sc4cinve", "Cash Invaders (Bellfruit) (Scorpion 4) (set 6)", - "sc4cinvf", "Cash Invaders (Bellfruit) (Scorpion 4) (set 7)", - "sc4cinvg", "Cash Invaders (Bellfruit) (Scorpion 4) (set 8)", - "sc4cinvh", "Cash Invaders (Bellfruit) (Scorpion 4) (set 9)", - "sc4cinvi", "Cash Invaders (Bellfruit) (Scorpion 4) (set 10)", - "sc4cj", "Cool Jewels (Bellfruit) (Scorpion 4) (set 1)", - "sc4cja", "Cool Jewels (Bellfruit) (Scorpion 4) (set 2)", - "sc4cjb", "Cool Jewels (Bellfruit) (Scorpion 4) (set 3)", - "sc4cjc", "Cool Jewels (Bellfruit) (Scorpion 4) (set 4)", - "sc4cjcl", "Cool Jewels Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4cjcla", "Cool Jewels Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4cjclb", "Cool Jewels Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4cjclc", "Cool Jewels Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4cjcld", "Cool Jewels Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4cjcle", "Cool Jewels Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4cjclf", "Cool Jewels Club (Bellfruit) (Scorpion 4) (set 7)", - "sc4cjd", "Cool Jewels (Bellfruit) (Scorpion 4) (set 5)", - "sc4ckx", "Casino King X (Mazooma) (Scorpion 4) (Top Box, set 1)", - "sc4ckxa", "Casino King X (Mazooma) (Scorpion 4) (Base, set 1)", - "sc4ckxb", "Casino King X (Mazooma) (Scorpion 4) (Base, set 2)", - "sc4ckxc", "Casino King X (Mazooma) (Scorpion 4) (Base, set 3)", - "sc4ckxd", "Casino King X (Mazooma) (Scorpion 4) (Top Box, set 2)", - "sc4ckxe", "Casino King X (Mazooma) (Scorpion 4) (Base, set 4)", - "sc4ckxf", "Casino King X (Mazooma) (Scorpion 4) (Base, set 5)", - "sc4ckxg", "Casino King X (Mazooma) (Scorpion 4) (Base, set 6)", - "sc4cla7", "Classic 7s (Mazooma) (Scorpion 4) (set 1)", - "sc4cla7a", "Classic 7s (Mazooma) (Scorpion 4) (set 2)", - "sc4cla7b", "Classic 7s (Mazooma) (Scorpion 4) (set 3)", - "sc4cla7c", "Classic 7s (Mazooma) (Scorpion 4) (set 4)", - "sc4clash", "Cash On The Lash (Mazooma) (Scorpion 4) (set 1)", - "sc4clasha", "Cash On The Lash (Mazooma) (Scorpion 4) (set 2)", - "sc4clashb", "Cash On The Lash (Mazooma) (Scorpion 4) (set 3)", - "sc4clashc", "Cash On The Lash (Mazooma) (Scorpion 4) (set 4)", - "sc4clashd", "Cash On The Lash (Mazooma) (Scorpion 4) (set 5)", - "sc4clashe", "Cash On The Lash (Mazooma) (Scorpion 4) (set 6)", - "sc4clashf", "Cash On The Lash (Mazooma) (Scorpion 4) (set 7)", - "sc4clashg", "Cash On The Lash (Mazooma) (Scorpion 4) (set 8)", - "sc4clbmn", "Club Moneybags (Bellfruit) (Scorpion 4) (set 1)", - "sc4clbmna", "Club Moneybags (Bellfruit) (Scorpion 4) (set 2)", - "sc4clbmnb", "Club Moneybags (Bellfruit) (Scorpion 4) (set 3)", - "sc4clbmnc", "Club Moneybags (Bellfruit) (Scorpion 4) (set 4)", - "sc4clbtm", "Club Temptation (Bellfruit) (Scorpion 4) (set 1)", - "sc4clbtma", "Club Temptation (Bellfruit) (Scorpion 4) (set 2)", - "sc4clbtmb", "Club Temptation (Bellfruit) (Scorpion 4) (set 3)", - "sc4clbtmc", "Club Temptation (Bellfruit) (Scorpion 4) (set 4)", - "sc4clbtmd", "Club Temptation (Bellfruit) (Scorpion 4) (set 5)", - "sc4clbtme", "Club Temptation (Bellfruit) (Scorpion 4) (set 6)", - "sc4clclo", "Club Clouseau (QPS) (Scorpion 4)", - "sc4clown", "Clown Around (Bellfruit) (Scorpion 4) (set 1)", - "sc4clowna", "Clown Around (Bellfruit) (Scorpion 4) (set 2)", - "sc4clownb", "Clown Around (Bellfruit) (Scorpion 4) (set 3)", - "sc4clownc", "Clown Around (Bellfruit) (Scorpion 4) (set 4)", - "sc4clownd", "Clown Around (Bellfruit) (Scorpion 4) (set 5)", - "sc4clowne", "Clown Around (Bellfruit) (Scorpion 4) (set 6)", - "sc4clownf", "Clown Around (Bellfruit) (Scorpion 4) (set 7)", - "sc4clowng", "Clown Around (Bellfruit) (Scorpion 4) (set 8)", - "sc4clucl", "Cluedo Club (Mazooma) (Scorpion 4) (set 1)", - "sc4clucla", "Cluedo Club (Mazooma) (Scorpion 4) (set 2)", - "sc4clue", "Cluedo (Mazooma) (Scorpion 4) (set 1)", - "sc4cluea", "Cluedo (Mazooma) (Scorpion 4) (set 2)", - "sc4clueb", "Cluedo (Mazooma) (Scorpion 4) (set 3)", - "sc4cluec", "Cluedo (Mazooma) (Scorpion 4) (set 4)", - "sc4clued", "Cluedo (Mazooma) (Scorpion 4) (set 5)", - "sc4cluee", "Cluedo (Mazooma) (Scorpion 4) (set 6)", - "sc4cluef", "Cluedo (Mazooma) (Scorpion 4) (set 7)", - "sc4clueg", "Cluedo (Mazooma) (Scorpion 4) (set 8)", - "sc4cmani", "Colour Mania (Bellfruit) (Scorpion 4) (set 1)", - "sc4cmania", "Colour Mania (Bellfruit) (Scorpion 4) (set 2)", - "sc4cmon", "Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 1)", - "sc4cmona", "Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 2)", - "sc4cmonb", "Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 3)", - "sc4cmonc", "Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 4)", - "sc4cmond", "Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 5)", - "sc4cmone", "Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 6)", - "sc4cmonf", "Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 7)", - "sc4cmong", "Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 8)", - "sc4cmonh", "Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 9)", - "sc4cmoni", "Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 10)", - "sc4cmous", "Cash & Mouse (V041) (Qps) (Scorpion 4) (set 1)", - "sc4cmousa", "Cash & Mouse (V011) (Qps) (Scorpion 4) (set 1)", - "sc4cmousb", "Cash & Mouse (V041) (Qps) (Scorpion 4) (set 2)", - "sc4cmousc", "Cash & Mouse (V011) (Qps) (Scorpion 4) (set 2)", - "sc4cnfr", "Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 1)", - "sc4cnfra", "Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 2)", - "sc4cnfrb", "Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 3)", - "sc4cnfrc", "Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 1)", - "sc4cnfrd", "Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 2)", - "sc4cnfre", "Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 4)", - "sc4cnfrf", "Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 5)", - "sc4cnfrg", "Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 6)", - "sc4cnfrh", "Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 3)", - "sc4cnfri", "Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 4)", - "sc4colos", "Colossus (Dutch) (Bellfruit) (Scorpion 4)", - "sc4copsr", "Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 1)", - "sc4copsra", "Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 2)", - "sc4copsrb", "Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 3)", - "sc4copsrc", "Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 4)", - "sc4copsrd", "Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 5)", - "sc4copsre", "Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 6)", - "sc4copsrf", "Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 7)", - "sc4copsrg", "Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 8)", - "sc4copsrh", "Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 9)", - "sc4copsri", "Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 10)", - "sc4corcl", "Coronation Street Club (Mazooma) (Scorpion 4) (set 1)", - "sc4corcla", "Coronation Street Club (Mazooma) (Scorpion 4) (set 2)", - "sc4coro", "Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 1)", - "sc4coroa", "Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 2)", - "sc4coroc", "Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 1)", - "sc4corod", "Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 1)", - "sc4corof", "Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 3)", - "sc4corog", "Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 4)", - "sc4coroh", "Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 2)", - "sc4coroi", "Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 2)", - "sc4coroj", "Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 5)", - "sc4corok", "Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 6)", - "sc4corol", "Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 7)", - "sc4corom", "Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 8)", - "sc4coron", "Coronation Street Triple (Bingo Version ?1) (PR2?4?) (Mazooma) (Scorpion 4)", - "sc4corotb", "Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 1)", - "sc4corotba", "Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 2)", - "sc4count", "Countdown (Bellfruit) (Scorpion 4) (set 1)", - "sc4counta", "Countdown (Bellfruit) (Scorpion 4) (set 2)", - "sc4cr", "Cash Raker (Qps) (Scorpion 4) (set 1)", - "sc4cra", "Cash Raker (Qps) (Scorpion 4) (set 2)", - "sc4crb", "Cash Raker (Qps) (Scorpion 4) (set 3)", - "sc4crc", "Cash Raker (V2.1) (Qps) (Scorpion 4) (set 1)", - "sc4crcc", "Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 1)", - "sc4crcca", "Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 2)", - "sc4crccb", "Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 1)", - "sc4crccc", "Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 2)", - "sc4crcl", "Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 1)", - "sc4crcla", "Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 1)", - "sc4crclb", "Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 2)", - "sc4crclc", "Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 2)", - "sc4crcld", "Cash Raker Club (V1.3) (Qps) (Scorpion 4)", - "sc4crcle", "Cash Raker Club (411) (Qps) (Scorpion 4) (set 1)", - "sc4crclf", "Cash Raker Club (411) (Qps) (Scorpion 4) (set 2)", - "sc4crcp", "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 1)", - "sc4crcpa", "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 2)", - "sc4crcpc", "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 3)", - "sc4crcpd", "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 4)", - "sc4crcpe", "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 5)", - "sc4crcpf", "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 6)", - "sc4crcpg", "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 7)", - "sc4crcph", "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 8)", - "sc4crcpi", "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 9)", - "sc4crcpj", "Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 10)", - "sc4crd", "Cash Raker (V2.2) (Qps) (Scorpion 4) (set 1)", - "sc4cre", "Cash Raker (V2.1) (Qps) (Scorpion 4) (set 2)", - "sc4crf", "Cash Raker (V2.2) (Qps) (Scorpion 4) (set 2)", - "sc4crgc", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4crgca", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4crgcb", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4crgcc", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4crgcd", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4crgce", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4crgcf", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 7)", - "sc4crgcg", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 8)", - "sc4crgch", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 9)", - "sc4crgci", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 10)", - "sc4crgcj", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 11)", - "sc4crgck", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 12)", - "sc4crgcl", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 13)", - "sc4crgcm", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 14)", - "sc4crgcn", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 19)", - "sc4crgco", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 15)", - "sc4crgcp", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 20)", - "sc4crgcq", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 16)", - "sc4crgcr", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 21)", - "sc4crgcs", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 23)", - "sc4crgct", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 17)", - "sc4crgcu", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 22)", - "sc4crgcv", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 24)", - "sc4crgcw", "Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 18)", - "sc4crnjw", "Crown Jewels (Bellfruit) (Scorpion 4) (set 1)", - "sc4crnjwa", "Crown Jewels (Bellfruit) (Scorpion 4) (set 2)", - "sc4crsc", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 1)", - "sc4crsca", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 2)", - "sc4crscb", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 3)", - "sc4crscc", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 4)", - "sc4crscd", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 5)", - "sc4crsce", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 6)", - "sc4crscf", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 7)", - "sc4crscg", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 8)", - "sc4crzcs", "Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 1)", - "sc4crzcsa", "Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 2)", - "sc4crzcsb", "Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 3)", - "sc4crzcsc", "Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 4)", - "sc4crzgn", "Crazy Gang (Bellfruit) (Scorpion 4) (set 1, Top Box)", - "sc4crzgn0", "Crazy Gang (Bellfruit) (Scorpion 4) (set 18)", - "sc4crzgn1", "Crazy Gang (Bellfruit) (Scorpion 4) (set 19)", - "sc4crzgn2", "Crazy Gang (Bellfruit) (Scorpion 4) (set 20)", - "sc4crzgn3", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 7)", - "sc4crzgn4", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 8)", - "sc4crzgn5", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 9)", - "sc4crzgn6", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 10)", - "sc4crzgn7", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 11)", - "sc4crzgn8", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 12)", - "sc4crzgna", "Crazy Gang (Bellfruit) (Scorpion 4) (set 1)", - "sc4crzgnb", "Crazy Gang (Bellfruit) (Scorpion 4) (set 2, Top Box)", - "sc4crzgnc", "Crazy Gang (Bellfruit) (Scorpion 4) (set 2)", - "sc4crzgnd", "Crazy Gang (Bellfruit) (Scorpion 4) (set 3)", - "sc4crzgne", "Crazy Gang (Bellfruit) (Scorpion 4) (set 4)", - "sc4crzgnf", "Crazy Gang (Bellfruit) (Scorpion 4) (set 5)", - "sc4crzgng", "Crazy Gang (Bellfruit) (Scorpion 4) (set 3, Top Box)", - "sc4crzgnh", "Crazy Gang (Bellfruit) (Scorpion 4) (set 6)", - "sc4crzgni", "Crazy Gang (Bellfruit) (Scorpion 4) (set 7)", - "sc4crzgnj", "Crazy Gang (Bellfruit) (Scorpion 4) (set 4, Top Box)", - "sc4crzgnk", "Crazy Gang (Bellfruit) (Scorpion 4) (set 8)", - "sc4crzgnl", "Crazy Gang (Bellfruit) (Scorpion 4) (set 9)", - "sc4crzgnm", "Crazy Gang (Bellfruit) (Scorpion 4) (set 10)", - "sc4crzgnn", "Crazy Gang (Bellfruit) (Scorpion 4) (set 11)", - "sc4crzgno", "Crazy Gang (Bellfruit) (Scorpion 4) (set 12)", - "sc4crzgnp", "Crazy Gang (Bellfruit) (Scorpion 4) (set 13)", - "sc4crzgnq", "Crazy Gang (Bellfruit) (Scorpion 4) (set 14)", - "sc4crzgnr", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 1)", - "sc4crzgns", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 2)", - "sc4crzgnt", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 3)", - "sc4crzgnu", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 4)", - "sc4crzgnv", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 5)", - "sc4crzgnw", "Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 6)", - "sc4crzgnx", "Crazy Gang (Bellfruit) (Scorpion 4) (set 15)", - "sc4crzgny", "Crazy Gang (Bellfruit) (Scorpion 4) (set 16)", - "sc4crzgnz", "Crazy Gang (Bellfruit) (Scorpion 4) (set 17)", - "sc4crzky", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 1)", - "sc4crzkya", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 2)", - "sc4crzkyb", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 3)", - "sc4crzkyc", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 4)", - "sc4crzkyd", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 5)", - "sc4crzkye", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 6)", - "sc4crzkyf", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 7)", - "sc4crzkyg", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 8)", - "sc4crzkyh", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 9)", - "sc4crzkyi", "Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 1)", - "sc4crzkyj", "Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 2)", - "sc4crzkyk", "Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 3)", - "sc4crzkyl", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 10)", - "sc4crzkym", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 11)", - "sc4crzkyn", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 12)", - "sc4crzkyo", "Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 4)", - "sc4crzkyp", "Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 5)", - "sc4crzkyq", "Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 6)", - "sc4crzkyr", "Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 7)", - "sc4crzkys", "Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 8)", - "sc4crzkyt", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 13)", - "sc4crzkyu", "Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 14)", - "sc4crzkyv", "Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 9)", - "sc4crzkyw", "Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 10)", - "sc4crzwl", "Crazy World (Mazooma) (Scorpion 4) (set 1)", - "sc4crzwla", "Crazy World (Mazooma) (Scorpion 4) (set 2)", - "sc4crzwlb", "Crazy World (Mazooma) (Scorpion 4) (set 3)", - "sc4crzwlc", "Crazy World (Mazooma) (Scorpion 4) (set 4)", - "sc4crzwld", "Crazy World (Mazooma) (Scorpion 4) (set 5)", - "sc4crzwle", "Crazy World (Mazooma) (Scorpion 4) (set 6)", - "sc4crzwlf", "Crazy World (Mazooma) (Scorpion 4) (set 7)", - "sc4crzwlg", "Crazy World (Mazooma) (Scorpion 4) (set 8)", - "sc4ctl", "Cop The Lot (Bellfruit) (Scorpion 4) (set 1)", - "sc4ctla", "Cop The Lot (Bellfruit) (Scorpion 4) (set 2)", - "sc4ctlb", "Cop The Lot (Bellfruit) (Scorpion 4) (set 3)", - "sc4ctlc", "Cop The Lot (Bellfruit) (Scorpion 4) (set 4)", - "sc4ctlcl", "Cop The Lot Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4ctlcla", "Cop The Lot Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4ctlclb", "Cop The Lot Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4ctlclc", "Cop The Lot Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4ctld", "Cop The Lot (Bellfruit) (Scorpion 4) (set 5)", - "sc4ctle", "Cop The Lot (Bellfruit) (Scorpion 4) (set 6)", - "sc4cvani", "Cashvania (Qps) (Scorpion 4) (set 1)", - "sc4cvania", "Cashvania (Qps) (Scorpion 4) (set 2)", - "sc4cvanib", "Cashvania (Qps) (Scorpion 4) (set 3)", - "sc4cvanic", "Cashvania (Qps) (Scorpion 4) (set 4)", - "sc4cvanid", "Cashvania (Qps) (Scorpion 4) (set 5)", - "sc4cvanie", "Cashvania (Qps) (Scorpion 4) (set 6)", - "sc4cvanif", "Cashvania (Qps) (Scorpion 4) (set 7)", - "sc4cvanig", "Cashvania (Qps) (Scorpion 4) (set 8)", - "sc4cvanih", "Cashvania (Qps) (Scorpion 4) (set 9)", - "sc4cvanii", "Cashvania (Qps) (Scorpion 4) (set 10)", - "sc4cvclb", "Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 1)", - "sc4cvclba", "Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 2)", - "sc4cvclbb", "Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 1)", - "sc4cvclbc", "Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 3)", - "sc4cvclbd", "Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 4)", - "sc4cvclbe", "Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 2)", - "sc4cvclbf", "Cashvania Club (V411) (Qps) (Scorpion 4) (set 1)", - "sc4cvclbg", "Cashvania Club (V411) (Qps) (Scorpion 4) (set 2)", - "sc4cyc", "Count Yer Cash (Mazooma) (Scorpion 4) (set 1)", - "sc4cyca", "Count Yer Cash (Mazooma) (Scorpion 4) (set 2)", - "sc4cycb", "Count Yer Cash (Mazooma) (Scorpion 4) (set 3)", - "sc4cycc", "Count Yer Cash (Mazooma) (Scorpion 4) (set 4)", - "sc4cyccl", "Count Yer Cash Club (Mazooma) (Scorpion 4) (set 1)", - "sc4cyccla", "Count Yer Cash Club (Mazooma) (Scorpion 4) (set 2)", - "sc4cycclb", "Count Yer Cash Club (Mazooma) (Scorpion 4) (set 3)", - "sc4cycclc", "Count Yer Cash Club (Mazooma) (Scorpion 4) (set 4)", - "sc4cycd", "Count Yer Cash (Mazooma) (Scorpion 4) (set 5)", - "sc4czfr", "Crazy Fruits (Germany?) (PR6982, GCRF, 1.02) (Bellfruit) (Scorpion 4)", - "sc4czfra", "Crazy Fruits (Dutch) (PR1212, CRAZ) (Bellfruit) (Scorpion 4)", - "sc4czfrb", "Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 1)", - "sc4czfrc", "Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 2)", - "sc4czfrd", "Crazy Fruits (Germany?) (PR6982, GCRF) (Bellfruit) (Scorpion 4)", - "sc4czfre", "Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 2)", - "sc4czfrf", "Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 1)", - "sc4czfrg", "Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 3)", - "sc4czfrh", "Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 4)", - "sc4czfri", "Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 2)", - "sc4czfrj", "Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 5)", - "sc4czfrk", "Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 6)", - "sc4darw", "Dough & Arrow (Qps) (Scorpion 4) (set 1)", - "sc4darwa", "Dough & Arrow (Qps) (Scorpion 4) (set 2)", - "sc4darwb", "Dough & Arrow (Qps) (Scorpion 4) (set 3)", - "sc4darwc", "Dough & Arrow (Qps) (Scorpion 4) (set 4)", - "sc4daylt", "Daylight Robbery (Bellfruit) (Scorpion 4) (set 1)", - "sc4daylta", "Daylight Robbery (Bellfruit) (Scorpion 4) (set 2)", - "sc4dayltb", "Daylight Robbery (Bellfruit) (Scorpion 4) (set 3)", - "sc4dayltc", "Daylight Robbery (Bellfruit) (Scorpion 4) (set 4)", - "sc4dayltd", "Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 1)", - "sc4daylte", "Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 2)", - "sc4dayltf", "Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 3)", - "sc4dayltg", "Daylight Robbery (Bellfruit) (Scorpion 4) (set 5)", - "sc4daylth", "Daylight Robbery (Bellfruit) (Scorpion 4) (set 6)", - "sc4daylti", "Daylight Robbery (Bellfruit) (Scorpion 4) (set 7)", - "sc4dayltj", "Daylight Robbery (Bellfruit) (Scorpion 4) (set 8)", - "sc4dayltk", "Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 4)", - "sc4dayltl", "Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 5)", - "sc4dayltm", "Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 6)", - "sc4db", "Gold Fever (Mazooma) (Scorpion 4) (set 4)", - "sc4dbldm", "Double Diamond (Qps) (Scorpion 4)", - "sc4dblfr", "Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 1)", - "sc4dblfra", "Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 2)", - "sc4dblfrb", "Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 3)", - "sc4dblfrc", "Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 4)", - "sc4dblfrd", "Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 1)", - "sc4dblfre", "Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 2)", - "sc4dcrls", "Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 1)", - "sc4dcrlsa", "Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 1)", - "sc4dcrlsb", "Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 1)", - "sc4dcrlsc", "Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 1)", - "sc4dcrlsd", "Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 1)", - "sc4dcrlse", "Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 1)", - "sc4dcrlsf", "Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 2)", - "sc4dcrlsg", "Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 2)", - "sc4dcrlsh", "Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 2)", - "sc4dcrlsi", "Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 2)", - "sc4dcrlsj", "Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 2)", - "sc4dcrlsk", "Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 2)", - "sc4ddosh", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 1)", - "sc4ddosha", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 2)", - "sc4ddoshb", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 3)", - "sc4ddoshc", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 4)", - "sc4ddoshd", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 5)", - "sc4ddoshe", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 6)", - "sc4ddoshf", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 11)", - "sc4ddoshg", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 12)", - "sc4ddoshh", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 13)", - "sc4ddoshi", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 14)", - "sc4ddoshj", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 15)", - "sc4ddoshk", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 16)", - "sc4ddoshl", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 7)", - "sc4ddoshm", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 8)", - "sc4ddoshn", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 9)", - "sc4ddosho", "Doctor Dosh (Bellfruit) (Scorpion 4) (set 10)", - "sc4deepi", "Deep Impact (Mazooma) (Scorpion 4) (set 1)", - "sc4deepia", "Deep Impact (Mazooma) (Scorpion 4) (set 2)", - "sc4deepib", "Deep Impact (Mazooma) (Scorpion 4) (set 3)", - "sc4deepid", "Deep Impact (Mazooma) (Scorpion 4) (set 4)", - "sc4derby", "Demolition Derby (Bellfruit) (Scorpion 4) (set 1)", - "sc4derbya", "Demolition Derby (Bellfruit) (Scorpion 4) (set 2)", - "sc4derbyb", "Demolition Derby (Bellfruit) (Scorpion 4) (set 3)", - "sc4derbyc", "Demolition Derby (Bellfruit) (Scorpion 4) (set 4)", - "sc4derbyd", "Demolition Derby (Bellfruit) (Scorpion 4) (set 5)", - "sc4derbye", "Demolition Derby (Bellfruit) (Scorpion 4) (set 6)", - "sc4dhh", "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 1)", - "sc4dhha", "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 2)", - "sc4dhhb", "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 3)", - "sc4dhhc", "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 4)", - "sc4dhhd", "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 5)", - "sc4dhhe", "Dough Ho Ho (Bellfruit) (Scorpion 4) (set 6)", - "sc4disco", "Disco Inferno (Mazooma) (Scorpion 4) (set 1)", - "sc4discoa", "Disco Inferno (Mazooma) (Scorpion 4) (set 3)", - "sc4discob", "Disco Inferno (Mazooma) (Scorpion 4) (set 2)", - "sc4discoc", "Disco Inferno (Mazooma) (Scorpion 4) (set 4)", - "sc4discod", "Disco Inferno (Mazooma) (Scorpion 4) (set 5)", - "sc4dmine", "Diamond Mine (Bellfruit) (Scorpion 4) (set 1)", - "sc4dminea", "Diamond Mine (Bellfruit) (Scorpion 4) (set 2)", - "sc4dmineb", "Diamond Mine (Bellfruit) (Scorpion 4) (set 3)", - "sc4dminec", "Diamond Mine (Bellfruit) (Scorpion 4) (set 4)", - "sc4dmined", "Diamond Mine (Bellfruit) (Scorpion 4) (set 5)", - "sc4dminee", "Diamond Mine (Bellfruit) (Scorpion 4) (set 6)", - "sc4dnd", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 1)", - "sc4dnda", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 2)", - "sc4dndb", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 2)", - "sc4dndbb", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 1)", - "sc4dndbba", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 1)", - "sc4dndbbb", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 2)", - "sc4dndbbc", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 2)", - "sc4dndbbd", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 1)", - "sc4dndbbe", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 1)", - "sc4dndbbf", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 1)", - "sc4dndbbg", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 2)", - "sc4dndbbh", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 2)", - "sc4dndbbi", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 2)", - "sc4dndbc", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 1)", - "sc4dndbca", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 2)", - "sc4dndbd", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 1)", - "sc4dndbda", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 2)", - "sc4dndbdb", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 1)", - "sc4dndbdc", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 1)", - "sc4dndbdd", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 2)", - "sc4dndbde", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 2)", - "sc4dndbe", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 1)", - "sc4dndbeb", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 1)", - "sc4dndbec", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 2)", - "sc4dndbed", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 2)", - "sc4dndbee", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 1)", - "sc4dndbef", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 1)", - "sc4dndbeg", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 1)", - "sc4dndbeh", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 1)", - "sc4dndbei", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 2)", - "sc4dndbej", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 2)", - "sc4dndbek", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 2)", - "sc4dndbel", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 2)", - "sc4dndbem", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 1)", - "sc4dndben", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 2)", - "sc4dndbr", "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 1)", - "sc4dndbra", "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 1)", - "sc4dndbrb", "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 2)", - "sc4dndbrc", "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 2)", - "sc4dndbrd", "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 1)", - "sc4dndbre", "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 1)", - "sc4dndbrf", "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 2)", - "sc4dndbrg", "Deal Or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 2)", - "sc4dndc", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 1)", - "sc4dndcc", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 1)", - "sc4dndcca", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR474)", - "sc4dndccb", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 2)", - "sc4dndccc", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 1)", - "sc4dndccd", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 1)", - "sc4dndcce", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 2)", - "sc4dndccf", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 2)", - "sc4dndcl", "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 1)", - "sc4dndcla", "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 1)", - "sc4dndclb", "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 1)", - "sc4dndclc", "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 1)", - "sc4dndcld", "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 2)", - "sc4dndcle", "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 2)", - "sc4dndclf", "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 2)", - "sc4dndclg", "Deal Or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 2)", - "sc4dndcs", "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 1)", - "sc4dndcsa", "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 1)", - "sc4dndcsb", "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 2)", - "sc4dndcsc", "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 2)", - "sc4dndcsd", "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 1)", - "sc4dndcse", "Deal Or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 2)", - "sc4dndcw", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 1)", - "sc4dndcwa", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 1)", - "sc4dndcwb", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 2)", - "sc4dndcwc", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 2)", - "sc4dndd", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 1)", - "sc4dnddd", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 1)", - "sc4dnddda", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 1)", - "sc4dndddb", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 1)", - "sc4dndddc", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 1)", - "sc4dndddd", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 2)", - "sc4dnddde", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 2)", - "sc4dndddf", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 2)", - "sc4dndddg", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 2)", - "sc4dnddf", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 1)", - "sc4dnddfa", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 2)", - "sc4dnddfb", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 1)", - "sc4dnddfc", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 1)", - "sc4dnddfd", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 2)", - "sc4dnddfe", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 2)", - "sc4dnddw", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 1)", - "sc4dnddwa", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 1)", - "sc4dnddwb", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 2)", - "sc4dnddwc", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 2)", - "sc4dnddwd", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 1)", - "sc4dnddwe", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 1)", - "sc4dnddwf", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 2)", - "sc4dnddwg", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 2)", - "sc4dnde", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 1)", - "sc4dndf", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 1)", - "sc4dndg", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 2)", - "sc4dndh", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 2)", - "sc4dndhf", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 1)", - "sc4dndhfa", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 2)", - "sc4dndhfb", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 1)", - "sc4dndhfc", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 1)", - "sc4dndhfd", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 2)", - "sc4dndhfe", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 2)", - "sc4dndhff", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 1)", - "sc4dndhfg", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 1)", - "sc4dndhfh", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 2)", - "sc4dndhfi", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 2)", - "sc4dndhfj", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA476)", - "sc4dndhfk", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 1, bad?)", - "sc4dndhfl", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 2, bad?)", - "sc4dndi", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 2)", - "sc4dndj", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 1)", - "sc4dndk", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 1)", - "sc4dndl", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 2)", - "sc4dndlp", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 1)", - "sc4dndlpa", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 1)", - "sc4dndlpb", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 1)", - "sc4dndlpc", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 2)", - "sc4dndlpd", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 2)", - "sc4dndlpe", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 2)", - "sc4dndm", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 2)", - "sc4dndn", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 1)", - "sc4dndo", "Deal Or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 2)", - "sc4dndpg", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 1)", - "sc4dndpga", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG571, set 1)", - "sc4dndpgb", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG572, set 1)", - "sc4dndpgc", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 2)", - "sc4dndpgd", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB571, set 2)", - "sc4dndpge", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB572, set 2)", - "sc4dndra", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 1)", - "sc4dndraa", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 2)", - "sc4dndrab", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 1)", - "sc4dndrac", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 1)", - "sc4dndrad", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 2)", - "sc4dndrae", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 2)", - "sc4dndtp", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 1)", - "sc4dndtpa", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 1)", - "sc4dndtpb", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 1)", - "sc4dndtpc", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 1, bad)", - "sc4dndtpd", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 1)", - "sc4dndtpe", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 2)", - "sc4dndtpf", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 2)", - "sc4dndtpg", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 2)", - "sc4dndtph", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 2, bad)", - "sc4dndtpi", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 2)", - "sc4dndtpj", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 1)", - "sc4dndtpk", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 2)", - "sc4dndtpl", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 1)", - "sc4dndtpm", "Deal Or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 2)", - "sc4dndtr", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 1)", - "sc4dndtra", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 2)", - "sc4dndwb", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 1)", - "sc4dndwba", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 1)", - "sc4dndwbb", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 2)", - "sc4dndwbc", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 2)", - "sc4dndwbd", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 1)", - "sc4dndwbe", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 2)", - "sc4dndwbf", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 1)", - "sc4dndwbg", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 2)", - "sc4dndww", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 1)", - "sc4dndwwa", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 1)", - "sc4dndwwb", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 2)", - "sc4dndwwc", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 1)", - "sc4dndwwd", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 2)", - "sc4dndwwe", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 2)", - "sc4dndys", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 1)", - "sc4dndysa", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 1)", - "sc4dndysb", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 2)", - "sc4dndysc", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 2)", - "sc4dough", "Dough Selecta (Bellfruit) (Scorpion 4) (set 1)", - "sc4dougha", "Dough Selecta (Bellfruit) (Scorpion 4) (set 2)", - "sc4druby", "Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 1)", - "sc4drubya", "Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 2)", - "sc4drubyb", "Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 3)", - "sc4drubyc", "Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 4)", - "sc4drubyd", "Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 5)", - "sc4duckq", "Ducks Of Hazzard (Qps) (Scorpion 4) (set 1)", - "sc4duckqa", "Ducks Of Hazzard (Qps) (Scorpion 4) (set 2)", - "sc4ducks", "Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 1)", - "sc4ducksa", "Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 2)", - "sc4ducksb", "Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 3)", - "sc4ducksc", "Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 4)", - "sc4dyna", "Dynamite (Bellfruit) (Scorpion 4) (set 1)", - "sc4dynaa", "Dynamite (Bellfruit) (Scorpion 4) (set 2)", - "sc4eascs", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 1)", - "sc4eascsa", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 2)", - "sc4eascsb", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 3)", - "sc4eascsc", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 4)", - "sc4eascsd", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 5)", - "sc4eascse", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 6)", - "sc4eascsf", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 7)", - "sc4eascsg", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 8)", - "sc4eascsh", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 9)", - "sc4eascsi", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 10)", - "sc4eascsj", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 11)", - "sc4eascsk", "Casino Easy Streak (Bellfruit) (Scorpion 4) (set 12)", - "sc4easy", "Easy Streak (Bellfruit) (Scorpion 4) (set 1)", - "sc4easya", "Easy Streak (Bellfruit) (Scorpion 4) (set 2)", - "sc4easyb", "Easy Streak (Bellfruit) (Scorpion 4) (set 3)", - "sc4easyc", "Easy Streak (Bellfruit) (Scorpion 4) (set 4)", - "sc4easyd", "Easy Streak (Bellfruit) (Scorpion 4) (set 5)", - "sc4easye", "Easy Streak (Bellfruit) (Scorpion 4) (set 6)", - "sc4easyf", "Easy Streak (Bellfruit) (Scorpion 4) (set 11)", - "sc4emmer", "Emmerdale (Mazooma) (Scorpion 4) (set 1)", - "sc4emmera", "Emmerdale (Mazooma) (Scorpion 4) (set 2)", - "sc4emmerb", "Emmerdale (Mazooma) (Scorpion 4) (set 3)", - "sc4emmerc", "Emmerdale (Mazooma) (Scorpion 4) (set 4)", - "sc4evol", "Evolution (Qps) (Scorpion 4) (set 1)", - "sc4evola", "Evolution (Qps) (Scorpion 4) (set 2)", - "sc4evolb", "Evolution (Qps) (Scorpion 4) (set 3)", - "sc4evolc", "Evolution (Qps) (Scorpion 4) (set 4)", - "sc4evold", "Evolution (Qps) (Scorpion 4) (set 5)", - "sc4evole", "Evolution (Qps) (Scorpion 4) (set 6)", - "sc4evolf", "Evolution (Qps) (Scorpion 4) (set 7)", - "sc4evolg", "Evolution (Qps) (Scorpion 4) (set 8)", - "sc4fastf", "Fast 'n' Furious (Mazooma) (Scorpion 4) (set 1)", - "sc4fastfa", "Fast 'n' Furious (Mazooma) (Scorpion 4) (set 2)", - "sc4fastfb", "Fast 'n' Furious (Mazooma) (Scorpion 4) (set 3)", - "sc4fastfc", "Fast 'n' Furious (Mazooma) (Scorpion 4) (set 4)", - "sc4fbcrz", "Football Crazy (Bellfruit) (Scorpion 4) (set 1)", - "sc4fbcrza", "Football Crazy (Bellfruit) (Scorpion 4) (set 2)", - "sc4fbcrzb", "Football Crazy (Bellfruit) (Scorpion 4) (set 3)", - "sc4fbcrzc", "Football Crazy (Bellfruit) (Scorpion 4) (set 4)", - "sc4fbcrzd", "Football Crazy (Bellfruit) (Scorpion 4) (set 5)", - "sc4fbcrze", "Football Crazy (Bellfruit) (Scorpion 4) (set 6)", - "sc4fbcrzf", "Football Crazy (Bellfruit) (Scorpion 4) (set 7)", - "sc4fbcrzg", "Football Crazy (Bellfruit) (Scorpion 4) (set 8)", - "sc4fbcrzh", "Football Crazy (Bellfruit) (Scorpion 4) (set 9)", - "sc4fbcrzi", "Football Crazy (Bellfruit) (Scorpion 4) (set 10)", - "sc4fbspn", "Fat Boy Spin (Bellfruit) (Scorpion 4) (set 1)", - "sc4fbspna", "Fat Boy Spin (Bellfruit) (Scorpion 4) (set 2)", - "sc4fbspnb", "Fat Boy Spin (Bellfruit) (Scorpion 4) (set 3)", - "sc4fbspnc", "Fat Boy Spin (Bellfruit) (Scorpion 4) (set 4)", - "sc4fcc", "Firecracker Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4fcca", "Firecracker Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4fccb", "Firecracker Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4fccc", "Firecracker Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4fd7th", "Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 1)", - "sc4fd7tha", "Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 2)", - "sc4fd7thb", "Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 3)", - "sc4fd7thc", "Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 1)", - "sc4fd7thd", "Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 2)", - "sc4fd7the", "Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 4)", - "sc4fd7thf", "Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 5)", - "sc4fd7thg", "Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 6)", - "sc4fd7thh", "Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 3)", - "sc4fd7thi", "Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 4)", - "sc4fevdt", "Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", - "sc4fevdta", "Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", - "sc4fevdtb", "Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 3)", - "sc4fever", "Fever (PR1007) (Bellfruit) (Scorpion 4) (set 1)", - "sc4fevera", "Fever (PR1007) (Bellfruit) (Scorpion 4) (set 2)", - "sc4feverb", "Fever (PR1007) (Bellfruit) (Scorpion 4) (set 3)", - "sc4feverc", "Fever (PR1007) (Bellfruit) (Scorpion 4) (set 4)", - "sc4feverd", "Fever (PR1007) (Bellfruit) (Scorpion 4) (set 5)", - "sc4fevere", "Fever (PR1007) (Bellfruit) (Scorpion 4) (set 6)", - "sc4feverf", "Fever (PR1007) (Bellfruit) (Scorpion 4) (set 7)", - "sc4feverg", "Fever (PR1007) (Bellfruit) (Scorpion 4) (set 8)", - "sc4feverh", "Fever (PR1007) (Bellfruit) (Scorpion 4) (set 9)", - "sc4feverk", "Fever (PR1007) (Bellfruit) (Scorpion 4) (set 10)", - "sc4fevnx", "Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 1)", - "sc4fevnxa", "Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 2)", - "sc4ffru", "Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 1)", - "sc4ffrua", "Fast Fruit (Qps) (Scorpion 4) (set 1)", - "sc4ffrub", "Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 2)", - "sc4ffruc", "Fast Fruit (Qps) (Scorpion 4) (set 2)", - "sc4ffrud", "Fast Fruit (Qps) (Scorpion 4) (set 3)", - "sc4ffrue", "Fast Fruit (Qps) (Scorpion 4) (set 4)", - "sc4fguy", "Family Guy (Bellfruit) (Scorpion 4) (set 1)", - "sc4fguya", "Family Guy (Bellfruit) (Scorpion 4) (set 2)", - "sc4fguyb", "Family Guy (Bellfruit) (Scorpion 4) (set 3)", - "sc4fguyc", "Family Guy (Bellfruit) (Scorpion 4) (set 4)", - "sc4fguyd", "Family Guy (Bellfruit) (Scorpion 4) (set 5)", - "sc4fguye", "Family Guy (Bellfruit) (Scorpion 4) (set 6)", - "sc4fire", "Firepower (Mazooma) (Scorpion 4) (set 1)", - "sc4firea", "Firepower (Mazooma) (Scorpion 4) (set 2)", - "sc4fmj", "Full Metal Jackpot (Mazooma) (Scorpion 4) (set 1)", - "sc4fmja", "Full Metal Jackpot (Mazooma) (Scorpion 4) (set 2)", - "sc4fmjb", "Full Metal Jackpot (Mazooma) (Scorpion 4) (set 3)", - "sc4fmjc", "Full Metal Jackpot (Mazooma) (Scorpion 4) (set 4)", - "sc4fpitc", "Fever Pitch (Bellfruit) (Scorpion 4) (set 1)", - "sc4fpitca", "Fever Pitch (Bellfruit) (Scorpion 4) (set 2)", - "sc4fpitcb", "Fever Pitch (Bellfruit) (Scorpion 4) (set 3)", - "sc4fpitcc", "Fever Pitch (Bellfruit) (Scorpion 4) (set 11)", - "sc4fpitcd", "Fever Pitch (Bellfruit) (Scorpion 4) (set 4)", - "sc4fpitce", "Fever Pitch (Bellfruit) (Scorpion 4) (set 5)", - "sc4fpitcf", "Fever Pitch (Bellfruit) (Scorpion 4) (set 6)", - "sc4fpitcg", "Fever Pitch (Bellfruit) (Scorpion 4) (set 12)", - "sc4fpitch", "Fever Pitch (Bellfruit) (Scorpion 4) (set 7)", - "sc4fpitci", "Fever Pitch (Bellfruit) (Scorpion 4) (set 8)", - "sc4fpitcj", "Fever Pitch (Bellfruit) (Scorpion 4) (set 9)", - "sc4fpitck", "Fever Pitch (Bellfruit) (Scorpion 4) (set 10)", - "sc4frboo", "Frooty Booty (Bellfruit) (Scorpion 4) (set 1)", - "sc4frbooa", "Frooty Booty (Bellfruit) (Scorpion 4) (set 2)", - "sc4frboob", "Frooty Booty (Bellfruit) (Scorpion 4) (set 3)", - "sc4frbooc", "Frooty Booty (Bellfruit) (Scorpion 4) (set 4)", - "sc4frenz", "Fruit Frenzy (Bellfruit) (Scorpion 4) (set 1)", - "sc4frenza", "Fruit Frenzy (Bellfruit) (Scorpion 4) (set 2)", - "sc4frenzb", "Fruit Frenzy (Bellfruit) (Scorpion 4) (set 3)", - "sc4frenzc", "Fruit Frenzy (Bellfruit) (Scorpion 4) (set 4)", - "sc4frenzd", "Fruit Frenzy (Bellfruit) (Scorpion 4) (set 5)", - "sc4frenze", "Fruit Frenzy (Bellfruit) (Scorpion 4) (set 6)", - "sc4frsu", "Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 1)", - "sc4frsua", "Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 2)", - "sc4frsub", "Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 3)", - "sc4frsuc", "Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 4)", - "sc4frsud", "Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 5)", - "sc4frsue", "Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 6)", - "sc4frsuf", "Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 7)", - "sc4frsug", "Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 8)", - "sc4ftopi", "Fruitopia (Qps) (Scorpion 4) (set 1)", - "sc4ftopia", "Fruitopia (Qps) (Scorpion 4) (set 2)", - "sc4ftopib", "Fruitopia (Qps) (Scorpion 4) (set 3)", - "sc4ftopic", "Fruitopia (Qps) (Scorpion 4) (set 4)", - "sc4ftopid", "Fruitopia (V2.1) (Qps) (Scorpion 4) (set 1)", - "sc4ftopie", "Fruitopia (V2.2) (Qps) (Scorpion 4) (set 1)", - "sc4ftopif", "Fruitopia (V1.1) (Qps) (Scorpion 4) (set 1)", - "sc4ftopig", "Fruitopia (V2.1) (Qps) (Scorpion 4) (set 2)", - "sc4ftopih", "Fruitopia (V2.2) (Qps) (Scorpion 4) (set 2)", - "sc4ftopii", "Fruitopia (V1.1) (Qps) (Scorpion 4) (set 2)", - "sc4fullt", "Full Throttle (011) (Qps) (Scorpion 4) (set 1)", - "sc4fullta", "Full Throttle (041) (Qps) (Scorpion 4) (set 1)", - "sc4fulltb", "Full Throttle (011) (Qps) (Scorpion 4) (set 2)", - "sc4fulltc", "Full Throttle (041) (Qps) (Scorpion 4) (set 2)", - "sc4fulltd", "Full Throttle (012) (Qps) (Scorpion 4) (set 1)", - "sc4fullte", "Full Throttle (042) (Qps) (Scorpion 4) (set 1)", - "sc4fulltf", "Full Throttle (013) (Qps) (Scorpion 4) (set 1)", - "sc4fulltg", "Full Throttle (012) (Qps) (Scorpion 4) (set 2)", - "sc4fullth", "Full Throttle (042) (Qps) (Scorpion 4) (set 2)", - "sc4fullti", "Full Throttle (013) (Qps) (Scorpion 4) (set 2)", - "sc4fwp", "Five Ways Pays (Mazooma) (Scorpion 4) (set 1)", - "sc4fwpa", "Five Ways Pays (Mazooma) (Scorpion 4) (set 2)", - "sc4fwpb", "Five Ways Pays (Mazooma) (Scorpion 4) (set 3)", - "sc4fwpc", "Five Ways Pays (Mazooma) (Scorpion 4) (set 4)", - "sc4fwpcs", "Five Ways Pays (Mazooma) (Scorpion 4) (set 5)", - "sc4fwpcsa", "Five Ways Pays (Mazooma) (Scorpion 4) (set 6)", - "sc4fwpcsb", "Five Ways Pays (Mazooma) (Scorpion 4) (set 7)", - "sc4gag", "Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 1)", - "sc4gaga", "Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 1)", - "sc4gagb", "Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 2)", - "sc4gagc", "Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 2)", - "sc4gamcs", "The Game Casino (Dutch) (Bellfruit) (Scorpion 4)", - "sc4game", "The Game (Dutch) (Bellfruit) (Scorpion 4)", - "sc4gball", "Golden Balls (Bellfruit) (Scorpion 4) (set 1)", - "sc4gballa", "Golden Balls (Bellfruit) (Scorpion 4) (set 2)", - "sc4gballb", "Golden Balls (Bellfruit) (Scorpion 4) (set 3)", - "sc4gballc", "Golden Balls (Bellfruit) (Scorpion 4) (set 4)", - "sc4gbcas", "Casino Golden Balls (Bellfruit) (Scorpion 4) (set 1)", - "sc4gbcasa", "Casino Golden Balls (Bellfruit) (Scorpion 4) (set 2)", - "sc4gbcasb", "Casino Golden Balls (Bellfruit) (Scorpion 4) (set 3)", - "sc4gbcasc", "Casino Golden Balls (Bellfruit) (Scorpion 4) (set 4)", - "sc4gcb", "Grand Blaster Cash (Mazooma) (Scorpion 4) (set 1)", - "sc4gcba", "Grand Blaster Cash (Mazooma) (Scorpion 4) (set 2)", - "sc4gcbb", "Grand Blaster Cash (Mazooma) (Scorpion 4) (set 3)", - "sc4gcbc", "Grand Blaster Cash (Mazooma) (Scorpion 4) (set 4)", - "sc4gcbd", "Grand Blaster Cash (Mazooma) (Scorpion 4) (set 5)", - "sc4gcbe", "Grand Blaster Cash (Mazooma) (Scorpion 4) (set 6)", - "sc4gcbf", "Grand Blaster Cash (Mazooma) (Scorpion 4) (set 7)", - "sc4gcbg", "Grand Blaster Cash (Mazooma) (Scorpion 4) (set 8)", - "sc4gcbh", "Grand Blaster Cash (Mazooma) (Scorpion 4) (set 9)", - "sc4gcbi", "Grand Blaster Cash (Mazooma) (Scorpion 4) (set 10)", - "sc4gcbj", "Grand Blaster Cash (Mazooma) (Scorpion 4) (set 11)", - "sc4gcclb", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 1)", - "sc4gcclba", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 2)", - "sc4gcclbb", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 3)", - "sc4gcclbc", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 4)", - "sc4gcclbd", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 5)", - "sc4gcclbe", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 6)", - "sc4gcclbf", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 7)", - "sc4gcclbg", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 8)", - "sc4gcclbh", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 9)", - "sc4gcclbi", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 10)", - "sc4gcclbj", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 11)", - "sc4gcclbk", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 12)", - "sc4gcclbl", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 13)", - "sc4gcclbm", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 14)", - "sc4gcclbn", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 15)", - "sc4gcclbo", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 17)", - "sc4gcclbp", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 16)", - "sc4gcclbq", "Grandslam Casino (Bellfruit) (Scorpion 4) (set 18)", - "sc4gd", "Gold Digger (Bellfruit) (Scorpion 4) (set 1)", - "sc4gda", "Gold Digger (Bellfruit) (Scorpion 4) (set 2)", - "sc4gdb", "Gold Digger (Bellfruit) (Scorpion 4) (set 3)", - "sc4gdc", "Gold Digger (Bellfruit) (Scorpion 4) (set 4)", - "sc4gdclb", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4gdclba", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4gdclbb", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4gdclbc", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4gdclbd", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4gdclbe", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4gdclbf", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 7)", - "sc4gdclbg", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 8)", - "sc4gdclbh", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 9)", - "sc4gdclbi", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 10)", - "sc4gdclbj", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 11)", - "sc4gdclbk", "Gold Digger Club (Bellfruit) (Scorpion 4) (set 12)", - "sc4gdd", "Gold Digger (Bellfruit) (Scorpion 4) (set 5)", - "sc4gde", "Gold Digger (Bellfruit) (Scorpion 4) (set 6)", - "sc4gdf", "Gold Digger (Bellfruit) (Scorpion 4) (set 7)", - "sc4gdg", "Gold Digger (Bellfruit) (Scorpion 4) (set 8)", - "sc4gdmz", "Golden X (Mazooma) (PR2056) (Scorpion 4) (set 3)", - "sc4gdmza", "Golden X (Mazooma) (PR2056) (Scorpion 4) (set 4)", - "sc4gfev", "Gold Fever (Mazooma) (Scorpion 4) (set 1)", - "sc4gfeva", "Gold Fever (Mazooma) (Scorpion 4) (set 2)", - "sc4gfevb", "Gold Fever (Mazooma) (Scorpion 4) (set 3)", - "sc4ggame", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 1)", - "sc4ggame0", "Golden X (Mazooma) (PR2056) (Scorpion 4) (set 2)", - "sc4ggame1", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 7)", - "sc4ggame2", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 8)", - "sc4ggame3", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 6)", - "sc4ggame4", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 7)", - "sc4ggame5", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 8)", - "sc4ggame6", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 9)", - "sc4ggame7", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 1)", - "sc4ggame8", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 2)", - "sc4ggame9", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 3)", - "sc4ggamea", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 1)", - "sc4ggameaa", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 4)", - "sc4ggameab", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 5)", - "sc4ggameac", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 6)", - "sc4ggamead", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 7)", - "sc4ggameae", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 8)", - "sc4ggameb", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 2)", - "sc4ggamec", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 3)", - "sc4ggamed", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 4)", - "sc4ggamef", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 1)", - "sc4ggameg", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 2)", - "sc4ggamei", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 2)", - "sc4ggamej", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 3)", - "sc4ggamek", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 4)", - "sc4ggamel", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 1)", - "sc4ggamem", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 2)", - "sc4ggamen", "Golden X (Mazooma) (PR2056) (Scorpion 4) (set 1)", - "sc4ggamep", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 3)", - "sc4ggameq", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 4)", - "sc4ggamer", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 5)", - "sc4ggames", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 5)", - "sc4ggamet", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 6)", - "sc4ggameu", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 7)", - "sc4ggamev", "Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 5)", - "sc4ggamew", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 3)", - "sc4ggamex", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 4)", - "sc4ggamey", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 5)", - "sc4ggamez", "Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 6)", - "sc4ggcas", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 9)", - "sc4ggcasa", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 10)", - "sc4ggcasb", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 11)", - "sc4ggcasc", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 12)", - "sc4ggcl", "Golden Grid Club (V1.0) (Qps) (Scorpion 4)", - "sc4ggcla", "Golden Grid Club (V411) (Qps) (Scorpion 4) (set 1)", - "sc4ggclb", "Golden Grid Club (V411) (Qps) (Scorpion 4) (set 2)", - "sc4ggclc", "Golden Grid Club (V412) (Qps) (Scorpion 4) (set 1)", - "sc4ggcld", "Golden Grid Club (V412) (Qps) (Scorpion 4) (set 2)", - "sc4ggdlx", "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 1)", - "sc4ggdlxa", "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 3)", - "sc4ggdlxb", "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 4)", - "sc4ggdlxc", "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 2)", - "sc4ggdlxd", "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 5)", - "sc4ggdlxe", "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 6)", - "sc4ggdlxf", "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 7)", - "sc4ggdlxg", "Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 8)", - "sc4ggg", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 1)", - "sc4gggb", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 2)", - "sc4gggc", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 3)", - "sc4gggd", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 4)", - "sc4ggge", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 5)", - "sc4gggf", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 6)", - "sc4gggg", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 13)", - "sc4gggh", "Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 1)", - "sc4gggi", "Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 2)", - "sc4gggk", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 7)", - "sc4gggl", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 8)", - "sc4gggm", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 9)", - "sc4gggn", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 10)", - "sc4gggo", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 11)", - "sc4gggp", "Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 12)", - "sc4gggq", "Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 3)", - "sc4gggr", "Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 4)", - "sc4gggs", "Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 5)", - "sc4gggtb", "Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 1)", - "sc4gggtba", "Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 2)", - "sc4ggrid", "Golden Grid (V1.0) (Qps) (Scorpion 4) (set 1)", - "sc4ggrida", "Golden Grid (V1.0) (Qps) (Scorpion 4) (set 2)", - "sc4ggridb", "Golden Grid (V1.1) (Qps) (Scorpion 4) (set 1)", - "sc4ggridc", "Golden Grid (V1.1) (Qps) (Scorpion 4) (set 2)", - "sc4ggridd", "Golden Grid (V1.3) (Qps) (Scorpion 4)", - "sc4ggride", "Golden Grid (V1.0) (Qps) (Scorpion 4) (set 3)", - "sc4ggridf", "Golden Grid (V1.0) (Qps) (Scorpion 4) (set 4)", - "sc4ggridg", "Golden Grid (V1.1) (Qps) (Scorpion 4) (set 3)", - "sc4ggridh", "Golden Grid (V1.1) (Qps) (Scorpion 4) (set 4)", - "sc4ggridi", "Golden Grid (V011) (Scorpion 4) (set 1)", - "sc4ggridj", "Golden Grid (V041) (Qps) (Scorpion 4) (set 1)", - "sc4ggridk", "Golden Grid (V011) (Scorpion 4) (set 2)", - "sc4ggridl", "Golden Grid (V041) (Qps) (Scorpion 4) (set 2)", - "sc4ggridm", "Golden Grid (V012) (Qps) (Scorpion 4) (set 1)", - "sc4ggridn", "Golden Grid (V012) (Qps) (Scorpion 4) (set 2)", - "sc4ggtb", "Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 1)", - "sc4ggtba", "Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 2)", - "sc4ggtbb", "Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 3)", - "sc4ghost", "Golden Ghost (Mazooma) (Scorpion 4) (set 1)", - "sc4ghosta", "Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 1)", - "sc4ghostb", "Golden Ghost (Mazooma) (Scorpion 4) (set 2)", - "sc4ghostc", "Golden Ghost (Mazooma) (Scorpion 4) (set 3)", - "sc4ghostd", "Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 2)", - "sc4ghoste", "Golden Ghost (Mazooma) (Scorpion 4) (set 4)", - "sc4ghostf", "Golden Ghost (Mazooma) (Scorpion 4) (set 5)", - "sc4ghostg", "Golden Ghost (Mazooma) (Scorpion 4) (set 6)", - "sc4ghosth", "Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 3)", - "sc4glad", "Gladiator (Mazooma) (Scorpion 4) (set 1)", - "sc4glada", "Gladiator (Mazooma) (Scorpion 4) (set 2)", - "sc4gladb", "Gladiator (Mazooma) (Scorpion 4) (set 3)", - "sc4gladc", "Gladiator (Mazooma) (Scorpion 4) (set 4)", - "sc4gladd", "Gladiator (Mazooma) (Scorpion 4) (set 5)", - "sc4glade", "Gladiator (Mazooma) (Scorpion 4) (set 6)", - "sc4gladf", "Gladiator (Mazooma) (Scorpion 4) (set 7)", - "sc4gladg", "Gladiator (Mazooma) (Scorpion 4) (set 8)", - "sc4gldcl", "Gladiator Club (Mazooma) (Scorpion 4) (set 1)", - "sc4gldcla", "Gladiator Club (Mazooma) (Scorpion 4) (set 2)", - "sc4gnc", "Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 1)", - "sc4gnca", "Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 2)", - "sc4gncb", "Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 3)", - "sc4gncc", "Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 4)", - "sc4gncd", "Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 5)", - "sc4gnce", "Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 6)", - "sc4gocas", "Casino Golden Oldie (Mazooma) (Scorpion 4) (set 5)", - "sc4gocasa", "Casino Golden Oldie (Mazooma) (Scorpion 4) (set 6)", - "sc4goldo", "Casino Golden Oldie (Mazooma) (Scorpion 4) (set 1)", - "sc4goldoa", "Casino Golden Oldie (Mazooma) (Scorpion 4) (set 2)", - "sc4goldob", "Casino Golden Oldie (Mazooma) (Scorpion 4) (set 3)", - "sc4goldoc", "Casino Golden Oldie (Mazooma) (Scorpion 4) (set 4)", - "sc4goldw", "Golden Winner (Bellfruit) (Scorpion 4) (set 1)", - "sc4goldwa", "Golden Winner (Bellfruit) (Scorpion 4) (set 2)", - "sc4goldwb", "Golden Winner (Bellfruit) (Scorpion 4) (set 3)", - "sc4goldwc", "Golden Winner (Bellfruit) (Scorpion 4) (set 4)", - "sc4goldwd", "Golden Winner (Bellfruit) (Scorpion 4) (set 5)", - "sc4goldwe", "Golden Winner (Bellfruit) (Scorpion 4) (set 6)", - "sc4goldwf", "Golden Winner (Bellfruit) (Scorpion 4) (set 7)", - "sc4goldwg", "Golden Winner (Bellfruit) (Scorpion 4) (set 8)", - "sc4goud", "Goudkoorts (Dutch) (Bellfruit) (Scorpion 4)", - "sc4greed", "Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 1)", - "sc4greeda", "Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 2)", - "sc4gshot", "Golden Shot (Qps) (Scorpion 4) (set 1)", - "sc4gshota", "Golden Shot Arcade (Qps) (Scorpion 4) (set 1)", - "sc4gshotb", "Golden Shot (Qps) (Scorpion 4) (set 2)", - "sc4gshotc", "Golden Shot Arcade (Qps) (Scorpion 4) (set 2)", - "sc4gslam", "Grandslam Club (BFM) (Scorpion 4) (set 1)", - "sc4gslama", "Grandslam Club (BFM) (Scorpion 4) (set 2)", - "sc4gslamb", "Grandslam Club (BFM) (Scorpion 4) (set 3)", - "sc4gslamc", "Grandslam Club (BFM) (Scorpion 4) (set 4)", - "sc4gslamd", "Grandslam Club (BFM) (Scorpion 4) (set 5)", - "sc4gslame", "Grandslam Club (BFM) (Scorpion 4) (set 6)", - "sc4gslamf", "Grandslam Club (BFM) (Scorpion 4) (set 7)", - "sc4gunp", "Gunpowder Slot (Bellfruit) (Scorpion 4) (set 1)", - "sc4gunpa", "Gunpowder Slot (Bellfruit) (Scorpion 4) (set 2)", - "sc4gunpb", "Gunpowder Slot (Bellfruit) (Scorpion 4) (set 3)", - "sc4gunpc", "Gunpowder Slot (Bellfruit) (Scorpion 4) (set 4)", - "sc4gunpd", "Gunpowder Slot (Bellfruit) (Scorpion 4) (set 5)", - "sc4gunpe", "Gunpowder Slot (Bellfruit) (Scorpion 4) (set 6)", - "sc4gunpf", "Gunpowder Slot (Bellfruit) (Scorpion 4) (set 7)", - "sc4gunpg", "Gunpowder Slot (Bellfruit) (Scorpion 4) (set 8)", - "sc4gx", "Bar X (Mazooma) (Scorpion 4) (BARX, set 1)", - "sc4gx3", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 1)", - "sc4gx3a", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 2)", - "sc4gx3b", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 3)", - "sc4gx3c", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 4)", - "sc4gx3d", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 5)", - "sc4gx3e", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 6)", - "sc4gx3f", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 7)", - "sc4gx3g", "Golden X (Mazooma) (Scorpion 4) (GLDX, set 8)", - "sc4gxa", "Bar X (Mazooma) (Scorpion 4) (BARX, set 8)", - "sc4gxb", "Bar X (Mazooma) (Scorpion 4) (BARX, set 9)", - "sc4gxcasa", "Bar X (Mazooma) (Scorpion 4) (BARX, set 2)", - "sc4gxcasb", "Bar X (Mazooma) (Scorpion 4) (BARX, set 3)", - "sc4gxcasc", "Bar X (Mazooma) (Scorpion 4) (BARX, set 4)", - "sc4gxcasd", "Bar X (Mazooma) (Scorpion 4) (BARX, set 5)", - "sc4gxcase", "Bar X (Mazooma) (Scorpion 4) (BARX, set 6)", - "sc4gxcasf", "Bar X (Mazooma) (Scorpion 4) (BARX, set 7)", - "sc4h6cl", "Hot Six Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4h6cla", "Hot Six Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4h6clb", "Hot Six Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4h6clc", "Hot Six Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4hapnt", "Happy Notes (Bellfruit) (Scorpion 4) (set 1)", - "sc4hapnta", "Happy Notes (Bellfruit) (Scorpion 4) (set 2)", - "sc4hapntb", "Happy Notes (Bellfruit) (Scorpion 4) (set 3)", - "sc4hapntc", "Happy Notes (Bellfruit) (Scorpion 4) (set 4)", - "sc4hapntd", "Happy Notes (Bellfruit) (Scorpion 4) (set 5)", - "sc4hapnte", "Happy Notes (Bellfruit) (Scorpion 4) (set 6)", - "sc4hdd", "Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 1)", - "sc4hdda", "Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 1)", - "sc4hddb", "Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 2)", - "sc4hddc", "Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 2)", - "sc4hddd", "Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 3)", - "sc4hdde", "Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 3)", - "sc4hddf", "Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 4)", - "sc4heatw", "Heatwave (Dutch) (Bellfruit) (Scorpion 4)", - "sc4hellb", "Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 1)", - "sc4hellbb", "Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 2)", - "sc4hellbc", "Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 3)", - "sc4hellbd", "Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 4)", - "sc4hellbe", "Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 5)", - "sc4hellbf", "Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 6)", - "sc4hellbg", "Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 7)", - "sc4hellbh", "Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 8)", - "sc4hellbi", "Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 9)", - "sc4hellbj", "Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 10)", - "sc4helld", "Hells Bells (PR1201) (Dutch) (Bellfruit) (Scorpion 4)", - "sc4helrd", "Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 1)", - "sc4helrs", "Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 2)", - "sc4hf", "Happy Fruits (Bellfruit) (Scorpion 4) (set 1)", - "sc4hfa", "Happy Fruits (Bellfruit) (Scorpion 4) (set 2)", - "sc4hfb", "Happy Fruits (Bellfruit) (Scorpion 4) (set 3)", - "sc4hfc", "Happy Fruits (Bellfruit) (Scorpion 4) (set 4)", - "sc4hfcl", "Happy Fruits Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4hfcla", "Happy Fruits Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4hfd", "Happy Fruits (Bellfruit) (Scorpion 4) (set 5)", - "sc4hfe", "Happy Fruits (Bellfruit) (Scorpion 4) (set 6)", - "sc4hff", "Happy Fruits (Bellfruit) (Scorpion 4) (set 7)", - "sc4hfg", "Happy Fruits (Bellfruit) (Scorpion 4) (set 8)", - "sc4hi5", "High 5 (Bellfruit) (Scorpion 4) (set 1)", - "sc4hi5a", "High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 1)", - "sc4hi5b", "High 5 (Bellfruit) (Scorpion 4) (set 2)", - "sc4hi5c", "High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 2)", - "sc4hi5d", "High 5 (Bellfruit) (Scorpion 4) (set 3)", - "sc4hi5e", "High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 3)", - "sc4hi5f", "High 5 (Bellfruit) (Scorpion 4) (set 4)", - "sc4hi5g", "High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 4)", - "sc4hill", "Hill Billionaire (Bellfruit) (Scorpion 4) (set 1)", - "sc4hilla", "Hill Billionaire (Bellfruit) (Scorpion 4) (set 2)", - "sc4hilo", "Hilowatha (Bellfruit) (Scorpion 4) (set 1)", - "sc4hiloa", "Hilowatha (Bellfruit) (Scorpion 4) (set 2)", - "sc4hilob", "Hilowatha (Bellfruit) (Scorpion 4) (set 3)", - "sc4hiloc", "Hilowatha (Bellfruit) (Scorpion 4) (set 4)", - "sc4hilod", "Hilowatha (Bellfruit) (Scorpion 4) (set 5)", - "sc4hiloe", "Hilowatha (Bellfruit) (Scorpion 4) (set 6)", - "sc4hilof", "Hilowatha (Bellfruit) (Scorpion 4) (set 7)", - "sc4hilog", "Hilowatha (Bellfruit) (Scorpion 4) (set 8)", - "sc4hiloh", "Hilowatha (Bellfruit) (Scorpion 4) (set 9)", - "sc4hiloi", "Hilowatha (Bellfruit) (Scorpion 4) (set 10)", - "sc4hiloj", "Hilowatha (Bellfruit) (Scorpion 4) (set 11)", - "sc4hilok", "Hilowatha (Bellfruit) (Scorpion 4) (set 12)", - "sc4himi", "High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 1)", - "sc4himia", "High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 1)", - "sc4himib", "High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 1)", - "sc4himic", "High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 2)", - "sc4himid", "High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 2)", - "sc4himie", "High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 2)", - "sc4himif", "High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 3)", - "sc4himig", "High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 4)", - "sc4himih", "High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 5)", - "sc4himii", "High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 6)", - "sc4hiss", "Hissing Quid (Qps) (Scorpion 4) (set 1)", - "sc4hissa", "Hissing Quid (Qps) (Scorpion 4) (set 2)", - "sc4hissb", "Hissing Quid (Qps) (Scorpion 4) (set 3)", - "sc4hissc", "Hissing Quid (Qps) (Scorpion 4) (set 4)", - "sc4hissd", "Hissing Quid (Qps) (Scorpion 4) (set 5)", - "sc4hisse", "Hissing Quid (Qps) (Scorpion 4) (set 6)", - "sc4hissf", "Hissing Quid (Qps) (Scorpion 4) (set 7)", - "sc4hissg", "Hissing Quid (Qps) (Scorpion 4) (set 8)", - "sc4hitsh", "Hit Shot (Bellfruit) (Scorpion 4) (set 1)", - "sc4hitsha", "Hit Shot (Bellfruit) (Scorpion 4) (set 2)", - "sc4hitshb", "Hit Shot (Bellfruit) (Scorpion 4) (set 3)", - "sc4hitshc", "Hit Shot (Bellfruit) (Scorpion 4) (set 4)", - "sc4hitshd", "Hit Shot (Bellfruit) (Scorpion 4) (set 5)", - "sc4hitshe", "Hit Shot (Bellfruit) (Scorpion 4) (set 6)", - "sc4hntcs", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 1)", - "sc4hntcsa", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 2)", - "sc4hntcsb", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 3)", - "sc4hntcsc", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 4)", - "sc4hntcsd", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 5)", - "sc4hntcse", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 6)", - "sc4hntcsf", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 7)", - "sc4hntcsg", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 8)", - "sc4hntcsh", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 9)", - "sc4hntcsi", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 10)", - "sc4hntcsj", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 11)", - "sc4hntcsk", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 12)", - "sc4hntcsl", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 13)", - "sc4hntcsm", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 14)", - "sc4hntcsn", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 15)", - "sc4hntcso", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 16)", - "sc4hntcsp", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 17)", - "sc4hntcsq", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 18)", - "sc4hntcsr", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 19)", - "sc4hntcss", "Happy Notes Casino (Bellfruit) (Scorpion 4) (set 20)", - "sc4holyw", "Hollywood (Bellfruit) (Scorpion 4) (set 1)", - "sc4holywa", "Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 1)", - "sc4holywb", "Hollywood (Bellfruit) (Scorpion 4) (set 2)", - "sc4holywc", "Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 2)", - "sc4hotdg", "Hot Dog (Bellfruit) (Scorpion 4) (set 1)", - "sc4hotdga", "Hot Dog (Bellfruit) (Scorpion 4) (set 2)", - "sc4hotdgb", "Hot Dog (Bellfruit) (Scorpion 4) (set 3)", - "sc4hotdgc", "Hot Dog (Bellfruit) (Scorpion 4) (set 4)", - "sc4hotpr", "Hot Property (Bellfruit) (Scorpion 4) (set 1)", - "sc4hotpra", "Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 1)", - "sc4hotprb", "Hot Property (Bellfruit) (Scorpion 4) (set 2)", - "sc4hotprc", "Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 2)", - "sc4hotprd", "Hot Property (Bellfruit) (Scorpion 4) (set 3)", - "sc4hotpre", "Hot Property (Bellfruit) (Scorpion 4) (set 4)", - "sc4hotrd", "Hot Rod (Bellfruit) (Scorpion 4) (set 1)", - "sc4hotrda", "Hot Rod (Bellfruit) (Scorpion 4) (set 2)", - "sc4hotsh", "Hot Shot (Bellfruit) (Scorpion 4) (set 1)", - "sc4hotsha", "Hot Shot (Bellfruit) (Scorpion 4) (set 2)", - "sc4hotwd", "Hot Wad (Bellfruit) (Scorpion 4) (set 1)", - "sc4hotwda", "Hot Wad (Bellfruit) (Scorpion 4) (set 2)", - "sc4hotwdb", "Hot Wad (Bellfruit) (Scorpion 4) (set 3)", - "sc4hotwdc", "Hot Wad (Bellfruit) (Scorpion 4) (set 4)", - "sc4hotwdd", "Hot Wad (Bellfruit) (Scorpion 4) (set 5)", - "sc4hotwde", "Hot Wad (Bellfruit) (Scorpion 4) (set 6)", - "sc4hyde", "Hyde & Streak (Mazooma) (Scorpion 4) (set 1)", - "sc4hydea", "Hyde & Streak (Mazooma) (Scorpion 4) (set 2)", - "sc4hydeb", "Hyde & Streak (Mazooma) (Scorpion 4) (set 3)", - "sc4hydec", "Hyde & Streak (Mazooma) (Scorpion 4) (set 4)", - "sc4hyper", "Hyperactive (Mazooma) (Scorpion 4) (set 1)", - "sc4hypera", "Hyperactive (Mazooma) (Scorpion 4) (set 2)", - "sc4ibiza", "Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 1)", - "sc4ibizaa", "Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 2)", - "sc4ibizab", "Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 3)", - "sc4ibizac", "Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 4)", - "sc4ibizad", "Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 5)", - "sc4ibizae", "Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 6)", - "sc4ibizaf", "Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 7)", - "sc4ibizag", "Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 8)", - "sc4ibizah", "Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 9)", - "sc4ibizai", "Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 10)", - "sc4ijclb", "Italian Job Club (Mazooma) (Scorpion 4)", - "sc4ijob", "Italian Job (Mazooma) (Scorpion 4) (set 1)", - "sc4ijoba", "Italian Job (Mazooma) (Scorpion 4) (set 2)", - "sc4ijobb", "Italian Job (Mazooma) (Scorpion 4) (set 3)", - "sc4ijobc", "Italian Job (Mazooma) (Scorpion 4) (set 4)", - "sc4ijobd", "Italian Job (Mazooma) (Scorpion 4) (set 5)", - "sc4ijobe", "Italian Job (Mazooma) (Scorpion 4) (set 6)", - "sc4ijobf", "Italian Job (Mazooma) (Scorpion 4) (set 7)", - "sc4ijobg", "Italian Job (Mazooma) (Scorpion 4) (set 8)", - "sc4ijobh", "Italian Job (Mazooma) (Scorpion 4) (set 9)", - "sc4ijobi", "Italian Job (Mazooma) (Scorpion 4) (set 10)", - "sc4ijobj", "Italian Job (Mazooma) (Scorpion 4) (set 11)", - "sc4ijobk", "Italian Job (Mazooma) (Scorpion 4) (set 12)", - "sc4ijobl", "Italian Job (Mazooma) (Scorpion 4) (set 13)", - "sc4ijobm", "Italian Job (Mazooma) (Scorpion 4) (set 14)", - "sc4inspn", "Inner Spin (Mazooma) (Scorpion 4) (set 1)", - "sc4inspna", "Inner Spin (Mazooma) (Scorpion 4) (set 2)", - "sc4ivply", "4 Play (Dutch) (Bellfruit) (Scorpion 4)", - "sc4jack", "Jack The Kipper (Mazooma) (Scorpion 4) (set 1)", - "sc4jacka", "Jack The Kipper (Mazooma) (Scorpion 4) (set 2)", - "sc4jackb", "Jack The Kipper (Mazooma) (Scorpion 4) (set 3)", - "sc4jackc", "Jack The Kipper (Mazooma) (Scorpion 4) (set 4)", - "sc4jackd", "Jack The Kipper (Mazooma) (Scorpion 4) (set 5)", - "sc4jacke", "Jack The Kipper (Mazooma) (Scorpion 4) (set 6)", - "sc4jackf", "Jack The Kipper (Mazooma) (Scorpion 4) (set 7)", - "sc4jackg", "Jack The Kipper (Mazooma) (Scorpion 4) (set 8)", - "sc4jbuck", "Jungle Bucks (Bellfruit) (Scorpion 4) (set 1)", - "sc4jbucka", "Jungle Bucks (Bellfruit) (Scorpion 4) (set 2)", - "sc4jbuckb", "Jungle Bucks (Bellfruit) (Scorpion 4) (set 3)", - "sc4jbuckc", "Jungle Bucks (Bellfruit) (Scorpion 4) (set 4)", - "sc4jbuckd", "Jungle Bucks (Bellfruit) (Scorpion 4) (set 5)", - "sc4jiggn", "Jiggery Pockery (German) (Nova) (Scorpion 4)", - "sc4jiggr", "Jiggery Pokery (Mazooma) (Scorpion 4) (set 1)", - "sc4jiggra", "Jiggery Pokery (Mazooma) (Scorpion 4) (set 2)", - "sc4jiggrb", "Jiggery Pokery (Mazooma) (Scorpion 4) (set 3)", - "sc4jiggrc", "Jiggery Pokery (Mazooma) (Scorpion 4) (set 4)", - "sc4jive", "Jive Money (PR2096) (Mazooma) (Scorpion 4)", - "sc4jivea", "Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 1)", - "sc4jiveb", "Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 2)", - "sc4jivec", "Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 3)", - "sc4jived", "Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 4)", - "sc4jjc", "Jumping Jack Cash (Mazooma) (Scorpion 4) (set 1)", - "sc4jjca", "Jumping Jack Cash (Mazooma) (Scorpion 4) (set 2)", - "sc4jjcb", "Jumping Jack Cash (Mazooma) (Scorpion 4) (set 3)", - "sc4jjcc", "Jumping Jack Cash (Mazooma) (Scorpion 4) (set 4)", - "sc4jjcd", "Jumping Jack Cash (Mazooma) (Scorpion 4) (set 5)", - "sc4jjce", "Jumping Jack Cash (Mazooma) (Scorpion 4) (set 6)", - "sc4jjcf", "Jumping Jack Cash (Mazooma) (Scorpion 4) (set 7)", - "sc4jjcg", "Jumping Jack Cash (Mazooma) (Scorpion 4) (set 8)", - "sc4jjch", "Jumping Jack Cash (Mazooma) (Scorpion 4) (set 9)", - "sc4jjci", "Jumping Jack Cash (Mazooma) (Scorpion 4) (set 10)", - "sc4jjf", "Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 1)", - "sc4jjfa", "Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 2)", - "sc4jjfb", "Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 3)", - "sc4jjfc", "Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 1)", - "sc4jjfd", "Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 2)", - "sc4jjfe", "Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 3)", - "sc4jjff", "Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 4)", - "sc4jjfg", "Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 4)", - "sc4jjfh", "Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 5)", - "sc4jjfi", "Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 6)", - "sc4jjfj", "Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 5)", - "sc4jjfk", "Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 6)", - "sc4jjfl", "Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 7)", - "sc4jjfm", "Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 8)", - "sc4jjok", "Jackpot Jokers (Bellfruit) (Scorpion 4) (set 1)", - "sc4jjoka", "Jackpot Jokers (Bellfruit) (Scorpion 4) (set 2)", - "sc4jjucl", "Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4jjucla", "Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", - "sc4jjuclb", "Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4jjuclc", "Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", - "sc4jjucld", "Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4jjucle", "Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4jjunc", "Jackpot Junction (Bellfruit) (Scorpion 4) (set 1)", - "sc4jjunca", "Jackpot Junction (Bellfruit) (Scorpion 4) (set 2)", - "sc4jjuncb", "Jackpot Junction (Bellfruit) (Scorpion 4) (set 3)", - "sc4jjuncc", "Jackpot Junction (Bellfruit) (Scorpion 4) (set 4)", - "sc4jjuncd", "Jackpot Junction (Bellfruit) (Scorpion 4) (set 5)", - "sc4jjunce", "Jackpot Junction (Bellfruit) (Scorpion 4) (set 6)", - "sc4jjuncf", "Jackpot Junction (Bellfruit) (Scorpion 4) (set 7)", - "sc4jjuncg", "Jackpot Junction (Bellfruit) (Scorpion 4) (set 8)", - "sc4jjunch", "Jackpot Junction (Bellfruit) (Scorpion 4) (set 9)", - "sc4jjunci", "Jackpot Junction (Bellfruit) (Scorpion 4) (set 10)", - "sc4jolly", "Jolly Jousting (Qps) (Scorpion 4) (set 1)", - "sc4jollya", "Jolly Jousting (Qps) (Scorpion 4) (set 2)", - "sc4juicy", "Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 1)", - "sc4juicya", "Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 1)", - "sc4juicyb", "Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 2)", - "sc4juicyc", "Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 2)", - "sc4juicyd", "Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 1)", - "sc4juicye", "Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 2)", - "sc4juicyf", "Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 3)", - "sc4juicyg", "Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 4)", - "sc4juicyi", "Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 1)", - "sc4juicyj", "Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 2)", - "sc4kalei", "Kaleidoscope (011) (Qps) (Scorpion 4) (set 1)", - "sc4kaleia", "Kaleidoscope (041) (Qps) (Scorpion 4) (set 2)", - "sc4kaleib", "Kaleidoscope (011) (Qps) (Scorpion 4) (set 3)", - "sc4kaleic", "Kaleidoscope (041) (Qps) (Scorpion 4) (set 4)", - "sc4kaleid", "Kaleidoscope (051) (Qps) (Scorpion 4) (set 1)", - "sc4kaleie", "Kaleidoscope (051) (Qps) (Scorpion 4) (set 2)", - "sc4kkong", "King Kong Cash (Mazooma) (Scorpion 4) (set 1)", - "sc4kkonga", "King Kong Cash (Mazooma) (Scorpion 4) (set 2)", - "sc4kkongb", "King Kong Cash (Mazooma) (Scorpion 4) (set 3)", - "sc4kkongc", "King Kong Cash (Mazooma) (Scorpion 4) (set 4)", - "sc4kkongd", "King Kong Cash (Mazooma) (Scorpion 4) (set 5)", - "sc4kkonge", "King Kong Cash (Mazooma) (Scorpion 4) (set 6)", - "sc4kkongf", "King Kong Cash (Mazooma) (Scorpion 4) (set 7)", - "sc4kkongg", "King Kong Cash (Mazooma) (Scorpion 4) (set 8)", - "sc4kkongh", "King Kong Cash (Mazooma) (Scorpion 4) (set 9)", - "sc4kkongi", "King Kong Cash (Mazooma) (Scorpion 4) (set 10)", - "sc4kkongj", "King Kong Cash (Mazooma) (Scorpion 4) (set 11)", - "sc4knok", "Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 1)", - "sc4knoka", "Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 2)", - "sc4knokb", "Knockout (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 1)", - "sc4knokc", "Knockout (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 2)", - "sc4lasv", "Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 1)", - "sc4lasva", "Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 2)", - "sc4ldcas", "Line Dancer Casino (Mazooma) (Scorpion 4) (set 1)", - "sc4ldcasa", "Line Dancer Casino (Mazooma) (Scorpion 4) (set 2)", - "sc4ldcasb", "Line Dancer Casino (Mazooma) (Scorpion 4) (set 3)", - "sc4ldcasc", "Line Dancer Casino (Mazooma) (Scorpion 4) (set 4)", - "sc4ldcasd", "Line Dancer Casino (Mazooma) (Scorpion 4) (set 5)", - "sc4ldcase", "Line Dancer Casino (Mazooma) (Scorpion 4) (set 6)", - "sc4ldvcl", "Little Devil Club (Mazooma) (Scorpion 4)", - "sc4ldvl", "Little Devil (Mazooma) (Scorpion 4) (set 1)", - "sc4ldvla", "Little Devil (Mazooma) (Scorpion 4) (set 2)", - "sc4ldvlb", "Little Devil (Mazooma) (Scorpion 4) (set 3)", - "sc4ldvlc", "Little Devil (Mazooma) (Scorpion 4) (set 4)", - "sc4leg", "Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 1)", - "sc4lega", "Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 2)", - "sc4legb", "Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 3)", - "sc4legc", "Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 4)", - "sc4legcb", "Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4legcba", "Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4legcbb", "Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4legcbc", "Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4legcbd", "Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4legcbe", "Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4legd", "Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 5)", - "sc4lege", "Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 6)", - "sc4legf", "Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 7)", - "sc4legg", "Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 8)", - "sc4lined", "Line Dancer (Mazooma) (Scorpion 4) (set 1)", - "sc4lineda", "Line Dancer (Mazooma) (Scorpion 4) (set 2)", - "sc4linedb", "Line Dancer (Mazooma) (Scorpion 4) (set 3)", - "sc4linedc", "Line Dancer (Mazooma) (Scorpion 4) (set 4)", - "sc4linedd", "Line Dancer Arcade (Mazooma) (Scorpion 4) (set 1)", - "sc4linede", "Line Dancer Arcade (Mazooma) (Scorpion 4) (set 2)", - "sc4linedf", "Line Dancer Arcade (Mazooma) (Scorpion 4) (set 3)", - "sc4linedg", "Line Dancer Arcade (Mazooma) (Scorpion 4) (set 4)", - "sc4linedh", "Line Dancer Arcade (Mazooma) (Scorpion 4) (set 5)", - "sc4linedi", "Line Dancer Arcade (Mazooma) (Scorpion 4) (set 6)", - "sc4lions", "Three Lions (Mazooma) (Scorpion 4) (set 1)", - "sc4lionsa", "Three Lions (Mazooma) (Scorpion 4) (set 2)", - "sc4lionsb", "Three Lions (Mazooma) (Scorpion 4) (set 3)", - "sc4lionsc", "Three Lions (Mazooma) (Scorpion 4) (set 4)", - "sc4lionsd", "Three Lions (Mazooma) (Scorpion 4) (set 5)", - "sc4lionse", "Three Lions (Mazooma) (Scorpion 4) (set 6)", - "sc4lionsf", "Three Lions (Mazooma) (Scorpion 4) (set 7)", - "sc4lir", "Let It Roll (Bellfruit) (Scorpion 4) (set 1)", - "sc4lira", "Let It Roll (Bellfruit) (Scorpion 4) (set 2)", - "sc4lirb", "Let It Roll (Bellfruit) (Scorpion 4) (set 3)", - "sc4lirc", "Let It Roll (Bellfruit) (Scorpion 4) (set 4)", - "sc4lird", "Let It Roll (Bellfruit) (Scorpion 4) (set 5)", - "sc4lire", "Let It Roll (Bellfruit) (Scorpion 4) (set 6)", - "sc4lirf", "Let It Roll (Bellfruit) (Scorpion 4) (set 7)", - "sc4lirg", "Let It Roll (Bellfruit) (Scorpion 4) (set 8)", - "sc4lirh", "Let It Roll (Bellfruit) (Scorpion 4) (set 9)", - "sc4liri", "Let It Roll (Bellfruit) (Scorpion 4) (set 10)", - "sc4lkbcl", "Lock Buster Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4lkbcla", "Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 1)", - "sc4lkbclb", "Lock Buster Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4lkbclc", "Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 2)", - "sc4lkbcld", "Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", - "sc4lkbcle", "Lock Buster Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4lkbclf", "Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", - "sc4lkbclg", "Lock Buster Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4lkbclh", "Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 1)", - "sc4lkbcli", "Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 2)", - "sc4lockb", "Lock Buster (Bellfruit) (Scorpion 4) (set 1)", - "sc4lockba", "Lock Buster (Bellfruit) (Scorpion 4) (set 2)", - "sc4lockbb", "Lock Buster (Bellfruit) (Scorpion 4) (set 3)", - "sc4lockbc", "Lock Buster (Bellfruit) (Scorpion 4) (set 4)", - "sc4lockbd", "Lock Buster (Bellfruit) (Scorpion 4) (set 5)", - "sc4lockbe", "Lock Buster (Bellfruit) (Scorpion 4) (set 6)", - "sc4lockbf", "Lock Buster (Bellfruit) (Scorpion 4) (set 7)", - "sc4lockbg", "Lock Buster (Bellfruit) (Scorpion 4) (set 8)", - "sc4lotr2", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 1)", - "sc4lotr2a", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 2)", - "sc4lotr2b", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 3)", - "sc4lotr2c", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 4)", - "sc4lotr2d", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 5)", - "sc4lotr2e", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 6)", - "sc4lotr2f", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 11)", - "sc4lotr2g", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 12)", - "sc4lotr2h", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 13)", - "sc4lotr2i", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 14)", - "sc4lotr2j", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 7)", - "sc4lotr2k", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 8)", - "sc4lotr2l", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 9)", - "sc4lotr2m", "Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 10)", - "sc4lotrf", "Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 1)", - "sc4lotrfa", "Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 2)", - "sc4lotrfb", "Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 3)", - "sc4lotrfc", "Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 4)", - "sc4lotrfd", "Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 5)", - "sc4lotrfe", "Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 6)", - "sc4lotrff", "Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 7)", - "sc4lotrfg", "Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 8)", - "sc4lotrr", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 1)", - "sc4lotrra", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 2)", - "sc4lotrrb", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 3)", - "sc4lotrrc", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 4)", - "sc4lotrrd", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 5)", - "sc4lotrre", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 6)", - "sc4lotrt", "Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 9)", - "sc4lotrta", "Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 10)", - "sc4ltr2c", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4ltr2ca", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4ltr2cb", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4ltr2cc", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4ltr2cd", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4ltr2ce", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4ltr2cf", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 7)", - "sc4ltr2cg", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 8)", - "sc4ltr2ch", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 9)", - "sc4ltr2ci", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 10)", - "sc4ltr2cj", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 11)", - "sc4ltr2ck", "Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 12)", - "sc4luck7", "Lucky 7s (Mazooma) (Scorpion 4) (Top Box)", - "sc4luck7a", "Lucky 7s (Mazooma) (Scorpion 4) (set 1)", - "sc4luck7b", "Lucky 7s (Mazooma) (Scorpion 4) (set 2)", - "sc4luck7c", "Lucky 7s (Mazooma) (Scorpion 4) (set 3)", - "sc4luck7d", "Lucky 7s (Mazooma) (Scorpion 4) (set 4)", - "sc4luckb", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 1)", - "sc4luckb0", "Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 6)", - "sc4luckb1", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 23)", - "sc4luckb2", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 24)", - "sc4luckb3", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 25)", - "sc4luckb4", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 26)", - "sc4luckba", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 2)", - "sc4luckbb", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 3)", - "sc4luckbc", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 4)", - "sc4luckbd", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 5)", - "sc4luckbe", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 6)", - "sc4luckbf", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 7)", - "sc4luckbg", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 8)", - "sc4luckbh", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 9)", - "sc4luckbi", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 10)", - "sc4luckbj", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 11)", - "sc4luckbk", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 12)", - "sc4luckbl", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 13)", - "sc4luckbm", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 14)", - "sc4luckbn", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 15)", - "sc4luckbo", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 16)", - "sc4luckbp", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 17)", - "sc4luckbq", "Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 1)", - "sc4luckbr", "Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 2)", - "sc4luckbs", "Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 3)", - "sc4luckbt", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 18)", - "sc4luckbu", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 19)", - "sc4luckbv", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 20)", - "sc4luckbw", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 21)", - "sc4luckbx", "Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 22)", - "sc4luckby", "Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 4)", - "sc4luckbz", "Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 5)", - "sc4m2m", "Money To Money (Mazooma) (Scorpion 4) (set 1)", - "sc4m2ma", "Money To Money (Mazooma) (Scorpion 4) (set 2)", - "sc4magci", "Magic Circle (011) (Qps) (Scorpion 4) (set 1)", - "sc4magcia", "Magic Circle (021) (Qps) (Scorpion 4) (set 1)", - "sc4magcib", "Magic Circle (031) (Qps) (Scorpion 4) (set 1)", - "sc4magcic", "Magic Circle (012) (Qps) (Scorpion 4) (set 1)", - "sc4magcid", "Magic Circle (012) (Qps) (Scorpion 4) (set 3)", - "sc4magcie", "Magic Circle (022) (Qps) (Scorpion 4) (set 1)", - "sc4magcif", "Magic Circle (032) (Qps) (Scorpion 4) (set 1)", - "sc4magcig", "Magic Circle (013) (Qps) (Scorpion 4) (set 1)", - "sc4magcih", "Magic Circle (014) (Qps) (Scorpion 4) (set 1)", - "sc4magcii", "Magic Circle (024) (Qps) (Scorpion 4) (set 1)", - "sc4magcij", "Magic Circle (034) (Qps) (Scorpion 4) (set 1)", - "sc4magcik", "Magic Circle (011) (Qps) (Scorpion 4) (set 2)", - "sc4magcil", "Magic Circle (021) (Qps) (Scorpion 4) (set 2)", - "sc4magcim", "Magic Circle (031) (Qps) (Scorpion 4) (set 2)", - "sc4magcin", "Magic Circle (012) (Qps) (Scorpion 4) (set 2)", - "sc4magcio", "Magic Circle (012) (Qps) (Scorpion 4) (set 4)", - "sc4magcip", "Magic Circle (022) (Qps) (Scorpion 4) (set 2)", - "sc4magciq", "Magic Circle (032) (Qps) (Scorpion 4) (set 2)", - "sc4magcir", "Magic Circle (013) (Qps) (Scorpion 4) (set 2)", - "sc4magcis", "Magic Circle (014) (Qps) (Scorpion 4) (set 2)", - "sc4magcit", "Magic Circle (024) (Qps) (Scorpion 4) (set 2)", - "sc4magciu", "Magic Circle (034) (Qps) (Scorpion 4) (set 2)", - "sc4magic", "Magic Poundabout (Qps) (Scorpion 4) (set 1)", - "sc4magica", "Magic Poundabout (Qps) (Scorpion 4) (set 2)", - "sc4magicb", "Magic Poundabout (Qps) (Scorpion 4) (set 3)", - "sc4magicc", "Magic Poundabout (Qps) (Scorpion 4) (set 4)", - "sc4manic", "Manic Miner (Bellfruit) (Scorpion 4) (set 1)", - "sc4manica", "Manic Miner (Bellfruit) (Scorpion 4) (set 2)", - "sc4manicb", "Manic Miner (Bellfruit) (Scorpion 4) (set 5)", - "sc4manicc", "Manic Miner (Bellfruit) (Scorpion 4) (set 6)", - "sc4manicd", "Manic Miner (Bellfruit) (Scorpion 4) (set 7)", - "sc4manice", "Manic Miner (Bellfruit) (Scorpion 4) (set 8)", - "sc4manicf", "Manic Miner (Bellfruit) (Scorpion 4) (set 9)", - "sc4manicg", "Manic Miner (Bellfruit) (Scorpion 4) (set 10)", - "sc4maxcc", "Maximus Cash Club (Mazooma) (Scorpion 4) (set 1)", - "sc4maxcca", "Maximus Cash Club (Mazooma) (Scorpion 4) (set 2)", - "sc4maxccb", "Maximus Cash Club (Mazooma) (Scorpion 4) (set 3)", - "sc4maxccc", "Maximus Cash Club (Mazooma) (Scorpion 4) (set 4)", - "sc4maxim", "Maximus Cash (Mazooma) (Scorpion 4) (set 1)", - "sc4maxima", "Maximus Cash (Mazooma) (Scorpion 4) (set 2)", - "sc4maximb", "Maximus Cash (Mazooma) (Scorpion 4) (set 3)", - "sc4maximc", "Maximus Cash (Mazooma) (Scorpion 4) (set 4)", - "sc4maximd", "Maximus Cash (Mazooma) (Scorpion 4) (set 5)", - "sc4maxime", "Maximus Cash (Mazooma) (Scorpion 4) (set 6)", - "sc4maximf", "Maximus Cash (Mazooma) (Scorpion 4) (set 7)", - "sc4maximg", "Maximus Cash (Mazooma) (Scorpion 4) (set 8)", - "sc4mbags", "Money Bags (Bellfruit) (Scorpion 4) (set 1)", - "sc4mbagsa", "Money Bags (Bellfruit) (Scorpion 4) (set 2)", - "sc4mbagsb", "Money Bags (Bellfruit) (Scorpion 4) (set 3)", - "sc4mbagsc", "Money Bags (Bellfruit) (Scorpion 4) (set 4)", - "sc4mcas", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 1)", - "sc4mcas0", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 15)", - "sc4mcas1", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 16)", - "sc4mcas2", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 17)", - "sc4mcas3", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 18)", - "sc4mcas4", "Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 3)", - "sc4mcask", "Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 1)", - "sc4mcasm", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 2)", - "sc4mcasn", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 3)", - "sc4mcaso", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 4)", - "sc4mcasp", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 5)", - "sc4mcasq", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 6)", - "sc4mcasr", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 7)", - "sc4mcass", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 8)", - "sc4mcast", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 9)", - "sc4mcasu", "Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 2)", - "sc4mcasv", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 10)", - "sc4mcasw", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 11)", - "sc4mcasx", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 12)", - "sc4mcasy", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 13)", - "sc4mcasz", "Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 14)", - "sc4mclb", "Monopoly Club (Mazooma) (Scorpion 4) (set 1)", - "sc4mclba", "Monopoly Club (Mazooma) (Scorpion 4) (set 2)", - "sc4mclbb", "Monopoly Club (Mazooma) (Scorpion 4) (set 3)", - "sc4mclbc", "Monopoly Club (Mazooma) (Scorpion 4) (set 4)", - "sc4mclbd", "Monopoly Club (Mazooma) (Scorpion 4) (set 5)", - "sc4mclbe", "Monopoly Club (Mazooma) (Scorpion 4) (set 6)", - "sc4mdm", "Monopoly Double Money (Bellfruit) (Scorpion 4) (set 1)", - "sc4mdma", "Monopoly Double Money (Bellfruit) (Scorpion 4) (set 2)", - "sc4mgr", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 1)", - "sc4mgra", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 2)", - "sc4mgrb", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 5)", - "sc4mgrc", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 6)", - "sc4mgrd", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 7)", - "sc4mgre", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 8)", - "sc4mgrf", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 9)", - "sc4mgrg", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 10)", - "sc4mgrh", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 3)", - "sc4mgri", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 4)", - "sc4mgrj", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 11)", - "sc4mgrk", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 12)", - "sc4mgrl", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 13)", - "sc4mgrm", "Money Go Round Casino (Bellfruit) (Scorpion 4) (set 14)", - "sc4mhn", "Monopoly Here & Now (Mazooma) (Scorpion 4) (set 1)", - "sc4mhna", "Monopoly Here & Now (Mazooma) (Scorpion 4) (set 2)", - "sc4mhp", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 1)", - "sc4mhpa", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 2)", - "sc4mhpb", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 3)", - "sc4mhpc", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 4)", - "sc4mhpd", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 5)", - "sc4mhpe", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 6)", - "sc4mhpf", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 7)", - "sc4mhpg", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 8)", - "sc4mhph", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 9)", - "sc4mhpi", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 10)", - "sc4mhpj", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 11)", - "sc4mhpk", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 12)", - "sc4mhpl", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 13)", - "sc4mhpm", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 14)", - "sc4mhpn", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 15)", - "sc4mhpo", "Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 16)", - "sc4milja", "Miljonairs Arcade (Dutch) (Bellfruit) (Scorpion 4)", - "sc4miljo", "Miljonairs (Dutch) (Bellfruit) (Scorpion 4) (set 1)", - "sc4milro", "Millionaires Row (Scorpion 4?)", - "sc4mmad", "Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 1)", - "sc4mmada", "Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 2)", - "sc4mmadb", "Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 3)", - "sc4mmadc", "Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 4)", - "sc4mmadd", "Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 5)", - "sc4mmade", "Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 6)", - "sc4mmadf", "Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 7)", - "sc4mmadg", "Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 8)", - "sc4mmb", "Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 1)", - "sc4mmba", "Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 2)", - "sc4mmm", "Mental Money Monsters (Mazooma) (Scorpion 4) (set 1)", - "sc4mmma", "Mental Money Monsters (Mazooma) (Scorpion 4) (set 2)", - "sc4mmmb", "Mental Money Monsters (Mazooma) (Scorpion 4) (set 3)", - "sc4mmmc", "Mental Money Monsters (Mazooma) (Scorpion 4) (set 4)", - "sc4mmmd", "Mental Money Monsters (Mazooma) (Scorpion 4) (set 5)", - "sc4mmme", "Mental Money Monsters (Mazooma) (Scorpion 4) (set 6)", - "sc4mmmf", "Mental Money Monsters (Mazooma) (Scorpion 4) (set 7)", - "sc4mmmg", "Mental Money Monsters (Mazooma) (Scorpion 4) (set 8)", - "sc4mondx", "Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 1)", - "sc4mondxa", "Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 2)", - "sc4mondxb", "Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 3)", - "sc4mondxc", "Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 4)", - "sc4mondxd", "Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 1)", - "sc4mondxe", "Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 3)", - "sc4mondxf", "Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 4)", - "sc4mondxg", "Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 2)", - "sc4mono5", "Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 1)", - "sc4mono5a", "Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 2)", - "sc4monoa", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 1)", - "sc4monoaa", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 2)", - "sc4monoab", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 3)", - "sc4monoac", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 4)", - "sc4monoad", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 5)", - "sc4monoae", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 6)", - "sc4monoaf", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 7)", - "sc4monoag", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 8)", - "sc4monoah", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 9)", - "sc4monoai", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 10)", - "sc4monoaj", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 11)", - "sc4monoak", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 12)", - "sc4monoal", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 13)", - "sc4monoam", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 14)", - "sc4monoan", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 15)", - "sc4monoao", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 16)", - "sc4monoap", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 17)", - "sc4monoaq", "Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 18)", - "sc4monob", "Monopoly (Bellfruit) (Scorpion 4) (set 1)", - "sc4monoba", "Monopoly (Bellfruit) (Scorpion 4) (set 2)", - "sc4monobb", "Monopoly (Bellfruit) (Scorpion 4) (set 3)", - "sc4monobc", "Monopoly (Bellfruit) (Scorpion 4) (set 4)", - "sc4monobd", "Monopoly (Bellfruit) (Scorpion 4) (set 5)", - "sc4monobe", "Monopoly (Bellfruit) (Scorpion 4) (set 6)", - "sc4monobf", "Monopoly (Bellfruit) (Scorpion 4) (set 7)", - "sc4monobg", "Monopoly (Bellfruit) (Scorpion 4) (set 8)", - "sc4monobh", "Monopoly (Bellfruit) (Scorpion 4) (set 9)", - "sc4monobi", "Monopoly (Bellfruit) (Scorpion 4) (set 10)", - "sc4monobj", "Monopoly (Bellfruit) (Scorpion 4) (set 11)", - "sc4monobk", "Monopoly (Bellfruit) (Scorpion 4) (set 12)", - "sc4monobl", "Monopoly (Bellfruit) (Scorpion 4) (set 13)", - "sc4monobm", "Monopoly (Bellfruit) (Scorpion 4) (set 14)", - "sc4monod", "Monopoly (Mazooma) [German] (Scorpion 4) (set 1)", - "sc4monoda", "Monopoly (Mazooma) [German] (Scorpion 4) (set 2)", - "sc4monodb", "Monopoly (Mazooma) [German] (Scorpion 4) (set 3)", - "sc4monog", "Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 5)", - "sc4monoga", "Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 6)", - "sc4monop", "Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 1)", - "sc4monopa", "Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 2)", - "sc4monot", "Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 1)", - "sc4monota", "Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 2)", - "sc4monotb", "Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 3)", - "sc4monotc", "Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 4)", - "sc4monsp", "Money Spinner (Dutch) (Bellfruit) (Scorpion 4)", - "sc4mont", "Montego Pay (Qps) (Scorpion 4) (set 1)", - "sc4monta", "Montego Pay (Qps) (Scorpion 4) (set 2)", - "sc4montb", "Montego Pay (Qps) (Scorpion 4) (set 3)", - "sc4montc", "Montego Pay (Qps) (Scorpion 4) (set 4)", - "sc4montd", "Montego Pay (Qps) (Scorpion 4) (set 5)", - "sc4monte", "Montego Pay (Qps) (Scorpion 4) (set 6)", - "sc4montf", "Montego Pay (Qps) (Scorpion 4) (set 7)", - "sc4montg", "Montego Pay (Qps) (Scorpion 4) (set 8)", - "sc4month", "Montego Pay (Qps) (Scorpion 4) (set 9)", - "sc4monti", "Montego Pay (Qps) (Scorpion 4) (set 10)", - "sc4motor", "Motorway Mania (Bellfruit) (Scorpion 4) (set 1)", - "sc4motora", "Motorway Mania (Bellfruit) (Scorpion 4) (set 2)", - "sc4motorb", "Motorway Mania (Bellfruit) (Scorpion 4) (set 3)", - "sc4motorc", "Motorway Mania (Bellfruit) (Scorpion 4) (set 4)", - "sc4motord", "Motorway Mania (Bellfruit) (Scorpion 4) (set 5)", - "sc4motore", "Motorway Mania (Bellfruit) (Scorpion 4) (set 6)", - "sc4motorf", "Motorway Mania (Bellfruit) (Scorpion 4) (set 7)", - "sc4motorg", "Motorway Mania (Bellfruit) (Scorpion 4) (set 8)", - "sc4motorh", "Motorway Mania (Bellfruit) (Scorpion 4) (set 9)", - "sc4mou", "Move On Up (Qps) (Scorpion 4) (set 1)", - "sc4moua", "Move On Up (Qps) (Scorpion 4) (set 2)", - "sc4moub", "Move On Up (Qps) (Scorpion 4) (set 3)", - "sc4mowow", "Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 1)", - "sc4mowowa", "Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 2)", - "sc4mowowb", "Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 3)", - "sc4mowowc", "Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 4)", - "sc4mr2r", "Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 1)", - "sc4mr2ra", "Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 2)", - "sc4mr2rb", "Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 3)", - "sc4mr2rc", "Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 4)", - "sc4mr2rd", "Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 5)", - "sc4mr2re", "Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 6)", - "sc4mrh", "Monopoly Red Hot (Mazooma) (Scorpion 4) (set 1)", - "sc4mrha", "Monopoly Red Hot (Mazooma) (Scorpion 4) (set 2)", - "sc4mrhb", "Monopoly Red Hot (Mazooma) (Scorpion 4) (set 3)", - "sc4mrhc", "Monopoly Red Hot (Mazooma) (Scorpion 4) (set 4)", - "sc4mrhd", "Monopoly Red Hot (Mazooma) (Scorpion 4) (set 5)", - "sc4mrhe", "Monopoly Red Hot (Mazooma) (Scorpion 4) (set 6)", - "sc4msclb", "Money Spinner Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4msclba", "Money Spinner Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4msclbb", "Money Spinner Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4msclbc", "Money Spinner Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4msclbd", "Money Spinner Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4msclbe", "Money Spinner Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4msclbf", "Money Spinner Club (Bellfruit) (Scorpion 4) (set 7)", - "sc4msclbg", "Money Spinner Club (Bellfruit) (Scorpion 4) (set 8)", - "sc4mspid", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 1)", - "sc4mspida", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 2)", - "sc4mspidb", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 3)", - "sc4mspidc", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 4)", - "sc4mspidd", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 5)", - "sc4mspide", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 6)", - "sc4mspidf", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 7)", - "sc4mspidg", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 8)", - "sc4mspidh", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 13)", - "sc4mspidi", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 14)", - "sc4mspidj", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 9)", - "sc4mspidk", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 10)", - "sc4mspidl", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 11)", - "sc4mspidm", "Casino Money Spider (Bellfruit) (Scorpion 4) (set 12)", - "sc4mtb", "Money To Burn (Bellfruit) (Scorpion 4) (set 1)", - "sc4mtba", "Money To Burn (Bellfruit) (Scorpion 4) (set 2)", - "sc4mtbb", "Money To Burn (Bellfruit) (Scorpion 4) (set 3)", - "sc4mtbc", "Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 1)", - "sc4mtbcl", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4mtbcla", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4mtbclb", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4mtbclc", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4mtbcld", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4mtbcle", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4mtbclf", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 7)", - "sc4mtbclg", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 8)", - "sc4mtbclh", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 9)", - "sc4mtbcli", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 10)", - "sc4mtbclj", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 11)", - "sc4mtbclk", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 12)", - "sc4mtbcll", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 13)", - "sc4mtbclm", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 14)", - "sc4mtbcln", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 15)", - "sc4mtbclo", "Money To Burn Club (Bellfruit) (Scorpion 4) (set 16)", - "sc4mtbd", "Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 2)", - "sc4mtbe", "Money To Burn (Bellfruit) (Scorpion 4) (set 4)", - "sc4mtbf", "Money To Burn (Bellfruit) (Scorpion 4) (set 5)", - "sc4mtbg", "Money To Burn (Bellfruit) (Scorpion 4) (set 6)", - "sc4mtbh", "Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 3)", - "sc4mtbi", "Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 4)", - "sc4mtbj", "Money To Burn (Bellfruit) (Scorpion 4) (set 7)", - "sc4mwwtb", "Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 1)", - "sc4mwwtba", "Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 2)", - "sc4mwwtbb", "Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 3)", - "sc4mwwtbc", "Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 4)", - "sc4mwwtbd", "Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 5)", - "sc4nmare", "A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 1)", - "sc4nmarea", "A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 2)", - "sc4nmareb", "A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 3)", - "sc4nmarec", "A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 4)", - "sc4nmtj", "Never Mind The Jackpots (Mazooma) (Scorpion 4) (011)", - "sc4nmtja", "Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 1)", - "sc4nmtjb", "Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 1)", - "sc4nmtjc", "Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 2)", - "sc4nmtjd", "Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 2)", - "sc4nudit", "Nudge It (Mazooma) (Scorpion 4) (set 1)", - "sc4nudita", "Nudge It (Mazooma) (Scorpion 4) (set 2)", - "sc4nuditb", "Nudge It (Mazooma) (Scorpion 4) (set 3)", - "sc4nunsm", "Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 1)", - "sc4nunsmb", "Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 2)", - "sc4nunsmc", "Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 3)", - "sc4nunsmd", "Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 4)", - "sc4nunsme", "Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 5)", - "sc4nunsmf", "Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 6)", - "sc4nunsmg", "Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 7)", - "sc4nunsmh", "Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 8)", - "sc4nunsmi", "Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 9)", - "sc4nunsmj", "Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 10)", - "sc4onup", "On The Up (Mazooma) (Scorpion 4) (set 1)", - "sc4onupa", "On The Up (Mazooma) (Scorpion 4) (set 2)", - "sc4opses", "Open Sesame (Bellfruit) (Scorpion 4) (set 1)", - "sc4opsesa", "Open Sesame (Bellfruit) (Scorpion 4) (set 2)", - "sc4outlw", "Outlaw (Bellfruit) (Scorpion 4) (set 1)", - "sc4outlwa", "Outlaw (Bellfruit) (Scorpion 4) (set 2)", - "sc4outlwb", "Outlaw (Bellfruit) (Scorpion 4) (set 3)", - "sc4outlwc", "Outlaw (Bellfruit) (Scorpion 4) (set 4)", - "sc4oyf", "Off Your Face (Bellfruit) (Scorpion 4) (set 1)", - "sc4oyfa", "Off Your Face (Bellfruit) (Scorpion 4) (set 2)", - "sc4paccl", "Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 1)", - "sc4paccla", "Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 2)", - "sc4pacclb", "Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 3)", - "sc4pacclc", "Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 4)", - "sc4paccs", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 1)", - "sc4paccsa", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 2)", - "sc4paccsb", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 3)", - "sc4paccsc", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 4)", - "sc4paccsd", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 5)", - "sc4paccse", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 6)", - "sc4paccsf", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 7)", - "sc4paccsg", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 8)", - "sc4paccsh", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 12)", - "sc4paccsi", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 13)", - "sc4paccsj", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 9)", - "sc4paccsk", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 10)", - "sc4paccsl", "Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 11)", - "sc4pacmn", "Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 1)", - "sc4pacmna", "Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 2)", - "sc4pacmnb", "Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 3)", - "sc4pacpl", "Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 1)", - "sc4pacpla", "Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 2)", - "sc4pacplb", "Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 3)", - "sc4pacplc", "Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 4)", - "sc4pacpld", "Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 5)", - "sc4pacple", "Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 6)", - "sc4pacplf", "Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 7)", - "sc4pacplg", "Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 8)", - "sc4pacplh", "Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 9)", - "sc4pacqp", "Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 1)", - "sc4pacqpa", "Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 2)", - "sc4pacqpb", "Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 3)", - "sc4party", "Party Time (German) (PR7151, GPTM) (Nova) (Scorpion 4)", - "sc4paytm", "Pay Time (Dutch) (Bellfruit) (Scorpion 4)", - "sc4pen1", "Public Enemy No1 (Bellfruit) (Scorpion 4) (set 1)", - "sc4pen1a", "Public Enemy No1 (Bellfruit) (Scorpion 4) (set 2)", - "sc4pen1b", "Public Enemy No1 (Bellfruit) (Scorpion 4) (set 3)", - "sc4pen1c", "Public Enemy No1 (Bellfruit) (Scorpion 4) (set 4)", - "sc4pen1d", "Public Enemy No1 (Bellfruit) (Scorpion 4) (set 5)", - "sc4pglcl", "Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4pglcla", "Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4pglclb", "Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4pglclc", "Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4pglcld", "Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4pglcle", "Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4pglclf", "Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 7)", - "sc4pglclg", "Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 8)", - "sc4pglclh", "Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 9)", - "sc4pglcs", "Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 1)", - "sc4pglcsa", "Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 2)", - "sc4pglcsb", "Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 3)", - "sc4pgold", "Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 1)", - "sc4pgolda", "Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 2)", - "sc4pgoldb", "Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 3)", - "sc4pgoldc", "Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 4)", - "sc4pgoldd", "Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 5)", - "sc4pgoldf", "Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 6)", - "sc4pipe", "Piping Hot (Mazooma) (Scorpion 4) (set 1)", - "sc4pipea", "Piping Hot (Mazooma) (Scorpion 4) (set 2)", - "sc4pir", "The Prize Is Right (Bellfruit) (Scorpion 4) (set 1)", - "sc4pira", "The Prize Is Right (Bellfruit) (Scorpion 4) (set 2)", - "sc4pirb", "The Prize Is Right (Bellfruit) (Scorpion 4) (set 3)", - "sc4pirc", "The Prize Is Right (Bellfruit) (Scorpion 4) (set 4)", - "sc4pird", "The Prize Is Right (Bellfruit) (Scorpion 4) (set 5)", - "sc4pire", "The Prize Is Right (Bellfruit) (Scorpion 4) (set 6)", - "sc4pirf", "The Prize Is Right (Bellfruit) (Scorpion 4) (set 7)", - "sc4pirg", "The Prize Is Right (Bellfruit) (Scorpion 4) (set 8)", - "sc4plumb", "Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 1)", - "sc4plumba", "Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 2)", - "sc4plumbb", "Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 1)", - "sc4plumbc", "Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 2)", - "sc4plumbd", "Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 1)", - "sc4plumbe", "Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 2)", - "sc4pmani", "Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 1)", - "sc4pmania", "Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 2)", - "sc4po8", "Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 1)", - "sc4po8a", "Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 1)", - "sc4po8b", "Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 2)", - "sc4po8c", "Pieces Of Eight (011) (Qps) (Scorpion 4) (set 1)", - "sc4po8d", "Pieces Of Eight (041) (Qps) (Scorpion 4) (set 1)", - "sc4po8e", "Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 2)", - "sc4po8f", "Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 3)", - "sc4po8g", "Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 3)", - "sc4po8h", "Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 4)", - "sc4po8i", "Pieces Of Eight (012) (Qps) (Scorpion 4) (set 1)", - "sc4po8j", "Pieces Of Eight (042) (Qps) (Scorpion 4) (set 1)", - "sc4po8k", "Pieces Of Eight (012) (Qps) (Scorpion 4) (set 2)", - "sc4po8l", "Pieces Of Eight (042) (Qps) (Scorpion 4) (set 2)", - "sc4po8m", "Pieces Of Eight (011) (Qps) (Scorpion 4) (set 2)", - "sc4po8n", "Pieces Of Eight (041) (Qps) (Scorpion 4) (set 2)", - "sc4pog", "Pots Of Gold (Bellfruit) (Scorpion 4) (set 1)", - "sc4poga", "Pots Of Gold (Bellfruit) (Scorpion 4) (set 2)", - "sc4pogb", "Pots Of Gold (Bellfruit) (Scorpion 4) (set 3)", - "sc4pogbl", "Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4pogbla", "Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4pogblb", "Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4pogblc", "Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4pogbld", "Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4pogble", "Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4pogc", "Pots Of Gold (Bellfruit) (Scorpion 4) (set 4)", - "sc4pogd", "Pots Of Gold (Bellfruit) (Scorpion 4) (set 5)", - "sc4poge", "Pots Of Gold (Bellfruit) (Scorpion 4) (set 6)", - "sc4pogf", "Pots Of Gold (Bellfruit) (Scorpion 4) (set 7)", - "sc4pogg", "Pots Of Gold (Bellfruit) (Scorpion 4) (set 8)", - "sc4pogh", "Pots Of Gold (Bellfruit) (Scorpion 4) (set 9)", - "sc4pogi", "Pots Of Gold (Bellfruit) (Scorpion 4) (set 10)", - "sc4polem", "Pole Position (Mazooma) (Scorpion 4) (set 1)", - "sc4polema", "Pole Position (Mazooma) (Scorpion 4) (set 2)", - "sc4polemb", "Pole Position (Mazooma) (Scorpion 4) (set 3)", - "sc4polemc", "Pole Position (Mazooma) (Scorpion 4) (set 4)", - "sc4polemd", "Pole Position (Mazooma) (Scorpion 4) (set 5)", - "sc4polen", "Pole Position (German) (PR7012, GPOS) (Nova) (Scorpion 4)", - "sc4polic", "Police Squid (V1.0) (Qps) (Scorpion 4) (set 1)", - "sc4polica", "Police Squid (V2.0) (Qps) (Scorpion 4) (set 1)", - "sc4policb", "Police Squid (V1.0) (Qps) (Scorpion 4) (set 2)", - "sc4policc", "Police Squid (V2.0) (Qps) (Scorpion 4) (set 2)", - "sc4pony", "Pony Express (Bellfruit) (Scorpion 4) (set 1)", - "sc4ponya", "Pony Express (Bellfruit) (Scorpion 4) (set 2)", - "sc4ponyb", "Pony Express (Bellfruit) (Scorpion 4) (set 3)", - "sc4ponyc", "Pony Express (Bellfruit) (Scorpion 4) (set 4)", - "sc4ponyd", "Pony Express (Bellfruit) (Scorpion 4) (set 5)", - "sc4ponye", "Pony Express (Bellfruit) (Scorpion 4) (set 6)", - "sc4popey", "Popeye (Mazooma) (Scorpion 4) (set 1)", - "sc4popeya", "Popeye (Mazooma) (Scorpion 4) (set 2)", - "sc4popeyb", "Popeye (Mazooma) (Scorpion 4) (set 3)", - "sc4popeyc", "Popeye (Mazooma) (Scorpion 4) (set 4)", - "sc4popeyd", "Popeye (Mazooma) (Scorpion 4) (set 5)", - "sc4popeye", "Popeye (Mazooma) (Scorpion 4) (set 6)", - "sc4potp", "Pick Of The Pack (Bellfruit) (Scorpion 4) (set 1)", - "sc4potpa", "Pick Of The Pack (Bellfruit) (Scorpion 4) (set 2)", - "sc4potsh", "Pot Shot (Qps) (Scorpion 4) (set 1)", - "sc4potsha", "Pot Shot (Qps) (Scorpion 4) (set 2)", - "sc4pp", "Pink Panther (Mazooma) (Scorpion 4) (set 1)", - "sc4ppa", "Pink Panther (Mazooma) (Scorpion 4) (set 2)", - "sc4ppb", "Pink Panther (Mazooma) (Scorpion 4) (set 3)", - "sc4ppc", "Pink Panther (Mazooma) (Scorpion 4) (set 4)", - "sc4ppclb", "Pink Panther Club (411) (Qps) (Scorpion 4) (set 1)", - "sc4ppclba", "Pink Panther Club (412) (Qps) (Scorpion 4) (set 1)", - "sc4ppclbb", "Pink Panther Club (411) (Qps) (Scorpion 4) (set 2)", - "sc4ppclbc", "Pink Panther Club (412) (Qps) (Scorpion 4) (set 2)", - "sc4ppcr", "Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 1)", - "sc4ppcra", "Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 2)", - "sc4ppcrb", "Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 3)", - "sc4ppcrd", "Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 4)", - "sc4ppcre", "Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 5)", - "sc4ppcrf", "Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 6)", - "sc4ppcrg", "Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 7)", - "sc4ppcrh", "Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 8)", - "sc4ppcri", "Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 9)", - "sc4ppcrj", "Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 10)", - "sc4ppcrtb", "Pink Panther Clouseau's Revenge Top Box (Mazooma) (Scorpion 4)", - "sc4ppctc", "Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 1)", - "sc4ppctca", "Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 2)", - "sc4ppctcb", "Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 3)", - "sc4ppctcc", "Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 4)", - "sc4ppctcd", "Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 5)", - "sc4ppctce", "Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 6)", - "sc4ppctcf", "Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 7)", - "sc4ppctcg", "Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 8)", - "sc4ppd", "Pink Panther (Mazooma) (Scorpion 4) (set 5)", - "sc4ppdym", "Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 1)", - "sc4ppdymb", "Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 2)", - "sc4ppdymc", "Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 3)", - "sc4ppdymd", "Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 4)", - "sc4ppdymf", "Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 5)", - "sc4ppdymg", "Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 6)", - "sc4ppdymh", "Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 7)", - "sc4ppdymi", "Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 8)", - "sc4ppdymtb", "Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 1)", - "sc4ppdymtba", "Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 2)", - "sc4ppsag", "Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 1)", - "sc4ppsaga", "Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 2)", - "sc4ppsagb", "Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 3)", - "sc4ppsagc", "Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 4)", - "sc4ppsagd", "Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 5)", - "sc4ppsage", "Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 6)", - "sc4ppsagf", "Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 7)", - "sc4ppsagg", "Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 8)", - "sc4ppsagh", "Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 9)", - "sc4ppsagi", "Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 10)", - "sc4pstat", "Paystation (V2.0) (Qps) (Scorpion 4) (set 1)", - "sc4pstata", "Paystation (V2.1) (Qps) (Scorpion 4) (set 1)", - "sc4pstatb", "Paystation (V2.0) (Qps) (Scorpion 4) (set 2)", - "sc4pstatc", "Paystation (V2.1) (Qps) (Scorpion 4) (set 2)", - "sc4pstatd", "Paystation (V2.2) (Qps) (Scorpion 4)", - "sc4pstate", "Paystation (V2.3) (Qps) (Scorpion 4)", - "sc4pstatf", "Paystation (V011) (Qps) (Scorpion 4) (set 1)", - "sc4pstatg", "Paystation (V041) (Qps) (Scorpion 4) (set 1)", - "sc4pstath", "Paystation (V4.0) (Qps) (Scorpion 4) (set 1)", - "sc4pstati", "Paystation (V011) (Qps) (Scorpion 4) (set 2)", - "sc4pstatj", "Paystation (V041) (Qps) (Scorpion 4) (set 2)", - "sc4pstatm", "Paystation (V4.0) (Qps) (Scorpion 4) (set 2)", - "sc4pstatn", "Paystation (V012) (Qps) (Scorpion 4) (set 1)", - "sc4pstato", "Paystation (V042) (Qps) (Scorpion 4) (set 1)", - "sc4pstatp", "Paystation (V012) (Qps) (Scorpion 4) (set 2)", - "sc4pstatq", "Paystation (V042) (Qps) (Scorpion 4) (set 2)", - "sc4pwcrz", "Power Crazy (Bellfruit) (Scorpion 4) (set 1)", - "sc4pwcrza", "Power Crazy (Bellfruit) (Scorpion 4) (set 2)", - "sc4pwcrzb", "Power Crazy (Bellfruit) (Scorpion 4) (set 3)", - "sc4pwcrzc", "Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 1)", - "sc4pwcrzd", "Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 2)", - "sc4pwcrze", "Power Crazy (Bellfruit) (Scorpion 4) (set 4)", - "sc4pwcrzf", "Power Crazy (Bellfruit) (Scorpion 4) (set 5)", - "sc4pwcrzg", "Power Crazy (Bellfruit) (Scorpion 4) (set 6)", - "sc4pwcrzh", "Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 3)", - "sc4pwcrzi", "Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 4)", - "sc4pwrbl", "Powerball (Bellfruit) (Scorpion 4) (set 1)", - "sc4pwrbla", "Powerball (Bellfruit) (Scorpion 4) (set 2)", - "sc4pwrbq", "Power Ball (Qps) (Scorpion 4) (set 1)", - "sc4pwrbqa", "Power Ball (Qps) (Scorpion 4) (set 2)", - "sc4pwrpl", "Power Play (Mazooma) (Scorpion 4) (set 1)", - "sc4pwrpla", "Power Play (Mazooma) (Scorpion 4) (set 2)", - "sc4pwrplb", "Power Play (Mazooma) (Scorpion 4) (set 3)", - "sc4pwrplc", "Power Play (Mazooma) (Scorpion 4) (set 4)", - "sc4pwrsg", "Power Surge (Qps) (Scorpion 4) (set 1)", - "sc4pwrsga", "Power Surge (Qps) (Scorpion 4) (set 2)", - "sc4pwrsgb", "Power Surge (Qps) (Scorpion 4) (set 3)", - "sc4pwrsgc", "Power Surge (Qps) (Scorpion 4) (set 4)", - "sc4qmodo", "Quazzi Mo' Dough (Qps) (Scorpion 4) (set 1)", - "sc4qmodoa", "Quazzi Mo' Dough (Qps) (Scorpion 4) (set 2)", - "sc4qmodob", "Quazzi Mo' Dough (Qps) (Scorpion 4) (set 3)", - "sc4qmodoc", "Quazzi Mo' Dough (Qps) (Scorpion 4) (set 4)", - "sc4qmodod", "Quazzi Mo' Dough (Qps) (Scorpion 4) (set 5)", - "sc4quart", "Quaterback (Mazooma) (Scorpion 4) (set 1)", - "sc4quarta", "Quaterback (Mazooma) (Scorpion 4) (set 2)", - "sc4quartb", "Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 1)", - "sc4quartc", "Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 1)", - "sc4quartd", "Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 2)", - "sc4quarte", "Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 2)", - "sc4quartf", "Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 3)", - "sc4quartg", "Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 4)", - "sc4quarth", "Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 5)", - "sc4quarti", "Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 3)", - "sc4quartj", "Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 6)", - "sc4quartk", "Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 4)", - "sc4quartl", "Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 7)", - "sc4quartm", "Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 8)", - "sc4quidr", "Quid Rock (Qps) (Scorpion 4) (set 1)", - "sc4quidra", "Quid Rock (Qps) (Scorpion 4) (set 2)", - "sc4quidrb", "Quid Rock (Qps) (Scorpion 4) (set 3)", - "sc4quidrc", "Quid Rock (Qps) (Scorpion 4) (set 4)", - "sc4quidv", "Quid Vicious (Mazooma) (Scorpion 4) (set 1)", - "sc4quidva", "Quid Vicious (Mazooma) (Scorpion 4) (set 2)", - "sc4quidvb", "Quid Vicious (Mazooma) (Scorpion 4) (set 3)", - "sc4quidvc", "Quid Vicious (Mazooma) (Scorpion 4) (set 4)", - "sc4r2r", "Reel To Reel (Mazooma) (Scorpion 4) (set 1)", - "sc4r2ra", "Reel To Reel (Mazooma) (Scorpion 4) (set 2)", - "sc4r2rb", "Reel To Reel (Mazooma) (Scorpion 4) (set 3)", - "sc4r2rc", "Reel To Reel (Mazooma) (Scorpion 4) (set 4)", - "sc4r66", "Route 66 (Mazooma) (Scorpion 4)", - "sc4rbank", "Royle Banker (Bellfruit) (Scorpion 4) (set 1)", - "sc4rbanka", "Royle Banker (Bellfruit) (Scorpion 4) (set 2)", - "sc4rbankb", "Royle Banker (Bellfruit) (Scorpion 4) (set 3)", - "sc4rbankc", "Royle Banker (Bellfruit) (Scorpion 4) (set 4)", - "sc4rdrag", "Red Dragon (011) (Qps) (Scorpion 4) (set 1)", - "sc4rdraga", "Red Dragon (011) (Qps) (Scorpion 4) (set 2)", - "sc4rdragc", "Red Dragon (021) (Qps) (Scorpion 4) (set 1)", - "sc4rdragf", "Red Dragon (021) (Qps) (Scorpion 4) (set 2)", - "sc4rdrcl", "Red Dragon Club (411) (Qps) (Scorpion 4) (set 1)", - "sc4rdrcla", "Red Dragon Club (412) (Qps) (Scorpion 4)", - "sc4rdrclb", "Red Dragon Club (411) (Qps) (Scorpion 4) (set 2)", - "sc4redad", "Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 1)", - "sc4redada", "Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 2)", - "sc4redsq", "Red Square (Mazooma) (Scorpion 4) (set 1)", - "sc4redsqa", "Red Square (Mazooma) (Scorpion 4) (set 2)", - "sc4redsqb", "Red Square (Mazooma) (Scorpion 4) (set 3)", - "sc4redsqc", "Red Square (Mazooma) (Scorpion 4) (set 4)", - "sc4relcz", "Reely Crazy (Bellfruit) (Scorpion 4) (set 1)", - "sc4relcza", "Reely Crazy (Bellfruit) (Scorpion 4) (set 2)", - "sc4relczb", "Reely Crazy (Bellfruit) (Scorpion 4) (set 3)", - "sc4relczc", "Reely Crazy (Bellfruit) (Scorpion 4) (set 4)", - "sc4revo", "Revolver (Mazooma) (Scorpion 4) (set 1)", - "sc4revoa", "Revolver (Mazooma) (Scorpion 4) (set 2)", - "sc4revob", "Revolver (Mazooma) (Scorpion 4) (set 3)", - "sc4revoc", "Revolver (Mazooma) (Scorpion 4) (set 4)", - "sc4revod", "Revolver (Mazooma) (Scorpion 4) (set 5)", - "sc4revoe", "Revolver (Mazooma) (Scorpion 4) (set 6)", - "sc4rhx", "Red Hot X (Mazooma) (Scorpion 4) (set 1)", - "sc4rhxa", "Red Hot X (Mazooma) (Scorpion 4) (set 2)", - "sc4rhxb", "Red Hot X (Mazooma) (Scorpion 4) (set 9)", - "sc4rhxc", "Red Hot X (Mazooma) (Scorpion 4) (set 10)", - "sc4rhxcl", "Red Hot X Club (Mazooma) (Scorpion 4) (set 1)", - "sc4rhxcla", "Red Hot X Club (Mazooma) (Scorpion 4) (set 2)", - "sc4rhxclb", "Red Hot X Club (Mazooma) (Scorpion 4) (set 3)", - "sc4rhxclc", "Red Hot X Club (Mazooma) (Scorpion 4) (set 4)", - "sc4rhxcs", "Red Hot X Casino (Mazooma) (Scorpion 4) (set 1)", - "sc4rhxcsa", "Red Hot X Casino (Mazooma) (Scorpion 4) (set 2)", - "sc4rhxcsb", "Red Hot X Casino (Mazooma) (Scorpion 4) (set 3)", - "sc4rhxcsc", "Red Hot X Casino (Mazooma) (Scorpion 4) (set 4)", - "sc4rhxcsd", "Red Hot X Casino (Mazooma) (Scorpion 4) (set 5)", - "sc4rhxcse", "Red Hot X Casino (Mazooma) (Scorpion 4) (set 6)", - "sc4rhxd", "Red Hot X (Mazooma) (Scorpion 4) (set 3)", - "sc4rhxe", "Red Hot X (Mazooma) (Scorpion 4) (set 4)", - "sc4rhxf", "Red Hot X (Mazooma) (Scorpion 4) (set 11)", - "sc4rhxg", "Red Hot X (Mazooma) (Scorpion 4) (set 12)", - "sc4rhxh", "Red Hot X (Mazooma) (Scorpion 4) (set 13)", - "sc4rhxi", "Red Hot X (Mazooma) (Scorpion 4) (set 14)", - "sc4rhxj", "Red Hot X (Mazooma) (Scorpion 4) (set 5)", - "sc4rhxk", "Red Hot X (Mazooma) (Scorpion 4) (set 6)", - "sc4rhxl", "Red Hot X (Mazooma) (Scorpion 4) (set 7)", - "sc4rhxm", "Red Hot X (Mazooma) (Scorpion 4) (set 8)", - "sc4rhxn", "Red Hot X (Mazooma) (Scorpion 4) (set 15)", - "sc4rhxo", "Red Hot X (Mazooma) (Scorpion 4) (set 16)", - "sc4rhxp", "Red Hot X (Mazooma) (Scorpion 4) (set 17)", - "sc4rhxq", "Red Hot X (Mazooma) (Scorpion 4) (set 18)", - "sc4rhxr", "Red Hot X (Mazooma) (Scorpion 4) (set 19)", - "sc4rhxs", "Red Hot X (Mazooma) (Scorpion 4) (set 20)", - "sc4rhxt", "Red Hot X (Mazooma) (Scorpion 4) (set 21)", - "sc4rhxu", "Red Hot X (Mazooma) (Scorpion 4) (set 22)", - "sc4rhxv", "Red Hot X (Mazooma) (Scorpion 4) (set 23)", - "sc4rhxw", "Red Hot X (Mazooma) (Scorpion 4) (set 24)", - "sc4rich", "Rich Geezer (Bellfruit) (Scorpion 4) (set 1)", - "sc4richa", "Rich Geezer (Bellfruit) (Scorpion 4) (set 2)", - "sc4richb", "Rich Geezer (Bellfruit) (Scorpion 4) (set 3)", - "sc4richc", "Rich Geezer (Bellfruit) (Scorpion 4) (set 4)", - "sc4richd", "Rich Geezer (Bellfruit) (Scorpion 4) (set 5)", - "sc4riche", "Rich Geezer (Bellfruit) (Scorpion 4) (set 6)", - "sc4richf", "Rich Geezer (Bellfruit) (Scorpion 4) (set 7)", - "sc4richg", "Rich Geezer (Bellfruit) (Scorpion 4) (set 8)", - "sc4richh", "Rich Geezer (Bellfruit) (Scorpion 4) (set 9)", - "sc4richi", "Rich Geezer (Bellfruit) (Scorpion 4) (set 10)", - "sc4richj", "Rich Geezer (Bellfruit) (Scorpion 4) (set 11)", - "sc4richk", "Rich Geezer (Bellfruit) (Scorpion 4) (set 12)", - "sc4richl", "Rich Geezer (Bellfruit) (Scorpion 4) (set 13)", - "sc4rio", "Rio Grande (Dutch) (Bellfruit) (Scorpion 4)", - "sc4rmo", "Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 1)", - "sc4rmoa", "Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 2)", - "sc4rogds", "Rogan Dosh (Qps) (Scorpion 4) (set 1)", - "sc4rogdsa", "Rogan Dosh (Qps) (Scorpion 4) (set 2)", - "sc4rogdsb", "Rogan Dosh (Qps) (Scorpion 4) (set 3)", - "sc4rogdsc", "Rogan Dosh (Qps) (Scorpion 4) (set 4)", - "sc4rogdsd", "Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 1)", - "sc4rogdse", "Rogan Dosh (v1.6) (Qps) (Scorpion 4)", - "sc4rogdsf", "Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 2)", - "sc4rogdsg", "Rogan Dosh (v2.1) (Qps) (Scorpion 4)", - "sc4roksc", "Rocket Science (V1.1) (Qps) (Scorpion 4) (set 1)", - "sc4roksca", "Rocket Science (011) (Qps) (Scorpion 4) (set 1)", - "sc4rokscb", "Rocket Science (V1.1) (Qps) (Scorpion 4) (set 2)", - "sc4rokscc", "Rocket Science (011) (Qps) (Scorpion 4) (set 2)", - "sc4rollo", "Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 1)", - "sc4rolloa", "Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 2)", - "sc4rollob", "Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 1)", - "sc4rolloc", "Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 3)", - "sc4rollod", "Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 4)", - "sc4rolloe", "Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 2)", - "sc4rollof", "Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 3)", - "sc4rosts", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 1)", - "sc4rostsa", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 2)", - "sc4rostsb", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 3)", - "sc4rostsc", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 4)", - "sc4rostsd", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 5)", - "sc4rostse", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 6)", - "sc4rostsf", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 7)", - "sc4rostsg", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 8)", - "sc4rotc", "Return Of The Count (Mazooma) (Scorpion 4) (set 1)", - "sc4rotca", "Return Of The Count (Mazooma) (Scorpion 4) (set 2)", - "sc4rotcb", "Return Of The Count (Mazooma) (Scorpion 4) (set 3)", - "sc4rotcc", "Return Of The Count (Mazooma) (Scorpion 4) (set 4)", - "sc4rotcd", "Return Of The Count (Mazooma) (Scorpion 4) (set 5)", - "sc4rovrt", "Rovers Return (Mazooma) (Scorpion 4) (set 1)", - "sc4rovrta", "Rovers Return (Mazooma) (Scorpion 4) (set 2)", - "sc4rovrtb", "Rovers Return (Mazooma) (Scorpion 4) (set 3)", - "sc4rovrtc", "Rovers Return (Mazooma) (Scorpion 4) (set 4)", - "sc4rovrtd", "Rovers Return (Mazooma) (Scorpion 4) (set 5)", - "sc4rovrte", "Rovers Return (Mazooma) (Scorpion 4) (set 6)", - "sc4royle", "Royle Family (Bellfruit) (Scorpion 4) (set 1)", - "sc4roylea", "Royle Family (Bellfruit) (Scorpion 4) (set 2)", - "sc4royleb", "Royle Family (Bellfruit) (Scorpion 4) (set 3)", - "sc4roylec", "Royle Family (Bellfruit) (Scorpion 4) (set 4)", - "sc4royled", "Royle Family (Bellfruit) (Scorpion 4) (set 5)", - "sc4roylee", "Royle Family (Bellfruit) (Scorpion 4) (set 6)", - "sc4roylef", "Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 1)", - "sc4royleg", "Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 2)", - "sc4royleh", "Royle Family (Bellfruit) (Scorpion 4) (set 7)", - "sc4roylei", "Royle Family (Bellfruit) (Scorpion 4) (set 8)", - "sc4roylej", "Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 3)", - "sc4roylek", "Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 4)", - "sc4roylel", "Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 5)", - "sc4roylem", "Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 6)", - "sc4rt", "Rolling Thunder (Mazooma) (Scorpion 4) (set 1)", - "sc4rta", "Rolling Thunder (Mazooma) (Scorpion 4) (set 2)", - "sc4rtb", "Rolling Thunder (Mazooma) (Scorpion 4) (set 3)", - "sc4rtc", "Rolling Thunder (Mazooma) (Scorpion 4) (set 4)", - "sc4rtclb", "Rolling Thunder Club (Mazooma) (Scorpion 4) (set 1)", - "sc4rtclba", "Rolling Thunder Club (Mazooma) (Scorpion 4) (set 2)", - "sc4rtd", "Rolling Thunder (Mazooma) (Scorpion 4) (set 5)", - "sc4rttt", "Rise To The Top (Mazooma) (Scorpion 4) (set 1)", - "sc4rttta", "Rise To The Top (Mazooma) (Scorpion 4) (set 2)", - "sc4rtttb", "Rise To The Top (Mazooma) (Scorpion 4) (set 3)", - "sc4rtttc", "Rise To The Top (Mazooma) (Scorpion 4) (set 4)", - "sc4rtttd", "Rise To The Top (Mazooma) (Scorpion 4) (set 5)", - "sc4rttte", "Rise To The Top (Mazooma) (Scorpion 4) (set 6)", - "sc4rvl", "Revolution (Dutch) (Bellfruit) (Scorpion 4)", - "sc4rvlnx", "Revolution The Next (Dutch) (Bellfruit) (Scorpion 4)", - "sc4s16", "Section 16 (Mazooma) (Scorpion 4) (set 1)", - "sc4s16a", "Section 16 (Mazooma) (Scorpion 4) (set 2)", - "sc4s2k", "Sinbad 2000 (German) (Nova) (Scorpion 4)", - "sc4s6c", "Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 1)", - "sc4s6ca", "Super 6 Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4s6cb", "Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 2)", - "sc4s6cc", "Super 6 Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4s6cd", "Super 6 Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4s6ce", "Super 6 Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4sace", "Space Ace (Qps) (Scorpion 4) (set 1)", - "sc4sacea", "Space Ace (Qps) (Scorpion 4) (set 2)", - "sc4sahed", "Streaks Ahead (Qps) (Scorpion 4) (set 1)", - "sc4saheda", "Streaks Ahead (Qps) (Scorpion 4) (set 2)", - "sc4sahedb", "Streaks Ahead (Qps) (Scorpion 4) (set 3)", - "sc4sbust", "Space Buster (Qps) (Scorpion 4) (set 1)", - "sc4sbusta", "Space Buster (Qps) (Scorpion 4) (set 2)", - "sc4sdr", "Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 1)", - "sc4sdra", "Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 1)", - "sc4sdrb", "Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 2)", - "sc4sdrc", "Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 2)", - "sc4sf", "Street Fighter (Mazooma) (Scorpion 4) (set 1)", - "sc4sfa", "Street Fighter (Mazooma) (Scorpion 4) (set 2)", - "sc4sfb", "Street Fighter (Mazooma) (Scorpion 4) (set 3)", - "sc4sfc", "Street Fighter (Mazooma) (Scorpion 4) (set 4)", - "sc4sfd", "Street Fighter (Mazooma) (Scorpion 4) (set 5)", - "sc4showt", "Showtime (Bellfruit) (Scorpion 4) (set 1)", - "sc4showta", "Showtime (Bellfruit) (Scorpion 4) (set 2)", - "sc4showtb", "Showtime (Bellfruit) (Scorpion 4) (set 3)", - "sc4showtc", "Showtime (Bellfruit) (Scorpion 4) (set 4)", - "sc4showtd", "Showtime (Bellfruit) (Scorpion 4) (set 5)", - "sc4showte", "Showtime (Bellfruit) (Scorpion 4) (set 6)", - "sc4showtf", "Showtime (Bellfruit) (Scorpion 4) (set 7)", - "sc4sidsp", "Side Splitter (Mazooma) (Scorpion 4) (set 1)", - "sc4sidspa", "Side Splitter (Mazooma) (Scorpion 4) (set 2)", - "sc4sidspb", "Side Splitter (Mazooma) (Scorpion 4) (set 3)", - "sc4sidspc", "Side Splitter (Mazooma) (Scorpion 4) (set 4)", - "sc4sirpz", "Sir Prize (PR2004, SIRV) (Mazooma) (Scorpion 4)", - "sc4sirpza", "Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 1)", - "sc4sirpzb", "Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 2)", - "sc4slad", "Snakes & Ladders (Bellfruit) (Scorpion 4) (set 1)", - "sc4slada", "Snakes & Ladders (Bellfruit) (Scorpion 4) (set 2)", - "sc4sladb", "Snakes & Ladders (Bellfruit) (Scorpion 4) (set 3)", - "sc4sladc", "Snakes & Ladders (Bellfruit) (Scorpion 4) (set 4)", - "sc4sladd", "Snakes & Ladders (Bellfruit) (Scorpion 4) (set 5)", - "sc4slade", "Snakes & Ladders (Bellfruit) (Scorpion 4) (set 6)", - "sc4sladf", "Snakes & Ladders (Bellfruit) (Scorpion 4) (set 7)", - "sc4sladg", "Snakes & Ladders (Bellfruit) (Scorpion 4) (set 8)", - "sc4sladh", "Snakes & Ladders (Bellfruit) (Scorpion 4) (set 9)", - "sc4slc", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4slca", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 8)", - "sc4slcb", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4slcc", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4slcd", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 9)", - "sc4slce", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4slcf", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 10)", - "sc4slcg", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 11)", - "sc4slch", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 12)", - "sc4slci", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4slcj", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 13)", - "sc4slck", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 14)", - "sc4slcl", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 15)", - "sc4slcm", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4slcn", "Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 7)", - "sc4slih", "Some Like It Hot (Mazooma) (Scorpion 4) (set 1)", - "sc4sliha", "Some Like It Hot (Mazooma) (Scorpion 4) (set 2)", - "sc4slihb", "Some Like It Hot (Mazooma) (Scorpion 4) (set 3)", - "sc4slihc", "Some Like It Hot (Mazooma) (Scorpion 4) (set 4)", - "sc4slihd", "Some Like It Hot (Mazooma) (Scorpion 4) (set 5)", - "sc4slihe", "Some Like It Hot (Mazooma) (Scorpion 4) (set 6)", - "sc4smk7", "Smoking 7's (Bellfruit) (Scorpion 4)", - "sc4solgl", "Solid Gold (Bellfruit) (Scorpion 4) (set 1)", - "sc4solgla", "Solid Gold (Bellfruit) (Scorpion 4) (set 2)", - "sc4solglb", "Solid Gold (Bellfruit) (Scorpion 4) (set 3)", - "sc4solglc", "Solid Gold (Bellfruit) (Scorpion 4) (set 4)", - "sc4spark", "South Park (BFM) (Scorpion 4) (set 1)", - "sc4sparka", "South Park (BFM) (Scorpion 4) (set 2)", - "sc4sparkb", "South Park (BFM) (Scorpion 4) (set 3)", - "sc4sparkc", "South Park (BFM) (Scorpion 4) (set 4)", - "sc4sparkd", "South Park (BFM) (Scorpion 4) (set 5)", - "sc4sparke", "South Park (BFM) (Scorpion 4) (set 6)", - "sc4spice", "Spice It Up (Bellfruit) (Scorpion 4) (set 1)", - "sc4spicea", "Spice It Up (Bellfruit) (Scorpion 4) (set 2)", - "sc4spiceb", "Spice It Up (Bellfruit) (Scorpion 4) (set 3)", - "sc4spicec", "Spice It Up (Bellfruit) (Scorpion 4) (set 4)", - "sc4splgb", "Splash & Grab (Mazooma) (Scorpion 4) (set 1)", - "sc4splgba", "Splash & Grab (Mazooma) (Scorpion 4) (set 2)", - "sc4spred", "Spread Your Bet (Mazooma) (Scorpion 4)", - "sc4sprng", "Highly Sprung (Mazooma) (Scorpion 4)", - "sc4srr", "Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 1)", - "sc4srra", "Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 2)", - "sc4srrb", "Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 3)", - "sc4srrc", "Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 4)", - "sc4srrca", "Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 5)", - "sc4srrcaa", "Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 6)", - "sc4srrcab", "Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 7)", - "sc4srrcac", "Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 8)", - "sc4srrcad", "Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 9)", - "sc4srrcae", "Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 10)", - "sc4srrmz", "Shake Rattle Roll (Mazooma) (Scorpion 4) (Top Box)", - "sc4srrmza", "Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 1)", - "sc4srrmzb", "Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 2)", - "sc4srrmzc", "Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 3)", - "sc4srrmzd", "Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 1)", - "sc4srrmze", "Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 4)", - "sc4srrmzf", "Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 2)", - "sc4srrmzg", "Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 3)", - "sc4srrmzh", "Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 4)", - "sc4srrmzi", "Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 5)", - "sc4srrmzj", "Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 6)", - "sc4srrmzk", "Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 7)", - "sc4srrmzl", "Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 8)", - "sc4srrmzm", "Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 9)", - "sc4sslam", "Super Slam (Bellfruit) (Scorpion 4) (set 1)", - "sc4sslama", "Super Slam (Bellfruit) (Scorpion 4) (set 2)", - "sc4sstep", "Super Step (Qps) (Scorpion 4) (set 1)", - "sc4sstepa", "Super Step (Qps) (Scorpion 4) (set 2)", - "sc4sstepb", "Super Step (Qps / 21 Casino) (Scorpion 4)", - "sc4stag", "Stag Night (Bellfruit) (Scorpion 4) (set 1)", - "sc4staga", "Stag Night (Bellfruit) (Scorpion 4) (set 2)", - "sc4starp", "Starprize (Bellfruit) (Scorpion 4) (set 1)", - "sc4starpa", "Starprize (Bellfruit) (Scorpion 4) (set 2)", - "sc4starpb", "Starprize (Bellfruit) (Scorpion 4) (set 3)", - "sc4starpc", "Starprize (Bellfruit) (Scorpion 4) (set 4)", - "sc4starpd", "Starprize (Bellfruit) (Scorpion 4) (set 5)", - "sc4starpe", "Starprize (Bellfruit) (Scorpion 4) (set 6)", - "sc4starpf", "Starprize (Bellfruit) (Scorpion 4) (set 7)", - "sc4starpg", "Starprize (Bellfruit) (Scorpion 4) (set 8)", - "sc4starph", "Starprize (Bellfruit) (Scorpion 4) (set 9)", - "sc4starpi", "Starprize (Bellfruit) (Scorpion 4) (set 10)", - "sc4starpj", "Starprize (Bellfruit) (Scorpion 4) (set 11)", - "sc4starpk", "Starprize (Bellfruit) (Scorpion 4) (set 12)", - "sc4stirc", "Stir Crazy (Mazooma) (Scorpion 4) (set 1)", - "sc4stirca", "Stir Crazy (Mazooma) (Scorpion 4) (set 2)", - "sc4stircb", "Stir Crazy (Mazooma) (Scorpion 4) (set 3)", - "sc4stircc", "Stir Crazy (Mazooma) (Scorpion 4) (set 4)", - "sc4stircd", "Stir Crazy (Mazooma) (Scorpion 4) (set 5)", - "sc4stirce", "Stir Crazy (Mazooma) (Scorpion 4) (set 6)", - "sc4stircf", "Stir Crazy (Mazooma) (Scorpion 4) (set 7)", - "sc4stircg", "Stir Crazy (Mazooma) (Scorpion 4) (set 8)", - "sc4stirch", "Stir Crazy (Mazooma) (Scorpion 4) (set 9)", - "sc4stirci", "Stir Crazy (Mazooma) (Scorpion 4) (set 10)", - "sc4stircj", "Stir Crazy (Mazooma) (Scorpion 4) (set 11)", - "sc4stl", "Sky's The Limit, The (Bellfruit) (Scorpion 4) (set 1)", - "sc4stla", "Sky's The Limit, The (Bellfruit) (Scorpion 4) (set 2)", - "sc4stlb", "Sky's The Limit, The (Bellfruit) (Scorpion 4) (set 3)", - "sc4stlc", "Sky's The Limit, The (Bellfruit) (Scorpion 4) (set 4)", - "sc4stld", "Sky's The Limit, The (Bellfruit) (Scorpion 4) (set 5)", - "sc4stle", "Sky's The Limit, The (Bellfruit) (Scorpion 4) (set 6)", - "sc4stlf", "Sky's The Limit, The (Bellfruit) (Scorpion 4) (set 7)", - "sc4stlg", "Sky's The Limit, The (Bellfruit) (Scorpion 4) (set 8)", - "sc4strbr", "Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", - "sc4strbra", "Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 1)", - "sc4strbrb", "Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", - "sc4strbrc", "Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 2)", - "sc4strbrd", "Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 3)", - "sc4strk", "The Streak (Mazooma) (Scorpion 4) (set 1)", - "sc4strka", "The Streak (Mazooma) (Scorpion 4) (set 2)", - "sc4strkb", "The Streak (Mazooma) (Scorpion 4) (set 3)", - "sc4strkc", "The Streak (Mazooma) (Scorpion 4) (set 4)", - "sc4strkd", "The Streak (Mazooma) (Scorpion 4) (set 5)", - "sc4strke", "The Streak (Mazooma) (Scorpion 4) (set 6)", - "sc4strkf", "The Streak (Mazooma) (Scorpion 4) (set 7)", - "sc4strkg", "The Streak (Mazooma) (Scorpion 4) (set 8)", - "sc4strkh", "The Streak (Mazooma) (Scorpion 4) (set 9)", - "sc4strki", "The Streak (Mazooma) (Scorpion 4) (set 10)", - "sc4strkj", "The Streak (Mazooma) (Scorpion 4) (set 11)", - "sc4strkk", "The Streak (Mazooma) (Scorpion 4) (set 12)", - "sc4strx", "Strike X (Bellfruit) (Scorpion 4) (set 1)", - "sc4strxa", "Strike X (Bellfruit) (Scorpion 4) (set 2)", - "sc4strxb", "Strike X (Bellfruit) (Scorpion 4) (set 3)", - "sc4strxc", "Strike X (Bellfruit) (Scorpion 4) (set 4)", - "sc4sumit", "Summit Up (Mazooma) (Scorpion 4) (set 1)", - "sc4sumita", "Summit Up (Mazooma) (Scorpion 4) (set 2)", - "sc4sumitb", "Summit Up (Mazooma) (Scorpion 4) (set 3)", - "sc4sumitc", "Summit Up (Mazooma) (Scorpion 4) (set 4)", - "sc4supst", "Super Streax (Mazooma) (Scorpion 4) (set 1)", - "sc4supsta", "Super Streax (Mazooma) (Scorpion 4) (set 2)", - "sc4sus", "Suits U Sir (Qps) (Scorpion 4) (set 1)", - "sc4susc", "Suits U Sir (Qps) (Scorpion 4) (set 2)", - "sc4suscl", "Suits U Sir Club (Qps) (Scorpion 4) (set 1)", - "sc4suscla", "Suits U Sir Club (Qps) (Scorpion 4) (set 4)", - "sc4susclb", "Suits U Sir Club (Qps) (Scorpion 4) (set 2)", - "sc4susclc", "Suits U Sir Club (Qps) (Scorpion 4) (set 3)", - "sc4susf", "Suits U Sir (Qps) (Scorpion 4) (set 3)", - "sc4susg", "Suits U Sir (Qps) (Scorpion 4) (set 4)", - "sc4sush", "Suits U Sir (Qps) (Scorpion 4) (set 5)", - "sc4susi", "Suits U Sir (Qps) (Scorpion 4) (set 6)", - "sc4susj", "Suits U Sir (Qps) (Scorpion 4) (set 7)", - "sc4susk", "Suits U Sir (Qps) (Scorpion 4) (set 8)", - "sc4swbak", "Switch Back (Mazooma) (Scorpion 4) (set 1)", - "sc4swbaka", "Switch Back (Mazooma) (Scorpion 4) (set 2)", - "sc4swbakb", "Switch Back (Mazooma) (Scorpion 4) (set 3)", - "sc4swbakc", "Switch Back (Mazooma) (Scorpion 4) (set 4)", - "sc4swywm", "Spin When Your Winning (Mazooma) (Scorpion 4) (set 1)", - "sc4swywma", "Spin When Your Winning (Mazooma) (Scorpion 4) (set 2)", - "sc4swywmb", "Spin When Your Winning (Mazooma) (Scorpion 4) (set 3)", - "sc4swywmc", "Spin When Your Winning (Mazooma) (Scorpion 4) (set 4)", - "sc4swywmd", "Spin When Your Winning (Mazooma) (Scorpion 4) (set 5)", - "sc4swywme", "Spin When Your Winning (Mazooma) (Scorpion 4) (set 6)", - "sc4swywmf", "Spin When Your Winning (Mazooma) (Scorpion 4) (set 7)", - "sc4swywmg", "Spin When Your Winning (Mazooma) (Scorpion 4) (set 8)", - "sc4taekw", "Tae Kwon Dough (Qps) (Scorpion 4) (set 1)", - "sc4taekwa", "Tae Kwon Dough (Qps) (Scorpion 4) (set 2)", - "sc4taekwb", "Tae Kwon Dough (Qps) (Scorpion 4) (set 3)", - "sc4taekwc", "Tae Kwon Dough (Qps) (Scorpion 4) (set 8)", - "sc4taekwd", "Tae Kwon Dough (Qps) (Scorpion 4) (set 9)", - "sc4taekwe", "Tae Kwon Dough (Qps) (Scorpion 4) (set 10)", - "sc4taekwf", "Tae Kwon Dough (Qps) (Scorpion 4) (set 11)", - "sc4taekwg", "Tae Kwon Dough (Qps) (Scorpion 4) (set 4)", - "sc4taekwh", "Tae Kwon Dough (Qps) (Scorpion 4) (set 5)", - "sc4taekwi", "Tae Kwon Dough (Qps) (Scorpion 4) (set 6)", - "sc4taekwj", "Tae Kwon Dough (Qps) (Scorpion 4) (set 7)", - "sc4takcl", "Take Note Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4takcla", "Take Note Club 500 (Bellfruit) (Scorpion 4)", - "sc4takclb", "Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 1)", - "sc4takclc", "Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 2)", - "sc4takcld", "Take Note Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4takcle", "Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 3)", - "sc4takclf", "Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 4)", - "sc4takclg", "Take Note Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4takclh", "Take Note Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4takcli", "Take Note Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4takclj", "Take Note Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4taknt", "Take Note (Bellfruit) (Scorpion 4) (set 1)", - "sc4taknta", "Take Note (Bellfruit) (Scorpion 4) (set 2)", - "sc4tbana", "Top Banana (Bellfruit) (Scorpion 4) (set 1)", - "sc4tbanaa", "Top Banana (Bellfruit) (Scorpion 4) (set 2)", - "sc4tbox", "Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 4)", - "sc4tempt", "Temptation (Bellfruit) (Scorpion 4) (set 1)", - "sc4tempta", "Temptation (Bellfruit) (Scorpion 4) (set 2)", - "sc4temptb", "Temptation (Bellfruit) (Scorpion 4) (set 3)", - "sc4temptc", "Temptation (Bellfruit) (Scorpion 4) (set 4)", - "sc4temptd", "Temptation (Bellfruit) (Scorpion 4) (set 5)", - "sc4tempte", "Temptation (Bellfruit) (Scorpion 4) (set 6)", - "sc4temptf", "Temptation (Bellfruit) (Scorpion 4) (set 7)", - "sc4temptg", "Temptation (Bellfruit) (Scorpion 4) (set 8)", - "sc4tetri", "Tetris (Mazooma) (Scorpion 4) (set 1)", - "sc4tetria", "Tetris (Mazooma) (Scorpion 4) (set 2)", - "sc4tetrib", "Tetris (Mazooma) (Scorpion 4) (set 3)", - "sc4tetric", "Tetris (Mazooma) (Scorpion 4) (set 4)", - "sc4tetrid", "Tetris (Mazooma) (Scorpion 4) (set 5)", - "sc4tetrie", "Tetris (Mazooma) (Scorpion 4) (set 6)", - "sc4tetrif", "Tetris (Mazooma) (Scorpion 4) (set 7)", - "sc4tetrig", "Tetris (Mazooma) (Scorpion 4) (set 8)", - "sc4tetrih", "Tetris (Mazooma) (Scorpion 4) (set 9)", - "sc4tetrii", "Tetris (Mazooma) (Scorpion 4) (set 10)", - "sc4tetrij", "Tetris (Mazooma) (Scorpion 4) (set 11)", - "sc4tetrik", "Tetris (Mazooma) (Scorpion 4) (set 12)", - "sc4tfclb", "Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4tfclba", "Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4tgear", "Top Gear (Mazooma) (Scorpion 4) (set 1)", - "sc4tgeara", "Top Gear (Mazooma) (Scorpion 4) (set 2)", - "sc4tgearb", "Top Gear (Mazooma) (Scorpion 4) (set 3)", - "sc4tgearc", "Top Gear (Mazooma) (Scorpion 4) (set 4)", - "sc4tgeard", "Top Gear (Mazooma) (Scorpion 4) (set 5)", - "sc4tgeare", "Top Gear (Mazooma) (Scorpion 4) (set 6)", - "sc4tgearf", "Top Gear (Mazooma) (Scorpion 4) (set 7)", - "sc4tgearg", "Top Gear (Mazooma) (Scorpion 4) (set 8)", - "sc4tic2", "Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 1)", - "sc4tic2a", "Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 2)", - "sc4tic2b", "Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 3)", - "sc4tic2c", "Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 4)", - "sc4tic2d", "Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 5)", - "sc4tic2e", "Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 6)", - "sc4tic2f", "Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 7)", - "sc4tic2g", "Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 8)", - "sc4tic2h", "Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 4)", - "sc4tic2i", "Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 1)", - "sc4tic2j", "Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 2)", - "sc4tic2k", "Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 3)", - "sc4tic2l", "Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 5)", - "sc4tic2m", "Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 6)", - "sc4tic2n", "Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 9)", - "sc4tic2o", "Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 10)", - "sc4ticlb", "Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 1)", - "sc4ticlba", "Treasure Island Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4ticlbb", "Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 2)", - "sc4ticlbc", "Treasure Island Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4tload", "Top Loader (Mazooma) (Scorpion 4)", - "sc4tpsht", "Top Of The Shots (Mazooma) (Scorpion 4) (set 1)", - "sc4tpshta", "Top Of The Shots (Mazooma) (Scorpion 4) (set 2)", - "sc4tpshtb", "Top Of The Shots (Mazooma) (Scorpion 4) (set 3)", - "sc4tpshtc", "Top Of The Shots (Mazooma) (Scorpion 4) (set 4)", - "sc4tpshtd", "Top Of The Shots (Mazooma) (Scorpion 4) (set 5)", - "sc4tpshte", "Top Of The Shots (Mazooma) (Scorpion 4) (set 6)", - "sc4tpshtf", "Top Of The Shots (Mazooma) (Scorpion 4) (set 7)", - "sc4tpshtg", "Top Of The Shots (Mazooma) (Scorpion 4) (set 8)", - "sc4trail", "Trailblazer (Mazooma) (Scorpion 4) (set 1)", - "sc4traila", "Trailblazer (Mazooma) (Scorpion 4) (set 2)", - "sc4trailb", "Trailblazer (Mazooma) (Scorpion 4) (set 3)", - "sc4trailc", "Trailblazer (Mazooma) (Scorpion 4) (set 4)", - "sc4tri7", "Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 1)", - "sc4tri7a", "Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 2)", - "sc4tri7b", "Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 1)", - "sc4tri7c", "Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 2)", - "sc4tri7d", "Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 3)", - "sc4tri7e", "Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 4)", - "sc4tri7f", "Triple 7's (Bellfruit) (Scorpion 4) (set 1)", - "sc4tri7g", "Triple 7's (Bellfruit) (Scorpion 4) (set 2)", - "sc4tri7h", "Triple 7's (Bellfruit) (Scorpion 4) (set 3)", - "sc4tri7i", "Triple 7's (Bellfruit) (Scorpion 4) (set 4)", - "sc4tri7j", "Triple 7's (Bellfruit) (Scorpion 4) (set 5)", - "sc4tri7k", "Triple 7's (Bellfruit) (Scorpion 4) (set 6)", - "sc4tri7l", "Triple 7's (Bellfruit) (Scorpion 4) (set 7)", - "sc4tri7m", "Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 3)", - "sc4tri7n", "Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 4)", - "sc4tri7o", "Triple 7's (Bellfruit) (Scorpion 4) (set 8)", - "sc4tri7p", "Triple 7's (Bellfruit) (Scorpion 4) (set 9)", - "sc4tri7q", "Triple 7's (Bellfruit) (Scorpion 4) (set 10)", - "sc4tri7r", "Triple 7's (Bellfruit) (Scorpion 4) (set 11)", - "sc4tri7s", "Triple 7's (Bellfruit) (Scorpion 4) (set 12)", - "sc4tri7t", "Triple 7's (Bellfruit) (Scorpion 4) (set 13)", - "sc4tri7u", "Triple 7's (Bellfruit) (Scorpion 4) (set 14)", - "sc4tri7v", "Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 5)", - "sc4tri7w", "Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 6)", - "sc4tridn", "Trident, The (Mazooma) (Scorpion 4) (set 1)", - "sc4tridna", "Trident, The (Mazooma) (Scorpion 4) (set 2)", - "sc4trist", "Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 1)", - "sc4trista", "Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 2)", - "sc4tristb", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 1)", - "sc4tristc", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 2)", - "sc4tristd", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 3)", - "sc4triste", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 4)", - "sc4tristf", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 5)", - "sc4tristg", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 6)", - "sc4tristh", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 7)", - "sc4tristi", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 8)", - "sc4tristj", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 9)", - "sc4tristk", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 10)", - "sc4tristl", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 11)", - "sc4tristm", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 12)", - "sc4tristn", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 13)", - "sc4tristo", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 14)", - "sc4tristp", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 15)", - "sc4tristq", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 16)", - "sc4tristr", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 17)", - "sc4trists", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 18)", - "sc4tristt", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 19)", - "sc4tristu", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 20)", - "sc4tristv", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 21)", - "sc4tristw", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 22)", - "sc4tristx", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 23)", - "sc4tristy", "Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 24)", - "sc4tst", "Scorpion 4 Test Rig (Bellfruit) (Scorpion ?)", - "sc4ttomb", "Treasure Tomb (Bellfruit) (Scorpion 4) (set 1)", - "sc4ttomba", "Treasure Tomb (Bellfruit) (Scorpion 4) (set 2)", - "sc4ttombb", "Treasure Tomb (Bellfruit) (Scorpion 4) (set 3)", - "sc4ttombc", "Treasure Tomb (Bellfruit) (Scorpion 4) (set 4)", - "sc4ttp", "Take The Piste (Mazooma) (Scorpion 4) (set 1)", - "sc4ttpa", "Take The Piste (Mazooma) (Scorpion 4) (set 2)", - "sc4ttpb", "Take The Piste (Mazooma) (Scorpion 4) (set 3)", - "sc4ttpc", "Take The Piste (Mazooma) (Scorpion 4) (set 4)", - "sc4ttpd", "Take The Piste (Mazooma) (Scorpion 4) (set 5)", - "sc4ttpe", "Take The Piste (Mazooma) (Scorpion 4) (set 6)", - "sc4ttpf", "Take The Piste (Mazooma) (Scorpion 4) (set 7)", - "sc4ttpie", "Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 1)", - "sc4ttpiea", "Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 1)", - "sc4ttpieb", "Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 2)", - "sc4ttpiec", "Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 2)", - "sc4ttpied", "Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 3)", - "sc4ttpiee", "Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 4)", - "sc4ttpief", "Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 5)", - "sc4ttpieg", "Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 6)", - "sc4tub", "Tubular Bells (Bellfruit) (Scorpion 4) (set 1)", - "sc4tuba", "Tubular Bells (Bellfruit) (Scorpion 4) (set 2)", - "sc4tubb", "Tubular Bells (Bellfruit) (Scorpion 4) (set 3)", - "sc4tubc", "Tubular Bells (Bellfruit) (Scorpion 4) (set 4)", - "sc4twilt", "Twilight (Dutch) (Bellfruit) (Scorpion 4)", - "sc4typ", "Take Your Pick (Bellfruit) (Scorpion 4) (set 1)", - "sc4typa", "Take Your Pick (Bellfruit) (Scorpion 4) (set 2)", - "sc4typb", "Take Your Pick (Bellfruit) (Scorpion 4) (set 3)", - "sc4typc", "Take Your Pick (Bellfruit) (Scorpion 4) (set 4)", - "sc4ufg", "Up For Grabs (Mazooma) (Scorpion 4) (set 1)", - "sc4ufga", "Up For Grabs (Mazooma) (Scorpion 4) (set 2)", - "sc4ufi", "Up For It (Bellfruit) (Scorpion 4) (set 1)", - "sc4ufia", "Up For It (Bellfruit) (Scorpion 4) (set 2)", - "sc4ufib", "Up For It (Bellfruit) (Scorpion 4) (set 3)", - "sc4ufic", "Up For It (Bellfruit) (Scorpion 4) (set 4)", - "sc4ufid", "Up For It (Bellfruit) (Scorpion 4) (set 5)", - "sc4ufie", "Up For It (Bellfruit) (Scorpion 4) (set 6)", - "sc4valnv", "Valhalla (German) (PR7025, GVAL) (Nova) (Scorpion 4)", - "sc4valqp", "Valhalla (Dutch) (Qps) (Scorpion 4)", - "sc4vivam", "Viva Mexico (Bellfruit) (Scorpion 4) (set 1)", - "sc4vivama", "Viva Mexico (Bellfruit) (Scorpion 4) (set 2)", - "sc4vivamb", "Viva Mexico (Bellfruit) (Scorpion 4) (set 3)", - "sc4vivamc", "Viva Mexico (Bellfruit) (Scorpion 4) (set 4)", - "sc4vivcs", "Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 1)", - "sc4vivcsa", "Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 2)", - "sc4vivcsb", "Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 3)", - "sc4vivcsc", "Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 4)", - "sc4vivcsd", "Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 5)", - "sc4vivcse", "Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 6)", - "sc4vivcsf", "Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 7)", - "sc4vivcsg", "Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 8)", - "sc4vmclb", "Viva Mexico Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4vmclba", "Viva Mexico Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4vmclbb", "Viva Mexico Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4vmnv", "Viva Mexico (Nova) (Scorpion 4) (set 1)", - "sc4vmnva", "Viva Mexico (Nova) (Scorpion 4) (set 2)", - "sc4vrgcl", "Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 1)", - "sc4vrgcla", "Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 2)", - "sc4vrgclb", "Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 3)", - "sc4vrgclc", "Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 4)", - "sc4vrgcld", "Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 5)", - "sc4vrgcle", "Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 6)", - "sc4vrgclf", "Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 7)", - "sc4vrgclg", "Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 8)", - "sc4vrgclh", "Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 9)", - "sc4vrgcli", "Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 10)", - "sc4wadzl", "Wadzilla (Mazooma) (Scorpion 4) (set 1)", - "sc4wadzla", "Wadzilla (Mazooma) (Scorpion 4) (set 2)", - "sc4wag", "Win-A-Gain (German) (Nova) (Scorpion 4)", - "sc4waw", "Wet & Wild (Mazooma) (Scorpion 4) (set 1)", - "sc4wawa", "Wet & Wild (Mazooma) (Scorpion 4) (set 2)", - "sc4wawb", "Wet & Wild (Mazooma) (Scorpion 4) (set 3)", - "sc4wawc", "Wet & Wild (Mazooma) (Scorpion 4) (set 4)", - "sc4wawd", "Wet & Wild (Mazooma) (Scorpion 4) (set 5)", - "sc4wawe", "Wet & Wild (Mazooma) (Scorpion 4) (set 6)", - "sc4wawf", "Wet & Wild (Mazooma) (Scorpion 4) (set 7)", - "sc4wdw", "Who Dares Wins (Bellfruit) (Scorpion 4) (set 1)", - "sc4wdwa", "Who Dares Wins (Bellfruit) (Scorpion 4) (set 2)", - "sc4wdwb", "Who Dares Wins (Bellfruit) (Scorpion 4) (set 3)", - "sc4wdwc", "Who Dares Wins (Bellfruit) (Scorpion 4) (set 4)", - "sc4wdwd", "Who Dares Wins (Bellfruit) (Scorpion 4) (set 5)", - "sc4wdwe", "Who Dares Wins (Bellfruit) (Scorpion 4) (set 6)", - "sc4wdwf", "Who Dares Wins (Bellfruit) (Scorpion 4) (set 7)", - "sc4wdwg", "Who Dares Wins (Bellfruit) (Scorpion 4) (set 8)", - "sc4wdwh", "Who Dares Wins (Bellfruit) (Scorpion 4) (set 9)", - "sc4wdwi", "Who Dares Wins (Bellfruit) (Scorpion 4) (set 10)", - "sc4wdwj", "Who Dares Wins (Bellfruit) (Scorpion 4) (set 11)", - "sc4wernr", "Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 1)", - "sc4winsp", "Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 1)", - "sc4winsp0", "Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 2)", - "sc4winspa", "Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 1)", - "sc4winspb", "Winning Spin (V021) (Qps) (Scorpion 4) (set 1)", - "sc4winspc", "Winning Spin (V031) (Qps) (Scorpion 4) (set 1)", - "sc4winspd", "Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 1)", - "sc4winspe", "Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 1)", - "sc4winspf", "Winning Spin (V022) (Qps) (Scorpion 4) (set 1)", - "sc4winspg", "Winning Spin (V032) (Qps) (Scorpion 4) (set 1)", - "sc4winsph", "Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 2)", - "sc4winspi", "Winning Spin (V021) (Qps) (Scorpion 4) (set 2)", - "sc4winspj", "Winning Spin (V031) (Qps) (Scorpion 4) (set 2)", - "sc4winspk", "Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 2)", - "sc4winspl", "Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 2)", - "sc4winspm", "Winning Spin (V022) (Qps) (Scorpion 4) (set 2)", - "sc4winspn", "Winning Spin (V032) (Qps) (Scorpion 4) (set 2)", - "sc4winspo", "Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 1)", - "sc4winspp", "Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 1)", - "sc4winspq", "Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 3)", - "sc4winspr", "Winning Spin (V022) (Qps) (Scorpion 4) (set 3)", - "sc4winsps", "Winning Spin (V032) (Qps) (Scorpion 4) (set 3)", - "sc4winspt", "Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 1)", - "sc4winspu", "Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 2)", - "sc4winspv", "Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 2)", - "sc4winspw", "Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 4)", - "sc4winspx", "Winning Spin (V022) (Qps) (Scorpion 4) (set 4)", - "sc4winspy", "Winning Spin (V032) (Qps) (Scorpion 4) (set 4)", - "sc4winspz", "Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 2)", - "sc4winxp", "Win X-plosion (Dutch) (Bellfruit) (Scorpion 4)", - "sc4wldbn", "Wild Bunch (Bellfruit) (Scorpion 4) (set 1)", - "sc4wldbna", "Wild Bunch (Bellfruit) (Scorpion 4) (set 2)", - "sc4wldbnb", "Wild Bunch (Bellfruit) (Scorpion 4) (set 3)", - "sc4wldbnc", "Wild Bunch (Bellfruit) (Scorpion 4) (set 4)", - "sc4wldbnd", "Wild Bunch (Bellfruit) (Scorpion 4) (set 5)", - "sc4wldbne", "Wild Bunch (Bellfruit) (Scorpion 4) (set 6)", - "sc4wldbnf", "Wild Bunch (Bellfruit) (Scorpion 4) (set 7)", - "sc4wldbng", "Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 1)", - "sc4wldbnh", "Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 2)", - "sc4wldbni", "Wild Bunch (Bellfruit) (Scorpion 4) (set 8)", - "sc4wldbnj", "Wild Bunch (Bellfruit) (Scorpion 4) (set 9)", - "sc4wldbnk", "Wild Bunch (Bellfruit) (Scorpion 4) (set 10)", - "sc4wldbnl", "Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 3)", - "sc4wldbnm", "Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 4)", - "sc4wldbnn", "Wild Bunch (Bellfruit) (Scorpion 4) (set 11)", - "sc4wldbno", "Wild Bunch (Bellfruit) (Scorpion 4) (set 12)", - "sc4wldbnp", "Wild Bunch (Bellfruit) (Scorpion 4) (set 13)", - "sc4wldbnq", "Wild Bunch (Bellfruit) (Scorpion 4) (set 14)", - "sc4wldjk", "Wild Jackpots (Mazooma) (Scorpion 4) (set 1)", - "sc4wldjka", "Wild Jackpots (Mazooma) (Scorpion 4) (set 2)", - "sc4wldjkb", "Wild Jackpots (Mazooma) (Scorpion 4) (set 3)", - "sc4wldjkc", "Wild Jackpots (Mazooma) (Scorpion 4) (set 4)", - "sc4wldjkd", "Wild Jackpots (Mazooma) (Scorpion 4) (set 5)", - "sc4wldjke", "Wild Jackpots (Mazooma) (Scorpion 4) (set 6)", - "sc4wldjkf", "Wild Jackpots (Mazooma) (Scorpion 4) (set 7)", - "sc4wldjkg", "Wild Jackpots (Mazooma) (Scorpion 4) (set 8)", - "sc4wondw", "Wonder Wheel (Bellfruit) (Scorpion 4) (set 1)", - "sc4wondwa", "Wonder Wheel (Bellfruit) (Scorpion 4) (set 2)", - "sc4wrnlt", "Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 2)", - "sc4wspin", "Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 1)", - "sc4wspinb", "Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 1)", - "sc4wspinc", "Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 2)", - "sc4wspind", "Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 2)", - "sc4wtc", "Wild Thing Casino (Mazooma) (Scorpion 4) (set 1)", - "sc4wtca", "Wild Thing Casino (Mazooma) (Scorpion 4) (set 2)", - "sc4wtcb", "Wild Thing Casino (Mazooma) (Scorpion 4) (set 3)", - "sc4wtcc", "Wild Thing Casino (Mazooma) (Scorpion 4) (set 4)", - "sc4wtcd", "Wild Thing Casino (Mazooma) (Scorpion 4) (set 5)", - "sc4wtce", "Wild Thing Casino (Mazooma) (Scorpion 4) (set 6)", - "sc4wtcf", "Wild Thing Casino (Mazooma) (Scorpion 4) (set 7)", - "sc4wthng", "Wild Thing (Bellfruit) (Scorpion 4) (set 1)", - "sc4wthnga", "Wild Thing (Bellfruit) (Scorpion 4) (set 2)", - "sc4wthngb", "Wild Thing (Bellfruit) (Scorpion 4) (set 3)", - "sc4wthngc", "Wild Thing (Bellfruit) (Scorpion 4) (set 4)", - "sc4wthnm", "Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 1)", - "sc4wthnma", "Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 2)", - "sc4wthnmb", "Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 3)", - "sc4wthnmc", "Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 4)", - "sc4wthnmd", "Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 5)", - "sc4wthnme", "Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 6)", - "sc4wthnmf", "Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 7)", - "sc4wwys", "Win When Your Spinning (Bellfruit) (Scorpion 4) (set 1)", - "sc4wwysa", "Win When Your Spinning (Bellfruit) (Scorpion 4) (set 2)", - "sc4xcash", "Xtra Cash Casino (Dutch) (Bellfruit) (Scorpion 4)", - "sc4xmark", "X Marks The Spot (Bellfruit) (Scorpion 4) (set 1)", - "sc4xmarka", "X Marks The Spot (Bellfruit) (Scorpion 4) (set 2)", - "sc4ziggy", "Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 1)", - "sc4ziggya", "Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 2)", - "sc4ziggyb", "Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 3)", - "sc4ziggyc", "Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 4)", - "sc4ziggyd", "Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 5)", - "sc4ziggye", "Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 6)", - "sc4ziggyf", "Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 7)", - "sc4ziggyg", "Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 8)", - "sc5a40", "Around The Board In 40 Days (Mazooma) (Scorpion 5) (set 1)", - "sc5a40a", "Around The Board In 40 Days (Mazooma) (Scorpion 5) (set 2)", - "sc5adga", "Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 1)", - "sc5adgaa", "Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 2)", - "sc5adgab", "Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 3)", - "sc5adgac", "Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 4)", - "sc5adgad", "Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 5)", - "sc5adgae", "Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 6)", - "sc5adgtc", "Ant & Dec's Grab The Cash (Bellfruit) (Scorpion 5) (set 1)", - "sc5adgtca", "Ant & Dec's Grab The Cash (Bellfruit) (Scorpion 5) (set 2)", - "sc5adjb", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 1)", - "sc5adjba", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 2)", - "sc5adjbb", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 3)", - "sc5adjbc", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 4)", - "sc5adjbd", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 5)", - "sc5adjbe", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 6)", - "sc5adjbf", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 7)", - "sc5adjbg", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 8)", - "sc5adjbh", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 9)", - "sc5adjbi", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 10)", - "sc5adjbj", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 11)", - "sc5adjbk", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 12)", - "sc5adjbl", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 13)", - "sc5adjbm", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 14)", - "sc5adjbn", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 15)", - "sc5adjbo", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 16)", - "sc5adjbp", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 17)", - "sc5adjbq", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 18)", - "sc5adjbr", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 19)", - "sc5adjbs", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 20)", - "sc5adjbt", "Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 21)", - "sc5adsnt", "Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 5) (set 1)", - "sc5adsnta", "Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 5) (set 2)", - "sc5adwta", "Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 5) (set 1)", - "sc5adwtaa", "Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 5) (set 2)", - "sc5bantm", "Bantam Of The Opera (Mazooma) (Scorpion 5) (set 1)", - "sc5bantma", "Bantam Of The Opera (Mazooma) (Scorpion 5) (set 2)", - "sc5bar7", "Bar 7's (Bellfruit) (Scorpion 5) (set 1)", - "sc5bar7a", "Bar 7's (Bellfruit) (Scorpion 5) (set 2)", - "sc5bar7b", "Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 1)", - "sc5bar7c", "Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 2)", - "sc5bar7d", "Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 3)", - "sc5bar7e", "Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 4)", - "sc5bar7f", "Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 5)", - "sc5bar7g", "Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 6)", - "sc5batl", "Battleships & Cruisers (Bellfruit) (Scorpion 5) (set 1)", - "sc5batla", "Battleships & Cruisers (Bellfruit) (Scorpion 5) (set 2)", - "sc5bjob", "Bank Job (Bellfruit) (Scorpion 5) (set 1)", - "sc5bjoba", "Bank Job (Bellfruit) (Scorpion 5) (set 2)", - "sc5bjobb", "Bank Job (Bellfruit) (Scorpion 5) (set 3)", - "sc5bjobc", "Bank Job (Bellfruit) (Scorpion 5) (set 4)", - "sc5bjobd", "Bank Job (Bellfruit) (Scorpion 5) (set 5)", - "sc5bjobe", "Bank Job (Bellfruit) (Scorpion 5) (set 6)", - "sc5bjobf", "Bank Job (Bellfruit) (Scorpion 5) (set 7)", - "sc5bjobg", "Bank Job (Bellfruit) (Scorpion 5) (set 8)", - "sc5bjobh", "Bank Job (Bellfruit) (Scorpion 5) (set 9)", - "sc5bjobi", "Bank Job (Bellfruit) (Scorpion 5) (set 10)", - "sc5bkngx", "Bar King X (Mazooma) (Scorpion 5) (set 1)", - "sc5bkngxa", "Bar King X (Mazooma) (Scorpion 5) (set 2)", - "sc5bob", "Bobby Dazzler (Mazooma) (Scorpion 5) (set 1)", - "sc5boba", "Bobby Dazzler (Mazooma) (Scorpion 5) (set 2)", - "sc5bobb", "Bobby Dazzler (Mazooma) (Scorpion 5) (set 3)", - "sc5bobc", "Bobby Dazzler (Mazooma) (Scorpion 5) (set 4)", - "sc5bpb", "Bully's Prize Board (Bellfruit) (Scorpion 5) (set 1)", - "sc5bpba", "Bully's Prize Board (Bellfruit) (Scorpion 5) (set 5)", - "sc5bpbb", "Bully's Prize Board (Bellfruit) (Scorpion 5) (set 2)", - "sc5bpbc", "Bully's Prize Board (Bellfruit) (Scorpion 5) (set 6)", - "sc5bpbd", "Bully's Prize Board (Bellfruit) (Scorpion 5) (set 3)", - "sc5bpbe", "Bully's Prize Board (Bellfruit) (Scorpion 5) (set 4)", - "sc5bpbf", "Bully's Prize Board (Bellfruit) (Scorpion 5) (set 7)", - "sc5bpbg", "Bully's Prize Board (Bellfruit) (Scorpion 5) (set 8)", - "sc5bpfpb", "Bullseye Pounds For Points (Bellfruit) (Scorpion 5) (set 1)", - "sc5bpfpba", "Bullseye Pounds For Points (Bellfruit) (Scorpion 5) (set 2)", - "sc5bsp", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 1)", - "sc5bspa", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 2)", - "sc5bspb", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 3)", - "sc5bspc", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 4)", - "sc5bspd", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 5)", - "sc5bspe", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 6)", - "sc5bspf", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 7)", - "sc5bspg", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 8)", - "sc5bsph", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 9)", - "sc5bspi", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 10)", - "sc5bspj", "Bully's Star Prize (PR3012) (Bellfruit) (Scorpion 5) (set 1)", - "sc5bspk", "Bully's Star Prize (PR3012) (Bellfruit) (Scorpion 5) (set 2)", - "sc5bspl", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 13)", - "sc5bspm", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 14)", - "sc5bspn", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 15)", - "sc5bspo", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 16)", - "sc5bspp", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 17)", - "sc5bspq", "Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 18)", - "sc5btiab", "Bullseye Three In A Bed (Bellfruit) (Scorpion 5)", - "sc5btrip", "Bullseye Triple (Bellfruit) (Scorpion 5) (set 1)", - "sc5btripa", "Bullseye Triple (Bellfruit) (Scorpion 5) (set 2)", - "sc5btripb", "Bullseye Triple (Bellfruit) (Scorpion 5) (set 3)", - "sc5btripc", "Bullseye Triple (Bellfruit) (Scorpion 5) (set 4)", - "sc5bucc", "Buccaneers (Bellfruit) (Scorpion 5) (set 1)", - "sc5bucca", "Buccaneers (Bellfruit) (Scorpion 5) (set 2)", - "sc5buccb", "Buccaneers (Bellfruit) (Scorpion 5) (set 3)", - "sc5buccc", "Buccaneers (Bellfruit) (Scorpion 5) (set 4)", - "sc5buccd", "Buccaneers (Bellfruit) (Scorpion 5) (set 5)", - "sc5bucce", "Buccaneers (Bellfruit) (Scorpion 5) (set 6)", - "sc5bull", "Bullseye (Bellfruit) (Scorpion 5) (set 1)", - "sc5bull5", "Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 1)", - "sc5bull5a", "Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 2)", - "sc5bull5b", "Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 3)", - "sc5bull5c", "Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 4)", - "sc5bulla", "Bullseye (Bellfruit) (Scorpion 5) (set 2)", - "sc5bullb", "Bullseye (Bellfruit) (Scorpion 5) (set 3)", - "sc5bullc", "Bullseye (Bellfruit) (Scorpion 5) (set 4)", - "sc5bunny", "Bunny Money (Mazooma) (Scorpion 5) (set 1)", - "sc5bunnya", "Bunny Money (Mazooma) (Scorpion 5) (set 2)", - "sc5butch", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 1)", - "sc5butcha", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 2)", - "sc5butchb", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 3)", - "sc5butchc", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 4)", - "sc5butchd", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 5)", - "sc5butche", "Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 6)", - "sc5cabin", "Cabin Fever (Mazooma) (Scorpion 5) (set 1)", - "sc5cabina", "Cabin Fever (Mazooma) (Scorpion 5) (set 2)", - "sc5cabinb", "Cabin Fever (Mazooma) (Scorpion 5) (set 3)", - "sc5cabinc", "Cabin Fever (Mazooma) (Scorpion 5) (set 4)", - "sc5cari", "Caribbean Cash (Qps) (Scorpion 5) (set 1)", - "sc5caria", "Caribbean Cash (Qps) (Scorpion 5) (set 2)", - "sc5carib", "Caribbean Cash (Qps) (Scorpion 5) (set 3)", - "sc5caric", "Caribbean Cash (Qps) (Scorpion 5) (set 4)", - "sc5carid", "Caribbean Cash (Qps) (Scorpion 5) (set 5)", - "sc5carie", "Caribbean Cash (Qps) (Scorpion 5) (set 6)", - "sc5carif", "Caribbean Cash (Qps) (Scorpion 5) (set 7)", - "sc5carig", "Caribbean Cash (Qps) (Scorpion 5) (set 8)", - "sc5casxt", "Casino Xtravaganza (Mazooma) (Scorpion 5) (set 1)", - "sc5casxta", "Casino Xtravaganza (Mazooma) (Scorpion 5) (set 2)", - "sc5cbar7", "Classic Bar 7 (Mazooma) (Scorpion 5) (set 1)", - "sc5cbar7a", "Classic Bar 7 (Mazooma) (Scorpion 5) (set 2)", - "sc5cblas", "Cash Blast (Bellfruit) (Scorpion 5) (set 1)", - "sc5cblasa", "Cash Blast (Bellfruit) (Scorpion 5) (set 2)", - "sc5cbrun", "Cannonball Run (Bellfruit) (Scorpion 5) (set 1)", - "sc5cbruna", "Cannonball Run (Bellfruit) (Scorpion 5) (set 2)", - "sc5celeb", "I'm A Celebrity (Bellfruit) (Scorpion 5) (set 1)", - "sc5celeba", "I'm A Celebrity (Bellfruit) (Scorpion 5) (set 2)", - "sc5celebb", "I'm A Celebrity (Bellfruit) (Scorpion 5) (set 3)", - "sc5celebc", "I'm A Celebrity (Bellfruit) (Scorpion 5) (set 4)", - "sc5celebd", "I'm A Celebrity (Bellfruit) (Scorpion 5) (set 5)", - "sc5cfact", "Cash Factor (Bellfruit) (Scorpion 5) (set 1)", - "sc5cfacta", "Cash Factor (Bellfruit) (Scorpion 5) (set 2)", - "sc5cfcp", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 1)", - "sc5cfcpa", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 2)", - "sc5cfcpb", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 3)", - "sc5cfcpc", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 4)", - "sc5cfcpd", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 5)", - "sc5cfcpe", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 6)", - "sc5cfcpf", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 7)", - "sc5cfcpg", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 8)", - "sc5cfcph", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 9)", - "sc5cfcpi", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 10)", - "sc5cfcpj", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 11)", - "sc5cfcpk", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 12)", - "sc5cfcpl", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 13)", - "sc5cfcpm", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 14)", - "sc5cfcpn", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 15)", - "sc5cfcpo", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 16)", - "sc5cfcpp", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 17)", - "sc5cfcpq", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 18)", - "sc5cfcpr", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 19)", - "sc5cfcps", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 20)", - "sc5cfcpt", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 21)", - "sc5cfcpu", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 22)", - "sc5cfcpv", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 23)", - "sc5cfcpw", "Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 24)", - "sc5cfnc", "Crazy Fruit & Nutcase (Bellfruit) (Scorpion 5) (set 1)", - "sc5cfnca", "Crazy Fruit & Nutcase (Bellfruit) (Scorpion 5) (set 2)", - "sc5cfpt", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 1)", - "sc5cfpta", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 2)", - "sc5cfptb", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 3)", - "sc5cfptc", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 4)", - "sc5cfptd", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 5)", - "sc5cfpte", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 6)", - "sc5cfptf", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 7)", - "sc5cfptg", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 8)", - "sc5cfpth", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 9)", - "sc5cfpti", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 10)", - "sc5cfptj", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 11)", - "sc5cfptk", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 12)", - "sc5cfptl", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 13)", - "sc5cfptm", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 14)", - "sc5cfptn", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 15)", - "sc5cfpto", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 16)", - "sc5cfptp", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 17)", - "sc5cfptq", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 18)", - "sc5cfptr", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 19)", - "sc5cfpts", "Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 20)", - "sc5chain", "Chain Reaction (Bellfruit) (Scorpion 5) (set 1)", - "sc5chaina", "Chain Reaction (Bellfruit) (Scorpion 5) (set 2)", - "sc5chainb", "Chain Reaction (Bellfruit) (Scorpion 5) (set 3)", - "sc5chainc", "Chain Reaction (Bellfruit) (Scorpion 5) (set 4)", - "sc5chaind", "Chain Reaction (Bellfruit) (Scorpion 5) (set 5)", - "sc5chaine", "Chain Reaction (Bellfruit) (Scorpion 5) (set 6)", - "sc5chavi", "Chav It (Bellfruit) (Scorpion 5) (set 1)", - "sc5chavia", "Chav It (Bellfruit) (Scorpion 5) (set 2)", - "sc5chavib", "Chav It (Bellfruit) (Scorpion 5) (set 3)", - "sc5chavic", "Chav It (Bellfruit) (Scorpion 5) (set 4)", - "sc5chavid", "Chav It (Bellfruit) (Scorpion 5) (set 5)", - "sc5chavie", "Chav It (Bellfruit) (Scorpion 5) (set 6)", - "sc5chavy", "Chavy Chase (Mazooma) (Scorpion 5) (set 1)", - "sc5chavya", "Chavy Chase (Mazooma) (Scorpion 5) (set 2)", - "sc5chavyb", "Chavy Chase (Mazooma) (Scorpion 5) (set 3)", - "sc5chavyc", "Chavy Chase (Mazooma) (Scorpion 5) (set 4)", - "sc5chopc", "Chop 'n' Change (Mazooma) (Scorpion 5) (set 1)", - "sc5chopca", "Chop 'n' Change (Mazooma) (Scorpion 5) (set 2)", - "sc5cj", "Cool Jewels (Bellfruit) (Scorpion 5) (set 1)", - "sc5cja", "Cool Jewels (Bellfruit) (Scorpion 5) (set 2)", - "sc5cjb", "Cool Jewels (Bellfruit) (Scorpion 5) (set 3)", - "sc5cjc", "Cool Jewels (Bellfruit) (Scorpion 5) (set 4)", - "sc5cjd", "Cool Jewels (Bellfruit) (Scorpion 5) (set 5)", - "sc5cje", "Cool Jewels (Bellfruit) (Scorpion 5) (set 6)", - "sc5cjqps", "Crown Jewels (Z055) (QPS) (Scorpion 5) (set 1)", - "sc5cjqpsa", "Crown Jewels (Z055) (QPS) (Scorpion 5) (set 2)", - "sc5cjqpsb", "Crown Jewels (Z055) (QPS) (Scorpion 5) (set 3)", - "sc5cjqpsc", "Crown Jewels (Z055) (QPS) (Scorpion 5) (set 4)", - "sc5cknig", "Crazy Knights (Bellfruit) (Scorpion 5) (set 1)", - "sc5ckniga", "Crazy Knights (Bellfruit) (Scorpion 5) (set 2)", - "sc5cknigb", "Crazy Knights (Bellfruit) (Scorpion 5) (set 3)", - "sc5cknigc", "Crazy Knights (Bellfruit) (Scorpion 5) (set 4)", - "sc5clcas", "Cluedo Casino (Mazooma) (Scorpion 5) (set 1)", - "sc5clcasa", "Cluedo Casino (Mazooma) (Scorpion 5) (set 2)", - "sc5clnot", "Cluedo Notorious (Bellfruit) (Scorpion 5) (set 1)", - "sc5clnota", "Cluedo Notorious (Bellfruit) (Scorpion 5) (set 2)", - "sc5clnotb", "Cluedo Notorious (Bellfruit) (Scorpion 5) (set 3)", - "sc5clnotc", "Cluedo Notorious (Bellfruit) (Scorpion 5) (set 4)", - "sc5clnotd", "Cluedo Notorious (Bellfruit) (Scorpion 5) (set 5)", - "sc5clnote", "Cluedo Notorious (Bellfruit) (Scorpion 5) (set 6)", - "sc5clnotf", "Cluedo Notorious (Bellfruit) (Scorpion 5) (set 7)", - "sc5clnotg", "Cluedo Notorious (Bellfruit) (Scorpion 5) (set 8)", - "sc5clown", "Clown Around (Bellfruit) (Scorpion 5) (set 1)", - "sc5clowna", "Clown Around (Bellfruit) (Scorpion 5) (set 2)", - "sc5clownb", "Clown Around (Bellfruit) (Scorpion 5) (set 3)", - "sc5clownc", "Clown Around (Bellfruit) (Scorpion 5) (set 4)", - "sc5clownd", "Clown Around (Bellfruit) (Scorpion 5) (set 5)", - "sc5clowne", "Clown Around (Bellfruit) (Scorpion 5) (set 6)", - "sc5clu70", "Cluedo 70 (Qps) (Scorpion 5) (set 1)", - "sc5clu70a", "Cluedo 70 (Qps) (Scorpion 5) (set 2)", - "sc5clue", "Cluedo (Mazooma) (Scorpion 5) (set 1)", - "sc5cluea", "Cluedo (Mazooma) (Scorpion 5) (set 2)", - "sc5clueb", "Cluedo (Mazooma) (Scorpion 5) (set 3)", - "sc5cluec", "Cluedo (Mazooma) (Scorpion 5) (set 4)", - "sc5clus", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 1)", - "sc5clusa", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 2)", - "sc5clusb", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 3)", - "sc5clusc", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 4)", - "sc5clusd", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 5)", - "sc5cluse", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 6)", - "sc5clusf", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 7)", - "sc5clusg", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 8)", - "sc5clush", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 9)", - "sc5clusi", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 10)", - "sc5clusj", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 11)", - "sc5clusk", "Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 12)", - "sc5cmani", "Colour Mania (Bellfruit) (Scorpion 5) (set 1)", - "sc5cmania", "Colour Mania (Bellfruit) (Scorpion 5) (set 2)", - "sc5cmanib", "Colour Mania (Bellfruit) (Scorpion 5) (set 3)", - "sc5cmanic", "Colour Mania (Bellfruit) (Scorpion 5) (set 4)", - "sc5cmcob", "Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 1)", - "sc5cmcoba", "Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 2)", - "sc5cmcobb", "Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 3)", - "sc5cmcobc", "Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 4)", - "sc5colmo", "Colour Of Money (Bellfruit) (Scorpion 5) (set 1)", - "sc5colmoa", "Colour Of Money (Bellfruit) (Scorpion 5) (set 2)", - "sc5colmob", "Colour Of Money (Bellfruit) (Scorpion 5) (set 3)", - "sc5colmoc", "Colour Of Money (Bellfruit) (Scorpion 5) (set 4)", - "sc5copsr", "Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 1)", - "sc5copsra", "Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 2)", - "sc5copsrb", "Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 3)", - "sc5copsrc", "Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 4)", - "sc5copsrd", "Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 5)", - "sc5copsre", "Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 6)", - "sc5copsrf", "Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 7)", - "sc5copsrg", "Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 8)", - "sc5copsrh", "Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 9)", - "sc5copsri", "Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 10)", - "sc5coro", "Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 1)", - "sc5coro0", "Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 4)", - "sc5coro1", "Coronation Street Triple Bingo (V013) (Mazooma) (Scorpion 5) (set 2)", - "sc5coroa", "Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 1)", - "sc5corob", "Coronation Street Triple Arcade (V061) (Mazooma) (Scorpion 5) (set 1)", - "sc5coroc", "Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 1)", - "sc5corod", "Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 2)", - "sc5coroe", "Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 1)", - "sc5corof", "Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 2)", - "sc5corog", "Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 3)", - "sc5coroh", "Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 4)", - "sc5coroi", "Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 3)", - "sc5coroj", "Coronation Street Triple Arcade (V063) (Mazooma) (Scorpion 5) (set 1)", - "sc5corok", "Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 2)", - "sc5corol", "Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 3)", - "sc5corom", "Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 2)", - "sc5coron", "Coronation Street Triple Arcade (V061) (Mazooma) (Scorpion 5) (set 2)", - "sc5coroo", "Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 4)", - "sc5corop", "Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 5)", - "sc5coroq", "Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 5)", - "sc5coror", "Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 6)", - "sc5coros", "Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 7)", - "sc5corot", "Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 8)", - "sc5corou", "Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 6)", - "sc5corov", "Coronation Street Triple Arcade (V063) (Mazooma) (Scorpion 5) (set 2)", - "sc5corow", "Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 4)", - "sc5corox", "Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 5)", - "sc5coroy", "Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 3)", - "sc5coroz", "Coronation Street Triple Bingo (V013) (Mazooma) (Scorpion 5) (set 1)", - "sc5corst", "Coronation Street (Bellfruit) (Scorpion 5) (set 1)", - "sc5corsta", "Coronation Street (Bellfruit) (Scorpion 5) (set 2)", - "sc5corstb", "Coronation Street (Bellfruit) (Scorpion 5) (set 3)", - "sc5corstc", "Coronation Street (Bellfruit) (Scorpion 5) (set 4)", - "sc5count", "Countdown (Bellfruit) (Scorpion 5) (set 1)", - "sc5counta", "Countdown (Bellfruit) (Scorpion 5) (set 2)", - "sc5cpays", "Crazy Pays (Bellfruit) (Scorpion 5) (set 1)", - "sc5cpaysa", "Crazy Pays (Bellfruit) (Scorpion 5) (set 2)", - "sc5cpen1", "Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 1)", - "sc5cpen1a", "Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 2)", - "sc5cpen1b", "Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 3)", - "sc5cpen1c", "Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 4)", - "sc5craid", "Cash Raider (Mazooma) (Scorpion 5) (set 1)", - "sc5craida", "Cash Raider (Mazooma) (Scorpion 5) (set 2)", - "sc5crcpt", "Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 1)", - "sc5crcpta", "Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 2)", - "sc5crcptb", "Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 3)", - "sc5crnjw", "Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 1)", - "sc5crnjwa", "Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 2)", - "sc5crnjwb", "Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 3)", - "sc5crotr", "Cops 'n' Robbers On The Run (Bellfruit) (Scorpion 5) (set 1)", - "sc5crotra", "Cops 'n' Robbers On The Run (Bellfruit) (Scorpion 5) (set 2)", - "sc5crsc", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 1)", - "sc5crsca", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 2)", - "sc5crscb", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 3)", - "sc5crscc", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 4)", - "sc5crscd", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 5)", - "sc5crsce", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 6)", - "sc5crscf", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 7)", - "sc5crscg", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 8)", - "sc5crsch", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 9)", - "sc5crsci", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 10)", - "sc5crscj", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 11)", - "sc5crsck", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 12)", - "sc5crscl", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 13)", - "sc5crscm", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 14)", - "sc5crscn", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 15)", - "sc5crsco", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 16)", - "sc5crscp", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 17)", - "sc5crscq", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 18)", - "sc5crscr", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 19)", - "sc5crscs", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 20)", - "sc5crsct", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 21)", - "sc5crscu", "Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 22)", - "sc5crsgc", "Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 1)", - "sc5crsgca", "Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 2)", - "sc5crsgcb", "Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 3)", - "sc5crsgcc", "Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 4)", - "sc5crsgr", "Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 1)", - "sc5crsgra", "Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 2)", - "sc5crsgrb", "Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 3)", - "sc5crsgrc", "Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 4)", - "sc5crsgrd", "Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 5)", - "sc5crsgre", "Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 6)", - "sc5crsgrf", "Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 7)", - "sc5crsgrg", "Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 8)", - "sc5ctit", "Cash Of The Titans (Bellfruit) (Scorpion 5) (set 1)", - "sc5ctita", "Cash Of The Titans (Bellfruit) (Scorpion 5) (set 2)", - "sc5ctl", "Cop The Lot (Bellfruit) (Scorpion 5) (set 1)", - "sc5ctla", "Cop The Lot (Bellfruit) (Scorpion 5) (set 2)", - "sc5ctlb", "Cop The Lot (Bellfruit) (Scorpion 5) (set 3)", - "sc5ctlc", "Cop The Lot (Bellfruit) (Scorpion 5) (set 4)", - "sc5cvega", "Cash Vegas (Bellfruit) (Scorpion 5) (set 1)", - "sc5cvegaa", "Cash Vegas (Bellfruit) (Scorpion 5) (set 2)", - "sc5czfr", "Fruit Crazy Triple / Crazy Keys (QPS) (Scorpion 5)", - "sc5ddbbc", "Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 1)", - "sc5ddbbca", "Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 2)", - "sc5ddbbcb", "Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 3)", - "sc5ddbbcc", "Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 4)", - "sc5ddbbcd", "Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 5)", - "sc5ddbbce", "Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 6)", - "sc5ddbbcf", "Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 7)", - "sc5ddbbcg", "Deal Or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 8)", - "sc5ddosh", "Doctor Dosh (Bellfruit) (Scorpion 5) (set 1)", - "sc5ddosha", "Doctor Dosh (Bellfruit) (Scorpion 5) (set 2)", - "sc5ddply", "Deal Or No Deal Player's Choice (Bellfruit) (Scorpion 5) (set 1)", - "sc5ddplya", "Deal Or No Deal Player's Choice (Bellfruit) (Scorpion 5) (set 2)", - "sc5ddptg", "Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 1)", - "sc5ddptga", "Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 2)", - "sc5ddptgb", "Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 3)", - "sc5ddptgc", "Deal Or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 4)", - "sc5devil", "Devil Of A Deal (Mazooma) (Scorpion 5) (set 1)", - "sc5devila", "Devil Of A Deal (Mazooma) (Scorpion 5) (set 2)", - "sc5devilb", "Devil Of A Deal (Mazooma) (Scorpion 5) (set 3)", - "sc5devilc", "Devil Of A Deal (Mazooma) (Scorpion 5) (set 4)", - "sc5dhh", "Dough Ho Ho (Bellfruit) (Scorpion 5) (set 1)", - "sc5dhha", "Dough Ho Ho (Bellfruit) (Scorpion 5) (set 2)", - "sc5dhhb", "Dough Ho Ho (Bellfruit) (Scorpion 5) (set 3)", - "sc5dhhc", "Dough Ho Ho (Bellfruit) (Scorpion 5) (set 4)", - "sc5dhhd", "Dough Ho Ho (Bellfruit) (Scorpion 5) (set 5)", - "sc5dhhe", "Dough Ho Ho (Bellfruit) (Scorpion 5) (set 6)", - "sc5dhhf", "Dough Ho Ho (Bellfruit) (Scorpion 5) (set 7)", - "sc5dhhg", "Dough Ho Ho (Bellfruit) (Scorpion 5) (set 8)", - "sc5dmine", "Diamond Mine (Bellfruit) (Scorpion 5) (set 1)", - "sc5dminea", "Diamond Mine (Bellfruit) (Scorpion 5) (set 2)", - "sc5dmineb", "Diamond Mine (Bellfruit) (Scorpion 5) (set 3)", - "sc5dminec", "Diamond Mine (Bellfruit) (Scorpion 5) (set 4)", - "sc5dmined", "Diamond Mine (Bellfruit) (Scorpion 5) (set 5)", - "sc5dminee", "Diamond Mine (Bellfruit) (Scorpion 5) (set 6)", - "sc5dminef", "Diamond Mine (Bellfruit) (Scorpion 5) (set 7)", - "sc5dmineg", "Diamond Mine (Bellfruit) (Scorpion 5) (set 8)", - "sc5dmineh", "Diamond Mine (Bellfruit) (Scorpion 5) (set 9)", - "sc5dminei", "Diamond Mine (Bellfruit) (Scorpion 5) (set 10)", - "sc5dminej", "Diamond Mine (Bellfruit) (Scorpion 5) (set 11)", - "sc5dminek", "Diamond Mine (Bellfruit) (Scorpion 5) (set 12)", - "sc5dminel", "Diamond Mine (Bellfruit) (Scorpion 5) (set 13)", - "sc5dnd", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", - "sc5dnda", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndb", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndbb", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndbba", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndbbb", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndbbc", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndbbd", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndbbe", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndbbf", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndbbg", "Deal Or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndbc", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndbca", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndbcb", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndbcc", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndbcd", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndbce", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndbcf", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndbcg", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndbch", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndbci", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndbcj", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndbck", "Deal Or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndbd", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndbda", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndbdb", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndbdc", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndbdd", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndbde", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndbdf", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndbdg", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndbdh", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndbdi", "Deal Or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndbe", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndbea", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndbeb", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndbec", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndbed", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndbee", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndbef", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndbeg", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndbeh", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndbei", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndbej", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndbek", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndbel", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndbem", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndben", "Deal Or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndbl", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndbla", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndblb", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndblc", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndbld", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndble", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndblf", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndblg", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndblh", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndbli", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndblj", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndblk", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndbll", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndblm", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndbln", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndblo", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 16)", - "sc5dndblp", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 17)", - "sc5dndblq", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 18)", - "sc5dndblr", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 19)", - "sc5dndbls", "Deal Or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 20)", - "sc5dndbo", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndboa", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndbob", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndboc", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndbod", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndboe", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndbof", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndbog", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndboh", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndboi", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndboj", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndbok", "Deal Or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndbq", "Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 1)", - "sc5dndbqa", "Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 2)", - "sc5dndbqb", "Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 3)", - "sc5dndbqc", "Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 4)", - "sc5dndbqd", "Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 5)", - "sc5dndbqe", "Deal Or No Deal Beat The Banker (Qps) (Scorpion 5) (set 6)", - "sc5dndbr", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndbra", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndbrb", "Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndbrc", "Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndbrd", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndbre", "Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndbrf", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndbrg", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndbrh", "Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndbri", "Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndbrj", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndbrk", "Deal Or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndbrl", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndbrm", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndbrn", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndbro", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndbrp", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndbrq", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndbrr", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndbrs", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndbrt", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndbru", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 16)", - "sc5dndbrv", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 17)", - "sc5dndbrw", "Deal Or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 18)", - "sc5dndc", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndc2", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndc2a", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndc2b", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndc2c", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndc2d", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndc2e", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndc2f", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndc2g", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndc2h", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndc2i", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndc2j", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndc2k", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndc2l", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndc2m", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndc2n", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndc2o", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 16)", - "sc5dndc2p", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 17)", - "sc5dndc2q", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 18)", - "sc5dndc2r", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 19)", - "sc5dndc2s", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 20)", - "sc5dndc2t", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 21)", - "sc5dndc2u", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 22)", - "sc5dndc2v", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 23)", - "sc5dndc2w", "Deal Or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 24)", - "sc5dndc3", "Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndc3a", "Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndc3b", "Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndc3c", "Deal Or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndca", "Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndcaa", "Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndcab", "Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndcac", "Deal Or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndcad", "Deal Or No Deal The Crazy Chair Arcade (PR3362) (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndcae", "Deal Or No Deal The Crazy Chair Arcade (PR3362) (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndcb", "Deal Or No Deal Club Beat The Banker (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndcba", "Deal Or No Deal Club Beat The Banker (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndcc", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndcca", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndccb", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndccc", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndccd", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndcce", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndccf", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndccg", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndcch", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndcci", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndccj", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndcck", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndccl", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndccm", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndccn", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndcco", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 16)", - "sc5dndccp", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 17)", - "sc5dndccq", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 18)", - "sc5dndccr", "Deal Or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 19)", - "sc5dndcl", "Deal Or No Deal Club (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndcla", "Deal Or No Deal Club (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndcr", "Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndcra", "Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndcrb", "Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndcrc", "Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndcrd", "Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndcre", "Deal Or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndcs", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndcsa", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndcsb", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndcsc", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndcsd", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndcse", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndcsf", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndcsg", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndcsh", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndcsi", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndcsj", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndcsk", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndcsl", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndcsm", "Deal Or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndd", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", - "sc5dnddd", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", - "sc5dnddda", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndddb", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndddc", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndddd", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", - "sc5dnddde", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndddf", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndddg", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndddh", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndddi", "Deal Or No Deal Double Deal Or No Deal (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndde", "Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 1)", - "sc5dnddea", "Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 2)", - "sc5dnddeb", "Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 3)", - "sc5dnddec", "Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndded", "Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 5)", - "sc5dnddee", "Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 6)", - "sc5dnddef", "Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 7)", - "sc5dnddeg", "Deal Or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 8)", - "sc5dnddf", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 1)", - "sc5dnddfa", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 2)", - "sc5dnddfb", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 3)", - "sc5dnddfc", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 4)", - "sc5dnddfd", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 5)", - "sc5dnddfe", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 6)", - "sc5dnddff", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 7)", - "sc5dnddfg", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 8)", - "sc5dnddfh", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 9)", - "sc5dnddfi", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 10)", - "sc5dnddfj", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 11)", - "sc5dnddfk", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 12)", - "sc5dnddfl", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 13)", - "sc5dnddfm", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 14)", - "sc5dnddfn", "Deal Or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 15)", - "sc5dnddi", "Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 1)", - "sc5dnddia", "Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 2)", - "sc5dnddib", "Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 3)", - "sc5dnddic", "Deal Or No Deal Diamond (Bellfruit) (Scorpion 5) (set 4)", - "sc5dnddo", "Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 1)", - "sc5dnddoa", "Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 2)", - "sc5dnddob", "Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 3)", - "sc5dnddoc", "Deal Or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 4)", - "sc5dnddt", "Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 1)", - "sc5dnddta", "Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 2)", - "sc5dnddtb", "Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 3)", - "sc5dnddtc", "Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 4)", - "sc5dnddtd", "Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 5)", - "sc5dnddte", "Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 6)", - "sc5dnddtf", "Deal Or No Deal Double Take (Bellfruit) (Scorpion 5) (set 7)", - "sc5dnddw", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 1)", - "sc5dnddwa", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 2)", - "sc5dnddwb", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 3)", - "sc5dnddwc", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 4)", - "sc5dnddwd", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 5)", - "sc5dnddwe", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 6)", - "sc5dnddwf", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 7)", - "sc5dnddwg", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 8)", - "sc5dnddwh", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 9)", - "sc5dnddwi", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 10)", - "sc5dnddwj", "Deal Or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 11)", - "sc5dnde", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndf", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndfl", "Deal Or No Deal Feeling Lucky (PR3432) (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndfla", "Deal Or No Deal Feeling Lucky (PR3432) (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndflb", "Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndflc", "Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndfld", "Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndfle", "Deal Or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndg", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndgl", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndgla", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndglb", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndglc", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndgld", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndgle", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndglf", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndglg", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndglh", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndgli", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndglj", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndglk", "Deal Or No Deal Gold (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndgo", "Deal Or No Deal Game On (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndgoa", "Deal Or No Deal Game On (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndh", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndhf", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndhfa", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndhfb", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndhfc", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndhfd", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndhfe", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndhff", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndhfg", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndhfh", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndhfi", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndhfj", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndhfk", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndhfl", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndhfm", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndhfn", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndhfo", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 16)", - "sc5dndhfp", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 17)", - "sc5dndhfq", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 18)", - "sc5dndhfr", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 19)", - "sc5dndhfs", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 20)", - "sc5dndhft", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 21)", - "sc5dndhfu", "Deal Or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 22)", - "sc5dndi", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndj", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndk", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndl", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndld", "Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndlda", "Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndldb", "Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndldc", "Deal Or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndlp", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndlpa", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndlpb", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndlpc", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndlpd", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndlpe", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndlpf", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndlpg", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndlph", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndlpi", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndlpj", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndlpk", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndlpl", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndlpm", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndlpn", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndlpo", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 16)", - "sc5dndlpp", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 17)", - "sc5dndlpq", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 18)", - "sc5dndlpr", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 19)", - "sc5dndlps", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 20)", - "sc5dndlpt", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 21)", - "sc5dndlpu", "Deal Or No Deal Let's Play Deal Or No Deal (Bellfruit) (Scorpion 5) (set 22)", - "sc5dndm", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndmb", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndmba", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndmbb", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndmbc", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndmbd", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndmbe", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndmbf", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndmbg", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndmbh", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndmbi", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndmbj", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndmbk", "Deal Or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndmd", "Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndmda", "Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndmdb", "Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndmdc", "Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndmdd", "Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndmde", "Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndmdf", "Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndmdg", "Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndmdh", "Deal Or No Deal Mega Deal Or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndmdi", "Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndmdj", "Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndmdk", "Deal Or No Deal Mega Deal Or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndn", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndo", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 16)", - "sc5dndp", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 17)", - "sc5dndpa", "Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndpaa", "Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndpab", "Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndpac", "Deal Or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndpc", "Deal Or No Deal The Players Choice (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndpca", "Deal Or No Deal The Players Choice (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndpd", "Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndpda", "Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndpdb", "Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndpdc", "Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndpdd", "Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndpde", "Deal Or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndpg", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndpga", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndpgb", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndpgc", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndpgd", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndpge", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndpgf", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndpgg", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndpgh", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndpgi", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndpgj", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndpgk", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndpgl", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndpgm", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndpgn", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndpgo", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 16)", - "sc5dndpgp", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 17)", - "sc5dndpgq", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 18)", - "sc5dndpgr", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 19)", - "sc5dndpgs", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 20)", - "sc5dndpgt", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 21)", - "sc5dndpgu", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 22)", - "sc5dndpgv", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 23)", - "sc5dndpgw", "Deal Or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 24)", - "sc5dndpl", "Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndpla", "Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndplb", "Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndplc", "Deal Or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndq", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 18)", - "sc5dndr", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 19)", - "sc5dndra", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndraa", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndrab", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndrac", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndrad", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndrae", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndraf", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndrag", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndrah", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndrai", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndraj", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndrak", "Deal Or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndrr", "Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndrra", "Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndrrb", "Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndrrc", "Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndrrd", "Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndrre", "Deal Or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndrt", "Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndrta", "Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndrtb", "Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndrtc", "Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndrtd", "Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndrte", "Deal Or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 6)", - "sc5dnds", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 20)", - "sc5dndsi", "Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndsia", "Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndsib", "Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndsic", "Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndsid", "Deal Or No Deal Simply Deal Or No Deal (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndt", "Deal Or No Deal (Bellfruit) (Scorpion 5) (set 21)", - "sc5dndtb", "Deal Or No Deal Think Big (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndtba", "Deal Or No Deal Think Big (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndtp", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndtpa", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndtpb", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndtpc", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndtpd", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndtpe", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndtpf", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndtpg", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndtph", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndtpi", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndtpj", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndtpk", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndtpl", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndtpm", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndtpn", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndtpo", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 16)", - "sc5dndtpp", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 17)", - "sc5dndtpq", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 18)", - "sc5dndtpr", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 19)", - "sc5dndtps", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 20)", - "sc5dndtpt", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 21)", - "sc5dndtpu", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 22)", - "sc5dndtpv", "Deal Or No Deal The Power (Bellfruit) (Scorpion 5) (set 23)", - "sc5dndtr", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndtra", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndtrb", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndtrc", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndtrd", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndtre", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndtrf", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndtrg", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndtrh", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndtri", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndtrj", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndtrk", "Deal Or No Deal Think Red (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndwb", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndwba", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndwbb", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndwbc", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndwbd", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndwbe", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndwbf", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndwbg", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndwbh", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndwbi", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndwbj", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndwbk", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndwbl", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndwbm", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndwbn", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndwbo", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 16)", - "sc5dndwbp", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 17)", - "sc5dndwbq", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 18)", - "sc5dndwbr", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 19)", - "sc5dndwbs", "Deal Or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 20)", - "sc5dndwc", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndwca", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndwcb", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndwcc", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndwcd", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndwce", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndwcf", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndwcg", "Deal Or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndwi", "Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndwia", "Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndwib", "Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndwic", "Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndwid", "Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndwie", "Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndwif", "Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndwig", "Deal Or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndww", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndwwa", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndwwb", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndwwc", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndwwd", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndwwe", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndwwf", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndwwg", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndwwh", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 9)", - "sc5dndwwi", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 10)", - "sc5dndwwj", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 11)", - "sc5dndwwk", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 12)", - "sc5dndwwl", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 13)", - "sc5dndwwm", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 14)", - "sc5dndwwn", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 15)", - "sc5dndwwo", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 16)", - "sc5dndwwp", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 17)", - "sc5dndwwq", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 18)", - "sc5dndwwr", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 19)", - "sc5dndwws", "Deal Or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 20)", - "sc5dndys", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 1)", - "sc5dndysa", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 2)", - "sc5dndysb", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 3)", - "sc5dndysc", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 4)", - "sc5dndysd", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 5)", - "sc5dndyse", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 6)", - "sc5dndysf", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 7)", - "sc5dndysg", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 8)", - "sc5dndysh", "Deal Or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 9)", - "sc5dough", "Dough Selecta (Bellfruit) (Scorpion 5) (set 1)", - "sc5dougha", "Dough Selecta (Bellfruit) (Scorpion 5) (set 2)", - "sc5dracp", "Drac Pack (Bellfruit) (Scorpion 5) (set 1)", - "sc5dracpa", "Drac Pack (Bellfruit) (Scorpion 5) (set 2)", - "sc5ducks", "Ducks Of Hazzard (Mazooma) (Scorpion 5)", - "sc5emmer", "Emmerdale (Mazooma) (Scorpion 5) (set 1)", - "sc5emmera", "Emmerdale (Mazooma) (Scorpion 5) (set 2)", - "sc5fast", "Fast Cash (Qps) (Scorpion 5)", - "sc5fbspn", "Fat Boy Spin (Bellfruit) (Scorpion 5) (set 1)", - "sc5fbspna", "Fat Boy Spin (Bellfruit) (Scorpion 5) (set 2)", - "sc5fdice", "Fire 'n' Dice (Bellfruit) (Scorpion 5) (set 1)", - "sc5fdicea", "Fire 'n' Dice (Bellfruit) (Scorpion 5) (set 2)", - "sc5fgbh", "Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 1)", - "sc5fgbha", "Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 2)", - "sc5fgbhb", "Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 3)", - "sc5fgbhc", "Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 4)", - "sc5fggp", "Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 1)", - "sc5fggpa", "Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 2)", - "sc5fggpb", "Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 3)", - "sc5fggpc", "Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 4)", - "sc5fggpd", "Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 5)", - "sc5fggpe", "Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 6)", - "sc5fggpf", "Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 7)", - "sc5fggpg", "Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 8)", - "sc5fguy", "Family Guy (Bellfruit) (Scorpion 5) (set 1)", - "sc5fguya", "Family Guy (Bellfruit) (Scorpion 5) (set 2)", - "sc5fguyb", "Family Guy (Bellfruit) (Scorpion 5) (set 3)", - "sc5fguyc", "Family Guy (Bellfruit) (Scorpion 5) (set 4)", - "sc5fguyd", "Family Guy (Bellfruit) (Scorpion 5) (set 5)", - "sc5fguye", "Family Guy (Bellfruit) (Scorpion 5) (set 6)", - "sc5fguyf", "Family Guy (Bellfruit) (Scorpion 5) (set 7)", - "sc5fguyg", "Family Guy (Bellfruit) (Scorpion 5) (set 8)", - "sc5fires", "Firestarter (Bellfruit) (Scorpion 5) (set 1)", - "sc5firesa", "Firestarter (Bellfruit) (Scorpion 5) (set 2)", - "sc5firesb", "Firestarter (Bellfruit) (Scorpion 5) (set 3)", - "sc5firesc", "Firestarter (Bellfruit) (Scorpion 5) (set 4)", - "sc5floop", "Fruit Loops (Mazooma) (Scorpion 5) (set 1)", - "sc5floopa", "Fruit Loops (Mazooma) (Scorpion 5) (set 2)", - "sc5fmj", "Full Metal Jackpot (Mazooma) (Scorpion 5) (set 1)", - "sc5fmja", "Full Metal Jackpot (Mazooma) (Scorpion 5) (set 2)", - "sc5fnclb", "Fight Night Club (Bellfruit) (Scorpion 5) (set 1)", - "sc5fnclba", "Fight Night Club (Bellfruit) (Scorpion 5) (set 2)", - "sc5fnclbb", "Fight Night Club (Bellfruit) (Scorpion 5) (set 3)", - "sc5fnclbc", "Fight Night Club (Bellfruit) (Scorpion 5) (set 4)", - "sc5fnclbd", "Fight Night Club (Bellfruit) (Scorpion 5) (set 5)", - "sc5fnclbe", "Fight Night Club (Bellfruit) (Scorpion 5) (set 6)", - "sc5frcrz", "Fruit Crazy (Mazooma) (Scorpion 5) (set 1)", - "sc5frcrza", "Fruit Crazy (Mazooma) (Scorpion 5) (set 2)", - "sc5ftcas", "Flash The Cash (Mazooma) (Scorpion 5) (set 1)", - "sc5ftcasa", "Flash The Cash (Mazooma) (Scorpion 5) (set 2)", - "sc5gball", "Golden Balls (Bellfruit) (Scorpion 5) (set 1)", - "sc5gballa", "Golden Balls (Bellfruit) (Scorpion 5) (set 2)", - "sc5gballb", "Golden Balls (Bellfruit) (Scorpion 5) (set 3)", - "sc5gballc", "Golden Balls (Bellfruit) (Scorpion 5) (set 4)", - "sc5gd", "Gold Digger (Bellfruit) (Scorpion 5) (set 1)", - "sc5gda", "Gold Digger (Bellfruit) (Scorpion 5) (set 2)", - "sc5gdclb", "Gold Digger Club (Bellfruit) (Scorpion 5) (set 1)", - "sc5gdclba", "Gold Digger Club (Bellfruit) (Scorpion 5) (set 2)", - "sc5gdclbb", "Gold Digger Club (Bellfruit) (Scorpion 5) (set 3)", - "sc5gdclbc", "Gold Digger Club (Bellfruit) (Scorpion 5) (set 4)", - "sc5gdclbd", "Gold Digger Club (Bellfruit) (Scorpion 5) (set 5)", - "sc5gdclbe", "Gold Digger Club (Bellfruit) (Scorpion 5) (set 6)", - "sc5gdclbf", "Gold Digger Club (Bellfruit) (Scorpion 5) (set 7)", - "sc5gdclbg", "Gold Digger Club (Bellfruit) (Scorpion 5) (set 8)", - "sc5gdclbh", "Gold Digger (PR3509) (Bellfruit) (Scorpion 5) (set 1)", - "sc5gdclbi", "Gold Digger (PR3509) (Bellfruit) (Scorpion 5) (set 2)", - "sc5gdclbj", "Gold Digger Club (PR3429) (Bellfruit) (Scorpion 5) (set 1)", - "sc5gdclbk", "Gold Digger Club (PR3429) (Bellfruit) (Scorpion 5) (set 2)", - "sc5gdmz", "Gold Diggers (Mazooma) (Scorpion 5) (set 1)", - "sc5gdmza", "Gold Diggers (Mazooma) (Scorpion 5) (set 2)", - "sc5ggame", "Golden Game (Mazooma) (Scorpion 5) (set 1)", - "sc5ggamea", "Golden Game (Mazooma) (Scorpion 5) (set 2)", - "sc5ggameb", "Golden Game (Mazooma) (Scorpion 5) (set 3)", - "sc5ggamec", "Golden Game (Mazooma) (Scorpion 5) (set 4)", - "sc5ggamed", "Golden Game (Mazooma) (Scorpion 5) (set 5)", - "sc5ggg", "Grand Golden Game (Mazooma) (Scorpion 5) (set 1)", - "sc5ggga", "Grand Golden Game (Mazooma) (Scorpion 5) (set 3)", - "sc5gggb", "Grand Golden Game (Mazooma) (Scorpion 5) (set 2)", - "sc5gggc", "Grand Golden Game (Mazooma) (Scorpion 5) (set 4)", - "sc5glad", "Gladiator (Mazooma) (Scorpion 5) (set 1)", - "sc5glada", "Gladiator (Mazooma) (Scorpion 5) (set 2)", - "sc5gladb", "Gladiator (Mazooma) (Scorpion 5) (set 3)", - "sc5gladc", "Gladiator (Mazooma) (Scorpion 5) (set 4)", - "sc5gldfv", "Gold Fever (Bellfruit) (Scorpion 5) (set 1)", - "sc5gldfva", "Gold Fever (Bellfruit) (Scorpion 5) (set 2)", - "sc5gldfvb", "Gold Fever (Bellfruit) (Scorpion 5) (set 3)", - "sc5gldfvc", "Gold Fever (Bellfruit) (Scorpion 5) (set 4)", - "sc5gldfvd", "Gold Fever (Bellfruit) (Scorpion 5) (set 5)", - "sc5gldfve", "Gold Fever (Bellfruit) (Scorpion 5) (set 6)", - "sc5gldfvf", "Gold Fever (Bellfruit) (Scorpion 5) (set 7)", - "sc5gldfvg", "Gold Fever (Bellfruit) (Scorpion 5) (set 8)", - "sc5gldgo", "Golden Goals (Bellfruit) (Scorpion 5) (set 1)", - "sc5gldgoa", "Golden Goals (Bellfruit) (Scorpion 5) (set 2)", - "sc5gldsp", "Golden Spinner (PR2203) (Mazooma) (Scorpion 5)", - "sc5gldspa", "Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 1)", - "sc5gldspb", "Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 2)", - "sc5gldspc", "Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 3)", - "sc5gldspd", "Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 1)", - "sc5gldspe", "Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 4)", - "sc5gldspf", "Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 2)", - "sc5gldspg", "Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 5)", - "sc5gldsph", "Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 3)", - "sc5gldspi", "Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 6)", - "sc5gldspj", "Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 7)", - "sc5gldspk", "Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 8)", - "sc5gldspl", "Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 9)", - "sc5gldspm", "Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 10)", - "sc5gldspn", "Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 4)", - "sc5gldspo", "Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 11)", - "sc5gldspp", "Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 5)", - "sc5gmclb", "Grand Master Cash (Bellfruit) (Scorpion 5) (set 1)", - "sc5gmclba", "Grand Master Cash (Bellfruit) (Scorpion 5) (set 2)", - "sc5gmclbb", "Grand Master Cash (Bellfruit) (Scorpion 5) (set 3)", - "sc5gmclbc", "Grand Master Cash (Bellfruit) (Scorpion 5) (set 4)", - "sc5grq", "Get Rich Quick (Bellfruit) (Scorpion 5) (set 1)", - "sc5grqa", "Get Rich Quick (Bellfruit) (Scorpion 5) (set 2)", - "sc5grqb", "Get Rich Quick (Bellfruit) (Scorpion 5) (set 3)", - "sc5grqc", "Get Rich Quick (Bellfruit) (Scorpion 5) (set 4)", - "sc5gunp", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 1)", - "sc5gunpa", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 2)", - "sc5gunpb", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 3)", - "sc5gunpc", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 4)", - "sc5gunpd", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 5)", - "sc5gunpe", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 6)", - "sc5gunpf", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 7)", - "sc5gunpg", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 8)", - "sc5gunph", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 9)", - "sc5gunpi", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 10)", - "sc5gunpj", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 11)", - "sc5gunpk", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 12)", - "sc5gunpl", "Gunpowder Slot (Bellfruit) (Scorpion 5) (set 13)", - "sc5hapnt", "Happy Notes (Bellfruit) (Scorpion 5) (set 1)", - "sc5hapnta", "Happy Notes (Bellfruit) (Scorpion 5) (set 2)", - "sc5hapntb", "Happy Notes (Bellfruit) (Scorpion 5) (set 3)", - "sc5hapntc", "Happy Notes (Bellfruit) (Scorpion 5) (set 4)", - "sc5hapntd", "Happy Notes (Bellfruit) (Scorpion 5) (set 5)", - "sc5hapnte", "Happy Notes (Bellfruit) (Scorpion 5) (set 6)", - "sc5hapntf", "Happy Notes (Bellfruit) (Scorpion 5) (set 7)", - "sc5hapntg", "Happy Notes (Bellfruit) (Scorpion 5) (set 8)", - "sc5hellb", "Hells Bells (Bellfruit) (Scorpion 5) (set 1)", - "sc5hellba", "Hells Bells (Bellfruit) (Scorpion 5) (set 2)", - "sc5hill", "Hill Billionaire (Bellfruit) (Scorpion 5) (set 1)", - "sc5hilla", "Hill Billionaire (Bellfruit) (Scorpion 5) (set 2)", - "sc5hillb", "Hill Billionaire (Bellfruit) (Scorpion 5) (set 3)", - "sc5hirol", "High Roller (Mazooma) (Scorpion 5) (set 1)", - "sc5hirola", "High Roller (Mazooma) (Scorpion 5) (set 2)", - "sc5hirolb", "High Roller (Mazooma) (Scorpion 5) (set 3)", - "sc5hirolc", "High Roller (Mazooma) (Scorpion 5) (set 4)", - "sc5hirold", "High Roller (Mazooma) (Scorpion 5) (set 5)", - "sc5hirole", "High Roller (Mazooma) (Scorpion 5) (set 6)", - "sc5hiss", "Hissing Quid (Qps) (Scorpion 5) (set 1)", - "sc5hissa", "Hissing Quid (Qps) (Scorpion 5) (set 2)", - "sc5hissb", "Hissing Quid (Qps) (Scorpion 5) (set 3)", - "sc5hissc", "Hissing Quid (Qps) (Scorpion 5) (set 4)", - "sc5hog", "Road Hog (PR3208) (Bellfruit) (Scorpion 5) (set 3)", - "sc5hoga", "Road Hog (PR3208) (Bellfruit) (Scorpion 5) (set 4)", - "sc5hotdg", "Hot Dog (Bellfruit) (Scorpion 5) (set 1)", - "sc5hotdga", "Hot Dog (Bellfruit) (Scorpion 5) (set 2)", - "sc5hotdgb", "Hot Dog (Bellfruit) (Scorpion 5) (set 3)", - "sc5hotdgc", "Hot Dog (Bellfruit) (Scorpion 5) (set 4)", - "sc5hotdgd", "Hot Dog (Bellfruit) (Scorpion 5) (set 5)", - "sc5hotdge", "Hot Dog (Bellfruit) (Scorpion 5) (set 6)", - "sc5hotrd", "Hot Rod (Bellfruit) (Scorpion 5) (set 1)", - "sc5hotrda", "Hot Rod (Bellfruit) (Scorpion 5) (set 2)", - "sc5hotsh", "Hot Shot (Bellfruit) (Scorpion 5) (set 1)", - "sc5hotsha", "Hot Shot (Bellfruit) (Scorpion 5) (set 2)", - "sc5hotshb", "Hot Shot (Bellfruit) (Scorpion 5) (set 3)", - "sc5hotshc", "Hot Shot (Bellfruit) (Scorpion 5) (set 4)", - "sc5hotshd", "Hot Shot (Bellfruit) (Scorpion 5) (set 5)", - "sc5hotshe", "Hot Shot (Bellfruit) (Scorpion 5) (set 6)", - "sc5hotshf", "Hot Shot (Bellfruit) (Scorpion 5) (set 7)", - "sc5hotshg", "Hot Shot (Bellfruit) (Scorpion 5) (set 8)", - "sc5hotshh", "Hot Shot (Bellfruit) (Scorpion 5) (set 9)", - "sc5hotshi", "Hot Shot (Bellfruit) (Scorpion 5) (set 10)", - "sc5hotshj", "Hot Shot (Bellfruit) (Scorpion 5) (set 11)", - "sc5hotshk", "Hot Shot (Bellfruit) (Scorpion 5) (set 12)", - "sc5hotshl", "Hot Shot (Bellfruit) (Scorpion 5) (set 13)", - "sc5hotshm", "Hot Shot (Bellfruit) (Scorpion 5) (set 14)", - "sc5hotshn", "Hot Shot (Bellfruit) (Scorpion 5) (set 15)", - "sc5hotsho", "Hot Shot (Bellfruit) (Scorpion 5) (set 16)", - "sc5hotshp", "Hot Shot (Bellfruit) (Scorpion 5) (set 17)", - "sc5hotshq", "Hot Shot (Bellfruit) (Scorpion 5) (set 18)", - "sc5hotwd", "Hot Wad (Bellfruit) (Scorpion 5) (set 1)", - "sc5hotwda", "Hot Wad (Bellfruit) (Scorpion 5) (set 2)", - "sc5hotwdb", "Hot Wad (Bellfruit) (Scorpion 5) (set 3)", - "sc5hotwdc", "Hot Wad (Bellfruit) (Scorpion 5) (set 4)", - "sc5hotwdd", "Hot Wad (Bellfruit) (Scorpion 5) (set 5)", - "sc5hotwde", "Hot Wad (Bellfruit) (Scorpion 5) (set 6)", - "sc5hotwdf", "Hot Wad (Bellfruit) (Scorpion 5) (set 7)", - "sc5hotwdg", "Hot Wad (Bellfruit) (Scorpion 5) (set 8)", - "sc5hulk", "Hulk, The (Bellfruit) (Scorpion 5) (set 1)", - "sc5hulka", "Hulk, The (Bellfruit) (Scorpion 5) (set 2)", - "sc5hulkb", "Hulk, The (Bellfruit) (Scorpion 5) (set 3)", - "sc5hulkc", "Hulk, The (Bellfruit) (Scorpion 5) (set 4)", - "sc5hulkd", "Hulk, The (Bellfruit) (Scorpion 5) (set 5)", - "sc5hulke", "Hulk, The (Bellfruit) (Scorpion 5) (set 6)", - "sc5hulkf", "Hulk, The (Bellfruit) (Scorpion 5) (set 7)", - "sc5hulkg", "Hulk, The (Bellfruit) (Scorpion 5) (set 8)", - "sc5hulkh", "Hulk, The (Bellfruit) (Scorpion 5) (set 9)", - "sc5hulki", "Hulk, The (Bellfruit) (Scorpion 5) (set 10)", - "sc5iab", "It's A Bullseye (Mazooma) (Scorpion 5) (set 1)", - "sc5iaba", "It's A Bullseye (Mazooma) (Scorpion 5) (set 2)", - "sc5ijbdo", "Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 1)", - "sc5ijbdoa", "Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 2)", - "sc5ijbdob", "Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 3)", - "sc5ijbdoc", "Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 4)", - "sc5ijob", "Italian Job (Mazooma) (Scorpion 5) (set 1)", - "sc5ijoba", "Italian Job (Mazooma) (Scorpion 5) (set 2)", - "sc5ijobb", "Italian Job (Mazooma) (Scorpion 5) (set 3)", - "sc5ijobc", "Italian Job (Mazooma) (Scorpion 5) (set 4)", - "sc5ijobd", "Italian Job (Mazooma) (Scorpion 5) (set 5)", - "sc5ijobe", "Italian Job (Mazooma) (Scorpion 5) (set 6)", - "sc5ijobf", "Italian Job (Mazooma) (Scorpion 5) (set 7)", - "sc5ijobg", "Italian Job (Mazooma) (Scorpion 5) (set 8)", - "sc5ijobh", "Italian Job (Mazooma) (Scorpion 5) (set 9)", - "sc5ijobi", "Italian Job (Mazooma) (Scorpion 5) (set 10)", - "sc5inspn", "Inner Spin (Mazooma) (Scorpion 5) (set 1)", - "sc5inspna", "Inner Spin (Mazooma) (Scorpion 5) (set 2)", - "sc5jjok", "Jackpot Jokers (Bellfruit) (Scorpion 5) (set 1)", - "sc5jjoka", "Jackpot Jokers (Bellfruit) (Scorpion 5) (set 2)", - "sc5kingx", "King X (PR2077) (Mazooma) (Scorpion 5) (set 1)", - "sc5kingxa", "King X (PR2077) (Mazooma) (Scorpion 5) (set 2)", - "sc5kingxb", "King X Triple (PR2279) (Mazooma) (Scorpion 5) (set 1)", - "sc5kingxc", "King X 3P (PR2336) (Mazooma) (Scorpion 5) (set 1)", - "sc5kingxd", "King X Triple (PR2279) (Mazooma) (Scorpion 5) (set 2)", - "sc5kingxe", "King X 3P (PR2336) (Mazooma) (Scorpion 5) (set 2)", - "sc5ldvl", "Little Devil (Mazooma) (Scorpion 5) (set 1)", - "sc5ldvla", "Little Devil (Mazooma) (Scorpion 5) (set 2)", - "sc5ldvlb", "Little Devil (Mazooma) (Scorpion 5) (set 3)", - "sc5ldvlc", "Little Devil (Mazooma) (Scorpion 5) (set 4)", - "sc5ldvld", "Little Devil (Mazooma) (Scorpion 5) (set 5)", - "sc5ldvle", "Little Devil (Mazooma) (Scorpion 5) (set 6)", - "sc5lotrr", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 1)", - "sc5lotrra", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 2)", - "sc5lotrrb", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 3)", - "sc5lotrrc", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 4)", - "sc5lotrrd", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 5)", - "sc5lotrre", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 6)", - "sc5lotrrf", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 7)", - "sc5lotrrg", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 8)", - "sc5lotrrh", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 9)", - "sc5lotrri", "Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 10)", - "sc5manic", "Manic Miner (Bellfruit) (Scorpion 5) (set 1)", - "sc5manica", "Manic Miner (Bellfruit) (Scorpion 5) (set 2)", - "sc5manicb", "Manic Miner (Bellfruit) (Scorpion 5) (set 3)", - "sc5manicc", "Manic Miner (Bellfruit) (Scorpion 5) (set 4)", - "sc5manicd", "Manic Miner (Bellfruit) (Scorpion 5) (set 5)", - "sc5manice", "Manic Miner (Bellfruit) (Scorpion 5) (set 6)", - "sc5manicf", "Manic Miner (Bellfruit) (Scorpion 5) (set 7)", - "sc5manicg", "Manic Miner (Bellfruit) (Scorpion 5) (set 8)", - "sc5manich", "Manic Miner (Bellfruit) (Scorpion 5) (set 9)", - "sc5manici", "Manic Miner (Bellfruit) (Scorpion 5) (set 10)", - "sc5manicj", "Manic Miner (Bellfruit) (Scorpion 5) (set 11)", - "sc5manick", "Manic Miner (Bellfruit) (Scorpion 5) (set 12)", - "sc5manicl", "Manic Miner (Bellfruit) (Scorpion 5) (set 13)", - "sc5manicm", "Manic Miner (Bellfruit) (Scorpion 5) (set 14)", - "sc5manicn", "Manic Miner (Bellfruit) (Scorpion 5) (set 15)", - "sc5manico", "Manic Miner (Bellfruit) (Scorpion 5) (set 16)", - "sc5manicp", "Manic Miner (Bellfruit) (Scorpion 5) (set 17)", - "sc5manicq", "Manic Miner (Bellfruit) (Scorpion 5) (set 18)", - "sc5manicr", "Manic Miner (Bellfruit) (Scorpion 5) (set 19)", - "sc5manics", "Manic Miner (Bellfruit) (Scorpion 5) (set 20)", - "sc5manict", "Manic Miner (Bellfruit) (Scorpion 5) (set 21)", - "sc5manicu", "Manic Miner (Bellfruit) (Scorpion 5) (set 22)", - "sc5manicv", "Manic Miner (Bellfruit) (Scorpion 5) (set 23)", - "sc5manicw", "Manic Miner (Bellfruit) (Scorpion 5) (set 24)", - "sc5manicx", "Manic Miner (Bellfruit) (Scorpion 5) (set 25)", - "sc5manicy", "Manic Miner (Bellfruit) (Scorpion 5) (set 26)", - "sc5mcas", "Monopoly Casino (Mazooma) (Scorpion 5) (set 1)", - "sc5mcasa", "Monopoly Casino (Mazooma) (Scorpion 5) (set 3)", - "sc5mcasb", "Monopoly Casino (Mazooma) (Scorpion 5) (set 2)", - "sc5mcasc", "Monopoly Casino (Mazooma) (Scorpion 5) (set 4)", - "sc5mdm", "Monopoly Double Money (Bellfruit) (Scorpion 5) (set 1)", - "sc5mdma", "Monopoly Double Money (Bellfruit) (Scorpion 5) (set 2)", - "sc5mdmb", "Monopoly Double Money (Bellfruit) (Scorpion 5) (set 3)", - "sc5mdmc", "Monopoly Double Money (Bellfruit) (Scorpion 5) (set 4)", - "sc5mhn", "Monopoly Here & Now (Mazooma) (Scorpion 5) (set 1)", - "sc5mhna", "Monopoly Here & Now (Mazooma) (Scorpion 5) (set 2)", - "sc5mhnb", "Monopoly Here & Now (Mazooma) (Scorpion 5) (set 3)", - "sc5mhnc", "Monopoly Here & Now (Mazooma) (Scorpion 5) (set 4)", - "sc5mhnd", "Monopoly Here & Now (Mazooma) (Scorpion 5) (set 5)", - "sc5mhne", "Monopoly Here & Now (Mazooma) (Scorpion 5) (set 6)", - "sc5mhp", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 1)", - "sc5mhpa", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 2)", - "sc5mhpb", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 3)", - "sc5mhpc", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 4)", - "sc5mhpd", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 5)", - "sc5mhpe", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 6)", - "sc5mhpf", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 7)", - "sc5mhpg", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 8)", - "sc5mhph", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 9)", - "sc5mhpi", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 10)", - "sc5mhpj", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 11)", - "sc5mhpk", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 12)", - "sc5mhpl", "Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 13)", - "sc5mmad", "Money Madness (Mazooma) (Scorpion 5) (set 1)", - "sc5mmada", "Money Madness (Mazooma) (Scorpion 5) (set 2)", - "sc5mmadb", "Money Madness (Mazooma) (Scorpion 5) (set 3)", - "sc5mmadc", "Money Madness (Mazooma) (Scorpion 5) (set 4)", - "sc5mmb", "Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 1)", - "sc5mmba", "Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 2)", - "sc5mmbb", "Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 3)", - "sc5mmbc", "Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 4)", - "sc5mmbd", "Monopoly Money Bags (PR1911) (Bellfruit) (Scorpion 5) (set 1)", - "sc5mmbe", "Monopoly Money Bags (PR1911) (Bellfruit) (Scorpion 5) (set 2)", - "sc5mmm", "Mental Money Monsters (Mazooma) (Scorpion 5) (set 1)", - "sc5mmma", "Mental Money Monsters (Mazooma) (Scorpion 5) (set 2)", - "sc5mmmb", "Mental Money Monsters (Mazooma) (Scorpion 5) (set 3)", - "sc5mmmc", "Mental Money Monsters (Mazooma) (Scorpion 5) (set 4)", - "sc5mobob", "Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 1)", - "sc5moboba", "Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 2)", - "sc5mobobb", "Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 1)", - "sc5mobobc", "Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 2)", - "sc5mobobd", "Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 3)", - "sc5mobobe", "Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 4)", - "sc5mobobf", "Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 3)", - "sc5mobobg", "Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 4)", - "sc5mobobh", "Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 5)", - "sc5mobobi", "Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 6)", - "sc5mogta", "Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 1)", - "sc5mogtaa", "Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 2)", - "sc5mogtab", "Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 3)", - "sc5mogtac", "Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 4)", - "sc5mogtad", "Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 5)", - "sc5mogtae", "Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 6)", - "sc5mombc", "Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 1)", - "sc5mombca", "Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 2)", - "sc5mombcb", "Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 3)", - "sc5mombcc", "Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 4)", - "sc5momil", "Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 1)", - "sc5momila", "Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 2)", - "sc5momilb", "Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 3)", - "sc5momilc", "Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 4)", - "sc5momild", "Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 5)", - "sc5momile", "Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 6)", - "sc5moms", "Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 1)", - "sc5momsa", "Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 2)", - "sc5momsb", "Money Spinner (PR2395) (Qps) (Scorpion 5) (set 1)", - "sc5momsc", "Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 3)", - "sc5momsd", "Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 4)", - "sc5momse", "Money Spinner (PR2395) (Qps) (Scorpion 5) (set 2)", - "sc5monky", "Monkey Business / Toss The Monkey (Mazooma) (Scorpion 5) (set 1)", - "sc5monkya", "Monkey Business / Toss The Monkey (Mazooma) (Scorpion 5) (set 2)", - "sc5monop", "Monopoly (Mazooma) (Scorpion 5)", - "sc5monsp", "Money Spinner (Bellfruit) (Scorpion 5) (set 1)", - "sc5monspa", "Money Spinner (Bellfruit) (Scorpion 5) (set 2)", - "sc5monwa", "Monopoly Win Again (Qps) (Scorpion 5) (set 1)", - "sc5monwaa", "Monopoly Win Again (Qps) (Scorpion 5) (set 2)", - "sc5mopl", "Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 1)", - "sc5mopla", "Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 2)", - "sc5moplb", "Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 3)", - "sc5moplc", "Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 4)", - "sc5mopld", "Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 5)", - "sc5mople", "Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 6)", - "sc5moplf", "Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 7)", - "sc5moplg", "Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 8)", - "sc5mor2r", "Monopoly Road To Riches (Qps) (Scorpion 5) (set 1)", - "sc5mor2ra", "Monopoly Road To Riches (Qps) (Scorpion 5) (set 2)", - "sc5mowow", "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 5) (set 1)", - "sc5mowowb", "Monopoly Wheel Of Wealth (Mazooma) (Scorpion 5) (set 2)", - "sc5mr2r", "Monopoly Road To Riches (PR2329) (Mazooma) (Scorpion 5) (set 1)", - "sc5mr2ra", "Monopoly Road To Riches (PR2329) (Mazooma) (Scorpion 5) (set 2)", - "sc5mr2rb", "Monopoly Road To Riches Club (PR2457) (Mazooma) (Scorpion 5)", - "sc5mrh", "Monopoly Red Hot (Mazooma) (Scorpion 5) (set 1)", - "sc5mrha", "Monopoly Red Hot (Mazooma) (Scorpion 5) (set 2)", - "sc5mrrcl", "Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 1)", - "sc5mrrcla", "Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 2)", - "sc5mrrclb", "Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 3)", - "sc5mrrclc", "Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 4)", - "sc5mww", "Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 1)", - "sc5mwwa", "Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 2)", - "sc5mwwb", "Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 3)", - "sc5mwwc", "Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 4)", - "sc5newcm", "Colour Of Money New, The (Bellfruit) (Scorpion 5) (set 1)", - "sc5newcma", "Colour Of Money New, The (Bellfruit) (Scorpion 5) (set 2)", - "sc5newcmb", "Colour Of Money New, The (Bellfruit) (Scorpion 5) (set 3)", - "sc5newcmc", "Colour Of Money New, The (Bellfruit) (Scorpion 5) (set 4)", - "sc5newcmd", "Colour Of Money New, The (Bellfruit) (Scorpion 5) (set 5)", - "sc5newcme", "Colour Of Money New, The (Bellfruit) (Scorpion 5) (set 6)", - "sc5nmare", "A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 1)", - "sc5nmarea", "A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 2)", - "sc5nmareb", "A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 3)", - "sc5nmarec", "A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 4)", - "sc5nunsb", "Nuns 'n' Roses (Bellfruit) (Scorpion 5)", - "sc5nunsm", "Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 1)", - "sc5nunsma", "Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 2)", - "sc5nunsmb", "Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 3)", - "sc5nunsmc", "Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 4)", - "sc5nunsmd", "Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 5)", - "sc5nunsme", "Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 6)", - "sc5parot", "Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 1)", - "sc5parota", "Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 2)", - "sc5parotb", "Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 3)", - "sc5parotc", "Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 4)", - "sc5parotd", "Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 5)", - "sc5parote", "Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 6)", - "sc5parotf", "Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 7)", - "sc5parotg", "Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 8)", - "sc5pilep", "Pile On The Pounds (Qps) (Scorpion 5) (set 1)", - "sc5pilepa", "Pile On The Pounds (Qps) (Scorpion 5) (set 2)", - "sc5pilepb", "Pile On The Pounds (Qps) (Scorpion 5) (set 3)", - "sc5pilepc", "Pile On The Pounds (Qps) (Scorpion 5) (set 4)", - "sc5pircl", "The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 1)", - "sc5pircla", "The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 2)", - "sc5pirclb", "The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 3)", - "sc5pirclc", "The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 4)", - "sc5pircld", "The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 5)", - "sc5pircle", "The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 6)", - "sc5pirclf", "The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 7)", - "sc5pirclg", "The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 8)", - "sc5plays", "28 Plays Later (Qps) (Scorpion 5) (set 1)", - "sc5playsa", "28 Plays Later (Qps) (Scorpion 5) (set 2)", - "sc5pog", "Pots Of Gold (Bellfruit) (Scorpion 5) (set 1)", - "sc5poga", "Pots Of Gold (Bellfruit) (Scorpion 5) (set 2)", - "sc5pogb", "Pots Of Gold (Bellfruit) (Scorpion 5) (set 3)", - "sc5pogc", "Pots Of Gold (Bellfruit) (Scorpion 5) (set 4)", - "sc5pogd", "Pots Of Gold (Bellfruit) (Scorpion 5) (set 5)", - "sc5poge", "Pots Of Gold (Bellfruit) (Scorpion 5) (set 6)", - "sc5pogf", "Pots Of Gold (Bellfruit) (Scorpion 5) (set 7)", - "sc5pogg", "Pots Of Gold (Bellfruit) (Scorpion 5) (set 8)", - "sc5pompa", "Up Pompay (Bellfruit) (Scorpion 5) (set 1)", - "sc5pompaa", "Up Pompay (Bellfruit) (Scorpion 5) (set 2)", - "sc5pompab", "Up Pompay (Bellfruit) (Scorpion 5) (set 3)", - "sc5pony", "Pony Express (Bellfruit) (Scorpion 5) (set 1)", - "sc5ponya", "Pony Express (Bellfruit) (Scorpion 5) (set 2)", - "sc5ponyb", "Pony Express (Bellfruit) (Scorpion 5) (set 3)", - "sc5ponyc", "Pony Express (Bellfruit) (Scorpion 5) (set 4)", - "sc5ponyd", "Pony Express (Bellfruit) (Scorpion 5) (set 5)", - "sc5ponye", "Pony Express (Bellfruit) (Scorpion 5) (set 6)", - "sc5popey", "Popeye (Mazooma) (Scorpion 5) (set 1)", - "sc5popeya", "Popeye (Mazooma) (Scorpion 5) (set 2)", - "sc5popeyb", "Popeye (Mazooma) (Scorpion 5) (set 3)", - "sc5popeyc", "Popeye (Mazooma) (Scorpion 5) (set 4)", - "sc5popeyd", "Popeye (Mazooma) (Scorpion 5) (set 5)", - "sc5popeye", "Popeye (Mazooma) (Scorpion 5) (set 6)", - "sc5popeyf", "Popeye (Mazooma) (Scorpion 5) (set 7)", - "sc5popeyg", "Popeye (Mazooma) (Scorpion 5) (set 8)", - "sc5potog", "Pot Of Gold (QPS) (Scorpion 5) (set 1)", - "sc5potoga", "Pot Of Gold (QPS) (Scorpion 5) (set 2)", - "sc5potogb", "Pot Of Gold (QPS) (Scorpion 5) (set 3)", - "sc5potogc", "Pot Of Gold (QPS) (Scorpion 5) (set 4)", - "sc5potogd", "Pot Of Gold (QPS) (Scorpion 5) (set 5)", - "sc5potoge", "Pot Of Gold (QPS) (Scorpion 5) (set 6)", - "sc5potogf", "Pot Of Gold (QPS) (Scorpion 5) (set 7)", - "sc5potogg", "Pot Of Gold (QPS) (Scorpion 5) (set 8)", - "sc5potogh", "Pot Of Gold (QPS) (Scorpion 5) (set 9)", - "sc5potogi", "Pot Of Gold (QPS) (Scorpion 5) (set 10)", - "sc5potp", "Pick Of The Pack (Bellfruit) (Scorpion 5) (set 1)", - "sc5potpa", "Pick Of The Pack (Bellfruit) (Scorpion 5) (set 2)", - "sc5potsm", "Pots Of Luck (Mazooma) (Scorpion 5) (set 1)", - "sc5potsma", "Pots Of Luck (Mazooma) (Scorpion 5) (set 2)", - "sc5pp", "Pink Panther (Mazooma) (Scorpion 5) (set 1)", - "sc5ppa", "Pink Panther (Mazooma) (Scorpion 5) (set 2)", - "sc5ppb", "Pink Panther (Mazooma) (Scorpion 5) (set 3)", - "sc5ppc", "Pink Panther (Mazooma) (Scorpion 5) (set 4)", - "sc5ppcr", "Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 1)", - "sc5ppcra", "Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 5)", - "sc5ppcrb", "Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 2)", - "sc5ppcrc", "Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 3)", - "sc5ppcrd", "Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 4)", - "sc5ppctc", "Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 1)", - "sc5ppctca", "Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 2)", - "sc5ppctcb", "Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 3)", - "sc5ppctcc", "Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 4)", - "sc5ppctcd", "Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 5)", - "sc5ppctce", "Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 6)", - "sc5ppctcf", "Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 7)", - "sc5ppctcg", "Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 8)", - "sc5ppctch", "Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 9)", - "sc5ppctci", "Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 10)", - "sc5ppd", "Pink Panther (Mazooma) (Scorpion 5) (set 5)", - "sc5ppdym", "Pink Panther Double Your Money (Mazooma / QPS) (Scorpion 5) (set 1)", - "sc5ppdyma", "Pink Panther Double Your Money (Mazooma / QPS) (Scorpion 5) (set 2)", - "sc5ppe", "Pink Panther (Mazooma) (Scorpion 5) (set 6)", - "sc5ppf", "Pink Panther (Mazooma) (Scorpion 5) (set 7)", - "sc5ppg", "Pink Panther (Mazooma) (Scorpion 5) (set 8)", - "sc5ppsag", "Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 1)", - "sc5ppsaga", "Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 2)", - "sc5ppsagb", "Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 3)", - "sc5ppsagc", "Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 4)", - "sc5ppsagd", "Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 5)", - "sc5ppsage", "Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 6)", - "sc5pwrbl", "Powerball (Bellfruit) (Scorpion 5) (set 1)", - "sc5pwrbla", "Powerball (Bellfruit) (Scorpion 5) (set 2)", - "sc5pwrpl", "Power Play (Mazooma) (Scorpion 5) (set 1)", - "sc5pwrpla", "Power Play (Mazooma) (Scorpion 5) (set 2)", - "sc5qual", "Quality Streak (Bellfruit) (Scorpion 5) (set 1)", - "sc5quala", "Quality Streak (Bellfruit) (Scorpion 5) (set 2)", - "sc5qualb", "Quality Streak (Bellfruit) (Scorpion 5) (set 3)", - "sc5qualc", "Quality Streak (Bellfruit) (Scorpion 5) (set 4)", - "sc5quald", "Quality Streak (Bellfruit) (Scorpion 5) (set 5)", - "sc5quale", "Quality Streak (Bellfruit) (Scorpion 5) (set 6)", - "sc5qualf", "Quality Streak (Bellfruit) (Scorpion 5) (set 7)", - "sc5qualg", "Quality Streak (Bellfruit) (Scorpion 5) (set 8)", - "sc5qualh", "Quality Streak (Bellfruit) (Scorpion 5) (set 9)", - "sc5quali", "Quality Streak (Bellfruit) (Scorpion 5) (set 10)", - "sc5qualj", "Quality Streak (Bellfruit) (Scorpion 5) (set 11)", - "sc5qualk", "Quality Streak (Bellfruit) (Scorpion 5) (set 12)", - "sc5quall", "Quality Streak (Bellfruit) (Scorpion 5) (set 13)", - "sc5qualm", "Quality Streak (Bellfruit) (Scorpion 5) (set 14)", - "sc5quidv", "Quid Vicious (Mazooma) (Scorpion 5) (set 1)", - "sc5quidva", "Quid Vicious (Mazooma) (Scorpion 5) (set 2)", - "sc5quidvb", "Quid Vicious (Mazooma) (Scorpion 5) (set 3)", - "sc5quidvc", "Quid Vicious (Mazooma) (Scorpion 5) (set 4)", - "sc5quidvd", "Quid Vicious (Mazooma) (Scorpion 5) (set 5)", - "sc5quidve", "Quid Vicious (Mazooma) (Scorpion 5) (set 6)", - "sc5quidvf", "Quid Vicious (Mazooma) (Scorpion 5) (set 7)", - "sc5quidvg", "Quid Vicious (Mazooma) (Scorpion 5) (set 8)", - "sc5rainb", "Over The Rainbow (Bellfruit) (Scorpion 5) (set 1)", - "sc5rainba", "Over The Rainbow (Bellfruit) (Scorpion 5) (set 2)", - "sc5rainbb", "Over The Rainbow (Bellfruit) (Scorpion 5) (set 3)", - "sc5rainbc", "Over The Rainbow (Bellfruit) (Scorpion 5) (set 4)", - "sc5rainbd", "Over The Rainbow (Bellfruit) (Scorpion 5) (set 5)", - "sc5rainbe", "Over The Rainbow (Bellfruit) (Scorpion 5) (set 6)", - "sc5redsq", "Red Square (Mazooma) (Scorpion 5) (set 1)", - "sc5redsqa", "Red Square (Mazooma) (Scorpion 5) (set 2)", - "sc5rhclb", "Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 1)", - "sc5rhclba", "Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 2)", - "sc5rhclbb", "Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 3)", - "sc5rhclbc", "Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 4)", - "sc5rhclbd", "Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 5)", - "sc5rhclbe", "Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 6)", - "sc5rhclbf", "Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 7)", - "sc5rhclbg", "Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 8)", - "sc5rhr", "Red Hot Reels (Qps) (Scorpion 5) (set 1)", - "sc5rhra", "Red Hot Reels (Qps) (Scorpion 5) (set 2)", - "sc5rhrb", "Red Hot Reels (Qps) (Scorpion 5) (set 3)", - "sc5rhrc", "Red Hot Reels (Qps) (Scorpion 5) (set 4)", - "sc5rhrd", "Red Hot Reels (Qps) (Scorpion 5) (set 5)", - "sc5rhre", "Red Hot Reels (Qps) (Scorpion 5) (set 6)", - "sc5rhx", "Red Hot X (Mazooma) (Scorpion 5) (set 1)", - "sc5rhxa", "Red Hot X (Mazooma) (Scorpion 5) (set 2)", - "sc5rhxb", "Red Hot X (Mazooma) (Scorpion 5) (set 3)", - "sc5rhxc", "Red Hot X (Mazooma) (Scorpion 5) (set 4)", - "sc5rhxcs", "Red Hot X Casino (Mazooma) (Scorpion 5) (set 1)", - "sc5rhxcsa", "Red Hot X Casino (Mazooma) (Scorpion 5) (set 2)", - "sc5rhxd", "Red Hot X (Mazooma) (Scorpion 5) (set 5)", - "sc5rhxe", "Red Hot X (Mazooma) (Scorpion 5) (set 6)", - "sc5rhxf", "Red Hot X (Mazooma) (Scorpion 5) (set 7)", - "sc5rosts", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 1)", - "sc5rostsa", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 2)", - "sc5rostsb", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 3)", - "sc5rostsc", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 4)", - "sc5rostsd", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 5)", - "sc5rostse", "Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 6)", - "sc5rovrt", "Rovers Return (Mazooma) (Scorpion 5) (set 1)", - "sc5rovrta", "Rovers Return (Mazooma) (Scorpion 5) (set 2)", - "sc5rovrtb", "Rovers Return (Mazooma) (Scorpion 5) (set 3)", - "sc5rovrtc", "Rovers Return (Mazooma) (Scorpion 5) (set 4)", - "sc5rssh", "Reel Spin Shady (Mazooma) (Scorpion 5) (set 1)", - "sc5rssha", "Reel Spin Shady (Mazooma) (Scorpion 5) (set 2)", - "sc5sbull", "Super Bullseye (Bellfruit) (Scorpion 5) (set 1)", - "sc5sbulla", "Super Bullseye (Bellfruit) (Scorpion 5) (set 2)", - "sc5sfts", "Shoot For The Stars (Bellfruit) (Scorpion 5) (set 1)", - "sc5sftsa", "Shoot For The Stars (Bellfruit) (Scorpion 5) (set 2)", - "sc5sftsb", "Shoot For The Stars (Bellfruit) (Scorpion 5) (set 3)", - "sc5sftsc", "Shoot For The Stars (Bellfruit) (Scorpion 5) (set 4)", - "sc5sharp", "Sharp Shooter (Voodoo) (Scorpion 5) (set 1)", - "sc5sharpa", "Sharp Shooter (Voodoo) (Scorpion 5) (set 2)", - "sc5showt", "Showtime (Bellfruit) (Scorpion 5) (set 1)", - "sc5showta", "Showtime (Bellfruit) (Scorpion 5) (set 2)", - "sc5showtb", "Showtime (Bellfruit) (Scorpion 5) (set 3)", - "sc5showtc", "Showtime (Bellfruit) (Scorpion 5) (set 4)", - "sc5showtd", "Showtime (Bellfruit) (Scorpion 5) (set 5)", - "sc5showte", "Showtime (Bellfruit) (Scorpion 5) (set 6)", - "sc5showtf", "Showtime (Bellfruit) (Scorpion 5) (set 7)", - "sc5showtg", "Showtime (Bellfruit) (Scorpion 5) (set 8)", - "sc5showth", "Showtime (Bellfruit) (Scorpion 5) (set 9)", - "sc5showti", "Showtime (Bellfruit) (Scorpion 5) (set 10)", - "sc5showtj", "Showtime (Bellfruit) (Scorpion 5) (set 11)", - "sc5showtk", "Showtime (Bellfruit) (Scorpion 5) (set 12)", - "sc5showtl", "Showtime (Bellfruit) (Scorpion 5) (set 13)", - "sc5showtm", "Showtime (Bellfruit) (Scorpion 5) (set 14)", - "sc5showtn", "Showtime (Bellfruit) (Scorpion 5) (set 15)", - "sc5showto", "Showtime (Bellfruit) (Scorpion 5) (set 16)", - "sc5showtp", "Showtime (Bellfruit) (Scorpion 5) (set 17)", - "sc5showtq", "Showtime (Bellfruit) (Scorpion 5) (set 18)", - "sc5showtr", "Showtime (Bellfruit) (Scorpion 5) (set 19)", - "sc5showts", "Showtime (Bellfruit) (Scorpion 5) (set 20)", - "sc5sitwi", "Spin It To Win It (Bellfruit) (Scorpion 5) (set 1)", - "sc5sitwia", "Spin It To Win It (Bellfruit) (Scorpion 5) (set 2)", - "sc5slad", "Snakes & Ladders (Bellfruit) (Scorpion 5) (set 1)", - "sc5slada", "Snakes & Ladders (Bellfruit) (Scorpion 5) (set 2)", - "sc5sladb", "Snakes & Ladders (Bellfruit) (Scorpion 5) (set 3)", - "sc5sladc", "Snakes & Ladders (Bellfruit) (Scorpion 5) (set 4)", - "sc5sladd", "Snakes & Ladders (Bellfruit) (Scorpion 5) (set 5)", - "sc5slade", "Snakes & Ladders (Bellfruit) (Scorpion 5) (set 6)", - "sc5sladf", "Snakes & Ladders (Bellfruit) (Scorpion 5) (set 7)", - "sc5sladg", "Snakes & Ladders (Bellfruit) (Scorpion 5) (set 8)", - "sc5sleut", "Super Sleuth (Mazooma) (Scorpion 5) (set 1)", - "sc5sleuta", "Super Sleuth (Mazooma) (Scorpion 5) (set 2)", - "sc5smtm", "Show Me The Money (Mazooma) (Scorpion 5) (set 1)", - "sc5smtma", "Show Me The Money (Mazooma) (Scorpion 5) (set 2)", - "sc5spice", "Spice It Up (Bellfruit) (Scorpion 5) (set 1)", - "sc5spicea", "Spice It Up (Bellfruit) (Scorpion 5) (set 3)", - "sc5spiceb", "Spice It Up (Bellfruit) (Scorpion 5) (set 2)", - "sc5spicec", "Spice It Up (Bellfruit) (Scorpion 5) (set 4)", - "sc5spiced", "Spice It Up (Bellfruit) (Scorpion 5) (set 5)", - "sc5spicee", "Spice It Up (Bellfruit) (Scorpion 5) (set 6)", - "sc5spnrn", "Spinning Around (Mazooma) (Scorpion 5) (set 1)", - "sc5spnrna", "Spinning Around (Mazooma) (Scorpion 5) (set 2)", - "sc5srace", "Streak Racer (Bellfruit) (Scorpion 5) (set 1)", - "sc5sracea", "Streak Racer (Bellfruit) (Scorpion 5) (set 2)", - "sc5srrcl", "Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 1)", - "sc5srrcla", "Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 2)", - "sc5srrclb", "Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 3)", - "sc5srrclc", "Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 4)", - "sc5srrqp", "Snake Rattle & Roll (Qps) (Scorpion 5) (set 1)", - "sc5srrqpa", "Snake Rattle & Roll (Qps) (Scorpion 5) (set 2)", - "sc5sumit", "Summit Up (Qps) (Scorpion 5) (set 1)", - "sc5sumita", "Summit Up (Qps) (Scorpion 5) (set 2)", - "sc5sus", "Suits U Sir (Qps) (Scorpion 5) (set 1)", - "sc5susa", "Suits U Sir (Qps) (Scorpion 5) (set 2)", - "sc5susb", "Suits U Sir (Qps) (Scorpion 5) (set 3)", - "sc5susc", "Suits U Sir (Qps) (Scorpion 5) (set 4)", - "sc5swbak", "Switch Back (Mazooma) (Scorpion 5) (set 1)", - "sc5swbaka", "Switch Back (Mazooma) (Scorpion 5) (set 2)", - "sc5swywm", "Spin When Your Winning (Mazooma) (Scorpion 5) (set 1)", - "sc5swywma", "Spin When Your Winning (Mazooma) (Scorpion 5) (set 2)", - "sc5swywmb", "Spin When Your Winning (Mazooma) (Scorpion 5) (set 3)", - "sc5swywmc", "Spin When Your Winning (Mazooma) (Scorpion 5) (set 4)", - "sc5tbox", "Top Box (Mazooma) (Scorpion 5) (set 1)", - "sc5tboxa", "Top Box (Mazooma) (Scorpion 5) (set 2)", - "sc5tboxb", "Top Box (Mazooma) (Scorpion 5) (set 3)", - "sc5tboxc", "Top Box (Mazooma) (Scorpion 5) (set 4)", - "sc5tboxd", "Top Box (Mazooma) (Scorpion 5) (set 5)", - "sc5tboxe", "Top Box (Mazooma) (Scorpion 5) (set 6)", - "sc5tboxf", "Top Box (Mazooma) (Scorpion 5) (set 7)", - "sc5tboxg", "Top Box (Mazooma) (Scorpion 5) (set 8)", - "sc5tboxh", "Top Box (Mazooma) (Scorpion 5) (set 9)", - "sc5tboxi", "Top Box (Mazooma) (Scorpion 5) (set 10)", - "sc5tboxj", "Top Box (Mazooma) (Scorpion 5) (set 11)", - "sc5tboxk", "Top Box (Mazooma) (Scorpion 5) (set 12)", - "sc5tboxl", "Top Box (Mazooma) (Scorpion 5) (set 13)", - "sc5tboxm", "Top Box (Mazooma) (Scorpion 5) (set 14)", - "sc5tboxn", "Top Box (Mazooma) (Scorpion 5) (set 15)", - "sc5tboxo", "Top Box (Mazooma) (Scorpion 5) (set 16)", - "sc5tboxp", "Top Box (Mazooma) (Scorpion 5) (set 17)", - "sc5tboxq", "Top Box (Mazooma) (Scorpion 5) (set 18)", - "sc5tpsht", "Top Of The Shots (Mazooma) (Scorpion 5) (set 1)", - "sc5tpshta", "Top Of The Shots (Mazooma) (Scorpion 5) (set 2)", - "sc5tpshtb", "Top Of The Shots (Mazooma) (Scorpion 5) (set 3)", - "sc5tpshtc", "Top Of The Shots (Mazooma) (Scorpion 5) (set 4)", - "sc5tpshtd", "Top Of The Shots (Mazooma) (Scorpion 5) (set 5)", - "sc5trail", "Trailblazer (Mazooma) (Scorpion 5) (set 1)", - "sc5traila", "Trailblazer (Mazooma) (Scorpion 5) (set 2)", - "sc5tsmp", "Trick Shot Multi Player (Bellfruit) (Scorpion 5) (set 1)", - "sc5tsmpa", "Trick Shot Multi Player (Bellfruit) (Scorpion 5) (set 2)", - "sc5ttpie", "Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 1)", - "sc5ttpiea", "Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 2)", - "sc5ttpieb", "Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 3)", - "sc5ttpiec", "Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 4)", - "sc5ttpied", "Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 5)", - "sc5ttpiee", "Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 6)", - "sc5ttpief", "Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 7)", - "sc5ttpieg", "Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 8)", - "sc5ttpieh", "Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 9)", - "sc5ttpiei", "Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 10)", - "sc5typ", "Take Your Pick (Bellfruit) (Scorpion 5) (set 1)", - "sc5typa", "Take Your Pick (Bellfruit) (Scorpion 5) (set 2)", - "sc5typb", "Take Your Pick (Bellfruit) (Scorpion 5) (set 3)", - "sc5typc", "Take Your Pick (Bellfruit) (Scorpion 5) (set 4)", - "sc5vamp", "Vampire Payer (Qps) (Scorpion 5) (set 1)", - "sc5vampa", "Vampire Payer (Qps) (Scorpion 5) (set 2)", - "sc5viper", "Viper Active (Bellfruit) (Scorpion 5) (set 1)", - "sc5vipera", "Viper Active (Bellfruit) (Scorpion 5) (set 2)", - "sc5vivam", "Viva Mexico (Bellfruit) (Scorpion 5) (set 1)", - "sc5vivama", "Viva Mexico (Bellfruit) (Scorpion 5) (set 2)", - "sc5viz", "Viz (Qps) (Scorpion 5) (set 1)", - "sc5viza", "Viz (Qps) (Scorpion 5) (set 2)", - "sc5vizb", "Viz (Qps) (Scorpion 5) (set 3)", - "sc5vizc", "Viz (Qps) (Scorpion 5) (set 4)", - "sc5wacky", "Wacky Racers (Bellfruit) (Scorpion 5) (set 1)", - "sc5wackya", "Wacky Racers (Bellfruit) (Scorpion 5) (set 2)", - "sc5wackyb", "Wacky Racers (Bellfruit) (Scorpion 5) (set 3)", - "sc5wackyc", "Wacky Racers (Bellfruit) (Scorpion 5) (set 4)", - "sc5wca", "Win Can Alley (Qps) (Scorpion 5) (set 1)", - "sc5wcaa", "Win Can Alley (Qps) (Scorpion 5) (set 2)", - "sc5wcab", "Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 1)", - "sc5wcac", "Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 1)", - "sc5wcad", "Win Can Alley (Qps) (Scorpion 5) (set 3)", - "sc5wcae", "Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 2)", - "sc5wcaf", "Win Can Alley (Qps) (Scorpion 5) (set 4)", - "sc5wcag", "Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 2)", - "sc5wcah", "Win Can Alley (Qps) (Scorpion 5) (set 5)", - "sc5wcai", "Win Can Alley (Qps) (Scorpion 5) (set 6)", - "sc5wcaj", "Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 3)", - "sc5wcak", "Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 3)", - "sc5wcal", "Win Can Alley (Qps) (Scorpion 5) (set 7)", - "sc5wcam", "Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 4)", - "sc5wcan", "Win Can Alley (Qps) (Scorpion 5) (set 8)", - "sc5wcao", "Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 4)", - "sc5wild", "Wild Reels (Mazooma) (Scorpion 5) (set 1)", - "sc5wilda", "Wild Reels (Mazooma) (Scorpion 5) (set 2)", - "sc5wldjk", "Wild Jackpots (Mazooma) (Scorpion 5) (set 1)", - "sc5wldjka", "Wild Jackpots (Mazooma) (Scorpion 5) (set 2)", - "sc5wok", "Wok n' Roll (Bellfruit) (Scorpion 5) (set 1)", - "sc5woka", "Wok n' Roll (Bellfruit) (Scorpion 5) (set 2)", - "sc5wotw", "War Of The Wads (Mazooma) (Scorpion 5) (set 1)", - "sc5wotwa", "War Of The Wads (Mazooma) (Scorpion 5) (set 2)", - "sc_14", "Safe Cracker (1.4)", - "sc_17", "Safe Cracker (1.7)", - "sc_17n", "Safe Cracker (1.7N)", - "sc_18", "Safe Cracker (1.8)", - "sc_18n", "Safe Cracker (1.8N)", - "sc_18s2", "Safe Cracker (1.8 alternate sound)", - "scandal", "Scandal Mahjong (Japan 890213)", - "scandalm", "Scandal Mahjong [BET] (Japan 890217)", - "scessjoe", "Success Joe (World)", - "scfinals", "Super Cup Finals (Ver 2.2O 1994/01/13)", - "scfinalso", "Super Cup Finals (Ver 2.1O 1993/11/19)", - "scg06nt", "Sega Club Golf 2006 Next Tours (Rev A) (GDX-0018A)", - "schamp", "Sonic Championship (USA)", - "schaser", "Space Chaser (set 1)", - "schasera", "Space Chaser (set 2)", - "schaserb", "Space Chaser (set 3)", - "schaserc", "Space Chaser (set 4)", - "schasercv", "Space Chaser (CV version - set 1)", - "scherrym", "Super Cherry Master", - "schery97", "Skill Cherry '97 (ver. sc3.52)", - "schery97a", "Skill Cherry '97 (ver. sc3.52c4)", - "schmeisr", "Schmeiser Robo (Japan)", - "sci", "Special Criminal Investigation (World set 1)", - "scia", "Special Criminal Investigation (World set 2)", - "scij", "Special Criminal Investigation (Japan)", - "scin", "Super Special Criminal Investigation (Negro Torino hack)", - "scion", "Scion", - "scionc", "Scion (Cinematronics)", - "sciu", "Special Criminal Investigation (US)", - "scobra", "Super Cobra", - "scobrab", "Super Cobra (bootleg)", - "scobras", "Super Cobra (Stern Electronics)", - "scobrase", "Super Cobra (Sega)", - "scontra", "Super Contra", - "scontraj", "Super Contra (Japan)", - "scorpion", "Scorpion (set 1)", - "scorpiona", "Scorpion (set 2)", - "scorpionb", "Scorpion (set 3)", - "scorpionmc", "Scorpion (Moon Cresta hardware)", - "scotrsht", "Scooter Shooter", - "scptour", "Smash Court Pro Tournament (SCP1)", - "scrabble", "Scrabble (rev. F)", - "scrabbled", "Scrabble (rev. F) (Protocol)", - "scram_tp", "Scramble (Pinball)", - "scramb2", "Scramble (bootleg)", - "scramblb", "Scramble (bootleg on Galaxian hardware)", - "scramble", "Scramble", - "scramblebb", "Scramble (bootleg?)", - "scramblebf", "Scramble (Karateko, French bootleg)", - "scrambler", "Scramble (Reben S.A. Spanish bootleg)", - "scrambles", "Scramble (Stern Electronics set 1)", - "scrambles2", "Scramble (Stern Electronics set 2)", - "scrambp", "Impacto (Billport S.A., Spanish bootleg of Scramble)", - "scrampt", "Scramble (Petaco S.A., Spanish bootleg)", - "scramrf", "Scramble (Recreativos Franco, Spanish bootleg)", - "screenp1", "Screen Play (Maygay, MV1 Video, ver. 1.9, set 1)", - "screenp1a", "Screen Play (Maygay, MV1 Video, ver. 1.9, set 2)", - "screenp2", "Screen Play (Maygay, MV1 Video, ver. 1.9, Isle of Man, set 1)", - "screenp2a", "Screen Play (Maygay, MV1 Video, ver. 1.9, Isle of Man, set 2)", - "screenp3", "Screen Play (Maygay, MV1 Video, SA5-082)", - "screenp3a", "Screen Play (Maygay, MV1 Video, SA5-083)", - "screenp4", "Screen Play (Maygay, MV1 Video, ver. ?.?)", - "screenpl", "Screen Play (Maygay, MV1 Video, ver. 4.0)", - "scregg", "Scrambled Egg", - "screwloo", "Screw Loose (prototype)", - "scross", "Stadium Cross (World)", - "scrossu", "Stadium Cross (US)", - "scrpn_l1", "Scorpion (L-1)", - "scrpn_t1", "Scorpion (T-1)", - "scud", "Scud Race Twin (Australia)", - "scuda", "Scud Race Twin (Export)", - "scudhamm", "Scud Hammer", - "scudj", "Scud Race Deluxe (Japan)", - "scudplus", "Scud Race Plus (Revision A)", - "scudplusa", "Scud Race Plus", - "sddz", "Super Dou Di Zhu", - "sderby", "Super Derby (v.07.03)", - "sderbya", "Super Derby (v.10.04)", - "sdfight", "SD Fighters (Korea)", - "sdgndmps", "SD Gundam Psycho Salamander no Kyoui", - "sdi", "SDI - Strategic Defense Initiative (Japan, old, System 16A, FD1089B 317-0027)", - "sdib", "SDI - Strategic Defense Initiative (System 16B, FD1089A 317-0028)", - "sdibl", "SDI - Strategic Defense Initiative (bootleg)", - "sdmg2", "Mahjong Super Da Man Guan II (China, V754C)", - "sdodgeb", "Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu", - "sdtennis", "Super Doubles Tennis", - "sdungeon", "Space Dungeon", - "sdwx", "Sheng Dan Wu Xian", - "seabass", "Sea Bass Fishing (JUET 971110 V0.001)", - "seabattl", "Sea Battle (set 1)", - "seabattla", "Sea Battle (set 2)", - "searchar", "SAR - Search And Rescue (World)", - "searcharj", "SAR - Search And Rescue (Japan)", - "searcharu", "SAR - Search And Rescue (US)", - "searchey", "Search Eye", - "searchp2", "Search Eye Plus V2.0", - "searthie", "Super Earth Invasion (set 3)", - "searthin", "Super Earth Invasion (set 1)", - "searthina", "Super Earth Invasion (set 2)", - "seawitch", "Seawitch", - "seawld", "Sea World (Version 1.6E Dual)", - "seawldd1", "Sea World (Version 1.6R CGA)", - "seawolf", "Sea Wolf (set 1)", - "seawolf2", "Sea Wolf II", - "seawolfo", "Sea Wolf (set 2)", - "secolove", "Second Love (Japan 861201)", - "secondch", "Second Chance", - "secretab", "Secret Agent (bootleg)", - "secretag", "Secret Agent (World)", - "sectionz", "Section Z (set 1)", - "sectionza", "Section Z (set 2)", - "sectrzon", "Sector Zone", - "segajw", "Golden Poker Series "Joker's Wild" (Rev. B)", - "seganinj", "Sega Ninja (315-5102)", - "seganinju", "Sega Ninja (not encrypted)", - "segawski", "Sega Water Ski (Japan, Revision A)", - "seicross", "Seicross", - "seiha", "Seiha (Japan 870725)", - "seiham", "Seiha [BET] (Japan 870723)", - "selfeena", "Sel Feena", - "seljan2", "Return Of Sel Jan II (Japan, NM557)", - "semibase", "MuHanSeungBu (SemiCom Baseball) (Korea)", - "sengekis", "Sengeki Striker (Asia)", - "sengekisj", "Sengeki Striker (Japan)", - "sengokmj", "Sengoku Mahjong [BET] (Japan)", - "sengoku", "Sengoku / Sengoku Denshou (NGM-017)(NGH-017)", - "sengoku2", "Sengoku 2 / Sengoku Denshou 2", - "sengoku3", "Sengoku 3 / Sengoku Densho 2001", - "sengokuh", "Sengoku / Sengoku Denshou (NGH-017)(US)", - "senjyo", "Senjyo", - "senknow", "Sen-Know (Japan)", - "senko", "Senko No Ronde (Rev A) (GDL-0030A)", - "senkoo", "Senko No Ronde (GDL-0030)", - "senkosp", "Senko No Ronde Special (GDL-0038)", - "senkyu", "Senkyu (Japan set 1)", - "senkyua", "Senkyu (Japan set 2)", - "sentetst", "Sente Diagnostic Cartridge", - "setaroul", "Visco Roulette", - "sexappl", "Sex Appeal (Version 6.02)", - "sextriv", "Sex Triv", - "sextriv1", "Sexual Trivia (Version 1.02SB, set 1)", - "sextriv2", "Sexual Trivia (Version 1.02SB, set 2)", - "sexyboom", "Sexy Boom", - "sexygal", "Sexy Gal (Japan 850501 SXG 1-00)", - "sexyparo", "Sexy Parodius (ver JAA)", - "sexyparoa", "Sexy Parodius (ver AAA)", - "sf", "Street Fighter (World, Analog buttons)", - "sf2", "Street Fighter II: The World Warrior (World 910522)", - "sf2049", "San Francisco Rush 2049", - "sf2049se", "San Francisco Rush 2049: Special Edition", - "sf2049te", "San Francisco Rush 2049: Tournament Edition", - "sf2acc", "Street Fighter II': Champion Edition (Accelerator!, bootleg, set 1)", - "sf2acca", "Street Fighter II': Champion Edition (Accelerator!, bootleg, set 2)", - "sf2accp2", "Street Fighter II': Champion Edition (Accelerator Pt.II, bootleg)", - "sf2amf", "Street Fighter II': Champion Edition (Alpha Magic-F, bootleg)", - "sf2amf2", "Street Fighter II': Champion Edition (L735 Test Rom, bootleg)", - "sf2bhh", "Street Fighter II': Champion Edition (Hung Hsi, bootleg)", - "sf2ce", "Street Fighter II': Champion Edition (World 920513)", - "sf2ceblp", "Street Fighter II': Champion Edition (protected bootleg on non-dash board)", - "sf2ceea", "Street Fighter II': Champion Edition (World 920313)", - "sf2ceja", "Street Fighter II': Champion Edition (Japan 920322)", - "sf2cejb", "Street Fighter II': Champion Edition (Japan 920513)", - "sf2cejc", "Street Fighter II': Champion Edition (Japan 920803)", - "sf2ceua", "Street Fighter II': Champion Edition (USA 920313)", - "sf2ceub", "Street Fighter II': Champion Edition (USA 920513)", - "sf2ceuc", "Street Fighter II': Champion Edition (USA 920803)", - "sf2dkot2", "Street Fighter II': Champion Edition (Double K.O. Turbo II, bootleg)", - "sf2dongb", "Street Fighter II': Champion Edition (Dongfang Bubai protection, bootleg)", - "sf2eb", "Street Fighter II: The World Warrior (World 910214)", - "sf2ebbl", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 1)", - "sf2ed", "Street Fighter II: The World Warrior (World 910318)", - "sf2ee", "Street Fighter II: The World Warrior (World 910228)", - "sf2hf", "Street Fighter II': Hyper Fighting (World 921209)", - "sf2hfj", "Street Fighter II' Turbo: Hyper Fighting (Japan 921209)", - "sf2hfu", "Street Fighter II': Hyper Fighting (USA 921209)", - "sf2j", "Street Fighter II: The World Warrior (Japan 911210)", - "sf2ja", "Street Fighter II: The World Warrior (Japan 910214)", - "sf2jc", "Street Fighter II: The World Warrior (Japan 910306)", - "sf2jf", "Street Fighter II: The World Warrior (Japan 910411)", - "sf2jh", "Street Fighter II: The World Warrior (Japan 910522)", - "sf2jl", "Street Fighter II: The World Warrior (Japan 920312)", - "sf2koryu", "Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg)", - "sf2m1", "Street Fighter II': Champion Edition (M1, bootleg)", - "sf2m2", "Street Fighter II': Champion Edition (M2, bootleg)", - "sf2m3", "Street Fighter II': Champion Edition (M3, bootleg)", - "sf2m4", "Street Fighter II': Champion Edition (M4, bootleg)", - "sf2m5", "Street Fighter II': Champion Edition (M5, bootleg)", - "sf2m6", "Street Fighter II': Champion Edition (M6, bootleg)", - "sf2m7", "Street Fighter II': Champion Edition (M7, bootleg)", - "sf2m8", "Street Fighter II': Champion Edition (M8, bootleg)", - "sf2mdt", "Street Fighter II': Magic Delta Turbo (bootleg, set 1)", - "sf2mdta", "Street Fighter II': Magic Delta Turbo (bootleg, set 2)", - "sf2mdtb", "Street Fighter II': Magic Delta Turbo (bootleg, set 3)", - "sf2qp1", "Street Fighter II: The World Warrior (Quicken Pt-I, bootleg)", - "sf2rb", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 1)", - "sf2rb2", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 2)", - "sf2rb3", "Street Fighter II': Champion Edition (Rainbow, bootleg, set 3)", - "sf2red", "Street Fighter II': Champion Edition (Red Wave, bootleg)", - "sf2rk", "Street Fighter II: The World Warrior (RK, bootleg)", - "sf2stt", "Street Fighter II: The World Warrior (TAB Austria, bootleg, set 2)", - "sf2thndr", "Street Fighter II: The World Warrior (Thunder Edition, bootleg)", - "sf2ua", "Street Fighter II: The World Warrior (USA 910206)", - "sf2ub", "Street Fighter II: The World Warrior (USA 910214)", - "sf2uc", "Street Fighter II: The World Warrior (USA 910306)", - "sf2ud", "Street Fighter II: The World Warrior (USA 910318)", - "sf2ue", "Street Fighter II: The World Warrior (USA 910228)", - "sf2uf", "Street Fighter II: The World Warrior (USA 910411)", - "sf2ug", "Street Fighter II: The World Warrior (USA 910522, Rev. G)", - "sf2ui", "Street Fighter II: The World Warrior (USA 910522, Rev. I)", - "sf2uk", "Street Fighter II: The World Warrior (USA 911101)", - "sf2v004", "Street Fighter II': Champion Edition (V004, bootleg)", - "sf2yyc", "Street Fighter II': Champion Edition (YYC, bootleg)", - "sf_l1", "Slugfest (L-1)", - "sfa", "Street Fighter Alpha: Warriors' Dreams (Euro 950727)", - "sfa2", "Street Fighter Alpha 2 (Euro 960229)", - "sfa2u", "Street Fighter Alpha 2 (USA 960430)", - "sfa2ur1", "Street Fighter Alpha 2 (USA 960306)", - "sfa3", "Street Fighter Alpha 3 (Euro 980904)", - "sfa3b", "Street Fighter Alpha 3 (Brazil 980629)", - "sfa3h", "Street Fighter Alpha 3 (Hispanic 980904)", - "sfa3hr1", "Street Fighter Alpha 3 (Hispanic 980629)", - "sfa3u", "Street Fighter Alpha 3 (USA 980904)", - "sfa3ud", "Street Fighter Alpha 3 (USA 980904 Phoenix Edition) (bootleg)", - "sfa3ur1", "Street Fighter Alpha 3 (USA 980629)", - "sfad", "Street Fighter Alpha: Warriors' Dreams (Euro 950727 Phoenix Edition) (bootleg)", - "sfar1", "Street Fighter Alpha: Warriors' Dreams (Euro 950718)", - "sfar2", "Street Fighter Alpha: Warriors' Dreams (Euro 950627)", - "sfar3", "Street Fighter Alpha: Warriors' Dreams (Euro 950605)", - "sfau", "Street Fighter Alpha: Warriors' Dreams (USA 950627)", - "sfbonus", "Skill Fruit Bonus (Version 1.9R, set 1)", - "sfbonusd1", "Skill Fruit Bonus (Version 1.9R, set 2)", - "sfbonuso", "Skill Fruit Bonus (Version 1.7)", - "sfbonuso2", "Skill Fruit Bonus (Version 1.6)", - "sfbonusv1", "Skill Fruit Bonus (Version 1.9R Dual)", - "sfcbox", "Super Famicom Box BIOS", - "sfchamp", "Super Football Champ (Ver 2.5O)", - "sfchampj", "Super Football Champ (Ver 2.4J)", - "sfchampo", "Super Football Champ (Ver 2.4O)", - "sfchampu", "Super Football Champ (Ver 2.4A)", - "sfex", "Street Fighter EX (Euro 961219)", - "sfex2", "Street Fighter EX2 (USA 980526)", - "sfex2a", "Street Fighter EX2 (Asia 980312)", - "sfex2h", "Street Fighter EX2 (Hispanic 980312)", - "sfex2j", "Street Fighter EX2 (Japan 980312)", - "sfex2p", "Street Fighter EX2 Plus (USA 990611)", - "sfex2pa", "Street Fighter EX2 Plus (Asia 990611)", - "sfex2ph", "Street Fighter EX2 Plus (Hispanic 990611)", - "sfex2pj", "Street Fighter EX2 Plus (Japan 990611)", - "sfexa", "Street Fighter EX (Asia 961219)", - "sfexj", "Street Fighter EX (Japan 961130)", - "sfexp", "Street Fighter EX Plus (USA 970407)", - "sfexpj", "Street Fighter EX Plus (Japan 970407)", - "sfexpj1", "Street Fighter EX Plus (Japan 970311)", - "sfexpu1", "Street Fighter EX Plus (USA 970311)", - "sfexu", "Street Fighter EX (USA 961219)", - "sfight", "Sonic the Fighters (Japan)", - "sfight2", "Street Fighter II", - "sfight2a", "Street Fighter II (rev.1)", - "sfight2b", "Street Fighter II (rev.2)", - "sfiii", "Street Fighter III: New Generation (Euro 970204)", - "sfiii2", "Street Fighter III 2nd Impact: Giant Attack (USA 970930)", - "sfiii2j", "Street Fighter III 2nd Impact: Giant Attack (Japan 970930)", - "sfiii2n", "Street Fighter III 2nd Impact: Giant Attack (Asia 970930, NO CD)", - "sfiii3", "Street Fighter III 3rd Strike: Fight for the Future (Euro 990608)", - "sfiii3n", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990608, NO CD)", - "sfiii3nr1", "Street Fighter III 3rd Strike: Fight for the Future (Japan 990512, NO CD)", - "sfiii3r1", "Street Fighter III 3rd Strike: Fight for the Future (Euro 990512)", - "sfiii3u", "Street Fighter III 3rd Strike: Fight for the Future (USA 990608)", - "sfiii3ur1", "Street Fighter III 3rd Strike: Fight for the Future (USA 990512)", - "sfiiia", "Street Fighter III: New Generation (Asia 970204)", - "sfiiih", "Street Fighter III: New Generation (Hispanic 970204)", - "sfiiij", "Street Fighter III: New Generation (Japan 970204)", - "sfiiin", "Street Fighter III: New Generation (Asia 970204, NO CD, bios set 1)", - "sfiiina", "Street Fighter III: New Generation (Asia 970204, NO CD, bios set 2)", - "sfiiiu", "Street Fighter III: New Generation (USA 970204)", - "sfish2", "Sport Fishing 2 (UET 951106 V1.10e)", - "sfish2j", "Sport Fishing 2 (J 951201 V1.100)", - "sfj", "Street Fighter (Japan) (protected)", - "sfkick", "Super Free Kick (set 1)", - "sfkicka", "Super Free Kick (set 2)", - "sflush", "Straight Flush", - "sfootbal", "Street Football (11/12/86)", - "sformula", "Super Formula (Japan)", - "sfp", "Street Fighter (prototype)", - "sfposeid", "Sea Fighter Poseidon", - "sfruitb", "Super Fruit Bonus (Version 2.5E Dual)", - "sfruitbb1", "Super Fruit Bonus (Version 2.5R, set 1)", - "sfruitbb2", "Super Fruit Bonus (Version 2.0LT, set 1)", - "sfruitbbh", "Super Fruit Bonus (Version 2.2B, set 1)", - "sfruitbd1", "Super Fruit Bonus (Version 2.5R, set 2)", - "sfruitbd2", "Super Fruit Bonus (Version 2.0LT, set 2)", - "sfruitbdh", "Super Fruit Bonus (Version 2.2B, set 2)", - "sfruitbh", "Super Fruit Bonus (Version 2.2EB Dual)", - "sfruitbo", "Super Fruit Bonus (Version 2.0)", - "sfruitbo2", "Super Fruit Bonus (Version 1.80XT)", - "sfruitboh", "Super Fruit Bonus (Version 2.0B)", - "sfruitbv1", "Super Fruit Bonus (Version 2.5R Dual)", - "sfruitbv2", "Super Fruit Bonus (Version 2.0LT Dual)", - "sfruitbvh", "Super Fruit Bonus (Version 2.2B Dual)", - "sfrush", "San Francisco Rush", - "sfrushrk", "San Francisco Rush: The Rock", - "sftm", "Street Fighter: The Movie (v1.12)", - "sftm110", "Street Fighter: The Movie (v1.10)", - "sftm111", "Street Fighter: The Movie (v1.11)", - "sftmj", "Street Fighter: The Movie (v1.12N, Japan)", - "sfu", "Street Fighter (US, set 1)", - "sfua", "Street Fighter (US, set 2) (protected)", - "sfx", "SF-X", - "sfz2a", "Street Fighter Zero 2 (Asia 960227)", - "sfz2ad", "Street Fighter Zero 2 (Asia 960227 Phoenix Edition) (bootleg)", - "sfz2al", "Street Fighter Zero 2 Alpha (Asia 960826)", - "sfz2alb", "Street Fighter Zero 2 Alpha (Brazil 960813)", - "sfz2ald", "Street Fighter Zero 2 Alpha (Asia 960826 Phoenix Edition) (bootleg)", - "sfz2alh", "Street Fighter Zero 2 Alpha (Hispanic 960813)", - "sfz2alj", "Street Fighter Zero 2 Alpha (Japan 960805)", - "sfz2b", "Street Fighter Zero 2 (Brazil 960531)", - "sfz2br1", "Street Fighter Zero 2 (Brazil 960304)", - "sfz2h", "Street Fighter Zero 2 (Hispanic 960304)", - "sfz2j", "Street Fighter Zero 2 (Japan 960430)", - "sfz2jd", "Street Fighter Zero 2 (Japan 960227 Phoenix Edition) (bootleg)", - "sfz2jr1", "Street Fighter Zero 2 (Japan 960227)", - "sfz2n", "Street Fighter Zero 2 (Oceania 960229)", - "sfz3a", "Street Fighter Zero 3 (Asia 980904)", - "sfz3ar1", "Street Fighter Zero 3 (Asia 980701)", - "sfz3j", "Street Fighter Zero 3 (Japan 980904)", - "sfz3jr1", "Street Fighter Zero 3 (Japan 980727)", - "sfz3jr2", "Street Fighter Zero 3 (Japan 980629)", - "sfz3jr2d", "Street Fighter Zero 3 (Japan 980629 Phoenix Edition) (bootleg)", - "sfz3ugd", "Street Fighter Zero 3 Upper (GDL-0002)", - "sfza", "Street Fighter Zero (Asia 950627)", - "sfzar1", "Street Fighter Zero (Asia 950605)", - "sfzb", "Street Fighter Zero (Brazil 951109)", - "sfzbr1", "Street Fighter Zero (Brazil 950727)", - "sfzh", "Street Fighter Zero (Hispanic 950718)", - "sfzhr1", "Street Fighter Zero (Hispanic 950627)", - "sfzj", "Street Fighter Zero (Japan 950727)", - "sfzjr1", "Street Fighter Zero (Japan 950627)", - "sfzjr2", "Street Fighter Zero (Japan 950605)", - "sgemf", "Super Gem Fighter Mini Mix (USA 970904)", - "sgemfa", "Super Gem Fighter: Mini Mix (Asia 970904)", - "sgemfd", "Super Gem Fighter Mini Mix (USA 970904 Phoenix Edition) (bootleg)", - "sgemfh", "Super Gem Fighter: Mini Mix (Hispanic 970904)", - "sgladiat", "Gladiator 1984", - "sgmast", "Super Masters Golf (World?, Floppy Based, FD1094 317-0058-05d?)", - "sgmastc", "Jumbo Ozaki Super Masters Golf (World, Floppy Based, FD1094 317-0058-05c)", - "sgmastj", "Jumbo Ozaki Super Masters Golf (Japan, Floppy Based, FD1094 317-0058-05b)", - "sgmt1", "Super Game Mega Type 1", - "sgnascar", "NASCAR Racing", - "sgsafari", "Super Gran Safari (ver 3.11)", - "sgt24h", "Super GT 24h", - "sgtetris", "Sega Tetris", - "sgunner", "Steel Gunner (Rev B)", - "sgunner2", "Steel Gunner 2 (US)", - "sgunner2j", "Steel Gunner 2 (Japan, Rev A)", - "sgunnerj", "Steel Gunner (Japan)", - "sgyxz", "Warriors of Fate ('sgyxz' bootleg)", - "shabdama", "LD Mahjong #4 Shabon-Dama", - "shackled", "Shackled (US)", - "shadfgtr", "Shadow Fighters", - "shadfrce", "Shadow Force (US Version 2)", - "shadfrcej", "Shadow Force (Japan Version 3)", - "shadfrcejv2", "Shadow Force (Japan Version 2)", - "shadowld", "Shadowland (YD3)", - "shadoww", "Shadow Warriors (World, set 1)", - "shadowwa", "Shadow Warriors (World, set 2)", - "shaktamb", "Shakatto Tambourine Cho Powerup Chu 2K1 AUT (GDS-0016)", - "shaktmsp", "Shakatto Tambourine 2K1 SPR (GDS-0013)", - "shangha2", "Shanghai II (Japan, set 1)", - "shangha2a", "Shanghai II (Japan, set 2)", - "shangha3", "Shanghai III (World)", - "shangha3j", "Shanghai III (Japan)", - "shangha3u", "Shanghai III (US)", - "shanghai", "Shanghai (World)", - "shanghaij", "Shanghai (Japan)", - "shanghss", "Shanghai Shoryu Sairin (V2.03J)", - "shangkid", "Shanghai Kid", - "shangon", "Super Hang-On (sitdown/upright, unprotected)", - "shangon1", "Super Hang-On (mini ride-on?, FD1089B 317-0034)", - "shangon2", "Super Hang-On (mini ride-on, Rev A, FD1089B 317-0034)", - "shangon3", "Super Hang-On (sitdown/upright, FD1089B 317-0034)", - "shangonle", "Limited Edition Hang-On", - "shangonrb", "Super Hang-On (bootleg)", - "shangonro", "Super Hang-On (ride-on, Japan, FD1094 317-0038)", - "shangril", "Dengen Tenshi Taisen Janshi Shangri-la (JPN, USA, EXP, KOR, AUS)", - "shangtou", "Shanghai Sangokuhai Tougi (Ver 2.01J)", - "shanhigw", "Shanghai - The Great Wall / Shanghai Triple Threat (JUE 950623 V1.005)", - "shaolinb", "Shao-lin's Road (set 2)", - "shaolins", "Shao-lin's Road (set 1)", - "shaqattq", "Shaq Attaq (rev.5)", - "shaqattq2", "Shaq Attaq (rev.2)", - "shark", "Shark", - "sharkatt", "Shark Attack", - "sharkjaw", "Shark JAWS [TTL]", - "sharkpy", "Shark Party (Italy, v1.3)", - "sharkpya", "Shark Party (Italy, v1.6)", - "sharkpye", "Shark Party (English, Alpha license)", - "sharkt", "Shark (Taito)", - "sharrier", "Space Harrier (Rev A, 8751 315-5163A)", - "sharrier1", "Space Harrier (8751 315-5163)", - "shdancbl", "Shadow Dancer (bootleg)", - "shdancer", "Shadow Dancer (World)", - "shdancer1", "Shadow Dancer (US)", - "shdancerj", "Shadow Dancer (Japan)", - "sheriff", "Sheriff", - "shfin_l1", "Shuffle Inn (Shuffle) (L-1)", - "shienryu", "Shienryu (JUET 961226 V1.000)", - "shikgam2", "Shikigami No Shiro II / The Castle of Shikigami II (GDL-0021)", - "shikiga3", "Shikigami no Shiro III (v2.06J)", - "shikigam", "Shikigami no Shiro (V2.03J)", - "shimpact", "Super High Impact (rev LA1 09/30/91)", - "shimpactp4", "Super High Impact (prototype, rev 4.0 09/10/91)", - "shimpactp5", "Super High Impact (prototype, rev 5.0 09/15/91)", - "shimpactp6", "Super High Impact (prototype, rev 6.0 09/23/91)", - "shinfz", "Shinobi / FZ-2006 (Korean System 16 bootleg) (ISG Selection Master Type 2006)", - "shinobi", "Shinobi (set 6, System 16A, unprotected)", - "shinobi1", "Shinobi (set 1, System 16A, FD1094 317-0050)", - "shinobi2", "Shinobi (set 2, System 16B, FD1094 317-0049)", - "shinobi3", "Shinobi (set 3, System 16B, MC-8123B 317-0054)", - "shinobi4", "Shinobi (set 4, System 16B, MC-8123B 317-0054)", - "shinobi5", "Shinobi (set 5, System 16B, unprotected)", - "shinoblb", "Shinobi (Beta bootleg)", - "shinobld", "Shinobi (Datsu bootleg)", - "shinobls", "Shinobi (Star bootleg, System 16A)", - "shippumd", "Shippu Mahou Daisakusen (Japan)", - "shiryu2", "Strider Hiryu 2 (Japan 991213)", - "shisen", "Shisensho - Joshiryo-Hen (Japan)", - "shisen2", "Shisensho II", - "shngmtkb", "Shanghai Matekibuyuu", - "shock", "Shock", - "shocking", "Shocking", - "shockingk", "Shocking (Korea)", - "shocktr2", "Shock Troopers - 2nd Squad", - "shocktro", "Shock Troopers (set 1)", - "shocktroa", "Shock Troopers (set 2)", - "shogwarr", "Shogun Warriors (World)", - "shogwarru", "Shogun Warriors (US)", - "shollow", "Satan's Hollow (set 1)", - "shollow2", "Satan's Hollow (set 2)", - "shootbul", "Shoot the Bull", - "shootgal", "Shooting Gallery", - "shootopl", "Shootout Pool", - "shootout", "Shoot Out (US)", - "shootoutb", "Shoot Out (Korean Bootleg)", - "shootoutj", "Shoot Out (Japan)", - "shootpl", "Shootout Pool (JPN, USA, KOR, AUS) / Shootout Pool Prize (EXP)", - "shootplm", "Shootout Pool Medal", - "shougi", "Shougi", - "shougi2", "Shougi 2", - "showdown", "Showdown (version 5.0)", - "showhanc", "Wang Pai Dui Jue (China)", - "showhand", "Show Hand (Italy)", - "showqn", "Show Queen (Konami Endeavour)", - "shpeng", "Sea Hunter Penguin", - "shpinxii", "Sphinx II (Russia) (Atronic)", - "shrike", "Shrike Avenger (prototype)", - "shrknew", "Sharkey's Shootout (ARM7 Sound Board)", - "shrky_207", "Sharkey's Shootout (2.07)", - "shrkyfr", "Sharkey's Shootout (2.11 France)", - "shrkyfr_207", "Sharkey's Shootout (2.07 France)", - "shrkygr", "Sharkey's Shootout (2.11 Germany)", - "shrkygr_207", "Sharkey's Shootout (2.07 Germany)", - "shrkyit", "Sharkey's Shootout (2.11 Italy)", - "shrkyit_207", "Sharkey's Shootout (2.07 Italy)", - "shrkysht", "Sharkey's Shootout (2.11)", - "shtngmst", "Shooting Master (8751 315-5159)", - "shtngmste", "Shooting Master (EVG, 8751 315-5159a)", - "shtrider", "Shot Rider", - "shtridera", "Shot Rider (Sigma license)", - "shtstar", "Shooting Star", - "shtzone", "Shooting Zone System BIOS", - "shuffle", "Shuffleboard", - "shufshot", "Shuffleshot (v1.40)", - "shufshot137", "Shuffleshot (v1.37)", - "shufshot139", "Shuffleshot (v1.39)", - "shuttlei", "Shuttle Invader", - "shuuz", "Shuuz (version 8.0)", - "shuuz2", "Shuuz (version 7.1)", - "sia2650", "Super Invader Attack (bootleg of The Invaders)", - "sianniv", "Space Invaders Anniversary (V2.02J)", - "sichuan2", "Sichuan II (hack, set 1)", - "sichuan2a", "Sichuan II (hack, set 2)", - "sicv", "Space Invaders (CV Version)", - "sidampkr", "unknown Sidam Poker", - "sidearms", "Side Arms - Hyper Dyne (World)", - "sidearmsj", "Side Arms - Hyper Dyne (Japan)", - "sidearmsr", "Side Arms - Hyper Dyne (US)", - "sidebs", "Side by Side (Ver 2.7 J)", - "sidebs2", "Side by Side 2 (Ver 2.6 A)", - "sidebs2j", "Side by Side 2 Evoluzione (Ver 2.4 J)", - "sidebsja", "Side by Side (Ver 2.5 J)", - "sidepckt", "Side Pocket (World)", - "sidepcktb", "Side Pocket (bootleg)", - "sidepcktj", "Side Pocket (Japan)", - "sidetrac", "Side Trak", - "sidewndr", "Sidewinder", - "sigma2k", "Sigma Poker 2000", - "sigmapkr", "Sigma Poker", - "silentd", "Silent Dragon (World)", - "silentdj", "Silent Dragon (Japan)", - "silentdu", "Silent Dragon (US)", - "silkroad", "The Legend of Silkroad", - "silkroada", "The Legend of Silkroad (larger ROMs)", - "silkworm", "Silk Worm (World)", - "silkwormj", "Silk Worm (Japan)", - "silverga", "Silver Game", - "silvland", "Silver Land", - "silvmil", "Silver Millennium", - "silvslug", "Silver Slugger", - "simp_a20", "The Simpsons (2.0)", - "simp_a27", "The Simpsons (2.7)", - "simpbowl", "Simpsons Bowling (GQ829 UAA)", - "simpnew", "Simpsons Pinball Party, The (ARM7 Sound Board)", - "simpprtf", "Simpsons Pinball Party, The (5.00 France)", - "simpprtf_204", "Simpsons Pinball Party, The (2.04 France)", - "simpprtf_400", "Simpsons Pinball Party, The (4.00 France)", - "simpprtg", "Simpsons Pinball Party, The (5.00 Germany)", - "simpprtg_400", "Simpsons Pinball Party, The (4.00 Germany)", - "simpprti", "Simpsons Pinball Party, The (5.00 Italy)", - "simpprti_204", "Simpsons Pinball Party, The (2.04 Italy)", - "simpprti_400", "Simpsons Pinball Party, The (4.00 Italy)", - "simpprtl", "Simpsons Pinball Party, The (5.00 Spain)", - "simpprtl_204", "Simpsons Pinball Party, The (2.04 Spain)", - "simpprtl_400", "Simpsons Pinball Party, The (4.00 Spain)", - "simpprty", "Simpsons Pinball Party, The (5.00)", - "simpprty_204", "Simpsons Pinball Party, The (2.04)", - "simpprty_400", "Simpsons Pinball Party, The (4.00)", - "simpsons", "The Simpsons (4 Players World, set 1)", - "simpsons2p", "The Simpsons (2 Players World, set 1)", - "simpsons2p2", "The Simpsons (2 Players World, set 2)", - "simpsons2pa", "The Simpsons (2 Players Asia)", - "simpsons2pj", "The Simpsons (2 Players Japan)", - "simpsons4pa", "The Simpsons (4 Players World, set 2)", - "sinbad", "Sinbad", - "sinbadn", "Sinbad (Norway)", - "sindbadm", "Sindbad Mystery", - "sinistar", "Sinistar (revision 3)", - "sinistar1", "Sinistar (prototype version)", - "sinistar2", "Sinistar (revision 2)", - "sinvasn", "Space Invasion (Europe)", - "sinvasnb", "Space Invasion (bootleg)", - "sinvemag", "Super Invaders (bootleg set 2)", - "sinvzen", "Super Invaders (Zenitone-Microsec)", - "sisv", "Space Invaders (SV Version rev 4)", - "sisv1", "Space Invaders (SV Version rev 1)", - "sisv2", "Space Invaders (SV Version rev 2)", - "sisv3", "Space Invaders (SV Version rev 3)", - "sitv", "Space Invaders (TV Version rev 2)", - "sitv1", "Space Invaders (TV Version rev 1)", - "sjcd2kx3", "Super Joly 2000 - 3x", - "sjryuko", "Sukeban Jansi Ryuko (set 2, System 16B, FD1089B 317-5021)", - "sjryuko1", "Sukeban Jansi Ryuko (set 1, System 16A, FD1089B 317-5021)", - "skatebll", "Skateball", - "skatekds", "Vs. Skate Kids. (Graphic hack of Super Mario Bros.)", - "skattv", "Skat TV", - "skattva", "Skat TV (version TS3)", - "skeetsht", "Skeet Shot", - "skelagon", "Skelagon", - "skflight", "Skill Flight", - "skichamp", "Ski Champ", - "skijump", "Ski Jump", - "skill98", "Skill '98 (ver. s98-1.33)", - "skilldrp", "Skill Drop Georgia (Ver. G1.0S)", - "skimaxx", "Skimaxx", - "skingame", "The Irem Skins Game (US set 1)", - "skingame2", "The Irem Skins Game (US set 2)", - "skisuprg", "Sega Ski Super G", - "skns", "Super Kaneko Nova System BIOS", - "skullfng", "Skull Fang (World)", - "skullfngj", "Skull Fang (Japan)", - "skullxbo", "Skull & Crossbones (rev 5)", - "skullxbo1", "Skull & Crossbones (rev 1)", - "skullxbo2", "Skull & Crossbones (rev 2)", - "skullxbo3", "Skull & Crossbones (rev 3)", - "skullxbo4", "Skull & Crossbones (rev 4)", - "skyadvnt", "Sky Adventure (World)", - "skyadvntj", "Sky Adventure (Japan)", - "skyadvntu", "Sky Adventure (US)", - "skyalert", "Sky Alert", - "skyarmy", "Sky Army", - "skybase", "Sky Base", - "skybump", "Sky Bumper", - "skychut", "Sky Chuter", - "skydest", "Sky Destroyer (Japan)", - "skydiver", "Sky Diver", - "skyfox", "Sky Fox", - "skykid", "Sky Kid (new version)", - "skykidd", "Sky Kid (CUS60 version)", - "skykiddx", "Sky Kid Deluxe (set 1)", - "skykiddxo", "Sky Kid Deluxe (set 2)", - "skykido", "Sky Kid (old version)", - "skykids", "Sky Kid (Sipem)", - "skylancr", "Sky Lancer", - "skylancre", "Sky Lancer (Esco Trading Co license)", - "skylncr", "Sky Lancer (Bordun, version U450C)", - "skylove", "Sky Love", - "skyraid", "Sky Raider", - "skyraidr", "Sky Raider (Uniwars bootleg)", - "skyrobo", "Sky Robo", - "skyshark", "Sky Shark (US)", - "skyskipr", "Sky Skipper", - "skysmash", "Sky Smasher", - "skysoldr", "Sky Soldiers (US)", - "skysoldrbl", "Sky Soldiers (bootleg)", - "skytargt", "Sky Target", - "skywolf", "Sky Wolf (set 1)", - "skywolf2", "Sky Wolf (set 2)", - "skywolf3", "Sky Wolf (set 3)", - "sl2007", "Shooting Love 2007", - "slamdnk2", "Slam Dunk 2 (ver JAA)", - "slammast", "Saturday Night Slam Masters (World 930713)", - "slammastu", "Saturday Night Slam Masters (USA 930713)", - "slampic", "Saturday Night Slam Masters (bootleg with PIC16c57)", - "slapfigh", "Slap Fight (Japan set 1)", - "slapfigha", "Slap Fight (Japan set 2)", - "slapfighb1", "Slap Fight (bootleg set 1)", - "slapfighb2", "Slap Fight (bootleg set 2)", - "slapfighb3", "Slap Fight (bootleg set 3)", - "slapshot", "Slap Shot (Japan)", - "slasho", "Slashout (JPN, USA, EXP, KOR, AUS)", - "slashout", "Slashout (GDS-0004)", - "slbmania", "Silverball Mania", - "sleicpin", "Sleic Pin Ball", - "slikshot", "Slick Shot (V2.2)", - "slikshot16", "Slick Shot (V1.6)", - "slikshot17", "Slick Shot (V1.7)", - "slipstrm", "Slip Stream (Brazil 950515)", - "slipstrmh", "Slip Stream (Hispanic 950515)", - "slither", "Slither (set 1)", - "slithera", "Slither (set 2)", - "sliver", "Sliver", - "slmdunkj", "Slam Dunk (ver JAA 1993 10.8)", - "sloco93", "Super Loco 93 (Spanish, set 1)", - "sloco93a", "Super Loco 93 (Spanish, set 2)", - "slotcarn", "Slot Carnival", - "slotsnl", "Slots (Dutch, Game Card 95-750-368)", - "slqz2", "Mahjong Shuang Long Qiang Zhu 2 (VS203J)", - "slrasslt", "Solar Assault (ver UAA)", - "sltblgp1", "Slots (Belgian Cash, Game Card 95-752-008)", - "sltblgpo", "Slots (Belgian Cash, Game Card 95-750-938)", - "sltblgtk", "Slots (Belgian Token, Game Card 95-750-943)", - "slyspy", "Sly Spy (US revision 3)", - "slyspy2", "Sly Spy (US revision 2)", - "sm_ngacc", "Nudge Accumulator (Summit Coin)", - "sm_ultng", "Ultimate Nudge (Summit Coin)", - "smarinef", "Sega Marine Fishing", - "smash", "Smash (Crash bootleg)", - "smashtv", "Smash T.V. (rev 8.00)", - "smashtv3", "Smash T.V. (rev 3.01)", - "smashtv4", "Smash T.V. (rev 4.00)", - "smashtv5", "Smash T.V. (rev 5.00)", - "smashtv6", "Smash T.V. (rev 6.00)", - "smb", "Super Mario Brothers", - "smb1", "Super Mario Brothers (rev.1)", - "smb2", "Super Mario Brothers (rev.2)", - "smb3", "Super Mario Brothers (rev.3)", - "smbmush", "Super Mario Brothers Mushroom World", - "smbomb", "Super Muscle Bomber: The International Blowout (Japan 940831)", - "smbombr1", "Super Muscle Bomber: The International Blowout (Japan 940808)", - "smgolf", "Vs. Stroke & Match Golf (Men Version, set GF4-2 F)", - "smgolfb", "Vs. Stroke & Match Golf (Men Version, set GF4-2 ?)", - "smgolfj", "Vs. Stroke & Match Golf (Men Version) (Japan, set GF3 B)", - "smgp", "Super Monaco GP (World, Rev B, FD1094 317-0126a)", - "smgp5", "Super Monaco GP (World, FD1094 317-0126)", - "smgp6", "Super Monaco GP (World, Rev A, FD1094 317-0126a)", - "smgpj", "Super Monaco GP (Japan, Rev B, FD1094 317-0124a)", - "smgpja", "Super Monaco GP (Japan, Rev A, FD1094 317-0124a)", - "smgpu", "Super Monaco GP (US, Rev C, FD1094 317-0125a)", - "smgpu1", "Super Monaco GP (US, Rev B, FD1094 317-0125a)", - "smgpu2", "Super Monaco GP (US, Rev A, FD1094 317-0125a)", - "smleague", "Super Major League (U 960108 V1.000)", - "smlg99", "Super Major League '99", - "smman", "Six Million Dollar Man", - "smooncrs", "Super Moon Cresta", - "smoto16", "Super Moto (Italy, v1.6)", - "smoto20", "Super Rider (Italy, v2.0)", - "smshilo", "HI-LO Double Up Joker Poker", - "snake", "Snake Machine", - "snakepit", "Snake Pit", - "snakjack", "Snacks'n Jaxson", - "snapjack", "Snap Jack", - "snapper", "Snapper (Korea)", - "sncwgltd", "Sonic Wings Limited (Japan)", - "sngkace", "Sengoku Ace (Japan)", - "snlad", "Snake & Ladders", - "snookr10", "Snooker 10 (Ver 1.11)", - "snowboar", "Snow Board Championship (Version 2.1)", - "snowboara", "Snow Board Championship (Version 2.0)", - "snowbro2", "Snow Bros. 2 - With New Elves / Otenki Paradise", - "snowbro2b", "Snow Bros. 2 - With New Elves / Otenki Paradise (bootleg)", - "snowbro3", "Snow Brothers 3 - Magical Adventure", - "snowbros", "Snow Bros. - Nick & Tom (set 1)", - "snowbrosa", "Snow Bros. - Nick & Tom (set 2)", - "snowbrosb", "Snow Bros. - Nick & Tom (set 3)", - "snowbrosc", "Snow Bros. - Nick & Tom (set 4)", - "snowbrosd", "Snow Bros. - Nick & Tom (Dooyong license)", - "snowbrosj", "Snow Bros. - Nick & Tom (Japan)", - "snowbroswb", "Snow Bros. - Nick & Tom (The Winter Bobble hardware bootleg)", - "snspares", "Strikes n' Spares (rev.6)", - "snspares1", "Strikes n' Spares (rev.1)", - "socbrawl", "Soccer Brawl (NGM-031)", - "socbrawlh", "Soccer Brawl (NGH-031)", - "soccer", "Atari Soccer", - "soccernw", "Soccer New (Italian)", - "soccerss", "Soccer Superstars (ver EAA)", - "soccerssa", "Soccer Superstars (ver AAA)", - "soccerssj", "Soccer Superstars (ver JAC)", - "soccerssja", "Soccer Superstars (ver JAA)", - "socrking", "Soccer Kings", - "socrkingg", "Soccer Kings (German speech)", - "socrkingi", "Soccer Kings (Italian speech)", - "sogeki", "Sogeki (ver JAA)", - "sokonuke", "Sokonuke Taisen Game (Japan)", - "sokyugrt", "Soukyugurentai / Terra Diver (JUET 960821 V1.000)", - "solar_l2", "Solar Fire (L-2)", - "solarfox", "Solar Fox (upright)", - "solaride", "Solar Ride", - "solarq", "Solar Quest", - "solarwap", "Solar Wars (Sonic)", - "solarwar", "Solar-Warrior (US)", - "soldam", "Soldam", - "soldamj", "Soldam (Japan)", - "soldivid", "Sol Divide - The Sword Of Darkness", - "solfight", "Solar Fight (bootleg of Ozma Wars)", - "solfigtr", "Solitary Fighter (World)", - "solomon", "Solomon's Key (US)", - "solomonj", "Solomon no Kagi (Japan)", - "solvalou", "Solvalou (Japan)", - "sonic", "SegaSonic The Hedgehog (Japan, rev. C)", - "sonicbom", "Sonic Boom (FD1094 317-0053)", - "sonicp", "SegaSonic The Hedgehog (Japan, prototype)", - "sonicwi", "Sonic Wings (Japan)", - "sonicwi2", "Aero Fighters 2 / Sonic Wings 2", - "sonicwi3", "Aero Fighters 3 / Sonic Wings 3", - "sonofphx", "Son of Phoenix (bootleg of Repulse)", - "sonoth", "Something For Nothing (Russia)", - "sonson", "Son Son", - "sonsonj", "Son Son (Japan)", - "sonstwar", "Star Wars (Sonic)", - "sonstwr2", "Star Wars (Sonic, alternate set)", - "sopranof", "Sopranos, The (5.00 France)", - "sopranof_107", "Sopranos, The (1.07 France)", - "sopranof_300", "Sopranos, The (3.00 France)", - "sopranof_400", "Sopranos, The (4.00 France)", - "sopranog", "Sopranos, The (5.00 Germany)", - "sopranog_107", "Sopranos, The (1.07 Germany)", - "sopranog_300", "Sopranos, The (3.00 Germany)", - "sopranog_400", "Sopranos, The (4.00 Germany)", - "sopranoi", "Sopranos, The (5.00 Italy)", - "sopranoi_107", "Sopranos, The (1.07 Italy)", - "sopranoi_300", "Sopranos, The (3.00 Italy)", - "sopranoi_400", "Sopranos, The (4.00 Italy)", - "sopranol", "Sopranos, The (5.00 Spain)", - "sopranol_107", "Sopranos, The (1.07 Spain)", - "sopranol_300", "Sopranos, The (3.00 Spain)", - "sopranol_400", "Sopranos, The (4.00 Spain)", - "sopranos", "Sopranos, The (5.00)", - "sopranos_204", "Sopranos, The (2.04)", - "sopranos_300", "Sopranos, The (3.00)", - "sopranos_400", "Sopranos, The (4.00)", - "sorbit", "Super Orbit", - "sorcr_l1", "Sorcerer (L-1)", - "sorcr_l2", "Sorcerer (L-2)", - "sos", "SOS", - "sosterm", "S.O.S.", - "sothello", "Super Othello", - "sotsugyo", "Sotsugyo Shousho", - "soukobdx", "Souko Ban Deluxe (Japan, SB1)", - "soulcl2a", "Soul Calibur II (SC22 Ver. A)", - "soulcl2b", "Soul Calibur II (SC21 Ver. A)", - "soulcl2w", "Soul Calibur II (SC2? world version)", - "soulclb2", "Soul Calibur II (SC23 Ver. A)", - "soulclb3", "Soul Calibur III (SC31001-NA-A)", - "soulclb3a", "Soul Calibur III (SC31002-NA-A)", - "soulclbr", "Soul Calibur (World, SOC14/VER.C)", - "soulclbrja", "Soul Calibur (Japan, SOC11/VER.A2)", - "soulclbrjb", "Soul Calibur (Japan, SOC11/VER.B)", - "soulclbrjc", "Soul Calibur (Japan, SOC11/VER.C)", - "soulclbrub", "Soul Calibur (US, SOC13/VER.B)", - "soulclbruc", "Soul Calibur (US, SOC13/VER.C)", - "soulclbrwb", "Soul Calibur (World, SOC14/VER.B)", - "souledge", "Soul Edge Ver. II (World, SO4/VER.C)", - "souledgeaa", "Soul Edge (Asia, SO2/VER.A)", - "souledgeja", "Soul Edge (Japan, SO1/VER.A)", - "souledgeua", "Soul Edge (US, SO3/VER.A)", - "souledgeuc", "Soul Edge Ver. II (US, SO3/VER.C)", - "soulsurf", "Soul Surfer (Rev A)", - "soutenry", "Soutenryu (V2.07J)", - "sp_atw", "Around The World In Eighty Days (Crystal) (sp.ACE?)", - "sp_beau", "Beau Peep (Ace) (sp.ACE) (set 1)", - "sp_beau2", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 1)", - "sp_beau2a", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 2)", - "sp_beau2b", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 3)", - "sp_beau2c", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 4)", - "sp_beau2d", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 5)", - "sp_beau2e", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 6)", - "sp_beau2f", "Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 7)", - "sp_beaua", "Beau Peep (Ace) (sp.ACE) (set 2)", - "sp_beaub", "Beau Peep (Ace) (sp.ACE) (set 3)", - "sp_beauc", "Beau Peep (Ace) (sp.ACE) (set 4)", - "sp_beaud", "Beau Peep (Ace) (sp.ACE) (set 5)", - "sp_beaue", "Beau Peep (Ace) (sp.ACE) (set 6)", - "sp_beauf", "Beau Peep (Ace) (sp.ACE) (set 7)", - "sp_beaug", "Beau Peep (Ace) (sp.ACE) (set 8)", - "sp_beauh", "Beau Peep (Ace) (sp.ACE) (set 9)", - "sp_bigbd", "Big Break Deluxe Club (Ace) (sp.ACE) (set 1)", - "sp_bigbda", "Big Break Deluxe Club (Ace) (sp.ACE) (set 2)", - "sp_brkbk", "Break The Bank (Ace) (sp.ACE) (set 1)", - "sp_brkbka", "Break The Bank (Ace) (sp.ACE) (set 2)", - "sp_brkbkb", "Break The Bank (Ace) (sp.ACE) (set 3)", - "sp_brkbkc", "Break The Bank (Ace) (sp.ACE) (set 4)", - "sp_brkbkd", "Break The Bank (Ace) (sp.ACE) (set 5)", - "sp_camel", "Camelot (Ace) (sp.ACE) (set 1)", - "sp_camela", "Camelot (Ace) (sp.ACE) (set 2)", - "sp_camelb", "Camelot (Ace) (sp.ACE) (set 3)", - "sp_camelc", "Camelot (Ace) (sp.ACE) (set 4)", - "sp_cameld", "Camelot (Ace) (sp.ACE) (set 5)", - "sp_camele", "Camelot (Ace) (sp.ACE) (set 6)", - "sp_camelf", "Camelot (Ace) (sp.ACE) (set 7)", - "sp_camelg", "Camelot (Ace) (sp.ACE) (set 8)", - "sp_camelh", "Camelot (Ace) (sp.ACE) (set 9)", - "sp_cameli", "Camelot (Ace) (sp.ACE) (set 10)", - "sp_camelj", "Camelot (Ace) (sp.ACE) (set 11)", - "sp_camelk", "Camelot (Ace) (sp.ACE) (set 12)", - "sp_camell", "Camelot (Ace) (sp.ACE) (set 13)", - "sp_camelm", "Camelot (Ace) (sp.ACE) (set 14)", - "sp_cameln", "Camelot (Ace) (sp.ACE) (set 15)", - "sp_camelo", "Camelot (Ace) (sp.ACE) (set 16)", - "sp_carry", "Carry On (Pcp) (sp.ACE?) (set 1)", - "sp_carrya", "Carry On (Pcp) (sp.ACE?) (set 2)", - "sp_cbowl", "Cash Bowl (Ace) (sp.ACE) (set 1)", - "sp_cbowla", "Cash Bowl (Ace) (sp.ACE) (set 2)", - "sp_cbowlb", "Cash Bowl (Ace) (sp.ACE) (set 3)", - "sp_cbowlc", "Cash Bowl (Ace) (sp.ACE) (set 4)", - "sp_cbowld", "Cash Bowl (Ace) (sp.ACE) (set 5)", - "sp_cbowle", "Cash Bowl (Ace) (sp.ACE) (set 6)", - "sp_cbowlf", "Cash Bowl (Ace) (sp.ACE) (set 7)", - "sp_cbowlg", "Cash Bowl (Ace) (sp.ACE) (set 8)", - "sp_cbowlh", "Cash Bowl (Ace) (sp.ACE) (set 9)", - "sp_cbowli", "Cash Bowl (Ace) (sp.ACE) (set 10)", - "sp_cbowlj", "Cash Bowl (Ace) (sp.ACE) (set 11)", - "sp_cbowlk", "Cash Bowl (Ace) (sp.ACE) (set 12)", - "sp_cbowll", "Cash Bowl (Ace) (sp.ACE) (set 13)", - "sp_cbowlm", "Cash Bowl (Ace) (sp.ACE) (set 14)", - "sp_cbowln", "Cash Bowl (Ace) (sp.ACE) (set 15)", - "sp_cbowlo", "Cash Bowl (Ace) (sp.ACE) (set 16)", - "sp_cbowlp", "Cash Bowl (Ace) (sp.ACE) (set 17)", - "sp_cbowlq", "Cash Bowl (Ace) (sp.ACE) (set 18)", - "sp_cbowlr", "Cash Bowl (Ace) (sp.ACE) (set 19)", - "sp_cbowls", "Cash Bowl (Ace) (sp.ACE) (set 20)", - "sp_cbowlt", "Cash Bowl (Ace) (sp.ACE) (set 21)", - "sp_cbowlu", "Cash Bowl (Ace) (sp.ACE) (set 22)", - "sp_clbna", "Club National (Ace) (sp.ACE) (set 1)", - "sp_clbnaa", "Club National (Ace) (sp.ACE) (set 2)", - "sp_coder", "Code Red (Ace) (sp.ACE) (set 1)", - "sp_codera", "Code Red (Ace) (sp.ACE) (set 2)", - "sp_coderb", "Code Red (Ace) (sp.ACE) (set 3)", - "sp_coderc", "Code Red (Ace) (sp.ACE) (set 4)", - "sp_coderd", "Code Red (Ace) (sp.ACE) (set 5)", - "sp_codere", "Code Red (Ace) (sp.ACE) (set 6)", - "sp_coderf", "Code Red (Ace) (sp.ACE) (set 7)", - "sp_coderg", "Code Red (Ace) (sp.ACE) (set 8)", - "sp_cpal", "Caesars Palace (Ace) (sp.ACE?)", - "sp_crime", "Crime Watch (Ace) (sp.ACE) (set 1)", - "sp_crimea", "Crime Watch (Ace) (sp.ACE) (set 2)", - "sp_crimeb", "Crime Watch (Ace) (sp.ACE) (set 3)", - "sp_crimec", "Crime Watch (Ace) (sp.ACE) (set 4)", - "sp_crimed", "Crime Watch (Ace) (sp.ACE) (set 5)", - "sp_crimee", "Crime Watch (Ace) (sp.ACE) (set 6)", - "sp_crimef", "Crime Watch (Ace) (sp.ACE) (set 7)", - "sp_crimeg", "Crime Watch (Ace) (sp.ACE) (set 8)", - "sp_crimeh", "Crime Watch (Ace) (sp.ACE) (set 9)", - "sp_criss", "Criss Cross Cash (Ace) (sp.ACE) (set 1)", - "sp_crissa", "Criss Cross Cash (Ace) (sp.ACE) (set 2)", - "sp_crissb", "Criss Cross Cash (Ace) (sp.ACE) (set 3)", - "sp_crissc", "Criss Cross Cash (Ace) (sp.ACE) (set 4)", - "sp_crissd", "Criss Cross Cash (Ace) (sp.ACE) (set 5)", - "sp_crisse", "Criss Cross Cash (Ace) (sp.ACE) (set 6)", - "sp_crissf", "Criss Cross Cash (Ace) (sp.ACE) (set 7)", - "sp_crissg", "Criss Cross Cash (Ace) (sp.ACE) (set 8)", - "sp_crun", "Cash Run (Crystal) (sp.ACE?) (set 1)", - "sp_cruna", "Cash Run (Crystal) (sp.ACE?) (set 2)", - "sp_crunb", "Cash Run (Crystal) (sp.ACE?) (set 3)", - "sp_daytr", "Daytripper (Ace) (sp.ACE) (set 1)", - "sp_daytra", "Daytripper (Ace) (sp.ACE) (set 2)", - "sp_daytrb", "Daytripper (Ace) (sp.ACE) (set 3)", - "sp_daytrc", "Daytripper (Ace) (sp.ACE) (set 4)", - "sp_donky", "Donkey Derby (Ace) (sp.ACE) (set 1)", - "sp_donkya", "Donkey Derby (Ace) (sp.ACE) (set 2)", - "sp_donkyb", "Donkey Derby (Ace) (sp.ACE) (set 3)", - "sp_donkyc", "Donkey Derby (Ace) (sp.ACE) (set 4)", - "sp_donkyd", "Donkey Derby (Ace) (sp.ACE) (set 5)", - "sp_donkye", "Donkey Derby (Ace) (sp.ACE) (set 6)", - "sp_donkyf", "Donkey Derby (Ace) (sp.ACE) (set 7)", - "sp_donkyg", "Donkey Derby (Ace) (sp.ACE) (set 8)", - "sp_dyour", "Double Your Money (Ace) (sp.ACE)", - "sp_emmrd", "Emmerdale (Ace) (sp.ACE) (set 1)", - "sp_emmrda", "Emmerdale (Ace) (sp.ACE) (set 2)", - "sp_emmrdb", "Emmerdale (Ace) (sp.ACE) (set 3)", - "sp_emmrdc", "Emmerdale (Ace) (sp.ACE) (set 4)", - "sp_emmrdd", "Emmerdale (Ace) (sp.ACE) (set 5)", - "sp_emmrde", "Emmerdale (Ace) (sp.ACE) (set 6)", - "sp_emmrdf", "Emmerdale (Ace) (sp.ACE) (set 7)", - "sp_emmrdg", "Emmerdale (Ace) (sp.ACE) (set 8)", - "sp_emmrdh", "Emmerdale (Ace) (sp.ACE) (set 9)", - "sp_emmrdi", "Emmerdale (Ace) (sp.ACE) (set 10)", - "sp_emmrdj", "Emmerdale (Ace) (sp.ACE) (set 11)", - "sp_emmrdk", "Emmerdale (Ace) (sp.ACE) (set 12)", - "sp_emmrdn", "Emmerdale (Ace) (sp.ACE) (set 15)", - "sp_emmrdo", "Emmerdale (Ace) (sp.ACE) (set 16)", - "sp_festi", "Festival (Spanish) (Ace) (sp.ACE)", - "sp_five", "Fiver Fever (Crystal) (sp.ACE?) (set 1)", - "sp_fivea", "Fiver Fever (Crystal) (sp.ACE?) (set 2)", - "sp_front", "Final Frontier (Bwb) (sp.ACE?)", - "sp_ghost", "Ghost Trapper (Ace) (sp.ACE) (set 1)", - "sp_ghosta", "Ghost Trapper (Ace) (sp.ACE) (set 2)", - "sp_ghostb", "Ghost Trapper (Ace) (sp.ACE) (set 3)", - "sp_ghostc", "Ghost Trapper (Ace) (sp.ACE) (set 4)", - "sp_ghostd", "Ghost Trapper (Ace) (sp.ACE) (set 5)", - "sp_ghoste", "Ghost Trapper (Ace) (sp.ACE) (set 6)", - "sp_ghostf", "Ghost Trapper (Ace) (sp.ACE) (set 7)", - "sp_ghostg", "Ghost Trapper (Ace) (sp.ACE) (set 8)", - "sp_ghosth", "Ghost Trapper (Ace) (sp.ACE) (set 9)", - "sp_ghosti", "Ghost Trapper (Ace) (sp.ACE) (set 10)", - "sp_ghostj", "Ghost Trapper (Ace) (sp.ACE) (set 11)", - "sp_ghostk", "Ghost Trapper (Ace) (sp.ACE) (set 12)", - "sp_ghostl", "Ghost Trapper (Ace) (sp.ACE) (set 13)", - "sp_ghostm", "Ghost Trapper (Ace) (sp.ACE) (set 14)", - "sp_ghostn", "Ghost Trapper (Ace) (sp.ACE) (set 15)", - "sp_ghosto", "Ghost Trapper (Ace) (sp.ACE) (set 16)", - "sp_ghostp", "Ghost Trapper (Ace) (sp.ACE) (set 17)", - "sp_ghostq", "Ghost Trapper (Ace) (sp.ACE) (set 18)", - "sp_ghostr", "Ghost Trapper (Ace) (sp.ACE) (set 19)", - "sp_ghosts", "Ghost Trapper (Ace) (sp.ACE) (set 20)", - "sp_globe", "Globe Trotter (Ace) (sp.ACE) (set 1)", - "sp_globea", "Globe Trotter (Ace) (sp.ACE) (set 2)", - "sp_globeb", "Globe Trotter (Ace) (sp.ACE) (set 3)", - "sp_globec", "Globe Trotter (Ace) (sp.ACE) (set 4)", - "sp_globed", "Globe Trotter (Ace) (sp.ACE) (set 5)", - "sp_globee", "Globe Trotter (Ace) (sp.ACE) (set 6)", - "sp_globef", "Globe Trotter (Ace) (sp.ACE) (set 7)", - "sp_globeg", "Globe Trotter (Ace) (sp.ACE) (set 8)", - "sp_gnat", "Grand National (Ace) (sp.ACE) (set 1)", - "sp_gnata", "Grand National (Ace) (sp.ACE) (set 2)", - "sp_gnatb", "Grand National (Ace) (sp.ACE) (set 3)", - "sp_gnatc", "Grand National (Ace) (sp.ACE) (set 4)", - "sp_gnatd", "Grand National (Ace) (sp.ACE) (set 5)", - "sp_gnate", "Grand National (Ace) (sp.ACE) (set 6)", - "sp_gnatf", "Grand National (Ace) (sp.ACE) (set 7)", - "sp_gnatg", "Grand National (Ace) (sp.ACE) (set 8)", - "sp_gnath", "Grand National (Ace) (sp.ACE) (set 9)", - "sp_gnati", "Grand National (Ace) (sp.ACE) (set 10)", - "sp_gnatj", "Grand National (Ace) (sp.ACE) (set 11)", - "sp_gnatk", "Grand National (Ace) (sp.ACE) (set 12)", - "sp_gnatl", "Grand National (Ace) (sp.ACE) (set 13)", - "sp_gnatm", "Grand National (Ace) (sp.ACE) (set 14)", - "sp_gnatn", "Grand National (Ace) (sp.ACE) (set 15)", - "sp_gnato", "Grand National (Ace) (sp.ACE) (set 16)", - "sp_gol", "Gol (Spanish) (Ace) (sp.ACE)", - "sp_golda", "Golden Arrow Club (Ace) (sp.ACE) (set 1)", - "sp_goldaa", "Golden Arrow Club (Ace) (sp.ACE) (set 2)", - "sp_goldm", "Golden Mile (Ace) (sp.ACE) (set 1)", - "sp_goldm0", "Golden Mile (Ace) (sp.ACE) (set 28)", - "sp_goldm1", "Golden Mile (Ace) (sp.ACE) (set 29)", - "sp_goldm2", "Golden Mile (Ace) (sp.ACE) (set 30)", - "sp_goldm3", "Golden Mile (Ace) (sp.ACE) (set 31)", - "sp_goldma", "Golden Mile (Ace) (sp.ACE) (set 2)", - "sp_goldmb", "Golden Mile (Ace) (sp.ACE) (set 3)", - "sp_goldmc", "Golden Mile (Ace) (sp.ACE) (set 4)", - "sp_goldmd", "Golden Mile (Ace) (sp.ACE) (set 5)", - "sp_goldme", "Golden Mile (Ace) (sp.ACE) (set 6)", - "sp_goldmf", "Golden Mile (Ace) (sp.ACE) (set 7)", - "sp_goldmg", "Golden Mile (Ace) (sp.ACE) (set 8)", - "sp_goldmh", "Golden Mile (Ace) (sp.ACE) (set 9)", - "sp_goldmi", "Golden Mile (Ace) (sp.ACE) (set 10)", - "sp_goldmj", "Golden Mile (Ace) (sp.ACE) (set 11)", - "sp_goldmk", "Golden Mile (Ace) (sp.ACE) (set 12)", - "sp_goldml", "Golden Mile (Ace) (sp.ACE) (set 13)", - "sp_goldmm", "Golden Mile (Ace) (sp.ACE) (set 14)", - "sp_goldmn", "Golden Mile (Ace) (sp.ACE) (set 15)", - "sp_goldmo", "Golden Mile (Ace) (sp.ACE) (set 16)", - "sp_goldmp", "Golden Mile (Ace) (sp.ACE) (set 17)", - "sp_goldmq", "Golden Mile (Ace) (sp.ACE) (set 18)", - "sp_goldmr", "Golden Mile (Ace) (sp.ACE) (set 19)", - "sp_goldms", "Golden Mile (Ace) (sp.ACE) (set 20)", - "sp_goldmt", "Golden Mile (Ace) (sp.ACE) (set 21)", - "sp_goldmu", "Golden Mile (Ace) (sp.ACE) (set 22)", - "sp_goldmv", "Golden Mile (Ace) (sp.ACE) (set 23)", - "sp_goldmw", "Golden Mile (Ace) (sp.ACE) (set 24)", - "sp_goldmx", "Golden Mile (Ace) (sp.ACE) (set 25)", - "sp_goldmy", "Golden Mile (Ace) (sp.ACE) (set 26)", - "sp_goldmz", "Golden Mile (Ace) (sp.ACE) (set 27)", - "sp_golds", "Golden Streak (Ace) (sp.ACE) (set 1)", - "sp_goldsa", "Golden Streak (Ace) (sp.ACE) (set 2)", - "sp_goldsb", "Golden Streak (Ace) (sp.ACE) (set 3)", - "sp_goldsc", "Golden Streak (Ace) (sp.ACE) (set 4)", - "sp_goldsd", "Golden Streak (Ace) (sp.ACE) (set 5)", - "sp_goldse", "Golden Streak (Ace) (sp.ACE) (set 6)", - "sp_goldsf", "Golden Streak (Ace) (sp.ACE) (set 7)", - "sp_goldsg", "Golden Streak (Ace) (sp.ACE) (set 8)", - "sp_goldsh", "Golden Streak (Ace) (sp.ACE) (set 9)", - "sp_goldt", "Golden Streak (Golden Touch) (Ace) (sp.ACE)", - "sp_gprix", "Grand Prix (Ace) (sp.ACE) (set 1)", - "sp_gprixa", "Grand Prix (Ace) (sp.ACE) (set 2)", - "sp_gprixb", "Grand Prix (Ace) (sp.ACE) (set 3)", - "sp_gprixc", "Grand Prix (Ace) (sp.ACE) (set 4)", - "sp_gprixd", "Grand Prix (Ace) (sp.ACE) (set 5)", - "sp_gprixe", "Grand Prix (Ace) (sp.ACE) (set 6)", - "sp_gprixf", "Grand Prix (Ace) (sp.ACE) (set 7)", - "sp_gprixg", "Grand Prix (Ace) (sp.ACE) (set 8)", - "sp_gprixh", "Grand Prix (Ace) (sp.ACE) (set 9)", - "sp_here", "Here We Go (Ace) (sp.ACE) (set 1)", - "sp_herea", "Here We Go (Ace) (sp.ACE) (set 2)", - "sp_hereb", "Here We Go (Ace) (sp.ACE) (set 3)", - "sp_herec", "Here We Go (Ace) (sp.ACE) (set 4)", - "sp_hered", "Here We Go (Ace) (sp.ACE) (set 5)", - "sp_heree", "Here We Go (Ace) (sp.ACE) (set 6)", - "sp_heref", "Here We Go (Ace) (sp.ACE) (set 7)", - "sp_hereg", "Here We Go (Ace) (sp.ACE) (set 8)", - "sp_hideh", "Hi De Hi (Ace) (sp.ACE) (set 1)", - "sp_hideha", "Hi De Hi (Ace) (sp.ACE) (set 2)", - "sp_hidehb", "Hi De Hi (Ace) (sp.ACE) (set 3)", - "sp_hidehc", "Hi De Hi (Ace) (sp.ACE) (set 4)", - "sp_hidehd", "Hi De Hi (Ace) (sp.ACE) (set 5)", - "sp_hidehe", "Hi De Hi (Ace) (sp.ACE) (set 6)", - "sp_hidehf", "Hi De Hi (Ace) (sp.ACE) (set 7)", - "sp_hidehg", "Hi De Hi (Ace) (sp.ACE) (set 8)", - "sp_hidehh", "Hi De Hi (Ace) (sp.ACE) (set 9)", - "sp_hidehi", "Hi De Hi (Ace) (sp.ACE) (set 10)", - "sp_hidehj", "Hi De Hi (Ace) (sp.ACE) (set 11)", - "sp_hidehk", "Hi De Hi (Ace) (sp.ACE) (set 12)", - "sp_hidehl", "Hi De Hi (Ace) (sp.ACE) (set 13)", - "sp_hidehm", "Hi De Hi (Ace) (sp.ACE) (set 14)", - "sp_hidehn", "Hi De Hi (Ace) (sp.ACE) (set 15)", - "sp_hideho", "Hi De Hi (Ace) (sp.ACE) (set 16)", - "sp_hidehp", "Hi De Hi (Ace) (sp.ACE) (set 17)", - "sp_hifly", "Hi Flyer (Ace) (sp.ACE) (set 1)", - "sp_hiflya", "Hi Flyer (Ace) (sp.ACE) (set 2)", - "sp_hiflyb", "Hi Flyer (Ace) (sp.ACE) (set 3)", - "sp_hiflyc", "Hi Flyer (Ace) (sp.ACE) (set 4)", - "sp_hiflyd", "Hi Flyer (Ace) (sp.ACE) (set 5)", - "sp_hiflye", "Hi Flyer (Ace) (sp.ACE) (set 6)", - "sp_hiflyf", "Hi Flyer (Ace) (sp.ACE) (set 7)", - "sp_hiflyg", "Hi Flyer (Ace) (sp.ACE) (set 8)", - "sp_hiflyh", "Hi Flyer (Ace) (sp.ACE) (set 9)", - "sp_hiflyi", "Hi Flyer (Ace) (sp.ACE) (set 10)", - "sp_hiflyj", "Hi Flyer (Ace) (sp.ACE) (set 11)", - "sp_hiflyk", "Hi Flyer (Ace) (sp.ACE) (set 12)", - "sp_hiflyl", "Hi Flyer (Ace) (sp.ACE) (set 13)", - "sp_hiflym", "Hi Flyer (Ace) (sp.ACE) (set 14)", - "sp_hiflyn", "Hi Flyer (Ace) (sp.ACE) (set 15)", - "sp_hiflyo", "Hi Flyer (Ace) (sp.ACE) (set 16)", - "sp_hiflyp", "Hi Flyer (Ace) (sp.ACE) (set 17)", - "sp_holid", "Holiday Club (Ace) (sp.ACE) (set 1)", - "sp_holida", "Holiday Club (Ace) (sp.ACE) (set 2)", - "sp_juras", "Jurassic Trail (Ace) (sp.ACE)", - "sp_lotto", "Lotto (Spanish) (Ace) (sp.ACE)", - "sp_magmo", "Magic Money (Ace) (sp.ACE) (set 1)", - "sp_magmoa", "Magic Money (Ace) (sp.ACE) (set 2)", - "sp_magmob", "Magic Money (Ace) (sp.ACE) (set 3)", - "sp_magmoc", "Magic Money (Ace) (sp.ACE) (set 4)", - "sp_magmod", "Magic Money (Ace) (sp.ACE) (set 5)", - "sp_megmo", "Mega Money (Ace) (sp.ACE) (set 1)", - "sp_megmoa", "Mega Money (Ace) (sp.ACE) (set 2)", - "sp_megmob", "Mega Money (Ace) (sp.ACE) (set 3)", - "sp_megmoc", "Mega Money (Ace) (sp.ACE) (set 4)", - "sp_megmod", "Mega Money (Ace) (sp.ACE) (set 5)", - "sp_megmoe", "Mega Money (Ace) (sp.ACE) (set 6)", - "sp_megmof", "Mega Money (Ace) (sp.ACE) (set 7)", - "sp_megmog", "Mega Money (Ace) (sp.ACE) (set 8)", - "sp_monma", "Money Magic (Ace) (sp.ACE) (set 1)", - "sp_monmaa", "Money Magic (Ace) (sp.ACE) (set 2)", - "sp_monmab", "Money Magic (Ace) (sp.ACE) (set 3)", - "sp_monmac", "Money Magic (Ace) (sp.ACE) (set 4)", - "sp_monmad", "Money Magic (Ace) (sp.ACE) (set 5)", - "sp_monmo", "Money Mountain (Ace) (sp.ACE) (set 1)", - "sp_monmoa", "Money Mountain (Ace) (sp.ACE) (set 2)", - "sp_monmob", "Money Mountain (Ace) (sp.ACE) (set 3)", - "sp_monmoc", "Money Mountain (Ace) (sp.ACE) (set 4)", - "sp_monmod", "Money Mountain (Ace) (sp.ACE) (set 5)", - "sp_monmoe", "Money Mountain (Ace) (sp.ACE) (set 6)", - "sp_monmof", "Money Mountain (Ace) (sp.ACE) (set 7)", - "sp_monmog", "Money Mountain (Ace) (sp.ACE) (set 8)", - "sp_nudex", "Nudge Explosion (Ace) (sp.ACE) (set 1)", - "sp_nudexa", "Nudge Explosion (Ace) (sp.ACE) (set 2)", - "sp_onbox", "On The Box (Ace) (sp.ACE) (set 1)", - "sp_onboxa", "On The Box (Ace) (sp.ACE) (set 2)", - "sp_onboxb", "On The Box (Ace) (sp.ACE) (set 3)", - "sp_onboxc", "On The Box (Ace) (sp.ACE) (set 4)", - "sp_onboxd", "On The Box (Ace) (sp.ACE) (set 5)", - "sp_onboxe", "On The Box (Ace) (sp.ACE) (set 6)", - "sp_onboxf", "On The Box (Ace) (sp.ACE) (set 7)", - "sp_onboxg", "On The Box (Ace) (sp.ACE) (set 8)", - "sp_onboxh", "On The Box (Ace) (sp.ACE) (set 9)", - "sp_onboxi", "On The Box (Ace) (sp.ACE) (set 10)", - "sp_onboxj", "On The Box (Ace) (sp.ACE) (set 11)", - "sp_onboxk", "On The Box (Ace) (sp.ACE) (set 12)", - "sp_onboxl", "On The Box (Ace) (sp.ACE) (set 13)", - "sp_onboxm", "On The Box (Ace) (sp.ACE) (set 14)", - "sp_onboxn", "On The Box (Ace) (sp.ACE) (set 15)", - "sp_openb", "Open The Box (Ace) (sp.ACE) (set 1)", - "sp_openba", "Open The Box (Ace) (sp.ACE) (set 2)", - "sp_openbb", "Open The Box (Ace) (sp.ACE) (set 3)", - "sp_openbc", "Open The Box (Ace) (sp.ACE) (set 4)", - "sp_openbd", "Open The Box (Ace) (sp.ACE) (set 5)", - "sp_openbe", "Open The Box (Ace) (sp.ACE) (set 6)", - "sp_openbf", "Open The Box (Ace) (sp.ACE) (set 7)", - "sp_openbg", "Open The Box (Ace) (sp.ACE) (set 8)", - "sp_openbh", "Open The Box (Ace) (sp.ACE) (set 9)", - "sp_openbi", "Open The Box (Ace) (sp.ACE) (set 10)", - "sp_payrs", "Payrise (Ace) (sp.ACE) (set 1)", - "sp_payrsa", "Payrise (Ace) (sp.ACE) (set 2)", - "sp_payrsb", "Payrise (Ace) (sp.ACE) (set 3)", - "sp_payrsc", "Payrise (Ace) (sp.ACE) (set 4)", - "sp_payrsd", "Payrise (Ace) (sp.ACE) (set 5)", - "sp_payrse", "Payrise (Ace) (sp.ACE) (set 6)", - "sp_payrsf", "Payrise (Ace) (sp.ACE) (set 7)", - "sp_payrsg", "Payrise (Ace) (sp.ACE) (set 8)", - "sp_payrsh", "Payrise (Ace) (sp.ACE) (set 9)", - "sp_piste", "On The Piste (Ace) (sp.ACE) (set 1)", - "sp_pistea", "On The Piste (Ace) (sp.ACE) (set 2)", - "sp_pisteb", "On The Piste (Ace) (sp.ACE) (set 3)", - "sp_pistec", "On The Piste (Ace) (sp.ACE) (set 4)", - "sp_pisted", "On The Piste (Ace) (sp.ACE) (set 5)", - "sp_pistee", "On The Piste (Ace) (sp.ACE) (set 6)", - "sp_pistef", "On The Piste (Ace) (sp.ACE) (set 7)", - "sp_pisteg", "On The Piste (Ace) (sp.ACE) (set 8)", - "sp_pisteh", "On The Piste (Ace) (sp.ACE) (set 9)", - "sp_pistei", "On The Piste (Ace) (sp.ACE) (set 10)", - "sp_pistej", "On The Piste (Ace) (sp.ACE) (set 11)", - "sp_pistek", "On The Piste (Ace) (sp.ACE) (set 12)", - "sp_pistel", "On The Piste (Ace) (sp.ACE) (set 13)", - "sp_pistem", "On The Piste (Ace) (sp.ACE) (set 14)", - "sp_pisten", "On The Piste (Ace) (sp.ACE) (set 15)", - "sp_pisteo", "On The Piste (Ace) (sp.ACE) (set 16)", - "sp_pistep", "On The Piste (Ace) (sp.ACE) (set 17)", - "sp_playa", "Play It Again (Ace) (sp.ACE) (set 1)", - "sp_playaa", "Play It Again (Ace) (sp.ACE) (set 2)", - "sp_playab", "Play It Again (Ace) (sp.ACE) (set 3)", - "sp_playac", "Play It Again (Ace) (sp.ACE) (set 4)", - "sp_playad", "Play It Again (Ace) (sp.ACE) (set 5)", - "sp_playae", "Play It Again (Ace) (sp.ACE) (set 6)", - "sp_playaf", "Play It Again (Ace) (sp.ACE) (set 7)", - "sp_playag", "Play It Again (Ace) (sp.ACE) (set 8)", - "sp_playah", "Play It Again (Ace) (sp.ACE) (set 9)", - "sp_playai", "Play It Again (Ace) (sp.ACE) (set 10)", - "sp_pound", "Pound For Pound (Ace) (sp.ACE) (set 1)", - "sp_pounda", "Pound For Pound (Ace) (sp.ACE) (set 2)", - "sp_poundb", "Pound For Pound (Ace) (sp.ACE) (set 3)", - "sp_poundbwb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 1)", - "sp_poundbwba", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 2)", - "sp_poundbwbb", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 3)", - "sp_poundbwbc", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 4)", - "sp_poundbwbd", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 5)", - "sp_poundbwbe", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 6)", - "sp_poundbwbf", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 7)", - "sp_poundbwbg", "Pound For Pound (Ace/Bwb) (sp.ACE) (set 8)", - "sp_poundc", "Pound For Pound (Ace) (sp.ACE) (set 4)", - "sp_poundd", "Pound For Pound (Ace) (sp.ACE) (set 5)", - "sp_pounde", "Pound For Pound (Ace) (sp.ACE) (set 6)", - "sp_poundf", "Pound For Pound (Ace) (sp.ACE) (set 7)", - "sp_poundg", "Pound For Pound (Ace) (sp.ACE) (set 8)", - "sp_poundh", "Pound For Pound (Ace) (sp.ACE) (set 9)", - "sp_poundi", "Pound For Pound (Ace) (sp.ACE) (set 10)", - "sp_poundj", "Pound For Pound (Ace) (sp.ACE) (set 11)", - "sp_poundk", "Pound For Pound (Ace) (sp.ACE) (set 12)", - "sp_poundl", "Pound For Pound (Ace) (sp.ACE) (set 13)", - "sp_poundm", "Pound For Pound (Ace) (sp.ACE) (set 14)", - "sp_poundn", "Pound For Pound (Ace) (sp.ACE) (set 15)", - "sp_poundo", "Pound For Pound (Ace) (sp.ACE) (set 16)", - "sp_poundp", "Pound For Pound (Ace) (sp.ACE) (set 17)", - "sp_przna", "Prize National (Ace) (sp.ACE) (set 1)", - "sp_prznaa", "Prize National (Ace) (sp.ACE) (set 2)", - "sp_prznab", "Prize National (Ace) (sp.ACE) (set 3)", - "sp_prznac", "Prize National (Ace) (sp.ACE) (set 4)", - "sp_prznad", "Prize National (Ace) (sp.ACE) (set 5)", - "sp_prznae", "Prize National (Ace) (sp.ACE) (set 6)", - "sp_prznaf", "Prize National (Ace) (sp.ACE) (set 7)", - "sp_prznag", "Prize National (Ace) (sp.ACE) (set 8)", - "sp_road", "Road To Hell (Ace) (sp.ACE)", - "sp_roof", "Thru' The Roof (Ace) (sp.ACE) (set 1)", - "sp_roofa", "Thru' The Roof (Ace) (sp.ACE) (set 2)", - "sp_skylm", "Sky's The Limit Club, The (Ace) (sp.ACE) (set 1)", - "sp_skylma", "Sky's The Limit Club, The (Ace) (sp.ACE) (set 2)", - "sp_spell", "Spellbound (Ace) (sp.ACE) (set 1)", - "sp_spella", "Spellbound (Ace) (sp.ACE) (set 2)", - "sp_spellb", "Spellbound (Ace) (sp.ACE) (set 3)", - "sp_spellc", "Spellbound (Ace) (sp.ACE) (set 4)", - "sp_spelld", "Spellbound (Ace) (sp.ACE) (set 5)", - "sp_spelle", "Spellbound (Ace) (sp.ACE) (set 6)", - "sp_spellf", "Spellbound (Ace) (sp.ACE) (set 7)", - "sp_spellg", "Spellbound (Ace) (sp.ACE) (set 8)", - "sp_spelli", "Spellbound (Ace) (sp.ACE) (set 10)", - "sp_spellj", "Spellbound (Ace) (sp.ACE) (set 11)", - "sp_swop", "Swop Shop (Ace) (sp.ACE) (set 1)", - "sp_swopa", "Swop Shop (Ace) (sp.ACE) (set 2)", - "sp_swopb", "Swop Shop (Ace) (sp.ACE) (set 3)", - "sp_swopc", "Swop Shop (Ace) (sp.ACE) (set 4)", - "sp_swopd", "Swop Shop (Ace) (sp.ACE) (set 5)", - "sp_swope", "Swop Shop (Ace) (sp.ACE) (set 6)", - "sp_swopf", "Swop Shop (Ace) (sp.ACE) (set 7)", - "sp_swopg", "Swop Shop (Ace) (sp.ACE) (set 8)", - "sp_timem", "Time Machine (Ace) (sp.ACE) (set 1)", - "sp_timema", "Time Machine (Ace) (sp.ACE) (set 2)", - "sp_timemb", "Time Machine (Ace) (sp.ACE) (set 3)", - "sp_timemc", "Time Machine (Ace) (sp.ACE) (set 4)", - "sp_timemd", "Time Machine (Ace) (sp.ACE) (set 5)", - "sp_timeme", "Time Machine (Ace) (sp.ACE) (set 6)", - "sp_timemf", "Time Machine (Ace) (sp.ACE) (set 7)", - "sp_timemg", "Time Machine (Ace) (sp.ACE) (set 8)", - "sp_timemh", "Time Machine (Ace) (sp.ACE) (set 9)", - "sp_timemi", "Time Machine (Ace) (sp.ACE) (set 10)", - "sp_timemj", "Time Machine (Ace) (sp.ACE) (set 11)", - "sp_timemk", "Time Machine (Ace) (sp.ACE) (set 12)", - "sp_tkpik", "Take Your Pick (Ace) (sp.ACE) (set 1)", - "sp_tkpika", "Take Your Pick (Ace) (sp.ACE) (set 2)", - "sp_tkpikb", "Take Your Pick (Ace) (sp.ACE) (set 3)", - "sp_tkpikc", "Take Your Pick (Ace) (sp.ACE) (set 4)", - "sp_tkpikd", "Take Your Pick (Ace) (sp.ACE) (set 5)", - "sp_tkpike", "Take Your Pick (Ace) (sp.ACE) (set 6)", - "sp_tkpikf", "Take Your Pick (Ace) (sp.ACE) (set 7)", - "sp_tz", "Twilight Zone (Ace) (sp.ACE) (set 1)", - "sp_tza", "Twilight Zone (Ace) (sp.ACE) (set 2)", - "sp_tzb", "Twilight Zone (Ace) (sp.ACE) (set 3)", - "sp_tzbwb", "Twilight Zone (Ace/Bwb) (sp.ACE)", - "sp_tzc", "Twilight Zone (Ace) (sp.ACE) (set 4)", - "sp_tzd", "Twilight Zone (Ace) (sp.ACE) (set 5)", - "sp_tze", "Twilight Zone (Ace) (sp.ACE) (set 6)", - "sp_tzf", "Twilight Zone (Ace) (sp.ACE) (set 7)", - "sp_tzfe", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 1)", - "sp_tzfea", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 2)", - "sp_tzfeb", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 3)", - "sp_tzfec", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 4)", - "sp_tzfed", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 5)", - "sp_tzfee", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 6)", - "sp_tzfef", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 7)", - "sp_tzfeg", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 8)", - "sp_tzfeh", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 9)", - "sp_tzfei", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 10)", - "sp_tzfej", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 11)", - "sp_tzfek", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 12)", - "sp_tzfel", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 13)", - "sp_tzfem", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 14)", - "sp_tzfen", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 15)", - "sp_tzfeo", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 16)", - "sp_tzfep", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 17)", - "sp_tzfeq", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 18)", - "sp_tzfer", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 19)", - "sp_tzfes", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 20)", - "sp_tzfet", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 21)", - "sp_tzfeu", "Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 22)", - "sp_tzg", "Twilight Zone (Ace) (sp.ACE) (set 8)", - "sp_tzh", "Twilight Zone (Ace) (sp.ACE) (set 9)", - "sp_woolp", "Woolpack (Ace) (sp.ACE) (set 1)", - "sp_woolpa", "Woolpack (Ace) (sp.ACE) (set 2)", - "sp_woolpb", "Woolpack (Ace) (sp.ACE) (set 3)", - "sp_woolpc", "Woolpack (Ace) (sp.ACE) (set 4)", - "sp_woolpd", "Woolpack (Ace) (sp.ACE) (set 5)", - "sp_woolpe", "Woolpack (Ace) (sp.ACE) (set 6)", - "sp_woolpf", "Woolpack (Ace) (sp.ACE) (set 7)", - "sp_woolpg", "Woolpack (Ace) (sp.ACE) (set 8)", - "sp_woolph", "Woolpack (Ace) (sp.ACE) (set 9)", - "sp_woolpi", "Woolpack (Ace) (sp.ACE) (set 10)", - "sp_woolpj", "Woolpack (Ace) (sp.ACE) (set 11)", - "sp_woolpk", "Woolpack (Ace) (sp.ACE) (set 12)", - "sp_woolpl", "Woolpack (Ace) (sp.ACE) (set 13)", - "sp_woolpm", "Woolpack (Ace) (sp.ACE) (set 14)", - "sp_woolpn", "Woolpack (Ace) (sp.ACE) (set 15)", - "sp_woolpo", "Woolpack (Ace) (sp.ACE) (set 16)", - "sp_zigzg", "Zig Zag (Ace) (sp.ACE) (set 1)", - "sp_zigzga", "Zig Zag (Ace) (sp.ACE) (set 2)", - "sp_zigzgb", "Zig Zag (Ace) (sp.ACE) (set 3)", - "sp_zigzgc", "Zig Zag (Ace) (sp.ACE) (set 4)", - "sp_zigzgd", "Zig Zag (Ace) (sp.ACE) (set 5)", - "sp_zigzge", "Zig Zag (Ace) (sp.ACE) (set 6)", - "sp_zigzgf", "Zig Zag (Ace) (sp.ACE) (set 7)", - "sp_zigzgg", "Zig Zag (Ace) (sp.ACE) (set 8)", - "sp_zigzgh", "Zig Zag (Ace) (sp.ACE) (set 9)", - "sp_zigzgi", "Zig Zag (Ace) (sp.ACE) (set 10)", - "sp_zigzgj", "Zig Zag (Ace) (sp.ACE) (set 11)", - "sp_zigzgk", "Zig Zag (Ace) (sp.ACE) (set 12)", - "sp_zigzgl", "Zig Zag (Ace) (sp.ACE) (set 13)", - "sp_zigzgm", "Zig Zag (Ace) (sp.ACE) (set 14)", - "spacbat2", "Space Battle (bootleg set 2)", - "spacbatt", "Space Battle (bootleg set 1)", - "spacbeam", "Space Beam", - "spacduel", "Space Duel", - "spacea91", "Space Ace (DL2 Conversion) (US v1.3)", - "spacea91_13e", "Space Ace (DL2 Conversion) (Euro v1.3)", - "spaceace", "Space Ace (US Rev. A3)", - "spaceacea", "Space Ace (US Rev. A)", - "spaceacea2", "Space Ace (US Rev. A2)", - "spaceaceeuro", "Space Ace (European)", - "spaceat2", "Space Attack II (bootleg of Super Invaders)", - "spaceatt", "Space Attack (bootleg of Space Invaders)", - "spacebrd", "Space Bird (bootleg)", - "spacecho", "Space Echo (set 1)", - "spacecho2", "Space Echo (set 2)", - "spacecom", "Space Combat (bootleg of Space Invaders)", - "spacecr", "Space Cruiser", - "spacecty", "Space City", - "spacedem", "Space Demon", - "spacedx", "Space Invaders DX (US, v2.1)", - "spacedxj", "Space Invaders DX (Japan, v2.1)", - "spacedxo", "Space Invaders DX (Japan, v2.0)", - "spacefb", "Space Firebird (rev. 04-u)", - "spacefba", "Space Firebird (rev. 02-a)", - "spacefbb", "Space Firebird (bootleg)", - "spacefbe", "Space Firebird (rev. 03-e set 1)", - "spacefbe2", "Space Firebird (rev. 03-e set 2)", - "spacefbg", "Space Firebird (Gremlin)", - "spacefev", "Space Fever (New Ver.)", - "spacefevo", "Space Fever (Old Ver.)", - "spacefevo2", "Space Fever (Older Ver.)", - "spacefrt", "Space Fortress (CVS)", - "spaceftr", "Space Fortress (Zaccaria)", - "spaceg", "Space Guerrilla", - "spacegun", "Space Gun (World)", - "spacegunj", "Space Gun (Japan)", - "spacegunu", "Space Gun (US)", - "spacehaw", "Space Hawks", - "spaceint", "Space Intruder", - "spaceintj", "Space Intruder (Japan)", - "spaceinv", "Space Invaders", - "spacejam", "Space Jam", - "spacejmf", "Space Jam (France)", - "spacejmg", "Space Jam (Germany)", - "spacejmi", "Space Jam (Italy)", - "spacelnc", "Space Launcher", - "spacempr", "Space Empire (bootleg)", - "spaceod", "Space Odyssey (version 2)", - "spaceod2", "Space Odyssey (version 1)", - "spaceph", "Space Phantoms (bootleg of Ozma Wars)", - "spacepir", "Space Pirates v2.2", - "spaceplt", "Space Pilot", - "spacerng", "Space Ranger (bootleg of Space Invaders)", - "spaceshp", "Space Ship", - "spaceskr", "Space Seeker", - "spacetrk", "Space Trek (upright)", - "spacetrkc", "Space Trek (cocktail)", - "spacewar", "Space Wars", - "spacewin", "Scacco Matto / Space Win", - "spacewr3", "Space War Part 3", - "spacezap", "Space Zap", - "spacfury", "Space Fury (revision C)", - "spacfurya", "Space Fury (revision A)", - "spacfuryb", "Space Fury (revision B)", - "spacmiss", "Space Missile - Space Fighting Game", - "spacwalk", "Space Walk", - "spain82", "Spain '82", - "spang", "Super Pang (World 900914)", - "spangbl", "Super Pang (World 900914, bootleg)", - "spangj", "Super Pang (Japan 901023)", - "sparkman", "Spark Man (v2.0, set 1)", - "sparkmana", "Spark Man (v2.0, set 2)", - "sparkz", "Sparkz (prototype)", - "spartanx", "Spartan X (Japan)", - "spatter", "Spatter", - "spawn", "Spawn In the Demon's Hand (JPN, USA, EUR, ASI, AUS) (Rev B)", - "spbactn", "Super Pinball Action (US)", - "spbactnj", "Super Pinball Action (Japan)", - "spbactnp", "Super Pinball Action (prototype)", - "spcdrag", "Space Dragon (Moon Cresta bootleg, set 1)", - "spcdraga", "Space Dragon (Moon Cresta bootleg, set 2)", - "spceking", "Space King", - "spcenctr", "Space Encounters", - "spcewarl", "Space War (Leijac Corporation)", - "spcewars", "Space War (Sanritsu)", - "spcforc2", "Space Force (set 2)", - "spcforce", "Space Force (set 1)", - "spcfrcii", "Special Forces II", - "spcgambl", "Space Gambler", - "spcinv95", "Space Invaders '95: The Attack Of Lunar Loonies (Ver 2.5O 1995/06/14)", - "spcinv95u", "Space Invaders '95: The Attack Of Lunar Loonies (Ver 2.5A 1995/06/14)", - "spcinvdj", "Space Invaders DX (Ver 2.6J 1994/09/14) (F3 Version)", - "spcking2", "Space King 2", - "spclaser", "Space Laser", - "spclforc", "Special Forces", - "spclords", "Space Lords (rev C)", - "spclordsa", "Space Lords (rev A)", - "spclordsb", "Space Lords (rev B)", - "spclordsg", "Space Lords (rev A, German)", - "spcpostn", "Space Position (Japan)", - "spcrider", "Space Riders", - "spctbird", "Space Thunderbird", - "spdball", "Speed Ball - Contest at Neonworld (prototype)", - "spdcoin", "Speed Coin (prototype)", - "spdodgeb", "Super Dodge Ball (US)", - "speakesy", "Speakeasy", - "speakesy4p", "Speakeasy 4 Player", - "speakres", "Speak & Rescue", - "speakresb", "Speak & Rescue (bootleg)", - "spec2k", "Spectrum 2000 (Euro)", - "spec2kv", "Spectrum 2000 (vertical)", - "specforc", "Special Force", - "specfrce", "Special Forces Elite Training", - "spectar", "Spectar (revision 3)", - "spectar1", "Spectar (revision 1?)", - "spectra", "Spectra IV", - "spectrm", "Spectrum", - "spectrm4", "Spectrum (ver 4)", - "speedatk", "Speed Attack! (Japan)", - "speedbal", "Speed Ball", - "speeddrp", "Speed Drop (Ver. 1.06)", - "speeddrv", "Speed Driver", - "speedfrk", "Speed Freak", - "speedrcr", "Speed Racer", - "speedspn", "Speed Spin", - "speedup", "Speed Up (Version 1.20)", - "speglsht", "Super Eagle Shot", - "spellbnd", "Spellbound", - "spelunk2", "Spelunker II", - "spelunkr", "Spelunker", - "spelunkrj", "Spelunker (Japan)", - "spf2t", "Super Puzzle Fighter II Turbo (USA 960620)", - "spf2ta", "Super Puzzle Fighter II Turbo (Asia 960529)", - "spf2td", "Super Puzzle Fighter II Turbo (USA 960620 Phoenix Edition) (bootleg)", - "spf2th", "Super Puzzle Fighter II Turbo (Hispanic 960531)", - "spf2xj", "Super Puzzle Fighter II X (Japan 960531)", - "spf2xjd", "Super Puzzle Fighter II X (Japan 960531 Phoenix Edition) (bootleg)", - "spfghmk2", "Space Fighter Mark II (set 1)", - "spfghmk22", "Space Fighter Mark II (set 2)", - "spicaadv", "Spica Adventure (v2.03J)", - "spiceup", "Spice It Up (Konami Endeavour)", - "spidermn", "The Amazing Spider-Man", - "spiders", "Spiders (set 1)", - "spiders2", "Spiders (set 2)", - "spiders3", "Spiders (set 3)", - "spidman", "Spider-Man: The Videogame (World)", - "spidmanj", "Spider-Man: The Videogame (Japan)", - "spidmanu", "Spider-Man: The Videogame (US)", - "spielbud", "Spiel Bude (German)", - "spiero", "Super Pierrot (Japan)", - "spikeofe", "Spikeout Final Edition", - "spikeout", "Spikeout (Revision C)", - "spiker", "Spiker", - "spiker2", "Spiker (5/5/86)", - "spiker3", "Spiker (6/9/86)", - "spikes91", "1991 Spikes (Italian bootleg, set 1)", - "spikes91b", "1991 Spikes (Italian bootleg, set 2)", - "spinkick", "Hec's Spinkick", - "spinlbrk", "Spinal Breakers (World)", - "spinlbrkj", "Spinal Breakers (Japan)", - "spinlbrku", "Spinal Breakers (US)", - "spinmast", "Spin Master / Miracle Adventure", - "spinner", "Spinner", - "spirit", "Spirit", - "spitboss", "Super Pit Boss (9221-02A)", - "spk115it", "Super Poker (v115IT)", - "spk116it", "Super Poker (v116IT)", - "spkrbtl", "Spikers Battle (GDS-0005)", - "spkrform", "Super Poker (v100xD03) / Formosa", - "splash", "Splash! (Ver. 1.2 World)", - "splash10", "Splash! (Ver. 1.0 World)", - "splat", "Splat!", - "splatter", "Splatter House (World, new version (SH3))", - "splatter2", "Splatter House (World, old version (SH2))", - "splatterj", "Splatter House (Japan, SH1)", - "splitsec", "Split Second", - "splmastr", "Spell Master (Russia) (Atronic)", - "splndrbt", "Splendor Blast", - "spnchout", "Super Punch-Out!!", - "spnchoutj", "Super Punch-Out!! (Japan)", - "spooky", "Spooky Night 2nd Edition (Version 2.0.4)", - "spookyi", "Spooky (Italian speech)", - "spookyo", "Spooky Night (Version 1.0.1)", - "spookyp", "Spooky", - "spool3", "Super Pool III (English)", - "spool3i", "Super Pool III (I-Vics)", - "spool99", "Super Pool 99 (Version 0.36)", - "spool99a", "Super Pool 99 (Version 0.33)", - "spool99b", "Super Pool 99 (Version 0.31)", - "spool99c", "Super Pool 99 (Version 0.26)", - "spotty", "Spotty (Ver. 2.0.2)", - "sprbreak", "Spring Break", - "sprbreaks", "Spring Break (single ball game)", - "sprcros2", "Super Cross II (Japan, set 1)", - "sprcros2a", "Super Cross II (Japan, set 2)", - "sprglbpg", "Super Glob (Pac-Man hardware) (German bootleg)", - "sprglobp", "Super Glob (Pac-Man hardware)", - "springbd", "Springboard (bootleg of Circus)", - "springer", "Springer", - "sprint1", "Sprint 1", - "sprint2", "Sprint 2 (set 1)", - "sprint2a", "Sprint 2 (set 2)", - "sprint2h", "Sprint 2 (color kit, Italy)", - "sprint4", "Sprint 4 (set 1)", - "sprint4a", "Sprint 4 (set 2)", - "sprint8", "Sprint 8", - "sprint8a", "Sprint 8 (play tag & chase)", - "sprk_090", "South Park (0.90)", - "sprk_096", "South Park (0.96)", - "sprk_103", "South Park (1.03)", - "sprtauth", "Sports Authority", - "sprtjam", "Sports Jam (GDS-0003)", - "sprtmtch", "Sports Match", - "sprtshot", "Sports Shooting USA", - "spss4240", "S-Plus (SS4240) Coral Reef", - "spstn_l5", "Space Station (L-5)", - "spuzbobl", "Super Puzzle Bobble (V2.05O)", - "spuzboblj", "Super Puzzle Bobble (V2.04J)", - "spy", "S.P.Y. - Special Project Y (World ver. N)", - "spyhunt", "Spy Hunter", - "spyhunt2", "Spy Hunter II (rev 2)", - "spyhunt2a", "Spy Hunter II (rev 1)", - "spyhuntp", "Spy Hunter (Playtronic license)", - "spyhuntpr", "Spy Hunter (Spain, Recreativos Franco S.A. PCB)", - "spyhuntr", "Spy Hunter (Pinball)", - "spyu", "S.P.Y. - Special Project Y (US ver. M)", - "sqbert", "Faster, Harder, More Challenging Q*bert (prototype)", - "sqix", "Super Qix (World, Rev 2)", - "sqixb1", "Super Qix (bootleg set 1)", - "sqixb2", "Super Qix (bootleg set 2)", - "sqixr1", "Super Qix (World, Rev 1)", - "sqixu", "Super Qix (US)", - "squaitsa", "Squash (Itisa)", - "squash", "Squash (Ver. 1.0)", - "sraider", "Space Raider", - "srally2", "Sega Rally 2", - "srally2x", "Sega Rally 2 DX", - "srallyc", "Sega Rally Championship - TWIN (Revision C)", - "srallyca", "Sega Rally Championship - DX (Revision A)", - "srallycb", "Sega Rally Championship - TWIN (Revision B)", - "sranger", "Super Ranger (v2.0)", - "srangerb", "Super Ranger (older, bootleg)", - "srangern", "Super Ranger (older, NOVA license)", - "srangero", "Super Ranger (older)", - "srangerw", "Super Ranger (older, WDK license)", - "srdarwin", "Super Real Darwin (World)", - "srdarwinj", "Super Real Darwin (Japan)", - "srdmissn", "S.R.D. Mission", - "srmdb", "Sunset Riders (bootleg of Megadrive version)", - "srmp1", "Super Real Mahjong Part 1 (Japan)", - "srmp2", "Super Real Mahjong Part 2 (Japan)", - "srmp3", "Super Real Mahjong Part 3 (Japan)", - "srmp4", "Super Real Mahjong PIV (Japan)", - "srmp4o", "Super Real Mahjong PIV (Japan, older set)", - "srmp5", "Super Real Mahjong P5", - "srmp6", "Super Real Mahjong P6 (Japan)", - "srmp7", "Super Real Mahjong P7 (Japan)", - "srmvs", "Super Real Mahjong VS", - "srumbler", "The Speed Rumbler (set 1)", - "srumbler2", "The Speed Rumbler (set 2)", - "srumbler3", "The Speed Rumbler (set 3)", - "sryudens", "Mahjong Seiryu Densetsu (Japan, NM502)", - "ss2005", "Super Shanghai 2005 (GDL-0031)", - "ss2005a", "Super Shanghai 2005 (Rev A) (GDL-0031A)", - "ss_01", "Scared Stiff (D0.1R with sound rev.25)", - "ss_03", "Scared Stiff (0.3)", - "ss_12", "Scared Stiff (1.2)", - "ss_14", "Scared Stiff (1.4)", - "ss_15", "Scared Stiff (1.5)", - "ssanchan", "Sanrin San Chan (Japan)", - "sscandal", "Seishun Scandal (315-5132, Japan)", - "sscope", "Silent Scope (ver xxD, Ver 1.33)", - "sscope2", "Silent Scope 2", - "sscopea", "Silent Scope (ver xxA, Ver 1.00)", - "sscopeb", "Silent Scope (ver xxB, Ver 1.20)", - "sscopec", "Silent Scope (ver xxC, Ver 1.30)", - "sscopex", "Silent Scope EX (ver UAA)", - "ssf2", "Super Street Fighter II: The New Challengers (World 930911)", - "ssf2a", "Super Street Fighter II: The New Challengers (Asia 931005)", - "ssf2ar1", "Super Street Fighter II: The New Challengers (Asia 930914)", - "ssf2h", "Super Street Fighter II: The New Challengers (Hispanic 930911)", - "ssf2j", "Super Street Fighter II: The New Challengers (Japan 931005)", - "ssf2jr1", "Super Street Fighter II: The New Challengers (Japan 930911)", - "ssf2jr2", "Super Street Fighter II: The New Challengers (Japan 930910)", - "ssf2mdb", "Super Street Fighter II - The New Challengers (bootleg of Japanese MegaDrive version)", - "ssf2t", "Super Street Fighter II Turbo (World 940223)", - "ssf2ta", "Super Street Fighter II Turbo (Asia 940223)", - "ssf2tb", "Super Street Fighter II: The Tournament Battle (World 931119)", - "ssf2tbd", "Super Street Fighter II: The Tournament Battle (World 931119 Phoenix Edition) (bootleg)", - "ssf2tbh", "Super Street Fighter II: The Tournament Battle (Hispanic 931005)", - "ssf2tbj", "Super Street Fighter II: The Tournament Battle (Japan 930911)", - "ssf2tbr1", "Super Street Fighter II: The Tournament Battle (World 930911)", - "ssf2tu", "Super Street Fighter II Turbo (USA 940323)", - "ssf2tur1", "Super Street Fighter II Turbo (USA 940223)", - "ssf2u", "Super Street Fighter II: The New Challengers (USA 930911)", - "ssf2ud", "Super Street Fighter II: The New Challengers (USA 930911 Phoenix Edition) (bootleg)", - "ssf2xj", "Super Street Fighter II X: Grand Master Challenge (Japan 940223)", - "ssf2xjd", "Super Street Fighter II X: Grand Master Challenge (Japan 940223 Phoenix Edition) (bootleg)", - "ssf2xjr", "Super Street Fighter II X: Grand Master Challenge (Japan 940223 rent version)", - "ssfindo", "See See Find Out", - "sshangha", "Super Shanghai Dragon's Eye (Japan)", - "sshanghab", "Super Shanghai Dragon's Eye (World, bootleg)", - "sshootep", "Sharpshooter", - "sshooter", "Sharpshooter (Rev 1.9)", - "sshooter11", "Sharpshooter (Rev 1.1)", - "sshooter12", "Sharpshooter (Rev 1.2)", - "sshooter17", "Sharpshooter (Rev 1.7)", - "sshootr2", "Sharp Shooter II", - "sshot", "Super Shot", - "sshtl_l7", "Space Shuttle (L-7)", - "sshtlzac", "Space Shuttle (Zaccaria)", - "sshuttle", "Space Shuttle (Taito)", - "sshuttle1", "Space Shuttle (Taito) (alternate set)", - "ssi", "Super Space Invaders '91 (World, Rev 1)", - "ssia", "Super Space Invaders '91 (World)", - "ssideki", "Super Sidekicks / Tokuten Ou", - "ssideki2", "Super Sidekicks 2 - The World Championship / Tokuten Ou 2 - real fight football (NGM-061)(NGH-061)", - "ssideki3", "Super Sidekicks 3 - The Next Glory / Tokuten Ou 3 - eikou e no michi", - "ssideki4", "The Ultimate 11 - The SNK Football Championship / Tokuten Ou - Honoo no Libero", - "ssingles", "Swinging Singles", - "ssipkr24", "SSI Poker (v2.4)", - "ssipkr30", "SSI Poker (v3.0)", - "ssipkr40", "SSI Poker (v4.0)", - "ssjkrpkr", "Southern Systems Joker Poker", - "sslam", "Super Slam (set 1)", - "sslama", "Super Slam (set 2)", - "ssmissin", "S.S. Mission", - "ssoldier", "Superior Soldiers (US)", - "ssozumo", "Syusse Oozumou (Japan)", - "sspac2k1", "Super Space 2001", - "sspacaho", "Space Attack / Head On", - "sspaceat", "Space Attack (upright set 1)", - "sspaceat2", "Space Attack (upright set 2)", - "sspaceat3", "Space Attack (upright set 3)", - "sspaceatc", "Space Attack (cocktail)", - "sspeedr", "Super Speed Race", - "sspiritj", "Scramble Spirits (Japan, Floppy DS3-5000-02-REV-A Based)", - "sspirits", "Scramble Spirits (World, Floppy Based)", - "sspirtfc", "Scramble Spirits (World, Floppy Based, FD1094 317-0058-02c)", - "ssprint", "Super Sprint (rev 4)", - "ssprint1", "Super Sprint (rev 1)", - "ssprint3", "Super Sprint (rev 3)", - "ssprintf", "Super Sprint (French)", - "ssprintg", "Super Sprint (German, rev 2)", - "ssprintg1", "Super Sprint (German, rev 1)", - "ssprints", "Super Sprint (Spanish)", - "ssriders", "Sunset Riders (4 Players ver EAC)", - "ssriders2", "Sunset Riders 2 (bootleg 4 Players ver ADD)", - "ssridersabd", "Sunset Riders (2 Players ver ABD)", - "ssridersadd", "Sunset Riders (4 Players ver ADD)", - "ssridersb", "Sunset Riders (bootleg 4 Players ver ADD)", - "ssriderseaa", "Sunset Riders (4 Players ver EAA)", - "ssridersebc", "Sunset Riders (2 Players ver EBC)", - "ssridersebd", "Sunset Riders (2 Players ver EBD)", - "ssridersjac", "Sunset Riders (4 Players ver JAC)", - "ssridersjbd", "Sunset Riders (2 Players ver JBD)", - "ssridersuab", "Sunset Riders (4 Players ver UAB)", - "ssridersuac", "Sunset Riders (4 Players ver UAC)", - "ssridersubc", "Sunset Riders (2 Players ver UBC)", - "ssridersuda", "Sunset Riders (4 Players ver UDA)", - "ssrj", "Super Speed Race Junior (Japan)", - "sss", "Steep Slope Sliders (JUET 981110 V1.000)", - "sst", "Supersonic", - "sstar", "Super Star", - "sstar97", "Super Star '97 (version V153B)", - "sstarbtl", "Super Star Battle", - "sstarcrs", "Super Star Crest", - "sstingry", "Super Stingray (Japan)", - "sstrangr", "Space Stranger", - "sstrangr2", "Space Stranger 2", - "sstrike", "Super Strike Bowling", - "sstriker", "Sorcer Striker (set 1)", - "sstrikera", "Sorcer Striker (set 2)", - "sstrkfgt", "Sega Strike Fighter (Rev A)", - "ssvc_a26", "Secret Service (2.6)", - "ssvc_b26", "Secret Service (2.6 alternate sound)", - "st_game", "unknown pinball game", - "st_ohla", "Oh La La (Stella)", - "st_vulkn", "Vulkan (Stella)", - "stactics", "Space Tactics", - "stadhero", "Stadium Hero (Japan)", - "stadhr96", "Stadium Hero '96 (World, EAJ)", - "stadhr96j", "Stadium Hero '96 (Japan, EAD)", - "stagger1", "Stagger I (Japan)", - "stakwin", "Stakes Winner / Stakes Winner - GI kinzen seiha e no michi", - "stakwin2", "Stakes Winner 2", - "starblad", "Starblade (World)", - "starbladj", "Starblade (Japan)", - "starcas", "Star Castle (version 3)", - "starcas1", "Star Castle (older)", - "starcase", "Star Castle (Mottoeis)", - "starcasp", "Star Castle (prototype)", - "starcrus", "Star Cruiser", - "starfght", "Star Fighter", - "starfgmc", "Starfighter (Moon Cresta bootleg)", - "starfigh", "Star Fighter (v1)", - "starfir2", "Star Fire 2", - "starfire", "Star Fire (set 1)", - "starfirea", "Star Fire (set 2)", - "starfirp", "Star Fire", - "starforc", "Star Force", - "starforca", "Star Force (encrypted, set 2)", - "starforcb", "Star Force (encrypted, bootleg)", - "starforce", "Star Force (encrypted, set 1)", - "stargate", "Stargate", - "stargatp", "Stargate (Pinball)", - "stargatp1", "Stargate (rev.1)", - "stargatp2", "Stargate (rev.2)", - "stargatp3", "Stargate (rev.3)", - "stargatp4", "Stargate (rev.4)", - "starglad", "Star Gladiator Episode I: Final Crusade (USA 960627)", - "stargladj", "Star Gladiator Episode I: Final Crusade (Japan 960627)", - "stargld2", "Star Gladiator 2: Nightmare of Bilstein (Japan 980316)", - "stargod", "Star God", - "stargoda", "Star God (alternate sound)", - "stargrds", "Star Guards", - "stargzr", "Stargazer", - "starhawk", "Star Hawk", - "starhrcl", "Star Horse (client)", - "starhrct", "Star Horse (server)", - "starhrse", "Star Horse (big screens)", - "starhrsp", "Star Horse Progress (Rev A)", - "starjack", "Star Jacker (Sega)", - "starjacks", "Star Jacker (Stern Electronics)", - "starlstr", "Vs. Star Luster", - "starrace", "Star Race", - "starrkr", "Star Raker", - "stars", "Stars", - "starseek", "Doki Doki Idol Star Seeker (GDL-0005)", - "starshot", "Star Shooter", - "starshp1", "Starship 1", - "starshpp", "Starship 1 (prototype?)", - "starsldr", "Star Soldier: Vanishing Earth", - "starspnr", "Starspinner (Dutch/Nederlands)", - "starswep", "Star Sweep (Japan, STP1/VER.A)", - "startrek", "Star Trek", - "startrep", "Star Trek (Pinball)", - "startrgn", "Star Trigon (Japan, STT1 Ver.A)", - "startrip", "Star Trip", - "startrkd", "Star Trek (Defender bootleg)", - "startrp", "Starship Troopers", - "starw", "Star Wars (bootleg of Galaxy Wars, set 1)", - "starw1", "Star Wars (bootleg of Galaxy Wars, set 2)", - "starwarr", "Star Warrior", - "starwars", "Star Wars (rev 2)", - "starwars1", "Star Wars (rev 1)", - "starzan", "Super Tarzan (Italy, V100I)", - "statriv2", "Triv Two", - "statriv2v", "Triv Two (Vertical)", - "statriv4", "Triv Four", - "statusbj", "Status Black Jack (V1.0c)", - "stcc", "Sega Touring Car Championship", - "stcca", "Sega Touring Car Championship (Revision A)", - "stccb", "Sega Touring Car Championship (Revision B)", - "stdragon", "Saint Dragon (set 1)", - "stdragona", "Saint Dragon (set 2)", - "stealsee", "Steal See", - "steaser", "Strip Teaser (Italy, Ver. 1.22)", - "steeltal", "Steel Talons (rev 2)", - "steeltal1", "Steel Talons (rev 1)", - "steeltalg", "Steel Talons (German, rev 2)", - "steeltalp", "Steel Talons (prototype)", - "steelwkr", "Steel Worker", - "steeplec", "Steeplechase [TTL]", - "stellcas", "Stellar Castle (Elettronolo)", - "stellecu", "Stelle e Cubi (Italy)", - "step3", "Stepping 3 Superior", - "stepstag", "Stepping Stage Special", - "stera", "Steraranger (Moon Cresta bootleg)", - "stest", "Speed Test", - "stfight", "Street Fight (Germany)", - "stfighta", "Street Fight (bootleg?)", - "stg", "Strike Gunner S.T.G", - "stillcra", "Still Crazy", - "stinger", "Stinger", - "stinger2", "Stinger (prototype?)", - "stingray", "Stingray", - "stisub", "Treasure Bonus (Subsino, v1.6)", - "stk_sprs", "Strikes and Spares", - "stkclmns", "Stack Columns (World)", - "stkclmnsj", "Stack Columns (Japan)", - "stlforce", "Steel Force", - "stlwr_l2", "Stellar Wars (L-2)", - "stmblade", "Storm Blade (US)", - "stntcycl", "Stunt Cycle [TTL]", - "stocker", "Stocker (3/19/85)", - "stoffy", "Super Toffy", - "stoffyu", "Super Toffy (Unico license)", - "stompin", "Stompin' (4/4/86)", - "stoneage", "Stoneage (bootleg of Caveman Ninja)", - "stonebal", "Stone Ball (4 Players)", - "stonebal2", "Stone Ball (2 Players)", - "storming", "Storming Party / Riku Kai Kuu Saizensen", - "strahl", "Koutetsu Yousai Strahl (Japan set 1)", - "strahla", "Koutetsu Yousai Strahl (Japan set 2)", - "strapids", "Shooting the Rapids", - "stratab", "Strata Bowling (V3)", - "stratab1", "Strata Bowling (V1)", - "stratgys", "Strategy X (Stern Electronics)", - "stratgyx", "Strategy X", - "stratof", "Raiga - Strato Fighter (US)", - "stratvox", "Stratovox", - "stratvoxb", "Stratovox (bootleg)", - "strax_p7", "Star Trax (domestic prototype)", - "streakng", "Streaking (set 1)", - "streaknga", "Streaking (set 2)", - "streetg", "Street Games (Revision 4)", - "streetg2", "Street Games II (Revision 7C)", - "streetg2r5", "Street Games II (Revision 5)", - "streetgr3", "Street Games (Revision 3)", - "streetsm", "Street Smart (US version 2)", - "streetsm1", "Street Smart (US version 1)", - "streetsmj", "Street Smart (Japan version 1)", - "streetsmw", "Street Smart (World version 1)", - "stress", "Stress Busters (J 981020 V1.000)", - "strfbomb", "Strafe Bomb (bootleg of Scramble)", - "strhoop", "Street Hoop / Street Slam / Dunk Dream (DEM-004)(DEH-004)", - "strider", "Strider (USA, B-Board 89624B-2)", - "strider2", "Strider 2 (USA 991213)", - "strider2a", "Strider 2 (Asia 991213)", - "striderj", "Strider Hiryu (Japan)", - "striderjr", "Strider Hiryu (Japan Resale Ver.)", - "striderua", "Strider (USA, B-Board 89624B-3)", - "strik_l4", "Strike Master (L-4)", - "strike", "Strike", - "striker", "Striker", - "strikext", "Striker Xtreme (1.02)", - "striv", "Super Triv", - "strkfgtr", "Strike Fighter (World)", - "strkfgtrj", "Strike Fighter (Japan)", - "strkforc", "Strike Force (rev 1 02/25/91)", - "strknew", "Striker Xtreme (ARM7 Sound Board)", - "strkzone", "Strike Zone Baseball", - "strlink", "Strong Link (Russia) (Extrema)", - "strlt_l1", "Star Light (L-1)", - "strngsci", "Strange Science", - "strnskil", "Strength & Skill", - "strongx", "Strong X", - "strsphnx", "Star's Phoenix (Italian speech)", - "strtdriv", "Street Drivin' (prototype)", - "strtheat", "Street Heat", - "strvmstr", "Super Trivia Master", - "strxt_fr", "Striker Xtreme (France)", - "strxt_gr", "Striker Xtreme (Germany)", - "strxt_it", "Striker Xtreme (Italy)", - "strxt_sp", "Striker Xtreme (Spain)", - "strxt_uk", "Striker Xtreme (UK)", - "sttng_g7", "Star Trek: The Next Generation (LG-7)", - "sttng_l1", "Star Trek: The Next Generation (LX-1)", - "sttng_l2", "Star Trek: The Next Generation (LX-2)", - "sttng_l7", "Star Trek: The Next Generation (LX-7)", - "sttng_p5", "Star Trek: The Next Generation (P-5)", - "sttng_s7", "Star Trek: The Next Generation (LX-7) SP1", - "sttng_x7", "Star Trek: The Next Generation (LX-7 Special)", - "stunrun", "S.T.U.N. Runner (rev 6)", - "stunrun0", "S.T.U.N. Runner (rev 0)", - "stunrun2", "S.T.U.N. Runner (rev 2)", - "stunrun2e", "S.T.U.N. Runner (rev 2, Europe)", - "stunrun3", "S.T.U.N. Runner (rev 3)", - "stunrun3e", "S.T.U.N. Runner (rev 3, Europe)", - "stunrun4", "S.T.U.N. Runner (rev 4)", - "stunrun5", "S.T.U.N. Runner (rev 5)", - "stunrune", "S.T.U.N. Runner (rev 5, Europe)", - "stunrunj", "S.T.U.N. Runner (rev 7, Japan)", - "stunrunp", "S.T.U.N. Runner (upright prototype)", - "stuntair", "Stunt Air", - "stvbios", "ST-V Bios", - "stwr_102", "Star Wars (1.02)", - "stwr_103", "Star Wars (1.03)", - "stwr_a14", "Star Wars (Display Rev.1.04)", - "stwr_e12", "Star Wars (1.02 England)", - "stwr_g11", "Star Wars (1.01 Germany)", - "styphp", "Stunt Typhoon Plus", - "su2000", "SU2000", - "sub", "Submarine (Sigma)", - "subhunt", "Sub Hunter", - "submar", "Submarine (Midway)", - "subroc3d", "Subroc-3D", - "subs", "Subs", - "sucasino", "Super Casino", - "suchie3", "Idol Janshi Suchie-Pai 3 (JPN)", - "suchipi", "Idol Janshi Suchie-Pai Special (Japan)", - "suikoenb", "Suiko Enbu / Outlaws of the Lost Dynasty (JUETL 950314 V2.001)", - "sukuinuf", "Quiz and Variety Suku Suku Inufuku 2 (IN2 Ver. A)", - "sultanw", "Sultan's Wish (Konami Endeavour)", - "sunaq", "SunA Quiz 6000 Academy (940620-6)", - "sundance", "Sundance", - "supbtime", "Super Burger Time (World, set 1)", - "supbtimea", "Super Burger Time (World, set 2)", - "supbtimej", "Super Burger Time (Japan)", - "supcrash", "Super Crash (bootleg of Head On)", - "supdrapo", "Super Draw Poker (set 1)", - "supdrapoa", "Super Draw Poker (set 2)", - "supdrapob", "Super Draw Poker (bootleg)", - "super21", "Super Twenty One", - "super9", "Super Nove (Playmark)", - "superabc", "Super ABC (Pac-Man multigame kit, Sep. 03 1999)", - "superabco", "Super ABC (Pac-Man multigame kit, Mar. 08 1999)", - "superbar", "Super Bar", - "superbik", "Superbike", - "superbon", "Agent Super Bond (Super Cobra conversion)", - "superbug", "Super Bug", - "superbwl", "Super Bowl (Version 16.03B)", - "superchs", "Super Chase - Criminal Termination (World)", - "superchsj", "Super Chase - Criminal Termination (Japan)", - "superchsp", "Super Chase - Criminal Termination (1992/10/26 20:24:29 CHASE 3 VER 1.1, prototype)", - "superchsu", "Super Chase - Criminal Termination (US)", - "supercrd", "Super Card (encrypted)", - "superdbl", "Super Double (French)", - "superdbz", "Super Dragon Ball Z (DB1 Ver. B)", - "superdix", "Super Dixieland (Bingo)", - "superdq", "Super Don Quix-ote (Long Scenes)", - "superdqa", "Super Don Quix-ote (Short Scenes, Alt)", - "superdqs", "Super Don Quix-ote (Short Scenes)", - "superg", "Super Galaxians (galaxiana hack)", - "supergm3", "Super Game III", - "supergx", "Super GX", - "superinv", "Super Invaders (bootleg set 1)", - "superman", "Superman (World)", - "supermanj", "Superman (Japan)", - "supermanu", "Superman (US)", - "supermap", "Superman (Pinball)", - "superpac", "Super Pac-Man", - "superpacm", "Super Pac-Man (Midway)", - "superspy", "The Super Spy (NGM-011)(NGH-011)", - "superten", "Super Ten V8.3", - "supertnk", "Super Tank", - "supertr2", "Super Triv II", - "supertr3", "Super Triv III", - "superwng", "Super Wing", - "superx", "Super-X (NTC)", - "superxm", "Super-X (Mitchell)", - "supjolly", "Super Jolly", - "suplup", "Super Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 4.0 / 990518)", - "supmodel", "Super Model", - "supnudg2", "Super Nudger II - P173 (Version 5.21)", - "suprball", "Super Ball (Version 1.3)", - "suprbowl", "Super Bowl", - "suprglob", "Super Glob", - "suprgolf", "Super Crowns Golf (Japan)", - "suprheli", "Super Heli (Super Cobra bootleg)", - "suprleag", "Super League (FD1094 317-0045)", - "suprloco", "Super Locomotive (Rev.A)", - "suprlocoo", "Super Locomotive", - "suprmatk", "Super Missile Attack (for rev 1)", - "suprmatkd", "Super Missile Attack (not encrypted)", - "suprmous", "Super Mouse", - "suprmrio", "Vs. Super Mario Bros. (set SM4-4 E)", - "suprmrioa", "Vs. Super Mario Bros. (set ?, harder)", - "suprmriobl", "Vs. Super Mario Bros. (bootleg with Z80, set 1)", - "suprmriobl2", "Vs. Super Mario Bros. (bootleg with Z80, set 2)", - "suprnova", "Super Nova", - "suprpick", "Super Picker", - "suprpokr", "Super Poker (Version 10.19S)", - "suprpokra", "Super Poker (Version 10.15S)", - "suprpokrb", "Super Poker (Version 10.10)", - "suprpool", "Super Pool (9743 rev.01)", - "suprridr", "Super Rider", - "suprslam", "From TV Animation Slam Dunk - Super Slams", - "suprstar", "Super Stars", - "suprtrio", "Super Trio", - "supxevs", "Vs. Super Xevious", - "suratk", "Surprise Attack (World ver. K)", - "suratka", "Surprise Attack (Asia ver. L)", - "suratkj", "Surprise Attack (Japan ver. M)", - "sureshop", "Sure Shot (Pinball)", - "sureshot", "Sure Shot", - "surfnsaf", "Surf'n Safari", - "surfplnt", "Surf Planet (Version 4.1)", - "surfplnt40", "Surf Planet (Version 4.0)", - "survarts", "Survival Arts (World)", - "survartsj", "Survival Arts (Japan)", - "survartsu", "Survival Arts (USA)", - "survival", "Survival", - "susume", "Susume! Taisen Puzzle-Dama (GV027 Japan 1.20)", - "sutapper", "Tapper (Suntory)", - "suzuk8h2", "Suzuka 8 Hours 2 (World, Rev B)", - "suzuk8h2j", "Suzuka 8 Hours 2 (Japan, Rev B)", - "suzuka8h", "Suzuka 8 Hours (World, Rev C)", - "suzuka8hj", "Suzuka 8 Hours (Japan, Rev B)", - "suzume", "Watashiha Suzumechan (Japan)", - "svc", "SNK vs. Capcom - SVC Chaos (NGM-2690)(NGH-2690)", - "svcboot", "SNK vs. Capcom - SVC Chaos (bootleg)", - "svcpcb", "SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 1)", - "svcpcba", "SNK vs. Capcom - SVC Chaos (JAMMA PCB, set 2)", - "svcplus", "SNK vs. Capcom - SVC Chaos Plus (bootleg set 1)", - "svcplusa", "SNK vs. Capcom - SVC Chaos Plus (bootleg set 2)", - "svcsplus", "SNK vs. Capcom - SVC Chaos Super Plus (bootleg)", - "svf", "Super Visual Football: European Sega Cup", - "svg", "S.V.G. - Spectral vs Generation (M68k label V200) (ARM label V200, ROM 10/11/05 S.V.G V201)", - "svgpcb", "S.V.G. - Spectral vs Generation (M68k label V100JP) (ARM label V100JP ROM 05/12/05 S.V.G V100) (Japan, JAMMA PCB)", - "svolley", "Super Volleyball (Japan)", - "svolleybl", "Super Volleyball (bootleg)", - "svolleyk", "Super Volleyball (Korea)", - "svolleyu", "Super Volleyball (US)", - "svolly91", "Super Volley '91 (Japan)", - "svs", "Super Visual Soccer: Sega Cup (US)", - "swa", "Star Wars Arcade", - "swarm", "Swarm (bootleg?)", - "swat", "SWAT (315-5048)", - "swatpolc", "SWAT Police", - "swcourt", "Super World Court (World)", - "swcourtj", "Super World Court (Japan)", - "swe1pb", "Pinball 2000: Star Wars Episode 1", - "sweetgal", "Sweet Gal (Japan 850510 SWG 1-02)", - "sweetl", "Sweet Life (041220 World)", - "sweetl2", "Sweet Life 2 (071217 Russia)", - "sweetl2_2", "Sweet Life 2 (080320 World)", - "sweetl2_2a", "Sweet Life 2 (bootleg, 080320, banking address hack set 1)", - "sweetl2_2b", "Sweet Life 2 (bootleg, 080320, banking address hack set 2)", - "sweetl2_2c", "Sweet Life 2 (bootleg, 080320, VIDEO GAME-1 MD01)", - "sweetl2_2d", "Sweet Life 2 (bootleg, 080320, LOTTOGAME (I))", - "sweetl2_3", "Sweet Life 2 (090525 Lottery)", - "sweetl2_4", "Sweet Life 2 (090812 Entertainment)", - "sweetl_2", "Sweet Life (070412 Russia)", - "sweetla", "Sweet Life (bootleg, 041220, backdoor)", - "sweetlb", "Sweet Life (bootleg, 041220, banking address hack, changed version text)", - "swimmer", "Swimmer (set 1)", - "swimmera", "Swimmer (set 2)", - "swimmerb", "Swimmer (set 3)", - "swingin", "Swingin In The Green (Russia)", - "swisspkr", "Swiss Poker ('50 SG-.10', V2.5)", - "swrds_l2", "Swords of Fury (L-2)", - "sws", "Super World Stadium (Japan)", - "sws2000", "Super World Stadium 2000 (Japan, SS01/VER.A)", - "sws2001", "Super World Stadium 2001 (Japan, SS11/VER.A)", - "sws92", "Super World Stadium '92 (Japan)", - "sws92g", "Super World Stadium '92 Gekitouban (Japan)", - "sws93", "Super World Stadium '93 (Japan)", - "sws95", "Super World Stadium '95 (Japan)", - "sws96", "Super World Stadium '96 (Japan)", - "sws97", "Super World Stadium '97 (Japan)", - "sws98", "Super World Stadium '98 (Japan, SS81/VER.A)", - "sws99", "Super World Stadium '99 (Japan, SS91/VER.A3)", - "swthrt2v", "Sweet Hearts II (01J01986, Venezuela)", - "swtht2nz", "Sweet Hearts II (1VXFC5461, New Zealand)", - "swtril41", "Star Wars Trilogy (4.01)", - "swtril43", "Star Wars Trilogy (4.03)", - "swtrilgy", "Star Wars Trilogy (Revision A)", - "swtrilgya", "Star Wars Trilogy", - "sxevious", "Super Xevious", - "sxeviousj", "Super Xevious (Japan)", - "sxyreac2", "Pachinko Sexy Reaction 2 (Japan)", - "sxyreact", "Pachinko Sexy Reaction (Japan)", - "sys1test", "System 1 Test prom", - "sys246", "System 246 BIOS", - "sys256", "System 256 BIOS", - "sys573", "System 573 BIOS", - "syvalion", "Syvalion (Japan)", - "syvalionp", "Syvalion (World, prototype)", - "szaxxon", "Super Zaxxon (315-5013)", - "szone_l2", "Strike Zone (Shuffle) (L-2)", - "szone_l5", "Strike Zone (Shuffle) (L-5)", - "t2_l2", "Terminator 2: Judgment Day (L-2)", - "t2_l3", "Terminator 2: Judgment Day (L-3)", - "t2_l4", "Terminator 2: Judgment Day (L-4)", - "t2_l6", "Terminator 2: Judgment Day (L-6)", - "t2_l8", "Terminator 2: Judgment Day (L-8)", - "t2_p2f", "Terminator 2: Judgment Day (P-2F) Profanity", - "t3new", "Terminator 3: Rise of the Machines (ARM7 Sound Board)", - "tacscan", "Tac/Scan", - "tactcian", "Tactician (set 1)", - "tactcian2", "Tactician (set 2)", - "taf_h4", "The Addams Family (H-4)", - "taf_l1", "The Addams Family (L-1)", - "taf_l2", "The Addams Family (L-2)", - "taf_l3", "The Addams Family (L-3)", - "taf_l4", "The Addams Family (L-4)", - "taf_l5", "The Addams Family (L-5)", - "taf_l6", "The Addams Family (L-6)", - "taf_l7", "The Addams Family (Prototype L-5) (L-7)", - "taf_p2", "The Addams Family (Prototype) (P-2)", - "tafg_h3", "The Addams Family Special Collectors Edition (H-3)", - "tafg_la2", "The Addams Family Special Collectors Edition (LA-2)", - "tafg_la3", "The Addams Family Special Collectors Edition (LA-3)", - "tafg_lx3", "The Addams Family Special Collectors Edition Gold (LX-3)", - "tagteam", "Tag Team Wrestling", - "tagteamp", "Tag-Team Wrestling", - "tagteamp2", "Tag-Team Wrestling (rev.2)", - "taiko10", "Taiko No Tatsujin 10 (T101001-NA-A)", - "taiko9", "Taiko No Tatsujin 9 (TK91001-NA-A)", - "tail2nos", "Tail to Nose - Great Championship", - "tailg", "Tailgunner", - "taitest", "Taito Test Fixture", - "taitofx1", "Taito FX1", - "taitogn", "Taito GNET", - "taitotz", "Type Zero BIOS", - "taiwanmb", "Taiwan Mahjong [BET] (Japan 881208)", - "tajmah", "Tajmahal (Russia) (Atronic)", - "take5", "Take 5 [TTL]", - "takefive", "Take Five", - "takoron", "Noukone Puzzle Takoron (GDL-0042)", - "talbot", "Talbot", - "tangtang", "Tang Tang (ver. 0526, 26/05/2000)", - "tank", "Tank/Tank II [TTL]", - "tank8", "Tank 8 (set 1)", - "tank8a", "Tank 8 (set 2)", - "tank8b", "Tank 8 (set 3)", - "tank8c", "Tank 8 (set 4)", - "tank8d", "Tank 8 (set 5)", - "tankbatl", "Tank Battle (prototype rev. 4/21/92)", - "tankbatt", "Tank Battalion", - "tankbattb", "Tank Battalion (bootleg)", - "tankbust", "Tank Busters", - "tankfrce", "Tank Force (US, 2 Player)", - "tankfrce4", "Tank Force (US, 4 Player)", - "tankfrcej", "Tank Force (Japan)", - "tantr", "Puzzle & Action: Tant-R (Japan)", - "tantrbl", "Puzzle & Action: Tant-R (Japan) (bootleg set 1)", - "tantrbl2", "Puzzle & Action: Tant-R (Japan) (bootleg set 2)", - "tantrbl3", "Puzzle & Action: Tant-R (Japan) (bootleg set 3)", - "tantrkor", "Puzzle & Action: Tant-R (Korea)", - "taotaido", "Tao Taido (set 1)", - "taotaidoa", "Tao Taido (set 2)", - "tapatune", "Tap a Tune", - "tapper", "Tapper (Budweiser, set 1)", - "tappera", "Tapper (Budweiser, set 2)", - "targ", "Targ", - "targc", "Targ (cocktail?)", - "targeth", "Target Hits (ver 1.1)", - "targetha", "Target Hits (ver 1.0)", - "tarzan", "Tarzan (V109C)", - "tarzana", "Tarzan (V107)", - "tattack", "Time Attacker", - "tattass", "Tattoo Assassins (US prototype)", - "tattassa", "Tattoo Assassins (Asia prototype)", - "taurs_l1", "Taurus (Shuffle) (L-1)", - "taxi_l3", "Taxi (Marilyn) (L-3)", - "taxi_l4", "Taxi (Lola) (L-4)", - "taxi_lg1", "Taxi (Marilyn) (L-1) Germany", - "taxidriv", "Taxi Driver", - "tazmani2", "Tazz-Mania (set 2, alt hardware)", - "tazmania", "Tazz-Mania (set 1)", - "tazzmang", "Tazz-Mania (bootleg on Galaxian hardware)", - "tblkkuzu", "The Block Kuzushi (Japan)", - "tbowl", "Tecmo Bowl (World)", - "tbowlj", "Tecmo Bowl (Japan)", - "tbowlp", "Tecmo Bowl (World, prototype?)", - "tbyahhoo", "Twin Bee Yahhoo! (ver JAA)", - "tceptor", "Thunder Ceptor", - "tceptor2", "Thunder Ceptor II", - "tcl", "Taiwan Chess Legend", - "tcobra2", "Twin Cobra II (Ver 2.1O 1995/11/30)", - "tcobra2u", "Twin Cobra II (Ver 2.1A 1995/11/30)", - "tdawg_l1", "Top Dawg (Shuffle) (L-1)", - "tdfever", "TouchDown Fever (US)", - "tdfever2", "TouchDown Fever 2", - "tdfeverj", "TouchDown Fever (Japan)", - "tdoboon", "Taihou de Doboon", - "tdpgal", "Triple Draw Poker", - "tdragon", "Thunder Dragon (9th Jan. 1992)", - "tdragon1", "Thunder Dragon (4th Jun. 1991)", - "tdragon2", "Thunder Dragon 2 (9th Nov. 1993)", - "tdragon2a", "Thunder Dragon 2 (1st Oct. 1993)", - "tdragonb", "Thunder Dragon (bootleg)", - "tduno", "Touch de Uno! / Unou Nouryoku Check Machine", - "tduno2", "Touch de Uno! 2", - "te0144", "Puzzle Bobble (Italian Gambling Game)", - "teamqb", "John Elway's Team Quarterback (set 1)", - "teamqb2", "John Elway's Team Quarterback (set 2)", - "techbowl", "Technical Bowling (J 971212 V1.000)", - "techromn", "Tech Romancer (Euro 980914)", - "techromnu", "Tech Romancer (USA 980914)", - "tecmowcm", "Tecmo World Cup Millennium (Japan)", - "teddybb", "TeddyBoy Blues (315-5115, New Ver.)", - "teddybbo", "TeddyBoy Blues (315-5115, Old Ver.)", - "teddybbobl", "TeddyBoy Blues (Old Ver. bootleg)", - "teedoff", "Tee'd Off (Japan)", - "teedoffp", "Tee'd Off", - "teedoffp1", "Tee'd Off (rev.1)", - "teedoffp3", "Tee'd Off (rev.3)", - "teetert", "Teeter Torture (prototype)", - "tehkanwc", "Tehkan World Cup (set 1)", - "tehkanwcb", "Tehkan World Cup (set 2, bootleg?)", - "tehkanwcc", "Tehkan World Cup (set 3, bootleg)", - "tekipaki", "Teki Paki", - "tekken", "Tekken (World, TE4/VER.C)", - "tekken2", "Tekken 2 Ver.B (US, TES3/VER.D)", - "tekken2aa", "Tekken 2 (Asia, TES2/VER.A)", - "tekken2ab", "Tekken 2 Ver.B (Asia, TES2/VER.B)", - "tekken2jb", "Tekken 2 Ver.B (Japan, TES1/VER.B)", - "tekken2jc", "Tekken 2 Ver.B (Japan, TES1/VER.C)", - "tekken2ub", "Tekken 2 Ver.B (US, TES3/VER.B)", - "tekken3", "Tekken 3 (Japan, TET1/VER.E1)", - "tekken3aa", "Tekken 3 (Asia, TET2/VER.A)", - "tekken3ab", "Tekken 3 (Asia, TET2/VER.B)", - "tekken3ae", "Tekken 3 (Asia, TET2/VER.E1)", - "tekken3ja", "Tekken 3 (Japan, TET1/VER.A)", - "tekken3ua", "Tekken 3 (US, TET3/VER.A)", - "tekken3ud", "Tekken 3 (US, TET3/VER.D)", - "tekken4", "Tekken 4 (TEF3 Ver. C)", - "tekken4a", "Tekken 4 (TEF2 Ver. A)", - "tekken4b", "Tekken 4 (TEF1 Ver. A)", - "tekken4c", "Tekken 4 (TEF1 Ver. C)", - "tekken51", "Tekken 5.1 (TE51 Ver. B)", - "tekkenab", "Tekken (Asia, TE2/VER.B)", - "tekkenac", "Tekken (Asia, TE2/VER.C)", - "tekkenjb", "Tekken (Japan, TE1/VER.B)", - "tektagt", "Tekken Tag Tournament (US, TEG3/VER.C1)", - "tektagtac", "Tekken Tag Tournament (Asia, TEG2/VER.C1, set 1)", - "tektagtac1", "Tekken Tag Tournament (Asia, TEG2/VER.C1, set 2)", - "tektagtja", "Tekken Tag Tournament (Japan, TEG1/VER.A3)", - "tektagtjb", "Tekken Tag Tournament (Japan, TEG1/VER.B)", - "tektagtjc1", "Tekken Tag Tournament (Japan, TEG1/VER.C1)", - "tektagtub", "Tekken Tag Tournament (US, TEG3/VER.B)", - "teljan", "Tel Jan", - "telmahjn", "Telephone Mahjong (Japan 890111)", - "tempest", "Tempest (rev 3, Revised Hardware)", - "tempest1", "Tempest (rev 1)", - "tempest1r", "Tempest (rev 1, Revised Hardware)", - "tempest2", "Tempest (rev 2)", - "tempest3", "Tempest (rev 3)", - "temptube", "Tempest Tubes", - "tenballs", "Ten Balls (Ver 1.05)", - "tengai", "Tengai (World)", - "tengaij", "Sengoku Blade: Sengoku Ace Episode II / Tengai", - "tenkai", "Mahjong Tenkaigen", - "tenkai2b", "Mahjong Tenkaigen Part 2 (bootleg)", - "tenkaibb", "Mahjong Tenkaigen (bootleg b)", - "tenkaicb", "Mahjong Tenkaigen (bootleg c)", - "tenkaid", "Mahjong Tenkaigen (set 1)", - "tenkaie", "Mahjong Tenkaigen (set 2)", - "tenkomor", "Tenkomori Shooting (Asia, TKM2/VER.A1)", - "tenkomorja", "Tenkomori Shooting (Japan, TKM1/VER.A1)", - "tenpindx", "Ten Pin Deluxe", - "tenspot", "Ten Spot", - "tenthdeg", "Tenth Degree (prototype)", - "tenup", "Ten Up (compendium 17)", - "tenup3", "Ten Up (compendium 3)", - "terabrst", "Teraburst (1998/07/17 ver UEL)", - "terabrsta", "Teraburst (1998/02/25 ver AAA)", - "term2", "Terminator 2 - Judgment Day (rev LA4 08/03/92)", - "term2la1", "Terminator 2 - Judgment Day (rev LA1 11/01/91)", - "term2la2", "Terminator 2 - Judgment Day (rev LA2 12/09/91)", - "term2la3", "Terminator 2 - Judgment Day (rev LA3 03/27/92)", - "term3", "Terminator 3: Rise of the Machines (4.00)", - "term3_205", "Terminator 3: Rise of the Machines (2.05)", - "term3f", "Terminator 3: Rise of the Machines (4.00 France)", - "term3f_205", "Terminator 3: Rise of the Machines (2.05 France)", - "term3g", "Terminator 3: Rise of the Machines (4.00 Germany)", - "term3i", "Terminator 3: Rise of the Machines (4.00 Italy)", - "term3i_205", "Terminator 3: Rise of the Machines (2.05 Italy)", - "term3l", "Terminator 3: Rise of the Machines (4.00 Spain)", - "term3l_205", "Terminator 3: Rise of the Machines (2.05 Spain)", - "terracre", "Terra Cresta (YM3526 set 1)", - "terracrea", "Terra Cresta (YM3526 set 3)", - "terracren", "Terra Cresta (YM2203)", - "terracreo", "Terra Cresta (YM3526 set 2)", - "terraf", "Terra Force", - "terrafb", "Terra Force (Japan bootleg set 2)", - "terrafj", "Terra Force (Japan)", - "terrafjb", "Terra Force (Japan bootleg with additional Z80)", - "terrafu", "Terra Force (US)", - "tesorone", "Tesorone Dell'Isola (Italy, v2.41)", - "tesorone230", "Tesorone Dell'Isola (Italy, v2.30)", - "tesorone240", "Tesorone Dell'Isola (Italy, v2.40)", - "tetfight", "Tetris Fighters", - "tetkiwam", "Tetris Kiwamemichi (GDL-0020)", - "tetrbx", "Tetris / Bloxeed (Korean System 16 bootleg) (ISG Selection Master Type 2006)", - "tetris", "Tetris (set 4, Japan, System 16A, FD1094 317-0093)", - "tetris1", "Tetris (set 1, Japan, System 16B, FD1094 317-0091)", - "tetris2", "Tetris (set 2, Japan, System 16B, FD1094 317-0092)", - "tetris3", "Tetris (set 3, Japan, System 16A, FD1094 317-0093a)", - "tetrisbl", "Tetris (bootleg)", - "tetriskr", "Tetris (bootleg of Mirrorsoft PC-XT Tetris version)", - "tetrisp", "Tetris Plus", - "tetrisp2", "Tetris Plus 2 (World)", - "tetrisp2j", "Tetris Plus 2 (Japan, V2.2)", - "tetrisp2ja", "Tetris Plus 2 (Japan, V2.1)", - "tetrisse", "Tetris (Japan, System E)", - "tetrist", "Tetris (Japan, Taito B-System, Nastar Conversion Kit)", - "tetrista", "Tetris (Japan, Taito B-System, Master of Weapon Conversion Kit)", - "tetristh", "Tetris (Japan, Taito H-System)", - "tetrsark", "Tetris (D.R. Korea)", - "tf95_12", "WPC 95 Test Fixture (1.2)", - "tfa_13", "WPC Test Fixture: Alphanumeric (1.3)", - "tfdmd_l3", "WPC Test Fixture: DMD (L-3)", - "tfight", "Title Fight", - "tfrceac", "Thunder Force AC", - "tfrceacb", "Thunder Force AC (bootleg)", - "tfrceacj", "Thunder Force AC (Japan)", - "tfs_12", "WPC Test Fixture: Security (1.2)", - "tftc_104", "Tales From the Crypt (1.04 Spain)", - "tftc_200", "Tales From the Crypt (2.00)", - "tftc_300", "Tales From the Crypt (3.00)", - "tftc_302", "Tales From the Crypt (3.02 Dutch)", - "tftc_303", "Tales From the Crypt (3.03)", - "tfupdate", "Triforce DIMM Updater (GDT-0011)", - "tgm2", "Tetris the Absolute The Grand Master 2", - "tgm2p", "Tetris the Absolute The Grand Master 2 Plus", - "tgmj", "Tetris The Grand Master (Japan 980710)", - "tgtball", "Target Ball (Nude)", - "tgtballa", "Target Ball", - "tgtpanic", "Target Panic", - "thaiprin", "Thai Princess (30127721, Malaysia)", - "tharrier", "Task Force Harrier", - "tharrieru", "Task Force Harrier (US?)", - "thayers", "Thayer's Quest (set 1)", - "thayersa", "Thayer's Quest (set 2)", - "thedeep", "The Deep (Japan)", - "thedrink", "The Drink", - "theend", "The End", - "theendb", "The End (bootleg?)", - "theends", "The End (Stern Electronics)", - "thegames", "The Games", - "theglad", "The Gladiator / Road of the Sword / Shen Jian (M68k label V101) (ARM label V107, ROM 06/06/03 SHEN JIAN V107)", - "theglad100", "The Gladiator / Road of the Sword / Shen Jian (M68k label V100) (ARM label V100, ROM 01/16/03 SHEN JIAN)", - "theglad101", "The Gladiator / Road of the Sword / Shen Jian (M68k label V100) (ARM label V101, ROM 03/13/03 SHEN JIAN)", - "thegladpcb", "The Gladiator / Road of the Sword / Shen Jian (M68k label V100) (ARM label V100, ROM 02/25/03 SHEN JIAN) (Japan, JAMMA PCB)", - "theglob", "The Glob", - "theglob2", "The Glob (earlier)", - "theglob3", "The Glob (set 3)", - "theglobp", "The Glob (Pac-Man hardware)", - "thegrid", "The Grid (version 1.2)", - "thegrida", "The Grid (version 1.1)", - "thehand", "The Hand", - "thehustl", "The Hustler (Japan, program code M)", - "thehustlj", "The Hustler (Japan, program code J)", - "themj", "The Mah-jong (Japan)", - "thenanpa", "The Nanpa (Japan)", - "thepit", "The Pit", - "thepitj", "The Pit (Japan)", - "thepitm", "The Pit (bootleg on Moon Quasar hardware)", - "thepitu1", "The Pit (US set 1)", - "thepitu2", "The Pit (US set 2)", - "theroes", "Thunder Heroes", - "thetogyu", "The Togyu (315-5065, Japan)", - "thief", "Thief", - "thndblst", "Thunder Blaster (Japan)", - "thndbolt", "Thunderbolt", - "thndrbld", "Thunder Blade (upright, FD1094 317-0056)", - "thndrbld1", "Thunder Blade (deluxe/standing, unprotected)", - "thndrx2", "Thunder Cross II (World)", - "thndrx2a", "Thunder Cross II (Asia)", - "thndrx2j", "Thunder Cross II (Japan)", - "thndzone", "Thunder Zone (World, Rev 1)", - "thndzone4", "Thunder Zone (World 4 Players)", - "thndzonea", "Thunder Zone (World)", - "thndzonej", "Thunder Zone (Japan)", - "thoop", "Thunder Hoop (Ver. 1)", - "thoop2", "TH Strikes Back", - "thrild2", "Thrill Drive 2 (ver EBB)", - "thrild2a", "Thrill Drive 2 (ver AAA)", - "thrild2c", "Thrill Drive 2 (ver EAA)", - "thrilld", "Thrill Drive (JAE)", - "thrilldae", "Thrill Drive (EAA)", - "thrilldb", "Thrill Drive (JAB)", - "thund_p1", "Thunderball (P-1)", - "thunderh", "Operation Thunder Hurricane (ver EAA)", - "thunderhu", "Operation Thunder Hurricane (ver UAA)", - "thunderj", "ThunderJaws (rev 3)", - "thunderja", "ThunderJaws (rev 2)", - "thunderl", "Thunder & Lightning", - "thunderlbl", "Thunder & Lightning (bootleg with Tetris sound)", - "thunderx", "Thunder Cross (set 1)", - "thunderxa", "Thunder Cross (set 2)", - "thunderxb", "Thunder Cross (set 3)", - "thunderxj", "Thunder Cross (Japan)", - "thundfox", "Thunder Fox (World)", - "thundfoxj", "Thunder Fox (Japan)", - "thundfoxu", "Thunder Fox (US)", - "thunt", "Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E)", - "thuntk", "Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K)", - "tickee", "Tickee Tickats", - "tictac", "Tic Tac Trivia (6221-23, U5-0C Horizontal)", - "tictacv", "Tic Tac Trivia (6221-22, U5-0 Vertical)", - "tigerh", "Tiger Heli (US)", - "tigerhb1", "Tiger Heli (bootleg set 1)", - "tigerhb2", "Tiger Heli (bootleg set 2)", - "tigerhb3", "Tiger Heli (bootleg set 3)", - "tigerhj", "Tiger Heli (Japan)", - "tigeroad", "Tiger Road (US)", - "tigeroadb", "Tiger Road (US bootleg)", - "tigerrag", "Tiger Rag", - "tighook", "Tiger Hook (Version 2.1E Dual)", - "tighookc1", "Tiger Hook (Version 2.1R, set 1)", - "tighookc2", "Tiger Hook (Version 2.0LT, set 1)", - "tighookd1", "Tiger Hook (Version 2.1R, set 2)", - "tighookd2", "Tiger Hook (Version 2.0LT, set 2)", - "tighooko", "Tiger Hook (Version 1.7XT)", - "tighooko2", "Tiger Hook (Version 1.7)", - "tighookv1", "Tiger Hook (Version 2.1R Dual)", - "tighookv2", "Tiger Hook (Version 2.0LT Dual)", - "timber", "Timber", - "time2000", "Time 2000", - "timecris", "Time Crisis (Rev. TS2 Ver.B)", - "timecrisa", "Time Crisis (Rev. TS2 Ver.A)", - "timecrs2", "Time Crisis II (TSS3 Ver. B)", - "timecrs2v2b", "Time Crisis II (TSS2 Ver. B)", - "timecrs2v4a", "Time Crisis II (TSS4 Ver. A)", - "timecrs3", "Time Crisis 3 (TST1)", - "timecrs3e", "Time Crisis 3 (TST2 Ver. A)", - "timefgtr", "Time Fighter (Time Pilot conversion on Galaxian hardware)", - "timekill", "Time Killers (v1.32)", - "timekill121", "Time Killers (v1.21)", - "timekill131", "Time Killers (v1.31)", - "timelimt", "Time Limit", - "timeline", "Time Line", - "timeplt", "Time Pilot", - "timeplta", "Time Pilot (Atari)", - "timepltc", "Time Pilot (Centuri)", - "timescan", "Time Scanner (set 2, System 16B)", - "timescan1", "Time Scanner (set 1, System 16A, FD1089B 317-0024)", - "timesold", "Time Soldiers (US Rev 3)", - "timesold1", "Time Soldiers (US Rev 1)", - "timetrv", "Time Traveler", - "timetunl", "Time Tunnel", - "tinklpit", "Tinkle Pit (Japan)", - "tinstar", "The Tin Star (set 1)", - "tinstar2", "The Tin Star (set 2)", - "tinv2650", "The Invaders", - "tiptop", "Tip Top (3 board stack)", - "tisland", "Treasure Island", - "tisub", "Treasure Island (Subsino, set 1)", - "tisuba", "Treasure Island (Subsino, set 2)", - "titan", "Titan", - "titan1", "Titan (alternate set)", - "titanic", "Titanic (Coin dropper)", - "titlef", "Title Fight (World)", - "titlefj", "Title Fight (Japan)", - "titlefu", "Title Fight (US)", - "tjsb", "Mahjong Tian Jiang Shen Bing (V137C)", - "tjumpman", "Tobikose! Jumpman", - "tkdensho", "Toukidenshou - Angel Eyes (VER. 960614)", - "tkdenshoa", "Toukidenshou - Angel Eyes (VER. 960427)", - "tkmmpzdm", "Tokimeki Memorial Taisen Puzzle-dama (ver JAB)", - "tknight", "Tecmo Knight", - "tkoboxng", "Vs. T.K.O. Boxing", - "tm", "Touchmaster (v3.00 Euro)", - "tm2k", "Touchmaster 2000 Plus (v4.63 Standard)", - "tm2ka", "Touchmaster 2000 (v4.02 Standard)", - "tm2kb", "Touchmaster 2000 (v4.00 Standard)", - "tm3k", "Touchmaster 3000 (v5.02 Standard)", - "tm3ka", "Touchmaster 3000 (v5.01 Standard)", - "tm4k", "Touchmaster 4000 (v6.03 Standard)", - "tm4ka", "Touchmaster 4000 (v6.02 Standard)", - "tm4kb", "Touchmaster 4000 (v6.01 Standard)", - "tm4kca", "Touchmaster 4000 (v6.02 California)", - "tm4kmn", "Touchmaster 4000 (v6.01 Minnesota)", - "tm4knj", "Touchmaster 4000 (v6.03 New Jersey)", - "tm5k", "Touchmaster 5000 (v7.10 Standard)", - "tm5ka", "Touchmaster 5000 (v7.01 Standard)", - "tm5kca", "Touchmaster 5000 (v7.10 California)", - "tm5kmn", "Touchmaster 5000 (v7.10 Minnesota)", - "tm7k", "Touchmaster 7000 (v8.04 Standard)", - "tm7ka", "Touchmaster 7000 (v8.00 Standard)", - "tm7keval", "Touchmaster 7000 (v8.1X Evaluation)", - "tm7kmn", "Touchmaster 7000 (v8.04 Minnesota)", - "tm7kmna", "Touchmaster 7000 (v8.00 Minnesota)", - "tm7knj", "Touchmaster 7000 (v8.05 New Jersey)", - "tm8k", "Touchmaster 8000 (v9.04 Standard)", - "tm8k902", "Touchmaster 8000 (v9.02 Standard)", - "tmac_a18", "Time Machine (1.8)", - "tmac_a24", "Time Machine (2.4)", - "tmachzac", "Time Machine (Zaccaria)", - "tmachzacf", "Time Machine (Zaccaria, French speech)", - "tmachzacg", "Time Machine (Zaccaria, German speech)", - "tmdo", "Touchmaster (v2.2-01 Standard)", - "tmek", "T-MEK (v5.1, The Warlords)", - "tmek20", "T-MEK (v2.0, prototype)", - "tmek44", "T-MEK (v4.4)", - "tmek45", "T-MEK (v4.5)", - "tmek51p", "T-MEK (v5.1, prototype)", - "tmfnt_l5", "Time Fantasy (L-5)", - "tmht", "Teenage Mutant Hero Turtles (UK 4 Players, set 1)", - "tmht22pe", "Teenage Mutant Hero Turtles - Turtles in Time (2 Players ver EBA)", - "tmht2p", "Teenage Mutant Hero Turtles (UK 2 Players, set 1)", - "tmht2pa", "Teenage Mutant Hero Turtles (UK 2 Players, set 2)", - "tmhta", "Teenage Mutant Hero Turtles (UK 4 Players, set 2)", - "tmmjprd", "Tokimeki Mahjong Paradise - Dear My Love", - "tmnt", "Teenage Mutant Ninja Turtles (World 4 Players)", - "tmnt2", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver UAA)", - "tmnt22pu", "Teenage Mutant Ninja Turtles - Turtles in Time (2 Players ver UDA)", - "tmnt2a", "Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver ADA)", - "tmnt2pj", "Teenage Mutant Ninja Turtles (Japan 2 Players)", - "tmnt2po", "Teenage Mutant Ninja Turtles (Oceania 2 Players)", - "tmnt_103", "Teenage Mutant Ninja Turtles (1.03)", - "tmnt_104", "Teenage Mutant Ninja Turtles (1.04)", - "tmntj", "Teenage Mutant Ninja Turtles (Japan 4 Players)", - "tmntu", "Teenage Mutant Ninja Turtles (US 4 Players, set 1)", - "tmntua", "Teenage Mutant Ninja Turtles (US 4 Players, set 2)", - "tmosh", "Tokimeki Memorial Oshiete Your Heart (GQ673 JAA)", - "tmoshs", "Tokimeki Memorial Oshiete Your Heart Seal Version (GE755 JAA)", - "tmoshsp", "Tokimeki Memorial Oshiete Your Heart Seal Version Plus (GE756 JAB)", - "tmoshspa", "Tokimeki Memorial Oshiete Your Heart Seal Version Plus (GE756 JAA)", - "tmpdoki", "Tokimeki Mahjong Paradise - Doki Doki Hen", - "tmspoker", "unknown TMS9980 Poker Game", - "tmwrp_l2", "Time Warp (L-2)", - "tmwrp_t2", "Time Warp (T-2)", - "tndrcade", "Thundercade / Twin Formation", - "tndrcadej", "Tokusyu Butai U.A.G. (Japan)", - "tnextspc", "The Next Space (set 1)", - "tnextspc2", "The Next Space (set 2)", - "tnextspcj", "The Next Space (Japan)", - "tnk3", "T.N.K III (US)", - "tnk3j", "T.A.N.K (Japan)", - "tnzs", "The NewZealand Story (World, new version) (newer PCB)", - "tnzsj", "The NewZealand Story (Japan, new version) (newer PCB)", - "tnzsjo", "The NewZealand Story (Japan, old version) (older PCB)", - "tnzso", "The NewZealand Story (World, old version) (older PCB)", - "tnzsop", "The NewZealand Story (World, prototype?) (older PCB)", - "todruaga", "The Tower of Druaga (New Ver.)", - "todruagao", "The Tower of Druaga (Old Ver.)", - "todruagas", "The Tower of Druaga (Sidam)", - "toffy", "Toffy", - "togenkyo", "Tougenkyou (Japan 890418)", - "toggle", "Toggle (prototype)", - "toki", "Toki (World, set 1)", - "tokia", "Toki (World, set 2)", - "tokib", "Toki (Datsu bootleg)", - "tokimbsj", "Tokimeki Bishoujo [BET] (Japan)", - "tokio", "Tokio / Scramble Formation (newer)", - "tokiob", "Tokio / Scramble Formation (bootleg)", - "tokioo", "Tokio / Scramble Formation (older)", - "tokiou", "Tokio / Scramble Formation (US)", - "tokisens", "Toki no Senshi - Chrono Soldier", - "tokiu", "Toki (US, set 1)", - "tokiua", "Toki (US, set 2)", - "tokkae", "Taisen Tokkae-dama (ver JAA)", - "tokyocop", "Tokyo Cop (Italy)", - "tokyogal", "Tokyo Gal Zukan (Japan)", - "tokyowar", "Tokyo Wars (Rev. TW2 Ver.A)", - "tom_06", "Theatre Of Magic (0.6a)", - "tom_10f", "Theatre Of Magic (1.0 French)", - "tom_12", "Theatre Of Magic (1.2X)", - "tom_13", "Theatre Of Magic (1.3X)", - "tom_14h", "Theatre Of Magic (1.4H)", - "tomahawk", "Tomahawk 777 (rev 5)", - "tomahawk1", "Tomahawk 777 (rev 1)", - "tomcat", "TomCat (prototype)", - "tomcatsw", "TomCat (Star Wars hardware, prototype)", - "tomy_400", "The Who's Tommy Pinball Wizard (4.00)", - "tomy_h30", "The Who's Tommy Pinball Wizard (3.00, The Netherlands)", - "tondemo", "Tondemo Crisis (Japan)", - "tonton", "Waku Waku Doubutsu Land TonTon (Japan)", - "tontonb", "Tonton [BET] (Japan set 1)", - "tonypok", "Poker Master (Tony-Poker V3.A, hack?)", - "toobin", "Toobin' (rev 3)", - "toobin1", "Toobin' (rev 1)", - "toobin2", "Toobin' (rev 2)", - "toobin2e", "Toobin' (Europe, rev 2)", - "toobine", "Toobin' (Europe, rev 3)", - "toobing", "Toobin' (German, rev 3)", - "top21", "Top XXI (Version 1.2)", - "topaz_l1", "Topaz (Shuffle) (L-1)", - "topbladv", "Top Blade V", - "topgame", "Top Game Laser L10 (Bingo)", - "topgamet", "Top Game Turbo (Bingo)", - "topgear", "Top Gear (4VXFC969, New Zealand)", - "topgun", "Vs. Top Gun", - "topgunbl", "Top Gunner (bootleg, Rotary Joystick)", - "topgunnr", "Top Gunner (Exidy)", - "topgunr", "Top Gunner (US, 8-way Joystick)", - "tophuntr", "Top Hunter - Roddy & Cathy (NGM-046)", - "tophuntrh", "Top Hunter - Roddy & Cathy (NGH-046)", - "topland", "Top Landing (World)", - "toppin", "Top Pin", - "toppyrap", "Toppy & Rappy", - "topracer", "Top Racer (with MB8841 + MB8842, 1984)", - "topracera", "Top Racer (with MB8841 + MB8842, 1983)", - "topracern", "Top Racer (no MB8841 + MB8842)", - "toprollr", "Top Roller", - "topsecex", "Top Secret (Exidy) (version 1.0)", - "topsecrt", "Top Secret (Japan, old revision)", - "topshoot", "Top Shooter", - "topskatr", "Top Skater (Export, Revision A)", - "topskatrj", "Top Skater (Japan)", - "topskatru", "Top Skater (USA, Revision A)", - "topspeed", "Top Speed (World)", - "topspeedu", "Top Speed (US)", - "toramich", "Tora e no Michi (Japan)", - "toratora", "Tora Tora (prototype?)", - "torch", "Torch", - "toride2g", "Toride II Adauchi Gaiden", - "toride2gg", "Toride II Adauchi Gaiden (German)", - "toride2gk", "Toride II Bok Su Oi Jeon Adauchi Gaiden (Korea)", - "toride2j", "Toride II (Japan)", - "tornado1", "Tornado (set 1, Defender bootleg)", - "tornado2", "Tornado (set 2, Defender bootleg)", - "tornbase", "Tornado Baseball / Ball Park", - "torp_e21", "Torpedo Alley (2.1, Europe)", - "tortufam", "Tortuga Family (Italian)", - "torus", "Torus", - "toryumon", "Toryumon", - "totan_04", "Tales Of The Arabian Nights (0.4)", - "totan_12", "Tales Of The Arabian Nights (1.2)", - "totan_13", "Tales Of The Arabian Nights (1.3)", - "totan_14", "Tales Of The Arabian Nights (1.4)", - "totcarn", "Total Carnage (rev LA1 03/10/92)", - "totcarnp", "Total Carnage (prototype, rev 1.0 01/25/92)", - "totd", "The Typing of the Dead (JPN, USA, EXP, KOR, AUS) (Rev A)", - "totem", "Totem", - "totlvica", "Total Vice (ver AAB)", - "totlvice", "Total Vice (ver UAC)", - "totlvicj", "Total Vice (ver JAD)", - "totmejan", "Tottemo E Jong", - "touchdn", "Touchdown", - "toucheme", "Touche Me", - "touchgo", "Touch & Go (World)", - "touchgoe", "Touch & Go (earlier revision)", - "touchgon", "Touch & Go (Non North America)", - "toukon3", "Shin Nihon Pro Wrestling Toukon Retsuden 3 Arcade Edition (Japan, TR1/VER.A)", - "toukon4", "Shin Nihon Pro Wrestling Toukon Retsuden 4 Arcade Edition (TRF1 Ver. A)", - "tour4000", "Tour 4000", - "tour4010", "Tour 4010", - "toursol", "Tournament Solitaire (V1.06, 08/03/95)", - "toursol1", "Tournament Solitaire (V1.04, 06/22/95)", - "tourtab2", "Tournament Table (set 2)", - "tourtabl", "Tournament Table (set 1)", - "tourvis", "Tourvision PCE bootleg", - "touryuu", "Touryuumon (V1.1)?", - "toutrun", "Turbo Out Run (Out Run upgrade, FD1094 317-0118)", - "toutrun1", "Turbo Out Run (deluxe cockpit, FD1094 317-0109)", - "toutrun2", "Turbo Out Run (cockpit, FD1094 317-0106)", - "toutrun3", "Turbo Out Run (cockpit, FD1094 317-0107)", - "toutrunj", "Turbo Out Run (Japan, Out Run upgrade, FD1094 317-0117)", - "toyfight", "Toy Fighter", - "toyland", "Toy Land Adventure", - "toypop", "Toypop", - "tp2m32", "Tetris Plus 2 (MegaSystem 32 Version)", - "tp84", "Time Pilot '84 (set 1)", - "tp84a", "Time Pilot '84 (set 2)", - "tp84b", "Time Pilot '84 (set 3)", - "tpgolf", "Top Player's Golf (NGM-003)(NGH-003)", - "tpoker2", "Turbo Poker 2", - "tps", "TPS", - "tqst", "Treasure Quest", - "trackfld", "Track & Field", - "trackfldc", "Track & Field (Centuri)", - "trackfldnz", "Track & Field (NZ bootleg?)", - "trailblz", "Trail Blazer", - "trailer", "Trailer", - "trally", "Thrash Rally (ALM-003)(ALH-003)", - "tranqgun", "Tranquilizer Gun", - "transfrm", "Transformer", - "travrusa", "Traverse USA / Zippy Race", - "travrusab", "Traverse USA (bootleg)", - "trbwtchs", "Trouble Witches AC (v1.00J)", - "trckydoc", "Tricky Doc (set 1)", - "trckydoca", "Tricky Doc (set 2)", - "treahunt", "Treasure Hunt", - "trebltop", "Treble Top (39-360-070)", - "trek_110", "Star Trek 25th Anniversary (1.10)", - "trek_11a", "Star Trek 25th Anniversary (1.10 Alpha Display)", - "trek_120", "Star Trek 25th Anniversary (1.20)", - "trek_200", "Star Trek 25th Anniversary (2.00)", - "trek_201", "Star Trek 25th Anniversary (2.01)", - "trgheart", "Trigger Heart Exelica (Rev A) (GDL-0036A)", - "tricktrp", "Trick Trap (World?)", - "trident", "Trident", - "triforce", "Triforce Bios", - "trigon", "Trigon (Japan)", - "triothep", "Trio The Punch - Never Forget Me... (World)", - "triothepj", "Trio The Punch - Never Forget Me... (Japan)", - "tripdraw", "Tripple Draw (V3.1 s)", - "tripjok", "Triple Joker (Bingo)", - "triplay", "Triple Play", - "triplep", "Triple Punch (set 1)", - "triplepa", "Triple Punch (set 2)", - "triplew1", "Mahjong Triple Wars (Japan)", - "triplew2", "Mahjong Triple Wars 2 (Japan)", - "triplfun", "Triple Fun", - "triplhnt", "Triple Hunt", - "tripool", "Tri-Pool (Casino Tech)", - "tripoola", "Tri-Pool (Costal Games)", - "trisport", "Tri-Sports", - "trivia12", "Trivial Pursuit (Think Tank - Genus Edition) (12/14/84)", - "triviabb", "Trivial Pursuit (Baby Boomer Edition) (3/20/85)", - "triviaes", "Trivial Pursuit (Spanish)", - "triviag1", "Trivial Pursuit (Think Tank - Genus Edition) (set 1)", - "triviag2", "Trivial Pursuit (Genus II Edition)", - "trivialp", "Trivial Pursuit (New Edition) (prod. 1D)", - "trivialpd", "Trivial Pursuit (New Edition) (prod. 1D) (Protocol)", - "trivialpo", "Trivial Pursuit", - "triviasp", "Trivial Pursuit (All Star Sports Edition)", - "triviayp", "Trivial Pursuit (Young Players Edition)", - "trivquiz", "Triv Quiz", - "trizeal", "Trizeal (GDL-0026)", - "trizn_l1", "Tri Zone (L-1)", - "trizn_t1", "Tri Zone (T-1)", - "troangel", "Tropical Angel", - "trog", "Trog (rev LA5 03/29/91)", - "trog3", "Trog (rev LA3 02/14/91)", - "trog4", "Trog (rev LA4 03/11/91)", - "trogpa4", "Trog (prototype, rev 4.00 07/27/90)", - "trogpa6", "Trog (prototype, rev PA6-PAC 09/09/90)", - "trojan", "Trojan (US set 1)", - "trojana", "Trojan (US set 2)", - "trojanb", "Trojan (bootleg)", - "trojanj", "Tatakai no Banka (Japan)", - "trojanr", "Trojan (Romstar)", - "tron", "Tron (8/9)", - "tron2", "Tron (6/25)", - "tron3", "Tron (6/17)", - "tron4", "Tron (6/15)", - "trophyh", "Trophy Hunting - Bear & Moose V1.0", - "trstar", "Top Ranking Stars (Ver 2.1O 1993/05/21) (New Version)", - "trstar2k", "Triple Star 2000", - "trstarj", "Top Ranking Stars (Ver 2.1J 1993/05/21) (New Version)", - "trstaro", "Top Ranking Stars (Ver 2.1O 1993/05/21) (Old Version)", - "trstaroj", "Top Ranking Stars (Ver 2.1J 1993/05/21) (Old Version)", - "truckk", "Truck Kyosokyoku (Japan, TKK2/VER.A)", - "trucksp2", "Truck Stop (P-2)", - "trucksp3", "Truck Stop (P-3)", - "truco", "Truco-Tron", - "trucocl", "Truco Clemente", - "truxton", "Truxton / Tatsujin", - "truxton2", "Truxton II / Tatsujin Oh", - "trvchlng", "Trivia Challenge", - "trvgns", "Trivia Genius", - "trvhang", "Trivia Hangup (question set 1)", - "trvhanga", "Trivia Hangup (question set 2)", - "trvmadns", "Trivia Madness - Series A Question set", - "trvmadnsa", "Trivia Madness - Series B Question set", - "trvmstr", "Trivia Master (set 1)", - "trvmstra", "Trivia Master (set 2)", - "trvmstrb", "Trivia Master (set 3)", - "trvmstrc", "Trivia Master (set 4)", - "trvquest", "Trivia Quest", - "trvwz2", "Trivia ? Whiz (6221-05, Edition 2)", - "trvwz2a", "Trivia ? Whiz (6221-05, Edition 2 Alt Sex trivia)", - "trvwz3h", "Trivia ? Whiz (6221-05, Edition 3)", - "trvwz3ha", "Trivia ? Whiz (6221-05, Edition 3 Sex trivia III)", - "trvwz3v", "Trivia ? Whiz (6221-04, Edition 3 Vertical)", - "trvwz4", "Trivia ? Whiz (6221-13, U5-0B Edition 4)", - "trvwz4a", "Trivia ? Whiz (6221-13, U5-0B Edition 4 Alt Sex trivia)", - "trvwzh", "Trivia ? Whiz (6221-00)", - "trvwzha", "Trivia ? Whiz (6221-00, with Sex trivia)", - "trvwzhb", "Trivia ? Whiz (6221-00, Alt Gen trivia)", - "trvwzv", "Trivia ? Whiz (6221-02, Vertical)", - "tryout", "Pro Baseball Skill Tryout (Japan)", - "ts2", "Battle Arena Toshinden 2 (USA 951124)", - "ts2a", "Battle Arena Toshinden 2 (USA 951124) Older", - "ts2j", "Battle Arena Toshinden 2 (Japan 951124)", - "ts_la2", "The Shadow (LA-2)", - "ts_la4", "The Shadow (LA-4)", - "ts_lf6", "The Shadow (LF-6) French", - "ts_lh6", "The Shadow (LH-6)", - "ts_lm6", "The Shadow (LM-6) Mild", - "ts_lx4", "The Shadow (LX-4)", - "ts_lx5", "The Shadow (LX-5)", - "ts_pa1", "The Shadow (PA-1)", - "tsamurai", "Samurai Nihon-Ichi (set 1)", - "tsamurai2", "Samurai Nihon-Ichi (set 2)", - "tsamuraih", "Samurai Nihon-Ichi (bootleg, harder)", - "tsarevna", "Tsarevna (v1.29)", - "tsarevnaa", "Tsarevna (v1.31)", - "tsclass", "Trap Shoot Classic (v1.0 21-mar-1997)", - "tshingen", "Shingen Samurai-Fighter (Japan, English)", - "tshingena", "Takeda Shingen (Japan, Japanese)", - "tshoot", "Turkey Shoot", - "tsptr_l3", "Transporter the Rescue (L-3)", - "tst_galx", "Galaxian Test ROM", - "tst_invd", "Space Invaders Test ROM", - "tstrike", "Thunder Strike (set 1)", - "tstrikea", "Thunder Strike (set 2, older)", - "tstrk_l1", "Triple Strike (Shuffle) (L-1)", - "tsurugi", "Tsurugi (ver EAB)", - "tsurugij", "Tsurugi (ver JAC)", - "tt_game", "unknown Toptronic pinball game", - "ttblock", "T. T. Block [TTL]", - "ttchamp", "Table Tennis Champions (set 1)", - "ttchampa", "Table Tennis Champions (set 2)", - "ttfitter", "T.T. Fitter (Japan)", - "ttmahjng", "T.T Mahjong", - "tts_l1", "Tic-Tac-Strike (Shuffle) (L-1)", - "tts_l2", "Tic-Tac-Strike (Shuffle) (L-2)", - "ttt_10", "Ticket Tac Toe (1.0)", - "tturf", "Tough Turf (set 2, Japan, 8751 317-0104)", - "tturfbl", "Tough Turf (Datsu bootleg)", - "tturfu", "Tough Turf (set 1, US, 8751 317-0099)", - "tubeit", "Tube-It", - "tubep", "Tube Panic", - "tubepb", "Tube Panic (bootleg)", - "tugboat", "Tugboat", - "tumbleb", "Tumble Pop (bootleg)", - "tumbleb2", "Tumble Pop (bootleg with PIC)", - "tumblep", "Tumble Pop (World)", - "tumblepba", "Tumble Pop (Playmark bootleg)", - "tumblepj", "Tumble Pop (Japan)", - "tunhunt", "Tunnel Hunt", - "tunhuntc", "Tunnel Hunt (Centuri)", - "turbo", "Turbo", - "turboa", "Turbo (encrypted set 1)", - "turbob", "Turbo (encrypted set 2)", - "turbofrc", "Turbo Force (old revision)", - "turbosub", "Turbo Sub (prototype rev. TSCA)", - "turbosub6", "Turbo Sub (prototype rev. TSC6)", - "turbosub7", "Turbo Sub (prototype rev. TSC7)", - "turbotag", "Turbo Tag (prototype)", - "turfmast", "Neo Turf Masters / Big Tournament Golf", - "turkhunt", "Turkey Hunting USA V1.0", - "turpin", "Turpin", - "turpins", "Turpin (bootleg on Scramble hardware)", - "turrett", "Turret Tower", - "turtles", "Turtles", - "turtship", "Turtle Ship (North America)", - "turtshipj", "Turtle Ship (Japan)", - "turtshipk", "Turtle Ship (Korea)", - "tutankhm", "Tutankham", - "tutankhms", "Tutankham (Stern Electronics)", - "tutstomb", "Tut's Tomb", - "tv21", "T.V. 21", - "tv21_3", "T.V. 21 III", - "tvablast", "Aero Blasters (Tourvision PCE bootleg)", - "tvcolumn", "Columns (Tourvision PCE bootleg)", - "tvdunexp", "Dungeon Explorer (Tourvision PCE bootleg)", - "tvflaptw", "Final Lap Twin (Tourvision PCE bootleg)", - "tvfsoc90", "Formation Soccer - Human Cup '90 (Tourvision PCE bootleg)", - "tvgomola", "Gomola Speed (Tourvision PCE bootleg)", - "tvjchan", "Jackie Chan (Tourvision PCE bootleg)", - "tvlegaxe", "Makyo Densetsu - The Legenary Axe (Tourvision PCE bootleg)", - "tvpcgen2", "PC Genjin 2 - Pithecanthropus Computerurus (Tourvision PCE bootleg)", - "tvpoker", "T.V. Poker", - "tvpow11", "Power Eleven (Tourvision PCE bootleg)", - "tvpwlg4", "Power League IV (Tourvision PCE bootleg)", - "tvrs2", "Rastan Saga II (Tourvision PCE bootleg)", - "tvsci", "Special Criminal Investigation (Tourvision PCE bootleg)", - "tvsssold", "Super Star Soldier (Tourvision PCE bootleg)", - "tvsvball", "Super Volley ball (Tourvision PCE bootleg)", - "tvthbld", "Thunder Blade (Tourvision PCE bootleg)", - "tvusapb", "USA Pro Basketball (Tourvision PCE bootleg)", - "tvvolfd", "Volfied (Tourvision PCE bootleg)", - "twcup98", "Tecmo World Cup '98 (JUET 980410 V1.000)", - "twinactn", "Twin Action", - "twinadv", "Twin Adventure (World)", - "twinadvk", "Twin Adventure (Korea)", - "twinbee", "TwinBee (ROM version)", - "twinbrat", "Twin Brats (set 1)", - "twinbrata", "Twin Brats (set 2)", - "twincobr", "Twin Cobra (World)", - "twincobru", "Twin Cobra (US)", - "twineag2", "Twin Eagle II - The Rescue Mission", - "twineagl", "Twin Eagle - Revenge Joe's Brother", - "twinfalc", "Twin Falcons", - "twinhawk", "Twin Hawk (World)", - "twinhawku", "Twin Hawk (US)", - "twinkle", "Twinkle", - "twinqix", "Twin Qix (Ver 1.0A 1995/01/17) (Prototype)", - "twins", "Twins (set 1)", - "twinsa", "Twins (set 2)", - "twinspri", "Twinkle Star Sprites", - "twinsqua", "Twin Squash", - "twocrude", "Two Crude (US)", - "twotiger", "Two Tigers (dedicated)", - "twotigerc", "Two Tigers (Tron conversion)", - "twrldc94", "Tecmo World Cup '94 (set 1)", - "twrldc94a", "Tecmo World Cup '94 (set 2)", - "twrshaft", "Tower & Shaft", - "tws96", "Tecmo World Soccer '96", - "twst_300", "Twister (3.00)", - "twst_404", "Twister (4.04)", - "twst_405", "Twister (4.05)", - "tx1", "TX-1 (World)", - "tx1jb", "TX-1 (Japan rev. B)", - "tx1jc", "TX-1 (Japan rev. C)", - "txsector", "TX-Sector", - "tylz", "Tylz (prototype)", - "typhoon", "Typhoon", - "tz_92", "Twilight Zone (9.2)", - "tz_94ch", "Twilight Zone (9.4CH)", - "tz_94h", "Twilight Zone (9.4H)", - "tz_h7", "Twilight Zone (H-7)", - "tz_h8", "Twilight Zone (H-8)", - "tz_ifpa", "Twilight Zone (IFPA rules)", - "tz_l1", "Twilight Zone (L-1)", - "tz_l2", "Twilight Zone (L-2)", - "tz_l3", "Twilight Zone (L-3)", - "tz_l4", "Twilight Zone (L-4)", - "tz_p3", "Twilight Zone (P-3)", - "tz_p4", "Twilight Zone (P-4)", - "tz_pa1", "Twilight Zone (PA-1)", - "uballoon", "Ultra Balloon", - "uboat65", "U-boat 65", - "uccops", "Undercover Cops (World)", - "uccopsar", "Undercover Cops - Alpha Renewal Version", - "uccopsj", "Undercover Cops (Japan)", - "uccopsu", "Undercover Cops (US)", - "uchuuai", "Mahjong Uchuu yori Ai wo komete (Japan)", - "ucytokyu", "Uchuu Tokkyuu Medalian", - "uecology", "Ultimate Ecology (Japan 931203)", - "ufo_x", "UFO-X", - "ufosensi", "Ufo Senshi Yohko Chan (MC-8123, 317-0064)", - "ufosensib", "Ufo Senshi Yohko Chan (bootleg, not encrypted)", - "ultennis", "Ultimate Tennis", - "ultennisj", "Ultimate Tennis (v 1.4, Japan)", - "ultrainv", "Ultra Invaders", - "ultraman", "Ultraman (Japan)", - "ultramhm", "Ultra Maru-hi Mahjong (Japan)", - "ultratnk", "Ultra Tank", - "ultrax", "Ultra X Weapons / Ultra Keibitai", - "ultrchmp", "Se Gye Hweng Dan Ultra Champion (Korea)", - "ultrchmph", "Cheng Ba Shi Jie - Chao Shi Kong Guan Jun (Taiwan)", - "umanclub", "Ultraman Club - Tatakae! Ultraman Kyoudai!!", - "umipoker", "Umi de Poker / Marine Paradise (Japan)", - "umk3", "Ultimate Mortal Kombat 3 (rev 1.2)", - "umk3r10", "Ultimate Mortal Kombat 3 (rev 1.0)", - "umk3r11", "Ultimate Mortal Kombat 3 (rev 1.1)", - "unclepoo", "Uncle Poo", - "undefeat", "Under Defeat (GDL-0035)", - "undoukai", "The Undoukai (Japan)", - "undrfire", "Under Fire (World)", - "undrfirej", "Under Fire (Japan)", - "undrfireu", "Under Fire (US)", - "uniwars", "UniWar S", - "unkch1", "New Cherry Gold '99 (bootleg of Super Cherry Master) (set 1)", - "unkch2", "Super Cherry Gold (bootleg of Super Cherry Master)", - "unkch3", "New Cherry Gold '99 (bootleg of Super Cherry Master) (set 2)", - "unkch4", "Grand Cherry Master (bootleg of Super Cherry Master)", - "unkh8gam", "unknown H8 Italian Gambling game", - "unkhorse", "unknown Japanese horse gambling game", - "unkpacg", "unknown Pac-Man gambling game", - "unsquad", "U.N. Squadron (USA)", - "untoucha", "Untouchable (Japan)", - "uopoko", "Puzzle Uo Poko (International)", - "uopokoj", "Puzzle Uo Poko (Japan)", - "upndown", "Up'n Down (315-5030)", - "upndownu", "Up'n Down (not encrypted)", - "upscope", "Up Scope", - "upyoural", "Up Your Alley", - "urashima", "Otogizoushi Urashima Mahjong (Japan)", - "usafootb", "U.S.A. Football", - "usagi", "Usagi (V2.02J)", - "usagiol", "Usagi Online (v2.04J)", - "usagiym", "Usagi - Yamashiro Mahjong Hen (GDL-0022)", - "usclssic", "U.S. Classic", - "usg182", "Games V18.2", - "usg185", "Games V18.5", - "usg187c", "Games V18.7C", - "usg32", "Super Duper Casino (California V3.2)", - "usg82", "Super Ten V8.2", - "usg83x", "Super Ten V8.3X", - "usgames", "Games V25.4X", - "usvsthem", "Us vs. Them", - "utoukond", "Ultra Toukon Densetsu (Japan)", - "v4addlad", "Adders and Ladders (v2.1) (MPU4 Video)", - "v4addlad20", "Adders and Ladders (v2.0) (MPU4 Video)", - "v4barqs2", "Barquest 2 (v0.3) (MPU4 Video)", - "v4barqst", "Barquest (v2.6d) (MPU4 Video)", - "v4big40", "Big 40 Poker (Bwb) (MPU4 Video)", - "v4bigfrt", "Big Fruits (v2.0?) (MPU4 Video)", - "v4bios", "MPU4 Video Firmware", - "v4blox", "Blox (v2.0) (MPU4 Video)", - "v4bloxd", "Blox (v2.0, Datapak) (MPU4 Video)", - "v4bubbnk", "Bubbly Bonk (v4.0?) (MPU4 Video)", - "v4bulblx", "Bullion Blox (Bwb) (MPU4 Video)", - "v4cmaze", "The Crystal Maze (v1.3) (MPU4 Video)", - "v4cmaze2", "The New Crystal Maze Featuring Ocean Zone (v2.2) (MPU4 Video)", - "v4cmaze2a", "The New Crystal Maze Featuring Ocean Zone (v0.1, AMLD) (MPU4 Video)", - "v4cmaze2b", "The New Crystal Maze Featuring Ocean Zone (v2.0) (MPU4 Video)", - "v4cmaze2c", "The New Crystal Maze Featuring Ocean Zone (v?.?) (MPU4 Video)", - "v4cmaze2d", "The New Crystal Maze Featuring Ocean Zone (v2.2, Datapak) (MPU4 Video)", - "v4cmaze3", "The Crystal Maze Team Challenge (v0.9) (MPU4 Video)", - "v4cmaze3a", "The Crystal Maze Team Challenge (v1.2, AMLD) (MPU4 Video)", - "v4cmaze3b", "The Crystal Maze Team Challenge (v0.8) (MPU4 Video)", - "v4cmaze3c", "The Crystal Maze Team Challenge (v?.?) (MPU4 Video)", - "v4cmaze3d", "The Crystal Maze Team Challenge (v0.9, Datapak) (MPU4 Video)", - "v4cmazea", "The Crystal Maze (v0.1, AMLD) (MPU4 Video)", - "v4cmazeb", "The Crystal Maze (v1.2) (MPU4 Video)", - "v4cmazec", "The Crystal Maze (v1.3 alt) (MPU4 Video)", - "v4cmazed", "The Crystal Maze (v1.1) (MPU4 Video)", - "v4cmazedat", "The Crystal Maze (v1.3, Datapak) (MPU4 Video)", - "v4cshinf", "Cash Inferno (Bwb) (MPU4 Video)", - "v4cybcas", "Cyber Casino (Nova) (MPU4 Video)", - "v4dbltak", "Double Take (Bwb) (MPU4 Video)", - "v4dealem", "Deal 'Em (MPU4 Conversion Kit, v7.0)", - "v4eyedwn", "Eyes Down (v1.3) (MPU4 Video)", - "v4eyedwnd", "Eyes Down (v1.3, Datapak) (MPU4 Video)", - "v4frfact", "Fruit Factory (Bwb) (MPU4 Video)", - "v4gldrsh", "Gold Rush (Bwb) (MPU4 Video)", - "v4mate", "The Mating Game (v0.4) (MPU4 Video)", - "v4mated", "The Mating Game (v0.4, Datapak) (MPU4 Video)", - "v4mazbel", "Mazooma Belle (v2.5) (MPU4 Video)", - "v4mazbla", "Mazooma Belle (v1.5) (MPU4 Video)", - "v4mdice", "Miami Dice (Bwb) (MPU4 Video)", - "v4megbuk", "Megabucks Poker (Bwb) (MPU4 Video)", - "v4miami", "Miami Dice (Nova) (MPU4 Video)", - "v4missis", "Mississippi Lady (Nova) (MPU4 Video)", - "v4monte", "Monte Carlo Or Bust (Bwb) (MPU4 Video)", - "v4opt3", "Option 3 (v1.0) (MPU4 Video)", - "v4opt3d", "Option 3 (v1.0) (Datapak) (MPU4 Video)", - "v4ovrmn3", "Over Moon Pt3 (Bwb) (MPU4 Video)", - "v4picdil", "Piccadilly Nights (Nova) (MPU4 Video)", - "v4psi", "Prize Space Invaders (v1.1) (MPU4 Video)", - "v4psia", "Prize Space Invaders (v1.2) (MPU4 Video)", - "v4psib", "Prize Space Invaders (v2.0?) (MPU4 Video)", - "v4pztet", "Prize Tetris (Bwb) (MPU4 Video, set 1)", - "v4pzteta", "Prize Tetris (Bwb) (MPU4 Video, set 2)", - "v4quidgr", "Ten Quid Grid (v1.2) (MPU4 Video)", - "v4quidgr2", "Ten Quid Grid (v2.4) (MPU4 Video)", - "v4quidgr2d", "Ten Quid Grid (v2.4, Datapak) (MPU4 Video)", - "v4quidgrd", "Ten Quid Grid (v1.2, Datapak) (MPU4 Video)", - "v4redhtp", "Red Hot Poker (20p/10GBP Cash, release 3) (MPU4 Video)", - "v4rencas", "Reno Casino (Bwb) (MPU4 Video)", - "v4reno", "Reno Reels (20p/10GBP Cash, release A) (MPU4 Video)", - "v4rhmaz", "Red Hot Mazooma Belle (Bwb) (MPU4 Video)", - "v4shpwnd", "Shop Window (v2.0) (MPU4 Video)", - "v4sixx", "6-X (Bwb) (MPU4 Video)", - "v4sklcsh", "Skill Cash (v1.1) (MPU4 Video)", - "v4skltrk", "Skill Trek (v1.1) (MPU4 Video, set 1)", - "v4skltrka", "Skill Trek (v1.1) (MPU4 Video, set 2)", - "v4strike", "Strike it Lucky (v0.5) (MPU4 Video)", - "v4strike2", "Strike it Lucky (v0.53) (MPU4 Video)", - "v4strike2d", "Strike it Lucky (v0.53, Datapak) (MPU4 Video)", - "v4striked", "Strike it Lucky (v0.5, Datapak) (MPU4 Video)", - "v4sunbst", "Sunburst (Bwb) (MPU4 Video)", - "v4tetrs", "BwB Tetris v 2.2 (MPU4 Video)", - "v4time", "Time Machine (v2.0) (MPU4 Video)", - "v4timebn", "Time Bandit (Bwb) (MPU4 Video)", - "v4turnov", "Turnover (v2.3) (MPU4 Video)", - "v4vgpok", "Vegas Poker (prototype, release 2) (MPU4 Video)", - "v4wize", "Wize Move (v1.3d) (MPU4 Video)", - "v4wizea", "Wize Move (v1.2) (MPU4 Video)", - "valkyrie", "Valkyrie No Densetsu (Japan)", - "valtric", "Valtric", - "vamphalf", "Vamf x1/2 (Europe)", - "vamphalfk", "Vamp x1/2 (Korea)", - "vampj", "Vampire: The Night Warriors (Japan 940705)", - "vampja", "Vampire: The Night Warriors (Japan 940705 alt)", - "vampjr1", "Vampire: The Night Warriors (Japan 940630)", - "vandyke", "Vandyke (Japan)", - "vandykeb", "Vandyke (bootleg with PIC16c57)", - "vandykejal", "Vandyke (Jaleco, set 1)", - "vandykejal2", "Vandyke (Jaleco, set 2)", - "vangrd2", "Vanguard II", - "vanguard", "Vanguard (SNK)", - "vanguardc", "Vanguard (Centuri)", - "vanguardj", "Vanguard (Japan)", - "vanilla", "Mahjong Vanilla Syndrome (Japan)", - "vanvan", "Van-Van Car", - "vanvanb", "Van-Van Car (Karateco set 2)", - "vanvank", "Van-Van Car (Karateco set 1)", - "vaportra", "Vapor Trail - Hyper Offence Formation (World revision 1)", - "vaportra3", "Vapor Trail - Hyper Offence Formation (World revision 3?)", - "vaportrau", "Vapor Trail - Hyper Offence Formation (US)", - "vaportrx", "Vapor TRX", - "vaportrxp", "Vapor TRX (prototype)", - "varth", "Varth: Operation Thunderstorm (World 920714)", - "varthj", "Varth: Operation Thunderstorm (Japan 920714)", - "varthr1", "Varth: Operation Thunderstorm (World 920612)", - "varthu", "Varth: Operation Thunderstorm (USA 920612)", - "vasara", "Vasara", - "vasara2", "Vasara 2 (set 1)", - "vasara2a", "Vasara 2 (set 2)", - "vastar", "Vastar (set 1)", - "vastar2", "Vastar (set 2)", - "vastar3", "Vastar (set 3)", - "vastar4", "Vastar (set 4)", - "vathlete", "Virtua Athletics / Virtua Athlete (GDS-0019)", - "vautour", "Vautour (bootleg of Phoenix) (8085A CPU)", - "vautourz", "Vautour (bootleg of Phoenix) (Z80 CPU)", - "vball", "U.S. Championship V'ball (US)", - "vball2pj", "U.S. Championship V'ball (Japan)", - "vball2pjb", "U.S. Championship V'ball (bootleg of Japan set)", - "vballb", "U.S. Championship V'ball (bootleg of US set)", - "vblokbrk", "VS Block Breaker (Asia)", - "vbowl", "Virtua Bowling (World, V101XCM)", - "vbowlj", "Virtua Bowling (Japan, V100JCM)", - "vcarn", "Video Carnival 1999 / Super Royal Card (Version 0.11)", - "vcircle", "Vicious Circle (prototype)", - "vcombat", "Virtual Combat", - "vcop", "Virtua Cop (Revision B)", - "vcop2", "Virtua Cop 2", - "vcop3", "Virtua Cop 3 (Rev A) (GDX-0003A)", - "vcopa", "Virtua Cop (Revision A)", - "vector", "Vector", - "vega", "Vega", - "vegas", "Vegas", - "vegasfst", "Royal Vegas Joker Card (fast deal)", - "vegasfte", "Royal Vegas Joker Card (fast deal, English gfx)", - "vegasgp", "Vegas (Game Plan)", - "vegasmil", "Royal Vegas Joker Card (fast deal, Mile)", - "vegasslw", "Royal Vegas Joker Card (slow deal)", - "vegast", "Vegas (Taito)", - "vendetta", "Vendetta (World 4 Players ver. T)", - "vendetta2p", "Vendetta (World 2 Players ver. W)", - "vendetta2pd", "Vendetta (Asia 2 Players ver. D)", - "vendetta2pu", "Vendetta (Asia 2 Players ver. U)", - "vendettaj", "Crime Fighters 2 (Japan 2 Players ver. P)", - "vendettar", "Vendetta (World 4 Players ver. R)", - "venture", "Venture (version 5 set 1)", - "venture2", "Venture (version 5 set 2)", - "venture4", "Venture (version 4)", - "venus", "Venus (bootleg of Gyruss)", - "version4", "Version 4 (Version 4.3R CGA)", - "version4d2", "Version 4 (Version 4.3E CGA)", - "version4d3", "Version 4 (Version 4.3LT CGA)", - "version4o", "Version 4 (Version 4.2R CGA)", - "version4v", "Version 4 (Version 4.3R Dual)", - "version4v2", "Version 4 (Version 4.3E Dual)", - "version4v3", "Version 4 (Version 4.3LT Dual)", - "vf", "Virtua Fighter", - "vf2", "Virtua Fighter 2 (Version 2.1)", - "vf2a", "Virtua Fighter 2 (Revision A)", - "vf2b", "Virtua Fighter 2 (Revision B)", - "vf2o", "Virtua Fighter 2", - "vf3", "Virtua Fighter 3 (Revision C)", - "vf3a", "Virtua Fighter 3 (Revision A)", - "vf3tb", "Virtua Fighter 3 Team Battle", - "vf4", "Virtua Fighter 4 (GDS-0012)", - "vf4b", "Virtua Fighter 4 (Rev B) (GDS-0012B)", - "vf4c", "Virtua Fighter 4 (Rev C) (GDS-0012C)", - "vf4cart", "Virtua Fighter 4 (Cartridge)", - "vf4evo", "Virtua Fighter 4 Evolution (Rev B) (GDS-0024B)", - "vf4evoa", "Virtua Fighter 4 Evolution (Rev A) (GDS-0024A)", - "vf4evoct", "Virtua Fighter 4 Evolution (Cartridge)", - "vf4tuned", "Virtua Fighter 4 Final Tuned (Rev F) (GDS-0036F)", - "vf4tuneda", "Virtua Fighter 4 Final Tuned (Rev A) (GDS-0036A)", - "vf4tunedd", "Virtua Fighter 4 Final Tuned (Rev D) (GDS-0036D)", - "vfive", "V-Five (Japan)", - "vfkids", "Virtua Fighter Kids (JUET 960319 V0.000)", - "vformula", "Virtua Formula", - "vfremix", "Virtua Fighter Remix (JUETBKAL 950428 V1.000)", - "vfurlong", "Net Select Keiba Victory Furlong", - "vgoalsca", "V Goal Soccer (set 2)", - "vgoalsoc", "V Goal Soccer (set 1)", - "vhunt2", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970929)", - "vhunt2d", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970913 Phoenix Edition) (bootleg)", - "vhunt2r1", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970913)", - "vhuntj", "Vampire Hunter: Darkstalkers' Revenge (Japan 950316)", - "vhuntjr1", "Vampire Hunter: Darkstalkers' Revenge (Japan 950307)", - "vhuntjr1s", "Vampire Hunter: Darkstalkers' Revenge (Japan 950307 stop version)", - "vhuntjr2", "Vampire Hunter: Darkstalkers' Revenge (Japan 950302)", - "victlapw", "Ace Driver: Victory Lap (Rev. ADV2)", - "victnine", "Victorious Nine", - "victor21", "Victor 21", - "victor5", "G.E.A.", - "victor6", "Victor 6 (v2.3N)", - "victor6a", "Victor 6 (v2.3)", - "victor6b", "Victor 6 (v1.2)", - "victorba", "Victor Banana", - "victory", "Victory", - "victoryp", "Victory (Pinball)", - "victroad", "Victory Road", - "videocba", "Video Cordoba", - "videodad", "Video Dado", - "videomat", "Videomat (Polish bootleg)", - "videopin", "Video Pinball", - "videopkr", "Video Poker", - "videtrna", "Videotron Poker (normal controls)", - "videtron", "Videotron Poker (cards selector, set 1)", - "videtron2", "Videotron Poker (cards selector, set 2)", - "vidvince", "Video Vince and the Game Factory (prototype)", - "viewpoin", "Viewpoint", - "vigilant", "Vigilante (World, set 1)", - "vigilant1", "Vigilante (World, set 2)", - "vigilantj", "Vigilante (Japan)", - "vigilantu", "Vigilante (US)", - "vigilantu2", "Vigilante (US) - Rev. G", - "viking", "Viking", - "vikingt", "Viking Treasure", - "vimana", "Vimana (World, set 1)", - "vimanaj", "Vimana (Japan)", - "vimanan", "Vimana (World, set 2)", - "vindctr2", "Vindicators Part II (rev 3)", - "vindctr2r1", "Vindicators Part II (rev 1)", - "vindctr2r2", "Vindicators Part II (rev 2)", - "vindictr", "Vindicators (rev 5)", - "vindictr1", "Vindicators (rev 1)", - "vindictr2", "Vindicators (rev 2)", - "vindictr4", "Vindicators (rev 4)", - "vindictre", "Vindicators (Europe, rev 5)", - "vindictre3", "Vindicators (Europe, rev 3)", - "vindictre4", "Vindicators (Europe, rev 4)", - "vindictrg", "Vindicators (German, rev 1)", - "viofight", "Violence Fight (World)", - "viofightj", "Violence Fight (Japan)", - "viofightu", "Violence Fight (US)", - "viostorm", "Violent Storm (ver EAC)", - "viostorma", "Violent Storm (ver AAC)", - "viostormab", "Violent Storm (ver AAB)", - "viostormeb", "Violent Storm (ver EAB)", - "viostormj", "Violent Storm (ver JAC)", - "viostormu", "Violent Storm (ver UAC)", - "viostormub", "Violent Storm (ver UAB)", - "vipclub", "Vip Club - Maru-hi Ippatsu Kaihou [BET] (Japan 880310)", - "viper", "Viper", - "viperp", "Viper (Pinball)", - "viprp1", "Viper Phase 1 (New Version, World)", - "viprp1hk", "Viper Phase 1 (Hong Kong)", - "viprp1j", "Viper Phase 1 (New Version, Japan)", - "viprp1k", "Viper Phase 1 (New Version, Korea)", - "viprp1oj", "Viper Phase 1 (Japan)", - "viprp1ot", "Viper Phase 1 (Germany)", - "viprp1s", "Viper Phase 1 (New Version, Switzerland)", - "viprp1u", "Viper Phase 1 (New Version, US set 1)", - "viprp1ua", "Viper Phase 1 (New Version, US set 2)", - "viprsega", "Viper Night Drivin'", - "virnba", "Virtua NBA (JPN, USA, EXP, KOR, AUS)", - "virnbao", "Virtua NBA (JPN, USA, EXP, KOR, AUS) (original)", - "virnbap", "Virtua NBA (prototype)", - "vitaminc", "Mahjong Vitamin C (Japan)", - "vivdolls", "Vivid Dolls", - "vlcno_1a", "Volcano (Sound Only, alternate version)", - "vlcno_1b", "Volcano (Sound Only)", - "vlcno_ax", "Volcano", - "vliner", "V-Liner (set 1)", - "vlinero", "V-Liner (set 2)", - "vmahjong", "Virtual Mahjong (J 961214 V1.000)", - "vmetal", "Varia Metal", - "vmetaln", "Varia Metal (New Ways Trading Co.)", - "voleybal", "Voley Ball", - "volfied", "Volfied (World, revision 1)", - "volfiedj", "Volfied (Japan, revision 1)", - "volfiedjo", "Volfied (Japan)", - "volfiedo", "Volfied (World)", - "volfiedu", "Volfied (US, revision 1)", - "volfieduo", "Volfied (US)", - "vollyrmt", "Volly (Ramtek) [TTL]", - "voltan", "Voltan Escapes Cosmic Doom", - "von", "Cyber Troopers Virtual-On (USA, Revision B)", - "von2", "Virtual On 2: Oratorio Tangram (Revision B)", - "von254g", "Virtual On 2: Oratorio Tangram (ver 5.4g)", - "vonj", "Cyber Troopers Virtual-On (Japan, Revision B)", - "vonot", "Virtual On Oratorio Tangram M.S.B.S. ver5.66 2000 Edition", - "vortex", "Vortex", - "vortexp", "Vortex (Pinball)", - "voyager", "Star Trek: Voyager", - "vpoker", "Videotronics Poker", - "vpool", "Video Pool (bootleg on Moon Cresta hardware)", - "vr", "Virtua Racing", - "vrkon_l1", "Varkon (L-1)", - "vrnwrld", "Verne's World", - "vroulet", "Vegas Roulette", - "vs10yard", "Vs 10-Yard Fight (World, 11/05/84)", - "vs10yardj", "Vs 10-Yard Fight (Japan)", - "vs10yardu", "Vs 10-Yard Fight (US, Taito license)", - "vs2", "Virtua Striker 2 (Step 2.0)", - "vs2002ex", "Virtua Striker 2002 (GDT-0002)", - "vs2002j", "Virtua Striker 2002 (GDT-0001)", - "vs215", "Virtua Striker 2 (Step 1.5)", - "vs215o", "Virtua Striker 2 (Step 1.5, older)", - "vs298", "Virtua Striker 2 '98 (Step 2.0)", - "vs29815", "Virtua Striker 2 '98 (Step 1.5)", - "vs299", "Virtua Striker 2 '99", - "vs299a", "Virtua Striker 2 '99 (Revision A)", - "vs299b", "Virtua Striker 2 '99 (Revision B)", - "vs2_2k", "Virtua Striker 2 Ver. 2000 (JPN, USA, EXP, KOR, AUS) (Rev C)", - "vs2v991", "Virtua Striker 2 '99.1 (Revision B)", - "vs4", "Virtua Striker 4 (Export) (GDT-0015)", - "vs42006", "Virtua Striker 4 Ver.2006 (Japan) (Rev D) (GDT-0020D)", - "vs4j", "Virtua Striker 4 (Japan) (Rev E) (GDT-0013E)", - "vsav", "Vampire Savior: The Lord of Vampire (Euro 970519)", - "vsav2", "Vampire Savior 2: The Lord of Vampire (Japan 970913)", - "vsav2d", "Vampire Savior 2: The Lord of Vampire (Japan 970913 Phoenix Edition) (bootleg)", - "vsava", "Vampire Savior: The Lord of Vampire (Asia 970519)", - "vsavd", "Vampire Savior: The Lord of Vampire (Euro 970519 Phoenix Edition) (bootleg)", - "vsavh", "Vampire Savior: The Lord of Vampire (Hispanic 970519)", - "vsavj", "Vampire Savior: The Lord of Vampire (Japan 970519)", - "vsavu", "Vampire Savior: The Lord of Vampire (USA 970519)", - "vsbball", "Vs. BaseBall (US, set BA E-1)", - "vsbballj", "Vs. BaseBall (Japan, set BA A-3)", - "vsbballja", "Vs. BaseBall (Japan, set BA A-2)", - "vsbballjb", "Vs. BaseBall (Japan, set BA A-1)", - "vsfdf", "Vs. Freedom Force", - "vsgongf", "VS Gong Fight", - "vsgradus", "Vs. Gradius (US, set GR E)", - "vsgshoe", "Vs. Gumshoe (set GM5)", - "vshoot", "J-League Soccer V-Shoot (Japan)", - "vsmahjng", "Vs. Mahjong (Japan)", - "vsnetscr", "Versus Net Soccer (ver EAD)", - "vsnetscra", "Versus Net Soccer (ver AAA)", - "vsnetscreb", "Versus Net Soccer (ver EAB)", - "vsnetscrj", "Versus Net Soccer (ver JAB)", - "vsnetscru", "Versus Net Soccer (ver UAB)", - "vspinbal", "Vs. Pinball (US, set PN4 E-1)", - "vspinbalj", "Vs. Pinball (Japan, set PN3 B)", - "vspsx", "Video System PSX", - "vsskykid", "Vs. Super SkyKid", - "vsslalom", "Vs. Slalom", - "vssoccer", "Vs. Soccer (set SC4-2 A)", - "vssoccera", "Vs. Soccer (set SC4-3 ?)", - "vstennis", "Vs. Tennis (Japan/USA, set TE A-3)", - "vstennisa", "Vs. Tennis (Japan/USA, set 2)", - "vstennisb", "Vs. Tennis (Japan/USA, set 3)", - "vstetris", "Vs. Tetris", - "vstrik3", "Virtua Striker 3 Ver. 2002 (GDS-0006)", - "vstrik3c", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev C)", - "vstrik3cb", "Virtua Striker 3 (USA, EXP, KOR, AUS) (Cart, Rev B)", - "vstriker", "Virtua Striker (Revision A)", - "vstrikero", "Virtua Striker", - "vtenis2c", "Virtua Tennis 2 / Power Smash 2 (JPN) (USA, EXP, KOR, AUS) (Cart, Rev A)", - "vtennis", "Virtua Tennis (USA, EXP, KOR, AUS) / Power Smash (JPN)", - "vtennis2", "Virtua Tennis 2 / Power Smash 2 (Rev A) (GDS-0015A)", - "vtennisg", "Virtua Tennis / Power Smash (GDS-0011)", - "vulcan", "Vulcan Venture (New)", - "vulcana", "Vulcan Venture (Old)", - "vulcanb", "Vulcan Venture (Oldest)", - "vulgus", "Vulgus (set 1)", - "vulgusa", "Vulgus (set 2)", - "vulgusj", "Vulgus (Japan?)", - "wackadoo", "Wack-A-Doodle-Doo (Redemption)", - "wacko", "Wacko", - "wakuwak7", "Waku Waku 7", - "wallc", "Wall Crash (set 1)", - "wallca", "Wall Crash (set 2)", - "wallst", "Wall Street", - "wanganmd", "Wangan Midnight (WMN1 Ver. A)", - "wangmd2b", "Wangan Midnight Maximum Tune 2 (Japan) (Rev A) (GDX-0016A)", - "wangmid", "Wangan Midnight Maximum Tune (Export) (Rev B) (GDX-0009B)", - "wangmid2", "Wangan Midnight Maximum Tune 2 (Export) (GDX-0015)", - "wanted", "Wanted", - "warcadia", "Waga Seishun no Arcadia", - "wardner", "Wardner (World)", - "wardnerj", "Wardner no Mori (Japan)", - "warfa", "War: The Final Assault", - "wargods", "War Gods (HD 10/09/1996 - Dual Resolution)", - "wargodsa", "War Gods (HD 08/15/1996)", - "wargodsb", "War Gods (HD 12/11/1995)", - "warlords", "Warlords", - "warofbug", "War of the Bugs or Monsterous Manouvers in a Mushroom Maze", - "warofbugg", "War of the Bugs or Monsterous Manouvers in a Mushroom Maze (German)", - "warofbugu", "War of the Bugs or Monsterous Manouvers in a Mushroom Maze (US)", - "warpsped", "Warp Speed (prototype)", - "warpwarp", "Warp & Warp", - "warpwarpr", "Warp Warp (Rock-Ola set 1)", - "warpwarpr2", "Warp Warp (Rock-Ola set 2)", - "warrior", "Warrior", - "warriorb", "Warrior Blade - Rastan Saga Episode III (Japan)", - "warzard", "Warzard (Japan 961121)", - "warzardr1", "Warzard (Japan 961023)", - "waterski", "Water Ski", - "waterwld", "Waterworld (rev.3)", - "waterwld2", "Waterworld (rev.2)", - "watrball", "Water Balls", - "waverunr", "Wave Runner (Japan, Revision A)", - "waveshrk", "Wave Shark (UAB, USA v1.04)", - "wb3", "Wonder Boy III - Monster Lair (set 6, World, System 16B, 8751 317-0098)", - "wb31", "Wonder Boy III - Monster Lair (set 1, Japan, System 16A, FD1094 317-0084)", - "wb32", "Wonder Boy III - Monster Lair (set 2, Japan, System 16B, FD1094 317-0085)", - "wb33", "Wonder Boy III - Monster Lair (set 3, World, System 16B, FD1094 317-0089)", - "wb34", "Wonder Boy III - Monster Lair (set 4, Japan, System 16B, FD1094 317-0087)", - "wb35", "Wonder Boy III - Monster Lair (set 5, Japan, System 16A, FD1089A 317-0086)", - "wb3bbl", "Wonder Boy III - Monster Lair (bootleg)", - "wbbc97", "Beach Festival World Championship 1997", - "wbdeluxe", "Wonder Boy Deluxe", - "wbeachvl", "World Beach Volley (set 1)", - "wbeachvl2", "World Beach Volley (set 2)", - "wbeachvl3", "World Beach Volley (set 3)", - "wbml", "Wonder Boy in Monster Land (Japan New Ver., MC-8123, 317-0043)", - "wbmlb", "Wonder Boy in Monster Land (English bootleg set 1)", - "wbmlbg", "Wonder Boy in Monster Land (English bootleg set 2)", - "wbmlbge", "Wonder Boy in Monster Land (English bootleg set 3)", - "wbmljb", "Wonder Boy in Monster Land (Japan bootleg)", - "wbmljo", "Wonder Boy in Monster Land (Japan Old Ver., MC-8123, 317-0043)", - "wbmlvc", "Wonder Boy in Monster Land (English, Virtual Console)", - "wboy", "Wonder Boy (set 1, 315-5177)", - "wboy2", "Wonder Boy (set 2, 315-5178)", - "wboy2u", "Wonder Boy (set 2, not encrypted)", - "wboy3", "Wonder Boy (set 3, 315-5135)", - "wboy4", "Wonder Boy (315-5162, 4-D Warriors Conversion)", - "wboy5", "Wonder Boy (set 5, bootleg)", - "wboyo", "Wonder Boy (set 1, 315-5135)", - "wboysys2", "Wonder Boy (system 2)", - "wboyu", "Wonder Boy (prototype?)", - "wboyub", "Wonder Boy (US bootleg)", - "wc90", "Tecmo World Cup '90 (World)", - "wc90a", "Tecmo World Cup '90 (Euro set 1)", - "wc90b", "Tecmo World Cup '90 (Euro set 2)", - "wc90b1", "Euro League (Italian hack of Tecmo World Cup '90)", - "wc90b2", "Worldcup '90", - "wc90t", "Tecmo World Cup '90 (trackball set 1)", - "wcat3", "Wild Cat 3", - "wcatcher", "Mahjong Wakuwaku Catcher (Japan)", - "wcbowl", "World Class Bowling (v1.66)", - "wcbowl11", "World Class Bowling (v1.1)", - "wcbowl12", "World Class Bowling (v1.2)", - "wcbowl13", "World Class Bowling (v1.3)", - "wcbowl13j", "World Class Bowling (v1.3J, Japan)", - "wcbowl14", "World Class Bowling (v1.4)", - "wcbowl140", "World Class Bowling Tournament (v1.40)", - "wcbowl15", "World Class Bowling (v1.5)", - "wcbowl16", "World Class Bowling (v1.6)", - "wcbowl161", "World Class Bowling (v1.61)", - "wcbowl165", "World Class Bowling (v1.65)", - "wcbowldx", "World Class Bowling Deluxe (v2.00)", - "wcherry", "Win Cherry (ver 0.16 - 19990219)", - "wcombat", "World Combat (ver UAA?)", - "wcombatj", "World Combat (ver JAA)", - "wcombatk", "World Combat (ver KBC)", - "wcs_l2", "World Cup Soccer (Lx-2)", - "wcs_p2", "World Cup Soccer (Pa-2)", - "wcs_p3", "World Cup Soccer (Px-3)", - "wcsoccer", "World Challenge Soccer (rev.1)", - "wcsoccerd2", "World Challenge Soccer (disp.rev.2)", - "wcup90", "World Cup 90", - "wcvol95", "World Cup Volley '95 (Japan v1.0)", - "wd_03r", "Who Dunnit (0.3 R)", - "wd_048r", "Who Dunnit (0.48 R)", - "wd_10f", "Who Dunnit (1.0 French)", - "wd_10g", "Who Dunnit (1.0 Germany)", - "wd_10r", "Who Dunnit (1.0 R)", - "wd_11", "Who Dunnit (1.1)", - "wd_12", "Who Dunnit (1.2)", - "wd_12g", "Who Dunnit (1.2 Germany)", - "wdun", "Who Dunnit (Russia)", - "wecleman", "WEC Le Mans 24 (set 1)", - "wecleman2", "WEC Le Mans 24 (set 2)", - "weddingr", "Wedding Rhapsody (GX624 JAA)", - "welltris", "Welltris (World?, 2 players)", - "welltrisj", "Welltris (Japan, 2 players)", - "westgun2", "Western Gun Part II", - "weststry", "West Story (bootleg of Blood Bros.)", - "westvent", "Western Venture (Ver. AA.02.D)", - "wexpress", "Western Express (Japan, rev 4)", - "wexpressb1", "Western Express (bootleg set 1)", - "wexpressb2", "Western Express (bootleg set 2)", - "wexpressb3", "Western Express (bootleg set 3)", - "wfortune", "Wheel Of Fortune (set 1)", - "wfortunea", "Wheel Of Fortune (set 2)", - "wg3dh", "Wayne Gretzky's 3D Hockey", - "wgp", "World Grand Prix (US)", - "wgp2", "World Grand Prix 2 (Japan)", - "wgpj", "World Grand Prix (Japan)", - "wgpjoy", "World Grand Prix (joystick version) (Japan, set 1)", - "wgpjoya", "World Grand Prix (joystick version) (Japan, set 2)", - "wh1", "World Heroes (ALM-005)", - "wh1h", "World Heroes (ALH-005)", - "wh1ha", "World Heroes (set 3)", - "wh2", "World Heroes 2 (ALM-006)(ALH-006)", - "wh2j", "World Heroes 2 Jet (ADM-007)(ADH-007)", - "whalecsh", "Whales of Cash (20155711, Malaysia)", - "wheelfir", "Wheels & Fire", - "wheelrun", "Wheels Runner", - "wheregld", "Where's the Gold (20177111, Malaysia)", - "whirl_l2", "Whirlwind (L-2)", - "whirl_l3", "Whirlwind (L-3)", - "whirl_lg3", "Whirlwind (LG-3)", - "whiterus", "White Russia (Konami Endeavour)", - "whizz", "Whizz", - "whodunit", "Who Dunit (version 9.0)", - "whodunit8", "Who Dunit (version 8.0)", - "whoopee", "Pipi & Bibis / Whoopee!! (Teki Paki hardware)", - "whp", "World Heroes Perfect", - "wiggie", "Wiggie Waggie", - "wildfang", "Wild Fang / Tecmo Knight", - "wildfangs", "Wild Fang", - "wildfyre", "Wildfyre", - "wildone", "Wild One (4VXEC5357, New Zealand)", - "wildpkr", "Wild Poker (ver. D 1.01)", - "wildplt", "Wild Pilot", - "wildways", "Wild Ways (10130111, Malaysia)", - "willow", "Willow (USA)", - "willowj", "Willow (Japan)", - "willowo", "Willow (USA Old Ver.)", - "wilytowr", "Wily Tower", - "winbid", "Winning Bid (Russia)", - "winbingo", "Win Win Bingo (set 1)", - "winbingoa", "Win Win Bingo (set 2)", - "windheat", "Winding Heat (EAA, Euro v2.11)", - "windheata", "Winding Heat (AAA, Asia v2.11)", - "windheatj", "Winding Heat (JAA, Japan v2.11)", - "windheatu", "Winding Heat (UBC, USA v2.22)", - "wingwar", "Wing War (World)", - "wingwarj", "Wing War (Japan)", - "wingwaru", "Wing War (US)", - "wink", "Wink (set 1)", - "winka", "Wink (set 2)", - "winner81", "Winners Circle (81, 28*28 PCB)", - "winner81b", "Winners Circle (81, 18*22 PCB)", - "winner82", "Winners Circle (82)", - "winrun", "Winning Run", - "winrun91", "Winning Run '91 (Japan)", - "winrungp", "Winning Run Suzuka Grand Prix (Japan)", - "winspike", "Winning Spike (ver EAA)", - "winspikej", "Winning Spike (ver JAA)", - "wintbob", "The Winter Bobble (bootleg of Snow Bros.)", - "winterht", "Winter Heat (JUET 971012 V1.000)", - "wipeormt", "Wipeout (Ramtek) [TTL]", - "wipeout", "Wipeout (rev.2)", - "wiping", "Wiping", - "wiseguy", "Wise Guy", - "witch", "Witch", - "witchb", "Witch (With ranking)", - "witchcda", "Witch Card (Spanish, witch game, set 1)", - "witchcdb", "Witch Card (Spanish, witch game, set 2)", - "witchcdc", "Witch Card (English, no witch game)", - "witchcdd", "Witch Card (German, WC3050, set 1 )", - "witchcde", "Witch Card (Video Klein CPU box, set 2)", - "witchcdf", "Witch Card (English, witch game, lamps)", - "witchcdg", "Witch Card (Falcon, enhanced sound)", - "witchcdh", "Witch Card (German, WC3050, set 2 )", - "witchcdi", "Witch Card (German, WC3050, 27-4-94)", - "witchcdk", "Witch Game (Video Klein, set 2)", - "witchcrd", "Witch Card (Video Klein CPU box, set 1)", - "witchgme", "Witch Game (Video Klein, set 1)", - "witchjol", "Jolli Witch (Export, 6T/12T ver 1.57D)", - "witchryl", "Witch Royal (Export version 2.1)", - "witchs", "Witch (Sega License)", - "wits", "Wit's (Japan)", - "wivernwg", "Wivern Wings", - "wiz", "Wiz", - "wizard", "Wizard (Ver 1.0)", - "wizdfire", "Wizard Fire (Over Sea v2.1)", - "wizdfireu", "Wizard Fire (US v1.1)", - "wizt", "Wiz (Taito, set 1)", - "wizta", "Wiz (Taito, set 2)", - "wizwarz", "Wiz Warz (prototype)", - "wizzquiz", "Wizz Quiz (Konami version)", - "wizzquiza", "Wizz Quiz (version 4)", - "wjammers", "Windjammers / Flying Power Disc", - "wlcc", "Wan Li Chang Cheng (China, V638C)", - "wldarrow", "Wild Arrow (color, Standard V4.8)", - "wldcourt", "World Court (Japan)", - "wldcp_l1", "World Cup Soccer (L-1)", - "wldkicks", "World Kicks (WK2 Ver. A)", - "wldkicksa", "World Kicks (WK3 Ver. A)", - "wldkicksb", "World Kicks PCB (WKC1 Ver. A)", - "wldrider", "Wild Riders (JPN, USA, EXP, KOR, AUS)", - "wldstrek", "Wild Streak (Russia)", - "wldwitch", "Wild Witch (Export, 6T/12T ver 1.84A)", - "wldwitcha", "Wild Witch (Export, 6T/12T ver 1.57-SP)", - "wldwitchb", "Wild Witch (Export, 6T/12T ver 1.57-TE)", - "wldwitchc", "Wild Witch (Export, 6T/12T ver 1.62A)", - "wldwitchd", "Wild Witch (Export, 6T/12T ver 1.62B)", - "wldwitche", "Wild Witch (Export, 6T/12T ver 1.62A-F)", - "wldwitchf", "Wild Witch (Export, 6T/12T ver 1.62A alt)", - "wldwitchg", "Wild Witch (Export, 6T/12T ver 1.62B alt)", - "wldwitchh", "Wild Witch (Export, 6T/12T ver 1.65A)", - "wldwitchi", "Wild Witch (Export, 6T/12T ver 1.65A-S)", - "wldwitchj", "Wild Witch (Export, 6T/12T ver 1.65A-S alt)", - "wldwitchk", "Wild Witch (Export, 6T/12T ver 1.65A-N)", - "wldwitchl", "Wild Witch (Export, 6T/12T ver 1.70A beta)", - "wldwitchm", "Wild Witch (Export, 6T/12T ver 1.70A)", - "wldwitchn", "Wild Witch (Export, 6T/12T ver 1.70A alt)", - "wldwitcho", "Wild Witch (Export, 6T/12T ver 1.74A-SP-BELG)", - "wldwitchp", "Wild Witch (Export, 6T/12T ver 1.74A)", - "wldwitchq", "Wild Witch (Export, 6T/12T ver 1.74A alt)", - "wldwitchr", "Wild Witch (Export, 6B/12B ver 1.75A-E English)", - "wldwitchs", "Wild Witch (Export, 6T/12T ver 1.76A)", - "wldwitcht", "Wild Witch (Export, 6T/12T ver 1.77A)", - "wldwitchu", "Wild Witch (Export, 6T/12T ver 1.79A)", - "wldwitchv", "Wild Witch (Export, 6T/12T ver 1.83A)", - "wlstar", "Wonder League Star - Sok-Magicball Fighting (Korea)", - "wmatch", "Water Match (315-5064)", - "wmg", "Williams Multigame", - "wms", "WMS SetUp/Clear Chips (set 1)", - "wmsa", "WMS SetUp/Clear Chips (set 2)", - "wmsb", "WMS SetUp/Clear Chips (set 3)", - "wmsboom", "Boom (Russia)", - "wmstopb", "Top Banana (Russia)", - "wndrmomo", "Wonder Momo", - "wndrplnt", "Wonder Planet (Japan)", - "wof", "Warriors of Fate (World 921031)", - "wofa", "Sangokushi II (Asia 921005)", - "wofhfh", "Huo Feng Huang (Chinese bootleg of Sangokushi II)", - "wofj", "Tenchi wo Kurau II: Sekiheki no Tatakai (Japan 921031)", - "wofr1", "Warriors of Fate (World 921002)", - "wofu", "Warriors of Fate (USA 921031)", - "wolffang", "Wolf Fang -Kuhga 2001- (Japan)", - "wolfman", "Wolf Man", - "wolfpack", "Wolf Pack (prototype)", - "wonder3", "Wonder 3 (Japan 910520)", - "wondl96", "Wonder League '96 (Korea)", - "wondstck", "Wonder Stick", - "woodpeca", "Woodpecker (set 2)", - "woodpeck", "Woodpecker (set 1)", - "worlddef", "World Defender", - "worldwar", "World Wars (World?)", - "wotw", "War of the Worlds", - "wotwc", "War of the Worlds (color)", - "wow", "Wizard of Wor", - "wowg", "Wizard of Wor (with German Language ROM)", - "wownfant", "WOW New Fantasia", - "wpksoc", "World PK Soccer", - "wpksocv2", "World PK Soccer V2 (ver 1.1)", - "wrally", "World Rally (set 1)", - "wrally2", "World Rally 2: Twin Racing", - "wrallya", "World Rally (set 2)", - "wrallyb", "World Rally (US, 930217)", - "wrecking", "Vs. Wrecking Crew", - "wrestwar", "Wrestle War (set 3, World, 8751 317-0103)", - "wrestwar1", "Wrestle War (set 1, Japan, FD1094 317-0090)", - "wrestwar2", "Wrestle War (set 2, World, FD1094 317-0102)", - "wrldtour", "Al's Garage Band Goes On A World Tour", - "wrldtour2", "Al's Garage Band Goes On A World Tour R02b", - "wrlok_l3", "Warlok (L-3)", - "wrofaero", "War of Aero - Project MEIOU", - "wrungp", "Wave Runner GP", - "ws", "World Stadium (Japan)", - "ws89", "World Stadium '89 (Japan)", - "ws90", "World Stadium '90 (Japan)", - "wsbbgd", "Super Major League / World Series Baseball (GDS-0010)", - "wschamp", "Wing Shooting Championship V2.00", - "wschampa", "Wing Shooting Championship V1.01", - "wschampb", "Wing Shooting Championship V1.00", - "wseries", "World Series: The Season", - "wsf", "World Soccer Finals", - "wsjr", "Who Shot Johnny Rock? v1.6", - "wsjr15", "Who Shot Johnny Rock? v1.5", - "wsports", "Winter Sports", - "wstrike", "Witch Strike (Export, 6T/12T ver 1.01A)", - "wstrikea", "Witch Strike (Export, 6T/12T ver 1.01B)", - "wswe", "World Soccer Winning Eleven Arcade Game Style", - "wswe2k3", "World Soccer Winning Eleven Arcade Game 2003", - "wtchjack", "Witch Jack (Export, 6T/12T ver 0.87-89)", - "wtchjacka", "Witch Jackpot (Export, 6T/12T ver 0.25)", - "wtchjackb", "Witch Jack (Export, 6T/12T ver 0.40)", - "wtchjackc", "Witch Jack (Export, 6T/12T ver 0.40T)", - "wtchjackd", "Witch Jack (Export, 6T/12T ver 0.62)", - "wtchjacke", "Witch Jack (Export, 6T/12T ver 0.64)", - "wtchjackf", "Witch Jack (Export, 6T/12T ver 0.65)", - "wtchjackg", "Witch Jack (Export, 6T/12T ver 0.70S)", - "wtchjackh", "Witch Jack (Export, 6T/12T ver 0.70P)", - "wtchjacki", "Witch Jack (Export, 6T/12T ver 0.87)", - "wtchjackj", "Witch Jack (Export, 6T/12T ver 0.87-88)", - "wtennis", "World Tennis", - "wtiger", "White Tiger Classic (0200954V, NSW/ACT)", - "wtigernz", "White Tiger (3VXFC5342, New Zealand)", - "wtrnymph", "Water-Nymph (Ver. 1.4)", - "wupndown", "Witch Up & Down (Export, 6T/12T ver 1.02)", - "wupndowna", "Witch Up & Down (Export, 6T/12T ver 0.99, set 1)", - "wupndownb", "Witch Up & Down (Export, 6T/12T ver 0.99, set 2)", - "wupndownc", "Witch Up & Down (Export, 6T/12T ver 0.99, set 3)", - "wupndownd", "Witch Up & Down (Export, 6T/12T ver 0.99T)", - "ww3", "WW III", - "ww_l2", "White Water (L-2)", - "ww_l3", "White Water (L-3)", - "ww_l4", "White Water (L-4)", - "ww_l5", "White Water (L-5)", - "ww_lh5", "White Water (LH-5)", - "ww_lh6", "White Water (LH-6)", - "ww_p1", "White Water (P-8 P-1 sound)", - "ww_p8", "White Water (P-8 P-2 sound)", - "wwallyj", "Wally wo Sagase! (rev B, Japan, FD1094 317-0197B)", - "wwallyja", "Wally wo Sagase! (rev A, Japan, FD1094 317-0197A)", - "wwestern", "Wild Western (set 1)", - "wwestern1", "Wild Western (set 2)", - "wwfmania", "WWF: Wrestlemania (rev 1.30 08/10/95)", - "wwfmaniab", "WWF: Wrestlemania (rev 1.20 08/02/95)", - "wwfmaniac", "WWF: Wrestlemania (rev 1.1 07/11/95)", - "wwfr_103", "WWF Royal Rumble (1.03)", - "wwfr_106", "WWF Royal Rumble (1.06)", - "wwfroyal", "WWF Royal Rumble (JPN, USA, EXP, KOR, AUS)", - "wwfsstar", "WWF Superstars (Europe)", - "wwfsstarb", "WWF Superstars (bootleg)", - "wwfsstarj", "WWF Superstars (Japan)", - "wwfsstaru", "WWF Superstars (US, Newer)", - "wwfsstarua", "WWF Superstars (US)", - "wwfwfest", "WWF WrestleFest (US set 1)", - "wwfwfesta", "WWF WrestleFest (US Tecmo)", - "wwfwfestb", "WWF WrestleFest (US bootleg)", - "wwfwfestj", "WWF WrestleFest (Japan)", - "wwfwfestk", "WWF WrestleFest (Korea)", - "wwjgtin", "Wai Wai Jockey Gate-In!", - "wyvernwg", "Wyvern Wings (set 1)", - "wyvernwga", "Wyvern Wings (set 2)", - "x2222", "X2222 (final debug?)", - "x2222o", "X2222 (5-level prototype)", - "x5jokers", "X Five Jokers (Version 1.12)", - "xday2", "X-Day 2 (Japan)", - "xenon", "Xenon", - "xenonf", "Xenon (French)", - "xenophob", "Xenophobe", - "xevi3dg", "Xevious 3D/G (Japan, XV31/VER.A)", - "xevios", "Xevios", - "xevious", "Xevious (Namco)", - "xeviousa", "Xevious (Atari, harder)", - "xeviousb", "Xevious (Atari)", - "xeviousc", "Xevious (Atari, Namco PCB)", - "xexex", "Xexex (ver EAA)", - "xexexa", "Xexex (ver AAA)", - "xexexj", "Xexex (ver JAA)", - "xfiles", "X-Files", - "xfiles2", "X-Files (2.04)", - "xfilesp", "X-Files (3.03)", - "xforce", "X Force", - "xiistag", "XII Stag (V2.01J)", - "xmcota", "X-Men: Children of the Atom (Euro 950331)", - "xmcotaa", "X-Men: Children of the Atom (Asia 950105)", - "xmcotaar1", "X-Men: Children of the Atom (Asia 941217)", - "xmcotah", "X-Men: Children of the Atom (Hispanic 950331)", - "xmcotahr1", "X-Men: Children of the Atom (Hispanic 950105)", - "xmcotaj", "X-Men: Children of the Atom (Japan 950105)", - "xmcotaj1", "X-Men: Children of the Atom (Japan 941222)", - "xmcotaj2", "X-Men: Children of the Atom (Japan 941219)", - "xmcotaj3", "X-Men: Children of the Atom (Japan 941217)", - "xmcotajr", "X-Men: Children of the Atom (Japan 941208 rent version)", - "xmcotar1", "X-Men: Children of the Atom (Euro 950105)", - "xmcotar1d", "X-Men: Children of the Atom (Euro 950105 Phoenix Edition) (bootleg)", - "xmcotau", "X-Men: Children of the Atom (USA 950105)", - "xmen", "X-Men (4 Players ver UBB)", - "xmen2pa", "X-Men (2 Players ver AAA)", - "xmen2pe", "X-Men (2 Players ver EAA)", - "xmen2pj", "X-Men (2 Players ver JAA)", - "xmen6p", "X-Men (6 Players ver ECB)", - "xmen6pu", "X-Men (6 Players ver UCB)", - "xmena", "X-Men (4 Players ver AEA)", - "xmenaa", "X-Men (4 Players ver ADA)", - "xmene", "X-Men (4 Players ver EBA)", - "xmenj", "X-Men (4 Players ver JBA)", - "xmultipl", "X Multiply (World, M81)", - "xmultiplm72", "X Multiply (Japan, M72)", - "xmvsf", "X-Men Vs. Street Fighter (Euro 961004)", - "xmvsfa", "X-Men Vs. Street Fighter (Asia 961023)", - "xmvsfar1", "X-Men Vs. Street Fighter (Asia 961004)", - "xmvsfar2", "X-Men Vs. Street Fighter (Asia 960919)", - "xmvsfar3", "X-Men Vs. Street Fighter (Asia 960910)", - "xmvsfb", "X-Men Vs. Street Fighter (Brazil 961023)", - "xmvsfh", "X-Men Vs. Street Fighter (Hispanic 961004)", - "xmvsfj", "X-Men Vs. Street Fighter (Japan 961004)", - "xmvsfjr1", "X-Men Vs. Street Fighter (Japan 960910)", - "xmvsfjr2", "X-Men Vs. Street Fighter (Japan 960909)", - "xmvsfr1", "X-Men Vs. Street Fighter (Euro 960910)", - "xmvsfu", "X-Men Vs. Street Fighter (USA 961023)", - "xmvsfu1d", "X-Men Vs. Street Fighter (USA 961004 Phoenix Edition) (bootleg)", - "xmvsfur1", "X-Men Vs. Street Fighter (USA 961004)", - "xorworld", "Xor World (prototype)", - "xplan", "X-Plan (Ver. 1.01)", - "xrally", "Xtreme Rally / Off Beat Racer!", - "xsandos", "X's & O's", - "xsedae", "X Se Dae Quiz (Korea)", - "xsleena", "Xain'd Sleena (World)", - "xsleenab", "Xain'd Sleena (bootleg)", - "xsleenaj", "Xain'd Sleena (Japan)", - "xtheball", "X the Ball", - "xtom3d", "X Tom 3D", - "xtrain", "X-Train (Ver. 1.3)", - "xtrial", "Xtrial Racing (ver JAB)", - "xtrmhnt2", "Extreme Hunting 2", - "xtrmhunt", "Extreme Hunting", - "xxmissio", "XX Mission", - "xybots", "Xybots (rev 2)", - "xybots0", "Xybots (rev 0)", - "xybots1", "Xybots (rev 1)", - "xybotsf", "Xybots (French, rev 3)", - "xybotsg", "Xybots (German, rev 3)", - "xymg", "Xing Yun Man Guan (China, V651C)", - "xyonix", "Xyonix", - "yachtmn", "Yachtsman", - "yamagchi", "Go Go Mr. Yamaguchi / Yuke Yuke Yamaguchi-kun", - "yamato", "Yamato (US)", - "yamato2", "Yamato (World?)", - "yamyam", "Yam! Yam!?", - "yanchamr", "Kaiketsu Yanchamaru (Japan)", - "yankeedo", "Yankee DO!", - "yarunara", "Mahjong Yarunara (Japan)", - "yellowcbb", "Yellow Cab (bootleg)", - "yellowcbj", "Yellow Cab (Japan)", - "yesnoj", "Yes/No Sinri Tokimeki Chart", - "yiear", "Yie Ar Kung-Fu (program code I)", - "yiear2", "Yie Ar Kung-Fu (program code G)", - "yieartf", "Yie Ar Kung-Fu (GX361 conversion)", - "yosakdon", "Yosaku To Donbei (set 1)", - "yosakdona", "Yosaku To Donbei (set 2)", - "yosimotm", "Mahjong Yoshimoto Gekijou [BET] (Japan)", - "yosimoto", "Mahjong Yoshimoto Gekijou (Japan)", - "youjyudn", "Youjyuden (Japan)", - "youkaidk1", "Yokai Douchuuki (Japan, old version (YD1))", - "youkaidk2", "Yokai Douchuuki (Japan, new version (YD2, Rev B))", - "youma", "Youma Ninpou Chou (Japan)", - "youma2", "Youma Ninpou Chou (Japan, alt)", - "youmab", "Youma Ninpou Chou (Game Electronics bootleg, set 1)", - "youmab2", "Youma Ninpou Chou (Game Electronics bootleg, set 2)", - "yujan", "Yu-Jan", - "yuka", "Yu-Ka", - "yukiwo", "Yukiwo (World, prototype)", - "yukon", "Yukon (version 2.0)", - "yukon1", "Yukon (version 1.0)", - "yukongld", "Yukon Gold (Russia)", - "yumefuda", "Yumefuda [BET]", - "yuyugogo", "Yuuyu no Quiz de GO!GO! (Japan)", - "yuyuhaku", "The Battle of Yu Yu Hakusho: Shitou! Ankoku Bujutsukai!", - "zankor", "Zankor (Italian speech)", - "zaryavos", "Zarya Vostoka", - "zarza", "Zarza", - "zarza1", "Zarza (alternate set)", - "zarzon", "Zarzon", - "zaviga", "Zaviga", - "zavigaj", "Zaviga (Japan)", - "zaxxon", "Zaxxon (set 1)", - "zaxxon2", "Zaxxon (set 2)", - "zaxxon3", "Zaxxon (set 3)", - "zaxxonb", "Jackson", - "zaxxonj", "Zaxxon (Japan)", - "zedblade", "Zed Blade / Operation Ragnarok", - "zekepeak", "Zeke's Peak", - "zektor", "Zektor (revision B)", - "zephy", "Zephy", - "zero", "Zero (set 1, Defender bootleg)", - "zero2", "Zero (set 2, Defender bootleg)", - "zerogu2", "Zero Gunner 2", - "zerogun", "Zero Gunner (Export, Model 2B)", - "zeroguna", "Zero Gunner (Export, Model 2A)", - "zerogunaj", "Zero Gunner (Japan, Model 2A)", - "zerogunj", "Zero Gunner (Japan, Model 2B)", - "zerohour", "Zero Hour (set 1)", - "zerohoura", "Zero Hour (set 2)", - "zeropnt", "Zero Point (set 1)", - "zeropnt2", "Zero Point 2", - "zeropnta", "Zero Point (set 2)", - "zeropntj", "Zero Point (Japan)", - "zeroteam", "Zero Team USA (set 1, US, Fabtek license)", - "zeroteama", "Zero Team (set 2, Japan? (earlier?))", - "zeroteamb", "Zero Team (set 3, Japan? (later batteryless))", - "zeroteamc", "Zero Team (set 4, Taiwan, Liang Hwa license)", - "zeroteamd", "Zero Team (set 5, Korea, Dream Soft license)", - "zeroteams", "Zero Team Selection", - "zeroteamsr", "Zero Team Suicide Revival Kit", - "zerotime", "Zero Time", - "zerotm2k", "Zero Team 2000", - "zerotrgt", "Zero Target (World, CW)", - "zerotrgta", "Zero Target (World, CT)", - "zerowing", "Zero Wing (2P set)", - "zerowing1", "Zero Wing (1P set)", - "zerowingw", "Zero Wing (2P set, Williams license)", - "zerozone", "Zero Zone", - "zgundm", "Mobile Suit Z-Gundam: A.E.U.G. vs Titans (ZGA1 Ver. A)", - "zgundmdx", "Mobile Suit Z-Gundam: A.E.U.G. vs Titans DX (ZDX1 Ver. A)", - "zigzag", "Zig Zag (Galaxian hardware, set 1)", - "zigzag2", "Zig Zag (Galaxian hardware, set 2)", - "zingzip", "Zing Zing Zip", - "zingzipbl", "Zing Zing Zip (bootleg)", - "zintrckb", "Zintrick / Oshidashi Zentrix (hack)", - "zipzap", "Zip & Zap", - "znpwfv", "Zen Nippon Pro-Wrestling Featuring Virtua (J 971123 V1.000)", - "zoar", "Zoar", - "zodiack", "Zodiack", - "zokumahj", "Zoku Mahjong Housoukyoku (Japan)", - "zokuoten", "Zoku Otenamihaiken (V2.03J)", - "zombraid", "Zombie Raid (9/28/95, US)", - "zombraidp", "Zombie Raid (9/28/95, US, prototype PCB)", - "zombraidpj", "Zombie Raid (9/28/95, Japan, prototype PCB)", - "zombrvn", "Zombie Revenge (JPN, USA, EXP, KOR, AUS)", - "zoo", "Zoo (Ver. ZO.02.D)", - "zookeep", "Zoo Keeper (set 1)", - "zookeep2", "Zoo Keeper (set 2)", - "zookeep3", "Zoo Keeper (set 3)", - "zoom909", "Zoom 909", - "zooo", "Zooo (V2.01J)", - "zortonbr", "Zorton Brothers (Los Justicieros)", - "zunkyou", "Zunzunkyou No Yabou (Japan)", - "zunou", "Touch De Zunou (Rev A)", - "zupapa", "Zupapa!", - "zwackery", "Zwackery", - "zzblock", "Zun Zun Block [TTL]", - "zzyzzyxx", "Zzyzzyxx (set 1)", - "zzyzzyxx2", "Zzyzzyxx (set 2)", - "z80", "Z80", - "gfxdecode", "gfxdecode", - "palette", "palette", - "screen", "Video Screen", - "speaker", "Speaker", - "i8255", "8255 PPI", - "samples", "Samples", - "sega005_sound", "005 Custom", - "m6803", "M6803", - "irem_audio", "Irem Audio", - "ay8910", "AY-3-8910A", - "msm5205", "MSM5205", - "vr4300be_drc", "VR4300 (big) DRC", - "rsp_drc", "RSP DRC", - "dmadac", "DMA-driven DAC", - "n64_periphs", "N64 Periphal Chips", - "sh4", "SH-4 (little)", - "timer", "Timer", - "arm7", "ARM7", - "maple_dc", "MAPLE_DC", - "93c46_16", "Serial EEPROM 93C46 (64x16)", - "powervr2", "PowerVR 2", - "aica", "AICA", - "aicartc", "AICA RTC", - "mie", "MIE", - "mie_jvs", "MIE-JVS", - "sega_837_13551", "SEGA-837-13551", - "93c46_8", "Serial EEPROM 93C46 (128x8)", - "x76f100", "X76F100 Flash", - "naomi_m2_board", "NAOMI-M2-BOARD", - "m68000", "M68000", - "ym2151", "YM2151", - "okim6295", "OKI6295", - "netlist_sound", "Netlist sound device", - "netlist_analog_input", "netlist analog input", - "ym2203", "YM2203", - "qsound", "Q-Sound", - "dsp16", "DSP16", - "pxa255", "PXA255", - "93c66_16", "Serial EEPROM 93C66 (256x16)", - "cxd8530cq", "CXD8530CQ", - "psxirq", "PSX IRQ", - "psxdma", "PSX DMA", - "psxmdec", "PSX MDEC", - "psxrcnt", "PSX RCNT", - "psxsio0", "PSX SIO-0", - "znsec", "ZNSEC", - "zndip", "ZNDIP", - "psxsio1", "PSX SIO-1", - "ram", "RAM", - "cxd8561q", "CXD8561Q", - "spu", "SPU", - "at28c16", "AT28C16", - "ym2610", "YM2610", - "upd4990a", "uPD4990A", - "nvram", "NVRAM", - "z180", "Z180", - "namco", "Namco", - "dac", "DAC", - "amd_29lv200t", "AMD 29LV200T Flash", - "i8080", "8080", - "mb14241", "MB14241", - "ym2610b", "YM2610B", - "mc68hc11", "MC68HC11", - "m6809", "M6809", - "via6522", "6522 VIA", - "pia6821", "6821 PIA", - "c6545_1", "C6545-1 CRTC", - "mc146818", "MC146818", - "arm7_be", "ARM7 (big endian)", - "cdrom_image", "CD-ROM Image", - "nb1413m3", "Nichibutsu NB1413M3", - "kaneko_pandora", "Kaneko Pandora - PX79C480FP-3", - "upd7810", "uPD7810", - "ym2413", "YM2413", - "vsystem_spr", "vsystem_spr_device", - "i8088", "I8088", - "gotsndr2", "Gottlieb Sound rev. 2", - "m6502", "M6502", - "ay8913", "AY-3-8913A", - "sp0250", "SP0250", - "m68705", "M68705", - "buggychl_mcu", "BuggyChl MCU", - "msm5232", "MSM5232", - "v70", "V70", - "ymf271", "YMF271", - "sn76489a", "SN76489A", - "z80pio", "Z8420 PIO", - "isa8", "ISA8", - "isa8_slot", "ISA8_SLOT", - "4enlinea_cga", "ISA8_CGA_4ENLINEA", - "mc6845", "MC6845 CRTC", - "7474", "7474 TTL", - "galaxian_sound", "Galaxian Custom", - "discrete", "DISCRETE", - "tmp68301", "TMP68301", - "z80ctc", "Z80 CTC", - "ym3812", "YM3812", - "mc65c02", "M65C02", - "r4650be_drc", "IDT R4650 (big) DRC", - "h83002", "H8/3002", - "h8h_intc", "H8H INTC", - "h8_adc_3337", "H8 ADC 3337", - "h8_digital_port", "H8 digital port", - "h8_timer16", "H8 16-bits timer", - "h8h_16bits_timer_channel", "H8H 16-bits timer channel", - "h8_sci", "H8 Serial Communications Interface", - "namco_settings", "Namco settings device", - "rtc4543", "Epson R4543", - "devcb2_line_dispatch", "Line dispatcher (2 slots)", - "c352", "C352", - "ptm6840", "6840 PTM", - "t11", "T11", - "2804", "Parallel EEPROM 2804 (512x8)", - "tilemap", "Tilemap", - "atarimo", "Atari Motion Objects", - "atarscom", "Atari Sound Communications", - "pokey", "POKEY", - "tms5220c", "TMS5220C", - "decospr", "decospr_device", - "h46505", "H46505 CRTC", - "konami_cpu", "KONAMI", - "k052109", "Konami 052109", - "k051960", "Konami 051960", - "k051316", "Konami 051316", - "upd7759", "uPD7759", - "s2650", "S2650", - "s2636", "Signetics 2636", - "tms5100", "TMS5100", - "i8257", "DMA8257", - "latch8", "8 bit latch", - "mb8884", "MB8884", - "sn76496", "SN76496", - "pentium", "PENTIUM", - "pit8259", "8259 PIC", - "am9517a", "AM9517A", - "pit8254", "8254 PIT", - "kbdc8042", "Keyboard Controller 8042", - "at_keyb", "AT Keyboard", - "pci_bus_legacy", "PCI Bus Legacy", - "vga", "VGA", - "tms34010", "TMS34010", - "tms32026", "TMS32026", - "tlc34076", "TLC34076", - "r3041", "R3041", - "jaguargpu", "Jaguar GPU", - "jaguardsp", "Jaguar DSP", - "vt83c461", "VIA VT83C461", - "ata_slot", "ATA Connector", - "cojag_hdd", "cojag HDD", - "harddisk_image", "Harddisk", - "mediagx", "MEDIAGX", - "ide_controller", "IDE Controller (32 bit)", - "hdd", "IDE Hard Disk", - "ramdac", "ramdac", - "cdrom", "ATAPI CDROM", - "ppc403gcx", "PowerPC 403GCX", - "ymz280b", "YMZ280B", - "i80186", "I80186", - "leland_80186_sound", "Leland 80186 DAC", - "decocpu3", "Data East Pinball CPU Board Type 3", - "m6808", "M6808", - "decobsmt", "Data East/Sega/Stern BSMT2000 Sound Board", - "bsmt2000", "BSMT2000", - "tms32015", "TMS32015", - "decodmd2", "Data East Pinball Dot Matrix Display Type 2", - "m6809e", "M6809E", - "m6800", "M6800", - "h83048", "H8/3048", - "fd1094", "FD1094", - "sega_315_5248", "Sega 315-5248 Multiplier", - "sega_315_5249", "Sega 315-5249 Divider", - "sega_315_5250", "Sega 315-5250 Compare/Timer", - "sega_xboard_sprite", "Sega X-Board Sprites", - "segaic16_video", "Sega 16-bit Video", - "segaic16_road", "Sega 16-bit Road Generator", - "segapcm", "Sega PCM", - "sega_315_5195", "Sega 315-5195 Memory Mapper", - "sega_16bit_sprite", "Sega System 16B Sprites", - "n7751", "N7751", - "i8243", "I8243", - "sega_sys16a_sprite", "Sega System 16A Sprites", - "m68020", "M68020", - "tms32025", "TMS32025", - "m37702", "M37702", - "2864", "Parallel EEPROM 2864 (8192x8)", - "arm920t", "ARM920T", - "serflash", "SERFLASH", - "nmk004", "NMK004", - "h6280", "H6280", - "deco_bac06", "decbac06_device", - "deco_mxc06", "decmxc06_device", - "pic16c57", "PIC16C57", - "tmsprom", "TMSPROM", - "tms5110a", "TMS5110A", - "mc68307", "MC68307", - "mc68681", "MC68681", - "mc68681_channel", "DUART 68681 channel", - "bfm_bda", "BFM BDA VFD controller", - "mc68340", "MC68340", - "mcf5206e", "MCF5206E", - "mcf5206e_peripheral", "MCF5206E Peripheral", - "m68ec020", "M68EC020", - "m37710", "M37710", - "arm", "ARM", - "aakart", "AAKART", - "vsystem_spr2", "vsystem_spr2_device", - "vector_device", "VECTOR", - "dvg", "DVG", - "fd1089a", "FD1089A", - "sn76494", "SN76494", - "wpc", "Williams WPC ASIC", - "adsp2105", "ADSP-2105", - "tc0220ioc", "Taito TC0220IOC", - "tc0080vco", "Taito TC0080VCO", - "tc0140syt", "Taito TC0140SYT", - "v33", "V33", - "v35", "V35", - "iremga20", "Irem GA20", - "hd63705", "HD63705", - "c140", "C140", - "v30", "V30", - "m72_audio", "M72 Custom", - "naomi_rom_board", "NAOMI-ROM-BOARD", - "tms32010", "TMS32010", - "seibu_sound", "Seibu Sound System", - "k007232", "K007232", - "msm6242", "msm6242", - "taito_en", "Taito Ensoniq Sound System", - "mb87078", "Fujitsu MB87078", - "es5505", "ES5505", - "buffered_spriteram", "Buffered Sprite RAM", - "k007121", "Konami 007121", - "k051649", "K051649", - "sega315_5313", "Sega 315-5313 (Genesis VDP)", - "ym2612", "YM2612", - "segapsg", "SEGA VDP PSG", - "hc55516", "HC-55516", - "ldp1450", "Sony LDP-1450", - "amiga_paula", "Amiga Paula", - "legacy_mos8520", "LEGACY_MOS8520", - "amiga_fdc", "Amiga FDC", - "m6802", "M6802", - "v60", "V60", - "ym3438", "YM3438", - "rf5c68", "RF5C68", - "ymf278b", "YMF278B", - "huc6260", "HuC6260 VCE", - "huc6270", "HuC6270 VDC", - "c6280", "HuC6280", - "sn76477", "SN76477", - "address_map_bank", "Address Map Bank", - "hd63701", "HD63701", - "fd1089b", "FD1089B", - "gaelco_gae1", "Gaelco GAE1", - "m6504", "M6504", - "ym3526", "YM3526", - "avg_mhavoc", "AVG_MHAVOC", - "cdp1802", "CDP1802", - "cdp1852", "CDP1852", - "cdp1869", "RCA CDP1869", - "i8751", "I8751", - "ay8912", "AY-3-8912A", - "i8086", "I8086", - "r6545_1", "R6545-1 CRTC", - "sn76489", "SN76489", - "ticket_dispenser", "Ticket Dispenser", - "gamtor_vga", "GAMTOR_VGA", - "ttl74123", "TTL 74123", - "okim9810", "OKI9810", - "macronix_29l001mc", "Macronix 29L001MC Flash", - "aw_rom_board", "AW-ROM-BOARD", - "dcctrl", "DC_CONTROLLER", - "netlist_cpu", "Netlist cpu device", - "fixfreq", "FIXFREQ", - "e132xn", "E1-32XN", - "v20", "V20", - "m65sc02", "M65SC02", - "tc0100scn", "Taito TC0100SCN", - "tc0150rod", "Taito TC0150ROD", - "tc0110pcr", "Taito TC0110PCR", - "filter_volume", "Volume Filter", - "cxd8661r", "CXD8661R", - "cxd8654q", "CXD8654Q", - "mb8841", "MB8841", - "tms9118", "TMS9118 VDP", - "speaker_sound", "Filtered 1-bit DAC", - "seta001", "seta001_device", - "x1_010", "X1-010", - "atari2804", "Atari EEPROM Interface (2804)", - "tmp90841", "TMP90841", - "nmk112", "NMK 112", - "wmscvsd", "Williams CVSD Sound Board", - "gotsndr1", "Gottlieb Sound rev. 1", - "riot6532", "6532 RIOT", - "ym2149", "YM2149", - "tms34061", "TMS34061 VSC", - "ccpu", "Cinematronics CPU", - "n2a03", "N2A03", - "nesapu", "N2A03 APU", - "vlm5030", "VLM5030", - "tc0180vcu", "Taito TC0180VCU", - "naomi_m4_board", "NAOMI-M4-BOARD", - "pps4", "PPS4", - "atari_vg_earom", "ATARI VG EAROM", - "er5911_8", "Serial EEPROM ER5911 (128x8)", - "k056832", "Konami 056832", - "k05324x", "Konami 053244 & 053245", - "k053251", "Konami 053251", - "k053260", "K053260", - "sh2_drc", "SH-2 DRC", - "scudsp", "SCUDSP", - "scsp", "SCSP", - "cdda", "CD/DA", - "i8035", "I8035", - "sega_speech_sound", "Sega Speech Sound Board", - "sega315_5124", "Sega 315-5124", - "ldv1000", "Pioneer LD-V1000", - "pc090oj", "Taito PC090OJ", - "ymf262", "YMF262", - "93c56_16", "Serial EEPROM 93C56 (128x16)", - "wsf_80186_sound", "WSF 80186 DAC", - "m68010", "M68010", - "ataxx_80186_sound", "Ataxx 80186 DAC", - "trackfld_audio", "Track And Field Audio", - "hyprolyb_adpcm", "Hyper Olympics Audio", - "i8039", "I8039", - "mos656x_attack_ufo", "MOS656X", - "ppc603", "PowerPC 603", - "naomi_gdrom_board", "NAOMI-GDROM-BOARD", - "i8085a", "8085A", - "tms36xx", "TMS36XX", - "phoenix_sound", "Phoenix Custom", - "roc10937", "Rockwell 10937 VFD controller and compatible", - "acia6850", "6850 ACIA", - "clock", "Clock", - "i8031", "I8031", - "tms9928a", "TMS9928A VDP", - "deco16ic", "Data East IC 55 / 56 / 74 / 141", - "microtouch_serial", "Microtouch Serial Touchscreen", - "h63484", "H63484", - "atari2816", "Atari EEPROM Interface (2816)", - "2816", "Parallel EEPROM 2816 (2048x8)", - "cclimber_audio", "cclimber Sound Board", - "kaneko_view2_tilemap", "kaneko_view2_tilemap_device", - "kaneko16_sprite", "kaneko16_sprite_device", - "ppu2c04", "2C04 PPU", - "gaelco_cg1v", "Gaelco CG1V", - "ppc603e", "PowerPC 603e", - "scsibus", "SCSI bus", - "lsi53c810", "53C810 SCSI", - "k573cassslotserial", "KONAMI 573 CASSETTE SLOT (SERIAL)", - "mb89371", "MB89371", - "ata_interface", "ATA Interface", - "cr589", "Matsushita CR589", - "k573cassslot", "KONAMI 573 CASSETTE SLOT", - "k573cassx", "KONAMI 573 CASSETTE X", - "x76f041", "X76F041 Flash", - "fujitsu_29f016a", "Fujitsu 29F016A Flash", - "pccard", "PCCARD SLOT", - "m48t58", "M48T58", - "adc0834", "ADC0834", - "upd4701", "NEC uPD4701 Encoder", - "i386", "I386", - "ds2404", "DS2404", - "intel_e28f008sa", "Intel E28F008SA Flash", - "fifo7200", "IDT7200 FIFO", - "tmp95c063", "TMP95C063", - "atarivad", "Atari VAD", - "atjsa3", "Atari JSA III Sound Board", - "decocpu3b", "Data East Pinball CPU Board Type 3B", - "decodmd3", "Data East Pinball Dot Matrix Display Type 3", - "adsp2181", "ADSP-2181", - "gp9001vdp", "GP9001_VDP", - "v25", "V25", - "upd7807", "uPD7807", - "namco51", "Namco 51xx", - "mb8843", "MB8843", - "namco06xx", "Namco 06xx", - "hd6309", "HD6309", - "k007342", "Konami 007342", - "k007420", "Konami 007420", - "93c66_8", "Serial EEPROM 93C66 (512x8)", - "arm9", "ARM9", - "s3c2410", "Samsung S3C2410", - "qs1000", "QS1000", - "i8052", "I8052", - "i2cmem", "I2CMEM", - "s11c_bg", "Williams System 11C background music", - "asap", "ASAP", - "beezer_sound", "beezer SFX", - "i960kb", "i960kb", - "segas24_tile", "S24TILE", - "y8950", "Y8950", - "ttl74181", "TTL 74181", - "s14001a", "S14001A", - "exidy_sfx", "Exidy SFX", - "v9938", "V9938", - "r65c02", "R65C02", - "hd61830", "HD61830 LCDC", - "timeplt_audio", "Time Pilot Audio", - "filter_rc", "RC Filter", - "tiamc1_sound", "TIA-MC1 Custom", - "saa1099", "SAA1099", - "r5000le_drc", "R5000 (little) DRC", - "bus_master_ide_controller", "Bus Master IDE Controller", - "voodoo_1", "3dfx Voodoo Graphics", - "adsp2115", "ADSP-2115", - "k054338", "Konami 054338", - "k055555", "Konami 055555", - "h83044", "H8/3044", - "i486", "I486", - "k051733", "Konami 051733", - "midsg", "Midway Sounds Good Sound Board", - "seibu_crtc", "Seibu CRT Controller", - "es5506", "ES5506", - "kaneko_toybox", "kaneko_toybox_device", - "kaneko_hit", "kaneko_hit_device", - "atjsa1", "Atari JSA I Sound Board", - "k054000", "Konami 054000", - "k053936", "Konami 053936", - "k054539", "K054539", - "rtc65271", "RTC65271", - "pc16552d", "National Semiconductor PC16552D", - "ns16550", "National Semiconductor NS16550", - "scsicd", "SCSICD", - "am53cf96", "53CF96 SCSI", - "rf5c400", "RF5C400", - "decoc10707", "DECO C10707", - "segas24_sprite", "S24SPRITE", - "segas24_mixer", "S24MIXER", - "warpwarp_sound", "Warp Warp Custom", - "cirrus_vga", "Cirrus Logic VGA", - "ns16450", "National Semiconductor NS16450", - "decocomn", "Data East Common Video Functions", - "deco104", "DECO104PROT", - "deco16", "DECO16", - "deco222", "DECO 222", - "e116t", "E1-16T", - "wpcsnd", "Williams WPC Sound", - "namco50", "Namco 50xx", - "mb8842", "MB8842", - "namco52", "Namco 52xx", - "namco54", "Namco 54xx", - "mb8844", "MB8844", - "am29000", "AMD Am29000", - "i8051", "I8051", - "mc68901", "Motorola MC68901", - "micro3d_sound", "Microprose Custom", - "h83008", "H8/3008", - "h8_adc_3006", "H8 ADC 3006", - "mpc8240", "PowerPC MPC8240", - "voodoo_3", "3dfx Voodoo 3", - "avg_bzone", "AVG_BZONE", - "mathbox", "MATHBOX", - "kaneko_calc3", "kaneko_calc3_device", - "okim6376", "OKI6376", - "deco_karnovsprites", "karnovsprites_device", - "tms9128", "TMS9128 VDP", - "cxd8530bq", "CXD8530BQ", - "cxd8514q", "CXD8514Q", - "sharp_lh28f400", "Sharp LH28F400 Flash", - "decocpu7", "DECO CPU-7", - "ppc602", "PowerPC 602", - "decodmd1", "Data East Pinball Dot Matrix Display Type 1", - "tms34020", "TMS34020", - "m6801", "M6801", - "k005289", "K005289", - "i8279", "8279 KDC", - "k053252", "Konami 053252", - "k053247", "Konami 053246 & 053247", - "buggyboy_sound", "Buggy Boy Custom", - "ppc403ga", "PowerPC 403GA", - "ppc604", "PowerPC 604", - "k001604", "Konami 001604", - "cobra_jvs_host", "COBRA_JVS_HOST", - "cobra_jvs", "COBRA_JVS", - "alpha8301", "ALPHA-8301", - "avg", "AVG", - "seibu_adpcm", "Seibu ADPCM", - "i8041", "I8041", - "decocass_tape", "DECO Cassette Tape", - "trident_vga", "Trident VGA", - "smc91c94", "SMC91C94", - "tc0280grd", "Taito TC0280GRD & TC0430GRW", - "tc0360pri", "Taito TC0360PRI", - "e132n", "E1-32N", - "i8032", "I8032", - "deco146", "DECO146PROT", - "i80c32", "I80C32", - "vr4310le_drc", "VR4310 (little) DRC", - "voodoo_banshee", "3dfx Voodoo Banshee", - "74148", "TTL 74148", - "74153", "TTL 74153", - "rm7000le_drc", "RM7000 (little) DRC", - "m48t37", "M48T37", - "hd6303y", "HD6303Y", - "exidy440_sound", "Exidy 440 CVSD", - "tc0480scp", "Taito TC0480SCP", - "x2212", "X2212 NVRAM", - "akiko", "CBM AKIKO", - "microtouch", "Microtouch Touchscreen", - "scc68070", "SCC68070", - "mcd212", "MCD212", - "cdi68070", "CDI68070", - "cdicdic", "CDICDIC", - "cdislave", "CDISLAVE", - "m48t08", "MK48T08", - "alpha8201", "ALPHA-8201", - "pentium3", "Pentium III", - "ataflash", "ATA Flash PCCARD", - "mb3773", "MB3773", - "intel_te28f160", "Intel TE28F160 Flash", - "intel_e28f400b", "Intel E28F400B Flash", - "taito_zoom", "Taito Zoom Sound System", - "mn1020012a", "MN1020012A", - "zsg2", "ZSG-2", - "ide_baseboard", "IDE Baseboard", - "tc8830f", "TC8830F", - "cxd8606bq", "CXD8606BQ", - "cxd8561cq", "CXD8561CQ", - "i8742", "I8742", - "pr8210", "Pioneer PR-8210", - "i8049", "I8049", - "wiping_sound", "Wiping Custom", - "naomi_m1_board", "NAOMI-M1-BOARD", - "h83337", "H8/3337", - "h8_intc", "H8 INTC", - "h8_8bits_timer_channel", "H8 8-bits timer channel", - "h8_16bits_timer_channel", "H8 16-bits timer channel", - "h83007", "H8/3007", - "sh1_drc", "SH-1 DRC", - "tms9980a", "TMS9980A", - "wd33c93", "33C93 SCSI", - "cps3_custom", "CPS3 Custom", - "midssio", "Midway SSIO Sound Board", - "gms30c2132", "GMS30C2132", - "h83334", "H8/3334", - "tms32032", "TMS32032", - "adsp2104", "ADSP-2104", - "m48t35", "M48T35", - "tms32031", "TMS32031", - "tms57002", "TMS57002", - "scsihd", "SCSIHD", - "cxd8538q", "CXD8538Q", - "k056800", "Konami 056800 MIRAC", - "se3208", "SE3208", - "vr0video", "VRender0 Video", - "ds1302", "DS1302", - "vrender0", "VRender0", - "cem3394", "CEM3394", - "tms9927", "TMS9927 VTC", - "cquestrot", "Cube Quest Rotate CPU", - "cquestlin", "Cube Quest Line CPU", - "cquestsnd", "Cube Quest Sound CPU", - "simutrek", "Simutrek Modified PR-8210", - "i8748", "I8748", - "st0016", "ST0016", - "seibu_cop_legacy", "Seibu COP Legacy", - "atjsa2", "Atari JSA II Sound Board", - "sknsspr", "sknsspr_device", - "k055673", "Konami 055673", - "keycus_c431", "KEYCUS C431", - "m68040", "M68040", - "tms32051", "TMS32051", - "tc0640fio", "Taito TC0640FIO", - "93c56_8", "Serial EEPROM 93C56 (256x8)", - "pc080sn", "Taito PC080SN", - "toshiba_t5182", "T5182", - "ppc603r", "PowerPC 603R", - "mb86233", "MB86233", - "segam1audio", "Sega Model 1 Sound Board", - "multipcm", "Sega/Yamaha 315-5560", - "tc0510nio", "Taito TC0510NIO", - "v3021", "v3021", - "ics2115", "ICS2115", - "rtc9701", "rtc9701", - "ymz770", "Yamaha YMZ770", - "epic12", "epic12_device", - "sh3be", "SH-3 (big)", - "linearflash16mb", "Linear Flash PCCARD (16MB)", - "k573mcr", "Konami Memory Card Reader", - "k573cassyi", "KONAMI 573 CASSETTE YI", - "ds2401", "DS2401", - "linearflash32mb", "Linear Flash PCCARD (32MB)", - "k573dio", "Konami 573 digital I/O board", - "mas3507d", "MAS3507D", - "k573casszi", "KONAMI 573 CASSETTE ZI", - "zs01", "ZS01", - "k573cassxi", "KONAMI 573 CASSETTE XI", - "m68301", "M68301", - "midtcs", "Midway Turbo Chip Squeak Sound Board", - "5a22", "5A22", - "spc700", "SPC700", - "snes_sound", "SNES Custom DSP (SPC700)", - "beep", "Beep", - "tc0091lvc", "TC0091LVC", - "namco53", "Namco 53xx", - "58xx", "Namco 58xx", - "56xx", "Namco 56xx", - "i80c51", "I80C51", - "z80dma", "Z8410 DMA", - "pr7820", "Pioneer PR-7820", - "z80sio", "Z80 SIO", - "22vp932", "Phillips 22VP932", - "adsp21062", "ADSP21062", - "ds1204", "DS1204", - "midsnt", "Midway Squawk 'n' Talk Sound Board", - "tms5200", "TMS5200", - "cop402", "COP402", - "pic16c55", "PIC16C55", - "igs_025_022", "IGS025", - "igs022", "IGS022", - "upd96050", "uPD96050", - "k573msu", "Konami Multi Session Unit", - "adc0838", "ADC0838", - "keycus_c410", "KEYCUS C410", - "astrocade", "Astrocade", - "i8251", "I8251", - "sega_sharrier_sprite", "Sega Space Harrier Sprites", - "avg_starwars", "AVG_STARWARS", - "tms5220", "TMS5220", - "i80188", "I80188", - "snk6502_sound", "snk6502 Custom", - "venture_sound", "Exidy SFX+PSG", - "nscsi_bus", "NSCSI Bus", - "nscsi_connector", "NSCSI device connector abstraction", - "scsi_harddisk", "SCSI HARDDISK", - "ncr537xx", "53C7xx SCSI", - "pit8253", "8253 PIT", - "filetto_cga", "ISA8_CGA_FILETTO", - "tetriskr_cga", "ISA8_CGA_TETRISKR", - "namco_c45_road", "Namco C45 Road", - "e132t", "E1-32T", - "tms9995", "TMS9995", - "22vp931", "Phillips 22VP931", - "i4004", "Intel I4004", - "hd6845", "HD6845 CRTC", - "flower_sound", "Flower Custom Sound", - "e132xt", "E1-32XT", - "toaplan_scu", "toaplan_scu_device", - "nsc8105", "NSC8105", - "i8741", "I8741", - "funcube_touchscrene", "Funcube Touchscreen", - "namco62", "Namco 62xx", - "93c76_8", "Serial EEPROM 93C76 (1024x8)", - "kaneko_grap2", "kaneko_grap2_device", - "upd7756", "uPD7756", - "voodoo_2", "3dfx Voodoo 2", - "taito8741_4pack", "Taito 8741 MCU 4 pack", - "msm6585", "MSM6585", - "st0020", "st0020_device", - "geebee_sound", "Gee Bee Custom", - "namco_63701x", "Namco 63701X", - "sega_yboard_sprite", "Sega Y-Board Sprites", - "huc6202", "HuC6202 VPC", - "i8155", "8155 RIOT", - "bfm_bd1", "BFM BD1 VFD controller", - "bfm_adder2", "BFM ADDER2", - "gomoku_sound", "Gomoku Custom", - "k033906", "Konami 033906", - "k037122", "Konami 0371222", - "adc12138", "ADC12138", - "mb_vcu", "Mazer Blazer custom VCU", - "gridlee_sound", "Gridlee Custom", - "ym2608", "YM2608", - "m48t02", "M48T02", - "k573npu", "Konami Network PCB Unit", - "adc1038", "ADC1038", - "k056230", "Konami 056230", - "atari_rle", "Atari RLE Motion Objects", - "asic65", "ASIC65", - "ins8050", "INS 8050 SC/MP", - "sega_hangon_sprite", "Sega Hang On Sprites", - "adsp2100", "ADSP-2100", - "adsp2101", "ADSP-2101", - "dsp32c", "DSP32C", - "i8080a", "8080A", - "k573cassy", "KONAMI 573 CASSETTE Y", - "h8s2394", "H8S/2394", - "h8s_intc", "H8S INTC", - "h8_adc_2357", "H8 ADC 2357", - "h8s_16bits_timer_channel", "H8S 16-bits timer channel", - "segausbrom", "Sega Universal Sound Board with ROM", - "tms9902", "TMS9902 ACC", - "ppu2c05_01", "2C05_01 PPU", - "janshi_vdp", "JANSHIVDP", - "wmsadpcm", "Williams ADPCM Sound Board", - "josvolly8741_4pack", "joshi Vollyball 8741 MCU 4 pack", - "v810", "V810", - "midi_kbd", "Generic MIDI Keyboard", - "r4600le_drc", "R4600 (little) DRC", - "hd63484", "HD63484 CRTC", - "renegade_adpcm", "Renegade Custom ADPCM", - "tms3615", "TMS3615", - "er2055", "ER2055", - "pentium4", "Pentium 4", - "indervd", "Inder / Dinamic TMS Video", - "cop420", "COP420", - "decocpu1", "Data East Pinball CPU Board Type 1", - "snkwave", "SNK Wave", - "r5000be_drc", "R5000 (big) DRC", - "tmp91640", "TMP91640", - "saa5050", "SAA5050", - "m58715", "M58715", - "indersb", "Inder 4xDAC Sound Board", - "sega315_5246", "Sega 315-5246", - "cartslot_image", "Cartslot", - "software_list", "Software list", - "k053250", "K053250", - "ppu2c05_02", "2C05_02 PPU", - "gms30c2116", "GMS30C2116", - "mjkjidai_adpcm", "Custom ADPCM", - "decocpu2", "Data East Pinball CPU Board Type 2", - "atjsa3s", "Atari JSA IIIs Sound Board", - "es5503", "Ensoniq ES5503", - "u8106", "U8106", - "mc3417", "MC3417", - "keycus_c443", "KEYCUS C443", - "wmsnarc", "Williams NARC Sound Board", - "naughtyb_sound", "Naughty Boy Custom", - "ygv608", "YGV608", - "m50458", "m50458", - "s3520cf", "s3520cf", - "rp5h01", "RP5H01", - "m6m80011ap", "M6M80011AP EEPROM", - "igs028", "IGS028", - "upd4992", "uPD4992", - "sega_outrun_sprite", "Sega Out Run Sprites", - "er5911_16", "Serial EEPROM ER5911 (64x16)", - "y2404", "Y2404", - "59xx", "Namco 59xx", - "e116xt", "E1-16XT", - "bootleg_sys16a_sprite", "Bootleg System 16A Sprites", - "es8712", "ES8712", - "ppu2c03b", "2C03B PPU", - "segausb", "Sega Universal Sound Board", - "pleiads_sound", "Pleiads Custom", - "dsp56156", "DSP56156", - "linearflash64mb", "Linear Flash PCCARD (64MB)", - "keycus_c432", "KEYCUS C432", - "z8002", "Z8002", - "polepos_sound", "Pole Position Custom", - "netlist_analog_output", "netlist analog output", - "popflame_sound", "Pop Flamer Custom", - "keycus_c411", "KEYCUS C411", - "decocpu6", "DECO CPU-6", - "mb90082", "mb90082", - "puzzlet_io", "Puzzlet Coin/Start I/O", - "pentium2", "Pentium II", - "avg_quantum", "AVG_QUANTUM", - "i5000snd", "I5000", - "m58819", "M58819", - "m58817", "M58817", - "gaelco_serial", "gaelco_serial", - "at89c4051", "AT89C4051", - "redbaron_custom", "Red Baron Custom", - "redline_80186_sound", "Redline Racer 80186 DAC", - "sp0256", "SP0256", - "s3_vga", "S3 Graphics VGA", - "ibm8514a", "IBM8514A", - "bfm_dm01", "Bellfruit Dotmatrix 01", - "digitalker", "Digitalker", - "dsbz80", "Sega Z80-based Digital Sound Board", - "dm9368", "DM9368", - "m3745x", "Mitsubishi M37450", - "i860xr", "i860XR", - "i80c31", "I80C31", - "m68ec030", "M68EC030", - "keycus_c409", "KEYCUS C409", - "r3051", "R3051", - "gms30c2232", "GMS30C2232", - "midcsd", "Midway Chip Squeak Deluxe Sound Board", - "nile", "NiLe", - "keycus_c442", "KEYCUS C442", - "cxd8530aq", "CXD8530AQ", - "keycus_c406", "KEYCUS C406", - "avg_tempest", "AVG_TEMPEST", - "cop421", "COP421", - "avg_tomcat", "AVG_TOMCAT", - "ppu2c05_04", "2C05_04 PPU", - "tia_ntsc_video", "TIA Video (NTSC)", - "tia_sound", "TIA", - "esrip", "ESRIP", - "turrett_hdd", "Turrett Tower HDD", - "ttsnd", "Turret Tower Sound", - "tx1_sound", "TX-1 Custom", - "scn2674_device", "scn2674_device", - "ins8154", "INS8154", - "victory_sound", "Exidy SFX+PSG+Speech", - "ppu2c05_03", "2C05_03 PPU", - "r4700le_drc", "R4700 (little) DRC", - "ds5002fp", "DS5002FP", - "keycus_c430", "KEYCUS C430", - - // additional rom names from mame4all 0.37b5 - "64streej", "64th. Street - A Detective Story (Japan)", - "720b", "720 Degrees (set 2)", - "99lstwra", "'99 The Last War (alternate)", - "actfanc1", "Act-Fancer Cybernetick Hyper Weapon (World revision 1)", - "actfancj", "Act-Fancer Cybernetick Hyper Weapon (Japan revision 1)", - "alexkida", "Alex Kidd (set 2)", - "aliensya", "Alien Syndrome (set 2)", - "aliensyb", "Alien Syndrome (set 3)", - "aliensyj", "Alien Syndrome (Japan)", - "altbeas2", "Altered Beast (Version 2)", - "archriv2", "Arch Rivals (rev 2.0)", - "ark2jp", "Arkanoid - Revenge of DOH (Japan)", - "ark2us", "Arkanoid - Revenge of DOH (US)", - "arkanoi2", "Arkanoid - Revenge of DOH (World)", - "arkbl2", "Arkanoid (Japanese bootleg Set 2)", - "arknoidj", "Arkanoid (Japan)", - "arknoidu", "Arkanoid (US)", - "armorca2", "Armored Car (set 2)", - "astdelu1", "Asteroids Deluxe (rev 1)", - "asteroi1", "Asteroids (rev 1)", - "asteroib", "Asteroids (bootleg on Lunar Lander hardware)", - "astorm2p", "Alien Storm (2 Player)", - "atetckt2", "Tetris (Cocktail set 2)", - "atetcktl", "Tetris (Cocktail set 1)", - "atlants2", "Battle of Atlantis (set 2)", - "auraila", "Aurail (set 2)", - "avenger2", "Avengers (set 2)", - "battlan2", "Battle Lane Vol. 5 (set 2)", - "battlan3", "Battle Lane Vol. 5 (set 3)", - "battlntj", "Battlantis (Japan)", - "batugnsp", "Batsugun Special Ver.", - "bayrouta", "Bay Route (set 2)", - "bayrtbl1", "Bay Route (bootleg set 1)", - "bayrtbl2", "Bay Route (bootleg set 2)", - "berlwalt", "Berlin Wall, The (set 2)", - "bermudaa", "Bermuda Triangle (US early version)", - "bermudaj", "Bermuda Triangle (Japan)", - "bktigerb", "Black Tiger (bootleg)", - "bladstle", "Blades of Steel (version E)", - "blckgalb", "Block Gal (bootleg)", - "blckout2", "Block Out (set 2)", - "blkdrgnb", "Black Dragon (bootleg)", - "blsthead", "Blasteroids (with heads)", - "blstroi2", "Blasteroids (version 2)", - "blueprnj", "Blue Print (Jaleco)", - "bombjac2", "Bomb Jack (set 2)", - "bubbobr1", "Bubble Bobble (US)", - "bublbobr", "Bubble Bobble (US with mode select)", - "bullfgtj", "Tougyuu, The (Japan)", - "burningh", "Burning Fight (set 2)", - "bzone2", "Battle Zone (set 2)", - "cabal2", "Cabal (US set 2)", - "cameltru", "Camel Try (US)", - "canbprot", "Canyon Bomber (prototype)", - "captcomj", "Captain Commando (Japan)", - "captcomu", "Captain Commando (US)", - "carnvckt", "Carnival (cocktail)", - "ccastle2", "Crystal Castles (set 2)", - "cclimbrj", "Crazy Climber (Japan)", - "centipb2", "Centipede (bootleg set 2)", - "centipd2", "Centipede (revision 2)", - "champbbj", "Champion Baseball (Japan)", - "checkmaj", "Checkman (Japan)", - "chplft", "Choplifter", - "chplftb", "Choplifter (alternate)", - "chplftbl", "Choplifter (bootleg)", - "ckonga", "Crazy Kong (set 2)", - "ckongjeu", "Crazy Kong (Jeutel bootleg)", - "cninja0", "Caveman Ninja (World revision 0)", - "cobracmj", "Cobra-Command (Japan)", - "combasc", "Combat School (joystick)", - "combascb", "Combat School (bootleg)", - "combascj", "Combat School (Japan trackball)", - "combasct", "Combat School (trackball)", - "commandj", "Senjo no Ookami", - "commandu", "Commando (US)", - "contrajb", "Contra (Japan bootleg)", - "cosmognj", "Cosmo Gang the Video (Japan)", - "crbalon2", "Crazy Balloon (set 2)", - "crimfgt2", "Crime Fighters (World 2 Players)", - "crimfgtj", "Crime Fighters (Japan 2 Players)", - "cyberb2p", "Cyberball 2072 (2 player)", - "cyberba2", "Cyberball (Version 2)", - "cyberbt", "Tournament Cyberball 2072", - "darksea1", "Dark Seal (World revision 1)", - "darkseaj", "Dark Seal (Japan)", - "dbldyn", "Double Dynamites, The", - "ddrago3b", "Double Dragon 3 - The Rosetta Stone (bootleg)", - "deadconj", "Dead Connection (Japan)", - "defendg", "Defender (Green label)", - "defendw", "Defender (White label)", - "destderb", "Demolition Derby", - "destderm", "Demolition Derby (2-Player Mono Board Version)", - "devstor2", "Devastators (version X)", - "devstor3", "Devastators (version V)", - "digdug2a", "Dig Dug II (set 2)", - "digdugb", "Dig Dug (set 2)", - "dkjrbl", "Donkey Kong Junior (bootleg?)", - "dkjrjp", "Donkey Kong Junior (Japan)", - "dkngjrjp", "Donkey Kong Jr. (Original Japanese)", - "dkongjp", "Donkey Kong (Japan set 1)", - "dkongjpo", "Donkey Kong (Japan set 2)", - "docastl2", "Mr. Do's Castle (set 2)", - "dorunru2", "Do! Run Run (set 2)", - "dorunruc", "Do! Run Run (Do's Castle hardware)", - "dotriku2", "Dottori Kun (old version)", - "dspirito", "Dragon Spirit (old version)", - "dwj", "Tenchi wo Kurau (Japan)", - "earthinv", "Super Earth Invasion", - "einnings", "Extra Innings", - "elecyoy2", "Electric Yo-Yo, The (set 2)", - "elevatob", "Elevator Action (bootleg)", - "espiale", "Espial (Europe)", - "exctscca", "Exciting Soccer (alternate music)", - "exctsccb", "Exciting Soccer (bootleg)", - "exerizrb", "Exerizer (Japan) (bootleg)", - "fantzono", "Fantasy Zone (Old Ver.)", - "finalizb", "Finalizer - Super Transformation (bootleg)", - "firetpbl", "Fire Trap (Japan bootleg)", - "flicky2", "Flicky (set 2)", - "froggrmc", "Frogger (modified Moon Cresta hardware)", - "frogseg1", "Frogger (Sega set 1)", - "frogseg2", "Frogger (Sega set 2)", - "ftsoccer", "Fighting Soccer", - "galag88b", "Galaga '88 (set 2)", - "galag88j", "Galaga '88 (Japan)", - "galaga84", "Galaga '84", - "galagab2", "Galaga (bootleg)", - "galagads", "Galaga (fast shoot)", - "galaxb", "Galaxian (bootleg)", - "galmidw", "Galaxian (Midway)", - "gangwarb", "Gang Wars (bootleg)", - "gatedom1", "Gate of Doom (US revision 1)", - "gaunt2p", "Gauntlet (2 Players)", - "gauntir1", "Gauntlet (Intermediate Release 1)", - "gauntir2", "Gauntlet (Intermediate Release 2)", - "getstar", "Guardian", - "getstarb", "Get Star (bootleg)", - "ghoulsj", "Dai Makai-Mura (Japan)", - "goldnabl", "Golden Axe (bootleg)", - "goldnaxa", "Golden Axe (Version 2)", - "goldnaxb", "Golden Axe (Version 2 317-0110)", - "goldnaxc", "Golden Axe (Version 2 317-0122)", - "goldnaxj", "Golden Axe (Version 1, Japan)", - "gravitr2", "Gravitar (version 2)", - "grdius2a", "Gradius II - Gofer no Yabou (Japan set 2)", - "grdius2b", "Gradius II - Gofer no Yabou (Japan set 3)", - "grdius3a", "Gradius III (Asia)", - "gundeala", "Gun Dealer (set 2)", - "gunforcu", "Gunforce - Battle Fire Engulfed Terror Island (US)", - "gunfronj", "Gun Frontier (Japan)", - "gunsmoka", "Gun.Smoke (US set 2)", - "gunsmokj", "Gun.Smoke (Japan)", - "gunsmrom", "Gun.Smoke (US set 1)", - "hardhedb", "Hard Head (Bootleg)", - "hcastlea", "Haunted Castle (set 2)", - "hcastlej", "Akuma-Jou Dracula (Japan)", - "helifira", "HeliFire (revision A)", - "hitnmis2", "Hit 'n Miss (version 2.0)", - "hyprolyb", "Hyper Olympic (bootleg)", - "indytem2", "Indiana Jones and the Temple of Doom (set 2)", - "indytem3", "Indiana Jones and the Temple of Doom (set 3)", - "indytem4", "Indiana Jones and the Temple of Doom (set 4)", - "intrepi2", "Intrepid (set 2)", - "invrvnga", "Invader's Revenge (Dutchford)", - "jackrab2", "Jack Rabbit (set 2)", - "jackrabs", "Jack Rabbit (special)", - "junglkj2", "Jungle King (Japan, earlier)", - "junofstg", "Juno First (Gottlieb)", - "jyuohki", "Jyuohki (Japan)", - "kangaroa", "Kangaroo (Atari)", - "kangarob", "Kangaroo (bootleg)", - "karatblu", "Karate Blazers (US)", - "kicka", "Kick (cocktail)", - "kingbalj", "King & Balloon (Japan)", - "kodure", "Kodure Ookami (Japan)", - "kungfud", "Kung Fu Master (Data East)", - "kuniokub", "Nekketsu Kouha Kunio-kun (Japan bootleg)", - "kurikina", "Kuri Kinton (prototype?)", - "kyukaido", "Kyuukai Douchuuki (Japan old version)", - "lastmiss", "Last Mission (US revision 6)", - "lastmss2", "Last Mission (US revision 5)", - "lifefrcj", "Lifeforce (Japan)", - "losttmbh", "Lost Tomb (hard)", - "lstduela", "Last Duel (US set 2)", - "lstduelb", "Last Duel (bootleg)", - "lwingsjp", "Ales no Tsubasa (Japan)", - "mainevt2", "Main Event, The (version F)", - "makaimuc", "Makai-Mura (Revision C)", - "makaimug", "Makai-Mura (Revision G)", - "mappyjp", "Mappy (Japan)", - "marblea", "Marble Madness (set 3)", - "mariojp", "Mario Bros. (Japan)", - "marvlanj", "Marvel Land (Japan)", - "megaznik", "Mega Zone (Kosuka)", - "minigol2", "Mini Golf (set 2)", - "mjnquesb", "Mahjong Quest (No Nudity)", - "mk2r32", "Mortal Kombat II (rev L3.2 (European))", - "monwar2a", "Moon War II (set 2)", - "mooncrsg", "Moon Cresta (Gremlin)", - "moonwalk", "Moon Walker (Set 1)", - "moonwar2", "Moon War II (set 1)", - "moonwlka", "Moon Walker (Set 2)", - "moonwlkb", "Moon Walker (bootleg)", - "mrvikinj", "Mister Viking (Japan)", - "mspacatk", "Ms. Pac-Man Plus", - "myheroj", "Seishun Scandal (Japan)", - "naughtya", "Naughty Boy (bootleg)", - "naughtyc", "Naughty Boy (Cinematronics)", - "navalone", "Navalone", - "nbajamt1", "NBA Jam TE (rev 1.0 01/17/94)", - "nbajamt2", "NBA Jam TE (rev 2.0 01/28/94)", - "nbajamt3", "NBA Jam TE (rev 3.0 03/04/94)", - "nbamaxht", "NBA Maximum Hangtime (rev 1.0)", - "nebulbee", "Nebulous Bee", - "nemesuk", "Nemesis (World?)", - "nibblera", "Nibbler (set 2)", - "ninjak2a", "Ninja Kid II (set 2)", - "ninjak2b", "Ninja Kid II (set 3)", - "nov2001u", "Nova 2001 (US)", - "npacmod", "PuckMan (harder?)", - "nprincsb", "Ninja Princess (bootleg?)", - "nprincsu", "Ninja Princess (not encrypted)", - "offtwalc", "Off the Wall (2-player cocktail)", - "oscarj0", "Psycho-Nics Oscar (Japan revision 0)", - "oscarj", "Psycho-Nics Oscar (Japan revision 2)", - "outruna", "Out Run (set 2)", - "outzonep", "Out Zone (bootleg)", - "pacland2", "Pac-Land (set 2)", - "pacland3", "Pac-Land (set 3)", - "pacmanij", "Pac-Mania (Japan)", - "pacmanjp", "PuckMan (Japan set 2)", - "pacmanm", "Pac-Man (Midway)", - "panica", "Space Panic (set 2)", - "pbactio2", "Pinball Action (set 2)", - "pipibibi", "Pipi & Bibis / Whoopee (Japan) [bootleg ?]", - "pitfallu", "Pitfall II (not encrypted)", - "pitfigh3", "Pit Fighter (version 3)", - "polepos1", "Pole Position (Atari version 1)", - "poleposa", "Pole Position (Atari version 2)", - "poleps2a", "Pole Position II (Atari)", - "poleps2b", "Pole Position II (Atari bootleg 1)", - "poleps2c", "Pole Position II (Atari bootleg 2)", - "popeye2", "Popeye (set 2)", - "popflama", "Pop Flamer (set 2)", - "poundfou", "Pound for Pound (US)", - "prehislu", "Prehistoric Isle in 1930 (US)", - "pulirulj", "PuLiRuLa (Japan)", - "punishrj", "Punisher, The (Japan)", - "punishru", "Punisher, The (US)", - "punksht2", "Punk Shot (2 Players)", - "puzbobb", "Puzzle Bobble (Japan, B-System)", - "qadj", "Quiz & Dragons (Japan)", - "qbertjp", "Q*bert (Japan)", - "qtono2", "Quiz Tonosama no Yabou 2 Zenkoku-ban (Japan)", - "quartetj", "Quartet (Japan)", - "quartrba", "Quarterback (set 2)", - "qwakprot", "Qwak (prototype)", - "rainbow", "Rainbow Islands", - "rainbowe", "Rainbow Islands (Extra)", - "rambo3a", "Rambo III (set 2, US)", - "ramprt2p", "Rampart (2-player Joystick)", - "rastanu2", "Rastan (US set 2)", - "rescrdsa", "Rescue Raider (Stand-Alone)", - "retofin1", "Return of the Invaders (bootleg set 1)", - "retofin2", "Return of the Invaders (bootleg set 2)", - "ringkin2", "Ring King (set 2)", - "ringkin3", "Ring King (set 3)", - "robocpu0", "Robocop (US revision 0)", - "robotryo", "Robotron (Yellow/Orange label)", - "rockragj", "Koi no Hotrock (Japan)", - "rocnropk", "Roc'n Rope (Kosuka)", - "rthundro", "Rolling Thunder (old version)", - "rtypepj", "R-Type (Japan prototype)", - "saturn", "Saturn", - "schasrcv", "Space Chaser (CV version)", - "scrambls", "Scramble (Stern)", - "sctionza", "Section Z (set 2)", - "sdioj", "SDI - Strategic Defense Initiative (Japan)", - "seganinu", "Sega Ninja (not encrypted)", - "sengokh", "Sengoku / Sengoku Denshou (set 2)", - "sercharu", "SAR - Search And Rescue (US)", - "sf1", "Street Fighter (World)", - "sf1jp", "Street Fighter (Japan)", - "sf1us", "Street Fighter (US)", - "sf2a", "Street Fighter II - The World Warrior (US 910206)", - "sf2b", "Street Fighter II - The World Warrior (US 910214)", - "sf2cea", "Street Fighter II' - Champion Edition (US rev A)", - "sf2ceb", "Street Fighter II' - Champion Edition (US rev B)", - "sf2cej", "Street Fighter II' - Champion Edition (Japan)", - "sf2e", "Street Fighter II - The World Warrior (US 910228)", - "sf2jb", "Street Fighter II - The World Warrior (Japan 910214)", - "sf2t", "Street Fighter II' - Hyper Fighting (US)", - "sf2tj", "Street Fighter II' Turbo - Hyper Fighting (Japan)", - "sfeverbw", "Space Fever (black and white)", - "shangonb", "Super Hang-On (bootleg)", - "shdancrj", "Shadow Dancer (Japan)", - "shinobia", "Shinobi (set 2)", - "shinobib", "Shinobi (set 3)", - "shinobl", "Shinobi (bootleg)", - "shootoub", "Shoot Out (Korean Bootleg)", - "shootouj", "Shoot Out (Japan)", - "sichuana", "Sichuan II (hack ?) (set 2)", - "sidearjp", "Side Arms - Hyper Dyne (Japan)", - "sidearmr", "Side Arms - Hyper Dyne (US)", - "sidepctb", "Side Pocket (bootleg)", - "sidepctj", "Side Pocket (Japan)", - "silkwrm2", "Silkworm (set 2)", - "simps2pj", "Simpsons, The (2 Players Japan)", - "simpsn2p", "Simpsons, The (2 Players)", - "sinista1", "Sinistar (prototype version)", - "sinista2", "Sinistar (revision 2)", - "skingam2", "Irem Skins Game, The (US set 2)", - "skullxb2", "Skull & Crossbones (set 2)", - "skykiddo", "Sky Kid Deluxe (set 2)", - "slapbtjp", "Slap Fight (Japan bootleg)", - "slapbtuk", "Slap Fight (English bootleg)", - "snowbroa", "Snow Bros. - Nick & Tom (set 2)", - "snowbrob", "Snow Bros. - Nick & Tom (set 3)", - "snowbroj", "Snow Bros. - Nick & Tom (Japan)", - "spacfura", "Space Fury (revision A)", - "spinlbrj", "Spinal Breakers (Japan)", - "spinlbru", "Spinal Breakers (US)", - "spnchotj", "Super Punch-Out!! (Japan)", - "sptrekct", "Space Trek (cocktail)", - "spyhnt2a", "Spy Hunter 2 (rev 1)", - "sqixbl", "Super Qix (bootleg)", - "srumblr2", "Speed Rumbler, The (set 2)", - "sspacat2", "Space Attack (upright, older)", - "sspacatc", "Space Attack (cocktail)", - "ssrdrabd", "Sunset Riders (Asia 2 Players ver. ABD)", - "ssrdrebc", "Sunset Riders (World 2 Players ver. EBC)", - "ssrdrebd", "Sunset Riders (World 2 Players ver. EBD)", - "ssrdrjbd", "Sunset Riders (Japan 2 Players ver. JBD)", - "ssrdruac", "Sunset Riders (US 4 Players ver. UAC)", - "ssrdrubc", "Sunset Riders (US 2 Players ver. UBC)", - "ssrdruda", "Sunset Riders (US 4 Players ver. UDA)", - "starfore", "Star Force (encrypted)", - "starjacs", "Star Jacker (Stern)", - "starwar1", "Star Wars (rev 1)", - "stratvxb", "Stratovox (bootleg)", - "streets1", "Street Smart (US version 1)", - "streetsj", "Street Smart (Japan version 1)", - "stridrja", "Strider Hiryu (Japan set 2)", - "supbtimj", "Super Burger Time (Japan)", - "superpcm", "Super Pac-Man (Midway)", - "superqix", "Super Qix", - "suprmou2", "Funny Mouse (bootleg?)", - "surpratk", "Surprise Attack (Japan)", - "tankfrcj", "Tank Force (Japan)", - "tatsujn2", "Truxton II / Tatsujin II / Tatsujin Oh (Japan)", - "terracra", "Terra Cresta (YM2203)", - "terracrb", "Terra Cresta (YM3526 set 2)", - "tetrisa", "Tetris (Sega Set 2)", - "thehustj", "Hustler, The (Japan version J)", - "thnderxj", "Thunder Cross (Japan)", - "tigerh2", "Tiger Heli (set 2)", - "timesol1", "Time Soldiers (US Rev 1)", - "timscanr", "Time Scanner", - "tmnt22p", "Teenage Mutant Ninja Turtles - Turtles in Time (2 Players US)", - "tndrcadj", "Tokusyu Butai UAG (Japan)", - "tnzs2", "NewZealand Story 2, The (World)", - "tnzsb", "NewZealand Story, The (World, bootleg)", - "todruagb", "Tower of Druaga (set 2)", - "toki2", "Toki (set 2)", - "toki3", "Toki (set 3)", - "tomahaw5", "Tomahawk 777 (Revision 5)", - "toobinp", "Toobin' (Prototype)", - "trackflc", "Track & Field (Centuri)", - "trogp", "Trog (prototype, rev 4.00 07/27/90)", - "tsamura2", "Samurai Nihon-ichi (set 2)", - "tumblep2", "Tumble Pop (bootleg set 2)", - "tumblepb", "Tumble Pop (bootleg set 1)", - "tutankst", "Tutankham (Stern)", - "twincobu", "Twin Cobra (US)", - "vangrdce", "Vanguard (Centuri)", - "vanvans", "Van Van Car (Sanritsu)", - "vaportru", "Vapor Trail - Hyper Offence Formation (US)", - "vendett2", "Vendetta (Asia set 2)", - "vendettj", "Crime Fighters 2 (Japan)", - "vigilntj", "Vigilante (Japan)", - "vigilntu", "Vigilante (US)", - "vimana2", "Vimana (set 2)", - "vsyard", "10 Yard Fight (Vs. version 11/05/84)", - "vsyard2", "10 Yard Fight (Vs. version, set 2)", - "vulgus2", "Vulgus (set 2)", - "warlord", "Warlords", - "warpwar2", "Warp Warp (Rock-ola set 2)", - "warpwarr", "Warp Warp (Rock-ola set 1)", - "wb3a", "Wonder Boy III - Monster Lair (set 2)", - "wb3bl", "Wonder Boy III - Monster Lair (bootleg)", - "wbmlj", "Wonder Boy in Monster Land (Japan set 1)", - "wbmlj2", "Wonder Boy in Monster Land (Japan set 2)", - "wbmlju", "Wonder Boy in Monster Land (Japan not encrypted)", - "wboy4u", "Wonder Boy (set 4 not encrypted)", - "wexpresb", "Western Express (bootleg)", - "wwester1", "Wild Western (set 2)", - "yard", "10 Yard Fight", - "yokaidko", "Yokai Douchuuki (Japan old version)", - "youkaidk", "Yokai Douchuuki (Japan new version)", - "zzyzzyx2", "Zzyzzyxx (set 2)", - - NULL -}; diff --git a/es-app/src/MetaData.cpp b/es-app/src/MetaData.cpp index 2d5340bd24..d163d85f0c 100644 --- a/es-app/src/MetaData.cpp +++ b/es-app/src/MetaData.cpp @@ -1,32 +1,53 @@ #include "MetaData.h" -#include "components/TextComponent.h" + +#include "utils/FileSystemUtil.h" +#include "utils/TimeUtil.h" #include "Log.h" -#include "Util.h" - -namespace fs = boost::filesystem; - -MetaDataDecl gameDecls[] = { - // key, type, default, statistic, name in GuiMetaDataEd, prompt in GuiMetaDataEd - {"name", MD_STRING, "", false, "name", "enter game name"}, - {"desc", MD_MULTILINE_STRING, "", false, "description", "enter description"}, - {"image", MD_IMAGE_PATH, "", false, "image", "enter path to image"}, - {"thumbnail", MD_IMAGE_PATH, "", false, "thumbnail", "enter path to thumbnail"}, - {"rating", MD_RATING, "0.000000", false, "rating", "enter rating"}, - {"releasedate", MD_DATE, "not-a-date-time", false, "release date", "enter release date"}, - {"developer", MD_STRING, "unknown", false, "developer", "enter game developer"}, - {"publisher", MD_STRING, "unknown", false, "publisher", "enter game publisher"}, - {"genre", MD_STRING, "unknown", false, "genre", "enter game genre"}, - {"players", MD_INT, "1", false, "players", "enter number of players"}, - {"playcount", MD_INT, "0", true, "play count", "enter number of times played"}, - {"lastplayed", MD_TIME, "0", true, "last played", "enter last played date"} +#include + +MetaDataDecl gameDecls[] = { + // key, type, default, statistic, name in GuiMetaDataEd, prompt in GuiMetaDataEd + {"name", MD_STRING, "", false, "name", "enter game name"}, + {"sortname", MD_STRING, "", false, "sortname", "enter game sort name"}, + {"desc", MD_MULTILINE_STRING, "", false, "description", "enter description"}, + {"image", MD_PATH, "", false, "image", "enter path to image"}, + {"video", MD_PATH , "", false, "video", "enter path to video"}, + {"marquee", MD_PATH, "", false, "marquee", "enter path to marquee"}, + {"thumbnail", MD_PATH, "", false, "thumbnail", "enter path to thumbnail"}, + {"rating", MD_RATING, "0", false, "rating", "enter rating"}, + {"releasedate", MD_DATE, "not-a-date-time", false, "release date", "enter release date"}, + {"developer", MD_STRING, "unknown", false, "developer", "enter game developer"}, + {"publisher", MD_STRING, "unknown", false, "publisher", "enter game publisher"}, + {"genre", MD_STRING, "unknown", false, "genre", "enter game genre"}, + {"players", MD_INT, "1", false, "players", "enter number of players"}, + {"favorite", MD_BOOL, "false", false, "favorite", "enter favorite off/on"}, + {"hidden", MD_BOOL, "false", false, "hidden", "enter hidden off/on" }, + {"kidgame", MD_BOOL, "false", false, "kidgame", "enter kidgame off/on" }, + {"playcount", MD_INT, "0", true, "play count", "enter number of times played"}, + {"lastplayed", MD_TIME, "0", true, "last played", "enter last played date"} }; const std::vector gameMDD(gameDecls, gameDecls + sizeof(gameDecls) / sizeof(gameDecls[0])); -MetaDataDecl folderDecls[] = { - {"name", MD_STRING, "", false}, - {"desc", MD_MULTILINE_STRING, "", false}, - {"image", MD_IMAGE_PATH, "", false}, - {"thumbnail", MD_IMAGE_PATH, "", false}, +const inline std::string blankDate() { + // blank date (1970-01-02) is used to render "" (see DateTimeComponent.cpp) for + // folder metadata when no date is provided (=default case) + return Utils::Time::timeToString(Utils::Time::BLANK_DATE, "%Y%m%d"); +} + +MetaDataDecl folderDecls[] = { + {"name", MD_STRING, "", false, "name", "enter game name"}, + {"sortname", MD_STRING, "", false, "sortname", "enter game sort name"}, + {"desc", MD_MULTILINE_STRING, "", false, "description", "enter description"}, + {"image", MD_PATH, "", false, "image", "enter path to image"}, + {"thumbnail", MD_PATH, "", false, "thumbnail", "enter path to thumbnail"}, + {"video", MD_PATH, "", false, "video", "enter path to video"}, + {"marquee", MD_PATH, "", false, "marquee", "enter path to marquee"}, + {"rating", MD_RATING, "0", false, "rating", "enter rating"}, + {"releasedate", MD_DATE, blankDate(), true, "release date", "enter release date"}, + {"developer", MD_STRING, "", false, "developer", "enter game developer"}, + {"publisher", MD_STRING, "", false, "publisher", "enter game publisher"}, + {"genre", MD_STRING, "", false, "genre", "enter game genre"}, + {"players", MD_INT, "", false, "players", "enter number of players"} }; const std::vector folderMDD(folderDecls, folderDecls + sizeof(folderDecls) / sizeof(folderDecls[0])); @@ -47,30 +68,31 @@ const std::vector& getMDDByType(MetaDataListType type) MetaDataList::MetaDataList(MetaDataListType type) - : mType(type) + : mType(type), mWasChanged(false) { const std::vector& mdd = getMDD(); - for(auto iter = mdd.begin(); iter != mdd.end(); iter++) + for(auto iter = mdd.cbegin(); iter != mdd.cend(); iter++) set(iter->key, iter->defaultValue); } -MetaDataList MetaDataList::createFromXML(MetaDataListType type, pugi::xml_node node, const fs::path& relativeTo) +MetaDataList MetaDataList::createFromXML(MetaDataListType type, pugi::xml_node& node, const std::string& relativeTo) { MetaDataList mdl(type); const std::vector& mdd = mdl.getMDD(); - for(auto iter = mdd.begin(); iter != mdd.end(); iter++) + for(auto iter = mdd.cbegin(); iter != mdd.cend(); iter++) { pugi::xml_node md = node.child(iter->key.c_str()); if(md) { // if it's a path, resolve relative paths std::string value = md.text().get(); - if(iter->type == MD_IMAGE_PATH) - value = resolvePath(value, relativeTo, true).generic_string(); - + if (iter->type == MD_PATH) + { + value = Utils::FileSystem::resolveRelativePath(value, relativeTo, true, true); + } mdl.set(iter->key, value); }else{ mdl.set(iter->key, iter->defaultValue); @@ -80,24 +102,24 @@ MetaDataList MetaDataList::createFromXML(MetaDataListType type, pugi::xml_node n return mdl; } -void MetaDataList::appendToXML(pugi::xml_node parent, bool ignoreDefaults, const fs::path& relativeTo) const +void MetaDataList::appendToXML(pugi::xml_node& parent, bool ignoreDefaults, const std::string& relativeTo) const { const std::vector& mdd = getMDD(); - for(auto mddIter = mdd.begin(); mddIter != mdd.end(); mddIter++) + for(auto mddIter = mdd.cbegin(); mddIter != mdd.cend(); mddIter++) { auto mapIter = mMap.find(mddIter->key); - if(mapIter != mMap.end()) + if(mapIter != mMap.cend()) { // we have this value! // if it's just the default (and we ignore defaults), don't write it if(ignoreDefaults && mapIter->second == mddIter->defaultValue) continue; - + // try and make paths relative if we can std::string value = mapIter->second; - if(mddIter->type == MD_IMAGE_PATH) - value = makeRelativePath(value, relativeTo, true).generic_string(); + if (mddIter->type == MD_PATH) + value = Utils::FileSystem::createRelativePath(value, relativeTo, true, true); parent.append_child(mapIter->first.c_str()).text().set(value.c_str()); } @@ -107,11 +129,7 @@ void MetaDataList::appendToXML(pugi::xml_node parent, bool ignoreDefaults, const void MetaDataList::set(const std::string& key, const std::string& value) { mMap[key] = value; -} - -void MetaDataList::setTime(const std::string& key, const boost::posix_time::ptime& time) -{ - mMap[key] = boost::posix_time::to_iso_string(time); + mWasChanged = true; } const std::string& MetaDataList::get(const std::string& key) const @@ -129,7 +147,12 @@ float MetaDataList::getFloat(const std::string& key) const return (float)atof(get(key).c_str()); } -boost::posix_time::ptime MetaDataList::getTime(const std::string& key) const +bool MetaDataList::wasChanged() const +{ + return mWasChanged; +} + +void MetaDataList::resetChangedFlag() { - return string_to_ptime(get(key), "%Y%m%dT%H%M%S%F%q"); + mWasChanged = false; } diff --git a/es-app/src/MetaData.h b/es-app/src/MetaData.h index 1143d9204b..f73234a896 100644 --- a/es-app/src/MetaData.h +++ b/es-app/src/MetaData.h @@ -1,11 +1,12 @@ #pragma once +#ifndef ES_APP_META_DATA_H +#define ES_APP_META_DATA_H -#include "pugixml/pugixml.hpp" -#include #include -#include "GuiComponent.h" -#include -#include +#include +#include + +namespace pugi { class xml_node; } enum MetaDataType { @@ -13,10 +14,11 @@ enum MetaDataType MD_STRING, MD_INT, MD_FLOAT, + MD_BOOL, //specialized types MD_MULTILINE_STRING, - MD_IMAGE_PATH, + MD_PATH, MD_RATING, MD_DATE, MD_TIME //used for lastplayed @@ -27,7 +29,7 @@ struct MetaDataDecl std::string key; MetaDataType type; std::string defaultValue; - bool isStatistic; //if true, ignore scraper values for this metadata + bool isStatistic; // if true: ignore in scraping and hide in metadata edits for this key std::string displayName; // displayed as this in editors std::string displayPrompt; // phrase displayed in editors when prompted to enter value (currently only for strings) }; @@ -43,18 +45,19 @@ const std::vector& getMDDByType(MetaDataListType type); class MetaDataList { public: - static MetaDataList createFromXML(MetaDataListType type, pugi::xml_node node, const boost::filesystem::path& relativeTo); - void appendToXML(pugi::xml_node parent, bool ignoreDefaults, const boost::filesystem::path& relativeTo) const; + static MetaDataList createFromXML(MetaDataListType type, pugi::xml_node& node, const std::string& relativeTo); + void appendToXML(pugi::xml_node& parent, bool ignoreDefaults, const std::string& relativeTo) const; MetaDataList(MetaDataListType type); - + void set(const std::string& key, const std::string& value); - void setTime(const std::string& key, const boost::posix_time::ptime& time); //times are internally stored as ISO strings (e.g. boost::posix_time::to_iso_string(ptime)) const std::string& get(const std::string& key) const; int getInt(const std::string& key) const; float getFloat(const std::string& key) const; - boost::posix_time::ptime getTime(const std::string& key) const; + + bool wasChanged() const; + void resetChangedFlag(); inline MetaDataListType getType() const { return mType; } inline const std::vector& getMDD() const { return getMDDByType(getType()); } @@ -62,4 +65,7 @@ class MetaDataList private: MetaDataListType mType; std::map mMap; + bool mWasChanged; }; + +#endif // ES_APP_META_DATA_H diff --git a/es-app/src/PlatformId.cpp b/es-app/src/PlatformId.cpp index 2242396d34..a47493cdbe 100644 --- a/es-app/src/PlatformId.cpp +++ b/es-app/src/PlatformId.cpp @@ -1,7 +1,6 @@ #include "PlatformId.h" -#include -extern const char* mameNameToRealName[]; +#include namespace PlatformIds { @@ -22,26 +21,36 @@ namespace PlatformIds "atarijaguar", "atarijaguarcd", "atarixe", + "bbcmicro", "colecovision", "c64", // commodore 64 + "daphne", "intellivision", "macintosh", "xbox", "xbox360", "msx", "neogeo", + "neogeocd", "ngp", // neo geo pocket "ngpc", // neo geo pocket color "n3ds", // nintendo 3DS "n64", // nintendo 64 "nds", // nintendo DS + "fds", // Famicom Disk System "nes", // nintendo entertainment system + "pokemini", + "channelf", // Fairchild ChannelF "gb", // game boy "gba", // game boy advance "gbc", // game boy color "gc", // gamecube "wii", "wiiu", + "virtualboy", + "gameandwatch", + "switch", // Nintendo Switch + "openbor", "pc", "sega32x", "segacd", @@ -51,6 +60,8 @@ namespace PlatformIds "mastersystem", // sega master system "megadrive", // sega megadrive "saturn", // sega saturn + "sg-1000", + "samcoupe", "psx", "ps2", "ps3", @@ -58,10 +69,30 @@ namespace PlatformIds "psvita", "psp", // playstation portable "snes", // super nintendo entertainment system - "pcengine", // turbografx-16/pcengine + "scummvm", + "x1", + "x68000", + "solarus", + "pico8", + "tic80", + "moto", // Thomson MO/TO + "pc88", // NEC PC-8801 + "pc98", // NEC PC-9801 + "pcengine", // (aka turbografx-16) HuCards only + "pcenginecd", // (aka turbografx-16) CD-ROMs only + "pcfx", "wonderswan", "wonderswancolor", "zxspectrum", + "zx81", + "videopac", + "vectrex", + "trs-80", + "coco", + "ti99", + "dragon32", + "zmachine", + "fmtowns", "ignore", // do not allow scraping for this system "invalid" @@ -85,17 +116,4 @@ namespace PlatformIds { return PlatformNames[id]; } - - const char* getCleanMameName(const char* from) - { - const char** mameNames = mameNameToRealName; - - while(*mameNames != NULL && strcmp(from, *mameNames) != 0) - mameNames += 2; - - if(*mameNames) - return *(mameNames + 1); - - return from; - } } diff --git a/es-app/src/PlatformId.h b/es-app/src/PlatformId.h index 59c2156448..4d58c91ae6 100644 --- a/es-app/src/PlatformId.h +++ b/es-app/src/PlatformId.h @@ -1,6 +1,6 @@ #pragma once - -#include +#ifndef ES_APP_PLATFORM_ID_H +#define ES_APP_PLATFORM_ID_H namespace PlatformIds { @@ -22,26 +22,36 @@ namespace PlatformIds ATARI_JAGUAR, ATARI_JAGUAR_CD, ATARI_XE, + BBC_MICRO, COLECOVISION, COMMODORE_64, + DAPHNE, INTELLIVISION, MAC_OS, XBOX, XBOX_360, MSX, NEOGEO, + NEOGEO_CD, NEOGEO_POCKET, NEOGEO_POCKET_COLOR, NINTENDO_3DS, NINTENDO_64, NINTENDO_DS, + FAMICOM_DISK_SYSTEM, NINTENDO_ENTERTAINMENT_SYSTEM, + NINTENDO_POKEMON_MINI, + FAIRCHILD_CHANNELF, GAME_BOY, GAME_BOY_ADVANCE, GAME_BOY_COLOR, NINTENDO_GAMECUBE, NINTENDO_WII, NINTENDO_WII_U, + NINTENDO_VIRTUAL_BOY, + NINTENDO_GAME_AND_WATCH, + NINTENDO_SWITCH, + OPENBOR, PC, SEGA_32X, SEGA_CD, @@ -51,6 +61,8 @@ namespace PlatformIds SEGA_MASTER_SYSTEM, SEGA_MEGA_DRIVE, SEGA_SATURN, + SEGA_SG1000, + SAM_COUPE, PLAYSTATION, PLAYSTATION_2, PLAYSTATION_3, @@ -58,10 +70,30 @@ namespace PlatformIds PLAYSTATION_VITA, PLAYSTATION_PORTABLE, SUPER_NINTENDO, - TURBOGRAFX_16, // (also PC Engine) + SCUMMVM, + SHARP_X1, + SHARP_X6800, + SOLARUS, + PICO_8, + TIC_80, + THOMSON_MOTO, + NEC_PC_8801, + NEC_PC_9801, + TURBOGRAFX_16, // (aka PC Engine) HuCards only + TURBOGRAFX_CD, // (aka PC Engine) CD-ROMs only + NEC_PCFX, WONDERSWAN, WONDERSWAN_COLOR, ZX_SPECTRUM, + ZX81_SINCLAR, + VIDEOPAC_ODYSSEY2, + VECTREX, + TRS80_COLOR_COMPUTER, + TANDY, + TI_99, + DRAGON32, + ZMACHINE, + FMTOWNS, PLATFORM_IGNORE, // do not allow scraping for this system PLATFORM_COUNT @@ -69,6 +101,6 @@ namespace PlatformIds PlatformId getPlatformId(const char* str); const char* getPlatformName(PlatformId id); - - const char* getCleanMameName(const char* from); } + +#endif // ES_APP_PLATFORM_ID_H diff --git a/es-app/src/ScraperCmdLine.cpp b/es-app/src/ScraperCmdLine.cpp index f6f6952525..dda5635957 100644 --- a/es-app/src/ScraperCmdLine.cpp +++ b/es-app/src/ScraperCmdLine.cpp @@ -1,14 +1,19 @@ #include "ScraperCmdLine.h" -#include -#include + +#include "Log.h" +#include "platform.h" #include "SystemData.h" -#include "Settings.h" +#include #include -#include "Log.h" +#if defined(__linux__) +#include +#elif defined(WIN32) +#include +#endif std::ostream& out = std::cout; -void handle_interrupt_signal(int p) +void handle_interrupt_signal(int /*p*/) { sleep(50); @@ -59,11 +64,11 @@ int run_scraper_cmdline() std::string system_choice; std::getline(std::cin, system_choice); - + if(system_choice == "y" || system_choice == "Y") { out << "Will scrape all platforms.\n"; - for(auto i = SystemData::sSystemVector.begin(); i != SystemData::sSystemVector.end(); i++) + for(auto i = SystemData::sSystemVector.cbegin(); i != SystemData::sSystemVector.cend(); i++) { out << " " << (*i)->getName() << " (" << (*i)->getGameCount() << " games)\n"; systems.push_back(*i); @@ -76,9 +81,9 @@ int run_scraper_cmdline() out << "Type nothing and press enter when you are ready to continue.\n"; do { - for(auto i = SystemData::sSystemVector.begin(); i != SystemData::sSystemVector.end(); i++) + for(auto i = SystemData::sSystemVector.cbegin(); i != SystemData::sSystemVector.cend(); i++) { - if(std::find(systems.begin(), systems.end(), (*i)) != systems.end()) + if(std::find(systems.cbegin(), systems.cend(), (*i)) != systems.cend()) out << " C "; else out << " "; @@ -87,12 +92,12 @@ int run_scraper_cmdline() } std::getline(std::cin, sys_name); - + if(sys_name.empty()) break; bool found = false; - for(auto i = SystemData::sSystemVector.begin(); i != SystemData::sSystemVector.end(); i++) + for(auto i = SystemData::sSystemVector.cbegin(); i != SystemData::sSystemVector.cend(); i++) { if((*i)->getName() == sys_name) { @@ -140,14 +145,14 @@ int run_scraper_cmdline() /* std::shared_ptr scraper = Settings::getInstance()->getScraper(); - for(auto sysIt = systems.begin(); sysIt != systems.end(); sysIt++) + for(auto sysIt = systems.cbegin(); sysIt != systems.cend(); sysIt++) { std::vector files = (*sysIt)->getRootFolder()->getFilesRecursive(GAME); ScraperSearchParams params; params.system = (*sysIt); - for(auto gameIt = files.begin(); gameIt != files.end(); gameIt++) + for(auto gameIt = files.cbegin(); gameIt != files.cend(); gameIt++) { params.nameOverride = ""; params.game = *gameIt; @@ -204,7 +209,7 @@ int run_scraper_cmdline() int choice = -1; std::string choice_str; - + out << "Your choice: "; std::getline(std::cin, choice_str); @@ -237,15 +242,15 @@ int run_scraper_cmdline() out << "\n\n"; out << "Downloading boxart...\n"; - for(auto sysIt = systems.begin(); sysIt != systems.end(); sysIt++) + for(auto sysIt = systems.cbegin(); sysIt != systems.cend(); sysIt++) { std::vector files = (*sysIt)->getRootFolder()->getFilesRecursive(GAME); - for(auto gameIt = files.begin(); gameIt != files.end(); gameIt++) + for(auto gameIt = files.cbegin(); gameIt != files.cend(); gameIt++) { FileData* game = *gameIt; const std::vector& mdd = game->metadata.getMDD(); - for(auto i = mdd.begin(); i != mdd.end(); i++) + for(auto i = mdd.cbegin(); i != mdd.cend(); i++) { std::string key = i->key; std::string url = game->metadata.get(key); diff --git a/es-app/src/ScraperCmdLine.h b/es-app/src/ScraperCmdLine.h index 657c0186e8..32f238eaf5 100644 --- a/es-app/src/ScraperCmdLine.h +++ b/es-app/src/ScraperCmdLine.h @@ -1,3 +1,7 @@ #pragma once +#ifndef ES_APP_SCRAPER_CMD_LINE_H +#define ES_APP_SCRAPER_CMD_LINE_H int run_scraper_cmdline(); + +#endif // ES_APP_SCRAPER_CMD_LINE_H diff --git a/es-app/src/SystemData.cpp b/es-app/src/SystemData.cpp index 5e2b9b4c2e..49f58e1c8f 100644 --- a/es-app/src/SystemData.cpp +++ b/es-app/src/SystemData.cpp @@ -1,206 +1,136 @@ #include "SystemData.h" + +#include "utils/FileSystemUtil.h" +#include "CollectionSystemManager.h" +#include "FileFilterIndex.h" +#include "FileSorts.h" #include "Gamelist.h" -#include -#include -#include -#include -#include "Renderer.h" -#include "AudioManager.h" -#include "VolumeControl.h" #include "Log.h" -#include "InputManager.h" -#include +#include "platform.h" #include "Settings.h" -#include "FileSorts.h" +#include "ThemeData.h" +#include "views/UIModeController.h" +#include +#include +#include "utils/StringUtil.h" +#include "utils/ThreadPool.h" +#include "Window.h" + +using namespace Utils; std::vector SystemData::sSystemVector; +std::vector SystemData::sSystemVectorShuffled; +std::ranlux48 SystemData::sURNG = std::ranlux48(std::random_device()()); -namespace fs = boost::filesystem; -SystemData::SystemData(const std::string& name, const std::string& fullName, const std::string& startPath, const std::vector& extensions, - const std::string& command, const std::vector& platformIds, const std::string& themeFolder) +SystemData::SystemData(const std::string& name, const std::string& fullName, SystemEnvironmentData* envData, const std::string& themeFolder, bool CollectionSystem) : + mName(name), mFullName(fullName), mEnvData(envData), mThemeFolder(themeFolder), mIsCollectionSystem(CollectionSystem), mIsGameSystem(true) { - mName = name; - mFullName = fullName; - mStartPath = startPath; + mFilterIndex = new FileFilterIndex(); - //expand home symbol if the startpath contains ~ - if(mStartPath[0] == '~') + // if it's an actual system, initialize it, if not, just create the data structure + if(!CollectionSystem) { - mStartPath.erase(0, 1); - mStartPath.insert(0, getHomePath()); - } - - mSearchExtensions = extensions; - mLaunchCommand = command; - mPlatformIds = platformIds; - mThemeFolder = themeFolder; - - mRootFolder = new FileData(FOLDER, mStartPath, this); - mRootFolder->metadata.set("name", mFullName); + mRootFolder = new FileData(FOLDER, mEnvData->mStartPath, mEnvData, this); + mRootFolder->metadata.set("name", mFullName); - if(!Settings::getInstance()->getBool("ParseGamelistOnly")) - populateFolder(mRootFolder); + if(!Settings::getInstance()->getBool("ParseGamelistOnly")) + populateFolder(mRootFolder); - if(!Settings::getInstance()->getBool("IgnoreGamelist")) - parseGamelist(this); + if(!Settings::getInstance()->getBool("IgnoreGamelist")) + parseGamelist(this); - mRootFolder->sort(FileSorts::SortTypes.at(0)); + mRootFolder->sort(FileSorts::SortTypes.at(0)); + indexAllGameFilters(mRootFolder); + } + else + { + // virtual systems are updated afterwards, we're just creating the data structure + mRootFolder = new FileData(FOLDER, "" + name, mEnvData, this); + } + setIsGameSystemStatus(); loadTheme(); } SystemData::~SystemData() { - //save changed game data back to xml - if(!Settings::getInstance()->getBool("IgnoreGamelist")) - { - updateGamelist(this); - } + if(Settings::getInstance()->getString("SaveGamelistsMode") == "on exit") + writeMetaData(); delete mRootFolder; + delete mFilterIndex; } - -std::string strreplace(std::string str, const std::string& replace, const std::string& with) -{ - size_t pos; - while((pos = str.find(replace)) != std::string::npos) - str = str.replace(pos, replace.length(), with.c_str(), with.length()); - - return str; -} - -// plaform-specific escape path function -// on windows: just puts the path in quotes -// everything else: assume bash and escape special characters with backslashes -std::string escapePath(const boost::filesystem::path& path) +void SystemData::setIsGameSystemStatus() { -#ifdef WIN32 - // windows escapes stuff by just putting everything in quotes - return '"' + fs::path(path).make_preferred().string() + '"'; -#else - // a quick and dirty way to insert a backslash before most characters that would mess up a bash path - std::string pathStr = path.string(); - - const char* invalidChars = " '\"\\!$^&*(){}[]?;<>"; - for(unsigned int i = 0; i < pathStr.length(); i++) - { - char c; - unsigned int charNum = 0; - do { - c = invalidChars[charNum]; - if(pathStr[i] == c) - { - pathStr.insert(i, "\\"); - i++; - break; - } - charNum++; - } while(c != '\0'); - } - - return pathStr; -#endif -} - -void SystemData::launchGame(Window* window, FileData* game) -{ - LOG(LogInfo) << "Attempting to launch game..."; - - AudioManager::getInstance()->deinit(); - VolumeControl::getInstance()->deinit(); - window->deinit(); - - std::string command = mLaunchCommand; - - const std::string rom = escapePath(game->getPath()); - const std::string basename = game->getPath().stem().string(); - const std::string rom_raw = fs::path(game->getPath()).make_preferred().string(); - - command = strreplace(command, "%ROM%", rom); - command = strreplace(command, "%BASENAME%", basename); - command = strreplace(command, "%ROM_RAW%", rom_raw); - - LOG(LogInfo) << " " << command; - std::cout << "==============================================\n"; - int exitCode = runSystemCommand(command); - std::cout << "==============================================\n"; - - if(exitCode != 0) - { - LOG(LogWarning) << "...launch terminated with nonzero exit code " << exitCode << "!"; - } - - window->init(); - VolumeControl::getInstance()->init(); - AudioManager::getInstance()->init(); - window->normalizeNextUpdate(); - - //update number of times the game has been launched - int timesPlayed = game->metadata.getInt("playcount") + 1; - game->metadata.set("playcount", std::to_string(static_cast(timesPlayed))); - - //update last played time - boost::posix_time::ptime time = boost::posix_time::second_clock::universal_time(); - game->metadata.setTime("lastplayed", time); + // we exclude non-game systems from specific operations (i.e. the "RetroPie" system, at least) + // if/when there are more in the future, maybe this can be a more complex method, with a proper list + // but for now a simple string comparison is more performant + mIsGameSystem = (mName != "retropie"); } void SystemData::populateFolder(FileData* folder) { - const fs::path& folderPath = folder->getPath(); - if(!fs::is_directory(folderPath)) + const std::string& folderPath = folder->getPath(); + if(!Utils::FileSystem::isDirectory(folderPath)) { LOG(LogWarning) << "Error - folder with path \"" << folderPath << "\" is not a directory!"; return; } - const std::string folderStr = folderPath.generic_string(); - //make sure that this isn't a symlink to a thing we already have - if(fs::is_symlink(folderPath)) + if(Utils::FileSystem::isSymlink(folderPath)) { //if this symlink resolves to somewhere that's at the beginning of our path, it's gonna recurse - if(folderStr.find(fs::canonical(folderPath).generic_string()) == 0) + if(folderPath.find(Utils::FileSystem::getCanonicalPath(folderPath)) == 0) { LOG(LogWarning) << "Skipping infinitely recursive symlink \"" << folderPath << "\""; return; } } - fs::path filePath; + std::string filePath; std::string extension; bool isGame; - for(fs::directory_iterator end, dir(folderPath); dir != end; ++dir) + bool showHidden = Settings::getInstance()->getBool("ShowHiddenFiles"); + Utils::FileSystem::stringList dirContent = Utils::FileSystem::getDirContent(folderPath); + for(Utils::FileSystem::stringList::const_iterator it = dirContent.cbegin(); it != dirContent.cend(); ++it) { - filePath = (*dir).path(); + filePath = *it; - if(filePath.stem().empty()) + // skip hidden files and folders + if(!showHidden && Utils::FileSystem::isHidden(filePath)) continue; //this is a little complicated because we allow a list of extensions to be defined (delimited with a space) //we first get the extension of the file itself: - extension = filePath.extension().string(); - + extension = Utils::FileSystem::getExtension(filePath); + //fyi, folders *can* also match the extension and be added as games - this is mostly just to support higan //see issue #75: https://github.com/Aloshi/EmulationStation/issues/75 isGame = false; - if(std::find(mSearchExtensions.begin(), mSearchExtensions.end(), extension) != mSearchExtensions.end()) + if(std::find(mEnvData->mSearchExtensions.cbegin(), mEnvData->mSearchExtensions.cend(), extension) != mEnvData->mSearchExtensions.cend()) { - FileData* newGame = new FileData(GAME, filePath.generic_string(), this); - folder->addChild(newGame); - isGame = true; + FileData* newGame = new FileData(GAME, filePath, mEnvData, this); + + // preventing new arcade assets to be added + if(!newGame->isArcadeAsset()) + { + folder->addChild(newGame); + isGame = true; + } } //add directories that also do not match an extension as folders - if(!isGame && fs::is_directory(filePath)) + if(!isGame && Utils::FileSystem::isDirectory(filePath)) { - FileData* newFolder = new FileData(FOLDER, filePath.generic_string(), this); + FileData* newFolder = new FileData(FOLDER, filePath, mEnvData, this); populateFolder(newFolder); //ignore folders that do not contain games - if(newFolder->getChildren().size() == 0) + if(newFolder->getChildrenByFilename().size() == 0) delete newFolder; else folder->addChild(newFolder); @@ -208,6 +138,23 @@ void SystemData::populateFolder(FileData* folder) } } +void SystemData::indexAllGameFilters(const FileData* folder) +{ + const std::vector& children = folder->getChildren(); + + for(std::vector::const_iterator it = children.cbegin(); it != children.cend(); ++it) + { + switch((*it)->getType()) + { + case GAME: { mFilterIndex->addToIndex(*it); } break; + case FOLDER: { indexAllGameFilters(*it); } break; + default: + LOG(LogInfo) << "Unknown type: " << (*it)->getType(); + break; + } + } +} + std::vector readList(const std::string& str, const char* delims = " \t\r\n,") { std::vector ret; @@ -225,8 +172,95 @@ std::vector readList(const std::string& str, const char* delims = " return ret; } + +SystemData* SystemData::loadSystem(pugi::xml_node system) +{ + std::string name, fullname, path, cmd, themeFolder, defaultCore; + + name = system.child("name").text().get(); + fullname = system.child("fullname").text().get(); + path = system.child("path").text().get(); + defaultCore = system.child("defaultCore").text().get(); + + std::vector list = readList(system.child("extension").text().get()); + std::vector extensions; + + for (auto extension = list.cbegin(); extension != list.cend(); extension++) + { + std::string xt = std::string(*extension); + if (std::find(extensions.begin(), extensions.end(), xt) == extensions.end()) + extensions.push_back(xt); + } + + cmd = system.child("command").text().get(); + + // platform id list + const char* platformList = system.child("platform").text().get(); + std::vector platformStrs = readList(platformList); + std::vector platformIds; + for (auto it = platformStrs.cbegin(); it != platformStrs.cend(); it++) + { + const char* str = it->c_str(); + PlatformIds::PlatformId platformId = PlatformIds::getPlatformId(str); + + if (platformId == PlatformIds::PLATFORM_IGNORE) + { + // when platform is ignore, do not allow other platforms + platformIds.clear(); + platformIds.push_back(platformId); + break; + } + + // if there appears to be an actual platform ID supplied but it didn't match the list, warn + if (str != NULL && str[0] != '\0' && platformId == PlatformIds::PLATFORM_UNKNOWN) + { + LOG(LogWarning) << " Unknown platform for system \"" << name << "\" (platform \"" << str << "\" from list \"" << platformList << "\")"; + } + else if (platformId != PlatformIds::PLATFORM_UNKNOWN) + platformIds.push_back(platformId); + } + + // theme folder + themeFolder = system.child("theme").text().as_string(name.c_str()); + + //validate + if (name.empty() || path.empty() || extensions.empty() || cmd.empty()) + { + LOG(LogError) << "System \"" << name << "\" is missing name, path, extension, or command!"; + return nullptr; + } + + //convert path to generic directory seperators + path = Utils::FileSystem::getGenericPath(path); + + //expand home symbol if the startpath contains ~ + if (path[0] == '~') + { + path.erase(0, 1); + path.insert(0, Utils::FileSystem::getHomePath()); + } + + //create the system runtime environment data + SystemEnvironmentData* envData = new SystemEnvironmentData; + envData->mStartPath = path; + envData->mSearchExtensions = extensions; + envData->mLaunchCommand = cmd; + envData->mPlatformIds = platformIds; + + SystemData* newSys = new SystemData(name, fullname, envData, themeFolder); + if (newSys->getRootFolder()->getChildren().size() == 0) + { + LOG(LogWarning) << "System \"" << name << "\" has no games! Ignoring it."; + delete newSys; + + return nullptr; + } + + return newSys; +} + //creates systems from information located in a config file -bool SystemData::loadConfig() +bool SystemData::loadConfig(Window* window) { deleteSystems(); @@ -234,7 +268,7 @@ bool SystemData::loadConfig() LOG(LogInfo) << "Loading system config file " << path << "..."; - if(!fs::exists(path)) + if (!Utils::FileSystem::exists(path)) { LOG(LogError) << "es_systems.cfg file does not exist!"; writeExampleConfig(getConfigPath(true)); @@ -260,66 +294,97 @@ bool SystemData::loadConfig() return false; } - for(pugi::xml_node system = systemList.child("system"); system; system = system.next_sibling("system")) + std::vector systemsNames; + + int systemCount = 0; + for (pugi::xml_node system = systemList.child("system"); system; system = system.next_sibling("system")) + { + systemsNames.push_back(system.child("fullname").text().get()); + systemCount++; + } + + int currentSystem = 0; + + typedef SystemData* SystemDataPtr; + + ThreadPool* pThreadPool = NULL; + SystemDataPtr* systems = NULL; + + if (std::thread::hardware_concurrency() > 2 && Settings::getInstance()->getBool("ThreadedLoading")) { - std::string name, fullname, path, cmd, themeFolder; - PlatformIds::PlatformId platformId = PlatformIds::PLATFORM_UNKNOWN; + pThreadPool = new ThreadPool(); - name = system.child("name").text().get(); - fullname = system.child("fullname").text().get(); - path = system.child("path").text().get(); + systems = new SystemDataPtr[systemCount]; + for (int i = 0; i < systemCount; i++) + systems[i] = nullptr; - // convert extensions list from a string into a vector of strings - std::vector extensions = readList(system.child("extension").text().get()); + pThreadPool->queueWorkItem([] { CollectionSystemManager::get()->loadCollectionSystems(true); }); + } - cmd = system.child("command").text().get(); + int processedSystem = 0; - // platform id list - const char* platformList = system.child("platform").text().get(); - std::vector platformStrs = readList(platformList); - std::vector platformIds; - for(auto it = platformStrs.begin(); it != platformStrs.end(); it++) + for (pugi::xml_node system = systemList.child("system"); system; system = system.next_sibling("system")) + { + if (pThreadPool != NULL) { - const char* str = it->c_str(); - PlatformIds::PlatformId platformId = PlatformIds::getPlatformId(str); - - if(platformId == PlatformIds::PLATFORM_IGNORE) + pThreadPool->queueWorkItem([system, currentSystem, systems, &processedSystem] { - // when platform is ignore, do not allow other platforms - platformIds.clear(); - platformIds.push_back(platformId); - break; - } + systems[currentSystem] = loadSystem(system); + processedSystem++; + }); + } + else + { + std::string fullname = system.child("fullname").text().get(); - // if there appears to be an actual platform ID supplied but it didn't match the list, warn - if(str != NULL && str[0] != '\0' && platformId == PlatformIds::PLATFORM_UNKNOWN) - LOG(LogWarning) << " Unknown platform for system \"" << name << "\" (platform \"" << str << "\" from list \"" << platformList << "\")"; - else if(platformId != PlatformIds::PLATFORM_UNKNOWN) - platformIds.push_back(platformId); + if (window != NULL) + window->renderLoadingScreen(fullname, systemCount == 0 ? 0 : (float)currentSystem / (float)(systemCount + 1)); + + std::string nm = system.child("name").text().get(); + + SystemData* pSystem = loadSystem(system); + if (pSystem != nullptr) + sSystemVector.push_back(pSystem); } - // theme folder - themeFolder = system.child("theme").text().as_string(name.c_str()); + currentSystem++; + } - //validate - if(name.empty() || path.empty() || extensions.empty() || cmd.empty()) + if (pThreadPool != NULL) + { + if (window != NULL) { - LOG(LogError) << "System \"" << name << "\" is missing name, path, extension, or command!"; - continue; + pThreadPool->wait([window, &processedSystem, systemCount, &systemsNames] + { + int px = processedSystem - 1; + if (px >= 0 && px < systemsNames.size()) + window->renderLoadingScreen(systemsNames.at(px), (float)px / (float)(systemCount + 1)); + }, 10); } + else + pThreadPool->wait(); - //convert path to generic directory seperators - boost::filesystem::path genericPath(path); - path = genericPath.generic_string(); - - SystemData* newSys = new SystemData(name, fullname, path, extensions, cmd, platformIds, themeFolder); - if(newSys->getRootFolder()->getChildren().size() == 0) + for (int i = 0; i < systemCount; i++) { - LOG(LogWarning) << "System \"" << name << "\" has no games! Ignoring it."; - delete newSys; - }else{ - sSystemVector.push_back(newSys); + SystemData* pSystem = systems[i]; + if (pSystem != nullptr) + sSystemVector.push_back(pSystem); } + + delete[] systems; + delete pThreadPool; + + if (window != NULL) + window->renderLoadingScreen("Favorites", systemCount == 0 ? 0 : currentSystem / systemCount); + + CollectionSystemManager::get()->updateSystemsList(); + } + else + { + if (window != NULL) + window->renderLoadingScreen("Favorites", systemCount == 0 ? 0 : currentSystem / systemCount); + + CollectionSystemManager::get()->loadCollectionSystems(); } return true; @@ -382,26 +447,61 @@ void SystemData::deleteSystems() std::string SystemData::getConfigPath(bool forWrite) { - fs::path path = getHomePath() + "/.emulationstation/es_systems.cfg"; - if(forWrite || fs::exists(path)) - return path.generic_string(); + std::string path = Utils::FileSystem::getHomePath() + "/.emulationstation/es_systems.cfg"; + if(forWrite || Utils::FileSystem::exists(path)) + return path; return "/etc/emulationstation/es_systems.cfg"; } +bool SystemData::isVisible() +{ + return (getDisplayedGameCount() > 0 || + (UIModeController::getInstance()->isUIModeFull() && mIsCollectionSystem) || + (mIsCollectionSystem && mName == "favorites")); +} + +SystemData* SystemData::getNext() const +{ + std::vector::const_iterator it = getIterator(); + + do { + it++; + if (it == sSystemVector.cend()) + it = sSystemVector.cbegin(); + } while (!(*it)->isVisible()); + // as we are starting in a valid gamelistview, this will always succeed, even if we have to come full circle. + + return *it; +} + +SystemData* SystemData::getPrev() const +{ + std::vector::const_reverse_iterator it = getRevIterator(); + + do { + it++; + if (it == sSystemVector.crend()) + it = sSystemVector.crbegin(); + } while (!(*it)->isVisible()); + // as we are starting in a valid gamelistview, this will always succeed, even if we have to come full circle. + + return *it; +} + std::string SystemData::getGamelistPath(bool forWrite) const { - fs::path filePath; + std::string filePath; - filePath = mRootFolder->getPath() / "gamelist.xml"; - if(fs::exists(filePath)) - return filePath.generic_string(); + filePath = mRootFolder->getPath() + "/gamelist.xml"; + if(Utils::FileSystem::exists(filePath)) + return filePath; - filePath = getHomePath() + "/.emulationstation/gamelists/" + mName + "/gamelist.xml"; + filePath = Utils::FileSystem::getHomePath() + "/.emulationstation/gamelists/" + mName + "/gamelist.xml"; if(forWrite) // make sure the directory exists if we're going to write to it, or crashes will happen - fs::create_directories(filePath.parent_path()); - if(forWrite || fs::exists(filePath)) - return filePath.generic_string(); + Utils::FileSystem::createDirectory(Utils::FileSystem::getParent(filePath)); + if(forWrite || Utils::FileSystem::exists(filePath)) + return filePath; return "/etc/emulationstation/gamelists/" + mName + "/gamelist.xml"; } @@ -410,25 +510,74 @@ std::string SystemData::getThemePath() const { // where we check for themes, in order: // 1. [SYSTEM_PATH]/theme.xml - // 2. currently selected theme set + // 2. system theme from currently selected theme set [CURRENT_THEME_PATH]/[SYSTEM]/theme.xml + // 3. default system theme from currently selected theme set [CURRENT_THEME_PATH]/theme.xml // first, check game folder - fs::path localThemePath = mRootFolder->getPath() / "theme.xml"; - if(fs::exists(localThemePath)) - return localThemePath.generic_string(); + std::string localThemePath = mRootFolder->getPath() + "/theme.xml"; + if(Utils::FileSystem::exists(localThemePath)) + return localThemePath; + + // not in game folder, try system theme in theme sets + localThemePath = ThemeData::getThemeFromCurrentSet(mThemeFolder); + + if (Utils::FileSystem::exists(localThemePath)) + return localThemePath; + + // not system theme, try default system theme in theme set + localThemePath = Utils::FileSystem::getParent(Utils::FileSystem::getParent(localThemePath)) + "/theme.xml"; - // not in game folder, try theme sets - return ThemeData::getThemeFromCurrentSet(mThemeFolder).generic_string(); + return localThemePath; } bool SystemData::hasGamelist() const { - return (fs::exists(getGamelistPath(false))); + return (Utils::FileSystem::exists(getGamelistPath(false))); } unsigned int SystemData::getGameCount() const { - return mRootFolder->getFilesRecursive(GAME).size(); + return (unsigned int)mRootFolder->getFilesRecursive(GAME).size(); +} + +SystemData* SystemData::getRandomSystem() +{ + if (sSystemVector.empty()) return NULL; + + if (sSystemVectorShuffled.empty()) + { + std::copy_if(sSystemVector.begin(), sSystemVector.end(), std::back_inserter(sSystemVectorShuffled), [](SystemData *sd){ return sd->isGameSystem(); }); + if (sSystemVectorShuffled.empty()) return NULL; + + std::shuffle(sSystemVectorShuffled.begin(), sSystemVectorShuffled.end(), sURNG); + } + + SystemData* random_system = sSystemVectorShuffled.back(); + sSystemVectorShuffled.pop_back(); + return random_system; +} + +void SystemData::setShuffledCacheDirty() +{ + mGamesShuffled.clear(); +} + +FileData* SystemData::getRandomGame() +{ + if (mGamesShuffled.empty()) + { + mGamesShuffled = mRootFolder->getFilesRecursive(GAME, true); + if (mGamesShuffled.empty()) return NULL; + std::shuffle(mGamesShuffled.begin(), mGamesShuffled.end(), sURNG); + } + FileData* random_game = mGamesShuffled.back(); + mGamesShuffled.pop_back(); + return random_game; +} + +unsigned int SystemData::getDisplayedGameCount() const +{ + return (unsigned int)mRootFolder->getFilesRecursive(GAME, true).size(); } void SystemData::loadTheme() @@ -437,15 +586,36 @@ void SystemData::loadTheme() std::string path = getThemePath(); - if(!fs::exists(path)) // no theme available for this platform + if(!Utils::FileSystem::exists(path)) // no theme available for this platform return; try { - mTheme->loadFile(path); + // build map with system variables for theme to use, + std::map sysData; + sysData.insert(std::pair("system.name", getName())); + sysData.insert(std::pair("system.theme", getThemeFolder())); + sysData.insert(std::pair("system.fullName", getFullName())); + + mTheme->loadFile(sysData, path); } catch(ThemeException& e) { LOG(LogError) << e.what(); mTheme = std::make_shared(); // reset to empty } } + +void SystemData::writeMetaData() { + if(Settings::getInstance()->getBool("IgnoreGamelist") || mIsCollectionSystem) + return; + + //save changed game data back to xml + updateGamelist(this); +} + +void SystemData::onMetaDataSavePoint() { + if(Settings::getInstance()->getString("SaveGamelistsMode") != "always") + return; + + writeMetaData(); +} diff --git a/es-app/src/SystemData.h b/es-app/src/SystemData.h index 2a0ac81886..d440239130 100644 --- a/es-app/src/SystemData.h +++ b/es-app/src/SystemData.h @@ -1,80 +1,104 @@ #pragma once +#ifndef ES_APP_SYSTEM_DATA_H +#define ES_APP_SYSTEM_DATA_H -#include -#include -#include "FileData.h" -#include "Window.h" -#include "MetaData.h" #include "PlatformId.h" -#include "ThemeData.h" +#include +#include +#include +#include +#include + +#include + +class FileData; +class FileFilterIndex; +class ThemeData; +class Window; + +struct SystemEnvironmentData +{ + std::string mStartPath; + std::vector mSearchExtensions; + std::string mLaunchCommand; + std::vector mPlatformIds; +}; class SystemData { public: - SystemData(const std::string& name, const std::string& fullName, const std::string& startPath, const std::vector& extensions, - const std::string& command, const std::vector& platformIds, const std::string& themeFolder); + SystemData(const std::string& name, const std::string& fullName, SystemEnvironmentData* envData, const std::string& themeFolder, bool CollectionSystem = false); ~SystemData(); inline FileData* getRootFolder() const { return mRootFolder; }; inline const std::string& getName() const { return mName; } inline const std::string& getFullName() const { return mFullName; } - inline const std::string& getStartPath() const { return mStartPath; } - inline const std::vector& getExtensions() const { return mSearchExtensions; } + inline const std::string& getStartPath() const { return mEnvData->mStartPath; } + inline const std::vector& getExtensions() const { return mEnvData->mSearchExtensions; } inline const std::string& getThemeFolder() const { return mThemeFolder; } - - inline const std::vector& getPlatformIds() const { return mPlatformIds; } - inline bool hasPlatformId(PlatformIds::PlatformId id) { return std::find(mPlatformIds.begin(), mPlatformIds.end(), id) != mPlatformIds.end(); } + inline SystemEnvironmentData* getSystemEnvData() const { return mEnvData; } + inline const std::vector& getPlatformIds() const { return mEnvData->mPlatformIds; } + inline bool hasPlatformId(PlatformIds::PlatformId id) { if (!mEnvData) return false; return std::find(mEnvData->mPlatformIds.cbegin(), mEnvData->mPlatformIds.cend(), id) != mEnvData->mPlatformIds.cend(); } inline const std::shared_ptr& getTheme() const { return mTheme; } std::string getGamelistPath(bool forWrite) const; bool hasGamelist() const; std::string getThemePath() const; - - unsigned int getGameCount() const; - void launchGame(Window* window, FileData* game); + unsigned int getGameCount() const; + unsigned int getDisplayedGameCount() const; static void deleteSystems(); - static bool loadConfig(); //Load the system config file at getConfigPath(). Returns true if no errors were encountered. An example will be written if the file doesn't exist. + static bool loadConfig(Window* window); //Load the system config file at getConfigPath(). Returns true if no errors were encountered. An example will be written if the file doesn't exist. static void writeExampleConfig(const std::string& path); static std::string getConfigPath(bool forWrite); // if forWrite, will only return ~/.emulationstation/es_systems.cfg, never /etc/emulationstation/es_systems.cfg static std::vector sSystemVector; + static std::vector sSystemVectorShuffled; + static std::ranlux48 sURNG; + + inline std::vector::const_iterator getIterator() const { return std::find(sSystemVector.cbegin(), sSystemVector.cend(), this); }; + inline std::vector::const_reverse_iterator getRevIterator() const { return std::find(sSystemVector.crbegin(), sSystemVector.crend(), this); }; + inline bool isCollection() { return mIsCollectionSystem; }; + inline bool isGameSystem() { return mIsGameSystem; }; + + bool isVisible(); - inline std::vector::const_iterator getIterator() const { return std::find(sSystemVector.begin(), sSystemVector.end(), this); }; - inline std::vector::const_reverse_iterator getRevIterator() const { return std::find(sSystemVector.rbegin(), sSystemVector.rend(), this); }; - - inline SystemData* getNext() const - { - auto it = getIterator(); - it++; - if(it == sSystemVector.end()) it = sSystemVector.begin(); - return *it; - } - - inline SystemData* getPrev() const - { - auto it = getRevIterator(); - it++; - if(it == sSystemVector.rend()) it = sSystemVector.rbegin(); - return *it; - } + SystemData* getNext() const; + SystemData* getPrev() const; + + static SystemData* getRandomSystem(); + FileData* getRandomGame(); // Load or re-load theme. void loadTheme(); + FileFilterIndex* getIndex() { return mFilterIndex; }; + void onMetaDataSavePoint(); + void setShuffledCacheDirty(); + private: + static SystemData* loadSystem(pugi::xml_node system); + + bool mIsCollectionSystem; + bool mIsGameSystem; std::string mName; std::string mFullName; - std::string mStartPath; - std::vector mSearchExtensions; - std::string mLaunchCommand; - std::vector mPlatformIds; + SystemEnvironmentData* mEnvData; std::string mThemeFolder; std::shared_ptr mTheme; void populateFolder(FileData* folder); + void indexAllGameFilters(const FileData* folder); + void setIsGameSystemStatus(); + void writeMetaData(); + + FileFilterIndex* mFilterIndex; FileData* mRootFolder; + // for getRandomGame() + std::vector mGamesShuffled; }; + +#endif // ES_APP_SYSTEM_DATA_H diff --git a/es-app/src/SystemScreenSaver.cpp b/es-app/src/SystemScreenSaver.cpp new file mode 100644 index 0000000000..a5684adaea --- /dev/null +++ b/es-app/src/SystemScreenSaver.cpp @@ -0,0 +1,648 @@ +#include "SystemScreenSaver.h" +#include "components/TextListComponent.h" + +#ifdef _OMX_ +#include "components/VideoPlayerComponent.h" +#endif +#include "components/VideoVlcComponent.h" +#include "CollectionSystemManager.h" +#include "utils/FileSystemUtil.h" +#include "views/gamelist/IGameListView.h" +#include "views/UIModeController.h" +#include "views/ViewController.h" +#include "FileData.h" +#include "FileFilterIndex.h" +#include "Log.h" +#include "PowerSaver.h" +#include "Scripting.h" +#include "Sound.h" +#include "SystemData.h" +#include +#include +#include +#include +#include + +#define FADE_TIME 300 + +static int lastIndex = 0; + +SystemScreenSaver::SystemScreenSaver(Window* window) : + mVideoScreensaver(NULL), + mImageScreensaver(NULL), + mWindow(window), + mState(STATE_INACTIVE), + mOpacity(0.0f), + mTimer(0), + mCurrentGame(NULL), + mPreviousGame(NULL), + mStopBackgroundAudio(true), + mSystem(NULL) +{ + remove(getTitlePath().c_str()); + mWindow->setScreenSaver(this); + std::string path = getTitleFolder(); + if(!Utils::FileSystem::exists(path)) + Utils::FileSystem::createDirectory(path); + mSwapTimeout = 30000; +} + +SystemScreenSaver::~SystemScreenSaver() +{ + // Delete subtitle file, if existing + remove(getTitlePath().c_str()); + mCurrentGame = NULL; + delete mVideoScreensaver; + delete mImageScreensaver; +} + +bool SystemScreenSaver::allowSleep() +{ + //return false; + return ((mVideoScreensaver == NULL) && (mImageScreensaver == NULL)); +} + +bool SystemScreenSaver::isScreenSaverActive() +{ + return (mState != STATE_INACTIVE); +} + +bool SystemScreenSaver::inputDuringScreensaver(InputConfig* config, Input input) +{ + bool input_consumed = false; + std::string screensaver_type = Settings::getInstance()->getString("ScreenSaverBehavior"); + bool is_media_screensaver = screensaver_type == "random video" || screensaver_type == "slideshow"; + + if (!mWindow->isSleeping() && is_media_screensaver) + { + // catch any valid screensaver or invalid inputs here to prevent screensaver from stopping + input_consumed = input_consumed || (config->getMappedTo(input).size() == 0); + + bool is_next_input = config->isMappedLike("right", input) || config->isMappedTo("select", input); + bool is_previous_input = config->isMappedLike("left", input); + bool is_favorite_input = config->isMappedLike("y", input); + bool is_start_input = config->isMappedTo("start", input); + bool is_select_game_input = config->isMappedTo("a", input); + bool use_gamelistmedia = screensaver_type == "random video" || !Settings::getInstance()->getBool("SlideshowScreenSaverCustomMediaSource"); + + if (input.value != 0) + { + if (is_next_input) + { + changeMediaItem(); + input_consumed = true; + } + else if (use_gamelistmedia) + { + if (is_previous_input && mPreviousGame) + { + changeMediaItem(false); + input_consumed = true; + } + else if (is_start_input || is_select_game_input) + { + selectGame(is_start_input); + input_consumed = false; + } + else if (is_favorite_input && !UIModeController::getInstance()->isUIModeKid()) + { + assert(mCurrentGame != NULL); + CollectionSystemManager::get()->toggleGameInCollection(mCurrentGame); + input_consumed = true; + } + } + } + } + return input_consumed; +} + +void SystemScreenSaver::setVideoScreensaver(std::string& path) +{ +#ifdef _OMX_ + // Create the correct type of video component + if (Settings::getInstance()->getBool("ScreenSaverOmxPlayer")) + mVideoScreensaver = new VideoPlayerComponent(mWindow, getTitlePath()); + else + mVideoScreensaver = new VideoVlcComponent(mWindow, getTitlePath()); +#else + mVideoScreensaver = new VideoVlcComponent(mWindow, getTitlePath()); +#endif + + mVideoScreensaver->topWindow(true); + mVideoScreensaver->setOrigin(0.5f, 0.5f); + mVideoScreensaver->setPosition(Renderer::getScreenWidth() / 2.0f, Renderer::getScreenHeight() / 2.0f); + + if (Settings::getInstance()->getBool("StretchVideoOnScreenSaver")) + { + mVideoScreensaver->setResize((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + } + else + { + mVideoScreensaver->setMaxSize((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + } + mVideoScreensaver->setVideo(path); + mVideoScreensaver->setScreensaverMode(true); + mVideoScreensaver->onShow(); + + handleScreenSaverEditingCollection(); + PowerSaver::runningScreenSaver(true); + mTimer = 0; +} + +void SystemScreenSaver::setImageScreensaver(std::string& path) +{ + if (!mImageScreensaver) + { + mImageScreensaver = new ImageComponent(mWindow, false, false); + } + + mImageScreensaver->setImage(path); + mImageScreensaver->setOrigin(0.5f, 0.5f); + mImageScreensaver->setPosition(Renderer::getScreenWidth() / 2.0f, Renderer::getScreenHeight() / 2.0f); + + if (Settings::getInstance()->getBool("SlideshowScreenSaverStretch")) + { + mImageScreensaver->setResize((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + } + else + { + mImageScreensaver->setMaxSize((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + } + + handleScreenSaverEditingCollection(); + PowerSaver::runningScreenSaver(true); + mTimer = 0; +} + +bool SystemScreenSaver::isFileVideo(std::string& path) +{ + if (path.empty()) { + return false; + } + std::string pathFilter = Settings::getInstance()->getString("SlideshowScreenSaverVideoFilter"); + std::string pathExtension = path.substr(path.find_last_of(".")); + return pathFilter.find(pathExtension) != std::string::npos; +} + +void SystemScreenSaver::handleScreenSaverEditingCollection() +{ + std::string screensaverCollection = Settings::getInstance()->getString("DefaultScreenSaverCollection"); + std::string currentEditingCollection = CollectionSystemManager::get()->getEditingCollection(); + + // check if we need to change the screensaver collection + if (screensaverCollection != "") { + // check if we're starting the screensaver + if (isScreenSaverActive()) + { + // we're entering the screensaver, backup the currently actively editing collection + mRegularEditingCollection = CollectionSystemManager::get()->getEditingCollection(); + CollectionSystemManager::get()->setEditMode(screensaverCollection, true); + } + else + { + // we're exiting the screensaver, restore the currently actively editing collection + CollectionSystemManager::get()->exitEditMode(true); + if (mRegularEditingCollection != "Favorites" && mRegularEditingCollection != "") + CollectionSystemManager::get()->setEditMode(mRegularEditingCollection, true); + mRegularEditingCollection = ""; + } + } +} + +void SystemScreenSaver::startScreenSaver(SystemData* system) +{ + mSystem = system; + // if set to index files in background, start thread + if (Settings::getInstance()->getBool("BackgroundIndexing")) + { + mExit = false; + mThread = new std::thread(&SystemScreenSaver::backgroundIndexing, this); + } + + std::string screensaver_behavior = Settings::getInstance()->getString("ScreenSaverBehavior"); + if (!mVideoScreensaver && (screensaver_behavior == "random video")) + { + // Configure to fade out the windows, Skip Fading if Instant mode + mState = PowerSaver::getMode() == PowerSaver::INSTANT + ? STATE_SCREENSAVER_ACTIVE + : STATE_FADE_OUT_WINDOW; + mSwapTimeout = Settings::getInstance()->getInt("ScreenSaverSwapVideoTimeout"); + mOpacity = 0.0f; + + // Load a random video + std::string path = ""; + pickRandomVideo(path, mCurrentGame != NULL); + + int retry = 200; + while(retry > 0 && ((path.empty() || !Utils::FileSystem::exists(path)) || mCurrentGame == NULL)) + { + retry--; + pickRandomVideo(path); + } + + if (!path.empty() && Utils::FileSystem::exists(path)) + { + setVideoScreensaver(path); + if (mCurrentGame != NULL) + { + Scripting::fireEvent("screensaver-game-select", mCurrentGame->getSystem()->getName(), mCurrentGame->getPath(), mCurrentGame->getName(), "randomvideo"); + } + return; + } + } + else if (screensaver_behavior == "slideshow") + { + // Configure to fade out the windows, Skip Fading if Instant mode + mState = PowerSaver::getMode() == PowerSaver::INSTANT + ? STATE_SCREENSAVER_ACTIVE + : STATE_FADE_OUT_WINDOW; + mSwapTimeout = Settings::getInstance()->getInt("ScreenSaverSwapMediaTimeout"); + mOpacity = 0.0f; + + // Load a random media + std::string path = ""; + if (Settings::getInstance()->getBool("SlideshowScreenSaverCustomMediaSource")) + { + pickRandomCustomMedia(path); + // Custom media are not tied to the game list + mCurrentGame = NULL; + } + else + { + pickRandomGameListImage(path, mCurrentGame != NULL); + } + + if (isFileVideo(path)) + setVideoScreensaver(path); + else + setImageScreensaver(path); + + std::string bg_audio_file = Settings::getInstance()->getString("SlideshowScreenSaverBackgroundAudioFile"); + if (!mBackgroundAudio && bg_audio_file != "" && Utils::FileSystem::exists(bg_audio_file)) + { + // paused PS so that the background audio keeps playing + PowerSaver::pause(); + mBackgroundAudio = Sound::get(bg_audio_file); + mBackgroundAudio->play(); + } + + if (mCurrentGame != NULL) + { + Scripting::fireEvent("screensaver-game-select", mCurrentGame->getSystem()->getName(), mCurrentGame->getFileName(), mCurrentGame->getName(), "slideshow"); + } + return; + } + // No videos. Just use a standard screensaver + mState = STATE_SCREENSAVER_ACTIVE; + mCurrentGame = NULL; +} + +void SystemScreenSaver::stopScreenSaver(bool toResume) +{ + remove(getTitlePath().c_str()); + if ((mBackgroundAudio) && (mStopBackgroundAudio)) + { + mBackgroundAudio->stop(); + mBackgroundAudio.reset(); + // if we were playing audio, we paused PS + PowerSaver::resume(); + } + + // so that we stop the background audio next time, unless we're restarting the screensaver + mStopBackgroundAudio = true; + + delete mVideoScreensaver; + mVideoScreensaver = NULL; + delete mImageScreensaver; + mImageScreensaver = NULL; + + if (!toResume) { + // if we're not changing videos or images, let's delete the random list + // and all the scrensaver session-related variables + mCurrentGame = NULL; + mPreviousGame = NULL; + mAllFiles.clear(); + mSystem = NULL; + } + + // Exit the indexing thread in case it's running. Check if thread still exists. + if (Settings::getInstance()->getBool("BackgroundIndexing") && mThread) + { + mExit = true; + mThread->join(); + delete mThread; + mThread = NULL; + } + + // we need this to loop through different videos + mState = STATE_INACTIVE; + handleScreenSaverEditingCollection(); + PowerSaver::runningScreenSaver(false); +} + +void SystemScreenSaver::renderScreenSaver() +{ + std::string screensaver_behavior = Settings::getInstance()->getString("ScreenSaverBehavior"); + if (mVideoScreensaver && (screensaver_behavior == "random video" || screensaver_behavior == "slideshow")) + { + setBackground(); + + // Only render the video if the state requires it + if ((int)mState >= STATE_FADE_IN_VIDEO) + { + Transform4x4f transform = Transform4x4f::Identity(); + mVideoScreensaver->render(transform); + } + + // Check if slideshow then loop background music + if (screensaver_behavior == "slideshow" && mBackgroundAudio && !mBackgroundAudio->isPlaying()) + { + mBackgroundAudio->play(); + } + + } + else if (mImageScreensaver && screensaver_behavior == "slideshow") + { + setBackground(); + + // Only render the image if the state requires it + if ((int)mState >= STATE_FADE_IN_VIDEO && mImageScreensaver->hasImage()) + { + mImageScreensaver->setOpacity(255- (unsigned char) (mOpacity * 255)); + + Transform4x4f transform = Transform4x4f::Identity(); + mImageScreensaver->render(transform); + } + + // Check if we need to restart the background audio + if (mBackgroundAudio && !mBackgroundAudio->isPlaying()) + { + mBackgroundAudio->play(); + } + } + else if (mState != STATE_INACTIVE) + { + Renderer::setMatrix(Transform4x4f::Identity()); + unsigned char color = screensaver_behavior == "dim" ? 0x000000A0 : 0x000000FF; + Renderer::drawRect(0.0f, 0.0f, Renderer::getScreenWidth(), Renderer::getScreenHeight(), color, color); + } +} + +void SystemScreenSaver::backgroundIndexing() +{ + LOG(LogDebug) << "Background indexing starting."; + + // get the list of all games + SystemData* all = CollectionSystemManager::get()->getAllGamesCollection(); + std::vector files = all->getRootFolder()->getFilesRecursive(GAME); + + const auto startTs = std::chrono::system_clock::now(); + for ( ; lastIndex < files.size(); lastIndex++) + { + if(mExit) + break; + Utils::FileSystem::exists(files.at(lastIndex)->getVideoPath()); + Utils::FileSystem::exists(files.at(lastIndex)->getMarqueePath()); + Utils::FileSystem::exists(files.at(lastIndex)->getThumbnailPath()); + Utils::FileSystem::exists(files.at(lastIndex)->getImagePath()); + } + auto endTs = std::chrono::system_clock::now(); + LOG(LogDebug) << "Indexed a total of " << lastIndex << " entries in " << std::chrono::duration_cast(endTs - startTs).count() << " ms. Stopping."; +} + +void SystemScreenSaver::getAllGamelistNodesForSystem(SystemData* system) { + std::vector subsysFiles {}; + FileData* rootFileData = system->getRootFolder(); + subsysFiles = rootFileData->getFilesRecursive(FileType::GAME, true); + mAllFiles.insert(mAllFiles.end(), subsysFiles.begin(), subsysFiles.end()); +} + +void SystemScreenSaver::getAllGamelistNodes() +{ + std::vector subsysFiles {}; + for (std::vector::const_iterator it = SystemData::sSystemVector.cbegin(); it != SystemData::sSystemVector.cend(); ++it) + { + // We only want nodes from game systems that are not collections + if (!(*it)->isGameSystem() || (*it)->isCollection()) + continue; + + getAllGamelistNodesForSystem(*it); + } +} + +void SystemScreenSaver::pickGameListNode(const char *nodeName) +{ + FileData *itf = nullptr; + bool found = false; + int missCtr = 0; + while (!found) + { + if (mAllFiles.empty()) + { + if (mSystem) + getAllGamelistNodesForSystem(mSystem); + else + getAllGamelistNodes(); + + if (mAllFiles.empty()) { return; } // no games at all + mAllFilesSize = mAllFiles.size(); + std::shuffle(std::begin(mAllFiles), std::end(mAllFiles), SystemData::sURNG); + } + + itf = mAllFiles.back(); + mAllFiles.pop_back(); + if ((strcmp(nodeName, "video") == 0 && itf->getVideoPath() != "") || + (strcmp(nodeName, "image") == 0 && itf->getImagePath() != "")) + { + found = true; + } + else + { + missCtr++; + if (missCtr == mAllFilesSize) + // avoid looping forever when no candidate exist + // with image/video path set + return; + } + } + + mCurrentGame = itf; +} + +void SystemScreenSaver::prepareScreenSaverMedia(const char *nodeName, std::string& path) +{ + if (mCurrentGame) { + path = (strcmp(nodeName, "video") == 0) ? mCurrentGame->getVideoPath() : mCurrentGame->getImagePath(); + if (Settings::getInstance()->getString("ScreenSaverGameInfo") != "never") + { + auto systemName = mCurrentGame->getSourceFileData()->getSystem()->getFullName(); + writeSubtitle(mCurrentGame->getSourceFileData()->getName().c_str(), systemName.c_str(), + (Settings::getInstance()->getString("ScreenSaverGameInfo") == "always")); + } + } +} + + +void SystemScreenSaver::pickRandomVideo(std::string& path, bool keepSame) +{ + if (!keepSame) + pickGameListNode("video"); + prepareScreenSaverMedia("video", path); +} + +void SystemScreenSaver::pickRandomGameListImage(std::string& path, bool keepSame) +{ + if (!keepSame) + pickGameListNode("image"); + prepareScreenSaverMedia("image", path); +} + +void SystemScreenSaver::pickRandomCustomMedia(std::string& path) +{ + if (mCustomMediaFiles.empty()) + { + std::string mediaDir = Settings::getInstance()->getString("SlideshowScreenSaverMediaDir"); + if ((mediaDir != "") && (Utils::FileSystem::exists(mediaDir))) + { + mCustomMediaFiles = getCustomMediaFiles(mediaDir); + if (mCustomMediaFiles.empty()) + { + LOG(LogError) << "Slideshow Screensaver - No media files found\n"; + return; + } + } + else + { + LOG(LogError) << "Slideshow Screensaver - Media directory does not exist: " << mediaDir << "\n"; + return; + } + std::shuffle(std::begin(mCustomMediaFiles), std::end(mCustomMediaFiles), SystemData::sURNG); + } + path = mCustomMediaFiles.back(); + mCustomMediaFiles.pop_back(); +} + + +std::vector SystemScreenSaver::getCustomMediaFiles(const std::string &mediaDir) { + std::string imageFilter = Settings::getInstance()->getString("SlideshowScreenSaverImageFilter"); + std::string videoFilter = Settings::getInstance()->getString("SlideshowScreenSaverVideoFilter"); + std::vector matchingFiles; + Utils::FileSystem::stringList dirContent = Utils::FileSystem::getDirContent(mediaDir, Settings::getInstance()->getBool("SlideshowScreenSaverRecurse")); + + for(Utils::FileSystem::stringList::const_iterator it = dirContent.cbegin(); it != dirContent.cend(); ++it) + { + if (Utils::FileSystem::isRegularFile(*it)) + { + // If the image filter is empty, or the file extension is in the filter string, + // add it to the matching files list + if ((imageFilter.length() <= 0) || + (imageFilter.find(Utils::FileSystem::getExtension(*it)) != std::string::npos)) + { + matchingFiles.push_back(*it); + } + // Also add video files + if ((videoFilter.length() <= 0) || + (videoFilter.find(Utils::FileSystem::getExtension(*it)) != std::string::npos)) + { + matchingFiles.push_back(*it); + } + } + } + return matchingFiles; +} + + +void SystemScreenSaver::update(int deltaTime) +{ + // Use this to update the fade value for the current fade stage + if (mState == STATE_FADE_OUT_WINDOW) + { + mOpacity += (float)deltaTime / FADE_TIME; + if (mOpacity >= 1.0f) + { + mOpacity = 1.0f; + + // Update to the next state + mState = STATE_FADE_IN_VIDEO; + } + } + else if (mState == STATE_FADE_IN_VIDEO) + { + mOpacity -= (float)deltaTime / FADE_TIME; + if (mOpacity <= 0.0f) + { + mOpacity = 0.0f; + // Update to the next state + mState = STATE_SCREENSAVER_ACTIVE; + } + } + else if (mState == STATE_SCREENSAVER_ACTIVE) + { + // Update the timer that swaps the videos/images + mTimer += deltaTime; + if (mTimer > mSwapTimeout) + { + changeMediaItem(); + } + } + + // If we have a loaded video/image then update it + if (mVideoScreensaver) + mVideoScreensaver->update(deltaTime); + else if (mImageScreensaver) + mImageScreensaver->update(deltaTime); +} + +void SystemScreenSaver::changeMediaItem(bool next) { + if (!next) { + // swap entries + FileData* tmpGame = mCurrentGame; + mCurrentGame = mPreviousGame; + mPreviousGame = tmpGame; + } + else + { + mPreviousGame = mCurrentGame; + mCurrentGame = NULL; + } + mStopBackgroundAudio = false; + stopScreenSaver(true); + startScreenSaver(mSystem); + mState = STATE_SCREENSAVER_ACTIVE; +} + +FileData* SystemScreenSaver::getCurrentGame() +{ + return mCurrentGame; +} + +void SystemScreenSaver::selectGame(bool launch) +{ + if (mCurrentGame != NULL) + { + //Stop screensaver + mStopBackgroundAudio = true; + FileData* gameToSelect = mCurrentGame; + stopScreenSaver(); + + ViewController::get()->goToGameList(gameToSelect->getSystem()); + IGameListView* view = ViewController::get()->getGameListView(gameToSelect->getSystem()).get(); + if (launch) + view->launch(gameToSelect); + else + // Flag true is set to re-calculate the cursor position on the visible gamelist section on screen. + // This flag is only to be set when there is no previous navigation state, + // i.e. when jumping to a game from the screensaver or launching a game. + // The latter case is covered in view->launch() ==> ViewController::launch(). + // The former case must be flagged as below. + // see also: TextListComponent.REFRESH_LIST_CURSOR_POS and its usage for the 'true' flag + view->setCursor(gameToSelect, true); + } +} + +void SystemScreenSaver::setBackground() +{ + // Render black background + Renderer::setMatrix(Transform4x4f::Identity()); + Renderer::drawRect(0.0f, 0.0f, Renderer::getScreenWidth(), Renderer::getScreenHeight(), 0x000000FF, 0x000000FF); +} diff --git a/es-app/src/SystemScreenSaver.h b/es-app/src/SystemScreenSaver.h new file mode 100644 index 0000000000..74eb670bf0 --- /dev/null +++ b/es-app/src/SystemScreenSaver.h @@ -0,0 +1,76 @@ +#pragma once +#ifndef ES_APP_SYSTEM_SCREEN_SAVER_H +#define ES_APP_SYSTEM_SCREEN_SAVER_H + +#include "Window.h" +#include + +class ImageComponent; +class Sound; +class VideoComponent; + +// Screensaver implementation for main window +class SystemScreenSaver : public Window::ScreenSaver +{ +public: + SystemScreenSaver(Window* window); + virtual ~SystemScreenSaver(); + + virtual void startScreenSaver(SystemData* system=NULL); + virtual void stopScreenSaver(bool toResume=false); + virtual void renderScreenSaver(); + virtual bool allowSleep(); + virtual void update(int deltaTime); + virtual bool isScreenSaverActive(); + + virtual FileData* getCurrentGame(); + virtual void selectGame(bool launch); + virtual bool inputDuringScreensaver(InputConfig* config, Input input); + +private: + void changeMediaItem(bool next = true); + void pickGameListNode(const char *nodeName); + void prepareScreenSaverMedia(const char *nodeName, std::string& path); + void pickRandomVideo(std::string& path, bool keepSame = false); + void pickRandomGameListImage(std::string& path, bool keepSame = false); + void pickRandomCustomMedia(std::string& path); + void setVideoScreensaver(std::string& path); + void setImageScreensaver(std::string& path); + bool isFileVideo(std::string& path); + std::vector getCustomMediaFiles(const std::string &mediaDir); + void getAllGamelistNodes(); + void getAllGamelistNodesForSystem(SystemData* system); + void backgroundIndexing(); + void setBackground(); + void handleScreenSaverEditingCollection(); + void input(InputConfig* config, Input input); + + enum STATE { + STATE_INACTIVE, + STATE_FADE_OUT_WINDOW, + STATE_FADE_IN_VIDEO, + STATE_SCREENSAVER_ACTIVE + }; + +private: + VideoComponent* mVideoScreensaver; + ImageComponent* mImageScreensaver; + Window* mWindow; + SystemData* mSystem; + STATE mState; + float mOpacity; + int mTimer; + FileData* mCurrentGame; + FileData* mPreviousGame; + int mSwapTimeout; + std::shared_ptr mBackgroundAudio; + bool mStopBackgroundAudio; + std::vector mAllFiles; + std::vector mCustomMediaFiles; + int mAllFilesSize; + std::thread* mThread; + bool mExit; + std::string mRegularEditingCollection; +}; + +#endif // ES_APP_SYSTEM_SCREEN_SAVER_H diff --git a/es-app/src/VolumeControl.cpp b/es-app/src/VolumeControl.cpp index 989d8e323f..80d18dfdc0 100644 --- a/es-app/src/VolumeControl.cpp +++ b/es-app/src/VolumeControl.cpp @@ -1,10 +1,14 @@ #include "VolumeControl.h" +#include "math/Misc.h" #include "Log.h" - +#include "Settings.h" +#ifdef WIN32 +#include +#endif #if defined(__linux__) - #ifdef _RPI_ + #if defined(_RPI_) || defined(_VERO4K_) const char * VolumeControl::mixerName = "PCM"; #else const char * VolumeControl::mixerName = "Master"; @@ -18,9 +22,9 @@ std::weak_ptr VolumeControl::sInstance; VolumeControl::VolumeControl() : originalVolume(0), internalVolume(0) #if defined (__APPLE__) - #error TODO: Not implemented for MacOS yet!!! + #error TODO: Not implemented for MacOS yet!!! #elif defined(__linux__) - , mixerIndex(0), mixerHandle(nullptr), mixerElem(nullptr), mixerSelemId(nullptr) + , mixerIndex(0), mixerHandle(nullptr), mixerElem(nullptr), mixerSelemId(nullptr) #elif defined(WIN32) || defined(_WIN32) , mixerHandle(nullptr), endpointVolume(nullptr) #endif @@ -31,8 +35,17 @@ VolumeControl::VolumeControl() originalVolume = getVolume(); } -VolumeControl::VolumeControl(const VolumeControl & right) +VolumeControl::VolumeControl(const VolumeControl & right): + originalVolume(0), internalVolume(0) +#if defined (__APPLE__) + #error TODO: Not implemented for MacOS yet!!! +#elif defined(__linux__) + , mixerIndex(0), mixerHandle(nullptr), mixerElem(nullptr), mixerSelemId(nullptr) +#elif defined(WIN32) || defined(_WIN32) + , mixerHandle(nullptr), endpointVolume(nullptr) +#endif { + (void)right; sInstance = right.sInstance; } @@ -73,6 +86,10 @@ void VolumeControl::init() //try to open mixer device if (mixerHandle == nullptr) { + // Allow users to override the AudioCard and MixerName in es_settings.cfg + mixerCard = Settings::getInstance()->getString("AudioCard").c_str(); + mixerName = Settings::getInstance()->getString("AudioDevice").c_str(); + snd_mixer_selem_id_alloca(&mixerSelemId); //sets simple-mixer index and name snd_mixer_selem_id_set_index(mixerSelemId, mixerIndex); @@ -156,7 +173,7 @@ void VolumeControl::init() mixerLineControls.cbmxctrl = sizeof(MIXERCONTROL); if (mixerGetLineControls((HMIXEROBJ)mixerHandle, &mixerLineControls, MIXER_GETLINECONTROLSF_ONEBYTYPE) != MMSYSERR_NOERROR) { - LOG(LogError) << "VolumeControl::getVolume() - Failed to get mixer volume control!"; + LOG(LogError) << "VolumeControl::init() - Failed to get mixer volume control!"; mixerClose(mixerHandle); mixerHandle = nullptr; } @@ -167,7 +184,7 @@ void VolumeControl::init() } } } - else + else { //Windows Vista or above. use EndpointVolume API. get device enumerator if (endpointVolume == nullptr) @@ -239,7 +256,7 @@ int VolumeControl::getVolume() const int volume = 0; #if defined (__APPLE__) - #error TODO: Not implemented for MacOS yet!!! + #error TODO: Not implemented for MacOS yet!!! #elif defined(__linux__) if (mixerElem != nullptr) { @@ -256,7 +273,7 @@ int VolumeControl::getVolume() const rawVolume -= minVolume; if (rawVolume > 0) { - volume = (rawVolume * 100) / (maxVolume - minVolume); + volume = (rawVolume * 100.0) / (maxVolume - minVolume) + 0.5; } //else volume = 0; } @@ -282,9 +299,9 @@ int VolumeControl::getVolume() const mixerControlDetails.cMultipleItems = 0; //always 0 except for a MIXERCONTROL_CONTROLF_MULTIPLE control mixerControlDetails.paDetails = &value; mixerControlDetails.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED); - if (mixerGetControlDetails((HMIXEROBJ)mixerHandle, &mixerControlDetails, MIXER_GETCONTROLDETAILSF_VALUE) == MMSYSERR_NOERROR) + if (mixerGetControlDetails((HMIXEROBJ)mixerHandle, &mixerControlDetails, MIXER_GETCONTROLDETAILSF_VALUE) == MMSYSERR_NOERROR) { - volume = (uint8_t)round((value.dwValue * 100) / 65535); + volume = (int)Math::round((value.dwValue * 100) / 65535.0f); } else { @@ -297,14 +314,14 @@ int VolumeControl::getVolume() const float floatVolume = 0.0f; //0-1 if (endpointVolume->GetMasterVolumeLevelScalar(&floatVolume) == S_OK) { - volume = (uint8_t)round(floatVolume * 100.0f); + volume = (int)Math::round(floatVolume * 100.0f); LOG(LogInfo) << " getting volume as " << volume << " ( from float " << floatVolume << ")"; } else { LOG(LogError) << "VolumeControl::getVolume() - Failed to get master volume!"; } - + } #endif //clamp to 0-100 range @@ -333,7 +350,7 @@ void VolumeControl::setVolume(int volume) //store values in internal variables internalVolume = volume; #if defined (__APPLE__) - #error TODO: Not implemented for MacOS yet!!! + #error TODO: Not implemented for MacOS yet!!! #elif defined(__linux__) if (mixerElem != nullptr) { @@ -344,15 +361,15 @@ void VolumeControl::setVolume(int volume) { //ok. bring into minVolume-maxVolume range and set long rawVolume = (volume * (maxVolume - minVolume) / 100) + minVolume; - if (snd_mixer_selem_set_playback_volume(mixerElem, SND_MIXER_SCHN_FRONT_LEFT, rawVolume) < 0 + if (snd_mixer_selem_set_playback_volume(mixerElem, SND_MIXER_SCHN_FRONT_LEFT, rawVolume) < 0 || snd_mixer_selem_set_playback_volume(mixerElem, SND_MIXER_SCHN_FRONT_RIGHT, rawVolume) < 0) { - LOG(LogError) << "VolumeControl::getVolume() - Failed to set mixer volume!"; + LOG(LogError) << "VolumeControl::setVolume() - Failed to set mixer volume!"; } } else { - LOG(LogError) << "VolumeControl::getVolume() - Failed to get volume range!"; + LOG(LogError) << "VolumeControl::setVolume() - Failed to get volume range!"; } } #elif defined(WIN32) || defined(_WIN32) diff --git a/es-app/src/VolumeControl.h b/es-app/src/VolumeControl.h index 8f35ea2c27..a2e420e7e2 100644 --- a/es-app/src/VolumeControl.h +++ b/es-app/src/VolumeControl.h @@ -1,7 +1,8 @@ #pragma once +#ifndef ES_APP_VOLUME_CONTROL_H +#define ES_APP_VOLUME_CONTROL_H #include -#include #if defined (__APPLE__) #error TODO: Not implemented for MacOS yet!!! @@ -11,9 +12,8 @@ #include #elif defined(WIN32) || defined(_WIN32) #include - #include - #include #include + #include #endif /*! @@ -27,7 +27,7 @@ class VolumeControl static const char * mixerName; static const char * mixerCard; int mixerIndex; - snd_mixer_t* mixerHandle; + snd_mixer_t* mixerHandle; snd_mixer_elem_t* mixerElem; snd_mixer_selem_id_t* mixerSelemId; #elif defined(WIN32) || defined(_WIN32) @@ -56,3 +56,5 @@ class VolumeControl ~VolumeControl(); }; + +#endif // ES_APP_VOLUME_CONTROL_H diff --git a/es-app/src/animations/LaunchAnimation.h b/es-app/src/animations/LaunchAnimation.h index cfd9f06d06..2c548afb80 100644 --- a/es-app/src/animations/LaunchAnimation.h +++ b/es-app/src/animations/LaunchAnimation.h @@ -1,7 +1,8 @@ #pragma once +#ifndef ES_APP_ANIMATIONS_LAUNCH_ANIMATION_H +#define ES_APP_ANIMATIONS_LAUNCH_ANIMATION_H #include "animations/Animation.h" -#include "Log.h" // let's look at the game launch effect: // -move camera to center on point P (interpolation method: linear) @@ -31,34 +32,36 @@ class LaunchAnimation : public Animation { public: //Target is a centerpoint - LaunchAnimation(Eigen::Affine3f& camera, float& fade, const Eigen::Vector3f& target, int duration) : + LaunchAnimation(Transform4x4f& camera, float& fade, const Vector3f& target, int duration) : mCameraStart(camera), mTarget(target), mDuration(duration), cameraOut(camera), fadeOut(fade) {} int getDuration() const override { return mDuration; } void apply(float t) override { - cameraOut = Eigen::Affine3f::Identity(); + cameraOut = Transform4x4f::Identity(); - float zoom = lerp(1.0, 4.25f, t*t); - cameraOut.scale(Eigen::Vector3f(zoom, zoom, 1)); + float zoom = Math::lerp(1.0, 4.25f, t*t); + cameraOut.scale(zoom); const float sw = (float)Renderer::getScreenWidth() / zoom; const float sh = (float)Renderer::getScreenHeight() / zoom; - Eigen::Vector3f centerPoint = lerp(-mCameraStart.translation() + Eigen::Vector3f(Renderer::getScreenWidth() / 2.0f, Renderer::getScreenHeight() / 2.0f, 0), - mTarget, smoothStep(0.0, 1.0, t)); + const Vector2f startPoint = Vector2f(-mCameraStart.translation()) + Vector2f(Renderer::getScreenWidth() / 2.0f, Renderer::getScreenHeight() / 2.0f); + const Vector2f centerPoint = Vector2f().lerp(startPoint, Vector2f(mTarget), Math::smootherStep(0.0, 1.0, t)); - cameraOut.translate(Eigen::Vector3f((sw / 2) - centerPoint.x(), (sh / 2) - centerPoint.y(), 0)); - - fadeOut = lerp(0.0, 1.0, t*t); + cameraOut.translate(Vector3f((sw / 2) - centerPoint.x(), (sh / 2) - centerPoint.y(), 0)); + + fadeOut = Math::lerp(0.0, 1.0, t*t); } private: - Eigen::Affine3f mCameraStart; - Eigen::Vector3f mTarget; + Transform4x4f mCameraStart; + Vector3f mTarget; int mDuration; - Eigen::Affine3f& cameraOut; + Transform4x4f& cameraOut; float& fadeOut; }; + +#endif // ES_APP_ANIMATIONS_LAUNCH_ANIMATION_H diff --git a/es-app/src/animations/MoveCameraAnimation.h b/es-app/src/animations/MoveCameraAnimation.h index 1f1689bb29..23ad9640ba 100644 --- a/es-app/src/animations/MoveCameraAnimation.h +++ b/es-app/src/animations/MoveCameraAnimation.h @@ -1,24 +1,27 @@ #pragma once +#ifndef ES_APP_ANIMATIONS_MOVE_CAMERA_ANIMATION_H +#define ES_APP_ANIMATIONS_MOVE_CAMERA_ANIMATION_H #include "animations/Animation.h" class MoveCameraAnimation : public Animation { public: - MoveCameraAnimation(Eigen::Affine3f& camera, const Eigen::Vector3f& target) : mCameraStart(camera), mTarget(target), cameraOut(camera) {} + MoveCameraAnimation(Transform4x4f& camera, const Vector3f& target) : mCameraStart(camera), mTarget(target), mCameraOut(camera) { } int getDuration() const override { return 400; } void apply(float t) override { - // cubic ease out t -= 1; - cameraOut.translation() = -lerp(-mCameraStart.translation(), mTarget, t*t*t + 1); + mCameraOut.translation() = -Vector3f().lerp(-mCameraStart.translation(), mTarget, t*t*t + 1 /*cubic ease out*/); } private: - Eigen::Affine3f mCameraStart; - Eigen::Vector3f mTarget; + Transform4x4f mCameraStart; + Vector3f mTarget; - Eigen::Affine3f& cameraOut; + Transform4x4f& mCameraOut; }; + +#endif // ES_APP_ANIMATIONS_MOVE_CAMERA_ANIMATION_H diff --git a/es-app/src/components/AsyncReqComponent.cpp b/es-app/src/components/AsyncReqComponent.cpp index a38b588803..7693ae6b4f 100644 --- a/es-app/src/components/AsyncReqComponent.cpp +++ b/es-app/src/components/AsyncReqComponent.cpp @@ -1,11 +1,13 @@ #include "components/AsyncReqComponent.h" -#include "Renderer.h" -AsyncReqComponent::AsyncReqComponent(Window* window, std::shared_ptr req, std::function)> onSuccess, std::function onCancel) - : GuiComponent(window), +#include "renderers/Renderer.h" +#include "HttpReq.h" + +AsyncReqComponent::AsyncReqComponent(Window* window, std::shared_ptr req, std::function)> onSuccess, std::function onCancel) + : GuiComponent(window), mSuccessFunc(onSuccess), mCancelFunc(onCancel), mTime(0), mRequest(req) { - + } bool AsyncReqComponent::input(InputConfig* config, Input input) @@ -33,14 +35,14 @@ void AsyncReqComponent::update(int deltaTime) mTime += deltaTime; } -void AsyncReqComponent::render(const Eigen::Affine3f& parentTrans) +void AsyncReqComponent::render(const Transform4x4f& /*parentTrans*/) { - Eigen::Affine3f trans = Eigen::Affine3f::Identity(); - trans = trans.translate(Eigen::Vector3f(Renderer::getScreenWidth() / 2.0f, Renderer::getScreenHeight() / 2.0f, 0)); + Transform4x4f trans = Transform4x4f::Identity(); + trans = trans.translate(Vector3f(Renderer::getScreenWidth() / 2.0f, Renderer::getScreenHeight() / 2.0f, 0)); Renderer::setMatrix(trans); - Eigen::Vector3f point(cos(mTime * 0.01f) * 12, sin(mTime * 0.01f) * 12, 0); - Renderer::drawRect((int)point.x(), (int)point.y(), 8, 8, 0x0000FFFF); + Vector3f point(Math::cosf(mTime * 0.01f) * 12, Math::sinf(mTime * 0.01f) * 12, 0); + Renderer::drawRect(point.x(), point.y(), 8.0f, 8.0f, 0x0000FFFF, 0x0000FFFF); } std::vector AsyncReqComponent::getHelpPrompts() diff --git a/es-app/src/components/AsyncReqComponent.h b/es-app/src/components/AsyncReqComponent.h index 11478fe091..6b051157bd 100644 --- a/es-app/src/components/AsyncReqComponent.h +++ b/es-app/src/components/AsyncReqComponent.h @@ -1,11 +1,12 @@ #pragma once +#ifndef ES_APP_COMPONENTS_ASYNC_REQ_COMPONENT_H +#define ES_APP_COMPONENTS_ASYNC_REQ_COMPONENT_H #include "GuiComponent.h" -#include "HttpReq.h" -#include -#include -/* +class HttpReq; + +/* Used to asynchronously run an HTTP request. Displays a simple animation on the UI to show the application hasn't frozen. Can be canceled by the user pressing B. @@ -33,7 +34,7 @@ class AsyncReqComponent : public GuiComponent bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; virtual std::vector getHelpPrompts() override; private: @@ -43,3 +44,5 @@ class AsyncReqComponent : public GuiComponent unsigned int mTime; std::shared_ptr mRequest; }; + +#endif // ES_APP_COMPONENTS_ASYNC_REQ_COMPONENT_H diff --git a/es-app/src/components/RatingComponent.cpp b/es-app/src/components/RatingComponent.cpp index 12f39a3090..b474f0118c 100644 --- a/es-app/src/components/RatingComponent.cpp +++ b/es-app/src/components/RatingComponent.cpp @@ -1,16 +1,16 @@ #include "components/RatingComponent.h" -#include "Renderer.h" -#include "Window.h" -#include "Util.h" -#include "resources/SVGResource.h" -RatingComponent::RatingComponent(Window* window) : GuiComponent(window) +#include "resources/TextureResource.h" +#include "ThemeData.h" + +RatingComponent::RatingComponent(Window* window) : GuiComponent(window), mColorShift(0xFFFFFFFF) { mFilledTexture = TextureResource::get(":/star_filled.svg", true); mUnfilledTexture = TextureResource::get(":/star_unfilled.svg", true); mValue = 0.5f; - mSize << 64 * NUM_RATING_STARS, 64; + mSize = Vector2f(64 * NUM_RATING_STARS, 64); updateVertices(); + updateColors(); } void RatingComponent::setValue(const std::string& value) @@ -38,6 +38,18 @@ std::string RatingComponent::getValue() const return ss.str(); } +void RatingComponent::setOpacity(unsigned char opacity) +{ + mOpacity = opacity; + updateColors(); +} + +void RatingComponent::setColorShift(unsigned int color) +{ + mColorShift = color; + updateColors(); +} + void RatingComponent::onSizeChanged() { if(mSize.y() == 0) @@ -45,16 +57,13 @@ void RatingComponent::onSizeChanged() else if(mSize.x() == 0) mSize[0] = mSize.y() * NUM_RATING_STARS; - auto filledSVG = dynamic_cast(mFilledTexture.get()); - auto unfilledSVG = dynamic_cast(mUnfilledTexture.get()); - if(mSize.y() > 0) { - size_t heightPx = (size_t)round(mSize.y()); - if(filledSVG) - filledSVG->rasterizeAt(heightPx, heightPx); - if(unfilledSVG) - unfilledSVG->rasterizeAt(heightPx, heightPx); + size_t heightPx = (size_t)Math::round(mSize.y()); + if (mFilledTexture) + mFilledTexture->rasterizeAt(heightPx, heightPx); + if(mUnfilledTexture) + mUnfilledTexture->rasterizeAt(heightPx, heightPx); } updateVertices(); @@ -63,64 +72,49 @@ void RatingComponent::onSizeChanged() void RatingComponent::updateVertices() { const float numStars = NUM_RATING_STARS; + const float h = getSize().y(); // is the same as a single star's width + const float w = getSize().y() * mValue * numStars; + const float fw = getSize().y() * numStars; + + mVertices[0] = { { 0.0f, 0.0f }, { 0.0f, 1.0f }, 0 }; + mVertices[1] = { { 0.0f, h }, { 0.0f, 0.0f }, 0 }; + mVertices[2] = { { w, 0.0f }, { mValue * numStars, 1.0f }, 0 }; + mVertices[3] = { { w, h }, { mValue * numStars, 0.0f }, 0 }; + + mVertices[4] = { { 0.0f, 0.0f }, { 0.0f, 1.0f }, 0 }; + mVertices[5] = { { 0.0f, h }, { 0.0f, 0.0f }, 0 }; + mVertices[6] = { { fw, 0.0f }, { numStars, 1.0f }, 0 }; + mVertices[7] = { { fw, h }, { numStars, 0.0f }, 0 }; + + updateColors(); - const float h = round(getSize().y()); // is the same as a single star's width - const float w = round(h * mValue * numStars); - const float fw = round(h * numStars); - - mVertices[0].pos << 0.0f, 0.0f; - mVertices[0].tex << 0.0f, 1.0f; - mVertices[1].pos << w, h; - mVertices[1].tex << mValue * numStars, 0.0f; - mVertices[2].pos << 0.0f, h; - mVertices[2].tex << 0.0f, 0.0f; - - mVertices[3] = mVertices[0]; - mVertices[4].pos << w, 0.0f; - mVertices[4].tex << mValue * numStars, 1.0f; - mVertices[5] = mVertices[1]; - - mVertices[6] = mVertices[4]; - mVertices[7].pos << fw, h; - mVertices[7].tex << numStars, 0.0f; - mVertices[8] = mVertices[1]; - - mVertices[9] = mVertices[6]; - mVertices[10].pos << fw, 0.0f; - mVertices[10].tex << numStars, 1.0f; - mVertices[11] = mVertices[7]; + // round vertices + for(int i = 0; i < 8; ++i) + mVertices[i].pos.round(); } -void RatingComponent::render(const Eigen::Affine3f& parentTrans) +void RatingComponent::updateColors() { - Eigen::Affine3f trans = roundMatrix(parentTrans * getTransform()); - Renderer::setMatrix(trans); + const float opacity = mOpacity / 255.0; + const unsigned int color = Renderer::convertColor(mColorShift & 0xFFFFFF00 | (unsigned char)((mColorShift & 0xFF) * opacity)); - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + for(int i = 0; i < 8; ++i) + mVertices[i].col = color; +} - glColor4ub(255, 255, 255, getOpacity()); +void RatingComponent::render(const Transform4x4f& parentTrans) +{ + if (!isVisible()) + return; - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - - glVertexPointer(2, GL_FLOAT, sizeof(Vertex), &mVertices[0].pos); - glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &mVertices[0].tex); - - mFilledTexture->bind(); - glDrawArrays(GL_TRIANGLES, 0, 6); + Transform4x4f trans = parentTrans * getTransform(); + Renderer::setMatrix(trans); mUnfilledTexture->bind(); - glDrawArrays(GL_TRIANGLES, 6, 6); - - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - - glDisable(GL_TEXTURE_2D); - glDisable(GL_BLEND); + Renderer::drawTriangleStrips(&mVertices[4], 4); - glColor4ub(255, 255, 255, 255); + mFilledTexture->bind(); + Renderer::drawTriangleStrips(&mVertices[0], 4); renderChildren(trans); } @@ -161,6 +155,10 @@ void RatingComponent::applyTheme(const std::shared_ptr& theme, const imgChanged = true; } + + if(properties & COLOR && elem->has("color")) + setColorShift(elem->get("color")); + if(imgChanged) onSizeChanged(); } diff --git a/es-app/src/components/RatingComponent.h b/es-app/src/components/RatingComponent.h index a275c2701e..3d429e6420 100644 --- a/es-app/src/components/RatingComponent.h +++ b/es-app/src/components/RatingComponent.h @@ -1,7 +1,11 @@ #pragma once +#ifndef ES_APP_COMPONENTS_RATING_COMPONENT_H +#define ES_APP_COMPONENTS_RATING_COMPONENT_H +#include "renderers/Renderer.h" #include "GuiComponent.h" -#include "resources/TextureResource.h" + +class TextureResource; #define NUM_RATING_STARS 5 @@ -19,26 +23,31 @@ class RatingComponent : public GuiComponent void setValue(const std::string& value) override; // Should be a normalized float (in the range [0..1]) - if it's not, it will be clamped. bool input(InputConfig* config, Input input) override; - void render(const Eigen::Affine3f& parentTrans); + void render(const Transform4x4f& parentTrans) override; void onSizeChanged() override; + void setOpacity(unsigned char opacity) override; + + // Multiply all pixels in the image by this color when rendering. + void setColorShift(unsigned int color); + virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; virtual std::vector getHelpPrompts() override; private: void updateVertices(); + void updateColors(); float mValue; - struct Vertex - { - Eigen::Vector2f pos; - Eigen::Vector2f tex; - } mVertices[12]; + Renderer::Vertex mVertices[8]; + + unsigned int mColorShift; std::shared_ptr mFilledTexture; std::shared_ptr mUnfilledTexture; }; +#endif // ES_APP_COMPONENTS_RATING_COMPONENT_H diff --git a/es-app/src/components/ScraperSearchComponent.cpp b/es-app/src/components/ScraperSearchComponent.cpp index 9cfda3de62..752c4a8e69 100644 --- a/es-app/src/components/ScraperSearchComponent.cpp +++ b/es-app/src/components/ScraperSearchComponent.cpp @@ -1,29 +1,27 @@ #include "components/ScraperSearchComponent.h" -#include "guis/GuiMsgBox.h" -#include "components/TextComponent.h" -#include "components/ScrollableContainer.h" +#include "components/ComponentList.h" +#include "components/DateTimeEditComponent.h" #include "components/ImageComponent.h" #include "components/RatingComponent.h" -#include "components/DateTimeComponent.h" -#include "components/AnimatedImageComponent.h" -#include "components/ComponentList.h" -#include "HttpReq.h" -#include "Settings.h" -#include "Log.h" -#include "Util.h" +#include "components/ScrollableContainer.h" +#include "components/TextComponent.h" +#include "guis/GuiMsgBox.h" #include "guis/GuiTextEditPopup.h" +#include "resources/Font.h" +#include "utils/StringUtil.h" +#include "FileData.h" +#include "Log.h" +#include "Window.h" ScraperSearchComponent::ScraperSearchComponent(Window* window, SearchType type) : GuiComponent(window), - mGrid(window, Eigen::Vector2i(4, 3)), mBusyAnim(window), + mGrid(window, Vector2i(4, 3)), mBusyAnim(window), mSearchType(type) { addChild(&mGrid); mBlockAccept = false; - using namespace Eigen; - // left spacer (empty component, needed for borders) mGrid.setEntry(std::make_shared(mWindow), Vector2i(0, 0), false, false, Vector2i(1, 3), GridFlags::BORDER_TOP | GridFlags::BORDER_BOTTOM); @@ -39,13 +37,13 @@ ScraperSearchComponent::ScraperSearchComponent(Window* window, SearchType type) mResultDesc = std::make_shared(mWindow, "Result desc", Font::get(FONT_SIZE_SMALL), 0x777777FF); mDescContainer->addChild(mResultDesc.get()); mDescContainer->setAutoScroll(true); - + // metadata auto font = Font::get(FONT_SIZE_SMALL); // this gets replaced in onSizeChanged() so its just a placeholder const unsigned int mdColor = 0x777777FF; const unsigned int mdLblColor = 0x666666FF; mMD_Rating = std::make_shared(mWindow); - mMD_ReleaseDate = std::make_shared(mWindow); + mMD_ReleaseDate = std::make_shared(mWindow); mMD_ReleaseDate->setColor(mdColor); mMD_Developer = std::make_shared(mWindow, "", font, mdColor); mMD_Publisher = std::make_shared(mWindow, "", font, mdColor); @@ -59,9 +57,9 @@ ScraperSearchComponent::ScraperSearchComponent(Window* window, SearchType type) mMD_Pairs.push_back(MetaDataPair(std::make_shared(mWindow, "GENRE:", font, mdLblColor), mMD_Genre)); mMD_Pairs.push_back(MetaDataPair(std::make_shared(mWindow, "PLAYERS:", font, mdLblColor), mMD_Players)); - mMD_Grid = std::make_shared(mWindow, Vector2i(2, mMD_Pairs.size()*2 - 1)); + mMD_Grid = std::make_shared(mWindow, Vector2i(2, (int)mMD_Pairs.size()*2 - 1)); unsigned int i = 0; - for(auto it = mMD_Pairs.begin(); it != mMD_Pairs.end(); it++) + for(auto it = mMD_Pairs.cbegin(); it != mMD_Pairs.cend(); it++) { mMD_Grid->setEntry(it->first, Vector2i(0, i), false, true); mMD_Grid->setEntry(it->second, Vector2i(1, i), false, it->resize); @@ -80,7 +78,7 @@ ScraperSearchComponent::ScraperSearchComponent(Window* window, SearchType type) void ScraperSearchComponent::onSizeChanged() { mGrid.setSize(mSize); - + if(mSize.x() == 0 || mSize.y() == 0) return; @@ -89,10 +87,10 @@ void ScraperSearchComponent::onSizeChanged() mGrid.setColWidthPerc(0, 0.02f); // looks better when this is higher in auto mode else mGrid.setColWidthPerc(0, 0.01f); - + mGrid.setColWidthPerc(1, 0.25f); mGrid.setColWidthPerc(2, 0.25f); - + // row heights if(mSearchType == ALWAYS_ACCEPT_FIRST_RESULT) // show name mGrid.setRowHeightPerc(0, (mResultName->getFont()->getHeight() * 1.6f) / mGrid.getSize().y()); // result name @@ -114,12 +112,12 @@ void ScraperSearchComponent::onSizeChanged() // metadata resizeMetadata(); - + if(mSearchType != ALWAYS_ACCEPT_FIRST_RESULT) mDescContainer->setSize(mGrid.getColWidth(1)*boxartCellScale + mGrid.getColWidth(2), mResultDesc->getFont()->getHeight() * 3); else mDescContainer->setSize(mGrid.getColWidth(3)*boxartCellScale, mResultDesc->getFont()->getHeight() * 8); - + mResultDesc->setSize(mDescContainer->getSize().x(), 0); // make desc text wrap at edge of container mGrid.onSizeChanged(); @@ -138,7 +136,7 @@ void ScraperSearchComponent::resizeMetadata() // update label fonts float maxLblWidth = 0; - for(auto it = mMD_Pairs.begin(); it != mMD_Pairs.end(); it++) + for(auto it = mMD_Pairs.cbegin(); it != mMD_Pairs.cend(); it++) { it->first->setFont(fontLbl); it->first->setSize(0, 0); @@ -171,8 +169,6 @@ void ScraperSearchComponent::resizeMetadata() void ScraperSearchComponent::updateViewStyle() { - using namespace Eigen; - // unlink description and result list and result name mGrid.removeEntry(mResultName); mGrid.removeEntry(mResultDesc); @@ -205,6 +201,8 @@ void ScraperSearchComponent::updateViewStyle() void ScraperSearchComponent::search(const ScraperSearchParams& params) { + mBlockAccept = true; + mResultList->clear(); mScraperResults.clear(); mThumbnailReq.reset(); @@ -229,26 +227,33 @@ void ScraperSearchComponent::onSearchDone(const std::vector mScraperResults = results; - const int end = results.size() > MAX_SCRAPER_RESULTS ? MAX_SCRAPER_RESULTS : results.size(); // at max display 5 - auto font = Font::get(FONT_SIZE_MEDIUM); unsigned int color = 0x777777FF; - if(end == 0) + if(results.empty()) { - ComponentListRow row; - row.addElement(std::make_shared(mWindow, "NO GAMES FOUND - SKIP", font, color), true); + // Check if the scraper used is still valid + if (!isValidConfiguredScraper()) + { + mWindow->pushGui(new GuiMsgBox(mWindow, Utils::String::toUpper("Configured scraper is no longer available.\nPlease change the scraping source in the settings."), + "FINISH", mSkipCallback)); + } + else + { + ComponentListRow row; + row.addElement(std::make_shared(mWindow, "NO GAMES FOUND - SKIP", font, color), true); - if(mSkipCallback) - row.makeAcceptInputHandler(mSkipCallback); + if(mSkipCallback) + row.makeAcceptInputHandler(mSkipCallback); - mResultList->addRow(row); - mGrid.resetCursor(); + mResultList->addRow(row); + mGrid.resetCursor(); + } }else{ ComponentListRow row; - for(int i = 0; i < end; i++) + for(size_t i = 0; i < results.size(); i++) { row.elements.clear(); - row.addElement(std::make_shared(mWindow, strToUpper(results.at(i).mdl.get("name")), font, color), true); + row.addElement(std::make_shared(mWindow, Utils::String::toUpper(results.at(i).mdl.get("name")), font, color), true); row.makeAcceptInputHandler([this, i] { returnResult(mScraperResults.at(i)); }); mResultList->addRow(row); } @@ -273,7 +278,7 @@ void ScraperSearchComponent::onSearchDone(const std::vector void ScraperSearchComponent::onSearchError(const std::string& error) { LOG(LogInfo) << "ScraperSearchComponent search error: " << error; - mWindow->pushGui(new GuiMsgBox(mWindow, strToUpper(error), + mWindow->pushGui(new GuiMsgBox(mWindow, Utils::String::toUpper(error), "RETRY", std::bind(&ScraperSearchComponent::search, this, mLastSearch), "SKIP", mSkipCallback, "CANCEL", mCancelCallback)); @@ -294,12 +299,12 @@ void ScraperSearchComponent::updateInfoPane() { i = 0; } - + if(i != -1 && (int)mScraperResults.size() > i) { ScraperSearchResult& res = mScraperResults.at(i); - mResultName->setText(strToUpper(res.mdl.get("name"))); - mResultDesc->setText(strToUpper(res.mdl.get("desc"))); + mResultName->setText(Utils::String::toUpper(res.mdl.get("name"))); + mResultDesc->setText(Utils::String::toUpper(res.mdl.get("desc"))); mDescContainer->reset(); mResultThumbnail->setImage(""); @@ -312,12 +317,12 @@ void ScraperSearchComponent::updateInfoPane() } // metadata - mMD_Rating->setValue(strToUpper(res.mdl.get("rating"))); - mMD_ReleaseDate->setValue(strToUpper(res.mdl.get("releasedate"))); - mMD_Developer->setText(strToUpper(res.mdl.get("developer"))); - mMD_Publisher->setText(strToUpper(res.mdl.get("publisher"))); - mMD_Genre->setText(strToUpper(res.mdl.get("genre"))); - mMD_Players->setText(strToUpper(res.mdl.get("players"))); + mMD_Rating->setValue(Utils::String::toUpper(res.mdl.get("rating"))); + mMD_ReleaseDate->setValue(Utils::String::toUpper(res.mdl.get("releasedate"))); + mMD_Developer->setText(Utils::String::toUpper(res.mdl.get("developer"))); + mMD_Publisher->setText(Utils::String::toUpper(res.mdl.get("publisher"))); + mMD_Genre->setText(Utils::String::toUpper(res.mdl.get("genre"))); + mMD_Players->setText(Utils::String::toUpper(res.mdl.get("players"))); mGrid.onSizeChanged(); }else{ mResultName->setText(""); @@ -345,18 +350,16 @@ bool ScraperSearchComponent::input(InputConfig* config, Input input) return GuiComponent::input(config, input); } -void ScraperSearchComponent::render(const Eigen::Affine3f& parentTrans) +void ScraperSearchComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = parentTrans * getTransform(); + Transform4x4f trans = parentTrans * getTransform(); renderChildren(trans); if(mBlockAccept) { Renderer::setMatrix(trans); - Renderer::drawRect(0.f, 0.f, mSize.x(), mSize.y(), 0x00000011); - //Renderer::drawRect((int)mResultList->getPosition().x(), (int)mResultList->getPosition().y(), - // (int)mResultList->getSize().x(), (int)mResultList->getSize().y(), 0x00000011); + Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), 0x00000011, 0x00000011); mBusyAnim.render(trans); } @@ -396,7 +399,7 @@ void ScraperSearchComponent::update(int deltaTime) auto results = mSearchHandle->getResults(); auto statusString = mSearchHandle->getStatusString(); - // we reset here because onSearchDone in auto mode can call mSkipCallback() which can call + // we reset here because onSearchDone in auto mode can call mSkipCallback() which can call // another search() which will set our mSearchHandle to something important mSearchHandle.reset(); @@ -450,9 +453,9 @@ void ScraperSearchComponent::openInputScreen(ScraperSearchParams& params) }; stop(); - mWindow->pushGui(new GuiTextEditPopup(mWindow, "SEARCH FOR", + mWindow->pushGui(new GuiTextEditPopup(mWindow, "SEARCH FOR", // initial value is last search if there was one, otherwise the clean path name - params.nameOverride.empty() ? params.game->getCleanName() : params.nameOverride, + params.nameOverride.empty() ? params.game->getCleanName() : params.nameOverride, searchForFunc, false, "SEARCH")); } @@ -461,7 +464,7 @@ std::vector ScraperSearchComponent::getHelpPrompts() std::vector prompts = mGrid.getHelpPrompts(); if(getSelectedIndex() != -1) prompts.push_back(HelpPrompt("a", "accept result")); - + return prompts; } diff --git a/es-app/src/components/ScraperSearchComponent.h b/es-app/src/components/ScraperSearchComponent.h index f4fb43f518..6af36e7952 100644 --- a/es-app/src/components/ScraperSearchComponent.h +++ b/es-app/src/components/ScraperSearchComponent.h @@ -1,19 +1,18 @@ #pragma once +#ifndef ES_APP_COMPONENTS_SCRAPER_SEARCH_COMPONENT_H +#define ES_APP_COMPONENTS_SCRAPER_SEARCH_COMPONENT_H -#include "GuiComponent.h" -#include "scrapers/Scraper.h" -#include "components/ComponentGrid.h" #include "components/BusyComponent.h" -#include +#include "components/ComponentGrid.h" +#include "scrapers/Scraper.h" +#include "GuiComponent.h" class ComponentList; +class DateTimeEditComponent; class ImageComponent; class RatingComponent; -class TextComponent; -class DateTimeComponent; class ScrollableContainer; -class HttpReq; -class AnimatedImageComponent; +class TextComponent; class ScraperSearchComponent : public GuiComponent { @@ -39,9 +38,9 @@ class ScraperSearchComponent : public GuiComponent bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; std::vector getHelpPrompts() override; - void onSizeChanged() override; + void onSizeChanged() override; void onFocusGained() override; void onFocusLost() override; @@ -70,7 +69,7 @@ class ScraperSearchComponent : public GuiComponent std::shared_ptr mMD_Grid; std::shared_ptr mMD_Rating; - std::shared_ptr mMD_ReleaseDate; + std::shared_ptr mMD_ReleaseDate; std::shared_ptr mMD_Developer; std::shared_ptr mMD_Publisher; std::shared_ptr mMD_Genre; @@ -85,7 +84,7 @@ class ScraperSearchComponent : public GuiComponent MetaDataPair(const std::shared_ptr& f, const std::shared_ptr& s, bool r = true) : first(f), second(s), resize(r) {}; }; - + std::vector mMD_Pairs; SearchType mSearchType; @@ -102,3 +101,5 @@ class ScraperSearchComponent : public GuiComponent BusyComponent mBusyAnim; }; + +#endif // ES_APP_COMPONENTS_SCRAPER_SEARCH_COMPONENT_H diff --git a/es-app/src/components/TextListComponent.h b/es-app/src/components/TextListComponent.h index 8067cd7391..2250769d30 100644 --- a/es-app/src/components/TextListComponent.h +++ b/es-app/src/components/TextListComponent.h @@ -1,17 +1,16 @@ #pragma once +#ifndef ES_APP_COMPONENTS_TEXT_LIST_COMPONENT_H +#define ES_APP_COMPONENTS_TEXT_LIST_COMPONENT_H #include "components/IList.h" -#include "Renderer.h" -#include "resources/Font.h" -#include "InputManager.h" -#include "Sound.h" +#include "math/Misc.h" +#include "utils/StringUtil.h" #include "Log.h" -#include "ThemeData.h" -#include "Util.h" -#include -#include +#include "Settings.h" +#include "Sound.h" #include -#include + +class TextCache; struct TextListData { @@ -31,22 +30,26 @@ class TextListComponent : public IList using IList::getTransform; using IList::mSize; using IList::mCursor; - using IList::Entry; + using IList::mViewportTop; + using IList::mEntry; public: using IList::size; using IList::isScrolling; using IList::stopScrolling; + // flag to re-evaluate list cursor position in visible list section + static constexpr int REFRESH_LIST_CURSOR_POS = -1; + TextListComponent(Window* window); - + bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; void add(const std::string& name, const T& obj, unsigned int colorId); - + enum Alignment { ALIGN_LEFT, @@ -65,53 +68,62 @@ class TextListComponent : public IList it->data.textCache.reset(); } - inline void setUppercase(bool uppercase) + inline void setUppercase(bool uppercase) { - mUppercase = true; + mUppercase = uppercase; for(auto it = mEntries.begin(); it != mEntries.end(); it++) it->data.textCache.reset(); } + inline void setSelectorHeight(float selectorScale) { mSelectorHeight = selectorScale; } + inline void setSelectorOffsetY(float selectorOffsetY) { mSelectorOffsetY = selectorOffsetY; } inline void setSelectorColor(unsigned int color) { mSelectorColor = color; } + inline void setSelectorColorEnd(unsigned int color) { mSelectorColorEnd = color; } + inline void setSelectorColorGradientHorizontal(bool horizontal) { mSelectorColorGradientHorizontal = horizontal; } inline void setSelectedColor(unsigned int color) { mSelectedColor = color; } - inline void setScrollSound(const std::shared_ptr& sound) { mScrollSound = sound; } inline void setColor(unsigned int id, unsigned int color) { mColors[id] = color; } - inline void setSound(const std::shared_ptr& sound) { mScrollSound = sound; } inline void setLineSpacing(float lineSpacing) { mLineSpacing = lineSpacing; } protected: - virtual void onScroll(int amt) { if(mScrollSound) mScrollSound->play(); } - virtual void onCursorChanged(const CursorState& state); + virtual void onScroll(int /*amt*/) override { if(!mScrollSound.empty()) Sound::get(mScrollSound)->play(); } + virtual void onCursorChanged(const CursorState& state) override; private: - static const int MARQUEE_DELAY = 2000; - static const int MARQUEE_SPEED = 8; - static const int MARQUEE_RATE = 1; - int mMarqueeOffset; + int mMarqueeOffset2; int mMarqueeTime; Alignment mAlignment; float mHorizontalMargin; + int viewportTop(); std::function mCursorChangedCallback; std::shared_ptr mFont; bool mUppercase; float mLineSpacing; + float mSelectorHeight; + float mSelectorOffsetY; unsigned int mSelectorColor; + unsigned int mSelectorColorEnd; + bool mSelectorColorGradientHorizontal = true; unsigned int mSelectedColor; - std::shared_ptr mScrollSound; + std::string mScrollSound; static const unsigned int COLOR_ID_COUNT = 2; unsigned int mColors[COLOR_ID_COUNT]; + int mViewportHeight; + int mCursorPrev = -1; + + ImageComponent mSelectorImage; }; template -TextListComponent::TextListComponent(Window* window) : - IList(window) +TextListComponent::TextListComponent(Window* window) : + IList(window), mSelectorImage(window) { mMarqueeOffset = 0; - mMarqueeTime = -MARQUEE_DELAY; + mMarqueeOffset2 = 0; + mMarqueeTime = 0; mHorizontalMargin = 0; mAlignment = ALIGN_CENTER; @@ -119,58 +131,65 @@ TextListComponent::TextListComponent(Window* window) : mFont = Font::get(FONT_SIZE_MEDIUM); mUppercase = false; mLineSpacing = 1.5f; + mSelectorHeight = mFont->getSize() * mLineSpacing; + mSelectorOffsetY = 0; mSelectorColor = 0x000000FF; + mSelectorColorEnd = 0x000000FF; + mSelectorColorGradientHorizontal = true; mSelectedColor = 0; mColors[0] = 0x0000FFFF; mColors[1] = 0x00FF00FF; } template -void TextListComponent::render(const Eigen::Affine3f& parentTrans) +void TextListComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = parentTrans * getTransform(); - + Transform4x4f trans = parentTrans * getTransform(); + std::shared_ptr& font = mFont; if(size() == 0) return; - const float entrySize = round(font->getHeight(mLineSpacing)); + const float entrySize = Math::max(font->getHeight(1.0), (float)font->getSize()) * mLineSpacing; - int startEntry = 0; + // number of listentries that can fit on the screen + mViewportHeight = (int)(mSize.y() / entrySize); - //number of entries that can fit on the screen simultaniously - int screenCount = (int)(mSize.y() / entrySize + 0.5f); - - if(size() >= screenCount) + if(mViewportTop == REFRESH_LIST_CURSOR_POS) { - startEntry = mCursor - screenCount/2; - if(startEntry < 0) - startEntry = 0; - if(startEntry >= size() - screenCount) - startEntry = size() - screenCount; + // returning from screen saver activated game launch or screensaver press 'A' + mViewportTop = mCursor - mViewportHeight/2; + mCursorPrev = -1; // reset to pristine to calc viewportTop() right when jumping to game with 'A' pressed + } + if(mCursor != mCursorPrev) + { + mViewportTop = (size() > mViewportHeight) ? viewportTop() : 0; + mCursorPrev = mCursor; } - float y = 0; - - int listCutoff = startEntry + screenCount; + unsigned int listCutoff = mViewportTop + mViewportHeight; if(listCutoff > size()) listCutoff = size(); - // draw selector bar - if(startEntry < listCutoff) - { + float y = (mSize.y() - (mViewportHeight * entrySize)) * 0.5f; + + if (mSelectorImage.hasImage()) { + mSelectorImage.setPosition(0.f, y + (mCursor - mViewportTop)*entrySize + mSelectorOffsetY, 0.f); + mSelectorImage.render(trans); + } else { Renderer::setMatrix(trans); - Renderer::drawRect(0.f, (mCursor - startEntry)*entrySize + (entrySize - font->getHeight())/2, mSize.x(), font->getHeight(), mSelectorColor); + Renderer::drawRect(0.0f, y + (mCursor - mViewportTop)*entrySize + mSelectorOffsetY, mSize.x(), + mSelectorHeight, mSelectorColor, mSelectorColorEnd, mSelectorColorGradientHorizontal); } // clip to inside margins - Eigen::Vector3f dim(mSize.x(), mSize.y(), 0); + Vector3f dim(mSize.x(), mSize.y(), 0); dim = trans * dim - trans.translation(); - Renderer::pushClipRect(Eigen::Vector2i((int)(trans.translation().x() + mHorizontalMargin), (int)trans.translation().y()), - Eigen::Vector2i((int)(dim.x() - mHorizontalMargin*2), (int)dim.y())); + Renderer::pushClipRect(Vector2i((int)(trans.translation().x() + mHorizontalMargin), (int)trans.translation().y()), + Vector2i((int)(dim.x() - mHorizontalMargin*2), (int)dim.y())); - for(int i = startEntry; i < listCutoff; i++) + for(int i = mViewportTop; i < listCutoff; i++) { typename IList::Entry& entry = mEntries.at((unsigned int)i); @@ -181,11 +200,11 @@ void TextListComponent::render(const Eigen::Affine3f& parentTrans) color = mColors[entry.data.colorId]; if(!entry.data.textCache) - entry.data.textCache = std::unique_ptr(font->buildTextCache(mUppercase ? strToUpper(entry.name) : entry.name, 0, 0, 0x000000FF)); + entry.data.textCache = std::unique_ptr(font->buildTextCache(mUppercase ? Utils::String::toUpper(entry.name) : entry.name, 0, 0, 0x000000FF)); entry.data.textCache->setColor(color); - Eigen::Vector3f offset(0, y, 0); + Vector3f offset(0, y, 0); switch(mAlignment) { @@ -193,27 +212,40 @@ void TextListComponent::render(const Eigen::Affine3f& parentTrans) offset[0] = mHorizontalMargin; break; case ALIGN_CENTER: - offset[0] = (mSize.x() - entry.data.textCache->metrics.size.x()) / 2; - if(offset[0] < 0) - offset[0] = 0; + offset[0] = (int)((mSize.x() - entry.data.textCache->metrics.size.x()) / 2); + if(offset[0] < mHorizontalMargin) + offset[0] = mHorizontalMargin; break; case ALIGN_RIGHT: offset[0] = (mSize.x() - entry.data.textCache->metrics.size.x()); offset[0] -= mHorizontalMargin; - if(offset[0] < 0) - offset[0] = 0; + if(offset[0] < mHorizontalMargin) + offset[0] = mHorizontalMargin; break; } - - if(mCursor == i) - offset[0] -= mMarqueeOffset; - - Eigen::Affine3f drawTrans = trans; - drawTrans.translate(offset); - Renderer::setMatrix(drawTrans); + // render text + Transform4x4f drawTrans = trans; + + // currently selected item text might be scrolling + if((mCursor == i) && (mMarqueeOffset > 0)) + drawTrans.translate(offset - Vector3f((float)mMarqueeOffset, 0, 0)); + else + drawTrans.translate(offset); + + Renderer::setMatrix(drawTrans); font->renderTextCache(entry.data.textCache.get()); - + + // render currently selected item text again if + // marquee is scrolled far enough for it to repeat + if((mCursor == i) && (mMarqueeOffset2 < 0)) + { + drawTrans = trans; + drawTrans.translate(offset - Vector3f((float)mMarqueeOffset2, 0, 0)); + Renderer::setMatrix(drawTrans); + font->renderTextCache(entry.data.textCache.get()); + } + y += entrySize; } @@ -224,41 +256,67 @@ void TextListComponent::render(const Eigen::Affine3f& parentTrans) GuiComponent::renderChildren(trans); } + template -bool TextListComponent::input(InputConfig* config, Input input) +int TextListComponent::viewportTop() { - if(size() > 0) + int viewportTopMax = size() - mViewportHeight; + int topNew = mViewportTop; + + if (mCursorPrev == -1) + mCursorPrev = mCursor; + + int delta = mCursor - mCursorPrev; + + if(Settings::getInstance()->getBool("UseFullscreenPaging")) { - if(input.value != 0) + // delta may be greater/less than +/-mViewportHeight on re-sorting of list + if (delta <= -mViewportHeight || delta >= mViewportHeight + // keep cursor sticky at position unless the user navigates + // to the middle of the viewport + || delta < 0 && mCursor - mViewportTop < mViewportHeight/2 + || delta > 0 && mCursor - mViewportTop > mViewportHeight/2) { - if(config->isMappedTo("down", input)) - { - listInput(1); - return true; - } + topNew += delta; + } + // no match above will place the cursor more towards the middle + } + else + // put cursor in middle of visible list + topNew = mCursor - mViewportHeight/2; - if(config->isMappedTo("up", input)) - { - listInput(-1); - return true; - } - if(config->isMappedTo("pagedown", input)) - { - listInput(10); - return true; - } + if (mCursor <= mViewportHeight/2) + topNew = 0; + else if (mCursor >= viewportTopMax + mViewportHeight/2) + topNew = viewportTopMax; + + return topNew; +} - if(config->isMappedTo("pageup", input)) +template +bool TextListComponent::input(InputConfig* config, Input input) +{ + bool isSingleStep = config->isMappedLike("down", input) || config->isMappedLike("up", input); + bool isPageStep = config->isMappedLike("rightshoulder", input) || config->isMappedLike("leftshoulder", input); + + if(size() > 0 && (isSingleStep || isPageStep)) + { + if(input.value != 0) + { + int delta; + mCursorPrev = mCursor; + if(isSingleStep) + delta = config->isMappedLike("down", input) ? 1 : -1; + else { - listInput(-10); - return true; + delta = Settings::getInstance()->getBool("UseFullscreenPaging") ? mViewportHeight : 10; + if (config->isMappedLike("leftshoulder", input)) + delta = -delta; } + listInput(delta); + return true; }else{ - if(config->isMappedTo("down", input) || config->isMappedTo("up", input) || - config->isMappedTo("pagedown", input) || config->isMappedTo("pageup", input)) - { - stopScrolling(); - } + stopScrolling(); } } @@ -269,22 +327,38 @@ template void TextListComponent::update(int deltaTime) { listUpdate(deltaTime); + if(!isScrolling() && size() > 0) { - //if we're not scrolling and this object's text goes outside our size, marquee it! - const std::string& text = mEntries.at((unsigned int)mCursor).name; + // always reset the marquee offsets + mMarqueeOffset = 0; + mMarqueeOffset2 = 0; - Eigen::Vector2f textSize = mFont->sizeText(text); + // if we're not scrolling and this object's text goes outside our size, marquee it! + auto name = mEntries.at((unsigned int)mCursor).name; + const float textLength = mFont->sizeText(mUppercase ? Utils::String::toUpper(name) : name).x(); + const float limit = mSize.x() - mHorizontalMargin * 2; - //it's long enough to marquee - if(textSize.x() - mMarqueeOffset > mSize.x() - 12 - (mAlignment != ALIGN_CENTER ? mHorizontalMargin : 0)) + if(textLength > limit) { + // loop + // pixels per second ( based on nes-mini font at 1920x1080 to produce a speed of 200 ) + const float speed = mFont->sizeText("ABCDEFGHIJKLMNOPQRSTUVWXYZ").x() * 0.247f; + const float delay = 3000; + const float scrollLength = textLength; + const float returnLength = speed * 1.5f; + const float scrollTime = (scrollLength * 1000) / speed; + const float returnTime = (returnLength * 1000) / speed; + const int maxTime = (int)(delay + scrollTime + returnTime); + mMarqueeTime += deltaTime; - while(mMarqueeTime > MARQUEE_SPEED) - { - mMarqueeOffset += MARQUEE_RATE; - mMarqueeTime -= MARQUEE_SPEED; - } + while(mMarqueeTime > maxTime) + mMarqueeTime -= maxTime; + + mMarqueeOffset = (int)(Math::Scroll::loop(delay, scrollTime + returnTime, (float)mMarqueeTime, scrollLength + returnLength)); + + if(mMarqueeOffset > (scrollLength - (limit - returnLength))) + mMarqueeOffset2 = (int)(mMarqueeOffset - (scrollLength + returnLength)); } } @@ -308,7 +382,8 @@ template void TextListComponent::onCursorChanged(const CursorState& state) { mMarqueeOffset = 0; - mMarqueeTime = -MARQUEE_DELAY; + mMarqueeOffset2 = 0; + mMarqueeTime = 0; if(mCursorChangedCallback) mCursorChangedCallback(state); @@ -317,6 +392,11 @@ void TextListComponent::onCursorChanged(const CursorState& state) template void TextListComponent::applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) { + if(Settings::getInstance()->getBool("UseFullscreenPaging")) + { + mViewportTop = REFRESH_LIST_CURSOR_POS; + } + GuiComponent::applyTheme(theme, view, element, properties); const ThemeData::ThemeElement* elem = theme->getElement(view, element, "textlist"); @@ -327,7 +407,14 @@ void TextListComponent::applyTheme(const std::shared_ptr& theme, c if(properties & COLOR) { if(elem->has("selectorColor")) + { setSelectorColor(elem->get("selectorColor")); + setSelectorColorEnd(elem->get("selectorColor")); + } + if (elem->has("selectorColorEnd")) + setSelectorColorEnd(elem->get("selectorColorEnd")); + if (elem->has("selectorGradientType")) + setSelectorColorGradientHorizontal(!(elem->get("selectorGradientType").compare("horizontal"))); if(elem->has("selectedColor")) setSelectedColor(elem->get("selectedColor")); if(elem->has("primaryColor")) @@ -337,9 +424,11 @@ void TextListComponent::applyTheme(const std::shared_ptr& theme, c } setFont(Font::getFromTheme(elem, properties, mFont)); - + const float selectorHeight = Math::max(mFont->getHeight(1.0), (float)mFont->getSize()) * mLineSpacing; + setSelectorHeight(selectorHeight); + if(properties & SOUND && elem->has("scrollSound")) - setSound(Sound::get(elem->get("scrollSound"))); + mScrollSound = elem->get("scrollSound"); if(properties & ALIGNMENT) { @@ -364,6 +453,34 @@ void TextListComponent::applyTheme(const std::shared_ptr& theme, c if(properties & FORCE_UPPERCASE && elem->has("forceUppercase")) setUppercase(elem->get("forceUppercase")); - if(properties & LINE_SPACING && elem->has("lineSpacing")) - setLineSpacing(elem->get("lineSpacing")); + if(properties & LINE_SPACING) + { + if(elem->has("lineSpacing")) + setLineSpacing(elem->get("lineSpacing")); + if(elem->has("selectorHeight")) + { + setSelectorHeight(elem->get("selectorHeight") * Renderer::getScreenHeight()); + } + if(elem->has("selectorOffsetY")) + { + float scale = this->mParent ? this->mParent->getSize().y() : (float)Renderer::getScreenHeight(); + setSelectorOffsetY(elem->get("selectorOffsetY") * scale); + } else { + setSelectorOffsetY(0.0); + } + } + + if (elem->has("selectorImagePath")) + { + std::string path = elem->get("selectorImagePath"); + bool tile = elem->has("selectorImageTile") && elem->get("selectorImageTile"); + mSelectorImage.setImage(path, tile); + mSelectorImage.setSize(mSize.x(), mSelectorHeight); + mSelectorImage.setColorShift(mSelectorColor); + mSelectorImage.setColorShiftEnd(mSelectorColorEnd); + } else { + mSelectorImage.setImage(""); + } } + +#endif // ES_APP_COMPONENTS_TEXT_LIST_COMPONENT_H diff --git a/data/es_icon.ico b/es-app/src/es_icon.ico similarity index 100% rename from data/es_icon.ico rename to es-app/src/es_icon.ico diff --git a/es-app/src/guis/GuiCollectionSystemsOptions.cpp b/es-app/src/guis/GuiCollectionSystemsOptions.cpp new file mode 100644 index 0000000000..1019e70780 --- /dev/null +++ b/es-app/src/guis/GuiCollectionSystemsOptions.cpp @@ -0,0 +1,294 @@ +#include + +#include "guis/GuiCollectionSystemsOptions.h" + +#include "components/OptionListComponent.h" +#include "components/SwitchComponent.h" +#include "guis/GuiInfoPopup.h" +#include "guis/GuiRandomCollectionOptions.h" +#include "guis/GuiSettings.h" +#include "guis/GuiTextEditPopup.h" +#include "utils/StringUtil.h" +#include "views/ViewController.h" +#include "CollectionSystemManager.h" +#include "Window.h" + +GuiCollectionSystemsOptions::GuiCollectionSystemsOptions(Window* window) : GuiComponent(window), mMenu(window, "GAME COLLECTION SETTINGS") +{ + initializeMenu(); +} + +void GuiCollectionSystemsOptions::initializeMenu() +{ + addChild(&mMenu); + + // get collections + addSystemsToMenu(); + + // manage random collection + addEntry("RANDOM GAME COLLECTION SETTINGS", 0x777777FF, true, [this] { openRandomCollectionSettings(); }); + + + ComponentListRow row; + if(CollectionSystemManager::get()->isEditing()) + { + row.addElement(std::make_shared(mWindow, "FINISH EDITING '" + Utils::String::toUpper(CollectionSystemManager::get()->getEditingCollection()) + "' COLLECTION", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.makeAcceptInputHandler(std::bind(&GuiCollectionSystemsOptions::exitEditMode, this)); + mMenu.addRow(row); + } + else + { + // add "Create New Custom Collection from Theme" + std::vector unusedFolders = CollectionSystemManager::get()->getUnusedSystemsFromTheme(); + if (unusedFolders.size() > 0) + { + addEntry("CREATE NEW CUSTOM COLLECTION FROM THEME", 0x777777FF, true, + [this, unusedFolders] { + auto s = new GuiSettings(mWindow, "SELECT THEME FOLDER"); + std::shared_ptr< OptionListComponent > folderThemes = std::make_shared< OptionListComponent >(mWindow, "SELECT THEME FOLDER", true); + + // add Custom Systems + for(auto it = unusedFolders.cbegin() ; it != unusedFolders.cend() ; it++ ) + { + ComponentListRow row; + std::string name = *it; + + std::function createCollectionCall = [name, this, s] { + createCollection(name); + }; + row.makeAcceptInputHandler(createCollectionCall); + + auto themeFolder = std::make_shared(mWindow, Utils::String::toUpper(name), Font::get(FONT_SIZE_SMALL), 0x777777FF); + row.addElement(themeFolder, true); + s->addRow(row); + } + mWindow->pushGui(s); + }); + } + + row.addElement(std::make_shared(mWindow, "CREATE NEW CUSTOM COLLECTION", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + auto createCustomCollection = [this](const std::string& newVal) { + std::string name = newVal; + // we need to store the first Gui and remove it, as it'll be deleted by the actual Gui + Window* window = mWindow; + GuiComponent* topGui = window->peekGui(); + window->removeGui(topGui); + createCollection(name); + }; + row.makeAcceptInputHandler([this, createCustomCollection] { + mWindow->pushGui(new GuiTextEditPopup(mWindow, "New Collection Name", "", createCustomCollection, false)); + }); + mMenu.addRow(row); + } + + bundleCustomCollections = std::make_shared(mWindow); + bundleCustomCollections->setState(Settings::getInstance()->getBool("UseCustomCollectionsSystem")); + mMenu.addWithLabel("GROUP UNTHEMED CUSTOM COLLECTIONS", bundleCustomCollections); + + sortAllSystemsSwitch = std::make_shared(mWindow); + sortAllSystemsSwitch->setState(Settings::getInstance()->getBool("SortAllSystems")); + mMenu.addWithLabel("SORT CUSTOM COLLECTIONS AND SYSTEMS", sortAllSystemsSwitch); + + toggleSystemNameInCollections = std::make_shared(mWindow); + toggleSystemNameInCollections->setState(Settings::getInstance()->getBool("CollectionShowSystemInfo")); + mMenu.addWithLabel("SHOW SYSTEM NAME IN COLLECTIONS", toggleSystemNameInCollections); + + // double press to remove from favorites + doublePressToRemoveFavs = std::make_shared(mWindow); + doublePressToRemoveFavs->setState(Settings::getInstance()->getBool("DoublePressRemovesFromFavs")); + mMenu.addWithLabel("PRESS (Y) TWICE TO REMOVE FROM FAVS./COLL.", doublePressToRemoveFavs); + + + // Add option to select default collection for screensaver + defaultScreenSaverCollection = std::make_shared< OptionListComponent >(mWindow, "ADD/REMOVE GAMES WHILE SCREENSAVER TO", false); + // Add default option + std::string defaultScreenSaverCollectionName = Settings::getInstance()->getString("DefaultScreenSaverCollection"); + defaultScreenSaverCollection->add("", "", defaultScreenSaverCollectionName == ""); + + std::map customSystems = CollectionSystemManager::get()->getCustomCollectionSystems(); + // add all enabled Custom Systems + for(std::map::const_iterator it = customSystems.cbegin() ; it != customSystems.cend() ; it++ ) + { + if (it->second.isEnabled) + defaultScreenSaverCollection->add(it->second.decl.longName, it->second.decl.name, defaultScreenSaverCollectionName == it->second.decl.name); + } + + mMenu.addWithLabel("ADD/REMOVE GAMES WHILE SCREENSAVER TO", defaultScreenSaverCollection); + + mMenu.addButton("BACK", "back", std::bind(&GuiCollectionSystemsOptions::applySettings, this)); + + mMenu.setPosition((Renderer::getScreenWidth() - mMenu.getSize().x()) / 2, Renderer::getScreenHeight() * 0.15f); +} + +void GuiCollectionSystemsOptions::addEntry(const char* name, unsigned int color, bool add_arrow, const std::function& func) +{ + std::shared_ptr font = Font::get(FONT_SIZE_MEDIUM); + + // populate the list + ComponentListRow row; + row.addElement(std::make_shared(mWindow, name, font, color), true); + + if(add_arrow) + { + std::shared_ptr bracket = makeArrow(mWindow); + row.addElement(bracket, false); + } + + row.makeAcceptInputHandler(func); + + mMenu.addRow(row); +} + +void GuiCollectionSystemsOptions::createCollection(std::string inName) +{ + CollectionSystemManager* collSysMgr = CollectionSystemManager::get(); + std::string name = collSysMgr->getValidNewCollectionName(inName); + + SystemData* newSys = collSysMgr->addNewCustomCollection(name, true); + if (!collSysMgr->saveCustomCollection(newSys)) { + GuiInfoPopup* s = new GuiInfoPopup(mWindow, "Failed creating '" + Utils::String::toUpper(name) + "' Collection. See log for details.", 8000); + mWindow->setInfoPopup(s); + return; + } + customOptionList->add(name, name, true); + std::string outAuto = Utils::String::vectorToDelimitedString(autoOptionList->getSelectedObjects(), ","); + std::string outCustom = Utils::String::vectorToDelimitedString(customOptionList->getSelectedObjects(), ","); + updateSettings(outAuto, outCustom); + ViewController::get()->goToSystemView(newSys); + + Window* window = mWindow; + collSysMgr->setEditMode(name); + while(window->peekGui() && window->peekGui() != ViewController::get()) + delete window->peekGui(); +} + +void GuiCollectionSystemsOptions::openRandomCollectionSettings() +{ + mWindow->pushGui(new GuiRandomCollectionOptions(mWindow)); +} + +void GuiCollectionSystemsOptions::exitEditMode() +{ + CollectionSystemManager::get()->exitEditMode(); + applySettings(); +} + +GuiCollectionSystemsOptions::~GuiCollectionSystemsOptions() +{ + +} + +void GuiCollectionSystemsOptions::addSystemsToMenu() +{ + + std::map autoSystems = CollectionSystemManager::get()->getAutoCollectionSystems(); + + autoOptionList = std::make_shared< OptionListComponent >(mWindow, "SELECT COLLECTIONS", true); + + // add Auto Systems + for(std::map::const_iterator it = autoSystems.cbegin() ; it != autoSystems.cend() ; it++ ) + { + autoOptionList->add(it->second.decl.longName, it->second.decl.name, it->second.isEnabled); + } + mMenu.addWithLabel("AUTOMATIC GAME COLLECTIONS", autoOptionList); + + std::map customSystems = CollectionSystemManager::get()->getCustomCollectionSystems(); + + customOptionList = std::make_shared< OptionListComponent >(mWindow, "SELECT COLLECTIONS", true); + + // add Custom Systems + for(std::map::const_iterator it = customSystems.cbegin() ; it != customSystems.cend() ; it++ ) + { + customOptionList->add(it->second.decl.longName, it->second.decl.name, it->second.isEnabled); + } + mMenu.addWithLabel("CUSTOM GAME COLLECTIONS", customOptionList); +} + +void GuiCollectionSystemsOptions::applySettings() +{ + std::string outAuto = Utils::String::vectorToDelimitedString(autoOptionList->getSelectedObjects(), ","); + std::string prevAuto = Settings::getInstance()->getString("CollectionSystemsAuto"); + std::string outCustom = Utils::String::vectorToDelimitedString(customOptionList->getSelectedObjects(), ","); + std::string prevCustom = Settings::getInstance()->getString("CollectionSystemsCustom"); + bool outSort = sortAllSystemsSwitch->getState(); + bool prevSort = Settings::getInstance()->getBool("SortAllSystems"); + bool outBundle = bundleCustomCollections->getState(); + bool prevBundle = Settings::getInstance()->getBool("UseCustomCollectionsSystem"); + bool prevShow = Settings::getInstance()->getBool("CollectionShowSystemInfo"); + bool outShow = toggleSystemNameInCollections->getState(); + + // check if custom collection is still enabled for 'collection during screensaver'. + // if not set 'collection during screensaver' to "" which renders as + std::string enabledCollectionName = ""; + std::vector selection = defaultScreenSaverCollection->getSelectedObjects(); + if (selection.size() > 0) + { + std::string selectedCollection = selection.at(0); + if (selectedCollection != "") + { + std::vector enabledCollections = customOptionList->getSelectedObjects(); + for(auto nameIt = enabledCollections.begin(); nameIt != enabledCollections.end(); nameIt++) + { + if(*nameIt == selectedCollection) + { + enabledCollectionName = selectedCollection; + break; + } + } + } + } + + Settings::getInstance()->setString("DefaultScreenSaverCollection", enabledCollectionName); + Settings::getInstance()->setBool("DoublePressRemovesFromFavs", doublePressToRemoveFavs->getState()); + + bool needRefreshCollectionSettings = prevAuto != outAuto || prevCustom != outCustom || outSort != prevSort || outBundle != prevBundle + || prevShow != outShow; + + if (needRefreshCollectionSettings) + { + updateSettings(outAuto, outCustom); + } + else + { + Settings::getInstance()->saveFile(); + } + delete this; +} + +void GuiCollectionSystemsOptions::updateSettings(std::string newAutoSettings, std::string newCustomSettings) +{ + Settings::getInstance()->setString("CollectionSystemsAuto", newAutoSettings); + Settings::getInstance()->setString("CollectionSystemsCustom", newCustomSettings); + Settings::getInstance()->setBool("SortAllSystems", sortAllSystemsSwitch->getState()); + Settings::getInstance()->setBool("UseCustomCollectionsSystem", bundleCustomCollections->getState()); + Settings::getInstance()->setBool("CollectionShowSystemInfo", toggleSystemNameInCollections->getState()); + + Settings::getInstance()->saveFile(); + + CollectionSystemManager::get()->loadEnabledListFromSettings(); + CollectionSystemManager::get()->updateSystemsList(); + ViewController::get()->goToStart(); + ViewController::get()->reloadAll(); +} + +bool GuiCollectionSystemsOptions::input(InputConfig* config, Input input) +{ + bool consumed = GuiComponent::input(config, input); + if(consumed) + return true; + + if(config->isMappedTo("b", input) && input.value != 0) + { + applySettings(); + } + + + return false; +} + +std::vector GuiCollectionSystemsOptions::getHelpPrompts() +{ + std::vector prompts = mMenu.getHelpPrompts(); + prompts.push_back(HelpPrompt("b", "back")); + return prompts; +} diff --git a/es-app/src/guis/GuiCollectionSystemsOptions.h b/es-app/src/guis/GuiCollectionSystemsOptions.h new file mode 100644 index 0000000000..d8dae7b303 --- /dev/null +++ b/es-app/src/guis/GuiCollectionSystemsOptions.h @@ -0,0 +1,41 @@ +#pragma once +#ifndef ES_APP_GUIS_GUI_COLLECTION_SYSTEM_OPTIONS_H +#define ES_APP_GUIS_GUI_COLLECTION_SYSTEM_OPTIONS_H + +#include "components/MenuComponent.h" + +template +class OptionListComponent; +class SwitchComponent; +class SystemData; + +class GuiCollectionSystemsOptions : public GuiComponent +{ +public: + GuiCollectionSystemsOptions(Window* window); + ~GuiCollectionSystemsOptions(); + bool input(InputConfig* config, Input input) override; + + virtual std::vector getHelpPrompts() override; + +private: + void initializeMenu(); + void applySettings(); + void addSystemsToMenu(); + void addEntry(const char* name, unsigned int color, bool add_arrow, const std::function& func); + void updateSettings(std::string newAutoSettings, std::string newCustomSettings); + void createCollection(std::string inName); + void exitEditMode(); + void openRandomCollectionSettings(); + std::shared_ptr< OptionListComponent > autoOptionList; + std::shared_ptr< OptionListComponent > customOptionList; + std::shared_ptr< OptionListComponent > defaultScreenSaverCollection; + std::shared_ptr sortAllSystemsSwitch; + std::shared_ptr bundleCustomCollections; + std::shared_ptr toggleSystemNameInCollections; + std::shared_ptr doublePressToRemoveFavs; + MenuComponent mMenu; + SystemData* mSystem; +}; + +#endif // ES_APP_GUIS_GUI_COLLECTION_SYSTEM_OPTIONS_H diff --git a/es-app/src/guis/GuiFastSelect.cpp b/es-app/src/guis/GuiFastSelect.cpp index 31db350414..4912c70438 100644 --- a/es-app/src/guis/GuiFastSelect.cpp +++ b/es-app/src/guis/GuiFastSelect.cpp @@ -1,11 +1,12 @@ #include "guis/GuiFastSelect.h" -#include "ThemeData.h" + +#include "views/gamelist/IGameListView.h" #include "FileSorts.h" #include "SystemData.h" static const std::string LETTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; -GuiFastSelect::GuiFastSelect(Window* window, IGameListView* gamelist) : GuiComponent(window), +GuiFastSelect::GuiFastSelect(Window* window, IGameListView* gamelist) : GuiComponent(window), mBackground(window), mSortText(window), mLetterText(window), mGameList(gamelist) { setPosition(Renderer::getScreenWidth() * 0.2f, Renderer::getScreenHeight() * 0.2f); @@ -19,14 +20,14 @@ GuiFastSelect::GuiFastSelect(Window* window, IGameListView* gamelist) : GuiCompo addChild(&mBackground); mLetterText.setSize(mSize.x(), mSize.y() * 0.75f); - mLetterText.setAlignment(ALIGN_CENTER); + mLetterText.setHorizontalAlignment(ALIGN_CENTER); mLetterText.applyTheme(theme, "fastSelect", "letter", FONT_PATH | COLOR); // TODO - set font size addChild(&mLetterText); mSortText.setPosition(0, mSize.y() * 0.75f); mSortText.setSize(mSize.x(), mSize.y() * 0.25f); - mSortText.setAlignment(ALIGN_CENTER); + mSortText.setHorizontalAlignment(ALIGN_CENTER); mSortText.applyTheme(theme, "fastSelect", "subtext", FONT_PATH | COLOR); // TODO - set font size addChild(&mSortText); @@ -54,7 +55,7 @@ bool GuiFastSelect::input(InputConfig* config, Input input) return true; } - if(config->isMappedTo("up", input)) + if(config->isMappedLike("up", input)) { if(input.value != 0) setScrollDir(-1); @@ -62,7 +63,7 @@ bool GuiFastSelect::input(InputConfig* config, Input input) setScrollDir(0); return true; - }else if(config->isMappedTo("down", input)) + }else if(config->isMappedLike("down", input)) { if(input.value != 0) setScrollDir(1); @@ -70,16 +71,16 @@ bool GuiFastSelect::input(InputConfig* config, Input input) setScrollDir(0); return true; - }else if(config->isMappedTo("left", input) && input.value != 0) + }else if(config->isMappedLike("left", input) && input.value != 0) { mSortId = (mSortId + 1) % FileSorts::SortTypes.size(); updateSortText(); return true; - }else if(config->isMappedTo("right", input) && input.value != 0) + }else if(config->isMappedLike("right", input) && input.value != 0) { mSortId--; if(mSortId < 0) - mSortId += FileSorts::SortTypes.size(); + mSortId += (int)FileSorts::SortTypes.size(); updateSortText(); return true; @@ -115,7 +116,7 @@ void GuiFastSelect::scroll() mLetterId += mScrollDir; if(mLetterId < 0) mLetterId += LETTERS.length(); - else if(mLetterId >= (int)LETTERS.length()) + else if(mLetterId >= LETTERS.length()) mLetterId -= LETTERS.length(); mLetterText.setText(LETTERS.substr(mLetterId, 1)); @@ -141,11 +142,11 @@ void GuiFastSelect::updateGameListSort() void GuiFastSelect::updateGameListCursor() { - const std::vector& list = mGameList->getCursor()->getParent()->getChildren(); + const std::vector& list = mGameList->getCursor()->getParent()->getChildrenListToDisplay(); // only skip by letter when the sort mode is alphabetical const FileData::SortType& sort = FileSorts::SortTypes.at(mSortId); - if(sort.comparisonFunction != &FileSorts::compareFileName) + if(sort.comparisonFunction != &FileSorts::compareName) return; // find the first entry in the list that either exactly matches our target letter or is beyond our target letter diff --git a/es-app/src/guis/GuiFastSelect.h b/es-app/src/guis/GuiFastSelect.h index 012c06de62..75e4949065 100644 --- a/es-app/src/guis/GuiFastSelect.h +++ b/es-app/src/guis/GuiFastSelect.h @@ -1,10 +1,12 @@ #pragma once - -#include "GuiComponent.h" -#include "views/gamelist/IGameListView.h" +#ifndef ES_APP_GUIS_GUI_FAST_SELECT_H +#define ES_APP_GUIS_GUI_FAST_SELECT_H #include "components/NinePatchComponent.h" #include "components/TextComponent.h" +#include "GuiComponent.h" + +class IGameListView; class GuiFastSelect : public GuiComponent { @@ -22,7 +24,7 @@ class GuiFastSelect : public GuiComponent void updateSortText(); int mSortId; - int mLetterId; + size_t mLetterId; int mScrollDir; int mScrollAccumulator; @@ -33,3 +35,5 @@ class GuiFastSelect : public GuiComponent IGameListView* mGameList; }; + +#endif // ES_APP_GUIS_GUI_FAST_SELECT_H diff --git a/es-app/src/guis/GuiGameScraper.cpp b/es-app/src/guis/GuiGameScraper.cpp index a54304c774..d8ebcb7160 100644 --- a/es-app/src/guis/GuiGameScraper.cpp +++ b/es-app/src/guis/GuiGameScraper.cpp @@ -1,57 +1,57 @@ #include "guis/GuiGameScraper.h" -#include "guis/GuiTextEditPopup.h" -#include "components/TextComponent.h" + #include "components/ButtonComponent.h" #include "components/MenuComponent.h" -#include "scrapers/Scraper.h" -#include "Renderer.h" -#include "Log.h" -#include "Settings.h" +#include "components/TextComponent.h" +#include "FileData.h" +#include "PowerSaver.h" +#include "SystemData.h" -GuiGameScraper::GuiGameScraper(Window* window, ScraperSearchParams params, std::function doneFunc) : GuiComponent(window), - mGrid(window, Eigen::Vector2i(1, 7)), +GuiGameScraper::GuiGameScraper(Window* window, ScraperSearchParams params, std::function doneFunc) : GuiComponent(window), + mGrid(window, Vector2i(1, 7)), mBox(window, ":/frame.png"), mSearchParams(params), mClose(false) { + PowerSaver::pause(); addChild(&mBox); addChild(&mGrid); // row 0 is a spacer - mGameName = std::make_shared(mWindow, strToUpper(mSearchParams.game->getPath().filename().generic_string()), + mGameName = std::make_shared(mWindow, Utils::String::toUpper(Utils::FileSystem::getFileName(mSearchParams.game->getPath())), Font::get(FONT_SIZE_MEDIUM), 0x777777FF, ALIGN_CENTER); - mGrid.setEntry(mGameName, Eigen::Vector2i(0, 1), false, true); + mGrid.setEntry(mGameName, Vector2i(0, 1), false, true); // row 2 is a spacer - mSystemName = std::make_shared(mWindow, strToUpper(mSearchParams.system->getFullName()), Font::get(FONT_SIZE_SMALL), + mSystemName = std::make_shared(mWindow, Utils::String::toUpper(mSearchParams.system->getFullName()), Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_CENTER); - mGrid.setEntry(mSystemName, Eigen::Vector2i(0, 3), false, true); + mGrid.setEntry(mSystemName, Vector2i(0, 3), false, true); // row 4 is a spacer // ScraperSearchComponent mSearch = std::make_shared(window, ScraperSearchComponent::NEVER_AUTO_ACCEPT); - mGrid.setEntry(mSearch, Eigen::Vector2i(0, 5), true); + mGrid.setEntry(mSearch, Vector2i(0, 5), true); // buttons std::vector< std::shared_ptr > buttons; - buttons.push_back(std::make_shared(mWindow, "INPUT", "search", [&] { - mSearch->openInputScreen(mSearchParams); - mGrid.resetCursor(); + buttons.push_back(std::make_shared(mWindow, "INPUT", "search", [&] { + mSearch->openInputScreen(mSearchParams); + mGrid.resetCursor(); })); buttons.push_back(std::make_shared(mWindow, "CANCEL", "cancel", [&] { delete this; })); mButtonGrid = makeButtonGrid(mWindow, buttons); - mGrid.setEntry(mButtonGrid, Eigen::Vector2i(0, 6), true, false); + mGrid.setEntry(mButtonGrid, Vector2i(0, 6), true, false); // we call this->close() instead of just delete this; in the accept callback: // this is because of how GuiComponent::update works. if it was just delete this, this would happen when the metadata resolver is done: // GuiGameScraper::update() // GuiComponent::update() - // it = mChildren.begin(); + // it = mChildren.cbegin(); // mBox::update() // it++; // mSearchComponent::update() @@ -61,7 +61,7 @@ GuiGameScraper::GuiGameScraper(Window* window, ScraperSearchParams params, std:: // so instead we do this: // GuiGameScraper::update() // GuiComponent::update() - // it = mChildren.begin(); + // it = mChildren.cbegin(); // mBox::update() // it++; // mSearchComponent::update() @@ -81,7 +81,7 @@ GuiGameScraper::GuiGameScraper(Window* window, ScraperSearchParams params, std:: void GuiGameScraper::onSizeChanged() { - mBox.fitTo(mSize, Eigen::Vector3f::Zero(), Eigen::Vector2f(-32, -32)); + mBox.fitTo(mSize, Vector3f::Zero(), Vector2f(-32, -32)); mGrid.setRowHeightPerc(0, 0.04f, false); mGrid.setRowHeightPerc(1, mGameName->getFont()->getLetterHeight() / mSize.y(), false); // game name @@ -96,6 +96,7 @@ bool GuiGameScraper::input(InputConfig* config, Input input) { if(config->isMappedTo("b", input) && input.value) { + PowerSaver::resume(); delete this; return true; } @@ -119,4 +120,4 @@ std::vector GuiGameScraper::getHelpPrompts() void GuiGameScraper::close() { mClose = true; -} \ No newline at end of file +} diff --git a/es-app/src/guis/GuiGameScraper.h b/es-app/src/guis/GuiGameScraper.h index 354aba7e10..7ddc6bff48 100644 --- a/es-app/src/guis/GuiGameScraper.h +++ b/es-app/src/guis/GuiGameScraper.h @@ -1,8 +1,10 @@ #pragma once +#ifndef ES_APP_GUIS_GUI_GAME_SCRAPER_H +#define ES_APP_GUIS_GUI_GAME_SCRAPER_H -#include "GuiComponent.h" -#include "components/ScraperSearchComponent.h" #include "components/NinePatchComponent.h" +#include "components/ScraperSearchComponent.h" +#include "GuiComponent.h" class GuiGameScraper : public GuiComponent { @@ -12,7 +14,7 @@ class GuiGameScraper : public GuiComponent void onSizeChanged() override; bool input(InputConfig* config, Input input) override; - void update(int deltaTime); + void update(int deltaTime) override; virtual std::vector getHelpPrompts() override; private: @@ -31,3 +33,5 @@ class GuiGameScraper : public GuiComponent std::function mCancelFunc; }; + +#endif // ES_APP_GUIS_GUI_GAME_SCRAPER_H diff --git a/es-app/src/guis/GuiGamelistFilter.cpp b/es-app/src/guis/GuiGamelistFilter.cpp new file mode 100644 index 0000000000..f7a68b67ca --- /dev/null +++ b/es-app/src/guis/GuiGamelistFilter.cpp @@ -0,0 +1,117 @@ +#include "guis/GuiGamelistFilter.h" + +#include "components/OptionListComponent.h" +#include "views/UIModeController.h" +#include "SystemData.h" + +GuiGamelistFilter::GuiGamelistFilter(Window* window, SystemData* system) : GuiComponent(window), mMenu(window, "FILTER GAMELIST BY"), mSystem(system) +{ + initializeMenu(); +} + +void GuiGamelistFilter::initializeMenu() +{ + addChild(&mMenu); + + // get filters from system + + mFilterIndex = mSystem->getIndex(); + + ComponentListRow row; + + // show filtered menu + row.elements.clear(); + row.addElement(std::make_shared(mWindow, "RESET ALL FILTERS", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.makeAcceptInputHandler(std::bind(&GuiGamelistFilter::resetAllFilters, this)); + mMenu.addRow(row); + row.elements.clear(); + + addFiltersToMenu(); + + mMenu.addButton("BACK", "back", std::bind(&GuiGamelistFilter::applyFilters, this)); + + mMenu.setPosition((Renderer::getScreenWidth() - mMenu.getSize().x()) / 2, Renderer::getScreenHeight() * 0.15f); +} + +void GuiGamelistFilter::resetAllFilters() +{ + mFilterIndex->resetFilters(); + for (std::map >>::const_iterator it = mFilterOptions.cbegin(); it != mFilterOptions.cend(); ++it ) { + std::shared_ptr< OptionListComponent > optionList = it->second; + optionList->selectNone(); + } +} + +GuiGamelistFilter::~GuiGamelistFilter() +{ + mFilterOptions.clear(); +} + +void GuiGamelistFilter::addFiltersToMenu() +{ + std::vector decls = mFilterIndex->getFilterDataDecls(); + + int skip = 0; + if (!UIModeController::getInstance()->isUIModeFull()) + skip = 1; + if (UIModeController::getInstance()->isUIModeKid()) + skip = 2; + + for (std::vector::const_iterator it = decls.cbegin(); it != decls.cend()-skip; ++it ) { + + FilterIndexType type = (*it).type; // type of filter + std::map* allKeys = (*it).allIndexKeys; // all possible filters for this type + std::string menuLabel = (*it).menuLabel; // text to show in menu + std::shared_ptr< OptionListComponent > optionList; + + + // add filters (with first one selected) + ComponentListRow row; + + // add genres + optionList = std::make_shared< OptionListComponent >(mWindow, menuLabel, true); + for(auto it: *allKeys) + { + optionList->add(it.first, it.first, mFilterIndex->isKeyBeingFilteredBy(it.first, type)); + } + if (allKeys->size() > 0) + mMenu.addWithLabel(menuLabel, optionList); + + mFilterOptions[type] = optionList; + } +} + +void GuiGamelistFilter::applyFilters() +{ + std::vector decls = mFilterIndex->getFilterDataDecls(); + for (std::map >>::const_iterator it = mFilterOptions.cbegin(); it != mFilterOptions.cend(); ++it ) { + std::shared_ptr< OptionListComponent > optionList = it->second; + std::vector filters = optionList->getSelectedObjects(); + mFilterIndex->setFilter(it->first, &filters); + } + + delete this; + +} + +bool GuiGamelistFilter::input(InputConfig* config, Input input) +{ + bool consumed = GuiComponent::input(config, input); + if(consumed) + return true; + + if(config->isMappedTo("b", input) && input.value != 0) + { + applyFilters(); + } + + + return false; +} + +std::vector GuiGamelistFilter::getHelpPrompts() +{ + std::vector prompts = mMenu.getHelpPrompts(); + prompts.push_back(HelpPrompt("b", "back")); + return prompts; +} diff --git a/es-app/src/guis/GuiGamelistFilter.h b/es-app/src/guis/GuiGamelistFilter.h new file mode 100644 index 0000000000..003b72e2ac --- /dev/null +++ b/es-app/src/guis/GuiGamelistFilter.h @@ -0,0 +1,35 @@ +#pragma once +#ifndef ES_APP_GUIS_GUI_GAME_LIST_FILTER_H +#define ES_APP_GUIS_GUI_GAME_LIST_FILTER_H + +#include "components/MenuComponent.h" +#include "FileFilterIndex.h" +#include "GuiComponent.h" + +template +class OptionListComponent; +class SystemData; + +class GuiGamelistFilter : public GuiComponent +{ +public: + GuiGamelistFilter(Window* window, SystemData* system); + ~GuiGamelistFilter(); + bool input(InputConfig* config, Input input) override; + + virtual std::vector getHelpPrompts() override; + +private: + void initializeMenu(); + void applyFilters(); + void resetAllFilters(); + void addFiltersToMenu(); + + std::map >> mFilterOptions; + + MenuComponent mMenu; + SystemData* mSystem; + FileFilterIndex* mFilterIndex; +}; + +#endif // ES_APP_GUIS_GUI_GAME_LIST_FILTER_H diff --git a/es-app/src/guis/GuiGamelistOptions.cpp b/es-app/src/guis/GuiGamelistOptions.cpp index e019cd7e6f..436b131c46 100644 --- a/es-app/src/guis/GuiGamelistOptions.cpp +++ b/es-app/src/guis/GuiGamelistOptions.cpp @@ -1,56 +1,156 @@ #include "GuiGamelistOptions.h" -#include "GuiMetaDataEd.h" + +#include "guis/GuiGamelistFilter.h" +#include "scrapers/Scraper.h" #include "views/gamelist/IGameListView.h" +#include "views/UIModeController.h" #include "views/ViewController.h" +#include "CollectionSystemManager.h" +#include "FileFilterIndex.h" +#include "FileSorts.h" +#include "GuiMetaDataEd.h" +#include "SystemData.h" +#include "components/TextListComponent.h" -GuiGamelistOptions::GuiGamelistOptions(Window* window, SystemData* system) : GuiComponent(window), - mSystem(system), - mMenu(window, "OPTIONS") +GuiGamelistOptions::GuiGamelistOptions(Window* window, SystemData* system) : GuiComponent(window), + mSystem(system), mMenu(window, "OPTIONS"), mFromPlaceholder(false), mFiltersChanged(false), + mJumpToSelected(false), mMetadataChanged(false) { addChild(&mMenu); - // jump to letter - char curChar = toupper(getGamelist()->getCursor()->getName()[0]); - if(curChar < 'A' || curChar > 'Z') - curChar = 'A'; + // check it's not a placeholder folder - if it is, only show "Filter Options" + FileData* file = getGamelist()->getCursor(); + mFromPlaceholder = file->isPlaceHolder(); + ComponentListRow row; + + if (!mFromPlaceholder) { + row.elements.clear(); - mJumpToLetterList = std::make_shared(mWindow, "JUMP TO LETTER", false); - for(char c = 'A'; c <= 'Z'; c++) - mJumpToLetterList->add(std::string(1, c), c, c == curChar); + std::string currentSort = mSystem->getRootFolder()->getSortDescription(); + std::string reqSort = FileSorts::SortTypes.at(0).description; - ComponentListRow row; - row.addElement(std::make_shared(mWindow, "JUMP TO LETTER", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); - row.addElement(mJumpToLetterList, false); - row.input_handler = [&](InputConfig* config, Input input) { - if(config->isMappedTo("a", input) && input.value) - { - jumpToLetter(); - return true; + // "jump to letter" menuitem only available (and correct jumping) on sort order "name, asc" + if (currentSort == reqSort) { + bool outOfRange = false; + char curChar = (char)toupper(getGamelist()->getCursor()->getSortName()[0]); + // define supported character range + // this range includes all numbers, capital letters, and most reasonable symbols + char startChar = '!'; + char endChar = '_'; + if (curChar < startChar || curChar > endChar) { + // most likely 8 bit ASCII or Unicode (Prefix: 0xc2 or 0xe2) value + curChar = startChar; + outOfRange = true; + } + + mJumpToLetterList = std::make_shared(mWindow, "JUMP TO ...", false); + for (char c = startChar; c <= endChar; c++) + { + // check if c is a valid first letter in current list + const std::vector& files = getGamelist()->getCursor()->getParent()->getChildrenListToDisplay(); + for (auto file : files) + { + char candidate = (char)toupper(file->getSortName()[0]); + if (c == candidate) + { + mJumpToLetterList->add(std::string(1, c), c, (c == curChar) || outOfRange); + outOfRange = false; // only override selection on very first c == candidate match + break; + } + } + } + + row.addElement(std::make_shared(mWindow, "JUMP TO ...", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.addElement(mJumpToLetterList, false); + row.input_handler = [&](InputConfig* config, Input input) { + if(config->isMappedTo("a", input) && input.value) + { + jumpToLetter(); + return true; + } + else if(mJumpToLetterList->input(config, input)) + { + return true; + } + return false; + }; + mMenu.addRow(row); } - else if(mJumpToLetterList->input(config, input)) + + // add launch system screensaver + std::string screensaver_behavior = Settings::getInstance()->getString("ScreenSaverBehavior"); + bool useGamelistMedia = screensaver_behavior == "random video" || (screensaver_behavior == "slideshow" && !Settings::getInstance()->getBool("SlideshowScreenSaverCustomMediaSource")); + bool rpConfigSelected = "retropie" == mSystem->getName(); + bool collectionsSelected = mSystem->getName() == CollectionSystemManager::get()->getCustomCollectionsBundle()->getName(); + + if (!rpConfigSelected && useGamelistMedia && (!collectionsSelected || collectionsSelected && file->getType() == GAME)) { + row.elements.clear(); + row.addElement(std::make_shared(mWindow, "LAUNCH SYSTEM SCREENSAVER", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.makeAcceptInputHandler(std::bind(&GuiGamelistOptions::launchSystemScreenSaver, this)); + mMenu.addRow(row); + } + + // "sort list by" menuitem + mListSort = std::make_shared(mWindow, "SORT GAMES BY", false); + for(unsigned int i = 0; i < FileSorts::SortTypes.size(); i++) { - return true; + const FileData::SortType& sort = FileSorts::SortTypes.at(i); + mListSort->add(sort.description, &sort, sort.description == currentSort); } - return false; - }; - mMenu.addRow(row); - // sort list by - mListSort = std::make_shared(mWindow, "SORT GAMES BY", false); - for(unsigned int i = 0; i < FileSorts::SortTypes.size(); i++) + mMenu.addWithLabel("SORT GAMES BY", mListSort); + + } + + // show filtered menu + if(!Settings::getInstance()->getBool("ForceDisableFilters")) { - const FileData::SortType& sort = FileSorts::SortTypes.at(i); - mListSort->add(sort.description, &sort, i == 0); // TODO - actually make the sort type persistent + row.elements.clear(); + row.addElement(std::make_shared(mWindow, "FILTER GAMELIST", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.addElement(makeArrow(mWindow), false); + row.makeAcceptInputHandler(std::bind(&GuiGamelistOptions::openGamelistFilter, this)); + mMenu.addRow(row); } - mMenu.addWithLabel("SORT GAMES BY", mListSort); + std::map customCollections = CollectionSystemManager::get()->getCustomCollectionSystems(); - // edit game metadata - row.elements.clear(); - row.addElement(std::make_shared(mWindow, "EDIT THIS GAME'S METADATA", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); - row.addElement(makeArrow(mWindow), false); - row.makeAcceptInputHandler(std::bind(&GuiGamelistOptions::openMetaDataEd, this)); - mMenu.addRow(row); + if(UIModeController::getInstance()->isUIModeFull() && + ((customCollections.find(system->getName()) != customCollections.cend() && CollectionSystemManager::get()->getEditingCollection() != system->getName()) || + CollectionSystemManager::get()->getCustomCollectionsBundle()->getName() == system->getName())) + { + row.elements.clear(); + row.addElement(std::make_shared(mWindow, "ADD/REMOVE GAMES TO THIS GAME COLLECTION", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.makeAcceptInputHandler(std::bind(&GuiGamelistOptions::startEditMode, this)); + mMenu.addRow(row); + } + + if(UIModeController::getInstance()->isUIModeFull() && CollectionSystemManager::get()->isEditing()) + { + row.elements.clear(); + row.addElement(std::make_shared(mWindow, "FINISH EDITING '" + Utils::String::toUpper(CollectionSystemManager::get()->getEditingCollection()) + "' COLLECTION", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.makeAcceptInputHandler(std::bind(&GuiGamelistOptions::exitEditMode, this)); + mMenu.addRow(row); + } + + if(UIModeController::getInstance()->isUIModeFull() && system == CollectionSystemManager::get()->getRandomCollection()) + { + row.elements.clear(); + row.addElement(std::make_shared(mWindow, "GET NEW RANDOM GAMES", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.makeAcceptInputHandler(std::bind(&GuiGamelistOptions::recreateCollection, this)); + mMenu.addRow(row); + } + + if (UIModeController::getInstance()->isUIModeFull() && !mFromPlaceholder && !(mSystem->isCollection() && file->getType() == FOLDER)) + { + row.elements.clear(); + std::string lblTxt = std::string("EDIT THIS "); + lblTxt += std::string((file->getType() == FOLDER ? "FOLDER" : "GAME")); + lblTxt += std::string("'S METADATA"); + row.addElement(std::make_shared(mWindow, lblTxt, Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.addElement(makeArrow(mWindow), false); + row.makeAcceptInputHandler(std::bind(&GuiGamelistOptions::openMetaDataEd, this)); + mMenu.addRow(row); + } // center the menu setSize((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); @@ -59,28 +159,119 @@ GuiGamelistOptions::GuiGamelistOptions(Window* window, SystemData* system) : Gui GuiGamelistOptions::~GuiGamelistOptions() { + FileData* root = mSystem->getRootFolder(); // apply sort - FileData* root = getGamelist()->getCursor()->getSystem()->getRootFolder(); - root->sort(*mListSort->getSelected()); // will also recursively sort children + if (!mFromPlaceholder) { + const FileData::SortType selectedSort = mJumpToSelected ? FileSorts::SortTypes.at(0) /* force "name, asc" */ : *mListSort->getSelected(); + if (root->getSortDescription() != selectedSort.description) { + root->sort(selectedSort); // will also recursively sort children + // notify that the root folder was sorted + getGamelist()->onFileChanged(root, FILE_SORTED); + } + } - // notify that the root folder was sorted - getGamelist()->onFileChanged(root, FILE_SORTED); + if (mFiltersChanged || mMetadataChanged) + { + // force refresh of cursor list position + ViewController::get()->getGameListView(mSystem)->setViewportTop(TextListComponent::REFRESH_LIST_CURSOR_POS); + // re-display the elements for whatever new or renamed game is selected + ViewController::get()->reloadGameListView(mSystem); + if (mFiltersChanged) { + // trigger repaint of cursor and list detail + getGamelist()->onFileChanged(root, FILE_SORTED); + } + } +} + +bool GuiGamelistOptions::launchSystemScreenSaver() +{ + SystemData* system = mSystem; + std::string systemName = system->getName(); + // need to check if we're in a folder inside the collections bundle, to launch from there + if(systemName == CollectionSystemManager::get()->getCustomCollectionsBundle()->getName()) + { + FileData* file = getGamelist()->getCursor(); // is GAME otherwise menuentry would have been hidden + // we are inside a specific collection. We want to launch for that one. + system = file->getSystem(); + } + mWindow->startScreenSaver(system); + mWindow->renderScreenSaver(); + + delete this; + return true; +} + +void GuiGamelistOptions::openGamelistFilter() +{ + mFiltersChanged = true; + GuiGamelistFilter* ggf = new GuiGamelistFilter(mWindow, mSystem); + mWindow->pushGui(ggf); +} + +void GuiGamelistOptions::recreateCollection() +{ + CollectionSystemManager::get()->recreateCollection(mSystem); + delete this; +} + +void GuiGamelistOptions::startEditMode() +{ + std::string editingSystem = mSystem->getName(); + // need to check if we're editing the collections bundle, as we will want to edit the selected collection within + if(editingSystem == CollectionSystemManager::get()->getCustomCollectionsBundle()->getName()) + { + FileData* file = getGamelist()->getCursor(); + // do we have the cursor on a specific collection? + if (file->getType() == FOLDER) + { + editingSystem = file->getName(); + } + else + { + // we are inside a specific collection. We want to edit that one. + editingSystem = file->getSystem()->getName(); + } + } + CollectionSystemManager::get()->setEditMode(editingSystem); + delete this; +} + +void GuiGamelistOptions::exitEditMode() +{ + CollectionSystemManager::get()->exitEditMode(); + delete this; } void GuiGamelistOptions::openMetaDataEd() { // open metadata editor - FileData* file = getGamelist()->getCursor(); + // get the FileData that hosts the original metadata + FileData* file = getGamelist()->getCursor()->getSourceFileData(); ScraperSearchParams p; p.game = file; p.system = file->getSystem(); - mWindow->pushGui(new GuiMetaDataEd(mWindow, &file->metadata, file->metadata.getMDD(), p, file->getPath().filename().string(), - std::bind(&IGameListView::onFileChanged, getGamelist(), file, FILE_METADATA_CHANGED), [this, file] { - boost::filesystem::remove(file->getPath()); //actually delete the file on the filesystem - file->getParent()->removeChild(file); //unlink it so list repopulations triggered from onFileChanged won't see it - getGamelist()->onFileChanged(file, FILE_REMOVED); //tell the view - delete file; //free it - })); + + std::function saveBtnFunc; + saveBtnFunc = [this, file] { + ViewController::get()->getGameListView(mSystem)->setCursor(file, true); + mMetadataChanged = true; + ViewController::get()->getGameListView(file->getSystem())->onFileChanged(file, FILE_METADATA_CHANGED); + }; + + std::function deleteBtnFunc; + if (file->getType() == FOLDER) + { + deleteBtnFunc = NULL; + } + else + { + deleteBtnFunc = [this, file] { + CollectionSystemManager::get()->deleteCollectionFiles(file); + ViewController::get()->getGameListView(file->getSystem()).get()->remove(file, true, true); + }; + } + + mWindow->pushGui(new GuiMetaDataEd(mWindow, &file->metadata, file->metadata.getMDD(), p, Utils::FileSystem::getFileName(file->getPath()), saveBtnFunc, deleteBtnFunc)); } void GuiGamelistOptions::jumpToLetter() @@ -89,10 +280,10 @@ void GuiGamelistOptions::jumpToLetter() IGameListView* gamelist = getGamelist(); // this is a really shitty way to get a list of files - const std::vector& files = gamelist->getCursor()->getParent()->getChildren(); - + const std::vector& files = gamelist->getCursor()->getParent()->getChildrenListToDisplay(); + long min = 0; - long max = files.size() - 1; + long max = (long)files.size() - 1; long mid = 0; while(max >= min) @@ -103,11 +294,11 @@ void GuiGamelistOptions::jumpToLetter() if(files.at(mid)->getName().empty()) continue; - char checkLetter = toupper(files.at(mid)->getName()[0]); + char checkLetter = (char)toupper(files.at(mid)->getSortName()[0]); if(checkLetter < letter) min = mid + 1; - else if(checkLetter > letter) + else if(checkLetter > letter || (mid > 0 && (letter == toupper(files.at(mid - 1)->getSortName()[0])))) max = mid - 1; else break; //exact match found @@ -115,6 +306,9 @@ void GuiGamelistOptions::jumpToLetter() gamelist->setCursor(files.at(mid)); + // flag to force default sort order "name, asc", if user changed the sortorder in the options dialog + mJumpToSelected = true; + delete this; } @@ -129,6 +323,13 @@ bool GuiGamelistOptions::input(InputConfig* config, Input input) return mMenu.input(config, input); } +HelpStyle GuiGamelistOptions::getHelpStyle() +{ + HelpStyle style = HelpStyle(); + style.applyTheme(mSystem->getTheme(), "system"); + return style; +} + std::vector GuiGamelistOptions::getHelpPrompts() { auto prompts = mMenu.getHelpPrompts(); diff --git a/es-app/src/guis/GuiGamelistOptions.h b/es-app/src/guis/GuiGamelistOptions.h index 2ce685c9e7..dd14399b54 100644 --- a/es-app/src/guis/GuiGamelistOptions.h +++ b/es-app/src/guis/GuiGamelistOptions.h @@ -1,9 +1,14 @@ -#include "GuiComponent.h" +#pragma once +#ifndef ES_APP_GUIS_GUI_GAME_LIST_OPTIONS_H +#define ES_APP_GUIS_GUI_GAME_LIST_OPTIONS_H + #include "components/MenuComponent.h" #include "components/OptionListComponent.h" -#include "FileSorts.h" +#include "FileData.h" +#include "GuiComponent.h" class IGameListView; +class SystemData; class GuiGamelistOptions : public GuiComponent { @@ -13,11 +18,17 @@ class GuiGamelistOptions : public GuiComponent virtual bool input(InputConfig* config, Input input) override; virtual std::vector getHelpPrompts() override; + virtual HelpStyle getHelpStyle() override; private: + void openGamelistFilter(); + bool launchSystemScreenSaver(); void openMetaDataEd(); + void startEditMode(); + void recreateCollection(); + void exitEditMode(); void jumpToLetter(); - + MenuComponent mMenu; typedef OptionListComponent LetterList; @@ -25,7 +36,13 @@ class GuiGamelistOptions : public GuiComponent typedef OptionListComponent SortList; std::shared_ptr mListSort; - + SystemData* mSystem; IGameListView* getGamelist(); + bool mFromPlaceholder; + bool mFiltersChanged; + bool mJumpToSelected; + bool mMetadataChanged; }; + +#endif // ES_APP_GUIS_GUI_GAME_LIST_OPTIONS_H diff --git a/es-app/src/guis/GuiGeneralScreensaverOptions.cpp b/es-app/src/guis/GuiGeneralScreensaverOptions.cpp new file mode 100644 index 0000000000..78ff7a1981 --- /dev/null +++ b/es-app/src/guis/GuiGeneralScreensaverOptions.cpp @@ -0,0 +1,102 @@ +#include "guis/GuiGeneralScreensaverOptions.h" + +#include "components/OptionListComponent.h" +#include "components/SliderComponent.h" +#include "components/SwitchComponent.h" +#include "guis/GuiMsgBox.h" +#include "guis/GuiSlideshowScreensaverOptions.h" +#include "guis/GuiVideoScreensaverOptions.h" +#include "Settings.h" + +GuiGeneralScreensaverOptions::GuiGeneralScreensaverOptions(Window* window, const char* title) : GuiScreensaverOptions(window, title) +{ + // screensaver time + auto screensaver_time = std::make_shared(mWindow, 0.f, 30.f, 1.f, "m"); + screensaver_time->setValue((float)(Settings::getInstance()->getInt("ScreenSaverTime") / Settings::ONE_MINUTE_IN_MS)); + addWithLabel("SCREENSAVER AFTER", screensaver_time); + addSaveFunc([screensaver_time] { + Settings::getInstance()->setInt("ScreenSaverTime", (int)Math::round(screensaver_time->getValue()) * Settings::ONE_MINUTE_IN_MS); + PowerSaver::updateTimeouts(); + }); + + // Allow ScreenSaver Controls - ScreenSaverControls + auto ss_controls = std::make_shared(mWindow); + ss_controls->setState(Settings::getInstance()->getBool("ScreenSaverControls")); + addWithLabel("SCREENSAVER CONTROLS", ss_controls); + addSaveFunc([ss_controls] { Settings::getInstance()->setBool("ScreenSaverControls", ss_controls->getState()); }); + + // screensaver behavior + auto screensaver_behavior = std::make_shared< OptionListComponent >(mWindow, "SCREENSAVER BEHAVIOR", false); + std::vector screensavers; + screensavers.push_back("dim"); + screensavers.push_back("black"); + screensavers.push_back("random video"); + screensavers.push_back("slideshow"); + for(auto it = screensavers.cbegin(); it != screensavers.cend(); it++) + screensaver_behavior->add(*it, *it, Settings::getInstance()->getString("ScreenSaverBehavior") == *it); + addWithLabel("SCREENSAVER BEHAVIOR", screensaver_behavior); + addSaveFunc([this, screensaver_behavior] { + if (Settings::getInstance()->getString("ScreenSaverBehavior") != "random video" && screensaver_behavior->getSelected() == "random video") { + // if before it wasn't risky but now there's a risk of problems, show warning + mWindow->pushGui(new GuiMsgBox(mWindow, + "The \"Random Video\" screensaver shows videos from your gamelist.\n\nIf you do not have videos, or if in several consecutive attempts the games it selects don't have videos it will default to black.\n\nMore options in the \"UI Settings\" > \"Video Screensaver\" menu.", + "OK", [] { return; })); + } + Settings::getInstance()->setString("ScreenSaverBehavior", screensaver_behavior->getSelected()); + PowerSaver::updateTimeouts(); + }); + + ComponentListRow row; + + // show filtered menu + row.elements.clear(); + row.addElement(std::make_shared(mWindow, "VIDEO SCREENSAVER SETTINGS", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.addElement(makeArrow(mWindow), false); + row.makeAcceptInputHandler(std::bind(&GuiGeneralScreensaverOptions::openVideoScreensaverOptions, this)); + addRow(row); + + row.elements.clear(); + row.addElement(std::make_shared(mWindow, "SLIDESHOW SCREENSAVER SETTINGS", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.addElement(makeArrow(mWindow), false); + row.makeAcceptInputHandler(std::bind(&GuiGeneralScreensaverOptions::openSlideshowScreensaverOptions, this)); + addRow(row); + + // system sleep time + float stepw = 5.f; + float max = 120.f; + auto system_sleep_time = std::make_shared(mWindow, 0.f, max, stepw, "m"); + system_sleep_time->setValue((float)(Settings::getInstance()->getInt("SystemSleepTime") / Settings::ONE_MINUTE_IN_MS)); + addWithLabel("SYSTEM SLEEP AFTER", system_sleep_time); + addSaveFunc([this, system_sleep_time, screensaver_time, max, stepw] { + if (screensaver_time->getValue() > system_sleep_time->getValue() && system_sleep_time->getValue() > 0) { + int steps = Math::min(1 + (int)(screensaver_time->getValue() / stepw), (int)(max/stepw)); + int adj_system_sleep_time = steps*stepw; + system_sleep_time->setValue((float)adj_system_sleep_time); + std::string msg = ""; + if (!Settings::getInstance()->getBool("SystemSleepTimeHintDisplayed")) { + msg += "One time note: Enabling the system sleep time will trigger user-defined scripts."; + msg += "\nPlease see Retropie/Emulationstation Wiki on events for details."; + Settings::getInstance()->setBool("SystemSleepTimeHintDisplayed", true); + } + if (msg.length() > 0) { + msg += "\n\n"; + } + msg += "The system sleep delay is enabled, but is less than or equal to the screen saver start delay."; + msg += "\n\nAdjusted system sleep time to " + std::to_string(adj_system_sleep_time) + " minutes."; + mWindow->pushGui(new GuiMsgBox(mWindow, msg, "OK", [] { return; })); + } + Settings::getInstance()->setInt("SystemSleepTime", (int)Math::round(system_sleep_time->getValue()) * Settings::ONE_MINUTE_IN_MS); + }); +} + +GuiGeneralScreensaverOptions::~GuiGeneralScreensaverOptions() +{ +} + +void GuiGeneralScreensaverOptions::openVideoScreensaverOptions() { + mWindow->pushGui(new GuiVideoScreensaverOptions(mWindow, "VIDEO SCREENSAVER")); +} + +void GuiGeneralScreensaverOptions::openSlideshowScreensaverOptions() { + mWindow->pushGui(new GuiSlideshowScreensaverOptions(mWindow, "SLIDESHOW SCREENSAVER")); +} diff --git a/es-app/src/guis/GuiGeneralScreensaverOptions.h b/es-app/src/guis/GuiGeneralScreensaverOptions.h new file mode 100644 index 0000000000..1992d9ad15 --- /dev/null +++ b/es-app/src/guis/GuiGeneralScreensaverOptions.h @@ -0,0 +1,18 @@ +#pragma once +#ifndef ES_APP_GUIS_GUI_GENERAL_SCREENSAVER_OPTIONS_H +#define ES_APP_GUIS_GUI_GENERAL_SCREENSAVER_OPTIONS_H + +#include "GuiScreensaverOptions.h" + +class GuiGeneralScreensaverOptions : public GuiScreensaverOptions +{ +public: + GuiGeneralScreensaverOptions(Window* window, const char* title); + virtual ~GuiGeneralScreensaverOptions(); + +private: + void openVideoScreensaverOptions(); + void openSlideshowScreensaverOptions(); +}; + +#endif // ES_APP_GUIS_GUI_GENERAL_SCREENSAVER_OPTIONS_H diff --git a/es-app/src/guis/GuiInfoPopup.cpp b/es-app/src/guis/GuiInfoPopup.cpp new file mode 100644 index 0000000000..d145b6a92b --- /dev/null +++ b/es-app/src/guis/GuiInfoPopup.cpp @@ -0,0 +1,116 @@ +#include "guis/GuiInfoPopup.h" + +#include "components/ComponentGrid.h" +#include "components/NinePatchComponent.h" +#include "components/TextComponent.h" +#include + +GuiInfoPopup::GuiInfoPopup(Window* window, std::string message, int duration, int fadein, int fadeout) : + GuiComponent(window), mMessage(message), mDuration(duration), mFadein(fadein), mFadeout(fadeout), running(true) +{ + mFrame = new NinePatchComponent(window); + float maxWidth = Renderer::getScreenWidth() * 0.9f; + float maxHeight = Renderer::getScreenHeight() * 0.2f; + + std::shared_ptr s = std::make_shared(mWindow, + "", + Font::get(FONT_SIZE_MINI), + 0x444444FF, + ALIGN_CENTER); + + // we do this to force the text container to resize and return an actual expected popup size + s->setSize(0,0); + s->setText(message); + mSize = s->getSize(); + + // confirm the size isn't larger than the screen width, otherwise cap it + if (mSize.x() > maxWidth) { + s->setSize(maxWidth, mSize[1]); + mSize[0] = maxWidth; + } + if (mSize.y() > maxHeight) { + s->setSize(mSize[0], maxHeight); + mSize[1] = maxHeight; + } + + // add a padding to the box + int paddingX = (int) (Renderer::getScreenWidth() * 0.03f); + int paddingY = (int) (Renderer::getScreenHeight() * 0.02f); + mSize[0] = mSize.x() + paddingX; + mSize[1] = mSize.y() + paddingY; + + float posX = Renderer::getScreenWidth()*0.5f - mSize.x()*0.5f; + float posY = Renderer::getScreenHeight() * 0.02f; + + setPosition(posX, posY, 0); + + mFrame->setImagePath(":/frame.png"); + mFrame->fitTo(mSize, Vector3f::Zero(), Vector2f(-32, -32)); + addChild(mFrame); + + // we only init the actual time when we first start to render + mStartTime = 0; + + mGrid = new ComponentGrid(window, Vector2i(1, 3)); + mGrid->setSize(mSize); + mGrid->setEntry(s, Vector2i(0, 1), false, true); + addChild(mGrid); +} + +GuiInfoPopup::~GuiInfoPopup() +{ + +} + +void GuiInfoPopup::render(const Transform4x4f& /*parentTrans*/) +{ + // we use identity as we want to render on a specific window position, not on the view + Transform4x4f trans = getTransform() * Transform4x4f::Identity(); + if(running && updateState()) + { + // if we're still supposed to be rendering it + Renderer::setMatrix(trans); + renderChildren(trans); + } +} + +bool GuiInfoPopup::updateState() +{ + int curTime = SDL_GetTicks(); + + // we only init the actual time when we first start to render + if(mStartTime == 0) + { + mStartTime = curTime; + } + + // compute fade in effect + if (curTime - mStartTime > mDuration) + { + // we're past the popup duration, no need to render + running = false; + return false; + } + else if (curTime < mStartTime) { + // if SDL reset + running = false; + return false; + } + else if (curTime - mStartTime <= mFadein) { + alpha = (curTime - mStartTime) * 255 / mFadein; + } + else if (curTime - mStartTime < mDuration - mFadeout) + { + alpha = 255; + } + else + { + alpha = -(curTime - mStartTime - mDuration) * 255 / mFadeout; + } + mGrid->setOpacity((unsigned char)alpha); + + // apply fade in effect to popup frame + mFrame->setEdgeColor(0xFFFFFF00 | (unsigned char)(alpha)); + mFrame->setCenterColor(0xFFFFFF00 | (unsigned char)(alpha)); + return true; +} diff --git a/es-app/src/guis/GuiInfoPopup.h b/es-app/src/guis/GuiInfoPopup.h new file mode 100644 index 0000000000..d4bf5a6408 --- /dev/null +++ b/es-app/src/guis/GuiInfoPopup.h @@ -0,0 +1,31 @@ +#pragma once +#ifndef ES_APP_GUIS_GUI_INFO_POPUP_H +#define ES_APP_GUIS_GUI_INFO_POPUP_H + +#include "GuiComponent.h" +#include "Window.h" + +class ComponentGrid; +class NinePatchComponent; + +class GuiInfoPopup : public GuiComponent, public Window::InfoPopup +{ +public: + GuiInfoPopup(Window* window, std::string message, int duration, int fadein = 500, int fadeout = 500); + ~GuiInfoPopup(); + void render(const Transform4x4f& parentTrans) override; + inline void stop() override { running = false; }; +private: + std::string mMessage; + int mDuration; + int mFadein; + int mFadeout; + int alpha; + bool updateState(); + int mStartTime; + ComponentGrid* mGrid; + NinePatchComponent* mFrame; + bool running; +}; + +#endif // ES_APP_GUIS_GUI_INFO_POPUP_H diff --git a/es-app/src/guis/GuiMenu.cpp b/es-app/src/guis/GuiMenu.cpp index 417d38224c..b3150db4a5 100644 --- a/es-app/src/guis/GuiMenu.cpp +++ b/es-app/src/guis/GuiMenu.cpp @@ -1,231 +1,621 @@ -#include "EmulationStation.h" #include "guis/GuiMenu.h" -#include "Window.h" -#include "Sound.h" -#include "Log.h" -#include "Settings.h" + +#include "components/OptionListComponent.h" +#include "components/SliderComponent.h" +#include "components/SwitchComponent.h" +#include "guis/GuiCollectionSystemsOptions.h" +#include "guis/GuiDetectDevice.h" +#include "guis/GuiGeneralScreensaverOptions.h" #include "guis/GuiMsgBox.h" -#include "guis/GuiSettings.h" #include "guis/GuiScraperStart.h" -#include "guis/GuiDetectDevice.h" +#include "guis/GuiSettings.h" +#include "views/UIModeController.h" #include "views/ViewController.h" - -#include "components/ButtonComponent.h" -#include "components/SwitchComponent.h" -#include "components/SliderComponent.h" -#include "components/TextComponent.h" -#include "components/OptionListComponent.h" -#include "components/MenuComponent.h" +#include "CollectionSystemManager.h" +#include "EmulationStation.h" +#include "Scripting.h" +#include "SystemData.h" #include "VolumeControl.h" -#include "scrapers/GamesDBScraper.h" -#include "scrapers/TheArchiveScraper.h" +#include +#include +#include "platform.h" +#include "FileSorts.h" +#include "views/gamelist/IGameListView.h" +#include "guis/GuiInfoPopup.h" GuiMenu::GuiMenu(Window* window) : GuiComponent(window), mMenu(window, "MAIN MENU"), mVersion(window) { - // MAIN MENU + bool isFullUI = UIModeController::getInstance()->isUIModeFull(); + + if (isFullUI) { + addEntry("SCRAPER", 0x777777FF, true, [this] { openScraperSettings(); }); + addEntry("SOUND SETTINGS", 0x777777FF, true, [this] { openSoundSettings(); }); + addEntry("UI SETTINGS", 0x777777FF, true, [this] { openUISettings(); }); + addEntry("GAME COLLECTION SETTINGS", 0x777777FF, true, [this] { openCollectionSystemSettings(); }); + addEntry("OTHER SETTINGS", 0x777777FF, true, [this] { openOtherSettings(); }); + addEntry("CONFIGURE INPUT", 0x777777FF, true, [this] { openConfigInput(); }); + } else { + addEntry("SOUND SETTINGS", 0x777777FF, true, [this] { openSoundSettings(); }); + } - // SCRAPER > - // SOUND SETTINGS > - // UI SETTINGS > - // CONFIGURE INPUT > - // QUIT > + addEntry("QUIT", 0x777777FF, true, [this] {openQuitMenu(); }); - // [version] + addChild(&mMenu); + addVersionInfo(); + setSize(mMenu.getSize()); + setPosition((Renderer::getScreenWidth() - mSize.x()) / 2, Renderer::getScreenHeight() * 0.15f); +} + +void GuiMenu::openScraperSettings() +{ + auto s = new GuiSettings(mWindow, "SCRAPER"); + + // scrape from + auto scraper_list = std::make_shared< OptionListComponent< std::string > >(mWindow, "SCRAPE FROM", false); + std::vector scrapers = getScraperList(); + + // Select either the first entry of the one read from the settings, just in case the scraper from settings has vanished. + for(auto it = scrapers.cbegin(); it != scrapers.cend(); it++) + scraper_list->add(*it, *it, *it == Settings::getInstance()->getString("Scraper")); + + s->addWithLabel("SCRAPE FROM", scraper_list); + s->addSaveFunc([scraper_list] { Settings::getInstance()->setString("Scraper", scraper_list->getSelected()); }); + // scrape ratings + auto scrape_ratings = std::make_shared(mWindow); + scrape_ratings->setState(Settings::getInstance()->getBool("ScrapeRatings")); + s->addWithLabel("SCRAPE RATINGS", scrape_ratings); + s->addSaveFunc([scrape_ratings] { Settings::getInstance()->setBool("ScrapeRatings", scrape_ratings->getState()); }); + + // scrape now + ComponentListRow row; auto openScrapeNow = [this] { mWindow->pushGui(new GuiScraperStart(mWindow)); }; - addEntry("SCRAPER", 0x777777FF, true, - [this, openScrapeNow] { - auto s = new GuiSettings(mWindow, "SCRAPER"); - - // scrape from - auto scraper_list = std::make_shared< OptionListComponent< std::string > >(mWindow, "SCRAPE FROM", false); - std::vector scrapers = getScraperList(); - for(auto it = scrapers.begin(); it != scrapers.end(); it++) - scraper_list->add(*it, *it, *it == Settings::getInstance()->getString("Scraper")); - - s->addWithLabel("SCRAPE FROM", scraper_list); - s->addSaveFunc([scraper_list] { Settings::getInstance()->setString("Scraper", scraper_list->getSelected()); }); - - // scrape ratings - auto scrape_ratings = std::make_shared(mWindow); - scrape_ratings->setState(Settings::getInstance()->getBool("ScrapeRatings")); - s->addWithLabel("SCRAPE RATINGS", scrape_ratings); - s->addSaveFunc([scrape_ratings] { Settings::getInstance()->setBool("ScrapeRatings", scrape_ratings->getState()); }); - - // scrape now - ComponentListRow row; - std::function openAndSave = openScrapeNow; - openAndSave = [s, openAndSave] { s->save(); openAndSave(); }; - row.makeAcceptInputHandler(openAndSave); - - auto scrape_now = std::make_shared(mWindow, "SCRAPE NOW", Font::get(FONT_SIZE_MEDIUM), 0x777777FF); - auto bracket = makeArrow(mWindow); - row.addElement(scrape_now, true); - row.addElement(bracket, false); - s->addRow(row); + std::function openAndSave = openScrapeNow; + openAndSave = [s, openAndSave] { s->save(); openAndSave(); }; + row.makeAcceptInputHandler(openAndSave); + + auto scrape_now = std::make_shared(mWindow, "SCRAPE NOW", Font::get(FONT_SIZE_MEDIUM), 0x777777FF); + auto bracket = makeArrow(mWindow); + row.addElement(scrape_now, true); + row.addElement(bracket, false); + s->addRow(row); - mWindow->pushGui(s); + mWindow->pushGui(s); +} + +void GuiMenu::openSoundSettings() +{ + auto s = new GuiSettings(mWindow, "SOUND SETTINGS"); + + // volume + auto volume = std::make_shared(mWindow, 0.f, 100.f, 1.f, "%"); + volume->setValue((float)VolumeControl::getInstance()->getVolume()); + s->addWithLabel("SYSTEM VOLUME", volume); + s->addSaveFunc([volume] { VolumeControl::getInstance()->setVolume((int)Math::round(volume->getValue())); }); + + if (UIModeController::getInstance()->isUIModeFull()) + { +#if defined(__linux__) + // audio card + auto audio_card = std::make_shared< OptionListComponent >(mWindow, "AUDIO CARD", false); + std::vector audio_cards; + audio_cards.push_back("default"); + audio_cards.push_back("sysdefault"); + audio_cards.push_back("dmix"); + audio_cards.push_back("hw"); + audio_cards.push_back("plughw"); + audio_cards.push_back("null"); + if (Settings::getInstance()->getString("AudioCard") != "") { + if(std::find(audio_cards.begin(), audio_cards.end(), Settings::getInstance()->getString("AudioCard")) == audio_cards.end()) { + audio_cards.push_back(Settings::getInstance()->getString("AudioCard")); + } + } + for(auto ac = audio_cards.cbegin(); ac != audio_cards.cend(); ac++) + audio_card->add(*ac, *ac, Settings::getInstance()->getString("AudioCard") == *ac); + s->addWithLabel("AUDIO CARD", audio_card); + s->addSaveFunc([audio_card] { + Settings::getInstance()->setString("AudioCard", audio_card->getSelected()); + VolumeControl::getInstance()->deinit(); + VolumeControl::getInstance()->init(); + }); + + // volume control device + auto vol_dev = std::make_shared< OptionListComponent >(mWindow, "AUDIO DEVICE", false); + std::vector transitions; + transitions.push_back("PCM"); + transitions.push_back("HDMI"); + transitions.push_back("Headphone"); + transitions.push_back("Speaker"); + transitions.push_back("Master"); + transitions.push_back("Digital"); + transitions.push_back("Analogue"); + if (Settings::getInstance()->getString("AudioDevice") != "") { + if(std::find(transitions.begin(), transitions.end(), Settings::getInstance()->getString("AudioDevice")) == transitions.end()) { + transitions.push_back(Settings::getInstance()->getString("AudioDevice")); + } + } + for(auto it = transitions.cbegin(); it != transitions.cend(); it++) + vol_dev->add(*it, *it, Settings::getInstance()->getString("AudioDevice") == *it); + s->addWithLabel("AUDIO DEVICE", vol_dev); + s->addSaveFunc([vol_dev] { + Settings::getInstance()->setString("AudioDevice", vol_dev->getSelected()); + VolumeControl::getInstance()->deinit(); + VolumeControl::getInstance()->init(); + }); +#endif + + // disable sounds + auto sounds_enabled = std::make_shared(mWindow); + sounds_enabled->setState(Settings::getInstance()->getBool("EnableSounds")); + s->addWithLabel("ENABLE NAVIGATION SOUNDS", sounds_enabled); + s->addSaveFunc([sounds_enabled] { + if (sounds_enabled->getState() + && !Settings::getInstance()->getBool("EnableSounds") + && PowerSaver::getMode() == PowerSaver::INSTANT) + { + Settings::getInstance()->setString("PowerSaverMode", "default"); + PowerSaver::init(); + } + Settings::getInstance()->setBool("EnableSounds", sounds_enabled->getState()); + }); + + auto video_audio = std::make_shared(mWindow); + video_audio->setState(Settings::getInstance()->getBool("VideoAudio")); + s->addWithLabel("ENABLE VIDEO AUDIO", video_audio); + s->addSaveFunc([video_audio] { Settings::getInstance()->setBool("VideoAudio", video_audio->getState()); }); + +#ifdef _OMX_ + // OMX player Audio Device + auto omx_audio_dev = std::make_shared< OptionListComponent >(mWindow, "OMX PLAYER AUDIO DEVICE", false); + std::vector omx_cards; + // RPi Specific Audio Cards + omx_cards.push_back("local"); + omx_cards.push_back("hdmi"); + omx_cards.push_back("both"); + omx_cards.push_back("alsa"); + omx_cards.push_back("alsa:hw:0,0"); + omx_cards.push_back("alsa:hw:1,0"); + if (Settings::getInstance()->getString("OMXAudioDev") != "") { + if (std::find(omx_cards.begin(), omx_cards.end(), Settings::getInstance()->getString("OMXAudioDev")) == omx_cards.end()) { + omx_cards.push_back(Settings::getInstance()->getString("OMXAudioDev")); + } + } + for (auto it = omx_cards.cbegin(); it != omx_cards.cend(); it++) + omx_audio_dev->add(*it, *it, Settings::getInstance()->getString("OMXAudioDev") == *it); + s->addWithLabel("OMX PLAYER AUDIO DEVICE", omx_audio_dev); + s->addSaveFunc([omx_audio_dev] { + if (Settings::getInstance()->getString("OMXAudioDev") != omx_audio_dev->getSelected()) + Settings::getInstance()->setString("OMXAudioDev", omx_audio_dev->getSelected()); + }); +#endif + } + + mWindow->pushGui(s); + +} + +void GuiMenu::openUISettings() +{ + auto s = new GuiSettings(mWindow, "UI SETTINGS"); + + //UI mode + auto UImodeSelection = std::make_shared< OptionListComponent >(mWindow, "UI MODE", false); + std::vector UImodes = UIModeController::getInstance()->getUIModes(); + for (auto it = UImodes.cbegin(); it != UImodes.cend(); it++) + UImodeSelection->add(*it, *it, Settings::getInstance()->getString("UIMode") == *it); + s->addWithLabel("UI MODE", UImodeSelection); + Window* window = mWindow; + s->addSaveFunc([ UImodeSelection, window] + { + std::string selectedMode = UImodeSelection->getSelected(); + if (selectedMode != "Full") + { + std::string msg = "You are changing the UI to a restricted mode:\n" + selectedMode + "\n"; + msg += "This will hide most menu-options to prevent changes to the system.\n"; + msg += "To unlock and return to the full UI, enter this code: \n"; + msg += "\"" + UIModeController::getInstance()->getFormattedPassKeyStr() + "\"\n\n"; + msg += "Do you want to proceed?"; + window->pushGui(new GuiMsgBox(window, msg, + "YES", [selectedMode] { + LOG(LogDebug) << "Setting UI mode to " << selectedMode; + Settings::getInstance()->setString("UIMode", selectedMode); + Settings::getInstance()->saveFile(); + }, "NO",nullptr)); + } }); - addEntry("SOUND SETTINGS", 0x777777FF, true, - [this] { - auto s = new GuiSettings(mWindow, "SOUND SETTINGS"); - - // volume - auto volume = std::make_shared(mWindow, 0.f, 100.f, 1.f, "%"); - volume->setValue((float)VolumeControl::getInstance()->getVolume()); - s->addWithLabel("SYSTEM VOLUME", volume); - s->addSaveFunc([volume] { VolumeControl::getInstance()->setVolume((int)round(volume->getValue())); }); - - // disable sounds - auto sounds_enabled = std::make_shared(mWindow); - sounds_enabled->setState(Settings::getInstance()->getBool("EnableSounds")); - s->addWithLabel("ENABLE SOUNDS", sounds_enabled); - s->addSaveFunc([sounds_enabled] { Settings::getInstance()->setBool("EnableSounds", sounds_enabled->getState()); }); - - mWindow->pushGui(s); + // screensaver + ComponentListRow screensaver_row; + screensaver_row.elements.clear(); + screensaver_row.addElement(std::make_shared(mWindow, "SCREENSAVER SETTINGS", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + screensaver_row.addElement(makeArrow(mWindow), false); + screensaver_row.makeAcceptInputHandler(std::bind(&GuiMenu::openScreensaverOptions, this)); + s->addRow(screensaver_row); + + // quick system select (left/right in game list view) + auto quick_sys_select = std::make_shared(mWindow); + quick_sys_select->setState(Settings::getInstance()->getBool("QuickSystemSelect")); + s->addWithLabel("QUICK SYSTEM SELECT", quick_sys_select); + s->addSaveFunc([quick_sys_select] { Settings::getInstance()->setBool("QuickSystemSelect", quick_sys_select->getState()); }); + + // carousel transition option + auto move_carousel = std::make_shared(mWindow); + move_carousel->setState(Settings::getInstance()->getBool("MoveCarousel")); + s->addWithLabel("CAROUSEL TRANSITIONS", move_carousel); + s->addSaveFunc([move_carousel] { + if (move_carousel->getState() + && !Settings::getInstance()->getBool("MoveCarousel") + && PowerSaver::getMode() == PowerSaver::INSTANT) + { + Settings::getInstance()->setString("PowerSaverMode", "default"); + PowerSaver::init(); + } + Settings::getInstance()->setBool("MoveCarousel", move_carousel->getState()); }); - addEntry("UI SETTINGS", 0x777777FF, true, - [this] { - auto s = new GuiSettings(mWindow, "UI SETTINGS"); - - // screensaver time - auto screensaver_time = std::make_shared(mWindow, 0.f, 30.f, 1.f, "m"); - screensaver_time->setValue((float)(Settings::getInstance()->getInt("ScreenSaverTime") / (1000 * 60))); - s->addWithLabel("SCREENSAVER AFTER", screensaver_time); - s->addSaveFunc([screensaver_time] { Settings::getInstance()->setInt("ScreenSaverTime", (int)round(screensaver_time->getValue()) * (1000 * 60)); }); - - // screensaver behavior - auto screensaver_behavior = std::make_shared< OptionListComponent >(mWindow, "TRANSITION STYLE", false); - std::vector screensavers; - screensavers.push_back("dim"); - screensavers.push_back("black"); - for(auto it = screensavers.begin(); it != screensavers.end(); it++) - screensaver_behavior->add(*it, *it, Settings::getInstance()->getString("ScreenSaverBehavior") == *it); - s->addWithLabel("SCREENSAVER BEHAVIOR", screensaver_behavior); - s->addSaveFunc([screensaver_behavior] { Settings::getInstance()->setString("ScreenSaverBehavior", screensaver_behavior->getSelected()); }); - - // framerate - auto framerate = std::make_shared(mWindow); - framerate->setState(Settings::getInstance()->getBool("DrawFramerate")); - s->addWithLabel("SHOW FRAMERATE", framerate); - s->addSaveFunc([framerate] { Settings::getInstance()->setBool("DrawFramerate", framerate->getState()); }); - - // show help - auto show_help = std::make_shared(mWindow); - show_help->setState(Settings::getInstance()->getBool("ShowHelpPrompts")); - s->addWithLabel("ON-SCREEN HELP", show_help); - s->addSaveFunc([show_help] { Settings::getInstance()->setBool("ShowHelpPrompts", show_help->getState()); }); - - // quick system select (left/right in game list view) - auto quick_sys_select = std::make_shared(mWindow); - quick_sys_select->setState(Settings::getInstance()->getBool("QuickSystemSelect")); - s->addWithLabel("QUICK SYSTEM SELECT", quick_sys_select); - s->addSaveFunc([quick_sys_select] { Settings::getInstance()->setBool("QuickSystemSelect", quick_sys_select->getState()); }); - - // transition style - auto transition_style = std::make_shared< OptionListComponent >(mWindow, "TRANSITION STYLE", false); - std::vector transitions; - transitions.push_back("fade"); - transitions.push_back("slide"); - for(auto it = transitions.begin(); it != transitions.end(); it++) - transition_style->add(*it, *it, Settings::getInstance()->getString("TransitionStyle") == *it); - s->addWithLabel("TRANSITION STYLE", transition_style); - s->addSaveFunc([transition_style] { Settings::getInstance()->setString("TransitionStyle", transition_style->getSelected()); }); - - // theme set - auto themeSets = ThemeData::getThemeSets(); - - if(!themeSets.empty()) + // transition style + auto transition_style = std::make_shared< OptionListComponent >(mWindow, "TRANSITION STYLE", false); + std::vector transitions; + transitions.push_back("fade"); + transitions.push_back("slide"); + transitions.push_back("instant"); + for(auto it = transitions.cbegin(); it != transitions.cend(); it++) + transition_style->add(*it, *it, Settings::getInstance()->getString("TransitionStyle") == *it); + s->addWithLabel("TRANSITION STYLE", transition_style); + s->addSaveFunc([transition_style] { + if (Settings::getInstance()->getString("TransitionStyle") == "instant" + && transition_style->getSelected() != "instant" + && PowerSaver::getMode() == PowerSaver::INSTANT) + { + Settings::getInstance()->setString("PowerSaverMode", "default"); + PowerSaver::init(); + } + Settings::getInstance()->setString("TransitionStyle", transition_style->getSelected()); + }); + + // theme set + auto themeSets = ThemeData::getThemeSets(); + + if(!themeSets.empty()) + { + std::map::const_iterator selectedSet = themeSets.find(Settings::getInstance()->getString("ThemeSet")); + if(selectedSet == themeSets.cend()) + selectedSet = themeSets.cbegin(); + + auto theme_set = std::make_shared< OptionListComponent >(mWindow, "THEME SET", false); + for(auto it = themeSets.cbegin(); it != themeSets.cend(); it++) + theme_set->add(it->first, it->first, it == selectedSet); + s->addWithLabel("THEME SET", theme_set); + + Window* window = mWindow; + s->addSaveFunc([window, theme_set] + { + bool needReload = false; + std::string oldTheme = Settings::getInstance()->getString("ThemeSet"); + if(oldTheme != theme_set->getSelected()) + needReload = true; + + Settings::getInstance()->setString("ThemeSet", theme_set->getSelected()); + + if(needReload) { - auto selectedSet = themeSets.find(Settings::getInstance()->getString("ThemeSet")); - if(selectedSet == themeSets.end()) - selectedSet = themeSets.begin(); - - auto theme_set = std::make_shared< OptionListComponent >(mWindow, "THEME SET", false); - for(auto it = themeSets.begin(); it != themeSets.end(); it++) - theme_set->add(it->first, it->first, it == selectedSet); - s->addWithLabel("THEME SET", theme_set); - - Window* window = mWindow; - s->addSaveFunc([window, theme_set] - { - bool needReload = false; - if(Settings::getInstance()->getString("ThemeSet") != theme_set->getSelected()) - needReload = true; - - Settings::getInstance()->setString("ThemeSet", theme_set->getSelected()); - - if(needReload) - ViewController::get()->reloadAll(); // TODO - replace this with some sort of signal-based implementation - }); + Scripting::fireEvent("theme-changed", theme_set->getSelected(), oldTheme); + CollectionSystemManager::get()->updateSystemsList(); + ViewController::get()->reloadAll(true); // TODO - replace this with some sort of signal-based implementation } + }); + } - mWindow->pushGui(s); + // GameList view style + auto gamelist_style = std::make_shared< OptionListComponent >(mWindow, "GAMELIST VIEW STYLE", false); + std::vector styles; + styles.push_back("automatic"); + styles.push_back("basic"); + styles.push_back("detailed"); + styles.push_back("video"); + styles.push_back("grid"); + + for (auto it = styles.cbegin(); it != styles.cend(); it++) + gamelist_style->add(*it, *it, Settings::getInstance()->getString("GamelistViewStyle") == *it); + s->addWithLabel("GAMELIST VIEW STYLE", gamelist_style); + s->addSaveFunc([gamelist_style] { + bool needReload = false; + if (Settings::getInstance()->getString("GamelistViewStyle") != gamelist_style->getSelected()) + needReload = true; + Settings::getInstance()->setString("GamelistViewStyle", gamelist_style->getSelected()); + if (needReload) + ViewController::get()->reloadAll(); }); - addEntry("CONFIGURE INPUT", 0x777777FF, true, - [this] { - mWindow->pushGui(new GuiDetectDevice(mWindow, false, nullptr)); + // Optionally ignore leading articles when sorting game titles + auto ignore_articles = std::make_shared(mWindow); + ignore_articles->setState(Settings::getInstance()->getBool("IgnoreLeadingArticles")); + s->addWithLabel("IGNORE ARTICLES (NAME SORT ONLY)", ignore_articles); + s->addSaveFunc([ignore_articles, window] { + bool articles_are_ignored = Settings::getInstance()->getBool("IgnoreLeadingArticles"); + Settings::getInstance()->setBool("IgnoreLeadingArticles", ignore_articles->getState()); + if (ignore_articles->getState() != articles_are_ignored) + { + //For each system... + for (auto it = SystemData::sSystemVector.cbegin(); it != SystemData::sSystemVector.cend(); it++) + { + //Apply sort recursively + FileData* root = (*it)->getRootFolder(); + root->sort(getSortTypeFromString(root->getSortName())); + + //Notify that the root folder was sorted + ViewController::get()->getGameListView((*it))->onFileChanged(root, FILE_SORTED); + } + + //Display popup to inform user + GuiInfoPopup* popup = new GuiInfoPopup(window, "Files sorted", 4000); + window->setInfoPopup(popup); + } }); - addEntry("QUIT", 0x777777FF, true, - [this] { - auto s = new GuiSettings(mWindow, "QUIT"); - - Window* window = mWindow; + // lb/rb uses full screen size paging instead of -10/+10 steps + auto use_fullscreen_paging = std::make_shared(mWindow); + use_fullscreen_paging->setState(Settings::getInstance()->getBool("UseFullscreenPaging")); + s->addWithLabel("USE FULL SCREEN PAGING FOR LB/RB", use_fullscreen_paging); + s->addSaveFunc([use_fullscreen_paging] { + Settings::getInstance()->setBool("UseFullscreenPaging", use_fullscreen_paging->getState()); + }); - ComponentListRow row; - row.makeAcceptInputHandler([window] { - window->pushGui(new GuiMsgBox(window, "REALLY RESTART?", "YES", - [] { - if(runRestartCommand() != 0) - LOG(LogWarning) << "Restart terminated with non-zero result!"; - }, "NO", nullptr)); - }); - row.addElement(std::make_shared(window, "RESTART SYSTEM", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); - s->addRow(row); + // Optionally start in selected system + auto systemfocus_list = std::make_shared< OptionListComponent >(mWindow, "START ON SYSTEM", false); + systemfocus_list->add("NONE", "", Settings::getInstance()->getString("StartupSystem") == ""); + for (auto it = SystemData::sSystemVector.cbegin(); it != SystemData::sSystemVector.cend(); it++) + { + if ("retropie" != (*it)->getName()) + { + systemfocus_list->add((*it)->getName(), (*it)->getName(), Settings::getInstance()->getString("StartupSystem") == (*it)->getName()); + } + } + s->addWithLabel("START ON SYSTEM", systemfocus_list); + s->addSaveFunc([systemfocus_list] { + Settings::getInstance()->setString("StartupSystem", systemfocus_list->getSelected()); + }); - row.elements.clear(); + // show help + auto show_help = std::make_shared(mWindow); + show_help->setState(Settings::getInstance()->getBool("ShowHelpPrompts")); + s->addWithLabel("ON-SCREEN HELP", show_help); + s->addSaveFunc([show_help] { Settings::getInstance()->setBool("ShowHelpPrompts", show_help->getState()); }); + + // enable filters (ForceDisableFilters) + auto enable_filter = std::make_shared(mWindow); + enable_filter->setState(!Settings::getInstance()->getBool("ForceDisableFilters")); + s->addWithLabel("ENABLE FILTERS", enable_filter); + s->addSaveFunc([enable_filter] { + bool filter_is_enabled = !Settings::getInstance()->getBool("ForceDisableFilters"); + Settings::getInstance()->setBool("ForceDisableFilters", !enable_filter->getState()); + if (enable_filter->getState() != filter_is_enabled) ViewController::get()->ReloadAndGoToStart(); + }); + + // hide start menu in Kid Mode + auto disable_start = std::make_shared(mWindow); + disable_start->setState(Settings::getInstance()->getBool("DisableKidStartMenu")); + s->addWithLabel("DISABLE START MENU IN KID MODE", disable_start); + s->addSaveFunc([disable_start] { Settings::getInstance()->setBool("DisableKidStartMenu", disable_start->getState()); }); + + mWindow->pushGui(s); + +} + +void GuiMenu::openOtherSettings() +{ + auto s = new GuiSettings(mWindow, "OTHER SETTINGS"); + + // maximum vram + auto max_vram = std::make_shared(mWindow, 0.f, 1000.f, 10.f, "Mb"); + max_vram->setValue((float)(Settings::getInstance()->getInt("MaxVRAM"))); + s->addWithLabel("VRAM LIMIT", max_vram); + s->addSaveFunc([max_vram] { Settings::getInstance()->setInt("MaxVRAM", (int)Math::round(max_vram->getValue())); }); + + // power saver + auto power_saver = std::make_shared< OptionListComponent >(mWindow, "POWER SAVER MODES", false); + std::vector modes; + modes.push_back("disabled"); + modes.push_back("default"); + modes.push_back("enhanced"); + modes.push_back("instant"); + for (auto it = modes.cbegin(); it != modes.cend(); it++) + power_saver->add(*it, *it, Settings::getInstance()->getString("PowerSaverMode") == *it); + s->addWithLabel("POWER SAVER MODES", power_saver); + s->addSaveFunc([this, power_saver] { + if (Settings::getInstance()->getString("PowerSaverMode") != "instant" && power_saver->getSelected() == "instant") { + Settings::getInstance()->setString("TransitionStyle", "instant"); + Settings::getInstance()->setBool("MoveCarousel", false); + Settings::getInstance()->setBool("EnableSounds", false); + } + Settings::getInstance()->setString("PowerSaverMode", power_saver->getSelected()); + PowerSaver::init(); + }); + + // gamelists + auto gamelistsSaveMode = std::make_shared< OptionListComponent >(mWindow, "SAVE METADATA", false); + std::vector saveModes; + saveModes.push_back("on exit"); + saveModes.push_back("always"); + saveModes.push_back("never"); + + for(auto it = saveModes.cbegin(); it != saveModes.cend(); it++) + gamelistsSaveMode->add(*it, *it, Settings::getInstance()->getString("SaveGamelistsMode") == *it); + s->addWithLabel("SAVE METADATA", gamelistsSaveMode); + s->addSaveFunc([gamelistsSaveMode] { + Settings::getInstance()->setString("SaveGamelistsMode", gamelistsSaveMode->getSelected()); + }); + + auto parse_gamelists = std::make_shared(mWindow); + parse_gamelists->setState(Settings::getInstance()->getBool("ParseGamelistOnly")); + s->addWithLabel("PARSE GAMESLISTS ONLY", parse_gamelists); + s->addSaveFunc([parse_gamelists] { Settings::getInstance()->setBool("ParseGamelistOnly", parse_gamelists->getState()); }); + + auto local_art = std::make_shared(mWindow); + local_art->setState(Settings::getInstance()->getBool("LocalArt")); + s->addWithLabel("SEARCH FOR LOCAL ART", local_art); + s->addSaveFunc([local_art] { Settings::getInstance()->setBool("LocalArt", local_art->getState()); }); + + // hidden files + auto hidden_files = std::make_shared(mWindow); + hidden_files->setState(Settings::getInstance()->getBool("ShowHiddenFiles")); + s->addWithLabel("SHOW HIDDEN FILES", hidden_files); + s->addSaveFunc([hidden_files] { Settings::getInstance()->setBool("ShowHiddenFiles", hidden_files->getState()); }); + +#ifdef _OMX_ + // Video Player - VideoOmxPlayer + auto omx_player = std::make_shared(mWindow); + omx_player->setState(Settings::getInstance()->getBool("VideoOmxPlayer")); + s->addWithLabel("USE OMX PLAYER (HW ACCELERATED)", omx_player); + s->addSaveFunc([omx_player] + { + // need to reload all views to re-create the right video components + bool needReload = false; + if(Settings::getInstance()->getBool("VideoOmxPlayer") != omx_player->getState()) + needReload = true; + + Settings::getInstance()->setBool("VideoOmxPlayer", omx_player->getState()); + + if(needReload) + ViewController::get()->reloadAll(); + }); + +#endif + + // hidden files + auto background_indexing = std::make_shared(mWindow); + background_indexing->setState(Settings::getInstance()->getBool("BackgroundIndexing")); + s->addWithLabel("INDEX FILES DURING SCREENSAVER", background_indexing); + s->addSaveFunc([background_indexing] { Settings::getInstance()->setBool("BackgroundIndexing", background_indexing->getState()); }); + + // framerate + auto framerate = std::make_shared(mWindow); + framerate->setState(Settings::getInstance()->getBool("DrawFramerate")); + s->addWithLabel("SHOW FRAMERATE", framerate); + s->addSaveFunc([framerate] { Settings::getInstance()->setBool("DrawFramerate", framerate->getState()); }); + + + mWindow->pushGui(s); + +} + +void GuiMenu::openConfigInput() +{ + Window* window = mWindow; + window->pushGui(new GuiMsgBox(window, "ARE YOU SURE YOU WANT TO CONFIGURE INPUT?", "YES", + [window] { + window->pushGui(new GuiDetectDevice(window, false, nullptr)); + }, "NO", nullptr) + ); + +} + +void GuiMenu::openQuitMenu() +{ + auto s = new GuiSettings(mWindow, "QUIT"); + + Window* window = mWindow; + + // command line switch + bool confirm_quit = Settings::getInstance()->getBool("ConfirmQuit"); + + ComponentListRow row; + if (UIModeController::getInstance()->isUIModeFull()) + { + auto static restart_es_fx = []() { + Scripting::fireEvent("quit"); + if (quitES(QuitMode::RESTART)) { + LOG(LogWarning) << "Restart terminated with non-zero result!"; + } + }; + + if (confirm_quit) { row.makeAcceptInputHandler([window] { - window->pushGui(new GuiMsgBox(window, "REALLY SHUTDOWN?", "YES", - [] { - if(runShutdownCommand() != 0) - LOG(LogWarning) << "Shutdown terminated with non-zero result!"; - }, "NO", nullptr)); + window->pushGui(new GuiMsgBox(window, "REALLY RESTART?", "YES", restart_es_fx, "NO", nullptr)); }); - row.addElement(std::make_shared(window, "SHUTDOWN SYSTEM", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); - s->addRow(row); + } else { + row.makeAcceptInputHandler(restart_es_fx); + } + row.addElement(std::make_shared(window, "RESTART EMULATIONSTATION", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + s->addRow(row); + + if(Settings::getInstance()->getBool("ShowExit")) + { + auto static quit_es_fx = [] { + Scripting::fireEvent("quit"); + quitES(); + }; - if(Settings::getInstance()->getBool("ShowExit")) - { - row.elements.clear(); + row.elements.clear(); + if (confirm_quit) { row.makeAcceptInputHandler([window] { - window->pushGui(new GuiMsgBox(window, "REALLY QUIT?", "YES", - [] { - SDL_Event ev; - ev.type = SDL_QUIT; - SDL_PushEvent(&ev); - }, "NO", nullptr)); + window->pushGui(new GuiMsgBox(window, "REALLY QUIT?", "YES", quit_es_fx, "NO", nullptr)); }); - row.addElement(std::make_shared(window, "QUIT EMULATIONSTATION", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); - s->addRow(row); + } else { + row.makeAcceptInputHandler(quit_es_fx); } + row.addElement(std::make_shared(window, "QUIT EMULATIONSTATION", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + s->addRow(row); + } + } - mWindow->pushGui(s); - }); + auto static reboot_sys_fx = [] { + Scripting::fireEvent("quit", "reboot"); + Scripting::fireEvent("reboot"); + if (quitES(QuitMode::REBOOT)) { + LOG(LogWarning) << "Restart terminated with non-zero result!"; + } + }; + + row.elements.clear(); + if (confirm_quit) { + row.makeAcceptInputHandler([window] { + window->pushGui(new GuiMsgBox(window, "REALLY RESTART?", "YES", {reboot_sys_fx}, "NO", nullptr)); + }); + } else { + row.makeAcceptInputHandler(reboot_sys_fx); + } + row.addElement(std::make_shared(window, "RESTART SYSTEM", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + s->addRow(row); + + auto static shutdown_sys_fx = [] { + Scripting::fireEvent("quit", "shutdown"); + Scripting::fireEvent("shutdown"); + if (quitES(QuitMode::SHUTDOWN)) { + LOG(LogWarning) << "Shutdown terminated with non-zero result!"; + } + }; + + row.elements.clear(); + if (confirm_quit) { + row.makeAcceptInputHandler([window] { + window->pushGui(new GuiMsgBox(window, "REALLY SHUTDOWN?", "YES", shutdown_sys_fx, "NO", nullptr)); + }); + } else { + row.makeAcceptInputHandler(shutdown_sys_fx); + } + row.addElement(std::make_shared(window, "SHUTDOWN SYSTEM", Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + s->addRow(row); + mWindow->pushGui(s); +} - mVersion.setFont(Font::get(FONT_SIZE_SMALL)); - mVersion.setColor(0xC6C6C6FF); - mVersion.setText("EMULATIONSTATION V" + strToUpper(PROGRAM_VERSION_STRING)); - mVersion.setAlignment(ALIGN_CENTER); +void GuiMenu::addVersionInfo() +{ + std::string buildDate = (Settings::getInstance()->getBool("Debug") ? std::string( " (" + Utils::String::toUpper(PROGRAM_BUILT_STRING) + ")") : ("")); - addChild(&mMenu); + mVersion.setFont(Font::get(FONT_SIZE_SMALL)); + mVersion.setColor(0x5E5E5EFF); + mVersion.setText("EMULATIONSTATION V" + Utils::String::toUpper(PROGRAM_VERSION_STRING) + buildDate); + mVersion.setHorizontalAlignment(ALIGN_CENTER); addChild(&mVersion); +} - setSize(mMenu.getSize()); - setPosition((Renderer::getScreenWidth() - mSize.x()) / 2, Renderer::getScreenHeight() * 0.15f); +void GuiMenu::openScreensaverOptions() { + mWindow->pushGui(new GuiGeneralScreensaverOptions(mWindow, "SCREENSAVER SETTINGS")); +} + +void GuiMenu::openCollectionSystemSettings() { + mWindow->pushGui(new GuiCollectionSystemsOptions(mWindow)); } void GuiMenu::onSizeChanged() @@ -237,7 +627,7 @@ void GuiMenu::onSizeChanged() void GuiMenu::addEntry(const char* name, unsigned int color, bool add_arrow, const std::function& func) { std::shared_ptr font = Font::get(FONT_SIZE_MEDIUM); - + // populate the list ComponentListRow row; row.addElement(std::make_shared(mWindow, name, font, color), true); @@ -247,7 +637,7 @@ void GuiMenu::addEntry(const char* name, unsigned int color, bool add_arrow, con std::shared_ptr bracket = makeArrow(mWindow); row.addElement(bracket, false); } - + row.makeAcceptInputHandler(func); mMenu.addRow(row); @@ -267,6 +657,13 @@ bool GuiMenu::input(InputConfig* config, Input input) return false; } +HelpStyle GuiMenu::getHelpStyle() +{ + HelpStyle style = HelpStyle(); + style.applyTheme(ViewController::get()->getState().getSystem()->getTheme(), "system"); + return style; +} + std::vector GuiMenu::getHelpPrompts() { std::vector prompts; diff --git a/es-app/src/guis/GuiMenu.h b/es-app/src/guis/GuiMenu.h index eff9ebd3f4..f251a97123 100644 --- a/es-app/src/guis/GuiMenu.h +++ b/es-app/src/guis/GuiMenu.h @@ -1,8 +1,11 @@ #pragma once +#ifndef ES_APP_GUIS_GUI_MENU_H +#define ES_APP_GUIS_GUI_MENU_H -#include "GuiComponent.h" #include "components/MenuComponent.h" -#include +#include "GuiComponent.h" +#include "components/OptionListComponent.h" +#include "FileData.h" class GuiMenu : public GuiComponent { @@ -12,10 +15,25 @@ class GuiMenu : public GuiComponent bool input(InputConfig* config, Input input) override; void onSizeChanged() override; std::vector getHelpPrompts() override; + HelpStyle getHelpStyle() override; private: void addEntry(const char* name, unsigned int color, bool add_arrow, const std::function& func); + void addVersionInfo(); + void openCollectionSystemSettings(); + void openConfigInput(); + void openOtherSettings(); + void openQuitMenu(); + void openScraperSettings(); + void openScreensaverOptions(); + void openSoundSettings(); + void openUISettings(); MenuComponent mMenu; TextComponent mVersion; + + typedef OptionListComponent SortList; + std::shared_ptr mListSort; }; + +#endif // ES_APP_GUIS_GUI_MENU_H diff --git a/es-app/src/guis/GuiMetaDataEd.cpp b/es-app/src/guis/GuiMetaDataEd.cpp index 11367c2ad2..f4dddd7f5c 100644 --- a/es-app/src/guis/GuiMetaDataEd.cpp +++ b/es-app/src/guis/GuiMetaDataEd.cpp @@ -1,39 +1,48 @@ #include "guis/GuiMetaDataEd.h" -#include "Renderer.h" -#include "Log.h" -#include "components/AsyncReqComponent.h" -#include "Settings.h" -#include "views/ViewController.h" -#include "guis/GuiGameScraper.h" -#include "guis/GuiMsgBox.h" -#include -#include "components/TextEditComponent.h" +#include +#include "components/ButtonComponent.h" +#include "components/ComponentList.h" #include "components/DateTimeComponent.h" +#include "components/DateTimeEditComponent.h" +#include "components/MenuComponent.h" #include "components/RatingComponent.h" +#include "components/SwitchComponent.h" +#include "components/TextComponent.h" +#include "guis/GuiGameScraper.h" +#include "guis/GuiMsgBox.h" #include "guis/GuiTextEditPopup.h" +#include "resources/Font.h" +#include "utils/StringUtil.h" +#include "views/ViewController.h" +#include "CollectionSystemManager.h" +#include "FileData.h" +#include "FileFilterIndex.h" +#include "SystemData.h" +#include "Window.h" +#include "Log.h" -using namespace Eigen; - -GuiMetaDataEd::GuiMetaDataEd(Window* window, MetaDataList* md, const std::vector& mdd, ScraperSearchParams scraperParams, - const std::string& header, std::function saveCallback, std::function deleteFunc) : GuiComponent(window), - mScraperParams(scraperParams), +GuiMetaDataEd::GuiMetaDataEd(Window* window, MetaDataList* md, const std::vector& mdd, ScraperSearchParams scraperParams, + const std::string& /*header*/, std::function saveCallback, std::function deleteFunc) : GuiComponent(window), + mScraperParams(scraperParams), - mBackground(window, ":/frame.png"), + mBackground(window, ":/frame.png"), mGrid(window, Vector2i(1, 3)), - mMetaDataDecl(mdd), - mMetaData(md), - mSavedCallback(saveCallback), mDeleteFunc(deleteFunc) + mMetaDataDecl(mdd), + mMetaData(md), + mSavedCallback(saveCallback), + mDeleteFunc(deleteFunc) { addChild(&mBackground); addChild(&mGrid); mHeaderGrid = std::make_shared(mWindow, Vector2i(1, 5)); - + mTitle = std::make_shared(mWindow, "EDIT METADATA", Font::get(FONT_SIZE_LARGE), 0x555555FF, ALIGN_CENTER); - mSubtitle = std::make_shared(mWindow, strToUpper(scraperParams.game->getPath().filename().generic_string()), - Font::get(FONT_SIZE_SMALL), 0x777777FF, ALIGN_CENTER); + std::string tgt = md->getType() == GAME_METADATA ? "GAME" : "FOLDER"; + std::string subt = tgt + ": " + Utils::String::toUpper(Utils::FileSystem::getFileName(scraperParams.game->getPath())); + mSubtitle = std::make_shared(mWindow, subt, Font::get(FONT_SIZE_SMALL), 0x777777FF, ALIGN_CENTER); mHeaderGrid->setEntry(mTitle, Vector2i(0, 1), false, true); mHeaderGrid->setEntry(mSubtitle, Vector2i(0, 3), false, true); @@ -43,22 +52,32 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, MetaDataList* md, const std::vector mGrid.setEntry(mList, Vector2i(0, 1), true, true); // populate list - for(auto iter = mdd.begin(); iter != mdd.end(); iter++) + for(auto iter = mdd.cbegin(); iter != mdd.cend(); iter++) { - std::shared_ptr ed; - // don't add statistics if(iter->isStatistic) continue; + std::shared_ptr ed; + // create ed and add it (and any related components) to mMenu // ed's value will be set below ComponentListRow row; - auto lbl = std::make_shared(mWindow, strToUpper(iter->displayName), Font::get(FONT_SIZE_SMALL), 0x777777FF); + auto lblTxt = Utils::String::toUpper(iter->displayName); + if (iter->type == MD_DATE) { + lblTxt += " (" + DateTimeComponent::getDateformatTip() + ")"; + } + auto lbl = std::make_shared(mWindow, lblTxt, Font::get(FONT_SIZE_SMALL), 0x777777FF); row.addElement(lbl, true); // label switch(iter->type) { + case MD_BOOL: + { + ed = std::make_shared(window); + row.addElement(ed, false, true); + break; + } case MD_RATING: { ed = std::make_shared(window); @@ -77,21 +96,21 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, MetaDataList* md, const std::vector } case MD_DATE: { - ed = std::make_shared(window); + ed = std::make_shared(window); row.addElement(ed, false); auto spacer = std::make_shared(mWindow); spacer->setSize(Renderer::getScreenWidth() * 0.0025f, 0); row.addElement(spacer, false); - // pass input to the actual DateTimeComponent instead of the spacer + // pass input to the actual DateTimeEditComponent instead of the spacer row.input_handler = std::bind(&GuiComponent::input, ed.get(), std::placeholders::_1, std::placeholders::_2); break; } case MD_TIME: { - ed = std::make_shared(window, DateTimeComponent::DISP_RELATIVE_TO_NOW); + ed = std::make_shared(window, DateTimeEditComponent::DISP_RELATIVE_TO_NOW); row.addElement(ed, false); break; } @@ -100,15 +119,17 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, MetaDataList* md, const std::vector { // MD_STRING ed = std::make_shared(window, "", Font::get(FONT_SIZE_SMALL, FONT_PATH_LIGHT), 0x777777FF, ALIGN_RIGHT); + const float height = lbl->getSize().y() * 0.71f; + ed->setSize(0, height); row.addElement(ed, true); - + auto spacer = std::make_shared(mWindow); spacer->setSize(Renderer::getScreenWidth() * 0.005f, 0); row.addElement(spacer, false); auto bracket = std::make_shared(mWindow); bracket->setImage(":/arrow.svg"); - bracket->setResize(Eigen::Vector2f(0, lbl->getFont()->getLetterHeight())); + bracket->setResize(Vector2f(0, lbl->getFont()->getLetterHeight())); row.addElement(bracket, false); bool multiLine = iter->type == MD_MULTILINE_STRING; @@ -129,7 +150,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, MetaDataList* md, const std::vector std::vector< std::shared_ptr > buttons; - if(!scraperParams.system->hasPlatformId(PlatformIds::PLATFORM_IGNORE)) + if(md->getType() == GAME_METADATA && !scraperParams.system->hasPlatformId(PlatformIds::PLATFORM_IGNORE)) buttons.push_back(std::make_shared(mWindow, "SCRAPE", "scrape", std::bind(&GuiMetaDataEd::fetch, this))); buttons.push_back(std::make_shared(mWindow, "SAVE", "save", [&] { save(); delete this; })); @@ -138,7 +159,7 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, MetaDataList* md, const std::vector if(mDeleteFunc) { auto deleteFileAndSelf = [&] { mDeleteFunc(); delete this; }; - auto deleteBtnFunc = [this, deleteFileAndSelf] { mWindow->pushGui(new GuiMsgBox(mWindow, "THIS WILL DELETE A FILE!\nARE YOU SURE?", "YES", deleteFileAndSelf, "NO", nullptr)); }; + auto deleteBtnFunc = [this, deleteFileAndSelf] { mWindow->pushGui(new GuiMsgBox(mWindow, "THIS WILL DELETE THE ACTUAL GAME FILE(S)!\nARE YOU SURE?", "YES", deleteFileAndSelf, "NO", nullptr)); }; buttons.push_back(std::make_shared(mWindow, "DELETE", "delete", deleteBtnFunc)); } @@ -146,7 +167,8 @@ GuiMetaDataEd::GuiMetaDataEd(Window* window, MetaDataList* md, const std::vector mGrid.setEntry(mButtons, Vector2i(0, 2), true, false); // resize + center - setSize(Renderer::getScreenWidth() * 0.5f, Renderer::getScreenHeight() * 0.82f); + float width = (float)Math::min(Renderer::getScreenHeight(), (int)(Renderer::getScreenWidth() * 0.90f)); + setSize(width, Renderer::getScreenHeight() * 0.82f); setPosition((Renderer::getScreenWidth() - mSize.x()) / 2, (Renderer::getScreenHeight() - mSize.y()) / 2); } @@ -170,16 +192,32 @@ void GuiMetaDataEd::onSizeChanged() void GuiMetaDataEd::save() { - for(unsigned int i = 0; i < mEditors.size(); i++) + // remove game from index + mScraperParams.system->getIndex()->removeFromIndex(mScraperParams.game); + + assert(mMetaDataDecl.size() >= mEditors.size()); + // there may be less editfields than metadata entries as + // statistic md fields are not shown to the user. + // md statistic fields are not necessarily at the end of the md list + int edIdx = 0; + for(auto &mdd : mMetaDataDecl) { - if(mMetaDataDecl.at(i).isStatistic) - continue; - - mMetaData->set(mMetaDataDecl.at(i).key, mEditors.at(i)->getValue()); + if(!mdd.isStatistic) { + mMetaData->set(mdd.key, mEditors.at(edIdx)->getValue()); + edIdx++; + } } + // enter game in index + mScraperParams.system->getIndex()->addToIndex(mScraperParams.game); + if(mSavedCallback) mSavedCallback(); + + // update respective Collection Entries + CollectionSystemManager::get()->refreshCollectionSystems(mScraperParams.game); + + mScraperParams.system->onMetaDataSavePoint(); } void GuiMetaDataEd::fetch() @@ -190,29 +228,21 @@ void GuiMetaDataEd::fetch() void GuiMetaDataEd::fetchDone(const ScraperSearchResult& result) { - for(unsigned int i = 0; i < mEditors.size(); i++) + assert(mMetaDataDecl.size() >= mEditors.size()); + int edIdx = 0; + for(auto &mdd : mMetaDataDecl) { - if(mMetaDataDecl.at(i).isStatistic) + if(mdd.isStatistic) continue; - const std::string& key = mMetaDataDecl.at(i).key; - mEditors.at(i)->setValue(result.mdl.get(key)); + mEditors.at(edIdx)->setValue(result.mdl.get(mdd.key)); + edIdx++; } } void GuiMetaDataEd::close(bool closeAllWindows) { - // find out if the user made any changes - bool dirty = false; - for(unsigned int i = 0; i < mEditors.size(); i++) - { - const std::string& key = mMetaDataDecl.at(i).key; - if(mMetaData->get(key) != mEditors.at(i)->getValue()) - { - dirty = true; - break; - } - } + bool dirty = hasChanges(); std::function closeFunc; if(!closeAllWindows) @@ -226,11 +256,10 @@ void GuiMetaDataEd::close(bool closeAllWindows) }; } - if(dirty) { // changes were made, ask if the user wants to save them - mWindow->pushGui(new GuiMsgBox(mWindow, + mWindow->pushGui(new GuiMsgBox(mWindow, "SAVE CHANGES?", "YES", [this, closeFunc] { save(); closeFunc(); }, "NO", closeFunc @@ -240,6 +269,49 @@ void GuiMetaDataEd::close(bool closeAllWindows) } } +bool GuiMetaDataEd::hasChanges() +{ + assert(mMetaDataDecl.size() >= mEditors.size()); + // find out if the user made any changes + int edIdx = 0; + for(auto &mdd : mMetaDataDecl) + { + if(!mdd.isStatistic) + { + std::string gamelistVal = mMetaData->get(mdd.key); + std::string editorVal = mEditors.at(edIdx++)->getValue(); + if (mdd.key == "rating") + { + // needed to catch "0", "0.0" or "." (and "1.0") from gamelist string rating + // getValue() of RatingComponent returns "0" for floats 0, 0.0; "0." for . + // and "1" for float 1.0 + // convert to float and compare to avoid false "Save Changes" prompt + bool ok; + if (to_float(gamelistVal, ok) != to_float(editorVal, ok)) + return true; + } + else + { + // string compare + if (gamelistVal != editorVal) + return true; + } + } + } + return false; +} + +float GuiMetaDataEd::to_float(const std::string& str, bool& ok) +{ + errno = 0; + char* end = nullptr; + float f = std::strtof(str.c_str(), &end); + ok = !str.empty() && !*end && errno == 0; + if (!ok) + LOG(LogWarning) << "Conversion of input string '" << str << "' to float failed or is incomplete. Return value: " << f; + return f; +} + bool GuiMetaDataEd::input(InputConfig* config, Input input) { if(GuiComponent::input(config, input)) diff --git a/es-app/src/guis/GuiMetaDataEd.h b/es-app/src/guis/GuiMetaDataEd.h index 923696428d..51d4d095a3 100644 --- a/es-app/src/guis/GuiMetaDataEd.h +++ b/es-app/src/guis/GuiMetaDataEd.h @@ -1,18 +1,23 @@ #pragma once +#ifndef ES_APP_GUIS_GUI_META_DATA_ED_H +#define ES_APP_GUIS_GUI_META_DATA_ED_H +#include "components/ComponentGrid.h" +#include "components/NinePatchComponent.h" +#include "scrapers/Scraper.h" #include "GuiComponent.h" -#include "components/MenuComponent.h" #include "MetaData.h" -#include "scrapers/Scraper.h" -#include + +class ComponentList; +class TextComponent; class GuiMetaDataEd : public GuiComponent { public: - GuiMetaDataEd(Window* window, MetaDataList* md, const std::vector& mdd, ScraperSearchParams params, + GuiMetaDataEd(Window* window, MetaDataList* md, const std::vector& mdd, ScraperSearchParams params, const std::string& header, std::function savedCallback, std::function deleteFunc); - + bool input(InputConfig* config, Input input) override; void onSizeChanged() override; virtual std::vector getHelpPrompts() override; @@ -22,10 +27,12 @@ class GuiMetaDataEd : public GuiComponent void fetch(); void fetchDone(const ScraperSearchResult& result); void close(bool closeAllWindows); + bool hasChanges(); + float to_float(const std::string& str, bool& ok); NinePatchComponent mBackground; ComponentGrid mGrid; - + std::shared_ptr mTitle; std::shared_ptr mSubtitle; std::shared_ptr mHeaderGrid; @@ -41,3 +48,5 @@ class GuiMetaDataEd : public GuiComponent std::function mSavedCallback; std::function mDeleteFunc; }; + +#endif // ES_APP_GUIS_GUI_META_DATA_ED_H diff --git a/es-app/src/guis/GuiRandomCollectionOptions.cpp b/es-app/src/guis/GuiRandomCollectionOptions.cpp new file mode 100644 index 0000000000..9f520213a7 --- /dev/null +++ b/es-app/src/guis/GuiRandomCollectionOptions.cpp @@ -0,0 +1,228 @@ +#include "guis/GuiRandomCollectionOptions.h" + +#include "GuiRandomCollectionOptions.h" +#include "components/OptionListComponent.h" +#include "components/SwitchComponent.h" +#include "guis/GuiSettings.h" +#include "guis/GuiTextEditPopup.h" +#include "utils/StringUtil.h" +#include "views/ViewController.h" +#include "CollectionSystemManager.h" +#include "SystemData.h" +#include "Window.h" + +GuiRandomCollectionOptions::GuiRandomCollectionOptions(Window* window) : GuiComponent(window), mMenu(window, "RANDOM COLLECTION") +{ + customCollectionLists.clear(); + autoCollectionLists.clear(); + systemLists.clear(); + mNeedsCollectionRefresh = false; + + initializeMenu(); +} + +void GuiRandomCollectionOptions::initializeMenu() +{ + // get collections + addEntry("INCLUDE SYSTEMS", 0x777777FF, true, [this] { selectSystems(); }); + addEntry("INCLUDE AUTO COLLECTIONS", 0x777777FF, true, [this] { selectAutoCollections(); }); + addEntry("INCLUDE CUSTOM COLLECTIONS", 0x777777FF, true, [this] { selectCustomCollections(); }); + + // Add option to exclude games from a collection + exclusionCollection = std::make_shared< OptionListComponent >(mWindow, "EXCLUDE GAMES FROM", false); + + // Add default option + exclusionCollection->add("", "", Settings::getInstance()->getString("RandomCollectionExclusionCollection") == ""); + + std::map customSystems = CollectionSystemManager::get()->getCustomCollectionSystems(); + // add all enabled Custom Systems + for(std::map::const_iterator it = customSystems.cbegin() ; it != customSystems.cend() ; it++ ) + { + exclusionCollection->add(it->second.decl.longName, it->second.decl.name, Settings::getInstance()->getString("RandomCollectionExclusionCollection") == it->second.decl.name); + } + + mMenu.addWithLabel("EXCLUDE GAMES FROM", exclusionCollection); + + // Add option to trim random collection items + trimRandom = std::make_shared(mWindow, "MAX GAMES", false); + + // Add default entry + int maxGames = Settings::getInstance()->getInt("RandomCollectionMaxGames"); + trimRandom->add("ALL", 0, maxGames == 0); + + // add limit values for size of random collection + for(int i = 5; i <= 50; i = i+5) + { + trimRandom->add(std::to_string(i), i, maxGames == i); + } + + mMenu.addWithLabel("MAX GAMES", trimRandom); + + addChild(&mMenu); + + mMenu.addButton("OK", "ok", std::bind(&GuiRandomCollectionOptions::saveSettings, this)); + mMenu.addButton("CANCEL", "cancel", [&] { delete this; }); + + mMenu.setPosition((Renderer::getScreenWidth() - mMenu.getSize().x()) / 2, Renderer::getScreenHeight() * 0.15f); +} + +void GuiRandomCollectionOptions::addEntry(const char* name, unsigned int color, bool add_arrow, const std::function& func) +{ + std::shared_ptr font = Font::get(FONT_SIZE_MEDIUM); + + // populate the list + ComponentListRow row; + row.addElement(std::make_shared(mWindow, name, font, color), true); + + if(add_arrow) + { + std::shared_ptr bracket = makeArrow(mWindow); + row.addElement(bracket, false); + } + + row.makeAcceptInputHandler(func); + + mMenu.addRow(row); +} + +void GuiRandomCollectionOptions::selectSystems() +{ + std::map systems; + for(auto &sys : SystemData::sSystemVector) + { + // we won't iterate all collections + if (sys->isGameSystem() && !sys->isCollection()) + { + CollectionSystemDecl sysDecl; + sysDecl.name = sys->getName(); + sysDecl.longName = sys->getFullName(); + + CollectionSystemData newCollectionData; + newCollectionData.system = sys; + newCollectionData.decl = sysDecl; + newCollectionData.isEnabled = true; + + systems[sysDecl.name] = newCollectionData; + } + } + selectEntries(systems, "RandomCollectionSystems", DEFAULT_RANDOM_SYSTEM_GAMES, &systemLists); +} + +void GuiRandomCollectionOptions::selectAutoCollections() +{ + selectEntries(CollectionSystemManager::get()->getAutoCollectionSystems(), "RandomCollectionSystemsAuto", DEFAULT_RANDOM_COLLECTIONS_GAMES, &autoCollectionLists); +} + +void GuiRandomCollectionOptions::selectCustomCollections() +{ + selectEntries(CollectionSystemManager::get()->getCustomCollectionSystems(), "RandomCollectionSystemsCustom", DEFAULT_RANDOM_COLLECTIONS_GAMES, &customCollectionLists); +} + +GuiRandomCollectionOptions::~GuiRandomCollectionOptions() +{ + +} + +void GuiRandomCollectionOptions::selectEntries(std::map collection, std::string settingsLabel, int defaultValue, std::vector< SystemGames>* results) { + auto s = new GuiSettings(mWindow, "INCLUDE GAMES FROM"); + + std::map initValues = Settings::getInstance()->getMap(settingsLabel); + + results->clear(); + + for(auto &c : collection) + { + CollectionSystemData csd = c.second; + if (csd.system != CollectionSystemManager::get()->getRandomCollection()) + { + ComponentListRow row; + + std::string label = csd.decl.longName; + int selectedValue = defaultValue; + + if (initValues.find(label) != initValues.end()) + { + int maxForSys = initValues[label]; + // we won't add more than the max and less than 0 + selectedValue = Math::max(Math::min(RANDOM_SYSTEM_MAX, maxForSys), 0); + mNeedsCollectionRefresh |= selectedValue != maxForSys; // force overwrite of outlier in settings + } + + initValues[label] = selectedValue; + + std::shared_ptr colItems = std::make_shared(mWindow, label, false); + for (int i = 0; i <= RANDOM_SYSTEM_MAX; i++) + { + colItems->add(std::to_string(i), i, i == selectedValue); + } + row.addElement(std::make_shared(mWindow, Utils::String::toUpper(label), Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.addElement(colItems, false); + + s->addRow(row); + SystemGames sys; + sys.name = label; + sys.gamesSelection = colItems; + results->push_back(sys); + } + + } + + setSize((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + s->setPosition((mSize.x() - s->getSize().x()) / 2, (mSize.y() - s->getSize().y()) / 2); + s->addSaveFunc([this, settingsLabel, initValues, results] { applyGroupSettings(settingsLabel, initValues, results); }); + mWindow->pushGui(s); +} + +void GuiRandomCollectionOptions::applyGroupSettings(std::string settingsLabel, const std::map &initialValues, std::vector *results) +{ + std::map currentValues; + for (auto it = results->begin(); it != results->end(); ++it) + { + currentValues[(*it).name] = (*it).gamesSelection->getSelected(); + } + if (currentValues != initialValues) + { + mNeedsCollectionRefresh = true; + Settings::getInstance()->setMap(settingsLabel, currentValues); + } +} + +void GuiRandomCollectionOptions::saveSettings() +{ + int curTrim = trimRandom->getSelected(); + int prevTrim = Settings::getInstance()->getInt("RandomCollectionMaxGames"); + Settings::getInstance()->setInt("RandomCollectionMaxGames", curTrim); + + std::string curExclusion = exclusionCollection->getSelected(); + std::string prevExclusion = Settings::getInstance()->getString("RandomCollectionExclusionCollection"); + Settings::getInstance()->setString("RandomCollectionExclusionCollection", curExclusion); + + mNeedsCollectionRefresh |= (curTrim != prevTrim || curExclusion != prevExclusion); + + if (mNeedsCollectionRefresh) + { + Settings::getInstance()->saveFile(); + CollectionSystemManager::get()->recreateCollection(CollectionSystemManager::get()->getRandomCollection()); + } + + delete this; +} + +bool GuiRandomCollectionOptions::input(InputConfig* config, Input input) +{ + bool consumed = GuiComponent::input(config, input); + if(consumed) + return true; + + if(config->isMappedTo("b", input) && input.value != 0) + saveSettings(); + + return false; +} + +std::vector GuiRandomCollectionOptions::getHelpPrompts() +{ + std::vector prompts = mMenu.getHelpPrompts(); + prompts.push_back(HelpPrompt("b", "back")); + return prompts; +} diff --git a/es-app/src/guis/GuiRandomCollectionOptions.h b/es-app/src/guis/GuiRandomCollectionOptions.h new file mode 100644 index 0000000000..53bf50bd8b --- /dev/null +++ b/es-app/src/guis/GuiRandomCollectionOptions.h @@ -0,0 +1,54 @@ +#pragma once +#ifndef ES_APP_GUIS_GUI_RANDOM_COLLECTION_OPTIONS_H +#define ES_APP_GUIS_GUI_RANDOM_COLLECTION_OPTIONS_H + +#include "components/MenuComponent.h" + + +template +class OptionListComponent; +class SwitchComponent; +class SystemData; +class GuiSettings; +struct CollectionSystemData; + +typedef OptionListComponent NumberList; +struct SystemGames +{ + std::string name; + std::shared_ptr gamesSelection; +}; + +class GuiRandomCollectionOptions : public GuiComponent +{ +public: + GuiRandomCollectionOptions(Window* window); + ~GuiRandomCollectionOptions(); + bool input(InputConfig* config, Input input) override; + + virtual std::vector getHelpPrompts() override; + +private: + void initializeMenu(); + void saveSettings(); + void applyGroupSettings(std::string settingsLabel, const std::map &initialValues, std::vector* results); + void addSystemsToMenu(); + void addEntry(const char* name, unsigned int color, bool add_arrow, const std::function& func); + void selectEntries(std::map collection, std::string settingsLabel, int defaultValue, std::vector< SystemGames>* results); + + void selectSystems(); + void selectAutoCollections(); + void selectCustomCollections(); + + bool mNeedsCollectionRefresh; + + std::vector< SystemGames> customCollectionLists; + std::vector< SystemGames> autoCollectionLists; + std::vector< SystemGames> systemLists; + std::shared_ptr< NumberList> trimRandom; + std::shared_ptr< OptionListComponent > exclusionCollection; + MenuComponent mMenu; + SystemData* mSystem; +}; + +#endif // ES_APP_GUIS_GUI_RANDOM_COLLECTION_OPTIONS_H diff --git a/es-app/src/guis/GuiScraperMulti.cpp b/es-app/src/guis/GuiScraperMulti.cpp index afbfe0a3d1..28b87db40f 100644 --- a/es-app/src/guis/GuiScraperMulti.cpp +++ b/es-app/src/guis/GuiScraperMulti.cpp @@ -1,19 +1,18 @@ #include "guis/GuiScraperMulti.h" -#include "Renderer.h" -#include "Log.h" -#include "views/ViewController.h" -#include "Gamelist.h" -#include "components/TextComponent.h" #include "components/ButtonComponent.h" +#include "components/MenuComponent.h" #include "components/ScraperSearchComponent.h" -#include "components/MenuComponent.h" // for makeButtonGrid +#include "components/TextComponent.h" #include "guis/GuiMsgBox.h" +#include "views/ViewController.h" +#include "Gamelist.h" +#include "PowerSaver.h" +#include "SystemData.h" +#include "Window.h" -using namespace Eigen; - -GuiScraperMulti::GuiScraperMulti(Window* window, const std::queue& searches, bool approveResults) : - GuiComponent(window), mBackground(window, ":/frame.png"), mGrid(window, Vector2i(1, 5)), +GuiScraperMulti::GuiScraperMulti(Window* window, const std::queue& searches, bool approveResults) : + GuiComponent(window), mBackground(window, ":/frame.png"), mGrid(window, Vector2i(1, 5)), mSearchQueue(searches) { assert(mSearchQueue.size()); @@ -21,7 +20,10 @@ GuiScraperMulti::GuiScraperMulti(Window* window, const std::queue(mWindow, "subtitle text", Font::get(FONT_SIZE_SMALL), 0x888888FF, ALIGN_CENTER); mGrid.setEntry(mSubtitle, Vector2i(0, 2), false, true); - mSearchComp = std::make_shared(mWindow, + mSearchComp = std::make_shared(mWindow, approveResults ? ScraperSearchComponent::ALWAYS_ACCEPT_MATCHING_CRC : ScraperSearchComponent::ALWAYS_ACCEPT_FIRST_RESULT); mSearchComp->setAcceptCallback(std::bind(&GuiScraperMulti::acceptResult, this, std::placeholders::_1)); mSearchComp->setSkipCallback(std::bind(&GuiScraperMulti::skip, this)); @@ -47,9 +49,9 @@ GuiScraperMulti::GuiScraperMulti(Window* window, const std::queue(mWindow, "INPUT", "search", [&] { - mSearchComp->openInputScreen(mSearchQueue.front()); - mGrid.resetCursor(); + buttons.push_back(std::make_shared(mWindow, "INPUT", "search", [&] { + mSearchComp->openInputScreen(mSearchQueue.front()); + mGrid.resetCursor(); })); buttons.push_back(std::make_shared(mWindow, "SKIP", "skip", [&] { @@ -72,7 +74,7 @@ GuiScraperMulti::GuiScraperMulti(Window* window, const std::queue detailed) - for(auto it = SystemData::sSystemVector.begin(); it != SystemData::sSystemVector.end(); it++) + for(auto it = SystemData::sSystemVector.cbegin(); it != SystemData::sSystemVector.cend(); it++) ViewController::get()->reloadGameListView(*it, false); } @@ -97,11 +99,11 @@ void GuiScraperMulti::doNextSearch() // update title std::stringstream ss; - mSystem->setText(strToUpper(mSearchQueue.front().system->getFullName())); + mSystem->setText(Utils::String::toUpper(mSearchQueue.front().system->getFullName())); // update subtitle ss.str(""); // clear - ss << "GAME " << (mCurrentGame + 1) << " OF " << mTotalGames << " - " << strToUpper(mSearchQueue.front().game->getPath().filename().string()); + ss << "GAME " << (mCurrentGame + 1) << " OF " << mTotalGames << " - " << Utils::String::toUpper(Utils::FileSystem::getFileName(mSearchQueue.front().game->getPath())); mSubtitle->setText(ss.str()); mSearchComp->search(mSearchQueue.front()); @@ -141,8 +143,11 @@ void GuiScraperMulti::finish() ss << "\n" << mTotalSkipped << " GAME" << ((mTotalSkipped > 1) ? "S" : "") << " SKIPPED."; } - mWindow->pushGui(new GuiMsgBox(mWindow, ss.str(), + mWindow->pushGui(new GuiMsgBox(mWindow, ss.str(), "OK", [&] { delete this; })); + + mIsProcessing = false; + PowerSaver::resume(); } std::vector GuiScraperMulti::getHelpPrompts() diff --git a/es-app/src/guis/GuiScraperMulti.h b/es-app/src/guis/GuiScraperMulti.h index ff18c12c02..6622f0b8ca 100644 --- a/es-app/src/guis/GuiScraperMulti.h +++ b/es-app/src/guis/GuiScraperMulti.h @@ -1,11 +1,11 @@ #pragma once +#ifndef ES_APP_GUIS_GUI_SCRAPER_MULTI_H +#define ES_APP_GUIS_GUI_SCRAPER_MULTI_H -#include "GuiComponent.h" -#include "components/NinePatchComponent.h" #include "components/ComponentGrid.h" +#include "components/NinePatchComponent.h" #include "scrapers/Scraper.h" - -#include +#include "GuiComponent.h" class ScraperSearchComponent; class TextComponent; @@ -23,7 +23,7 @@ class GuiScraperMulti : public GuiComponent void acceptResult(const ScraperSearchResult& result); void skip(); void doNextSearch(); - + void finish(); unsigned int mTotalGames; @@ -41,3 +41,5 @@ class GuiScraperMulti : public GuiComponent std::shared_ptr mSearchComp; std::shared_ptr mButtonGrid; }; + +#endif // ES_APP_GUIS_GUI_SCRAPER_MULTI_H diff --git a/es-app/src/guis/GuiScraperStart.cpp b/es-app/src/guis/GuiScraperStart.cpp index 7d1ebab436..2242046901 100644 --- a/es-app/src/guis/GuiScraperStart.cpp +++ b/es-app/src/guis/GuiScraperStart.cpp @@ -1,11 +1,12 @@ #include "guis/GuiScraperStart.h" -#include "guis/GuiScraperMulti.h" -#include "guis/GuiMsgBox.h" -#include "views/ViewController.h" -#include "components/TextComponent.h" #include "components/OptionListComponent.h" #include "components/SwitchComponent.h" +#include "guis/GuiMsgBox.h" +#include "guis/GuiScraperMulti.h" +#include "views/ViewController.h" +#include "FileData.h" +#include "SystemData.h" GuiScraperStart::GuiScraperStart(Window* window) : GuiComponent(window), mMenu(window, "SCRAPE NOW") @@ -14,15 +15,15 @@ GuiScraperStart::GuiScraperStart(Window* window) : GuiComponent(window), // add filters (with first one selected) mFilters = std::make_shared< OptionListComponent >(mWindow, "SCRAPE THESE GAMES", false); - mFilters->add("All Games", + mFilters->add("All Games", [](SystemData*, FileData*) -> bool { return true; }, false); - mFilters->add("Only missing image", + mFilters->add("Only missing image", [](SystemData*, FileData* g) -> bool { return g->metadata.get("image").empty(); }, true); mMenu.addWithLabel("Filter", mFilters); //add systems (all with a platformid specified selected) mSystems = std::make_shared< OptionListComponent >(mWindow, "SCRAPE THESE SYSTEMS", true); - for(auto it = SystemData::sSystemVector.begin(); it != SystemData::sSystemVector.end(); it++) + for(auto it = SystemData::sSystemVector.cbegin(); it != SystemData::sSystemVector.cend(); it++) { if(!(*it)->hasPlatformId(PlatformIds::PLATFORM_IGNORE)) mSystems->add((*it)->getFullName(), *it, !(*it)->getPlatformIds().empty()); @@ -42,13 +43,13 @@ GuiScraperStart::GuiScraperStart(Window* window) : GuiComponent(window), void GuiScraperStart::pressedStart() { std::vector sys = mSystems->getSelectedObjects(); - for(auto it = sys.begin(); it != sys.end(); it++) + for(auto it = sys.cbegin(); it != sys.cend(); it++) { if((*it)->getPlatformIds().empty()) { - mWindow->pushGui(new GuiMsgBox(mWindow, - strToUpper("Warning: some of your selected systems do not have a platform set. Results may be even more inaccurate than usual!\nContinue anyway?"), - "YES", std::bind(&GuiScraperStart::start, this), + mWindow->pushGui(new GuiMsgBox(mWindow, + Utils::String::toUpper("Warning: some of your selected systems do not have a platform set. Results may be even more inaccurate than usual!\nContinue anyway?"), + "YES", std::bind(&GuiScraperStart::start, this), "NO", nullptr)); return; } @@ -75,17 +76,17 @@ void GuiScraperStart::start() std::queue GuiScraperStart::getSearches(std::vector systems, GameFilterFunc selector) { std::queue queue; - for(auto sys = systems.begin(); sys != systems.end(); sys++) + for(auto sys = systems.cbegin(); sys != systems.cend(); sys++) { std::vector games = (*sys)->getRootFolder()->getFilesRecursive(GAME); - for(auto game = games.begin(); game != games.end(); game++) + for(auto game = games.cbegin(); game != games.cend(); game++) { if(selector((*sys), (*game))) { ScraperSearchParams search; search.game = *game; search.system = *sys; - + queue.push(search); } } @@ -99,7 +100,7 @@ bool GuiScraperStart::input(InputConfig* config, Input input) bool consumed = GuiComponent::input(config, input); if(consumed) return true; - + if(input.value != 0 && config->isMappedTo("b", input)) { delete this; diff --git a/es-app/src/guis/GuiScraperStart.h b/es-app/src/guis/GuiScraperStart.h index 0d453ca0fe..6c442b9fe0 100644 --- a/es-app/src/guis/GuiScraperStart.h +++ b/es-app/src/guis/GuiScraperStart.h @@ -1,17 +1,17 @@ #pragma once +#ifndef ES_APP_GUIS_GUI_SCRAPER_START_H +#define ES_APP_GUIS_GUI_SCRAPER_START_H -#include "GuiComponent.h" -#include "SystemData.h" -#include "scrapers/Scraper.h" #include "components/MenuComponent.h" -#include - -typedef std::function GameFilterFunc; +#include "scrapers/Scraper.h" +class FileData; template class OptionListComponent; - class SwitchComponent; +class SystemData; + +typedef std::function GameFilterFunc; //The starting point for a multi-game scrape. //Allows the user to set various parameters (to set filters, to set which systems to scrape, to enable manual mode). @@ -36,3 +36,5 @@ class GuiScraperStart : public GuiComponent MenuComponent mMenu; }; + +#endif // ES_APP_GUIS_GUI_SCRAPER_START_H diff --git a/es-app/src/guis/GuiScreensaverOptions.cpp b/es-app/src/guis/GuiScreensaverOptions.cpp new file mode 100644 index 0000000000..6537694e5f --- /dev/null +++ b/es-app/src/guis/GuiScreensaverOptions.cpp @@ -0,0 +1,97 @@ +#include "guis/GuiScreensaverOptions.h" + +#include "guis/GuiTextEditPopup.h" +#include "views/ViewController.h" +#include "Settings.h" +#include "SystemData.h" +#include "Window.h" + +GuiScreensaverOptions::GuiScreensaverOptions(Window* window, const char* title) : GuiComponent(window), mMenu(window, title) +{ + addChild(&mMenu); + + mMenu.addButton("BACK", "go back", [this] { delete this; }); + + setSize((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + mMenu.setPosition((mSize.x() - mMenu.getSize().x()) / 2, Renderer::getScreenHeight() * 0.15f); +} + +GuiScreensaverOptions::~GuiScreensaverOptions() +{ + save(); +} + +void GuiScreensaverOptions::save() +{ + if(!mSaveFuncs.size()) + return; + + for(auto it = mSaveFuncs.cbegin(); it != mSaveFuncs.cend(); it++) + (*it)(); + + Settings::getInstance()->saveFile(); +} + +bool GuiScreensaverOptions::input(InputConfig* config, Input input) +{ + if(config->isMappedTo("b", input) && input.value != 0) + { + delete this; + return true; + } + + if(config->isMappedTo("start", input) && input.value != 0) + { + // close everything + Window* window = mWindow; + while(window->peekGui() && window->peekGui() != ViewController::get()) + delete window->peekGui(); + return true; + } + + return GuiComponent::input(config, input); +} + +HelpStyle GuiScreensaverOptions::getHelpStyle() +{ + HelpStyle style = HelpStyle(); + style.applyTheme(ViewController::get()->getState().getSystem()->getTheme(), "system"); + return style; +} + +std::vector GuiScreensaverOptions::getHelpPrompts() +{ + std::vector prompts = mMenu.getHelpPrompts(); + + prompts.push_back(HelpPrompt("b", "back")); + prompts.push_back(HelpPrompt("start", "close")); + + return prompts; +} + +void GuiScreensaverOptions::addEditableTextComponent(ComponentListRow row, const std::string label, std::shared_ptr ed, std::string value) +{ + row.elements.clear(); + + auto lbl = std::make_shared(mWindow, Utils::String::toUpper(label), Font::get(FONT_SIZE_MEDIUM), 0x777777FF); + row.addElement(lbl, true); // label + + row.addElement(ed, true); + + auto spacer = std::make_shared(mWindow); + spacer->setSize(Renderer::getScreenWidth() * 0.005f, 0); + row.addElement(spacer, false); + + auto bracket = std::make_shared(mWindow); + bracket->setImage(":/arrow.svg"); + bracket->setResize(Vector2f(0, lbl->getFont()->getLetterHeight())); + row.addElement(bracket, false); + + auto updateVal = [ed](const std::string& newVal) { ed->setValue(newVal); }; // ok callback (apply new value to ed) + row.makeAcceptInputHandler([this, label, ed, updateVal] { + mWindow->pushGui(new GuiTextEditPopup(mWindow, label, ed->getValue(), updateVal, false)); + }); + assert(ed); + addRow(row); + ed->setValue(value); +} diff --git a/es-app/src/guis/GuiScreensaverOptions.h b/es-app/src/guis/GuiScreensaverOptions.h new file mode 100644 index 0000000000..cabcff3c59 --- /dev/null +++ b/es-app/src/guis/GuiScreensaverOptions.h @@ -0,0 +1,29 @@ +#pragma once +#ifndef ES_APP_GUIS_GUI_SCREENSAVER_OPTIONS_H +#define ES_APP_GUIS_GUI_SCREENSAVER_OPTIONS_H + +#include "components/MenuComponent.h" + +// This is just a really simple template for a GUI that calls some save functions when closed. +class GuiScreensaverOptions : public GuiComponent +{ +public: + GuiScreensaverOptions(Window* window, const char* title); + virtual ~GuiScreensaverOptions(); // just calls save(); + + virtual void save(); + inline void addRow(const ComponentListRow& row) { mMenu.addRow(row); }; + inline void addWithLabel(const std::string& label, const std::shared_ptr& comp) { mMenu.addWithLabel(label, comp); }; + inline void addSaveFunc(const std::function& func) { mSaveFuncs.push_back(func); }; + void addEditableTextComponent(ComponentListRow row, const std::string label, std::shared_ptr ed, std::string value); + + bool input(InputConfig* config, Input input) override; + std::vector getHelpPrompts() override; + HelpStyle getHelpStyle() override; + +protected: + MenuComponent mMenu; + std::vector< std::function > mSaveFuncs; +}; + +#endif // ES_APP_GUIS_GUI_SCREENSAVER_OPTIONS_H diff --git a/es-app/src/guis/GuiSettings.cpp b/es-app/src/guis/GuiSettings.cpp index 806dae2c98..98e4c0fd58 100644 --- a/es-app/src/guis/GuiSettings.cpp +++ b/es-app/src/guis/GuiSettings.cpp @@ -1,7 +1,9 @@ #include "guis/GuiSettings.h" -#include "Window.h" -#include "Settings.h" + #include "views/ViewController.h" +#include "Settings.h" +#include "SystemData.h" +#include "Window.h" GuiSettings::GuiSettings(Window* window, const char* title) : GuiComponent(window), mMenu(window, title) { @@ -23,7 +25,7 @@ void GuiSettings::save() if(!mSaveFuncs.size()) return; - for(auto it = mSaveFuncs.begin(); it != mSaveFuncs.end(); it++) + for(auto it = mSaveFuncs.cbegin(); it != mSaveFuncs.cend(); it++) (*it)(); Settings::getInstance()->saveFile(); @@ -45,10 +47,17 @@ bool GuiSettings::input(InputConfig* config, Input input) delete window->peekGui(); return true; } - + return GuiComponent::input(config, input); } +HelpStyle GuiSettings::getHelpStyle() +{ + HelpStyle style = HelpStyle(); + style.applyTheme(ViewController::get()->getState().getSystem()->getTheme(), "system"); + return style; +} + std::vector GuiSettings::getHelpPrompts() { std::vector prompts = mMenu.getHelpPrompts(); diff --git a/es-app/src/guis/GuiSettings.h b/es-app/src/guis/GuiSettings.h index 06e88d3225..d5b0d97998 100644 --- a/es-app/src/guis/GuiSettings.h +++ b/es-app/src/guis/GuiSettings.h @@ -1,4 +1,7 @@ -#include "GuiComponent.h" +#pragma once +#ifndef ES_APP_GUIS_GUI_SETTINGS_H +#define ES_APP_GUIS_GUI_SETTINGS_H + #include "components/MenuComponent.h" // This is just a really simple template for a GUI that calls some save functions when closed. @@ -15,8 +18,11 @@ class GuiSettings : public GuiComponent bool input(InputConfig* config, Input input) override; std::vector getHelpPrompts() override; + HelpStyle getHelpStyle() override; private: MenuComponent mMenu; std::vector< std::function > mSaveFuncs; -}; \ No newline at end of file +}; + +#endif // ES_APP_GUIS_GUI_SETTINGS_H diff --git a/es-app/src/guis/GuiSlideshowScreensaverOptions.cpp b/es-app/src/guis/GuiSlideshowScreensaverOptions.cpp new file mode 100644 index 0000000000..1fa4a2bb43 --- /dev/null +++ b/es-app/src/guis/GuiSlideshowScreensaverOptions.cpp @@ -0,0 +1,91 @@ +#include "guis/GuiSlideshowScreensaverOptions.h" + +#include "components/SliderComponent.h" +#include "components/SwitchComponent.h" +#include "guis/GuiTextEditPopup.h" +#include "utils/StringUtil.h" +#include "Settings.h" +#include "Window.h" + +GuiSlideshowScreensaverOptions::GuiSlideshowScreensaverOptions(Window* window, const char* title) : GuiScreensaverOptions(window, title) +{ + ComponentListRow row; + + // media duration (seconds) + auto sss_media_sec = std::make_shared(mWindow, 1.f, 60.f, 1.f, "s"); + sss_media_sec->setValue((float)(Settings::getInstance()->getInt("ScreenSaverSwapMediaTimeout") / (1000))); + addWithLabel(row, "SWAP MEDIA AFTER (SECS)", sss_media_sec); + addSaveFunc([sss_media_sec] { + int playNextTimeout = (int)Math::round(sss_media_sec->getValue()) * (1000); + Settings::getInstance()->setInt("ScreenSaverSwapMediaTimeout", playNextTimeout); + PowerSaver::updateTimeouts(); + }); + + // stretch + auto sss_stretch = std::make_shared(mWindow); + sss_stretch->setState(Settings::getInstance()->getBool("SlideshowScreenSaverStretch")); + addWithLabel(row, "STRETCH MEDIA", sss_stretch); + addSaveFunc([sss_stretch] { + Settings::getInstance()->setBool("SlideshowScreenSaverStretch", sss_stretch->getState()); + }); + + // background audio file + auto sss_bg_audio_file = std::make_shared(mWindow, "", Font::get(FONT_SIZE_SMALL), 0x777777FF); + addEditableTextComponent(row, "BACKGROUND AUDIO", sss_bg_audio_file, Settings::getInstance()->getString("SlideshowScreenSaverBackgroundAudioFile")); + addSaveFunc([sss_bg_audio_file] { + Settings::getInstance()->setString("SlideshowScreenSaverBackgroundAudioFile", sss_bg_audio_file->getValue()); + }); + + // media source + auto sss_custom_source = std::make_shared(mWindow); + sss_custom_source->setState(Settings::getInstance()->getBool("SlideshowScreenSaverCustomMediaSource")); + addWithLabel(row, "USE CUSTOM MEDIA", sss_custom_source); + addSaveFunc([sss_custom_source] { Settings::getInstance()->setBool("SlideshowScreenSaverCustomMediaSource", sss_custom_source->getState()); }); + + // custom media directory + auto sss_media_dir = std::make_shared(mWindow, "", Font::get(FONT_SIZE_SMALL), 0x777777FF); + addEditableTextComponent(row, "CUSTOM MEDIA DIR", sss_media_dir, Settings::getInstance()->getString("SlideshowScreenSaverMediaDir")); + addSaveFunc([sss_media_dir] { + Settings::getInstance()->setString("SlideshowScreenSaverMediaDir", sss_media_dir->getValue()); + }); + + // recurse custom media directory + auto sss_recurse = std::make_shared(mWindow); + sss_recurse->setState(Settings::getInstance()->getBool("SlideshowScreenSaverRecurse")); + addWithLabel(row, "CUSTOM MEDIA DIR RECURSIVE", sss_recurse); + addSaveFunc([sss_recurse] { + Settings::getInstance()->setBool("SlideshowScreenSaverRecurse", sss_recurse->getState()); + }); + + // custom image filter + auto sss_image_filter = std::make_shared(mWindow, "", Font::get(FONT_SIZE_SMALL), 0x777777FF); + addEditableTextComponent(row, "CUSTOM IMAGE FILTER", sss_image_filter, Settings::getInstance()->getString("SlideshowScreenSaverImageFilter")); + addSaveFunc([sss_image_filter] { + Settings::getInstance()->setString("SlideshowScreenSaverImageFilter", sss_image_filter->getValue()); + }); + + // custom video filter + auto sss_video_filter = std::make_shared(mWindow, "", Font::get(FONT_SIZE_SMALL), 0x777777FF); + // set y-size >0 on last TextComponent in menu to assure proper fit into available row height + sss_video_filter->setSize(Vector2f(0, Font::get(FONT_SIZE_SMALL)->getLetterHeight())); + addEditableTextComponent(row, "CUSTOM VIDEO FILTER", sss_video_filter, Settings::getInstance()->getString("SlideshowScreenSaverVideoFilter")); + addSaveFunc([sss_video_filter] { + Settings::getInstance()->setString("SlideshowScreenSaverVideoFilter", sss_video_filter->getValue()); + }); +} + +GuiSlideshowScreensaverOptions::~GuiSlideshowScreensaverOptions() +{ +} + +void GuiSlideshowScreensaverOptions::addWithLabel(ComponentListRow row, const std::string label, std::shared_ptr component) +{ + row.elements.clear(); + + auto lbl = std::make_shared(mWindow, Utils::String::toUpper(label), Font::get(FONT_SIZE_MEDIUM), 0x777777FF); + row.addElement(lbl, true); // label + + row.addElement(component, false, true); + + addRow(row); +} diff --git a/es-app/src/guis/GuiSlideshowScreensaverOptions.h b/es-app/src/guis/GuiSlideshowScreensaverOptions.h new file mode 100644 index 0000000000..4232a69bad --- /dev/null +++ b/es-app/src/guis/GuiSlideshowScreensaverOptions.h @@ -0,0 +1,17 @@ +#pragma once +#ifndef ES_APP_GUIS_GUI_SLIDESHOW_SCREENSAVER_OPTIONS_H +#define ES_APP_GUIS_GUI_SLIDESHOW_SCREENSAVER_OPTIONS_H + +#include "GuiScreensaverOptions.h" + +class GuiSlideshowScreensaverOptions : public GuiScreensaverOptions +{ +public: + GuiSlideshowScreensaverOptions(Window* window, const char* title); + virtual ~GuiSlideshowScreensaverOptions(); + +private: + void addWithLabel(ComponentListRow row, const std::string label, std::shared_ptr component); +}; + +#endif // ES_APP_GUIS_GUI_SLIDESHOW_SCREENSAVER_OPTIONS_H diff --git a/es-app/src/guis/GuiVideoScreensaverOptions.cpp b/es-app/src/guis/GuiVideoScreensaverOptions.cpp new file mode 100644 index 0000000000..5850a0b0ff --- /dev/null +++ b/es-app/src/guis/GuiVideoScreensaverOptions.cpp @@ -0,0 +1,120 @@ +#include "guis/GuiVideoScreensaverOptions.h" + +#include "components/OptionListComponent.h" +#include "components/SliderComponent.h" +#include "components/SwitchComponent.h" +#include "guis/GuiMsgBox.h" +#include "Settings.h" + +GuiVideoScreensaverOptions::GuiVideoScreensaverOptions(Window* window, const char* title) : GuiScreensaverOptions(window, title) +{ + // timeout to swap videos + auto swap = std::make_shared(mWindow, 10.f, 1000.f, 1.f, "s"); + swap->setValue((float)(Settings::getInstance()->getInt("ScreenSaverSwapVideoTimeout") / (1000))); + addWithLabel("SWAP VIDEO AFTER (SECS)", swap); + addSaveFunc([swap] { + int playNextTimeout = (int)Math::round(swap->getValue()) * (1000); + Settings::getInstance()->setInt("ScreenSaverSwapVideoTimeout", playNextTimeout); + PowerSaver::updateTimeouts(); + }); + + auto stretch_screensaver = std::make_shared(mWindow); + stretch_screensaver->setState(Settings::getInstance()->getBool("StretchVideoOnScreenSaver")); + addWithLabel("STRETCH VIDEO ON SCREENSAVER", stretch_screensaver); + addSaveFunc([stretch_screensaver] { Settings::getInstance()->setBool("StretchVideoOnScreenSaver", stretch_screensaver->getState()); }); + +#ifdef _OMX_ + auto ss_omx = std::make_shared(mWindow); + ss_omx->setState(Settings::getInstance()->getBool("ScreenSaverOmxPlayer")); + addWithLabel("USE OMX PLAYER FOR SCREENSAVER", ss_omx); + addSaveFunc([ss_omx, this] { Settings::getInstance()->setBool("ScreenSaverOmxPlayer", ss_omx->getState()); }); +#endif + + // Render Video Game Name as subtitles + auto ss_info = std::make_shared< OptionListComponent >(mWindow, "SHOW GAME INFO", false); + std::vector info_type; + info_type.push_back("always"); + info_type.push_back("start & end"); + info_type.push_back("never"); + for(auto it = info_type.cbegin(); it != info_type.cend(); it++) + ss_info->add(*it, *it, Settings::getInstance()->getString("ScreenSaverGameInfo") == *it); + addWithLabel("SHOW GAME INFO ON SCREENSAVER", ss_info); + addSaveFunc([ss_info, this] { Settings::getInstance()->setString("ScreenSaverGameInfo", ss_info->getSelected()); }); + + auto ss_video_mute = std::make_shared(mWindow); + ss_video_mute->setState(Settings::getInstance()->getBool("ScreenSaverVideoMute")); + addWithLabel("MUTE SCREENSAVER AUDIO", ss_video_mute); + addSaveFunc([ss_video_mute] { Settings::getInstance()->setBool("ScreenSaverVideoMute", ss_video_mute->getState()); }); + + + auto ss_vlc_resolution = std::make_shared< OptionListComponent >(mWindow, "VIDEO RESOLUTION", false); + std::vector vlc_res; + vlc_res.push_back("original"); // renders at original video resolution, stretched to fit screen + vlc_res.push_back("low"); // 25% of screen resolution + vlc_res.push_back("medium"); // 50% of screen resolution + vlc_res.push_back("high"); // 75% of screen resolution + vlc_res.push_back("max"); // full screen resolution + for(auto it = vlc_res.cbegin(); it != vlc_res.cend(); it++) + ss_vlc_resolution->add(*it, *it, Settings::getInstance()->getString("VlcScreenSaverResolution") == *it); + addWithLabel("VLC: SCREENSAVER VIDEO RESOLUTION", ss_vlc_resolution); + addSaveFunc([ss_vlc_resolution, this] { Settings::getInstance()->setString("VlcScreenSaverResolution", ss_vlc_resolution->getSelected()); }); + +#ifdef _OMX_ + ComponentListRow row; + + // Set subtitle position + auto ss_omx_subs_align = std::make_shared< OptionListComponent >(mWindow, "GAME INFO ALIGNMENT", false); + std::vector align_mode; + align_mode.push_back("left"); + align_mode.push_back("center"); + for(auto it = align_mode.cbegin(); it != align_mode.cend(); it++) + ss_omx_subs_align->add(*it, *it, Settings::getInstance()->getString("SubtitleAlignment") == *it); + addWithLabel("OMX: GAME INFO ALIGNMENT", ss_omx_subs_align); + addSaveFunc([ss_omx_subs_align, this] { Settings::getInstance()->setString("SubtitleAlignment", ss_omx_subs_align->getSelected()); }); + + // Set font size + auto ss_omx_font_size = std::make_shared(mWindow, 1.f, 64.f, 1.f, "h"); + ss_omx_font_size->setValue((float)(Settings::getInstance()->getInt("SubtitleSize"))); + addWithLabel("OMX: GAME INFO FONT SIZE", ss_omx_font_size); + addSaveFunc([ss_omx_font_size] { + int subSize = (int)Math::round(ss_omx_font_size->getValue()); + Settings::getInstance()->setInt("SubtitleSize", subSize); + }); + + // Define subtitle font + auto ss_omx_font_file = std::make_shared(mWindow, "", Font::get(FONT_SIZE_SMALL), 0x777777FF); + addEditableTextComponent(row, "OMX: PATH TO FONT FILE", ss_omx_font_file, Settings::getInstance()->getString("SubtitleFont")); + addSaveFunc([ss_omx_font_file] { + Settings::getInstance()->setString("SubtitleFont", ss_omx_font_file->getValue()); + }); + + // Define subtitle italic font + auto ss_omx_italic_font_file = std::make_shared(mWindow, "", Font::get(FONT_SIZE_SMALL), 0x777777FF); + addEditableTextComponent(row, "OMX: PATH TO ITALIC FONT FILE", ss_omx_italic_font_file, Settings::getInstance()->getString("SubtitleItalicFont")); + addSaveFunc([ss_omx_italic_font_file] { + Settings::getInstance()->setString("SubtitleItalicFont", ss_omx_italic_font_file->getValue()); + }); +#endif +} + +GuiVideoScreensaverOptions::~GuiVideoScreensaverOptions() +{ +} + +void GuiVideoScreensaverOptions::save() +{ +#ifdef _OMX_ + bool startingStatusNotRisky = (Settings::getInstance()->getString("ScreenSaverGameInfo") == "never" || !Settings::getInstance()->getBool("ScreenSaverOmxPlayer")); +#endif + GuiScreensaverOptions::save(); + +#ifdef _OMX_ + bool endStatusRisky = (Settings::getInstance()->getString("ScreenSaverGameInfo") != "never" && Settings::getInstance()->getBool("ScreenSaverOmxPlayer")); + if (startingStatusNotRisky && endStatusRisky) { + // if before it wasn't risky but now there's a risk of problems, show warning + mWindow->pushGui(new GuiMsgBox(mWindow, + "Using OMX Player and displaying Game Info may result in the video flickering in some TV modes. If that happens, consider:\n\n• Disabling the \"Show Game Info\" option;\n• Disabling \"Overscan\" on the Pi configuration menu might help:\nRetroPie > Raspi-Config > Advanced Options > Overscan > \"No\".\n• Disabling the use of OMX Player for the screensaver.", + "GOT IT!", [] { return; })); + } +#endif +} diff --git a/es-app/src/guis/GuiVideoScreensaverOptions.h b/es-app/src/guis/GuiVideoScreensaverOptions.h new file mode 100644 index 0000000000..ecf4e4b2dd --- /dev/null +++ b/es-app/src/guis/GuiVideoScreensaverOptions.h @@ -0,0 +1,16 @@ +#pragma once +#ifndef ES_APP_GUIS_GUI_VIDEO_SCREENSAVER_OPTIONS_H +#define ES_APP_GUIS_GUI_VIDEO_SCREENSAVER_OPTIONS_H + +#include "GuiScreensaverOptions.h" + +class GuiVideoScreensaverOptions : public GuiScreensaverOptions +{ +public: + GuiVideoScreensaverOptions(Window* window, const char* title); + virtual ~GuiVideoScreensaverOptions(); + + void save() override; +}; + +#endif // ES_APP_GUIS_GUI_VIDEO_SCREENSAVER_OPTIONS_H diff --git a/es-app/src/main.cpp b/es-app/src/main.cpp index 393f199fd3..eb0b92cacf 100644 --- a/es-app/src/main.cpp +++ b/es-app/src/main.cpp @@ -1,38 +1,69 @@ //EmulationStation, a graphical front-end for ROM browsing. Created by Alec "Aloshi" Lofquist. //http://www.aloshi.com -#include -#include -#include -#include "Renderer.h" -#include "views/ViewController.h" -#include "SystemData.h" -#include #include "guis/GuiDetectDevice.h" #include "guis/GuiMsgBox.h" -#include "AudioManager.h" -#include "platform.h" -#include "Log.h" -#include "Window.h" +#include "utils/FileSystemUtil.h" +#include "utils/ProfilingUtil.h" +#include "views/ViewController.h" +#include "CollectionSystemManager.h" #include "EmulationStation.h" -#include "Settings.h" +#include "InputManager.h" +#include "Log.h" +#include "MameNames.h" +#include "platform.h" +#include "PowerSaver.h" #include "ScraperCmdLine.h" -#include -#include - +#include "Settings.h" +#include "SystemData.h" +#include "SystemScreenSaver.h" +#include +#include +#include +#include +#include #ifdef WIN32 #include #endif -namespace fs = boost::filesystem; +#include bool scrape_cmdline = false; -bool parseArgs(int argc, char* argv[], unsigned int* width, unsigned int* height) +bool parseArgs(int argc, char* argv[]) { + Utils::FileSystem::setExePath(argv[0]); + + // We need to process --home before any call to Settings::getInstance(), because settings are loaded from homepath + for(int i = 1; i < argc; i++) + { + if(strcmp(argv[i], "--home") == 0) + { + if(i >= argc - 1) + { + std::cerr << "Invalid home path supplied."; + return false; + } + + Utils::FileSystem::setHomePath(argv[i + 1]); + break; + } + } + for(int i = 1; i < argc; i++) { - if(strcmp(argv[i], "--resolution") == 0) + if(strcmp(argv[i], "--monitor") == 0) + { + if (i >= argc - 1) + { + std::cerr << "Invalid monitor supplied."; + return false; + } + + int monitor = atoi(argv[i + 1]); + i++; // skip the argument value + Settings::getInstance()->setInt("MonitorID", monitor); + }else if(strcmp(argv[i], "--resolution") == 0) { if(i >= argc - 2) { @@ -40,26 +71,77 @@ bool parseArgs(int argc, char* argv[], unsigned int* width, unsigned int* height return false; } - *width = atoi(argv[i + 1]); - *height = atoi(argv[i + 2]); + int width = atoi(argv[i + 1]); + int height = atoi(argv[i + 2]); + i += 2; // skip the argument value + Settings::getInstance()->setInt("WindowWidth", width); + Settings::getInstance()->setInt("WindowHeight", height); + }else if(strcmp(argv[i], "--screensize") == 0) + { + if(i >= argc - 2) + { + std::cerr << "Invalid screensize supplied."; + return false; + } + + int width = atoi(argv[i + 1]); + int height = atoi(argv[i + 2]); + i += 2; // skip the argument value + Settings::getInstance()->setInt("ScreenWidth", width); + Settings::getInstance()->setInt("ScreenHeight", height); + }else if(strcmp(argv[i], "--screenoffset") == 0) + { + if(i >= argc - 2) + { + std::cerr << "Invalid screenoffset supplied."; + return false; + } + + int x = atoi(argv[i + 1]); + int y = atoi(argv[i + 2]); i += 2; // skip the argument value + Settings::getInstance()->setInt("ScreenOffsetX", x); + Settings::getInstance()->setInt("ScreenOffsetY", y); + }else if (strcmp(argv[i], "--screenrotate") == 0) + { + if (i >= argc - 1) + { + std::cerr << "Invalid screenrotate supplied."; + return false; + } + + int rotate = atoi(argv[i + 1]); + ++i; // skip the argument value + Settings::getInstance()->setInt("ScreenRotate", rotate); }else if(strcmp(argv[i], "--gamelist-only") == 0) { Settings::getInstance()->setBool("ParseGamelistOnly", true); }else if(strcmp(argv[i], "--ignore-gamelist") == 0) { Settings::getInstance()->setBool("IgnoreGamelist", true); + }else if(strcmp(argv[i], "--show-hidden-files") == 0) + { + Settings::getInstance()->setBool("ShowHiddenFiles", true); }else if(strcmp(argv[i], "--draw-framerate") == 0) { Settings::getInstance()->setBool("DrawFramerate", true); }else if(strcmp(argv[i], "--no-exit") == 0) { Settings::getInstance()->setBool("ShowExit", false); + }else if(strcmp(argv[i], "--no-confirm-quit") == 0) + { + Settings::getInstance()->setBool("ConfirmQuit", false); + }else if(strcmp(argv[i], "--no-splash") == 0) + { + Settings::getInstance()->setBool("SplashScreen", false); }else if(strcmp(argv[i], "--debug") == 0) { Settings::getInstance()->setBool("Debug", true); Settings::getInstance()->setBool("HideConsole", false); Log::setReportingLevel(LogDebug); + }else if(strcmp(argv[i], "--fullscreen-borderless") == 0) + { + Settings::getInstance()->setBool("FullscreenBorderless", true); }else if(strcmp(argv[i], "--windowed") == 0) { Settings::getInstance()->setBool("Windowed", true); @@ -71,7 +153,24 @@ bool parseArgs(int argc, char* argv[], unsigned int* width, unsigned int* height }else if(strcmp(argv[i], "--scrape") == 0) { scrape_cmdline = true; - }else if(strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) + }else if(strcmp(argv[i], "--max-vram") == 0) + { + int maxVRAM = atoi(argv[i + 1]); + Settings::getInstance()->setInt("MaxVRAM", maxVRAM); + } + else if (strcmp(argv[i], "--force-kiosk") == 0) + { + Settings::getInstance()->setBool("ForceKiosk", true); + } + else if (strcmp(argv[i], "--force-kid") == 0) + { + Settings::getInstance()->setBool("ForceKid", true); + } + else if (strcmp(argv[i], "--force-disable-filters") == 0) + { + Settings::getInstance()->setBool("ForceDisableFilters", true); + } + else if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) { #ifdef WIN32 // This is a bit of a hack, but otherwise output will go to nowhere @@ -81,22 +180,57 @@ bool parseArgs(int argc, char* argv[], unsigned int* width, unsigned int* height AttachConsole(ATTACH_PARENT_PROCESS); freopen("CONOUT$", "wb", stdout); #endif - std::cout << + std::cout << "EmulationStation, a graphical front-end for ROM browsing.\n" "Written by Alec \"Aloshi\" Lofquist.\n" - "Version " << PROGRAM_VERSION_STRING << ", built " << PROGRAM_BUILT_STRING << "\n\n" + "Version " << PROGRAM_VERSION_STRING << ", built " << PROGRAM_BUILT_STRING << "\n" "Command line arguments:\n" - "--resolution [width] [height] try and force a particular resolution\n" - "--gamelist-only skip automatic game search, only read from gamelist.xml\n" - "--ignore-gamelist ignore the gamelist (useful for troubleshooting)\n" - "--draw-framerate display the framerate\n" - "--no-exit don't show the exit option in the menu\n" - "--debug more logging, show console on Windows\n" - "--scrape scrape using command line interface\n" - "--windowed not fullscreen, should be used with --resolution\n" - "--vsync [1/on or 0/off] turn vsync on or off (default is on)\n" - "--help, -h summon a sentient, angry tuba\n\n" - "More information available in README.md.\n"; + "\nGeometry settings:\n" + "--resolution WIDTH HEIGHT try and force a particular resolution\n" + "--screenrotate N rotate a quarter turn clockwise for each N\n" + "--screensize WIDTH HEIGHT for a canvas smaller than the full resolution,\n" + " or if rotating into portrait mode\n" + "--screenoffset X Y move the canvas by x,y pixels\n" + "--fullscreen-borderless borderless fullscreen window\n" + "--windowed not fullscreen, should be used with --resolution\n" + "--monitor N monitor index (0-)\n" + "\nGame and settings visibility in ES and behaviour of ES:\n" + "--force-disable-filters force the UI to ignore applied filters on\n" + " gamelist (p)\n" + "--force-kid force the UI mode to be Kid\n" + "--force-kiosk force the UI mode to be Kiosk\n" + "--no-confirm-quit omit confirm dialog on actions of quit menu\n" + "--no-exit don't show the exit option in the menu\n" + "--no-splash don't show the splash screen\n" + "\nGamelist related:\n" + "--gamelist-only use gamelist.xml as trusted source and do not\n" + " check any path entries of gamelist.xml (p)\n" + "--ignore-gamelist do not read gamelist.xml files (useful for\n" + " troubleshooting)\n" + "\nAdvanced settings:\n" + "--debug more logging, show console on Windows. Enables\n" + " these keyboard shortcuts with left CTRL-key:\n" + " +G: Toggle Gridlayout boundary boxes\n" + " +I: Toggle image boundary box\n" + " +R: Reload all UI views (theme, gamelist, system)\n" + " +T: Toggle textcomponent boundary box\n" + "--draw-framerate display the framerate (p)\n" + "--max-vram SIZE maximum VRAM to use in MB before swapping,\n" + " use 0 for unlimited (p)\n" + "--show-hidden-files show also hidden files of filesystem, no effect\n" + " if --gamelist-only is also set (p)\n" + "--vsync 1|0 turn vsync on (1) or off (0) (default is on)\n" + "\nGeneric switches:\n" + "--help, -h summon a sentient, angry tuba\n\n" + "--home PATH directory to use as home folder for\n" + " .emulationstation/es_settings.cfg, aso.\n" + " Subfolder .emulationstation/ will be created.\n" + "\nScrape mode:\n" + "--scrape scrape using command line interface\n\n" + "Note: Switches marked (p) will be persisted in es_settings.cfg when any\n" + "setting is changed via EmulationStation UI.\n\n" + "Please refer to the online documentation for additional information:\n" + "https://retropie.org.uk/docs/EmulationStation/\n"; return false; //exit after printing help } } @@ -107,13 +241,13 @@ bool parseArgs(int argc, char* argv[], unsigned int* width, unsigned int* height bool verifyHomeFolderExists() { //make sure the config directory exists - std::string home = getHomePath(); + std::string home = Utils::FileSystem::getHomePath(); std::string configDir = home + "/.emulationstation"; - if(!fs::exists(configDir)) + if(!Utils::FileSystem::exists(configDir)) { std::cout << "Creating config directory \"" << configDir << "\"\n"; - fs::create_directory(configDir); - if(!fs::exists(configDir)) + Utils::FileSystem::createDirectory(configDir); + if(!Utils::FileSystem::exists(configDir)) { std::cerr << "Config directory could not be created!\n"; return false; @@ -123,12 +257,12 @@ bool verifyHomeFolderExists() return true; } -// Returns true if everything is OK, -bool loadSystemConfigFile(const char** errorString) +// Returns true if everything is OK, +bool loadSystemConfigFile(Window* window, const char** errorString) { *errorString = NULL; - if(!SystemData::loadConfig()) + if(!SystemData::loadConfig(window)) { LOG(LogError) << "Error while parsing systems configuration file!"; *errorString = "IT LOOKS LIKE YOUR SYSTEMS CONFIGURATION FILE HAS NOT BEEN SET UP OR IS INVALID. YOU'LL NEED TO DO THIS BY HAND, UNFORTUNATELY.\n\n" @@ -157,20 +291,16 @@ void onExit() int main(int argc, char* argv[]) { - unsigned int width = 0; - unsigned int height = 0; - - std::locale::global(boost::locale::generator().generate("")); - boost::filesystem::path::imbue(std::locale()); + std::locale::global(std::locale("C")); - if(!parseArgs(argc, argv, &width, &height)) + if(!parseArgs(argc, argv)) return 0; // only show the console on Windows if HideConsole is false #ifdef WIN32 // MSVC has a "SubSystem" option, with two primary options: "WINDOWS" and "CONSOLE". - // In "WINDOWS" mode, no console is automatically created for us. This is good, - // because we can choose to only create the console window if the user explicitly + // In "WINDOWS" mode, no console is automatically created for us. This is good, + // because we can choose to only create the console window if the user explicitly // asks for it, preventing it from flashing open and then closing. // In "CONSOLE" mode, a console is always automatically created for us before we // enter main. In this case, we can only hide the console after the fact, which @@ -192,18 +322,24 @@ int main(int argc, char* argv[]) }else{ // we want to hide the console // if we're compiled with the "WINDOWS" subsystem, this is already done. - // if we're compiled with the "CONSOLE" subsystem, a console is already created; + // if we're compiled with the "CONSOLE" subsystem, a console is already created; // it'll flash open, but we hide it nearly immediately if(GetConsoleWindow()) // should only pass in "CONSOLE" mode ShowWindow(GetConsoleWindow(), SW_HIDE); } #endif + // call this ONLY when linking with FreeImage as a static library +#ifdef FREEIMAGE_LIB + FreeImage_Initialise(); +#endif + //if ~/.emulationstation doesn't exist and cannot be created, bail if(!verifyHomeFolderExists()) return 1; //start the logger + Log::init(); Log::open(); LOG(LogInfo) << "EmulationStation - v" << PROGRAM_VERSION_STRING << ", built " << PROGRAM_BUILT_STRING; @@ -211,26 +347,32 @@ int main(int argc, char* argv[]) atexit(&onExit); Window window; + SystemScreenSaver screensaver(&window); + PowerSaver::init(); ViewController::init(&window); + CollectionSystemManager::init(&window); + MameNames::init(); window.pushGui(ViewController::get()); + bool splashScreen = Settings::getInstance()->getBool("SplashScreen"); + if(!scrape_cmdline) { - if(!window.init(width, height)) + if(!window.init()) { LOG(LogError) << "Window failed to initialize!"; return 1; } - std::string glExts = (const char*)glGetString(GL_EXTENSIONS); - LOG(LogInfo) << "Checking available OpenGL extensions..."; - LOG(LogInfo) << " ARB_texture_non_power_of_two: " << (glExts.find("ARB_texture_non_power_of_two") != std::string::npos ? "ok" : "MISSING"); - - window.renderLoadingScreen(); + if (splashScreen) + { + std::string progressText = "Loading system config..."; + window.renderLoadingScreen(progressText); + } } const char* errorMsg = NULL; - if(!loadSystemConfigFile(&errorMsg)) + if(!loadSystemConfigFile(splashScreen ? &window : nullptr, &errorMsg)) { // something went terribly wrong if(errorMsg == NULL) @@ -244,7 +386,7 @@ int main(int argc, char* argv[]) // we can't handle es_systems.cfg file problems inside ES itself, so display the error message then quit window.pushGui(new GuiMsgBox(&window, errorMsg, - "QUIT", [] { + "QUIT", [] { SDL_Event* quit = new SDL_Event(); quit->type = SDL_QUIT; SDL_PushEvent(quit); @@ -257,17 +399,19 @@ int main(int argc, char* argv[]) return run_scraper_cmdline(); } - //dont generate joystick events while we're loading (hopefully fixes "automatically started emulator" bug) - SDL_JoystickEventState(SDL_DISABLE); - // preload what we can right away instead of waiting for the user to select it // this makes for no delays when accessing content, but a longer startup time ViewController::get()->preload(); + if(splashScreen) + window.renderLoadingScreen("Done."); + + InputManager::getInstance()->init(); + //choose which GUI to open depending on if an input configuration already exists if(errorMsg == NULL) { - if(fs::exists(InputManager::getConfigPath()) && InputManager::getInstance()->getNumConfiguredDevices() > 0) + if(Utils::FileSystem::exists(InputManager::getConfigPath()) && InputManager::getInstance()->getNumConfiguredDevices() > 0) { ViewController::get()->goToStart(); }else{ @@ -275,35 +419,39 @@ int main(int argc, char* argv[]) } } - //generate joystick events since we're done loading - SDL_JoystickEventState(SDL_ENABLE); - int lastTime = SDL_GetTicks(); + int ps_time = SDL_GetTicks(); + bool running = true; while(running) { SDL_Event event; - while(SDL_PollEvent(&event)) + bool ps_standby = PowerSaver::getState() && (int) SDL_GetTicks() - ps_time > PowerSaver::getMode(); + + if(ps_standby ? SDL_WaitEventTimeout(&event, PowerSaver::getTimeout()) : SDL_PollEvent(&event)) { - switch(event.type) + do { - case SDL_JOYHATMOTION: - case SDL_JOYBUTTONDOWN: - case SDL_JOYBUTTONUP: - case SDL_KEYDOWN: - case SDL_KEYUP: - case SDL_JOYAXISMOTION: - case SDL_TEXTINPUT: - case SDL_TEXTEDITING: - case SDL_JOYDEVICEADDED: - case SDL_JOYDEVICEREMOVED: - InputManager::getInstance()->parseEvent(event, &window); - break; - case SDL_QUIT: + InputManager::getInstance()->parseEvent(event, &window); + + if(event.type == SDL_QUIT) running = false; - break; - } + } while(SDL_PollEvent(&event)); + + // triggered if exiting from SDL_WaitEvent due to event + if (ps_standby) + // show as if continuing from last event + lastTime = SDL_GetTicks(); + + // reset counter + ps_time = SDL_GetTicks(); + } + else if (ps_standby) + { + // If exitting SDL_WaitEventTimeout due to timeout. Trail considering + // timeout as an event + ps_time = SDL_GetTicks(); } if(window.isSleeping()) @@ -317,8 +465,8 @@ int main(int argc, char* argv[]) int deltaTime = curTime - lastTime; lastTime = curTime; - // cap deltaTime at 1000 - if(deltaTime > 1000 || deltaTime < 0) + // cap deltaTime if it ever goes negative + if(deltaTime < 0) deltaTime = 1000; window.update(deltaTime); @@ -330,10 +478,23 @@ int main(int argc, char* argv[]) while(window.peekGui() != ViewController::get()) delete window.peekGui(); + + InputManager::getInstance()->deinit(); window.deinit(); + MameNames::deinit(); + CollectionSystemManager::deinit(); SystemData::deleteSystems(); + // call this ONLY when linking with FreeImage as a static library +#ifdef FREEIMAGE_LIB + FreeImage_DeInitialise(); +#endif + + processQuitMode(); + + ProfileDump(); + LOG(LogInfo) << "EmulationStation cleanly shutting down."; return 0; diff --git a/es-app/src/scrapers/GamesDBJSONScraper.cpp b/es-app/src/scrapers/GamesDBJSONScraper.cpp new file mode 100644 index 0000000000..456b5b60a6 --- /dev/null +++ b/es-app/src/scrapers/GamesDBJSONScraper.cpp @@ -0,0 +1,409 @@ +#include +#include + +#include "scrapers/GamesDBJSONScraper.h" +#include "scrapers/GamesDBJSONScraperResources.h" + +#include "FileData.h" +#include "Log.h" +#include "PlatformId.h" +#include "Settings.h" +#include "SystemData.h" +#include "utils/TimeUtil.h" +#include + +/* When raspbian will get an up to date version of rapidjson we'll be + able to have it throw in case of error with the following: +#ifndef RAPIDJSON_ASSERT +#define RAPIDJSON_ASSERT(x) \ + if (!(x)) { \ + throw std::runtime_error("rapidjson internal assertion failure: " #x); \ + } +#endif // RAPIDJSON_ASSERT +*/ + +#include +#include + +using namespace PlatformIds; +using namespace rapidjson; + +namespace +{ +TheGamesDBJSONRequestResources resources; +} + +const std::map gamesdb_new_platformid_map{ + { THREEDO, "25" }, + { AMIGA, "4911" }, + { AMSTRAD_CPC, "4914" }, + { APPLE_II, "4942" }, + { ARCADE, "23" }, + { ATARI_800, "4943" }, + { ATARI_2600, "22" }, + { ATARI_5200, "26" }, + { ATARI_7800, "27" }, + { ATARI_JAGUAR, "28" }, + { ATARI_JAGUAR_CD, "29" }, + { ATARI_LYNX, "4924" }, + { ATARI_ST, "4937" }, + { ATARI_XE, "30" }, + { COLECOVISION, "31" }, + { COMMODORE_64, "40" }, + { DAPHNE, "23" }, + { INTELLIVISION, "32" }, + { MAC_OS, "37" }, + { XBOX, "14" }, + { XBOX_360, "15" }, + { MSX, "4929" }, + { NEOGEO, "24" }, + { NEOGEO_CD, "4956" }, + { NEOGEO_POCKET, "4922" }, + { NEOGEO_POCKET_COLOR, "4923" }, + { NINTENDO_3DS, "4912" }, + { NINTENDO_64, "3" }, + { NINTENDO_DS, "8" }, + { FAMICOM_DISK_SYSTEM, "4936" }, + { NINTENDO_ENTERTAINMENT_SYSTEM, "7" }, + { NINTENDO_POKEMON_MINI, "4957" }, + { GAME_BOY, "4" }, + { GAME_BOY_ADVANCE, "5" }, + { GAME_BOY_COLOR, "41" }, + { NINTENDO_GAMECUBE, "2" }, + { NINTENDO_WII, "9" }, + { NINTENDO_WII_U, "38" }, + { NINTENDO_VIRTUAL_BOY, "4918" }, + { NINTENDO_GAME_AND_WATCH, "4950" }, + { NINTENDO_SWITCH, "4971" }, + { PC, "1" }, + { SEGA_32X, "33" }, + { SEGA_CD, "21" }, + { SEGA_DREAMCAST, "16" }, + { SEGA_GAME_GEAR, "20" }, + { SEGA_GENESIS, "18" }, + { SEGA_MASTER_SYSTEM, "35" }, + { SEGA_MEGA_DRIVE, "36" }, + { SEGA_SATURN, "17" }, + { SEGA_SG1000, "4949" }, + { SAM_COUPE, "4979" }, + { PLAYSTATION, "10" }, + { PLAYSTATION_2, "11" }, + { PLAYSTATION_3, "12" }, + { PLAYSTATION_4, "4919" }, + { PLAYSTATION_VITA, "39" }, + { PLAYSTATION_PORTABLE, "13" }, + { SUPER_NINTENDO, "6" }, + { SHARP_X1, "4977" }, + { SHARP_X6800, "4931"}, + { NEC_PC_8801, "4933"}, + { NEC_PC_9801, "4934"}, + { TURBOGRAFX_16, "34" }, // HuCards only + { TURBOGRAFX_CD, "4955" }, // CD-ROMs only + { NEC_PCFX, "4930" }, + { WONDERSWAN, "4925" }, + { WONDERSWAN_COLOR, "4926" }, + { ZX_SPECTRUM, "4913" }, + { ZX81_SINCLAR, "5010" }, + { VIDEOPAC_ODYSSEY2, "4927" }, + { VECTREX, "4939" }, + { TRS80_COLOR_COMPUTER, "4941" }, + { TI_99, "4953" }, + { TANDY, "4941" }, + { FMTOWNS, "4932" }, +}; + +void thegamesdb_generate_json_scraper_requests(const ScraperSearchParams& params, + std::queue>& requests, std::vector& results) +{ + resources.prepare(); + std::string path = "https://api.thegamesdb.net/v1"; + bool usingGameID = false; + const std::string apiKey = std::string("apikey=") + resources.getApiKey(); + std::string cleanName = params.nameOverride; + if (!cleanName.empty() && cleanName.substr(0, 3) == "id:") + { + std::string gameID = cleanName.substr(3); + path += "/Games/ByGameID?" + apiKey + + "&fields=players,publishers,genres,overview,last_updated,rating," + "platform,coop,youtube,os,processor,ram,hdd,video,sound,alternates&" + "include=boxart&id=" + + HttpReq::urlEncode(gameID); + usingGameID = true; + } else + { + if (cleanName.empty()) + cleanName = params.game->getCleanName(); + path += "/Games/ByGameName?" + apiKey + + "&fields=players,publishers,genres,overview,last_updated,rating," + "platform,coop,youtube,os,processor,ram,hdd,video,sound,alternates&" + "include=boxart&name=" + + HttpReq::urlEncode(cleanName); + } + + if (usingGameID) + { + // if we have the ID already, we don't need the GetGameList request + requests.push(std::unique_ptr(new TheGamesDBJSONRequest(results, path))); + } else + { + std::string platformQueryParam; + auto& platforms = params.system->getPlatformIds(); + if (!platforms.empty()) + { + bool first = true; + platformQueryParam += "&filter%5Bplatform%5D="; + for (auto platformIt = platforms.cbegin(); platformIt != platforms.cend(); platformIt++) + { + auto mapIt = gamesdb_new_platformid_map.find(*platformIt); + if (mapIt != gamesdb_new_platformid_map.cend()) + { + if (!first) + { + platformQueryParam += ","; + } + platformQueryParam += HttpReq::urlEncode(mapIt->second); + first = false; + } else + { + LOG(LogWarning) << "TheGamesDB scraper warning - no support for platform " + << getPlatformName(*platformIt); + } + } + path += platformQueryParam; + } + + requests.push(std::unique_ptr(new TheGamesDBJSONRequest(requests, results, path))); + } +} + +namespace +{ + +std::string getStringOrThrow(const Value& v, const std::string& key) +{ + if (!v.HasMember(key.c_str()) || !v[key.c_str()].IsString()) + { + throw std::runtime_error("rapidjson internal assertion failure: missing or non string key:" + key); + } + return v[key.c_str()].GetString(); +} + +int getIntOrThrow(const Value& v, const std::string& key) +{ + if (!v.HasMember(key.c_str()) || !v[key.c_str()].IsInt()) + { + throw std::runtime_error("rapidjson internal assertion failure: missing or non int key:" + key); + } + return v[key.c_str()].GetInt(); +} + +int getIntOrThrow(const Value& v) +{ + if (!v.IsInt()) + { + throw std::runtime_error("rapidjson internal assertion failure: not an int"); + } + return v.GetInt(); +} + +std::string getBoxartImage(const Value& v) +{ + if (!v.IsArray() || v.Size() == 0) + { + return ""; + } + for (int i = 0; i < (int)v.Size(); ++i) + { + auto& im = v[i]; + std::string type = getStringOrThrow(im, "type"); + std::string side = getStringOrThrow(im, "side"); + if (type == "boxart" && side == "front") + { + return getStringOrThrow(im, "filename"); + } + } + return getStringOrThrow(v[0], "filename"); +} + +std::string getDeveloperString(const Value& v) +{ + if (!v.IsArray()) + { + return ""; + } + std::string out = ""; + bool first = true; + for (int i = 0; i < (int)v.Size(); ++i) + { + auto mapIt = resources.gamesdb_new_developers_map.find(getIntOrThrow(v[i])); + if (mapIt == resources.gamesdb_new_developers_map.cend()) + { + continue; + } + if (!first) + { + out += ", "; + } + out += mapIt->second; + first = false; + } + return out; +} + +std::string getPublisherString(const Value& v) +{ + if (!v.IsArray()) + { + return ""; + } + std::string out = ""; + bool first = true; + for (int i = 0; i < (int)v.Size(); ++i) + { + auto mapIt = resources.gamesdb_new_publishers_map.find(getIntOrThrow(v[i])); + if (mapIt == resources.gamesdb_new_publishers_map.cend()) + { + continue; + } + if (!first) + { + out += ", "; + } + out += mapIt->second; + first = false; + } + return out; +} + +std::string getGenreString(const Value& v) +{ + if (!v.IsArray()) + { + return ""; + } + std::string out = ""; + bool first = true; + for (int i = 0; i < (int)v.Size(); ++i) + { + auto mapIt = resources.gamesdb_new_genres_map.find(getIntOrThrow(v[i])); + if (mapIt == resources.gamesdb_new_genres_map.cend()) + { + continue; + } + if (!first) + { + out += ", "; + } + out += mapIt->second; + first = false; + } + return out; +} + +void processGame(const Value& game, const Value& boxart, std::vector& results) +{ + std::string baseImageUrlThumb = getStringOrThrow(boxart["base_url"], "thumb"); + std::string baseImageUrlLarge = getStringOrThrow(boxart["base_url"], "large"); + + ScraperSearchResult result; + + result.mdl.set("name", getStringOrThrow(game, "game_title")); + if (game.HasMember("overview") && game["overview"].IsString()) + { + result.mdl.set("desc", game["overview"].GetString()); + } + if (game.HasMember("release_date") && game["release_date"].IsString()) + { + result.mdl.set( + "releasedate", Utils::Time::DateTime(Utils::Time::stringToTime(game["release_date"].GetString(), "%Y-%m-%d"))); + } + if (game.HasMember("developers") && game["developers"].IsArray()) + { + result.mdl.set("developer", getDeveloperString(game["developers"])); + } + if (game.HasMember("publishers") && game["publishers"].IsArray()) + { + result.mdl.set("publisher", getPublisherString(game["publishers"])); + } + if (game.HasMember("genres") && game["genres"].IsArray()) + { + + result.mdl.set("genre", getGenreString(game["genres"])); + } + if (game.HasMember("players") && game["players"].IsInt()) + { + result.mdl.set("players", std::to_string(game["players"].GetInt())); + } + + + if (boxart.HasMember("data") && boxart["data"].IsObject()) + { + std::string id = std::to_string(getIntOrThrow(game, "id")); + if (boxart["data"].HasMember(id.c_str())) + { + std::string image = getBoxartImage(boxart["data"][id.c_str()]); + result.thumbnailUrl = baseImageUrlThumb + "/" + image; + result.imageUrl = baseImageUrlLarge + "/" + image; + } + } + + results.push_back(result); +} +} // namespace + +void TheGamesDBJSONRequest::process(const std::unique_ptr& req, std::vector& results) +{ + assert(req->status() == HttpReq::REQ_SUCCESS); + + Document doc; + doc.Parse(req->getContent().c_str()); + + if (doc.HasParseError()) + { + std::string err = + std::string("TheGamesDBJSONRequest - Error parsing JSON. \n\t") + GetParseError_En(doc.GetParseError()); + setError(err); + LOG(LogError) << err; + return; + } + + if (!doc.HasMember("data") || !doc["data"].HasMember("games") || !doc["data"]["games"].IsArray()) + { + std::string warn = "TheGamesDBJSONRequest - Response had no game data.\n"; + LOG(LogWarning) << warn; + return; + } + const Value& games = doc["data"]["games"]; + + if (!doc.HasMember("include") || !doc["include"].HasMember("boxart")) + { + std::string warn = "TheGamesDBJSONRequest - Response had no include boxart data.\n"; + LOG(LogWarning) << warn; + return; + } + + const Value& boxart = doc["include"]["boxart"]; + + if (!boxart.HasMember("base_url") || !boxart.HasMember("data") || !boxart.IsObject()) + { + std::string warn = "TheGamesDBJSONRequest - Response include had no usable boxart data.\n"; + LOG(LogWarning) << warn; + return; + } + + resources.ensureResources(); + + + for (int i = 0; i < (int)games.Size(); ++i) + { + auto& v = games[i]; + try + { + processGame(v, boxart, results); + } + catch (std::runtime_error& e) + { + LOG(LogError) << "Error while processing game: " << e.what(); + } + } +} diff --git a/es-app/src/scrapers/GamesDBJSONScraper.h b/es-app/src/scrapers/GamesDBJSONScraper.h new file mode 100644 index 0000000000..505dbcf2be --- /dev/null +++ b/es-app/src/scrapers/GamesDBJSONScraper.h @@ -0,0 +1,37 @@ +#pragma once +#ifndef ES_APP_SCRAPERS_GAMES_DB_JSON_SCRAPER_H +#define ES_APP_SCRAPERS_GAMES_DB_JSON_SCRAPER_H + +#include "scrapers/Scraper.h" + +namespace pugi +{ +class xml_document; +} + +void thegamesdb_generate_json_scraper_requests(const ScraperSearchParams& params, + std::queue>& requests, std::vector& results); + +class TheGamesDBJSONRequest : public ScraperHttpRequest +{ + public: + // ctor for a GetGameList request + TheGamesDBJSONRequest(std::queue>& requestsWrite, + std::vector& resultsWrite, const std::string& url) + : ScraperHttpRequest(resultsWrite, url), mRequestQueue(&requestsWrite) + { + } + // ctor for a GetGame request + TheGamesDBJSONRequest(std::vector& resultsWrite, const std::string& url) + : ScraperHttpRequest(resultsWrite, url), mRequestQueue(nullptr) + { + } + + protected: + void process(const std::unique_ptr& req, std::vector& results) override; + bool isGameRequest() { return !mRequestQueue; } + + std::queue>* mRequestQueue; +}; + +#endif // ES_APP_SCRAPERS_GAMES_DB_JSON_SCRAPER_H diff --git a/es-app/src/scrapers/GamesDBJSONScraperResources.cpp b/es-app/src/scrapers/GamesDBJSONScraperResources.cpp new file mode 100644 index 0000000000..517fd3369e --- /dev/null +++ b/es-app/src/scrapers/GamesDBJSONScraperResources.cpp @@ -0,0 +1,207 @@ +#include +#include +#include +#include + +#include "Log.h" + +#include "scrapers/GamesDBJSONScraperResources.h" +#include "utils/FileSystemUtil.h" + + +#include +#include + +using namespace rapidjson; + + +namespace +{ +constexpr char GamesDBAPIKey[] = "445fcbc3f32bb2474bc27016b99eb963d318ee3a608212c543b9a79de1041600"; + + +constexpr int MAX_WAIT_MS = 90000; +constexpr int POLL_TIME_MS = 500; +constexpr int MAX_WAIT_ITER = MAX_WAIT_MS / POLL_TIME_MS; + +constexpr char SCRAPER_RESOURCES_DIR[] = "scrapers"; +constexpr char DEVELOPERS_JSON_FILE[] = "gamesdb_developers.json"; +constexpr char PUBLISHERS_JSON_FILE[] = "gamesdb_publishers.json"; +constexpr char GENRES_JSON_FILE[] = "gamesdb_genres.json"; +constexpr char DEVELOPERS_ENDPOINT[] = "/Developers"; +constexpr char PUBLISHERS_ENDPOINT[] = "/Publishers"; +constexpr char GENRES_ENDPOINT[] = "/Genres"; + +std::string genFilePath(const std::string& file_name) +{ + return Utils::FileSystem::getGenericPath(getScrapersResouceDir() + "/" + file_name); +} + +void ensureScrapersResourcesDir() +{ + std::string path = getScrapersResouceDir(); + if (!Utils::FileSystem::exists(path)) + Utils::FileSystem::createDirectory(path); +} + +} // namespace + + +std::string getScrapersResouceDir() +{ + return Utils::FileSystem::getGenericPath( + Utils::FileSystem::getHomePath() + "/.emulationstation/" + SCRAPER_RESOURCES_DIR); +} + +std::string TheGamesDBJSONRequestResources::getApiKey() const { return GamesDBAPIKey; } + + +void TheGamesDBJSONRequestResources::prepare() +{ + if (checkLoaded()) + { + return; + } + + if (loadResource(gamesdb_new_developers_map, "developers", genFilePath(DEVELOPERS_JSON_FILE)) && + !gamesdb_developers_resource_request) + { + gamesdb_developers_resource_request = fetchResource(DEVELOPERS_ENDPOINT); + } + if (loadResource(gamesdb_new_publishers_map, "publishers", genFilePath(PUBLISHERS_JSON_FILE)) && + !gamesdb_publishers_resource_request) + { + gamesdb_publishers_resource_request = fetchResource(PUBLISHERS_ENDPOINT); + } + if (loadResource(gamesdb_new_genres_map, "genres", genFilePath(GENRES_JSON_FILE)) && !gamesdb_genres_resource_request) + { + gamesdb_genres_resource_request = fetchResource(GENRES_ENDPOINT); + } +} + +void TheGamesDBJSONRequestResources::ensureResources() +{ + + if (checkLoaded()) + { + return; + } + + + for (int i = 0; i < MAX_WAIT_ITER; ++i) + { + if (gamesdb_developers_resource_request && + saveResource(gamesdb_developers_resource_request.get(), gamesdb_new_developers_map, "developers", + genFilePath(DEVELOPERS_JSON_FILE))) + { + + gamesdb_developers_resource_request.reset(nullptr); + } + if (gamesdb_publishers_resource_request && + saveResource(gamesdb_publishers_resource_request.get(), gamesdb_new_publishers_map, "publishers", + genFilePath(PUBLISHERS_JSON_FILE))) + { + gamesdb_publishers_resource_request.reset(nullptr); + } + if (gamesdb_genres_resource_request && saveResource(gamesdb_genres_resource_request.get(), gamesdb_new_genres_map, + "genres", genFilePath(GENRES_JSON_FILE))) + { + gamesdb_genres_resource_request.reset(nullptr); + } + + if (!gamesdb_developers_resource_request && !gamesdb_publishers_resource_request && !gamesdb_genres_resource_request) + { + return; + } + std::this_thread::sleep_for(std::chrono::milliseconds(POLL_TIME_MS)); + } + LOG(LogError) << "Timed out while waiting for resources\n"; +} + +bool TheGamesDBJSONRequestResources::checkLoaded() +{ + return !gamesdb_new_genres_map.empty() && !gamesdb_new_developers_map.empty() && !gamesdb_new_publishers_map.empty(); +} + +bool TheGamesDBJSONRequestResources::saveResource(HttpReq* req, std::unordered_map& resource, + const std::string& resource_name, const std::string& file_name) +{ + + if (req == nullptr) + { + LOG(LogError) << "Http request pointer was null\n"; + return true; + } + if (req->status() == HttpReq::REQ_IN_PROGRESS) + { + return false; // Not ready: wait some more + } + if (req->status() != HttpReq::REQ_SUCCESS) + { + LOG(LogError) << "Resource request for " << file_name << " failed:\n\t" << req->getErrorMsg(); + return true; // Request failed, resetting request. + } + + ensureScrapersResourcesDir(); + + std::ofstream fout(file_name); + fout << req->getContent(); + fout.close(); + loadResource(resource, resource_name, file_name); + return true; +} + +std::unique_ptr TheGamesDBJSONRequestResources::fetchResource(const std::string& endpoint) +{ + std::string path = "https://api.thegamesdb.net/v1"; + path += endpoint; + path += "?apikey=" + getApiKey(); + + return std::unique_ptr(new HttpReq(path)); +} + + +int TheGamesDBJSONRequestResources::loadResource( + std::unordered_map& resource, const std::string& resource_name, const std::string& file_name) +{ + + + std::ifstream fin(file_name); + if (!fin.good()) + { + return 1; + } + std::stringstream buffer; + buffer << fin.rdbuf(); + Document doc; + doc.Parse(buffer.str().c_str()); + + if (doc.HasParseError()) + { + std::string err = std::string("TheGamesDBJSONRequest - Error parsing JSON for resource file ") + file_name + + ":\n\t" + GetParseError_En(doc.GetParseError()); + LOG(LogError) << err; + return 1; + } + + if (!doc.HasMember("data") || !doc["data"].HasMember(resource_name.c_str()) || + !doc["data"][resource_name.c_str()].IsObject()) + { + std::string err = "TheGamesDBJSONRequest - Response had no resource data.\n"; + LOG(LogError) << err; + return 1; + } + auto& data = doc["data"][resource_name.c_str()]; + + for (Value::ConstMemberIterator itr = data.MemberBegin(); itr != data.MemberEnd(); ++itr) + { + auto& entry = itr->value; + if (!entry.IsObject() || !entry.HasMember("id") || !entry["id"].IsInt() || !entry.HasMember("name") || + !entry["name"].IsString()) + { + continue; + } + resource[entry["id"].GetInt()] = entry["name"].GetString(); + } + return resource.empty(); +} diff --git a/es-app/src/scrapers/GamesDBJSONScraperResources.h b/es-app/src/scrapers/GamesDBJSONScraperResources.h new file mode 100644 index 0000000000..4cbbcc5872 --- /dev/null +++ b/es-app/src/scrapers/GamesDBJSONScraperResources.h @@ -0,0 +1,42 @@ +#pragma once +#ifndef ES_APP_SCRAPERS_GAMES_DB_JSON_SCRAPER_RESOURCES_H +#define ES_APP_SCRAPERS_GAMES_DB_JSON_SCRAPER_RESOURCES_H + +#include +#include +#include +#include + +#include "HttpReq.h" + + +struct TheGamesDBJSONRequestResources +{ + TheGamesDBJSONRequestResources() = default; + + void prepare(); + void ensureResources(); + std::string getApiKey() const; + + std::unordered_map gamesdb_new_developers_map; + std::unordered_map gamesdb_new_publishers_map; + std::unordered_map gamesdb_new_genres_map; + + private: + bool checkLoaded(); + + bool saveResource(HttpReq* req, std::unordered_map& resource, const std::string& resource_name, + const std::string& file_name); + std::unique_ptr fetchResource(const std::string& endpoint); + + int loadResource( + std::unordered_map& resource, const std::string& resource_name, const std::string& file_name); + + std::unique_ptr gamesdb_developers_resource_request; + std::unique_ptr gamesdb_publishers_resource_request; + std::unique_ptr gamesdb_genres_resource_request; +}; + +std::string getScrapersResouceDir(); + +#endif // ES_APP_SCRAPERS_GAMES_DB_JSON_SCRAPER_H diff --git a/es-app/src/scrapers/GamesDBScraper.cpp b/es-app/src/scrapers/GamesDBScraper.cpp deleted file mode 100644 index ea78e374e1..0000000000 --- a/es-app/src/scrapers/GamesDBScraper.cpp +++ /dev/null @@ -1,164 +0,0 @@ -#include "scrapers/GamesDBScraper.h" -#include "Log.h" -#include "pugixml/pugixml.hpp" -#include "MetaData.h" -#include "Settings.h" -#include "Util.h" -#include - -using namespace PlatformIds; -const std::map gamesdb_platformid_map = boost::assign::map_list_of - (THREEDO, "3DO") - (AMIGA, "Amiga") - (AMSTRAD_CPC, "Amstrad CPC") - // missing apple2 - (ARCADE, "Arcade") - // missing atari 800 - (ATARI_2600, "Atari 2600") - (ATARI_5200, "Atari 5200") - (ATARI_7800, "Atari 7800") - (ATARI_JAGUAR, "Atari Jaguar") - (ATARI_JAGUAR_CD, "Atari Jaguar CD") - (ATARI_LYNX, "Atari Lynx") - // missing atari ST/STE/Falcon - (ATARI_XE, "Atari XE") - (COLECOVISION, "Colecovision") - (COMMODORE_64, "Commodore 64") - (INTELLIVISION, "Intellivision") - (MAC_OS, "Mac OS") - (XBOX, "Microsoft Xbox") - (XBOX_360, "Microsoft Xbox 360") - // missing MSX - (NEOGEO, "NeoGeo") - (NEOGEO_POCKET, "Neo Geo Pocket") - (NEOGEO_POCKET_COLOR, "Neo Geo Pocket Color") - (NINTENDO_3DS, "Nintendo 3DS") - (NINTENDO_64, "Nintendo 64") - (NINTENDO_DS, "Nintendo DS") - (NINTENDO_ENTERTAINMENT_SYSTEM, "Nintendo Entertainment System (NES)") - (GAME_BOY, "Nintendo Game Boy") - (GAME_BOY_ADVANCE, "Nintendo Game Boy Advance") - (GAME_BOY_COLOR, "Nintendo Game Boy Color") - (NINTENDO_GAMECUBE, "Nintendo GameCube") - (NINTENDO_WII, "Nintendo Wii") - (NINTENDO_WII_U, "Nintendo Wii U") - (PC, "PC") - (SEGA_32X, "Sega 32X") - (SEGA_CD, "Sega CD") - (SEGA_DREAMCAST, "Sega Dreamcast") - (SEGA_GAME_GEAR, "Sega Game Gear") - (SEGA_GENESIS, "Sega Genesis") - (SEGA_MASTER_SYSTEM, "Sega Master System") - (SEGA_MEGA_DRIVE, "Sega Mega Drive") - (SEGA_SATURN, "Sega Saturn") - (PLAYSTATION, "Sony Playstation") - (PLAYSTATION_2, "Sony Playstation 2") - (PLAYSTATION_3, "Sony Playstation 3") - (PLAYSTATION_4, "Sony Playstation 4") - (PLAYSTATION_VITA, "Sony Playstation Vita") - (PLAYSTATION_PORTABLE, "Sony PSP") - (SUPER_NINTENDO, "Super Nintendo (SNES)") - (TURBOGRAFX_16, "TurboGrafx 16") - (WONDERSWAN, "WonderSwan") - (WONDERSWAN_COLOR, "WonderSwan Color") - (ZX_SPECTRUM, "Sinclair ZX Spectrum"); - - -void thegamesdb_generate_scraper_requests(const ScraperSearchParams& params, std::queue< std::unique_ptr >& requests, - std::vector& results) -{ - std::string path = "thegamesdb.net/api/GetGame.php?"; - - std::string cleanName = params.nameOverride; - if(cleanName.empty()) - cleanName = params.game->getCleanName(); - - path += "name=" + HttpReq::urlEncode(cleanName); - - if(params.system->getPlatformIds().empty()) - { - // no platform specified, we're done - requests.push(std::unique_ptr(new TheGamesDBRequest(results, path))); - }else{ - // go through the list, we need to split this into multiple requests - // because TheGamesDB API either sucks or I don't know how to use it properly... - std::string urlBase = path; - auto& platforms = params.system->getPlatformIds(); - for(auto platformIt = platforms.begin(); platformIt != platforms.end(); platformIt++) - { - path = urlBase; - auto mapIt = gamesdb_platformid_map.find(*platformIt); - if(mapIt != gamesdb_platformid_map.end()) - { - path += "&platform="; - path += HttpReq::urlEncode(mapIt->second); - }else{ - LOG(LogWarning) << "TheGamesDB scraper warning - no support for platform " << getPlatformName(*platformIt); - } - - requests.push(std::unique_ptr(new TheGamesDBRequest(results, path))); - } - } -} - -void TheGamesDBRequest::process(const std::unique_ptr& req, std::vector& results) -{ - assert(req->status() == HttpReq::REQ_SUCCESS); - - pugi::xml_document doc; - pugi::xml_parse_result parseResult = doc.load(req->getContent().c_str()); - if(!parseResult) - { - std::stringstream ss; - ss << "GamesDBRequest - Error parsing XML. \n\t" << parseResult.description() << ""; - std::string err = ss.str(); - setError(err); - LOG(LogError) << err; - return; - } - - pugi::xml_node data = doc.child("Data"); - - std::string baseImageUrl = data.child("baseImgUrl").text().get(); - - pugi::xml_node game = data.child("Game"); - while(game && results.size() < MAX_SCRAPER_RESULTS) - { - ScraperSearchResult result; - - result.mdl.set("name", game.child("GameTitle").text().get()); - result.mdl.set("desc", game.child("Overview").text().get()); - - boost::posix_time::ptime rd = string_to_ptime(game.child("ReleaseDate").text().get(), "%m/%d/%Y"); - result.mdl.setTime("releasedate", rd); - - result.mdl.set("developer", game.child("Developer").text().get()); - result.mdl.set("publisher", game.child("Publisher").text().get()); - result.mdl.set("genre", game.child("Genres").first_child().text().get()); - result.mdl.set("players", game.child("Players").text().get()); - - if(Settings::getInstance()->getBool("ScrapeRatings") && game.child("Rating")) - { - float ratingVal = (game.child("Rating").text().as_int() / 10.0f); - std::stringstream ss; - ss << ratingVal; - result.mdl.set("rating", ss.str()); - } - - pugi::xml_node images = game.child("Images"); - - if(images) - { - pugi::xml_node art = images.find_child_by_attribute("boxart", "side", "front"); - - if(art) - { - result.thumbnailUrl = baseImageUrl + art.attribute("thumb").as_string(); - result.imageUrl = baseImageUrl + art.text().get(); - } - } - - results.push_back(result); - game = game.next_sibling("Game"); - } -} diff --git a/es-app/src/scrapers/GamesDBScraper.h b/es-app/src/scrapers/GamesDBScraper.h deleted file mode 100644 index cf5f69ede4..0000000000 --- a/es-app/src/scrapers/GamesDBScraper.h +++ /dev/null @@ -1,14 +0,0 @@ -#pragma once - -#include "scrapers/Scraper.h" - -void thegamesdb_generate_scraper_requests(const ScraperSearchParams& params, std::queue< std::unique_ptr >& requests, - std::vector& results); - -class TheGamesDBRequest : public ScraperHttpRequest -{ -public: - TheGamesDBRequest(std::vector& resultsWrite, const std::string& url) : ScraperHttpRequest(resultsWrite, url) {} -protected: - void process(const std::unique_ptr& req, std::vector& results) override; -}; diff --git a/es-app/src/scrapers/Scraper.cpp b/es-app/src/scrapers/Scraper.cpp index c827a4755f..bc3e6b00dd 100644 --- a/es-app/src/scrapers/Scraper.cpp +++ b/es-app/src/scrapers/Scraper.cpp @@ -1,30 +1,41 @@ #include "scrapers/Scraper.h" + +#include "FileData.h" +#include "GamesDBJSONScraper.h" +#include "ScreenScraper.h" #include "Log.h" #include "Settings.h" +#include "SystemData.h" #include -#include -#include - -#include "GamesDBScraper.h" -#include "TheArchiveScraper.h" +#include -const std::map scraper_request_funcs = boost::assign::map_list_of - ("TheGamesDB", &thegamesdb_generate_scraper_requests) - ("TheArchive", &thearchive_generate_scraper_requests); +const std::map scraper_request_funcs { + { "TheGamesDB", &thegamesdb_generate_json_scraper_requests }, + { "ScreenScraper", &screenscraper_generate_scraper_requests } +}; std::unique_ptr startScraperSearch(const ScraperSearchParams& params) { const std::string& name = Settings::getInstance()->getString("Scraper"); - std::unique_ptr handle(new ScraperSearchHandle()); - scraper_request_funcs.at(name)(params, handle->mRequestQueue, handle->mResults); + + // Check if the Scraper in the settings still exists as a registered scraping source. + if (scraper_request_funcs.find(name) == scraper_request_funcs.end()) + { + LOG(LogWarning) << "Configured scraper (" << name << ") unavailable, scraping aborted."; + } + else + { + scraper_request_funcs.at(name)(params, handle->mRequestQueue, handle->mResults); + } + return handle; } std::vector getScraperList() { std::vector list; - for(auto it = scraper_request_funcs.begin(); it != scraper_request_funcs.end(); it++) + for(auto it = scraper_request_funcs.cbegin(); it != scraper_request_funcs.cend(); it++) { list.push_back(it->first); } @@ -32,6 +43,12 @@ std::vector getScraperList() return list; } +bool isValidConfiguredScraper() +{ + const std::string& name = Settings::getInstance()->getString("Scraper"); + return scraper_request_funcs.find(name) != scraper_request_funcs.end(); +} + // ScraperSearchHandle ScraperSearchHandle::ScraperSearchHandle() { @@ -43,15 +60,17 @@ void ScraperSearchHandle::update() if(mStatus == ASYNC_DONE) return; - while(!mRequestQueue.empty()) + if(!mRequestQueue.empty()) { - auto& req = mRequestQueue.front(); - AsyncHandleStatus status = req->status(); + // a request can add more requests to the queue while running, + // so be careful with references into the queue + auto& req = *(mRequestQueue.front()); + AsyncHandleStatus status = req.status(); if(status == ASYNC_ERROR) { // propegate error - setError(req->getStatusString()); + setError(req.getStatusString()); // empty our queue while(!mRequestQueue.empty()) @@ -64,7 +83,6 @@ void ScraperSearchHandle::update() if(status == ASYNC_DONE) { mRequestQueue.pop(); - continue; } // status == ASYNC_IN_PROGRESS @@ -87,7 +105,7 @@ ScraperRequest::ScraperRequest(std::vector& resultsWrite) : // ScraperHttpRequest -ScraperHttpRequest::ScraperHttpRequest(std::vector& resultsWrite, const std::string& url) +ScraperHttpRequest::ScraperHttpRequest(std::vector& resultsWrite, const std::string& url) : ScraperRequest(resultsWrite) { setStatus(ASYNC_IN_PROGRESS); @@ -125,7 +143,23 @@ MDResolveHandle::MDResolveHandle(const ScraperSearchResult& result, const Scrape { if(!result.imageUrl.empty()) { - std::string imgPath = getSaveAsPath(search, "image", result.imageUrl); + + std::string ext; + + // If we have a file extension returned by the scraper, then use it. + // Otherwise, try to guess it by the name of the URL, which point to an image. + if (!result.imageType.empty()) + { + ext = result.imageType; + }else{ + size_t dot = result.imageUrl.find_last_of('.'); + + if (dot != std::string::npos) + ext = result.imageUrl.substr(dot, std::string::npos); + } + + std::string imgPath = getSaveAsPath(search, "image", ext); + mFuncs.push_back(ResolvePair(downloadImageAsync(result.imageUrl, imgPath), [this, imgPath] { mResult.mdl.set("image", imgPath); @@ -138,9 +172,9 @@ void MDResolveHandle::update() { if(mStatus == ASYNC_DONE || mStatus == ASYNC_ERROR) return; - - auto it = mFuncs.begin(); - while(it != mFuncs.end()) + + auto it = mFuncs.cbegin(); + while(it != mFuncs.cend()) { if(it->first->status() == ASYNC_ERROR) { @@ -161,11 +195,11 @@ void MDResolveHandle::update() std::unique_ptr downloadImageAsync(const std::string& url, const std::string& saveAs) { - return std::unique_ptr(new ImageDownloadHandle(url, saveAs, + return std::unique_ptr(new ImageDownloadHandle(url, saveAs, Settings::getInstance()->getInt("ScraperResizeWidth"), Settings::getInstance()->getInt("ScraperResizeHeight"))); } -ImageDownloadHandle::ImageDownloadHandle(const std::string& url, const std::string& path, int maxWidth, int maxHeight) : +ImageDownloadHandle::ImageDownloadHandle(const std::string& url, const std::string& path, int maxWidth, int maxHeight) : mSavePath(path), mMaxWidth(maxWidth), mMaxHeight(maxHeight), mReq(new HttpReq(url)) { } @@ -219,7 +253,7 @@ bool resizeImage(const std::string& path, int maxWidth, int maxHeight) FREE_IMAGE_FORMAT format = FIF_UNKNOWN; FIBITMAP* image = NULL; - + //detect the filetype format = FreeImage_GetFileType(path.c_str(), 0); if(format == FIF_UNKNOWN) @@ -259,7 +293,7 @@ bool resizeImage(const std::string& path, int maxWidth, int maxHeight) return false; } - bool saved = FreeImage_Save(format, imageRescaled, path.c_str()); + bool saved = (FreeImage_Save(format, imageRescaled, path.c_str()) != 0); FreeImage_Unload(imageRescaled); if(!saved) @@ -268,26 +302,22 @@ bool resizeImage(const std::string& path, int maxWidth, int maxHeight) return saved; } -std::string getSaveAsPath(const ScraperSearchParams& params, const std::string& suffix, const std::string& url) +std::string getSaveAsPath(const ScraperSearchParams& params, const std::string& suffix, const std::string& extension) { const std::string subdirectory = params.system->getName(); - const std::string name = params.game->getPath().stem().generic_string() + "-" + suffix; + const std::string name = Utils::FileSystem::getStem(params.game->getPath()) + "-" + suffix; - std::string path = getHomePath() + "/.emulationstation/downloaded_images/"; + std::string path = Utils::FileSystem::getHomePath() + "/.emulationstation/downloaded_images/"; - if(!boost::filesystem::exists(path)) - boost::filesystem::create_directory(path); + if(!Utils::FileSystem::exists(path)) + Utils::FileSystem::createDirectory(path); path += subdirectory + "/"; - if(!boost::filesystem::exists(path)) - boost::filesystem::create_directory(path); + if(!Utils::FileSystem::exists(path)) + Utils::FileSystem::createDirectory(path); - size_t dot = url.find_last_of('.'); - std::string ext; - if(dot != std::string::npos) - ext = url.substr(dot, std::string::npos); - path += name + ext; + path += name + extension; return path; } diff --git a/es-app/src/scrapers/Scraper.h b/es-app/src/scrapers/Scraper.h index 87ab2502a7..b86fc90803 100644 --- a/es-app/src/scrapers/Scraper.h +++ b/es-app/src/scrapers/Scraper.h @@ -1,15 +1,21 @@ #pragma once +#ifndef ES_APP_SCRAPERS_SCRAPER_H +#define ES_APP_SCRAPERS_SCRAPER_H -#include "MetaData.h" -#include "SystemData.h" -#include "HttpReq.h" #include "AsyncHandle.h" -#include +#include "HttpReq.h" +#include "MetaData.h" #include +#include #include +#include +#include #define MAX_SCRAPER_RESULTS 7 +class FileData; +class SystemData; + struct ScraperSearchParams { SystemData* system; @@ -25,6 +31,9 @@ struct ScraperSearchResult MetaDataList mdl; std::string imageUrl; std::string thumbnailUrl; + + // Needed to pre-set the image type + std::string imageType; }; // So let me explain why I've abstracted this so heavily. @@ -44,8 +53,8 @@ struct ScraperSearchResult // We could do this if we used threads. Right now ES doesn't because I'm pretty sure I'll fuck it up, // and I'm not sure of the performance of threads on the Pi (single-core ARM). -// We could also do this if we used coroutines. -// I can't find a really good cross-platform coroutine library (x86/64/ARM Linux + Windows), +// We could also do this if we used coroutines. +// I can't find a really good cross-platform coroutine library (x86/64/ARM Linux + Windows), // and I don't want to spend more time chasing libraries than just writing it the long way once. // So, I did it the "long" way. @@ -62,7 +71,7 @@ class ScraperRequest : public AsyncHandle // returns "true" once we're done virtual void update() = 0; - + protected: std::vector& mResults; }; @@ -104,6 +113,9 @@ std::unique_ptr startScraperSearch(const ScraperSearchParam // returns a list of valid scraper names std::vector getScraperList(); +// returns true if the scraper configured in the settings is still valid +bool isValidConfiguredScraper(); + typedef void (*generate_scraper_requests_func)(const ScraperSearchParams& params, std::queue< std::unique_ptr >& requests, std::vector& results); // ------------------------------------------------------------------------- @@ -154,3 +166,5 @@ std::unique_ptr resolveMetaDataAssets(const ScraperSearchResult //Will overwrite the image at [path] with the new resized one. //Returns true if successful, false otherwise. bool resizeImage(const std::string& path, int maxWidth, int maxHeight); + +#endif // ES_APP_SCRAPERS_SCRAPER_H diff --git a/es-app/src/scrapers/ScreenScraper.cpp b/es-app/src/scrapers/ScreenScraper.cpp new file mode 100644 index 0000000000..da6fd1e0f4 --- /dev/null +++ b/es-app/src/scrapers/ScreenScraper.cpp @@ -0,0 +1,370 @@ +#include "scrapers/ScreenScraper.h" + +#include "utils/TimeUtil.h" +#include "utils/StringUtil.h" +#include "FileData.h" +#include "Log.h" +#include "PlatformId.h" +#include "Settings.h" +#include "SystemData.h" +#include +#include + +using namespace PlatformIds; + +/** + List of systems and their IDs from + https://www.screenscraper.fr/api2/systemesListe.php?devid=xxx&devpassword=yyy&softname=zzz&output=XML +**/ +const std::map screenscraper_platformid_map{ + { THREEDO, 29 }, + { AMIGA, 64 }, + { AMSTRAD_CPC, 65 }, + { APPLE_II, 86 }, + { ARCADE, 75 }, + { ATARI_800, 43 }, + { ATARI_2600, 26 }, + { ATARI_5200, 40 }, + { ATARI_7800, 41 }, + { ATARI_JAGUAR, 27 }, + { ATARI_JAGUAR_CD, 171 }, + { ATARI_LYNX, 28 }, + { ATARI_ST, 42 }, + { ATARI_XE, 43 }, + { BBC_MICRO, 37 }, + { COLECOVISION, 48 }, + { COMMODORE_64, 66 }, + { INTELLIVISION, 115 }, + { MAC_OS, 146 }, + { XBOX, 32 }, + { XBOX_360, 33 }, + { MSX, 113 }, + { NEOGEO, 142 }, + { NEOGEO_CD, 70 }, + { NEOGEO_POCKET, 25}, + { NEOGEO_POCKET_COLOR, 82 }, + { NINTENDO_3DS, 17 }, + { NINTENDO_64, 14 }, + { NINTENDO_DS, 15 }, + { FAMICOM_DISK_SYSTEM, 106 }, + { NINTENDO_ENTERTAINMENT_SYSTEM, 3 }, + { NINTENDO_POKEMON_MINI, 211 }, + { FAIRCHILD_CHANNELF, 80 }, + { GAME_BOY, 9 }, + { GAME_BOY_ADVANCE, 12 }, + { GAME_BOY_COLOR, 10 }, + { NINTENDO_GAMECUBE, 13 }, + { NINTENDO_WII, 16 }, + { NINTENDO_WII_U, 18 }, + { NINTENDO_VIRTUAL_BOY, 11 }, + { NINTENDO_GAME_AND_WATCH, 52 }, + { NINTENDO_SWITCH, 225 }, + { PC, 135 }, + { OPENBOR, 214 }, + { SCUMMVM, 123}, + { SEGA_32X, 19 }, + { SEGA_CD, 20 }, + { SEGA_DREAMCAST, 23 }, + { SEGA_GAME_GEAR, 21 }, + { SEGA_GENESIS, 1 }, + { SEGA_MASTER_SYSTEM, 2 }, + { SEGA_MEGA_DRIVE, 1 }, + { SEGA_SATURN, 22 }, + { SEGA_SG1000, 109 }, + { SAM_COUPE, 213 }, + { SHARP_X1, 220}, + { SHARP_X6800, 79}, + { SOLARUS, 223 }, + { PICO_8, 234 }, + { TIC_80, 222 }, + { THOMSON_MOTO, 141}, + { NEC_PC_8801, 221}, + { NEC_PC_9801, 208}, + { PLAYSTATION, 57 }, + { PLAYSTATION_2, 58 }, + { PLAYSTATION_3, 59 }, + // missing Sony Playstation 4 ? + { PLAYSTATION_VITA, 62 }, + { PLAYSTATION_PORTABLE, 61 }, + { SUPER_NINTENDO, 4 }, + { TURBOGRAFX_16, 31 }, + { TURBOGRAFX_CD, 114 }, + { NEC_PCFX, 72 }, + { WONDERSWAN, 45 }, + { WONDERSWAN_COLOR, 46 }, + { ZX_SPECTRUM, 76 }, + { ZX81_SINCLAR, 77 }, + { VIDEOPAC_ODYSSEY2, 104 }, + { VECTREX, 102 }, + { TRS80_COLOR_COMPUTER, 144 }, + { TANDY, 144 }, + { TI_99, 205 }, + { DRAGON32, 91 }, + { ZMACHINE, 21 }, + { FMTOWNS, 253 } +}; + + +// Helper XML parsing method, finding a node-by-name recursively. +pugi::xml_node find_node_by_name_re(const pugi::xml_node& node, const std::vector node_names) { + + for (const std::string& _val : node_names) + { + pugi::xpath_query query_node_name((static_cast("//") + _val).c_str()); + pugi::xpath_node_set results = node.select_nodes(query_node_name); + + if (results.size() > 0) + return results.first().node(); + } + + return pugi::xml_node(); +} + +// Help XML parsing method, finding an direct child XML node starting from the parent and filtering by an attribute value list. +pugi::xml_node find_child_by_attribute_list(const pugi::xml_node& node_parent, const std::string& node_name, const std::string& attribute_name, const std::vector attribute_values) +{ + for (auto _val : attribute_values) + { + for (pugi::xml_node node : node_parent.children(node_name.c_str())) + { + + if (strcmp(node.attribute(attribute_name.c_str()).value(), _val.c_str()) == 0) + return node; + } + } + + return pugi::xml_node(NULL); + +} + +void screenscraper_generate_scraper_requests(const ScraperSearchParams& params, + std::queue< std::unique_ptr >& requests, + std::vector& results) +{ + std::string path; + + ScreenScraperRequest::ScreenScraperConfig ssConfig; + + // Check if the user has overridden the file name + path = ssConfig.getGameSearchUrl(params.nameOverride.empty() ? params.game->getFileName() : params.nameOverride); + + auto& platforms = params.system->getPlatformIds(); + std::vector p_ids; + + // Get the IDs of each platform from the ScreenScraper list + for (auto platformIt = platforms.cbegin(); platformIt != platforms.cend(); platformIt++) + { + auto mapIt = screenscraper_platformid_map.find(*platformIt); + + if (mapIt != screenscraper_platformid_map.cend()) + { + p_ids.push_back(mapIt->second); + }else{ + LOG(LogWarning) << "ScreenScraper: no support for platform " << getPlatformName(*platformIt); + // Add the scrape request without a platform/system ID + requests.push(std::unique_ptr(new ScreenScraperRequest(requests, results, path))); + } + } + + // Sort the platform IDs and remove duplicates + std::sort(p_ids.begin(), p_ids.end()); + auto last = std::unique(p_ids.begin(), p_ids.end()); + p_ids.erase(last, p_ids.end()); + + for (auto platform = p_ids.cbegin(); platform != p_ids.cend(); platform++) + { + path += "&systemeid="; + path += HttpReq::urlEncode(std::to_string(*platform)); + requests.push(std::unique_ptr(new ScreenScraperRequest(requests, results, path))); + } + +} + +void ScreenScraperRequest::process(const std::unique_ptr& req, std::vector& results) +{ + assert(req->status() == HttpReq::REQ_SUCCESS); + + pugi::xml_document doc; + pugi::xml_parse_result parseResult = doc.load_string(req->getContent().c_str()); + + if (!parseResult) + { + std::stringstream ss; + ss << "ScreenScraperRequest - Error parsing XML." << std::endl << parseResult.description() << ""; + + std::string err = ss.str(); + setError(err); + LOG(LogError) << err; + + return; + } + + processGame(doc, results); + +} + + +void ScreenScraperRequest::processGame(const pugi::xml_document& xmldoc, std::vector& out_results) +{ + pugi::xml_node data = xmldoc.child("Data"); + pugi::xml_node game = data.child("jeu"); + + if (game) + { + ScraperSearchResult result; + ScreenScraperRequest::ScreenScraperConfig ssConfig; + + std::string region = Utils::String::toLower(ssConfig.region).c_str(); + std::string language = Utils::String::toLower(ssConfig.language).c_str(); + + // Name fallback: US, WOR(LD). ( Xpath: Data/jeu[0]/noms/nom[*] ). + result.mdl.set("name", find_child_by_attribute_list(game.child("noms"), "nom", "region", { region, "wor", "us" , "ss", "eu", "jp" }).text().get()); + + // Description fallback language: EN, WOR(LD) + std::string description = find_child_by_attribute_list(game.child("synopsis"), "synopsis", "langue", { language, "en", "wor" }).text().get(); + + if (!description.empty()) { + result.mdl.set("desc", Utils::String::replace(description, " ", " ")); + } + + // Genre fallback language: EN. ( Xpath: Data/jeu[0]/genres/genre[*] ) + result.mdl.set("genre", find_child_by_attribute_list(game.child("genres"), "genre", "langue", { language, "en" }).text().get()); + LOG(LogDebug) << "Genre: " << result.mdl.get("genre"); + + // Get the date proper. The API returns multiple 'date' children nodes to the 'dates' main child of 'jeu'. + // Date fallback: WOR(LD), US, SS, JP, EU + std::string _date = find_child_by_attribute_list(game.child("dates"), "date", "region", { region, "wor", "us", "ss", "jp", "eu" }).text().get(); + LOG(LogDebug) << "Release Date (unparsed): " << _date; + + // Date can be YYYY-MM-DD or just YYYY. + if (_date.length() > 4) + { + result.mdl.set("releasedate", Utils::Time::DateTime(Utils::Time::stringToTime(_date, "%Y-%m-%d"))); + } else if (_date.length() > 0) + { + result.mdl.set("releasedate", Utils::Time::DateTime(Utils::Time::stringToTime(_date, "%Y"))); + } + + LOG(LogDebug) << "Release Date (parsed): " << result.mdl.get("releasedate"); + + /// Developer for the game( Xpath: Data/jeu[0]/developpeur ) + std::string developer = game.child("developpeur").text().get(); + if (!developer.empty()) + result.mdl.set("developer", Utils::String::replace(developer, " ", " ")); + + // Publisher for the game ( Xpath: Data/jeu[0]/editeur ) + std::string publisher = game.child("editeur").text().get(); + if (!publisher.empty()) + result.mdl.set("publisher", Utils::String::replace(publisher, " ", " ")); + + // Players + result.mdl.set("players", game.child("joueurs").text().get()); + + // TODO: Validate rating + if (Settings::getInstance()->getBool("ScrapeRatings") && game.child("note")) + { + float ratingVal = (game.child("note").text().as_int() / 20.0f); + std::stringstream ss; + ss << ratingVal; + result.mdl.set("rating", ss.str()); + } + + // Media super-node + pugi::xml_node media_list = game.child("medias"); + + if (media_list) + { + pugi::xml_node art = pugi::xml_node(NULL); + + // Do an XPath query for media[type='$media_type'], then filter by region + // We need to do this because any child of 'medias' has the form + // + // and we need to find the right media for the region. + pugi::xpath_node_set results = media_list.select_nodes((static_cast("media[@type='") + ssConfig.media_name + "']").c_str()); + + if (results.size()) + { + // Region fallback: WOR(LD), US, CUS(TOM?), JP, EU + for (auto _region : std::vector{ region, "wor", "us", "cus", "jp", "eu" }) + { + if (art) + break; + + for (auto node : results) + { + if (node.node().attribute("region").value() == _region) + { + art = node.node(); + break; + } + } + } + } // results + + if (art) + { + // Sending a 'softname' containing space will make the image URLs returned by the API also contain the space. + // Escape any spaces in the URL here + result.imageUrl = Utils::String::replace(art.text().get(), " ", "%20"); + + // Get the media type returned by ScreenScraper + std::string media_type = art.attribute("format").value(); + if (!media_type.empty()) + result.imageType = "." + media_type; + + // Ask for the same image, but with a smaller size, for the thumbnail displayed during scraping + result.thumbnailUrl = result.imageUrl + "&maxheight=250"; + }else{ + LOG(LogDebug) << "Failed to find media XML node with name=" << ssConfig.media_name; + } + + } + + out_results.push_back(result); + } // game +} + +// Currently not used in this module +void ScreenScraperRequest::processList(const pugi::xml_document& xmldoc, std::vector& results) +{ + assert(mRequestQueue != nullptr); + + LOG(LogDebug) << "Processing a list of results"; + + pugi::xml_node data = xmldoc.child("Data"); + pugi::xml_node game = data.child("jeu"); + + if (!game) + LOG(LogDebug) << "Found nothing"; + + ScreenScraperRequest::ScreenScraperConfig ssConfig; + + // limit the number of results per platform, not in total. + // otherwise if the first platform returns >= 7 games + // but the second platform contains the relevant game, + // the relevant result would not be shown. + for (int i = 0; game && i < MAX_SCRAPER_RESULTS; i++) + { + std::string id = game.child("id").text().get(); + std::string name = game.child("nom").text().get(); + std::string platformId = game.child("systemeid").text().get(); + std::string path = ssConfig.getGameSearchUrl(name) + "&systemeid=" + platformId + "&gameid=" + id; + + mRequestQueue->push(std::unique_ptr(new ScreenScraperRequest(results, path))); + + game = game.next_sibling("jeu"); + } + + +} + +std::string ScreenScraperRequest::ScreenScraperConfig::getGameSearchUrl(const std::string gameName) const +{ + return API_URL_BASE + + "/jeuInfos.php?devid=" + Utils::String::scramble(API_DEV_U, API_DEV_KEY) + + "&devpassword=" + Utils::String::scramble(API_DEV_P, API_DEV_KEY) + + "&softname=" + HttpReq::urlEncode(API_SOFT_NAME) + + "&output=xml" + + "&romnom=" + HttpReq::urlEncode(gameName); + +} diff --git a/es-app/src/scrapers/ScreenScraper.h b/es-app/src/scrapers/ScreenScraper.h new file mode 100644 index 0000000000..2999a4649e --- /dev/null +++ b/es-app/src/scrapers/ScreenScraper.h @@ -0,0 +1,73 @@ +#pragma once +#ifndef ES_APP_SCRAPERS_SCREEN_SCRAPER_H +#define ES_APP_SCRAPERS_SCREEN_SCRAPER_H + +#include "scrapers/Scraper.h" +#include "EmulationStation.h" + +namespace pugi { class xml_document; } + + +void screenscraper_generate_scraper_requests(const ScraperSearchParams& params, std::queue< std::unique_ptr >& requests, + std::vector& results); + +class ScreenScraperRequest : public ScraperHttpRequest +{ +public: + // ctor for a GetGameList request + ScreenScraperRequest(std::queue< std::unique_ptr >& requestsWrite, std::vector& resultsWrite, const std::string& url) : ScraperHttpRequest(resultsWrite, url), mRequestQueue(&requestsWrite) {} + // ctor for a GetGame request + ScreenScraperRequest(std::vector& resultsWrite, const std::string& url) : ScraperHttpRequest(resultsWrite, url), mRequestQueue(nullptr) {} + + // Settings for the scraper + static const struct ScreenScraperConfig { + std::string getGameSearchUrl(const std::string gameName) const; + + // Access to the API + const std::string API_DEV_U = { 91, 32, 7, 17 }; + const std::string API_DEV_P = { 108, 28, 54, 55, 83, 43, 91, 44, 30, 22, 41, 12, 0, 108, 38, 29 }; + const std::string API_DEV_KEY = { 54, 73, 115, 100, 101, 67, 111, 107, 79, 66, 68, 66, 67, 56, 118, 77, 54, 88, 101, 54 }; + const std::string API_URL_BASE = "https://www.screenscraper.fr/api2"; + const std::string API_SOFT_NAME = "Emulationstation " + static_cast(PROGRAM_VERSION_STRING); + + /** Which type of image artwork we need. Possible values (not a comprehensive list): + - ss: in-game screenshot + - box-3D: 3D boxart + - box-2D: 2D boxart (default) + - screenmarque : marquee + - sstitle: in-game start screenshot + - steamgrid: Steam artwork + - wheel: spine + - support-2D: media showing the 2d boxart on the cart + - support-3D: media showing the 3d boxart on the cart + + Note that no all games contain values for these, so we default to "box-2D" since it's the most common. + **/ + std::string media_name = "box-2D"; + + // Which Region to use when selecting the artwork + // Applies to: artwork, name of the game, date of release + std::string region = "US"; + + // Which Language to use when selecting the textual information + // Applies to: description, genre + std::string language = "EN"; + + ScreenScraperConfig() {}; + } configuration; + +protected: + void process(const std::unique_ptr& req, std::vector& results) override; + + void processList(const pugi::xml_document& xmldoc, std::vector& results); + void processGame(const pugi::xml_document& xmldoc, std::vector& results); + bool isGameRequest() { return !mRequestQueue; } + + std::queue< std::unique_ptr >* mRequestQueue; + + +}; + + + +#endif // ES_APP_SCRAPERS_SCREEN_SCRAPER_H diff --git a/es-app/src/scrapers/TheArchiveScraper.cpp b/es-app/src/scrapers/TheArchiveScraper.cpp deleted file mode 100644 index fe490ca555..0000000000 --- a/es-app/src/scrapers/TheArchiveScraper.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "TheArchiveScraper.h" -#include "Log.h" -#include "pugixml/pugixml.hpp" - -void thearchive_generate_scraper_requests(const ScraperSearchParams& params, std::queue< std::unique_ptr >& requests, - std::vector& results) -{ - std::string path = "api.archive.vg/2.0/Archive.search/xml/7TTRM4MNTIKR2NNAGASURHJOZJ3QXQC5/"; - - std::string cleanName = params.nameOverride; - if(cleanName.empty()) - cleanName = params.game->getCleanName(); - - path += HttpReq::urlEncode(cleanName); - //platform TODO, should use some params.system get method - - requests.push(std::unique_ptr(new TheArchiveRequest(results, path))); -} - -void TheArchiveRequest::process(const std::unique_ptr& req, std::vector& results) -{ - assert(req->status() == HttpReq::REQ_SUCCESS); - - pugi::xml_document doc; - pugi::xml_parse_result parseResult = doc.load(req->getContent().c_str()); - if(!parseResult) - { - std::stringstream ss; - ss << "TheArchiveRequest - error parsing XML.\n\t" << parseResult.description(); - std::string err = ss.str(); - setError(err); - LOG(LogError) << err; - return; - } - - pugi::xml_node data = doc.child("OpenSearchDescription").child("games"); - - pugi::xml_node game = data.child("game"); - while(game && results.size() < MAX_SCRAPER_RESULTS) - { - ScraperSearchResult result; - - result.mdl.set("name", game.child("title").text().get()); - result.mdl.set("desc", game.child("description").text().get()); - - //Archive.search does not return ratings - - result.mdl.set("developer", game.child("developer").text().get()); - - std::string genre = game.child("genre").text().get(); - size_t search = genre.find_last_of(" > "); - genre = genre.substr(search == std::string::npos ? 0 : search, std::string::npos); - result.mdl.set("genre", genre); - - pugi::xml_node image = game.child("box_front"); - pugi::xml_node thumbnail = game.child("box_front_small"); - - if(image) - result.imageUrl = image.text().get(); - if(thumbnail) - result.thumbnailUrl = thumbnail.text().get(); - - results.push_back(result); - game = game.next_sibling("game"); - } -} diff --git a/es-app/src/scrapers/TheArchiveScraper.h b/es-app/src/scrapers/TheArchiveScraper.h deleted file mode 100644 index 9837539a4e..0000000000 --- a/es-app/src/scrapers/TheArchiveScraper.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include "scrapers/Scraper.h" - -void thearchive_generate_scraper_requests(const ScraperSearchParams& params, std::queue< std::unique_ptr >& requests, - std::vector& results); - -void thearchive_process_httpreq(const std::unique_ptr& req, std::vector& results); - -class TheArchiveRequest : public ScraperHttpRequest -{ -public: - TheArchiveRequest(std::vector& resultsWrite, const std::string& url) : ScraperHttpRequest(resultsWrite, url) {} -protected: - void process(const std::unique_ptr& req, std::vector& results) override; -}; \ No newline at end of file diff --git a/es-app/src/views/SystemView.cpp b/es-app/src/views/SystemView.cpp index 54987fdf87..03b56bb35a 100644 --- a/es-app/src/views/SystemView.cpp +++ b/es-app/src/views/SystemView.cpp @@ -1,30 +1,28 @@ #include "views/SystemView.h" -#include "SystemData.h" -#include "Renderer.h" -#include "Log.h" -#include "Window.h" -#include "views/ViewController.h" + #include "animations/LambdaAnimation.h" -#include "SystemData.h" +#include "guis/GuiMsgBox.h" +#include "views/UIModeController.h" +#include "views/ViewController.h" +#include "Log.h" +#include "Scripting.h" #include "Settings.h" -#include "Util.h" +#include "SystemData.h" +#include "Window.h" -#define SELECTED_SCALE 1.5f -#define LOGO_PADDING ((logoSize().x() * (SELECTED_SCALE - 1)/2) + (mSize.x() * 0.06f)) -#define BAND_HEIGHT (logoSize().y() * SELECTED_SCALE) +// buffer values for scrolling velocity (left, stopped, right) +const int logoBuffersLeft[] = { -5, -2, -1 }; +const int logoBuffersRight[] = { 1, 2, 5 }; SystemView::SystemView(Window* window) : IList(window, LIST_SCROLL_STYLE_SLOW, LIST_ALWAYS_LOOP), - mSystemInfo(window, "SYSTEM INFO", Font::get(FONT_SIZE_SMALL), 0x33333300, ALIGN_CENTER) + mViewNeedsReload(true), + mSystemInfo(window, "SYSTEM INFO", Font::get(FONT_SIZE_SMALL), 0x33333300, ALIGN_CENTER) { mCamOffset = 0; mExtrasCamOffset = 0; mExtrasFadeOpacity = 0.0f; setSize((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); - - mSystemInfo.setSize(mSize.x(), mSystemInfo.getSize().y() * 1.333f); - mSystemInfo.setPosition(0, (mSize.y() + BAND_HEIGHT) / 2); - populate(); } @@ -32,53 +30,100 @@ void SystemView::populate() { mEntries.clear(); - for(auto it = SystemData::sSystemVector.begin(); it != SystemData::sSystemVector.end(); it++) + for(auto it = SystemData::sSystemVector.cbegin(); it != SystemData::sSystemVector.cend(); it++) { const std::shared_ptr& theme = (*it)->getTheme(); - Entry e; - e.name = (*it)->getName(); - e.object = *it; + if(mViewNeedsReload) + getViewElements(theme); - // make logo - if(theme->getElement("system", "logo", "image")) + if((*it)->isVisible()) { - ImageComponent* logo = new ImageComponent(mWindow); - logo->setMaxSize(Eigen::Vector2f(logoSize().x(), logoSize().y())); - logo->applyTheme((*it)->getTheme(), "system", "logo", ThemeFlags::PATH); - logo->setPosition((logoSize().x() - logo->getSize().x()) / 2, (logoSize().y() - logo->getSize().y()) / 2); // center - e.data.logo = std::shared_ptr(logo); - - ImageComponent* logoSelected = new ImageComponent(mWindow); - logoSelected->setMaxSize(Eigen::Vector2f(logoSize().x() * SELECTED_SCALE, logoSize().y() * SELECTED_SCALE * 0.70f)); - logoSelected->applyTheme((*it)->getTheme(), "system", "logo", ThemeFlags::PATH); - logoSelected->setPosition((logoSize().x() - logoSelected->getSize().x()) / 2, - (logoSize().y() - logoSelected->getSize().y()) / 2); // center - e.data.logoSelected = std::shared_ptr(logoSelected); - }else{ - // no logo in theme; use text - TextComponent* text = new TextComponent(mWindow, - (*it)->getName(), - Font::get(FONT_SIZE_LARGE), - 0x000000FF, - ALIGN_CENTER); - text->setSize(logoSize()); - e.data.logo = std::shared_ptr(text); - - TextComponent* textSelected = new TextComponent(mWindow, - (*it)->getName(), - Font::get((int)(FONT_SIZE_LARGE * SELECTED_SCALE)), - 0x000000FF, - ALIGN_CENTER); - textSelected->setSize(logoSize()); - e.data.logoSelected = std::shared_ptr(textSelected); + Entry e; + e.name = (*it)->getName(); + e.object = *it; + + // make logo + const ThemeData::ThemeElement* logoElem = theme->getElement("system", "logo", "image"); + if(logoElem) + { + std::string path = logoElem->get("path"); + std::string defaultPath = logoElem->has("default") ? logoElem->get("default") : ""; + if((!path.empty() && ResourceManager::getInstance()->fileExists(path)) + || (!defaultPath.empty() && ResourceManager::getInstance()->fileExists(defaultPath))) + { + ImageComponent* logo = new ImageComponent(mWindow, false, false); + logo->setMaxSize(mCarousel.logoSize * mCarousel.logoScale); + logo->applyTheme(theme, "system", "logo", ThemeFlags::PATH | ThemeFlags::COLOR); + logo->setRotateByTargetSize(true); + e.data.logo = std::shared_ptr(logo); + } + } + if (!e.data.logo) + { + // no logo in theme; use text + TextComponent* text = new TextComponent(mWindow, + (*it)->getName(), + Font::get(FONT_SIZE_LARGE), + 0x000000FF, + ALIGN_CENTER); + text->setSize(mCarousel.logoSize * mCarousel.logoScale); + text->applyTheme((*it)->getTheme(), "system", "logoText", ThemeFlags::FONT_PATH | ThemeFlags::FONT_SIZE | ThemeFlags::COLOR | ThemeFlags::FORCE_UPPERCASE | ThemeFlags::LINE_SPACING | ThemeFlags::TEXT); + e.data.logo = std::shared_ptr(text); + + if (mCarousel.type == VERTICAL || mCarousel.type == VERTICAL_WHEEL) + { + text->setHorizontalAlignment(mCarousel.logoAlignment); + text->setVerticalAlignment(ALIGN_CENTER); + } else { + text->setHorizontalAlignment(ALIGN_CENTER); + text->setVerticalAlignment(mCarousel.logoAlignment); + } + } + + if (mCarousel.type == VERTICAL || mCarousel.type == VERTICAL_WHEEL) + { + if (mCarousel.logoAlignment == ALIGN_LEFT) + e.data.logo->setOrigin(0, 0.5); + else if (mCarousel.logoAlignment == ALIGN_RIGHT) + e.data.logo->setOrigin(1.0, 0.5); + else + e.data.logo->setOrigin(0.5, 0.5); + } else { + if (mCarousel.logoAlignment == ALIGN_TOP) + e.data.logo->setOrigin(0.5, 0); + else if (mCarousel.logoAlignment == ALIGN_BOTTOM) + e.data.logo->setOrigin(0.5, 1); + else + e.data.logo->setOrigin(0.5, 0.5); + } + + Vector2f denormalized = mCarousel.logoSize * e.data.logo->getOrigin(); + e.data.logo->setPosition(denormalized.x(), denormalized.y(), 0.0); + // delete any existing extras + for (auto extra : e.data.backgroundExtras) + delete extra; + e.data.backgroundExtras.clear(); + + // make background extras + e.data.backgroundExtras = ThemeData::makeExtras((*it)->getTheme(), "system", mWindow); + + // sort the extras by z-index + std::stable_sort(e.data.backgroundExtras.begin(), e.data.backgroundExtras.end(), [](GuiComponent* a, GuiComponent* b) { + return b->getZIndex() > a->getZIndex(); + }); + + this->add(e); + } + } + if (mEntries.size() == 0) + { + // Something is wrong, there is not a single system to show, check if UI mode is not full + if (!UIModeController::getInstance()->isUIModeFull()) + { + Settings::getInstance()->setString("UIMode", "Full"); + mWindow->pushGui(new GuiMsgBox(mWindow, "The selected UI mode has nothing to show,\n returning to UI mode: FULL", "OK", nullptr)); } - - // make background extras - e.data.backgroundExtras = std::shared_ptr(new ThemeExtras(mWindow)); - e.data.backgroundExtras->setExtras(ThemeData::makeExtras((*it)->getTheme(), "system", mWindow)); - - this->add(e); } } @@ -96,35 +141,68 @@ bool SystemView::input(InputConfig* config, Input input) { if(config->getDeviceId() == DEVICE_KEYBOARD && input.value && input.id == SDLK_r && SDL_GetModState() & KMOD_LCTRL && Settings::getInstance()->getBool("Debug")) { - LOG(LogInfo) << " Reloading SystemList view"; - - // reload themes - for(auto it = mEntries.begin(); it != mEntries.end(); it++) - it->object->loadTheme(); - - populate(); - updateHelpPrompts(); + LOG(LogInfo) << " Reloading all"; + ViewController::get()->reloadAll(); return true; } - if(config->isMappedTo("left", input)) + + switch (mCarousel.type) { - listInput(-1); - return true; - } - if(config->isMappedTo("right", input)) - { - listInput(1); - return true; + case VERTICAL: + case VERTICAL_WHEEL: + if (config->isMappedLike("up", input)) + { + listInput(-1); + return true; + } + if (config->isMappedLike("down", input)) + { + listInput(1); + return true; + } + break; + case HORIZONTAL: + case HORIZONTAL_WHEEL: + default: + if (config->isMappedLike("left", input)) + { + listInput(-1); + return true; + } + if (config->isMappedLike("right", input)) + { + listInput(1); + return true; + } + break; } + if(config->isMappedTo("a", input)) { stopScrolling(); ViewController::get()->goToGameList(getSelected()); return true; } + if (config->isMappedTo("x", input)) + { + // get random system + // go to system + setCursor(SystemData::getRandomSystem()); + return true; + } }else{ - if(config->isMappedTo("left", input) || config->isMappedTo("right", input)) + if(config->isMappedLike("left", input) || + config->isMappedLike("right", input) || + config->isMappedLike("up", input) || + config->isMappedLike("down", input)) listInput(0); + Scripting::fireEvent("system-select", this->IList::getSelected()->getName(), "input"); + if(!UIModeController::getInstance()->isUIModeKid() && config->isMappedTo("select", input) && Settings::getInstance()->getBool("ScreenSaverControls")) + { + mWindow->startScreenSaver(); + mWindow->renderScreenSaver(); + return true; + } } return GuiComponent::input(config, input); @@ -136,7 +214,7 @@ void SystemView::update(int deltaTime) GuiComponent::update(deltaTime); } -void SystemView::onCursorChanged(const CursorState& state) +void SystemView::onCursorChanged(const CursorState& /*state*/) { // update help style updateHelpPrompts(); @@ -151,195 +229,467 @@ void SystemView::onCursorChanged(const CursorState& state) float endPos = target; // directly float dist = abs(endPos - startPos); - + if(abs(target + posMax - startPos) < dist) endPos = target + posMax; // loop around the end (0 -> max) if(abs(target - posMax - startPos) < dist) endPos = target - posMax; // loop around the start (max - 1 -> -1) - + // animate mSystemInfo's opacity (fade out, wait, fade back in) cancelAnimation(1); cancelAnimation(2); + std::string transition_style = Settings::getInstance()->getString("TransitionStyle"); + bool goFast = transition_style == "instant"; const float infoStartOpacity = mSystemInfo.getOpacity() / 255.f; Animation* infoFadeOut = new LambdaAnimation( [infoStartOpacity, this] (float t) { - mSystemInfo.setOpacity((unsigned char)(lerp(infoStartOpacity, 0.f, t) * 255)); - }, (int)(infoStartOpacity * 150)); + mSystemInfo.setOpacity((unsigned char)(Math::lerp(infoStartOpacity, 0.f, t) * 255)); + }, (int)(infoStartOpacity * (goFast ? 10 : 150))); - unsigned int gameCount = getSelected()->getGameCount(); + unsigned int gameCount = getSelected()->getDisplayedGameCount(); // also change the text after we've fully faded out setAnimation(infoFadeOut, 0, [this, gameCount] { std::stringstream ss; - - // only display a game count if there are at least 2 games - if(gameCount > 1) - ss << gameCount << " GAMES AVAILABLE"; - mSystemInfo.setText(ss.str()); + if (!getSelected()->isGameSystem()) + ss << "CONFIGURATION"; + else + ss << gameCount << " GAME" << (gameCount == 1 ? "" : "S") << " AVAILABLE"; + + mSystemInfo.setText(ss.str()); }, false, 1); - // only display a game count if there are at least 2 games - if(gameCount > 1) + Animation* infoFadeIn = new LambdaAnimation( + [this](float t) { - Animation* infoFadeIn = new LambdaAnimation( - [this](float t) - { - mSystemInfo.setOpacity((unsigned char)(lerp(0.f, 1.f, t) * 255)); - }, 300); + mSystemInfo.setOpacity((unsigned char)(Math::lerp(0.f, 1.f, t) * 255)); + }, goFast ? 10 : 300); - // wait 600ms to fade in - setAnimation(infoFadeIn, 2000, nullptr, false, 2); - } + // wait 600ms to fade in + setAnimation(infoFadeIn, goFast ? 0 : 2000, nullptr, false, 2); // no need to animate transition, we're not going anywhere (probably mEntries.size() == 1) if(endPos == mCamOffset && endPos == mExtrasCamOffset) return; Animation* anim; - if(Settings::getInstance()->getString("TransitionStyle") == "fade") + bool move_carousel = Settings::getInstance()->getBool("MoveCarousel"); + if(transition_style == "fade") { float startExtrasFade = mExtrasFadeOpacity; anim = new LambdaAnimation( - [startExtrasFade, startPos, endPos, posMax, this](float t) + [this, startExtrasFade, startPos, endPos, posMax, move_carousel](float t) { t -= 1; - float f = lerp(startPos, endPos, t*t*t + 1); + float f = Math::lerp(startPos, endPos, t*t*t + 1); if(f < 0) f += posMax; if(f >= posMax) f -= posMax; - this->mCamOffset = f; + this->mCamOffset = move_carousel ? f : endPos; t += 1; if(t < 0.3f) - this->mExtrasFadeOpacity = lerp(0.0f, 1.0f, t / 0.3f + startExtrasFade); + this->mExtrasFadeOpacity = Math::lerp(0.0f, 1.0f, t / 0.3f + startExtrasFade); else if(t < 0.7f) this->mExtrasFadeOpacity = 1.0f; else - this->mExtrasFadeOpacity = lerp(1.0f, 0.0f, (t - 0.7f) / 0.3f); + this->mExtrasFadeOpacity = Math::lerp(1.0f, 0.0f, (t - 0.7f) / 0.3f); if(t > 0.5f) this->mExtrasCamOffset = endPos; }, 500); - } - else{ // slide + } else if (transition_style == "slide") { + // slide anim = new LambdaAnimation( - [startPos, endPos, posMax, this](float t) + [this, startPos, endPos, posMax, move_carousel](float t) { t -= 1; - float f = lerp(startPos, endPos, t*t*t + 1); + float f = Math::lerp(startPos, endPos, t*t*t + 1); if(f < 0) f += posMax; if(f >= posMax) f -= posMax; - this->mCamOffset = f; + this->mCamOffset = move_carousel ? f : endPos; this->mExtrasCamOffset = f; }, 500); + } else { + // instant + anim = new LambdaAnimation( + [this, startPos, endPos, posMax, move_carousel ](float t) + { + t -= 1; + float f = Math::lerp(startPos, endPos, t*t*t + 1); + if(f < 0) + f += posMax; + if(f >= posMax) + f -= posMax; + + this->mCamOffset = move_carousel ? f : endPos; + this->mExtrasCamOffset = endPos; + }, move_carousel ? 500 : 1); } + setAnimation(anim, 0, nullptr, false, 0); } -void SystemView::render(const Eigen::Affine3f& parentTrans) +void SystemView::render(const Transform4x4f& parentTrans) { if(size() == 0) - return; + return; // nothing to render - Eigen::Affine3f trans = getTransform() * parentTrans; - - // draw the list elements (titles, backgrounds, logos) - const float logoSizeX = logoSize().x() + LOGO_PADDING; + Transform4x4f trans = getTransform() * parentTrans; - int logoCount = (int)(mSize.x() / logoSizeX) + 2; // how many logos we need to draw - int center = (int)(mCamOffset); + auto systemInfoZIndex = mSystemInfo.getZIndex(); + auto minMax = std::minmax(mCarousel.zIndex, systemInfoZIndex); - if(mEntries.size() == 1) - logoCount = 1; + renderExtras(trans, INT16_MIN, minMax.first); + renderFade(trans); - // draw background extras - Eigen::Affine3f extrasTrans = trans; - int extrasCenter = (int)mExtrasCamOffset; - for(int i = extrasCenter - 1; i < extrasCenter + 2; i++) - { - int index = i; - while(index < 0) - index += mEntries.size(); - while(index >= (int)mEntries.size()) - index -= mEntries.size(); + if (mCarousel.zIndex > mSystemInfo.getZIndex()) { + renderInfoBar(trans); + } else { + renderCarousel(trans); + } - extrasTrans.translation() = trans.translation() + Eigen::Vector3f((i - mExtrasCamOffset) * mSize.x(), 0, 0); + renderExtras(trans, minMax.first, minMax.second); - Eigen::Vector2i clipRect = Eigen::Vector2i((int)((i - mExtrasCamOffset) * mSize.x()), 0); - Renderer::pushClipRect(clipRect, mSize.cast()); - mEntries.at(index).data.backgroundExtras->render(extrasTrans); - Renderer::popClipRect(); + if (mCarousel.zIndex > mSystemInfo.getZIndex()) { + renderCarousel(trans); + } else { + renderInfoBar(trans); } - // fade extras if necessary - if(mExtrasFadeOpacity) + renderExtras(trans, minMax.second, INT16_MAX); +} + +std::vector SystemView::getHelpPrompts() +{ + std::vector prompts; + if (mCarousel.type == VERTICAL || mCarousel.type == VERTICAL_WHEEL) + prompts.push_back(HelpPrompt("up/down", "choose")); + else + prompts.push_back(HelpPrompt("left/right", "choose")); + prompts.push_back(HelpPrompt("a", "select")); + prompts.push_back(HelpPrompt("x", "random")); + + if (!UIModeController::getInstance()->isUIModeKid() && Settings::getInstance()->getBool("ScreenSaverControls")) + prompts.push_back(HelpPrompt("select", "launch screensaver")); + + return prompts; +} + +HelpStyle SystemView::getHelpStyle() +{ + HelpStyle style; + style.applyTheme(mEntries.at(mCursor).object->getTheme(), "system"); + return style; +} + +void SystemView::onThemeChanged(const std::shared_ptr& /*theme*/) +{ + LOG(LogDebug) << "SystemView::onThemeChanged()"; + mViewNeedsReload = true; + populate(); +} + +// Get the ThemeElements that make up the SystemView. +void SystemView::getViewElements(const std::shared_ptr& theme) +{ + LOG(LogDebug) << "SystemView::getViewElements()"; + + getDefaultElements(); + + if (!theme->hasView("system")) + return; + + const ThemeData::ThemeElement* carouselElem = theme->getElement("system", "systemcarousel", "carousel"); + if (carouselElem) + getCarouselFromTheme(carouselElem); + + const ThemeData::ThemeElement* sysInfoElem = theme->getElement("system", "systemInfo", "text"); + if (sysInfoElem) + mSystemInfo.applyTheme(theme, "system", "systemInfo", ThemeFlags::ALL); + + mViewNeedsReload = false; +} + +// Render system carousel +void SystemView::renderCarousel(const Transform4x4f& trans) +{ + // background box behind logos + Transform4x4f carouselTrans = trans; + carouselTrans.translate(Vector3f(mCarousel.pos.x(), mCarousel.pos.y(), 0.0)); + carouselTrans.translate(Vector3f(mCarousel.origin.x() * mCarousel.size.x() * -1, mCarousel.origin.y() * mCarousel.size.y() * -1, 0.0f)); + + Vector2f clipPos(carouselTrans.translation().x(), carouselTrans.translation().y()); + Renderer::pushClipRect(Vector2i((int)clipPos.x(), (int)clipPos.y()), Vector2i((int)mCarousel.size.x(), (int)mCarousel.size.y())); + + Renderer::setMatrix(carouselTrans); + Renderer::drawRect(0.0f, 0.0f, mCarousel.size.x(), mCarousel.size.y(), mCarousel.color, mCarousel.colorEnd, mCarousel.colorGradientHorizontal); + + // draw logos + Vector2f logoSpacing(0.0, 0.0); // NB: logoSpacing will include the size of the logo itself as well! + float xOff = 0.0; + float yOff = 0.0; + + switch (mCarousel.type) { - Renderer::setMatrix(trans); - Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), 0x00000000 | (unsigned char)(mExtrasFadeOpacity * 255)); + case VERTICAL_WHEEL: + yOff = (mCarousel.size.y() - mCarousel.logoSize.y()) / 2.f - (mCamOffset * logoSpacing[1]); + if (mCarousel.logoAlignment == ALIGN_LEFT) + xOff = mCarousel.logoSize.x() / 10.f; + else if (mCarousel.logoAlignment == ALIGN_RIGHT) + xOff = mCarousel.size.x() - (mCarousel.logoSize.x() * 1.1f); + else + xOff = (mCarousel.size.x() - mCarousel.logoSize.x()) / 2.f; + break; + case VERTICAL: + logoSpacing[1] = ((mCarousel.size.y() - (mCarousel.logoSize.y() * mCarousel.maxLogoCount)) / (mCarousel.maxLogoCount)) + mCarousel.logoSize.y(); + yOff = (mCarousel.size.y() - mCarousel.logoSize.y()) / 2.f - (mCamOffset * logoSpacing[1]); + + if (mCarousel.logoAlignment == ALIGN_LEFT) + xOff = mCarousel.logoSize.x() / 10.f; + else if (mCarousel.logoAlignment == ALIGN_RIGHT) + xOff = mCarousel.size.x() - (mCarousel.logoSize.x() * 1.1f); + else + xOff = (mCarousel.size.x() - mCarousel.logoSize.x()) / 2; + break; + case HORIZONTAL_WHEEL: + xOff = (mCarousel.size.x() - mCarousel.logoSize.x()) / 2 - (mCamOffset * logoSpacing[1]); + if (mCarousel.logoAlignment == ALIGN_TOP) + yOff = mCarousel.logoSize.y() / 10; + else if (mCarousel.logoAlignment == ALIGN_BOTTOM) + yOff = mCarousel.size.y() - (mCarousel.logoSize.y() * 1.1f); + else + yOff = (mCarousel.size.y() - mCarousel.logoSize.y()) / 2; + break; + case HORIZONTAL: + default: + logoSpacing[0] = ((mCarousel.size.x() - (mCarousel.logoSize.x() * mCarousel.maxLogoCount)) / (mCarousel.maxLogoCount)) + mCarousel.logoSize.x(); + xOff = (mCarousel.size.x() - mCarousel.logoSize.x()) / 2.f - (mCamOffset * logoSpacing[0]); + + if (mCarousel.logoAlignment == ALIGN_TOP) + yOff = mCarousel.logoSize.y() / 10.f; + else if (mCarousel.logoAlignment == ALIGN_BOTTOM) + yOff = mCarousel.size.y() - (mCarousel.logoSize.y() * 1.1f); + else + yOff = (mCarousel.size.y() - mCarousel.logoSize.y()) / 2.f; + break; } - // draw logos - float xOff = (mSize.x() - logoSize().x())/2 - (mCamOffset * logoSizeX); - float yOff = (mSize.y() - logoSize().y())/2; + int center = (int)(mCamOffset); + int logoCount = Math::min(mCarousel.maxLogoCount, (int)mEntries.size()); - // background behind the logos - Renderer::setMatrix(trans); - Renderer::drawRect(0.f, (mSize.y() - BAND_HEIGHT) / 2, mSize.x(), BAND_HEIGHT, 0xFFFFFFD8); + // Adding texture loading buffers depending on scrolling speed and status + int bufferIndex = getScrollingVelocity() + 1; + int bufferLeft = logoBuffersLeft[bufferIndex]; + int bufferRight = logoBuffersRight[bufferIndex]; + if (logoCount == 1) + { + bufferLeft = 0; + bufferRight = 0; + } - Eigen::Affine3f logoTrans = trans; - for(int i = center - logoCount/2; i < center + logoCount/2 + 1; i++) + for (int i = center - logoCount / 2 + bufferLeft; i <= center + logoCount / 2 + bufferRight; i++) { int index = i; - while(index < 0) - index += mEntries.size(); - while(index >= (int)mEntries.size()) - index -= mEntries.size(); + while (index < 0) + index += (int)mEntries.size(); + while (index >= (int)mEntries.size()) + index -= (int)mEntries.size(); - logoTrans.translation() = trans.translation() + Eigen::Vector3f(i * logoSizeX + xOff, yOff, 0); + Transform4x4f logoTrans = carouselTrans; + logoTrans.translate(Vector3f(i * logoSpacing[0] + xOff, i * logoSpacing[1] + yOff, 0)); - if(index == mCursor) //scale our selection up - { - // selected - const std::shared_ptr& comp = mEntries.at(index).data.logoSelected; - comp->setOpacity(0xFF); - comp->render(logoTrans); - }else{ - // not selected - const std::shared_ptr& comp = mEntries.at(index).data.logo; - comp->setOpacity(0x80); - comp->render(logoTrans); + float distance = i - mCamOffset; + + float scale = 1.0f + ((mCarousel.logoScale - 1.0f) * (1.0f - fabs(distance))); + scale = Math::min(mCarousel.logoScale, Math::max(1.0f, scale)); + scale /= mCarousel.logoScale; + + int opacity = (int)Math::round(0x80 + ((0xFF - 0x80) * (1.0f - fabs(distance)))); + opacity = Math::max((int) 0x80, opacity); + + const std::shared_ptr &comp = mEntries.at(index).data.logo; + if (mCarousel.type == VERTICAL_WHEEL || mCarousel.type == HORIZONTAL_WHEEL) { + comp->setRotationDegrees(mCarousel.logoRotation * distance); + comp->setRotationOrigin(mCarousel.logoRotationOrigin); } + comp->setScale(scale); + comp->setOpacity((unsigned char)opacity); + comp->render(logoTrans); } + Renderer::popClipRect(); +} +void SystemView::renderInfoBar(const Transform4x4f& trans) +{ Renderer::setMatrix(trans); - Renderer::drawRect(mSystemInfo.getPosition().x(), mSystemInfo.getPosition().y() - 1, mSize.x(), mSystemInfo.getSize().y(), 0xDDDDDD00 | (unsigned char)(mSystemInfo.getOpacity() / 255.f * 0xD8)); mSystemInfo.render(trans); } -std::vector SystemView::getHelpPrompts() +// Draw background extras +void SystemView::renderExtras(const Transform4x4f& trans, float lower, float upper) { - std::vector prompts; - prompts.push_back(HelpPrompt("left/right", "choose")); - prompts.push_back(HelpPrompt("a", "select")); - return prompts; + int extrasCenter = (int)mExtrasCamOffset; + + // Adding texture loading buffers depending on scrolling speed and status + int bufferIndex = getScrollingVelocity() + 1; + + Renderer::pushClipRect(Vector2i::Zero(), Vector2i((int)mSize.x(), (int)mSize.y())); + + for (int i = extrasCenter + logoBuffersLeft[bufferIndex]; i <= extrasCenter + logoBuffersRight[bufferIndex]; i++) + { + int index = i; + while (index < 0) + index += (int)mEntries.size(); + while (index >= (int)mEntries.size()) + index -= (int)mEntries.size(); + + //Only render selected system when not showing + if (mShowing || index == mCursor) + { + Transform4x4f extrasTrans = trans; + if (mCarousel.type == HORIZONTAL || mCarousel.type == HORIZONTAL_WHEEL) + extrasTrans.translate(Vector3f((i - mExtrasCamOffset) * mSize.x(), 0, 0)); + else + extrasTrans.translate(Vector3f(0, (i - mExtrasCamOffset) * mSize.y(), 0)); + + Renderer::pushClipRect(Vector2i((int)extrasTrans.translation()[0], (int)extrasTrans.translation()[1]), + Vector2i((int)mSize.x(), (int)mSize.y())); + SystemViewData data = mEntries.at(index).data; + for (unsigned int j = 0; j < data.backgroundExtras.size(); j++) { + GuiComponent *extra = data.backgroundExtras[j]; + if (extra->getZIndex() >= lower && extra->getZIndex() < upper) { + extra->render(extrasTrans); + } + } + Renderer::popClipRect(); + } + } + Renderer::popClipRect(); } -HelpStyle SystemView::getHelpStyle() +void SystemView::renderFade(const Transform4x4f& trans) { - HelpStyle style; - style.applyTheme(mEntries.at(mCursor).object->getTheme(), "system"); - return style; + // fade extras if necessary + if (mExtrasFadeOpacity) + { + unsigned int fadeColor = 0x00000000 | (unsigned char)(mExtrasFadeOpacity * 255); + Renderer::setMatrix(trans); + Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), fadeColor, fadeColor); + } +} + +// Populate the system carousel with the legacy values +void SystemView::getDefaultElements(void) +{ + // Carousel + mCarousel.type = HORIZONTAL; + mCarousel.logoAlignment = ALIGN_CENTER; + mCarousel.size.x() = mSize.x(); + mCarousel.size.y() = 0.2325f * mSize.y(); + mCarousel.pos.x() = 0.0f; + mCarousel.pos.y() = 0.5f * (mSize.y() - mCarousel.size.y()); + mCarousel.origin.x() = 0.0f; + mCarousel.origin.y() = 0.0f; + mCarousel.color = 0xFFFFFFD8; + mCarousel.colorEnd = 0xFFFFFFD8; + mCarousel.colorGradientHorizontal = true; + mCarousel.logoScale = 1.2f; + mCarousel.logoRotation = 7.5; + mCarousel.logoRotationOrigin.x() = -5; + mCarousel.logoRotationOrigin.y() = 0.5; + mCarousel.logoSize.x() = 0.25f * mSize.x(); + mCarousel.logoSize.y() = 0.155f * mSize.y(); + mCarousel.maxLogoCount = 3; + mCarousel.zIndex = 40; + + // System Info Bar + mSystemInfo.setSize(mSize.x(), mSystemInfo.getFont()->getLetterHeight()*2.2f); + mSystemInfo.setPosition(0, (mCarousel.pos.y() + mCarousel.size.y() - 0.2f)); + mSystemInfo.setBackgroundColor(0xDDDDDDD8); + mSystemInfo.setRenderBackground(true); + mSystemInfo.setFont(Font::get((int)(0.035f * mSize.y()), Font::getDefaultPath())); + mSystemInfo.setColor(0x000000FF); + mSystemInfo.setZIndex(50); + mSystemInfo.setDefaultZIndex(50); +} + +void SystemView::getCarouselFromTheme(const ThemeData::ThemeElement* elem) +{ + if (elem->has("type")) + { + if (!(elem->get("type").compare("vertical"))) + mCarousel.type = VERTICAL; + else if (!(elem->get("type").compare("vertical_wheel"))) + mCarousel.type = VERTICAL_WHEEL; + else if (!(elem->get("type").compare("horizontal_wheel"))) + mCarousel.type = HORIZONTAL_WHEEL; + else + mCarousel.type = HORIZONTAL; + } + if (elem->has("size")) + mCarousel.size = elem->get("size") * mSize; + if (elem->has("pos")) + mCarousel.pos = elem->get("pos") * mSize; + if (elem->has("origin")) + mCarousel.origin = elem->get("origin"); + if (elem->has("color")) + { + mCarousel.color = elem->get("color"); + mCarousel.colorEnd = mCarousel.color; + } + if (elem->has("colorEnd")) + mCarousel.colorEnd = elem->get("colorEnd"); + if (elem->has("gradientType")) + mCarousel.colorGradientHorizontal = !(elem->get("gradientType").compare("horizontal")); + if (elem->has("logoScale")) + mCarousel.logoScale = elem->get("logoScale"); + if (elem->has("logoSize")) + mCarousel.logoSize = elem->get("logoSize") * mSize; + if (elem->has("maxLogoCount")) + mCarousel.maxLogoCount = (int)Math::round(elem->get("maxLogoCount")); + if (elem->has("zIndex")) + mCarousel.zIndex = elem->get("zIndex"); + if (elem->has("logoRotation")) + mCarousel.logoRotation = elem->get("logoRotation"); + if (elem->has("logoRotationOrigin")) + mCarousel.logoRotationOrigin = elem->get("logoRotationOrigin"); + if (elem->has("logoAlignment")) + { + if (!(elem->get("logoAlignment").compare("left"))) + mCarousel.logoAlignment = ALIGN_LEFT; + else if (!(elem->get("logoAlignment").compare("right"))) + mCarousel.logoAlignment = ALIGN_RIGHT; + else if (!(elem->get("logoAlignment").compare("top"))) + mCarousel.logoAlignment = ALIGN_TOP; + else if (!(elem->get("logoAlignment").compare("bottom"))) + mCarousel.logoAlignment = ALIGN_BOTTOM; + else + mCarousel.logoAlignment = ALIGN_CENTER; + } + if (elem->has("scrollSound")) + mScrollSound = elem->get("scrollSound"); +} + +void SystemView::onShow() +{ + mShowing = true; +} + +void SystemView::onHide() +{ + mShowing = false; } diff --git a/es-app/src/views/SystemView.h b/es-app/src/views/SystemView.h index 15200b9038..abfe4592e1 100644 --- a/es-app/src/views/SystemView.h +++ b/es-app/src/views/SystemView.h @@ -1,20 +1,47 @@ #pragma once +#ifndef ES_APP_VIEWS_SYSTEM_VIEW_H +#define ES_APP_VIEWS_SYSTEM_VIEW_H -#include "GuiComponent.h" -#include "components/ImageComponent.h" -#include "components/TextComponent.h" -#include "components/ScrollableContainer.h" #include "components/IList.h" -#include "resources/TextureResource.h" +#include "components/TextComponent.h" +#include "resources/Font.h" +#include "GuiComponent.h" +#include "Sound.h" +#include -class SystemData; class AnimatedImageComponent; +class SystemData; + +enum CarouselType : unsigned int +{ + HORIZONTAL = 0, + VERTICAL = 1, + VERTICAL_WHEEL = 2, + HORIZONTAL_WHEEL = 3 +}; struct SystemViewData { std::shared_ptr logo; - std::shared_ptr logoSelected; - std::shared_ptr backgroundExtras; + std::vector backgroundExtras; +}; + +struct SystemViewCarousel +{ + CarouselType type; + Vector2f pos; + Vector2f size; + Vector2f origin; + float logoScale; + float logoRotation; + Vector2f logoRotationOrigin; + Alignment logoAlignment; + unsigned int color; + unsigned int colorEnd; + bool colorGradientHorizontal; + int maxLogoCount; // number of logos shown on the carousel + Vector2f logoSize; + float zIndex; }; class SystemView : public IList @@ -22,27 +49,47 @@ class SystemView : public IList public: SystemView(Window* window); + virtual void onShow() override; + virtual void onHide() override; + void goToSystem(SystemData* system, bool animate); bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; + + void onThemeChanged(const std::shared_ptr& theme); std::vector getHelpPrompts() override; virtual HelpStyle getHelpStyle() override; protected: + void onScroll(int /*amt*/) override { if(!mScrollSound.empty()) Sound::get(mScrollSound)->play(); } void onCursorChanged(const CursorState& state) override; private: - inline Eigen::Vector2f logoSize() const { return Eigen::Vector2f(mSize.x() * 0.25f, mSize.y() * 0.155f); } - void populate(); + void getViewElements(const std::shared_ptr& theme); + void getDefaultElements(void); + void getCarouselFromTheme(const ThemeData::ThemeElement* elem); + void renderCarousel(const Transform4x4f& parentTrans); + void renderExtras(const Transform4x4f& parentTrans, float lower, float upper); + void renderInfoBar(const Transform4x4f& trans); + void renderFade(const Transform4x4f& trans); + + + SystemViewCarousel mCarousel; TextComponent mSystemInfo; + std::string mScrollSound; // unit is list index float mCamOffset; float mExtrasCamOffset; float mExtrasFadeOpacity; + + bool mViewNeedsReload; + bool mShowing; }; + +#endif // ES_APP_VIEWS_SYSTEM_VIEW_H diff --git a/es-app/src/views/UIModeController.cpp b/es-app/src/views/UIModeController.cpp new file mode 100644 index 0000000000..2efa944c98 --- /dev/null +++ b/es-app/src/views/UIModeController.cpp @@ -0,0 +1,168 @@ +#include "UIModeController.h" + +#include "utils/StringUtil.h" +#include "views/ViewController.h" +#include "Log.h" +#include "Window.h" + +UIModeController * UIModeController::sInstance = NULL; + +UIModeController * UIModeController::getInstance() +{ + if (sInstance == NULL) + sInstance = new UIModeController(); + + return sInstance; +} + +UIModeController::UIModeController() + :mPassKeyCounter(0) +{ + mPassKeySequence = Settings::getInstance()->getString("UIMode_passkey"); + mCurrentUIMode = Settings::getInstance()->getString("UIMode"); +} + +void UIModeController::monitorUIMode() +{ + std::string uimode = Settings::getInstance()->getString("UIMode"); + if (uimode != mCurrentUIMode) // UIMODE HAS CHANGED + { + mCurrentUIMode = uimode; + ViewController::get()->ReloadAndGoToStart(); + } +} + +bool UIModeController::listen(InputConfig * config, Input input) +{ + // Reads the current input to listen for the passkey + // sequence to unlock the UI mode. The progress is saved in mPassKeyCounter + if (Settings::getInstance()->getBool("Debug")) + { + logInput(config, input); + } + + if ((Settings::getInstance()->getString("UIMode") == "Full") || !isValidInput(config, input)) + { + return false; // Already unlocked, or invalid input, nothing to do here. + } + + + if (!inputIsMatch(config, input)) + { + mPassKeyCounter = 0; // current input is incorrect, reset counter + } + + if (mPassKeyCounter == (int)mPassKeySequence.length()) + { + unlockUIMode(); + return true; + } + return false; +} + +bool UIModeController::inputIsMatch(InputConfig * config, Input input) +{ + for (auto valstring : mInputVals) + { + if (config->isMappedLike(valstring, input) && + (mPassKeySequence[mPassKeyCounter] == valstring[0])) + { + mPassKeyCounter++; + return true; + } + } + return false; +} + +// When we have reached the end of the list, trigger UI_mode unlock +void UIModeController::unlockUIMode() +{ + LOG(LogDebug) << " UIModeController::listen(): Passkey sequence completed, switching UIMode to full"; + Settings::getInstance()->setString("UIMode", "Full"); + Settings::getInstance()->saveFile(); + mPassKeyCounter = 0; +} + +bool UIModeController::isUIModeFull() +{ + return ((mCurrentUIMode == "Full") && !Settings::getInstance()->getBool("ForceKiosk")); +} + +bool UIModeController::isUIModeKid() +{ + return (Settings::getInstance()->getBool("ForceKid") || + ((mCurrentUIMode == "Kid") && !Settings::getInstance()->getBool("ForceKiosk"))); +} + +bool UIModeController::isUIModeKiosk() +{ + return (Settings::getInstance()->getBool("ForceKiosk") || + ((mCurrentUIMode == "Kiosk") && !Settings::getInstance()->getBool("ForceKid"))); +} + +std::string UIModeController::getFormattedPassKeyStr() +{ + // supported sequence-inputs: u (up), d (down), l (left), r (right), a, b, x, y + + std::string out = ""; + for (auto c : mPassKeySequence) + { + out += (out == "") ? "" : ", "; // add a comma after the first entry + + switch (c) + { + case 'u': + out += Utils::String::unicode2Chars(0x2191); // arrow pointing up + break; + case 'd': + out += Utils::String::unicode2Chars(0x2193); // arrow pointing down + break; + case 'l': + out += Utils::String::unicode2Chars(0x2190); // arrow pointing left + break; + case 'r': + out += Utils::String::unicode2Chars(0x2192); // arrow pointing right + break; + case 'a': + out += "A"; + break; + case 'b': + out += "B"; + break; + case 'x': + out += "X"; + break; + case 'y': + out += "Y"; + break; + } + } + return out; +} + + +void UIModeController::logInput(InputConfig * config, Input input) +{ + std::string mapname = ""; + std::vector maps = config->getMappedTo(input); + for( auto mn : maps) + { + mapname += mn; + mapname += ", "; + } + LOG(LogDebug) << "UIModeController::logInput( " << config->getDeviceName() <<" ):" << input.string() << ", isMappedTo= " << mapname << ", value=" << input.value; +} + +bool UIModeController::isValidInput(InputConfig * config, Input input) +{ + if((config->getMappedTo(input).size() == 0) || // not a mapped input, so ignore. + (input.type == TYPE_HAT) || // ignore all HAT inputs + (!input.value)) // not a key-down event + { + return false; + } + else + { + return true; + } +} \ No newline at end of file diff --git a/es-app/src/views/UIModeController.h b/es-app/src/views/UIModeController.h new file mode 100644 index 0000000000..04913a190d --- /dev/null +++ b/es-app/src/views/UIModeController.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef ES_APP_VIEWS_UI_MODE_CONTROLLER_H +#define ES_APP_VIEWS_UI_MODE_CONTROLLER_H + +#include +#include + +class FileData; +class InputConfig; +class ViewController; + +struct Input; + +class UIModeController { +public: + static UIModeController* getInstance(); + + // Monitor input for UI mode change, returns true (consumes input) when UI mode change is triggered. + bool listen(InputConfig* config, Input input); + + // Get the current Passphrase as a (unicode) formatted, comma-separated, string. + std::string getFormattedPassKeyStr(); + + // Check for change in UI mode. + void monitorUIMode(); + + bool isUIModeFull(); + bool isUIModeKid(); + bool isUIModeKiosk(); + inline std::vector getUIModes() { return mUIModes; }; +private: + UIModeController(); + bool inputIsMatch(InputConfig * config, Input input); + bool isValidInput(InputConfig * config, Input input); + void logInput(InputConfig * config, Input input); + + // Return UI mode to 'FULL' + void unlockUIMode(); + + static UIModeController * sInstance; + const std::vector mUIModes = { "Full", "Kiosk", "Kid" }; + + // default passkeyseq = "uuddlrlrba", as defined in the setting 'UIMode_passkey'. + std::string mPassKeySequence; + int mPassKeyCounter; + const std::vector mInputVals = { "up", "down", "left", "right", "a", "b", "x", "y" }; + std::string mCurrentUIMode; +}; + +#endif // ES_APP_VIEWS_UI_MODE_CONTROLLER_H diff --git a/es-app/src/views/ViewController.cpp b/es-app/src/views/ViewController.cpp index 5a94d97c2b..3d5079acec 100644 --- a/es-app/src/views/ViewController.cpp +++ b/es-app/src/views/ViewController.cpp @@ -1,16 +1,22 @@ #include "views/ViewController.h" -#include "Log.h" -#include "SystemData.h" -#include "Settings.h" -#include "views/gamelist/BasicGameListView.h" -#include "views/gamelist/DetailedGameListView.h" -#include "views/gamelist/GridGameListView.h" -#include "guis/GuiMenu.h" -#include "guis/GuiMsgBox.h" +#include "animations/Animation.h" +#include "animations/LambdaAnimation.h" #include "animations/LaunchAnimation.h" #include "animations/MoveCameraAnimation.h" -#include "animations/LambdaAnimation.h" +#include "guis/GuiMenu.h" +#include "views/gamelist/DetailedGameListView.h" +#include "views/gamelist/IGameListView.h" +#include "views/gamelist/GridGameListView.h" +#include "views/gamelist/VideoGameListView.h" +#include "views/SystemView.h" +#include "views/UIModeController.h" +#include "FileFilterIndex.h" +#include "Log.h" +#include "Scripting.h" +#include "Settings.h" +#include "SystemData.h" +#include "Window.h" ViewController* ViewController::sInstance = NULL; @@ -27,7 +33,7 @@ void ViewController::init(Window* window) } ViewController::ViewController(Window* window) - : GuiComponent(window), mCurrentView(nullptr), mCamera(Eigen::Affine3f::Identity()), mFadeOpacity(0), mLockInput(false) + : GuiComponent(window), mCurrentView(nullptr), mCamera(Transform4x4f::Identity()), mFadeOpacity(0), mLockInput(false) { mState.viewing = NOTHING; } @@ -40,21 +46,56 @@ ViewController::~ViewController() void ViewController::goToStart() { - // TODO - /* mState.viewing = START_SCREEN; - mCurrentView.reset(); - playViewTransition(); */ + // If specific system is requested, go directly to the game list + auto requestedSystem = Settings::getInstance()->getString("StartupSystem"); + if("" != requestedSystem && "retropie" != requestedSystem) + { + for(auto it = SystemData::sSystemVector.cbegin(); it != SystemData::sSystemVector.cend(); it++){ + if ((*it)->getName() == requestedSystem) + { + goToGameList(*it); + Scripting::fireEvent("system-select", requestedSystem, "requestedsystem"); + FileData* cursor = getGameListView(*it)->getCursor(); + if (cursor != NULL) + { + Scripting::fireEvent("game-select", requestedSystem, cursor->getPath(), cursor->getName(), "requestedgame"); + } + else + { + Scripting::fireEvent("game-select", "NULL", "NULL", "NULL", "requestedgame"); + } + return; + } + } + + // Requested system doesn't exist + Settings::getInstance()->setString("StartupSystem", ""); + } goToSystemView(SystemData::sSystemVector.at(0)); + Scripting::fireEvent("system-select", SystemData::sSystemVector.at(0)->getName(), "gotostart"); +} + +void ViewController::ReloadAndGoToStart() +{ + mWindow->renderLoadingScreen("Loading..."); + ViewController::get()->reloadAll(); + ViewController::get()->goToStart(); } int ViewController::getSystemId(SystemData* system) { std::vector& sysVec = SystemData::sSystemVector; - return std::find(sysVec.begin(), sysVec.end(), system) - sysVec.begin(); + return (int)(std::find(sysVec.cbegin(), sysVec.cend(), system) - sysVec.cbegin()); } void ViewController::goToSystemView(SystemData* system) { + // Tell any current view it's about to be hidden + if (mCurrentView) + { + mCurrentView->onHide(); + } + mState.viewing = SYSTEM_SELECT; mState.system = system; @@ -63,6 +104,8 @@ void ViewController::goToSystemView(SystemData* system) systemList->goToSystem(system, false); mCurrentView = systemList; + mCurrentView->onShow(); + PowerSaver::setState(true); playViewTransition(); } @@ -99,28 +142,37 @@ void ViewController::goToGameList(SystemData* system) mState.viewing = GAME_LIST; mState.system = system; + if (mCurrentView) + { + mCurrentView->onHide(); + } mCurrentView = getGameListView(system); + if (mCurrentView) + { + mCurrentView->onShow(); + } playViewTransition(); } void ViewController::playViewTransition() { - Eigen::Vector3f target(Eigen::Vector3f::Identity()); - if(mCurrentView) + Vector3f target(Vector3f::Zero()); + if(mCurrentView) target = mCurrentView->getPosition(); // no need to animate, we're not going anywhere (probably goToNextGamelist() or goToPrevGamelist() when there's only 1 system) if(target == -mCamera.translation() && !isAnimationPlaying(0)) return; - if(Settings::getInstance()->getString("TransitionStyle") == "fade") + std::string transition_style = Settings::getInstance()->getString("TransitionStyle"); + if(transition_style == "fade") { // fade // stop whatever's currently playing, leaving mFadeOpacity wherever it is cancelAnimation(0); auto fadeFunc = [this](float t) { - mFadeOpacity = lerp(0, 1, t); + mFadeOpacity = Math::lerp(0, 1, t); }; const static int FADE_DURATION = 240; // fade in/out time @@ -141,21 +193,68 @@ void ViewController::playViewTransition() }else{ advanceAnimation(0, (int)(mFadeOpacity * FADE_DURATION)); } - }else{ - // slide - setAnimation(new MoveCameraAnimation(mCamera, target)); + } + else if (transition_style == "slide") + { + // slide or simple slide + bool inGamelistNav = -mCamera.translation().y() == target.y() // not in/out gamelist nav + && -mCamera.translation().x() - target.x(); // left/right movement + cancelAnimation(0); + Vector3f tgt = Vector3f(target); + Vector3f positionOrig; + if (inGamelistNav) { + const float screenWidth = (float)Renderer::getScreenWidth(); + if (-mCamera.translation().x() - tgt.x() >= 2 * screenWidth) + { + // right rollover + mLockInput = true; + tgt.x() = screenWidth * mGameListViews.size(); + } + else if (-mCamera.translation().x() - tgt.x() <= 2 * -screenWidth) + { + // left rollover + mLockInput = true; + tgt.x() = -screenWidth; + } + // deny any further input on rollover as mCurrentView would be + // different on subsequent animations, resulting in restoring + // a unrelated mCurrentView/mCamera with the original position + if (mLockInput) + { + positionOrig = Vector3f(mCurrentView->getPosition()); + mCurrentView->setPosition(tgt.x(), tgt.y()); + } + } + + setAnimation(new MoveCameraAnimation(mCamera, tgt), 0, [this, positionOrig] { + if (mLockInput) { + mCurrentView->setPosition(positionOrig); + mCamera.translation() = -positionOrig; + } + mLockInput = false; + }); updateHelpPrompts(); // update help prompts immediately } + else + { + // instant + setAnimation(new LambdaAnimation( + [this, target](float /*t*/) + { + this->mCamera.translation() = -target; + }, 1)); + updateHelpPrompts(); + } } void ViewController::onFileChanged(FileData* file, FileChangeType change) { auto it = mGameListViews.find(file->getSystem()); - if(it != mGameListViews.end()) + if(it != mGameListViews.cend()) it->second->onFileChanged(file, change); } -void ViewController::launch(FileData* game, Eigen::Vector3f center) +void ViewController::launch(FileData* game, Vector3f center) { if(game->getType() != GAME) { @@ -163,75 +262,148 @@ void ViewController::launch(FileData* game, Eigen::Vector3f center) return; } - Eigen::Affine3f origCamera = mCamera; + // Hide the current view + if (mCurrentView) + mCurrentView->onHide(); + + Transform4x4f origCamera = mCamera; origCamera.translation() = -mCurrentView->getPosition(); center += mCurrentView->getPosition(); stopAnimation(1); // make sure the fade in isn't still playing + mWindow->stopInfoPopup(); // make sure we disable any existing info popup mLockInput = true; - if(Settings::getInstance()->getString("TransitionStyle") == "fade") + std::string transition_style = Settings::getInstance()->getString("TransitionStyle"); + if(transition_style == "fade") { // fade out, launch game, fade back in auto fadeFunc = [this](float t) { - //t -= 1; - //mFadeOpacity = lerp(0.0f, 1.0f, t*t*t + 1); - mFadeOpacity = lerp(0.0f, 1.0f, t); + mFadeOpacity = Math::lerp(0.0f, 1.0f, t); }; setAnimation(new LambdaAnimation(fadeFunc, 800), 0, [this, game, fadeFunc] { - game->getSystem()->launchGame(mWindow, game); - mLockInput = false; - setAnimation(new LambdaAnimation(fadeFunc, 800), 0, nullptr, true); + game->launchGame(mWindow); + setAnimation(new LambdaAnimation(fadeFunc, 800), 0, [this, game] { mLockInput = false; }, true); this->onFileChanged(game, FILE_METADATA_CHANGED); + if (mCurrentView) { + this->getGameListView(game->getSystem())->setCursor(game, true); + mCurrentView->onShow(); + } }); - }else{ + } else if (transition_style == "slide"){ // move camera to zoom in on center + fade out, launch game, come back in - setAnimation(new LaunchAnimation(mCamera, mFadeOpacity, center, 1500), 0, [this, origCamera, center, game] + setAnimation(new LaunchAnimation(mCamera, mFadeOpacity, center, 1500), 0, [this, origCamera, center, game] { - game->getSystem()->launchGame(mWindow, game); + game->launchGame(mWindow); mCamera = origCamera; - mLockInput = false; - setAnimation(new LaunchAnimation(mCamera, mFadeOpacity, center, 600), 0, nullptr, true); + setAnimation(new LaunchAnimation(mCamera, mFadeOpacity, center, 600), 0, [this, game] { mLockInput = false; }, true); this->onFileChanged(game, FILE_METADATA_CHANGED); + if (mCurrentView) { + this->getGameListView(game->getSystem())->setCursor(game, true); + mCurrentView->onShow(); + } }); + } else { // instant + setAnimation(new LaunchAnimation(mCamera, mFadeOpacity, center, 10), 0, [this, origCamera, center, game] + { + game->launchGame(mWindow); + mCamera = origCamera; + setAnimation(new LaunchAnimation(mCamera, mFadeOpacity, center, 10), 0, [this, game] { mLockInput = false; }, true); + this->onFileChanged(game, FILE_METADATA_CHANGED); + if (mCurrentView) { + this->getGameListView(game->getSystem())->setCursor(game, true); + mCurrentView->onShow(); + } + }); + } +} + +void ViewController::removeGameListView(SystemData* system) +{ + //if we already made one, return that one + auto exists = mGameListViews.find(system); + if(exists != mGameListViews.cend()) + { + exists->second.reset(); + mGameListViews.erase(system); } } +ViewController::GameListViewType ViewController::getGameListViewType() +{ + //decide type + GameListViewType selectedViewType = AUTOMATIC; + + std::string viewPreference = Settings::getInstance()->getString("GamelistViewStyle"); + if (viewPreference.compare("basic") == 0) + selectedViewType = BASIC; + if (viewPreference.compare("detailed") == 0) + selectedViewType = DETAILED; + if (viewPreference.compare("grid") == 0) + selectedViewType = GRID; + if (viewPreference.compare("video") == 0) + selectedViewType = VIDEO; + + return selectedViewType; +} + std::shared_ptr ViewController::getGameListView(SystemData* system) { //if we already made one, return that one auto exists = mGameListViews.find(system); - if(exists != mGameListViews.end()) + if(exists != mGameListViews.cend()) return exists->second; + system->getIndex()->setUIModeFilters(); //if we didn't, make it, remember it, and return it std::shared_ptr view; + bool themeHasVideoView = system->getTheme()->hasView("video"); + //decide type - bool detailed = false; - std::vector files = system->getRootFolder()->getFilesRecursive(GAME | FOLDER); - for(auto it = files.begin(); it != files.end(); it++) + GameListViewType selectedViewType = getGameListViewType(); + + if (selectedViewType == AUTOMATIC) { - if(!(*it)->getThumbnailPath().empty()) + std::vector files = system->getRootFolder()->getFilesRecursive(GAME | FOLDER); + for (auto it = files.cbegin(); it != files.cend(); it++) { - detailed = true; - break; + if (themeHasVideoView && !(*it)->getVideoPath().empty()) + { + selectedViewType = VIDEO; + break; + } + else if (!(*it)->getThumbnailPath().empty()) + { + selectedViewType = DETAILED; + // Don't break out in case any subsequent files have video + } } } - - if(detailed) - view = std::shared_ptr(new DetailedGameListView(mWindow, system->getRootFolder())); - else - view = std::shared_ptr(new BasicGameListView(mWindow, system->getRootFolder())); - - // uncomment for experimental "image grid" view - //view = std::shared_ptr(new GridGameListView(mWindow, system->getRootFolder())); + + // Create the view + switch (selectedViewType) + { + case VIDEO: + view = std::shared_ptr(new VideoGameListView(mWindow, system->getRootFolder())); + break; + case DETAILED: + view = std::shared_ptr(new DetailedGameListView(mWindow, system->getRootFolder())); + break; + case GRID: + view = std::shared_ptr(new GridGameListView(mWindow, system->getRootFolder())); + break; + case BASIC: + default: + view = std::shared_ptr(new BasicGameListView(mWindow, system->getRootFolder())); + break; + } view->setTheme(system->getTheme()); std::vector& sysVec = SystemData::sSystemVector; - int id = std::find(sysVec.begin(), sysVec.end(), system) - sysVec.begin(); + int id = (int)(std::find(sysVec.cbegin(), sysVec.cend(), system) - sysVec.cbegin()); view->setPosition(id * (float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight() * 2); addChild(view.get()); @@ -259,13 +431,18 @@ bool ViewController::input(InputConfig* config, Input input) return true; // open menu - if(config->isMappedTo("start", input) && input.value != 0) + if(!(UIModeController::getInstance()->isUIModeKid() && Settings::getInstance()->getBool("DisableKidStartMenu")) && config->isMappedTo("start", input) && input.value != 0) { // open menu mWindow->pushGui(new GuiMenu(mWindow)); return true; } + if(UIModeController::getInstance()->listen(config, input)) // check if UI mode has changed due to passphrase completion + { + return true; + } + if(mCurrentView) return mCurrentView->input(config, input); @@ -282,27 +459,32 @@ void ViewController::update(int deltaTime) updateSelf(deltaTime); } -void ViewController::render(const Eigen::Affine3f& parentTrans) +void ViewController::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = mCamera * parentTrans; + Transform4x4f trans = mCamera * parentTrans; + Transform4x4f transInverse; + transInverse.invert(trans); // camera position, position + size - Eigen::Vector3f viewStart = trans.inverse().translation(); - Eigen::Vector3f viewEnd = trans.inverse() * Eigen::Vector3f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight(), 0); + Vector3f viewStart = transInverse.translation(); + Vector3f viewEnd = transInverse * Vector3f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight(), 0); + + // Keep track of UI mode changes. + UIModeController::getInstance()->monitorUIMode(); // draw systemview getSystemListView()->render(trans); - + // draw gamelists - for(auto it = mGameListViews.begin(); it != mGameListViews.end(); it++) + for(auto it = mGameListViews.cbegin(); it != mGameListViews.cend(); it++) { // clipping - Eigen::Vector3f guiStart = it->second->getPosition(); - Eigen::Vector3f guiEnd = it->second->getPosition() + Eigen::Vector3f(it->second->getSize().x(), it->second->getSize().y(), 0); + Vector3f guiStart = it->second->getPosition(); + Vector3f guiEnd = it->second->getPosition() + Vector3f(it->second->getSize().x(), it->second->getSize().y(), 0); if(guiEnd.x() >= viewStart.x() && guiEnd.y() >= viewStart.y() && guiStart.x() <= viewEnd.x() && guiStart.y() <= viewEnd.y()) - it->second->render(trans); + it->second->render(trans); } if(mWindow->peekGui() == this) @@ -311,59 +493,98 @@ void ViewController::render(const Eigen::Affine3f& parentTrans) // fade out if(mFadeOpacity) { + unsigned int fadeColor = 0x00000000 | (unsigned char)(mFadeOpacity * 255); Renderer::setMatrix(parentTrans); - Renderer::drawRect(0, 0, Renderer::getScreenWidth(), Renderer::getScreenHeight(), 0x00000000 | (unsigned char)(mFadeOpacity * 255)); + Renderer::drawRect(0.0f, 0.0f, Renderer::getScreenWidth(), Renderer::getScreenHeight(), fadeColor, fadeColor); } } void ViewController::preload() { - for(auto it = SystemData::sSystemVector.begin(); it != SystemData::sSystemVector.end(); it++) + int i = 1; + int max = SystemData::sSystemVector.size() + 1; + + bool splash = Settings::getInstance()->getBool("SplashScreen"); + if (splash) + mWindow->renderLoadingScreen("Preloading UI", (float)i / (float)max); + + for(auto it = SystemData::sSystemVector.cbegin(); it != SystemData::sSystemVector.cend(); it++) { + if (splash) + { + i++; + mWindow->renderLoadingScreen("Preloading UI", (float)i / (float)max); + } + + (*it)->getIndex()->resetFilters(); getGameListView(*it); } } void ViewController::reloadGameListView(IGameListView* view, bool reloadTheme) { - for(auto it = mGameListViews.begin(); it != mGameListViews.end(); it++) + for(auto it = mGameListViews.cbegin(); it != mGameListViews.cend(); it++) { if(it->second.get() == view) { bool isCurrent = (mCurrentView == it->second); SystemData* system = it->first; FileData* cursor = view->getCursor(); + int viewportTop = view->getViewportTop(); mGameListViews.erase(it); if(reloadTheme) system->loadTheme(); - + system->getIndex()->setUIModeFilters(); std::shared_ptr newView = getGameListView(system); - newView->setCursor(cursor); + // to counter having come from a placeholder + if (!cursor->isPlaceHolder()) { + newView->setCursor(cursor); + newView->setViewportTop(viewportTop); + } if(isCurrent) mCurrentView = newView; break; } } + // Redisplay the current view + if (mCurrentView) + mCurrentView->onShow(); + } -void ViewController::reloadAll() +void ViewController::reloadAll(bool themeChanged) { + // clear all gamelistviews std::map cursorMap; - for(auto it = mGameListViews.begin(); it != mGameListViews.end(); it++) + std::map viewportTopMap; + for(auto it = mGameListViews.cbegin(); it != mGameListViews.cend(); it++) { cursorMap[it->first] = it->second->getCursor(); + viewportTopMap[it->first] = it->second->getViewportTop(); } mGameListViews.clear(); - for(auto it = cursorMap.begin(); it != cursorMap.end(); it++) + // load themes, create gamelistviews and reset filters + for(auto it = cursorMap.cbegin(); it != cursorMap.cend(); it++) { it->first->loadTheme(); + it->first->getIndex()->resetFilters(); getGameListView(it->first)->setCursor(it->second); } + if(!themeChanged || !Settings::getInstance()->getBool("UseFullscreenPaging")) + { + // restore index of first list item on display + for(auto it = viewportTopMap.cbegin(); it != viewportTopMap.cend(); it++) + { + getGameListView(it->first)->setViewportTop(it->second); + } + } + + // Rebuild SystemListView mSystemListView.reset(); getSystemListView(); @@ -373,7 +594,9 @@ void ViewController::reloadAll() mCurrentView = getGameListView(mState.getSystem()); }else if(mState.viewing == SYSTEM_SELECT) { - mSystemListView->goToSystem(mState.getSystem(), false); + SystemData* system = mState.getSystem(); + goToSystemView(SystemData::sSystemVector.front()); + mSystemListView->goToSystem(system, false); mCurrentView = mSystemListView; }else{ goToSystemView(SystemData::sSystemVector.front()); @@ -387,9 +610,10 @@ std::vector ViewController::getHelpPrompts() std::vector prompts; if(!mCurrentView) return prompts; - + prompts = mCurrentView->getHelpPrompts(); - prompts.push_back(HelpPrompt("start", "menu")); + if(!(UIModeController::getInstance()->isUIModeKid() && Settings::getInstance()->getBool("DisableKidStartMenu"))) + prompts.push_back(HelpPrompt("start", "menu")); return prompts; } diff --git a/es-app/src/views/ViewController.h b/es-app/src/views/ViewController.h index 2658f44a9f..13a9a0c7a0 100644 --- a/es-app/src/views/ViewController.h +++ b/es-app/src/views/ViewController.h @@ -1,9 +1,15 @@ #pragma once +#ifndef ES_APP_VIEWS_VIEW_CONTROLLER_H +#define ES_APP_VIEWS_VIEW_CONTROLLER_H -#include "views/gamelist/IGameListView.h" -#include "views/SystemView.h" +#include "renderers/Renderer.h" +#include "FileData.h" +#include "GuiComponent.h" +#include +class IGameListView; class SystemData; +class SystemView; // Used to smoothly transition the camera between multiple views (e.g. from system to system, from gamelist to gamelist). class ViewController : public GuiComponent @@ -22,7 +28,7 @@ class ViewController : public GuiComponent // the current gamelist view (as it may change to be detailed). void reloadGameListView(IGameListView* gamelist, bool reloadTheme = false); inline void reloadGameListView(SystemData* system, bool reloadTheme = false) { reloadGameListView(getGameListView(system).get(), reloadTheme); } - void reloadAll(); // Reload everything with a theme. Used when the "ThemeSet" setting changes. + void reloadAll(bool themeChanged = false); // Reload everything with a theme. When the "ThemeSet" setting changes, themeChanged is true. // Navigation. void goToNextGameList(); @@ -30,16 +36,17 @@ class ViewController : public GuiComponent void goToGameList(SystemData* system); void goToSystemView(SystemData* system); void goToStart(); + void ReloadAndGoToStart(); void onFileChanged(FileData* file, FileChangeType change); // Plays a nice launch effect and launches the game at the end of it. // Once the game terminates, plays a return effect. - void launch(FileData* game, Eigen::Vector3f centerCameraOn = Eigen::Vector3f(Renderer::getScreenWidth() / 2.0f, Renderer::getScreenHeight() / 2.0f, 0)); + void launch(FileData* game, Vector3f centerCameraOn = Vector3f(Renderer::getScreenWidth() / 2.0f, Renderer::getScreenHeight() / 2.0f, 0)); bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; enum ViewMode { @@ -49,6 +56,17 @@ class ViewController : public GuiComponent GAME_LIST }; + enum GameListViewType + { + AUTOMATIC, + BASIC, + DETAILED, + GRID, + VIDEO + }; + + ViewController::GameListViewType getGameListViewType(); + struct State { ViewMode viewing; @@ -67,6 +85,7 @@ class ViewController : public GuiComponent std::shared_ptr getGameListView(SystemData* system); std::shared_ptr getSystemListView(); + void removeGameListView(SystemData* system); private: ViewController(Window* window); @@ -74,14 +93,16 @@ class ViewController : public GuiComponent void playViewTransition(); int getSystemId(SystemData* system); - + std::shared_ptr mCurrentView; std::map< SystemData*, std::shared_ptr > mGameListViews; std::shared_ptr mSystemListView; - - Eigen::Affine3f mCamera; + + Transform4x4f mCamera; float mFadeOpacity; bool mLockInput; State mState; }; + +#endif // ES_APP_VIEWS_VIEW_CONTROLLER_H diff --git a/es-app/src/views/gamelist/BasicGameListView.cpp b/es-app/src/views/gamelist/BasicGameListView.cpp index af4ccbfe4d..605c8bad2b 100644 --- a/es-app/src/views/gamelist/BasicGameListView.cpp +++ b/es-app/src/views/gamelist/BasicGameListView.cpp @@ -1,19 +1,21 @@ #include "views/gamelist/BasicGameListView.h" + +#include "utils/FileSystemUtil.h" +#include "views/UIModeController.h" #include "views/ViewController.h" -#include "Renderer.h" -#include "Window.h" -#include "ThemeData.h" -#include "SystemData.h" +#include "CollectionSystemManager.h" #include "Settings.h" +#include "SystemData.h" BasicGameListView::BasicGameListView(Window* window, FileData* root) : ISimpleGameListView(window, root), mList(window) { mList.setSize(mSize.x(), mSize.y() * 0.8f); mList.setPosition(0, mSize.y() * 0.2f); + mList.setDefaultZIndex(20); addChild(&mList); - populateList(root->getChildren()); + populateList(root->getChildrenListToDisplay()); } void BasicGameListView::onThemeChanged(const std::shared_ptr& theme) @@ -21,6 +23,8 @@ void BasicGameListView::onThemeChanged(const std::shared_ptr& theme) ISimpleGameListView::onThemeChanged(theme); using namespace ThemeFlags; mList.applyTheme(theme, getName(), "gamelist", ALL); + + sortChildren(); } void BasicGameListView::onFileChanged(FileData* file, FileChangeType change) @@ -38,12 +42,17 @@ void BasicGameListView::onFileChanged(FileData* file, FileChangeType change) void BasicGameListView::populateList(const std::vector& files) { mList.clear(); - - mHeaderText.setText(files.at(0)->getSystem()->getFullName()); - - for(auto it = files.begin(); it != files.end(); it++) + mHeaderText.setText(mRoot->getSystem()->getFullName()); + if (files.size() > 0) { - mList.add((*it)->getName(), *it, ((*it)->getType() == FOLDER)); + for(auto it = files.cbegin(); it != files.cend(); it++) + { + mList.add((*it)->getName(), *it, ((*it)->getType() == FOLDER)); + } + } + else + { + addPlaceholder(); } } @@ -52,12 +61,19 @@ FileData* BasicGameListView::getCursor() return mList.getSelected(); } -void BasicGameListView::setCursor(FileData* cursor) +void BasicGameListView::setCursor(FileData* cursor, bool refreshListCursorPos) { - if(!mList.setCursor(cursor)) + if (refreshListCursorPos) + setViewportTop(mList.REFRESH_LIST_CURSOR_POS); + + bool notInList = !mList.setCursor(cursor); + if(!refreshListCursorPos && notInList && !cursor->isPlaceHolder()) { - populateList(cursor->getParent()->getChildren()); - mList.setCursor(cursor); + populateList(cursor->getParent()->getChildrenListToDisplay()); + // this extra call is needed iff a system has games organized in folders + // and the cursor is focusing a game in a folder + if (cursor->getParent()->getType() == FOLDER) + mList.setCursor(cursor); // update our cursor stack in case our cursor just got set to some folder we weren't in before if(mCursorStack.empty() || mCursorStack.top() != cursor->getParent()) @@ -69,7 +85,7 @@ void BasicGameListView::setCursor(FileData* cursor) tmp.push(ptr); ptr = ptr->getParent(); } - + // flip the stack and put it in mCursorStack mCursorStack = std::stack(); while(!tmp.empty()) @@ -81,11 +97,115 @@ void BasicGameListView::setCursor(FileData* cursor) } } +void BasicGameListView::setViewportTop(int index) +{ + mList.setViewportTop(index); +} + + +int BasicGameListView::getViewportTop() +{ + return mList.getViewportTop(); +} + +void BasicGameListView::addPlaceholder() +{ + // empty list - add a placeholder + FileData* placeholder = new FileData(PLACEHOLDER, "", this->mRoot->getSystem()->getSystemEnvData(), this->mRoot->getSystem()); + mList.add(placeholder->getName(), placeholder, (placeholder->getType() == PLACEHOLDER)); +} + +std::string BasicGameListView::getQuickSystemSelectRightButton() +{ + return "right"; +} + +std::string BasicGameListView::getQuickSystemSelectLeftButton() +{ + return "left"; +} + void BasicGameListView::launch(FileData* game) { ViewController::get()->launch(game); } +void BasicGameListView::remove(FileData *game, bool deleteFile, bool refreshView) +{ + if (deleteFile) + { + Utils::FileSystem::removeFile(game->getPath()); // actually delete the file on the filesystem + + // we want to delete related/scraped files, but check first if resources are shared with another game + bool keepVideo = game->getVideoPath().empty(); + bool keepMarquee = game->getMarqueePath().empty(); + bool keepThumbnail = game->getThumbnailPath().empty(); + bool keepImage = game->getImagePath().empty(); + + for (auto system : SystemData::sSystemVector) + { + // skip checking if we determined we need to keep the resources + if (keepVideo && keepMarquee && keepImage && keepThumbnail) + break; + + if (!system->isGameSystem() || system->isCollection()) + continue; + + for (auto entry : system->getRootFolder()->getChildren()) { + if (entry == game) // skip the game's own entry + continue; + + if (!keepVideo && (game->getVideoPath() == entry->getVideoPath())) + keepVideo = true; + + if (!keepMarquee && (game->getMarqueePath() == entry->getMarqueePath())) + keepMarquee = true; + + // Thumbnail/Image can be used inter-changeably, so check for both in game's resources + if (!keepThumbnail && (game->getThumbnailPath() == entry->getThumbnailPath() || game->getThumbnailPath() == entry->getImagePath())) + keepThumbnail = true; + + if (!keepImage && (game->getImagePath() == entry->getImagePath() || game->getImagePath() == entry->getThumbnailPath())) + keepImage = true; + } + } + + // delete the resources that are not shared + if (!keepVideo) + Utils::FileSystem::removeFile(game->getVideoPath()); + if (!keepImage) + Utils::FileSystem::removeFile(game->getImagePath()); + if (!keepThumbnail) + Utils::FileSystem::removeFile(game->getThumbnailPath()); + if (!keepMarquee) + Utils::FileSystem::removeFile(game->getMarqueePath()); + } + FileData* parent = game->getParent(); + if (getCursor() == game) // Select next element in list, or prev if none + { + std::vector siblings = parent->getChildrenListToDisplay(); + auto gameIter = std::find(siblings.cbegin(), siblings.cend(), game); + unsigned int gamePos = (int)std::distance(siblings.cbegin(), gameIter); + if (gameIter != siblings.cend()) + { + if ((gamePos + 1) < siblings.size()) + { + setCursor(siblings.at(gamePos + 1)); + } else if (gamePos > 1) { + setCursor(siblings.at(gamePos - 1)); + } + } + } + mList.remove(game); + if(mList.size() == 0) + { + addPlaceholder(); + } + delete game; // remove before repopulating (removes from parent) + if(refreshView) + onFileChanged(parent, FILE_REMOVED); // update the view, with game removed +} + std::vector BasicGameListView::getHelpPrompts() { std::vector prompts; @@ -95,6 +215,18 @@ std::vector BasicGameListView::getHelpPrompts() prompts.push_back(HelpPrompt("up/down", "choose")); prompts.push_back(HelpPrompt("a", "launch")); prompts.push_back(HelpPrompt("b", "back")); - prompts.push_back(HelpPrompt("select", "options")); + if(!UIModeController::getInstance()->isUIModeKid()) + prompts.push_back(HelpPrompt("select", "options")); + if(mRoot->getSystem()->isGameSystem()) + prompts.push_back(HelpPrompt("x", "random")); + if(mRoot->getSystem()->isGameSystem() && !UIModeController::getInstance()->isUIModeKid()) + { + std::string prompt = CollectionSystemManager::get()->getEditingCollection(); + prompts.push_back(HelpPrompt("y", prompt)); + } return prompts; } + +void BasicGameListView::onFocusLost() { + mList.stopScrolling(true); +} diff --git a/es-app/src/views/gamelist/BasicGameListView.h b/es-app/src/views/gamelist/BasicGameListView.h index 23145f5cb9..afa9394c61 100644 --- a/es-app/src/views/gamelist/BasicGameListView.h +++ b/es-app/src/views/gamelist/BasicGameListView.h @@ -1,7 +1,9 @@ #pragma once +#ifndef ES_APP_VIEWS_GAME_LIST_BASIC_GAME_LIST_VIEW_H +#define ES_APP_VIEWS_GAME_LIST_BASIC_GAME_LIST_VIEW_H -#include "views/gamelist/ISimpleGameListView.h" #include "components/TextListComponent.h" +#include "views/gamelist/ISimpleGameListView.h" class BasicGameListView : public ISimpleGameListView { @@ -9,20 +11,30 @@ class BasicGameListView : public ISimpleGameListView BasicGameListView(Window* window, FileData* root); // Called when a FileData* is added, has its metadata changed, or is removed - virtual void onFileChanged(FileData* file, FileChangeType change); + virtual void onFileChanged(FileData* file, FileChangeType change) override; - virtual void onThemeChanged(const std::shared_ptr& theme); + virtual void onThemeChanged(const std::shared_ptr& theme) override; virtual FileData* getCursor() override; - virtual void setCursor(FileData* file) override; + virtual void setCursor(FileData* file, bool refreshListCursorPos = false) override; + virtual int getViewportTop() override; + virtual void setViewportTop(int index) override; virtual const char* getName() const override { return "basic"; } virtual std::vector getHelpPrompts() override; + virtual void launch(FileData* game) override; + + void onFocusLost() override; protected: + virtual std::string getQuickSystemSelectRightButton() override; + virtual std::string getQuickSystemSelectLeftButton() override; virtual void populateList(const std::vector& files) override; - virtual void launch(FileData* game) override; + virtual void remove(FileData* game, bool deleteFile, bool refreshView=true) override; + virtual void addPlaceholder(); TextListComponent mList; }; + +#endif // ES_APP_VIEWS_GAME_LIST_BASIC_GAME_LIST_VIEW_H diff --git a/es-app/src/views/gamelist/DetailedGameListView.cpp b/es-app/src/views/gamelist/DetailedGameListView.cpp index de16110145..ecac95c3bd 100644 --- a/es-app/src/views/gamelist/DetailedGameListView.cpp +++ b/es-app/src/views/gamelist/DetailedGameListView.cpp @@ -1,18 +1,21 @@ #include "views/gamelist/DetailedGameListView.h" -#include "views/ViewController.h" -#include "Window.h" + #include "animations/LambdaAnimation.h" +#include "views/ViewController.h" -DetailedGameListView::DetailedGameListView(Window* window, FileData* root) : - BasicGameListView(window, root), - mDescContainer(window), mDescription(window), +DetailedGameListView::DetailedGameListView(Window* window, FileData* root) : + BasicGameListView(window, root), + mDescContainer(window, DESCRIPTION_SCROLL_DELAY), mDescription(window), + mThumbnail(window), + mMarquee(window), mImage(window), - mLblRating(window), mLblReleaseDate(window), mLblDeveloper(window), mLblPublisher(window), + mLblRating(window), mLblReleaseDate(window), mLblDeveloper(window), mLblPublisher(window), mLblGenre(window), mLblPlayers(window), mLblLastPlayed(window), mLblPlayCount(window), - mRating(window), mReleaseDate(window), mDeveloper(window), mPublisher(window), - mGenre(window), mPlayers(window), mLastPlayed(window), mPlayCount(window) + mRating(window), mReleaseDate(window), mDeveloper(window), mPublisher(window), + mGenre(window), mPlayers(window), mLastPlayed(window), mPlayCount(window), + mName(window) { //mHeaderImage.setPosition(mSize.x() * 0.25f, 0); @@ -21,14 +24,33 @@ DetailedGameListView::DetailedGameListView(Window* window, FileData* root) : mList.setPosition(mSize.x() * (0.50f + padding), mList.getPosition().y()); mList.setSize(mSize.x() * (0.50f - padding), mList.getSize().y()); mList.setAlignment(TextListComponent::ALIGN_LEFT); - mList.setCursorChangedCallback([&](const CursorState& state) { updateInfoPanel(); }); + mList.setCursorChangedCallback([&](const CursorState& /*state*/) { updateInfoPanel(); }); - // image + // Image mImage.setOrigin(0.5f, 0.5f); mImage.setPosition(mSize.x() * 0.25f, mList.getPosition().y() + mSize.y() * 0.2125f); mImage.setMaxSize(mSize.x() * (0.50f - 2*padding), mSize.y() * 0.4f); + mImage.setDefaultZIndex(30); addChild(&mImage); + // Thumbnail + // Default to off the screen + mThumbnail.setOrigin(0.5f, 0.5f); + mThumbnail.setPosition(2.0f, 2.0f); + mThumbnail.setMaxSize(mSize.x(), mSize.y()); + mThumbnail.setDefaultZIndex(35); + mThumbnail.setVisible(false); + addChild(&mThumbnail); + + // Marquee + // Default to off the screen + mMarquee.setOrigin(0.5f, 0.5f); + mMarquee.setPosition(2.0f, 2.0f); + mMarquee.setMaxSize(mSize.x(), mSize.y()); + mMarquee.setDefaultZIndex(35); + mMarquee.setVisible(false); + addChild(&mMarquee); + // metadata labels + values mLblRating.setText("Rating: "); addChild(&mLblRating); @@ -50,15 +72,23 @@ DetailedGameListView::DetailedGameListView(Window* window, FileData* root) : addChild(&mPlayers); mLblLastPlayed.setText("Last played: "); addChild(&mLblLastPlayed); - mLastPlayed.setDisplayMode(DateTimeComponent::DISP_RELATIVE_TO_NOW); + mLastPlayed.setDisplayRelative(true); addChild(&mLastPlayed); mLblPlayCount.setText("Times played: "); addChild(&mLblPlayCount); addChild(&mPlayCount); + mName.setPosition(mSize.x(), mSize.y()); + mName.setDefaultZIndex(40); + mName.setColor(0xAAAAAAFF); + mName.setFont(Font::get(FONT_SIZE_MEDIUM)); + mName.setHorizontalAlignment(ALIGN_CENTER); + addChild(&mName); + mDescContainer.setPosition(mSize.x() * padding, mSize.y() * 0.65f); mDescContainer.setSize(mSize.x() * (0.50f - 2*padding), mSize.y() - mDescContainer.getPosition().y()); mDescContainer.setAutoScroll(true); + mDescContainer.setDefaultZIndex(40); addChild(&mDescContainer); mDescription.setFont(Font::get(FONT_SIZE_SMALL)); @@ -76,13 +106,16 @@ void DetailedGameListView::onThemeChanged(const std::shared_ptr& them BasicGameListView::onThemeChanged(theme); using namespace ThemeFlags; - mImage.applyTheme(theme, getName(), "md_image", POSITION | ThemeFlags::SIZE); + mThumbnail.applyTheme(theme, getName(), "md_thumbnail", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION | VISIBLE); + mMarquee.applyTheme(theme, getName(), "md_marquee", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION | VISIBLE); + mImage.applyTheme(theme, getName(), "md_image", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION | VISIBLE); + mName.applyTheme(theme, getName(), "md_name", ALL); initMDLabels(); std::vector labels = getMDLabels(); assert(labels.size() == 8); const char* lblElements[8] = { - "md_lbl_rating", "md_lbl_releasedate", "md_lbl_developer", "md_lbl_publisher", + "md_lbl_rating", "md_lbl_releasedate", "md_lbl_developer", "md_lbl_publisher", "md_lbl_genre", "md_lbl_players", "md_lbl_lastplayed", "md_lbl_playcount" }; @@ -96,7 +129,7 @@ void DetailedGameListView::onThemeChanged(const std::shared_ptr& them std::vector values = getMDValues(); assert(values.size() == 8); const char* valElements[8] = { - "md_rating", "md_releasedate", "md_developer", "md_publisher", + "md_rating", "md_releasedate", "md_developer", "md_publisher", "md_genre", "md_players", "md_lastplayed", "md_playcount" }; @@ -105,22 +138,22 @@ void DetailedGameListView::onThemeChanged(const std::shared_ptr& them values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT); } - mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE); + mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX | VISIBLE); mDescription.setSize(mDescContainer.getSize().x(), 0); - mDescription.applyTheme(theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | TEXT)); + mDescription.applyTheme(theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION)); + + sortChildren(); } void DetailedGameListView::initMDLabels() { - using namespace Eigen; - std::vector components = getMDLabels(); const unsigned int colCount = 2; - const unsigned int rowCount = components.size() / 2; + const unsigned int rowCount = (int)(components.size() / 2); Vector3f start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); - + const float colSize = (mSize.x() * 0.48f) / colCount; const float rowPadding = 0.01f * mSize.y(); @@ -139,13 +172,12 @@ void DetailedGameListView::initMDLabels() components[i]->setFont(Font::get(FONT_SIZE_SMALL)); components[i]->setPosition(pos); + components[i]->setDefaultZIndex(40); } } void DetailedGameListView::initMDValues() { - using namespace Eigen; - std::vector labels = getMDLabels(); std::vector values = getMDValues(); @@ -167,6 +199,7 @@ void DetailedGameListView::initMDValues() const float heightDiff = (labels[i]->getSize().y() - values[i]->getSize().y()) / 2; values[i]->setPosition(labels[i]->getPosition() + Vector3f(labels[i]->getSize().x(), heightDiff, 0)); values[i]->setSize(colSize - labels[i]->getSize().x(), values[i]->getSize().y()); + values[i]->setDefaultZIndex(40); float testBot = values[i]->getPosition().y() + values[i]->getSize().y(); if(testBot > bottom) @@ -188,44 +221,51 @@ void DetailedGameListView::updateInfoPanel() //mDescription.setText(""); fadingOut = true; }else{ - mImage.setImage(file->metadata.get("image")); + mThumbnail.setImage(file->getThumbnailPath()); + mMarquee.setImage(file->getMarqueePath()); + mImage.setImage(file->getImagePath()); mDescription.setText(file->metadata.get("desc")); mDescContainer.reset(); + mRating.setValue(file->metadata.get("rating")); + mReleaseDate.setValue(file->metadata.get("releasedate")); + mDeveloper.setValue(file->metadata.get("developer")); + mPublisher.setValue(file->metadata.get("publisher")); + mGenre.setValue(file->metadata.get("genre")); + mPlayers.setValue(file->metadata.get("players")); + mName.setValue(file->metadata.get("name")); + if(file->getType() == GAME) { - mRating.setValue(file->metadata.get("rating")); - mReleaseDate.setValue(file->metadata.get("releasedate")); - mDeveloper.setValue(file->metadata.get("developer")); - mPublisher.setValue(file->metadata.get("publisher")); - mGenre.setValue(file->metadata.get("genre")); - mPlayers.setValue(file->metadata.get("players")); mLastPlayed.setValue(file->metadata.get("lastplayed")); mPlayCount.setValue(file->metadata.get("playcount")); } - + fadingOut = false; } std::vector comps = getMDValues(); + comps.push_back(&mThumbnail); + comps.push_back(&mMarquee); comps.push_back(&mImage); comps.push_back(&mDescription); + comps.push_back(&mName); std::vector labels = getMDLabels(); - comps.insert(comps.end(), labels.begin(), labels.end()); + comps.insert(comps.cend(), labels.cbegin(), labels.cend()); - for(auto it = comps.begin(); it != comps.end(); it++) + for(auto it = comps.cbegin(); it != comps.cend(); it++) { GuiComponent* comp = *it; // an animation is playing // then animate if reverse != fadingOut // an animation is not playing // then animate if opacity != our target opacity - if((comp->isAnimationPlaying(0) && comp->isAnimationReversed(0) != fadingOut) || + if((comp->isAnimationPlaying(0) && comp->isAnimationReversed(0) != fadingOut) || (!comp->isAnimationPlaying(0) && comp->getOpacity() != (fadingOut ? 0 : 255))) { auto func = [comp](float t) { - comp->setOpacity((unsigned char)(lerp(0.0f, 1.0f, t)*255)); + comp->setOpacity((unsigned char)(Math::lerp(0.0f, 1.0f, t)*255)); }; comp->setAnimation(new LambdaAnimation(func, 150), 0, nullptr, fadingOut); } @@ -234,9 +274,9 @@ void DetailedGameListView::updateInfoPanel() void DetailedGameListView::launch(FileData* game) { - Eigen::Vector3f target(Renderer::getScreenWidth() / 2.0f, Renderer::getScreenHeight() / 2.0f, 0); + Vector3f target(Renderer::getScreenWidth() / 2.0f, Renderer::getScreenHeight() / 2.0f, 0); if(mImage.hasImage()) - target << mImage.getCenter().x(), mImage.getCenter().y(), 0; + target = Vector3f(mImage.getCenter().x(), mImage.getCenter().y(), 0); ViewController::get()->launch(game, target); } @@ -268,3 +308,8 @@ std::vector DetailedGameListView::getMDValues() ret.push_back(&mPlayCount); return ret; } + +void DetailedGameListView::onFocusLost() { + mDescContainer.reset(); + mList.stopScrolling(true); +} diff --git a/es-app/src/views/gamelist/DetailedGameListView.h b/es-app/src/views/gamelist/DetailedGameListView.h index 30396e04c7..6add975f4d 100644 --- a/es-app/src/views/gamelist/DetailedGameListView.h +++ b/es-app/src/views/gamelist/DetailedGameListView.h @@ -1,9 +1,11 @@ #pragma once +#ifndef ES_APP_VIEWS_GAME_LIST_DETAILED_GAME_LIST_VIEW_H +#define ES_APP_VIEWS_GAME_LIST_DETAILED_GAME_LIST_VIEW_H -#include "views/gamelist/BasicGameListView.h" -#include "components/ScrollableContainer.h" -#include "components/RatingComponent.h" #include "components/DateTimeComponent.h" +#include "components/RatingComponent.h" +#include "components/ScrollableContainer.h" +#include "views/gamelist/BasicGameListView.h" class DetailedGameListView : public BasicGameListView { @@ -14,15 +16,18 @@ class DetailedGameListView : public BasicGameListView virtual const char* getName() const override { return "detailed"; } -protected: virtual void launch(FileData* game) override; + void onFocusLost() override; + private: void updateInfoPanel(); void initMDLabels(); void initMDValues(); + ImageComponent mThumbnail; + ImageComponent mMarquee; ImageComponent mImage; TextComponent mLblRating, mLblReleaseDate, mLblDeveloper, mLblPublisher, mLblGenre, mLblPlayers, mLblLastPlayed, mLblPlayCount; @@ -35,6 +40,7 @@ class DetailedGameListView : public BasicGameListView TextComponent mPlayers; DateTimeComponent mLastPlayed; TextComponent mPlayCount; + TextComponent mName; std::vector getMDLabels(); std::vector getMDValues(); @@ -42,3 +48,5 @@ class DetailedGameListView : public BasicGameListView ScrollableContainer mDescContainer; TextComponent mDescription; }; + +#endif // ES_APP_VIEWS_GAME_LIST_DETAILED_GAME_LIST_VIEW_H diff --git a/es-app/src/views/gamelist/GridGameListView.cpp b/es-app/src/views/gamelist/GridGameListView.cpp index c34b4b8ba0..c013fa3284 100644 --- a/es-app/src/views/gamelist/GridGameListView.cpp +++ b/es-app/src/views/gamelist/GridGameListView.cpp @@ -1,16 +1,129 @@ #include "views/gamelist/GridGameListView.h" -#include "ThemeData.h" -#include "Window.h" + +#include "animations/LambdaAnimation.h" +#include "views/UIModeController.h" #include "views/ViewController.h" +#include "CollectionSystemManager.h" +#include "Settings.h" +#include "SystemData.h" +#ifdef _OMX_ +#include "components/VideoPlayerComponent.h" +#endif +#include "components/VideoVlcComponent.h" + +GridGameListView::GridGameListView(Window* window, FileData* root) : + ISimpleGameListView(window, root), + mGrid(window), mMarquee(window), + mImage(window), + mVideo(nullptr), + mVideoPlaying(false), + mDescContainer(window, DESCRIPTION_SCROLL_DELAY), mDescription(window), -GridGameListView::GridGameListView(Window* window, FileData* root) : ISimpleGameListView(window, root), - mGrid(window) + mLblRating(window), mLblReleaseDate(window), mLblDeveloper(window), mLblPublisher(window), + mLblGenre(window), mLblPlayers(window), mLblLastPlayed(window), mLblPlayCount(window), + + mRating(window), mReleaseDate(window), mDeveloper(window), mPublisher(window), + mGenre(window), mPlayers(window), mLastPlayed(window), mPlayCount(window), + mName(window) { - mGrid.setPosition(0, mSize.y() * 0.2f); - mGrid.setSize(mSize.x(), mSize.y() * 0.8f); + const float padding = 0.01f; + +// Create the correct type of video window +#ifdef _OMX_ + if (Settings::getInstance()->getBool("VideoOmxPlayer")) + mVideo = new VideoPlayerComponent(window, ""); + else + mVideo = new VideoVlcComponent(window, getTitlePath()); +#else + mVideo = new VideoVlcComponent(window, getTitlePath()); +#endif + + mGrid.setPosition(mSize.x() * 0.1f, mSize.y() * 0.1f); + mGrid.setDefaultZIndex(20); + mGrid.setCursorChangedCallback([&](const CursorState& /*state*/) { updateInfoPanel(); }); addChild(&mGrid); - populateList(root->getChildren()); + populateList(root->getChildrenListToDisplay()); + + // metadata labels + values + mLblRating.setText("Rating: "); + addChild(&mLblRating); + addChild(&mRating); + mLblReleaseDate.setText("Released: "); + addChild(&mLblReleaseDate); + addChild(&mReleaseDate); + mLblDeveloper.setText("Developer: "); + addChild(&mLblDeveloper); + addChild(&mDeveloper); + mLblPublisher.setText("Publisher: "); + addChild(&mLblPublisher); + addChild(&mPublisher); + mLblGenre.setText("Genre: "); + addChild(&mLblGenre); + addChild(&mGenre); + mLblPlayers.setText("Players: "); + addChild(&mLblPlayers); + addChild(&mPlayers); + mLblLastPlayed.setText("Last played: "); + addChild(&mLblLastPlayed); + mLastPlayed.setDisplayRelative(true); + addChild(&mLastPlayed); + mLblPlayCount.setText("Times played: "); + addChild(&mLblPlayCount); + addChild(&mPlayCount); + + mName.setPosition(mSize.x(), mSize.y()); + mName.setDefaultZIndex(40); + mName.setColor(0xAAAAAAFF); + mName.setFont(Font::get(FONT_SIZE_MEDIUM)); + mName.setHorizontalAlignment(ALIGN_CENTER); + addChild(&mName); + + mDescContainer.setPosition(mSize.x() * padding, mSize.y() * 0.65f); + mDescContainer.setSize(mSize.x() * (0.50f - 2*padding), mSize.y() - mDescContainer.getPosition().y()); + mDescContainer.setAutoScroll(true); + mDescContainer.setDefaultZIndex(40); + addChild(&mDescContainer); + + mDescription.setFont(Font::get(FONT_SIZE_SMALL)); + mDescription.setSize(mDescContainer.getSize().x(), 0); + mDescContainer.addChild(&mDescription); + + // Image + // Default to off the screen + mImage.setOrigin(0.5f, 0.5f); + mImage.setPosition(2.0f, 2.0f); + mImage.setMaxSize(mSize.x(), mSize.y()); + mImage.setDefaultZIndex(30); + mImage.setVisible(false); + addChild(&mImage); + + // Video + // Default to off the screen + mVideo->setOrigin(0.5f, 0.5f); + mVideo->setPosition(2.0f, 2.0f); + mVideo->setSize(mSize.x(), mSize.y()); + mVideo->setDefaultZIndex(30); + mVideo->setVisible(false); + addChild(mVideo); + + // Marquee + // Default to off the screen + mMarquee.setOrigin(0.5f, 0.5f); + mMarquee.setPosition(2.0f, 2.0f); + mMarquee.setMaxSize(mSize.x(), mSize.y()); + mMarquee.setDefaultZIndex(35); + mMarquee.setVisible(false); + addChild(&mMarquee); + + initMDLabels(); + initMDValues(); + updateInfoPanel(); +} + +GridGameListView::~GridGameListView() +{ + delete mVideo; } FileData* GridGameListView::getCursor() @@ -18,42 +131,378 @@ FileData* GridGameListView::getCursor() return mGrid.getSelected(); } -void GridGameListView::setCursor(FileData* file) +void GridGameListView::setCursor(FileData* file, bool refreshListCursorPos) { - if(!mGrid.setCursor(file)) + if(!mGrid.setCursor(file) && (!file->isPlaceHolder())) { - populateList(file->getParent()->getChildren()); + populateList(file->getParent()->getChildrenListToDisplay()); mGrid.setCursor(file); } } +std::string GridGameListView::getQuickSystemSelectRightButton() +{ + return "rightshoulder"; +} + +std::string GridGameListView::getQuickSystemSelectLeftButton() +{ + return "leftshoulder"; +} + bool GridGameListView::input(InputConfig* config, Input input) { - if(config->isMappedTo("left", input) || config->isMappedTo("right", input)) + if(config->isMappedLike("left", input) || config->isMappedLike("right", input)) return GuiComponent::input(config, input); return ISimpleGameListView::input(config, input); } +const std::string GridGameListView::getImagePath(FileData* file) +{ + ImageSource src = mGrid.getImageSource(); + + if (src == ImageSource::IMAGE) + return file->getImagePath(); + else if (src == ImageSource::MARQUEE) + return file->getMarqueePath(); + + return file->getThumbnailPath(); +} + void GridGameListView::populateList(const std::vector& files) { mGrid.clear(); - for(auto it = files.begin(); it != files.end(); it++) + mHeaderText.setText(mRoot->getSystem()->getFullName()); + if (files.size() > 0) + { + for (auto it = files.cbegin(); it != files.cend(); it++) + { + mGrid.add((*it)->getName(), getImagePath(*it), *it); + } + } + else + { + addPlaceholder(); + } +} + +void GridGameListView::onThemeChanged(const std::shared_ptr& theme) +{ + ISimpleGameListView::onThemeChanged(theme); + + using namespace ThemeFlags; + + mGrid.applyTheme(theme, getName(), "gamegrid", ALL); + mName.applyTheme(theme, getName(), "md_name", ALL); + mMarquee.applyTheme(theme, getName(), "md_marquee", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION | VISIBLE); + mImage.applyTheme(theme, getName(), "md_image", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION | VISIBLE); + mVideo->applyTheme(theme, getName(), "md_video", POSITION | ThemeFlags::SIZE | ThemeFlags::DELAY | Z_INDEX | ROTATION | VISIBLE); + + initMDLabels(); + std::vector labels = getMDLabels(); + assert(labels.size() == 8); + const char* lblElements[8] = { + "md_lbl_rating", "md_lbl_releasedate", "md_lbl_developer", "md_lbl_publisher", + "md_lbl_genre", "md_lbl_players", "md_lbl_lastplayed", "md_lbl_playcount" + }; + + for(unsigned int i = 0; i < labels.size(); i++) + { + labels[i]->applyTheme(theme, getName(), lblElements[i], ALL); + } + + + initMDValues(); + std::vector values = getMDValues(); + assert(values.size() == 8); + const char* valElements[8] = { + "md_rating", "md_releasedate", "md_developer", "md_publisher", + "md_genre", "md_players", "md_lastplayed", "md_playcount" + }; + + for(unsigned int i = 0; i < values.size(); i++) + { + values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT); + } + + mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX | VISIBLE); + mDescription.setSize(mDescContainer.getSize().x(), 0); + mDescription.applyTheme(theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION)); + + // Repopulate list in case new theme is displaying a different image. Preserve selection. + FileData* file = mGrid.getSelected(); + populateList(mRoot->getChildrenListToDisplay()); + mGrid.setCursor(file); + + sortChildren(); +} + +void GridGameListView::initMDLabels() +{ + std::vector components = getMDLabels(); + + const unsigned int colCount = 2; + const unsigned int rowCount = (int)(components.size() / 2); + + Vector3f start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); + + const float colSize = (mSize.x() * 0.48f) / colCount; + const float rowPadding = 0.01f * mSize.y(); + + for(unsigned int i = 0; i < components.size(); i++) + { + const unsigned int row = i % rowCount; + Vector3f pos(0.0f, 0.0f, 0.0f); + if(row == 0) + { + pos = start + Vector3f(colSize * (i / rowCount), 0, 0); + }else{ + // work from the last component + GuiComponent* lc = components[i-1]; + pos = lc->getPosition() + Vector3f(0, lc->getSize().y() + rowPadding, 0); + } + + components[i]->setFont(Font::get(FONT_SIZE_SMALL)); + components[i]->setPosition(pos); + components[i]->setDefaultZIndex(40); + } +} + +void GridGameListView::initMDValues() +{ + std::vector labels = getMDLabels(); + std::vector values = getMDValues(); + + std::shared_ptr defaultFont = Font::get(FONT_SIZE_SMALL); + mRating.setSize(defaultFont->getHeight() * 5.0f, (float)defaultFont->getHeight()); + mReleaseDate.setFont(defaultFont); + mDeveloper.setFont(defaultFont); + mPublisher.setFont(defaultFont); + mGenre.setFont(defaultFont); + mPlayers.setFont(defaultFont); + mLastPlayed.setFont(defaultFont); + mPlayCount.setFont(defaultFont); + + float bottom = 0.0f; + + const float colSize = (mSize.x() * 0.48f) / 2; + for(unsigned int i = 0; i < labels.size(); i++) + { + const float heightDiff = (labels[i]->getSize().y() - values[i]->getSize().y()) / 2; + values[i]->setPosition(labels[i]->getPosition() + Vector3f(labels[i]->getSize().x(), heightDiff, 0)); + values[i]->setSize(colSize - labels[i]->getSize().x(), values[i]->getSize().y()); + values[i]->setDefaultZIndex(40); + + float testBot = values[i]->getPosition().y() + values[i]->getSize().y(); + if(testBot > bottom) + bottom = testBot; + } + + mDescContainer.setPosition(mDescContainer.getPosition().x(), bottom + mSize.y() * 0.01f); + mDescContainer.setSize(mDescContainer.getSize().x(), mSize.y() - mDescContainer.getPosition().y()); +} + +void GridGameListView::updateInfoPanel() +{ + FileData* file = (mGrid.size() == 0 || mGrid.isScrolling()) ? NULL : mGrid.getSelected(); + + bool fadingOut; + if(file == NULL) + { + mVideo->setVideo(""); + mVideo->setImage(""); + mVideoPlaying = false; + + //mDescription.setText(""); + fadingOut = true; + }else{ + if (!mVideo->setVideo(file->getVideoPath())) + { + mVideo->setDefaultVideo(); + } + mVideoPlaying = true; + + mVideo->setImage(file->getThumbnailPath()); + mMarquee.setImage(file->getMarqueePath()); + mImage.setImage(file->getImagePath()); + + mDescription.setText(file->metadata.get("desc")); + mDescContainer.reset(); + + mRating.setValue(file->metadata.get("rating")); + mReleaseDate.setValue(file->metadata.get("releasedate")); + mDeveloper.setValue(file->metadata.get("developer")); + mPublisher.setValue(file->metadata.get("publisher")); + mGenre.setValue(file->metadata.get("genre")); + mPlayers.setValue(file->metadata.get("players")); + mName.setValue(file->metadata.get("name")); + + if(file->getType() == GAME) + { + mLastPlayed.setValue(file->metadata.get("lastplayed")); + mPlayCount.setValue(file->metadata.get("playcount")); + } + + fadingOut = false; + } + + std::vector comps = getMDValues(); + comps.push_back(&mDescription); + comps.push_back(&mName); + comps.push_back(&mMarquee); + comps.push_back(mVideo); + comps.push_back(&mImage); + std::vector labels = getMDLabels(); + comps.insert(comps.cend(), labels.cbegin(), labels.cend()); + + for(auto it = comps.cbegin(); it != comps.cend(); it++) { - mGrid.add((*it)->getName(), (*it)->getThumbnailPath(), *it); + GuiComponent* comp = *it; + // an animation is playing + // then animate if reverse != fadingOut + // an animation is not playing + // then animate if opacity != our target opacity + if((comp->isAnimationPlaying(0) && comp->isAnimationReversed(0) != fadingOut) || + (!comp->isAnimationPlaying(0) && comp->getOpacity() != (fadingOut ? 0 : 255))) + { + auto func = [comp](float t) + { + comp->setOpacity((unsigned char)(Math::lerp(0.0f, 1.0f, t)*255)); + }; + comp->setAnimation(new LambdaAnimation(func, 150), 0, nullptr, fadingOut); + } } } +void GridGameListView::addPlaceholder() +{ + // empty grid - add a placeholder + FileData* placeholder = new FileData(PLACEHOLDER, "", this->mRoot->getSystem()->getSystemEnvData(), this->mRoot->getSystem()); + mGrid.add(placeholder->getName(), "", placeholder); +} + void GridGameListView::launch(FileData* game) { - ViewController::get()->launch(game); + float screenWidth = (float) Renderer::getScreenWidth(); + float screenHeight = (float) Renderer::getScreenHeight(); + + Vector3f target(screenWidth / 2.0f, screenHeight / 2.0f, 0); + + if(mMarquee.hasImage() && + (mMarquee.getPosition().x() < screenWidth && mMarquee.getPosition().x() > 0.0f && + mMarquee.getPosition().y() < screenHeight && mMarquee.getPosition().y() > 0.0f)) + { + target = Vector3f(mMarquee.getCenter().x(), mMarquee.getCenter().y(), 0); + } + else if(mImage.hasImage() && + (mImage.getPosition().x() < screenWidth && mImage.getPosition().x() > 2.0f && + mImage.getPosition().y() < screenHeight && mImage.getPosition().y() > 2.0f)) + { + target = Vector3f(mImage.getCenter().x(), mImage.getCenter().y(), 0); + } + else if(mVideo->getPosition().x() < screenWidth && mVideo->getPosition().x() > 0.0f && + mVideo->getPosition().y() < screenHeight && mVideo->getPosition().y() > 0.0f) + { + target = Vector3f(mVideo->getCenter().x(), mVideo->getCenter().y(), 0); + } + + ViewController::get()->launch(game, target); + +} + +void GridGameListView::remove(FileData *game, bool deleteFile, bool refreshView) +{ + if (deleteFile) + Utils::FileSystem::removeFile(game->getPath()); // actually delete the file on the filesystem + FileData* parent = game->getParent(); + if (getCursor() == game) // Select next element in list, or prev if none + { + std::vector siblings = parent->getChildrenListToDisplay(); + auto gameIter = std::find(siblings.cbegin(), siblings.cend(), game); + int gamePos = (int)std::distance(siblings.cbegin(), gameIter); + if (gameIter != siblings.cend()) + { + if ((gamePos + 1) < (int)siblings.size()) + { + setCursor(siblings.at(gamePos + 1)); + } else if ((gamePos - 1) > 0) { + setCursor(siblings.at(gamePos - 1)); + } + } + } + mGrid.remove(game); + if(mGrid.size() == 0) + { + addPlaceholder(); + } + delete game; // remove before repopulating (removes from parent) + + if(refreshView) + onFileChanged(parent, FILE_REMOVED); // update the view, with game removed +} + +std::vector GridGameListView::getMDLabels() +{ + std::vector ret; + ret.push_back(&mLblRating); + ret.push_back(&mLblReleaseDate); + ret.push_back(&mLblDeveloper); + ret.push_back(&mLblPublisher); + ret.push_back(&mLblGenre); + ret.push_back(&mLblPlayers); + ret.push_back(&mLblLastPlayed); + ret.push_back(&mLblPlayCount); + return ret; +} + +std::vector GridGameListView::getMDValues() +{ + std::vector ret; + ret.push_back(&mRating); + ret.push_back(&mReleaseDate); + ret.push_back(&mDeveloper); + ret.push_back(&mPublisher); + ret.push_back(&mGenre); + ret.push_back(&mPlayers); + ret.push_back(&mLastPlayed); + ret.push_back(&mPlayCount); + return ret; } std::vector GridGameListView::getHelpPrompts() { std::vector prompts; - prompts.push_back(HelpPrompt("up/down/left/right", "scroll")); + + if(Settings::getInstance()->getBool("QuickSystemSelect")) + prompts.push_back(HelpPrompt("lr", "system")); + prompts.push_back(HelpPrompt("up/down/left/right", "choose")); prompts.push_back(HelpPrompt("a", "launch")); prompts.push_back(HelpPrompt("b", "back")); + if(!UIModeController::getInstance()->isUIModeKid()) + prompts.push_back(HelpPrompt("select", "options")); + if(mRoot->getSystem()->isGameSystem()) + prompts.push_back(HelpPrompt("x", "random")); + if(mRoot->getSystem()->isGameSystem() && !UIModeController::getInstance()->isUIModeKid()) + { + std::string prompt = CollectionSystemManager::get()->getEditingCollection(); + prompts.push_back(HelpPrompt("y", prompt)); + } return prompts; } + +void GridGameListView::update(int deltaTime) +{ + ISimpleGameListView::update(deltaTime); + mVideo->update(deltaTime); +} + +void GridGameListView::onShow() +{ + GuiComponent::onShow(); + updateInfoPanel(); +} + +void GridGameListView::onFocusLost() { + mDescContainer.reset(); +} diff --git a/es-app/src/views/gamelist/GridGameListView.h b/es-app/src/views/gamelist/GridGameListView.h index 81bf455850..7239afffb7 100644 --- a/es-app/src/views/gamelist/GridGameListView.h +++ b/es-app/src/views/gamelist/GridGameListView.h @@ -1,29 +1,76 @@ #pragma once +#ifndef ES_APP_VIEWS_GAME_LIST_GRID_GAME_LIST_VIEW_H +#define ES_APP_VIEWS_GAME_LIST_GRID_GAME_LIST_VIEW_H -#include "views/gamelist/ISimpleGameListView.h" +#include "components/DateTimeComponent.h" +#include "components/RatingComponent.h" +#include "components/ScrollableContainer.h" #include "components/ImageGridComponent.h" -#include "components/ImageComponent.h" -#include +#include "components/VideoComponent.h" +#include "views/gamelist/ISimpleGameListView.h" class GridGameListView : public ISimpleGameListView { public: GridGameListView(Window* window, FileData* root); + virtual ~GridGameListView(); - //virtual void onThemeChanged(const std::shared_ptr& theme) override; + virtual void onShow() override; + + virtual void onThemeChanged(const std::shared_ptr& theme) override; virtual FileData* getCursor() override; - virtual void setCursor(FileData*) override; + virtual void setCursor(FileData*, bool refreshListCursorPos = false) override; + virtual void setViewportTop(int index) override { ; } + virtual int getViewportTop() override { return -1; } virtual bool input(InputConfig* config, Input input) override; virtual const char* getName() const override { return "grid"; } virtual std::vector getHelpPrompts() override; + virtual void launch(FileData* game) override; + + void onFocusLost(void) override; protected: + virtual void update(int deltaTime) override; + virtual std::string getQuickSystemSelectRightButton() override; + virtual std::string getQuickSystemSelectLeftButton() override; virtual void populateList(const std::vector& files) override; - virtual void launch(FileData* game) override; + virtual void remove(FileData* game, bool deleteFile, bool refreshView=true) override; + virtual void addPlaceholder(); ImageGridComponent mGrid; + +private: + void updateInfoPanel(); + const std::string getImagePath(FileData* file); + + void initMDLabels(); + void initMDValues(); + + TextComponent mLblRating, mLblReleaseDate, mLblDeveloper, mLblPublisher, mLblGenre, mLblPlayers, mLblLastPlayed, mLblPlayCount; + + ImageComponent mMarquee; + VideoComponent* mVideo; + bool mVideoPlaying; + ImageComponent mImage; + RatingComponent mRating; + DateTimeComponent mReleaseDate; + TextComponent mDeveloper; + TextComponent mPublisher; + TextComponent mGenre; + TextComponent mPlayers; + DateTimeComponent mLastPlayed; + TextComponent mPlayCount; + TextComponent mName; + + std::vector getMDLabels(); + std::vector getMDValues(); + + ScrollableContainer mDescContainer; + TextComponent mDescription; }; + +#endif // ES_APP_VIEWS_GAME_LIST_GRID_GAME_LIST_VIEW_H diff --git a/es-app/src/views/gamelist/IGameListView.cpp b/es-app/src/views/gamelist/IGameListView.cpp index 69799cdd90..4b48bdd372 100644 --- a/es-app/src/views/gamelist/IGameListView.cpp +++ b/es-app/src/views/gamelist/IGameListView.cpp @@ -1,24 +1,22 @@ #include "views/gamelist/IGameListView.h" -#include "Window.h" -#include "guis/GuiMetaDataEd.h" -#include "guis/GuiMenu.h" + #include "guis/GuiGamelistOptions.h" +#include "views/UIModeController.h" #include "views/ViewController.h" -#include "Settings.h" -#include "Log.h" #include "Sound.h" +#include "Window.h" bool IGameListView::input(InputConfig* config, Input input) { // select to open GuiGamelistOptions - if(config->isMappedTo("select", input) && input.value) + if(!UIModeController::getInstance()->isUIModeKid() && config->isMappedTo("select", input) && input.value) { Sound::getFromTheme(mTheme, getName(), "menuOpen")->play(); mWindow->pushGui(new GuiGamelistOptions(mWindow, this->mRoot->getSystem())); return true; // Ctrl-R to reload a view when debugging - }else if(Settings::getInstance()->getBool("Debug") && config->getDeviceId() == DEVICE_KEYBOARD && + }else if(Settings::getInstance()->getBool("Debug") && config->getDeviceId() == DEVICE_KEYBOARD && (SDL_GetModState() & (KMOD_LCTRL | KMOD_RCTRL)) && input.id == SDLK_r && input.value != 0) { LOG(LogDebug) << "reloading view"; @@ -41,3 +39,18 @@ HelpStyle IGameListView::getHelpStyle() style.applyTheme(mTheme, getName()); return style; } + +void IGameListView::render(const Transform4x4f& parentTrans) +{ + Transform4x4f trans = parentTrans * getTransform(); + + float scaleX = trans.r0().x(); + float scaleY = trans.r1().y(); + + Vector2i pos((int)Math::round(trans.translation()[0]), (int)Math::round(trans.translation()[1])); + Vector2i size((int)Math::round(mSize.x() * scaleX), (int)Math::round(mSize.y() * scaleY)); + + Renderer::pushClipRect(pos, size); + renderChildren(trans); + Renderer::popClipRect(); +} diff --git a/es-app/src/views/gamelist/IGameListView.h b/es-app/src/views/gamelist/IGameListView.h index 6f9ef054d4..be50d2bd51 100644 --- a/es-app/src/views/gamelist/IGameListView.h +++ b/es-app/src/views/gamelist/IGameListView.h @@ -1,12 +1,13 @@ #pragma once +#ifndef ES_APP_VIEWS_GAME_LIST_IGAME_LIST_VIEW_H +#define ES_APP_VIEWS_GAME_LIST_IGAME_LIST_VIEW_H +#include "renderers/Renderer.h" #include "FileData.h" -#include "Renderer.h" +#include "GuiComponent.h" -class Window; -class GuiComponent; -class FileData; class ThemeData; +class Window; // This is an interface that defines the minimum for a GameListView. class IGameListView : public GuiComponent @@ -21,7 +22,7 @@ class IGameListView : public GuiComponent // NOTE: FILE_SORTED is only reported for the topmost FileData, where the sort started. // Since sorts are recursive, that FileData's children probably changed too. virtual void onFileChanged(FileData* file, FileChangeType change) = 0; - + // Called whenever the theme changes. virtual void onThemeChanged(const std::shared_ptr& theme) = 0; @@ -29,14 +30,25 @@ class IGameListView : public GuiComponent inline const std::shared_ptr& getTheme() const { return mTheme; } virtual FileData* getCursor() = 0; - virtual void setCursor(FileData*) = 0; + // if flag is true then the cursor position on the visible gamelist section on screen is recalculated + // used only in list based views and only to be set true when there is no previous navigation to a game + // see also: TextListComponent.REFRESH_LIST_CURSOR_POS for the use 'true' flag + virtual void setCursor(FileData*, bool refreshListCursorPos = false) = 0; + virtual int getViewportTop() = 0; + virtual void setViewportTop(int index) = 0; virtual bool input(InputConfig* config, Input input) override; + virtual void remove(FileData* game, bool deleteFile, bool refreshView=true) = 0; virtual const char* getName() const = 0; + virtual void launch(FileData* game) = 0; virtual HelpStyle getHelpStyle() override; + + void render(const Transform4x4f& parentTrans) override; protected: FileData* mRoot; std::shared_ptr mTheme; }; + +#endif // ES_APP_VIEWS_GAME_LIST_IGAME_LIST_VIEW_H diff --git a/es-app/src/views/gamelist/ISimpleGameListView.cpp b/es-app/src/views/gamelist/ISimpleGameListView.cpp index dd6df5b634..c81ff0502f 100644 --- a/es-app/src/views/gamelist/ISimpleGameListView.cpp +++ b/es-app/src/views/gamelist/ISimpleGameListView.cpp @@ -1,27 +1,32 @@ #include "views/gamelist/ISimpleGameListView.h" -#include "ThemeData.h" -#include "Window.h" + +#include "views/UIModeController.h" #include "views/ViewController.h" -#include "Sound.h" +#include "CollectionSystemManager.h" +#include "Scripting.h" #include "Settings.h" +#include "Sound.h" +#include "SystemData.h" ISimpleGameListView::ISimpleGameListView(Window* window, FileData* root) : IGameListView(window, root), - mHeaderText(window), mHeaderImage(window), mBackground(window), mThemeExtras(window) + mHeaderText(window), mHeaderImage(window), mBackground(window) { mHeaderText.setText("Logo Text"); mHeaderText.setSize(mSize.x(), 0); mHeaderText.setPosition(0, 0); - mHeaderText.setAlignment(ALIGN_CENTER); - + mHeaderText.setHorizontalAlignment(ALIGN_CENTER); + mHeaderText.setDefaultZIndex(50); + mHeaderImage.setResize(0, mSize.y() * 0.185f); mHeaderImage.setOrigin(0.5f, 0.0f); mHeaderImage.setPosition(mSize.x() / 2, 0); + mHeaderImage.setDefaultZIndex(50); mBackground.setResize(mSize.x(), mSize.y()); + mBackground.setDefaultZIndex(0); addChild(&mHeaderText); addChild(&mBackground); - addChild(&mThemeExtras); } void ISimpleGameListView::onThemeChanged(const std::shared_ptr& theme) @@ -30,7 +35,21 @@ void ISimpleGameListView::onThemeChanged(const std::shared_ptr& theme mBackground.applyTheme(theme, getName(), "background", ALL); mHeaderImage.applyTheme(theme, getName(), "logo", ALL); mHeaderText.applyTheme(theme, getName(), "logoText", ALL); - mThemeExtras.setExtras(ThemeData::makeExtras(theme, getName(), mWindow)); + + // Remove old theme extras + for (auto extra : mThemeExtras) + { + removeChild(extra); + delete extra; + } + mThemeExtras.clear(); + + // Add new theme extras + mThemeExtras = ThemeData::makeExtras(theme, getName(), mWindow); + for (auto extra : mThemeExtras) + { + addChild(extra); + } if(mHeaderImage.hasImage()) { @@ -42,13 +61,20 @@ void ISimpleGameListView::onThemeChanged(const std::shared_ptr& theme } } -void ISimpleGameListView::onFileChanged(FileData* file, FileChangeType change) +void ISimpleGameListView::onFileChanged(FileData* /*file*/, FileChangeType /*change*/) { // we could be tricky here to be efficient; // but this shouldn't happen very often so we'll just always repopulate FileData* cursor = getCursor(); - populateList(cursor->getParent()->getChildren()); - setCursor(cursor); + if (!cursor->isPlaceHolder()) { + populateList(cursor->getParent()->getChildrenListToDisplay()); + setCursor(cursor); + } + else + { + populateList(mRoot->getChildrenListToDisplay()); + setCursor(cursor); + } } bool ISimpleGameListView::input(InputConfig* config, Input input) @@ -67,26 +93,33 @@ bool ISimpleGameListView::input(InputConfig* config, Input input) if(cursor->getChildren().size() > 0) { mCursorStack.push(cursor); - populateList(cursor->getChildren()); + populateList(cursor->getChildrenListToDisplay()); + FileData* cursor = getCursor(); + setCursor(cursor); } } - + return true; }else if(config->isMappedTo("b", input)) { if(mCursorStack.size()) { - populateList(mCursorStack.top()->getParent()->getChildren()); + populateList(mCursorStack.top()->getParent()->getChildrenListToDisplay()); setCursor(mCursorStack.top()); mCursorStack.pop(); Sound::getFromTheme(getTheme(), getName(), "back")->play(); }else{ onFocusLost(); - ViewController::get()->goToSystemView(getCursor()->getSystem()); + SystemData* systemToView = getCursor()->getSystem(); + if (systemToView->isCollection()) + { + systemToView = CollectionSystemManager::get()->getSystemToView(systemToView); + } + ViewController::get()->goToSystemView(systemToView); } return true; - }else if(config->isMappedTo("right", input)) + }else if(config->isMappedLike(getQuickSystemSelectRightButton(), input)) { if(Settings::getInstance()->getBool("QuickSystemSelect")) { @@ -94,7 +127,7 @@ bool ISimpleGameListView::input(InputConfig* config, Input input) ViewController::get()->goToNextGameList(); return true; } - }else if(config->isMappedTo("left", input)) + }else if(config->isMappedLike(getQuickSystemSelectLeftButton(), input)) { if(Settings::getInstance()->getBool("QuickSystemSelect")) { @@ -102,8 +135,38 @@ bool ISimpleGameListView::input(InputConfig* config, Input input) ViewController::get()->goToPrevGameList(); return true; } + }else if (config->isMappedTo("x", input)) + { + if (mRoot->getSystem()->isGameSystem()) + { + // go to random system game + FileData* randomGame = getCursor()->getSystem()->getRandomGame(); + if (randomGame) + { + setCursor(randomGame); + } + return true; + } + }else if (config->isMappedTo("y", input) && !UIModeController::getInstance()->isUIModeKid()) + { + if(mRoot->getSystem()->isGameSystem()) + { + if (CollectionSystemManager::get()->toggleGameInCollection(getCursor())) + { + return true; + } + } } } + FileData* cursor = getCursor(); + SystemData* system = this->mRoot->getSystem(); + if (system != NULL) { + Scripting::fireEvent("game-select", system->getName(), cursor->getPath(), cursor->getName(), "input"); + } + else + { + Scripting::fireEvent("game-select", "NULL", "NULL", "NULL", "input"); + } return IGameListView::input(config, input); -} +} \ No newline at end of file diff --git a/es-app/src/views/gamelist/ISimpleGameListView.h b/es-app/src/views/gamelist/ISimpleGameListView.h index 9022cde73e..bf8544a54d 100644 --- a/es-app/src/views/gamelist/ISimpleGameListView.h +++ b/es-app/src/views/gamelist/ISimpleGameListView.h @@ -1,9 +1,12 @@ -#pragma once -#include "views/gamelist/IGameListView.h" +#pragma once +#ifndef ES_APP_VIEWS_GAME_LIST_ISIMPLE_GAME_LIST_VIEW_H +#define ES_APP_VIEWS_GAME_LIST_ISIMPLE_GAME_LIST_VIEW_H -#include "components/TextComponent.h" #include "components/ImageComponent.h" +#include "components/TextComponent.h" +#include "views/gamelist/IGameListView.h" +#include class ISimpleGameListView : public IGameListView { @@ -14,25 +17,33 @@ class ISimpleGameListView : public IGameListView // Called when a new file is added, a file is removed, a file's metadata changes, or a file's children are sorted. // NOTE: FILE_SORTED is only reported for the topmost FileData, where the sort started. // Since sorts are recursive, that FileData's children probably changed too. - virtual void onFileChanged(FileData* file, FileChangeType change); - + virtual void onFileChanged(FileData* file, FileChangeType change) override; + // Called whenever the theme changes. - virtual void onThemeChanged(const std::shared_ptr& theme); + virtual void onThemeChanged(const std::shared_ptr& theme) override; - virtual FileData* getCursor() = 0; - virtual void setCursor(FileData*) = 0; + virtual FileData* getCursor() override = 0; + virtual void setCursor(FileData*, bool refreshListCursorPos = false) override = 0; + virtual int getViewportTop() override = 0; + virtual void setViewportTop(int index) override = 0; virtual bool input(InputConfig* config, Input input) override; + virtual void launch(FileData* game) override = 0; protected: + static const int DESCRIPTION_SCROLL_DELAY = 5 * 1000; // five secs + + virtual std::string getQuickSystemSelectRightButton() = 0; + virtual std::string getQuickSystemSelectLeftButton() = 0; virtual void populateList(const std::vector& files) = 0; - virtual void launch(FileData* game) = 0; TextComponent mHeaderText; ImageComponent mHeaderImage; ImageComponent mBackground; - - ThemeExtras mThemeExtras; + + std::vector mThemeExtras; std::stack mCursorStack; }; + +#endif // ES_APP_VIEWS_GAME_LIST_ISIMPLE_GAME_LIST_VIEW_H diff --git a/es-app/src/views/gamelist/VideoGameListView.cpp b/es-app/src/views/gamelist/VideoGameListView.cpp new file mode 100644 index 0000000000..e26715c774 --- /dev/null +++ b/es-app/src/views/gamelist/VideoGameListView.cpp @@ -0,0 +1,405 @@ +#include "views/gamelist/VideoGameListView.h" + +#include "animations/LambdaAnimation.h" +#ifdef _OMX_ +#include "components/VideoPlayerComponent.h" +#endif +#include "components/VideoVlcComponent.h" +#include "utils/FileSystemUtil.h" +#include "views/ViewController.h" +#ifdef _OMX_ +#include "Settings.h" +#endif + +VideoGameListView::VideoGameListView(Window* window, FileData* root) : + BasicGameListView(window, root), + mDescContainer(window, DESCRIPTION_SCROLL_DELAY), mDescription(window), + mThumbnail(window), + mMarquee(window), + mImage(window), + mVideo(nullptr), + mVideoPlaying(false), + + mLblRating(window), mLblReleaseDate(window), mLblDeveloper(window), mLblPublisher(window), + mLblGenre(window), mLblPlayers(window), mLblLastPlayed(window), mLblPlayCount(window), + + mRating(window), mReleaseDate(window), mDeveloper(window), mPublisher(window), + mGenre(window), mPlayers(window), mLastPlayed(window), mPlayCount(window), + mName(window) +{ + const float padding = 0.01f; + + // Create the correct type of video window +#ifdef _OMX_ + Utils::FileSystem::removeFile(getTitlePath()); + if (Settings::getInstance()->getBool("VideoOmxPlayer")) + mVideo = new VideoPlayerComponent(window, ""); + else + mVideo = new VideoVlcComponent(window, getTitlePath()); +#else + mVideo = new VideoVlcComponent(window, getTitlePath()); +#endif + + mList.setPosition(mSize.x() * (0.50f + padding), mList.getPosition().y()); + mList.setSize(mSize.x() * (0.50f - padding), mList.getSize().y()); + mList.setAlignment(TextListComponent::ALIGN_LEFT); + mList.setCursorChangedCallback([&](const CursorState& /*state*/) { updateInfoPanel(); }); + + // Image + // Default to off the screen + mImage.setOrigin(0.5f, 0.5f); + mImage.setPosition(2.0f, 2.0f); + mImage.setMaxSize(mSize.x(), mSize.y()); + mImage.setDefaultZIndex(30); + mImage.setVisible(false); + addChild(&mImage); + + // Video + mVideo->setOrigin(0.5f, 0.5f); + mVideo->setPosition(mSize.x() * 0.25f, mSize.y() * 0.4f); + mVideo->setSize(mSize.x() * (0.5f - 2*padding), mSize.y() * 0.4f); + mVideo->setDefaultZIndex(30); + addChild(mVideo); + + // Thumbnail + // Default to off the screen + mThumbnail.setOrigin(0.5f, 0.5f); + mThumbnail.setPosition(2.0f, 2.0f); + mThumbnail.setMaxSize(mSize.x(), mSize.y()); + mThumbnail.setDefaultZIndex(35); + mThumbnail.setVisible(false); + addChild(&mThumbnail); + + // Marquee + // Default to off the screen + mMarquee.setOrigin(0.5f, 0.5f); + mMarquee.setPosition(2.0f, 2.0f); + mMarquee.setMaxSize(mSize.x(), mSize.y()); + mMarquee.setDefaultZIndex(35); + mImage.setVisible(false); + addChild(&mMarquee); + + // metadata labels + values + mLblRating.setText("Rating: "); + addChild(&mLblRating); + addChild(&mRating); + mLblReleaseDate.setText("Released: "); + addChild(&mLblReleaseDate); + addChild(&mReleaseDate); + mLblDeveloper.setText("Developer: "); + addChild(&mLblDeveloper); + addChild(&mDeveloper); + mLblPublisher.setText("Publisher: "); + addChild(&mLblPublisher); + addChild(&mPublisher); + mLblGenre.setText("Genre: "); + addChild(&mLblGenre); + addChild(&mGenre); + mLblPlayers.setText("Players: "); + addChild(&mLblPlayers); + addChild(&mPlayers); + mLblLastPlayed.setText("Last played: "); + addChild(&mLblLastPlayed); + mLastPlayed.setDisplayRelative(true); + addChild(&mLastPlayed); + mLblPlayCount.setText("Times played: "); + addChild(&mLblPlayCount); + addChild(&mPlayCount); + + mName.setPosition(mSize.x(), mSize.y()); + mName.setDefaultZIndex(40); + mName.setColor(0xAAAAAAFF); + mName.setFont(Font::get(FONT_SIZE_MEDIUM)); + mName.setHorizontalAlignment(ALIGN_CENTER); + addChild(&mName); + + mDescContainer.setPosition(mSize.x() * padding, mSize.y() * 0.65f); + mDescContainer.setSize(mSize.x() * (0.50f - 2*padding), mSize.y() - mDescContainer.getPosition().y()); + mDescContainer.setAutoScroll(true); + mDescContainer.setDefaultZIndex(40); + addChild(&mDescContainer); + + mDescription.setFont(Font::get(FONT_SIZE_SMALL)); + mDescription.setSize(mDescContainer.getSize().x(), 0); + mDescContainer.addChild(&mDescription); + + initMDLabels(); + initMDValues(); +} + +VideoGameListView::~VideoGameListView() +{ + delete mVideo; +} + +void VideoGameListView::onThemeChanged(const std::shared_ptr& theme) +{ + BasicGameListView::onThemeChanged(theme); + + using namespace ThemeFlags; + mThumbnail.applyTheme(theme, getName(), "md_thumbnail", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION | VISIBLE); + mMarquee.applyTheme(theme, getName(), "md_marquee", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION | VISIBLE); + mImage.applyTheme(theme, getName(), "md_image", POSITION | ThemeFlags::SIZE | Z_INDEX | ROTATION | VISIBLE); + mVideo->applyTheme(theme, getName(), "md_video", POSITION | ThemeFlags::SIZE | ThemeFlags::DELAY | Z_INDEX | ROTATION | VISIBLE); + mName.applyTheme(theme, getName(), "md_name", ALL); + + initMDLabels(); + std::vector labels = getMDLabels(); + assert(labels.size() == 8); + const char* lblElements[8] = { + "md_lbl_rating", "md_lbl_releasedate", "md_lbl_developer", "md_lbl_publisher", + "md_lbl_genre", "md_lbl_players", "md_lbl_lastplayed", "md_lbl_playcount" + }; + + for(unsigned int i = 0; i < labels.size(); i++) + { + labels[i]->applyTheme(theme, getName(), lblElements[i], ALL); + } + + + initMDValues(); + std::vector values = getMDValues(); + assert(values.size() == 8); + const char* valElements[8] = { + "md_rating", "md_releasedate", "md_developer", "md_publisher", + "md_genre", "md_players", "md_lastplayed", "md_playcount" + }; + + for(unsigned int i = 0; i < values.size(); i++) + { + values[i]->applyTheme(theme, getName(), valElements[i], ALL ^ ThemeFlags::TEXT); + } + + mDescContainer.applyTheme(theme, getName(), "md_description", POSITION | ThemeFlags::SIZE | Z_INDEX | VISIBLE); + mDescription.setSize(mDescContainer.getSize().x(), 0); + mDescription.applyTheme(theme, getName(), "md_description", ALL ^ (POSITION | ThemeFlags::SIZE | ThemeFlags::ORIGIN | TEXT | ROTATION)); + + sortChildren(); +} + +void VideoGameListView::initMDLabels() +{ + std::vector components = getMDLabels(); + + const unsigned int colCount = 2; + const unsigned int rowCount = (int)(components.size() / 2); + + Vector3f start(mSize.x() * 0.01f, mSize.y() * 0.625f, 0.0f); + + const float colSize = (mSize.x() * 0.48f) / colCount; + const float rowPadding = 0.01f * mSize.y(); + + for(unsigned int i = 0; i < components.size(); i++) + { + const unsigned int row = i % rowCount; + Vector3f pos(0.0f, 0.0f, 0.0f); + if(row == 0) + { + pos = start + Vector3f(colSize * (i / rowCount), 0, 0); + }else{ + // work from the last component + GuiComponent* lc = components[i-1]; + pos = lc->getPosition() + Vector3f(0, lc->getSize().y() + rowPadding, 0); + } + + components[i]->setFont(Font::get(FONT_SIZE_SMALL)); + components[i]->setPosition(pos); + components[i]->setDefaultZIndex(40); + } +} + +void VideoGameListView::initMDValues() +{ + std::vector labels = getMDLabels(); + std::vector values = getMDValues(); + + std::shared_ptr defaultFont = Font::get(FONT_SIZE_SMALL); + mRating.setSize(defaultFont->getHeight() * 5.0f, (float)defaultFont->getHeight()); + mReleaseDate.setFont(defaultFont); + mDeveloper.setFont(defaultFont); + mPublisher.setFont(defaultFont); + mGenre.setFont(defaultFont); + mPlayers.setFont(defaultFont); + mLastPlayed.setFont(defaultFont); + mPlayCount.setFont(defaultFont); + + float bottom = 0.0f; + + const float colSize = (mSize.x() * 0.48f) / 2; + for(unsigned int i = 0; i < labels.size(); i++) + { + const float heightDiff = (labels[i]->getSize().y() - values[i]->getSize().y()) / 2; + values[i]->setPosition(labels[i]->getPosition() + Vector3f(labels[i]->getSize().x(), heightDiff, 0)); + values[i]->setSize(colSize - labels[i]->getSize().x(), values[i]->getSize().y()); + values[i]->setDefaultZIndex(40); + + float testBot = values[i]->getPosition().y() + values[i]->getSize().y(); + if(testBot > bottom) + bottom = testBot; + } + + mDescContainer.setPosition(mDescContainer.getPosition().x(), bottom + mSize.y() * 0.01f); + mDescContainer.setSize(mDescContainer.getSize().x(), mSize.y() - mDescContainer.getPosition().y()); +} + + + +void VideoGameListView::updateInfoPanel() +{ + FileData* file = (mList.size() == 0 || mList.isScrolling()) ? NULL : mList.getSelected(); + + bool fadingOut; + if(file == NULL) + { + mVideo->setVideo(""); + mVideo->setImage(""); + mVideoPlaying = false; + //mMarquee.setImage(""); + //mDescription.setText(""); + fadingOut = true; + + }else{ + if (!mVideo->setVideo(file->getVideoPath())) + { + mVideo->setDefaultVideo(); + } + mVideoPlaying = true; + + mVideo->setImage(file->getThumbnailPath()); + mThumbnail.setImage(file->getThumbnailPath()); + mMarquee.setImage(file->getMarqueePath()); + mImage.setImage(file->getImagePath()); + + mDescription.setText(file->metadata.get("desc")); + mDescContainer.reset(); + + mRating.setValue(file->metadata.get("rating")); + mReleaseDate.setValue(file->metadata.get("releasedate")); + mDeveloper.setValue(file->metadata.get("developer")); + mPublisher.setValue(file->metadata.get("publisher")); + mGenre.setValue(file->metadata.get("genre")); + mPlayers.setValue(file->metadata.get("players")); + mName.setValue(file->metadata.get("name")); + + if(file->getType() == GAME) + { + mLastPlayed.setValue(file->metadata.get("lastplayed")); + mPlayCount.setValue(file->metadata.get("playcount")); + } + + fadingOut = false; + } + + std::vector comps = getMDValues(); + comps.push_back(&mThumbnail); + comps.push_back(&mMarquee); + comps.push_back(mVideo); + comps.push_back(&mDescription); + comps.push_back(&mImage); + comps.push_back(&mName); + std::vector labels = getMDLabels(); + comps.insert(comps.cend(), labels.cbegin(), labels.cend()); + + for(auto it = comps.cbegin(); it != comps.cend(); it++) + { + GuiComponent* comp = *it; + // an animation is playing + // then animate if reverse != fadingOut + // an animation is not playing + // then animate if opacity != our target opacity + if((comp->isAnimationPlaying(0) && comp->isAnimationReversed(0) != fadingOut) || + (!comp->isAnimationPlaying(0) && comp->getOpacity() != (fadingOut ? 0 : 255))) + { + auto func = [comp](float t) + { + comp->setOpacity((unsigned char)(Math::lerp(0.0f, 1.0f, t)*255)); + }; + comp->setAnimation(new LambdaAnimation(func, 150), 0, nullptr, fadingOut); + } + } +} + +void VideoGameListView::launch(FileData* game) +{ + float screenWidth = (float) Renderer::getScreenWidth(); + float screenHeight = (float) Renderer::getScreenHeight(); + + Vector3f target(screenWidth / 2.0f, screenHeight / 2.0f, 0); + + if(mMarquee.hasImage() && + (mMarquee.getPosition().x() < screenWidth && mMarquee.getPosition().x() > 0.0f && + mMarquee.getPosition().y() < screenHeight && mMarquee.getPosition().y() > 0.0f)) + { + target = Vector3f(mMarquee.getCenter().x(), mMarquee.getCenter().y(), 0); + } + else if(mThumbnail.hasImage() && + (mThumbnail.getPosition().x() < screenWidth && mThumbnail.getPosition().x() > 2.0f && + mThumbnail.getPosition().y() < screenHeight && mThumbnail.getPosition().y() > 2.0f)) + { + target = Vector3f(mThumbnail.getCenter().x(), mThumbnail.getCenter().y(), 0); + } + else if(mImage.hasImage() && + (mImage.getPosition().x() < screenWidth && mImage.getPosition().x() > 2.0f && + mImage.getPosition().y() < screenHeight && mImage.getPosition().y() > 2.0f)) + { + target = Vector3f(mImage.getCenter().x(), mImage.getCenter().y(), 0); + } + else if(mHeaderImage.hasImage() && + (mHeaderImage.getPosition().x() < screenWidth && mHeaderImage.getPosition().x() > 0.0f && + mHeaderImage.getPosition().y() < screenHeight && mHeaderImage.getPosition().y() > 0.0f)) + { + target = Vector3f(mHeaderImage.getCenter().x(), mHeaderImage.getCenter().y(), 0); + } + else if(mVideo->getPosition().x() < screenWidth && mVideo->getPosition().x() > 0.0f && + mVideo->getPosition().y() < screenHeight && mVideo->getPosition().y() > 0.0f) + { + target = Vector3f(mVideo->getCenter().x(), mVideo->getCenter().y(), 0); + } + + ViewController::get()->launch(game, target); +} + +std::vector VideoGameListView::getMDLabels() +{ + std::vector ret; + ret.push_back(&mLblRating); + ret.push_back(&mLblReleaseDate); + ret.push_back(&mLblDeveloper); + ret.push_back(&mLblPublisher); + ret.push_back(&mLblGenre); + ret.push_back(&mLblPlayers); + ret.push_back(&mLblLastPlayed); + ret.push_back(&mLblPlayCount); + return ret; +} + +std::vector VideoGameListView::getMDValues() +{ + std::vector ret; + ret.push_back(&mRating); + ret.push_back(&mReleaseDate); + ret.push_back(&mDeveloper); + ret.push_back(&mPublisher); + ret.push_back(&mGenre); + ret.push_back(&mPlayers); + ret.push_back(&mLastPlayed); + ret.push_back(&mPlayCount); + return ret; +} + +void VideoGameListView::update(int deltaTime) +{ + BasicGameListView::update(deltaTime); + mVideo->update(deltaTime); +} + +void VideoGameListView::onShow() +{ + GuiComponent::onShow(); + updateInfoPanel(); +} + +void VideoGameListView::onFocusLost() { + mDescContainer.reset(); + mList.stopScrolling(true); +} diff --git a/es-app/src/views/gamelist/VideoGameListView.h b/es-app/src/views/gamelist/VideoGameListView.h new file mode 100644 index 0000000000..b5f36c6277 --- /dev/null +++ b/es-app/src/views/gamelist/VideoGameListView.h @@ -0,0 +1,63 @@ +#pragma once +#ifndef ES_APP_VIEWS_GAME_LIST_VIDEO_GAME_LIST_VIEW_H +#define ES_APP_VIEWS_GAME_LIST_VIDEO_GAME_LIST_VIEW_H + +#include "components/DateTimeComponent.h" +#include "components/RatingComponent.h" +#include "components/ScrollableContainer.h" +#include "views/gamelist/BasicGameListView.h" + +class VideoComponent; + +class VideoGameListView : public BasicGameListView +{ +public: + VideoGameListView(Window* window, FileData* root); + virtual ~VideoGameListView(); + + virtual void onShow() override; + + virtual void onThemeChanged(const std::shared_ptr& theme) override; + + virtual const char* getName() const override { return "video"; } + virtual void launch(FileData* game) override; + + void onFocusLost(void) override; + +protected: + virtual void update(int deltaTime) override; + +private: + void updateInfoPanel(); + + void initMDLabels(); + void initMDValues(); + + ImageComponent mThumbnail; + ImageComponent mMarquee; + VideoComponent* mVideo; + ImageComponent mImage; + + TextComponent mLblRating, mLblReleaseDate, mLblDeveloper, mLblPublisher, mLblGenre, mLblPlayers, mLblLastPlayed, mLblPlayCount; + + RatingComponent mRating; + DateTimeComponent mReleaseDate; + TextComponent mDeveloper; + TextComponent mPublisher; + TextComponent mGenre; + TextComponent mPlayers; + DateTimeComponent mLastPlayed; + TextComponent mPlayCount; + TextComponent mName; + + std::vector getMDLabels(); + std::vector getMDValues(); + + ScrollableContainer mDescContainer; + TextComponent mDescription; + + bool mVideoPlaying; + +}; + +#endif // ES_APP_VIEWS_GAME_LIST_VIDEO_GAME_LIST_VIEW_H diff --git a/es-core/CMakeLists.txt b/es-core/CMakeLists.txt index 5a13b6e8df..c22459fd7c 100644 --- a/es-core/CMakeLists.txt +++ b/es-core/CMakeLists.txt @@ -3,6 +3,7 @@ project("core") set(CORE_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/AsyncHandle.h ${CMAKE_CURRENT_SOURCE_DIR}/src/AudioManager.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/CECInput.h ${CMAKE_CURRENT_SOURCE_DIR}/src/GuiComponent.h ${CMAKE_CURRENT_SOURCE_DIR}/src/HelpStyle.h ${CMAKE_CURRENT_SOURCE_DIR}/src/HttpReq.h @@ -10,12 +11,12 @@ set(CORE_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/InputConfig.h ${CMAKE_CURRENT_SOURCE_DIR}/src/InputManager.h ${CMAKE_CURRENT_SOURCE_DIR}/src/Log.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/MameNames.h ${CMAKE_CURRENT_SOURCE_DIR}/src/platform.h - ${CMAKE_CURRENT_SOURCE_DIR}/src/Renderer.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/PowerSaver.h ${CMAKE_CURRENT_SOURCE_DIR}/src/Settings.h ${CMAKE_CURRENT_SOURCE_DIR}/src/Sound.h ${CMAKE_CURRENT_SOURCE_DIR}/src/ThemeData.h - ${CMAKE_CURRENT_SOURCE_DIR}/src/Util.h ${CMAKE_CURRENT_SOURCE_DIR}/src/Window.h # Animations @@ -30,7 +31,9 @@ set(CORE_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ComponentGrid.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ComponentList.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/DateTimeComponent.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/DateTimeEditComponent.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/HelpComponent.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/GridTileComponent.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/IList.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ImageComponent.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ImageGridComponent.h @@ -42,6 +45,9 @@ set(CORE_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/components/SwitchComponent.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/TextComponent.h ${CMAKE_CURRENT_SOURCE_DIR}/src/components/TextEditComponent.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/VideoComponent.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/VideoPlayerComponent.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/VideoVlcComponent.h # Guis ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiDetectDevice.h @@ -49,18 +55,35 @@ set(CORE_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiMsgBox.h ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiTextEditPopup.h + # Math + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Misc.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Transform4x4f.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Vector2f.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Vector2i.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Vector3f.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Vector4f.h + + # Renderers + ${CMAKE_CURRENT_SOURCE_DIR}/src/renderers/Renderer.h + # Resources ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/Font.h ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/ResourceManager.h - ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/SVGResource.h ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/TextureResource.h - - # Embedded assets (needed by ResourceManager) - ${emulationstation-all_SOURCE_DIR}/data/Resources.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/TextureData.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/TextureDataManager.h + + # Utils + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/FileSystemUtil.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/ProfilingUtil.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/StringUtil.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/ThreadPool.h + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/TimeUtil.h ) set(CORE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/AudioManager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/CECInput.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/GuiComponent.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/HelpStyle.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/HttpReq.cpp @@ -68,13 +91,13 @@ set(CORE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/InputConfig.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/InputManager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Log.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/MameNames.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/platform.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/Renderer_draw_gl.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/Renderer_init_sdlgl.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/PowerSaver.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/Scripting.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Settings.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Sound.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/ThemeData.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/Util.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/Window.cpp # Animations @@ -87,7 +110,9 @@ set(CORE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ComponentGrid.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ComponentList.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/DateTimeComponent.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/DateTimeEditComponent.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/HelpComponent.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/GridTileComponent.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/ImageComponent.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/MenuComponent.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/NinePatchComponent.cpp @@ -96,6 +121,9 @@ set(CORE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/components/SwitchComponent.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/TextComponent.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/components/TextEditComponent.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/VideoComponent.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/VideoPlayerComponent.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/components/VideoVlcComponent.cpp # Guis ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiDetectDevice.cpp @@ -103,62 +131,36 @@ set(CORE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiMsgBox.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/guis/GuiTextEditPopup.cpp + # Math + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Misc.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Transform4x4f.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Vector2f.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Vector2i.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Vector3f.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/math/Vector4f.cpp + + # Renderer + ${CMAKE_CURRENT_SOURCE_DIR}/src/renderers/Renderer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/renderers/Renderer_GL14.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/renderers/Renderer_GL21.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/renderers/Renderer_GLES10.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/renderers/Renderer_GLES20.cpp + # Resources ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/Font.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/ResourceManager.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/SVGResource.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/TextureResource.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/TextureData.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/resources/TextureDataManager.cpp + + # Utils + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/FileSystemUtil.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/ProfilingUtil.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/StringUtil.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/ThreadPool.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/TimeUtil.cpp ) -set(EMBEDDED_ASSET_SOURCES - ${emulationstation-all_SOURCE_DIR}/data/ResourceUtil.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/splash_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/window_icon_256_png.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/button_png.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/button_filled_png.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/textinput_ninepatch_png.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/textinput_ninepatch_active_png.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/frame_png.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/scroll_gradient_png.cpp - - ${emulationstation-all_SOURCE_DIR}/data/converted/help_button_a_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_button_b_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_button_x_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_button_y_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_button_l_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_button_r_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_button_start_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_button_select_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_dpad_up_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_dpad_down_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_dpad_left_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_dpad_right_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_dpad_updown_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_dpad_leftright_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/help_dpad_all_svg.cpp - - ${emulationstation-all_SOURCE_DIR}/data/converted/opensans_hebrew_condensed_regular_ttf.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/opensans_hebrew_condensed_light_ttf.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/arrow_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/option_arrow_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/checkbox_checked_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/checkbox_unchecked_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/star_filled_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/star_unfilled_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/on_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/off_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/fav_add_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/fav_remove_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/slider_knob_svg.cpp - - ${emulationstation-all_SOURCE_DIR}/data/converted/busy_0_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/busy_1_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/busy_2_svg.cpp - ${emulationstation-all_SOURCE_DIR}/data/converted/busy_3_svg.cpp -) - -list(APPEND CORE_SOURCES ${EMBEDDED_ASSET_SOURCES}) - include_directories(${COMMON_INCLUDE_DIRS}) add_library(es-core STATIC ${CORE_SOURCES} ${CORE_HEADERS}) target_link_libraries(es-core ${COMMON_LIBRARIES}) diff --git a/es-core/src/AsyncHandle.h b/es-core/src/AsyncHandle.h index 7f2e26667d..65ffb5317a 100644 --- a/es-core/src/AsyncHandle.h +++ b/es-core/src/AsyncHandle.h @@ -1,4 +1,8 @@ #pragma once +#ifndef ES_CORE_ASYNC_HANDLE_H +#define ES_CORE_ASYNC_HANDLE_H + +#include enum AsyncHandleStatus { @@ -42,3 +46,5 @@ class AsyncHandle std::string mError; AsyncHandleStatus mStatus; }; + +#endif // ES_CORE_ASYNC_HANDLE_H diff --git a/es-core/src/AudioManager.cpp b/es-core/src/AudioManager.cpp index c75d3c4caa..1d0f8ac495 100644 --- a/es-core/src/AudioManager.cpp +++ b/es-core/src/AudioManager.cpp @@ -1,14 +1,16 @@ #include "AudioManager.h" -#include #include "Log.h" +#include "Settings.h" +#include "Sound.h" +#include std::vector> AudioManager::sSoundVector; SDL_AudioSpec AudioManager::sAudioFormat; std::shared_ptr AudioManager::sInstance; -void AudioManager::mixAudio(void *unused, Uint8 *stream, int len) +void AudioManager::mixAudio(void* /*unused*/, Uint8 *stream, int len) { bool stillPlaying = false; @@ -62,7 +64,7 @@ AudioManager::~AudioManager() std::shared_ptr & AudioManager::getInstance() { //check if an AudioManager instance is already created, if not create one - if (sInstance == nullptr) { + if (sInstance == nullptr && Settings::getInstance()->getBool("EnableSounds")) { sInstance = std::shared_ptr(new AudioManager); } return sInstance; @@ -89,7 +91,7 @@ void AudioManager::init() sAudioFormat.freq = 44100; sAudioFormat.format = AUDIO_S16; sAudioFormat.channels = 2; - sAudioFormat.samples = 1024; + sAudioFormat.samples = 4096; sAudioFormat.callback = mixAudio; sAudioFormat.userdata = NULL; @@ -106,6 +108,7 @@ void AudioManager::deinit() //completely tear down SDL audio. else SDL hogs audio resources and emulators might fail to start... SDL_CloseAudio(); SDL_QuitSubSystem(SDL_INIT_AUDIO); + sInstance = NULL; } void AudioManager::registerSound(std::shared_ptr & sound) @@ -122,7 +125,7 @@ void AudioManager::unregisterSound(std::shared_ptr & sound) if(sSoundVector.at(i) == sound) { sSoundVector[i]->stop(); - sSoundVector.erase(sSoundVector.begin() + i); + sSoundVector.erase(sSoundVector.cbegin() + i); return; } } diff --git a/es-core/src/AudioManager.h b/es-core/src/AudioManager.h index 37b6d9f7b2..e27ce1dc2e 100644 --- a/es-core/src/AudioManager.h +++ b/es-core/src/AudioManager.h @@ -1,13 +1,12 @@ -#ifndef _AUDIOMANAGER_H_ -#define _AUDIOMANAGER_H_ +#pragma once +#ifndef ES_CORE_AUDIO_MANAGER_H +#define ES_CORE_AUDIO_MANAGER_H -#include +#include #include +#include -#include "SDL_audio.h" - -#include "Sound.h" - +class Sound; class AudioManager { @@ -34,4 +33,4 @@ class AudioManager virtual ~AudioManager(); }; -#endif +#endif // ES_CORE_AUDIO_MANAGER_H diff --git a/es-core/src/CECInput.cpp b/es-core/src/CECInput.cpp new file mode 100644 index 0000000000..1de55facf9 --- /dev/null +++ b/es-core/src/CECInput.cpp @@ -0,0 +1,376 @@ +#include "CECInput.h" + +#ifdef HAVE_LIBCEC +#include "Log.h" +#include +#include // bad bad cecloader +#include +#include +#ifdef _RPI_ +extern "C" { +#include +#include +#include +} +#endif // _RPI_ +#endif // HAVE_LIBCEC + +// hack for cec support +extern int SDL_USER_CECBUTTONDOWN; +extern int SDL_USER_CECBUTTONUP; + +CECInput* CECInput::sInstance = nullptr; + +#ifdef HAVE_LIBCEC +static void onAlert(void* /*cbParam*/, const CEC::libcec_alert type, const CEC::libcec_parameter param) +{ + LOG(LogDebug) << "CECInput::onAlert type: " << CECInput::getAlertTypeString(type) << " parameter: " << (char*)(param.paramData); + +} // onAlert + +static void onCommand(void* /*cbParam*/, const CEC::cec_command* command) +{ + LOG(LogDebug) << "CECInput::onCommand opcode: " << CECInput::getOpCodeString(command->opcode); + +} // onCommand + +static void onKeyPress(void* /*cbParam*/, const CEC::cec_keypress* key) +{ + LOG(LogDebug) << "CECInput::onKeyPress keycode: " << CECInput::getKeyCodeString(key->keycode); + + SDL_Event event; + event.type = (key->duration > 0) ? SDL_USER_CECBUTTONUP : SDL_USER_CECBUTTONDOWN; + event.user.code = key->keycode; + SDL_PushEvent(&event); + +} // onKeyPress + +static void onLogMessage(void* /*cbParam*/, const CEC::cec_log_message* message) +{ + LOG(LogDebug) << "CECInput::onLogMessage message: " << message->message; + +} // onLogMessage + +#ifdef _RPI_ +static void vchi_tv_and_cec_init() +{ + VCHI_INSTANCE_T vchi_instance; + VCHI_CONNECTION_T* vchi_connection; + vc_host_get_vchi_state(&vchi_instance, &vchi_connection); + + vc_vchi_tv_init(vchi_instance, &vchi_connection, 1); + vc_vchi_cec_init(vchi_instance, &vchi_connection, 1); + +} // vchi_tv_and_cec_init + +static void vchi_tv_and_cec_deinit() +{ + vc_vchi_cec_stop(); + vc_vchi_tv_stop(); + +} // vchi_tv_and_cec_deinit +#endif // _RPI_ +#endif // HAVE_LIBCEC + +void CECInput::init() +{ + if(!sInstance) + sInstance = new CECInput(); + +} // init + +void CECInput::deinit() +{ + if(sInstance) + { + delete sInstance; + sInstance = nullptr; + } + +} // deinit + +CECInput::CECInput() : mlibCEC(nullptr) +{ + +#ifdef HAVE_LIBCEC +#ifdef _RPI_ + // restart vchi tv and cec in case we just came back from another app using cec (like Kodi) + vchi_tv_and_cec_deinit(); + vchi_tv_and_cec_init(); +#endif // _RPI_ + + CEC::ICECCallbacks callbacks; + CEC::libcec_configuration config; + callbacks.Clear(); + config.Clear(); + + callbacks.alert = &onAlert; + callbacks.commandReceived = &onCommand; + callbacks.keyPress = &onKeyPress; + callbacks.logMessage = &onLogMessage; + + sprintf(config.strDeviceName, "RetroPie ES"); + config.clientVersion = CEC::LIBCEC_VERSION_CURRENT; + config.bActivateSource = 0; + config.callbacks = &callbacks; + config.deviceTypes.Add(CEC::CEC_DEVICE_TYPE_PLAYBACK_DEVICE); + + mlibCEC = LibCecInitialise(&config); + + if(!mlibCEC) + { + LOG(LogError) << "CECInput::LibCecInitialise failed"; + return; + } + + CEC::cec_adapter_descriptor adapters[10]; + int numAdapters = mlibCEC->DetectAdapters(adapters, 10, nullptr, true); + + if(numAdapters <= 0) + { + LOG(LogError) << "CECInput::mAdapter->DetectAdapters failed"; + UnloadLibCec(mlibCEC); + mlibCEC = nullptr; + return; + } + + for(int i = 0; i < numAdapters; ++i) + LOG(LogDebug) << "CEC adapter: " << i << " path: " << adapters[i].strComPath << " name: " << adapters[i].strComName; + + if(!mlibCEC->Open(adapters[0].strComName)) + { + LOG(LogError) << "CECInput::mAdapter->Open failed"; + UnloadLibCec(mlibCEC); + mlibCEC = nullptr; + return; + } +#endif // HAVE_LIBCEC + +} // CECInput + +CECInput::~CECInput() +{ + +#ifdef HAVE_LIBCEC + if(mlibCEC) + { + mlibCEC->Close(); + UnloadLibCec(mlibCEC); + mlibCEC = nullptr; + } + +#ifdef _RPI_ + // deinit vchi tv and cec in case we are going to launch another app using cec (like Kodi) + vchi_tv_and_cec_deinit(); +#endif // _RPI_ +#endif // HAVE_LIBCEC + +} // ~CECInput + +std::string CECInput::getAlertTypeString(const unsigned int _type) +{ + switch(_type) + { + +#ifdef HAVE_LIBCEC + case CEC::CEC_ALERT_SERVICE_DEVICE: { return "Service-Device"; } break; + case CEC::CEC_ALERT_CONNECTION_LOST: { return "Connection-Lost"; } break; + case CEC::CEC_ALERT_PERMISSION_ERROR: { return "Permission-Error"; } break; + case CEC::CEC_ALERT_PORT_BUSY: { return "Port-Busy"; } break; + case CEC::CEC_ALERT_PHYSICAL_ADDRESS_ERROR: { return "Physical-Address-Error"; } break; + case CEC::CEC_ALERT_TV_POLL_FAILED: { return "TV-Poll-Failed"; } break; +#else // HAVE_LIBCEC + case 0: +#endif // HAVE_LIBCEC + + default: { return "Unknown"; } break; + } + +} // getAlertTypeString + +std::string CECInput::getOpCodeString(const unsigned int _opCode) +{ + switch(_opCode) + { + +#ifdef HAVE_LIBCEC + case CEC::CEC_OPCODE_ACTIVE_SOURCE: { return "Active-Source"; } break; + case CEC::CEC_OPCODE_IMAGE_VIEW_ON: { return "Image-View-On"; } break; + case CEC::CEC_OPCODE_TEXT_VIEW_ON: { return "Text-View-On"; } break; + case CEC::CEC_OPCODE_INACTIVE_SOURCE: { return "Inactive-Source"; } break; + case CEC::CEC_OPCODE_REQUEST_ACTIVE_SOURCE: { return "Request-Active-Source"; } break; + case CEC::CEC_OPCODE_ROUTING_CHANGE: { return "Routing-Change"; } break; + case CEC::CEC_OPCODE_ROUTING_INFORMATION: { return "Routing-Information"; } break; + case CEC::CEC_OPCODE_SET_STREAM_PATH: { return "Set-Stream-Path"; } break; + case CEC::CEC_OPCODE_STANDBY: { return "Standby"; } break; + case CEC::CEC_OPCODE_RECORD_OFF: { return "Record-Off"; } break; + case CEC::CEC_OPCODE_RECORD_ON: { return "Record-On"; } break; + case CEC::CEC_OPCODE_RECORD_STATUS: { return "Record-Status"; } break; + case CEC::CEC_OPCODE_RECORD_TV_SCREEN: { return "Record-TV-Screen"; } break; + case CEC::CEC_OPCODE_CLEAR_ANALOGUE_TIMER: { return "Clear-Analogue-Timer"; } break; + case CEC::CEC_OPCODE_CLEAR_DIGITAL_TIMER: { return "Clear-Digital-Timer"; } break; + case CEC::CEC_OPCODE_CLEAR_EXTERNAL_TIMER: { return "Clear-External-Timer"; } break; + case CEC::CEC_OPCODE_SET_ANALOGUE_TIMER: { return "Set-Analogue-Timer"; } break; + case CEC::CEC_OPCODE_SET_DIGITAL_TIMER: { return "Set-Digital-Timer"; } break; + case CEC::CEC_OPCODE_SET_EXTERNAL_TIMER: { return "Set-External-Timer"; } break; + case CEC::CEC_OPCODE_SET_TIMER_PROGRAM_TITLE: { return "Set-Timer-Program-Title"; } break; + case CEC::CEC_OPCODE_TIMER_CLEARED_STATUS: { return "Timer-Cleared-Status"; } break; + case CEC::CEC_OPCODE_TIMER_STATUS: { return "Timer-Status"; } break; + case CEC::CEC_OPCODE_CEC_VERSION: { return "CEC-Version"; } break; + case CEC::CEC_OPCODE_GET_CEC_VERSION: { return "Get-CEC-Version"; } break; + case CEC::CEC_OPCODE_GIVE_PHYSICAL_ADDRESS: { return "Give-Physical-Address"; } break; + case CEC::CEC_OPCODE_GET_MENU_LANGUAGE: { return "Get-Menu-Language"; } break; + case CEC::CEC_OPCODE_REPORT_PHYSICAL_ADDRESS: { return "Report-Physical-Address"; } break; + case CEC::CEC_OPCODE_SET_MENU_LANGUAGE: { return "Set-Menu-Language"; } break; + case CEC::CEC_OPCODE_DECK_CONTROL: { return "Deck-Control"; } break; + case CEC::CEC_OPCODE_DECK_STATUS: { return "Deck-Status"; } break; + case CEC::CEC_OPCODE_GIVE_DECK_STATUS: { return "Give-Deck-Status"; } break; + case CEC::CEC_OPCODE_PLAY: { return "Play"; } break; + case CEC::CEC_OPCODE_GIVE_TUNER_DEVICE_STATUS: { return "Give-Tuner-Device-Status"; } break; + case CEC::CEC_OPCODE_SELECT_ANALOGUE_SERVICE: { return "Select-Analogue-Service"; } break; + case CEC::CEC_OPCODE_SELECT_DIGITAL_SERVICE: { return "Select-Digital-Service"; } break; + case CEC::CEC_OPCODE_TUNER_DEVICE_STATUS: { return "Tuner-Device-Status"; } break; + case CEC::CEC_OPCODE_TUNER_STEP_DECREMENT: { return "Tuner-Step-Decrement"; } break; + case CEC::CEC_OPCODE_TUNER_STEP_INCREMENT: { return "Tuner-Step-Increment"; } break; + case CEC::CEC_OPCODE_DEVICE_VENDOR_ID: { return "Device-Vendor-ID"; } break; + case CEC::CEC_OPCODE_GIVE_DEVICE_VENDOR_ID: { return "Give-Device-Vendor-ID"; } break; + case CEC::CEC_OPCODE_VENDOR_COMMAND: { return "Vendor-Command"; } break; + case CEC::CEC_OPCODE_VENDOR_COMMAND_WITH_ID: { return "Vendor-Command-With-ID"; } break; + case CEC::CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN: { return "Vendor-Remote-Button-Down"; } break; + case CEC::CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP: { return "Vendor-Remote-Button-Up"; } break; + case CEC::CEC_OPCODE_SET_OSD_STRING: { return "Set-OSD-String"; } break; + case CEC::CEC_OPCODE_GIVE_OSD_NAME: { return "Give-OSD-Name"; } break; + case CEC::CEC_OPCODE_SET_OSD_NAME: { return "Set-OSD-Name"; } break; + case CEC::CEC_OPCODE_MENU_REQUEST: { return "Menu-Request"; } break; + case CEC::CEC_OPCODE_MENU_STATUS: { return "Menu-Status"; } break; + case CEC::CEC_OPCODE_USER_CONTROL_PRESSED: { return "User-Control-Pressed"; } break; + case CEC::CEC_OPCODE_USER_CONTROL_RELEASE: { return "User-Control-Release"; } break; + case CEC::CEC_OPCODE_GIVE_DEVICE_POWER_STATUS: { return "Give-Device-Power-Status"; } break; + case CEC::CEC_OPCODE_REPORT_POWER_STATUS: { return "Report-Power-Status"; } break; + case CEC::CEC_OPCODE_FEATURE_ABORT: { return "Feature-Abort"; } break; + case CEC::CEC_OPCODE_ABORT: { return "Abort"; } break; + case CEC::CEC_OPCODE_GIVE_AUDIO_STATUS: { return "Give-Audio-Status"; } break; + case CEC::CEC_OPCODE_GIVE_SYSTEM_AUDIO_MODE_STATUS: { return "Give-System-Audio-Mode-Status"; } break; + case CEC::CEC_OPCODE_REPORT_AUDIO_STATUS: { return "Report-Audio-Status"; } break; + case CEC::CEC_OPCODE_SET_SYSTEM_AUDIO_MODE: { return "Set-System-Audio-Mode"; } break; + case CEC::CEC_OPCODE_SYSTEM_AUDIO_MODE_REQUEST: { return "System-Audio-Mode-Request"; } break; + case CEC::CEC_OPCODE_SYSTEM_AUDIO_MODE_STATUS: { return "System-Audio-Mode-Status"; } break; + case CEC::CEC_OPCODE_SET_AUDIO_RATE: { return "Set-Audio-Rate"; } break; + case CEC::CEC_OPCODE_START_ARC: { return "Start-Arc"; } break; + case CEC::CEC_OPCODE_REPORT_ARC_STARTED: { return "Report-Arc-Started"; } break; + case CEC::CEC_OPCODE_REPORT_ARC_ENDED: { return "Report-Arc-Ended"; } break; + case CEC::CEC_OPCODE_REQUEST_ARC_START: { return "Request-Arc-Start"; } break; + case CEC::CEC_OPCODE_REQUEST_ARC_END: { return "Request-Arc-End"; } break; + case CEC::CEC_OPCODE_END_ARC: { return "End-Arc"; } break; + case CEC::CEC_OPCODE_CDC: { return "CDC"; } break; + case CEC::CEC_OPCODE_NONE: { return "None"; } break; +#else // HAVE_LIBCEC + case 0: +#endif // HAVE_LIBCEC + + default: { return "Unknown"; } break; + } + +} // getOpCodeString + +std::string CECInput::getKeyCodeString(const unsigned int _keyCode) +{ + switch(_keyCode) + { + +#ifdef HAVE_LIBCEC + case CEC::CEC_USER_CONTROL_CODE_SELECT: { return "Select"; } break; + case CEC::CEC_USER_CONTROL_CODE_UP: { return "Up"; } break; + case CEC::CEC_USER_CONTROL_CODE_DOWN: { return "Down"; } break; + case CEC::CEC_USER_CONTROL_CODE_LEFT: { return "Left"; } break; + case CEC::CEC_USER_CONTROL_CODE_RIGHT: { return "Right"; } break; + case CEC::CEC_USER_CONTROL_CODE_RIGHT_UP: { return "Right-Up"; } break; + case CEC::CEC_USER_CONTROL_CODE_RIGHT_DOWN: { return "Right-Down"; } break; + case CEC::CEC_USER_CONTROL_CODE_LEFT_UP: { return "Left-Up"; } break; + case CEC::CEC_USER_CONTROL_CODE_LEFT_DOWN: { return "Left-Down"; } break; + case CEC::CEC_USER_CONTROL_CODE_ROOT_MENU: { return "Root-Menu"; } break; + case CEC::CEC_USER_CONTROL_CODE_SETUP_MENU: { return "Setup-Menu"; } break; + case CEC::CEC_USER_CONTROL_CODE_CONTENTS_MENU: { return "Contents-Menu"; } break; + case CEC::CEC_USER_CONTROL_CODE_FAVORITE_MENU: { return "Favorite-Menu"; } break; + case CEC::CEC_USER_CONTROL_CODE_EXIT: { return "Exit"; } break; + case CEC::CEC_USER_CONTROL_CODE_TOP_MENU: { return "Top-Menu"; } break; + case CEC::CEC_USER_CONTROL_CODE_DVD_MENU: { return "DVD-Menu"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER_ENTRY_MODE: { return "Number-Entry-Mode"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER11: { return "Number11"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER12: { return "Number12"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER0: { return "Number0"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER1: { return "Number1"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER2: { return "Number2"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER3: { return "Number3"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER4: { return "Number4"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER5: { return "Number5"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER6: { return "Number6"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER7: { return "Number7"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER8: { return "Number8"; } break; + case CEC::CEC_USER_CONTROL_CODE_NUMBER9: { return "Number9"; } break; + case CEC::CEC_USER_CONTROL_CODE_DOT: { return "Dot"; } break; + case CEC::CEC_USER_CONTROL_CODE_ENTER: { return "Enter"; } break; + case CEC::CEC_USER_CONTROL_CODE_CLEAR: { return "Clear"; } break; + case CEC::CEC_USER_CONTROL_CODE_NEXT_FAVORITE: { return "Next-Favorite"; } break; + case CEC::CEC_USER_CONTROL_CODE_CHANNEL_UP: { return "Channel-Up"; } break; + case CEC::CEC_USER_CONTROL_CODE_CHANNEL_DOWN: { return "Channel-Down"; } break; + case CEC::CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL: { return "Previous-Channel"; } break; + case CEC::CEC_USER_CONTROL_CODE_SOUND_SELECT: { return "Sound-Select"; } break; + case CEC::CEC_USER_CONTROL_CODE_INPUT_SELECT: { return "Input-Select"; } break; + case CEC::CEC_USER_CONTROL_CODE_DISPLAY_INFORMATION: { return "Display-Information"; } break; + case CEC::CEC_USER_CONTROL_CODE_HELP: { return "Help"; } break; + case CEC::CEC_USER_CONTROL_CODE_PAGE_UP: { return "Page-Up"; } break; + case CEC::CEC_USER_CONTROL_CODE_PAGE_DOWN: { return "Page-Down"; } break; + case CEC::CEC_USER_CONTROL_CODE_POWER: { return "Power"; } break; + case CEC::CEC_USER_CONTROL_CODE_VOLUME_UP: { return "Volume-Up"; } break; + case CEC::CEC_USER_CONTROL_CODE_VOLUME_DOWN: { return "Volume-Down"; } break; + case CEC::CEC_USER_CONTROL_CODE_MUTE: { return "Mute"; } break; + case CEC::CEC_USER_CONTROL_CODE_PLAY: { return "Play"; } break; + case CEC::CEC_USER_CONTROL_CODE_STOP: { return "Stop"; } break; + case CEC::CEC_USER_CONTROL_CODE_PAUSE: { return "Pause"; } break; + case CEC::CEC_USER_CONTROL_CODE_RECORD: { return "Record"; } break; + case CEC::CEC_USER_CONTROL_CODE_REWIND: { return "Rewind"; } break; + case CEC::CEC_USER_CONTROL_CODE_FAST_FORWARD: { return "Fast-Forward"; } break; + case CEC::CEC_USER_CONTROL_CODE_EJECT: { return "Eject"; } break; + case CEC::CEC_USER_CONTROL_CODE_FORWARD: { return "Forward"; } break; + case CEC::CEC_USER_CONTROL_CODE_BACKWARD: { return "Backward"; } break; + case CEC::CEC_USER_CONTROL_CODE_STOP_RECORD: { return "Stop-Record"; } break; + case CEC::CEC_USER_CONTROL_CODE_PAUSE_RECORD: { return "Pause-Record"; } break; + case CEC::CEC_USER_CONTROL_CODE_ANGLE: { return "Angle"; } break; + case CEC::CEC_USER_CONTROL_CODE_SUB_PICTURE: { return "Sub-Picture"; } break; + case CEC::CEC_USER_CONTROL_CODE_VIDEO_ON_DEMAND: { return "Video-On-Demand"; } break; + case CEC::CEC_USER_CONTROL_CODE_ELECTRONIC_PROGRAM_GUIDE: { return "Electronic-Program-Guide"; } break; + case CEC::CEC_USER_CONTROL_CODE_TIMER_PROGRAMMING: { return "Timer-Programming"; } break; + case CEC::CEC_USER_CONTROL_CODE_INITIAL_CONFIGURATION: { return "Initial-Configuration"; } break; + case CEC::CEC_USER_CONTROL_CODE_SELECT_BROADCAST_TYPE: { return "Select-Broadcast-Type"; } break; + case CEC::CEC_USER_CONTROL_CODE_SELECT_SOUND_PRESENTATION: { return "Select-Sound-Presentation"; } break; + case CEC::CEC_USER_CONTROL_CODE_PLAY_FUNCTION: { return "Play-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_PAUSE_PLAY_FUNCTION: { return "Pause-Play-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_RECORD_FUNCTION: { return "Record-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_PAUSE_RECORD_FUNCTION: { return "Pause-Record-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_STOP_FUNCTION: { return "Stop-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_MUTE_FUNCTION: { return "Mute-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_RESTORE_VOLUME_FUNCTION: { return "Restore-Volume-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_TUNE_FUNCTION: { return "Tune-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_SELECT_MEDIA_FUNCTION: { return "Select-Media-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_SELECT_AV_INPUT_FUNCTION: { return "Select-AV-Input-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_SELECT_AUDIO_INPUT_FUNCTION: { return "Select-Audio-Input-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_POWER_TOGGLE_FUNCTION: { return "Power-Toggle-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_POWER_OFF_FUNCTION: { return "Power-Off-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_POWER_ON_FUNCTION: { return "Power-On-Function"; } break; + case CEC::CEC_USER_CONTROL_CODE_F1_BLUE: { return "F1-Blue"; } break; + case CEC::CEC_USER_CONTROL_CODE_F2_RED: { return "F2-Red"; } break; + case CEC::CEC_USER_CONTROL_CODE_F3_GREEN: { return "F3-Green"; } break; + case CEC::CEC_USER_CONTROL_CODE_F4_YELLOW: { return "F4-Yellow"; } break; + case CEC::CEC_USER_CONTROL_CODE_F5: { return "F5"; } break; + case CEC::CEC_USER_CONTROL_CODE_DATA: { return "Data"; } break; + case CEC::CEC_USER_CONTROL_CODE_AN_RETURN: { return "AN-Return"; } break; + case CEC::CEC_USER_CONTROL_CODE_AN_CHANNELS_LIST: { return "AN-Channels-List"; } break; +#else // HAVE_LIBCEC + case 0: +#endif // HAVE_LIBCEC + + default: { return "Unknown"; } break; + } + +} // getKeyCodeString diff --git a/es-core/src/CECInput.h b/es-core/src/CECInput.h new file mode 100644 index 0000000000..b752c50f05 --- /dev/null +++ b/es-core/src/CECInput.h @@ -0,0 +1,30 @@ +#pragma once +#ifndef ES_CORE_CECINPUT_H +#define ES_CORE_CECINPUT_H + +#include + +namespace CEC { class ICECAdapter; } + +class CECInput +{ +public: + + static void init (); + static void deinit (); + static std::string getAlertTypeString(const unsigned int _type); + static std::string getOpCodeString (const unsigned int _opCode); + static std::string getKeyCodeString (const unsigned int _keyCode); + +private: + + CECInput(); + ~CECInput(); + + static CECInput* sInstance; + + CEC::ICECAdapter* mlibCEC; + +}; // CECInput + +#endif // ES_CORE_CECINPUT_H diff --git a/es-core/src/GuiComponent.cpp b/es-core/src/GuiComponent.cpp index 2b4fbe3c13..c56fc68676 100644 --- a/es-core/src/GuiComponent.cpp +++ b/es-core/src/GuiComponent.cpp @@ -1,12 +1,16 @@ #include "GuiComponent.h" -#include "Window.h" -#include "Log.h" -#include "Renderer.h" + +#include "animations/Animation.h" #include "animations/AnimationController.h" +#include "renderers/Renderer.h" +#include "Log.h" #include "ThemeData.h" +#include "Window.h" +#include -GuiComponent::GuiComponent(Window* window) : mWindow(window), mParent(NULL), mOpacity(255), - mPosition(Eigen::Vector3f::Zero()), mSize(Eigen::Vector2f::Zero()), mTransform(Eigen::Affine3f::Identity()) +GuiComponent::GuiComponent(Window* window) : mWindow(window), mParent(NULL), mOpacity(255), + mPosition(Vector3f::Zero()), mOrigin(Vector2f::Zero()), mRotationOrigin(0.5, 0.5), + mSize(Vector2f::Zero()), mTransform(Transform4x4f::Identity()), mIsProcessing(false), mVisible(true) { for(unsigned char i = 0; i < MAX_ANIMATIONS; i++) mAnimationMap[i] = NULL; @@ -56,13 +60,16 @@ void GuiComponent::update(int deltaTime) updateChildren(deltaTime); } -void GuiComponent::render(const Eigen::Affine3f& parentTrans) +void GuiComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = parentTrans * getTransform(); + if (!isVisible()) + return; + + Transform4x4f trans = parentTrans * getTransform(); renderChildren(trans); } -void GuiComponent::renderChildren(const Eigen::Affine3f& transform) const +void GuiComponent::renderChildren(const Transform4x4f& transform) const { for(unsigned int i = 0; i < getChildCount(); i++) { @@ -70,40 +77,104 @@ void GuiComponent::renderChildren(const Eigen::Affine3f& transform) const } } -Eigen::Vector3f GuiComponent::getPosition() const +Vector3f GuiComponent::getPosition() const { return mPosition; } -void GuiComponent::setPosition(const Eigen::Vector3f& offset) +void GuiComponent::setPosition(float x, float y, float z) { - mPosition = offset; + mPosition = Vector3f(x, y, z); onPositionChanged(); } -void GuiComponent::setPosition(float x, float y, float z) +Vector2f GuiComponent::getOrigin() const { - mPosition << x, y, z; - onPositionChanged(); + return mOrigin; } -Eigen::Vector2f GuiComponent::getSize() const +void GuiComponent::setOrigin(float x, float y) { - return mSize; + mOrigin = Vector2f(x, y); + onOriginChanged(); } -void GuiComponent::setSize(const Eigen::Vector2f& size) +Vector2f GuiComponent::getRotationOrigin() const { - mSize = size; - onSizeChanged(); + return mRotationOrigin; +} + +void GuiComponent::setRotationOrigin(float x, float y) +{ + mRotationOrigin = Vector2f(x, y); +} + +Vector2f GuiComponent::getSize() const +{ + return mSize; } void GuiComponent::setSize(float w, float h) { - mSize << w, h; + mSize = Vector2f(w, h); onSizeChanged(); } +float GuiComponent::getRotation() const +{ + return mRotation; +} + +void GuiComponent::setRotation(float rotation) +{ + mRotation = rotation; +} + +float GuiComponent::getScale() const +{ + return mScale; +} + +void GuiComponent::setScale(float scale) +{ + mScale = scale; +} + +float GuiComponent::getZIndex() const +{ + return mZIndex; +} + +void GuiComponent::setZIndex(float z) +{ + mZIndex = z; +} + +float GuiComponent::getDefaultZIndex() const +{ + return mDefaultZIndex; +} + +void GuiComponent::setDefaultZIndex(float z) +{ + mDefaultZIndex = z; +} + +bool GuiComponent::isVisible() const +{ + return mVisible; +} +void GuiComponent::setVisible(bool visible) +{ + mVisible = visible; +} + +Vector2f GuiComponent::getCenter() const +{ + return Vector2f(mPosition.x() - (getSize().x() * mOrigin.x()) + getSize().x() / 2, + mPosition.y() - (getSize().y() * mOrigin.y()) + getSize().y() / 2); +} + //Children stuff. void GuiComponent::addChild(GuiComponent* cmp) { @@ -127,7 +198,7 @@ void GuiComponent::removeChild(GuiComponent* cmp) cmp->setParent(NULL); - for(auto i = mChildren.begin(); i != mChildren.end(); i++) + for(auto i = mChildren.cbegin(); i != mChildren.cend(); i++) { if(*i == cmp) { @@ -142,9 +213,16 @@ void GuiComponent::clearChildren() mChildren.clear(); } +void GuiComponent::sortChildren() +{ + std::stable_sort(mChildren.begin(), mChildren.end(), [](GuiComponent* a, GuiComponent* b) { + return b->getZIndex() > a->getZIndex(); + }); +} + unsigned int GuiComponent::getChildCount() const { - return mChildren.size(); + return (int)mChildren.size(); } GuiComponent* GuiComponent::getChild(unsigned int i) const @@ -170,20 +248,43 @@ unsigned char GuiComponent::getOpacity() const void GuiComponent::setOpacity(unsigned char opacity) { mOpacity = opacity; - for(auto it = mChildren.begin(); it != mChildren.end(); it++) + for(auto it = mChildren.cbegin(); it != mChildren.cend(); it++) { (*it)->setOpacity(opacity); } } -const Eigen::Affine3f& GuiComponent::getTransform() +const Transform4x4f& GuiComponent::getTransform() { - mTransform.setIdentity(); + mTransform = Transform4x4f::Identity(); mTransform.translate(mPosition); + if (mScale != 1.0) + { + mTransform.scale(mScale); + } + if (mRotation != 0.0) + { + // Calculate offset as difference between origin and rotation origin + Vector2f rotationSize = getRotationSize(); + float xOff = (mOrigin.x() - mRotationOrigin.x()) * rotationSize.x(); + float yOff = (mOrigin.y() - mRotationOrigin.y()) * rotationSize.y(); + + // transform to offset point + if (xOff != 0.0 || yOff != 0.0) + mTransform.translate(Vector3f(xOff * -1, yOff * -1, 0.0f)); + + // apply rotation transform + mTransform.rotateZ(mRotation); + + // Tranform back to original point + if (xOff != 0.0 || yOff != 0.0) + mTransform.translate(Vector3f(xOff, yOff, 0.0f)); + } + mTransform.translate(Vector3f(mOrigin.x() * mSize.x() * -1, mOrigin.y() * mSize.y() * -1, 0.0f)); return mTransform; } -void GuiComponent::setValue(const std::string& value) +void GuiComponent::setValue(const std::string& /*value*/) { } @@ -194,7 +295,7 @@ std::string GuiComponent::getValue() const void GuiComponent::textInput(const char* text) { - for(auto iter = mChildren.begin(); iter != mChildren.end(); iter++) + for(auto iter = mChildren.cbegin(); iter != mChildren.cend(); iter++) { (*iter)->textInput(text); } @@ -304,7 +405,7 @@ int GuiComponent::getAnimationTime(unsigned char slot) const void GuiComponent::applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) { - Eigen::Vector2f scale = getParent() ? getParent()->getSize() : Eigen::Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + Vector2f scale = getParent() ? getParent()->getSize() : Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); const ThemeData::ThemeElement* elem = theme->getElement(view, element, ""); if(!elem) @@ -313,12 +414,33 @@ void GuiComponent::applyTheme(const std::shared_ptr& theme, const std using namespace ThemeFlags; if(properties & POSITION && elem->has("pos")) { - Eigen::Vector2f denormalized = elem->get("pos").cwiseProduct(scale); - setPosition(Eigen::Vector3f(denormalized.x(), denormalized.y(), 0)); + Vector2f denormalized = elem->get("pos") * scale; + setPosition(Vector3f(denormalized.x(), denormalized.y(), 0)); } if(properties & ThemeFlags::SIZE && elem->has("size")) - setSize(elem->get("size").cwiseProduct(scale)); + setSize(elem->get("size") * scale); + + // position + size also implies origin + if((properties & ORIGIN || (properties & POSITION && properties & ThemeFlags::SIZE)) && elem->has("origin")) + setOrigin(elem->get("origin")); + + if(properties & ThemeFlags::ROTATION) { + if(elem->has("rotation")) + setRotationDegrees(elem->get("rotation")); + if(elem->has("rotationOrigin")) + setRotationOrigin(elem->get("rotationOrigin")); + } + + if(properties & ThemeFlags::Z_INDEX && elem->has("zIndex")) + setZIndex(elem->get("zIndex")); + else + setZIndex(getDefaultZIndex()); + + if(properties & ThemeFlags::VISIBLE && elem->has("visible")) + setVisible(elem->get("visible")); + else + setVisible(true); } void GuiComponent::updateHelpPrompts() @@ -339,3 +461,38 @@ HelpStyle GuiComponent::getHelpStyle() { return HelpStyle(); } + +bool GuiComponent::isProcessing() const +{ + return mIsProcessing; +} + +void GuiComponent::onShow() +{ + for(unsigned int i = 0; i < getChildCount(); i++) + getChild(i)->onShow(); +} + +void GuiComponent::onHide() +{ + for(unsigned int i = 0; i < getChildCount(); i++) + getChild(i)->onHide(); +} + +void GuiComponent::onScreenSaverActivate() +{ + for(unsigned int i = 0; i < getChildCount(); i++) + getChild(i)->onScreenSaverActivate(); +} + +void GuiComponent::onScreenSaverDeactivate() +{ + for(unsigned int i = 0; i < getChildCount(); i++) + getChild(i)->onScreenSaverDeactivate(); +} + +void GuiComponent::topWindow(bool isTop) +{ + for(unsigned int i = 0; i < getChildCount(); i++) + getChild(i)->topWindow(isTop); +} \ No newline at end of file diff --git a/es-core/src/GuiComponent.h b/es-core/src/GuiComponent.h index 0b8734a2f2..0820773897 100644 --- a/es-core/src/GuiComponent.h +++ b/es-core/src/GuiComponent.h @@ -1,17 +1,21 @@ #pragma once +#ifndef ES_CORE_GUI_COMPONENT_H +#define ES_CORE_GUI_COMPONENT_H +#include "math/Misc.h" +#include "math/Transform4x4f.h" +#include "HelpPrompt.h" +#include "HelpStyle.h" #include "InputConfig.h" +#include #include -#include -#include "HelpStyle.h" -class Window; class Animation; class AnimationController; -class ThemeData; class Font; - -typedef std::pair HelpPrompt; +class InputConfig; +class ThemeData; +class Window; class GuiComponent { @@ -30,28 +34,61 @@ class GuiComponent //Called when it's time to render. By default, just calls renderChildren(parentTrans * getTransform()). //You probably want to override this like so: - //1. Calculate the new transform that your control will draw at with Eigen::Affine3f t = parentTrans * getTransform(). + //1. Calculate the new transform that your control will draw at with Transform4x4f t = parentTrans * getTransform(). //2. Set the renderer to use that new transform as the model matrix - Renderer::setMatrix(t); //3. Draw your component. //4. Tell your children to render, based on your component's transform - renderChildren(t). - virtual void render(const Eigen::Affine3f& parentTrans); + virtual void render(const Transform4x4f& parentTrans); - Eigen::Vector3f getPosition() const; - void setPosition(const Eigen::Vector3f& offset); + Vector3f getPosition() const; + inline void setPosition(const Vector3f& offset) { setPosition(offset.x(), offset.y(), offset.z()); } void setPosition(float x, float y, float z = 0.0f); virtual void onPositionChanged() {}; - Eigen::Vector2f getSize() const; - void setSize(const Eigen::Vector2f& size); + //Sets the origin as a percentage of this image (e.g. (0, 0) is top left, (0.5, 0.5) is the center) + Vector2f getOrigin() const; + void setOrigin(float originX, float originY); + inline void setOrigin(Vector2f origin) { setOrigin(origin.x(), origin.y()); } + virtual void onOriginChanged() {}; + + //Sets the rotation origin as a percentage of this image (e.g. (0, 0) is top left, (0.5, 0.5) is the center) + Vector2f getRotationOrigin() const; + void setRotationOrigin(float originX, float originY); + inline void setRotationOrigin(Vector2f origin) { setRotationOrigin(origin.x(), origin.y()); } + + virtual Vector2f getSize() const; + inline void setSize(const Vector2f& size) { setSize(size.x(), size.y()); } void setSize(float w, float h); virtual void onSizeChanged() {}; - + + virtual Vector2f getRotationSize() const { return getSize(); }; + + float getRotation() const; + void setRotation(float rotation); + inline void setRotationDegrees(float rotation) { setRotation((float)ES_DEG_TO_RAD(rotation)); } + + float getScale() const; + void setScale(float scale); + + float getZIndex() const; + void setZIndex(float zIndex); + + float getDefaultZIndex() const; + void setDefaultZIndex(float zIndex); + + bool isVisible() const; + void setVisible(bool visible); + + // Returns the center point of the image (takes origin into account). + Vector2f getCenter() const; + void setParent(GuiComponent* parent); GuiComponent* getParent() const; void addChild(GuiComponent* cmp); void removeChild(GuiComponent* cmp); void clearChildren(); + void sortChildren(); unsigned int getChildCount() const; GuiComponent* getChild(unsigned int i) const; @@ -70,7 +107,7 @@ class GuiComponent virtual unsigned char getOpacity() const; virtual void setOpacity(unsigned char opacity); - const Eigen::Affine3f& getTransform(); + const Transform4x4f& getTransform(); virtual std::string getValue() const; virtual void setValue(const std::string& value); @@ -78,6 +115,13 @@ class GuiComponent virtual void onFocusGained() {}; virtual void onFocusLost() {}; + virtual void onShow(); + virtual void onHide(); + + virtual void onScreenSaverActivate(); + virtual void onScreenSaverDeactivate(); + virtual void topWindow(bool isTop); + // Default implementation just handles and tags as normalized float pairs. // You probably want to keep this behavior for any derived classes as well as add your own. virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties); @@ -87,11 +131,14 @@ class GuiComponent // Called whenever help prompts change. void updateHelpPrompts(); - + virtual HelpStyle getHelpStyle(); + // Returns true if the component is busy doing background processing (e.g. HTTP downloads) + bool isProcessing() const; + protected: - void renderChildren(const Eigen::Affine3f& transform) const; + void renderChildren(const Transform4x4f& transform) const; void updateSelf(int deltaTime); // updates animations void updateChildren(int deltaTime); // updates animations @@ -101,13 +148,26 @@ class GuiComponent GuiComponent* mParent; std::vector mChildren; - Eigen::Vector3f mPosition; - Eigen::Vector2f mSize; + Vector3f mPosition; + Vector2f mOrigin; + Vector2f mRotationOrigin; + Vector2f mSize; + + float mRotation = 0.0; + float mScale = 1.0; + + float mDefaultZIndex = 0; + float mZIndex = 0; + + bool mIsProcessing; + bool mVisible; public: const static unsigned char MAX_ANIMATIONS = 4; private: - Eigen::Affine3f mTransform; //Don't access this directly! Use getTransform()! + Transform4x4f mTransform; //Don't access this directly! Use getTransform()! AnimationController* mAnimationMap[MAX_ANIMATIONS]; }; + +#endif // ES_CORE_GUI_COMPONENT_H diff --git a/es-core/src/HelpPrompt.h b/es-core/src/HelpPrompt.h new file mode 100644 index 0000000000..f5145624af --- /dev/null +++ b/es-core/src/HelpPrompt.h @@ -0,0 +1,9 @@ +#pragma once +#ifndef ES_CORE_HELP_PROMPT_H +#define ES_CORE_HELP_PROMPT_H + +#include + +typedef std::pair HelpPrompt; + +#endif // ES_CORE_HELP_PROMPT_H diff --git a/es-core/src/HelpStyle.cpp b/es-core/src/HelpStyle.cpp index 59a329d7cb..3d3d4d6195 100644 --- a/es-core/src/HelpStyle.cpp +++ b/es-core/src/HelpStyle.cpp @@ -1,11 +1,11 @@ #include "HelpStyle.h" -#include "ThemeData.h" -#include "Renderer.h" + #include "resources/Font.h" HelpStyle::HelpStyle() { - position = Eigen::Vector2f(Renderer::getScreenWidth() * 0.012f, Renderer::getScreenHeight() * 0.9515f); + position = Vector2f(Renderer::getScreenWidth() * 0.012f, Renderer::getScreenHeight() * 0.9515f); + origin = Vector2f(0.0f, 0.0f); iconColor = 0x777777FF; textColor = 0x777777FF; @@ -22,7 +22,10 @@ void HelpStyle::applyTheme(const std::shared_ptr& theme, const std::s return; if(elem->has("pos")) - position = elem->get("pos").cwiseProduct(Eigen::Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight())); + position = elem->get("pos") * Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + + if(elem->has("origin")) + origin = elem->get("origin"); if(elem->has("textColor")) textColor = elem->get("textColor"); diff --git a/es-core/src/HelpStyle.h b/es-core/src/HelpStyle.h index 204c444238..8682a8d864 100644 --- a/es-core/src/HelpStyle.h +++ b/es-core/src/HelpStyle.h @@ -1,19 +1,24 @@ #pragma once +#ifndef ES_CORE_HELP_STYLE_H +#define ES_CORE_HELP_STYLE_H -#include +#include "math/Vector2f.h" #include #include -class ThemeData; class Font; +class ThemeData; struct HelpStyle { - Eigen::Vector2f position; + Vector2f position; + Vector2f origin; unsigned int iconColor; unsigned int textColor; std::shared_ptr font; HelpStyle(); // default values void applyTheme(const std::shared_ptr& theme, const std::string& view); -}; \ No newline at end of file +}; + +#endif // ES_CORE_HELP_STYLE_H diff --git a/es-core/src/HttpReq.cpp b/es-core/src/HttpReq.cpp index dfece200b9..08415f171a 100644 --- a/es-core/src/HttpReq.cpp +++ b/es-core/src/HttpReq.cpp @@ -1,7 +1,8 @@ -#include #include "HttpReq.h" + +#include "utils/FileSystemUtil.h" #include "Log.h" -#include +#include CURLM* HttpReq::s_multi_handle = curl_multi_init(); @@ -32,7 +33,7 @@ std::string HttpReq::urlEncode(const std::string &s) bool HttpReq::isUrl(const std::string& str) { //the worst guess - return (!str.empty() && !boost::filesystem::exists(str) && + return (!str.empty() && !Utils::FileSystem::exists(str) && (str.find("http://") != std::string::npos || str.find("https://") != std::string::npos || str.find("www.") != std::string::npos)); } @@ -57,6 +58,39 @@ HttpReq::HttpReq(const std::string& url) return; } + //set curl to handle redirects + err = curl_easy_setopt(mHandle, CURLOPT_FOLLOWLOCATION, 1L); + if(err != CURLE_OK) + { + mStatus = REQ_IO_ERROR; + onError(curl_easy_strerror(err)); + return; + } + + //set curl max redirects + err = curl_easy_setopt(mHandle, CURLOPT_MAXREDIRS, 2L); + if(err != CURLE_OK) + { + mStatus = REQ_IO_ERROR; + onError(curl_easy_strerror(err)); + return; + } + + //set curl restrict redirect protocols + //starting with 7.85.0, CURLOPT_REDIR_PROTOCOLS is deprecated + // and CURLOPT_REDIR_PROTOCOLS_STR should be used instead +#if CURL_AT_LEAST_VERSION(7,85,0) + err = curl_easy_setopt(mHandle, CURLOPT_REDIR_PROTOCOLS_STR, "http,https"); +#else + err = curl_easy_setopt(mHandle, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); +#endif + if(err != CURLE_OK) + { + mStatus = REQ_IO_ERROR; + onError(curl_easy_strerror(err)); + return; + } + //tell curl how to write the data err = curl_easy_setopt(mHandle, CURLOPT_WRITEFUNCTION, &HttpReq::write_content); if(err != CURLE_OK) @@ -117,12 +151,12 @@ HttpReq::Status HttpReq::status() int msgs_left; CURLMsg* msg; - while(msg = curl_multi_info_read(s_multi_handle, &msgs_left)) + while((msg = curl_multi_info_read(s_multi_handle, &msgs_left)) != nullptr) { if(msg->msg == CURLMSG_DONE) { HttpReq* req = s_requests[msg->easy_handle]; - + if(req == NULL) { LOG(LogError) << "Cannot find easy handle!"; @@ -173,5 +207,5 @@ size_t HttpReq::write_content(void* buff, size_t size, size_t nmemb, void* req_p //used as a curl callback /*int HttpReq::update_progress(void* req_ptr, double dlTotal, double dlNow, double ulTotal, double ulNow) { - + }*/ diff --git a/es-core/src/HttpReq.h b/es-core/src/HttpReq.h index 9c4f220349..f6032a3c76 100644 --- a/es-core/src/HttpReq.h +++ b/es-core/src/HttpReq.h @@ -1,14 +1,16 @@ #pragma once +#ifndef ES_CORE_HTTP_REQ_H +#define ES_CORE_HTTP_REQ_H #include -#include #include +#include /* Usage: * HttpReq myRequest("www.google.com", "/index.html"); * //for blocking behavior: while(myRequest.status() == HttpReq::REQ_IN_PROGRESS); * //for non-blocking behavior: check if(myRequest.status() != HttpReq::REQ_IN_PROGRESS) in some sort of update method - * + * * //once one of those completes, the request is ready * if(myRequest.status() != REQ_SUCCESS) * { @@ -33,7 +35,7 @@ class HttpReq REQ_IN_PROGRESS, //request is in progress REQ_SUCCESS, //request completed successfully, get it with getContent() - REQ_IO_ERROR, //some boost::asio error happened, get it with getErrorMsg() + REQ_IO_ERROR, //some error happened, get it with getErrorMsg() REQ_BAD_STATUS_CODE, //some invalid HTTP response status code happened (non-200) REQ_INVALID_RESPONSE //the HTTP response was invalid }; @@ -66,3 +68,5 @@ class HttpReq std::stringstream mContent; std::string mErrorMsg; }; + +#endif // ES_CORE_HTTP_REQ_H diff --git a/es-core/src/ImageIO.cpp b/es-core/src/ImageIO.cpp index b6b5c80675..3285308cd2 100644 --- a/es-core/src/ImageIO.cpp +++ b/es-core/src/ImageIO.cpp @@ -1,16 +1,15 @@ #include "ImageIO.h" -#include - #include "Log.h" - +#include +#include std::vector ImageIO::loadFromMemoryRGBA32(const unsigned char * data, const size_t size, size_t & width, size_t & height) { std::vector rawData; width = 0; height = 0; - FIMEMORY * fiMemory = FreeImage_OpenMemory((BYTE *)data, size); + FIMEMORY * fiMemory = FreeImage_OpenMemory((BYTE *)data, (DWORD)size); if (fiMemory != nullptr) { //detect the filetype from data FREE_IMAGE_FORMAT format = FreeImage_GetFileTypeFromMemory(fiMemory); @@ -21,7 +20,6 @@ std::vector ImageIO::loadFromMemoryRGBA32(const unsigned char * d if (fiBitmap != nullptr) { //loaded. convert to 32bit if necessary - FIBITMAP * fiConverted = nullptr; if (FreeImage_GetBPP(fiBitmap) != 32) { FIBITMAP * fiConverted = FreeImage_ConvertTo32Bits(fiBitmap); @@ -36,13 +34,12 @@ std::vector ImageIO::loadFromMemoryRGBA32(const unsigned char * d { width = FreeImage_GetWidth(fiBitmap); height = FreeImage_GetHeight(fiBitmap); - unsigned int pitch = FreeImage_GetPitch(fiBitmap); //loop through scanlines and add all pixel data to the return vector //this is necessary, because width*height*bpp might not be == pitch unsigned char * tempData = new unsigned char[width * height * 4]; for (size_t i = 0; i < height; i++) { - const BYTE * scanLine = FreeImage_GetScanLine(fiBitmap, i); + const BYTE * scanLine = FreeImage_GetScanLine(fiBitmap, (int)i); memcpy(tempData + (i * width * 4), scanLine, width * 4); } //convert from BGRA to RGBA diff --git a/es-core/src/ImageIO.h b/es-core/src/ImageIO.h index ca48d70abc..ad8ab48069 100644 --- a/es-core/src/ImageIO.h +++ b/es-core/src/ImageIO.h @@ -1,11 +1,15 @@ #pragma once +#ifndef ES_CORE_IMAGE_IO +#define ES_CORE_IMAGE_IO +#include #include -#include class ImageIO { public: static std::vector loadFromMemoryRGBA32(const unsigned char * data, const size_t size, size_t & width, size_t & height); static void flipPixelsVert(unsigned char* imagePx, const size_t& width, const size_t& height); -}; \ No newline at end of file +}; + +#endif // ES_CORE_IMAGE_IO diff --git a/es-core/src/InputConfig.cpp b/es-core/src/InputConfig.cpp index 90b2729390..56a6863b18 100644 --- a/es-core/src/InputConfig.cpp +++ b/es-core/src/InputConfig.cpp @@ -1,10 +1,8 @@ #include "InputConfig.h" -#include -#include -#include -#include + #include "Log.h" -#include "InputManager.h" +#include "utils/StringUtil.h" +#include //some util functions std::string inputTypeToString(InputType type) @@ -19,6 +17,8 @@ std::string inputTypeToString(InputType type) return "hat"; case TYPE_KEY: return "key"; + case TYPE_CEC_BUTTON: + return "cec-button"; default: return "error"; } @@ -34,23 +34,16 @@ InputType stringToInputType(const std::string& type) return TYPE_HAT; if(type == "key") return TYPE_KEY; + if(type == "cec-button") + return TYPE_CEC_BUTTON; return TYPE_COUNT; } -std::string toLower(std::string str) -{ - for(unsigned int i = 0; i < str.length(); i++) - { - str[i] = tolower(str[i]); - } - - return str; -} -//end util functions - InputConfig::InputConfig(int deviceId, const std::string& deviceName, const std::string& deviceGUID) : mDeviceId(deviceId), mDeviceName(deviceName), mDeviceGUID(deviceGUID) { + mVendorId = 0; + mProductId = 0; } void InputConfig::clear() @@ -65,20 +58,20 @@ bool InputConfig::isConfigured() void InputConfig::mapInput(const std::string& name, Input input) { - mNameMap[toLower(name)] = input; + mNameMap[Utils::String::toLower(name)] = input; } void InputConfig::unmapInput(const std::string& name) { - auto it = mNameMap.find(toLower(name)); - if(it != mNameMap.end()) + auto it = mNameMap.find(Utils::String::toLower(name)); + if(it != mNameMap.cend()) mNameMap.erase(it); } bool InputConfig::getInputByName(const std::string& name, Input* result) { - auto it = mNameMap.find(toLower(name)); - if(it != mNameMap.end()) + auto it = mNameMap.find(Utils::String::toLower(name)); + if(it != mNameMap.cend()) { *result = it->second; return true; @@ -92,7 +85,7 @@ bool InputConfig::isMappedTo(const std::string& name, Input input) Input comp; if(!getInputByName(name, &comp)) return false; - + if(comp.configured && comp.type == input.type && comp.id == input.id) { if(comp.type == TYPE_HAT) @@ -110,12 +103,31 @@ bool InputConfig::isMappedTo(const std::string& name, Input input) return false; } +bool InputConfig::isMappedLike(const std::string& name, Input input) +{ + if(name == "left") + { + return isMappedTo("left", input) || isMappedTo("leftanalogleft", input) || isMappedTo("rightanalogleft", input); + }else if(name == "right"){ + return isMappedTo("right", input) || isMappedTo("leftanalogright", input) || isMappedTo("rightanalogright", input); + }else if(name == "up"){ + return isMappedTo("up", input) || isMappedTo("leftanalogup", input) || isMappedTo("rightanalogup", input); + }else if(name == "down"){ + return isMappedTo("down", input) || isMappedTo("leftanalogdown", input) || isMappedTo("rightanalogdown", input); + }else if(name == "leftshoulder"){ + return isMappedTo("leftshoulder", input) || isMappedTo("pageup", input); + }else if(name == "rightshoulder"){ + return isMappedTo("rightshoulder", input) || isMappedTo("pagedown", input); + } + return isMappedTo(name, input); +} + std::vector InputConfig::getMappedTo(Input input) { std::vector maps; - typedef std::map::iterator it_type; - for(it_type iterator = mNameMap.begin(); iterator != mNameMap.end(); iterator++) + typedef std::map::const_iterator it_type; + for(it_type iterator = mNameMap.cbegin(); iterator != mNameMap.cend(); iterator++) { Input chk = iterator->second; @@ -146,7 +158,7 @@ std::vector InputConfig::getMappedTo(Input input) return maps; } -void InputConfig::loadFromXML(pugi::xml_node node) +void InputConfig::loadFromXML(pugi::xml_node& node) { clear(); @@ -168,11 +180,11 @@ void InputConfig::loadFromXML(pugi::xml_node node) if(value == 0) LOG(LogWarning) << "WARNING: InputConfig value is 0 for " << type << " " << id << "!\n"; - mNameMap[toLower(name)] = Input(mDeviceId, typeEnum, id, value, true); + mNameMap[Utils::String::toLower(name)] = Input(mDeviceId, typeEnum, id, value, true); } } -void InputConfig::writeToXML(pugi::xml_node parent) +void InputConfig::writeToXML(pugi::xml_node& parent) { pugi::xml_node cfg = parent.append_child("inputConfig"); @@ -180,15 +192,27 @@ void InputConfig::writeToXML(pugi::xml_node parent) { cfg.append_attribute("type") = "keyboard"; cfg.append_attribute("deviceName") = "Keyboard"; - }else{ + } + else if(mDeviceId == DEVICE_CEC) + { + cfg.append_attribute("type") = "cec"; + cfg.append_attribute("deviceName") = "CEC"; + } + else + { cfg.append_attribute("type") = "joystick"; cfg.append_attribute("deviceName") = mDeviceName.c_str(); + if(mVendorId && mProductId) + { + cfg.append_attribute("vendorId") = mVendorId; + cfg.append_attribute("productId") = mProductId; + } } cfg.append_attribute("deviceGUID") = mDeviceGUID.c_str(); - typedef std::map::iterator it_type; - for(it_type iterator = mNameMap.begin(); iterator != mNameMap.end(); iterator++) + typedef std::map::const_iterator it_type; + for(it_type iterator = mNameMap.cbegin(); iterator != mNameMap.cend(); iterator++) { if(!iterator->second.configured) continue; diff --git a/es-core/src/InputConfig.h b/es-core/src/InputConfig.h index 4fa3980ac6..a038e270fc 100644 --- a/es-core/src/InputConfig.h +++ b/es-core/src/InputConfig.h @@ -1,14 +1,18 @@ -#ifndef _INPUTCONFIG_H_ -#define _INPUTCONFIG_H_ +#pragma once +#ifndef ES_CORE_INPUT_CONFIG_H +#define ES_CORE_INPUT_CONFIG_H +#include +#include +#include #include -#include -#include -#include #include -#include "pugixml/pugixml.hpp" +#include + +namespace pugi { class xml_node; } #define DEVICE_KEYBOARD -1 +#define DEVICE_CEC -2 enum InputType { @@ -16,6 +20,7 @@ enum InputType TYPE_BUTTON, TYPE_HAT, TYPE_KEY, + TYPE_CEC_BUTTON, TYPE_COUNT }; @@ -54,6 +59,11 @@ struct Input return "neutral?"; } + std::string getCECButtonName(int keycode) + { + return CECInput::getKeyCodeString(keycode); + } + std::string string() { std::stringstream stream; @@ -71,6 +81,9 @@ struct Input case TYPE_KEY: stream << "Key " << SDL_GetKeyName((SDL_Keycode)id); break; + case TYPE_CEC_BUTTON: + stream << "CEC-Button " << getCECButtonName(id); + break; default: stream << "Input to string error"; break; @@ -89,30 +102,39 @@ class InputConfig void mapInput(const std::string& name, Input input); void unmapInput(const std::string& name); // unmap all Inputs mapped to this name - inline int getDeviceId() const { return mDeviceId; }; + inline int getDeviceId() const { return mDeviceId; } inline const std::string& getDeviceName() { return mDeviceName; } inline const std::string& getDeviceGUIDString() { return mDeviceGUID; } + inline const unsigned short getVendorId() { return mVendorId; } + inline const unsigned short getProductId() { return mProductId; } + + inline void setVendorId(unsigned short vendorID) { mVendorId = vendorID; } + inline void setProductId(unsigned short productID) { mProductId = productID; } //Returns true if Input is mapped to this name, false otherwise. bool isMappedTo(const std::string& name, Input input); + bool isMappedLike(const std::string& name, Input input); //Returns a list of names this input is mapped to. std::vector getMappedTo(Input input); - void loadFromXML(pugi::xml_node root); - void writeToXML(pugi::xml_node parent); - - bool isConfigured(); - -private: // Returns true if there is an Input mapped to this name, false otherwise. // Writes Input mapped to this name to result if true. bool getInputByName(const std::string& name, Input* result); + void loadFromXML(pugi::xml_node& root); + void writeToXML(pugi::xml_node& parent); + + bool isConfigured(); + +private: std::map mNameMap; const int mDeviceId; const std::string mDeviceName; const std::string mDeviceGUID; + + unsigned short mVendorId; + unsigned short mProductId; }; -#endif +#endif // ES_CORE_INPUT_CONFIG_H diff --git a/es-core/src/InputManager.cpp b/es-core/src/InputManager.cpp index 3bd26b8975..67a8901c47 100644 --- a/es-core/src/InputManager.cpp +++ b/es-core/src/InputManager.cpp @@ -1,13 +1,18 @@ #include "InputManager.h" -#include "InputConfig.h" -#include "Settings.h" -#include "Window.h" + +#include "utils/FileSystemUtil.h" +#include "CECInput.h" #include "Log.h" -#include "pugixml/pugixml.hpp" -#include #include "platform.h" +#include "Scripting.h" +#include "Window.h" +#include +#include +#include +#include #define KEYBOARD_GUID_STRING "-1" +#define CEC_GUID_STRING "-2" // SO HEY POTENTIAL POOR SAP WHO IS TRYING TO MAKE SENSE OF ALL THIS (by which I mean my future self) // There are like four distinct IDs used for joysticks (crazy, right?) @@ -15,12 +20,14 @@ // It can change even if the device is the same, and is only used to open joysticks (required to receive SDL events). // 2. SDL_JoystickID - this is an ID for each joystick that is supposed to remain consistent between plugging and unplugging. // ES doesn't care if it does, though. -// 3. "Device ID" - this is something I made up and is what InputConfig's getDeviceID() returns. +// 3. "Device ID" - this is something I made up and is what InputConfig's getDeviceID() returns. // This is actually just an SDL_JoystickID (also called instance ID), but -1 means "keyboard" instead of "error." // 4. Joystick GUID - this is some squashed version of joystick vendor, version, and a bunch of other device-specific things. // It should remain the same across runs of the program/system restarts/device reordering and is what I use to identify which joystick to load. -namespace fs = boost::filesystem; +// hack for cec support +int SDL_USER_CECBUTTONDOWN = -1; +int SDL_USER_CECBUTTONUP = -1; InputManager* InputManager::mInstance = NULL; @@ -46,8 +53,15 @@ void InputManager::init() if(initialized()) deinit(); - SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, + SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, Settings::getInstance()->getBool("BackgroundJoystickInput") ? "1" : "0"); + // Don't enable the HIDAPI drivers by default, it will break the existing configurations + // for a few controller types, since the names and the input mappings are different. +#if !defined(_WIN32) +#if SDL_VERSION_ATLEAST(2,0,9) + SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI, "0"); +#endif +#endif SDL_InitSubSystem(SDL_INIT_JOYSTICK); SDL_JoystickEventState(SDL_ENABLE); @@ -60,12 +74,19 @@ void InputManager::init() mKeyboardInputConfig = new InputConfig(DEVICE_KEYBOARD, "Keyboard", KEYBOARD_GUID_STRING); loadInputConfig(mKeyboardInputConfig); + + SDL_USER_CECBUTTONDOWN = SDL_RegisterEvents(2); + SDL_USER_CECBUTTONUP = SDL_USER_CECBUTTONDOWN + 1; + CECInput::init(); + mCECInputConfig = new InputConfig(DEVICE_CEC, "CEC", CEC_GUID_STRING); + loadInputConfig(mCECInputConfig); } void InputManager::addJoystickByDeviceIndex(int id) { - assert(id >= 0 && id < SDL_NumJoysticks()); - + assert(id > -1); + assert(id < SDL_NumJoysticks()); + // open joystick & add to our list SDL_Joystick* joy = SDL_JoystickOpen(id); assert(joy); @@ -79,11 +100,16 @@ void InputManager::addJoystickByDeviceIndex(int id) // create the InputConfig mInputConfigs[joyId] = new InputConfig(joyId, SDL_JoystickName(joy), guid); + + // add Vendor and Product IDs + mInputConfigs[joyId]->setVendorId(SDL_JoystickGetVendor(joy)); + mInputConfigs[joyId]->setProductId(SDL_JoystickGetProduct(joy)); + if(!loadInputConfig(mInputConfigs[joyId])) { - LOG(LogInfo) << "Added unconfigured joystick " << SDL_JoystickName(joy) << " (GUID: " << guid << ", instance ID: " << joyId << ", device index: " << id << ")."; + LOG(LogInfo) << "Added unconfigured joystick '" << SDL_JoystickName(joy) << "' (GUID: " << guid << ", instance ID: " << joyId << ", device index: " << id << ")."; }else{ - LOG(LogInfo) << "Added known joystick " << SDL_JoystickName(joy) << " (instance ID: " << joyId << ", device index: " << id << ")"; + LOG(LogInfo) << "Added known joystick '" << SDL_JoystickName(joy) << "' (instance ID: " << joyId << ", device index: " << id << ")"; } // set up the prevAxisValues @@ -108,13 +134,9 @@ void InputManager::removeJoystickByJoystickID(SDL_JoystickID joyId) // close the joystick auto joyIt = mJoysticks.find(joyId); - if(joyIt != mJoysticks.end()) - { - SDL_JoystickClose(joyIt->second); - mJoysticks.erase(joyIt); - }else{ - LOG(LogError) << "Could not find joystick to close (instance ID: " << joyId << ")"; - } + LOG(LogInfo) << "Removed joystick '" << SDL_JoystickName(joyIt->second) << "' (instance ID: " << joyId << ")"; + SDL_JoystickClose(joyIt->second); + mJoysticks.erase(joyIt); } void InputManager::deinit() @@ -122,19 +144,19 @@ void InputManager::deinit() if(!initialized()) return; - for(auto iter = mJoysticks.begin(); iter != mJoysticks.end(); iter++) + for(auto iter = mJoysticks.cbegin(); iter != mJoysticks.cend(); iter++) { SDL_JoystickClose(iter->second); } mJoysticks.clear(); - for(auto iter = mInputConfigs.begin(); iter != mInputConfigs.end(); iter++) + for(auto iter = mInputConfigs.cbegin(); iter != mInputConfigs.cend(); iter++) { delete iter->second; } mInputConfigs.clear(); - for(auto iter = mPrevAxisValues.begin(); iter != mPrevAxisValues.end(); iter++) + for(auto iter = mPrevAxisValues.cbegin(); iter != mPrevAxisValues.cend(); iter++) { delete[] iter->second; } @@ -146,15 +168,35 @@ void InputManager::deinit() mKeyboardInputConfig = NULL; } + if(mCECInputConfig != NULL) + { + delete mCECInputConfig; + mCECInputConfig = NULL; + } + + CECInput::deinit(); + SDL_JoystickEventState(SDL_DISABLE); SDL_QuitSubSystem(SDL_INIT_JOYSTICK); } -int InputManager::getNumJoysticks() { return mJoysticks.size(); } +int InputManager::getNumJoysticks() { return (int)mJoysticks.size(); } + +int InputManager::getAxisCountByDevice(SDL_JoystickID id) +{ + return SDL_JoystickNumAxes(mJoysticks[id]); +} + int InputManager::getButtonCountByDevice(SDL_JoystickID id) { if(id == DEVICE_KEYBOARD) return 120; //it's a lot, okay. + else if(id == DEVICE_CEC) +#ifdef HAVE_CECLIB + return CEC::CEC_USER_CONTROL_CODE_MAX; +#else // HAVE_LIBCEF + return 0; +#endif // HAVE_CECLIB else return SDL_JoystickNumButtons(mJoysticks[id]); } @@ -163,6 +205,8 @@ InputConfig* InputManager::getInputConfigByDevice(int device) { if(device == DEVICE_KEYBOARD) return mKeyboardInputConfig; + else if(device == DEVICE_CEC) + return mCECInputConfig; else return mInputConfigs[device]; } @@ -238,15 +282,21 @@ bool InputManager::parseEvent(const SDL_Event& ev, Window* window) return false; } + if((ev.type == (unsigned int)SDL_USER_CECBUTTONDOWN) || (ev.type == (unsigned int)SDL_USER_CECBUTTONUP)) + { + window->input(getInputConfigByDevice(DEVICE_CEC), Input(DEVICE_CEC, TYPE_CEC_BUTTON, ev.user.code, ev.type == (unsigned int)SDL_USER_CECBUTTONDOWN, false)); + return true; + } + return false; } bool InputManager::loadInputConfig(InputConfig* config) { std::string path = getConfigPath(); - if(!fs::exists(path)) + if(!Utils::FileSystem::exists(path)) return false; - + pugi::xml_document doc; pugi::xml_parse_result res = doc.load_file(path.c_str()); @@ -287,8 +337,8 @@ void InputManager::loadDefaultKBConfig() cfg->mapInput("start", Input(DEVICE_KEYBOARD, TYPE_KEY, SDLK_F1, 1, true)); cfg->mapInput("select", Input(DEVICE_KEYBOARD, TYPE_KEY, SDLK_F2, 1, true)); - cfg->mapInput("pageup", Input(DEVICE_KEYBOARD, TYPE_KEY, SDLK_RIGHTBRACKET, 1, true)); - cfg->mapInput("pagedown", Input(DEVICE_KEYBOARD, TYPE_KEY, SDLK_LEFTBRACKET, 1, true)); + cfg->mapInput("leftshoulder", Input(DEVICE_KEYBOARD, TYPE_KEY, SDLK_LEFTBRACKET, 1, true)); + cfg->mapInput("rightshoulder", Input(DEVICE_KEYBOARD, TYPE_KEY, SDLK_RIGHTBRACKET, 1, true)); } void InputManager::writeDeviceConfig(InputConfig* config) @@ -299,24 +349,44 @@ void InputManager::writeDeviceConfig(InputConfig* config) pugi::xml_document doc; - if(fs::exists(path)) + if(Utils::FileSystem::exists(path)) { // merge files pugi::xml_parse_result result = doc.load_file(path.c_str()); if(!result) { LOG(LogError) << "Error parsing input config: " << result.description(); - }else{ + } + else + { // successfully loaded, delete the old entry if it exists pugi::xml_node root = doc.child("inputList"); if(root) { - pugi::xml_node oldEntry = root.find_child_by_attribute("inputConfig", "deviceGUID", config->getDeviceGUIDString().c_str()); - if(oldEntry) - root.remove_child(oldEntry); - oldEntry = root.find_child_by_attribute("inputConfig", "deviceName", config->getDeviceName().c_str()); - if(oldEntry) - root.remove_child(oldEntry); + // if inputAction @type=onfinish is set, let onfinish command take care for creating input configuration. + // we just put the input configuration into a temporary input config file. + pugi::xml_node actionnode = root.find_child_by_attribute("inputAction", "type", "onfinish"); + if(actionnode) + { + path = getTemporaryConfigPath(); + doc.reset(); + root = doc.append_child("inputList"); + } + else + { + pugi::xml_node oldEntry = root.find_child_by_attribute("inputConfig", "deviceGUID", + config->getDeviceGUIDString().c_str()); + if(oldEntry) + { + root.remove_child(oldEntry); + } + oldEntry = root.find_child_by_attribute("inputConfig", "deviceName", + config->getDeviceName().c_str()); + if(oldEntry) + { + root.remove_child(oldEntry); + } + } } } } @@ -327,15 +397,71 @@ void InputManager::writeDeviceConfig(InputConfig* config) config->writeToXML(root); doc.save_file(path.c_str()); + + Scripting::fireEvent("config-changed"); + Scripting::fireEvent("controls-changed"); + + // execute any onFinish commands and re-load the config for changes + doOnFinish(); + loadInputConfig(config); +} + +void InputManager::doOnFinish() +{ + assert(initialized()); + std::string path = getConfigPath(); + pugi::xml_document doc; + + if(Utils::FileSystem::exists(path)) + { + pugi::xml_parse_result result = doc.load_file(path.c_str()); + if(!result) + { + LOG(LogError) << "Error parsing input config: " << result.description(); + } + else + { + pugi::xml_node root = doc.child("inputList"); + if(root) + { + root = root.find_child_by_attribute("inputAction", "type", "onfinish"); + if(root) + { + for(pugi::xml_node command = root.child("command"); command; + command = command.next_sibling("command")) + { + std::string tocall = command.text().get(); + + LOG(LogInfo) << " " << tocall; + std::cout << "==============================================\ninput config finish command:\n"; + int exitCode = runSystemCommand(tocall); + std::cout << "==============================================\n"; + + if(exitCode != 0) + { + LOG(LogWarning) << "...launch terminated with nonzero exit code " << exitCode << "!"; + } + } + } + } + } + } } std::string InputManager::getConfigPath() { - std::string path = getHomePath(); + std::string path = Utils::FileSystem::getHomePath(); path += "/.emulationstation/es_input.cfg"; return path; } +std::string InputManager::getTemporaryConfigPath() +{ + std::string path = Utils::FileSystem::getHomePath(); + path += "/.emulationstation/es_temporaryinput.cfg"; + return path; +} + bool InputManager::initialized() const { return mKeyboardInputConfig != NULL; @@ -344,7 +470,7 @@ bool InputManager::initialized() const int InputManager::getNumConfiguredDevices() { int num = 0; - for(auto it = mInputConfigs.begin(); it != mInputConfigs.end(); it++) + for(auto it = mInputConfigs.cbegin(); it != mInputConfigs.cend(); it++) { if(it->second->isConfigured()) num++; @@ -353,6 +479,9 @@ int InputManager::getNumConfiguredDevices() if(mKeyboardInputConfig->isConfigured()) num++; + if(mCECInputConfig->isConfigured()) + num++; + return num; } @@ -361,8 +490,11 @@ std::string InputManager::getDeviceGUIDString(int deviceId) if(deviceId == DEVICE_KEYBOARD) return KEYBOARD_GUID_STRING; + if(deviceId == DEVICE_CEC) + return CEC_GUID_STRING; + auto it = mJoysticks.find(deviceId); - if(it == mJoysticks.end()) + if(it == mJoysticks.cend()) { LOG(LogError) << "getDeviceGUIDString - deviceId " << deviceId << " not found!"; return "something went horribly wrong"; diff --git a/es-core/src/InputManager.h b/es-core/src/InputManager.h index 5ec8d8848a..388358d217 100644 --- a/es-core/src/InputManager.h +++ b/es-core/src/InputManager.h @@ -1,13 +1,14 @@ -#ifndef _INPUTMANAGER_H_ -#define _INPUTMANAGER_H_ +#pragma once +#ifndef ES_CORE_INPUT_MANAGER_H +#define ES_CORE_INPUT_MANAGER_H -#include -#include +#include #include #include class InputConfig; class Window; +union SDL_Event; //you should only ever instantiate one of these, by the way class InputManager @@ -24,6 +25,7 @@ class InputManager std::map mJoysticks; std::map mInputConfigs; InputConfig* mKeyboardInputConfig; + InputConfig* mCECInputConfig; std::map mPrevAxisValues; @@ -39,12 +41,15 @@ class InputManager static InputManager* getInstance(); void writeDeviceConfig(InputConfig* config); + void doOnFinish(); static std::string getConfigPath(); + static std::string getTemporaryConfigPath(); void init(); void deinit(); int getNumJoysticks(); + int getAxisCountByDevice(int deviceId); int getButtonCountByDevice(int deviceId); int getNumConfiguredDevices(); @@ -55,4 +60,4 @@ class InputManager bool parseEvent(const SDL_Event& ev, Window* window); }; -#endif +#endif // ES_CORE_INPUT_MANAGER_H diff --git a/es-core/src/Log.cpp b/es-core/src/Log.cpp index 643aef16ae..9bed0a8614 100644 --- a/es-core/src/Log.cpp +++ b/es-core/src/Log.cpp @@ -1,8 +1,9 @@ #include "Log.h" -#include -#include -#include + +#include "utils/FileSystemUtil.h" #include "platform.h" +#include +#include LogLevel Log::reportingLevel = LogInfo; FILE* Log::file = NULL; //fopen(getLogPath().c_str(), "w"); @@ -14,7 +15,7 @@ LogLevel Log::getReportingLevel() std::string Log::getLogPath() { - std::string home = getHomePath(); + std::string home = Utils::FileSystem::getHomePath(); return home + "/.emulationstation/es_log.txt"; } @@ -23,6 +24,14 @@ void Log::setReportingLevel(LogLevel level) reportingLevel = level; } +void Log::init() +{ + remove((getLogPath() + ".bak").c_str()); + // rename previous log file + rename(getLogPath().c_str(), (getLogPath() + ".bak").c_str()); + return; +} + void Log::open() { file = fopen(getLogPath().c_str(), "w"); @@ -30,7 +39,8 @@ void Log::open() std::ostringstream& Log::get(LogLevel level) { - os << "lvl" << level << ": \t"; + time_t t = time(nullptr); + os << std::put_time(localtime(&t), "%b %d %T ") << "lvl" << level << ": \t"; messageLevel = level; return os; @@ -43,6 +53,7 @@ void Log::flush() void Log::close() { + if(file == NULL) return; fclose(file); file = NULL; } diff --git a/es-core/src/Log.h b/es-core/src/Log.h index fbc033d402..047d0c5de9 100644 --- a/es-core/src/Log.h +++ b/es-core/src/Log.h @@ -1,13 +1,12 @@ -#ifndef _LOG_H_ -#define _LOG_H_ +#pragma once +#ifndef ES_CORE_LOG_H +#define ES_CORE_LOG_H -#define LOG(level) \ -if(level > Log::getReportingLevel()) ; \ -else Log().get(level) - -#include #include -#include + +#define LOG(level) \ +if(level <= Log::getReportingLevel()) \ + Log().get(level) enum LogLevel { LogError, LogWarning, LogInfo, LogDebug }; @@ -24,6 +23,7 @@ class Log static std::string getLogPath(); static void flush(); + static void init(); static void open(); static void close(); protected: @@ -35,4 +35,4 @@ class Log LogLevel messageLevel; }; -#endif +#endif // ES_CORE_LOG_H diff --git a/es-core/src/MameNames.cpp b/es-core/src/MameNames.cpp new file mode 100644 index 0000000000..f05e8646e4 --- /dev/null +++ b/es-core/src/MameNames.cpp @@ -0,0 +1,160 @@ +#include "MameNames.h" + +#include "resources/ResourceManager.h" +#include "utils/FileSystemUtil.h" +#include "Log.h" +#include +#include + +MameNames* MameNames::sInstance = nullptr; + +void MameNames::init() +{ + if(!sInstance) + sInstance = new MameNames(); + +} // init + +void MameNames::deinit() +{ + if(sInstance) + { + delete sInstance; + sInstance = nullptr; + } + +} // deinit + +MameNames* MameNames::getInstance() +{ + if(!sInstance) + sInstance = new MameNames(); + + return sInstance; + +} // getInstance + +MameNames::MameNames() +{ + std::string xmlpath = ResourceManager::getInstance()->getResourcePath(":/mamenames.xml"); + + if(!Utils::FileSystem::exists(xmlpath)) + return; + + LOG(LogInfo) << "Parsing XML file \"" << xmlpath << "\"..."; + + pugi::xml_document doc; + pugi::xml_parse_result result = doc.load_file(xmlpath.c_str()); + + if(!result) + { + LOG(LogError) << "Error parsing XML file \"" << xmlpath << "\"!\n " << result.description(); + return; + } + + for(pugi::xml_node gameNode = doc.child("game"); gameNode; gameNode = gameNode.next_sibling("game")) + { + NamePair namePair = { gameNode.child("mamename").text().get(), gameNode.child("realname").text().get() }; + mNamePairs.push_back(namePair); + } + + // Read bios + xmlpath = ResourceManager::getInstance()->getResourcePath(":/mamebioses.xml"); + + if(!Utils::FileSystem::exists(xmlpath)) + return; + + LOG(LogInfo) << "Parsing XML file \"" << xmlpath << "\"..."; + + result = doc.load_file(xmlpath.c_str()); + + if(!result) + { + LOG(LogError) << "Error parsing XML file \"" << xmlpath << "\"!\n " << result.description(); + return; + } + + for(pugi::xml_node biosNode = doc.child("bios"); biosNode; biosNode = biosNode.next_sibling("bios")) + { + std::string bios = biosNode.text().get(); + mMameBioses.push_back(bios); + } + + // Read devices + xmlpath = ResourceManager::getInstance()->getResourcePath(":/mamedevices.xml"); + + if(!Utils::FileSystem::exists(xmlpath)) + return; + + LOG(LogInfo) << "Parsing XML file \"" << xmlpath << "\"..."; + + result = doc.load_file(xmlpath.c_str()); + + if(!result) + { + LOG(LogError) << "Error parsing XML file \"" << xmlpath << "\"!\n " << result.description(); + return; + } + + for(pugi::xml_node deviceNode = doc.child("device"); deviceNode; deviceNode = deviceNode.next_sibling("device")) + { + std::string device = deviceNode.text().get(); + mMameDevices.push_back(device); + } + +} // MameNames + +MameNames::~MameNames() +{ + +} // ~MameNames + +std::string MameNames::getRealName(const std::string& _mameName) +{ + size_t start = 0; + size_t end = mNamePairs.size(); + + while(start < end) + { + const size_t index = (start + end) / 2; + const int compare = strcmp(mNamePairs[index].mameName.c_str(), _mameName.c_str()); + + if(compare < 0) start = index + 1; + else if( compare > 0) end = index; + else return mNamePairs[index].realName; + } + + return _mameName; + +} // getRealName + +const bool MameNames::isBios(const std::string& _biosName) +{ + return MameNames::find(mMameBioses, _biosName); + +} // isBios + +const bool MameNames::isDevice(const std::string& _deviceName) +{ + return MameNames::find(mMameDevices, _deviceName); + +} // isDevice + +const bool MameNames::find(std::vector devices, const std::string& name) +{ + size_t start = 0; + size_t end = devices.size(); + + while(start < end) + { + const size_t index = (start + end) / 2; + const int compare = strcmp(devices[index].c_str(), name.c_str()); + + if(compare < 0) start = index + 1; + else if( compare > 0) end = index; + else return true; + } + + return false; + +} diff --git a/es-core/src/MameNames.h b/es-core/src/MameNames.h new file mode 100644 index 0000000000..02036d65d4 --- /dev/null +++ b/es-core/src/MameNames.h @@ -0,0 +1,42 @@ +#pragma once +#ifndef ES_CORE_MAMENAMES_H +#define ES_CORE_MAMENAMES_H + +#include +#include + +class MameNames +{ +public: + + static void init (); + static void deinit (); + static MameNames* getInstance(); + std::string getRealName(const std::string& _mameName); + const bool isBios(const std::string& _biosName); + const bool isDevice(const std::string& _deviceName); + +private: + + struct NamePair + { + std::string mameName; + std::string realName; + }; + + typedef std::vector namePairVector; + + MameNames(); + ~MameNames(); + + static MameNames* sInstance; + + namePairVector mNamePairs; + std::vector mMameBioses; + std::vector mMameDevices; + + const bool find(const std::vector devices, const std::string& name); + +}; // MameNames + +#endif // ES_CORE_MAMENAMES_H diff --git a/es-core/src/PowerSaver.cpp b/es-core/src/PowerSaver.cpp new file mode 100644 index 0000000000..8ec641d1c8 --- /dev/null +++ b/es-core/src/PowerSaver.cpp @@ -0,0 +1,92 @@ +#include "PowerSaver.h" + +#include "AudioManager.h" +#include "Settings.h" + +bool PowerSaver::mState = false; +bool PowerSaver::mRunningScreenSaver = false; + +int PowerSaver::mWakeupTimeout = -1; +int PowerSaver::mScreenSaverTimeout = -1; +PowerSaver::mode PowerSaver::mMode = PowerSaver::DISABLED; + +void PowerSaver::init() +{ + setState(true); + updateMode(); +} + +int PowerSaver::getTimeout() +{ + if (SDL_GetAudioStatus() == SDL_AUDIO_PAUSED) + AudioManager::getInstance()->deinit(); + + // Used only for SDL_WaitEventTimeout. Use `getMode()` for modes. + return mRunningScreenSaver ? mWakeupTimeout : mScreenSaverTimeout; +} + +void PowerSaver::loadWakeupTime() +{ + // TODO : Move this to Screensaver Class + std::string behaviour = Settings::getInstance()->getString("ScreenSaverBehavior"); + if (behaviour == "random video") + mWakeupTimeout = Settings::getInstance()->getInt("ScreenSaverSwapVideoTimeout") - getMode(); + else if (behaviour == "slideshow") + mWakeupTimeout = Settings::getInstance()->getInt("ScreenSaverSwapMediaTimeout") - getMode(); + else // Dim and Blank + mWakeupTimeout = -1; +} + +void PowerSaver::updateTimeouts() +{ + mScreenSaverTimeout = (unsigned int) Settings::getInstance()->getInt("ScreenSaverTime"); + mScreenSaverTimeout = mScreenSaverTimeout > 0 ? mScreenSaverTimeout - getMode() : -1; + loadWakeupTime(); +} + +PowerSaver::mode PowerSaver::getMode() +{ + return mMode; +} + +void PowerSaver::updateMode() +{ + std::string mode = Settings::getInstance()->getString("PowerSaverMode"); + + if (mode == "disabled") { + mMode = DISABLED; + } else if (mode == "instant") { + mMode = INSTANT; + } else if (mode == "enhanced") { + mMode = ENHANCED; + } else { + mMode = DEFAULT; + } + updateTimeouts(); +} + +bool PowerSaver::getState() +{ + return mState; +} + +void PowerSaver::setState(bool state) +{ + bool ps_enabled = Settings::getInstance()->getString("PowerSaverMode") != "disabled"; + mState = ps_enabled && state; +} + +void PowerSaver::runningScreenSaver(bool state) +{ + mRunningScreenSaver = state; + if (mWakeupTimeout < mMode) + { + // Disable PS if wake up time is less than mode as PS will never trigger + setState(!state); + } +} + +bool PowerSaver::isScreenSaverActive() +{ + return mRunningScreenSaver; +} diff --git a/es-core/src/PowerSaver.h b/es-core/src/PowerSaver.h new file mode 100644 index 0000000000..4ed9a8acf6 --- /dev/null +++ b/es-core/src/PowerSaver.h @@ -0,0 +1,48 @@ +#pragma once +#ifndef ES_CORE_POWER_SAVER_H +#define ES_CORE_POWER_SAVER_H + +class PowerSaver +{ +public: + enum mode : int { DISABLED = -1, INSTANT = 200, ENHANCED = 3000, DEFAULT = 10000 }; + + // Call when you want PS to reload all state and settings + static void init(); + + // Get timeout to wake up from for the next event + static int getTimeout(); + // Update currently set timeouts after User changes Timeout settings + static void updateTimeouts(); + + // Use this to check which mode you are in or get the mode timeout + static mode getMode(); + // Called when user changes mode from Settings + static void updateMode(); + + // Get current state of PS. Not to be confused with Mode + static bool getState(); + // State is used to temporarily pause and resume PS + static void setState(bool state); + + // Paired calls when you want to pause PS briefly till you finish animating + // or processing over cycles + static void pause() { setState(false); } + static void resume() { setState(true); } + + // This is used by ScreenSaver to let PS know when to switch to SS timeouts + static void runningScreenSaver(bool state); + static bool isScreenSaverActive(); + +private: + static bool mState; + static bool mRunningScreenSaver; + + static mode mMode; + static int mWakeupTimeout; + static int mScreenSaverTimeout; + + static void loadWakeupTime(); +}; + +#endif // ES_CORE_POWER_SAVER_H diff --git a/es-core/src/Renderer.h b/es-core/src/Renderer.h deleted file mode 100644 index 5de4de81b1..0000000000 --- a/es-core/src/Renderer.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef _RENDERER_H_ -#define _RENDERER_H_ - -#include -#include -#include "platform.h" -#include -#include GLHEADER - -class GuiComponent; -class Font; - -//The Renderer provides several higher-level functions for drawing (rectangles, text, etc.). -//Renderer_draw_gl.cpp has most of the higher-level functions and wrappers. -//Renderer_init_*.cpp has platform-specific renderer initialziation/deinitialziation code. (e.g. the Raspberry Pi sets up dispmanx/OpenGL ES) -namespace Renderer -{ - bool init(int w, int h); - void deinit(); - - unsigned int getScreenWidth(); - unsigned int getScreenHeight(); - - void buildGLColorArray(GLubyte* ptr, unsigned int color, unsigned int vertCount); - - //graphics commands - void swapBuffers(); - - void pushClipRect(Eigen::Vector2i pos, Eigen::Vector2i dim); - void popClipRect(); - - void setMatrix(float* mat); - void setMatrix(const Eigen::Affine3f& transform); - - void drawRect(int x, int y, int w, int h, unsigned int color, GLenum blend_sfactor = GL_SRC_ALPHA, GLenum blend_dfactor = GL_ONE_MINUS_SRC_ALPHA); - void drawRect(float x, float y, float w, float h, unsigned int color, GLenum blend_sfactor = GL_SRC_ALPHA, GLenum blend_dfactor = GL_ONE_MINUS_SRC_ALPHA); -} - -#endif diff --git a/es-core/src/Renderer_draw_gl.cpp b/es-core/src/Renderer_draw_gl.cpp deleted file mode 100644 index 3d0a39914d..0000000000 --- a/es-core/src/Renderer_draw_gl.cpp +++ /dev/null @@ -1,140 +0,0 @@ -#include "platform.h" -#include "Renderer.h" -#include GLHEADER -#include -#include "resources/Font.h" -#include -#include "Log.h" -#include -#include "Util.h" - -namespace Renderer { - std::stack clipStack; - - void setColor4bArray(GLubyte* array, unsigned int color) - { - array[0] = (color & 0xff000000) >> 24; - array[1] = (color & 0x00ff0000) >> 16; - array[2] = (color & 0x0000ff00) >> 8; - array[3] = (color & 0x000000ff); - } - - void buildGLColorArray(GLubyte* ptr, unsigned int color, unsigned int vertCount) - { - unsigned int colorGl; - setColor4bArray((GLubyte*)&colorGl, color); - for(unsigned int i = 0; i < vertCount; i++) - { - ((GLuint*)ptr)[i] = colorGl; - } - } - - void pushClipRect(Eigen::Vector2i pos, Eigen::Vector2i dim) - { - Eigen::Vector4i box(pos.x(), pos.y(), dim.x(), dim.y()); - if(box[2] == 0) - box[2] = Renderer::getScreenWidth() - box.x(); - if(box[3] == 0) - box[3] = Renderer::getScreenHeight() - box.y(); - - //glScissor starts at the bottom left of the window - //so (0, 0, 1, 1) is the bottom left pixel - //everything else uses y+ = down, so flip it to be consistent - //rect.pos.y = Renderer::getScreenHeight() - rect.pos.y - rect.size.y; - box[1] = Renderer::getScreenHeight() - box.y() - box[3]; - - //make sure the box fits within clipStack.top(), and clip further accordingly - if(clipStack.size()) - { - Eigen::Vector4i& top = clipStack.top(); - if(top[0] > box[0]) - box[0] = top[0]; - if(top[1] > box[1]) - box[1] = top[1]; - if(top[0] + top[2] < box[0] + box[2]) - box[2] = (top[0] + top[2]) - box[0]; - if(top[1] + top[3] < box[1] + box[3]) - box[3] = (top[1] + top[3]) - box[1]; - } - - if(box[2] < 0) - box[2] = 0; - if(box[3] < 0) - box[3] = 0; - - clipStack.push(box); - glScissor(box[0], box[1], box[2], box[3]); - glEnable(GL_SCISSOR_TEST); - } - - void popClipRect() - { - if(clipStack.empty()) - { - LOG(LogError) << "Tried to popClipRect while the stack was empty!"; - return; - } - - clipStack.pop(); - if(clipStack.empty()) - { - glDisable(GL_SCISSOR_TEST); - }else{ - Eigen::Vector4i top = clipStack.top(); - glScissor(top[0], top[1], top[2], top[3]); - } - } - - void drawRect(float x, float y, float w, float h, unsigned int color, GLenum blend_sfactor, GLenum blend_dfactor) - { - drawRect((int)round(x), (int)round(y), (int)round(w), (int)round(h), color, blend_sfactor, blend_dfactor); - } - - void drawRect(int x, int y, int w, int h, unsigned int color, GLenum blend_sfactor, GLenum blend_dfactor) - { -#ifdef USE_OPENGL_ES - GLshort points[12]; -#else - GLint points[12]; -#endif - - points[0] = x; points [1] = y; - points[2] = x; points[3] = y + h; - points[4] = x + w; points[5] = y; - - points[6] = x + w; points[7] = y; - points[8] = x; points[9] = y + h; - points[10] = x + w; points[11] = y + h; - - GLubyte colors[6*4]; - buildGLColorArray(colors, color, 6); - - glEnable(GL_BLEND); - glBlendFunc(blend_sfactor, blend_dfactor); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - -#ifdef USE_OPENGL_ES - glVertexPointer(2, GL_SHORT, 0, points); -#else - glVertexPointer(2, GL_INT, 0, points); -#endif - glColorPointer(4, GL_UNSIGNED_BYTE, 0, colors); - - glDrawArrays(GL_TRIANGLES, 0, 6); - - glDisable(GL_BLEND); - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); - } - - void setMatrix(float* matrix) - { - glLoadMatrixf(matrix); - } - - void setMatrix(const Eigen::Affine3f& matrix) - { - setMatrix((float*)matrix.data()); - } -}; diff --git a/es-core/src/Renderer_init_sdlgl.cpp b/es-core/src/Renderer_init_sdlgl.cpp deleted file mode 100644 index 00175f3fc8..0000000000 --- a/es-core/src/Renderer_init_sdlgl.cpp +++ /dev/null @@ -1,163 +0,0 @@ -#include "Renderer.h" -#include -#include "platform.h" -#include GLHEADER -#include "resources/Font.h" -#include -#include "Log.h" -#include "ImageIO.h" -#include "../data/Resources.h" -#include "Settings.h" - -#ifdef USE_OPENGL_ES - #define glOrtho glOrthof -#endif - -namespace Renderer -{ - static bool initialCursorState; - - unsigned int display_width = 0; - unsigned int display_height = 0; - - unsigned int getScreenWidth() { return display_width; } - unsigned int getScreenHeight() { return display_height; } - - SDL_Window* sdlWindow = NULL; - SDL_GLContext sdlContext = NULL; - - bool createSurface() - { - LOG(LogInfo) << "Creating surface..."; - - if(SDL_Init(SDL_INIT_VIDEO) != 0) - { - LOG(LogError) << "Error initializing SDL!\n " << SDL_GetError(); - return false; - } - - SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); - SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); - SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); - SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); - SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); - - // multisample anti-aliasing - //SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); - //SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 2); - -#ifdef USE_OPENGL_ES - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1); -#endif - - SDL_DisplayMode dispMode; - SDL_GetDesktopDisplayMode(0, &dispMode); - if(display_width == 0) - display_width = dispMode.w; - if(display_height == 0) - display_height = dispMode.h; - - sdlWindow = SDL_CreateWindow("EmulationStation", - SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, - display_width, display_height, - SDL_WINDOW_OPENGL | (Settings::getInstance()->getBool("Windowed") ? 0 : SDL_WINDOW_FULLSCREEN)); - - if(sdlWindow == NULL) - { - LOG(LogError) << "Error creating SDL window!\n\t" << SDL_GetError(); - return false; - } - - LOG(LogInfo) << "Created window successfully."; - - //set an icon for the window - size_t width = 0; - size_t height = 0; - std::vector rawData = ImageIO::loadFromMemoryRGBA32(window_icon_256_png_data, window_icon_256_png_size, width, height); - if (!rawData.empty()) - { - ImageIO::flipPixelsVert(rawData.data(), width, height); - - //SDL interprets each pixel as a 32-bit number, so our masks must depend on the endianness (byte order) of the machine - #if SDL_BYTEORDER == SDL_BIG_ENDIAN - Uint32 rmask = 0xff000000; Uint32 gmask = 0x00ff0000; Uint32 bmask = 0x0000ff00; Uint32 amask = 0x000000ff; - #else - Uint32 rmask = 0x000000ff; Uint32 gmask = 0x0000ff00; Uint32 bmask = 0x00ff0000; Uint32 amask = 0xff000000; - #endif - //try creating SDL surface from logo data - SDL_Surface * logoSurface = SDL_CreateRGBSurfaceFrom((void *)rawData.data(), width, height, 32, width * 4, rmask, gmask, bmask, amask); - if (logoSurface != NULL) - { - SDL_SetWindowIcon(sdlWindow, logoSurface); - SDL_FreeSurface(logoSurface); - } - } - - sdlContext = SDL_GL_CreateContext(sdlWindow); - - // vsync - if(Settings::getInstance()->getBool("VSync")) - { - // SDL_GL_SetSwapInterval(0) for immediate updates (no vsync, default), - // 1 for updates synchronized with the vertical retrace, - // or -1 for late swap tearing. - // SDL_GL_SetSwapInterval returns 0 on success, -1 on error. - // if vsync is requested, try late swap tearing; if that doesn't work, try normal vsync - // if that doesn't work, report an error - if(SDL_GL_SetSwapInterval(-1) != 0 && SDL_GL_SetSwapInterval(1) != 0) - LOG(LogWarning) << "Tried to enable vsync, but failed! (" << SDL_GetError() << ")"; - } - - //hide mouse cursor - initialCursorState = SDL_ShowCursor(0) == 1; - - return true; - } - - void swapBuffers() - { - SDL_GL_SwapWindow(sdlWindow); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - } - - void destroySurface() - { - SDL_GL_DeleteContext(sdlContext); - sdlContext = NULL; - - SDL_DestroyWindow(sdlWindow); - sdlWindow = NULL; - - //show mouse cursor - SDL_ShowCursor(initialCursorState); - - SDL_Quit(); - } - - bool init(int w, int h) - { - if(w) - display_width = w; - if(h) - display_height = h; - - bool createdSurface = createSurface(); - - if(!createdSurface) - return false; - - glViewport(0, 0, display_width, display_height); - - glMatrixMode(GL_PROJECTION); - glOrtho(0, display_width, display_height, 0, -1.0, 1.0); - glMatrixMode(GL_MODELVIEW); - glClearColor(1.0f, 1.0f, 1.0f, 1.0f); - - return true; - } - - void deinit() - { - destroySurface(); - } -}; diff --git a/es-core/src/Scripting.cpp b/es-core/src/Scripting.cpp new file mode 100644 index 0000000000..19b7797a40 --- /dev/null +++ b/es-core/src/Scripting.cpp @@ -0,0 +1,69 @@ +#include "Scripting.h" +#include "Log.h" +#include "platform.h" +#include "utils/FileSystemUtil.h" +#ifndef WIN32 +#include +#include +#endif + +namespace Scripting +{ + int fireEvent(const std::string& eventName, const std::string& arg1, const std::string& arg2, const std::string& arg3, const std::string& arg4) + { + LOG(LogDebug) << "fireEvent: " << eventName << " " << arg1 << " " << arg2; + + std::list scriptDirList; + std::string test; + + // check in exepath + test = Utils::FileSystem::getExePath() + "/scripts/" + eventName; + if(Utils::FileSystem::exists(test)) + scriptDirList.push_back(test); + + // check in homepath + test = Utils::FileSystem::getHomePath() + "/.emulationstation/scripts/" + eventName; + if(Utils::FileSystem::exists(test)) + scriptDirList.push_back(test); + int ret = 0; + // loop over found script paths per event and over scripts found in eventName folder. + for(std::list::const_iterator dirIt = scriptDirList.cbegin(); dirIt != scriptDirList.cend(); ++dirIt) { + std::list scripts = Utils::FileSystem::getDirContent(*dirIt); + for (std::list::const_iterator it = scripts.cbegin(); it != scripts.cend(); ++it) { +#ifndef WIN32 // osx / linux + if (!Utils::FileSystem::isExecutable(*it)) { + LOG(LogWarning) << *it << " is not executable. Review file permissions."; + continue; + } +#endif + std::string script = *it; + if (arg1.length() > 0) { + script += " \"" + arg1 + "\""; + if (arg2.length() > 0) { + script += " \"" + arg2 + "\""; + if (arg3.length() > 0) { + script += " \"" + arg3 + "\""; + if (arg4.length() > 0) { + script += " \"" + arg4 + "\""; + } + } + } + } + LOG(LogDebug) << "executing: " << script; + ret = runSystemCommand(script); + if (ret != 0) { + LOG(LogWarning) << script << " failed with exit code != 0. Terminating processing for this event."; +#ifndef WIN32 + if (ENOENT == errno) { + LOG(LogWarning) << "Exit code: " << errno << " (" << strerror(errno) << ")"; + LOG(LogWarning) << "It is not executable by the current user (usually 'pi'). Review file permissions."; + } +#endif + return ret; + } + } + } + return ret; + } + +} // Scripting:: diff --git a/es-core/src/Scripting.h b/es-core/src/Scripting.h new file mode 100644 index 0000000000..3ad80512b0 --- /dev/null +++ b/es-core/src/Scripting.h @@ -0,0 +1,12 @@ +#pragma once +#ifndef ES_CORE_SCRIPTING_H +#define ES_CORE_SCRIPTING_H + +#include + +namespace Scripting +{ + int fireEvent(const std::string& eventName, const std::string& arg1="", const std::string& arg2="", const std::string& arg3="", const std::string& arg4=""); +} // Scripting:: + +#endif //ES_CORE_SCRIPTING_H diff --git a/es-core/src/Settings.cpp b/es-core/src/Settings.cpp index 779ee71420..aeb1057e33 100644 --- a/es-core/src/Settings.cpp +++ b/es-core/src/Settings.cpp @@ -1,24 +1,41 @@ #include "Settings.h" + +#include "utils/FileSystemUtil.h" #include "Log.h" -#include "pugixml/pugixml.hpp" +#include "Scripting.h" #include "platform.h" -#include -#include +#include +#include +#include Settings* Settings::sInstance = NULL; // these values are NOT saved to es_settings.xml // since they're set through command-line arguments, and not the in-program settings menu -std::vector settings_dont_save = boost::assign::list_of - ("Debug") - ("DebugGrid") - ("DebugText") - ("ParseGamelistOnly") - ("ShowExit") - ("Windowed") - ("VSync") - ("HideConsole") - ("IgnoreGamelist"); +std::vector settings_dont_save { + "Debug", + "DebugGrid", + "DebugText", + "DebugImage", + "ForceKid", + "ForceKiosk", + "IgnoreGamelist", + "HideConsole", + "ShowExit", + "ConfirmQuit", + "SplashScreen", + "VSync", + "FullscreenBorderless", + "Windowed", + "WindowWidth", + "WindowHeight", + "ScreenWidth", + "ScreenHeight", + "ScreenOffsetX", + "ScreenOffsetY", + "ScreenRotate", + "MonitorID" +}; Settings::Settings() { @@ -41,46 +58,144 @@ void Settings::setDefaults() mBoolMap["BackgroundJoystickInput"] = false; mBoolMap["ParseGamelistOnly"] = false; + mBoolMap["ShowHiddenFiles"] = false; mBoolMap["DrawFramerate"] = false; mBoolMap["ShowExit"] = true; + mBoolMap["ConfirmQuit"] = true; + mBoolMap["FullscreenBorderless"] = false; mBoolMap["Windowed"] = false; + mBoolMap["SplashScreen"] = true; + mStringMap["StartupSystem"] = ""; + mBoolMap["DisableKidStartMenu"] = true; -#ifdef _RPI_ - // don't enable VSync by default on the Pi, since it already - // has trouble trying to render things at 60fps in certain menus - mBoolMap["VSync"] = false; -#else mBoolMap["VSync"] = true; -#endif mBoolMap["EnableSounds"] = true; mBoolMap["ShowHelpPrompts"] = true; + mBoolMap["DoublePressRemovesFromFavs"] = false; mBoolMap["ScrapeRatings"] = true; mBoolMap["IgnoreGamelist"] = false; mBoolMap["HideConsole"] = true; mBoolMap["QuickSystemSelect"] = true; + mBoolMap["MoveCarousel"] = true; + + mBoolMap["ThreadedLoading"] = false; mBoolMap["Debug"] = false; mBoolMap["DebugGrid"] = false; mBoolMap["DebugText"] = false; + mBoolMap["DebugImage"] = false; - mIntMap["ScreenSaverTime"] = 5*60*1000; // 5 minutes + mIntMap["ScreenSaverTime"] = 5 * Settings::ONE_MINUTE_IN_MS; + mIntMap["SystemSleepTime"] = 0 * Settings::ONE_MINUTE_IN_MS; + mBoolMap["SystemSleepTimeHintDisplayed"] = false; mIntMap["ScraperResizeWidth"] = 400; mIntMap["ScraperResizeHeight"] = 0; + #ifdef _RPI_ + mIntMap["MaxVRAM"] = 80; + #else + mIntMap["MaxVRAM"] = 100; + #endif mStringMap["TransitionStyle"] = "fade"; mStringMap["ThemeSet"] = ""; mStringMap["ScreenSaverBehavior"] = "dim"; mStringMap["Scraper"] = "TheGamesDB"; + mStringMap["GamelistViewStyle"] = "automatic"; + mStringMap["SaveGamelistsMode"] = "on exit"; + + mBoolMap["ScreenSaverControls"] = true; + mStringMap["ScreenSaverGameInfo"] = "never"; + mBoolMap["StretchVideoOnScreenSaver"] = false; + mStringMap["PowerSaverMode"] = "disabled"; + + mIntMap["ScreenSaverSwapMediaTimeout"] = 10000; + mBoolMap["SlideshowScreenSaverStretch"] = false; + mStringMap["SlideshowScreenSaverBackgroundAudioFile"] = Utils::FileSystem::getHomePath() + "/.emulationstation/slideshow/audio/slideshow_bg.wav"; + mBoolMap["SlideshowScreenSaverCustomMediaSource"] = false; + mStringMap["SlideshowScreenSaverMediaDir"] = Utils::FileSystem::getHomePath() + "/.emulationstation/slideshow/media"; + mStringMap["SlideshowScreenSaverImageFilter"] = ".png,.jpg"; + mStringMap["SlideshowScreenSaverVideoFilter"] = ".mp4,.avi"; + mBoolMap["SlideshowScreenSaverRecurse"] = false; + + // This setting only applies to raspberry pi but set it for all platforms so + // we don't get a warning if we encounter it on a different platform + mBoolMap["VideoOmxPlayer"] = false; + #ifdef _OMX_ + // we're defaulting to OMX Player for full screen video on the Pi + mBoolMap["ScreenSaverOmxPlayer"] = true; + // use OMX Player defaults + mStringMap["SubtitleFont"] = "/usr/share/fonts/truetype/freefont/FreeSans.ttf"; + mStringMap["SubtitleItalicFont"] = "/usr/share/fonts/truetype/freefont/FreeSansOblique.ttf"; + mIntMap["SubtitleSize"] = 55; + mStringMap["SubtitleAlignment"] = "left"; + #else + mBoolMap["ScreenSaverOmxPlayer"] = false; + #endif + + mIntMap["ScreenSaverSwapVideoTimeout"] = 30000; + + mBoolMap["VideoAudio"] = true; + mBoolMap["ScreenSaverVideoMute"] = false; + mStringMap["VlcScreenSaverResolution"] = "original"; + // Audio out device for Video playback using OMX player. + mStringMap["OMXAudioDev"] = "both"; + mIntMap["RandomCollectionMaxGames"] = 0; // 0 == no limit + std::map m1; + mMapIntMap["RandomCollectionSystemsAuto"] = m1; + std::map m2; + mMapIntMap["RandomCollectionSystemsCustom"] = m2; + std::map m3; + mMapIntMap["RandomCollectionSystems"] = m3; + mStringMap["RandomCollectionExclusionCollection"] = ""; + mStringMap["CollectionSystemsAuto"] = ""; + mStringMap["CollectionSystemsCustom"] = ""; + mStringMap["DefaultScreenSaverCollection"] = ""; + mBoolMap["CollectionShowSystemInfo"] = true; + mBoolMap["SortAllSystems"] = false; + mBoolMap["UseCustomCollectionsSystem"] = true; + mBoolMap["BackgroundIndexing"] = false; + + mBoolMap["LocalArt"] = false; + + // Audio out device for volume control + #ifdef _RPI_ + mStringMap["AudioDevice"] = "HDMI"; + #else + mStringMap["AudioDevice"] = "Master"; + #endif + + mStringMap["AudioCard"] = "default"; + mStringMap["UIMode"] = "Full"; + mStringMap["UIMode_passkey"] = "uuddlrlrba"; + mBoolMap["ForceKiosk"] = false; + mBoolMap["ForceKid"] = false; + mBoolMap["ForceDisableFilters"] = false; + + mIntMap["WindowWidth"] = 0; + mIntMap["WindowHeight"] = 0; + mIntMap["ScreenWidth"] = 0; + mIntMap["ScreenHeight"] = 0; + mIntMap["ScreenOffsetX"] = 0; + mIntMap["ScreenOffsetY"] = 0; + mIntMap["ScreenRotate"] = 0; + mIntMap["MonitorID"] = 0; + + mBoolMap["UseFullscreenPaging"] = false; + + mBoolMap["IgnoreLeadingArticles"] = false; + //No spaces! Order is important! + //"The A Squad" given [a,an,the] will sort as "A Squad", but given [the,a,an] will sort as "Squad" + mStringMap["LeadingArticles"] = "a,an,the"; } template void saveMap(pugi::xml_document& doc, std::map& map, const char* type) { - for(auto iter = map.begin(); iter != map.end(); iter++) + for(auto iter = map.cbegin(); iter != map.cend(); iter++) { // key is on the "don't save" list, so don't save it - if(std::find(settings_dont_save.begin(), settings_dont_save.end(), iter->first) != settings_dont_save.end()) + if(std::find(settings_dont_save.cbegin(), settings_dont_save.cend(), iter->first) != settings_dont_save.cend()) continue; pugi::xml_node node = doc.append_child(type); @@ -91,7 +206,8 @@ void saveMap(pugi::xml_document& doc, std::map& map, const char* type) void Settings::saveFile() { - const std::string path = getHomePath() + "/.emulationstation/es_settings.cfg"; + LOG(LogDebug) << "Settings::saveFile() : Saving Settings to file."; + const std::string path = Utils::FileSystem::getHomePath() + "/.emulationstation/es_settings.cfg"; pugi::xml_document doc; @@ -100,21 +216,38 @@ void Settings::saveFile() saveMap(doc, mFloatMap, "float"); //saveMap(doc, mStringMap, "string"); - for(auto iter = mStringMap.begin(); iter != mStringMap.end(); iter++) + for(auto iter = mStringMap.cbegin(); iter != mStringMap.cend(); iter++) { pugi::xml_node node = doc.append_child("string"); node.append_attribute("name").set_value(iter->first.c_str()); node.append_attribute("value").set_value(iter->second.c_str()); } + for(auto &m : mMapIntMap) + { + pugi::xml_node node = doc.append_child("map"); + node.append_attribute("name").set_value(m.first.c_str()); + std::string datatype = "int"; + node.append_attribute("type").set_value(datatype.c_str()); + for(auto &intMap : m.second) // intMap is a map + { + pugi::xml_node entry = node.append_child(datatype.c_str()); + entry.append_attribute("name").set_value(intMap.first.c_str()); + entry.append_attribute("value").set_value(intMap.second); + } + } + doc.save_file(path.c_str()); + + Scripting::fireEvent("config-changed"); + Scripting::fireEvent("settings-changed"); } void Settings::loadFile() { - const std::string path = getHomePath() + "/.emulationstation/es_settings.cfg"; + const std::string path = Utils::FileSystem::getHomePath() + "/.emulationstation/es_settings.cfg"; - if(!boost::filesystem::exists(path)) + if(!Utils::FileSystem::exists(path)) return; pugi::xml_document doc; @@ -133,12 +266,78 @@ void Settings::loadFile() setFloat(node.attribute("name").as_string(), node.attribute("value").as_float()); for(pugi::xml_node node = doc.child("string"); node; node = node.next_sibling("string")) setString(node.attribute("name").as_string(), node.attribute("value").as_string()); + + for(pugi::xml_node node = doc.child("map"); node; node = node.next_sibling("map")) + { + std::string mapName = node.attribute("name").as_string(); + std::string mapType = node.attribute("type").as_string(); + if (mapType == "int") { + // only supporting int value maps currently + std::map _map; + for(pugi::xml_node entry : node.children(mapType.c_str())) + { + _map[entry.attribute("name").as_string()] = entry.attribute("value").as_int(); + } + setMap(mapName, _map); + } else { + LOG(LogWarning) << "Map: '" << mapName << "'. Unsupported data type '"<< mapType <<"'. Value ignored!"; + } + } + + processBackwardCompatibility(); } + +void Settings::setMap(const std::string& key, const std::map& map) +{ + mMapIntMap[key] = map; +} + +const std::map Settings::getMap(const std::string& key) +{ + if(mMapIntMap.find(key) == mMapIntMap.cend()) + { + LOG(LogError) << "Tried to use undefined setting " << key << "!"; + std::map empty; + return empty; + + } + return mMapIntMap[key]; +} + + +template +void Settings::renameSetting(Map& map, std::string&& oldName, std::string&& newName) +{ + typename Map::const_iterator it = map.find(oldName); + if (it != map.end()) { + map[newName] = it->second; + map.erase(it); + } +} + +void Settings::processBackwardCompatibility() +{ + { // SaveGamelistsOnExit -> SaveGamelistsMode + std::map::const_iterator it = mBoolMap.find("SaveGamelistsOnExit"); + if (it != mBoolMap.end()) { + mStringMap["SaveGamelistsMode"] = it->second ? "on exit" : "never"; + mBoolMap.erase(it); + } + } + + { // ScreenSaverSlideShow Image -> Media + renameSetting>(mIntMap, std::string("ScreenSaverSwapImageTimeout"), std::string("ScreenSaverSwapMediaTimeout")); + renameSetting>(mBoolMap, std::string("SlideshowScreenSaverCustomImageSource"), std::string("SlideshowScreenSaverCustomMediaSource")); + renameSetting>(mStringMap, std::string("SlideshowScreenSaverImageDir"), std::string("SlideshowScreenSaverMediaDir")); + } +} + + //Print a warning message if the setting we're trying to get doesn't already exist in the map, then return the value in the map. #define SETTINGS_GETSET(type, mapName, getMethodName, setMethodName) type Settings::getMethodName(const std::string& name) \ { \ - if(mapName.find(name) == mapName.end()) \ + if(mapName.find(name) == mapName.cend()) \ { \ LOG(LogError) << "Tried to use unset setting " << name << "!"; \ } \ @@ -152,4 +351,4 @@ void Settings::setMethodName(const std::string& name, type value) \ SETTINGS_GETSET(bool, mBoolMap, getBool, setBool); SETTINGS_GETSET(int, mIntMap, getInt, setInt); SETTINGS_GETSET(float, mFloatMap, getFloat, setFloat); -SETTINGS_GETSET(const std::string&, mStringMap, getString, setString); \ No newline at end of file +SETTINGS_GETSET(const std::string&, mStringMap, getString, setString); diff --git a/es-core/src/Settings.h b/es-core/src/Settings.h index 6b56400fed..082779defc 100644 --- a/es-core/src/Settings.h +++ b/es-core/src/Settings.h @@ -1,11 +1,15 @@ #pragma once -#include +#ifndef ES_CORE_SETTINGS_H +#define ES_CORE_SETTINGS_H + #include +#include //This is a singleton for storing settings. class Settings { public: + static const int ONE_MINUTE_IN_MS = 1000 * 60; static Settings* getInstance(); void loadFile(); @@ -16,22 +20,29 @@ class Settings int getInt(const std::string& name); float getFloat(const std::string& name); const std::string& getString(const std::string& name); + const std::map getMap(const std::string& name); void setBool(const std::string& name, bool value); void setInt(const std::string& name, int value); void setFloat(const std::string& name, float value); void setString(const std::string& name, const std::string& value); + void setMap(const std::string& name, const std::map& map); private: static Settings* sInstance; Settings(); - //Clear everything and load default values. - void setDefaults(); + void setDefaults(); //Clear everything and load default values. + void processBackwardCompatibility(); + template + void renameSetting(Map& map, std::string&& oldName, std::string&& newName); std::map mBoolMap; std::map mIntMap; std::map mFloatMap; std::map mStringMap; + std::map> mMapIntMap; }; + +#endif // ES_CORE_SETTINGS_H diff --git a/es-core/src/Sound.cpp b/es-core/src/Sound.cpp index c915ea5448..e3f46e279b 100644 --- a/es-core/src/Sound.cpp +++ b/es-core/src/Sound.cpp @@ -1,4 +1,5 @@ #include "Sound.h" + #include "AudioManager.h" #include "Log.h" #include "Settings.h" @@ -9,7 +10,7 @@ std::map< std::string, std::shared_ptr > Sound::sMap; std::shared_ptr Sound::get(const std::string& path) { auto it = sMap.find(path); - if(it != sMap.end()) + if(it != sMap.cend()) return it->second; std::shared_ptr sound = std::shared_ptr(new Sound(path)); @@ -114,12 +115,14 @@ void Sound::play() if(!Settings::getInstance()->getBool("EnableSounds")) return; + AudioManager::getInstance(); + SDL_LockAudio(); if (playing) { //replay from start. rewind the sample to the beginning mSamplePos = 0; - + } else { diff --git a/es-core/src/Sound.h b/es-core/src/Sound.h index 2eb430ce04..43e68453cc 100644 --- a/es-core/src/Sound.h +++ b/es-core/src/Sound.h @@ -1,10 +1,11 @@ -#ifndef _SOUND_H_ -#define _SOUND_H_ +#pragma once +#ifndef ES_CORE_SOUND_H +#define ES_CORE_SOUND_H -#include +#include "SDL_audio.h" #include #include -#include "SDL_audio.h" +#include class ThemeData; @@ -43,4 +44,4 @@ class Sound static std::map< std::string, std::shared_ptr > sMap; }; -#endif +#endif // ES_CORE_SOUND_H diff --git a/es-core/src/ThemeData.cpp b/es-core/src/ThemeData.cpp index fce86628f3..4f299adce8 100644 --- a/es-core/src/ThemeData.cpp +++ b/es-core/src/ThemeData.cpp @@ -1,93 +1,181 @@ #include "ThemeData.h" -#include "Renderer.h" -#include "resources/Font.h" -#include "Sound.h" -#include "resources/TextureResource.h" -#include "Log.h" -#include "Settings.h" -#include "pugixml/pugixml.hpp" -#include #include "components/ImageComponent.h" #include "components/TextComponent.h" - - -// This is a work around for some ambiguity that is introduced in C++11 that boost::assign::map_list_of leave open. -// We use makeMap(actualmap) to implicitly convert the boost::assign::map_list_of's return type to ElementMapType. -// Problem exists with gcc 4.7 and Boost 1.51. Works fine with MSVC2010 without this hack. -typedef std::map ElementMapType; -template -ElementMapType makeMap(const T& mapInit) -{ - ElementMapType m = mapInit; - return m; -} - -std::map< std::string, ElementMapType > ThemeData::sElementMap = boost::assign::map_list_of - ("image", makeMap(boost::assign::map_list_of - ("pos", NORMALIZED_PAIR) - ("size", NORMALIZED_PAIR) - ("maxSize", NORMALIZED_PAIR) - ("origin", NORMALIZED_PAIR) - ("path", PATH) - ("tile", BOOLEAN) - ("color", COLOR))) - ("text", makeMap(boost::assign::map_list_of - ("pos", NORMALIZED_PAIR) - ("size", NORMALIZED_PAIR) - ("text", STRING) - ("color", COLOR) - ("fontPath", PATH) - ("fontSize", FLOAT) - ("alignment", STRING) - ("forceUppercase", BOOLEAN) - ("lineSpacing", FLOAT))) - ("textlist", makeMap(boost::assign::map_list_of - ("pos", NORMALIZED_PAIR) - ("size", NORMALIZED_PAIR) - ("selectorColor", COLOR) - ("selectedColor", COLOR) - ("primaryColor", COLOR) - ("secondaryColor", COLOR) - ("fontPath", PATH) - ("fontSize", FLOAT) - ("scrollSound", PATH) - ("alignment", STRING) - ("horizontalMargin", FLOAT) - ("forceUppercase", BOOLEAN) - ("lineSpacing", FLOAT))) - ("container", makeMap(boost::assign::map_list_of - ("pos", NORMALIZED_PAIR) - ("size", NORMALIZED_PAIR))) - ("ninepatch", makeMap(boost::assign::map_list_of - ("pos", NORMALIZED_PAIR) - ("size", NORMALIZED_PAIR) - ("path", PATH))) - ("datetime", makeMap(boost::assign::map_list_of - ("pos", NORMALIZED_PAIR) - ("size", NORMALIZED_PAIR) - ("color", COLOR) - ("fontPath", PATH) - ("fontSize", FLOAT) - ("forceUppercase", BOOLEAN))) - ("rating", makeMap(boost::assign::map_list_of - ("pos", NORMALIZED_PAIR) - ("size", NORMALIZED_PAIR) - ("filledPath", PATH) - ("unfilledPath", PATH))) - ("sound", makeMap(boost::assign::map_list_of - ("path", PATH))) - ("helpsystem", makeMap(boost::assign::map_list_of - ("pos", NORMALIZED_PAIR) - ("textColor", COLOR) - ("iconColor", COLOR) - ("fontPath", PATH) - ("fontSize", FLOAT))); - -namespace fs = boost::filesystem; +#include "utils/FileSystemUtil.h" +#include "utils/StringUtil.h" +#include "Log.h" +#include "platform.h" +#include "Settings.h" +#include +#include + +std::vector ThemeData::sSupportedViews { { "system" }, { "basic" }, { "detailed" }, { "grid" }, { "video" } }; +std::vector ThemeData::sSupportedFeatures { { "video" }, { "carousel" }, { "z-index" }, { "visible" } }; + +std::map> ThemeData::sElementMap { + { "image", { + { "pos", RESOLUTION_PAIR }, + { "size", RESOLUTION_PAIR }, + { "maxSize", RESOLUTION_PAIR }, + { "origin", NORMALIZED_PAIR }, + { "rotation", FLOAT }, + { "rotationOrigin", NORMALIZED_PAIR }, + { "path", PATH }, + { "default", PATH }, + { "tile", BOOLEAN }, + { "color", COLOR }, + { "colorEnd", COLOR }, + { "gradientType", STRING }, + { "visible", BOOLEAN }, + { "zIndex", FLOAT } } }, + { "imagegrid", { + { "pos", RESOLUTION_PAIR }, + { "size", RESOLUTION_PAIR }, + { "margin", RESOLUTION_PAIR }, + { "padding", RESOLUTION_RECT }, + { "autoLayout", NORMALIZED_PAIR }, + { "autoLayoutSelectedZoom", FLOAT }, + { "gameImage", PATH }, + { "folderImage", PATH }, + { "imageSource", STRING }, + { "scrollDirection", STRING }, + { "centerSelection", BOOLEAN }, + { "scrollLoop", BOOLEAN }, + { "animate", BOOLEAN }, + { "zIndex", FLOAT }, + { "scrollSound", PATH } } }, + { "gridtile", { + { "size", RESOLUTION_PAIR }, + { "padding", RESOLUTION_PAIR }, + { "imageColor", COLOR }, + { "backgroundImage", PATH }, + { "backgroundCornerSize", RESOLUTION_PAIR }, + { "backgroundColor", COLOR }, + { "backgroundCenterColor", COLOR }, + { "backgroundEdgeColor", COLOR } } }, + { "text", { + { "pos", RESOLUTION_PAIR }, + { "size", RESOLUTION_PAIR }, + { "origin", NORMALIZED_PAIR }, + { "rotation", FLOAT }, + { "rotationOrigin", NORMALIZED_PAIR }, + { "text", STRING }, + { "backgroundColor", COLOR }, + { "fontPath", PATH }, + { "fontSize", RESOLUTION_FLOAT }, + { "color", COLOR }, + { "alignment", STRING }, + { "forceUppercase", BOOLEAN }, + { "lineSpacing", FLOAT }, + { "value", STRING }, + { "visible", BOOLEAN }, + { "zIndex", FLOAT } } }, + { "textlist", { + { "pos", RESOLUTION_PAIR }, + { "size", RESOLUTION_PAIR }, + { "origin", NORMALIZED_PAIR }, + { "selectorHeight", RESOLUTION_FLOAT }, + { "selectorOffsetY", RESOLUTION_FLOAT }, + { "selectorColor", COLOR }, + { "selectorColorEnd", COLOR }, + { "selectorGradientType", STRING }, + { "selectorImagePath", PATH }, + { "selectorImageTile", BOOLEAN }, + { "selectedColor", COLOR }, + { "primaryColor", COLOR }, + { "secondaryColor", COLOR }, + { "fontPath", PATH }, + { "fontSize", RESOLUTION_FLOAT }, + { "scrollSound", PATH }, + { "alignment", STRING }, + { "horizontalMargin", RESOLUTION_FLOAT }, + { "forceUppercase", BOOLEAN }, + { "lineSpacing", FLOAT }, + { "zIndex", FLOAT } } }, + { "container", { + { "pos", RESOLUTION_PAIR }, + { "size", RESOLUTION_PAIR }, + { "origin", NORMALIZED_PAIR }, + { "visible", BOOLEAN }, + { "zIndex", FLOAT } } }, + { "ninepatch", { + { "pos", RESOLUTION_PAIR }, + { "size", RESOLUTION_PAIR }, + { "path", PATH }, + { "visible", BOOLEAN }, + { "zIndex", FLOAT } } }, + { "datetime", { + { "pos", RESOLUTION_PAIR }, + { "size", RESOLUTION_PAIR }, + { "origin", NORMALIZED_PAIR }, + { "rotation", FLOAT }, + { "rotationOrigin", NORMALIZED_PAIR }, + { "backgroundColor", COLOR }, + { "fontPath", PATH }, + { "fontSize", RESOLUTION_FLOAT }, + { "color", COLOR }, + { "alignment", STRING }, + { "forceUppercase", BOOLEAN }, + { "lineSpacing", FLOAT }, + { "value", STRING }, + { "format", STRING }, + { "displayRelative", BOOLEAN }, + { "visible", BOOLEAN }, + { "zIndex", FLOAT } } }, + { "rating", { + { "pos", RESOLUTION_PAIR }, + { "size", RESOLUTION_PAIR }, + { "origin", NORMALIZED_PAIR }, + { "rotation", FLOAT }, + { "rotationOrigin", NORMALIZED_PAIR }, + { "color", COLOR }, + { "filledPath", PATH }, + { "unfilledPath", PATH }, + { "visible", BOOLEAN }, + { "zIndex", FLOAT } } }, + { "sound", { + { "path", PATH } } }, + { "helpsystem", { + { "pos", RESOLUTION_PAIR }, + { "origin", NORMALIZED_PAIR }, + { "textColor", COLOR }, + { "iconColor", COLOR }, + { "fontPath", PATH }, + { "fontSize", RESOLUTION_FLOAT } } }, + { "video", { + { "pos", RESOLUTION_PAIR }, + { "size", RESOLUTION_PAIR }, + { "maxSize", RESOLUTION_PAIR }, + { "origin", NORMALIZED_PAIR }, + { "rotation", FLOAT }, + { "rotationOrigin", NORMALIZED_PAIR }, + { "default", PATH }, + { "delay", FLOAT }, + { "visible", BOOLEAN }, + { "zIndex", FLOAT }, + { "showSnapshotNoVideo", BOOLEAN }, + { "showSnapshotDelay", BOOLEAN } } }, + { "carousel", { + { "type", STRING }, + { "size", RESOLUTION_PAIR }, + { "pos", RESOLUTION_PAIR }, + { "origin", NORMALIZED_PAIR }, + { "color", COLOR }, + { "colorEnd", COLOR }, + { "gradientType", STRING }, + { "logoScale", FLOAT }, + { "logoRotation", FLOAT }, + { "logoRotationOrigin", NORMALIZED_PAIR }, + { "logoSize", NORMALIZED_PAIR }, + { "logoAlignment", STRING }, + { "maxLogoCount", FLOAT }, + { "zIndex", FLOAT }, + { "scrollSound", PATH } } } +}; #define MINIMUM_THEME_FORMAT_VERSION 3 -#define CURRENT_THEME_FORMAT_VERSION 3 +#define CURRENT_THEME_FORMAT_VERSION 6 // helper unsigned int getHexColor(const char* str) @@ -111,48 +199,48 @@ unsigned int getHexColor(const char* str) return val; } -// helper -std::string resolvePath(const char* in, const fs::path& relative) +std::string ThemeData::resolvePlaceholders(const char* in) { - if(!in || in[0] == '\0') - return in; - - fs::path relPath = relative.parent_path(); - - boost::filesystem::path path(in); - - // we use boost filesystem here instead of just string checks because - // some directories could theoretically start with ~ or . - if(*path.begin() == "~") - { - path = getHomePath() + (in + 1); - }else if(*path.begin() == ".") - { - path = relPath / (in + 1); - } + std::string inStr(in); - return path.generic_string(); -} + if(inStr.empty()) + return inStr; + const size_t variableBegin = inStr.find("${"); + const size_t variableEnd = inStr.find("}", variableBegin); + if((variableBegin == std::string::npos) || (variableEnd == std::string::npos)) + return inStr; + + std::string prefix = inStr.substr(0, variableBegin); + std::string replace = inStr.substr(variableBegin + 2, variableEnd - (variableBegin + 2)); + std::string suffix = resolvePlaceholders(inStr.substr(variableEnd + 1).c_str()); + + return prefix + mVariables[replace] + suffix; +} ThemeData::ThemeData() { mVersion = 0; + mResolution = { 1, 1 }; } -void ThemeData::loadFile(const std::string& path) +void ThemeData::loadFile(std::map sysDataMap, const std::string& path) { mPaths.push_back(path); ThemeException error; error.setFiles(mPaths); - if(!fs::exists(path)) + if(!Utils::FileSystem::exists(path)) throw error << "File does not exist!"; mVersion = 0; + mResolution = { 1, 1 }; mViews.clear(); + mVariables.clear(); + + mVariables.insert(sysDataMap.cbegin(), sysDataMap.cend()); pugi::xml_document doc; pugi::xml_parse_result res = doc.load_file(path.c_str()); @@ -171,11 +259,29 @@ void ThemeData::loadFile(const std::string& path) if(mVersion < MINIMUM_THEME_FORMAT_VERSION) throw error << "Theme uses format version " << mVersion << ". Minimum supported version is " << MINIMUM_THEME_FORMAT_VERSION << "."; + // parse resolution + std::string resolution = root.child("resolution").text().as_string(""); + + if(resolution.size()) + { + size_t divider = resolution.find(' '); + + if(divider != std::string::npos) + { + std::string w = resolution.substr(0, divider); + std::string h = resolution.substr(divider, std::string::npos); + + mResolution.x() = (float)atof(w.c_str()); + mResolution.y() = (float)atof(h.c_str()); + } + } + + parseVariables(root); parseIncludes(root); parseViews(root); + parseFeatures(root); } - void ThemeData::parseIncludes(const pugi::xml_node& root) { ThemeException error; @@ -183,8 +289,8 @@ void ThemeData::parseIncludes(const pugi::xml_node& root) for(pugi::xml_node node = root.child("include"); node; node = node.next_sibling("include")) { - const char* relPath = node.text().get(); - std::string path = resolvePath(relPath, mPaths.back()); + std::string relPath = resolvePlaceholders(node.text().as_string()); + std::string path = Utils::FileSystem::resolveRelativePath(relPath, mPaths.back(), true, false); if(!ResourceManager::getInstance()->fileExists(path)) throw error << "Included file \"" << relPath << "\" not found! (resolved to \"" << path << "\")"; @@ -197,17 +303,58 @@ void ThemeData::parseIncludes(const pugi::xml_node& root) if(!result) throw error << "Error parsing file: \n " << result.description(); - pugi::xml_node root = includeDoc.child("theme"); - if(!root) + pugi::xml_node theme = includeDoc.child("theme"); + if(!theme) throw error << "Missing tag!"; - parseIncludes(root); - parseViews(root); + parseVariables(theme); + parseIncludes(theme); + parseViews(theme); + parseFeatures(theme); mPaths.pop_back(); } } +void ThemeData::parseFeatures(const pugi::xml_node& root) +{ + ThemeException error; + error.setFiles(mPaths); + + for(pugi::xml_node node = root.child("feature"); node; node = node.next_sibling("feature")) + { + if(!node.attribute("supported")) + throw error << "Feature missing \"supported\" attribute!"; + + const std::string supportedAttr = node.attribute("supported").as_string(); + + if (std::find(sSupportedFeatures.cbegin(), sSupportedFeatures.cend(), supportedAttr) != sSupportedFeatures.cend()) + { + parseViews(node); + } + } +} + +void ThemeData::parseVariables(const pugi::xml_node& root) +{ + ThemeException error; + error.setFiles(mPaths); + + pugi::xml_node variables = root.child("variables"); + + if(!variables) + return; + + for(pugi::xml_node_iterator it = variables.begin(); it != variables.end(); ++it) + { + std::string key = it->name(); + std::string val = resolvePlaceholders(it->text().as_string()); + + if (!val.empty()) + mVariables.insert(std::pair(key, val)); + } +} + void ThemeData::parseViews(const pugi::xml_node& root) { ThemeException error; @@ -229,9 +376,12 @@ void ThemeData::parseViews(const pugi::xml_node& root) viewKey = nameAttr.substr(prevOff, off - prevOff); prevOff = nameAttr.find_first_not_of(delim, off); off = nameAttr.find_first_of(delim, prevOff); - - ThemeView& view = mViews.insert(std::pair(viewKey, ThemeView())).first->second; - parseView(node, view); + + if (std::find(sSupportedViews.cbegin(), sSupportedViews.cend(), viewKey) != sSupportedViews.cend()) + { + ThemeView& view = mViews.insert(std::pair(viewKey, ThemeView())).first->second; + parseView(node, view); + } } } } @@ -247,7 +397,7 @@ void ThemeData::parseView(const pugi::xml_node& root, ThemeView& view) throw error << "Element of type \"" << node.name() << "\" missing \"name\" attribute!"; auto elemTypeIt = sElementMap.find(node.name()); - if(elemTypeIt == sElementMap.end()) + if(elemTypeIt == sElementMap.cend()) throw error << "Unknown element of type \"" << node.name() << "\"!"; const char* delim = " \t\r\n,"; @@ -259,11 +409,11 @@ void ThemeData::parseView(const pugi::xml_node& root, ThemeView& view) std::string elemKey = nameAttr.substr(prevOff, off - prevOff); prevOff = nameAttr.find_first_not_of(delim, off); off = nameAttr.find_first_of(delim, prevOff); - - parseElement(node, elemTypeIt->second, + + parseElement(node, elemTypeIt->second, view.elements.insert(std::pair(elemKey, ThemeElement())).first->second); - if(std::find(view.orderedKeys.begin(), view.orderedKeys.end(), elemKey) == view.orderedKeys.end()) + if(std::find(view.orderedKeys.cbegin(), view.orderedKeys.cend(), elemKey) == view.orderedKeys.cend()) view.orderedKeys.push_back(elemKey); } } @@ -277,37 +427,95 @@ void ThemeData::parseElement(const pugi::xml_node& root, const std::mapsecond) { - case NORMALIZED_PAIR: + case RESOLUTION_RECT: { - std::string str = std::string(node.text().as_string()); + Vector4f val; + + auto splits = Utils::String::delimitedStringToVector(str, " "); + if (splits.size() == 2) + { + val = Vector4f((float)atof(splits.at(0).c_str()), (float)atof(splits.at(1).c_str()), + (float)atof(splits.at(0).c_str()), (float)atof(splits.at(1).c_str())); + } + else if (splits.size() == 4) + { + val = Vector4f((float)atof(splits.at(0).c_str()), (float)atof(splits.at(1).c_str()), + (float)atof(splits.at(2).c_str()), (float)atof(splits.at(3).c_str())); + } + element.properties[node.name()] = val / Vector4f(mResolution.x(), mResolution.y(), mResolution.x(), mResolution.y()); + break; + } + case RESOLUTION_PAIR: + { size_t divider = str.find(' '); - if(divider == std::string::npos) + if(divider == std::string::npos) throw error << "invalid normalized pair (property \"" << node.name() << "\", value \"" << str.c_str() << "\")"; std::string first = str.substr(0, divider); std::string second = str.substr(divider, std::string::npos); - Eigen::Vector2f val(atof(first.c_str()), atof(second.c_str())); + Vector2f val((float)atof(first.c_str()), (float)atof(second.c_str())); + + element.properties[node.name()] = val / mResolution; + break; + } + case RESOLUTION_FLOAT: + { + float val = static_cast(strtod(str.c_str(), 0)); + element.properties[node.name()] = val / mResolution.y(); + break; + } + case NORMALIZED_RECT: + { + Vector4f val; + + auto splits = Utils::String::delimitedStringToVector(str, " "); + if (splits.size() == 2) + { + val = Vector4f((float)atof(splits.at(0).c_str()), (float)atof(splits.at(1).c_str()), + (float)atof(splits.at(0).c_str()), (float)atof(splits.at(1).c_str())); + } + else if (splits.size() == 4) + { + val = Vector4f((float)atof(splits.at(0).c_str()), (float)atof(splits.at(1).c_str()), + (float)atof(splits.at(2).c_str()), (float)atof(splits.at(3).c_str())); + } + + element.properties[node.name()] = val; + break; + } + case NORMALIZED_PAIR: + { + size_t divider = str.find(' '); + if(divider == std::string::npos) + throw error << "invalid normalized pair (property \"" << node.name() << "\", value \"" << str.c_str() << "\")"; + + std::string first = str.substr(0, divider); + std::string second = str.substr(divider, std::string::npos); + + Vector2f val((float)atof(first.c_str()), (float)atof(second.c_str())); element.properties[node.name()] = val; break; } case STRING: - element.properties[node.name()] = std::string(node.text().as_string()); + element.properties[node.name()] = str; break; case PATH: { - std::string path = resolvePath(node.text().as_string(), mPaths.back().string()); + std::string path = Utils::FileSystem::resolveRelativePath(str, mPaths.back(), true, false); if(!ResourceManager::getInstance()->fileExists(path)) { std::stringstream ss; @@ -321,33 +529,49 @@ void ThemeData::parseElement(const pugi::xml_node& root, const std::map(strtod(str.c_str(), 0)); + element.properties[node.name()] = floatVal; break; + } + case BOOLEAN: - element.properties[node.name()] = node.text().as_bool(); + { + // only look at first char + char first = str[0]; + // 1*, t* (true), T* (True), y* (yes), Y* (YES) + bool boolVal = (first == '1' || first == 't' || first == 'T' || first == 'y' || first == 'Y'); + + element.properties[node.name()] = boolVal; break; + } default: throw error << "Unknown ElementPropertyType for \"" << root.attribute("name").as_string() << "\", property " << node.name(); } } } +bool ThemeData::hasView(const std::string& view) +{ + auto viewIt = mViews.find(view); + return (viewIt != mViews.cend()); +} const ThemeData::ThemeElement* ThemeData::getElement(const std::string& view, const std::string& element, const std::string& expectedType) const { auto viewIt = mViews.find(view); - if(viewIt == mViews.end()) + if(viewIt == mViews.cend()) return NULL; // not found auto elemIt = viewIt->second.elements.find(element); - if(elemIt == viewIt->second.elements.end()) return NULL; + if(elemIt == viewIt->second.elements.cend()) return NULL; if(elemIt->second.type != expectedType && !expectedType.empty()) { - LOG(LogWarning) << " requested mismatched theme type for [" << view << "." << element << "] - expected \"" + LOG(LogWarning) << " requested mismatched theme type for [" << view << "." << element << "] - expected \"" << expectedType << "\", got \"" << elemIt->second.type << "\""; return NULL; } @@ -362,12 +586,13 @@ const std::shared_ptr& ThemeData::getDefault() { theme = std::shared_ptr(new ThemeData()); - const std::string path = getHomePath() + "/.emulationstation/es_theme_default.xml"; - if(fs::exists(path)) + const std::string path = Utils::FileSystem::getHomePath() + "/.emulationstation/es_theme_default.xml"; + if(Utils::FileSystem::exists(path)) { try { - theme->loadFile(path); + std::map emptyMap; + theme->loadFile(emptyMap, path); } catch(ThemeException& e) { LOG(LogError) << e.what(); @@ -384,10 +609,10 @@ std::vector ThemeData::makeExtras(const std::shared_ptr comps; auto viewIt = theme->mViews.find(view); - if(viewIt == theme->mViews.end()) + if(viewIt == theme->mViews.cend()) return comps; - - for(auto it = viewIt->second.orderedKeys.begin(); it != viewIt->second.orderedKeys.end(); it++) + + for(auto it = viewIt->second.orderedKeys.cbegin(); it != viewIt->second.orderedKeys.cend(); it++) { ThemeElement& elem = viewIt->second.elements.at(*it); if(elem.extra) @@ -399,6 +624,7 @@ std::vector ThemeData::makeExtras(const std::shared_ptrsetDefaultZIndex(10); comp->applyTheme(theme, view, *it, ThemeFlags::ALL); comps.push_back(comp); } @@ -407,44 +633,27 @@ std::vector ThemeData::makeExtras(const std::shared_ptr& extras) -{ - // delete old extras (if any) - for(auto it = mExtras.begin(); it != mExtras.end(); it++) - delete *it; - - mExtras = extras; - for(auto it = mExtras.begin(); it != mExtras.end(); it++) - addChild(*it); -} - -ThemeExtras::~ThemeExtras() -{ - for(auto it = mExtras.begin(); it != mExtras.end(); it++) - delete *it; -} - - std::map ThemeData::getThemeSets() { std::map sets; static const size_t pathCount = 2; - fs::path paths[pathCount] = { - "/etc/emulationstation/themes", - getHomePath() + "/.emulationstation/themes" + std::string paths[pathCount] = + { + "/etc/emulationstation/themes", + Utils::FileSystem::getHomePath() + "/.emulationstation/themes" }; - fs::directory_iterator end; - for(size_t i = 0; i < pathCount; i++) { - if(!fs::is_directory(paths[i])) + if(!Utils::FileSystem::isDirectory(paths[i])) continue; - for(fs::directory_iterator it(paths[i]); it != end; ++it) + Utils::FileSystem::stringList dirContent = Utils::FileSystem::getDirContent(paths[i]); + + for(Utils::FileSystem::stringList::const_iterator it = dirContent.cbegin(); it != dirContent.cend(); ++it) { - if(fs::is_directory(*it)) + if(Utils::FileSystem::isDirectory(*it)) { ThemeSet set = {*it}; sets[set.getName()] = set; @@ -455,20 +664,20 @@ std::map ThemeData::getThemeSets() return sets; } -fs::path ThemeData::getThemeFromCurrentSet(const std::string& system) +std::string ThemeData::getThemeFromCurrentSet(const std::string& system) { - auto themeSets = ThemeData::getThemeSets(); + std::map themeSets = ThemeData::getThemeSets(); if(themeSets.empty()) { // no theme sets available return ""; } - auto set = themeSets.find(Settings::getInstance()->getString("ThemeSet")); - if(set == themeSets.end()) + std::map::const_iterator set = themeSets.find(Settings::getInstance()->getString("ThemeSet")); + if(set == themeSets.cend()) { // currently selected theme set is missing, so just pick the first available set - set = themeSets.begin(); + set = themeSets.cbegin(); Settings::getInstance()->setString("ThemeSet", set->first); } diff --git a/es-core/src/ThemeData.h b/es-core/src/ThemeData.h index 268f0753f1..ae91d7c8de 100644 --- a/es-core/src/ThemeData.h +++ b/es-core/src/ThemeData.h @@ -1,23 +1,25 @@ #pragma once +#ifndef ES_CORE_THEME_DATA_H +#define ES_CORE_THEME_DATA_H -#include -#include -#include -#include +#include "math/Vector2f.h" +#include "math/Vector4f.h" +#include "utils/FileSystemUtil.h" #include -#include -#include -#include -#include -#include "pugixml/pugixml.hpp" -#include "GuiComponent.h" +#include +#include +#include +#include + +namespace pugi { class xml_node; } template class TextListComponent; -class Sound; +class GuiComponent; class ImageComponent; class NinePatchComponent; +class Sound; class TextComponent; class Window; @@ -37,7 +39,10 @@ namespace ThemeFlags TEXT = 512, FORCE_UPPERCASE = 1024, LINE_SPACING = 2048, - + DELAY = 4096, + Z_INDEX = 8192, + ROTATION = 16384, + VISIBLE = 32768, ALL = 0xFFFFFFFF }; } @@ -51,12 +56,12 @@ class ThemeException : public std::exception template friend ThemeException& operator<<(ThemeException& e, T msg); - - inline void setFiles(const std::deque& deque) + + inline void setFiles(const std::deque& deque) { - *this << "from theme \"" << deque.front().string() << "\"\n"; - for(auto it = deque.begin() + 1; it != deque.end(); it++) - *this << " (from included file \"" << (*it).string() << "\")\n"; + *this << "from theme \"" << deque.front() << "\"\n"; + for(auto it = deque.cbegin() + 1; it != deque.cend(); it++) + *this << " (from included file \"" << (*it) << "\")\n"; *this << " "; } }; @@ -70,25 +75,12 @@ ThemeException& operator<<(ThemeException& e, T appendMsg) return e; } -class ThemeExtras : public GuiComponent -{ -public: - ThemeExtras(Window* window) : GuiComponent(window) {}; - virtual ~ThemeExtras(); - - // will take ownership of the components within extras (delete them in destructor or when setExtras is called again) - void setExtras(const std::vector& extras); - -private: - std::vector mExtras; -}; - struct ThemeSet { - boost::filesystem::path path; + std::string path; - inline std::string getName() const { return path.stem().string(); } - inline boost::filesystem::path getThemePath(const std::string& system) const { return path/system/"theme.xml"; } + inline std::string getName() const { return Utils::FileSystem::getStem(path); } + inline std::string getThemePath(const std::string& system) const { return path + "/" + system + "/theme.xml"; } }; class ThemeData @@ -101,12 +93,38 @@ class ThemeData bool extra; std::string type; - std::map< std::string, boost::variant > properties; + struct Property + { + void operator= (const Vector4f& value) { r = value; v = Vector2f(value.x(), value.y()); } + void operator= (const Vector2f& value) { v = value; } + void operator= (const std::string& value) { s = value; } + void operator= (const unsigned int& value) { i = value; } + void operator= (const float& value) { f = value; } + void operator= (const bool& value) { b = value; } + + Vector4f r; + Vector2f v; + std::string s; + unsigned int i; + float f; + bool b; + }; + + std::map< std::string, Property > properties; template - T get(const std::string& prop) const { return boost::get(properties.at(prop)); } - - inline bool has(const std::string& prop) const { return (properties.find(prop) != properties.end()); } + const T get(const std::string& prop) const + { + if( std::is_same::value) return *(const T*)&properties.at(prop).v; + else if(std::is_same::value) return *(const T*)&properties.at(prop).s; + else if(std::is_same::value) return *(const T*)&properties.at(prop).i; + else if(std::is_same::value) return *(const T*)&properties.at(prop).f; + else if(std::is_same::value) return *(const T*)&properties.at(prop).b; + else if(std::is_same::value) return *(const T*)&properties.at(prop).r; + return T(); + } + + inline bool has(const std::string& prop) const { return (properties.find(prop) != properties.cend()); } }; private: @@ -122,10 +140,14 @@ class ThemeData ThemeData(); // throws ThemeException - void loadFile(const std::string& path); + void loadFile(std::map sysDataMap, const std::string& path); enum ElementPropertyType { + RESOLUTION_RECT, + RESOLUTION_PAIR, + RESOLUTION_FLOAT, + NORMALIZED_RECT, NORMALIZED_PAIR, PATH, STRING, @@ -134,6 +156,8 @@ class ThemeData BOOLEAN }; + bool hasView(const std::string& view); + // If expectedType is an empty string, will do no type checking. const ThemeElement* getElement(const std::string& view, const std::string& element, const std::string& expectedType) const; @@ -142,18 +166,28 @@ class ThemeData static const std::shared_ptr& getDefault(); static std::map getThemeSets(); - static boost::filesystem::path getThemeFromCurrentSet(const std::string& system); + static std::string getThemeFromCurrentSet(const std::string& system); private: static std::map< std::string, std::map > sElementMap; + static std::vector sSupportedFeatures; + static std::vector sSupportedViews; - std::deque mPaths; + std::deque mPaths; float mVersion; + Vector2f mResolution; + void parseFeatures(const pugi::xml_node& themeRoot); void parseIncludes(const pugi::xml_node& themeRoot); + void parseVariables(const pugi::xml_node& root); void parseViews(const pugi::xml_node& themeRoot); void parseView(const pugi::xml_node& viewNode, ThemeView& view); void parseElement(const pugi::xml_node& elementNode, const std::map& typeMap, ThemeElement& element); std::map mViews; + + std::string resolvePlaceholders(const char* in); + std::map mVariables; }; + +#endif // ES_CORE_THEME_DATA_H diff --git a/es-core/src/Util.cpp b/es-core/src/Util.cpp deleted file mode 100644 index 198e10a820..0000000000 --- a/es-core/src/Util.cpp +++ /dev/null @@ -1,190 +0,0 @@ -#include "Util.h" -#include "resources/ResourceManager.h" -#include "platform.h" - -namespace fs = boost::filesystem; - -std::string strToUpper(const char* from) -{ - std::string str(from); - for(unsigned int i = 0; i < str.size(); i++) - str[i] = toupper(from[i]); - return str; -} - -std::string& strToUpper(std::string& str) -{ - for(unsigned int i = 0; i < str.size(); i++) - str[i] = toupper(str[i]); - - return str; -} - -std::string strToUpper(const std::string& str) -{ - return strToUpper(str.c_str()); -} - - -#if _MSC_VER < 1800 -float round(float num) -{ - return (float)((int)(num + 0.5f)); -} -#endif - -Eigen::Affine3f& roundMatrix(Eigen::Affine3f& mat) -{ - mat.translation()[0] = round(mat.translation()[0]); - mat.translation()[1] = round(mat.translation()[1]); - return mat; -} - -Eigen::Affine3f roundMatrix(const Eigen::Affine3f& mat) -{ - Eigen::Affine3f ret = mat; - roundMatrix(ret); - return ret; -} - -Eigen::Vector3f roundVector(const Eigen::Vector3f& vec) -{ - Eigen::Vector3f ret = vec; - ret[0] = round(ret[0]); - ret[1] = round(ret[1]); - ret[2] = round(ret[2]); - return ret; -} - -Eigen::Vector2f roundVector(const Eigen::Vector2f& vec) -{ - Eigen::Vector2f ret = vec; - ret[0] = round(ret[0]); - ret[1] = round(ret[1]); - return ret; -} - -// embedded resources, e.g. ":/font.ttf", need to be properly handled too -std::string getCanonicalPath(const std::string& path) -{ - if(path.empty() || !boost::filesystem::exists(path)) - return path; - - return boost::filesystem::canonical(path).generic_string(); -} - -// expands "./my/path.sfc" to "[relativeTo]/my/path.sfc" -// if allowHome is true, also expands "~/my/path.sfc" to "/home/pi/my/path.sfc" -fs::path resolvePath(const fs::path& path, const fs::path& relativeTo, bool allowHome) -{ - // nothing here - if(path.begin() == path.end()) - return path; - - if(*path.begin() == ".") - { - fs::path ret = relativeTo; - for(auto it = ++path.begin(); it != path.end(); ++it) - ret /= *it; - return ret; - } - - if(allowHome && *path.begin() == "~") - { - fs::path ret = getHomePath(); - for(auto it = ++path.begin(); it != path.end(); ++it) - ret /= *it; - return ret; - } - - return path; -} - -// example: removeCommonPath("/home/pi/roms/nes/foo/bar.nes", "/home/pi/roms/nes/") returns "foo/bar.nes" -fs::path removeCommonPath(const fs::path& path, const fs::path& relativeTo, bool& contains) -{ - // if either of these doesn't exist, fs::canonical() is going to throw an error - if(!fs::exists(path) || !fs::exists(relativeTo)) - { - contains = false; - return path; - } - - fs::path p = fs::canonical(path); - fs::path r = fs::canonical(relativeTo); - - if(p.root_path() != r.root_path()) - { - contains = false; - return p; - } - - fs::path result; - - // find point of divergence - auto itr_path = p.begin(); - auto itr_relative_to = r.begin(); - while(*itr_path == *itr_relative_to && itr_path != p.end() && itr_relative_to != r.end()) - { - ++itr_path; - ++itr_relative_to; - } - - if(itr_relative_to != r.end()) - { - contains = false; - return p; - } - - while(itr_path != p.end()) - { - if(*itr_path != fs::path(".")) - result = result / *itr_path; - - ++itr_path; - } - - contains = true; - return result; -} - -// usage: makeRelativePath("/path/to/my/thing.sfc", "/path/to") -> "./my/thing.sfc" -// usage: makeRelativePath("/home/pi/my/thing.sfc", "/path/to", true) -> "~/my/thing.sfc" -fs::path makeRelativePath(const fs::path& path, const fs::path& relativeTo, bool allowHome) -{ - bool contains = false; - - fs::path ret = removeCommonPath(path, relativeTo, contains); - if(contains) - { - // success - ret = "." / ret; - return ret; - } - - if(allowHome) - { - contains = false; - std::string homePath = getHomePath(); - ret = removeCommonPath(path, homePath, contains); - if(contains) - { - // success - ret = "~" / ret; - return ret; - } - } - - // nothing could be resolved - return path; -} - -boost::posix_time::ptime string_to_ptime(const std::string& str, const std::string& fmt) -{ - std::istringstream ss(str); - ss.imbue(std::locale(std::locale::classic(), new boost::posix_time::time_input_facet(fmt))); //std::locale handles deleting the facet - boost::posix_time::ptime time; - ss >> time; - - return time; -} diff --git a/es-core/src/Util.h b/es-core/src/Util.h deleted file mode 100644 index 5bf2a12752..0000000000 --- a/es-core/src/Util.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -std::string strToUpper(const char* from); -std::string& strToUpper(std::string& str); -std::string strToUpper(const std::string& str); - -Eigen::Affine3f& roundMatrix(Eigen::Affine3f& mat); -Eigen::Affine3f roundMatrix(const Eigen::Affine3f& mat); - -Eigen::Vector3f roundVector(const Eigen::Vector3f& vec); -Eigen::Vector2f roundVector(const Eigen::Vector2f& vec); - -float round(float num); - -std::string getCanonicalPath(const std::string& str); - -// example: removeCommonPath("/home/pi/roms/nes/foo/bar.nes", "/home/pi/roms/nes/") returns "foo/bar.nes" -boost::filesystem::path removeCommonPath(const boost::filesystem::path& path, const boost::filesystem::path& relativeTo, bool& contains); - -// usage: makeRelativePath("/path/to/my/thing.sfc", "/path/to") -> "./my/thing.sfc" -// usage: makeRelativePath("/home/pi/my/thing.sfc", "/path/to", true) -> "~/my/thing.sfc" -boost::filesystem::path makeRelativePath(const boost::filesystem::path& path, const boost::filesystem::path& relativeTo, bool allowHome); - -// expands "./my/path.sfc" to "[relativeTo]/my/path.sfc" -// if allowHome is true, also expands "~/my/path.sfc" to "/home/pi/my/path.sfc" -boost::filesystem::path resolvePath(const boost::filesystem::path& path, const boost::filesystem::path& relativeTo, bool allowHome); - -boost::posix_time::ptime string_to_ptime(const std::string& str, const std::string& fmt = "%Y%m%dT%H%M%S%F%q"); diff --git a/es-core/src/Window.cpp b/es-core/src/Window.cpp index 76bb1754e3..42c9bfa746 100644 --- a/es-core/src/Window.cpp +++ b/es-core/src/Window.cpp @@ -1,19 +1,23 @@ #include "Window.h" -#include -#include "Renderer.h" -#include "AudioManager.h" -#include "Log.h" -#include "Settings.h" -#include + #include "components/HelpComponent.h" #include "components/ImageComponent.h" +#include "resources/Font.h" +#include "resources/TextureResource.h" +#include "Log.h" +#include "Scripting.h" +#include +#include -Window::Window() : mNormalizeNextUpdate(false), mFrameTimeElapsed(0), mFrameCountElapsed(0), mAverageDeltaTime(10), - mAllowSleep(true), mSleeping(false), mTimeSinceLastInput(0) +#ifdef WIN32 +#include +#endif + +Window::Window() : mNormalizeNextUpdate(false), mFrameTimeElapsed(0), mFrameCountElapsed(0), mAverageDeltaTime(10), + mAllowSleep(true), mSleeping(false), mTimeSinceLastInput(0), mScreenSaver(NULL), mRenderScreenSaver(false), mInfoPopup(NULL) { mHelp = new HelpComponent(this); mBackgroundOverlay = new ImageComponent(this); - mBackgroundOverlay->setImage(":/scroll_gradient.png"); } Window::~Window() @@ -23,26 +27,34 @@ Window::~Window() // delete all our GUIs while(peekGui()) delete peekGui(); - + delete mHelp; } void Window::pushGui(GuiComponent* gui) { + if (mGuiStack.size() > 0) + { + auto& top = mGuiStack.back(); + top->topWindow(false); + } mGuiStack.push_back(gui); gui->updateHelpPrompts(); } void Window::removeGui(GuiComponent* gui) { - for(auto i = mGuiStack.begin(); i != mGuiStack.end(); i++) + for(auto i = mGuiStack.cbegin(); i != mGuiStack.cend(); i++) { if(*i == gui) { i = mGuiStack.erase(i); - if(i == mGuiStack.end() && mGuiStack.size()) // we just popped the stack and the stack is not empty + if(i == mGuiStack.cend() && mGuiStack.size()) // we just popped the stack and the stack is not empty + { mGuiStack.back()->updateHelpPrompts(); + mGuiStack.back()->topWindow(true); + } return; } @@ -57,16 +69,14 @@ GuiComponent* Window::peekGui() return mGuiStack.back(); } -bool Window::init(unsigned int width, unsigned int height) +bool Window::init() { - if(!Renderer::init(width, height)) + if(!Renderer::init()) { LOG(LogError) << "Renderer failed to initialize!"; return false; } - InputManager::getInstance()->init(); - ResourceManager::getInstance()->reloadAll(); //keep a reference to the default fonts, so they don't keep getting destroyed/recreated @@ -77,6 +87,7 @@ bool Window::init(unsigned int width, unsigned int height) mDefaultFonts.push_back(Font::get(FONT_SIZE_LARGE)); } + mBackgroundOverlay->setImage(":/scroll_gradient.png"); mBackgroundOverlay->setResize((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); // update our help because font sizes probably changed @@ -88,7 +99,11 @@ bool Window::init(unsigned int width, unsigned int height) void Window::deinit() { - InputManager::getInstance()->deinit(); + // Hide all GUI elements on uninitialisation - this disable + for(auto i = mGuiStack.cbegin(); i != mGuiStack.cend(); i++) + { + (*i)->onHide(); + } ResourceManager::getInstance()->unloadAll(); Renderer::deinit(); } @@ -101,31 +116,44 @@ void Window::textInput(const char* text) void Window::input(InputConfig* config, Input input) { - if(mSleeping) + if (mScreenSaver && mScreenSaver->isScreenSaverActive() && Settings::getInstance()->getBool("ScreenSaverControls") + && mScreenSaver->inputDuringScreensaver(config, input)) { - // wake up mTimeSinceLastInput = 0; + return; + } + + if (mSleeping) + { mSleeping = false; + mTimeSinceLastInput = 0; onWake(); return; } mTimeSinceLastInput = 0; + if (input.value != 0 && cancelScreenSaver()) + return; - if(config->getDeviceId() == DEVICE_KEYBOARD && input.value && input.id == SDLK_g && SDL_GetModState() & KMOD_LCTRL && Settings::getInstance()->getBool("Debug")) + bool dbg_keyboard_key_press = Settings::getInstance()->getBool("Debug") && config->getDeviceId() == DEVICE_KEYBOARD && input.value; + if (dbg_keyboard_key_press && input.id == SDLK_g && SDL_GetModState() & KMOD_LCTRL) { // toggle debug grid with Ctrl-G Settings::getInstance()->setBool("DebugGrid", !Settings::getInstance()->getBool("DebugGrid")); } - else if(config->getDeviceId() == DEVICE_KEYBOARD && input.value && input.id == SDLK_t && SDL_GetModState() & KMOD_LCTRL && Settings::getInstance()->getBool("Debug")) + else if (dbg_keyboard_key_press && input.id == SDLK_t && SDL_GetModState() & KMOD_LCTRL) { // toggle TextComponent debug view with Ctrl-T Settings::getInstance()->setBool("DebugText", !Settings::getInstance()->getBool("DebugText")); } - else + else if (dbg_keyboard_key_press && input.id == SDLK_i && SDL_GetModState() & KMOD_LCTRL) { - if(peekGui()) - this->peekGui()->input(config, input); + // toggle TextComponent debug view with Ctrl-I + Settings::getInstance()->setBool("DebugImage", !Settings::getInstance()->getBool("DebugImage")); + } + else if (peekGui()) + { + this->peekGui()->input(config, input); // this is where the majority of inputs will be consumed: the GuiComponent Stack } } @@ -143,21 +171,22 @@ void Window::update(int deltaTime) if(mFrameTimeElapsed > 500) { mAverageDeltaTime = mFrameTimeElapsed / mFrameCountElapsed; - + if(Settings::getInstance()->getBool("DrawFramerate")) { std::stringstream ss; - + // fps ss << std::fixed << std::setprecision(1) << (1000.0f * (float)mFrameCountElapsed / (float)mFrameTimeElapsed) << "fps, "; ss << std::fixed << std::setprecision(2) << ((float)mFrameTimeElapsed / (float)mFrameCountElapsed) << "ms"; // vram - float textureVramUsageMb = TextureResource::getTotalMemUsage() / 1000.0f / 1000.0f;; - float fontVramUsageMb = Font::getTotalMemUsage() / 1000.0f / 1000.0f;; - float totalVramUsageMb = textureVramUsageMb + fontVramUsageMb; - ss << "\nVRAM: " << totalVramUsageMb << "mb (texs: " << textureVramUsageMb << "mb, fonts: " << fontVramUsageMb << "mb)"; + float textureVramUsageMb = TextureResource::getTotalMemUsage() / 1000.0f / 1000.0f; + float textureTotalUsageMb = TextureResource::getTotalTextureSize() / 1000.0f / 1000.0f; + float fontVramUsageMb = Font::getTotalMemUsage() / 1000.0f / 1000.0f; + ss << "\nFont VRAM: " << fontVramUsageMb << " Tex VRAM: " << textureVramUsageMb << + " Tex Max: " << textureTotalUsageMb; mFrameDataText = std::unique_ptr(mDefaultFonts.at(1)->buildTextCache(ss.str(), 50.f, 50.f, 0xFF00FFFF)); } @@ -169,11 +198,15 @@ void Window::update(int deltaTime) if(peekGui()) peekGui()->update(deltaTime); + + // Update the screensaver + if (mScreenSaver) + mScreenSaver->update(deltaTime); } void Window::render() { - Eigen::Affine3f transform = Eigen::Affine3f::Identity(); + Transform4x4f transform = Transform4x4f::Identity(); mRenderedHelpPrompts = false; @@ -196,16 +229,30 @@ void Window::render() if(Settings::getInstance()->getBool("DrawFramerate") && mFrameDataText) { - Renderer::setMatrix(Eigen::Affine3f::Identity()); + Renderer::setMatrix(Transform4x4f::Identity()); mDefaultFonts.at(1)->renderTextCache(mFrameDataText.get()); } unsigned int screensaverTime = (unsigned int)Settings::getInstance()->getInt("ScreenSaverTime"); - if(mTimeSinceLastInput >= screensaverTime && screensaverTime != 0 && mAllowSleep) + if(mTimeSinceLastInput >= screensaverTime && screensaverTime != 0) + startScreenSaver(); + + // Always call the screensaver render function regardless of whether the screensaver is active + // or not because it may perform a fade on transition + renderScreenSaver(); + + if(mInfoPopup) + { + mInfoPopup->render(transform); + } + + if(mTimeSinceLastInput >= screensaverTime && screensaverTime != 0) { - // go to sleep - mSleeping = true; - onSleep(); + unsigned int systemSleepTime = (unsigned int)Settings::getInstance()->getInt("SystemSleepTime"); + if(!isProcessing() && mAllowSleep && systemSleepTime != 0 && mTimeSinceLastInput >= systemSleepTime) { + mSleeping = true; + onSleep(); + } } } @@ -224,32 +271,54 @@ void Window::setAllowSleep(bool sleep) mAllowSleep = sleep; } -void Window::renderLoadingScreen() +void Window::renderLoadingScreen(std::string text, float percent, unsigned char opacity) { - Eigen::Affine3f trans = Eigen::Affine3f::Identity(); + Transform4x4f trans = Transform4x4f::Identity(); Renderer::setMatrix(trans); - Renderer::drawRect(0, 0, Renderer::getScreenWidth(), Renderer::getScreenHeight(), 0xFFFFFFFF); + Renderer::drawRect(0.0f, 0.0f, Renderer::getScreenWidth(), Renderer::getScreenHeight(), 0x000000FF, 0x000000FF); - ImageComponent splash(this); + if (percent >= 0) + { + float baseHeight = 0.04f; + + float w = Renderer::getScreenWidth() / 2; + float h = Renderer::getScreenHeight() * baseHeight; + + float x = Renderer::getScreenWidth() / 2 - w / 2; + float y = Renderer::getScreenHeight() - (Renderer::getScreenHeight() * 3 * baseHeight); + + Renderer::drawRect(x, y, w, h, 0x25252500 | opacity, 0x25252500 | opacity); + Renderer::drawRect(x, y, (w*percent), h, 0x006C9E00 | opacity, 0x006C9E00 | opacity); // 0xFFFFFFFF + } + + ImageComponent splash(this, true); splash.setResize(Renderer::getScreenWidth() * 0.6f, 0.0f); splash.setImage(":/splash.svg"); splash.setPosition((Renderer::getScreenWidth() - splash.getSize().x()) / 2, (Renderer::getScreenHeight() - splash.getSize().y()) / 2 * 0.6f); splash.render(trans); auto& font = mDefaultFonts.at(1); - TextCache* cache = font->buildTextCache("LOADING...", 0, 0, 0x656565FF); - trans = trans.translate(Eigen::Vector3f(round((Renderer::getScreenWidth() - cache->metrics.size.x()) / 2.0f), - round(Renderer::getScreenHeight() * 0.835f), 0.0f)); + TextCache* cache = font->buildTextCache(text, 0, 0, 0x656565FF); + + float x = Math::round((Renderer::getScreenWidth() - cache->metrics.size.x()) / 2.0f); + float y = Math::round(Renderer::getScreenHeight() * 0.78f); + trans = trans.translate(Vector3f(x, y, 0.0f)); Renderer::setMatrix(trans); font->renderTextCache(cache); delete cache; Renderer::swapBuffers(); + +#ifdef WIN32 + // Avoid Window Freezing on Windows + SDL_Event event; + while (SDL_PollEvent(&event)); +#endif } void Window::renderHelpPromptsEarly() { - mHelp->render(Eigen::Affine3f::Identity()); + mHelp->render(Transform4x4f::Identity()); mRenderedHelpPrompts = true; } @@ -262,20 +331,20 @@ void Window::setHelpPrompts(const std::vector& prompts, const HelpSt std::map inputSeenMap; std::map mappedToSeenMap; - for(auto it = prompts.begin(); it != prompts.end(); it++) + for(auto it = prompts.cbegin(); it != prompts.cend(); it++) { // only add it if the same icon hasn't already been added - if(inputSeenMap.insert(std::make_pair(it->first, true)).second) + if(inputSeenMap.emplace(it->first, true).second) { // this symbol hasn't been seen yet, what about the action name? auto mappedTo = mappedToSeenMap.find(it->second); - if(mappedTo != mappedToSeenMap.end()) + if(mappedTo != mappedToSeenMap.cend()) { // yes, it has! // can we combine? (dpad only) - if((it->first == "up/down" && addPrompts.at(mappedTo->second).first == "left/right") || - (it->first == "left/right" && addPrompts.at(mappedTo->second).first == "up/down")) + if((it->first == "up/down" && addPrompts.at(mappedTo->second).first != "left/right") || + (it->first == "left/right" && addPrompts.at(mappedTo->second).first != "up/down")) { // yes! addPrompts.at(mappedTo->second).first = "up/down/left/right"; @@ -286,7 +355,7 @@ void Window::setHelpPrompts(const std::vector& prompts, const HelpSt } }else{ // no, it hasn't! - mappedToSeenMap.insert(std::pair(it->second, addPrompts.size())); + mappedToSeenMap.emplace(it->second, (int)addPrompts.size()); addPrompts.push_back(*it); } } @@ -294,16 +363,16 @@ void Window::setHelpPrompts(const std::vector& prompts, const HelpSt // sort prompts so it goes [dpad_all] [dpad_u/d] [dpad_l/r] [a/b/x/y/l/r] [start/select] std::sort(addPrompts.begin(), addPrompts.end(), [](const HelpPrompt& a, const HelpPrompt& b) -> bool { - + static const char* map[] = { "up/down/left/right", "up/down", "left/right", - "a", "b", "x", "y", "l", "r", - "start", "select", + "a", "b", "x", "y", "l", "r", + "start", "select", NULL }; - + int i = 0; int aVal = 0; int bVal = 0; @@ -325,12 +394,64 @@ void Window::setHelpPrompts(const std::vector& prompts, const HelpSt void Window::onSleep() { - Renderer::setMatrix(Eigen::Affine3f::Identity()); - unsigned char opacity = Settings::getInstance()->getString("ScreenSaverBehavior") == "dim" ? 0xA0 : 0xFF; - Renderer::drawRect(0, 0, Renderer::getScreenWidth(), Renderer::getScreenHeight(), 0x00000000 | opacity); + if (Settings::getInstance()->getBool("Windowed")) { + LOG(LogInfo) << "running windowed. No further onSleep() processing."; + return; + } + + int gotErrors = Scripting::fireEvent("sleep"); + + if (gotErrors == 0 && mScreenSaver && mRenderScreenSaver) + { + mScreenSaver->stopScreenSaver(); + mRenderScreenSaver = false; + } } void Window::onWake() { + Scripting::fireEvent("wake"); +} + +bool Window::isProcessing() +{ + return count_if(mGuiStack.cbegin(), mGuiStack.cend(), [](GuiComponent* c) { return c->isProcessing(); }) > 0; +} + +void Window::startScreenSaver(SystemData* system) +{ + if (mScreenSaver && !mRenderScreenSaver) + { + Scripting::fireEvent("screensaver-start"); + // Tell the GUI components the screensaver is starting + for(auto i = mGuiStack.cbegin(); i != mGuiStack.cend(); i++) + (*i)->onScreenSaverActivate(); + mScreenSaver->startScreenSaver(system); + mRenderScreenSaver = true; + } +} + +bool Window::cancelScreenSaver() +{ + if (mScreenSaver && mRenderScreenSaver) + { + mScreenSaver->stopScreenSaver(); + mRenderScreenSaver = false; + Scripting::fireEvent("screensaver-stop"); + + // Tell the GUI components the screensaver has stopped + for(auto i = mGuiStack.cbegin(); i != mGuiStack.cend(); i++) + (*i)->onScreenSaverDeactivate(); + + return true; + } + + return false; +} + +void Window::renderScreenSaver() +{ + if (mScreenSaver) + mScreenSaver->renderScreenSaver(); } diff --git a/es-core/src/Window.h b/es-core/src/Window.h index 6576cb04a3..8ab3504c4a 100644 --- a/es-core/src/Window.h +++ b/es-core/src/Window.h @@ -1,29 +1,61 @@ #pragma once +#ifndef ES_CORE_WINDOW_H +#define ES_CORE_WInDOW_H -#include "GuiComponent.h" -#include -#include "resources/Font.h" -#include "InputManager.h" +#include "HelpPrompt.h" +#include "InputConfig.h" +#include "Settings.h" +#include + +class SystemData; +class FileData; +class Font; +class GuiComponent; class HelpComponent; class ImageComponent; +class InputConfig; +class TextCache; +class Transform4x4f; +struct HelpStyle; class Window { public: + class ScreenSaver { + public: + virtual void startScreenSaver(SystemData* system=NULL) = 0; + virtual void stopScreenSaver(bool toResume=false) = 0; + virtual void renderScreenSaver() = 0; + virtual bool allowSleep() = 0; + virtual void update(int deltaTime) = 0; + virtual bool isScreenSaverActive() = 0; + virtual FileData* getCurrentGame() = 0; + virtual void selectGame(bool launch) = 0; + virtual bool inputDuringScreensaver(InputConfig* config, Input input) = 0; + }; + + class InfoPopup { + public: + virtual void render(const Transform4x4f& parentTrans) = 0; + virtual void stop() = 0; + virtual ~InfoPopup() {}; + }; + Window(); ~Window(); void pushGui(GuiComponent* gui); void removeGui(GuiComponent* gui); GuiComponent* peekGui(); + inline int getGuiStackSize() { return (int)mGuiStack.size(); } void textInput(const char* text); void input(InputConfig* config, Input input); void update(int deltaTime); void render(); - bool init(unsigned int width = 0, unsigned int height = 0); + bool init(); void deinit(); void normalizeNextUpdate(); @@ -31,18 +63,32 @@ class Window inline bool isSleeping() const { return mSleeping; } bool getAllowSleep(); void setAllowSleep(bool sleep); - - void renderLoadingScreen(); + + void renderLoadingScreen(std::string text, float percent = -1, unsigned char opacity = 255); void renderHelpPromptsEarly(); // used to render HelpPrompts before a fade void setHelpPrompts(const std::vector& prompts, const HelpStyle& style); + void setScreenSaver(ScreenSaver* screenSaver) { mScreenSaver = screenSaver; } + void setInfoPopup(InfoPopup* infoPopup) { delete mInfoPopup; mInfoPopup = infoPopup; } + inline void stopInfoPopup() { if (mInfoPopup) mInfoPopup->stop(); }; + + void startScreenSaver(SystemData* system=NULL); + bool cancelScreenSaver(); + void renderScreenSaver(); + private: void onSleep(); void onWake(); - HelpComponent* mHelp; + // Returns true if at least one component on the stack is processing + bool isProcessing(); + + HelpComponent* mHelp; ImageComponent* mBackgroundOverlay; + ScreenSaver* mScreenSaver; + InfoPopup* mInfoPopup; + bool mRenderScreenSaver; std::vector mGuiStack; @@ -62,3 +108,5 @@ class Window bool mRenderedHelpPrompts; }; + +#endif // ES_CORE_WINDOW_H diff --git a/es-core/src/animations/Animation.h b/es-core/src/animations/Animation.h index e34dfb4384..8903199959 100644 --- a/es-core/src/animations/Animation.h +++ b/es-core/src/animations/Animation.h @@ -1,43 +1,13 @@ #pragma once - -#include +#ifndef ES_CORE_ANIMATIONS_ANIMATION_H +#define ES_CORE_ANIMATIONS_ANIMATION_H class Animation { public: virtual int getDuration() const = 0; virtual void apply(float t) = 0; + virtual ~Animation() = default; }; - -// useful helper/interpolation functions -inline float clamp(float min, float max, float val) -{ - if(val < min) - val = min; - else if(val > max) - val = max; - - return val; -} - -//http://en.wikipedia.org/wiki/Smoothstep -inline float smoothStep(float edge0, float edge1, float x) -{ - // Scale, and clamp x to 0..1 range - x = clamp(0, 1, (x - edge0)/(edge1 - edge0)); - - // Evaluate polynomial - return x*x*x*(x*(x*6 - 15) + 10); -} - -template -T lerp(const T& start, const T& end, float t) -{ - if(t <= 0.0f) - return start; - if(t >= 1.0f) - return end; - - return (start * (1 - t) + end * t); -} +#endif // ES_CORE_ANIMATIONS_ANIMATION_H diff --git a/es-core/src/animations/AnimationController.cpp b/es-core/src/animations/AnimationController.cpp index 245aeb9269..b872af3d07 100644 --- a/es-core/src/animations/AnimationController.cpp +++ b/es-core/src/animations/AnimationController.cpp @@ -1,5 +1,7 @@ #include "animations/AnimationController.h" +#include "animations/Animation.h" + AnimationController::AnimationController(Animation* anim, int delay, std::function finishedCallback, bool reverse) : mAnimation(anim), mFinishedCallback(finishedCallback), mReverse(reverse), mTime(-delay), mDelay(delay) { diff --git a/es-core/src/animations/AnimationController.h b/es-core/src/animations/AnimationController.h index 2d14f3d8e8..202a7a7b60 100644 --- a/es-core/src/animations/AnimationController.h +++ b/es-core/src/animations/AnimationController.h @@ -1,8 +1,10 @@ #pragma once +#ifndef ES_CORE_ANIMATIONS_ANIMATION_CONTROLLER_H +#define ES_CORE_ANIMATIONS_ANIMATION_CONTROLLER_H -#include #include -#include "animations/Animation.h" + +class Animation; class AnimationController { @@ -29,3 +31,5 @@ class AnimationController int mTime; int mDelay; }; + +#endif // ES_CORE_ANIMATIONS_ANIMATION_CONTROLLER_H diff --git a/es-core/src/animations/LambdaAnimation.h b/es-core/src/animations/LambdaAnimation.h index 35e1f958a9..4066e1d52c 100644 --- a/es-core/src/animations/LambdaAnimation.h +++ b/es-core/src/animations/LambdaAnimation.h @@ -1,4 +1,6 @@ #pragma once +#ifndef ES_CORE_ANIMATIONS_LAMBDA_ANIMATION_H +#define ES_CORE_ANIMATIONS_LAMBDA_ANIMATION_H #include "animations/Animation.h" @@ -8,6 +10,8 @@ class LambdaAnimation : public Animation public: LambdaAnimation(const std::function& func, int duration) : mFunction(func), mDuration(duration) {} + virtual ~LambdaAnimation() = default; + int getDuration() const override { return mDuration; } void apply(float t) override @@ -19,3 +23,5 @@ class LambdaAnimation : public Animation std::function mFunction; int mDuration; }; + +#endif // ES_CORE_ANIMATIONS_LAMBDA_ANIMATION_H diff --git a/es-core/src/components/AnimatedImageComponent.cpp b/es-core/src/components/AnimatedImageComponent.cpp index b13415309f..b0332fe65b 100644 --- a/es-core/src/components/AnimatedImageComponent.cpp +++ b/es-core/src/components/AnimatedImageComponent.cpp @@ -1,4 +1,7 @@ #include "components/AnimatedImageComponent.h" + +#include "components/ImageComponent.h" +#include "resources/ResourceManager.h" #include "Log.h" AnimatedImageComponent::AnimatedImageComponent(Window* window) : GuiComponent(window), mEnabled(false) @@ -22,7 +25,7 @@ void AnimatedImageComponent::load(const AnimationDef* def) auto img = std::unique_ptr(new ImageComponent(mWindow)); img->setResize(mSize.x(), mSize.y()); img->setImage(std::string(def->frames[i].path), false); - + mFrames.push_back(ImageFrame(std::move(img), def->frames[i].time)); } @@ -41,7 +44,7 @@ void AnimatedImageComponent::reset() void AnimatedImageComponent::onSizeChanged() { - for(auto it = mFrames.begin(); it != mFrames.end(); it++) + for(auto it = mFrames.cbegin(); it != mFrames.cend(); it++) { it->first->setResize(mSize.x(), mSize.y()); } @@ -58,7 +61,7 @@ void AnimatedImageComponent::update(int deltaTime) { mCurrentFrame++; - if(mCurrentFrame == mFrames.size()) + if(mCurrentFrame == (int)mFrames.size()) { if(mLoop) { @@ -76,7 +79,7 @@ void AnimatedImageComponent::update(int deltaTime) } } -void AnimatedImageComponent::render(const Eigen::Affine3f& trans) +void AnimatedImageComponent::render(const Transform4x4f& trans) { if(mFrames.size()) mFrames.at(mCurrentFrame).first->render(getTransform() * trans); diff --git a/es-core/src/components/AnimatedImageComponent.h b/es-core/src/components/AnimatedImageComponent.h index da5918879f..c128ed30b5 100644 --- a/es-core/src/components/AnimatedImageComponent.h +++ b/es-core/src/components/AnimatedImageComponent.h @@ -1,5 +1,10 @@ +#pragma once +#ifndef ES_CORE_COMPONENTS_ANIMATED_IMAGE_COMPONENT_H +#define ES_CORE_COMPONENTS_ANIMATED_IMAGE_COMPONENT_H + #include "GuiComponent.h" -#include "ImageComponent.h" + +class ImageComponent; struct AnimationFrame { @@ -18,13 +23,13 @@ class AnimatedImageComponent : public GuiComponent { public: AnimatedImageComponent(Window* window); - + void load(const AnimationDef* def); // no reference to def is kept after loading is complete void reset(); // set to frame 0 void update(int deltaTime) override; - void render(const Eigen::Affine3f& trans) override; + void render(const Transform4x4f& trans) override; void onSizeChanged() override; @@ -38,3 +43,5 @@ class AnimatedImageComponent : public GuiComponent int mFrameAccumulator; int mCurrentFrame; }; + +#endif // ES_CORE_COMPONENTS_ANIMATED_IMAGE_COMPONENT_H diff --git a/es-core/src/components/BusyComponent.cpp b/es-core/src/components/BusyComponent.cpp index 184adcbc05..a37d690beb 100644 --- a/es-core/src/components/BusyComponent.cpp +++ b/es-core/src/components/BusyComponent.cpp @@ -1,8 +1,8 @@ #include "BusyComponent.h" #include "components/AnimatedImageComponent.h" +#include "components/ImageComponent.h" #include "components/TextComponent.h" -#include "Renderer.h" // animation definition AnimationFrame BUSY_ANIMATION_FRAMES[] = { @@ -13,8 +13,6 @@ AnimationFrame BUSY_ANIMATION_FRAMES[] = { }; const AnimationDef BUSY_ANIMATION_DEF = { BUSY_ANIMATION_FRAMES, 4, true }; -using namespace Eigen; - BusyComponent::BusyComponent(Window* window) : GuiComponent(window), mBackground(window, ":/frame.png"), mGrid(window, Vector2i(5, 3)) { @@ -47,7 +45,7 @@ void BusyComponent::onSizeChanged() mGrid.setColWidthPerc(3, textWidth / mSize.x()); mGrid.setRowHeightPerc(1, textHeight / mSize.y()); - + mBackground.fitTo(Vector2f(mGrid.getColWidth(1) + mGrid.getColWidth(2) + mGrid.getColWidth(3), textHeight + 2), mAnimation->getPosition(), Vector2f(0, 0)); } diff --git a/es-core/src/components/BusyComponent.h b/es-core/src/components/BusyComponent.h index 88f35dacb1..fe996a31cc 100644 --- a/es-core/src/components/BusyComponent.h +++ b/es-core/src/components/BusyComponent.h @@ -1,6 +1,10 @@ -#include "GuiComponent.h" +#pragma once +#ifndef ES_CORE_COMPONENTS_BUSY_COMPONENT_H +#define ES_CORE_COMPONENTS_BUSY_COMPONENT_H + #include "components/ComponentGrid.h" #include "components/NinePatchComponent.h" +#include "GuiComponent.h" class AnimatedImageComponent; class TextComponent; @@ -21,3 +25,5 @@ class BusyComponent : public GuiComponent std::shared_ptr mAnimation; std::shared_ptr mText; }; + +#endif // ES_CORE_COMPONENTS_BUSY_COMPONENT_H diff --git a/es-core/src/components/ButtonComponent.cpp b/es-core/src/components/ButtonComponent.cpp index 33f662589e..d0f47ce3a7 100644 --- a/es-core/src/components/ButtonComponent.cpp +++ b/es-core/src/components/ButtonComponent.cpp @@ -1,14 +1,13 @@ #include "components/ButtonComponent.h" -#include "Renderer.h" -#include "Window.h" -#include "Util.h" -#include "Log.h" + +#include "resources/Font.h" +#include "utils/StringUtil.h" ButtonComponent::ButtonComponent(Window* window, const std::string& text, const std::string& helpText, const std::function& func) : GuiComponent(window), mBox(window, ":/button.png"), - mFont(Font::get(FONT_SIZE_MEDIUM)), - mFocused(false), - mEnabled(true), + mFont(Font::get(FONT_SIZE_MEDIUM)), + mFocused(false), + mEnabled(true), mTextColorFocused(0xFFFFFFFF), mTextColorUnfocused(0x777777FF) { setPressedFunc(func); @@ -18,7 +17,7 @@ ButtonComponent::ButtonComponent(Window* window, const std::string& text, const void ButtonComponent::onSizeChanged() { - mBox.fitTo(mSize, Eigen::Vector3f::Zero(), Eigen::Vector2f(-32, -32)); + mBox.fitTo(mSize, Vector3f::Zero(), Vector2f(-32, -32)); } void ButtonComponent::setPressedFunc(std::function f) @@ -40,13 +39,13 @@ bool ButtonComponent::input(InputConfig* config, Input input) void ButtonComponent::setText(const std::string& text, const std::string& helpText) { - mText = strToUpper(text); + mText = Utils::String::toUpper(text); mHelpText = helpText; - + mTextCache = std::unique_ptr(mFont->buildTextCache(mText, 0, 0, getCurTextColor())); float minWidth = mFont->sizeText("DELETE").x() + 12; - setSize(std::max(mTextCache->metrics.size.x() + 12, minWidth), mTextCache->metrics.size.y()); + setSize(Math::max(mTextCache->metrics.size.x() + 12, minWidth), mTextCache->metrics.size.y()); updateHelpPrompts(); } @@ -84,16 +83,15 @@ void ButtonComponent::updateImage() mBox.setImagePath(mFocused ? ":/button_filled.png" : ":/button.png"); } -void ButtonComponent::render(const Eigen::Affine3f& parentTrans) +void ButtonComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = roundMatrix(parentTrans * getTransform()); - + Transform4x4f trans = parentTrans * getTransform(); + mBox.render(trans); if(mTextCache) { - Eigen::Vector3f centerOffset((mSize.x() - mTextCache->metrics.size.x()) / 2, (mSize.y() - mTextCache->metrics.size.y()) / 2, 0); - centerOffset = roundVector(centerOffset); + Vector3f centerOffset((mSize.x() - mTextCache->metrics.size.x()) / 2, (mSize.y() - mTextCache->metrics.size.y()) / 2, 0); trans = trans.translate(centerOffset); Renderer::setMatrix(trans); diff --git a/es-core/src/components/ButtonComponent.h b/es-core/src/components/ButtonComponent.h index 25cb76e4c9..2c25881f04 100644 --- a/es-core/src/components/ButtonComponent.h +++ b/es-core/src/components/ButtonComponent.h @@ -1,9 +1,11 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_BUTTON_COMPONENT_H +#define ES_CORE_COMPONENTS_BUTTON_COMPONENT_H -#include "GuiComponent.h" -#include -#include "resources/Font.h" #include "components/NinePatchComponent.h" +#include "GuiComponent.h" + +class TextCache; class ButtonComponent : public GuiComponent { @@ -15,7 +17,7 @@ class ButtonComponent : public GuiComponent void setEnabled(bool enable); bool input(InputConfig* config, Input input) override; - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; void setText(const std::string& text, const std::string& helpText); @@ -36,7 +38,7 @@ class ButtonComponent : public GuiComponent bool mEnabled; unsigned int mTextColorFocused; unsigned int mTextColorUnfocused; - + unsigned int getCurTextColor() const; void updateImage(); @@ -45,3 +47,5 @@ class ButtonComponent : public GuiComponent std::unique_ptr mTextCache; NinePatchComponent mBox; }; + +#endif // ES_CORE_COMPONENTS_BUTTON_COMPONENT_H diff --git a/es-core/src/components/ComponentGrid.cpp b/es-core/src/components/ComponentGrid.cpp index 89dd157cc0..b330e4ad5d 100644 --- a/es-core/src/components/ComponentGrid.cpp +++ b/es-core/src/components/ComponentGrid.cpp @@ -1,11 +1,10 @@ #include "components/ComponentGrid.h" -#include "Log.h" -#include "Renderer.h" + #include "Settings.h" using namespace GridFlags; -ComponentGrid::ComponentGrid(Window* window, const Eigen::Vector2i& gridDimensions) : GuiComponent(window), +ComponentGrid::ComponentGrid(Window* window, const Vector2i& gridDimensions) : GuiComponent(window), mGridSize(gridDimensions), mCursor(0, 0) { assert(gridDimensions.x() > 0 && gridDimensions.y() > 0); @@ -40,7 +39,7 @@ float ComponentGrid::getColWidth(int col) if(mColWidths[x] == 0) between++; } - + return (freeWidthPerc * mSize.x()) / between; } @@ -58,7 +57,7 @@ float ComponentGrid::getRowHeight(int row) if(mRowHeights[y] == 0) between++; } - + return (freeHeightPerc * mSize.y()) / between; } @@ -82,7 +81,7 @@ void ComponentGrid::setRowHeightPerc(int row, float height, bool update) onSizeChanged(); } -void ComponentGrid::setEntry(const std::shared_ptr& comp, const Eigen::Vector2i& pos, bool canFocus, bool resize, const Eigen::Vector2i& size, +void ComponentGrid::setEntry(const std::shared_ptr& comp, const Vector2i& pos, bool canFocus, bool resize, const Vector2i& size, unsigned int border, GridFlags::UpdateType updateType) { assert(pos.x() >= 0 && pos.x() < mGridSize.x() && pos.y() >= 0 && pos.y() < mGridSize.y()); @@ -107,7 +106,7 @@ void ComponentGrid::setEntry(const std::shared_ptr& comp, const Ei bool ComponentGrid::removeEntry(const std::shared_ptr& comp) { - for(auto it = mCells.begin(); it != mCells.end(); it++) + for(auto it = mCells.cbegin(); it != mCells.cend(); it++) { if(it->component == comp) { @@ -123,7 +122,7 @@ bool ComponentGrid::removeEntry(const std::shared_ptr& comp) void ComponentGrid::updateCellComponent(const GridEntry& cell) { // size - Eigen::Vector2f size(0, 0); + Vector2f size(0, 0); for(int x = cell.pos.x(); x < cell.pos.x() + cell.dim.x(); x++) size[0] += getColWidth(x); for(int y = cell.pos.y(); y < cell.pos.y() + cell.dim.y(); y++) @@ -134,7 +133,7 @@ void ComponentGrid::updateCellComponent(const GridEntry& cell) // position // find top left corner - Eigen::Vector3f pos(0, 0, 0); + Vector3f pos(0, 0, 0); for(int x = 0; x < cell.pos.x(); x++) pos[0] += getColWidth(x); for(int y = 0; y < cell.pos.y(); y++) @@ -143,7 +142,7 @@ void ComponentGrid::updateCellComponent(const GridEntry& cell) // center component pos[0] = pos.x() + (size.x() - cell.component->getSize().x()) / 2; pos[1] = pos.y() + (size.y() - cell.component->getSize().y()) / 2; - + cell.component->setPosition(pos); } @@ -151,18 +150,19 @@ void ComponentGrid::updateSeparators() { mLines.clear(); + const unsigned int color = Renderer::convertColor(0xC6C7C6FF); bool drawAll = Settings::getInstance()->getBool("DebugGrid"); - Eigen::Vector2f pos; - Eigen::Vector2f size; - for(auto it = mCells.begin(); it != mCells.end(); it++) + Vector2f pos; + Vector2f size; + for(auto it = mCells.cbegin(); it != mCells.cend(); it++) { if(!it->border && !drawAll) continue; // find component position + size - pos << 0, 0; - size << 0, 0; + pos = Vector2f(0, 0); + size = Vector2f(0, 0); for(int x = 0; x < it->pos.x(); x++) pos[0] += getColWidth(x); for(int y = 0; y < it->pos.y(); y++) @@ -174,43 +174,40 @@ void ComponentGrid::updateSeparators() if(it->border & BORDER_TOP || drawAll) { - mLines.push_back(Vert(pos.x(), pos.y())); - mLines.push_back(Vert(pos.x() + size.x(), pos.y())); + mLines.push_back( { { pos.x(), pos.y() }, { 0.0f, 0.0f }, color } ); + mLines.push_back( { { pos.x() + size.x(), pos.y() }, { 0.0f, 0.0f }, color } ); } if(it->border & BORDER_BOTTOM || drawAll) { - mLines.push_back(Vert(pos.x(), pos.y() + size.y())); - mLines.push_back(Vert(pos.x() + size.x(), mLines.back().y)); + mLines.push_back( { { pos.x(), pos.y() + size.y() }, { 0.0f, 0.0f }, color } ); + mLines.push_back( { { pos.x() + size.x(), mLines.back().pos.y() }, { 0.0f, 0.0f }, color } ); } if(it->border & BORDER_LEFT || drawAll) { - mLines.push_back(Vert(pos.x(), pos.y())); - mLines.push_back(Vert(pos.x(), pos.y() + size.y())); + mLines.push_back( { { pos.x(), pos.y() }, { 0.0f, 0.0f }, color } ); + mLines.push_back( { { pos.x(), pos.y() + size.y() }, { 0.0f, 0.0f }, color } ); } if(it->border & BORDER_RIGHT || drawAll) { - mLines.push_back(Vert(pos.x() + size.x(), pos.y())); - mLines.push_back(Vert(mLines.back().x, pos.y() + size.y())); + mLines.push_back( { { pos.x() + size.x(), pos.y() }, { 0.0f, 0.0f }, color } ); + mLines.push_back( { { mLines.back().pos.x(), pos.y() + size.y() }, { 0.0f, 0.0f }, color } ); } } - - mLineColors.reserve(mLines.size()); - Renderer::buildGLColorArray((GLubyte*)mLineColors.data(), 0xC6C7C6FF, mLines.size()); } void ComponentGrid::onSizeChanged() { - for(auto it = mCells.begin(); it != mCells.end(); it++) + for(auto it = mCells.cbegin(); it != mCells.cend(); it++) updateCellComponent(*it); updateSeparators(); } -ComponentGrid::GridEntry* ComponentGrid::getCellAt(int x, int y) +const ComponentGrid::GridEntry* ComponentGrid::getCellAt(int x, int y) const { assert(x >= 0 && x < mGridSize.x() && y >= 0 && y < mGridSize.y()); - - for(auto it = mCells.begin(); it != mCells.end(); it++) + + for(auto it = mCells.cbegin(); it != mCells.cend(); it++) { int xmin = it->pos.x(); int xmax = xmin + it->dim.x(); @@ -226,28 +223,28 @@ ComponentGrid::GridEntry* ComponentGrid::getCellAt(int x, int y) bool ComponentGrid::input(InputConfig* config, Input input) { - GridEntry* cursorEntry = getCellAt(mCursor); + const GridEntry* cursorEntry = getCellAt(mCursor); if(cursorEntry && cursorEntry->component->input(config, input)) return true; if(!input.value) return false; - if(config->isMappedTo("down", input)) + if(config->isMappedLike("down", input)) { - return moveCursor(Eigen::Vector2i(0, 1)); + return moveCursor(Vector2i(0, 1)); } - if(config->isMappedTo("up", input)) + if(config->isMappedLike("up", input)) { - return moveCursor(Eigen::Vector2i(0, -1)); + return moveCursor(Vector2i(0, -1)); } - if(config->isMappedTo("left", input)) + if(config->isMappedLike("left", input)) { - return moveCursor(Eigen::Vector2i(-1, 0)); + return moveCursor(Vector2i(-1, 0)); } - if(config->isMappedTo("right", input)) + if(config->isMappedLike("right", input)) { - return moveCursor(Eigen::Vector2i(1, 0)); + return moveCursor(Vector2i(1, 0)); } return false; @@ -258,11 +255,11 @@ void ComponentGrid::resetCursor() if(!mCells.size()) return; - for(auto it = mCells.begin(); it != mCells.end(); it++) + for(auto it = mCells.cbegin(); it != mCells.cend(); it++) { if(it->canFocus) { - Eigen::Vector2i origCursor = mCursor; + Vector2i origCursor = mCursor; mCursor = it->pos; onCursorMoved(origCursor, mCursor); break; @@ -270,23 +267,23 @@ void ComponentGrid::resetCursor() } } -bool ComponentGrid::moveCursor(Eigen::Vector2i dir) +bool ComponentGrid::moveCursor(Vector2i dir) { assert(dir.x() || dir.y()); - const Eigen::Vector2i origCursor = mCursor; + const Vector2i origCursor = mCursor; + + const GridEntry* currentCursorEntry = getCellAt(mCursor); - GridEntry* currentCursorEntry = getCellAt(mCursor); + Vector2i searchAxis(dir.x() == 0, dir.y() == 0); - Eigen::Vector2i searchAxis(dir.x() == 0, dir.y() == 0); - while(mCursor.x() >= 0 && mCursor.y() >= 0 && mCursor.x() < mGridSize.x() && mCursor.y() < mGridSize.y()) { mCursor = mCursor + dir; - Eigen::Vector2i curDirPos = mCursor; + Vector2i curDirPos = mCursor; - GridEntry* cursorEntry; + const GridEntry* cursorEntry; //spread out on search axis+ while(mCursor.x() < mGridSize.x() && mCursor.y() < mGridSize.y() && mCursor.x() >= 0 && mCursor.y() >= 0) @@ -326,72 +323,60 @@ bool ComponentGrid::moveCursor(Eigen::Vector2i dir) void ComponentGrid::onFocusLost() { - GridEntry* cursorEntry = getCellAt(mCursor); + const GridEntry* cursorEntry = getCellAt(mCursor); if(cursorEntry) cursorEntry->component->onFocusLost(); } void ComponentGrid::onFocusGained() { - GridEntry* cursorEntry = getCellAt(mCursor); + const GridEntry* cursorEntry = getCellAt(mCursor); if(cursorEntry) cursorEntry->component->onFocusGained(); } bool ComponentGrid::cursorValid() { - GridEntry* e = getCellAt(mCursor); + const GridEntry* e = getCellAt(mCursor); return (e != NULL && e->canFocus); } void ComponentGrid::update(int deltaTime) { // update ALL THE THINGS - GridEntry* cursorEntry = getCellAt(mCursor); - for(auto it = mCells.begin(); it != mCells.end(); it++) + const GridEntry* cursorEntry = getCellAt(mCursor); + for(auto it = mCells.cbegin(); it != mCells.cend(); it++) { if(it->updateType == UPDATE_ALWAYS || (it->updateType == UPDATE_WHEN_SELECTED && cursorEntry == &(*it))) it->component->update(deltaTime); } } -void ComponentGrid::render(const Eigen::Affine3f& parentTrans) +void ComponentGrid::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = parentTrans * getTransform(); + Transform4x4f trans = parentTrans * getTransform(); renderChildren(trans); - + // draw cell separators if(mLines.size()) { Renderer::setMatrix(trans); - - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - - glVertexPointer(2, GL_FLOAT, 0, &mLines[0].x); - glColorPointer(4, GL_UNSIGNED_BYTE, 0, mLineColors.data()); - - glDrawArrays(GL_LINES, 0, mLines.size()); - - glDisable(GL_BLEND); - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); + Renderer::bindTexture(0); + Renderer::drawLines(&mLines[0], (int)mLines.size()); } } void ComponentGrid::textInput(const char* text) { - GridEntry* selectedEntry = getCellAt(mCursor); + const GridEntry* selectedEntry = getCellAt(mCursor); if(selectedEntry != NULL && selectedEntry->canFocus) selectedEntry->component->textInput(text); } -void ComponentGrid::onCursorMoved(Eigen::Vector2i from, Eigen::Vector2i to) +void ComponentGrid::onCursorMoved(Vector2i from, Vector2i to) { - GridEntry* cell = getCellAt(from); + const GridEntry* cell = getCellAt(from); if(cell) cell->component->onFocusLost(); @@ -404,11 +389,11 @@ void ComponentGrid::onCursorMoved(Eigen::Vector2i from, Eigen::Vector2i to) void ComponentGrid::setCursorTo(const std::shared_ptr& comp) { - for(auto it = mCells.begin(); it != mCells.end(); it++) + for(auto it = mCells.cbegin(); it != mCells.cend(); it++) { if(it->component == comp) { - Eigen::Vector2i oldCursor = mCursor; + Vector2i oldCursor = mCursor; mCursor = it->pos; onCursorMoved(oldCursor, mCursor); return; @@ -422,13 +407,13 @@ void ComponentGrid::setCursorTo(const std::shared_ptr& comp) std::vector ComponentGrid::getHelpPrompts() { std::vector prompts; - GridEntry* e = getCellAt(mCursor); + const GridEntry* e = getCellAt(mCursor); if(e) prompts = e->component->getHelpPrompts(); - + bool canScrollVert = mGridSize.y() > 1; bool canScrollHoriz = mGridSize.x() > 1; - for(auto it = prompts.begin(); it != prompts.end(); it++) + for(auto it = prompts.cbegin(); it != prompts.cend(); it++) { if(it->first == "up/down/left/right") { diff --git a/es-core/src/components/ComponentGrid.h b/es-core/src/components/ComponentGrid.h index ee1547c1cd..5fad30e0e3 100644 --- a/es-core/src/components/ComponentGrid.h +++ b/es-core/src/components/ComponentGrid.h @@ -1,5 +1,9 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_COMPONENT_GRID_H +#define ES_CORE_COMPONENTS_COMPONENT_GRID_H +#include "math/Vector2i.h" +#include "renderers/Renderer.h" #include "GuiComponent.h" namespace GridFlags @@ -26,18 +30,18 @@ namespace GridFlags class ComponentGrid : public GuiComponent { public: - ComponentGrid(Window* window, const Eigen::Vector2i& gridDimensions); + ComponentGrid(Window* window, const Vector2i& gridDimensions); virtual ~ComponentGrid(); bool removeEntry(const std::shared_ptr& comp); - void setEntry(const std::shared_ptr& comp, const Eigen::Vector2i& pos, bool canFocus, bool resize = true, - const Eigen::Vector2i& size = Eigen::Vector2i(1, 1), unsigned int border = GridFlags::BORDER_NONE, GridFlags::UpdateType updateType = GridFlags::UPDATE_ALWAYS); + void setEntry(const std::shared_ptr& comp, const Vector2i& pos, bool canFocus, bool resize = true, + const Vector2i& size = Vector2i(1, 1), unsigned int border = GridFlags::BORDER_NONE, GridFlags::UpdateType updateType = GridFlags::UPDATE_ALWAYS); void textInput(const char* text) override; bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; void onSizeChanged() override; void resetCursor(); @@ -49,12 +53,12 @@ class ComponentGrid : public GuiComponent void setColWidthPerc(int col, float width, bool update = true); // if update is false, will not call an onSizeChanged() which triggers a (potentially costly) repositioning + resizing of every element void setRowHeightPerc(int row, float height, bool update = true); // if update is false, will not call an onSizeChanged() which triggers a (potentially costly) repositioning + resizing of every element - bool moveCursor(Eigen::Vector2i dir); + bool moveCursor(Vector2i dir); void setCursorTo(const std::shared_ptr& comp); inline std::shared_ptr getSelectedComponent() { - GridEntry* e = getCellAt(mCursor); + const GridEntry* e = getCellAt(mCursor); if(e) return e->component; else @@ -70,17 +74,17 @@ class ComponentGrid : public GuiComponent class GridEntry { public: - Eigen::Vector2i pos; - Eigen::Vector2i dim; + Vector2i pos; + Vector2i dim; std::shared_ptr component; bool canFocus; bool resize; GridFlags::UpdateType updateType; unsigned int border; - GridEntry(const Eigen::Vector2i& p = Eigen::Vector2i::Zero(), const Eigen::Vector2i& d = Eigen::Vector2i::Zero(), - const std::shared_ptr& cmp = nullptr, bool f = false, bool r = true, - GridFlags::UpdateType u = GridFlags::UPDATE_ALWAYS, unsigned int b = GridFlags::BORDER_NONE) : + GridEntry(const Vector2i& p = Vector2i::Zero(), const Vector2i& d = Vector2i::Zero(), + const std::shared_ptr& cmp = nullptr, bool f = false, bool r = true, + GridFlags::UpdateType u = GridFlags::UPDATE_ALWAYS, unsigned int b = GridFlags::BORDER_NONE) : pos(p), dim(d), component(cmp), canFocus(f), resize(r), updateType(u), border(b) {}; @@ -92,28 +96,22 @@ class ComponentGrid : public GuiComponent float* mRowHeights; float* mColWidths; - - struct Vert - { - Vert(float xi = 0, float yi = 0) : x(xi), y(yi) {}; - float x; - float y; - }; - std::vector mLines; - std::vector mLineColors; + std::vector mLines; // Update position & size void updateCellComponent(const GridEntry& cell); void updateSeparators(); - GridEntry* getCellAt(int x, int y); - inline GridEntry* getCellAt(const Eigen::Vector2i& pos) { return getCellAt(pos.x(), pos.y()); } - - Eigen::Vector2i mGridSize; + const GridEntry* getCellAt(int x, int y) const; + inline const GridEntry* getCellAt(const Vector2i& pos) const { return getCellAt(pos.x(), pos.y()); } + + Vector2i mGridSize; std::vector mCells; - void onCursorMoved(Eigen::Vector2i from, Eigen::Vector2i to); - Eigen::Vector2i mCursor; + void onCursorMoved(Vector2i from, Vector2i to); + Vector2i mCursor; }; + +#endif // ES_CORE_COMPONENTS_COMPONENT_GRID_H diff --git a/es-core/src/components/ComponentList.cpp b/es-core/src/components/ComponentList.cpp index a16bcb0975..1ae1c67562 100644 --- a/es-core/src/components/ComponentList.cpp +++ b/es-core/src/components/ComponentList.cpp @@ -1,6 +1,4 @@ #include "components/ComponentList.h" -#include "Util.h" -#include "Log.h" #define TOTAL_HORIZONTAL_PADDING_PX 20 @@ -20,7 +18,7 @@ void ComponentList::addRow(const ComponentListRow& row, bool setCursorHere) this->add(e); - for(auto it = mEntries.back().data.elements.begin(); it != mEntries.back().data.elements.end(); it++) + for(auto it = mEntries.back().data.elements.cbegin(); it != mEntries.back().data.elements.cend(); it++) addChild(it->component.get()); updateElementSize(mEntries.back().data); @@ -28,14 +26,14 @@ void ComponentList::addRow(const ComponentListRow& row, bool setCursorHere) if(setCursorHere) { - mCursor = mEntries.size() - 1; + mCursor = (int)mEntries.size() - 1; onCursorChanged(CURSOR_STOPPED); } } void ComponentList::onSizeChanged() { - for(auto it = mEntries.begin(); it != mEntries.end(); it++) + for(auto it = mEntries.cbegin(); it != mEntries.cend(); it++) { updateElementSize(it->data); updateElementPosition(it->data); @@ -75,17 +73,18 @@ bool ComponentList::input(InputConfig* config, Input input) } // input handler didn't consume the input - try to scroll - if(config->isMappedTo("up", input)) + if(config->isMappedLike("up", input)) { return listInput(input.value != 0 ? -1 : 0); - }else if(config->isMappedTo("down", input)) + }else if(config->isMappedLike("down", input)) { return listInput(input.value != 0 ? 1 : 0); - }else if(config->isMappedTo("pageup", input)) + + }else if(config->isMappedLike("leftshoulder", input)) { - return listInput(input.value != 0 ? -7 : 0); - }else if(config->isMappedTo("pagedown", input)){ - return listInput(input.value != 0 ? 7 : 0); + return listInput(input.value != 0 ? -6 : 0); + }else if(config->isMappedLike("rightshoulder", input)){ + return listInput(input.value != 0 ? 6 : 0); } return false; @@ -98,7 +97,7 @@ void ComponentList::update(int deltaTime) if(size()) { // update our currently selected row - for(auto it = mEntries.at(mCursor).data.elements.begin(); it != mEntries.at(mCursor).data.elements.end(); it++) + for(auto it = mEntries.at(mCursor).data.elements.cbegin(); it != mEntries.at(mCursor).data.elements.cend(); it++) it->component->update(deltaTime); } } @@ -118,9 +117,9 @@ void ComponentList::onCursorChanged(const CursorState& state) // this is terribly inefficient but we don't know what we came from so... if(size()) { - for(auto it = mEntries.begin(); it != mEntries.end(); it++) + for(auto it = mEntries.cbegin(); it != mEntries.cend(); it++) it->data.elements.back().component->onFocusLost(); - + mEntries.at(mCursor).data.elements.back().component->onFocusGained(); } @@ -156,21 +155,21 @@ void ComponentList::updateCameraOffset() } } -void ComponentList::render(const Eigen::Affine3f& parentTrans) +void ComponentList::render(const Transform4x4f& parentTrans) { if(!size()) return; - Eigen::Affine3f trans = roundMatrix(parentTrans * getTransform()); + Transform4x4f trans = parentTrans * getTransform(); // clip everything to be inside our bounds - Eigen::Vector3f dim(mSize.x(), mSize.y(), 0); + Vector3f dim(mSize.x(), mSize.y(), 0); dim = trans * dim - trans.translation(); - Renderer::pushClipRect(Eigen::Vector2i((int)trans.translation().x(), (int)trans.translation().y()), - Eigen::Vector2i((int)round(dim.x()), (int)round(dim.y() + 1))); + Renderer::pushClipRect(Vector2i((int)trans.translation().x(), (int)trans.translation().y()), + Vector2i((int)Math::round(dim.x()), (int)Math::round(dim.y() + 1))); // scroll the camera - trans.translate(Eigen::Vector3f(0, -round(mCameraOffset), 0)); + trans.translate(Vector3f(0, -Math::round(mCameraOffset), 0)); // draw our entries std::vector drawAfterCursor; @@ -178,8 +177,8 @@ void ComponentList::render(const Eigen::Affine3f& parentTrans) for(unsigned int i = 0; i < mEntries.size(); i++) { auto& entry = mEntries.at(i); - drawAll = !mFocused || i != mCursor; - for(auto it = entry.data.elements.begin(); it != entry.data.elements.end(); it++) + drawAll = !mFocused || i != (unsigned int)mCursor; + for(auto it = entry.data.elements.cbegin(); it != entry.data.elements.cend(); it++) { if(drawAll || it->invert_when_selected) { @@ -200,20 +199,18 @@ void ComponentList::render(const Eigen::Affine3f& parentTrans) // need a function that goes roughly 0x777777 -> 0xFFFFFF // and 0xFFFFFF -> 0x777777 // (1 - dst) + 0x77 - + const float selectedRowHeight = getRowHeight(mEntries.at(mCursor).data); - Renderer::drawRect(0.0f, mSelectorBarOffset, mSize.x(), selectedRowHeight, 0xFFFFFFFF, - GL_ONE_MINUS_DST_COLOR, GL_ZERO); - Renderer::drawRect(0.0f, mSelectorBarOffset, mSize.x(), selectedRowHeight, 0x777777FF, - GL_ONE, GL_ONE); - + Renderer::drawRect(0.0f, mSelectorBarOffset, mSize.x(), selectedRowHeight, 0xFFFFFFFF, 0xFFFFFFFF, false, Renderer::Blend::ONE_MINUS_DST_COLOR, Renderer::Blend::ZERO); + Renderer::drawRect(0.0f, mSelectorBarOffset, mSize.x(), selectedRowHeight, 0x777777FF, 0x777777FF, false, Renderer::Blend::ONE, Renderer::Blend::ONE); + // hack to draw 2px dark on left/right of the bar - Renderer::drawRect(0.0f, mSelectorBarOffset, 2.0f, selectedRowHeight, 0x878787FF); - Renderer::drawRect(mSize.x() - 2.0f, mSelectorBarOffset, 2.0f, selectedRowHeight, 0x878787FF); + Renderer::drawRect(0.0f, mSelectorBarOffset, 2.0f, selectedRowHeight, 0x878787FF, 0x878787FF); + Renderer::drawRect(mSize.x() - 2.0f, mSelectorBarOffset, 2.0f, selectedRowHeight, 0x878787FF, 0x878787FF); - for(auto it = drawAfterCursor.begin(); it != drawAfterCursor.end(); it++) + for(auto it = drawAfterCursor.cbegin(); it != drawAfterCursor.cend(); it++) (*it)->render(trans); - + // reset matrix if one of these components changed it if(drawAfterCursor.size()) Renderer::setMatrix(trans); @@ -223,10 +220,10 @@ void ComponentList::render(const Eigen::Affine3f& parentTrans) float y = 0; for(unsigned int i = 0; i < mEntries.size(); i++) { - Renderer::drawRect(0.0f, y, mSize.x(), 1.0f, 0xC6C7C6FF); + Renderer::drawRect(0.0f, y, mSize.x(), 1.0f, 0xC6C7C6FF, 0xC6C7C6FF); y += getRowHeight(mEntries.at(i).data); } - Renderer::drawRect(0.0f, y, mSize.x(), 1.0f, 0xC6C7C6FF); + Renderer::drawRect(0.0f, y, mSize.x(), 1.0f, 0xC6C7C6FF, 0xC6C7C6FF); Renderer::popClipRect(); } @@ -247,7 +244,7 @@ float ComponentList::getRowHeight(const ComponentListRow& row) const float ComponentList::getTotalRowHeight() const { float height = 0; - for(auto it = mEntries.begin(); it != mEntries.end(); it++) + for(auto it = mEntries.cbegin(); it != mEntries.cend(); it++) { height += getRowHeight(it->data); } @@ -258,7 +255,7 @@ float ComponentList::getTotalRowHeight() const void ComponentList::updateElementPosition(const ComponentListRow& row) { float yOffset = 0; - for(auto it = mEntries.begin(); it != mEntries.end() && &it->data != &row; it++) + for(auto it = mEntries.cbegin(); it != mEntries.cend() && &it->data != &row; it++) { yOffset += getRowHeight(it->data); } @@ -282,7 +279,7 @@ void ComponentList::updateElementSize(const ComponentListRow& row) float width = mSize.x() - TOTAL_HORIZONTAL_PADDING_PX; std::vector< std::shared_ptr > resizeVec; - for(auto it = row.elements.begin(); it != row.elements.end(); it++) + for(auto it = row.elements.cbegin(); it != row.elements.cend(); it++) { if(it->resize_width) resizeVec.push_back(it->component); @@ -292,7 +289,7 @@ void ComponentList::updateElementSize(const ComponentListRow& row) // redistribute the "unused" width equally among the components with resize_width set to true width = width / resizeVec.size(); - for(auto it = resizeVec.begin(); it != resizeVec.end(); it++) + for(auto it = resizeVec.cbegin(); it != resizeVec.cend(); it++) { (*it)->setSize(width, (*it)->getSize().y()); } @@ -316,7 +313,7 @@ std::vector ComponentList::getHelpPrompts() if(size() > 1) { bool addMovePrompt = true; - for(auto it = prompts.begin(); it != prompts.end(); it++) + for(auto it = prompts.cbegin(); it != prompts.cend(); it++) { if(it->first == "up/down" || it->first == "up/down/left/right") { @@ -334,7 +331,7 @@ std::vector ComponentList::getHelpPrompts() bool ComponentList::moveCursor(int amt) { - bool ret = listInput(amt); - listInput(0); + bool ret = listInput(amt); + listInput(0); return ret; } diff --git a/es-core/src/components/ComponentList.h b/es-core/src/components/ComponentList.h index 99f06a4ecc..c5c0f9c2e9 100644 --- a/es-core/src/components/ComponentList.h +++ b/es-core/src/components/ComponentList.h @@ -1,7 +1,8 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_COMPONENT_LIST_H +#define ES_CORE_COMPONENTS_COMPONENT_LIST_H #include "IList.h" -#include struct ComponentListElement { @@ -19,10 +20,10 @@ struct ComponentListRow // The input handler is called when the user enters any input while this row is highlighted (including up/down). // Return false to let the list try to use it or true if the input has been consumed. - // If no input handler is supplied (input_handler == nullptr), the default behavior is to forward the input to + // If no input handler is supplied (input_handler == nullptr), the default behavior is to forward the input to // the rightmost element in the currently selected row. std::function input_handler; - + inline void addElement(const std::shared_ptr& component, bool resize_width, bool invert_when_selected = true) { elements.push_back(ComponentListElement(component, resize_width, invert_when_selected)); @@ -52,7 +53,7 @@ class ComponentList : public IList void textInput(const char* text) override; bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; virtual std::vector getHelpPrompts() override; void onSizeChanged() override; @@ -61,7 +62,7 @@ class ComponentList : public IList bool moveCursor(int amt); inline int getCursorId() const { return mCursor; } - + float getTotalRowHeight() const; inline float getRowHeight(int row) const { return getRowHeight(mEntries.at(row).data); } @@ -77,7 +78,7 @@ class ComponentList : public IList void updateCameraOffset(); void updateElementPosition(const ComponentListRow& row); void updateElementSize(const ComponentListRow& row); - + float getRowHeight(const ComponentListRow& row) const; float mSelectorBarOffset; @@ -85,3 +86,5 @@ class ComponentList : public IList std::function mCursorChangedCallback; }; + +#endif // ES_CORE_COMPONENTS_COMPONENT_LIST_H diff --git a/es-core/src/components/DateTimeComponent.cpp b/es-core/src/components/DateTimeComponent.cpp index 7113ec4950..c1e719b93c 100644 --- a/es-core/src/components/DateTimeComponent.cpp +++ b/es-core/src/components/DateTimeComponent.cpp @@ -1,340 +1,135 @@ #include "components/DateTimeComponent.h" -#include "Renderer.h" -#include "Window.h" -#include "Log.h" -#include "Util.h" - -DateTimeComponent::DateTimeComponent(Window* window, DisplayMode dispMode) : GuiComponent(window), - mEditing(false), mEditIndex(0), mDisplayMode(dispMode), mRelativeUpdateAccumulator(0), - mColor(0x777777FF), mFont(Font::get(FONT_SIZE_SMALL, FONT_PATH_LIGHT)), mUppercase(false), mAutoSize(true) -{ - updateTextCache(); -} - -void DateTimeComponent::setDisplayMode(DisplayMode mode) -{ - mDisplayMode = mode; - updateTextCache(); -} - -bool DateTimeComponent::input(InputConfig* config, Input input) -{ - if(input.value == 0) - return false; - - if(config->isMappedTo("a", input)) - { - if(mDisplayMode != DISP_RELATIVE_TO_NOW) //don't allow editing for relative times - mEditing = !mEditing; - - if(mEditing) - { - //started editing - mTimeBeforeEdit = mTime; - - //initialize to now if unset - if(mTime == boost::posix_time::not_a_date_time) - { - mTime = boost::posix_time::ptime(boost::gregorian::day_clock::local_day()); - updateTextCache(); - } - } - - return true; - } - - if(mEditing) - { - if(config->isMappedTo("b", input)) - { - mEditing = false; - mTime = mTimeBeforeEdit; - updateTextCache(); - return true; - } - - int incDir = 0; - if(config->isMappedTo("up", input) || config->isMappedTo("pageup", input)) - incDir = 1; - else if(config->isMappedTo("down", input) || config->isMappedTo("pagedown", input)) - incDir = -1; - - if(incDir != 0) - { - tm new_tm = boost::posix_time::to_tm(mTime); - if(mEditIndex == 0) - { - new_tm.tm_mon += incDir; - - if(new_tm.tm_mon > 11) - new_tm.tm_mon = 11; - else if(new_tm.tm_mon < 0) - new_tm.tm_mon = 0; - - }else if(mEditIndex == 1) - { - new_tm.tm_mday += incDir; - int days_in_month = mTime.date().end_of_month().day().as_number(); - if(new_tm.tm_mday > days_in_month) - new_tm.tm_mday = days_in_month; - else if(new_tm.tm_mday < 1) - new_tm.tm_mday = 1; - - }else if(mEditIndex == 2) - { - new_tm.tm_year += incDir; - if(new_tm.tm_year < 0) - new_tm.tm_year = 0; - } - - //validate day - int days_in_month = boost::gregorian::date(new_tm.tm_year + 1900, new_tm.tm_mon + 1, 1).end_of_month().day().as_number(); - if(new_tm.tm_mday > days_in_month) - new_tm.tm_mday = days_in_month; - - mTime = boost::posix_time::ptime_from_tm(new_tm); - - updateTextCache(); - return true; - } - - if(config->isMappedTo("right", input)) - { - mEditIndex++; - if(mEditIndex >= (int)mCursorBoxes.size()) - mEditIndex--; - return true; - } - - if(config->isMappedTo("left", input)) - { - mEditIndex--; - if(mEditIndex < 0) - mEditIndex++; - return true; - } - } +#include "utils/StringUtil.h" +#include "Log.h" +#include "Settings.h" - return GuiComponent::input(config, input); -} +#include -void DateTimeComponent::update(int deltaTime) +DateTimeComponent::DateTimeComponent(Window* window) : TextComponent(window), mDisplayRelative(false) { - if(mDisplayMode == DISP_RELATIVE_TO_NOW) - { - mRelativeUpdateAccumulator += deltaTime; - if(mRelativeUpdateAccumulator > 1000) - { - mRelativeUpdateAccumulator = 0; - updateTextCache(); - } - } - - GuiComponent::update(deltaTime); + setFormat(getDateformat()); } -void DateTimeComponent::render(const Eigen::Affine3f& parentTrans) +DateTimeComponent::DateTimeComponent(Window* window, const std::string& text, const std::shared_ptr& font, unsigned int color, Alignment align, + Vector3f pos, Vector2f size, unsigned int bgcolor) : TextComponent(window, text, font, color, align, pos, size, bgcolor), mDisplayRelative(false) { - Eigen::Affine3f trans = parentTrans * getTransform(); - - if(mTextCache) - { - // vertically center - Eigen::Vector3f off(0, (mSize.y() - mTextCache->metrics.size.y()) / 2, 0); - trans.translate(off); - trans = roundMatrix(trans); - - Renderer::setMatrix(trans); - - std::shared_ptr font = getFont(); - - mTextCache->setColor((mColor & 0xFFFFFF00) | getOpacity()); - font->renderTextCache(mTextCache.get()); - - if(mEditing) - { - if(mEditIndex >= 0 && (unsigned int)mEditIndex < mCursorBoxes.size()) - { - Renderer::drawRect((int)mCursorBoxes[mEditIndex][0], (int)mCursorBoxes[mEditIndex][1], - (int)mCursorBoxes[mEditIndex][2], (int)mCursorBoxes[mEditIndex][3], 0x00000022); - } - } - } + setFormat(getDateformat()); } void DateTimeComponent::setValue(const std::string& val) { - mTime = string_to_ptime(val); - updateTextCache(); + mTime = val; + onTextChanged(); } std::string DateTimeComponent::getValue() const { - return boost::posix_time::to_iso_string(mTime); + return mTime; } -DateTimeComponent::DisplayMode DateTimeComponent::getCurrentDisplayMode() const +void DateTimeComponent::setFormat(const std::string& format) { - /*if(mEditing) - { - if(mDisplayMode == DISP_RELATIVE_TO_NOW) - { - //TODO: if time component == 00:00:00, return DISP_DATE, else return DISP_DATE_TIME - return DISP_DATE; - } - }*/ - - return mDisplayMode; + mFormat = format; + onTextChanged(); } -std::string DateTimeComponent::getDisplayString(DisplayMode mode) const +void DateTimeComponent::setDisplayRelative(bool displayRelative) { - std::string fmt; - switch(mode) - { - case DISP_DATE: - fmt = "%m/%d/%Y"; - break; - case DISP_DATE_TIME: - fmt = "%m/%d/%Y %H:%M:%S"; - break; - case DISP_RELATIVE_TO_NOW: - { - //relative time - using namespace boost::posix_time; - - if(mTime == not_a_date_time) - return "never"; - - ptime now = second_clock::universal_time(); - time_duration dur = now - mTime; - - if(dur < seconds(2)) - return "just now"; - if(dur < seconds(60)) - return std::to_string((long long)dur.seconds()) + " secs ago"; - if(dur < minutes(60)) - return std::to_string((long long)dur.minutes()) + " min" + (dur < minutes(2) ? "" : "s") + " ago"; - if(dur < hours(24)) - return std::to_string((long long)dur.hours()) + " hour" + (dur < hours(2) ? "" : "s") + " ago"; - - long long days = (long long)(dur.hours() / 24); - return std::to_string(days) + " day" + (days < 2 ? "" : "s") + " ago"; - } - break; - } - - if(mTime == boost::posix_time::not_a_date_time) - return "unknown"; - - boost::posix_time::time_facet* facet = new boost::posix_time::time_facet(); - facet->format(fmt.c_str()); - std::locale loc(std::locale::classic(), facet); - - std::stringstream ss; - ss.imbue(loc); - ss << mTime; - return ss.str(); + mDisplayRelative = displayRelative; + onTextChanged(); } -std::shared_ptr DateTimeComponent::getFont() const +void DateTimeComponent::onTextChanged() { - if(mFont) - return mFont; + mText = getDisplayString(); - return Font::get(FONT_SIZE_MEDIUM); + TextComponent::onTextChanged(); } -void DateTimeComponent::updateTextCache() +std::string DateTimeComponent::getDisplayString() const { - DisplayMode mode = getCurrentDisplayMode(); - const std::string dispString = mUppercase ? strToUpper(getDisplayString(mode)) : getDisplayString(mode); - std::shared_ptr font = getFont(); - mTextCache = std::unique_ptr(font->buildTextCache(dispString, 0, 0, mColor)); - - if(mAutoSize) - { - mSize = mTextCache->metrics.size; - - mAutoSize = false; - if(getParent()) - getParent()->onSizeChanged(); + if(std::difftime(mTime.getTime(), Utils::Time::BLANK_DATE) == 0.0) { + return ""; } - //set up cursor positions - mCursorBoxes.clear(); + if (mDisplayRelative) { + //relative time + if(mTime.getTime() == Utils::Time::NOT_A_DATE_TIME) + return "never"; - if(dispString.empty() || mode == DISP_RELATIVE_TO_NOW) - return; + Utils::Time::DateTime now(Utils::Time::now()); + Utils::Time::Duration dur(now.getTime() - mTime.getTime()); - //month - Eigen::Vector2f start(0, 0); - Eigen::Vector2f end = font->sizeText(dispString.substr(0, 2)); - Eigen::Vector2f diff = end - start; - mCursorBoxes.push_back(Eigen::Vector4f(start[0], start[1], diff[0], diff[1])); + char buf[64]; - //day - start[0] = font->sizeText(dispString.substr(0, 3)).x(); - end = font->sizeText(dispString.substr(0, 5)); - diff = end - start; - mCursorBoxes.push_back(Eigen::Vector4f(start[0], start[1], diff[0], diff[1])); + if(dur.getDays() > 0) + sprintf(buf, "%d day%s ago", dur.getDays(), (dur.getDays() > 1) ? "s" : ""); + else if(dur.getHours() > 0) + sprintf(buf, "%d hour%s ago", dur.getHours(), (dur.getHours() > 1) ? "s" : ""); + else if(dur.getMinutes() > 0) + sprintf(buf, "%d minute%s ago", dur.getMinutes(), (dur.getMinutes() > 1) ? "s" : ""); + else + sprintf(buf, "%d second%s ago", dur.getSeconds(), (dur.getSeconds() > 1) ? "s" : ""); - //year - start[0] = font->sizeText(dispString.substr(0, 6)).x(); - end = font->sizeText(dispString.substr(0, 10)); - diff = end - start; - mCursorBoxes.push_back(Eigen::Vector4f(start[0], start[1], diff[0], diff[1])); - - //if mode == DISP_DATE_TIME do times too but I don't wanna do the logic for editing times because no one will ever use it so screw it -} + return std::string(buf); + } -void DateTimeComponent::setColor(unsigned int color) -{ - mColor = color; - if(mTextCache) - mTextCache->setColor(color); -} + if(mTime.getTime() == Utils::Time::NOT_A_DATE_TIME) + return "unknown"; -void DateTimeComponent::setFont(std::shared_ptr font) -{ - mFont = font; - updateTextCache(); + return Utils::Time::timeToString(mTime.getTime(), mFormat); } -void DateTimeComponent::onSizeChanged() +void DateTimeComponent::render(const Transform4x4f& parentTrans) { - mAutoSize = false; - updateTextCache(); + TextComponent::render(parentTrans); } -void DateTimeComponent::setUppercase(bool uppercase) -{ - mUppercase = uppercase; - updateTextCache(); -} void DateTimeComponent::applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) { + GuiComponent::applyTheme(theme, view, element, properties); + + using namespace ThemeFlags; + const ThemeData::ThemeElement* elem = theme->getElement(view, element, "datetime"); if(!elem) return; - // We set mAutoSize BEFORE calling GuiComponent::applyTheme because it calls - // setSize(), which will call updateTextCache(), which will reset mSize if - // mAutoSize == true, ignoring the theme's value. - if(properties & ThemeFlags::SIZE) - mAutoSize = !elem->has("size"); + if(elem->has("displayRelative")) + setDisplayRelative(elem->get("displayRelative")); - GuiComponent::applyTheme(theme, view, element, properties); - - using namespace ThemeFlags; + if(elem->has("format")) + setFormat(elem->get("format")); - if(properties & COLOR && elem->has("color")) + if (properties & COLOR && elem->has("color")) setColor(elem->get("color")); + setRenderBackground(false); + if (properties & COLOR && elem->has("backgroundColor")) { + setBackgroundColor(elem->get("backgroundColor")); + setRenderBackground(true); + } + + if(properties & ALIGNMENT && elem->has("alignment")) + { + std::string str = elem->get("alignment"); + if(str == "left") + setHorizontalAlignment(ALIGN_LEFT); + else if(str == "center") + setHorizontalAlignment(ALIGN_CENTER); + else if(str == "right") + setHorizontalAlignment(ALIGN_RIGHT); + else + LOG(LogError) << "Unknown text alignment string: " << str; + } + if(properties & FORCE_UPPERCASE && elem->has("forceUppercase")) setUppercase(elem->get("forceUppercase")); + if(properties & LINE_SPACING && elem->has("lineSpacing")) + setLineSpacing(elem->get("lineSpacing")); + setFont(Font::getFromTheme(elem, properties, mFont)); } diff --git a/es-core/src/components/DateTimeComponent.h b/es-core/src/components/DateTimeComponent.h index bc0083fd7e..37f6ae8648 100644 --- a/es-core/src/components/DateTimeComponent.h +++ b/es-core/src/components/DateTimeComponent.h @@ -1,66 +1,42 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_DATE_TIME_COMPONENT_H +#define ES_CORE_COMPONENTS_DATE_TIME_COMPONENT_H -#include "GuiComponent.h" -#include -#include "resources/Font.h" +#include "utils/TimeUtil.h" +#include "TextComponent.h" -// Used to enter or display a specific point in time. -class DateTimeComponent : public GuiComponent +class ThemeData; + +// Used to display date times. +class DateTimeComponent : public TextComponent { public: - enum DisplayMode - { - DISP_DATE, - DISP_DATE_TIME, - DISP_RELATIVE_TO_NOW - }; + DateTimeComponent(Window* window); + DateTimeComponent(Window* window, const std::string& text, const std::shared_ptr& font, unsigned int color = 0x000000FF, Alignment align = ALIGN_LEFT, + Vector3f pos = Vector3f::Zero(), Vector2f size = Vector2f::Zero(), unsigned int bgcolor = 0x00000000); - DateTimeComponent(Window* window, DisplayMode dispMode = DISP_DATE); + void render(const Transform4x4f& parentTrans) override; void setValue(const std::string& val) override; std::string getValue() const override; - bool input(InputConfig* config, Input input) override; - void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; - void onSizeChanged() override; - - // Set how the point in time will be displayed: - // * DISP_DATE - only display the date. - // * DISP_DATE_TIME - display both the date and the time on that date. - // * DISP_RELATIVE_TO_NOW - intelligently display the point in time relative to right now (e.g. "5 secs ago", "3 minutes ago", "1 day ago". Automatically updates as time marches on. - // The initial value is DISP_DATE. - void setDisplayMode(DisplayMode mode); - - void setColor(unsigned int color); // Text color. - void setFont(std::shared_ptr font); // Font to display with. Default is Font::get(FONT_SIZE_MEDIUM). - void setUppercase(bool uppercase); // Force text to be uppercase when in DISP_RELATIVE_TO_NOW mode. + void setFormat(const std::string& format); + void setDisplayRelative(bool displayRelative); virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; -private: - std::shared_ptr getFont() const; - - std::string getDisplayString(DisplayMode mode) const; - DisplayMode getCurrentDisplayMode() const; - - void updateTextCache(); + static std::string getDateformat() { return "%m/%d/%Y"; } + static std::string getDateformatTip() { return "MM/DD/YYYY"; } - boost::posix_time::ptime mTime; - boost::posix_time::ptime mTimeBeforeEdit; +protected: + void onTextChanged() override; - bool mEditing; - int mEditIndex; - DisplayMode mDisplayMode; - - int mRelativeUpdateAccumulator; - - std::unique_ptr mTextCache; - std::vector mCursorBoxes; - - unsigned int mColor; - std::shared_ptr mFont; - bool mUppercase; +private: + std::string getDisplayString() const; - bool mAutoSize; + Utils::Time::DateTime mTime; + std::string mFormat; + bool mDisplayRelative; }; + +#endif // ES_CORE_COMPONENTS_DATE_TIME_COMPONENT_H diff --git a/es-core/src/components/DateTimeEditComponent.cpp b/es-core/src/components/DateTimeEditComponent.cpp new file mode 100644 index 0000000000..5c06e9e8ed --- /dev/null +++ b/es-core/src/components/DateTimeEditComponent.cpp @@ -0,0 +1,334 @@ +#include "components/DateTimeEditComponent.h" + +#include "DateTimeComponent.h" +#include "resources/Font.h" +#include "utils/StringUtil.h" + +DateTimeEditComponent::DateTimeEditComponent(Window* window, DisplayMode dispMode) : GuiComponent(window), + mEditing(false), mEditIndex(0), mDisplayMode(dispMode), mRelativeUpdateAccumulator(0), + mColor(0x777777FF), mFont(Font::get(FONT_SIZE_SMALL, FONT_PATH_LIGHT)), mUppercase(false), mAutoSize(true) +{ + updateTextCache(); +} + +void DateTimeEditComponent::setDisplayMode(DisplayMode mode) +{ + mDisplayMode = mode; + updateTextCache(); +} + +bool DateTimeEditComponent::input(InputConfig* config, Input input) +{ + if(input.value == 0) + return false; + + if(config->isMappedTo("a", input)) + { + if(mDisplayMode != DISP_RELATIVE_TO_NOW) //don't allow editing for relative times + mEditing = !mEditing; + + if(mEditing) + { + //started editing + mTimeBeforeEdit = mTime; + + //initialize to now if unset + if(mTime.getTime() == Utils::Time::NOT_A_DATE_TIME) + { + mTime = Utils::Time::now(); + updateTextCache(); + } + } + + return true; + } + + if(mEditing) + { + if(config->isMappedTo("b", input)) + { + mEditing = false; + mTime = mTimeBeforeEdit; + updateTextCache(); + return true; + } + + int incDir = 0; + if(config->isMappedLike("up", input) || config->isMappedLike("leftshoulder", input)) + incDir = 1; + else if(config->isMappedLike("down", input) || config->isMappedLike("rightshoulder", input)) + incDir = -1; + + if(incDir != 0) + { + tm new_tm = mTime; + + if(mEditIndex == 0) + { + new_tm.tm_mon += incDir; + + if(new_tm.tm_mon > 11) + new_tm.tm_mon = 0; + else if(new_tm.tm_mon < 0) + new_tm.tm_mon = 11; + + } + else if(mEditIndex == 1) + { + const int days_in_month = Utils::Time::daysInMonth(new_tm.tm_year + 1900, new_tm.tm_mon + 1); + new_tm.tm_mday += incDir; + + if(new_tm.tm_mday > days_in_month) + new_tm.tm_mday = 1; + else if(new_tm.tm_mday < 1) + new_tm.tm_mday = days_in_month; + + } + else if(mEditIndex == 2) + { + new_tm.tm_year += incDir; + + if(new_tm.tm_year < 0) + new_tm.tm_year = 0; + } + + //validate day + const int days_in_month = Utils::Time::daysInMonth(new_tm.tm_year + 1900, new_tm.tm_mon + 1); + if(new_tm.tm_mday > days_in_month) + new_tm.tm_mday = days_in_month; + + mTime = new_tm; + + updateTextCache(); + return true; + } + + if(config->isMappedLike("right", input)) + { + mEditIndex++; + if(mEditIndex >= (int)mCursorBoxes.size()) + mEditIndex--; + return true; + } + + if(config->isMappedLike("left", input)) + { + mEditIndex--; + if(mEditIndex < 0) + mEditIndex++; + return true; + } + } + + return GuiComponent::input(config, input); +} + +void DateTimeEditComponent::update(int deltaTime) +{ + if(mDisplayMode == DISP_RELATIVE_TO_NOW) + { + mRelativeUpdateAccumulator += deltaTime; + if(mRelativeUpdateAccumulator > 1000) + { + mRelativeUpdateAccumulator = 0; + updateTextCache(); + } + } + + GuiComponent::update(deltaTime); +} + +void DateTimeEditComponent::render(const Transform4x4f& parentTrans) +{ + Transform4x4f trans = parentTrans * getTransform(); + + if(mTextCache) + { + // vertically center + Vector3f off(0, (mSize.y() - mTextCache->metrics.size.y()) / 2, 0); + trans.translate(off); + + Renderer::setMatrix(trans); + + std::shared_ptr font = getFont(); + + mTextCache->setColor((mColor & 0xFFFFFF00) | getOpacity()); + font->renderTextCache(mTextCache.get()); + + if(mEditing) + { + if(mEditIndex >= 0 && (unsigned int)mEditIndex < mCursorBoxes.size()) + { + Renderer::drawRect(mCursorBoxes[mEditIndex][0], mCursorBoxes[mEditIndex][1], + mCursorBoxes[mEditIndex][2], mCursorBoxes[mEditIndex][3], 0x00000022, 0x00000022); + } + } + } +} + +void DateTimeEditComponent::setValue(const std::string& val) +{ + mTime = val; + updateTextCache(); +} + +std::string DateTimeEditComponent::getValue() const +{ + return mTime; +} + +DateTimeEditComponent::DisplayMode DateTimeEditComponent::getCurrentDisplayMode() const +{ + /*if(mEditing) + { + if(mDisplayMode == DISP_RELATIVE_TO_NOW) + { + //TODO: if time component == 00:00:00, return DISP_DATE, else return DISP_DATE_TIME + return DISP_DATE; + } + }*/ + + return mDisplayMode; +} + +std::string DateTimeEditComponent::getDisplayString(DisplayMode mode) const +{ + std::string fmt; + switch(mode) + { + case DISP_DATE: + fmt = DateTimeComponent::getDateformat(); + break; + case DISP_DATE_TIME: + if(mTime.getTime() == Utils::Time::NOT_A_DATE_TIME) + return "unknown"; + fmt = DateTimeComponent::getDateformat() + " %H:%M:%S"; + break; + case DISP_RELATIVE_TO_NOW: + { + //relative time + if(mTime.getTime() == Utils::Time::NOT_A_DATE_TIME) + return "never"; + + Utils::Time::DateTime now(Utils::Time::now()); + Utils::Time::Duration dur(now.getTime() - mTime.getTime()); + + char buf[64]; + + if(dur.getDays() > 0) + sprintf(buf, "%d day%s ago", dur.getDays(), (dur.getDays() > 1) ? "s" : ""); + else if(dur.getHours() > 0) + sprintf(buf, "%d hour%s ago", dur.getHours(), (dur.getHours() > 1) ? "s" : ""); + else if(dur.getMinutes() > 0) + sprintf(buf, "%d minute%s ago", dur.getMinutes(), (dur.getMinutes() > 1) ? "s" : ""); + else + sprintf(buf, "%d second%s ago", dur.getSeconds(), (dur.getSeconds() > 1) ? "s" : ""); + + return std::string(buf); + } + break; + } + + return Utils::Time::timeToString(mTime, fmt); +} + +std::shared_ptr DateTimeEditComponent::getFont() const +{ + if(mFont) + return mFont; + + return Font::get(FONT_SIZE_MEDIUM); +} + +void DateTimeEditComponent::updateTextCache() +{ + DisplayMode mode = getCurrentDisplayMode(); + const std::string dispString = mUppercase ? Utils::String::toUpper(getDisplayString(mode)) : getDisplayString(mode); + std::shared_ptr font = getFont(); + mTextCache = std::unique_ptr(font->buildTextCache(dispString, 0, 0, mColor)); + + if(mAutoSize) + { + mSize = mTextCache->metrics.size; + + mAutoSize = false; + if(getParent()) + getParent()->onSizeChanged(); + } + + //set up cursor positions + mCursorBoxes.clear(); + + if(dispString.empty() || mode == DISP_RELATIVE_TO_NOW) + return; + + //month + Vector2f start(0, 0); + Vector2f end = font->sizeText(dispString.substr(0, 2)); + Vector2f diff = end - start; + mCursorBoxes.push_back(Vector4f(start[0], start[1], diff[0], diff[1])); + + //day + start[0] = font->sizeText(dispString.substr(0, 3)).x(); + end = font->sizeText(dispString.substr(0, 5)); + diff = end - start; + mCursorBoxes.push_back(Vector4f(start[0], start[1], diff[0], diff[1])); + + //year + start[0] = font->sizeText(dispString.substr(0, 6)).x(); + end = font->sizeText(dispString.substr(0, 10)); + diff = end - start; + mCursorBoxes.push_back(Vector4f(start[0], start[1], diff[0], diff[1])); + + //if mode == DISP_DATE_TIME do times too but I don't wanna do the logic for editing times because no one will ever use it so screw it +} + +void DateTimeEditComponent::setColor(unsigned int color) +{ + mColor = color; + if(mTextCache) + mTextCache->setColor(color); +} + +void DateTimeEditComponent::setFont(std::shared_ptr font) +{ + mFont = font; + updateTextCache(); +} + +void DateTimeEditComponent::onSizeChanged() +{ + mAutoSize = false; + updateTextCache(); +} + +void DateTimeEditComponent::setUppercase(bool uppercase) +{ + mUppercase = uppercase; + updateTextCache(); +} + +void DateTimeEditComponent::applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) +{ + const ThemeData::ThemeElement* elem = theme->getElement(view, element, "datetime"); + if(!elem) + return; + + // We set mAutoSize BEFORE calling GuiComponent::applyTheme because it calls + // setSize(), which will call updateTextCache(), which will reset mSize if + // mAutoSize == true, ignoring the theme's value. + if(properties & ThemeFlags::SIZE) + mAutoSize = !elem->has("size"); + + GuiComponent::applyTheme(theme, view, element, properties); + + using namespace ThemeFlags; + + if(properties & COLOR && elem->has("color")) + setColor(elem->get("color")); + + if(properties & FORCE_UPPERCASE && elem->has("forceUppercase")) + setUppercase(elem->get("forceUppercase")); + + setFont(Font::getFromTheme(elem, properties, mFont)); +} diff --git a/es-core/src/components/DateTimeEditComponent.h b/es-core/src/components/DateTimeEditComponent.h new file mode 100644 index 0000000000..55a010a1bd --- /dev/null +++ b/es-core/src/components/DateTimeEditComponent.h @@ -0,0 +1,71 @@ +#pragma once +#ifndef ES_CORE_COMPONENTS_DATE_TIME_EDIT_COMPONENT_H +#define ES_CORE_COMPONENTS_DATE_TIME_EDIT_COMPONENT_H + +#include "utils/TimeUtil.h" +#include "GuiComponent.h" + +class TextCache; + +// Used to enter or display a specific point in time. +class DateTimeEditComponent : public GuiComponent +{ +public: + enum DisplayMode + { + DISP_DATE, + DISP_DATE_TIME, + DISP_RELATIVE_TO_NOW + }; + + DateTimeEditComponent(Window* window, DisplayMode dispMode = DISP_DATE); + + void setValue(const std::string& val) override; + std::string getValue() const override; + + bool input(InputConfig* config, Input input) override; + void update(int deltaTime) override; + void render(const Transform4x4f& parentTrans) override; + void onSizeChanged() override; + + // Set how the point in time will be displayed: + // * DISP_DATE - only display the date. + // * DISP_DATE_TIME - display both the date and the time on that date. + // * DISP_RELATIVE_TO_NOW - intelligently display the point in time relative to right now (e.g. "5 secs ago", "3 minutes ago", "1 day ago". Automatically updates as time marches on. + // The initial value is DISP_DATE. + void setDisplayMode(DisplayMode mode); + + void setColor(unsigned int color); // Text color. + void setFont(std::shared_ptr font); // Font to display with. Default is Font::get(FONT_SIZE_MEDIUM). + void setUppercase(bool uppercase); // Force text to be uppercase when in DISP_RELATIVE_TO_NOW mode. + + virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; + +private: + std::shared_ptr getFont() const; + + std::string getDisplayString(DisplayMode mode) const; + DisplayMode getCurrentDisplayMode() const; + + void updateTextCache(); + + Utils::Time::DateTime mTime; + Utils::Time::DateTime mTimeBeforeEdit; + + bool mEditing; + int mEditIndex; + DisplayMode mDisplayMode; + + int mRelativeUpdateAccumulator; + + std::unique_ptr mTextCache; + std::vector mCursorBoxes; + + unsigned int mColor; + std::shared_ptr mFont; + bool mUppercase; + + bool mAutoSize; +}; + +#endif // ES_CORE_COMPONENTS_DATE_TIME_COMPONENT_H diff --git a/es-core/src/components/GridTileComponent.cpp b/es-core/src/components/GridTileComponent.cpp new file mode 100644 index 0000000000..50c51d2d82 --- /dev/null +++ b/es-core/src/components/GridTileComponent.cpp @@ -0,0 +1,335 @@ +#include "GridTileComponent.h" + +#include "animations/LambdaAnimation.h" +#include "resources/TextureResource.h" +#include "ThemeData.h" + +GridTileComponent::GridTileComponent(Window* window) : GuiComponent(window), mBackground(window, ":/frame.png") +{ + mDefaultProperties.mSize = getDefaultTileSize(); + mDefaultProperties.mPadding = Vector2f(16.0f, 16.0f); + mDefaultProperties.mImageColor = 0xAAAAAABB; + mDefaultProperties.mBackgroundImage = ":/frame.png"; + mDefaultProperties.mBackgroundCornerSize = Vector2f(16 ,16); + mDefaultProperties.mBackgroundCenterColor = 0xAAAAEEFF; + mDefaultProperties.mBackgroundEdgeColor = 0xAAAAEEFF; + + mSelectedProperties.mSize = getSelectedTileSize(); + mSelectedProperties.mPadding = mDefaultProperties.mPadding; + mSelectedProperties.mImageColor = 0xFFFFFFFF; + mSelectedProperties.mBackgroundImage = mDefaultProperties.mBackgroundImage; + mSelectedProperties.mBackgroundCornerSize = mDefaultProperties.mBackgroundCornerSize; + mSelectedProperties.mBackgroundCenterColor = 0xFFFFFFFF; + mSelectedProperties.mBackgroundEdgeColor = 0xFFFFFFFF; + + mImage = std::make_shared(mWindow); + mImage->setOrigin(0.5f, 0.5f); + + mBackground.setOrigin(0.5f, 0.5f); + + addChild(&mBackground); + addChild(&(*mImage)); + + mSelectedZoomPercent = 0; + + setSelected(false, false); + setVisible(true); +} + +void GridTileComponent::render(const Transform4x4f& parentTrans) +{ + Transform4x4f trans = getTransform() * parentTrans; + + if (mVisible) + renderChildren(trans); +} + +// Update all the tile properties to the new status (selected or default) +void GridTileComponent::update(int deltaTime) +{ + GuiComponent::update(deltaTime); + + calcCurrentProperties(); + + mBackground.setImagePath(mCurrentProperties.mBackgroundImage); + + mImage->setColorShift(mCurrentProperties.mImageColor); + mBackground.setCenterColor(mCurrentProperties.mBackgroundCenterColor); + mBackground.setEdgeColor(mCurrentProperties.mBackgroundEdgeColor); + + resize(); +} + +void applyThemeToProperties(const ThemeData::ThemeElement* elem, GridTileProperties* properties) +{ + Vector2f screen = Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + + if (elem->has("size")) + properties->mSize = elem->get("size") * screen; + + if (elem->has("padding")) + { + properties->mPadding = elem->get("padding") * screen; + + // hack to fix broken themes now that this uses percentage rather than pixels + if(properties->mPadding.x() > screen.x()) + properties->mPadding /= screen; + } + + if (elem->has("imageColor")) + properties->mImageColor = elem->get("imageColor"); + + if (elem->has("backgroundImage")) + properties->mBackgroundImage = elem->get("backgroundImage"); + + if (elem->has("backgroundCornerSize")) + { + properties->mBackgroundCornerSize = elem->get("backgroundCornerSize") * screen; + + // hack to fix broken themes now that this uses percentage rather than pixels + if(properties->mBackgroundCornerSize.x() > screen.x()) + properties->mBackgroundCornerSize /= screen; + } + + if (elem->has("backgroundColor")) + { + properties->mBackgroundCenterColor = elem->get("backgroundColor"); + properties->mBackgroundEdgeColor = elem->get("backgroundColor"); + } + + if (elem->has("backgroundCenterColor")) + properties->mBackgroundCenterColor = elem->get("backgroundCenterColor"); + + if (elem->has("backgroundEdgeColor")) + properties->mBackgroundEdgeColor = elem->get("backgroundEdgeColor"); +} + +void GridTileComponent::applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& /*element*/, unsigned int /*properties*/) +{ + Vector2f screen = Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + + // Apply theme to the default gridtile + const ThemeData::ThemeElement* elem = theme->getElement(view, "default", "gridtile"); + if (elem) + applyThemeToProperties(elem, &mDefaultProperties); + + // Apply theme to the selected gridtile + // NOTE that some of the default gridtile properties influence on the selected gridtile properties + // See THEMES.md for more informations + elem = theme->getElement(view, "selected", "gridtile"); + + mSelectedProperties.mSize = getSelectedTileSize(); + mSelectedProperties.mPadding = mDefaultProperties.mPadding; + mSelectedProperties.mBackgroundImage = mDefaultProperties.mBackgroundImage; + mSelectedProperties.mBackgroundCornerSize = mDefaultProperties.mBackgroundCornerSize; + + if (elem) + applyThemeToProperties(elem, &mSelectedProperties); +} + +// Made this a static function because the ImageGridComponent need to know the default tile size +// to calculate the grid dimension before it instantiate the GridTileComponents +Vector2f GridTileComponent::getDefaultTileSize() +{ + Vector2f screen = Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + + return screen * 0.22f; +} + +Vector2f GridTileComponent::getSelectedTileSize() const +{ + return mDefaultProperties.mSize * 1.2f; +} + +bool GridTileComponent::isSelected() const +{ + return mSelected; +} + +void GridTileComponent::reset() +{ + setImage(""); +} + +void GridTileComponent::setImage(const std::string& path) +{ + mImage->setImage(path); + + // Resize now to prevent flickering images when scrolling + resize(); +} + +void GridTileComponent::setImage(const std::shared_ptr& texture) +{ + mImage->setImage(texture); + + // Resize now to prevent flickering images when scrolling + resize(); +} + +void GridTileComponent::setSelected(bool selected, bool allowAnimation, Vector3f* pPosition, bool force) +{ + if (mSelected == selected && !force) + { + return; + } + + mSelected = selected; + + if (selected) + { + if (pPosition == NULL || !allowAnimation) + { + cancelAnimation(3); + + this->setSelectedZoom(1); + mAnimPosition = Vector3f(0, 0, 0); + + resize(); + } + else + { + mAnimPosition = Vector3f(pPosition->x(), pPosition->y(), pPosition->z()); + + auto func = [this](float t) + { + t -= 1; // cubic ease out + float pct = Math::lerp(0, 1, t*t*t + 1); + + this->setSelectedZoom(pct); + }; + + cancelAnimation(3); + setAnimation(new LambdaAnimation(func, 250), 0, [this] { + this->setSelectedZoom(1); + mAnimPosition = Vector3f(0, 0, 0); + }, false, 3); + } + } + else // if (!selected) + { + if (!allowAnimation) + { + cancelAnimation(3); + this->setSelectedZoom(0); + + resize(); + } + else + { + this->setSelectedZoom(1); + + auto func = [this](float t) + { + t -= 1; // cubic ease out + float pct = Math::lerp(0, 1, t*t*t + 1); + this->setSelectedZoom(1.0 - pct); + }; + + cancelAnimation(3); + setAnimation(new LambdaAnimation(func, 250), 0, [this] { + this->setSelectedZoom(0); + }, false, 3); + } + } +} + +void GridTileComponent::setSelectedZoom(float percent) +{ + if (mSelectedZoomPercent == percent) + return; + + mSelectedZoomPercent = percent; + resize(); +} + +void GridTileComponent::setVisible(bool visible) +{ + mVisible = visible; +} + +void GridTileComponent::resize() +{ + calcCurrentProperties(); + + mImage->setMaxSize(mCurrentProperties.mSize - mCurrentProperties.mPadding * 2); + mBackground.setCornerSize(mCurrentProperties.mBackgroundCornerSize); + mBackground.fitTo(mCurrentProperties.mSize - mBackground.getCornerSize() * 2); +} + +unsigned int mixColors(unsigned int first, unsigned int second, float percent) +{ + unsigned char alpha0 = (first >> 24) & 0xFF; + unsigned char blue0 = (first >> 16) & 0xFF; + unsigned char green0 = (first >> 8) & 0xFF; + unsigned char red0 = first & 0xFF; + + unsigned char alpha1 = (second >> 24) & 0xFF; + unsigned char blue1 = (second >> 16) & 0xFF; + unsigned char green1 = (second >> 8) & 0xFF; + unsigned char red1 = second & 0xFF; + + unsigned char alpha = (unsigned char)(alpha0 * (1.0 - percent) + alpha1 * percent); + unsigned char blue = (unsigned char)(blue0 * (1.0 - percent) + blue1 * percent); + unsigned char green = (unsigned char)(green0 * (1.0 - percent) + green1 * percent); + unsigned char red = (unsigned char)(red0 * (1.0 - percent) + red1 * percent); + + return (alpha << 24) | (blue << 16) | (green << 8) | red; +} + +void GridTileComponent::calcCurrentProperties() +{ + mCurrentProperties = mSelected ? mSelectedProperties : mDefaultProperties; + + float zoomPercentInverse = 1.0 - mSelectedZoomPercent; + + if (mSelectedZoomPercent != 0.0f && mSelectedZoomPercent != 1.0f) { + if (mDefaultProperties.mSize != mSelectedProperties.mSize) { + mCurrentProperties.mSize = mDefaultProperties.mSize * zoomPercentInverse + mSelectedProperties.mSize * mSelectedZoomPercent; + } + + if (mDefaultProperties.mPadding != mSelectedProperties.mPadding) + { + mCurrentProperties.mPadding = mDefaultProperties.mPadding * zoomPercentInverse + mSelectedProperties.mPadding * mSelectedZoomPercent; + } + + if (mDefaultProperties.mImageColor != mSelectedProperties.mImageColor) + { + mCurrentProperties.mImageColor = mixColors(mDefaultProperties.mImageColor, mSelectedProperties.mImageColor, mSelectedZoomPercent); + } + + if (mDefaultProperties.mBackgroundCornerSize != mSelectedProperties.mBackgroundCornerSize) + { + mCurrentProperties.mBackgroundCornerSize = mDefaultProperties.mBackgroundCornerSize * zoomPercentInverse + mSelectedProperties.mBackgroundCornerSize * mSelectedZoomPercent; + } + + if (mDefaultProperties.mBackgroundCenterColor != mSelectedProperties.mBackgroundCenterColor) + { + mCurrentProperties.mBackgroundCenterColor = mixColors(mDefaultProperties.mBackgroundCenterColor, mSelectedProperties.mBackgroundCenterColor, mSelectedZoomPercent); + } + + if (mDefaultProperties.mBackgroundEdgeColor != mSelectedProperties.mBackgroundEdgeColor) + { + mCurrentProperties.mBackgroundEdgeColor = mixColors(mDefaultProperties.mBackgroundEdgeColor, mSelectedProperties.mBackgroundEdgeColor, mSelectedZoomPercent); + } + } +} + +Vector3f GridTileComponent::getBackgroundPosition() +{ + return mBackground.getPosition() + mPosition; +} + +std::shared_ptr GridTileComponent::getTexture() +{ + if (mImage != nullptr) + return mImage->getTexture(); + + return nullptr; +}; + +void GridTileComponent::forceSize(Vector2f size, float selectedZoom) +{ + mDefaultProperties.mSize = size; + mSelectedProperties.mSize = size * selectedZoom; +} diff --git a/es-core/src/components/GridTileComponent.h b/es-core/src/components/GridTileComponent.h new file mode 100644 index 0000000000..4fa11216d7 --- /dev/null +++ b/es-core/src/components/GridTileComponent.h @@ -0,0 +1,67 @@ +#pragma once +#ifndef ES_CORE_COMPONENTS_GRID_TILE_COMPONENT_H +#define ES_CORE_COMPONENTS_GRID_TILE_COMPONENT_H + +#include "NinePatchComponent.h" +#include "ImageComponent.h" + +struct GridTileProperties +{ + Vector2f mSize; + Vector2f mPadding; + unsigned int mImageColor; + std::string mBackgroundImage; + Vector2f mBackgroundCornerSize; + unsigned int mBackgroundCenterColor; + unsigned int mBackgroundEdgeColor; +}; + +class GridTileComponent : public GuiComponent +{ +public: + GridTileComponent(Window* window); + + void render(const Transform4x4f& parentTrans) override; + virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; + + // Made this a static function because the ImageGridComponent need to know the default tile max size + // to calculate the grid dimension before it instantiate the GridTileComponents + static Vector2f getDefaultTileSize(); + Vector2f getSelectedTileSize() const; + bool isSelected() const; + + void reset(); + + void setImage(const std::string& path); + void setImage(const std::shared_ptr& texture); + void setSelected(bool selected, bool allowAnimation = true, Vector3f* pPosition = NULL, bool force=false); + void setVisible(bool visible); + + void forceSize(Vector2f size, float selectedZoom); + + Vector3f getBackgroundPosition(); + + virtual void update(int deltaTime) override; + + std::shared_ptr getTexture(); + +private: + void resize(); + void calcCurrentProperties(); + void setSelectedZoom(float percent); + + std::shared_ptr mImage; + NinePatchComponent mBackground; + + GridTileProperties mDefaultProperties; + GridTileProperties mSelectedProperties; + GridTileProperties mCurrentProperties; + + float mSelectedZoomPercent; + bool mSelected; + bool mVisible; + + Vector3f mAnimPosition; +}; + +#endif // ES_CORE_COMPONENTS_GRID_TILE_COMPONENT_H diff --git a/es-core/src/components/HelpComponent.cpp b/es-core/src/components/HelpComponent.cpp index fdaecd360e..1d7ef55291 100644 --- a/es-core/src/components/HelpComponent.cpp +++ b/es-core/src/components/HelpComponent.cpp @@ -1,12 +1,12 @@ #include "components/HelpComponent.h" -#include "Renderer.h" -#include "Settings.h" -#include "Log.h" -#include "Util.h" + +#include "components/ComponentGrid.h" #include "components/ImageComponent.h" #include "components/TextComponent.h" -#include "components/ComponentGrid.h" -#include +#include "resources/TextureResource.h" +#include "utils/StringUtil.h" +#include "Log.h" +#include "Settings.h" #define OFFSET_X 12 // move the entire thing right by this amount (px) #define OFFSET_Y 12 // move the entire thing up by this amount (px) @@ -14,20 +14,20 @@ #define ICON_TEXT_SPACING 8 // space between [icon] and [text] (px) #define ENTRY_SPACING 16 // space between [text] and next [icon] (px) -using namespace Eigen; - -static const std::map ICON_PATH_MAP = boost::assign::map_list_of - ("up/down", ":/help/dpad_updown.svg") - ("left/right", ":/help/dpad_leftright.svg") - ("up/down/left/right", ":/help/dpad_all.svg") - ("a", ":/help/button_a.svg") - ("b", ":/help/button_b.svg") - ("x", ":/help/button_x.svg") - ("y", ":/help/button_y.svg") - ("l", ":/help/button_l.svg") - ("r", ":/help/button_r.svg") - ("start", ":/help/button_start.svg") - ("select", ":/help/button_select.svg"); +static const std::map ICON_PATH_MAP { + { "up/down", ":/help/dpad_updown.svg" }, + { "left/right", ":/help/dpad_leftright.svg" }, + { "up/down/left/right", ":/help/dpad_all.svg" }, + { "a", ":/help/button_a.svg" }, + { "b", ":/help/button_b.svg" }, + { "x", ":/help/button_x.svg" }, + { "y", ":/help/button_y.svg" }, + { "l", ":/help/button_l.svg" }, + { "r", ":/help/button_r.svg" }, + { "lr", ":/help/button_lr.svg" }, + { "start", ":/help/button_start.svg" }, + { "select", ":/help/button_select.svg" } +}; HelpComponent::HelpComponent(Window* window) : GuiComponent(window) { @@ -61,23 +61,23 @@ void HelpComponent::updateGrid() std::shared_ptr& font = mStyle.font; - mGrid = std::make_shared(mWindow, Vector2i(mPrompts.size() * 4, 1)); + mGrid = std::make_shared(mWindow, Vector2i((int)mPrompts.size() * 4, 1)); // [icon] [spacer1] [text] [spacer2] - + std::vector< std::shared_ptr > icons; std::vector< std::shared_ptr > labels; float width = 0; - const float height = round(font->getLetterHeight() * 1.25f); - for(auto it = mPrompts.begin(); it != mPrompts.end(); it++) + const float height = Math::round(font->getLetterHeight() * 1.25f); + for(auto it = mPrompts.cbegin(); it != mPrompts.cend(); it++) { auto icon = std::make_shared(mWindow); - icon->setImage(getIconTexture(it->first)); + icon->setImage(getIconTexture(it->first.c_str())); icon->setColorShift(mStyle.iconColor); icon->setResize(0, height); icons.push_back(icon); - auto lbl = std::make_shared(mWindow, strToUpper(it->second), font, mStyle.textColor); + auto lbl = std::make_shared(mWindow, Utils::String::toUpper(it->second), font, mStyle.textColor); labels.push_back(lbl); width += icon->getSize().x() + lbl->getSize().x() + ICON_TEXT_SPACING + ENTRY_SPACING; @@ -95,18 +95,19 @@ void HelpComponent::updateGrid() mGrid->setEntry(labels.at(i), Vector2i(col + 2, 0), false, false); } - mGrid->setPosition(Eigen::Vector3f(mStyle.position.x(), mStyle.position.y(), 0.0f)); + mGrid->setPosition(Vector3f(mStyle.position.x(), mStyle.position.y(), 0.0f)); //mGrid->setPosition(OFFSET_X, Renderer::getScreenHeight() - mGrid->getSize().y() - OFFSET_Y); + mGrid->setOrigin(mStyle.origin); } std::shared_ptr HelpComponent::getIconTexture(const char* name) { auto it = mIconCache.find(name); - if(it != mIconCache.end()) + if(it != mIconCache.cend()) return it->second; - + auto pathLookup = ICON_PATH_MAP.find(name); - if(pathLookup == ICON_PATH_MAP.end()) + if(pathLookup == ICON_PATH_MAP.cend()) { LOG(LogError) << "Unknown help icon \"" << name << "\"!"; return nullptr; @@ -132,10 +133,10 @@ void HelpComponent::setOpacity(unsigned char opacity) } } -void HelpComponent::render(const Eigen::Affine3f& parentTrans) +void HelpComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = parentTrans * getTransform(); - + Transform4x4f trans = parentTrans * getTransform(); + if(mGrid) mGrid->render(trans); } diff --git a/es-core/src/components/HelpComponent.h b/es-core/src/components/HelpComponent.h index 464e353dc7..e9c5d2e07d 100644 --- a/es-core/src/components/HelpComponent.h +++ b/es-core/src/components/HelpComponent.h @@ -1,11 +1,13 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_HELP_COMPONENT_H +#define ES_CORE_COMPONENTS_HELP_COMPONENT_H #include "GuiComponent.h" #include "HelpStyle.h" +class ComponentGrid; class ImageComponent; class TextureResource; -class ComponentGrid; class HelpComponent : public GuiComponent { @@ -15,7 +17,7 @@ class HelpComponent : public GuiComponent void clearPrompts(); void setPrompts(const std::vector& prompts); - void render(const Eigen::Affine3f& parent) override; + void render(const Transform4x4f& parent) override; void setOpacity(unsigned char opacity) override; void setStyle(const HelpStyle& style); @@ -30,3 +32,5 @@ class HelpComponent : public GuiComponent std::vector mPrompts; HelpStyle mStyle; }; + +#endif // ES_CORE_COMPONENTS_HELP_COMPONENT_H diff --git a/es-core/src/components/IList.h b/es-core/src/components/IList.h index 85d8064961..67f0ee22f9 100644 --- a/es-core/src/components/IList.h +++ b/es-core/src/components/IList.h @@ -1,12 +1,10 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_ILIST_H +#define ES_CORE_COMPONENTS_ILIST_H -#include -#include -#include -#include "GuiComponent.h" #include "components/ImageComponent.h" #include "resources/Font.h" -#include "Renderer.h" +#include "PowerSaver.h" enum CursorState { @@ -36,14 +34,15 @@ struct ScrollTierList // default scroll tiers const ScrollTier QUICK_SCROLL_TIERS[] = { {500, 500}, - {5000, 114}, - {0, 8} + {2000, 114}, + {4000, 32}, + {0, 16} }; -const ScrollTierList LIST_SCROLL_STYLE_QUICK = { 3, QUICK_SCROLL_TIERS }; +const ScrollTierList LIST_SCROLL_STYLE_QUICK = { 4, QUICK_SCROLL_TIERS }; const ScrollTier SLOW_SCROLL_TIERS[] = { {500, 500}, - {0, 150} + {0, 200} }; const ScrollTierList LIST_SCROLL_STYLE_SLOW = { 2, SLOW_SCROLL_TIERS }; @@ -59,7 +58,10 @@ class IList : public GuiComponent }; protected: + struct Entry mEntry; + int mCursor; + int mViewportTop; int mScrollTier; int mScrollVelocity; @@ -76,17 +78,18 @@ class IList : public GuiComponent const ListLoopType mLoopType; std::vector mEntries; - + public: - IList(Window* window, const ScrollTierList& tierList = LIST_SCROLL_STYLE_QUICK, const ListLoopType& loopType = LIST_PAUSE_AT_END) : GuiComponent(window), + IList(Window* window, const ScrollTierList& tierList = LIST_SCROLL_STYLE_QUICK, const ListLoopType& loopType = LIST_PAUSE_AT_END) : GuiComponent(window), mGradient(window), mTierList(tierList), mLoopType(loopType) { mCursor = 0; + mViewportTop = 0; mScrollTier = 0; mScrollVelocity = 0; mScrollTierAccumulator = 0; mScrollCursorAccumulator = 0; - + mTitleOverlayOpacity = 0x00; mTitleOverlayColor = 0xFFFFFF00; mGradient.setResize((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); @@ -99,10 +102,21 @@ class IList : public GuiComponent return (mScrollVelocity != 0 && mScrollTier > 0); } - void stopScrolling() + int getScrollingVelocity() + { + return mScrollVelocity; + } + + void stopScrolling(bool focusLost = false) { + if (focusLost) { + // force remove overlay (large two letter display in center) when user scrolls + // at max speed through list and then abruptly leaves the system + mTitleOverlayOpacity = 0; + } listInput(0); onCursorChanged(CURSOR_STOPPED); + } void clear() @@ -125,21 +139,21 @@ class IList : public GuiComponent return mEntries.at(mCursor).object; } - void setCursor(typename std::vector::iterator& it) + void setCursor(typename std::vector::const_iterator& it) { - assert(it != mEntries.end()); - mCursor = it - mEntries.begin(); + assert(it != mEntries.cend()); + mCursor = it - mEntries.cbegin(); onCursorChanged(CURSOR_STOPPED); } // returns true if successful (select is in our list), false if not bool setCursor(const UserData& obj) { - for(auto it = mEntries.begin(); it != mEntries.end(); it++) + for(auto it = mEntries.cbegin(); it != mEntries.cend(); it++) { if((*it).object == obj) { - mCursor = it - mEntries.begin(); + mCursor = (int)(it - mEntries.cbegin()); onCursorChanged(CURSOR_STOPPED); return true; } @@ -147,7 +161,17 @@ class IList : public GuiComponent return false; } - + + void setViewportTop(int index) + { + mViewportTop = index; + } + + int getViewportTop() + { + return mViewportTop; + } + // entry management void add(const Entry& e) { @@ -156,7 +180,7 @@ class IList : public GuiComponent bool remove(const UserData& obj) { - for(auto it = mEntries.begin(); it != mEntries.end(); it++) + for(auto it = mEntries.cbegin(); it != mEntries.cend(); it++) { if((*it).object == obj) { @@ -168,12 +192,12 @@ class IList : public GuiComponent return false; } - inline int size() const { return mEntries.size(); } + inline int size() const { return (int)mEntries.size(); } protected: - void remove(typename std::vector::iterator& it) + void remove(typename std::vector::const_iterator& it) { - if(mCursor > 0 && it - mEntries.begin() <= mCursor) + if(mCursor > 0 && it - mEntries.cbegin() <= mCursor) { mCursor--; onCursorChanged(CURSOR_STOPPED); @@ -185,6 +209,8 @@ class IList : public GuiComponent bool listInput(int velocity) // a velocity of 0 = stop scrolling { + PowerSaver::setState(velocity == 0); + // generate an onCursorChanged event in the stopped state when the user lets go of the key if(velocity == 0 && mScrollVelocity != 0) onCursorChanged(CURSOR_STOPPED); @@ -238,7 +264,7 @@ class IList : public GuiComponent scroll(mScrollVelocity); } - void listRenderTitleOverlay(const Eigen::Affine3f& trans) + void listRenderTitleOverlay(const Transform4x4f& /*trans*/) { if(size() == 0 || !mTitleOverlayFont || mTitleOverlayOpacity == 0) return; @@ -246,11 +272,11 @@ class IList : public GuiComponent // we don't bother caching this because it's only two letters and will change pretty much every frame if we're scrolling const std::string text = getSelectedName().size() >= 2 ? getSelectedName().substr(0, 2) : "??"; - Eigen::Vector2f off = mTitleOverlayFont->sizeText(text); + Vector2f off = mTitleOverlayFont->sizeText(text); off[0] = (Renderer::getScreenWidth() - off.x()) * 0.5f; off[1] = (Renderer::getScreenHeight() - off.y()) * 0.5f; - - Eigen::Affine3f identTrans = Eigen::Affine3f::Identity(); + + Transform4x4f identTrans = Transform4x4f::Identity(); mGradient.setOpacity(mTitleOverlayOpacity); mGradient.render(identTrans); @@ -299,6 +325,8 @@ class IList : public GuiComponent onCursorChanged((mScrollTier > 0) ? CURSOR_SCROLLING : CURSOR_STOPPED); } - virtual void onCursorChanged(const CursorState& state) {} - virtual void onScroll(int amt) {} + virtual void onCursorChanged(const CursorState& /*state*/) {} + virtual void onScroll(int /*amt*/) {} }; + +#endif // ES_CORE_COMPONENTS_ILIST_H diff --git a/es-core/src/components/ImageComponent.cpp b/es-core/src/components/ImageComponent.cpp index 2898c6f732..823ceb570d 100644 --- a/es-core/src/components/ImageComponent.cpp +++ b/es-core/src/components/ImageComponent.cpp @@ -1,29 +1,27 @@ #include "components/ImageComponent.h" -#include -#include -#include + +#include "resources/TextureResource.h" #include "Log.h" -#include "Renderer.h" +#include "Settings.h" #include "ThemeData.h" -#include "Util.h" -#include "resources/SVGResource.h" -Eigen::Vector2i ImageComponent::getTextureSize() const +Vector2i ImageComponent::getTextureSize() const { if(mTexture) return mTexture->getSize(); else - return Eigen::Vector2i(0, 0); + return Vector2i::Zero(); } -Eigen::Vector2f ImageComponent::getCenter() const +Vector2f ImageComponent::getSize() const { - return Eigen::Vector2f(mPosition.x() - (getSize().x() * mOrigin.x()) + getSize().x() / 2, - mPosition.y() - (getSize().y() * mOrigin.y()) + getSize().y() / 2); + return GuiComponent::getSize() * (mBottomRightCrop - mTopLeftCrop); } -ImageComponent::ImageComponent(Window* window) : GuiComponent(window), - mTargetIsMax(false), mFlipX(false), mFlipY(false), mOrigin(0.0, 0.0), mTargetSize(0, 0), mColorShift(0xFFFFFFFF) +ImageComponent::ImageComponent(Window* window, bool forceLoad, bool dynamic) : GuiComponent(window), + mTargetIsMax(false), mTargetIsMin(false), mFlipX(false), mFlipY(false), mTargetSize(0, 0), mColorShift(0xFFFFFFFF), + mColorShiftEnd(0xFFFFFFFF), mColorGradientHorizontal(true), mForceLoad(forceLoad), mDynamic(dynamic), + mFadeOpacity(0), mFading(false), mRotateByTargetSize(false), mTopLeftCrop(0.0f, 0.0f), mBottomRightCrop(1.0f, 1.0f) { updateColors(); } @@ -37,10 +35,8 @@ void ImageComponent::resize() if(!mTexture) return; - SVGResource* svg = dynamic_cast(mTexture.get()); - - const Eigen::Vector2f textureSize = svg ? svg->getSourceImageSize() : Eigen::Vector2f((float)mTexture->getSize().x(), (float)mTexture->getSize().y()); - if(textureSize.isZero()) + const Vector2f textureSize = mTexture->getSourceImageSize(); + if(textureSize == Vector2f::Zero()) return; if(mTexture->isTiled()) @@ -49,7 +45,7 @@ void ImageComponent::resize() }else{ // SVG rasterization is determined by height (see SVGResource.cpp), and rasterization is done in terms of pixels // if rounding is off enough in the rasterization step (for images with extreme aspect ratios), it can cause cutoff when the aspect ratio breaks - // so, we always make sure the resultant height is an integer to make sure cutoff doesn't happen, and scale width from that + // so, we always make sure the resultant height is an integer to make sure cutoff doesn't happen, and scale width from that // (you'll see this scattered throughout the function) // this is probably not the best way, so if you're familiar with this problem and have a better solution, please make a pull request! @@ -57,45 +53,69 @@ void ImageComponent::resize() { mSize = textureSize; - Eigen::Vector2f resizeScale((mTargetSize.x() / mSize.x()), (mTargetSize.y() / mSize.y())); - + Vector2f resizeScale((mTargetSize.x() / mSize.x()), (mTargetSize.y() / mSize.y())); + if(resizeScale.x() < resizeScale.y()) + { + mSize[0] *= resizeScale.x(); // this will be mTargetSize.x(). We can't exceed it, nor be lower than it. + // we need to make sure we're not creating an image larger than max size + mSize[1] = Math::min(Math::round(mSize[1] *= resizeScale.x()), mTargetSize.y()); + }else{ + mSize[1] = Math::round(mSize[1] * resizeScale.y()); // this will be mTargetSize.y(). We can't exceed it. + + // for SVG rasterization, always calculate width from rounded height (see comment above) + // we need to make sure we're not creating an image larger than max size + mSize[0] = Math::min((mSize[1] / textureSize.y()) * textureSize.x(), mTargetSize.x()); + } + }else if(mTargetIsMin) + { + mSize = textureSize; + + Vector2f resizeScale((mTargetSize.x() / mSize.x()), (mTargetSize.y() / mSize.y())); + + if(resizeScale.x() > resizeScale.y()) { mSize[0] *= resizeScale.x(); mSize[1] *= resizeScale.x(); + + float cropPercent = (mSize.y() - mTargetSize.y()) / (mSize.y() * 2); + crop(0, cropPercent, 0, cropPercent); }else{ mSize[0] *= resizeScale.y(); mSize[1] *= resizeScale.y(); + + float cropPercent = (mSize.x() - mTargetSize.x()) / (mSize.x() * 2); + crop(cropPercent, 0, cropPercent, 0); } // for SVG rasterization, always calculate width from rounded height (see comment above) - mSize[1] = round(mSize[1]); - mSize[0] = (mSize[1] / textureSize.y()) * textureSize.x(); + // we need to make sure we're not creating an image smaller than min size + mSize[1] = Math::max(Math::round(mSize[1]), mTargetSize.y()); + mSize[0] = Math::max((mSize[1] / textureSize.y()) * textureSize.x(), mTargetSize.x()); }else{ // if both components are set, we just stretch // if no components are set, we don't resize at all - mSize = mTargetSize.isZero() ? textureSize : mTargetSize; + mSize = mTargetSize == Vector2f::Zero() ? textureSize : mTargetSize; // if only one component is set, we resize in a way that maintains aspect ratio // for SVG rasterization, we always calculate width from rounded height (see comment above) if(!mTargetSize.x() && mTargetSize.y()) { - mSize[1] = round(mTargetSize.y()); + mSize[1] = Math::round(mTargetSize.y()); mSize[0] = (mSize.y() / textureSize.y()) * textureSize.x(); }else if(mTargetSize.x() && !mTargetSize.y()) { - mSize[1] = round((mTargetSize.x() / textureSize.x()) * textureSize.y()); + mSize[1] = Math::round((mTargetSize.x() / textureSize.x()) * textureSize.y()); mSize[0] = (mSize.y() / textureSize.y()) * textureSize.x(); } } } - if(svg) - { - // mSize.y() should already be rounded - svg->rasterizeAt((int)round(mSize.x()), (int)round(mSize.y())); - } + mSize[0] = Math::round(mSize.x()); + mSize[1] = Math::round(mSize.y()); + // mSize.y() should already be rounded + mTexture->rasterizeAt((size_t)mSize.x(), (size_t)mSize.y()); onSizeChanged(); } @@ -105,12 +125,22 @@ void ImageComponent::onSizeChanged() updateVertices(); } +void ImageComponent::setDefaultImage(std::string path) +{ + mDefaultPath = path; +} + void ImageComponent::setImage(std::string path, bool tile) { if(path.empty() || !ResourceManager::getInstance()->fileExists(path)) - mTexture.reset(); - else - mTexture = TextureResource::get(path, tile); + { + if(mDefaultPath.empty() || !ResourceManager::getInstance()->fileExists(mDefaultPath)) + mTexture.reset(); + else + mTexture = TextureResource::get(mDefaultPath, tile, mForceLoad, mDynamic); + } else { + mTexture = TextureResource::get(path, tile, mForceLoad, mDynamic); + } resize(); } @@ -121,7 +151,7 @@ void ImageComponent::setImage(const char* path, size_t length, bool tile) mTexture = TextureResource::get("", tile); mTexture->initFromMemory(path, length); - + resize(); } @@ -131,26 +161,77 @@ void ImageComponent::setImage(const std::shared_ptr& texture) resize(); } -void ImageComponent::setOrigin(float originX, float originY) -{ - mOrigin << originX, originY; - updateVertices(); -} - void ImageComponent::setResize(float width, float height) { - mTargetSize << width, height; + mTargetSize = Vector2f(width, height); mTargetIsMax = false; + mTargetIsMin = false; resize(); } void ImageComponent::setMaxSize(float width, float height) { - mTargetSize << width, height; + mTargetSize = Vector2f(width, height); mTargetIsMax = true; + mTargetIsMin = false; resize(); } +void ImageComponent::setMinSize(float width, float height) +{ + mTargetSize = Vector2f(width, height); + mTargetIsMax = false; + mTargetIsMin = true; + resize(); +} + +Vector2f ImageComponent::getRotationSize() const +{ + return mRotateByTargetSize ? mTargetSize : mSize; +} + +void ImageComponent::setRotateByTargetSize(bool rotate) +{ + mRotateByTargetSize = rotate; +} + +void ImageComponent::cropLeft(float percent) +{ + assert(percent >= 0.0f && percent <= 1.0f); + mTopLeftCrop.x() = percent; +} + +void ImageComponent::cropTop(float percent) +{ + assert(percent >= 0.0f && percent <= 1.0f); + mTopLeftCrop.y() = percent; +} + +void ImageComponent::cropRight(float percent) +{ + assert(percent >= 0.0f && percent <= 1.0f); + mBottomRightCrop.x() = 1.0f - percent; +} + +void ImageComponent::cropBot(float percent) +{ + assert(percent >= 0.0f && percent <= 1.0f); + mBottomRightCrop.y() = 1.0f - percent; +} + +void ImageComponent::crop(float left, float top, float right, float bot) +{ + cropLeft(left); + cropTop(top); + cropRight(right); + cropBot(bot); +} + +void ImageComponent::uncrop() +{ + crop(0, 0, 0, 0); +} + void ImageComponent::setFlipX(bool flip) { mFlipX = flip; @@ -166,13 +247,25 @@ void ImageComponent::setFlipY(bool flip) void ImageComponent::setColorShift(unsigned int color) { mColorShift = color; + mColorShiftEnd = color; + updateColors(); +} + +void ImageComponent::setColorShiftEnd(unsigned int color) +{ + mColorShiftEnd = color; + updateColors(); +} + +void ImageComponent::setColorGradientHorizontal(bool horizontal) +{ + mColorGradientHorizontal = horizontal; updateColors(); } void ImageComponent::setOpacity(unsigned char opacity) { mOpacity = opacity; - mColorShift = (mColorShift >> 8 << 8) | mOpacity; updateColors(); } @@ -183,92 +276,71 @@ void ImageComponent::updateVertices() // we go through this mess to make sure everything is properly rounded // if we just round vertices at the end, edge cases occur near sizes of 0.5 - Eigen::Vector2f topLeft(-mSize.x() * mOrigin.x(), -mSize.y() * mOrigin.y()); - Eigen::Vector2f bottomRight(mSize.x() * (1 -mOrigin.x()), mSize.y() * (1 - mOrigin.y())); - - const float width = round(bottomRight.x() - topLeft.x()); - const float height = round(bottomRight.y() - topLeft.y()); + const Vector2f topLeft = { mSize * mTopLeftCrop }; + const Vector2f bottomRight = { mSize * mBottomRightCrop }; + const float px = mTexture->isTiled() ? mSize.x() / getTextureSize().x() : 1.0f; + const float py = mTexture->isTiled() ? mSize.y() / getTextureSize().y() : 1.0f; - topLeft[0] = floor(topLeft[0]); - topLeft[1] = floor(topLeft[1]); - bottomRight[0] = topLeft[0] + width; - bottomRight[1] = topLeft[1] + height; + mVertices[0] = { { topLeft.x(), topLeft.y() }, { mTopLeftCrop.x(), py - mTopLeftCrop.y() }, 0 }; + mVertices[1] = { { topLeft.x(), bottomRight.y() }, { mTopLeftCrop.x(), 1.0f - mBottomRightCrop.y() }, 0 }; + mVertices[2] = { { bottomRight.x(), topLeft.y() }, { mBottomRightCrop.x() * px, py - mTopLeftCrop.y() }, 0 }; + mVertices[3] = { { bottomRight.x(), bottomRight.y() }, { mBottomRightCrop.x() * px, 1.0f - mBottomRightCrop.y() }, 0 }; - mVertices[0].pos << topLeft.x(), topLeft.y(); - mVertices[1].pos << topLeft.x(), bottomRight.y(); - mVertices[2].pos << bottomRight.x(), topLeft.y(); - - mVertices[3].pos << bottomRight.x(), topLeft.y(); - mVertices[4].pos << topLeft.x(), bottomRight.y(); - mVertices[5].pos << bottomRight.x(), bottomRight.y(); - - float px, py; - if(mTexture->isTiled()) - { - px = mSize.x() / getTextureSize().x(); - py = mSize.y() / getTextureSize().y(); - }else{ - px = 1; - py = 1; - } - - mVertices[0].tex << 0, py; - mVertices[1].tex << 0, 0; - mVertices[2].tex << px, py; + updateColors(); - mVertices[3].tex << px, py; - mVertices[4].tex << 0, 0; - mVertices[5].tex << px, 0; + // round vertices + for(int i = 0; i < 4; ++i) + mVertices[i].pos.round(); if(mFlipX) { - for(int i = 0; i < 6; i++) - mVertices[i].tex[0] = mVertices[i].tex[0] == px ? 0 : px; + for(int i = 0; i < 4; ++i) + mVertices[i].tex[0] = px - mVertices[i].tex[0]; } + if(mFlipY) { - for(int i = 1; i < 6; i++) - mVertices[i].tex[1] = mVertices[i].tex[1] == py ? 0 : py; + for(int i = 0; i < 4; ++i) + mVertices[i].tex[1] = py - mVertices[i].tex[1]; } } void ImageComponent::updateColors() { - Renderer::buildGLColorArray(mColors, mColorShift, 6); + const float opacity = (mOpacity * (mFading ? mFadeOpacity / 255.0 : 1.0)) / 255.0; + const unsigned int color = Renderer::convertColor(mColorShift & 0xFFFFFF00 | (unsigned char)((mColorShift & 0xFF) * opacity)); + const unsigned int colorEnd = Renderer::convertColor(mColorShiftEnd & 0xFFFFFF00 | (unsigned char)((mColorShiftEnd & 0xFF) * opacity)); + + mVertices[0].col = color; + mVertices[1].col = mColorGradientHorizontal ? colorEnd : color; + mVertices[2].col = mColorGradientHorizontal ? color : colorEnd; + mVertices[3].col = colorEnd; } -void ImageComponent::render(const Eigen::Affine3f& parentTrans) +void ImageComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = roundMatrix(parentTrans * getTransform()); + if (!isVisible()) + return; + + Transform4x4f trans = parentTrans * getTransform(); Renderer::setMatrix(trans); - + if(mTexture && mOpacity > 0) { + if(Settings::getInstance()->getBool("DebugImage")) { + Vector2f targetSizePos = (mTargetSize - mSize) * mOrigin * -1; + Renderer::drawRect(targetSizePos.x(), targetSizePos.y(), mTargetSize.x(), mTargetSize.y(), 0xFF000033, 0xFF000033); + Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), 0x00000033, 0x00000033); + } if(mTexture->isInitialized()) { // actually draw the image - mTexture->bind(); - - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - - glVertexPointer(2, GL_FLOAT, sizeof(Vertex), &mVertices[0].pos); - glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &mVertices[0].tex); - glColorPointer(4, GL_UNSIGNED_BYTE, 0, mColors); + // The bind() function returns false if the texture is not currently loaded. A blank + // texture is bound in this case but we want to handle a fade so it doesn't just 'jump' in + // when it finally loads + fadeIn(mTexture->bind()); + Renderer::drawTriangleStrips(&mVertices[0], 4); - glDrawArrays(GL_TRIANGLES, 0, 6); - - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); - - glDisable(GL_TEXTURE_2D); - glDisable(GL_BLEND); }else{ LOG(LogError) << "Image texture is not initialized!"; mTexture.reset(); @@ -278,6 +350,42 @@ void ImageComponent::render(const Eigen::Affine3f& parentTrans) GuiComponent::renderChildren(trans); } +void ImageComponent::fadeIn(bool textureLoaded) +{ + if (!mForceLoad) + { + if (!textureLoaded) + { + // Start the fade if this is the first time we've encountered the unloaded texture + if (!mFading) + { + // Start with a zero opacity and flag it as fading + mFadeOpacity = 0; + mFading = true; + updateColors(); + } + } + else if (mFading) + { + // The texture is loaded and we need to fade it in. The fade is based on the frame rate + // and is 1/4 second if running at 60 frames per second although the actual value is not + // that important + int opacity = mFadeOpacity + 255 / 15; + // See if we've finished fading + if (opacity >= 255) + { + mFadeOpacity = 255; + mFading = false; + } + else + { + mFadeOpacity = (unsigned char)opacity; + } + updateColors(); + } + } +} + bool ImageComponent::hasImage() { return (bool)mTexture; @@ -287,31 +395,26 @@ void ImageComponent::applyTheme(const std::shared_ptr& theme, const s { using namespace ThemeFlags; + GuiComponent::applyTheme(theme, view, element, (properties ^ SIZE) | ((properties & (SIZE | POSITION)) ? ORIGIN : 0)); + const ThemeData::ThemeElement* elem = theme->getElement(view, element, "image"); if(!elem) - { return; - } - Eigen::Vector2f scale = getParent() ? getParent()->getSize() : Eigen::Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); - - if(properties & POSITION && elem->has("pos")) - { - Eigen::Vector2f denormalized = elem->get("pos").cwiseProduct(scale); - setPosition(Eigen::Vector3f(denormalized.x(), denormalized.y(), 0)); - } + Vector2f scale = getParent() ? getParent()->getSize() : Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); if(properties & ThemeFlags::SIZE) { if(elem->has("size")) - setResize(elem->get("size").cwiseProduct(scale)); + setResize(elem->get("size") * scale); else if(elem->has("maxSize")) - setMaxSize(elem->get("maxSize").cwiseProduct(scale)); + setMaxSize(elem->get("maxSize") * scale); + else if(elem->has("minSize")) + setMinSize(elem->get("minSize") * scale); } - // position + size also implies origin - if((properties & ORIGIN || (properties & POSITION && properties & ThemeFlags::SIZE)) && elem->has("origin")) - setOrigin(elem->get("origin")); + if(elem->has("default")) + setDefaultImage(elem->get("default")); if(properties & PATH && elem->has("path")) { @@ -319,8 +422,17 @@ void ImageComponent::applyTheme(const std::shared_ptr& theme, const s setImage(elem->get("path"), tile); } - if(properties & COLOR && elem->has("color")) - setColorShift(elem->get("color")); + if(properties & COLOR) + { + if(elem->has("color")) + setColorShift(elem->get("color")); + + if (elem->has("colorEnd")) + setColorShiftEnd(elem->get("colorEnd")); + + if (elem->has("gradientType")) + setColorGradientHorizontal(!(elem->get("gradientType").compare("horizontal"))); + } } std::vector ImageComponent::getHelpPrompts() diff --git a/es-core/src/components/ImageComponent.h b/es-core/src/components/ImageComponent.h index 939c6c7cd2..ef6ab47c42 100644 --- a/es-core/src/components/ImageComponent.h +++ b/es-core/src/components/ImageComponent.h @@ -1,20 +1,21 @@ -#ifndef _IMAGECOMPONENT_H_ -#define _IMAGECOMPONENT_H_ - -#include "platform.h" -#include GLHEADER +#pragma once +#ifndef ES_CORE_COMPONENTS_IMAGE_COMPONENT_H +#define ES_CORE_COMPONENTS_IMAGE_COMPONENT_H +#include "renderers/Renderer.h" +#include "math/Vector2i.h" #include "GuiComponent.h" -#include -#include -#include "resources/TextureResource.h" + +class TextureResource; class ImageComponent : public GuiComponent { public: - ImageComponent(Window* window); + ImageComponent(Window* window, bool forceLoad = false, bool dynamic = true); virtual ~ImageComponent(); + void setDefaultImage(std::string path); + //Loads the image at the given filepath. Will tile if tile is true (retrieves texture as tiling, creates vertices accordingly). void setImage(std::string path, bool tile = false); //Loads an image from memory. @@ -25,66 +26,87 @@ class ImageComponent : public GuiComponent void onSizeChanged() override; void setOpacity(unsigned char opacity) override; - //Sets the origin as a percentage of this image (e.g. (0, 0) is top left, (0.5, 0.5) is the center) - void setOrigin(float originX, float originY); - inline void setOrigin(Eigen::Vector2f origin) { setOrigin(origin.x(), origin.y()); } - // Resize the image to fit this size. If one axis is zero, scale that axis to maintain aspect ratio. // If both are non-zero, potentially break the aspect ratio. If both are zero, no resizing. // Can be set before or after an image is loaded. // setMaxSize() and setResize() are mutually exclusive. void setResize(float width, float height); - inline void setResize(const Eigen::Vector2f& size) { setResize(size.x(), size.y()); } + inline void setResize(const Vector2f& size) { setResize(size.x(), size.y()); } // Resize the image to be as large as possible but fit within a box of this size. // Can be set before or after an image is loaded. // Never breaks the aspect ratio. setMaxSize() and setResize() are mutually exclusive. void setMaxSize(float width, float height); - inline void setMaxSize(const Eigen::Vector2f& size) { setMaxSize(size.x(), size.y()); } + inline void setMaxSize(const Vector2f& size) { setMaxSize(size.x(), size.y()); } + + void setMinSize(float width, float height); + inline void setMinSize(const Vector2f& size) { setMinSize(size.x(), size.y()); } + + Vector2f getRotationSize() const override; + + // Applied AFTER image positioning and sizing + // cropTop(0.2) will crop 20% of the top of the image. + void cropLeft(float percent); + void cropTop(float percent); + void cropRight(float percent); + void cropBot(float percent); + void crop(float left, float top, float right, float bot); + void uncrop(); // Multiply all pixels in the image by this color when rendering. void setColorShift(unsigned int color); + void setColorShiftEnd(unsigned int color); + void setColorGradientHorizontal(bool horizontal); void setFlipX(bool flip); // Mirror on the X axis. void setFlipY(bool flip); // Mirror on the Y axis. + void setRotateByTargetSize(bool rotate); // Flag indicating if rotation should be based on target size vs. actual size. + // Returns the size of the current texture, or (0, 0) if none is loaded. May be different than drawn size (use getSize() for that). - Eigen::Vector2i getTextureSize() const; + Vector2i getTextureSize() const; - // Returns the center point of the image (takes origin into account). - Eigen::Vector2f getCenter() const; + Vector2f getSize() const override; bool hasImage(); - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; virtual std::vector getHelpPrompts() override; + + std::shared_ptr getTexture() { return mTexture; }; private: - Eigen::Vector2f mTargetSize; - Eigen::Vector2f mOrigin; + Vector2f mTargetSize; - bool mFlipX, mFlipY, mTargetIsMax; + bool mFlipX, mFlipY, mTargetIsMax, mTargetIsMin; // Calculates the correct mSize from our resizing information (set by setResize/setMaxSize). // Used internally whenever the resizing parameters or texture change. void resize(); - struct Vertex - { - Eigen::Vector2f pos; - Eigen::Vector2f tex; - } mVertices[6]; - - GLubyte mColors[6*4]; + Renderer::Vertex mVertices[4]; void updateVertices(); void updateColors(); + void fadeIn(bool textureLoaded); unsigned int mColorShift; + unsigned int mColorShiftEnd; + bool mColorGradientHorizontal; + + std::string mDefaultPath; std::shared_ptr mTexture; + unsigned char mFadeOpacity; + bool mFading; + bool mForceLoad; + bool mDynamic; + bool mRotateByTargetSize; + + Vector2f mTopLeftCrop; + Vector2f mBottomRightCrop; }; -#endif +#endif // ES_CORE_COMPONENTS_IMAGE_COMPONENT_H diff --git a/es-core/src/components/ImageGridComponent.h b/es-core/src/components/ImageGridComponent.h index b00a6c624b..a6d8eef9b4 100644 --- a/es-core/src/components/ImageGridComponent.h +++ b/es-core/src/components/ImageGridComponent.h @@ -1,13 +1,32 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_IMAGE_GRID_COMPONENT_H +#define ES_CORE_COMPONENTS_IMAGE_GRID_COMPONENT_H -#include "GuiComponent.h" -#include "components/IList.h" -#include "components/ImageComponent.h" #include "Log.h" +#include "animations/LambdaAnimation.h" +#include "components/IList.h" +#include "resources/TextureResource.h" +#include "GridTileComponent.h" +#include "Sound.h" + +#define EXTRAITEMS 2 + +enum ScrollDirection +{ + SCROLL_VERTICALLY, + SCROLL_HORIZONTALLY +}; + +enum ImageSource +{ + THUMBNAIL, + IMAGE, + MARQUEE +}; struct ImageGridData { - std::shared_ptr texture; + std::string texturePath; }; template @@ -15,13 +34,14 @@ class ImageGridComponent : public IList { protected: using IList::mEntries; + using IList::mScrollTier; using IList::listUpdate; using IList::listInput; using IList::listRenderTitleOverlay; using IList::getTransform; using IList::mSize; using IList::mCursor; - using IList::Entry; + using IList::mEntry; using IList::mWindow; public: @@ -32,71 +52,93 @@ class ImageGridComponent : public IList ImageGridComponent(Window* window); void add(const std::string& name, const std::string& imagePath, const T& obj); - - void onSizeChanged() override; bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; - -private: - Eigen::Vector2f getSquareSize(std::shared_ptr tex = nullptr) const - { - Eigen::Vector2f aspect(1, 1); - - if(tex) - { - const Eigen::Vector2i& texSize = tex->getSize(); - - if(texSize.x() > texSize.y()) - aspect[0] = (float)texSize.x() / texSize.y(); - else - aspect[1] = (float)texSize.y() / texSize.x(); - } + void render(const Transform4x4f& parentTrans) override; + virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; - return Eigen::Vector2f(156 * aspect.x(), 156 * aspect.y()); - }; - - Eigen::Vector2f getMaxSquareSize() const - { - Eigen::Vector2f squareSize(32, 32); + void onSizeChanged() override; + inline void setCursorChangedCallback(const std::function& func) { mCursorChangedCallback = func; } - // calc biggest square size - for(auto it = mEntries.begin(); it != mEntries.end(); it++) - { - Eigen::Vector2f chkSize = getSquareSize(it->data.texture); - if(chkSize.x() > squareSize.x()) - squareSize[0] = chkSize[0]; - if(chkSize.y() > squareSize.y()) - squareSize[1] = chkSize[1]; - } + ImageSource getImageSource() { return mImageSource; }; - return squareSize; - }; +protected: + virtual void onScroll(int /*amt*/) override { if(!mScrollSound.empty()) Sound::get(mScrollSound)->play(); } + virtual void onCursorChanged(const CursorState& state) override; - Eigen::Vector2i getGridSize() const - { - Eigen::Vector2f squareSize = getMaxSquareSize(); - Eigen::Vector2i gridSize(mSize.x() / (squareSize.x() + getPadding().x()), mSize.y() / (squareSize.y() + getPadding().y())); - return gridSize; - }; +private: + // TILES + void buildTiles(); + void updateTiles(bool allowAnimation = true, bool updateSelectedState = true); + void updateTileAtPos(int tilePos, int imgPos, bool allowAnimation, bool updateSelectedState); + void calcGridDimension(); + bool isScrollLoop(); - Eigen::Vector2f getPadding() const { return Eigen::Vector2f(24, 24); } - - void buildImages(); - void updateImages(); + bool isVertical() { return mScrollDirection == SCROLL_VERTICALLY; }; - virtual void onCursorChanged(const CursorState& state); + // IMAGES & ENTRIES bool mEntriesDirty; - - std::vector mImages; + int mLastCursor; + std::string mDefaultGameTexture; + std::string mDefaultFolderTexture; + + // TILES + bool mLastRowPartial; + Vector2f mAutoLayout; + float mAutoLayoutZoom; + + Vector4f mPadding; + Vector2f mMargin; + Vector2f mTileSize; + Vector2i mGridDimension; + std::shared_ptr mTheme; + std::vector< std::shared_ptr > mTiles; + + int mStartPosition; + + float mCamera; + float mCameraDirection; + + // MISCELLANEOUS + bool mAnimate; + bool mCenterSelection; + bool mScrollLoop; + ScrollDirection mScrollDirection; + std::string mScrollSound; + ImageSource mImageSource; + std::function mCursorChangedCallback; }; template ImageGridComponent::ImageGridComponent(Window* window) : IList(window) { + Vector2f screen = Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + + mCamera = 0.0; + mCameraDirection = 1.0; + + mAutoLayout = Vector2f::Zero(); + mAutoLayoutZoom = 1.0; + + mStartPosition = 0; + mEntriesDirty = true; + mLastCursor = 0; + mDefaultGameTexture = ":/cartridge.svg"; + mDefaultFolderTexture = ":/folder.svg"; + + mSize = screen * 0.80f; + mMargin = screen * 0.07f; + mPadding = Vector4f::Zero(); + mTileSize = GridTileComponent::getDefaultTileSize(); + + mAnimate = true; + mCenterSelection = false; + mScrollLoop = false; + mScrollDirection = SCROLL_VERTICALLY; + mImageSource = THUMBNAIL; } template @@ -105,7 +147,8 @@ void ImageGridComponent::add(const std::string& name, const std::string& imag typename IList::Entry entry; entry.name = name; entry.object = obj; - entry.data.texture = ResourceManager::getInstance()->fileExists(imagePath) ? TextureResource::get(imagePath) : TextureResource::get(":/button.png"); + entry.data.texturePath = imagePath; + static_cast*>(this)->add(entry); mEntriesDirty = true; } @@ -115,23 +158,28 @@ bool ImageGridComponent::input(InputConfig* config, Input input) { if(input.value != 0) { - Eigen::Vector2i dir = Eigen::Vector2i::Zero(); - if(config->isMappedTo("up", input)) - dir[1] = -1; - else if(config->isMappedTo("down", input)) - dir[1] = 1; - else if(config->isMappedTo("left", input)) - dir[0] = -1; - else if(config->isMappedTo("right", input)) - dir[0] = 1; - - if(dir != Eigen::Vector2i::Zero()) + int idx = isVertical() ? 0 : 1; + + Vector2i dir = Vector2i::Zero(); + if(config->isMappedLike("up", input)) + dir[1 ^ idx] = -1; + else if(config->isMappedLike("down", input)) + dir[1 ^ idx] = 1; + else if(config->isMappedLike("left", input)) + dir[0 ^ idx] = -1; + else if(config->isMappedLike("right", input)) + dir[0 ^ idx] = 1; + + if(dir != Vector2i::Zero()) { - listInput(dir.x() + dir.y() * getGridSize().x()); + if (isVertical()) + listInput(dir.x() + dir.y() * mGridDimension.x()); + else + listInput(dir.x() + dir.y() * mGridDimension.y()); return true; } }else{ - if(config->isMappedTo("up", input) || config->isMappedTo("down", input) || config->isMappedTo("left", input) || config->isMappedTo("right", input)) + if(config->isMappedLike("up", input) || config->isMappedLike("down", input) || config->isMappedLike("left", input) || config->isMappedLike("right", input)) { stopScrolling(); } @@ -143,113 +191,525 @@ bool ImageGridComponent::input(InputConfig* config, Input input) template void ImageGridComponent::update(int deltaTime) { + GuiComponent::update(deltaTime); listUpdate(deltaTime); + + for(auto it = mTiles.begin(); it != mTiles.end(); it++) + (*it)->update(deltaTime); } template -void ImageGridComponent::render(const Eigen::Affine3f& parentTrans) +void ImageGridComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = getTransform() * parentTrans; + Transform4x4f trans = getTransform() * parentTrans; + Transform4x4f tileTrans = trans; + + float offsetX = isVertical() ? 0.0f : mCamera * mCameraDirection * (mTileSize.x() + mMargin.x()); + float offsetY = isVertical() ? mCamera * mCameraDirection * (mTileSize.y() + mMargin.y()) : 0.0f; + + tileTrans.translate(Vector3f(offsetX, offsetY, 0.0)); if(mEntriesDirty) { - buildImages(); - updateImages(); + updateTiles(); mEntriesDirty = false; } - for(auto it = mImages.begin(); it != mImages.end(); it++) + // Create a clipRect to hide tiles used to buffer texture loading + float scaleX = trans.r0().x(); + float scaleY = trans.r1().y(); + + Vector2i pos((int)Math::round(trans.translation()[0]), (int)Math::round(trans.translation()[1])); + Vector2i size((int)Math::round(mSize.x() * scaleX), (int)Math::round(mSize.y() * scaleY)); + + Renderer::pushClipRect(pos, size); + + // Render all the tiles but the selected one + std::shared_ptr selectedTile = NULL; + for(auto it = mTiles.begin(); it != mTiles.end(); it++) { - it->render(trans); + std::shared_ptr tile = (*it); + + // If it's the selected image, keep it for later, otherwise render it now + if(tile->isSelected()) + selectedTile = tile; + else + tile->render(tileTrans); } + Renderer::popClipRect(); + + // Render the selected image on top of the others + if (selectedTile != NULL) + selectedTile->render(tileTrans); + + listRenderTitleOverlay(trans); + GuiComponent::renderChildren(trans); } template -void ImageGridComponent::onCursorChanged(const CursorState& state) +void ImageGridComponent::applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) { - updateImages(); + // Apply theme to GuiComponent but not size property, which will be applied at the end of this function + GuiComponent::applyTheme(theme, view, element, properties ^ ThemeFlags::SIZE); + + // Keep the theme pointer to apply it on the tiles later on + mTheme = theme; + + Vector2f screen = Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + + const ThemeData::ThemeElement* elem = theme->getElement(view, element, "imagegrid"); + if (elem) + { + if (elem->has("margin")) + mMargin = elem->get("margin") * screen; + + if (elem->has("padding")) + mPadding = elem->get("padding") * Vector4f(screen.x(), screen.y(), screen.x(), screen.y()); + + if (elem->has("autoLayout")) + mAutoLayout = elem->get("autoLayout"); + + if (elem->has("autoLayoutSelectedZoom")) + mAutoLayoutZoom = elem->get("autoLayoutSelectedZoom"); + + if (elem->has("imageSource")) + { + auto direction = elem->get("imageSource"); + if (direction == "image") + mImageSource = IMAGE; + else if (direction == "marquee") + mImageSource = MARQUEE; + else + mImageSource = THUMBNAIL; + } + else + mImageSource = THUMBNAIL; + + if (elem->has("scrollDirection")) + mScrollDirection = (ScrollDirection)(elem->get("scrollDirection") == "horizontal"); + + if (elem->has("centerSelection")) + { + mCenterSelection = (elem->get("centerSelection")); + + if (elem->has("scrollLoop")) + mScrollLoop = (elem->get("scrollLoop")); + } + + if (elem->has("animate")) + mAnimate = (elem->get("animate")); + else + mAnimate = true; + + if (elem->has("gameImage")) + { + std::string path = elem->get("gameImage"); + + if (!ResourceManager::getInstance()->fileExists(path)) + { + LOG(LogWarning) << "Could not replace default game image, check path: " << path; + } + else + { + std::string oldDefaultGameTexture = mDefaultGameTexture; + mDefaultGameTexture = path; + + // mEntries are already loaded at this point, + // so we need to update them with new game image texture + for (auto it = mEntries.begin(); it != mEntries.end(); it++) + { + if ((*it).data.texturePath == oldDefaultGameTexture) + (*it).data.texturePath = mDefaultGameTexture; + } + } + } + + if (elem->has("folderImage")) + { + std::string path = elem->get("folderImage"); + + if (!ResourceManager::getInstance()->fileExists(path)) + { + LOG(LogWarning) << "Could not replace default folder image, check path: " << path; + } + else + { + std::string oldDefaultFolderTexture = mDefaultFolderTexture; + mDefaultFolderTexture = path; + + // mEntries are already loaded at this point, + // so we need to update them with new folder image texture + for (auto it = mEntries.begin(); it != mEntries.end(); it++) + { + if ((*it).data.texturePath == oldDefaultFolderTexture) + (*it).data.texturePath = mDefaultFolderTexture; + } + } + } + + if (elem->has("scrollSound")) + mScrollSound = elem->get("scrollSound"); + } + + // We still need to manually get the grid tile size here, + // so we can recalculate the new grid dimension, and THEN (re)build the tiles + elem = theme->getElement(view, "default", "gridtile"); + + mTileSize = elem && elem->has("size") ? + elem->get("size") * screen : + GridTileComponent::getDefaultTileSize(); + + // Apply size property, will trigger a call to onSizeChanged() which will build the tiles + GuiComponent::applyTheme(theme, view, element, ThemeFlags::SIZE); + + // Trigger the call manually if the theme have no "imagegrid" element + if (!elem) + buildTiles(); } template void ImageGridComponent::onSizeChanged() { - buildImages(); - updateImages(); + buildTiles(); + updateTiles(); } -// create and position imagecomponents (mImages) template -void ImageGridComponent::buildImages() +void ImageGridComponent::onCursorChanged(const CursorState& state) { - mImages.clear(); + if (mLastCursor == mCursor) + { + if (state == CURSOR_STOPPED && mCursorChangedCallback) + mCursorChangedCallback(state); - Eigen::Vector2i gridSize = getGridSize(); - Eigen::Vector2f squareSize = getMaxSquareSize(); - Eigen::Vector2f padding = getPadding(); + return; + } + + bool direction = mCursor >= mLastCursor; + int diff = direction ? mCursor - mLastCursor : mLastCursor - mCursor; + if (isScrollLoop() && diff == mEntries.size() - 1) + { + direction = !direction; + } + + int oldStart = mStartPosition; + + int dimScrollable = (isVertical() ? mGridDimension.y() : mGridDimension.x()) - 2 * EXTRAITEMS; + int dimOpposite = isVertical() ? mGridDimension.x() : mGridDimension.y(); - // attempt to center within our size - Eigen::Vector2f totalSize(gridSize.x() * (squareSize.x() + padding.x()), gridSize.y() * (squareSize.y() + padding.y())); - Eigen::Vector2f offset(mSize.x() - totalSize.x(), mSize.y() - totalSize.y()); - offset /= 2; + int centralCol = (int)(dimScrollable - 0.5) / 2; + int maxCentralCol = dimScrollable / 2; - for(int y = 0; y < gridSize.y(); y++) + int oldCol = (mLastCursor / dimOpposite); + int col = (mCursor / dimOpposite); + + int lastCol = (((int)mEntries.size() - 1) / dimOpposite); + + int lastScroll = std::max(0, (lastCol + 1 - dimScrollable)); + + float startPos = 0; + float endPos = 1; + + if (((GuiComponent*)this)->isAnimationPlaying(2)) { - for(int x = 0; x < gridSize.x(); x++) - { - mImages.push_back(ImageComponent(mWindow)); - ImageComponent& image = mImages.at(y * gridSize.x() + x); + startPos = 0; + ((GuiComponent*)this)->cancelAnimation(2); + updateTiles(false, false); + } + + if (mAnimate) { + + std::shared_ptr oldTile = nullptr; + std::shared_ptr newTile = nullptr; + + int oldIdx = mLastCursor - mStartPosition + (dimOpposite * EXTRAITEMS); + if (oldIdx >= 0 && oldIdx < mTiles.size()) + oldTile = mTiles[oldIdx]; + + int newIdx = mCursor - mStartPosition + (dimOpposite * EXTRAITEMS); + if (isScrollLoop()) { + if (newIdx < 0) + newIdx += (int)mEntries.size(); + else if (newIdx >= mTiles.size()) + newIdx -= (int)mEntries.size(); + } - image.setPosition((squareSize.x() + padding.x()) * (x + 0.5f) + offset.x(), (squareSize.y() + padding.y()) * (y + 0.5f) + offset.y()); - image.setOrigin(0.5f, 0.5f); - image.setResize(squareSize.x(), squareSize.y()); - image.setImage(""); + if (newIdx >= 0 && newIdx < mTiles.size()) + newTile = mTiles[newIdx]; + + for (auto it = mTiles.begin(); it != mTiles.end(); it++) { + if ((*it)->isSelected() && *it != oldTile && *it != newTile) { + startPos = 0; + (*it)->setSelected(false, false, nullptr); + } + } + + Vector3f oldPos = Vector3f::Zero(); + + if (oldTile != nullptr && oldTile != newTile) { + oldPos = oldTile->getBackgroundPosition(); + oldTile->setSelected(false, true, nullptr, true); } + + if (newTile != nullptr) + newTile->setSelected(true, true, oldPos == Vector3f::Zero() ? nullptr : &oldPos, true); + } + + int firstVisibleCol = mStartPosition / dimOpposite; + + if ((col < centralCol || (col == 0 && col == centralCol)) && !mCenterSelection) + mStartPosition = 0; + else if ((col - centralCol) > lastScroll && !mCenterSelection && !isScrollLoop()) + mStartPosition = lastScroll * dimOpposite; + else if ((maxCentralCol != centralCol && col == firstVisibleCol + maxCentralCol) || col == firstVisibleCol + centralCol) + { + if (col == firstVisibleCol + maxCentralCol) + mStartPosition = (col - maxCentralCol) * dimOpposite; + else + mStartPosition = (col - centralCol) * dimOpposite; + } + else + { + if (oldCol == firstVisibleCol + maxCentralCol) + mStartPosition = (col - maxCentralCol) * dimOpposite; + else + mStartPosition = (col - centralCol) * dimOpposite; + } + + auto lastCursor = mLastCursor; + mLastCursor = mCursor; + + mCameraDirection = direction ? -1.0f : 1.0f; + mCamera = 0; + + if (lastCursor < 0 || !mAnimate) + { + updateTiles(mAnimate && (lastCursor >= 0 || isScrollLoop())); + + if (mCursorChangedCallback) + mCursorChangedCallback(state); + + return; } + + if (mCursorChangedCallback) + mCursorChangedCallback(state); + + bool moveCamera = (oldStart != mStartPosition); + + auto func = [this, startPos, endPos, moveCamera](float t) + { + if (!moveCamera) + return; + + t -= 1; // cubic ease out + float pct = Math::lerp(0, 1, t*t*t + 1); + t = startPos * (1.0f - pct) + endPos * pct; + + mCamera = t; + }; + + ((GuiComponent*)this)->setAnimation(new LambdaAnimation(func, 250), 0, [this] { + mCamera = 0; + updateTiles(false); + }, false, 2); } + +// Create and position tiles (mTiles) template -void ImageGridComponent::updateImages() +void ImageGridComponent::buildTiles() { - if(mImages.empty()) - buildImages(); + mStartPosition = 0; + mTiles.clear(); - Eigen::Vector2i gridSize = getGridSize(); + calcGridDimension(); - int cursorRow = mCursor / gridSize.x(); - int cursorCol = mCursor % gridSize.x(); + if (mCenterSelection) + { + int dimScrollable = (isVertical() ? mGridDimension.y() : mGridDimension.x()) - 2 * EXTRAITEMS; + mStartPosition -= (int) Math::floorf(dimScrollable / 2.0f); + } - int start = (cursorRow - (gridSize.y() / 2)) * gridSize.x(); + Vector2f tileDistance = mTileSize + mMargin; - //if we're at the end put the row as close as we can and no higher - if(start + (gridSize.x() * gridSize.y()) >= (int)mEntries.size()) - start = gridSize.x() * ((int)mEntries.size()/gridSize.x() - gridSize.y() + 1); + if (mAutoLayout.x() != 0 && mAutoLayout.y() != 0) + { + auto x = (mSize.x() - (mMargin.x() * (mAutoLayout.x() - 1)) - mPadding.x() - mPadding.z()) / (int) mAutoLayout.x(); + auto y = (mSize.y() - (mMargin.y() * (mAutoLayout.y() - 1)) - mPadding.y() - mPadding.w()) / (int) mAutoLayout.y(); - if(start < 0) - start = 0; + mTileSize = Vector2f(x, y); + tileDistance = mTileSize + mMargin; + } + + bool vert = isVertical(); + + Vector2f startPosition = mTileSize / 2; - unsigned int i = (unsigned int)start; - for(unsigned int img = 0; img < mImages.size(); img++) + startPosition += mPadding.v2(); + + int X, Y; + + // Layout tile size and position + for (int y = 0; y < (vert ? mGridDimension.y() : mGridDimension.x()); y++) { - ImageComponent& image = mImages.at(img); - if(i >= (unsigned int)size()) + for (int x = 0; x < (vert ? mGridDimension.x() : mGridDimension.y()); x++) { - image.setImage(""); - continue; + // Create tiles + auto tile = std::make_shared(mWindow); + + // In Vertical mod, tiles are ordered from left to right, then from top to bottom + // In Horizontal mod, tiles are ordered from top to bottom, then from left to right + X = vert ? x : y - EXTRAITEMS; + Y = vert ? y - EXTRAITEMS : x; + + tile->setPosition(X * tileDistance.x() + startPosition.x(), Y * tileDistance.y() + startPosition.y()); + tile->setOrigin(0.5f, 0.5f); + tile->setImage(""); + + if (mTheme) + tile->applyTheme(mTheme, "grid", "gridtile", ThemeFlags::ALL); + + if (mAutoLayout.x() != 0 && mAutoLayout.y() != 0) + tile->forceSize(mTileSize, mAutoLayoutZoom); + + mTiles.push_back(tile); } + } +} + +template +void ImageGridComponent::updateTiles(bool allowAnimation, bool updateSelectedState) +{ + if (!mTiles.size()) + return; + + // Stop updating the tiles at highest scroll speed + if (mScrollTier == 3) + { + for (int ti = 0; ti < (int)mTiles.size(); ti++) + { + std::shared_ptr tile = mTiles.at(ti); + + tile->setSelected(false); + tile->setImage(mDefaultGameTexture); + tile->setVisible(false); + } + return; + } + + // Temporary store previous textures so they can't be unloaded + std::vector> previousTextures; + for (int ti = 0; ti < (int)mTiles.size(); ti++) + { + std::shared_ptr tile = mTiles.at(ti); + previousTextures.push_back(tile->getTexture()); + } + + // Update the tiles + int firstImg = mStartPosition - EXTRAITEMS * (isVertical() ? mGridDimension.x() : mGridDimension.y()); + for (int ti = 0; ti < (int)mTiles.size(); ti++) + updateTileAtPos(ti, firstImg + ti, allowAnimation, updateSelectedState); + + if (updateSelectedState) + mLastCursor = mCursor; + + mLastCursor = mCursor; +} + +template +void ImageGridComponent::updateTileAtPos(int tilePos, int imgPos, bool allowAnimation, bool updateSelectedState) +{ + std::shared_ptr tile = mTiles.at(tilePos); + + if(isScrollLoop()) + { + if (imgPos < 0) + imgPos += (int)mEntries.size(); + else if (imgPos >= size()) + imgPos -= (int)mEntries.size(); + } - Eigen::Vector2f squareSize = getSquareSize(mEntries.at(i).data.texture); - if(i == mCursor) + // If we have more tiles than we have to display images on screen, hide them + if(imgPos < 0 || imgPos >= size() || tilePos < 0 || tilePos >= (int) mTiles.size()) // Same for tiles out of the buffer + { + if (updateSelectedState) + tile->setSelected(false, allowAnimation); + + tile->reset(); + tile->setVisible(false); + } + else + { + tile->setVisible(true); + + std::string imagePath = mEntries.at(imgPos).data.texturePath; + + if (ResourceManager::getInstance()->fileExists(imagePath)) + tile->setImage(imagePath); + else if (mEntries.at(imgPos).object->getType() == 2) + tile->setImage(mDefaultFolderTexture); + else + tile->setImage(mDefaultGameTexture); + + if (updateSelectedState) { - image.setColorShift(0xFFFFFFFF); - image.setResize(squareSize.x() + getPadding().x() * 0.95f, squareSize.y() + getPadding().y() * 0.95f); - }else{ - image.setColorShift(0xAAAAAABB); - image.setResize(squareSize.x(), squareSize.y()); + if (imgPos == mCursor && mCursor != mLastCursor) + { + int dif = mCursor - tilePos; + int idx = mLastCursor - dif; + + if (idx < 0 || idx >= mTiles.size()) + idx = 0; + + Vector3f pos = mTiles.at(idx)->getBackgroundPosition(); + tile->setSelected(true, allowAnimation, &pos); + } + else + tile->setSelected(imgPos == mCursor, allowAnimation); } - image.setImage(mEntries.at(i).data.texture); - i++; } } + +// Calculate how much tiles of size mTileSize we can fit in a grid of size mSize using a margin of size mMargin +template +void ImageGridComponent::calcGridDimension() +{ + // GRID_SIZE = COLUMNS * TILE_SIZE + (COLUMNS - 1) * MARGIN + // <=> COLUMNS = (GRID_SIZE + MARGIN) / (TILE_SIZE + MARGIN) + Vector2f gridDimension = (mSize + mMargin) / (mTileSize + mMargin); + + if (mAutoLayout.x() != 0 && mAutoLayout.y() != 0) + gridDimension = mAutoLayout; + + mLastRowPartial = Math::floorf(gridDimension.y()) != gridDimension.y(); + + // Ceil y dim so we can display partial last row + mGridDimension = Vector2i(gridDimension.x(), Math::ceilf(gridDimension.y())); + + // Grid dimension validation + if (mGridDimension.x() < 1) + LOG(LogError) << "Theme defined grid X dimension below 1"; + if (mGridDimension.y() < 1) + LOG(LogError) << "Theme defined grid Y dimension below 1"; + + // Add extra tiles to both sides : Add EXTRAITEMS before, EXTRAITEMS after + if (isVertical()) + mGridDimension.y() += 2 * EXTRAITEMS; + else + mGridDimension.x() += 2 * EXTRAITEMS; +} + +template +bool ImageGridComponent::isScrollLoop() { + if (!mScrollLoop) + return false; + if (isVertical()) + return (mGridDimension.x() * (mGridDimension.y() - 2 * EXTRAITEMS)) <= mEntries.size(); + return (mGridDimension.y() * (mGridDimension.x() - 2 * EXTRAITEMS)) <= mEntries.size(); +}; + +#endif // ES_CORE_COMPONENTS_IMAGE_GRID_COMPONENT_H diff --git a/es-core/src/components/MenuComponent.cpp b/es-core/src/components/MenuComponent.cpp index 589bc6fab5..2e60b59459 100644 --- a/es-core/src/components/MenuComponent.cpp +++ b/es-core/src/components/MenuComponent.cpp @@ -1,4 +1,5 @@ #include "components/MenuComponent.h" + #include "components/ButtonComponent.h" #define BUTTON_GRID_VERT_PADDING 32 @@ -6,11 +7,9 @@ #define TITLE_HEIGHT (mTitle->getFont()->getLetterHeight() + TITLE_VERT_PADDING) -using namespace Eigen; - -MenuComponent::MenuComponent(Window* window, const char* title, const std::shared_ptr& titleFont) : GuiComponent(window), +MenuComponent::MenuComponent(Window* window, const char* title, const std::shared_ptr& titleFont) : GuiComponent(window), mBackground(window), mGrid(window, Vector2i(1, 3)) -{ +{ addChild(&mBackground); addChild(&mGrid); @@ -18,7 +17,7 @@ MenuComponent::MenuComponent(Window* window, const char* title, const std::share // set up title mTitle = std::make_shared(mWindow); - mTitle->setAlignment(ALIGN_CENTER); + mTitle->setHorizontalAlignment(ALIGN_CENTER); mTitle->setColor(0x555555FF); setTitle(title, titleFont); mGrid.setEntry(mTitle, Vector2i(0, 0), false); @@ -35,7 +34,7 @@ MenuComponent::MenuComponent(Window* window, const char* title, const std::share void MenuComponent::setTitle(const char* title, const std::shared_ptr& font) { - mTitle->setText(strToUpper(title)); + mTitle->setText(Utils::String::toUpper(title)); mTitle->setFont(font); } @@ -46,7 +45,7 @@ float MenuComponent::getButtonGridHeight() const void MenuComponent::updateSize() { - const float maxHeight = Renderer::getScreenHeight() * 0.7f; + const float maxHeight = Renderer::getScreenHeight() * 0.75f; float height = TITLE_HEIGHT + mList->getTotalRowHeight() + getButtonGridHeight() + 2; if(height > maxHeight) { @@ -63,23 +62,24 @@ void MenuComponent::updateSize() } } - setSize(Renderer::getScreenWidth() * 0.5f, height); + float width = (float)Math::min((int)Renderer::getScreenHeight(), (int)(Renderer::getScreenWidth() * 0.90f)); + setSize(width, height); } void MenuComponent::onSizeChanged() { - mBackground.fitTo(mSize, Eigen::Vector3f::Zero(), Eigen::Vector2f(-32, -32)); + mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32, -32)); // update grid row/col sizes mGrid.setRowHeightPerc(0, TITLE_HEIGHT / mSize.y()); mGrid.setRowHeightPerc(2, getButtonGridHeight() / mSize.y()); - + mGrid.setSize(mSize); } void MenuComponent::addButton(const std::string& name, const std::string& helpText, const std::function& callback) { - mButtons.push_back(std::make_shared(mWindow, strToUpper(name), helpText, callback)); + mButtons.push_back(std::make_shared(mWindow, Utils::String::toUpper(name), helpText, callback)); updateGrid(); updateSize(); } @@ -105,7 +105,7 @@ std::vector MenuComponent::getHelpPrompts() std::shared_ptr makeButtonGrid(Window* window, const std::vector< std::shared_ptr >& buttons) { - std::shared_ptr buttonGrid = std::make_shared(window, Vector2i(buttons.size(), 2)); + std::shared_ptr buttonGrid = std::make_shared(window, Vector2i((int)buttons.size(), 2)); float buttonGridWidth = (float)BUTTON_GRID_HORIZ_PADDING * buttons.size(); // initialize to padding for(int i = 0; i < (int)buttons.size(); i++) @@ -117,7 +117,7 @@ std::shared_ptr makeButtonGrid(Window* window, const std::vector< { buttonGrid->setColWidthPerc(i, (buttons.at(i)->getSize().x() + BUTTON_GRID_HORIZ_PADDING) / buttonGridWidth); } - + buttonGrid->setSize(buttonGridWidth, buttons.at(0)->getSize().y() + BUTTON_GRID_VERT_PADDING + 2); buttonGrid->setRowHeightPerc(1, 2 / buttonGrid->getSize().y()); // spacer row to deal with dropshadow to make buttons look centered @@ -128,6 +128,6 @@ std::shared_ptr makeArrow(Window* window) { auto bracket = std::make_shared(window); bracket->setImage(":/arrow.svg"); - bracket->setResize(0, round(Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); + bracket->setResize(0, Math::round(Font::get(FONT_SIZE_MEDIUM)->getLetterHeight())); return bracket; } diff --git a/es-core/src/components/MenuComponent.h b/es-core/src/components/MenuComponent.h index f818521273..ad2f69db10 100644 --- a/es-core/src/components/MenuComponent.h +++ b/es-core/src/components/MenuComponent.h @@ -1,10 +1,12 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_MENU_COMPONENT_H +#define ES_CORE_COMPONENTS_MENU_COMPONENT_H -#include "components/NinePatchComponent.h" +#include "components/ComponentGrid.h" #include "components/ComponentList.h" +#include "components/NinePatchComponent.h" #include "components/TextComponent.h" -#include "components/ComponentGrid.h" -#include "Util.h" +#include "utils/StringUtil.h" class ButtonComponent; class ImageComponent; @@ -26,7 +28,7 @@ class MenuComponent : public GuiComponent inline void addWithLabel(const std::string& label, const std::shared_ptr& comp, bool setCursorHere = false, bool invert_when_selected = true) { ComponentListRow row; - row.addElement(std::make_shared(mWindow, strToUpper(label), Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); + row.addElement(std::make_shared(mWindow, Utils::String::toUpper(label), Font::get(FONT_SIZE_MEDIUM), 0x777777FF), true); row.addElement(comp, false, invert_when_selected); addRow(row, setCursorHere); } @@ -53,3 +55,5 @@ class MenuComponent : public GuiComponent std::shared_ptr mButtonGrid; std::vector< std::shared_ptr > mButtons; }; + +#endif // ES_CORE_COMPONENTS_MENU_COMPONENT_H diff --git a/es-core/src/components/NinePatchComponent.cpp b/es-core/src/components/NinePatchComponent.cpp index 1b1eba3ab7..50cec76423 100644 --- a/es-core/src/components/NinePatchComponent.cpp +++ b/es-core/src/components/NinePatchComponent.cpp @@ -1,14 +1,14 @@ #include "components/NinePatchComponent.h" -#include "Window.h" + +#include "resources/TextureResource.h" #include "Log.h" -#include "Renderer.h" #include "ThemeData.h" -#include "Util.h" NinePatchComponent::NinePatchComponent(Window* window, const std::string& path, unsigned int edgeColor, unsigned int centerColor) : GuiComponent(window), - mEdgeColor(edgeColor), mCenterColor(centerColor), + mCornerSize(16, 16), + mEdgeColor(edgeColor), mCenterColor(centerColor), mPath(path), - mVertices(NULL), mColors(NULL) + mVertices(NULL) { if(!mPath.empty()) buildVertices(); @@ -18,15 +18,18 @@ NinePatchComponent::~NinePatchComponent() { if (mVertices != NULL) delete[] mVertices; - - if (mColors != NULL) - delete[] mColors; } void NinePatchComponent::updateColors() { - Renderer::buildGLColorArray(mColors, mEdgeColor, 6 * 9); - Renderer::buildGLColorArray(&mColors[4 * 6 * 4], mCenterColor, 6); + const unsigned int edgeColor = Renderer::convertColor(mEdgeColor); + const unsigned int centerColor = Renderer::convertColor(mCenterColor); + + for(int i = 0; i < 6*9; ++i) + mVertices[i].col = edgeColor; + + for(int i = 6*4; i < 6; ++i) + mVertices[(6*4)+i].col = centerColor; } void NinePatchComponent::buildVertices() @@ -34,141 +37,72 @@ void NinePatchComponent::buildVertices() if(mVertices != NULL) delete[] mVertices; - if(mColors != NULL) - delete[] mColors; - mTexture = TextureResource::get(mPath); - if(mTexture->getSize() == Eigen::Vector2i::Zero()) + if(mTexture->getSize() == Vector2i::Zero()) { mVertices = NULL; - mColors = NULL; LOG(LogWarning) << "NinePatchComponent missing texture!"; return; } - mVertices = new Vertex[6 * 9]; - mColors = new GLubyte[6 * 9 * 4]; - updateColors(); - - const Eigen::Vector2f ts = mTexture->getSize().cast(); - - //coordinates on the image in pixels, top left origin - const Eigen::Vector2f pieceCoords[9] = { - Eigen::Vector2f(0, 0), - Eigen::Vector2f(16, 0), - Eigen::Vector2f(32, 0), - Eigen::Vector2f(0, 16), - Eigen::Vector2f(16, 16), - Eigen::Vector2f(32, 16), - Eigen::Vector2f(0, 32), - Eigen::Vector2f(16, 32), - Eigen::Vector2f(32, 32), - }; - - const Eigen::Vector2f pieceSizes = getCornerSize(); + mVertices = new Renderer::Vertex[6 * 9]; - //corners never stretch, so we calculate a width and height for slices 1, 3, 5, and 7 - float borderWidth = mSize.x() - (pieceSizes.x() * 2); //should be pieceSizes[0] and pieceSizes[2] - //if(borderWidth < pieceSizes.x()) - // borderWidth = pieceSizes.x(); + const Vector2f texSize = Vector2f((float)mTexture->getSize().x(), (float)mTexture->getSize().y()); - float borderHeight = mSize.y() - (pieceSizes.y() * 2); //should be pieceSizes[0] and pieceSizes[6] - //if(borderHeight < pieceSizes.y()) - // borderHeight = pieceSizes.y(); + const float imgSizeX[3] = { mCornerSize.x(), mSize.x() - mCornerSize.x() * 2, mCornerSize.x()}; + const float imgSizeY[3] = { mCornerSize.y(), mSize.y() - mCornerSize.y() * 2, mCornerSize.y()}; + const float imgPosX[3] = { 0, imgSizeX[0], imgSizeX[0] + imgSizeX[1]}; + const float imgPosY[3] = { 0, imgSizeY[0], imgSizeY[0] + imgSizeY[1]}; - mVertices[0 * 6].pos = pieceCoords[0]; //top left - mVertices[1 * 6].pos = pieceCoords[1]; //top middle - mVertices[2 * 6].pos = pieceCoords[1] + Eigen::Vector2f(borderWidth, 0); //top right - - mVertices[3 * 6].pos = mVertices[0 * 6].pos + Eigen::Vector2f(0, pieceSizes.y()); //mid left - mVertices[4 * 6].pos = mVertices[3 * 6].pos + Eigen::Vector2f(pieceSizes.x(), 0); //mid middle - mVertices[5 * 6].pos = mVertices[4 * 6].pos + Eigen::Vector2f(borderWidth, 0); //mid right - - mVertices[6 * 6].pos = mVertices[3 * 6].pos + Eigen::Vector2f(0, borderHeight); //bot left - mVertices[7 * 6].pos = mVertices[6 * 6].pos + Eigen::Vector2f(pieceSizes.x(), 0); //bot middle - mVertices[8 * 6].pos = mVertices[7 * 6].pos + Eigen::Vector2f(borderWidth, 0); //bot right + //the "1 +" in posY and "-" in sizeY is to deal with texture coordinates having a bottom left corner origin vs. verticies having a top left origin + const float texSizeX[3] = { mCornerSize.x() / texSize.x(), (texSize.x() - mCornerSize.x() * 2) / texSize.x(), mCornerSize.x() / texSize.x() }; + const float texSizeY[3] = { -mCornerSize.y() / texSize.y(), -(texSize.y() - mCornerSize.y() * 2) / texSize.y(), -mCornerSize.y() / texSize.y() }; + const float texPosX[3] = { 0, texSizeX[0], texSizeX[0] + texSizeX[1] }; + const float texPosY[3] = { 1, 1 + texSizeY[0], 1 + texSizeY[0] + texSizeY[1] }; int v = 0; for(int slice = 0; slice < 9; slice++) { - Eigen::Vector2f size; - - //corners - if(slice == 0 || slice == 2 || slice == 6 || slice == 8) - size = pieceSizes; - - //vertical borders - if(slice == 1 || slice == 7) - size << borderWidth, pieceSizes.y(); - - //horizontal borders - if(slice == 3 || slice == 5) - size << pieceSizes.x(), borderHeight; - - //center - if(slice == 4) - size << borderWidth, borderHeight; - - //no resizing will be necessary - //mVertices[v + 0] is already correct - mVertices[v + 1].pos = mVertices[v + 0].pos + size; - mVertices[v + 2].pos << mVertices[v + 0].pos.x(), mVertices[v + 1].pos.y(); - - mVertices[v + 3].pos << mVertices[v + 1].pos.x(), mVertices[v + 0].pos.y(); - mVertices[v + 4].pos = mVertices[v + 1].pos; - mVertices[v + 5].pos = mVertices[v + 0].pos; - - //texture coordinates - //the y = (1 - y) is to deal with texture coordinates having a bottom left corner origin vs. verticies having a top left origin - mVertices[v + 0].tex << pieceCoords[slice].x() / ts.x(), 1 - (pieceCoords[slice].y() / ts.y()); - mVertices[v + 1].tex << (pieceCoords[slice].x() + pieceSizes.x()) / ts.x(), 1 - ((pieceCoords[slice].y() + pieceSizes.y()) / ts.y()); - mVertices[v + 2].tex << mVertices[v + 0].tex.x(), mVertices[v + 1].tex.y(); - - mVertices[v + 3].tex << mVertices[v + 1].tex.x(), mVertices[v + 0].tex.y(); - mVertices[v + 4].tex = mVertices[v + 1].tex; - mVertices[v + 5].tex = mVertices[v + 0].tex; + const int sliceX = slice % 3; + const int sliceY = slice / 3; + const Vector2f imgPos = Vector2f(imgPosX[sliceX], imgPosY[sliceY]); + const Vector2f imgSize = Vector2f(imgSizeX[sliceX], imgSizeY[sliceY]); + const Vector2f texPos = Vector2f(texPosX[sliceX], texPosY[sliceY]); + const Vector2f texSize = Vector2f(texSizeX[sliceX], texSizeY[sliceY]); + + mVertices[v + 1] = { { imgPos.x() , imgPos.y() }, { texPos.x(), texPos.y() }, 0 }; + mVertices[v + 2] = { { imgPos.x() , imgPos.y() + imgSize.y() }, { texPos.x(), texPos.y() + texSize.y() }, 0 }; + mVertices[v + 3] = { { imgPos.x() + imgSize.x(), imgPos.y() }, { texPos.x() + texSize.x(), texPos.y() }, 0 }; + mVertices[v + 4] = { { imgPos.x() + imgSize.x(), imgPos.y() + imgSize.y() }, { texPos.x() + texSize.x(), texPos.y() + texSize.y() }, 0 }; + + // round vertices + for(int i = 1; i < 5; ++i) + mVertices[v + i].pos.round(); + + // make duplicates of first and last vertex so this can be rendered as a triangle strip + mVertices[v + 0] = mVertices[v + 1]; + mVertices[v + 5] = mVertices[v + 4]; v += 6; } - // round vertices - for(int i = 0; i < 6*9; i++) - { - mVertices[i].pos = roundVector(mVertices[i].pos); - } + updateColors(); } -void NinePatchComponent::render(const Eigen::Affine3f& parentTrans) +void NinePatchComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = roundMatrix(parentTrans * getTransform()); - + if (!isVisible()) + return; + + Transform4x4f trans = parentTrans * getTransform(); + if(mTexture && mVertices != NULL) { Renderer::setMatrix(trans); mTexture->bind(); - - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); - - glVertexPointer(2, GL_FLOAT, sizeof(Vertex), &mVertices[0].pos); - glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &mVertices[0].tex); - glColorPointer(4, GL_UNSIGNED_BYTE, 0, mColors); - - glDrawArrays(GL_TRIANGLES, 0, 6 * 9); - - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); - - glDisable(GL_TEXTURE_2D); - glDisable(GL_BLEND); + Renderer::drawTriangleStrips(&mVertices[0], 6*9); } renderChildren(trans); @@ -179,19 +113,26 @@ void NinePatchComponent::onSizeChanged() buildVertices(); } -Eigen::Vector2f NinePatchComponent::getCornerSize() const +const Vector2f& NinePatchComponent::getCornerSize() const { - return Eigen::Vector2f(16, 16); + return mCornerSize; +} + +void NinePatchComponent::setCornerSize(int sizeX, int sizeY) +{ + mCornerSize = Vector2f(sizeX, sizeY); + buildVertices(); } -void NinePatchComponent::fitTo(Eigen::Vector2f size, Eigen::Vector3f position, Eigen::Vector2f padding) +void NinePatchComponent::fitTo(Vector2f size, Vector3f position, Vector2f padding) { size += padding; position[0] -= padding.x() / 2; position[1] -= padding.y() / 2; - setSize(size + Eigen::Vector2f(getCornerSize().x() * 2, getCornerSize().y() * 2)); - setPosition(-getCornerSize().x() + position.x(), -getCornerSize().y() + position.y()); + setSize(size + mCornerSize * 2); + setPosition(position.x() + Math::lerp(-mCornerSize.x(), mCornerSize.x(), mOrigin.x()), + position.y() + Math::lerp(-mCornerSize.y(), mCornerSize.y(), mOrigin.y())); } void NinePatchComponent::setImagePath(const std::string& path) diff --git a/es-core/src/components/NinePatchComponent.h b/es-core/src/components/NinePatchComponent.h index 1fcfcb8812..584dc61e3f 100644 --- a/es-core/src/components/NinePatchComponent.h +++ b/es-core/src/components/NinePatchComponent.h @@ -1,7 +1,11 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_NINE_PATCH_COMPONENT_H +#define ES_CORE_COMPONENTS_NINE_PATCH_COMPONENT_H +#include "renderers/Renderer.h" #include "GuiComponent.h" -#include "resources/TextureResource.h" + +class TextureResource; // Display an image in a way so that edges don't get too distorted no matter the final size. Useful for UI elements like backgrounds, buttons, etc. // This is accomplished by splitting an image into 9 pieces: @@ -20,11 +24,11 @@ class NinePatchComponent : public GuiComponent NinePatchComponent(Window* window, const std::string& path = "", unsigned int edgeColor = 0xFFFFFFFF, unsigned int centerColor = 0xFFFFFFFF); virtual ~NinePatchComponent(); - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; void onSizeChanged() override; - void fitTo(Eigen::Vector2f size, Eigen::Vector3f position = Eigen::Vector3f::Zero(), Eigen::Vector2f padding = Eigen::Vector2f::Zero()); + void fitTo(Vector2f size, Vector3f position = Vector3f::Zero(), Vector2f padding = Vector2f::Zero()); void setImagePath(const std::string& path); void setEdgeColor(unsigned int edgeColor); // Apply a color shift to the "edge" parts of the ninepatch. @@ -32,23 +36,21 @@ class NinePatchComponent : public GuiComponent virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; -private: - Eigen::Vector2f getCornerSize() const; + const Vector2f& getCornerSize() const; + void setCornerSize(int sizeX, int sizeY); + inline void setCornerSize(const Vector2f& size) { setCornerSize(size.x(), size.y()); } +private: void buildVertices(); void updateColors(); - struct Vertex - { - Eigen::Vector2f pos; - Eigen::Vector2f tex; - }; - - Vertex* mVertices; - GLubyte* mColors; + Renderer::Vertex* mVertices; std::string mPath; + Vector2f mCornerSize; unsigned int mEdgeColor; unsigned int mCenterColor; std::shared_ptr mTexture; }; + +#endif // ES_CORE_COMPONENTS_NINE_PATCH_COMPONENT_H diff --git a/es-core/src/components/OptionListComponent.h b/es-core/src/components/OptionListComponent.h index 40ff34ffff..bf922acdcb 100644 --- a/es-core/src/components/OptionListComponent.h +++ b/es-core/src/components/OptionListComponent.h @@ -1,14 +1,10 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_OPTION_LIST_COMPONENT_H +#define ES_CORE_COMPONENTS_OPTION_LIST_COMPONENT_H #include "GuiComponent.h" -#include "resources/Font.h" -#include "Renderer.h" -#include "Window.h" -#include "components/TextComponent.h" -#include "components/ImageComponent.h" -#include "components/MenuComponent.h" -#include #include "Log.h" +#include "Window.h" //Used to display a list of options. //Can select one or multiple options. @@ -52,7 +48,7 @@ class OptionListComponent : public GuiComponent for(auto it = mParent->mEntries.begin(); it != mParent->mEntries.end(); it++) { row.elements.clear(); - row.addElement(std::make_shared(mWindow, strToUpper(it->name), font, 0x777777FF), true); + row.addElement(std::make_shared(mWindow, Utils::String::toUpper(it->name), font, 0x777777FF), true); OptionListData& e = *it; @@ -138,15 +134,18 @@ class OptionListComponent : public GuiComponent }; public: - OptionListComponent(Window* window, const std::string& name, bool multiSelect = false) : GuiComponent(window), mMultiSelect(multiSelect), mName(name), + OptionListComponent(Window* window, const std::string& name, bool multiSelect = false) : GuiComponent(window), mMultiSelect(multiSelect), mName(name), mText(window), mLeftArrow(window), mRightArrow(window) { auto font = Font::get(FONT_SIZE_MEDIUM, FONT_PATH_LIGHT); mText.setFont(font); mText.setColor(0x777777FF); - mText.setAlignment(ALIGN_CENTER); + mText.setHorizontalAlignment(ALIGN_CENTER); addChild(&mText); + mLeftArrow.setResize(0, mText.getFont()->getLetterHeight()); + mRightArrow.setResize(0, mText.getFont()->getLetterHeight()); + if(mMultiSelect) { mRightArrow.setImage(":/arrow.svg"); @@ -191,20 +190,20 @@ class OptionListComponent : public GuiComponent } if(!mMultiSelect) { - if(config->isMappedTo("left", input)) + if(config->isMappedLike("left", input)) { // move selection to previous unsigned int i = getSelectedId(); int next = (int)i - 1; if(next < 0) - next += mEntries.size(); + next += (int)mEntries.size(); mEntries.at(i).selected = false; mEntries.at(next).selected = true; onSelectedChanged(); return true; - }else if(config->isMappedTo("right", input)) + }else if(config->isMappedLike("right", input)) { // move selection to next unsigned int i = getSelectedId(); @@ -223,7 +222,7 @@ class OptionListComponent : public GuiComponent std::vector getSelectedObjects() { std::vector ret; - for(auto it = mEntries.begin(); it != mEntries.end(); it++) + for(auto it = mEntries.cbegin(); it != mEntries.cend(); it++) { if(it->selected) ret.push_back(it->object); @@ -251,6 +250,24 @@ class OptionListComponent : public GuiComponent onSelectedChanged(); } + void selectAll() + { + for(unsigned int i = 0; i < mEntries.size(); i++) + { + mEntries.at(i).selected = true; + } + onSelectedChanged(); + } + + void selectNone() + { + for(unsigned int i = 0; i < mEntries.size(); i++) + { + mEntries.at(i).selected = false; + } + onSelectedChanged(); + } + private: unsigned int getSelectedId() { @@ -284,11 +301,11 @@ class OptionListComponent : public GuiComponent mParent->onSizeChanged(); }else{ // display currently selected + l/r cursors - for(auto it = mEntries.begin(); it != mEntries.end(); it++) + for(auto it = mEntries.cbegin(); it != mEntries.cend(); it++) { if(it->selected) { - mText.setText(strToUpper(it->name)); + mText.setText(Utils::String::toUpper(it->name)); mText.setSize(0, mText.getSize().y()); setSize(mText.getSize().x() + mLeftArrow.getSize().x() + mRightArrow.getSize().x() + 24, mText.getSize().y()); if(mParent) // hack since theres no "on child size changed" callback atm... @@ -304,7 +321,7 @@ class OptionListComponent : public GuiComponent std::vector prompts; if(!mMultiSelect) prompts.push_back(HelpPrompt("left/right", "change")); - + prompts.push_back(HelpPrompt("a", "select")); return prompts; } @@ -318,3 +335,5 @@ class OptionListComponent : public GuiComponent std::vector mEntries; }; + +#endif // ES_CORE_COMPONENTS_OPTION_LIST_COMPONENT_H diff --git a/es-core/src/components/ScrollableContainer.cpp b/es-core/src/components/ScrollableContainer.cpp index f709c062fd..cacbf3867d 100644 --- a/es-core/src/components/ScrollableContainer.cpp +++ b/es-core/src/components/ScrollableContainer.cpp @@ -1,28 +1,32 @@ #include "components/ScrollableContainer.h" -#include "Renderer.h" -#include "Log.h" -#define AUTO_SCROLL_RESET_DELAY 10000 // ms to reset to top after we reach the bottom -#define AUTO_SCROLL_DELAY 8000 // ms to wait before we start to scroll +#include "math/Vector2i.h" +#include "renderers/Renderer.h" + +#define AUTO_SCROLL_RESET_DELAY 3000 // ms to reset to top after we reach the bottom +#define AUTO_SCROLL_DELAY 1000 // ms to wait before we start to scroll #define AUTO_SCROLL_SPEED 50 // ms between scrolls -ScrollableContainer::ScrollableContainer(Window* window) : GuiComponent(window), - mAutoScrollDelay(0), mAutoScrollSpeed(0), mAutoScrollAccumulator(0), mScrollPos(0, 0), mScrollDir(0, 0), mAutoScrollResetAccumulator(0) +ScrollableContainer::ScrollableContainer(Window* window, int scrollDelay) : GuiComponent(window), + mAutoScrollDelay(scrollDelay), mAutoScrollSpeed(0), mAutoScrollAccumulator(0), mScrollPos(0, 0), mScrollDir(0, 0), mAutoScrollResetAccumulator(0) { } -void ScrollableContainer::render(const Eigen::Affine3f& parentTrans) +void ScrollableContainer::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = parentTrans * getTransform(); + if (!isVisible()) + return; + + Transform4x4f trans = parentTrans * getTransform(); - Eigen::Vector2i clipPos((int)trans.translation().x(), (int)trans.translation().y()); + Vector2i clipPos((int)trans.translation().x(), (int)trans.translation().y()); - Eigen::Vector3f dimScaled = trans * Eigen::Vector3f(mSize.x(), mSize.y(), 0); - Eigen::Vector2i clipDim((int)dimScaled.x() - trans.translation().x(), (int)dimScaled.y() - trans.translation().y()); + Vector3f dimScaled = trans * Vector3f(mSize.x(), mSize.y(), 0); + Vector2i clipDim((int)(dimScaled.x() - trans.translation().x()), (int)(dimScaled.y() - trans.translation().y())); Renderer::pushClipRect(clipPos, clipDim); - trans.translate(-Eigen::Vector3f(mScrollPos.x(), mScrollPos.y(), 0)); + trans.translate(-Vector3f(mScrollPos.x(), mScrollPos.y(), 0)); Renderer::setMatrix(trans); GuiComponent::renderChildren(trans); @@ -34,24 +38,27 @@ void ScrollableContainer::setAutoScroll(bool autoScroll) { if(autoScroll) { - mScrollDir << 0, 1; - mAutoScrollDelay = AUTO_SCROLL_DELAY; + mScrollDir = Vector2f(0, 1); + if (mAutoScrollDelay == 0) + { + mAutoScrollDelay = AUTO_SCROLL_DELAY; + } mAutoScrollSpeed = AUTO_SCROLL_SPEED; reset(); }else{ - mScrollDir << 0, 0; + mScrollDir = Vector2f(0, 0); mAutoScrollDelay = 0; mAutoScrollSpeed = 0; mAutoScrollAccumulator = 0; } } -Eigen::Vector2f ScrollableContainer::getScrollPos() const +Vector2f ScrollableContainer::getScrollPos() const { return mScrollPos; } -void ScrollableContainer::setScrollPos(const Eigen::Vector2f& pos) +void ScrollableContainer::setScrollPos(const Vector2f& pos) { mScrollPos = pos; } @@ -77,7 +84,7 @@ void ScrollableContainer::update(int deltaTime) if(mScrollPos.y() < 0) mScrollPos[1] = 0; - const Eigen::Vector2f contentSize = getContentSize(); + const Vector2f contentSize = getContentSize(); if(mScrollPos.x() + getSize().x() > contentSize.x()) { mScrollPos[0] = contentSize.x() - getSize().x(); @@ -104,13 +111,13 @@ void ScrollableContainer::update(int deltaTime) } //this should probably return a box to allow for when controls don't start at 0,0 -Eigen::Vector2f ScrollableContainer::getContentSize() +Vector2f ScrollableContainer::getContentSize() { - Eigen::Vector2f max(0, 0); + Vector2f max(0, 0); for(unsigned int i = 0; i < mChildren.size(); i++) { - Eigen::Vector2f pos(mChildren.at(i)->getPosition()[0], mChildren.at(i)->getPosition()[1]); - Eigen::Vector2f bottomRight = mChildren.at(i)->getSize() + pos; + Vector2f pos(mChildren.at(i)->getPosition()[0], mChildren.at(i)->getPosition()[1]); + Vector2f bottomRight = mChildren.at(i)->getSize() + pos; if(bottomRight.x() > max.x()) max.x() = bottomRight.x(); if(bottomRight.y() > max.y()) @@ -122,7 +129,7 @@ Eigen::Vector2f ScrollableContainer::getContentSize() void ScrollableContainer::reset() { - mScrollPos << 0, 0; + mScrollPos = Vector2f(0, 0); mAutoScrollResetAccumulator = 0; mAutoScrollAccumulator = -mAutoScrollDelay + mAutoScrollSpeed; mAtEnd = false; diff --git a/es-core/src/components/ScrollableContainer.h b/es-core/src/components/ScrollableContainer.h index 79ae943595..4563e9103f 100644 --- a/es-core/src/components/ScrollableContainer.h +++ b/es-core/src/components/ScrollableContainer.h @@ -1,28 +1,32 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_SCROLLABLE_CONTAINER_H +#define ES_CORE_COMPONENTS_SCROLLABLE_CONTAINER_H #include "GuiComponent.h" class ScrollableContainer : public GuiComponent { public: - ScrollableContainer(Window* window); + ScrollableContainer(Window* window, int scrollDelay = 0); - Eigen::Vector2f getScrollPos() const; - void setScrollPos(const Eigen::Vector2f& pos); + Vector2f getScrollPos() const; + void setScrollPos(const Vector2f& pos); void setAutoScroll(bool autoScroll); void reset(); void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; private: - Eigen::Vector2f getContentSize(); + Vector2f getContentSize(); - Eigen::Vector2f mScrollPos; - Eigen::Vector2f mScrollDir; + Vector2f mScrollPos; + Vector2f mScrollDir; int mAutoScrollDelay; // ms to wait before starting to autoscroll int mAutoScrollSpeed; // ms to wait before scrolling down by mScrollDir int mAutoScrollAccumulator; bool mAtEnd; int mAutoScrollResetAccumulator; }; + +#endif // ES_CORE_COMPONENTS_SCROLLABLE_CONTAINER_H diff --git a/es-core/src/components/SliderComponent.cpp b/es-core/src/components/SliderComponent.cpp index 71a7fe8fa8..aba8174c45 100644 --- a/es-core/src/components/SliderComponent.cpp +++ b/es-core/src/components/SliderComponent.cpp @@ -1,9 +1,6 @@ #include "components/SliderComponent.h" -#include -#include "Renderer.h" + #include "resources/Font.h" -#include "Log.h" -#include "Util.h" #define MOVE_REPEAT_DELAY 500 #define MOVE_REPEAT_RATE 40 @@ -18,13 +15,13 @@ SliderComponent::SliderComponent(Window* window, float min, float max, float inc mKnob.setOrigin(0.5f, 0.5f); mKnob.setImage(":/slider_knob.svg"); - + setSize(Renderer::getScreenWidth() * 0.15f, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight()); } bool SliderComponent::input(InputConfig* config, Input input) { - if(config->isMappedTo("left", input)) + if(config->isMappedLike("left", input)) { if(input.value) setValue(mValue - mSingleIncrement); @@ -33,7 +30,7 @@ bool SliderComponent::input(InputConfig* config, Input input) mMoveAccumulator = -MOVE_REPEAT_DELAY; return true; } - if(config->isMappedTo("right", input)) + if(config->isMappedLike("right", input)) { if(input.value) setValue(mValue + mSingleIncrement); @@ -57,13 +54,13 @@ void SliderComponent::update(int deltaTime) mMoveAccumulator -= MOVE_REPEAT_RATE; } } - + GuiComponent::update(deltaTime); } -void SliderComponent::render(const Eigen::Affine3f& parentTrans) +void SliderComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = roundMatrix(parentTrans * getTransform()); + Transform4x4f trans = parentTrans * getTransform(); Renderer::setMatrix(trans); // render suffix @@ -74,11 +71,11 @@ void SliderComponent::render(const Eigen::Affine3f& parentTrans) //render line const float lineWidth = 2; - Renderer::drawRect(mKnob.getSize().x() / 2, mSize.y() / 2 - lineWidth / 2, width, lineWidth, 0x777777FF); + Renderer::drawRect(mKnob.getSize().x() / 2, mSize.y() / 2 - lineWidth / 2, width, lineWidth, 0x777777FF, 0x777777FF); //render knob mKnob.render(trans); - + GuiComponent::renderChildren(trans); } @@ -102,7 +99,7 @@ void SliderComponent::onSizeChanged() { if(!mSuffix.empty()) mFont = Font::get((int)(mSize.y()), FONT_PATH_LIGHT); - + onValueChanged(); } @@ -126,7 +123,7 @@ void SliderComponent::onValueChanged() ss << mSuffix; const std::string max = ss.str(); - Eigen::Vector2f textSize = mFont->sizeText(max); + Vector2f textSize = mFont->sizeText(max); mValueCache = std::shared_ptr(mFont->buildTextCache(val, mSize.x() - textSize.x(), (mSize.y() - textSize.y()) / 2, 0x777777FF)); mValueCache->metrics.size[0] = textSize.x(); // fudge the width } diff --git a/es-core/src/components/SliderComponent.h b/es-core/src/components/SliderComponent.h index 900178c7e3..f3ae181fce 100644 --- a/es-core/src/components/SliderComponent.h +++ b/es-core/src/components/SliderComponent.h @@ -1,10 +1,12 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_SLIDER_COMPONENT_H +#define ES_CORE_COMPONENTS_SLIDER_COMPONENT_H -#include "GuiComponent.h" #include "components/ImageComponent.h" +#include "GuiComponent.h" -class TextCache; class Font; +class TextCache; // Used to display/edit a value between some min and max values. class SliderComponent : public GuiComponent @@ -18,10 +20,10 @@ class SliderComponent : public GuiComponent bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; - + void render(const Transform4x4f& parentTrans) override; + void onSizeChanged() override; - + virtual std::vector getHelpPrompts() override; private: @@ -39,3 +41,5 @@ class SliderComponent : public GuiComponent std::shared_ptr mFont; std::shared_ptr mValueCache; }; + +#endif // ES_CORE_COMPONENTS_SLIDER_COMPONENT_H diff --git a/es-core/src/components/SwitchComponent.cpp b/es-core/src/components/SwitchComponent.cpp index 07b425b259..ac413c2fc7 100644 --- a/es-core/src/components/SwitchComponent.cpp +++ b/es-core/src/components/SwitchComponent.cpp @@ -1,7 +1,6 @@ #include "SwitchComponent.h" -#include "Renderer.h" + #include "resources/Font.h" -#include "Window.h" SwitchComponent::SwitchComponent(Window* window, bool state) : GuiComponent(window), mImage(window), mState(state) { @@ -27,10 +26,10 @@ bool SwitchComponent::input(InputConfig* config, Input input) return false; } -void SwitchComponent::render(const Eigen::Affine3f& parentTrans) +void SwitchComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = parentTrans * getTransform(); - + Transform4x4f trans = parentTrans * getTransform(); + mImage.render(trans); renderChildren(trans); @@ -47,6 +46,23 @@ void SwitchComponent::setState(bool state) onStateChanged(); } +std::string SwitchComponent::getValue() const +{ + return mState ? "true" : "false"; +} + +void SwitchComponent::setValue(const std::string& statestring) +{ + if (statestring == "true") + { + mState = true; + }else + { + mState = false; + } + onStateChanged(); +} + void SwitchComponent::onStateChanged() { mImage.setImage(mState ? ":/on.svg" : ":/off.svg"); diff --git a/es-core/src/components/SwitchComponent.h b/es-core/src/components/SwitchComponent.h index e173762a74..4f81f6ae60 100644 --- a/es-core/src/components/SwitchComponent.h +++ b/es-core/src/components/SwitchComponent.h @@ -1,7 +1,9 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_SWITCH_COMPONENT_H +#define ES_CORE_COMPONENTS_SWITCH_COMPONENT_H -#include "GuiComponent.h" #include "components/ImageComponent.h" +#include "GuiComponent.h" // A very simple "on/off" switch. // Should hopefully be switched to use images instead of text in the future. @@ -11,11 +13,13 @@ class SwitchComponent : public GuiComponent SwitchComponent(Window* window, bool state = false); bool input(InputConfig* config, Input input) override; - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; void onSizeChanged() override; bool getState() const; void setState(bool state); + std::string getValue() const override; + void setValue(const std::string& statestring) override; virtual std::vector getHelpPrompts() override; @@ -25,3 +29,5 @@ class SwitchComponent : public GuiComponent ImageComponent mImage; bool mState; }; + +#endif // ES_CORE_COMPONENTS_SWITCH_COMPONENT_H diff --git a/es-core/src/components/TextComponent.cpp b/es-core/src/components/TextComponent.cpp index bce50da12c..7a8f52cdf3 100644 --- a/es-core/src/components/TextComponent.cpp +++ b/es-core/src/components/TextComponent.cpp @@ -1,22 +1,25 @@ #include "components/TextComponent.h" -#include "Renderer.h" + +#include "utils/StringUtil.h" #include "Log.h" -#include "Window.h" -#include "ThemeData.h" -#include "Util.h" #include "Settings.h" -TextComponent::TextComponent(Window* window) : GuiComponent(window), - mFont(Font::get(FONT_SIZE_MEDIUM)), mUppercase(false), mColor(0x000000FF), mAutoCalcExtent(true, true), mAlignment(ALIGN_LEFT), mLineSpacing(1.5f) +TextComponent::TextComponent(Window* window) : GuiComponent(window), + mFont(Font::get(FONT_SIZE_MEDIUM)), mUppercase(false), mColor(0x000000FF), mAutoCalcExtent(true, true), + mHorizontalAlignment(ALIGN_LEFT), mVerticalAlignment(ALIGN_CENTER), mLineSpacing(1.5f), mBgColor(0), + mRenderBackground(false) { } TextComponent::TextComponent(Window* window, const std::string& text, const std::shared_ptr& font, unsigned int color, Alignment align, - Eigen::Vector3f pos, Eigen::Vector2f size) : GuiComponent(window), - mFont(NULL), mUppercase(false), mColor(0x000000FF), mAutoCalcExtent(true, true), mAlignment(align), mLineSpacing(1.5f) + Vector3f pos, Vector2f size, unsigned int bgcolor) : GuiComponent(window), + mFont(NULL), mUppercase(false), mColor(0x000000FF), mAutoCalcExtent(true, true), + mHorizontalAlignment(align), mVerticalAlignment(ALIGN_CENTER), mLineSpacing(1.5f), mBgColor(0), + mRenderBackground(false) { setFont(font); setColor(color); + setBackgroundColor(bgcolor); setText(text); setPosition(pos); setSize(size); @@ -24,7 +27,7 @@ TextComponent::TextComponent(Window* window, const std::string& text, const std: void TextComponent::onSizeChanged() { - mAutoCalcExtent << (getSize().x() == 0), (getSize().y() == 0); + mAutoCalcExtent = Vector2i((getSize().x() == 0), (getSize().y() == 0)); onTextChanged(); } @@ -34,19 +37,39 @@ void TextComponent::setFont(const std::shared_ptr& font) onTextChanged(); } +// Set the color of the font/text void TextComponent::setColor(unsigned int color) { mColor = color; + mColorOpacity = mColor & 0x000000FF; + onColorChanged(); +} - unsigned char opacity = mColor & 0x000000FF; - GuiComponent::setOpacity(opacity); +// Set the color of the background box +void TextComponent::setBackgroundColor(unsigned int color) +{ + mBgColor = color; + mBgColorOpacity = mBgColor & 0x000000FF; +} - onColorChanged(); +void TextComponent::setRenderBackground(bool render) +{ + mRenderBackground = render; } +// Scale the opacity void TextComponent::setOpacity(unsigned char opacity) { - mColor = (mColor & 0xFFFFFF00) | opacity; + // This method is mostly called to do fading in-out of the Text component element. + // Therefore, we assume here that opacity is a fractional value (expressed as an int 0-255), + // of the opacity originally set with setColor() or setBackgroundColor(). + + unsigned char o = (unsigned char)((float)opacity / 255.f * (float) mColorOpacity); + mColor = (mColor & 0xFFFFFF00) | (unsigned char) o; + + unsigned char bgo = (unsigned char)((float)opacity / 255.f * (float)mBgColorOpacity); + mBgColor = (mBgColor & 0xFFFFFF00) | (unsigned char)bgo; + onColorChanged(); GuiComponent::setOpacity(opacity); @@ -69,111 +92,131 @@ void TextComponent::setUppercase(bool uppercase) onTextChanged(); } -void TextComponent::render(const Eigen::Affine3f& parentTrans) +void TextComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = parentTrans * getTransform(); + if (!isVisible()) + return; + + Transform4x4f trans = parentTrans * getTransform(); - /*Eigen::Vector3f dim(mSize.x(), mSize.y(), 0); - dim = trans * dim - trans.translation(); - Renderer::pushClipRect(Eigen::Vector2i((int)trans.translation().x(), (int)trans.translation().y()), - Eigen::Vector2i((int)(dim.x() + 0.5f), (int)(dim.y() + 0.5f))); - */ + if (mRenderBackground) + { + Renderer::setMatrix(trans); + Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), mBgColor, mBgColor); + } if(mTextCache) { - const Eigen::Vector2f& textSize = mTextCache->metrics.size; - Eigen::Vector3f off(0, (getSize().y() - textSize.y()) / 2.0f, 0); + const Vector2f& textSize = mTextCache->metrics.size; + float yOff = 0; + switch(mVerticalAlignment) + { + case ALIGN_TOP: + yOff = 0; + break; + case ALIGN_BOTTOM: + yOff = (getSize().y() - textSize.y()); + break; + case ALIGN_CENTER: + yOff = (getSize().y() - textSize.y()) / 2.0f; + break; + default: + LOG(LogError) << "Unknown vertical alignment: " << mVerticalAlignment; + break; + } + Vector3f off(0, yOff, 0); if(Settings::getInstance()->getBool("DebugText")) { // draw the "textbox" area, what we are aligned within Renderer::setMatrix(trans); - Renderer::drawRect(0.f, 0.f, mSize.x(), mSize.y(), 0xFF000033); + Renderer::drawRect(0.0f, 0.0f, mSize.x(), mSize.y(), 0xFF000033, 0xFF000033); } - + trans.translate(off); - trans = roundMatrix(trans); Renderer::setMatrix(trans); // draw the text area, where the text actually is going if(Settings::getInstance()->getBool("DebugText")) { - switch(mAlignment) + switch(mHorizontalAlignment) { case ALIGN_LEFT: - Renderer::drawRect(0.0f, 0.0f, mTextCache->metrics.size.x(), mTextCache->metrics.size.y(), 0x00000033); + Renderer::drawRect(0.0f, 0.0f, mTextCache->metrics.size.x(), mTextCache->metrics.size.y(), 0x00000033, 0x00000033); break; case ALIGN_CENTER: - Renderer::drawRect((mSize.x() - mTextCache->metrics.size.x()) / 2.0f, 0.0f, mTextCache->metrics.size.x(), mTextCache->metrics.size.y(), 0x00000033); + Renderer::drawRect((mSize.x() - mTextCache->metrics.size.x()) / 2.0f, 0.0f, mTextCache->metrics.size.x(), mTextCache->metrics.size.y(), 0x00000033, 0x00000033); break; case ALIGN_RIGHT: - Renderer::drawRect(mSize.x() - mTextCache->metrics.size.x(), 0.0f, mTextCache->metrics.size.x(), mTextCache->metrics.size.y(), 0x00000033); + Renderer::drawRect(mSize.x() - mTextCache->metrics.size.x(), 0.0f, mTextCache->metrics.size.x(), mTextCache->metrics.size.y(), 0x00000033, 0x00000033); + break; + default: + LOG(LogError) << "Unknown horizontal alignment: " << mHorizontalAlignment; break; } } - mFont->renderTextCache(mTextCache.get()); } - - //Renderer::popClipRect(); } -void TextComponent::calculateExtent() +std::string TextComponent::calculateExtent(bool allow_wrapping) { + std::string text = mUppercase ? Utils::String::toUpper(mText) : mText; if(mAutoCalcExtent.x()) { - mSize = mFont->sizeText(mUppercase ? strToUpper(mText) : mText, mLineSpacing); - }else{ - if(mAutoCalcExtent.y()) - { - mSize[1] = mFont->sizeWrappedText(mUppercase ? strToUpper(mText) : mText, getSize().x(), mLineSpacing).y(); + mSize = mFont->sizeText(text, mLineSpacing); + }else if(mAutoCalcExtent.y() || allow_wrapping) + // usually a textcomponent wraps only when x > 0 and y == 0 in size (see TextComponent.h). + // The extra flag allow_wrapping does wrapping if an textcomponent has x > 0 and y > height of + // one line (calculated by fontsize and line spacing). + // Some themes rely on this wrap functionality while having an fixed y (y>0) in . + { + text = mFont->wrapText(text, getSize().x()); + if (mAutoCalcExtent.y()) { + // only resize when y was 0 before + // otherwise leave y value as defined before (i.e. theme value) + mSize.y() = mFont->sizeText(text, mLineSpacing).y(); } } + return text; } void TextComponent::onTextChanged() { - calculateExtent(); - if(!mFont || mText.empty()) { mTextCache.reset(); return; } - std::string text = mUppercase ? strToUpper(mText) : mText; - std::shared_ptr f = mFont; - const bool isMultiline = (mSize.y() == 0 || mSize.y() > f->getHeight()*1.2f); + std::string text = calculateExtent(mSize.y() > f->getHeight(mLineSpacing)); + const bool oneLiner = mSize.y() > 0 && mSize.y() <= f->getHeight(mLineSpacing); - bool addAbbrev = false; - if(!isMultiline) + if(oneLiner) { + bool addAbbrev = false; size_t newline = text.find('\n'); text = text.substr(0, newline); // single line of text - stop at the first newline since it'll mess everything up - addAbbrev = newline != std::string::npos; - } - - Eigen::Vector2f size = f->sizeText(text); - if(!isMultiline && mSize.x() && text.size() && (size.x() > mSize.x() || addAbbrev)) - { - // abbreviate text - const std::string abbrev = "..."; - Eigen::Vector2f abbrevSize = f->sizeText(abbrev); + Vector2f size = f->sizeText(text); + addAbbrev = newline != std::string::npos || size.x() > mSize.x(); - while(text.size() && size.x() + abbrevSize.x() > mSize.x()) + if(addAbbrev) { - size_t newSize = Font::getPrevCursor(text, text.size()); - text.erase(newSize, text.size() - newSize); - size = f->sizeText(text); - } - - text.append(abbrev); + // abbreviate text + const std::string abbrev = "..."; + Vector2f abbrevSize = f->sizeText(abbrev); - mTextCache = std::shared_ptr(f->buildTextCache(text, Eigen::Vector2f(0, 0), (mColor >> 8 << 8) | mOpacity, mSize.x(), mAlignment, mLineSpacing)); - }else{ - mTextCache = std::shared_ptr(f->buildTextCache(f->wrapText(text, mSize.x()), Eigen::Vector2f(0, 0), (mColor >> 8 << 8) | mOpacity, mSize.x(), mAlignment, mLineSpacing)); + while(text.size() && size.x() + abbrevSize.x() > mSize.x()) + { + size_t newSize = Utils::String::prevCursor(text, text.size()); + text.erase(newSize, text.size() - newSize); + size = f->sizeText(text); + } + text.append(abbrev); + } } + mTextCache = std::shared_ptr(f->buildTextCache(text, Vector2f(0, 0), (mColor >> 8 << 8) | mOpacity, mSize.x(), mHorizontalAlignment, mLineSpacing)); } void TextComponent::onColorChanged() @@ -184,12 +227,17 @@ void TextComponent::onColorChanged() } } -void TextComponent::setAlignment(Alignment align) +void TextComponent::setHorizontalAlignment(Alignment align) { - mAlignment = align; + mHorizontalAlignment = align; onTextChanged(); } +void TextComponent::setVerticalAlignment(Alignment align) +{ + mVerticalAlignment = align; +} + void TextComponent::setLineSpacing(float spacing) { mLineSpacing = spacing; @@ -216,18 +264,24 @@ void TextComponent::applyTheme(const std::shared_ptr& theme, const st if(!elem) return; - if(properties & COLOR && elem->has("color")) + if (properties & COLOR && elem->has("color")) setColor(elem->get("color")); + setRenderBackground(false); + if (properties & COLOR && elem->has("backgroundColor")) { + setBackgroundColor(elem->get("backgroundColor")); + setRenderBackground(true); + } + if(properties & ALIGNMENT && elem->has("alignment")) { std::string str = elem->get("alignment"); if(str == "left") - setAlignment(ALIGN_LEFT); + setHorizontalAlignment(ALIGN_LEFT); else if(str == "center") - setAlignment(ALIGN_CENTER); + setHorizontalAlignment(ALIGN_CENTER); else if(str == "right") - setAlignment(ALIGN_RIGHT); + setHorizontalAlignment(ALIGN_RIGHT); else LOG(LogError) << "Unknown text alignment string: " << str; } diff --git a/es-core/src/components/TextComponent.h b/es-core/src/components/TextComponent.h index 4a4a33fcde..c464ef1140 100644 --- a/es-core/src/components/TextComponent.h +++ b/es-core/src/components/TextComponent.h @@ -1,8 +1,9 @@ -#ifndef _TEXTCOMPONENT_H_ -#define _TEXTCOMPONENT_H_ +#pragma once +#ifndef ES_CORE_COMPONENTS_TEXT_COMPONENT_H +#define ES_CORE_COMPONENTS_TEXT_COMPONENT_H -#include "GuiComponent.h" #include "resources/Font.h" +#include "GuiComponent.h" class ThemeData; @@ -16,42 +17,54 @@ class TextComponent : public GuiComponent public: TextComponent(Window* window); TextComponent(Window* window, const std::string& text, const std::shared_ptr& font, unsigned int color = 0x000000FF, Alignment align = ALIGN_LEFT, - Eigen::Vector3f pos = Eigen::Vector3f::Zero(), Eigen::Vector2f size = Eigen::Vector2f::Zero()); + Vector3f pos = Vector3f::Zero(), Vector2f size = Vector2f::Zero(), unsigned int bgcolor = 0x00000000); void setFont(const std::shared_ptr& font); void setUppercase(bool uppercase); void onSizeChanged() override; void setText(const std::string& text); void setColor(unsigned int color); - void setAlignment(Alignment align); + void setHorizontalAlignment(Alignment align); + void setVerticalAlignment(Alignment align); void setLineSpacing(float spacing); + void setBackgroundColor(unsigned int color); + void setRenderBackground(bool render); - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; std::string getValue() const override; void setValue(const std::string& value) override; unsigned char getOpacity() const override; void setOpacity(unsigned char opacity) override; - + inline std::shared_ptr getFont() const { return mFont; } virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; +protected: + virtual void onTextChanged(); + + std::string mText; + std::shared_ptr mFont; + private: - void calculateExtent(); + std::string calculateExtent(bool allow_wrapping); - void onTextChanged(); void onColorChanged(); unsigned int mColor; - std::shared_ptr mFont; + unsigned int mBgColor; + unsigned char mColorOpacity; + unsigned char mBgColorOpacity; + bool mRenderBackground; + bool mUppercase; - Eigen::Matrix mAutoCalcExtent; - std::string mText; + Vector2i mAutoCalcExtent; std::shared_ptr mTextCache; - Alignment mAlignment; + Alignment mHorizontalAlignment; + Alignment mVerticalAlignment; float mLineSpacing; }; -#endif +#endif // ES_CORE_COMPONENTS_TEXT_COMPONENT_H diff --git a/es-core/src/components/TextEditComponent.cpp b/es-core/src/components/TextEditComponent.cpp index af57991924..6d98139bb2 100644 --- a/es-core/src/components/TextEditComponent.cpp +++ b/es-core/src/components/TextEditComponent.cpp @@ -1,9 +1,7 @@ #include "components/TextEditComponent.h" -#include "Log.h" + #include "resources/Font.h" -#include "Window.h" -#include "Renderer.h" -#include "Util.h" +#include "utils/StringUtil.h" #define TEXT_PADDING_HORIZ 10 #define TEXT_PADDING_VERT 2 @@ -12,15 +10,15 @@ #define CURSOR_REPEAT_SPEED 28 // lower is faster TextEditComponent::TextEditComponent(Window* window) : GuiComponent(window), - mBox(window, ":/textinput_ninepatch.png"), mFocused(false), - mScrollOffset(0.0f, 0.0f), mCursor(0), mEditing(false), mFont(Font::get(FONT_SIZE_MEDIUM, FONT_PATH_LIGHT)), + mBox(window, ":/textinput_ninepatch.png"), mFocused(false), + mScrollOffset(0.0f, 0.0f), mCursor(0), mEditing(false), mFont(Font::get(FONT_SIZE_MEDIUM, FONT_PATH_LIGHT)), mCursorRepeatDir(0) { addChild(&mBox); - + onFocusLost(); - setSize(256, mFont->getHeight() + TEXT_PADDING_VERT); + setSize(4096, mFont->getHeight() + TEXT_PADDING_VERT); } void TextEditComponent::onFocusGained() @@ -37,7 +35,7 @@ void TextEditComponent::onFocusLost() void TextEditComponent::onSizeChanged() { - mBox.fitTo(mSize, Eigen::Vector3f::Zero(), Eigen::Vector2f(-34, -32 - TEXT_PADDING_VERT)); + mBox.fitTo(mSize, Vector3f::Zero(), Vector2f(-34, -32 - TEXT_PADDING_VERT)); onTextChanged(); // wrap point probably changed } @@ -61,13 +59,13 @@ void TextEditComponent::textInput(const char* text) { if(mCursor > 0) { - size_t newCursor = Font::getPrevCursor(mText, mCursor); + size_t newCursor = Utils::String::prevCursor(mText, mCursor); mText.erase(mText.begin() + newCursor, mText.begin() + mCursor); - mCursor = newCursor; + mCursor = (unsigned int)newCursor; } }else{ mText.insert(mCursor, text); - mCursor += strlen(text); + mCursor += (unsigned int)strlen(text); } } @@ -91,15 +89,20 @@ void TextEditComponent::stopEditing() bool TextEditComponent::input(InputConfig* config, Input input) { + bool const cursor_left = (config->getDeviceId() != DEVICE_KEYBOARD && config->isMappedLike("left", input)) || + (config->getDeviceId() == DEVICE_KEYBOARD && input.id == SDLK_LEFT); + bool const cursor_right = (config->getDeviceId() != DEVICE_KEYBOARD && config->isMappedLike("right", input)) || + (config->getDeviceId() == DEVICE_KEYBOARD && input.id == SDLK_RIGHT); + if(input.value == 0) { - if(config->isMappedTo("left", input) || config->isMappedTo("right", input)) + if(cursor_left || cursor_right) mCursorRepeatDir = 0; return false; } - if(config->isMappedTo("a", input) && mFocused && !mEditing) + if((config->isMappedTo("a", input) || (config->getDeviceId() == DEVICE_KEYBOARD && input.id == SDLK_RETURN)) && mFocused && !mEditing) { startEditing(); return true; @@ -125,17 +128,38 @@ bool TextEditComponent::input(InputConfig* config, Input input) return true; } - if(config->isMappedTo("up", input)) + if(config->getDeviceId() != DEVICE_KEYBOARD && config->isMappedLike("up", input)) { // TODO - }else if(config->isMappedTo("down", input)) + }else if(config->getDeviceId() != DEVICE_KEYBOARD && config->isMappedLike("down", input)) { // TODO - }else if(config->isMappedTo("left", input) || config->isMappedTo("right", input)) + }else if(cursor_left || cursor_right) { - mCursorRepeatDir = config->isMappedTo("left", input) ? -1 : 1; + mCursorRepeatDir = cursor_left ? -1 : 1; mCursorRepeatTimer = -(CURSOR_REPEAT_START_DELAY - CURSOR_REPEAT_SPEED); moveCursor(mCursorRepeatDir); + } else if(config->getDeviceId() == DEVICE_KEYBOARD) + { + switch(input.id) + { + case SDLK_HOME: + setCursor(0); + break; + + case SDLK_END: + setCursor(std::string::npos); + break; + + case SDLK_DELETE: + if(mCursor < mText.length()) + { + // Fake as Backspace one char to the right + moveCursor(1); + textInput("\b"); + } + break; + } } //consume all input when editing text @@ -166,14 +190,14 @@ void TextEditComponent::updateCursorRepeat(int deltaTime) void TextEditComponent::moveCursor(int amt) { - mCursor = Font::moveCursor(mText, mCursor, amt); + mCursor = (unsigned int)Utils::String::moveCursor(mText, mCursor, amt); onCursorChanged(); } void TextEditComponent::setCursor(size_t pos) { if(pos == std::string::npos) - mCursor = mText.length(); + mCursor = (unsigned int)mText.length(); else mCursor = (int)pos; @@ -186,14 +210,14 @@ void TextEditComponent::onTextChanged() mTextCache = std::unique_ptr(mFont->buildTextCache(wrappedText, 0, 0, 0x77777700 | getOpacity())); if(mCursor > (int)mText.length()) - mCursor = mText.length(); + mCursor = (unsigned int)mText.length(); } void TextEditComponent::onCursorChanged() { if(isMultiline()) { - Eigen::Vector2f textSize = mFont->getWrappedTextCursorOffset(mText, getTextAreaSize().x(), mCursor); + Vector2f textSize = mFont->getWrappedTextCursorOffset(mText, getTextAreaSize().x(), mCursor); if(mScrollOffset.y() + getTextAreaSize().y() < textSize.y() + mFont->getHeight()) //need to scroll down? { @@ -203,7 +227,7 @@ void TextEditComponent::onCursorChanged() mScrollOffset[1] = textSize.y(); } }else{ - Eigen::Vector2f cursorPos = mFont->sizeText(mText.substr(0, mCursor)); + Vector2f cursorPos = mFont->sizeText(mText.substr(0, mCursor)); if(mScrollOffset.x() + getTextAreaSize().x() < cursorPos.x()) { @@ -215,23 +239,21 @@ void TextEditComponent::onCursorChanged() } } -void TextEditComponent::render(const Eigen::Affine3f& parentTrans) +void TextEditComponent::render(const Transform4x4f& parentTrans) { - Eigen::Affine3f trans = getTransform() * parentTrans; + Transform4x4f trans = getTransform() * parentTrans; renderChildren(trans); // text + cursor rendering // offset into our "text area" (padding) - trans.translation() += Eigen::Vector3f(getTextAreaPos().x(), getTextAreaPos().y(), 0); + trans.translation() += Vector3f(getTextAreaPos().x(), getTextAreaPos().y(), 0); - Eigen::Vector2i clipPos((int)trans.translation().x(), (int)trans.translation().y()); - Eigen::Vector3f dimScaled = trans * Eigen::Vector3f(getTextAreaSize().x(), getTextAreaSize().y(), 0); // use "text area" size for clipping - Eigen::Vector2i clipDim((int)dimScaled.x() - trans.translation().x(), (int)dimScaled.y() - trans.translation().y()); + Vector2i clipPos((int)trans.translation().x(), (int)trans.translation().y()); + Vector3f dimScaled = trans * Vector3f(getTextAreaSize().x(), getTextAreaSize().y(), 0); // use "text area" size for clipping + Vector2i clipDim((int)(dimScaled.x() - trans.translation().x()), (int)(dimScaled.y() - trans.translation().y())); Renderer::pushClipRect(clipPos, clipDim); - trans.translate(Eigen::Vector3f(-mScrollOffset.x(), -mScrollOffset.y(), 0)); - trans = roundMatrix(trans); - + trans.translate(Vector3f(-mScrollOffset.x(), -mScrollOffset.y(), 0)); Renderer::setMatrix(trans); if(mTextCache) @@ -245,7 +267,7 @@ void TextEditComponent::render(const Eigen::Affine3f& parentTrans) // draw cursor if(mEditing) { - Eigen::Vector2f cursorPos; + Vector2f cursorPos; if(isMultiline()) { cursorPos = mFont->getWrappedTextCursorOffset(mText, getTextAreaSize().x(), mCursor); @@ -255,7 +277,7 @@ void TextEditComponent::render(const Eigen::Affine3f& parentTrans) } float cursorHeight = mFont->getHeight() * 0.8f; - Renderer::drawRect(cursorPos.x(), cursorPos.y() + (mFont->getHeight() - cursorHeight) / 2, 2.0f, cursorHeight, 0x000000FF); + Renderer::drawRect(cursorPos.x(), cursorPos.y() + (mFont->getHeight() - cursorHeight) / 2, 2.0f, cursorHeight, 0x000000FF, 0x000000FF); } } @@ -264,14 +286,14 @@ bool TextEditComponent::isMultiline() return (getSize().y() > mFont->getHeight() * 1.25f); } -Eigen::Vector2f TextEditComponent::getTextAreaPos() const +Vector2f TextEditComponent::getTextAreaPos() const { - return Eigen::Vector2f(TEXT_PADDING_HORIZ / 2.0f, TEXT_PADDING_VERT / 2.0f); + return Vector2f(TEXT_PADDING_HORIZ / 2.0f, TEXT_PADDING_VERT / 2.0f); } -Eigen::Vector2f TextEditComponent::getTextAreaSize() const +Vector2f TextEditComponent::getTextAreaSize() const { - return Eigen::Vector2f(mSize.x() - TEXT_PADDING_HORIZ, mSize.y() - TEXT_PADDING_VERT); + return Vector2f(mSize.x() - TEXT_PADDING_HORIZ, mSize.y() - TEXT_PADDING_VERT); } std::vector TextEditComponent::getHelpPrompts() diff --git a/es-core/src/components/TextEditComponent.h b/es-core/src/components/TextEditComponent.h index 56179af1a8..c388b30aac 100644 --- a/es-core/src/components/TextEditComponent.h +++ b/es-core/src/components/TextEditComponent.h @@ -1,7 +1,9 @@ #pragma once +#ifndef ES_CORE_COMPONENTS_TEXT_EDIT_COMPONENT_H +#define ES_CORE_COMPONENTS_TEXT_EDIT_COMPONENT_H -#include "GuiComponent.h" #include "components/NinePatchComponent.h" +#include "GuiComponent.h" class Font; class TextCache; @@ -11,11 +13,11 @@ class TextEditComponent : public GuiComponent { public: TextEditComponent(Window* window); - + void textInput(const char* text) override; bool input(InputConfig* config, Input input) override; void update(int deltaTime) override; - void render(const Eigen::Affine3f& parentTrans) override; + void render(const Transform4x4f& parentTrans) override; void onFocusGained() override; void onFocusLost() override; @@ -43,21 +45,23 @@ class TextEditComponent : public GuiComponent void moveCursor(int amt); bool isMultiline(); - Eigen::Vector2f getTextAreaPos() const; - Eigen::Vector2f getTextAreaSize() const; + Vector2f getTextAreaPos() const; + Vector2f getTextAreaSize() const; std::string mText; bool mFocused; bool mEditing; - int mCursor; // cursor position in characters + unsigned int mCursor; // cursor position in characters int mCursorRepeatTimer; int mCursorRepeatDir; - Eigen::Vector2f mScrollOffset; + Vector2f mScrollOffset; NinePatchComponent mBox; std::shared_ptr mFont; std::unique_ptr mTextCache; }; + +#endif // ES_CORE_COMPONENTS_TEXT_EDIT_COMPONENT_H diff --git a/es-core/src/components/VideoComponent.cpp b/es-core/src/components/VideoComponent.cpp new file mode 100644 index 0000000000..98ea4d882a --- /dev/null +++ b/es-core/src/components/VideoComponent.cpp @@ -0,0 +1,358 @@ +#include "components/VideoComponent.h" + +#include "resources/ResourceManager.h" +#include "utils/FileSystemUtil.h" +#include "PowerSaver.h" +#include "ThemeData.h" +#include "Window.h" +#include + +#define FADE_TIME_MS 200 + +std::string getTitlePath() { + std::string titleFolder = getTitleFolder(); + return titleFolder + "last_title.srt"; +} + +std::string getTitleFolder() { + std::string home = Utils::FileSystem::getHomePath(); + return home + "/.emulationstation/tmp/"; +} + +void writeSubtitle(const char* gameName, const char* systemName, bool always) +{ + FILE* file = fopen(getTitlePath().c_str(), "w"); + int end = (int)(Settings::getInstance()->getInt("ScreenSaverSwapVideoTimeout") / (1000)); + if (always) { + fprintf(file, "1\n00:00:01,000 --> 00:00:%d,000\n", end); + } + else + { + fprintf(file, "1\n00:00:01,000 --> 00:00:08,000\n"); + } + fprintf(file, "%s\n", gameName); + fprintf(file, "%s\n\n", systemName); + + if (!always) { + if (end > 12) + { + fprintf(file, "2\n00:00:%d,000 --> 00:00:%d,000\n%s\n%s\n", end-4, end, gameName, systemName); + } + } + + fflush(file); + fclose(file); + file = NULL; +} + +void VideoComponent::setScreensaverMode(bool isScreensaver) +{ + mScreensaverMode = isScreensaver; +} + +VideoComponent::VideoComponent(Window* window) : + GuiComponent(window), + mStaticImage(window), + mVideoHeight(0), + mVideoWidth(0), + mStartDelayed(false), + mIsPlaying(false), + mShowing(false), + mScreensaverActive(false), + mDisable(false), + mScreensaverMode(false), + mTargetIsMax(false), + mTargetSize(0, 0) +{ + // Setup the default configuration + mConfig.showSnapshotDelay = false; + mConfig.showSnapshotNoVideo = false; + mConfig.startDelay = 0; + if (mWindow->getGuiStackSize() > 1) { + topWindow(false); + } + + std::string path = getTitleFolder(); + if(!Utils::FileSystem::exists(path)) + Utils::FileSystem::createDirectory(path); +} + +VideoComponent::~VideoComponent() +{ + // Stop any currently running video + stopVideo(); + // Delete subtitle file, if existing + remove(getTitlePath().c_str()); +} + +void VideoComponent::onOriginChanged() +{ + // Update the embeded static image + mStaticImage.setOrigin(mOrigin); +} +void VideoComponent::onPositionChanged() +{ + // Update the embeded static image + mStaticImage.setPosition(mPosition); +} + +void VideoComponent::onSizeChanged() +{ + // Update the embeded static image + mStaticImage.onSizeChanged(); +} + +bool VideoComponent::setVideo(std::string path) +{ + // Convert the path into a generic format + std::string fullPath = path.empty() ? path : Utils::FileSystem::getAbsolutePath(path); + + // Check that it's changed + if (fullPath == mVideoPath) + return !path.empty(); + + // Store the path + mVideoPath = fullPath; + + // If the file exists then set the new video + if (!fullPath.empty() && ResourceManager::getInstance()->fileExists(fullPath)) + { + // Return true to show that we are going to attempt to play a video + return true; + } + // Return false to show that no video will be displayed + return false; +} + +void VideoComponent::setImage(std::string path) +{ + // Check that the image has changed + if (path == mStaticImagePath) + return; + + mStaticImage.setImage(path); + mFadeIn = 0.0f; + mStaticImagePath = path; +} + +void VideoComponent::setDefaultVideo() +{ + setVideo(mConfig.defaultVideoPath); +} + +void VideoComponent::setOpacity(unsigned char opacity) +{ + mOpacity = opacity; + // Update the embeded static image + mStaticImage.setOpacity(opacity); +} + +void VideoComponent::render(const Transform4x4f& parentTrans) +{ + if (!isVisible()) + return; + + Transform4x4f trans = parentTrans * getTransform(); + GuiComponent::renderChildren(trans); + + Renderer::setMatrix(trans); + + // Handle the case where the video is delayed + handleStartDelay(); + + // Handle looping of the video + handleLooping(); +} + +void VideoComponent::renderSnapshot(const Transform4x4f& parentTrans) +{ + // This is the case where the video is not currently being displayed. Work out + // if we need to display a static image + if ((mConfig.showSnapshotNoVideo && mVideoPath.empty()) || (mStartDelayed && mConfig.showSnapshotDelay)) + { + // Display the static image instead + mStaticImage.setOpacity((unsigned char)(mFadeIn * 255.0f)); + mStaticImage.render(parentTrans); + } +} + +void VideoComponent::applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) +{ + using namespace ThemeFlags; + + GuiComponent::applyTheme(theme, view, element, (properties ^ SIZE) | ((properties & (SIZE | POSITION)) ? ORIGIN : 0)); + + const ThemeData::ThemeElement* elem = theme->getElement(view, element, "video"); + if(!elem) + return; + + Vector2f scale = getParent() ? getParent()->getSize() : Vector2f((float)Renderer::getScreenWidth(), (float)Renderer::getScreenHeight()); + + if(properties & ThemeFlags::SIZE) + { + if(elem->has("size")) + setResize(elem->get("size") * scale); + else if(elem->has("maxSize")) + setMaxSize(elem->get("maxSize") * scale); + } + + if(elem->has("default")) + mConfig.defaultVideoPath = elem->get("default"); + + if((properties & ThemeFlags::DELAY) && elem->has("delay")) + mConfig.startDelay = (unsigned)(elem->get("delay") * 1000.0f); + + if (elem->has("showSnapshotNoVideo")) + mConfig.showSnapshotNoVideo = elem->get("showSnapshotNoVideo"); + + if (elem->has("showSnapshotDelay")) + mConfig.showSnapshotDelay = elem->get("showSnapshotDelay"); +} + +std::vector VideoComponent::getHelpPrompts() +{ + std::vector ret; + ret.push_back(HelpPrompt("a", "select")); + return ret; +} + +void VideoComponent::handleStartDelay() +{ + // Only play if any delay has timed out + if (mStartDelayed) + { + if (mStartTime > SDL_GetTicks()) + { + // Timeout not yet completed + return; + } + // Completed + mStartDelayed = false; + // Clear the playing flag so startVideo works + mIsPlaying = false; + startVideo(); + } +} + +void VideoComponent::handleLooping() +{ +} + +void VideoComponent::startVideoWithDelay() +{ + // If not playing then either start the video or initiate the delay + if (!mIsPlaying) + { + // Set the video that we are going to be playing so we don't attempt to restart it + mPlayingVideoPath = mVideoPath; + + if (mConfig.startDelay == 0 || PowerSaver::getMode() == PowerSaver::INSTANT) + { + // No delay. Just start the video + mStartDelayed = false; + startVideo(); + } + else + { + // Configure the start delay + mStartDelayed = true; + mFadeIn = 0.0f; + mStartTime = SDL_GetTicks() + mConfig.startDelay; + } + mIsPlaying = true; + } +} + +void VideoComponent::update(int deltaTime) +{ + manageState(); + + // If the video start is delayed and there is less than the fade time then set the image fade + // accordingly + if (mStartDelayed) + { + Uint32 ticks = SDL_GetTicks(); + if (mStartTime > ticks) + { + Uint32 diff = mStartTime - ticks; + if (diff < FADE_TIME_MS) + { + mFadeIn = (float)diff / (float)FADE_TIME_MS; + return; + } + } + } + // If the fade in is less than 1 then increment it + if (mFadeIn < 1.0f) + { + mFadeIn += deltaTime / (float)FADE_TIME_MS; + if (mFadeIn > 1.0f) + mFadeIn = 1.0f; + } + GuiComponent::update(deltaTime); +} + +void VideoComponent::manageState() +{ + // We will only show if the component is on display and the screensaver + // is not active and the component is visible + bool show = mShowing && !mScreensaverActive && !mDisable && mVisible; + + // See if we're already playing + if (mIsPlaying) + { + // If we are not on display then stop the video from playing + if (!show) + { + stopVideo(); + } + else + { + if (mVideoPath != mPlayingVideoPath) + { + // Path changed. Stop the video. We will start it again below because + // mIsPlaying will be modified by stopVideo to be false + stopVideo(); + } + } + } + // Need to recheck variable rather than 'else' because it may be modified above + if (!mIsPlaying) + { + // If we are on display then see if we should start the video + if (show && !mVideoPath.empty()) + { + startVideoWithDelay(); + } + } +} + +void VideoComponent::onShow() +{ + mShowing = true; + manageState(); +} + +void VideoComponent::onHide() +{ + mShowing = false; + manageState(); +} + +void VideoComponent::onScreenSaverActivate() +{ + mScreensaverActive = true; + manageState(); +} + +void VideoComponent::onScreenSaverDeactivate() +{ + mScreensaverActive = false; + manageState(); +} + +void VideoComponent::topWindow(bool isTop) +{ + mDisable = !isTop; + manageState(); +} diff --git a/es-core/src/components/VideoComponent.h b/es-core/src/components/VideoComponent.h new file mode 100644 index 0000000000..1c574a1fae --- /dev/null +++ b/es-core/src/components/VideoComponent.h @@ -0,0 +1,114 @@ +#pragma once +#ifndef ES_CORE_COMPONENTS_VIDEO_COMPONENT_H +#define ES_CORE_COMPONENTS_VIDEO_COMPONENT_H + +#include "components/ImageComponent.h" +#include "GuiComponent.h" +#include + +class TextureResource; + +std::string getTitlePath(); +std::string getTitleFolder(); +void writeSubtitle(const char* gameName, const char* systemName, bool always); + +class VideoComponent : public GuiComponent +{ + // Structure that groups together the configuration of the video component + struct Configuration + { + unsigned startDelay; + bool showSnapshotNoVideo; + bool showSnapshotDelay; + std::string defaultVideoPath; + }; + +public: + VideoComponent(Window* window); + virtual ~VideoComponent(); + + // Loads the video at the given filepath + bool setVideo(std::string path); + // Loads a static image that is displayed if the video cannot be played + void setImage(std::string path); + + // Configures the component to show the default video + void setDefaultVideo(); + + // sets whether it's going to render in screensaver mode + void setScreensaverMode(bool isScreensaver); + + virtual void onShow() override; + virtual void onHide() override; + virtual void onScreenSaverActivate() override; + virtual void onScreenSaverDeactivate() override; + virtual void topWindow(bool isTop) override; + + void onOriginChanged() override; + void onPositionChanged() override; + void onSizeChanged() override; + void setOpacity(unsigned char opacity) override; + + void render(const Transform4x4f& parentTrans) override; + void renderSnapshot(const Transform4x4f& parentTrans); + + virtual void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; + + virtual std::vector getHelpPrompts() override; + + virtual void update(int deltaTime) override; + + // Resize the video to fit this size. If one axis is zero, scale that axis to maintain aspect ratio. + // If both are non-zero, potentially break the aspect ratio. If both are zero, no resizing. + // Can be set before or after a video is loaded. + // setMaxSize() and setResize() are mutually exclusive. + virtual void setResize(float width, float height) = 0; + inline void setResize(const Vector2f& size) { setResize(size.x(), size.y()); } + + // Resize the video to be as large as possible but fit within a box of this size. + // Can be set before or after a video is loaded. + // Never breaks the aspect ratio. setMaxSize() and setResize() are mutually exclusive. + virtual void setMaxSize(float width, float height) = 0; + inline void setMaxSize(const Vector2f& size) { setMaxSize(size.x(), size.y()); } + +private: + // Start the video Immediately + virtual void startVideo() = 0; + // Stop the video + virtual void stopVideo() { }; + // Handle looping the video. Must be called periodically + virtual void handleLooping(); + + // Start the video after any configured delay + void startVideoWithDelay(); + + // Handle any delay to the start of playing the video clip. Must be called periodically + void handleStartDelay(); + + // Manage the playing state of the component + void manageState(); + +protected: + unsigned mVideoWidth; + unsigned mVideoHeight; + Vector2f mTargetSize; + std::shared_ptr mTexture; + float mFadeIn; + std::string mStaticImagePath; + ImageComponent mStaticImage; + + std::string mVideoPath; + std::string mPlayingVideoPath; + bool mStartDelayed; + unsigned mStartTime; + bool mIsPlaying; + bool mShowing; + bool mDisable; + bool mScreensaverActive; + bool mScreensaverMode; + bool mTargetIsMax; + + Configuration mConfig; +}; + +#endif // ES_CORE_COMPONENTS_VIDEO_COMPONENT_H diff --git a/es-core/src/components/VideoPlayerComponent.cpp b/es-core/src/components/VideoPlayerComponent.cpp new file mode 100644 index 0000000000..863976632d --- /dev/null +++ b/es-core/src/components/VideoPlayerComponent.cpp @@ -0,0 +1,270 @@ +#ifdef _OMX_ +#include "components/VideoPlayerComponent.h" + +#include "renderers/Renderer.h" +#include "utils/StringUtil.h" +#include "AudioManager.h" +#include "Settings.h" +#include +#include +#include + +class VolumeControl +{ +public: + static std::shared_ptr & getInstance(); + int getVolume() const; +}; + +VideoPlayerComponent::VideoPlayerComponent(Window* window, std::string path) : + VideoComponent(window), + mPlayerPid(-1), + subtitlePath(path) +{ +} + +VideoPlayerComponent::~VideoPlayerComponent() +{ + stopVideo(); +} + +void VideoPlayerComponent::render(const Transform4x4f& parentTrans) +{ + if (!isVisible()) + return; + + VideoComponent::render(parentTrans); + + if (!mIsPlaying || mPlayerPid == -1) + VideoComponent::renderSnapshot(parentTrans); +} + +void VideoPlayerComponent::setResize(float width, float height) +{ + setSize(width, height); + mTargetSize = Vector2f(width, height); + mTargetIsMax = false; + mStaticImage.setResize(width, height); + onSizeChanged(); +} + +void VideoPlayerComponent::setMaxSize(float width, float height) +{ + setSize(width, height); + mTargetSize = Vector2f(width, height); + mTargetIsMax = true; + mStaticImage.setMaxSize(width, height); + onSizeChanged(); +} + +void VideoPlayerComponent::startVideo() +{ + if (!mIsPlaying) + { + mVideoWidth = 0; + mVideoHeight = 0; + + std::string path(mVideoPath.c_str()); + + // Make sure we have a video path + if ((path.size() > 0) && (mPlayerPid == -1)) + { + // Set the video that we are going to be playing so we don't attempt to restart it + mPlayingVideoPath = mVideoPath; + + // Disable AudioManager so video can play, in case we're requesting ALSA + if (Utils::String::startsWith(Settings::getInstance()->getString("OMXAudioDev").c_str(), "alsa")) + { + AudioManager::getInstance()->deinit(); + } + + // Start the player process + pid_t pid = fork(); + if (pid == -1) + { + // Failed + mPlayingVideoPath = ""; + } + else if (pid > 0) + { + mPlayerPid = pid; + // Update the playing state + signal(SIGCHLD, catch_child); + mIsPlaying = true; + mFadeIn = 0.0f; + } + else + { + + // Find out the pixel position of the video view and build a command line for + // omxplayer to position it in the right place + char buf1[32]; + char buf2[32]; + float x = mPosition.x() - (mOrigin.x() * mSize.x()); + float y = mPosition.y() - (mOrigin.y() * mSize.y()); + + // fix x and y + switch(Renderer::getScreenRotate()) + { + case 0: + { + const int x1 = (int)(Renderer::getScreenOffsetX() + x); + const int y1 = (int)(Renderer::getScreenOffsetY() + y); + const int x2 = (int)(x1 + mSize.x()); + const int y2 = (int)(y1 + mSize.y()); + sprintf(buf1, "%d,%d,%d,%d", x1, y1, x2, y2); + } + break; + + case 1: + { + const int x1 = (int)(Renderer::getWindowWidth() - Renderer::getScreenOffsetY() - y - mSize.y()); + const int y1 = (int)(Renderer::getScreenOffsetX() + x); + const int x2 = (int)(x1 + mSize.y()); + const int y2 = (int)(y1 + mSize.x()); + sprintf(buf1, "%d,%d,%d,%d", x1, y1, x2, y2); + } + break; + + case 2: + { + const int x1 = (int)(Renderer::getWindowWidth() - Renderer::getScreenOffsetX() - x - mSize.x()); + const int y1 = (int)(Renderer::getWindowHeight() - Renderer::getScreenOffsetY() - y - mSize.y()); + const int x2 = (int)(x1 + mSize.x()); + const int y2 = (int)(y1 + mSize.y()); + sprintf(buf1, "%d,%d,%d,%d", x1, y1, x2, y2); + } + break; + + case 3: + { + const int x1 = (int)(Renderer::getScreenOffsetY() + y); + const int y1 = (int)(Renderer::getWindowHeight() - Renderer::getScreenOffsetX() - x - mSize.x()); + const int x2 = (int)(x1 + mSize.y()); + const int y2 = (int)(y1 + mSize.x()); + sprintf(buf1, "%d,%d,%d,%d", x1, y1, x2, y2); + } + break; + } + + // rotate the video + switch(Renderer::getScreenRotate()) + { + case 0: { sprintf(buf2, "%d", (int) 0); } break; + case 1: { sprintf(buf2, "%d", (int) 90); } break; + case 2: { sprintf(buf2, "%d", (int)180); } break; + case 3: { sprintf(buf2, "%d", (int)270); } break; + } + + // We need to specify the layer of 10000 or above to ensure the video is displayed on top + // of our SDL display + + const char* argv[] = { "", "--layer", "10010", "--loop", "--no-osd", "--aspect-mode", "letterbox", "--vol", "0", "-o", "both","--win", buf1, "--orientation", buf2, "", "", "", "", "", "", "", "", "", "", "", NULL }; + + // check if we want to mute the audio + if ((!Settings::getInstance()->getBool("VideoAudio") || (float)VolumeControl::getInstance()->getVolume() == 0) || + (Settings::getInstance()->getBool("ScreenSaverVideoMute") && mScreensaverMode)) + { + argv[8] = "-1000000"; + } + else + { + float percentVolume = (float)VolumeControl::getInstance()->getVolume(); + int OMXVolume = (int)((percentVolume-98)*105); + argv[8] = std::to_string(OMXVolume).c_str(); + } + + // test if there's a path for possible subtitles, meaning we're a screensaver video + if (!subtitlePath.empty()) + { + // if we are rendering a screensaver + + // check if we want to stretch the image + if (Settings::getInstance()->getBool("StretchVideoOnScreenSaver")) + { + argv[6] = "stretch"; + } + + if (Settings::getInstance()->getString("ScreenSaverGameInfo") != "never") + { + // if we have chosen to render subtitles + argv[15] = "--subtitles"; + argv[16] = subtitlePath.c_str(); + argv[17] = mPlayingVideoPath.c_str(); + argv[18] = "--font"; + argv[19] = Settings::getInstance()->getString("SubtitleFont").c_str(); + argv[20] = "--italic-font"; + argv[21] = Settings::getInstance()->getString("SubtitleItalicFont").c_str(); + argv[22] = "--font-size"; + argv[23] = std::to_string(Settings::getInstance()->getInt("SubtitleSize")).c_str(); + argv[24] = "--align"; + argv[25] = Settings::getInstance()->getString("SubtitleAlignment").c_str(); + } + else + { + // if we have chosen NOT to render subtitles in the screensaver + argv[15] = mPlayingVideoPath.c_str(); + } + } + else + { + // if we are rendering a video gamelist + if (!mTargetIsMax) + { + argv[6] = "stretch"; + } + argv[15] = mPlayingVideoPath.c_str(); + } + + argv[10] = Settings::getInstance()->getString("OMXAudioDev").c_str(); + + //const char* argv[] = args; + const char* env[] = { "LD_LIBRARY_PATH=/opt/vc/libs:/usr/lib/omxplayer", NULL }; + + // Redirect stdout + int fdin = open("/dev/null", O_RDONLY); + int fdout = open("/dev/null", O_WRONLY); + dup2(fdin, 0); + dup2(fdout, 1); + // Run the omxplayer binary + execve("/usr/bin/omxplayer.bin", (char**)argv, (char**)env); + + _exit(EXIT_FAILURE); + } + } + } +} + +void catch_child(int sig_num) +{ + // When we get here, we know there's at least 1 zombie child waiting. There + // may be others if, for example, a Scripting event was fired at the same time + // that the video was stopped. + while (1) + { + int child_status; + pid_t pid = waitpid(-1, &child_status, WNOHANG); + if (pid <= 0) + { + break; + } + } +} + +void VideoPlayerComponent::stopVideo() +{ + mIsPlaying = false; + mStartDelayed = false; + + // Stop the player process + if (mPlayerPid != -1) + { + int status; + kill(mPlayerPid, SIGKILL); + waitpid(mPlayerPid, &status, WNOHANG); + mPlayerPid = -1; + } +} + +#endif + diff --git a/es-core/src/components/VideoPlayerComponent.h b/es-core/src/components/VideoPlayerComponent.h new file mode 100644 index 0000000000..96783ccd66 --- /dev/null +++ b/es-core/src/components/VideoPlayerComponent.h @@ -0,0 +1,41 @@ +#ifdef _OMX_ +#pragma once +#ifndef ES_CORE_COMPONENTS_VIDEO_PLAYER_COMPONENT_H +#define ES_CORE_COMPONENTS_VIDEO_PLAYER_COMPONENT_H + +#include "components/VideoComponent.h" + +void catch_child(int sig_num); + +class VideoPlayerComponent : public VideoComponent +{ +public: + VideoPlayerComponent(Window* window, std::string path); + virtual ~VideoPlayerComponent(); + + void render(const Transform4x4f& parentTrans) override; + + // Resize the video to fit this size. If one axis is zero, scale that axis to maintain aspect ratio. + // If both are non-zero, potentially break the aspect ratio. If both are zero, no resizing. + // Can be set before or after a video is loaded. + // setMaxSize() and setResize() are mutually exclusive. + void setResize(float width, float height); + + // Resize the video to be as large as possible but fit within a box of this size. + // Can be set before or after a video is loaded. + // Never breaks the aspect ratio. setMaxSize() and setResize() are mutually exclusive. + void setMaxSize(float width, float height); + +private: + // Start the video Immediately + virtual void startVideo(); + // Stop the video + virtual void stopVideo(); + +private: + pid_t mPlayerPid; + std::string subtitlePath; +}; + +#endif // ES_CORE_COMPONENTS_VIDEO_PLAYER_COMPONENT_H +#endif // _OMX_ diff --git a/es-core/src/components/VideoVlcComponent.cpp b/es-core/src/components/VideoVlcComponent.cpp new file mode 100644 index 0000000000..4ef7500d05 --- /dev/null +++ b/es-core/src/components/VideoVlcComponent.cpp @@ -0,0 +1,350 @@ +#include "components/VideoVlcComponent.h" + +#include "renderers/Renderer.h" +#include "resources/TextureResource.h" +#include "utils/StringUtil.h" +#include "PowerSaver.h" +#include "Settings.h" +#ifdef WIN32 +#include +#include +typedef SSIZE_T ssize_t; +#else +#include +#endif +#include +#include + +libvlc_instance_t* VideoVlcComponent::mVLC = NULL; + +// VLC prepares to render a video frame. +static void *lock(void *data, void **p_pixels) { + struct VideoContext *c = (struct VideoContext *)data; + SDL_LockMutex(c->mutex); + SDL_LockSurface(c->surface); + *p_pixels = c->surface->pixels; + return NULL; // Picture identifier, not needed here. +} + +// VLC just rendered a video frame. +static void unlock(void *data, void* /*id*/, void *const* /*p_pixels*/) { + struct VideoContext *c = (struct VideoContext *)data; + SDL_UnlockSurface(c->surface); + SDL_UnlockMutex(c->mutex); +} + +// VLC wants to display a video frame. +static void display(void* /*data*/, void* /*id*/) { + //Data to be displayed +} + +VideoVlcComponent::VideoVlcComponent(Window* window, std::string subtitles) : + VideoComponent(window), + mMediaPlayer(nullptr) +{ + memset(&mContext, 0, sizeof(mContext)); + + // Get an empty texture for rendering the video + mTexture = TextureResource::get(""); + + // Make sure VLC has been initialised + setupVLC(subtitles); +} + +VideoVlcComponent::~VideoVlcComponent() +{ + stopVideo(); +} + +void VideoVlcComponent::setResize(float width, float height) +{ + mTargetSize = Vector2f(width, height); + mTargetIsMax = false; + mStaticImage.setResize(width, height); + resize(); +} + +void VideoVlcComponent::setMaxSize(float width, float height) +{ + mTargetSize = Vector2f(width, height); + mTargetIsMax = true; + mStaticImage.setMaxSize(width, height); + resize(); +} + +void VideoVlcComponent::resize() +{ + if(!mTexture) + return; + + const Vector2f textureSize((float)mVideoWidth, (float)mVideoHeight); + + if(textureSize == Vector2f::Zero()) + return; + + // SVG rasterization is determined by height (see SVGResource.cpp), and rasterization is done in terms of pixels + // if rounding is off enough in the rasterization step (for images with extreme aspect ratios), it can cause cutoff when the aspect ratio breaks + // so, we always make sure the resultant height is an integer to make sure cutoff doesn't happen, and scale width from that + // (you'll see this scattered throughout the function) + // this is probably not the best way, so if you're familiar with this problem and have a better solution, please make a pull request! + + if(mTargetIsMax) + { + + mSize = textureSize; + + Vector2f resizeScale((mTargetSize.x() / mSize.x()), (mTargetSize.y() / mSize.y())); + + if(resizeScale.x() < resizeScale.y()) + { + mSize[0] *= resizeScale.x(); + mSize[1] *= resizeScale.x(); + }else{ + mSize[0] *= resizeScale.y(); + mSize[1] *= resizeScale.y(); + } + + // for SVG rasterization, always calculate width from rounded height (see comment above) + mSize[1] = Math::round(mSize[1]); + mSize[0] = (mSize[1] / textureSize.y()) * textureSize.x(); + + }else{ + // if both components are set, we just stretch + // if no components are set, we don't resize at all + mSize = mTargetSize == Vector2f::Zero() ? textureSize : mTargetSize; + + // if only one component is set, we resize in a way that maintains aspect ratio + // for SVG rasterization, we always calculate width from rounded height (see comment above) + if(!mTargetSize.x() && mTargetSize.y()) + { + mSize[1] = Math::round(mTargetSize.y()); + mSize[0] = (mSize.y() / textureSize.y()) * textureSize.x(); + }else if(mTargetSize.x() && !mTargetSize.y()) + { + mSize[1] = Math::round((mTargetSize.x() / textureSize.x()) * textureSize.y()); + mSize[0] = (mSize.y() / textureSize.y()) * textureSize.x(); + } + } + + // mSize.y() should already be rounded + mTexture->rasterizeAt((size_t)Math::round(mSize.x()), (size_t)Math::round(mSize.y())); + + onSizeChanged(); +} + +void VideoVlcComponent::render(const Transform4x4f& parentTrans) +{ + if (!isVisible()) + return; + + VideoComponent::render(parentTrans); + Transform4x4f trans = parentTrans * getTransform(); + GuiComponent::renderChildren(trans); + Renderer::setMatrix(trans); + + if (mIsPlaying && mContext.valid) + { + const unsigned int fadeIn = (unsigned int)(Math::clamp(0.0f, mFadeIn, 1.0f) * 255.0f); + const unsigned int color = Renderer::convertColor((fadeIn << 24) | (fadeIn << 16) | (fadeIn << 8) | 255); + Renderer::Vertex vertices[4]; + + vertices[0] = { { 0.0f , 0.0f }, { 0.0f, 0.0f }, color }; + vertices[1] = { { 0.0f , mSize.y() }, { 0.0f, 1.0f }, color }; + vertices[2] = { { mSize.x(), 0.0f }, { 1.0f, 0.0f }, color }; + vertices[3] = { { mSize.x(), mSize.y() }, { 1.0f, 1.0f }, color }; + + // round vertices + for(int i = 0; i < 4; ++i) + vertices[i].pos.round(); + + // Build a texture for the video frame + mTexture->initFromPixels((unsigned char*)mContext.surface->pixels, mContext.surface->w, mContext.surface->h); + mTexture->bind(); + + // Render it + Renderer::drawTriangleStrips(&vertices[0], 4); + } + else + { + VideoComponent::renderSnapshot(parentTrans); + } +} + +void VideoVlcComponent::setupContext() +{ + if (!mContext.valid) + { + // Create an RGBA surface to render the video into + mContext.surface = SDL_CreateRGBSurface(SDL_SWSURFACE, (int)mVideoWidth, (int)mVideoHeight, 32, 0xff000000, 0x00ff0000, 0x0000ff00, 0x000000ff); + mContext.mutex = SDL_CreateMutex(); + mContext.valid = true; + resize(); + } +} + +void VideoVlcComponent::freeContext() +{ + if (mContext.valid) + { + SDL_FreeSurface(mContext.surface); + SDL_DestroyMutex(mContext.mutex); + mContext.valid = false; + } +} + +void VideoVlcComponent::setupVLC(std::string subtitles) +{ + // If VLC hasn't been initialised yet then do it now + if (!mVLC) + { + const char** args; + const char* newargs[] = { "--quiet", "--sub-file", subtitles.c_str() }; + const char* singleargs[] = { "--quiet" }; + int argslen = 0; + + if (!subtitles.empty()) + { + argslen = sizeof(newargs) / sizeof(newargs[0]); + args = newargs; + } + else + { + argslen = sizeof(singleargs) / sizeof(singleargs[0]); + args = singleargs; + } + mVLC = libvlc_new(argslen, args); + } +} + +void VideoVlcComponent::handleLooping() +{ + if (mIsPlaying && mMediaPlayer) + { + libvlc_state_t state = libvlc_media_player_get_state(mMediaPlayer); + if (state == libvlc_Ended) + { + setMuteMode(); + //libvlc_media_player_set_position(mMediaPlayer, 0.0f); + libvlc_media_player_set_media(mMediaPlayer, mMedia); + libvlc_media_player_play(mMediaPlayer); + } + } +} + +void VideoVlcComponent::startVideo() +{ + if (!mIsPlaying) { + mVideoWidth = 0; + mVideoHeight = 0; + +#ifdef WIN32 + std::string path(Utils::String::replace(mVideoPath, "/", "\\")); +#else + std::string path(mVideoPath); +#endif + // Make sure we have a video path + if (mVLC && (path.size() > 0)) + { + // Set the video that we are going to be playing so we don't attempt to restart it + mPlayingVideoPath = mVideoPath; + + // Open the media + mMedia = libvlc_media_new_path(mVLC, path.c_str()); + if (mMedia) + { + unsigned track_count; + // Get the media metadata so we can find the aspect ratio + libvlc_media_parse_with_options(mMedia, libvlc_media_fetch_local, -1); + while (libvlc_media_get_parsed_status(mMedia) == 0) + ; + libvlc_media_track_t** tracks; + track_count = libvlc_media_tracks_get(mMedia, &tracks); + for (unsigned track = 0; track < track_count; ++track) + { + if (tracks[track]->i_type == libvlc_track_video) + { + mVideoWidth = tracks[track]->video->i_width; + mVideoHeight = tracks[track]->video->i_height; + break; + } + } + libvlc_media_tracks_release(tracks, track_count); + + // Make sure we found a valid video track + if ((mVideoWidth > 0) && (mVideoHeight > 0)) + { + if (mScreensaverMode) + { + std::string resolution = Settings::getInstance()->getString("VlcScreenSaverResolution"); + if(resolution != "original") { + float scale = 1; + if (resolution == "low") + // 25% of screen resolution + scale = 0.25; + if (resolution == "medium") + // 50% of screen resolution + scale = 0.5; + if (resolution == "high") + // 75% of screen resolution + scale = 0.75; + + Vector2f resizeScale((Renderer::getScreenWidth() / (float)mVideoWidth) * scale, (Renderer::getScreenHeight() / (float)mVideoHeight) * scale); + + if(resizeScale.x() < resizeScale.y()) + { + mVideoWidth = (unsigned int) (mVideoWidth * resizeScale.x()); + mVideoHeight = (unsigned int) (mVideoHeight * resizeScale.x()); + }else{ + mVideoWidth = (unsigned int) (mVideoWidth * resizeScale.y()); + mVideoHeight = (unsigned int) (mVideoHeight * resizeScale.y()); + } + } + } + else + { + remove(getTitlePath().c_str()); + } + PowerSaver::pause(); + setupContext(); + + // Setup the media player + mMediaPlayer = libvlc_media_player_new_from_media(mMedia); + + setMuteMode(); + + libvlc_media_player_play(mMediaPlayer); + libvlc_video_set_callbacks(mMediaPlayer, lock, unlock, display, (void*)&mContext); + libvlc_video_set_format(mMediaPlayer, "RGBA", (int)mVideoWidth, (int)mVideoHeight, (int)mVideoWidth * 4); + + // Update the playing state + mIsPlaying = true; + mFadeIn = 0.0f; + } + } + } + } +} + +void VideoVlcComponent::stopVideo() +{ + mIsPlaying = false; + mStartDelayed = false; + // Release the media player so it stops calling back to us + if (mMediaPlayer) + { + libvlc_media_player_stop(mMediaPlayer); + libvlc_media_player_release(mMediaPlayer); + libvlc_media_release(mMedia); + mMediaPlayer = NULL; + freeContext(); + PowerSaver::resume(); + } +} + +void VideoVlcComponent::setMuteMode() +{ + Settings *cfg = Settings::getInstance(); + if (!cfg->getBool("VideoAudio") || (cfg->getBool("ScreenSaverVideoMute") && mScreensaverMode)) { + libvlc_media_add_option(mMedia, ":no-audio"); + } +} diff --git a/es-core/src/components/VideoVlcComponent.h b/es-core/src/components/VideoVlcComponent.h new file mode 100644 index 0000000000..b3974faf3a --- /dev/null +++ b/es-core/src/components/VideoVlcComponent.h @@ -0,0 +1,73 @@ +#pragma once +#ifndef ES_CORE_COMPONENTS_VIDEO_VLC_COMPONENT_H +#define ES_CORE_COMPONENTS_VIDEO_VLC_COMPONENT_H + +#include "VideoComponent.h" + +struct SDL_mutex; +struct SDL_Surface; +struct libvlc_instance_t; +struct libvlc_media_t; +struct libvlc_media_player_t; + +struct VideoContext { + SDL_Surface* surface; + SDL_mutex* mutex; + bool valid; +}; + +class VideoVlcComponent : public VideoComponent +{ + // Structure that groups together the configuration of the video component + struct Configuration + { + unsigned startDelay; + bool showSnapshotNoVideo; + bool showSnapshotDelay; + std::string defaultVideoPath; + }; + +public: + static void setupVLC(std::string subtitles); + + VideoVlcComponent(Window* window, std::string subtitles); + virtual ~VideoVlcComponent(); + + void render(const Transform4x4f& parentTrans) override; + + + // Resize the video to fit this size. If one axis is zero, scale that axis to maintain aspect ratio. + // If both are non-zero, potentially break the aspect ratio. If both are zero, no resizing. + // Can be set before or after a video is loaded. + // setMaxSize() and setResize() are mutually exclusive. + void setResize(float width, float height) override; + + // Resize the video to be as large as possible but fit within a box of this size. + // Can be set before or after a video is loaded. + // Never breaks the aspect ratio. setMaxSize() and setResize() are mutually exclusive. + void setMaxSize(float width, float height) override; + +private: + // Calculates the correct mSize from our resizing information (set by setResize/setMaxSize). + // Used internally whenever the resizing parameters or texture change. + void resize(); + // Start the video Immediately + virtual void startVideo() override; + // Stop the video + virtual void stopVideo() override; + // Handle looping the video. Must be called periodically + virtual void handleLooping() override; + + void setMuteMode(); + void setupContext(); + void freeContext(); + +private: + static libvlc_instance_t* mVLC; + libvlc_media_t* mMedia; + libvlc_media_player_t* mMediaPlayer; + VideoContext mContext; + std::shared_ptr mTexture; +}; + +#endif // ES_CORE_COMPONENTS_VIDEO_VLC_COMPONENT_H diff --git a/es-core/src/guis/GuiDetectDevice.cpp b/es-core/src/guis/GuiDetectDevice.cpp index 95deea1ea8..45d9a6bd23 100644 --- a/es-core/src/guis/GuiDetectDevice.cpp +++ b/es-core/src/guis/GuiDetectDevice.cpp @@ -1,19 +1,16 @@ #include "guis/GuiDetectDevice.h" -#include "Window.h" -#include "Renderer.h" -#include "resources/Font.h" -#include "guis/GuiInputConfig.h" + #include "components/TextComponent.h" -#include -#include -#include -#include "Util.h" +#include "guis/GuiInputConfig.h" +#include "utils/FileSystemUtil.h" +#include "utils/StringUtil.h" +#include "InputManager.h" +#include "PowerSaver.h" +#include "Window.h" #define HOLD_TIME 1000 -using namespace Eigen; - -GuiDetectDevice::GuiDetectDevice(Window* window, bool firstRun, const std::function& doneCallback) : GuiComponent(window), mFirstRun(firstRun), +GuiDetectDevice::GuiDetectDevice(Window* window, bool firstRun, const std::function& doneCallback) : GuiComponent(window), mFirstRun(firstRun), mBackground(window, ":/frame.png"), mGrid(window, Vector2i(1, 5)) { mHoldingConfig = NULL; @@ -22,16 +19,16 @@ GuiDetectDevice::GuiDetectDevice(Window* window, bool firstRun, const std::funct addChild(&mBackground); addChild(&mGrid); - + // title - mTitle = std::make_shared(mWindow, firstRun ? "WELCOME" : "CONFIGURE INPUT", + mTitle = std::make_shared(mWindow, firstRun ? "WELCOME" : "CONFIGURE INPUT", Font::get(FONT_SIZE_LARGE), 0x555555FF, ALIGN_CENTER); mGrid.setEntry(mTitle, Vector2i(0, 0), false, true, Vector2i(1, 1), GridFlags::BORDER_BOTTOM); // device info std::stringstream deviceInfo; int numDevices = InputManager::getInstance()->getNumJoysticks(); - + if(numDevices > 0) deviceInfo << numDevices << " GAMEPAD" << (numDevices > 1 ? "S" : "") << " DETECTED"; else @@ -70,21 +67,24 @@ void GuiDetectDevice::onSizeChanged() bool GuiDetectDevice::input(InputConfig* config, Input input) { + PowerSaver::pause(); + if(!mFirstRun && input.device == DEVICE_KEYBOARD && input.type == TYPE_KEY && input.value && input.id == SDLK_ESCAPE) { // cancel configuring + PowerSaver::resume(); delete this; return true; } - if(input.type == TYPE_BUTTON || input.type == TYPE_KEY) + if(input.type == TYPE_BUTTON || input.type == TYPE_KEY ||input.type == TYPE_CEC_BUTTON) { if(input.value && mHoldingConfig == NULL) { // started holding mHoldingConfig = config; mHoldTime = HOLD_TIME; - mDeviceHeld->setText(strToUpper(config->getDeviceName())); + mDeviceHeld->setText(Utils::String::toUpper(config->getDeviceName())); }else if(!input.value && mHoldingConfig == config) { // cancel @@ -100,15 +100,27 @@ void GuiDetectDevice::update(int deltaTime) { if(mHoldingConfig) { - mHoldTime -= deltaTime; - const float t = (float)mHoldTime / HOLD_TIME; - unsigned int c = (unsigned char)(t * 255); - mDeviceHeld->setColor((c << 24) | (c << 16) | (c << 8) | 0xFF); - if(mHoldTime <= 0) + // If ES starts and if a known device is connected after startup skip controller configuration + if(mFirstRun && Utils::FileSystem::exists(InputManager::getConfigPath()) && InputManager::getInstance()->getNumConfiguredDevices() > 0) + { + if(mDoneCallback) + mDoneCallback(); + PowerSaver::resume(); + delete this; // delete GUI element + } + else { - // picked one! - mWindow->pushGui(new GuiInputConfig(mWindow, mHoldingConfig, true, mDoneCallback)); - delete this; + mHoldTime -= deltaTime; + const float t = (float)mHoldTime / HOLD_TIME; + unsigned int c = (unsigned char)(t * 255); + mDeviceHeld->setColor((c << 24) | (c << 16) | (c << 8) | 0xFF); + if(mHoldTime <= 0) + { + // picked one! + mWindow->pushGui(new GuiInputConfig(mWindow, mHoldingConfig, true, mDoneCallback)); + PowerSaver::resume(); + delete this; + } } } } diff --git a/es-core/src/guis/GuiDetectDevice.h b/es-core/src/guis/GuiDetectDevice.h index f03f940ac3..f1b0f603d1 100644 --- a/es-core/src/guis/GuiDetectDevice.h +++ b/es-core/src/guis/GuiDetectDevice.h @@ -1,8 +1,10 @@ #pragma once +#ifndef ES_CORE_GUIS_GUI_DETECT_DEVICE_H +#define ES_CORE_GUIS_GUI_DETECT_DEVICE_H -#include "GuiComponent.h" -#include "components/NinePatchComponent.h" #include "components/ComponentGrid.h" +#include "components/NinePatchComponent.h" +#include "GuiComponent.h" class TextComponent; @@ -31,3 +33,5 @@ class GuiDetectDevice : public GuiComponent std::function mDoneCallback; }; + +#endif // ES_CORE_GUIS_GUI_DETECT_DEVICE_H diff --git a/es-core/src/guis/GuiInputConfig.cpp b/es-core/src/guis/GuiInputConfig.cpp index b4522709f4..3945aeec9f 100644 --- a/es-core/src/guis/GuiInputConfig.cpp +++ b/es-core/src/guis/GuiInputConfig.cpp @@ -1,30 +1,58 @@ #include "guis/GuiInputConfig.h" -#include "Window.h" -#include "Log.h" -#include "components/TextComponent.h" -#include "components/ImageComponent.h" -#include "components/MenuComponent.h" + #include "components/ButtonComponent.h" -#include "Util.h" +#include "components/MenuComponent.h" +#include "guis/GuiMsgBox.h" +#include "InputManager.h" +#include "Log.h" +#include "Window.h" -static const int inputCount = 10; -static const char* inputName[inputCount] = { "Up", "Down", "Left", "Right", "A", "B", "Start", "Select", "PageUp", "PageDown" }; -static const bool inputSkippable[inputCount] = { false, false, false, false, false, false, false, false, true, true }; -static const char* inputDispName[inputCount] = { "UP", "DOWN", "LEFT", "RIGHT", "A", "B", "START", "SELECT", "PAGE UP", "PAGE DOWN" }; -static const char* inputIcon[inputCount] = { ":/help/dpad_up.svg", ":/help/dpad_down.svg", ":/help/dpad_left.svg", ":/help/dpad_right.svg", - ":/help/button_a.svg", ":/help/button_b.svg", ":/help/button_start.svg", ":/help/button_select.svg", - ":/help/button_l.svg", ":/help/button_r.svg" }; +struct InputConfigStructure +{ + const char* name; + const bool skippable; + const char* dispName; + const char* icon; +}; + +static const int inputCount = 25; +static const InputConfigStructure GUI_INPUT_CONFIG_LIST[inputCount] = +{ + { "Up", false, "D-PAD UP", ":/help/dpad_up.svg" }, + { "Down", false, "D-PAD DOWN", ":/help/dpad_down.svg" }, + { "Left", false, "D-PAD LEFT", ":/help/dpad_left.svg" }, + { "Right", false, "D-PAD RIGHT", ":/help/dpad_right.svg" }, + { "Start", true, "START", ":/help/button_start.svg" }, + { "Select", true, "SELECT", ":/help/button_select.svg" }, + { "A", false, "BUTTON A / EAST", ":/help/buttons_east.svg" }, + { "B", true, "BUTTON B / SOUTH", ":/help/buttons_south.svg" }, + { "X", true, "BUTTON X / NORTH", ":/help/buttons_north.svg" }, + { "Y", true, "BUTTON Y / WEST", ":/help/buttons_west.svg" }, + { "LeftShoulder", true, "LEFT SHOULDER", ":/help/button_l.svg" }, + { "RightShoulder", true, "RIGHT SHOULDER", ":/help/button_r.svg" }, + { "LeftTrigger", true, "LEFT TRIGGER", ":/help/button_lt.svg" }, + { "RightTrigger", true, "RIGHT TRIGGER", ":/help/button_rt.svg" }, + { "LeftThumb", true, "LEFT THUMB", ":/help/analog_thumb.svg" }, + { "RightThumb", true, "RIGHT THUMB", ":/help/analog_thumb.svg" }, + { "LeftAnalogUp", true, "LEFT ANALOG UP", ":/help/analog_up.svg" }, + { "LeftAnalogDown", true, "LEFT ANALOG DOWN", ":/help/analog_down.svg" }, + { "LeftAnalogLeft", true, "LEFT ANALOG LEFT", ":/help/analog_left.svg" }, + { "LeftAnalogRight", true, "LEFT ANALOG RIGHT", ":/help/analog_right.svg" }, + { "RightAnalogUp", true, "RIGHT ANALOG UP", ":/help/analog_up.svg" }, + { "RightAnalogDown", true, "RIGHT ANALOG DOWN", ":/help/analog_down.svg" }, + { "RightAnalogLeft", true, "RIGHT ANALOG LEFT", ":/help/analog_left.svg" }, + { "RightAnalogRight", true, "RIGHT ANALOG RIGHT", ":/help/analog_right.svg" }, + { "HotKeyEnable", true, "HOTKEY ENABLE", ":/help/button_hotkey.svg" } +}; //MasterVolUp and MasterVolDown are also hooked up, but do not appear on this screen. //If you want, you can manually add them to es_input.cfg. -using namespace Eigen; - -#define HOLD_TO_SKIP_MS 5000 +#define HOLD_TO_SKIP_MS 1000 -GuiInputConfig::GuiInputConfig(Window* window, InputConfig* target, bool reconfigureAll, const std::function& okCallback) : GuiComponent(window), - mBackground(window, ":/frame.png"), mGrid(window, Vector2i(1, 7)), - mTargetConfig(target), mHoldingInput(false) +GuiInputConfig::GuiInputConfig(Window* window, InputConfig* target, bool reconfigureAll, const std::function& okCallback) : GuiComponent(window), + mBackground(window, ":/frame.png"), mGrid(window, Vector2i(1, 7)), + mTargetConfig(target), mHoldingInput(false), mBusyAnim(window) { LOG(LogInfo) << "Configuring device " << target->getDeviceId() << " (" << target->getDeviceName() << ")."; @@ -42,16 +70,19 @@ GuiInputConfig::GuiInputConfig(Window* window, InputConfig* target, bool reconfi mTitle = std::make_shared(mWindow, "CONFIGURING", Font::get(FONT_SIZE_LARGE), 0x555555FF, ALIGN_CENTER); mGrid.setEntry(mTitle, Vector2i(0, 1), false, true); - + std::stringstream ss; if(target->getDeviceId() == DEVICE_KEYBOARD) ss << "KEYBOARD"; + else if(target->getDeviceId() == DEVICE_CEC) + ss << "CEC"; else ss << "GAMEPAD " << (target->getDeviceId() + 1); - mSubtitle1 = std::make_shared(mWindow, strToUpper(ss.str()), Font::get(FONT_SIZE_MEDIUM), 0x555555FF, ALIGN_CENTER); + mSubtitle1 = std::make_shared(mWindow, Utils::String::toUpper(ss.str()), Font::get(FONT_SIZE_MEDIUM), 0x555555FF, ALIGN_CENTER); mGrid.setEntry(mSubtitle1, Vector2i(0, 2), false, true); - mSubtitle2 = std::make_shared(mWindow, "HOLD ANY BUTTON TO SKIP", Font::get(FONT_SIZE_SMALL), 0x99999900, ALIGN_CENTER); + mSubtitle2 = std::make_shared(mWindow, "HOLD ANY BUTTON TO SKIP", Font::get(FONT_SIZE_SMALL), 0x999999FF, ALIGN_CENTER); + mSubtitle2->setOpacity(GUI_INPUT_CONFIG_LIST[0].skippable * 255); mGrid.setEntry(mSubtitle2, Vector2i(0, 3), false, true); // 4 is a spacer row @@ -61,10 +92,10 @@ GuiInputConfig::GuiInputConfig(Window* window, InputConfig* target, bool reconfi for(int i = 0; i < inputCount; i++) { ComponentListRow row; - + // icon auto icon = std::make_shared(mWindow); - icon->setImage(inputIcon[i]); + icon->setImage(GUI_INPUT_CONFIG_LIST[i].icon); icon->setColorShift(0x777777FF); icon->setResize(0, Font::get(FONT_SIZE_MEDIUM)->getLetterHeight() * 1.25f); row.addElement(icon, false); @@ -74,7 +105,7 @@ GuiInputConfig::GuiInputConfig(Window* window, InputConfig* target, bool reconfi spacer->setSize(16, 0); row.addElement(spacer, false); - auto text = std::make_shared(mWindow, inputDispName[i], Font::get(FONT_SIZE_MEDIUM), 0x777777FF); + auto text = std::make_shared(mWindow, GUI_INPUT_CONFIG_LIST[i].dispName, Font::get(FONT_SIZE_MEDIUM), 0x777777FF); row.addElement(text, true); auto mapping = std::make_shared(mWindow, "-NOT DEFINED-", Font::get(FONT_SIZE_MEDIUM, FONT_PATH_LIGHT), 0x999999FF, ALIGN_RIGHT); @@ -98,11 +129,15 @@ GuiInputConfig::GuiInputConfig(Window* window, InputConfig* target, bool reconfi setPress(mapping); return true; } - + // we're not configuring and they didn't press A to start, so ignore this return false; } + // apply filtering for quirks related to trigger mapping + if(filterTrigger(input, config, i)) + return false; + // we are configuring if(input.value != 0) { @@ -136,8 +171,8 @@ GuiInputConfig::GuiInputConfig(Window* window, InputConfig* target, bool reconfi } // only show "HOLD TO SKIP" if this input is skippable - mList->setCursorChangedCallback([this](CursorState state) { - bool skippable = inputSkippable[mList->getCursorId()]; + mList->setCursorChangedCallback([this](CursorState /*state*/) { + bool skippable = GUI_INPUT_CONFIG_LIST[mList->getCursorId()].skippable; mSubtitle2->setOpacity(skippable * 255); }); @@ -147,11 +182,34 @@ GuiInputConfig::GuiInputConfig(Window* window, InputConfig* target, bool reconfi // buttons std::vector< std::shared_ptr > buttons; - buttons.push_back(std::make_shared(mWindow, "OK", "ok", [this, okCallback] { + std::function okFunction = [this, okCallback] { InputManager::getInstance()->writeDeviceConfig(mTargetConfig); // save if(okCallback) okCallback(); - delete this; + delete this; + }; + buttons.push_back(std::make_shared(mWindow, "OK", "ok", [this, okFunction] { + // check if the hotkey enable button is set. if not prompt the user to use select or nothing. + Input input; + if (!mTargetConfig->getInputByName("HotKeyEnable", &input)) { + mWindow->pushGui(new GuiMsgBox(mWindow, + "YOU DIDN'T CHOOSE A HOTKEY ENABLE BUTTON. THIS IS REQUIRED FOR EXITING GAMES WITH A CONTROLLER. DO YOU WANT TO USE THE SELECT BUTTON DEFAULT ? PLEASE ANSWER YES TO USE SELECT OR NO TO NOT SET A HOTKEY ENABLE BUTTON.", + "YES", [this, okFunction] { + Input input; + mTargetConfig->getInputByName("Select", &input); + mTargetConfig->mapInput("HotKeyEnable", input); + okFunction(); + }, + "NO", [this, okFunction] { + // for a disabled hotkey enable button, set to a key with id 0, + // so the input configuration script can be backwards compatible. + mTargetConfig->mapInput("HotKeyEnable", Input(DEVICE_KEYBOARD, TYPE_KEY, 0, 1, true)); + okFunction(); + } + )); + } else { + okFunction(); + } })); mButtonGrid = makeButtonGrid(mWindow, buttons); mGrid.setEntry(mButtonGrid, Vector2i(0, 6), true, false); @@ -174,11 +232,13 @@ void GuiInputConfig::onSizeChanged() //mGrid.setRowHeightPerc(4, 0.03f); mGrid.setRowHeightPerc(5, (mList->getRowHeight(0) * 5 + 2) / mSize.y()); mGrid.setRowHeightPerc(6, mButtonGrid->getSize().y() / mSize.y()); + + mBusyAnim.setSize(mSize); } void GuiInputConfig::update(int deltaTime) { - if(mConfiguringRow && mHoldingInput && inputSkippable[mHeldInputId]) + if(mConfiguringRow && mHoldingInput && GUI_INPUT_CONFIG_LIST[mHeldInputId].skippable) { int prevSec = mHeldTime / 1000; mHeldTime += deltaTime; @@ -204,7 +264,7 @@ void GuiInputConfig::update(int deltaTime) } } -// move cursor to the next thing if we're configuring all, +// move cursor to the next thing if we're configuring all, // or come out of "configure mode" if we were only configuring one row void GuiInputConfig::rowDone() { @@ -240,11 +300,11 @@ void GuiInputConfig::setNotDefined(const std::shared_ptr& text) void GuiInputConfig::setAssignedTo(const std::shared_ptr& text, Input input) { - text->setText(strToUpper(input.string())); + text->setText(Utils::String::toUpper(input.string())); text->setColor(0x777777FF); } -void GuiInputConfig::error(const std::shared_ptr& text, const std::string& msg) +void GuiInputConfig::error(const std::shared_ptr& text, const std::string& /*msg*/) { text->setText("ALREADY TAKEN"); text->setColor(0x656565FF); @@ -256,23 +316,83 @@ bool GuiInputConfig::assign(Input input, int inputId) // if this input is mapped to something other than "nothing" or the current row, error // (if it's the same as what it was before, allow it) - if(mTargetConfig->getMappedTo(input).size() > 0 && !mTargetConfig->isMappedTo(inputName[inputId], input)) + if(mTargetConfig->getMappedTo(input).size() > 0 && !mTargetConfig->isMappedTo(GUI_INPUT_CONFIG_LIST[inputId].name, input) && strcmp(GUI_INPUT_CONFIG_LIST[inputId].name, "HotKeyEnable") != 0) { error(mMappings.at(inputId), "Already mapped!"); return false; } setAssignedTo(mMappings.at(inputId), input); - + input.configured = true; - mTargetConfig->mapInput(inputName[inputId], input); + mTargetConfig->mapInput(GUI_INPUT_CONFIG_LIST[inputId].name, input); - LOG(LogInfo) << " Mapping [" << input.string() << "] -> " << inputName[inputId]; + LOG(LogInfo) << " Mapping [" << input.string() << "] -> " << GUI_INPUT_CONFIG_LIST[inputId].name; return true; } void GuiInputConfig::clearAssignment(int inputId) { - mTargetConfig->unmapInput(inputName[inputId]); -} \ No newline at end of file + mTargetConfig->unmapInput(GUI_INPUT_CONFIG_LIST[inputId].name); +} + +bool GuiInputConfig::filterTrigger(Input input, InputConfig* config, int inputId) +{ +#if defined(__linux__) + // on Linux, some gamepads return both an analog axis and a digital button for the trigger; + // we want the analog axis only, so this function removes the button press event + bool isPlaystation = ( + // match PlayStation joystick with 6 axes only + strstr(config->getDeviceName().c_str(), "PLAYSTATION") != NULL + || strstr(config->getDeviceName().c_str(), "Sony Interactive") != NULL // Official dualshock 4 + || strstr(config->getDeviceName().c_str(), "PS3 Ga") != NULL + || strstr(config->getDeviceName().c_str(), "PS(R) Ga") != NULL + // BigBen kid's PS3 gamepad 146b:0902, matched on SDL GUID because its name "Bigben Interactive Bigben Game Pad" may be too generic + || strcmp(config->getDeviceGUIDString().c_str(), "030000006b1400000209000011010000") == 0 + ); + bool isAnbernic = ( + strcmp(config->getDeviceGUIDString().c_str(), "03004ab1020500000913000010010000") == 0 // Anbernic RG P01 has same issue + ); + + if((isPlaystation || isAnbernic) + && InputManager::getInstance()->getAxisCountByDevice(config->getDeviceId()) == 6) + { + // digital triggers are unwanted + if(( + (isPlaystation && (input.id == 6 || input.id == 7)) + || (isAnbernic && (input.id == 8 || input.id == 9)) + ) && input.type == TYPE_BUTTON) + { + mHoldingInput = false; + return true; + } + } + + bool genericTrigger = !isAnbernic && (input.id == 2 || input.id == 5); + bool anbernicTrigger = isAnbernic && (input.id == 4 || input.id == 5); + // ignore negative pole for axes only when triggers are being configured + if(input.type == TYPE_AXIS && (genericTrigger || anbernicTrigger)) + { + + if(strstr(GUI_INPUT_CONFIG_LIST[inputId].name, "Trigger") != NULL) + { + if(input.value == 1) + mSkipAxis = true; + else if(input.value == -1) + return true; + } + else if(mSkipAxis) + { + mSkipAxis = false; + return true; + } + } +#else + (void)input; + (void)config; + (void)inputId; +#endif + + return false; +} diff --git a/es-core/src/guis/GuiInputConfig.h b/es-core/src/guis/GuiInputConfig.h index 20af11df86..3cdf0f9101 100644 --- a/es-core/src/guis/GuiInputConfig.h +++ b/es-core/src/guis/GuiInputConfig.h @@ -1,10 +1,13 @@ #pragma once +#ifndef ES_CORE_GUIS_GUI_INPUT_CONFIG_H +#define ES_CORE_GUIS_GUI_INPUT_CONFIG_H -#include "GuiComponent.h" -#include "components/NinePatchComponent.h" +#include "components/BusyComponent.h" #include "components/ComponentGrid.h" -#include "components/ComponentList.h" +#include "components/NinePatchComponent.h" +#include "GuiComponent.h" +class ComponentList; class TextComponent; class GuiInputConfig : public GuiComponent @@ -25,6 +28,7 @@ class GuiInputConfig : public GuiComponent bool assign(Input input, int inputId); void clearAssignment(int inputId); + bool filterTrigger(Input input, InputConfig* config, int inputId); void rowDone(); @@ -46,4 +50,9 @@ class GuiInputConfig : public GuiComponent Input mHeldInput; int mHeldTime; int mHeldInputId; + bool mSkipAxis; + + BusyComponent mBusyAnim; }; + +#endif // ES_CORE_GUIS_GUI_INPUT_CONFIG_H diff --git a/es-core/src/guis/GuiMsgBox.cpp b/es-core/src/guis/GuiMsgBox.cpp index 73f4e07a65..9db9ffff11 100644 --- a/es-core/src/guis/GuiMsgBox.cpp +++ b/es-core/src/guis/GuiMsgBox.cpp @@ -1,24 +1,21 @@ #include "guis/GuiMsgBox.h" -#include "Renderer.h" -#include "components/TextComponent.h" + #include "components/ButtonComponent.h" -#include "components/MenuComponent.h" // for makeButtonGrid -#include "Util.h" -#include "Log.h" +#include "components/MenuComponent.h" #define HORIZONTAL_PADDING_PX 20 -GuiMsgBox::GuiMsgBox(Window* window, const std::string& text, +GuiMsgBox::GuiMsgBox(Window* window, const std::string& text, const std::string& name1, const std::function& func1, - const std::string& name2, const std::function& func2, - const std::string& name3, const std::function& func3) : GuiComponent(window), - mBackground(window, ":/frame.png"), mGrid(window, Eigen::Vector2i(1, 2)) + const std::string& name2, const std::function& func2, + const std::string& name3, const std::function& func3) : GuiComponent(window), + mBackground(window, ":/frame.png"), mGrid(window, Vector2i(1, 2)) { float width = Renderer::getScreenWidth() * 0.6f; // max width float minWidth = Renderer::getScreenWidth() * 0.3f; // minimum width mMsg = std::make_shared(mWindow, text, Font::get(FONT_SIZE_MEDIUM), 0x777777FF, ALIGN_CENTER); - mGrid.setEntry(mMsg, Eigen::Vector2i(0, 0), false, false); + mGrid.setEntry(mMsg, Vector2i(0, 0), false, false); // create the buttons mButtons.push_back(std::make_shared(mWindow, name1, name1, std::bind(&GuiMsgBox::deleteMeAndCall, this, func1))); @@ -32,9 +29,9 @@ GuiMsgBox::GuiMsgBox(Window* window, const std::string& text, { mAcceleratorFunc = mButtons.front()->getPressedFunc(); }else{ - for(auto it = mButtons.begin(); it != mButtons.end(); it++) + for(auto it = mButtons.cbegin(); it != mButtons.cend(); it++) { - if(strToUpper((*it)->getText()) == "OK" || strToUpper((*it)->getText()) == "NO") + if(Utils::String::toUpper((*it)->getText()) == "OK" || Utils::String::toUpper((*it)->getText()) == "NO") { mAcceleratorFunc = (*it)->getPressedFunc(); break; @@ -44,19 +41,19 @@ GuiMsgBox::GuiMsgBox(Window* window, const std::string& text, // put the buttons into a ComponentGrid mButtonGrid = makeButtonGrid(mWindow, mButtons); - mGrid.setEntry(mButtonGrid, Eigen::Vector2i(0, 1), true, false, Eigen::Vector2i(1, 1), GridFlags::BORDER_TOP); + mGrid.setEntry(mButtonGrid, Vector2i(0, 1), true, false, Vector2i(1, 1), GridFlags::BORDER_TOP); // decide final width if(mMsg->getSize().x() < width && mButtonGrid->getSize().x() < width) { // mMsg and buttons are narrower than width - width = std::max(mButtonGrid->getSize().x(), mMsg->getSize().x()); - width = std::max(width, minWidth); + width = Math::max(mButtonGrid->getSize().x(), mMsg->getSize().x()); + width = Math::max(width, minWidth); } // now that we know width, we can find height mMsg->setSize(width, 0); // mMsg->getSize.y() now returns the proper length - const float msgHeight = std::max(Font::get(FONT_SIZE_LARGE)->getHeight(), mMsg->getSize().y()*1.225f); + const float msgHeight = Math::max(Font::get(FONT_SIZE_LARGE)->getHeight(), mMsg->getSize().y()*1.225f); setSize(width + HORIZONTAL_PADDING_PX*2, msgHeight + mButtonGrid->getSize().y()); // center for good measure @@ -69,7 +66,7 @@ GuiMsgBox::GuiMsgBox(Window* window, const std::string& text, bool GuiMsgBox::input(InputConfig* config, Input input) { // special case for when GuiMsgBox comes up to report errors before anything has been configured - if(config->getDeviceId() == DEVICE_KEYBOARD && !config->isConfigured() && input.value && + if(config->getDeviceId() == DEVICE_KEYBOARD && !config->isConfigured() && input.value && (input.id == SDLK_RETURN || input.id == SDLK_ESCAPE || input.id == SDLK_SPACE)) { mAcceleratorFunc(); @@ -89,12 +86,12 @@ void GuiMsgBox::onSizeChanged() { mGrid.setSize(mSize); mGrid.setRowHeightPerc(1, mButtonGrid->getSize().y() / mSize.y()); - + // update messagebox size mMsg->setSize(mSize.x() - HORIZONTAL_PADDING_PX*2, mGrid.getRowHeight(0)); mGrid.onSizeChanged(); - mBackground.fitTo(mSize, Eigen::Vector3f::Zero(), Eigen::Vector2f(-32, -32)); + mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32, -32)); } void GuiMsgBox::deleteMeAndCall(const std::function& func) diff --git a/es-core/src/guis/GuiMsgBox.h b/es-core/src/guis/GuiMsgBox.h index 6da2469164..cd9883244b 100644 --- a/es-core/src/guis/GuiMsgBox.h +++ b/es-core/src/guis/GuiMsgBox.h @@ -1,18 +1,20 @@ #pragma once +#ifndef ES_CORE_GUIS_GUI_MSG_BOX_H +#define ES_CORE_GUIS_GUI_MSG_BOX_H -#include "GuiComponent.h" -#include "components/NinePatchComponent.h" #include "components/ComponentGrid.h" +#include "components/NinePatchComponent.h" +#include "GuiComponent.h" -class TextComponent; class ButtonComponent; +class TextComponent; class GuiMsgBox : public GuiComponent { public: - GuiMsgBox(Window* window, const std::string& text, + GuiMsgBox(Window* window, const std::string& text, const std::string& name1 = "OK", const std::function& func1 = nullptr, - const std::string& name2 = "", const std::function& func2 = nullptr, + const std::string& name2 = "", const std::function& func2 = nullptr, const std::string& name3 = "", const std::function& func3 = nullptr); bool input(InputConfig* config, Input input) override; @@ -31,3 +33,5 @@ class GuiMsgBox : public GuiComponent std::shared_ptr mButtonGrid; std::function mAcceleratorFunc; }; + +#endif // ES_CORE_GUIS_GUI_MSG_BOX_H diff --git a/es-core/src/guis/GuiTextEditPopup.cpp b/es-core/src/guis/GuiTextEditPopup.cpp index dcb4a47f74..4c14bddb47 100644 --- a/es-core/src/guis/GuiTextEditPopup.cpp +++ b/es-core/src/guis/GuiTextEditPopup.cpp @@ -1,16 +1,17 @@ #include "guis/GuiTextEditPopup.h" -#include "components/MenuComponent.h" -using namespace Eigen; +#include "components/ButtonComponent.h" +#include "components/MenuComponent.h" +#include "components/TextEditComponent.h" -GuiTextEditPopup::GuiTextEditPopup(Window* window, const std::string& title, const std::string& initValue, +GuiTextEditPopup::GuiTextEditPopup(Window* window, const std::string& title, const std::string& initValue, const std::function& okCallback, bool multiLine, const char* acceptBtnText) : GuiComponent(window), mBackground(window, ":/frame.png"), mGrid(window, Vector2i(1, 3)), mMultiLine(multiLine) { addChild(&mBackground); addChild(&mGrid); - mTitle = std::make_shared(mWindow, strToUpper(title), Font::get(FONT_SIZE_LARGE), 0x555555FF, ALIGN_CENTER); + mTitle = std::make_shared(mWindow, Utils::String::toUpper(title), Font::get(FONT_SIZE_LARGE), 0x555555FF, ALIGN_CENTER); mText = std::make_shared(mWindow); mText->setValue(initValue); @@ -39,7 +40,7 @@ GuiTextEditPopup::GuiTextEditPopup(Window* window, const std::string& title, con void GuiTextEditPopup::onSizeChanged() { - mBackground.fitTo(mSize, Eigen::Vector3f::Zero(), Eigen::Vector2f(-32, -32)); + mBackground.fitTo(mSize, Vector3f::Zero(), Vector2f(-32, -32)); mText->setSize(mSize.x() - 40, mText->getSize().y()); diff --git a/es-core/src/guis/GuiTextEditPopup.h b/es-core/src/guis/GuiTextEditPopup.h index 9cba8df3d8..59a95b9516 100644 --- a/es-core/src/guis/GuiTextEditPopup.h +++ b/es-core/src/guis/GuiTextEditPopup.h @@ -1,19 +1,22 @@ -#include "GuiComponent.h" +#pragma once +#ifndef ES_CORE_GUIS_GUI_TEXT_EDIT_POPUP_H +#define ES_CORE_GUIS_GUI_TEXT_EDIT_POPUP_H -#include "components/NinePatchComponent.h" -#include "components/ButtonComponent.h" #include "components/ComponentGrid.h" -#include "components/TextEditComponent.h" -#include "components/TextComponent.h" +#include "components/NinePatchComponent.h" +#include "GuiComponent.h" + +class TextComponent; +class TextEditComponent; class GuiTextEditPopup : public GuiComponent { public: - GuiTextEditPopup(Window* window, const std::string& title, const std::string& initValue, + GuiTextEditPopup(Window* window, const std::string& title, const std::string& initValue, const std::function& okCallback, bool multiLine, const char* acceptBtnText = "OK"); - bool input(InputConfig* config, Input input); - void onSizeChanged(); + bool input(InputConfig* config, Input input) override; + void onSizeChanged() override; std::vector getHelpPrompts() override; private: @@ -26,3 +29,5 @@ class GuiTextEditPopup : public GuiComponent bool mMultiLine; }; + +#endif // ES_CORE_GUIS_GUI_TEXT_EDIT_POPUP_H diff --git a/es-core/src/math/Misc.cpp b/es-core/src/math/Misc.cpp new file mode 100644 index 0000000000..ab0d23c789 --- /dev/null +++ b/es-core/src/math/Misc.cpp @@ -0,0 +1,179 @@ +#include "math/Misc.h" + +#include + +////////////////////////////////////////////////////////////////////////// + +namespace Math +{ + // added here to avoid including math.h whenever these are used + float cosf(const float _num) + { + return ::cosf(_num); + + } // cosf + +////////////////////////////////////////////////////////////////////////// + + float sinf(const float _num) + { + return ::sinf(_num); + + } // sinf + +////////////////////////////////////////////////////////////////////////// + + float floorf(const float _num) + { + return ::floorf(_num); + + } // floorf + +////////////////////////////////////////////////////////////////////////// + + float ceilf(const float _num) + { + return ::ceilf(_num); + + } // ceilf + +////////////////////////////////////////////////////////////////////////// + + int min(const int _num1, const int _num2) + { + return (_num1 < _num2) ? _num1 : _num2; + + } // min + +////////////////////////////////////////////////////////////////////////// + + int max(const int _num1, const int _num2) + { + return (_num1 > _num2) ? _num1 : _num2; + + } // max + +////////////////////////////////////////////////////////////////////////// + + int clamp(const int _min, const int _max, const int _num) + { + return max(min(_num, _max), _min); + + } // clamp + +////////////////////////////////////////////////////////////////////////// + + float min(const float _num1, const float _num2) + { + return (_num1 < _num2) ? _num1 : _num2; + + } // min + +////////////////////////////////////////////////////////////////////////// + + float max(const float _num1, const float _num2) + { + return (_num1 > _num2) ? _num1 : _num2; + + } // max + +////////////////////////////////////////////////////////////////////////// + + float clamp(const float _min, const float _max, const float _num) + { + return max(min(_num, _max), _min); + + } // clamp + +////////////////////////////////////////////////////////////////////////// + + float round(const float _num) + { + return floorf(_num + 0.5); + + } // round + +////////////////////////////////////////////////////////////////////////// + + float lerp(const float _start, const float _end, const float _fraction) + { + return (_start + ((_end - _start) * clamp(0.0f, 1.0f, _fraction))); + + } // lerp + +////////////////////////////////////////////////////////////////////////// + + float smoothStep(const float _left, const float _right, const float _x) + { + const float x = clamp(0.0f, 1.0f, (_x - _left)/(_right - _left)); + return x * x * (3 - (2 * x)); + + } // smoothStep + +////////////////////////////////////////////////////////////////////////// + + float smootherStep(const float _left, const float _right, const float _x) + { + const float x = clamp(0.0f, 1.0f, (_x - _left)/(_right - _left)); + return x * x * x * (x * ((x * 6) - 15) + 10); + + } // smootherStep + +////////////////////////////////////////////////////////////////////////// + + namespace Scroll + { + float bounce(const float _delayTime, const float _scrollTime, const float _currentTime, const float _scrollLength) + { + if(_currentTime < _delayTime) + { + // wait + return 0; + } + else if(_currentTime < (_delayTime + _scrollTime)) + { + // lerp from 0 to scrollLength + const float fraction = (_currentTime - _delayTime) / _scrollTime; + return lerp(0.0f, _scrollLength, smootherStep(0, 1, fraction)); + } + else if(_currentTime < (_delayTime + _scrollTime + _delayTime)) + { + // wait some more + return _scrollLength; + } + else if(_currentTime < (_delayTime + _scrollTime + _delayTime + _scrollTime)) + { + // lerp back from scrollLength to 0 + const float fraction = (_currentTime - _delayTime - _scrollTime - _delayTime) / _scrollTime; + return lerp(_scrollLength, 0.0f, smootherStep(0, 1, fraction)); + } + + // and back to waiting + return 0; + + } // bounce + +////////////////////////////////////////////////////////////////////////// + + float loop(const float _delayTime, const float _scrollTime, const float _currentTime, const float _scrollLength) + { + if(_currentTime < _delayTime) + { + // wait + return 0; + } + else if(_currentTime < (_delayTime + _scrollTime)) + { + // lerp from 0 to scrollLength + const float fraction = (_currentTime - _delayTime) / _scrollTime; + return lerp(0.0f, _scrollLength, fraction); + } + + // and back to waiting + return 0; + + } // loop + + } // Scroll:: + +} // Math:: diff --git a/es-core/src/math/Misc.h b/es-core/src/math/Misc.h new file mode 100644 index 0000000000..c37c55cc09 --- /dev/null +++ b/es-core/src/math/Misc.h @@ -0,0 +1,37 @@ +#pragma once +#ifndef ES_CORE_MATH_MISC_H +#define ES_CORE_MATH_MISC_H + +#define ES_PI (3.1415926535897932384626433832795028841971693993751058209749445923) +#define ES_RAD_TO_DEG(_x) ((_x) * (180.0 / ES_PI)) +#define ES_DEG_TO_RAD(_x) ((_x) * (ES_PI / 180.0)) + +namespace Math +{ + // added here to avoid including math.h whenever these are used + float cosf (const float _num); + float sinf (const float _num); + float floorf (const float _num); + float ceilf (const float _num); + + int min (const int _num1, const int _num2); + int max (const int _num1, const int _num2); + int clamp (const int _num, const int _min, const int _max); + float min (const float _num1, const float _num2); + float max (const float _num1, const float _num2); + float clamp (const float _num, const float _min, const float _max); + float round (const float _num); + float lerp (const float _start, const float _end, const float _fraction); + float smoothStep (const float _left, const float _right, const float _x); + float smootherStep(const float _left, const float _right, const float _x); + + namespace Scroll + { + float bounce(const float _delayTime, const float _scrollTime, const float _currentTime, const float _scrollLength); + float loop (const float _delayTime, const float _scrollTime, const float _currentTime, const float _scrollLength); + + } // Scroll:: + +} // Math:: + +#endif // ES_CORE_MATH_MISC_H diff --git a/es-core/src/math/Transform4x4f.cpp b/es-core/src/math/Transform4x4f.cpp new file mode 100644 index 0000000000..fc0336461c --- /dev/null +++ b/es-core/src/math/Transform4x4f.cpp @@ -0,0 +1,339 @@ +#include "math/Transform4x4f.h" + +////////////////////////////////////////////////////////////////////////// + +const Transform4x4f Transform4x4f::operator*(const Transform4x4f& _other) const +{ + const float* tm = (float*)this; + const float* om = (float*)&_other; + + return + { + { + tm[ 0] * om[ 0] + tm[ 4] * om[ 1] + tm[ 8] * om[ 2], + tm[ 1] * om[ 0] + tm[ 5] * om[ 1] + tm[ 9] * om[ 2], + tm[ 2] * om[ 0] + tm[ 6] * om[ 1] + tm[10] * om[ 2], + 0 + }, + { + tm[ 0] * om[ 4] + tm[ 4] * om[ 5] + tm[ 8] * om[ 6], + tm[ 1] * om[ 4] + tm[ 5] * om[ 5] + tm[ 9] * om[ 6], + tm[ 2] * om[ 4] + tm[ 6] * om[ 5] + tm[10] * om[ 6], + 0 + }, + { + tm[ 0] * om[ 8] + tm[ 4] * om[ 9] + tm[ 8] * om[10], + tm[ 1] * om[ 8] + tm[ 5] * om[ 9] + tm[ 9] * om[10], + tm[ 2] * om[ 8] + tm[ 6] * om[ 9] + tm[10] * om[10], + 0 + }, + { + tm[ 0] * om[12] + tm[ 4] * om[13] + tm[ 8] * om[14] + tm[12], + tm[ 1] * om[12] + tm[ 5] * om[13] + tm[ 9] * om[14] + tm[13], + tm[ 2] * om[12] + tm[ 6] * om[13] + tm[10] * om[14] + tm[14], + 1 + } + }; + +} // operator* + +////////////////////////////////////////////////////////////////////////// + +const Vector3f Transform4x4f::operator*(const Vector3f& _other) const +{ + const float* tm = (float*)this; + const float* ov = (float*)&_other; + + return + { + tm[ 0] * ov[0] + tm[ 4] * ov[1] + tm[ 8] * ov[2] + tm[12], + tm[ 1] * ov[0] + tm[ 5] * ov[1] + tm[ 9] * ov[2] + tm[13], + tm[ 2] * ov[0] + tm[ 6] * ov[1] + tm[10] * ov[2] + tm[14] + }; + +} // operator* + +////////////////////////////////////////////////////////////////////////// + +Transform4x4f& Transform4x4f::orthoProjection(float _left, float _right, float _bottom, float _top, float _near, float _far) +{ + float* tm = (float*)this; + const float o[6] = { 2 / (_right - _left), + 2 / (_top - _bottom), + -2 / (_far - _near), + -(_right + _left) / (_right - _left), + -(_top + _bottom) / (_top - _bottom), + -(_far + _near) / (_far - _near) }; + const float temp[12] = { tm[ 0] * o[0], + tm[ 1] * o[0], + tm[ 2] * o[0], + tm[ 4] * o[1], + tm[ 5] * o[1], + tm[ 6] * o[1], + tm[ 8] * o[2], + tm[ 9] * o[2], + tm[10] * o[2], + tm[ 0] * o[3] + tm[ 4] * o[4] + tm[ 8] * o[5] + tm[12], + tm[ 1] * o[3] + tm[ 5] * o[4] + tm[ 9] * o[5] + tm[13], + tm[ 2] * o[3] + tm[ 6] * o[4] + tm[10] * o[5] + tm[14] }; + + tm[ 0] = temp[ 0]; + tm[ 1] = temp[ 1]; + tm[ 2] = temp[ 2]; + tm[ 4] = temp[ 3]; + tm[ 5] = temp[ 4]; + tm[ 6] = temp[ 5]; + tm[ 8] = temp[ 6]; + tm[ 9] = temp[ 7]; + tm[10] = temp[ 8]; + tm[12] = temp[ 9]; + tm[13] = temp[10]; + tm[14] = temp[11]; + + return *this; + +} // orthoProjection + +////////////////////////////////////////////////////////////////////////// + +Transform4x4f& Transform4x4f::invert(const Transform4x4f& _other) +{ + float* tm = (float*)this; + const float* om = (float*)&_other; + + // Full invert + // tm[ 0] = ((om[ 5] * (om[10] * om[15] - om[11] * om[14])) - (om[ 9] * (om[ 6] * om[15] - om[ 7] * om[14])) + (om[13] * (om[ 6] * om[11] - om[ 7] * om[10]))); + // tm[ 1] = -((om[ 1] * (om[10] * om[15] - om[11] * om[14])) - (om[ 9] * (om[ 2] * om[15] - om[ 3] * om[14])) + (om[13] * (om[ 2] * om[11] - om[ 3] * om[10]))); + // tm[ 2] = ((om[ 1] * (om[ 6] * om[15] - om[ 7] * om[14])) - (om[ 5] * (om[ 2] * om[15] - om[ 3] * om[14])) + (om[13] * (om[ 2] * om[ 7] - om[ 3] * om[ 6]))); + // tm[ 3] = -((om[ 1] * (om[ 6] * om[11] - om[ 7] * om[10])) - (om[ 5] * (om[ 2] * om[11] - om[ 3] * om[10])) + (om[ 9] * (om[ 2] * om[ 7] - om[ 3] * om[ 6]))); + // tm[ 4] = -((om[ 4] * (om[10] * om[15] - om[11] * om[14])) - (om[ 8] * (om[ 6] * om[15] - om[ 7] * om[14])) + (om[12] * (om[ 6] * om[11] - om[ 7] * om[10]))); + // tm[ 5] = ((om[ 0] * (om[10] * om[15] - om[11] * om[14])) - (om[ 8] * (om[ 2] * om[15] - om[ 3] * om[14])) + (om[12] * (om[ 2] * om[11] - om[ 3] * om[10]))); + // tm[ 6] = -((om[ 0] * (om[ 6] * om[15] - om[ 7] * om[14])) - (om[ 4] * (om[ 2] * om[15] - om[ 3] * om[14])) + (om[12] * (om[ 2] * om[ 7] - om[ 3] * om[ 6]))); + // tm[ 7] = ((om[ 0] * (om[ 6] * om[11] - om[ 7] * om[10])) - (om[ 4] * (om[ 2] * om[11] - om[ 3] * om[10])) + (om[ 8] * (om[ 2] * om[ 7] - om[ 3] * om[ 6]))); + // tm[ 8] = ((om[ 4] * (om[ 9] * om[15] - om[11] * om[13])) - (om[ 8] * (om[ 5] * om[15] - om[ 7] * om[13])) + (om[12] * (om[ 5] * om[11] - om[ 7] * om[ 9]))); + // tm[ 9] = -((om[ 0] * (om[ 9] * om[15] - om[11] * om[13])) - (om[ 8] * (om[ 1] * om[15] - om[ 3] * om[13])) + (om[12] * (om[ 1] * om[11] - om[ 3] * om[ 9]))); + // tm[10] = ((om[ 0] * (om[ 5] * om[15] - om[ 7] * om[13])) - (om[ 4] * (om[ 1] * om[15] - om[ 3] * om[13])) + (om[12] * (om[ 1] * om[ 7] - om[ 3] * om[ 5]))); + // tm[11] = -((om[ 0] * (om[ 5] * om[11] - om[ 7] * om[ 9])) - (om[ 4] * (om[ 1] * om[11] - om[ 3] * om[ 9])) + (om[ 8] * (om[ 1] * om[ 7] - om[ 3] * om[ 5]))); + // tm[12] = -((om[ 4] * (om[ 9] * om[14] - om[10] * om[13])) - (om[ 8] * (om[ 5] * om[14] - om[ 6] * om[13])) + (om[12] * (om[ 5] * om[10] - om[ 6] * om[ 9]))); + // tm[13] = ((om[ 0] * (om[ 9] * om[14] - om[10] * om[13])) - (om[ 8] * (om[ 1] * om[14] - om[ 2] * om[13])) + (om[12] * (om[ 1] * om[10] - om[ 2] * om[ 9]))); + // tm[14] = -((om[ 0] * (om[ 5] * om[14] - om[ 6] * om[13])) - (om[ 4] * (om[ 1] * om[14] - om[ 2] * om[13])) + (om[12] * (om[ 1] * om[ 6] - om[ 2] * om[ 5]))); + // tm[15] = ((om[ 0] * (om[ 5] * om[10] - om[ 6] * om[ 9])) - (om[ 4] * (om[ 1] * om[10] - om[ 2] * om[ 9])) + (om[ 8] * (om[ 1] * om[ 6] - om[ 2] * om[ 5]))); + + // Optimized invert ( om[3, 7 and 11] is always 0, and om[15] is always 1 ) + tm[ 0] = ((om[ 5] * om[10]) - (om[ 9] * om[ 6])); + tm[ 1] = -((om[ 1] * om[10]) - (om[ 9] * om[ 2])); + tm[ 2] = ((om[ 1] * om[ 6]) - (om[ 5] * om[ 2])); + tm[ 3] = 0; + tm[ 4] = -((om[ 4] * om[10]) - (om[ 8] * om[ 6])); + tm[ 5] = ((om[ 0] * om[10]) - (om[ 8] * om[ 2])); + tm[ 6] = -((om[ 0] * om[ 6]) - (om[ 4] * om[ 2])); + tm[ 7] = 0; + tm[ 8] = ((om[ 4] * om[ 9]) - (om[ 8] * om[ 5])); + tm[ 9] = -((om[ 0] * om[ 9]) - (om[ 8] * om[ 1])); + tm[10] = ((om[ 0] * om[ 5]) - (om[ 4] * om[ 1])); + tm[11] = 0; + tm[12] = -((om[ 4] * (om[ 9] * om[14] - om[10] * om[13])) - (om[ 8] * (om[ 5] * om[14] - om[ 6] * om[13])) + (om[12] * (om[ 5] * om[10] - om[ 6] * om[ 9]))); + tm[13] = ((om[ 0] * (om[ 9] * om[14] - om[10] * om[13])) - (om[ 8] * (om[ 1] * om[14] - om[ 2] * om[13])) + (om[12] * (om[ 1] * om[10] - om[ 2] * om[ 9]))); + tm[14] = -((om[ 0] * (om[ 5] * om[14] - om[ 6] * om[13])) - (om[ 4] * (om[ 1] * om[14] - om[ 2] * om[13])) + (om[12] * (om[ 1] * om[ 6] - om[ 2] * om[ 5]))); + tm[15] = 1; + + float Determinant = om[ 0] * tm[ 0] + + om[ 4] * tm[ 1] + + om[ 8] * tm[ 2] + + om[12] * tm[ 3]; + + if(Determinant != 0) + Determinant = 1 / Determinant; + + tm[ 0] *= Determinant; + tm[ 1] *= Determinant; + tm[ 2] *= Determinant; + tm[ 4] *= Determinant; + tm[ 5] *= Determinant; + tm[ 6] *= Determinant; + tm[ 8] *= Determinant; + tm[ 9] *= Determinant; + tm[10] *= Determinant; + tm[12] *= Determinant; + tm[13] *= Determinant; + tm[14] *= Determinant; + + return *this; + +} // invert + +////////////////////////////////////////////////////////////////////////// + +Transform4x4f& Transform4x4f::scale(const Vector3f& _scale) +{ + float* tm = (float*)this; + const float* sv = (float*)&_scale; + + tm[ 0] *= sv[0]; + tm[ 1] *= sv[0]; + tm[ 2] *= sv[0]; + tm[ 4] *= sv[1]; + tm[ 5] *= sv[1]; + tm[ 6] *= sv[1]; + tm[ 8] *= sv[2]; + tm[ 9] *= sv[2]; + tm[10] *= sv[2]; + + return *this; + +} // scale + +////////////////////////////////////////////////////////////////////////// + +Transform4x4f& Transform4x4f::rotate(const float _angle, const Vector3f& _axis) +{ + float* tm = (float*)this; + const float* av = (float*)&_axis; + const float s = Math::sinf(-_angle); + const float c = Math::cosf(-_angle); + const float t = 1 - c; + const float x = av[0]; + const float y = av[1]; + const float z = av[2]; + const float tx = t * x; + const float ty = t * y; + const float tz = t * z; + const float sx = s * x; + const float sy = s * y; + const float sz = s * z; + const float r[9] = { tx * x + c, + tx * y - sz, + tx * z + sy, + ty * x + sz, + ty * y + c, + ty * z - sx, + tz * x - sy, + tz * y + sx, + tz * z + c }; + const float temp[9] = { tm[ 0] * r[0] + tm[ 4] * r[1] + tm[ 8] * r[2], + tm[ 1] * r[0] + tm[ 5] * r[1] + tm[ 9] * r[2], + tm[ 2] * r[0] + tm[ 6] * r[1] + tm[10] * r[2], + tm[ 0] * r[3] + tm[ 4] * r[4] + tm[ 8] * r[5], + tm[ 1] * r[3] + tm[ 5] * r[4] + tm[ 9] * r[5], + tm[ 2] * r[3] + tm[ 6] * r[4] + tm[ 0] * r[5], + tm[ 0] * r[6] + tm[ 4] * r[7] + tm[ 8] * r[8], + tm[ 1] * r[6] + tm[ 5] * r[7] + tm[ 9] * r[8], + tm[ 2] * r[6] + tm[ 6] * r[7] + tm[10] * r[8] }; + + tm[ 0] = temp[0]; + tm[ 1] = temp[1]; + tm[ 2] = temp[2]; + tm[ 4] = temp[3]; + tm[ 5] = temp[4]; + tm[ 6] = temp[5]; + tm[ 8] = temp[6]; + tm[ 9] = temp[7]; + tm[10] = temp[8]; + + return *this; + +}; // rotate + +////////////////////////////////////////////////////////////////////////// + +Transform4x4f& Transform4x4f::rotateX(const float _angle) +{ + float* tm = (float*)this; + const float s = Math::sinf(-_angle); + const float c = Math::cosf(-_angle); + const float temp[6] = { tm[ 4] * c + tm[ 8] * -s, + tm[ 5] * c + tm[ 9] * -c, + tm[ 6] * c + tm[10] * -s, + tm[ 4] * s + tm[ 8] * c, + tm[ 5] * s + tm[ 9] * c, + tm[ 6] * s + tm[10] * c }; + + tm[ 4] = temp[0]; + tm[ 5] = temp[1]; + tm[ 6] = temp[2]; + tm[ 8] = temp[3]; + tm[ 9] = temp[4]; + tm[10] = temp[5]; + + return *this; + +}; // rotateX + +////////////////////////////////////////////////////////////////////////// + +Transform4x4f& Transform4x4f::rotateY(const float _angle) +{ + float* tm = (float*)this; + const float s = Math::sinf(-_angle); + const float c = Math::cosf(-_angle); + const float temp[6] = { tm[ 0] * c + tm[ 8] * s, + tm[ 1] * c + tm[ 9] * s, + tm[ 2] * c + tm[10] * s, + tm[ 0] * -s + tm[ 8] * c, + tm[ 1] * -s + tm[ 9] * c, + tm[ 2] * -s + tm[10] * c }; + + tm[ 0] = temp[0]; + tm[ 1] = temp[1]; + tm[ 2] = temp[2]; + tm[ 8] = temp[3]; + tm[ 9] = temp[4]; + tm[10] = temp[5]; + + return *this; + +}; // rotateY + +////////////////////////////////////////////////////////////////////////// + +Transform4x4f& Transform4x4f::rotateZ(const float _angle) +{ + float* tm = (float*)this; + const float s = Math::sinf(-_angle); + const float c = Math::cosf(-_angle); + const float temp[6] = { tm[ 0] * c + tm[ 4] * -s, + tm[ 1] * c + tm[ 5] * -s, + tm[ 2] * c + tm[ 6] * -s, + tm[ 0] * s + tm[ 4] * c, + tm[ 1] * s + tm[ 5] * c, + tm[ 2] * s + tm[ 6] * c }; + + tm[ 0] = temp[0]; + tm[ 1] = temp[1]; + tm[ 2] = temp[2]; + tm[ 4] = temp[3]; + tm[ 5] = temp[4]; + tm[ 6] = temp[5]; + + return *this; + +}; // rotateZ + +////////////////////////////////////////////////////////////////////////// + +Transform4x4f& Transform4x4f::translate(const Vector3f& _translation) +{ + float* tm = (float*)this; + const float* tv = (float*)&_translation; + + tm[12] += tm[ 0] * tv[0] + tm[ 4] * tv[1] + tm[ 8] * tv[2]; + tm[13] += tm[ 1] * tv[0] + tm[ 5] * tv[1] + tm[ 9] * tv[2]; + tm[14] += tm[ 2] * tv[0] + tm[ 6] * tv[1] + tm[10] * tv[2]; + + return *this; + +} // translate + +////////////////////////////////////////////////////////////////////////// + +Transform4x4f& Transform4x4f::round() +{ + float* tm = (float*)this; + + tm[12] = Math::round(tm[12]); + tm[13] = Math::round(tm[13]); + tm[14] = Math::round(tm[14]); + + return *this; + +} // round diff --git a/es-core/src/math/Transform4x4f.h b/es-core/src/math/Transform4x4f.h new file mode 100644 index 0000000000..0f70a94baf --- /dev/null +++ b/es-core/src/math/Transform4x4f.h @@ -0,0 +1,52 @@ +#pragma once +#ifndef ES_CORE_MATH_TRANSFORM4X4F_H +#define ES_CORE_MATH_TRANSFORM4X4F_H + +#include "math/Vector4f.h" +#include "math/Vector3f.h" + +class Transform4x4f +{ +public: + + Transform4x4f() { } + Transform4x4f(const Vector4f& _r0, const Vector4f& _r1, const Vector4f& _r2, const Vector4f& _r3) : mR0(_r0), mR1(_r1), mR2(_r2), mR3(_r3) { } + + const Transform4x4f operator* (const Transform4x4f& _other) const; + const Vector3f operator* (const Vector3f& _other) const; + Transform4x4f& operator*=(const Transform4x4f& _other) { *this = *this * _other; return *this; } + + inline Vector4f& r0() { return mR0; } + inline Vector4f& r1() { return mR1; } + inline Vector4f& r2() { return mR2; } + inline Vector4f& r3() { return mR3; } + inline const Vector4f& r0() const { return mR0; } + inline const Vector4f& r1() const { return mR1; } + inline const Vector4f& r2() const { return mR2; } + inline const Vector4f& r3() const { return mR3; } + + Transform4x4f& orthoProjection(float _left, float _right, float _bottom, float _top, float _near, float _far); + Transform4x4f& invert (const Transform4x4f& _other); + Transform4x4f& scale (const Vector3f& _scale); + Transform4x4f& rotate (const float _angle, const Vector3f& _axis); + Transform4x4f& rotateX (const float _angle); + Transform4x4f& rotateY (const float _angle); + Transform4x4f& rotateZ (const float _angle); + Transform4x4f& translate (const Vector3f& _translation); + Transform4x4f& round (); + + inline Vector3f& translation() { return mR3.v3(); } + inline const Vector3f& translation() const { return mR3.v3(); } + + static const Transform4x4f Identity() { return { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } }; } + +protected: + + Vector4f mR0; + Vector4f mR1; + Vector4f mR2; + Vector4f mR3; + +}; // Transform4x4f + +#endif // ES_CORE_MATH_TRANSFORM4X4F_H diff --git a/es-core/src/math/Vector2f.cpp b/es-core/src/math/Vector2f.cpp new file mode 100644 index 0000000000..af097d4d3e --- /dev/null +++ b/es-core/src/math/Vector2f.cpp @@ -0,0 +1,23 @@ +#include "math/Vector2f.h" + +////////////////////////////////////////////////////////////////////////// + +Vector2f& Vector2f::round() +{ + mX = Math::round(mX); + mY = Math::round(mY); + + return *this; + +} // round + +////////////////////////////////////////////////////////////////////////// + +Vector2f& Vector2f::lerp(const Vector2f& _start, const Vector2f& _end, const float _fraction) +{ + mX = Math::lerp(_start.x(), _end.x(), _fraction); + mY = Math::lerp(_start.y(), _end.y(), _fraction); + + return *this; + +} // lerp diff --git a/es-core/src/math/Vector2f.h b/es-core/src/math/Vector2f.h new file mode 100644 index 0000000000..b9c91fda08 --- /dev/null +++ b/es-core/src/math/Vector2f.h @@ -0,0 +1,68 @@ +#pragma once +#ifndef ES_CORE_MATH_VECTOR2F_H +#define ES_CORE_MATH_VECTOR2F_H + +#include "math/Misc.h" +#include + +class Vector3f; +class Vector4f; + +class Vector2f +{ +public: + + Vector2f() { } + Vector2f(const float _f) : mX(_f), mY(_f) { } + Vector2f(const float _x, const float _y) : mX(_x), mY(_y) { } + explicit Vector2f(const Vector3f& _v) : mX(((Vector2f&)_v).mX), mY(((Vector2f&)_v).mY) { } + explicit Vector2f(const Vector4f& _v) : mX(((Vector2f&)_v).mX), mY(((Vector2f&)_v).mY) { } + + const bool operator==(const Vector2f& _other) const { return ((mX == _other.mX) && (mY == _other.mY)); } + const bool operator!=(const Vector2f& _other) const { return ((mX != _other.mX) || (mY != _other.mY)); } + + const Vector2f operator+ (const Vector2f& _other) const { return { mX + _other.mX, mY + _other.mY }; } + const Vector2f operator- (const Vector2f& _other) const { return { mX - _other.mX, mY - _other.mY }; } + const Vector2f operator* (const Vector2f& _other) const { return { mX * _other.mX, mY * _other.mY }; } + const Vector2f operator/ (const Vector2f& _other) const { return { mX / _other.mX, mY / _other.mY }; } + + const Vector2f operator+ (const float& _other) const { return { mX + _other, mY + _other }; } + const Vector2f operator- (const float& _other) const { return { mX - _other, mY - _other }; } + const Vector2f operator* (const float& _other) const { return { mX * _other, mY * _other }; } + const Vector2f operator/ (const float& _other) const { return { mX / _other, mY / _other }; } + + const Vector2f operator- () const { return { -mX , -mY }; } + + Vector2f& operator+=(const Vector2f& _other) { *this = *this + _other; return *this; } + Vector2f& operator-=(const Vector2f& _other) { *this = *this - _other; return *this; } + Vector2f& operator*=(const Vector2f& _other) { *this = *this * _other; return *this; } + Vector2f& operator/=(const Vector2f& _other) { *this = *this / _other; return *this; } + + Vector2f& operator+=(const float& _other) { *this = *this + _other; return *this; } + Vector2f& operator-=(const float& _other) { *this = *this - _other; return *this; } + Vector2f& operator*=(const float& _other) { *this = *this * _other; return *this; } + Vector2f& operator/=(const float& _other) { *this = *this / _other; return *this; } + + float& operator[](const int _index) { assert(_index < 2 && "index out of range"); return (&mX)[_index]; } + const float& operator[](const int _index) const { assert(_index < 2 && "index out of range"); return (&mX)[_index]; } + + inline float& x() { return mX; } + inline float& y() { return mY; } + inline const float& x() const { return mX; } + inline const float& y() const { return mY; } + + Vector2f& round(); + Vector2f& lerp (const Vector2f& _start, const Vector2f& _end, const float _fraction); + + static const Vector2f Zero () { return { 0, 0 }; } + static const Vector2f UnitX() { return { 1, 0 }; } + static const Vector2f UnitY() { return { 0, 1 }; } + +private: + + float mX; + float mY; + +}; // Vector2f + +#endif // ES_CORE_MATH_VECTOR2F_H diff --git a/es-core/src/math/Vector2i.cpp b/es-core/src/math/Vector2i.cpp new file mode 100644 index 0000000000..dba964de6b --- /dev/null +++ b/es-core/src/math/Vector2i.cpp @@ -0,0 +1 @@ +#include "math/Vector2i.h" diff --git a/es-core/src/math/Vector2i.h b/es-core/src/math/Vector2i.h new file mode 100644 index 0000000000..0c91a11552 --- /dev/null +++ b/es-core/src/math/Vector2i.h @@ -0,0 +1,59 @@ +#pragma once +#ifndef ES_CORE_MATH_VECTOR2I_H +#define ES_CORE_MATH_VECTOR2I_H + +#include + +class Vector2i +{ +public: + + Vector2i() { } + Vector2i(const int _i) : mX(_i), mY(_i) { } + Vector2i(const int _x, const int _y) : mX(_x), mY(_y) { } + + const bool operator==(const Vector2i& _other) const { return ((mX == _other.mX) && (mY == _other.mY)); } + const bool operator!=(const Vector2i& _other) const { return ((mX != _other.mX) || (mY != _other.mY)); } + + const Vector2i operator+ (const Vector2i& _other) const { return { mX + _other.mX, mY + _other.mY }; } + const Vector2i operator- (const Vector2i& _other) const { return { mX - _other.mX, mY - _other.mY }; } + const Vector2i operator* (const Vector2i& _other) const { return { mX * _other.mX, mY * _other.mY }; } + const Vector2i operator/ (const Vector2i& _other) const { return { mX / _other.mX, mY / _other.mY }; } + + const Vector2i operator+ (const int& _other) const { return { mX + _other, mY + _other }; } + const Vector2i operator- (const int& _other) const { return { mX - _other, mY - _other }; } + const Vector2i operator* (const int& _other) const { return { mX * _other, mY * _other }; } + const Vector2i operator/ (const int& _other) const { return { mX / _other, mY / _other }; } + + const Vector2i operator- () const { return { -mX , -mY }; } + + Vector2i& operator+=(const Vector2i& _other) { *this = *this + _other; return *this; } + Vector2i& operator-=(const Vector2i& _other) { *this = *this - _other; return *this; } + Vector2i& operator*=(const Vector2i& _other) { *this = *this * _other; return *this; } + Vector2i& operator/=(const Vector2i& _other) { *this = *this / _other; return *this; } + + Vector2i& operator+=(const int& _other) { *this = *this + _other; return *this; } + Vector2i& operator-=(const int& _other) { *this = *this - _other; return *this; } + Vector2i& operator*=(const int& _other) { *this = *this * _other; return *this; } + Vector2i& operator/=(const int& _other) { *this = *this / _other; return *this; } + + int& operator[](const int _index) { assert(_index < 2 && "index out of range"); return (&mX)[_index]; } + const int& operator[](const int _index) const { assert(_index < 2 && "index out of range"); return (&mX)[_index]; } + + inline int& x() { return mX; } + inline int& y() { return mY; } + inline const int& x() const { return mX; } + inline const int& y() const { return mY; } + + static const Vector2i Zero () { return { 0, 0 }; } + static const Vector2i UnitX() { return { 1, 0 }; } + static const Vector2i UnitY() { return { 0, 1 }; } + +private: + + int mX; + int mY; + +}; // Vector2i + +#endif // ES_CORE_MATH_VECTOR2I_H diff --git a/es-core/src/math/Vector3f.cpp b/es-core/src/math/Vector3f.cpp new file mode 100644 index 0000000000..a3335dab21 --- /dev/null +++ b/es-core/src/math/Vector3f.cpp @@ -0,0 +1,25 @@ +#include "math/Vector3f.h" + +////////////////////////////////////////////////////////////////////////// + +Vector3f& Vector3f::round() +{ + mX = Math::round(mX); + mY = Math::round(mY); + mZ = Math::round(mZ); + + return *this; + +} // round + +////////////////////////////////////////////////////////////////////////// + +Vector3f& Vector3f::lerp(const Vector3f& _start, const Vector3f& _end, const float _fraction) +{ + mX = Math::lerp(_start.x(), _end.x(), _fraction); + mY = Math::lerp(_start.y(), _end.y(), _fraction); + mZ = Math::lerp(_start.z(), _end.z(), _fraction); + + return *this; + +} // lerp diff --git a/es-core/src/math/Vector3f.h b/es-core/src/math/Vector3f.h new file mode 100644 index 0000000000..8126e70d2a --- /dev/null +++ b/es-core/src/math/Vector3f.h @@ -0,0 +1,76 @@ +#pragma once +#ifndef ES_CORE_MATH_VECTOR3F_H +#define ES_CORE_MATH_VECTOR3F_H + +#include "math/Misc.h" +#include + +class Vector2f; +class Vector4f; + +class Vector3f +{ +public: + + Vector3f() { } + Vector3f(const float _f) : mX(_f), mY(_f), mZ(_f) { } + Vector3f(const float _x, const float _y, const float _z) : mX(_x), mY(_y), mZ(_z) { } + explicit Vector3f(const Vector2f& _v) : mX(((Vector3f&)_v).mX), mY(((Vector3f&)_v).mY), mZ(0) { } + explicit Vector3f(const Vector2f& _v, const float _z) : mX(((Vector3f&)_v).mX), mY(((Vector3f&)_v).mY), mZ(_z) { } + explicit Vector3f(const Vector4f& _v) : mX(((Vector3f&)_v).mX), mY(((Vector3f&)_v).mY), mZ(((Vector3f&)_v).mZ) { } + + const bool operator==(const Vector3f& _other) const { return ((mX == _other.mX) && (mY == _other.mY) && (mZ == _other.mZ)); } + const bool operator!=(const Vector3f& _other) const { return ((mX != _other.mX) || (mY != _other.mY) || (mZ != _other.mZ)); } + + const Vector3f operator+ (const Vector3f& _other) const { return { mX + _other.mX, mY + _other.mY, mZ + _other.mZ }; } + const Vector3f operator- (const Vector3f& _other) const { return { mX - _other.mX, mY - _other.mY, mZ - _other.mZ }; } + const Vector3f operator* (const Vector3f& _other) const { return { mX * _other.mX, mY * _other.mY, mZ * _other.mZ }; } + const Vector3f operator/ (const Vector3f& _other) const { return { mX / _other.mX, mY / _other.mY, mZ / _other.mZ }; } + + const Vector3f operator+ (const float& _other) const { return { mX + _other, mY + _other, mZ + _other }; } + const Vector3f operator- (const float& _other) const { return { mX - _other, mY - _other, mZ - _other }; } + const Vector3f operator* (const float& _other) const { return { mX * _other, mY * _other, mZ * _other }; } + const Vector3f operator/ (const float& _other) const { return { mX / _other, mY / _other, mZ / _other }; } + + const Vector3f operator- () const { return { -mX , -mY, -mZ }; } + + Vector3f& operator+=(const Vector3f& _other) { *this = *this + _other; return *this; } + Vector3f& operator-=(const Vector3f& _other) { *this = *this - _other; return *this; } + Vector3f& operator*=(const Vector3f& _other) { *this = *this * _other; return *this; } + Vector3f& operator/=(const Vector3f& _other) { *this = *this / _other; return *this; } + + Vector3f& operator+=(const float& _other) { *this = *this + _other; return *this; } + Vector3f& operator-=(const float& _other) { *this = *this - _other; return *this; } + Vector3f& operator*=(const float& _other) { *this = *this * _other; return *this; } + Vector3f& operator/=(const float& _other) { *this = *this / _other; return *this; } + + float& operator[](const int _index) { assert(_index < 3 && "index out of range"); return (&mX)[_index]; } + const float& operator[](const int _index) const { assert(_index < 3 && "index out of range"); return (&mX)[_index]; } + + inline float& x() { return mX; } + inline float& y() { return mY; } + inline float& z() { return mZ; } + inline const float& x() const { return mX; } + inline const float& y() const { return mY; } + inline const float& z() const { return mZ; } + + inline Vector2f& v2() { return *(Vector2f*)this; } + inline const Vector2f& v2() const { return *(Vector2f*)this; } + + Vector3f& round(); + Vector3f& lerp (const Vector3f& _start, const Vector3f& _end, const float _fraction); + + static const Vector3f Zero () { return { 0, 0, 0 }; } + static const Vector3f UnitX() { return { 1, 0, 0 }; } + static const Vector3f UnitY() { return { 0, 1, 0 }; } + static const Vector3f UnitZ() { return { 0, 0, 1 }; } + +private: + + float mX; + float mY; + float mZ; + +}; // Vector3f + +#endif // ES_CORE_MATH_VECTOR3F_H diff --git a/es-core/src/math/Vector4f.cpp b/es-core/src/math/Vector4f.cpp new file mode 100644 index 0000000000..ce5d51017e --- /dev/null +++ b/es-core/src/math/Vector4f.cpp @@ -0,0 +1,27 @@ +#include "math/Vector4f.h" + +////////////////////////////////////////////////////////////////////////// + +Vector4f& Vector4f::round() +{ + mX = Math::round(mX); + mY = Math::round(mY); + mZ = Math::round(mZ); + mW = Math::round(mW); + + return *this; + +} // round + +////////////////////////////////////////////////////////////////////////// + +Vector4f& Vector4f::lerp(const Vector4f& _start, const Vector4f& _end, const float _fraction) +{ + mX = Math::lerp(_start.x(), _end.x(), _fraction); + mY = Math::lerp(_start.y(), _end.y(), _fraction); + mZ = Math::lerp(_start.z(), _end.z(), _fraction); + mW = Math::lerp(_start.w(), _end.w(), _fraction); + + return *this; + +} // lerp diff --git a/es-core/src/math/Vector4f.h b/es-core/src/math/Vector4f.h new file mode 100644 index 0000000000..1776c80fe1 --- /dev/null +++ b/es-core/src/math/Vector4f.h @@ -0,0 +1,85 @@ +#pragma once +#ifndef ES_CORE_MATH_VECTOR4F_H +#define ES_CORE_MATH_VECTOR4F_H + +#include "math/Misc.h" +#include + +class Vector2f; +class Vector3f; + +class Vector4f +{ +public: + + Vector4f() { } + Vector4f(const float _f) : mX(_f), mY(_f), mZ(_f), mW(_f) { } + Vector4f(const float _x, const float _y, const float _z, const float _w) : mX(_x), mY(_y), mZ(_z), mW(_w) { } + explicit Vector4f(const Vector2f& _v) : mX(((Vector4f&)_v).mX), mY(((Vector4f&)_v).mY), mZ(0), mW(0) { } + explicit Vector4f(const Vector2f& _v, const float _z) : mX(((Vector4f&)_v).mX), mY(((Vector4f&)_v).mY), mZ(_z), mW(0) { } + explicit Vector4f(const Vector2f& _v, const float _z, const float _w) : mX(((Vector4f&)_v).mX), mY(((Vector4f&)_v).mY), mZ(_z), mW(_w) { } + explicit Vector4f(const Vector3f& _v) : mX(((Vector4f&)_v).mX), mY(((Vector4f&)_v).mY), mZ(((Vector4f&)_v).mZ), mW(0) { } + explicit Vector4f(const Vector3f& _v, const float _w) : mX(((Vector4f&)_v).mX), mY(((Vector4f&)_v).mY), mZ(((Vector4f&)_v).mZ), mW(_w) { } + + const bool operator==(const Vector4f& _other) const { return ((mX == _other.mX) && (mY == _other.mY) && (mZ == _other.mZ) && (mW == _other.mW)); } + const bool operator!=(const Vector4f& _other) const { return ((mX != _other.mX) || (mY != _other.mY) || (mZ != _other.mZ) || (mW != _other.mW)); } + + const Vector4f operator+ (const Vector4f& _other) const { return { mX + _other.mX, mY + _other.mY, mZ + _other.mZ, mW + _other.mW }; } + const Vector4f operator- (const Vector4f& _other) const { return { mX - _other.mX, mY - _other.mY, mZ - _other.mZ, mW - _other.mW }; } + const Vector4f operator* (const Vector4f& _other) const { return { mX * _other.mX, mY * _other.mY, mZ * _other.mZ, mW * _other.mW }; } + const Vector4f operator/ (const Vector4f& _other) const { return { mX / _other.mX, mY / _other.mY, mZ / _other.mZ, mW / _other.mW }; } + + const Vector4f operator+ (const float& _other) const { return { mX + _other, mY + _other, mZ + _other, mW + _other }; } + const Vector4f operator- (const float& _other) const { return { mX - _other, mY - _other, mZ - _other, mW - _other }; } + const Vector4f operator* (const float& _other) const { return { mX * _other, mY * _other, mZ * _other, mW * _other }; } + const Vector4f operator/ (const float& _other) const { return { mX / _other, mY / _other, mZ / _other, mW / _other }; } + + const Vector4f operator- () const { return {-mX , -mY, -mZ, -mW }; } + + Vector4f& operator+=(const Vector4f& _other) { *this = *this + _other; return *this; } + Vector4f& operator-=(const Vector4f& _other) { *this = *this - _other; return *this; } + Vector4f& operator*=(const Vector4f& _other) { *this = *this * _other; return *this; } + Vector4f& operator/=(const Vector4f& _other) { *this = *this / _other; return *this; } + + Vector4f& operator+=(const float& _other) { *this = *this + _other; return *this; } + Vector4f& operator-=(const float& _other) { *this = *this - _other; return *this; } + Vector4f& operator*=(const float& _other) { *this = *this * _other; return *this; } + Vector4f& operator/=(const float& _other) { *this = *this / _other; return *this; } + + float& operator[](const int _index) { assert(_index < 4 && "index out of range"); return (&mX)[_index]; } + const float& operator[](const int _index) const { assert(_index < 4 && "index out of range"); return (&mX)[_index]; } + + inline float& x() { return mX; } + inline float& y() { return mY; } + inline float& z() { return mZ; } + inline float& w() { return mW; } + inline const float& x() const { return mX; } + inline const float& y() const { return mY; } + inline const float& z() const { return mZ; } + inline const float& w() const { return mW; } + + inline Vector2f& v2() { return *(Vector2f*)this; } + inline const Vector2f& v2() const { return *(Vector2f*)this; } + + inline Vector3f& v3() { return *(Vector3f*)this; } + inline const Vector3f& v3() const { return *(Vector3f*)this; } + + Vector4f& round(); + Vector4f& lerp (const Vector4f& _start, const Vector4f& _end, const float _fraction); + + static const Vector4f Zero () { return { 0, 0, 0, 0 }; } + static const Vector4f UnitX() { return { 1, 0, 0, 0 }; } + static const Vector4f UnitY() { return { 0, 1, 0, 0 }; } + static const Vector4f UnitZ() { return { 0, 0, 1, 0 }; } + static const Vector4f UnitW() { return { 0, 0, 0, 1 }; } + +private: + + float mX; + float mY; + float mZ; + float mW; + +}; // Vector4f + +#endif // ES_CORE_MATH_VECTOR4F_H diff --git a/es-core/src/platform.cpp b/es-core/src/platform.cpp index e1663a5f97..dc904c49ed 100644 --- a/es-core/src/platform.cpp +++ b/es-core/src/platform.cpp @@ -1,43 +1,14 @@ #include "platform.h" -#include -#include -#include +#include #ifdef WIN32 #include +#else +#include #endif +#include -std::string getHomePath() -{ - std::string homePath; - - // this should give you something like "/home/YOUR_USERNAME" on Linux and "C:\Users\YOUR_USERNAME\" on Windows - const char * envHome = getenv("HOME"); - if(envHome != nullptr) - { - homePath = envHome; - } - -#ifdef WIN32 - // but does not seem to work for Windows XP or Vista, so try something else - if (homePath.empty()) { - const char * envDir = getenv("HOMEDRIVE"); - const char * envPath = getenv("HOMEPATH"); - if (envDir != nullptr && envPath != nullptr) { - homePath = envDir; - homePath += envPath; - - for(unsigned int i = 0; i < homePath.length(); i++) - if(homePath[i] == '\\') - homePath[i] = '/'; - } - } -#endif - - // convert path to generic directory seperators - boost::filesystem::path genericPath(homePath); - return genericPath.generic_string(); -} +#include "Log.h" int runShutdownCommand() { @@ -69,4 +40,55 @@ int runSystemCommand(const std::string& cmd_utf8) #else return system(cmd_utf8.c_str()); #endif -} \ No newline at end of file +} + +QuitMode quitMode = QuitMode::QUIT; + +int quitES(QuitMode mode) +{ + quitMode = mode; + + SDL_Event *quit = new SDL_Event(); + quit->type = SDL_QUIT; + SDL_PushEvent(quit); + return 0; +} + +void touch(const std::string& filename) +{ +#ifdef WIN32 + FILE* fp = fopen(filename.c_str(), "ab+"); + if (fp != NULL) + fclose(fp); +#else + int fd = open(filename.c_str(), O_CREAT|O_WRONLY, 0644); + if (fd >= 0) + close(fd); +#endif +} + +void processQuitMode() +{ + switch (quitMode) + { + case QuitMode::RESTART: + LOG(LogInfo) << "Restarting EmulationStation"; + touch("/tmp/es-restart"); + break; + case QuitMode::REBOOT: + LOG(LogInfo) << "Rebooting system"; + touch("/tmp/es-sysrestart"); + runRestartCommand(); + break; + case QuitMode::SHUTDOWN: + LOG(LogInfo) << "Shutting system down"; + touch("/tmp/es-shutdown"); + runShutdownCommand(); + break; + default: + // No-op to prevent compiler warnings + // If we reach here, it is not a RESTART, REBOOT, + // or SHUTDOWN. Basically a normal exit. + break; + } +} diff --git a/es-core/src/platform.h b/es-core/src/platform.h index a0571b32ae..1df4d56c68 100644 --- a/es-core/src/platform.h +++ b/es-core/src/platform.h @@ -1,24 +1,24 @@ -//the Makefile defines one of these: -//#define USE_OPENGL_ES -//#define USE_OPENGL_DESKTOP +#pragma once +#ifndef ES_CORE_PLATFORM_H +#define ES_CORE_PLATFORM_H -#ifdef USE_OPENGL_ES - #define GLHEADER -#endif - -#ifdef USE_OPENGL_DESKTOP - //why the hell this naming inconsistency exists is well beyond me - #ifdef WIN32 - #define sleep Sleep - #endif +#include - #define GLHEADER +//why the hell this naming inconsistency exists is well beyond me +#ifdef WIN32 + #define sleep Sleep #endif -#include +enum QuitMode +{ + QUIT = 0, + RESTART = 1, + SHUTDOWN = 2, + REBOOT = 3 +}; -std::string getHomePath(); +int runSystemCommand(const std::string& cmd_utf8); // run a utf-8 encoded in the shell (requires wstring conversion on Windows) +int quitES(QuitMode mode = QuitMode::QUIT); +void processQuitMode(); -int runShutdownCommand(); // shut down the system (returns 0 if successful) -int runRestartCommand(); // restart the system (returns 0 if successful) -int runSystemCommand(const std::string& cmd_utf8); // run a utf-8 encoded in the shell (requires wstring conversion on Windows) \ No newline at end of file +#endif // ES_CORE_PLATFORM_H diff --git a/es-core/src/renderers/Renderer.cpp b/es-core/src/renderers/Renderer.cpp new file mode 100644 index 0000000000..e12a3b6418 --- /dev/null +++ b/es-core/src/renderers/Renderer.cpp @@ -0,0 +1,294 @@ +#include "renderers/Renderer.h" + +#include "math/Transform4x4f.h" +#include "math/Vector2i.h" +#include "resources/ResourceManager.h" +#include "ImageIO.h" +#include "Log.h" +#include "Settings.h" + +#include +#include + +////////////////////////////////////////////////////////////////////////// + +namespace Renderer +{ + static std::stack clipStack; + static SDL_Window* sdlWindow = nullptr; + static int windowWidth = 0; + static int windowHeight = 0; + static int screenWidth = 0; + static int screenHeight = 0; + static int screenOffsetX = 0; + static int screenOffsetY = 0; + static int screenRotate = 0; + static bool initialCursorState = 1; + +////////////////////////////////////////////////////////////////////////// + + static void setIcon() + { + size_t width = 0; + size_t height = 0; + const ResourceData resData = ResourceManager::getInstance()->getFileData(":/window_icon_256.png"); + std::vector rawData = ImageIO::loadFromMemoryRGBA32(resData.ptr.get(), resData.length, width, height); + + if(!rawData.empty()) + { + ImageIO::flipPixelsVert(rawData.data(), width, height); + +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + const unsigned int rmask = 0xFF000000; + const unsigned int gmask = 0x00FF0000; + const unsigned int bmask = 0x0000FF00; + const unsigned int amask = 0x000000FF; +#else + const unsigned int rmask = 0x000000FF; + const unsigned int gmask = 0x0000FF00; + const unsigned int bmask = 0x00FF0000; + const unsigned int amask = 0xFF000000; +#endif + // try creating SDL surface from logo data + SDL_Surface* logoSurface = SDL_CreateRGBSurfaceFrom((void*)rawData.data(), (int)width, (int)height, 32, (int)(width * 4), rmask, gmask, bmask, amask); + + if(logoSurface != nullptr) + { + SDL_SetWindowIcon(sdlWindow, logoSurface); + SDL_FreeSurface(logoSurface); + } + } + + } // setIcon + +////////////////////////////////////////////////////////////////////////// + + static bool createWindow() + { + LOG(LogInfo) << "Creating window..."; + + if(SDL_Init(SDL_INIT_VIDEO) != 0) + { + LOG(LogError) << "Error initializing SDL!\n " << SDL_GetError(); + return false; + } + + initialCursorState = (SDL_ShowCursor(0) != 0); + + int displayIndex = Settings::getInstance()->getInt("MonitorID"); + + if(displayIndex < 0 || displayIndex >= SDL_GetNumVideoDisplays()){ + displayIndex = 0; + } + + SDL_DisplayMode dispMode; + SDL_GetDesktopDisplayMode(displayIndex, &dispMode); + windowWidth = Settings::getInstance()->getInt("WindowWidth") ? Settings::getInstance()->getInt("WindowWidth") : dispMode.w; + windowHeight = Settings::getInstance()->getInt("WindowHeight") ? Settings::getInstance()->getInt("WindowHeight") : dispMode.h; + screenWidth = Settings::getInstance()->getInt("ScreenWidth") ? Settings::getInstance()->getInt("ScreenWidth") : windowWidth; + screenHeight = Settings::getInstance()->getInt("ScreenHeight") ? Settings::getInstance()->getInt("ScreenHeight") : windowHeight; + screenOffsetX = Settings::getInstance()->getInt("ScreenOffsetX") ? Settings::getInstance()->getInt("ScreenOffsetX") : 0; + screenOffsetY = Settings::getInstance()->getInt("ScreenOffsetY") ? Settings::getInstance()->getInt("ScreenOffsetY") : 0; + screenRotate = Settings::getInstance()->getInt("ScreenRotate") ? Settings::getInstance()->getInt("ScreenRotate") : 0; + + setupWindow(); + + const unsigned int windowFlags = (Settings::getInstance()->getBool("Windowed") ? 0 : (Settings::getInstance()->getBool("FullscreenBorderless") ? SDL_WINDOW_BORDERLESS : SDL_WINDOW_FULLSCREEN)) | getWindowFlags(); + + if((sdlWindow = SDL_CreateWindow("EmulationStation", SDL_WINDOWPOS_UNDEFINED_DISPLAY(displayIndex), SDL_WINDOWPOS_UNDEFINED_DISPLAY(displayIndex), windowWidth, windowHeight, windowFlags)) == nullptr) + { + LOG(LogError) << "Error creating SDL window!\n\t" << SDL_GetError(); + return false; + } + + LOG(LogInfo) << "Created window successfully."; + + createContext(); + setIcon(); + setSwapInterval(); + + return true; + + } // createWindow + +////////////////////////////////////////////////////////////////////////// + + static void destroyWindow() + { + destroyContext(); + + SDL_DestroyWindow(sdlWindow); + sdlWindow = nullptr; + + SDL_ShowCursor(initialCursorState); + + SDL_Quit(); + + } // destroyWindow + +////////////////////////////////////////////////////////////////////////// + + bool init() + { + if(!createWindow()) + return false; + + Transform4x4f projection = Transform4x4f::Identity(); + Rect viewport = Rect(0, 0, 0, 0); + + switch(screenRotate) + { + case 0: + { + viewport.x = screenOffsetX; + viewport.y = screenOffsetY; + viewport.w = screenWidth; + viewport.h = screenHeight; + + projection.orthoProjection(0, screenWidth, screenHeight, 0, -1.0, 1.0); + } + break; + + case 1: + { + viewport.x = windowWidth - screenOffsetY - screenHeight; + viewport.y = screenOffsetX; + viewport.w = screenHeight; + viewport.h = screenWidth; + + projection.orthoProjection(0, screenHeight, screenWidth, 0, -1.0, 1.0); + projection.rotate((float)ES_DEG_TO_RAD(90), {0, 0, 1}); + projection.translate({0, screenHeight * -1.0f, 0}); + } + break; + + case 2: + { + viewport.x = windowWidth - screenOffsetX - screenWidth; + viewport.y = windowHeight - screenOffsetY - screenHeight; + viewport.w = screenWidth; + viewport.h = screenHeight; + + projection.orthoProjection(0, screenWidth, screenHeight, 0, -1.0, 1.0); + projection.rotate((float)ES_DEG_TO_RAD(180), {0, 0, 1}); + projection.translate({screenWidth * -1.0f, screenHeight * -1.0f, 0}); + } + break; + + case 3: + { + viewport.x = screenOffsetY; + viewport.y = windowHeight - screenOffsetX - screenWidth; + viewport.w = screenHeight; + viewport.h = screenWidth; + + projection.orthoProjection(0, screenHeight, screenWidth, 0, -1.0, 1.0); + projection.rotate((float)ES_DEG_TO_RAD(270), {0, 0, 1}); + projection.translate({screenWidth * -1.0f, 0, 0}); + } + break; + } + + setViewport(viewport); + setProjection(projection); + swapBuffers(); + + return true; + + } // init + +////////////////////////////////////////////////////////////////////////// + + void deinit() + { + destroyWindow(); + + } // deinit + +////////////////////////////////////////////////////////////////////////// + + void pushClipRect(const Vector2i& _pos, const Vector2i& _size) + { + Rect box(_pos.x(), _pos.y(), _size.x(), _size.y()); + + if(box.w == 0) box.w = screenWidth - box.x; + if(box.h == 0) box.h = screenHeight - box.y; + + switch(screenRotate) + { + case 0: { box = Rect(screenOffsetX + box.x, screenOffsetY + box.y, box.w, box.h); } break; + case 1: { box = Rect(windowWidth - screenOffsetY - box.y - box.h, screenOffsetX + box.x, box.h, box.w); } break; + case 2: { box = Rect(windowWidth - screenOffsetX - box.x - box.w, windowHeight - screenOffsetY - box.y - box.h, box.w, box.h); } break; + case 3: { box = Rect(screenOffsetY + box.y, windowHeight - screenOffsetX - box.x - box.w, box.h, box.w); } break; + } + + // make sure the box fits within clipStack.top(), and clip further accordingly + if(clipStack.size()) + { + const Rect& top = clipStack.top(); + if( top.x > box.x) box.x = top.x; + if( top.y > box.y) box.y = top.y; + if((top.x + top.w) < (box.x + box.w)) box.w = (top.x + top.w) - box.x; + if((top.y + top.h) < (box.y + box.h)) box.h = (top.y + top.h) - box.y; + } + + if(box.w < 0) box.w = 0; + if(box.h < 0) box.h = 0; + + clipStack.push(box); + + setScissor(box); + + } // pushClipRect + +////////////////////////////////////////////////////////////////////////// + + void popClipRect() + { + if(clipStack.empty()) + { + LOG(LogError) << "Tried to popClipRect while the stack was empty!"; + return; + } + + clipStack.pop(); + + if(clipStack.empty()) setScissor(Rect(0, 0, 0, 0)); + else setScissor(clipStack.top()); + + } // popClipRect + +////////////////////////////////////////////////////////////////////////// + + void drawRect(const float _x, const float _y, const float _w, const float _h, const unsigned int _color, const unsigned int _colorEnd, bool horizontalGradient, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor) + { + const unsigned int color = convertColor(_color); + const unsigned int colorEnd = convertColor(_colorEnd); + Vertex vertices[4]; + + vertices[0] = { { _x ,_y }, { 0.0f, 0.0f }, color }; + vertices[1] = { { _x ,_y + _h }, { 0.0f, 0.0f }, horizontalGradient ? colorEnd : color }; + vertices[2] = { { _x + _w,_y }, { 0.0f, 0.0f }, horizontalGradient ? color : colorEnd }; + vertices[3] = { { _x + _w,_y + _h }, { 0.0f, 0.0f }, colorEnd }; + + // round vertices + for(int i = 0; i < 4; ++i) + vertices[i].pos.round(); + + bindTexture(0); + drawTriangleStrips(vertices, 4, _srcBlendFactor, _dstBlendFactor); + + } // drawRect + +////////////////////////////////////////////////////////////////////////// + + SDL_Window* getSDLWindow() { return sdlWindow; } + int getWindowWidth() { return windowWidth; } + int getWindowHeight() { return windowHeight; } + int getScreenWidth() { return screenWidth; } + int getScreenHeight() { return screenHeight; } + int getScreenOffsetX() { return screenOffsetX; } + int getScreenOffsetY() { return screenOffsetY; } + int getScreenRotate() { return screenRotate; } + +} // Renderer:: diff --git a/es-core/src/renderers/Renderer.h b/es-core/src/renderers/Renderer.h new file mode 100644 index 0000000000..b3e24184c2 --- /dev/null +++ b/es-core/src/renderers/Renderer.h @@ -0,0 +1,101 @@ +#pragma once +#ifndef ES_CORE_RENDERER_RENDERER_H +#define ES_CORE_RENDERER_RENDERER_H + +#include "math/Vector2f.h" + +class Transform4x4f; +class Vector2i; +struct SDL_Window; + +namespace Renderer +{ + namespace Blend + { + enum Factor + { + ZERO = 0, + ONE = 1, + SRC_COLOR = 2, + ONE_MINUS_SRC_COLOR = 3, + SRC_ALPHA = 4, + ONE_MINUS_SRC_ALPHA = 5, + DST_COLOR = 6, + ONE_MINUS_DST_COLOR = 7, + DST_ALPHA = 8, + ONE_MINUS_DST_ALPHA = 9 + + }; // Factor + + } // Blend:: + + namespace Texture + { + enum Type + { + RGBA = 0, + ALPHA = 1 + + }; // Type + + } // Texture:: + + struct Rect + { + Rect(const int _x, const int _y, const int _w, const int _h) : x(_x), y(_y), w(_w), h(_h) { } + + int x; + int y; + int w; + int h; + + }; // Rect + + struct Vertex + { + Vertex() { } + Vertex(const Vector2f& _pos, const Vector2f& _tex, const unsigned int _col) : pos(_pos), tex(_tex), col(_col) { } + + Vector2f pos; + Vector2f tex; + unsigned int col; + + }; // Vertex + + bool init (); + void deinit (); + void pushClipRect (const Vector2i& _pos, const Vector2i& _size); + void popClipRect (); + void drawRect (const float _x, const float _y, const float _w, const float _h, const unsigned int _color, const unsigned int _colorEnd, bool horizontalGradient = false, const Blend::Factor _srcBlendFactor = Blend::SRC_ALPHA, const Blend::Factor _dstBlendFactor = Blend::ONE_MINUS_SRC_ALPHA); + + SDL_Window* getSDLWindow (); + int getWindowWidth (); + int getWindowHeight (); + int getScreenWidth (); + int getScreenHeight (); + int getScreenOffsetX(); + int getScreenOffsetY(); + int getScreenRotate (); + + // API specific + unsigned int convertColor (const unsigned int _color); + unsigned int getWindowFlags (); + void setupWindow (); + void createContext (); + void destroyContext (); + unsigned int createTexture (const Texture::Type _type, const bool _linear, const bool _repeat, const unsigned int _width, const unsigned int _height, const void* _data); + void destroyTexture (const unsigned int _texture); + void updateTexture (const unsigned int _texture, const Texture::Type _type, const unsigned int _x, const unsigned _y, const unsigned int _width, const unsigned int _height, const void* _data); + void bindTexture (const unsigned int _texture); + void drawLines (const Vertex* _vertices, const unsigned int _numVertices, const Blend::Factor _srcBlendFactor = Blend::SRC_ALPHA, const Blend::Factor _dstBlendFactor = Blend::ONE_MINUS_SRC_ALPHA); + void drawTriangleStrips(const Vertex* _vertices, const unsigned int _numVertices, const Blend::Factor _srcBlendFactor = Blend::SRC_ALPHA, const Blend::Factor _dstBlendFactor = Blend::ONE_MINUS_SRC_ALPHA); + void setProjection (const Transform4x4f& _projection); + void setMatrix (const Transform4x4f& _matrix); + void setViewport (const Rect& _viewport); + void setScissor (const Rect& _scissor); + void setSwapInterval (); + void swapBuffers (); + +} // Renderer:: + +#endif // ES_CORE_RENDERER_RENDERER_H diff --git a/es-core/src/renderers/Renderer_GL14.cpp b/es-core/src/renderers/Renderer_GL14.cpp new file mode 100644 index 0000000000..6550b4d272 --- /dev/null +++ b/es-core/src/renderers/Renderer_GL14.cpp @@ -0,0 +1,307 @@ +#if defined(USE_OPENGL_14) + +#include "renderers/Renderer.h" +#include "math/Transform4x4f.h" +#include "Log.h" +#include "Settings.h" + +#include +#include + +////////////////////////////////////////////////////////////////////////// + +namespace Renderer +{ + +#if defined(_DEBUG) +#define GL_CHECK_ERROR(Function) (Function, _GLCheckError(#Function)) + + static void _GLCheckError(const char* _funcName) + { + const GLenum errorCode = glGetError(); + + if(errorCode != GL_NO_ERROR) + LOG(LogError) << "GL error: " << _funcName << " failed with error code: " << errorCode; + } +#else +#define GL_CHECK_ERROR(Function) (Function) +#endif + +////////////////////////////////////////////////////////////////////////// + + static SDL_GLContext sdlContext = nullptr; + static GLuint whiteTexture = 0; + +////////////////////////////////////////////////////////////////////////// + + static GLenum convertBlendFactor(const Blend::Factor _blendFactor) + { + switch(_blendFactor) + { + case Blend::ZERO: { return GL_ZERO; } break; + case Blend::ONE: { return GL_ONE; } break; + case Blend::SRC_COLOR: { return GL_SRC_COLOR; } break; + case Blend::ONE_MINUS_SRC_COLOR: { return GL_ONE_MINUS_SRC_COLOR; } break; + case Blend::SRC_ALPHA: { return GL_SRC_ALPHA; } break; + case Blend::ONE_MINUS_SRC_ALPHA: { return GL_ONE_MINUS_SRC_ALPHA; } break; + case Blend::DST_COLOR: { return GL_DST_COLOR; } break; + case Blend::ONE_MINUS_DST_COLOR: { return GL_ONE_MINUS_DST_COLOR; } break; + case Blend::DST_ALPHA: { return GL_DST_ALPHA; } break; + case Blend::ONE_MINUS_DST_ALPHA: { return GL_ONE_MINUS_DST_ALPHA; } break; + default: { return GL_ZERO; } + } + + } // convertBlendFactor + +////////////////////////////////////////////////////////////////////////// + + static GLenum convertTextureType(const Texture::Type _type) + { + switch(_type) + { + case Texture::RGBA: { return GL_RGBA; } break; + case Texture::ALPHA: { return GL_ALPHA; } break; + default: { return GL_ZERO; } + } + + } // convertTextureType + +////////////////////////////////////////////////////////////////////////// + + unsigned int convertColor(const unsigned int _color) + { + // convert from rgba to abgr + const unsigned char r = ((_color & 0xff000000) >> 24) & 255; + const unsigned char g = ((_color & 0x00ff0000) >> 16) & 255; + const unsigned char b = ((_color & 0x0000ff00) >> 8) & 255; + const unsigned char a = ((_color & 0x000000ff) ) & 255; + + return ((a << 24) | (b << 16) | (g << 8) | (r)); + + } // convertColor + +////////////////////////////////////////////////////////////////////////// + + unsigned int getWindowFlags() + { + return SDL_WINDOW_OPENGL; + + } // getWindowFlags + +////////////////////////////////////////////////////////////////////////// + + void setupWindow() + { + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 4); + + SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); + + } // setupWindow + +////////////////////////////////////////////////////////////////////////// + + void createContext() + { + sdlContext = SDL_GL_CreateContext(getSDLWindow()); + SDL_GL_MakeCurrent(getSDLWindow(), sdlContext); + + const std::string vendor = glGetString(GL_VENDOR) ? (const char*)glGetString(GL_VENDOR) : ""; + const std::string renderer = glGetString(GL_RENDERER) ? (const char*)glGetString(GL_RENDERER) : ""; + const std::string version = glGetString(GL_VERSION) ? (const char*)glGetString(GL_VERSION) : ""; + const std::string extensions = glGetString(GL_EXTENSIONS) ? (const char*)glGetString(GL_EXTENSIONS) : ""; + + LOG(LogInfo) << "GL vendor: " << vendor; + LOG(LogInfo) << "GL renderer: " << renderer; + LOG(LogInfo) << "GL version: " << version; + LOG(LogInfo) << "Checking available OpenGL extensions..."; + LOG(LogInfo) << " ARB_texture_non_power_of_two: " << (extensions.find("ARB_texture_non_power_of_two") != std::string::npos ? "ok" : "MISSING"); + + const uint8_t data[4] = {255, 255, 255, 255}; + whiteTexture = createTexture(Texture::RGBA, false, true, 1, 1, data); + + GL_CHECK_ERROR(glClearColor(0.0f, 0.0f, 0.0f, 1.0f)); + GL_CHECK_ERROR(glEnable(GL_TEXTURE_2D)); + GL_CHECK_ERROR(glEnable(GL_BLEND)); + GL_CHECK_ERROR(glPixelStorei(GL_PACK_ALIGNMENT, 1)); + GL_CHECK_ERROR(glPixelStorei(GL_UNPACK_ALIGNMENT, 1)); + GL_CHECK_ERROR(glEnableClientState(GL_VERTEX_ARRAY)); + GL_CHECK_ERROR(glEnableClientState(GL_TEXTURE_COORD_ARRAY)); + GL_CHECK_ERROR(glEnableClientState(GL_COLOR_ARRAY)); + + } // createContext + +////////////////////////////////////////////////////////////////////////// + + void destroyContext() + { + SDL_GL_DeleteContext(sdlContext); + sdlContext = nullptr; + + } // destroyContext + +////////////////////////////////////////////////////////////////////////// + + unsigned int createTexture(const Texture::Type _type, const bool _linear, const bool _repeat, const unsigned int _width, const unsigned int _height, const void* _data) + { + const GLenum type = convertTextureType(_type); + unsigned int texture; + + GL_CHECK_ERROR(glGenTextures(1, &texture)); + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, texture)); + + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _repeat ? GL_REPEAT : GL_CLAMP_TO_EDGE)); + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _repeat ? GL_REPEAT : GL_CLAMP_TO_EDGE)); + + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _linear ? GL_LINEAR : GL_NEAREST)); + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); + + GL_CHECK_ERROR(glTexImage2D(GL_TEXTURE_2D, 0, type, _width, _height, 0, type, GL_UNSIGNED_BYTE, _data)); + + return texture; + + } // createTexture + +////////////////////////////////////////////////////////////////////////// + + void destroyTexture(const unsigned int _texture) + { + GL_CHECK_ERROR(glDeleteTextures(1, &_texture)); + + } // destroyTexture + +////////////////////////////////////////////////////////////////////////// + + void updateTexture(const unsigned int _texture, const Texture::Type _type, const unsigned int _x, const unsigned _y, const unsigned int _width, const unsigned int _height, const void* _data) + { + const GLenum type = convertTextureType(_type); + + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, _texture)); + GL_CHECK_ERROR(glTexSubImage2D(GL_TEXTURE_2D, 0, _x, _y, _width, _height, type, GL_UNSIGNED_BYTE, _data)); + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, whiteTexture)); + + } // updateTexture + +////////////////////////////////////////////////////////////////////////// + + void bindTexture(const unsigned int _texture) + { + if(_texture == 0) GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, whiteTexture)); + else GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, _texture)); + + } // bindTexture + +////////////////////////////////////////////////////////////////////////// + + void drawLines(const Vertex* _vertices, const unsigned int _numVertices, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor) + { + GL_CHECK_ERROR(glVertexPointer( 2, GL_FLOAT, sizeof(Vertex), &_vertices[0].pos)); + GL_CHECK_ERROR(glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &_vertices[0].tex)); + GL_CHECK_ERROR(glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof(Vertex), &_vertices[0].col)); + + GL_CHECK_ERROR(glBlendFunc(convertBlendFactor(_srcBlendFactor), convertBlendFactor(_dstBlendFactor))); + + GL_CHECK_ERROR(glDrawArrays(GL_LINES, 0, _numVertices)); + + } // drawLines + +////////////////////////////////////////////////////////////////////////// + + void drawTriangleStrips(const Vertex* _vertices, const unsigned int _numVertices, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor) + { + GL_CHECK_ERROR(glVertexPointer( 2, GL_FLOAT, sizeof(Vertex), &_vertices[0].pos)); + GL_CHECK_ERROR(glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &_vertices[0].tex)); + GL_CHECK_ERROR(glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof(Vertex), &_vertices[0].col)); + + GL_CHECK_ERROR(glBlendFunc(convertBlendFactor(_srcBlendFactor), convertBlendFactor(_dstBlendFactor))); + + GL_CHECK_ERROR(glDrawArrays(GL_TRIANGLE_STRIP, 0, _numVertices)); + + } // drawTriangleStrips + +////////////////////////////////////////////////////////////////////////// + + void setProjection(const Transform4x4f& _projection) + { + GL_CHECK_ERROR(glMatrixMode(GL_PROJECTION)); + GL_CHECK_ERROR(glLoadMatrixf((GLfloat*)&_projection)); + + } // setProjection + +////////////////////////////////////////////////////////////////////////// + + void setMatrix(const Transform4x4f& _matrix) + { + Transform4x4f matrix = _matrix; + matrix.round(); + + GL_CHECK_ERROR(glMatrixMode(GL_MODELVIEW)); + GL_CHECK_ERROR(glLoadMatrixf((GLfloat*)&matrix)); + + } // setMatrix + +////////////////////////////////////////////////////////////////////////// + + void setViewport(const Rect& _viewport) + { + // glViewport starts at the bottom left of the window + GL_CHECK_ERROR(glViewport( _viewport.x, getWindowHeight() - _viewport.y - _viewport.h, _viewport.w, _viewport.h)); + + } // setViewport + +////////////////////////////////////////////////////////////////////////// + + void setScissor(const Rect& _scissor) + { + if((_scissor.x == 0) && (_scissor.y == 0) && (_scissor.w == 0) && (_scissor.h == 0)) + { + GL_CHECK_ERROR(glDisable(GL_SCISSOR_TEST)); + } + else + { + // glScissor starts at the bottom left of the window + GL_CHECK_ERROR(glScissor(_scissor.x, getWindowHeight() - _scissor.y - _scissor.h, _scissor.w, _scissor.h)); + GL_CHECK_ERROR(glEnable(GL_SCISSOR_TEST)); + } + + } // setScissor + +////////////////////////////////////////////////////////////////////////// + + void setSwapInterval() + { + // vsync + if(Settings::getInstance()->getBool("VSync")) + { + // SDL_GL_SetSwapInterval(0) for immediate updates (no vsync, default), + // 1 for updates synchronized with the vertical retrace, + // or -1 for late swap tearing. + // SDL_GL_SetSwapInterval returns 0 on success, -1 on error. + // if vsync is requested, try normal vsync; if that doesn't work, try late swap tearing + // if that doesn't work, report an error + if(SDL_GL_SetSwapInterval(1) != 0 && SDL_GL_SetSwapInterval(-1) != 0) + LOG(LogWarning) << "Tried to enable vsync, but failed! (" << SDL_GetError() << ")"; + } + else + SDL_GL_SetSwapInterval(0); + + } // setSwapInterval + +////////////////////////////////////////////////////////////////////////// + + void swapBuffers() + { + SDL_GL_SwapWindow(getSDLWindow()); + GL_CHECK_ERROR(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); + + } // swapBuffers + +} // Renderer:: + +#endif // USE_OPENGL_14 diff --git a/es-core/src/renderers/Renderer_GL21.cpp b/es-core/src/renderers/Renderer_GL21.cpp new file mode 100644 index 0000000000..009501df12 --- /dev/null +++ b/es-core/src/renderers/Renderer_GL21.cpp @@ -0,0 +1,307 @@ +#if defined(USE_OPENGL_21) + +#include "renderers/Renderer.h" +#include "math/Transform4x4f.h" +#include "Log.h" +#include "Settings.h" + +#include +#include + +////////////////////////////////////////////////////////////////////////// + +namespace Renderer +{ + +#if defined(_DEBUG) +#define GL_CHECK_ERROR(Function) (Function, _GLCheckError(#Function)) + + static void _GLCheckError(const char* _funcName) + { + const GLenum errorCode = glGetError(); + + if(errorCode != GL_NO_ERROR) + LOG(LogError) << "GL error: " << _funcName << " failed with error code: " << errorCode; + } +#else +#define GL_CHECK_ERROR(Function) (Function) +#endif + +////////////////////////////////////////////////////////////////////////// + + static SDL_GLContext sdlContext = nullptr; + static GLuint whiteTexture = 0; + +////////////////////////////////////////////////////////////////////////// + + static GLenum convertBlendFactor(const Blend::Factor _blendFactor) + { + switch(_blendFactor) + { + case Blend::ZERO: { return GL_ZERO; } break; + case Blend::ONE: { return GL_ONE; } break; + case Blend::SRC_COLOR: { return GL_SRC_COLOR; } break; + case Blend::ONE_MINUS_SRC_COLOR: { return GL_ONE_MINUS_SRC_COLOR; } break; + case Blend::SRC_ALPHA: { return GL_SRC_ALPHA; } break; + case Blend::ONE_MINUS_SRC_ALPHA: { return GL_ONE_MINUS_SRC_ALPHA; } break; + case Blend::DST_COLOR: { return GL_DST_COLOR; } break; + case Blend::ONE_MINUS_DST_COLOR: { return GL_ONE_MINUS_DST_COLOR; } break; + case Blend::DST_ALPHA: { return GL_DST_ALPHA; } break; + case Blend::ONE_MINUS_DST_ALPHA: { return GL_ONE_MINUS_DST_ALPHA; } break; + default: { return GL_ZERO; } + } + + } // convertBlendFactor + +////////////////////////////////////////////////////////////////////////// + + static GLenum convertTextureType(const Texture::Type _type) + { + switch(_type) + { + case Texture::RGBA: { return GL_RGBA; } break; + case Texture::ALPHA: { return GL_ALPHA; } break; + default: { return GL_ZERO; } + } + + } // convertTextureType + +////////////////////////////////////////////////////////////////////////// + + unsigned int convertColor(const unsigned int _color) + { + // convert from rgba to abgr + const unsigned char r = ((_color & 0xff000000) >> 24) & 255; + const unsigned char g = ((_color & 0x00ff0000) >> 16) & 255; + const unsigned char b = ((_color & 0x0000ff00) >> 8) & 255; + const unsigned char a = ((_color & 0x000000ff) ) & 255; + + return ((a << 24) | (b << 16) | (g << 8) | (r)); + + } // convertColor + +////////////////////////////////////////////////////////////////////////// + + unsigned int getWindowFlags() + { + return SDL_WINDOW_OPENGL; + + } // getWindowFlags + +////////////////////////////////////////////////////////////////////////// + + void setupWindow() + { + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1); + + SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); + + } // setupWindow + +////////////////////////////////////////////////////////////////////////// + + void createContext() + { + sdlContext = SDL_GL_CreateContext(getSDLWindow()); + SDL_GL_MakeCurrent(getSDLWindow(), sdlContext); + + const std::string vendor = glGetString(GL_VENDOR) ? (const char*)glGetString(GL_VENDOR) : ""; + const std::string renderer = glGetString(GL_RENDERER) ? (const char*)glGetString(GL_RENDERER) : ""; + const std::string version = glGetString(GL_VERSION) ? (const char*)glGetString(GL_VERSION) : ""; + const std::string extensions = glGetString(GL_EXTENSIONS) ? (const char*)glGetString(GL_EXTENSIONS) : ""; + + LOG(LogInfo) << "GL vendor: " << vendor; + LOG(LogInfo) << "GL renderer: " << renderer; + LOG(LogInfo) << "GL version: " << version; + LOG(LogInfo) << "Checking available OpenGL extensions..."; + LOG(LogInfo) << " ARB_texture_non_power_of_two: " << (extensions.find("ARB_texture_non_power_of_two") != std::string::npos ? "ok" : "MISSING"); + + const uint8_t data[4] = {255, 255, 255, 255}; + whiteTexture = createTexture(Texture::RGBA, false, true, 1, 1, data); + + GL_CHECK_ERROR(glClearColor(0.0f, 0.0f, 0.0f, 1.0f)); + GL_CHECK_ERROR(glEnable(GL_TEXTURE_2D)); + GL_CHECK_ERROR(glEnable(GL_BLEND)); + GL_CHECK_ERROR(glPixelStorei(GL_PACK_ALIGNMENT, 1)); + GL_CHECK_ERROR(glPixelStorei(GL_UNPACK_ALIGNMENT, 1)); + GL_CHECK_ERROR(glEnableClientState(GL_VERTEX_ARRAY)); + GL_CHECK_ERROR(glEnableClientState(GL_TEXTURE_COORD_ARRAY)); + GL_CHECK_ERROR(glEnableClientState(GL_COLOR_ARRAY)); + + } // createContext + +////////////////////////////////////////////////////////////////////////// + + void destroyContext() + { + SDL_GL_DeleteContext(sdlContext); + sdlContext = nullptr; + + } // destroyContext + +////////////////////////////////////////////////////////////////////////// + + unsigned int createTexture(const Texture::Type _type, const bool _linear, const bool _repeat, const unsigned int _width, const unsigned int _height, const void* _data) + { + const GLenum type = convertTextureType(_type); + unsigned int texture; + + GL_CHECK_ERROR(glGenTextures(1, &texture)); + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, texture)); + + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _repeat ? GL_REPEAT : GL_CLAMP_TO_EDGE)); + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _repeat ? GL_REPEAT : GL_CLAMP_TO_EDGE)); + + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _linear ? GL_LINEAR : GL_NEAREST)); + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); + + GL_CHECK_ERROR(glTexImage2D(GL_TEXTURE_2D, 0, type, _width, _height, 0, type, GL_UNSIGNED_BYTE, _data)); + + return texture; + + } // createTexture + +////////////////////////////////////////////////////////////////////////// + + void destroyTexture(const unsigned int _texture) + { + GL_CHECK_ERROR(glDeleteTextures(1, &_texture)); + + } // destroyTexture + +////////////////////////////////////////////////////////////////////////// + + void updateTexture(const unsigned int _texture, const Texture::Type _type, const unsigned int _x, const unsigned _y, const unsigned int _width, const unsigned int _height, const void* _data) + { + const GLenum type = convertTextureType(_type); + + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, _texture)); + GL_CHECK_ERROR(glTexSubImage2D(GL_TEXTURE_2D, 0, _x, _y, _width, _height, type, GL_UNSIGNED_BYTE, _data)); + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, whiteTexture)); + + } // updateTexture + +////////////////////////////////////////////////////////////////////////// + + void bindTexture(const unsigned int _texture) + { + if(_texture == 0) GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, whiteTexture)); + else GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, _texture)); + + } // bindTexture + +////////////////////////////////////////////////////////////////////////// + + void drawLines(const Vertex* _vertices, const unsigned int _numVertices, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor) + { + GL_CHECK_ERROR(glVertexPointer( 2, GL_FLOAT, sizeof(Vertex), &_vertices[0].pos)); + GL_CHECK_ERROR(glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &_vertices[0].tex)); + GL_CHECK_ERROR(glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof(Vertex), &_vertices[0].col)); + + GL_CHECK_ERROR(glBlendFunc(convertBlendFactor(_srcBlendFactor), convertBlendFactor(_dstBlendFactor))); + + GL_CHECK_ERROR(glDrawArrays(GL_LINES, 0, _numVertices)); + + } // drawLines + +////////////////////////////////////////////////////////////////////////// + + void drawTriangleStrips(const Vertex* _vertices, const unsigned int _numVertices, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor) + { + GL_CHECK_ERROR(glVertexPointer( 2, GL_FLOAT, sizeof(Vertex), &_vertices[0].pos)); + GL_CHECK_ERROR(glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &_vertices[0].tex)); + GL_CHECK_ERROR(glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof(Vertex), &_vertices[0].col)); + + GL_CHECK_ERROR(glBlendFunc(convertBlendFactor(_srcBlendFactor), convertBlendFactor(_dstBlendFactor))); + + GL_CHECK_ERROR(glDrawArrays(GL_TRIANGLE_STRIP, 0, _numVertices)); + + } // drawTriangleStrips + +////////////////////////////////////////////////////////////////////////// + + void setProjection(const Transform4x4f& _projection) + { + GL_CHECK_ERROR(glMatrixMode(GL_PROJECTION)); + GL_CHECK_ERROR(glLoadMatrixf((GLfloat*)&_projection)); + + } // setProjection + +////////////////////////////////////////////////////////////////////////// + + void setMatrix(const Transform4x4f& _matrix) + { + Transform4x4f matrix = _matrix; + matrix.round(); + + GL_CHECK_ERROR(glMatrixMode(GL_MODELVIEW)); + GL_CHECK_ERROR(glLoadMatrixf((GLfloat*)&matrix)); + + } // setMatrix + +////////////////////////////////////////////////////////////////////////// + + void setViewport(const Rect& _viewport) + { + // glViewport starts at the bottom left of the window + GL_CHECK_ERROR(glViewport( _viewport.x, getWindowHeight() - _viewport.y - _viewport.h, _viewport.w, _viewport.h)); + + } // setViewport + +////////////////////////////////////////////////////////////////////////// + + void setScissor(const Rect& _scissor) + { + if((_scissor.x == 0) && (_scissor.y == 0) && (_scissor.w == 0) && (_scissor.h == 0)) + { + GL_CHECK_ERROR(glDisable(GL_SCISSOR_TEST)); + } + else + { + // glScissor starts at the bottom left of the window + GL_CHECK_ERROR(glScissor(_scissor.x, getWindowHeight() - _scissor.y - _scissor.h, _scissor.w, _scissor.h)); + GL_CHECK_ERROR(glEnable(GL_SCISSOR_TEST)); + } + + } // setScissor + +////////////////////////////////////////////////////////////////////////// + + void setSwapInterval() + { + // vsync + if(Settings::getInstance()->getBool("VSync")) + { + // SDL_GL_SetSwapInterval(0) for immediate updates (no vsync, default), + // 1 for updates synchronized with the vertical retrace, + // or -1 for late swap tearing. + // SDL_GL_SetSwapInterval returns 0 on success, -1 on error. + // if vsync is requested, try normal vsync; if that doesn't work, try late swap tearing + // if that doesn't work, report an error + if(SDL_GL_SetSwapInterval(1) != 0 && SDL_GL_SetSwapInterval(-1) != 0) + LOG(LogWarning) << "Tried to enable vsync, but failed! (" << SDL_GetError() << ")"; + } + else + SDL_GL_SetSwapInterval(0); + + } // setSwapInterval + +////////////////////////////////////////////////////////////////////////// + + void swapBuffers() + { + SDL_GL_SwapWindow(getSDLWindow()); + GL_CHECK_ERROR(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); + + } // swapBuffers + +} // Renderer:: + +#endif // USE_OPENGL_21 diff --git a/es-core/src/renderers/Renderer_GLES10.cpp b/es-core/src/renderers/Renderer_GLES10.cpp new file mode 100644 index 0000000000..33c6e0547e --- /dev/null +++ b/es-core/src/renderers/Renderer_GLES10.cpp @@ -0,0 +1,307 @@ +#if defined(USE_OPENGLES_10) + +#include "renderers/Renderer.h" +#include "math/Transform4x4f.h" +#include "Log.h" +#include "Settings.h" + +#include +#include + +////////////////////////////////////////////////////////////////////////// + +namespace Renderer +{ + +#if defined(_DEBUG) +#define GL_CHECK_ERROR(Function) (Function, _GLCheckError(#Function)) + + static void _GLCheckError(const char* _funcName) + { + const GLenum errorCode = glGetError(); + + if(errorCode != GL_NO_ERROR) + LOG(LogError) << "GL error: " << _funcName << " failed with error code: " << errorCode; + } +#else +#define GL_CHECK_ERROR(Function) (Function) +#endif + +////////////////////////////////////////////////////////////////////////// + + static SDL_GLContext sdlContext = nullptr; + static GLuint whiteTexture = 0; + +////////////////////////////////////////////////////////////////////////// + + static GLenum convertBlendFactor(const Blend::Factor _blendFactor) + { + switch(_blendFactor) + { + case Blend::ZERO: { return GL_ZERO; } break; + case Blend::ONE: { return GL_ONE; } break; + case Blend::SRC_COLOR: { return GL_SRC_COLOR; } break; + case Blend::ONE_MINUS_SRC_COLOR: { return GL_ONE_MINUS_SRC_COLOR; } break; + case Blend::SRC_ALPHA: { return GL_SRC_ALPHA; } break; + case Blend::ONE_MINUS_SRC_ALPHA: { return GL_ONE_MINUS_SRC_ALPHA; } break; + case Blend::DST_COLOR: { return GL_DST_COLOR; } break; + case Blend::ONE_MINUS_DST_COLOR: { return GL_ONE_MINUS_DST_COLOR; } break; + case Blend::DST_ALPHA: { return GL_DST_ALPHA; } break; + case Blend::ONE_MINUS_DST_ALPHA: { return GL_ONE_MINUS_DST_ALPHA; } break; + default: { return GL_ZERO; } + } + + } // convertBlendFactor + +////////////////////////////////////////////////////////////////////////// + + static GLenum convertTextureType(const Texture::Type _type) + { + switch(_type) + { + case Texture::RGBA: { return GL_RGBA; } break; + case Texture::ALPHA: { return GL_ALPHA; } break; + default: { return GL_ZERO; } + } + + } // convertTextureType + +////////////////////////////////////////////////////////////////////////// + + unsigned int convertColor(const unsigned int _color) + { + // convert from rgba to abgr + const unsigned char r = ((_color & 0xff000000) >> 24) & 255; + const unsigned char g = ((_color & 0x00ff0000) >> 16) & 255; + const unsigned char b = ((_color & 0x0000ff00) >> 8) & 255; + const unsigned char a = ((_color & 0x000000ff) ) & 255; + + return ((a << 24) | (b << 16) | (g << 8) | (r)); + + } // convertColor + +////////////////////////////////////////////////////////////////////////// + + unsigned int getWindowFlags() + { + return SDL_WINDOW_OPENGL; + + } // getWindowFlags + +////////////////////////////////////////////////////////////////////////// + + void setupWindow() + { + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 1); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); + + SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); + + } // setupWindow + +////////////////////////////////////////////////////////////////////////// + + void createContext() + { + sdlContext = SDL_GL_CreateContext(getSDLWindow()); + SDL_GL_MakeCurrent(getSDLWindow(), sdlContext); + + const std::string vendor = glGetString(GL_VENDOR) ? (const char*)glGetString(GL_VENDOR) : ""; + const std::string renderer = glGetString(GL_RENDERER) ? (const char*)glGetString(GL_RENDERER) : ""; + const std::string version = glGetString(GL_VERSION) ? (const char*)glGetString(GL_VERSION) : ""; + const std::string extensions = glGetString(GL_EXTENSIONS) ? (const char*)glGetString(GL_EXTENSIONS) : ""; + + LOG(LogInfo) << "GL vendor: " << vendor; + LOG(LogInfo) << "GL renderer: " << renderer; + LOG(LogInfo) << "GL version: " << version; + LOG(LogInfo) << "Checking available OpenGL extensions..."; + LOG(LogInfo) << " ARB_texture_non_power_of_two: " << (extensions.find("ARB_texture_non_power_of_two") != std::string::npos ? "ok" : "MISSING"); + + const uint8_t data[4] = {255, 255, 255, 255}; + whiteTexture = createTexture(Texture::RGBA, false, true, 1, 1, data); + + GL_CHECK_ERROR(glClearColor(0.0f, 0.0f, 0.0f, 1.0f)); + GL_CHECK_ERROR(glEnable(GL_TEXTURE_2D)); + GL_CHECK_ERROR(glEnable(GL_BLEND)); + GL_CHECK_ERROR(glPixelStorei(GL_PACK_ALIGNMENT, 1)); + GL_CHECK_ERROR(glPixelStorei(GL_UNPACK_ALIGNMENT, 1)); + GL_CHECK_ERROR(glEnableClientState(GL_VERTEX_ARRAY)); + GL_CHECK_ERROR(glEnableClientState(GL_TEXTURE_COORD_ARRAY)); + GL_CHECK_ERROR(glEnableClientState(GL_COLOR_ARRAY)); + + } // createContext + +////////////////////////////////////////////////////////////////////////// + + void destroyContext() + { + SDL_GL_DeleteContext(sdlContext); + sdlContext = nullptr; + + } // destroyContext + +////////////////////////////////////////////////////////////////////////// + + unsigned int createTexture(const Texture::Type _type, const bool _linear, const bool _repeat, const unsigned int _width, const unsigned int _height, const void* _data) + { + const GLenum type = convertTextureType(_type); + unsigned int texture; + + GL_CHECK_ERROR(glGenTextures(1, &texture)); + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, texture)); + + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _repeat ? GL_REPEAT : GL_CLAMP_TO_EDGE)); + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _repeat ? GL_REPEAT : GL_CLAMP_TO_EDGE)); + + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _linear ? GL_LINEAR : GL_NEAREST)); + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); + + GL_CHECK_ERROR(glTexImage2D(GL_TEXTURE_2D, 0, type, _width, _height, 0, type, GL_UNSIGNED_BYTE, _data)); + + return texture; + + } // createTexture + +////////////////////////////////////////////////////////////////////////// + + void destroyTexture(const unsigned int _texture) + { + GL_CHECK_ERROR(glDeleteTextures(1, &_texture)); + + } // destroyTexture + +////////////////////////////////////////////////////////////////////////// + + void updateTexture(const unsigned int _texture, const Texture::Type _type, const unsigned int _x, const unsigned _y, const unsigned int _width, const unsigned int _height, const void* _data) + { + const GLenum type = convertTextureType(_type); + + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, _texture)); + GL_CHECK_ERROR(glTexSubImage2D(GL_TEXTURE_2D, 0, _x, _y, _width, _height, type, GL_UNSIGNED_BYTE, _data)); + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, whiteTexture)); + + } // updateTexture + +////////////////////////////////////////////////////////////////////////// + + void bindTexture(const unsigned int _texture) + { + if(_texture == 0) GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, whiteTexture)); + else GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, _texture)); + + } // bindTexture + +////////////////////////////////////////////////////////////////////////// + + void drawLines(const Vertex* _vertices, const unsigned int _numVertices, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor) + { + GL_CHECK_ERROR(glVertexPointer( 2, GL_FLOAT, sizeof(Vertex), &_vertices[0].pos)); + GL_CHECK_ERROR(glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &_vertices[0].tex)); + GL_CHECK_ERROR(glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof(Vertex), &_vertices[0].col)); + + GL_CHECK_ERROR(glBlendFunc(convertBlendFactor(_srcBlendFactor), convertBlendFactor(_dstBlendFactor))); + + GL_CHECK_ERROR(glDrawArrays(GL_LINES, 0, _numVertices)); + + } // drawLines + +////////////////////////////////////////////////////////////////////////// + + void drawTriangleStrips(const Vertex* _vertices, const unsigned int _numVertices, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor) + { + GL_CHECK_ERROR(glVertexPointer( 2, GL_FLOAT, sizeof(Vertex), &_vertices[0].pos)); + GL_CHECK_ERROR(glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), &_vertices[0].tex)); + GL_CHECK_ERROR(glColorPointer( 4, GL_UNSIGNED_BYTE, sizeof(Vertex), &_vertices[0].col)); + + GL_CHECK_ERROR(glBlendFunc(convertBlendFactor(_srcBlendFactor), convertBlendFactor(_dstBlendFactor))); + + GL_CHECK_ERROR(glDrawArrays(GL_TRIANGLE_STRIP, 0, _numVertices)); + + } // drawTriangleStrips + +////////////////////////////////////////////////////////////////////////// + + void setProjection(const Transform4x4f& _projection) + { + GL_CHECK_ERROR(glMatrixMode(GL_PROJECTION)); + GL_CHECK_ERROR(glLoadMatrixf((GLfloat*)&_projection)); + + } // setProjection + +////////////////////////////////////////////////////////////////////////// + + void setMatrix(const Transform4x4f& _matrix) + { + Transform4x4f matrix = _matrix; + matrix.round(); + + GL_CHECK_ERROR(glMatrixMode(GL_MODELVIEW)); + GL_CHECK_ERROR(glLoadMatrixf((GLfloat*)&matrix)); + + } // setMatrix + +////////////////////////////////////////////////////////////////////////// + + void setViewport(const Rect& _viewport) + { + // glViewport starts at the bottom left of the window + GL_CHECK_ERROR(glViewport( _viewport.x, getWindowHeight() - _viewport.y - _viewport.h, _viewport.w, _viewport.h)); + + } // setViewport + +////////////////////////////////////////////////////////////////////////// + + void setScissor(const Rect& _scissor) + { + if((_scissor.x == 0) && (_scissor.y == 0) && (_scissor.w == 0) && (_scissor.h == 0)) + { + GL_CHECK_ERROR(glDisable(GL_SCISSOR_TEST)); + } + else + { + // glScissor starts at the bottom left of the window + GL_CHECK_ERROR(glScissor(_scissor.x, getWindowHeight() - _scissor.y - _scissor.h, _scissor.w, _scissor.h)); + GL_CHECK_ERROR(glEnable(GL_SCISSOR_TEST)); + } + + } // setScissor + +////////////////////////////////////////////////////////////////////////// + + void setSwapInterval() + { + // vsync + if(Settings::getInstance()->getBool("VSync")) + { + // SDL_GL_SetSwapInterval(0) for immediate updates (no vsync, default), + // 1 for updates synchronized with the vertical retrace, + // or -1 for late swap tearing. + // SDL_GL_SetSwapInterval returns 0 on success, -1 on error. + // if vsync is requested, try normal vsync; if that doesn't work, try late swap tearing + // if that doesn't work, report an error + if(SDL_GL_SetSwapInterval(1) != 0 && SDL_GL_SetSwapInterval(-1) != 0) + LOG(LogWarning) << "Tried to enable vsync, but failed! (" << SDL_GetError() << ")"; + } + else + SDL_GL_SetSwapInterval(0); + + } // setSwapInterval + +////////////////////////////////////////////////////////////////////////// + + void swapBuffers() + { + SDL_GL_SwapWindow(getSDLWindow()); + GL_CHECK_ERROR(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); + + } // swapBuffers + +} // Renderer:: + +#endif // USE_OPENGLES_10 diff --git a/es-core/src/renderers/Renderer_GLES20.cpp b/es-core/src/renderers/Renderer_GLES20.cpp new file mode 100644 index 0000000000..45abb22b9e --- /dev/null +++ b/es-core/src/renderers/Renderer_GLES20.cpp @@ -0,0 +1,514 @@ +#if defined(USE_OPENGLES_20) + +#include "renderers/Renderer.h" +#include "math/Transform4x4f.h" +#include "Log.h" +#include "Settings.h" + +#include +#include + +////////////////////////////////////////////////////////////////////////// + +namespace Renderer +{ + +#if defined(_DEBUG) +#define GL_CHECK_ERROR(Function) (Function, _GLCheckError(#Function)) + + static void _GLCheckError(const char* _funcName) + { + const GLenum errorCode = glGetError(); + + if(errorCode != GL_NO_ERROR) + LOG(LogError) << "GL error: " << _funcName << " failed with error code: " << errorCode; + } +#else +#define GL_CHECK_ERROR(Function) (Function) +#endif + +////////////////////////////////////////////////////////////////////////// + + static SDL_GLContext sdlContext = nullptr; + static Transform4x4f projectionMatrix = Transform4x4f::Identity(); + static Transform4x4f worldViewMatrix = Transform4x4f::Identity(); + static GLuint shaderProgram = 0; + static GLint mvpUniform = 0; + static GLint texAttrib = 0; + static GLint colAttrib = 0; + static GLint posAttrib = 0; + static GLuint vertexBuffer = 0; + static GLuint whiteTexture = 0; + +////////////////////////////////////////////////////////////////////////// + + static void setupShaders() + { + // vertex shader + const GLchar* vertexSource = + "uniform mat4 u_mvp; \n" + "attribute vec2 a_pos; \n" + "attribute vec2 a_tex; \n" + "attribute vec4 a_col; \n" + "varying vec2 v_tex; \n" + "varying vec4 v_col; \n" + "void main(void) \n" + "{ \n" + " gl_Position = u_mvp * vec4(a_pos.xy, 0.0, 1.0); \n" + " v_tex = a_tex; \n" + " v_col = a_col; \n" + "} \n"; + + const GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER); + GL_CHECK_ERROR(glShaderSource(vertexShader, 1, &vertexSource, nullptr)); + GL_CHECK_ERROR(glCompileShader(vertexShader)); + + { + GLint isCompiled = GL_FALSE; + GLint maxLength = 0; + + GL_CHECK_ERROR(glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &isCompiled)); + GL_CHECK_ERROR(glGetShaderiv(vertexShader, GL_INFO_LOG_LENGTH, &maxLength)); + + if(maxLength > 1) + { + char* infoLog = new char[maxLength + 1]; + + GL_CHECK_ERROR(glGetShaderInfoLog(vertexShader, maxLength, &maxLength, infoLog)); + + if(isCompiled == GL_FALSE) + { + LOG(LogError) << "GLSL Vertex Compile Error\n" << infoLog; + } + else + { + if(strstr(infoLog, "WARNING") || strstr(infoLog, "warning") || strstr(infoLog, "Warning")) + LOG(LogWarning) << "GLSL Vertex Compile Warning\n" << infoLog; + else + LOG(LogInfo) << "GLSL Vertex Compile Message\n" << infoLog; + } + + delete[] infoLog; + } + } + + // fragment shader + const GLchar* fragmentSource = + "precision highp float; \n" + "uniform sampler2D u_tex; \n" + "varying vec2 v_tex; \n" + "varying vec4 v_col; \n" + "void main(void) \n" + "{ \n" + " gl_FragColor = texture2D(u_tex, v_tex) * v_col; \n" + "} \n"; + + const GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); + GL_CHECK_ERROR(glShaderSource(fragmentShader, 1, &fragmentSource, nullptr)); + GL_CHECK_ERROR(glCompileShader(fragmentShader)); + + { + GLint isCompiled = GL_FALSE; + GLint maxLength = 0; + + GL_CHECK_ERROR(glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &isCompiled)); + GL_CHECK_ERROR(glGetShaderiv(fragmentShader, GL_INFO_LOG_LENGTH, &maxLength)); + + if(maxLength > 1) + { + char* infoLog = new char[maxLength + 1]; + + GL_CHECK_ERROR(glGetShaderInfoLog(fragmentShader, maxLength, &maxLength, infoLog)); + + if(isCompiled == GL_FALSE) + { + LOG(LogError) << "GLSL Fragment Compile Error\n" << infoLog; + } + else + { + if(strstr(infoLog, "WARNING") || strstr(infoLog, "warning") || strstr(infoLog, "Warning")) + LOG(LogWarning) << "GLSL Fragment Compile Warning\n" << infoLog; + else + LOG(LogInfo) << "GLSL Fragment Compile Message\n" << infoLog; + } + + delete[] infoLog; + } + } + + // shader program + shaderProgram = glCreateProgram(); + GL_CHECK_ERROR(glAttachShader(shaderProgram, vertexShader)); + GL_CHECK_ERROR(glAttachShader(shaderProgram, fragmentShader)); + + GL_CHECK_ERROR(glLinkProgram(shaderProgram)); + + { + GLint isCompiled = GL_FALSE; + GLint maxLength = 0; + + GL_CHECK_ERROR(glGetProgramiv(shaderProgram, GL_LINK_STATUS, &isCompiled)); + GL_CHECK_ERROR(glGetProgramiv(shaderProgram, GL_INFO_LOG_LENGTH, &maxLength)); + + if(maxLength > 1) + { + char* infoLog = new char[maxLength + 1]; + + GL_CHECK_ERROR(glGetProgramInfoLog(shaderProgram, maxLength, &maxLength, infoLog)); + + if(isCompiled == GL_FALSE) + { + LOG(LogError) << "GLSL Link Error\n" << infoLog; + } + else + { + if(strstr(infoLog, "WARNING") || strstr(infoLog, "warning") || strstr(infoLog, "Warning")) + LOG(LogWarning) << "GLSL Link Warning\n" << infoLog; + else + LOG(LogInfo) << "GLSL Link Message\n" << infoLog; + } + + delete[] infoLog; + } + } + + GL_CHECK_ERROR(glUseProgram(shaderProgram)); + + mvpUniform = glGetUniformLocation(shaderProgram, "u_mvp"); + posAttrib = glGetAttribLocation(shaderProgram, "a_pos"); + texAttrib = glGetAttribLocation(shaderProgram, "a_tex"); + colAttrib = glGetAttribLocation(shaderProgram, "a_col"); + GLint texUniform = glGetUniformLocation(shaderProgram, "u_tex"); + GL_CHECK_ERROR(glEnableVertexAttribArray(posAttrib)); + GL_CHECK_ERROR(glEnableVertexAttribArray(texAttrib)); + GL_CHECK_ERROR(glEnableVertexAttribArray(colAttrib)); + GL_CHECK_ERROR(glUniform1i(texUniform, 0)); + + } // setupShaders + +////////////////////////////////////////////////////////////////////////// + + static void setupVertexBuffer() + { + GL_CHECK_ERROR(glGenBuffers(1, &vertexBuffer)); + GL_CHECK_ERROR(glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer)); + + } // setupVertexBuffer + +////////////////////////////////////////////////////////////////////////// + + static GLenum convertBlendFactor(const Blend::Factor _blendFactor) + { + switch(_blendFactor) + { + case Blend::ZERO: { return GL_ZERO; } break; + case Blend::ONE: { return GL_ONE; } break; + case Blend::SRC_COLOR: { return GL_SRC_COLOR; } break; + case Blend::ONE_MINUS_SRC_COLOR: { return GL_ONE_MINUS_SRC_COLOR; } break; + case Blend::SRC_ALPHA: { return GL_SRC_ALPHA; } break; + case Blend::ONE_MINUS_SRC_ALPHA: { return GL_ONE_MINUS_SRC_ALPHA; } break; + case Blend::DST_COLOR: { return GL_DST_COLOR; } break; + case Blend::ONE_MINUS_DST_COLOR: { return GL_ONE_MINUS_DST_COLOR; } break; + case Blend::DST_ALPHA: { return GL_DST_ALPHA; } break; + case Blend::ONE_MINUS_DST_ALPHA: { return GL_ONE_MINUS_DST_ALPHA; } break; + default: { return GL_ZERO; } + } + + } // convertBlendFactor + +////////////////////////////////////////////////////////////////////////// + + static GLenum convertTextureType(const Texture::Type _type) + { + switch(_type) + { + case Texture::RGBA: { return GL_RGBA; } break; + case Texture::ALPHA: { return GL_LUMINANCE_ALPHA; } break; + default: { return GL_ZERO; } + } + + } // convertTextureType + +////////////////////////////////////////////////////////////////////////// + + unsigned int convertColor(const unsigned int _color) + { + // convert from rgba to abgr + const unsigned char r = ((_color & 0xff000000) >> 24) & 255; + const unsigned char g = ((_color & 0x00ff0000) >> 16) & 255; + const unsigned char b = ((_color & 0x0000ff00) >> 8) & 255; + const unsigned char a = ((_color & 0x000000ff) ) & 255; + + return ((a << 24) | (b << 16) | (g << 8) | (r)); + + } // convertColor + +////////////////////////////////////////////////////////////////////////// + + unsigned int getWindowFlags() + { + return SDL_WINDOW_OPENGL; + + } // getWindowFlags + +////////////////////////////////////////////////////////////////////////// + + void setupWindow() + { + SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); + SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); + + SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); + SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); + SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); + SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); + + } // setupWindow + +////////////////////////////////////////////////////////////////////////// + + void createContext() + { + sdlContext = SDL_GL_CreateContext(getSDLWindow()); + SDL_GL_MakeCurrent(getSDLWindow(), sdlContext); + + const std::string vendor = glGetString(GL_VENDOR) ? (const char*)glGetString(GL_VENDOR) : ""; + const std::string renderer = glGetString(GL_RENDERER) ? (const char*)glGetString(GL_RENDERER) : ""; + const std::string version = glGetString(GL_VERSION) ? (const char*)glGetString(GL_VERSION) : ""; + const std::string extensions = glGetString(GL_EXTENSIONS) ? (const char*)glGetString(GL_EXTENSIONS) : ""; + + LOG(LogInfo) << "GL vendor: " << vendor; + LOG(LogInfo) << "GL renderer: " << renderer; + LOG(LogInfo) << "GL version: " << version; + LOG(LogInfo) << "Checking available OpenGL extensions..."; + LOG(LogInfo) << " ARB_texture_non_power_of_two: " << (extensions.find("ARB_texture_non_power_of_two") != std::string::npos ? "ok" : "MISSING"); + + setupShaders(); + setupVertexBuffer(); + + const uint8_t data[4] = {255, 255, 255, 255}; + whiteTexture = createTexture(Texture::RGBA, false, true, 1, 1, data); + + GL_CHECK_ERROR(glClearColor(0.0f, 0.0f, 0.0f, 1.0f)); + GL_CHECK_ERROR(glActiveTexture(GL_TEXTURE0)); + GL_CHECK_ERROR(glEnable(GL_BLEND)); + GL_CHECK_ERROR(glPixelStorei(GL_PACK_ALIGNMENT, 1)); + GL_CHECK_ERROR(glPixelStorei(GL_UNPACK_ALIGNMENT, 1)); + + } // createContext + +////////////////////////////////////////////////////////////////////////// + + void destroyContext() + { + SDL_GL_DeleteContext(sdlContext); + sdlContext = nullptr; + + } // destroyContext + +////////////////////////////////////////////////////////////////////////// + + unsigned int createTexture(const Texture::Type _type, const bool _linear, const bool _repeat, const unsigned int _width, const unsigned int _height, const void* _data) + { + const GLenum type = convertTextureType(_type); + unsigned int texture; + + GL_CHECK_ERROR(glGenTextures(1, &texture)); + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, texture)); + + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, _repeat ? GL_REPEAT : GL_CLAMP_TO_EDGE)); + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, _repeat ? GL_REPEAT : GL_CLAMP_TO_EDGE)); + + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, _linear ? GL_LINEAR : GL_NEAREST)); + GL_CHECK_ERROR(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)); + + // Regular GL_ALPHA textures are black + alpha in shaders + // Create a GL_LUMINANCE_ALPHA texture instead so its white + alpha + if(type == GL_LUMINANCE_ALPHA) + { + uint8_t* a_data = (uint8_t*)_data; + uint8_t* la_data = new uint8_t[_width * _height * 2]; + for(uint32_t i=0; i<(_width * _height); ++i) + { + la_data[(i * 2) + 0] = 255; + la_data[(i * 2) + 1] = a_data ? a_data[i] : 255; + } + + GL_CHECK_ERROR(glTexImage2D(GL_TEXTURE_2D, 0, type, _width, _height, 0, type, GL_UNSIGNED_BYTE, la_data)); + + delete[] la_data; + } + else + { + GL_CHECK_ERROR(glTexImage2D(GL_TEXTURE_2D, 0, type, _width, _height, 0, type, GL_UNSIGNED_BYTE, _data)); + } + + return texture; + + } // createTexture + +////////////////////////////////////////////////////////////////////////// + + void destroyTexture(const unsigned int _texture) + { + GL_CHECK_ERROR(glDeleteTextures(1, &_texture)); + + } // destroyTexture + +////////////////////////////////////////////////////////////////////////// + + void updateTexture(const unsigned int _texture, const Texture::Type _type, const unsigned int _x, const unsigned _y, const unsigned int _width, const unsigned int _height, const void* _data) + { + const GLenum type = convertTextureType(_type); + + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, _texture)); + + // Regular GL_ALPHA textures are black + alpha in shaders + // Create a GL_LUMINANCE_ALPHA texture instead so its white + alpha + if(type == GL_LUMINANCE_ALPHA) + { + uint8_t* a_data = (uint8_t*)_data; + uint8_t* la_data = new uint8_t[_width * _height * 2]; + for(uint32_t i=0; i<(_width * _height); ++i) + { + la_data[(i * 2) + 0] = 255; + la_data[(i * 2) + 1] = a_data ? a_data[i] : 255; + } + + GL_CHECK_ERROR(glTexSubImage2D(GL_TEXTURE_2D, 0, _x, _y, _width, _height, type, GL_UNSIGNED_BYTE, la_data)); + + delete[] la_data; + } + else + { + GL_CHECK_ERROR(glTexSubImage2D(GL_TEXTURE_2D, 0, _x, _y, _width, _height, type, GL_UNSIGNED_BYTE, _data)); + } + + GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, whiteTexture)); + + } // updateTexture + +////////////////////////////////////////////////////////////////////////// + + void bindTexture(const unsigned int _texture) + { + if(_texture == 0) GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, whiteTexture)); + else GL_CHECK_ERROR(glBindTexture(GL_TEXTURE_2D, _texture)); + + } // bindTexture + +////////////////////////////////////////////////////////////////////////// + + void drawLines(const Vertex* _vertices, const unsigned int _numVertices, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor) + { + GL_CHECK_ERROR(glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (const void*)offsetof(Vertex, pos))); + GL_CHECK_ERROR(glVertexAttribPointer(texAttrib, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (const void*)offsetof(Vertex, tex))); + GL_CHECK_ERROR(glVertexAttribPointer(colAttrib, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(Vertex), (const void*)offsetof(Vertex, col))); + + GL_CHECK_ERROR(glBufferData(GL_ARRAY_BUFFER, sizeof(Vertex) * _numVertices, _vertices, GL_DYNAMIC_DRAW)); + GL_CHECK_ERROR(glBlendFunc(convertBlendFactor(_srcBlendFactor), convertBlendFactor(_dstBlendFactor))); + + GL_CHECK_ERROR(glDrawArrays(GL_LINES, 0, _numVertices)); + + } // drawLines + +////////////////////////////////////////////////////////////////////////// + + void drawTriangleStrips(const Vertex* _vertices, const unsigned int _numVertices, const Blend::Factor _srcBlendFactor, const Blend::Factor _dstBlendFactor) + { + GL_CHECK_ERROR(glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (const void*)offsetof(Vertex, pos))); + GL_CHECK_ERROR(glVertexAttribPointer(texAttrib, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (const void*)offsetof(Vertex, tex))); + GL_CHECK_ERROR(glVertexAttribPointer(colAttrib, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(Vertex), (const void*)offsetof(Vertex, col))); + + GL_CHECK_ERROR(glBufferData(GL_ARRAY_BUFFER, sizeof(Vertex) * _numVertices, _vertices, GL_DYNAMIC_DRAW)); + GL_CHECK_ERROR(glBlendFunc(convertBlendFactor(_srcBlendFactor), convertBlendFactor(_dstBlendFactor))); + + GL_CHECK_ERROR(glDrawArrays(GL_TRIANGLE_STRIP, 0, _numVertices)); + + } // drawTriangleStrips + +////////////////////////////////////////////////////////////////////////// + + void setProjection(const Transform4x4f& _projection) + { + projectionMatrix = _projection; + + Transform4x4f mvpMatrix = projectionMatrix * worldViewMatrix; + GL_CHECK_ERROR(glUniformMatrix4fv(mvpUniform, 1, GL_FALSE, (float*)&mvpMatrix)); + + } // setProjection + +////////////////////////////////////////////////////////////////////////// + + void setMatrix(const Transform4x4f& _matrix) + { + worldViewMatrix = _matrix; + worldViewMatrix.round(); + + Transform4x4f mvpMatrix = projectionMatrix * worldViewMatrix; + GL_CHECK_ERROR(glUniformMatrix4fv(mvpUniform, 1, GL_FALSE, (float*)&mvpMatrix)); + + } // setMatrix + +////////////////////////////////////////////////////////////////////////// + + void setViewport(const Rect& _viewport) + { + // glViewport starts at the bottom left of the window + GL_CHECK_ERROR(glViewport( _viewport.x, getWindowHeight() - _viewport.y - _viewport.h, _viewport.w, _viewport.h)); + + } // setViewport + +////////////////////////////////////////////////////////////////////////// + + void setScissor(const Rect& _scissor) + { + if((_scissor.x == 0) && (_scissor.y == 0) && (_scissor.w == 0) && (_scissor.h == 0)) + { + GL_CHECK_ERROR(glDisable(GL_SCISSOR_TEST)); + } + else + { + // glScissor starts at the bottom left of the window + GL_CHECK_ERROR(glScissor(_scissor.x, getWindowHeight() - _scissor.y - _scissor.h, _scissor.w, _scissor.h)); + GL_CHECK_ERROR(glEnable(GL_SCISSOR_TEST)); + } + + } // setScissor + +////////////////////////////////////////////////////////////////////////// + + void setSwapInterval() + { + // vsync + if(Settings::getInstance()->getBool("VSync")) + { + // SDL_GL_SetSwapInterval(0) for immediate updates (no vsync, default), + // 1 for updates synchronized with the vertical retrace, + // or -1 for late swap tearing. + // SDL_GL_SetSwapInterval returns 0 on success, -1 on error. + // if vsync is requested, try normal vsync; if that doesn't work, try late swap tearing + // if that doesn't work, report an error + if(SDL_GL_SetSwapInterval(1) != 0 && SDL_GL_SetSwapInterval(-1) != 0) + LOG(LogWarning) << "Tried to enable vsync, but failed! (" << SDL_GetError() << ")"; + } + else + SDL_GL_SetSwapInterval(0); + + } // setSwapInterval + +////////////////////////////////////////////////////////////////////////// + + void swapBuffers() + { + SDL_GL_SwapWindow(getSDLWindow()); + GL_CHECK_ERROR(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); + + } // swapBuffers + +} // Renderer:: + +#endif // USE_OPENGLES_20 diff --git a/es-core/src/resources/Font.cpp b/es-core/src/resources/Font.cpp index 7e02249b18..5a1d35ea6e 100644 --- a/es-core/src/resources/Font.cpp +++ b/es-core/src/resources/Font.cpp @@ -1,11 +1,13 @@ #include "resources/Font.h" -#include -#include -#include -#include -#include "Renderer.h" + +#include "renderers/Renderer.h" +#include "utils/FileSystemUtil.h" +#include "utils/StringUtil.h" #include "Log.h" -#include "Util.h" + +#ifdef WIN32 +#include +#endif FT_Library Font::sLibrary = NULL; @@ -13,136 +15,13 @@ int Font::getSize() const { return mSize; } std::map< std::pair, std::weak_ptr > Font::sFontMap; - -// utf8 stuff -size_t Font::getNextCursor(const std::string& str, size_t cursor) -{ - // compare to character at the cursor - const char& c = str[cursor]; - - size_t result = cursor; - if((c & 0x80) == 0) // 0xxxxxxx, one byte character - { - result += 1; - } - else if((c & 0xE0) == 0xC0) // 110xxxxx, two bytes left in character - { - result += 2; - } - else if((c & 0xF0) == 0xE0) // 1110xxxx, three bytes left in character - { - result += 3; - } - else if((c & 0xF8) == 0xF0) // 11110xxx, four bytes left in character - { - result += 4; - } - else - { - // error, invalid utf8 string - - // if this assert is tripped, the cursor is in the middle of a utf8 code point - assert((c & 0xC0) != 0x80); // character is 10xxxxxx - - // if that wasn't it, something crazy happened - assert(false); - } - - if(str.length() < result || result < cursor) // don't go beyond the very end of the string, try and catch overflow - return cursor; - return result; -} - -// note: will happily accept malformed utf8 -size_t Font::getPrevCursor(const std::string& str, size_t cursor) -{ - if(cursor == 0) - return 0; - - do - { - cursor--; - } while(cursor > 0 && - (str[cursor] & 0xC0) == 0x80); // character is 10xxxxxx - - return cursor; -} - -size_t Font::moveCursor(const std::string& str, size_t cursor, int amt) -{ - if(amt > 0) - { - for(int i = 0; i < amt; i++) - cursor = Font::getNextCursor(str, cursor); - } - else if(amt < 0) - { - for(int i = amt; i < 0; i++) - cursor = Font::getPrevCursor(str, cursor); - } - - return cursor; -} - -UnicodeChar Font::readUnicodeChar(const std::string& str, size_t& cursor) -{ - const char& c = str[cursor]; - - if((c & 0x80) == 0) // 0xxxxxxx, one byte character - { - // 0xxxxxxx - cursor++; - return (UnicodeChar)c; - } - else if((c & 0xE0) == 0xC0) // 110xxxxx, two bytes left in character - { - // 110xxxxx 10xxxxxx - UnicodeChar val = ((str[cursor] & 0x1F) << 6) | - (str[cursor + 1] & 0x3F); - cursor += 2; - return val; - } - else if((c & 0xF0) == 0xE0) // 1110xxxx, three bytes left in character - { - // 1110xxxx 10xxxxxx 10xxxxxx - UnicodeChar val = ((str[cursor] & 0x0F) << 12) | - ((str[cursor + 1] & 0x3F) << 6) | - (str[cursor + 2] & 0x3F); - cursor += 3; - return val; - } - else if((c & 0xF8) == 0xF0) // 11110xxx, four bytes left in character - { - // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - UnicodeChar val = ((str[cursor] & 0x07) << 18) | - ((str[cursor + 1] & 0x3F) << 12) | - ((str[cursor + 2] & 0x3F) << 6) | - (str[cursor + 3] & 0x3F); - cursor += 4; - return val; - } - else - { - // error, invalid utf8 string - - // if this assert is tripped, the cursor is in the middle of a utf8 code point - assert((c & 0xC0) != 0x80); // character is 10xxxxxx - - // if that wasn't it, something crazy happened - assert(false); - } - - // error - return 0; -} - - Font::FontFace::FontFace(ResourceData&& d, int size) : data(d) { - int err = FT_New_Memory_Face(sLibrary, data.ptr.get(), data.length, 0, &face); + int err = FT_New_Memory_Face(sLibrary, data.ptr.get(), (FT_Long)data.length, 0, &face); assert(!err); - - FT_Set_Pixel_Sizes(face, 0, size); + + if(!err) + FT_Set_Pixel_Sizes(face, 0, size); } Font::FontFace::~FontFace() @@ -164,10 +43,10 @@ void Font::initLibrary() size_t Font::getMemUsage() const { size_t memUsage = 0; - for(auto it = mTextures.begin(); it != mTextures.end(); it++) + for(auto it = mTextures.cbegin(); it != mTextures.cend(); it++) memUsage += it->textureSize.x() * it->textureSize.y() * 4; - for(auto it = mFaceCache.begin(); it != mFaceCache.end(); it++) + for(auto it = mFaceCache.cbegin(); it != mFaceCache.cend(); it++) memUsage += it->second->data.length; return memUsage; @@ -177,8 +56,8 @@ size_t Font::getTotalMemUsage() { size_t total = 0; - auto it = sFontMap.begin(); - while(it != sFontMap.end()) + auto it = sFontMap.cbegin(); + while(it != sFontMap.cend()) { if(it->second.expired()) { @@ -196,14 +75,16 @@ size_t Font::getTotalMemUsage() Font::Font(int size, const std::string& path) : mSize(size), mPath(path) { assert(mSize > 0); - + + mTextures.reserve(10); + mLoaded = true; mMaxGlyphHeight = 0; if(!sLibrary) initLibrary(); // always initialize ASCII characters - for(UnicodeChar i = 32; i < 128; i++) + for(unsigned int i = 32; i < 128; i++) getGlyph(i); clearFaceCache(); @@ -211,26 +92,37 @@ Font::Font(int size, const std::string& path) : mSize(size), mPath(path) Font::~Font() { - unload(ResourceManager::getInstance()); + unload(); } -void Font::reload(std::shared_ptr& rm) +void Font::reload() { + if (mLoaded) + return; + rebuildTextures(); + mLoaded = true; } -void Font::unload(std::shared_ptr& rm) +bool Font::unload() { - unloadTextures(); + if (mLoaded) + { + unloadTextures(); + mLoaded = false; + return true; + } + + return false; } std::shared_ptr Font::get(int size, const std::string& path) { - const std::string canonicalPath = getCanonicalPath(path); + const std::string canonicalPath = Utils::FileSystem::getCanonicalPath(path); std::pair def(canonicalPath.empty() ? getDefaultPath() : canonicalPath, size); auto foundFont = sFontMap.find(def); - if(foundFont != sFontMap.end()) + if(foundFont != sFontMap.cend()) { if(!foundFont->second.expired()) return foundFont->second.lock(); @@ -253,8 +145,8 @@ void Font::unloadTextures() Font::FontTexture::FontTexture() { textureId = 0; - textureSize << 2048, 512; - writePos = Eigen::Vector2i::Zero(); + textureSize = Vector2i(2048, 512); + writePos = Vector2i::Zero(); rowHeight = 0; } @@ -263,7 +155,7 @@ Font::FontTexture::~FontTexture() deinitTexture(); } -bool Font::FontTexture::findEmpty(const Eigen::Vector2i& size, Eigen::Vector2i& cursor_out) +bool Font::FontTexture::findEmpty(const Vector2i& size, Vector2i& cursor_out) { if(size.x() >= textureSize.x() || size.y() >= textureSize.y()) return false; @@ -273,7 +165,7 @@ bool Font::FontTexture::findEmpty(const Eigen::Vector2i& size, Eigen::Vector2i& { // row full, but it should fit on the next row // move cursor to next row - writePos << 0, writePos.y() + rowHeight + 1; // leave 1px of space between glyphs + writePos = Vector2i(0, writePos.y() + rowHeight + 1); // leave 1px of space between glyphs rowHeight = 0; } @@ -296,32 +188,19 @@ bool Font::FontTexture::findEmpty(const Eigen::Vector2i& size, Eigen::Vector2i& void Font::FontTexture::initTexture() { assert(textureId == 0); - - glGenTextures(1, &textureId); - glBindTexture(GL_TEXTURE_2D, textureId); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, textureSize.x(), textureSize.y(), 0, GL_ALPHA, GL_UNSIGNED_BYTE, NULL); + textureId = Renderer::createTexture(Renderer::Texture::ALPHA, false, false, textureSize.x(), textureSize.y(), nullptr); } void Font::FontTexture::deinitTexture() { if(textureId != 0) { - glDeleteTextures(1, &textureId); + Renderer::destroyTexture(textureId); textureId = 0; } } -void Font::getTextureForNewGlyph(const Eigen::Vector2i& glyphSize, FontTexture*& tex_out, Eigen::Vector2i& cursor_out) +void Font::getTextureForNewGlyph(const Vector2i& glyphSize, FontTexture*& tex_out, Vector2i& cursor_out) { if(mTextures.size()) { @@ -333,12 +212,19 @@ void Font::getTextureForNewGlyph(const Eigen::Vector2i& glyphSize, FontTexture*& return; // yes } + if(mTextures.size() >= mTextures.capacity()) + { + LOG(LogError) << "Glyph too many to create a new texture!"; + tex_out = NULL; + return; + } + // current textures are full, // make a new one mTextures.push_back(FontTexture()); tex_out = &mTextures.back(); tex_out->initTexture(); - + bool ok = tex_out->findEmpty(glyphSize, cursor_out); if(!ok) { @@ -382,8 +268,9 @@ std::vector getFallbackFontPaths() #else // Linux - // TODO const char* paths[] = { + "/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf", + "/usr/share/fonts/truetype/freefont/FreeMono.ttf", "/usr/share/fonts/truetype/droid/DroidSansFallbackFull.ttf" // japanese, chinese, present on Debian }; @@ -400,7 +287,7 @@ std::vector getFallbackFontPaths() #endif } -FT_Face Font::getFaceForChar(UnicodeChar id) +FT_Face Font::getFaceForChar(unsigned int id) { static const std::vector fallbackFonts = getFallbackFontPaths(); @@ -409,7 +296,7 @@ FT_Face Font::getFaceForChar(UnicodeChar id) { auto fit = mFaceCache.find(i); - if(fit == mFaceCache.end()) // doesn't exist yet + if(fit == mFaceCache.cend()) // doesn't exist yet { // i == 0 -> mPath // otherwise, take from fallbackFonts @@ -424,7 +311,7 @@ FT_Face Font::getFaceForChar(UnicodeChar id) } // nothing has a valid glyph - return the "real" face so we get a "missing" character - return mFaceCache.begin()->second->face; + return mFaceCache.cbegin()->second->face; } void Font::clearFaceCache() @@ -432,11 +319,11 @@ void Font::clearFaceCache() mFaceCache.clear(); } -Font::Glyph* Font::getGlyph(UnicodeChar id) +Font::Glyph* Font::getGlyph(unsigned int id) { // is it already loaded? auto it = mGlyphMap.find(id); - if(it != mGlyphMap.end()) + if(it != mGlyphMap.cend()) return &it->second; // nope, need to make a glyph @@ -455,10 +342,10 @@ Font::Glyph* Font::getGlyph(UnicodeChar id) return NULL; } - Eigen::Vector2i glyphSize(g->bitmap.width, g->bitmap.rows); + Vector2i glyphSize(g->bitmap.width, g->bitmap.rows); FontTexture* tex = NULL; - Eigen::Vector2i cursor; + Vector2i cursor; getTextureForNewGlyph(glyphSize, tex, cursor); // getTextureForNewGlyph can fail if the glyph is bigger than the max texture size (absurdly large font size) @@ -470,18 +357,16 @@ Font::Glyph* Font::getGlyph(UnicodeChar id) // create glyph Glyph& glyph = mGlyphMap[id]; - + glyph.texture = tex; - glyph.texPos << cursor.x() / (float)tex->textureSize.x(), cursor.y() / (float)tex->textureSize.y(); - glyph.texSize << glyphSize.x() / (float)tex->textureSize.x(), glyphSize.y() / (float)tex->textureSize.y(); + glyph.texPos = Vector2f(cursor.x() / (float)tex->textureSize.x(), cursor.y() / (float)tex->textureSize.y()); + glyph.texSize = Vector2f(glyphSize.x() / (float)tex->textureSize.x(), glyphSize.y() / (float)tex->textureSize.y()); - glyph.advance << (float)g->metrics.horiAdvance / 64.0f, (float)g->metrics.vertAdvance / 64.0f; - glyph.bearing << (float)g->metrics.horiBearingX / 64.0f, (float)g->metrics.horiBearingY / 64.0f; + glyph.advance = Vector2f((float)g->metrics.horiAdvance / 64.0f, (float)g->metrics.vertAdvance / 64.0f); + glyph.bearing = Vector2f((float)g->metrics.horiBearingX / 64.0f, (float)g->metrics.horiBearingY / 64.0f); // upload glyph bitmap to texture - glBindTexture(GL_TEXTURE_2D, tex->textureId); - glTexSubImage2D(GL_TEXTURE_2D, 0, cursor.x(), cursor.y(), glyphSize.x(), glyphSize.y(), GL_ALPHA, GL_UNSIGNED_BYTE, g->bitmap.buffer); - glBindTexture(GL_TEXTURE_2D, 0); + Renderer::updateTexture(tex->textureId, Renderer::Texture::ALPHA, cursor.x(), cursor.y(), glyphSize.x(), glyphSize.y(), g->bitmap.buffer); // update max glyph height if(glyphSize.y() > mMaxGlyphHeight) @@ -501,7 +386,7 @@ void Font::rebuildTextures() } // reupload the texture data - for(auto it = mGlyphMap.begin(); it != mGlyphMap.end(); it++) + for(auto it = mGlyphMap.cbegin(); it != mGlyphMap.cend(); it++) { FT_Face face = getFaceForChar(it->first); FT_GlyphSlot glyphSlot = face->glyph; @@ -510,17 +395,14 @@ void Font::rebuildTextures() FT_Load_Char(face, it->first, FT_LOAD_RENDER); FontTexture* tex = it->second.texture; - + // find the position/size - Eigen::Vector2i cursor(it->second.texPos.x() * tex->textureSize.x(), it->second.texPos.y() * tex->textureSize.y()); - Eigen::Vector2i glyphSize(it->second.texSize.x() * tex->textureSize.x(), it->second.texSize.y() * tex->textureSize.y()); - + Vector2i cursor((int)(it->second.texPos.x() * tex->textureSize.x()), (int)(it->second.texPos.y() * tex->textureSize.y())); + Vector2i glyphSize((int)(it->second.texSize.x() * tex->textureSize.x()), (int)(it->second.texSize.y() * tex->textureSize.y())); + // upload to texture - glBindTexture(GL_TEXTURE_2D, tex->textureId); - glTexSubImage2D(GL_TEXTURE_2D, 0, cursor.x(), cursor.y(), glyphSize.x(), glyphSize.y(), GL_ALPHA, GL_UNSIGNED_BYTE, glyphSlot->bitmap.buffer); + Renderer::updateTexture(tex->textureId, Renderer::Texture::ALPHA, cursor.x(), cursor.y(), glyphSize.x(), glyphSize.y(), glyphSlot->bitmap.buffer); } - - glBindTexture(GL_TEXTURE_2D, 0); } void Font::renderTextCache(TextCache* cache) @@ -531,37 +413,41 @@ void Font::renderTextCache(TextCache* cache) return; } - for(auto it = cache->vertexLists.begin(); it != cache->vertexLists.end(); it++) + for(auto it = cache->vertexLists.cbegin(); it != cache->vertexLists.cend(); it++) { assert(*it->textureIdPtr != 0); auto vertexList = *it; - glBindTexture(GL_TEXTURE_2D, *it->textureIdPtr); - glEnable(GL_TEXTURE_2D); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - glEnableClientState(GL_COLOR_ARRAY); + Renderer::bindTexture(*it->textureIdPtr); + Renderer::drawTriangleStrips(&it->verts[0], (int)it->verts.size()); + } +} - glVertexPointer(2, GL_FLOAT, sizeof(TextCache::Vertex), it->verts[0].pos.data()); - glTexCoordPointer(2, GL_FLOAT, sizeof(TextCache::Vertex), it->verts[0].tex.data()); - glColorPointer(4, GL_UNSIGNED_BYTE, 0, it->colors.data()); +Vector2f Font::sizeCodePoint(unsigned int character, float lineSpacing) +{ + float lineWidth = 0.0f; - glDrawArrays(GL_TRIANGLES, 0, it->verts.size()); + const float lineHeight = getHeight(lineSpacing); - glDisableClientState(GL_VERTEX_ARRAY); - glDisableClientState(GL_TEXTURE_COORD_ARRAY); - glDisableClientState(GL_COLOR_ARRAY); + float y = lineHeight; - glDisable(GL_TEXTURE_2D); - glDisable(GL_BLEND); + if(character == '\n') + { + lineWidth = 0.0f; + y += lineHeight; } + else + { + Glyph* glyph = getGlyph(character); + if (glyph) + lineWidth = glyph->advance.x(); + } + + return Vector2f(lineWidth, y); } -Eigen::Vector2f Font::sizeText(std::string text, float lineSpacing) +Vector2f Font::sizeText(std::string text, float lineSpacing) { float lineWidth = 0.0f; float highestWidth = 0.0f; @@ -573,9 +459,9 @@ Eigen::Vector2f Font::sizeText(std::string text, float lineSpacing) size_t i = 0; while(i < text.length()) { - UnicodeChar character = readUnicodeChar(text, i); // advances i + unsigned int character = Utils::String::chars2Unicode(text, i); // advances i - if(character == (UnicodeChar)'\n') + if(character == '\n') { if(lineWidth > highestWidth) highestWidth = lineWidth; @@ -592,7 +478,7 @@ Eigen::Vector2f Font::sizeText(std::string text, float lineSpacing) if(lineWidth > highestWidth) highestWidth = lineWidth; - return Eigen::Vector2f(highestWidth, y); + return Vector2f(highestWidth, y); } float Font::getHeight(float lineSpacing) const @@ -602,60 +488,79 @@ float Font::getHeight(float lineSpacing) const float Font::getLetterHeight() { - Glyph* glyph = getGlyph((UnicodeChar)'S'); + Glyph* glyph = getGlyph('S'); assert(glyph); return glyph->texSize.y() * glyph->texture->textureSize.y(); } -//the worst algorithm ever written -//breaks up a normal string with newlines to make it fit xLen -std::string Font::wrapText(std::string text, float xLen) + +// Naive way to find whitespace characters, only includes the common ones in the ASCII range! +bool Font::isWhiteSpace(unsigned int c) { - std::string out; + return (c == (unsigned int) ' ' || + c == (unsigned int) '\n' || + c == (unsigned int) '\t' || + c == (unsigned int) '\v' || + c == (unsigned int) '\f' || + c == (unsigned int) '\r'); +} - std::string line, word, temp; - size_t space; +// Breaks up a normal string with newlines to make it fit width (in pixels) +std::string Font::wrapText(std::string text, float maxWidth) +{ + std::string out = ""; - Eigen::Vector2f textSize; + if(maxWidth <= 0) + return out; - while(text.length() > 0) //while there's text or we still have text to render + while(text.length() > 0) // find next cut-point { - space = text.find_first_of(" \t\n"); - if(space == std::string::npos) - space = text.length() - 1; - - word = text.substr(0, space + 1); - text.erase(0, space + 1); + size_t cursor = 0; + float lineWidth = 0.0f; + size_t lastWhiteSpace = 0; - temp = line + word; - - textSize = sizeText(temp); + while((lineWidth < maxWidth) && (cursor < text.length())) + { + unsigned int c = Utils::String::chars2Unicode(text, cursor); // also advances cursor! + lineWidth += sizeCodePoint(c).x(); + if(isWhiteSpace(c)) + { + lastWhiteSpace = cursor; + } + + if(c == '\n') + { + lineWidth = 0.0f; + } + } - // if the word will fit on the line, add it to our line, and continue - if(textSize.x() <= xLen) + if(cursor == text.length() && lineWidth <= maxWidth) + // arrived at end of text while being in bounds of textbox + // second clause is mandatory for short descriptions which coincidentially + // ending with cursor at text end but slightly overrunning the bounding box + // to be wrapped on the next line, thus have to hit the else branch { - line = temp; - continue; - }else{ - // the next word won't fit, so break here - out += line + '\n'; - line = word; + out += text; + text.erase(); + } + else // need to cut at last whitespace or lacking that, the previous cursor. + { + size_t cut = (lastWhiteSpace != 0) ? lastWhiteSpace : Utils::String::prevCursor(text, cursor); + out += text.substr(0, cut) + "\n"; + text.erase(0, cut); + lineWidth = 0.0f; } } - - // whatever's left should fit - out += line; - return out; } -Eigen::Vector2f Font::sizeWrappedText(std::string text, float xLen, float lineSpacing) +Vector2f Font::sizeWrappedText(std::string text, float xLen, float lineSpacing) { text = wrapText(text, xLen); return sizeText(text, lineSpacing); } -Eigen::Vector2f Font::getWrappedTextCursorOffset(std::string text, float xLen, size_t stop, float lineSpacing) +Vector2f Font::getWrappedTextCursorOffset(std::string text, float xLen, size_t stop, float lineSpacing) { std::string wrappedText = wrapText(text, xLen); @@ -666,21 +571,21 @@ Eigen::Vector2f Font::getWrappedTextCursorOffset(std::string text, float xLen, s size_t cursor = 0; while(cursor < stop) { - UnicodeChar wrappedCharacter = readUnicodeChar(wrappedText, wrapCursor); - UnicodeChar character = readUnicodeChar(text, cursor); + unsigned int wrappedCharacter = Utils::String::chars2Unicode(wrappedText, wrapCursor); + unsigned int character = Utils::String::chars2Unicode(text, cursor); - if(wrappedCharacter == (UnicodeChar)'\n' && character != (UnicodeChar)'\n') + if(wrappedCharacter == '\n' && character != '\n') { //this is where the wordwrap inserted a newline //reset lineWidth and increment y, but don't consume a cursor character lineWidth = 0.0f; y += getHeight(lineSpacing); - cursor = getPrevCursor(text, cursor); // unconsume + cursor = Utils::String::prevCursor(text, cursor); // unconsume continue; } - if(character == (UnicodeChar)'\n') + if(character == '\n') { lineWidth = 0.0f; y += getHeight(lineSpacing); @@ -692,7 +597,7 @@ Eigen::Vector2f Font::getWrappedTextCursorOffset(std::string text, float xLen, s lineWidth += glyph->advance.x(); } - return Eigen::Vector2f(lineWidth, y); + return Vector2f(lineWidth, y); } //============================================================================================================= @@ -703,54 +608,48 @@ float Font::getNewlineStartOffset(const std::string& text, const unsigned int& c { switch(alignment) { - case ALIGN_LEFT: - return 0; - case ALIGN_CENTER: - { - unsigned int endChar = text.find('\n', charStart); - return (xLen - sizeText(text.substr(charStart, endChar != std::string::npos ? endChar - charStart : endChar)).x()) / 2.0f; - } - case ALIGN_RIGHT: - { - unsigned int endChar = text.find('\n', charStart); - return xLen - (sizeText(text.substr(charStart, endChar != std::string::npos ? endChar - charStart : endChar)).x()); - } - default: - return 0; + case ALIGN_LEFT: + return 0; + case ALIGN_CENTER: + { + size_t endChar = text.find('\n', charStart); + return (xLen - sizeText(text.substr(charStart, endChar != std::string::npos ? endChar - charStart : endChar)).x()) / 2.0f; + } + case ALIGN_RIGHT: + { + size_t endChar = text.find('\n', charStart); + return xLen - (sizeText(text.substr(charStart, endChar != std::string::npos ? endChar - charStart : endChar)).x()); + } + default: + return 0; } } -inline float font_round(float v) -{ - return round(v); -} - -TextCache* Font::buildTextCache(const std::string& text, Eigen::Vector2f offset, unsigned int color, float xLen, Alignment alignment, float lineSpacing) +TextCache* Font::buildTextCache(const std::string& text, Vector2f offset, unsigned int color, float xLen, Alignment alignment, float lineSpacing) { float x = offset[0] + (xLen != 0 ? getNewlineStartOffset(text, 0, xLen, alignment) : 0); - - float yTop = getGlyph((UnicodeChar)'S')->bearing.y(); + + float yTop = getGlyph('S')->bearing.y(); float yBot = getHeight(lineSpacing); float y = offset[1] + (yBot + yTop)/2.0f; // vertices by texture - std::map< FontTexture*, std::vector > vertMap; + std::map< FontTexture*, std::vector > vertMap; size_t cursor = 0; - UnicodeChar character; - Glyph* glyph; while(cursor < text.length()) { - character = readUnicodeChar(text, cursor); // also advances cursor + unsigned int character = Utils::String::chars2Unicode(text, cursor); // also advances cursor + Glyph* glyph; // invalid character if(character == 0) continue; - if(character == (UnicodeChar)'\n') + if(character == '\n') { y += getHeight(lineSpacing); - x = offset[0] + (xLen != 0 ? getNewlineStartOffset(text, cursor /* cursor is already advanced */, xLen, alignment) : 0); + x = offset[0] + (xLen != 0 ? getNewlineStartOffset(text, (const unsigned int)cursor /* cursor is already advanced */, xLen, alignment) : 0); continue; } @@ -758,37 +657,27 @@ TextCache* Font::buildTextCache(const std::string& text, Eigen::Vector2f offset, if(glyph == NULL) continue; - std::vector& verts = vertMap[glyph->texture]; + std::vector& verts = vertMap[glyph->texture]; size_t oldVertSize = verts.size(); verts.resize(oldVertSize + 6); - TextCache::Vertex* tri = verts.data() + oldVertSize; - - const float glyphStartX = x + glyph->bearing.x(); - - const Eigen::Vector2i& textureSize = glyph->texture->textureSize; - - // triangle 1 - // round to fix some weird "cut off" text bugs - tri[0].pos << font_round(glyphStartX), font_round(y + (glyph->texSize.y() * textureSize.y() - glyph->bearing.y())); - tri[1].pos << font_round(glyphStartX + glyph->texSize.x() * textureSize.x()), font_round(y - glyph->bearing.y()); - tri[2].pos << tri[0].pos.x(), tri[1].pos.y(); + Renderer::Vertex* vertices = verts.data() + oldVertSize; - //tri[0].tex << 0, 0; - //tri[0].tex << 1, 1; - //tri[0].tex << 0, 1; + const float glyphStartX = x + glyph->bearing.x(); + const Vector2i& textureSize = glyph->texture->textureSize; + const unsigned int convertedColor = Renderer::convertColor(color); - tri[0].tex << glyph->texPos.x(), glyph->texPos.y() + glyph->texSize.y(); - tri[1].tex << glyph->texPos.x() + glyph->texSize.x(), glyph->texPos.y(); - tri[2].tex << tri[0].tex.x(), tri[1].tex.y(); + vertices[1] = { { glyphStartX , y - glyph->bearing.y() }, { glyph->texPos.x(), glyph->texPos.y() }, convertedColor }; + vertices[2] = { { glyphStartX , y - glyph->bearing.y() + (glyph->texSize.y() * textureSize.y()) }, { glyph->texPos.x(), glyph->texPos.y() + glyph->texSize.y() }, convertedColor }; + vertices[3] = { { glyphStartX + glyph->texSize.x() * textureSize.x(), y - glyph->bearing.y() }, { glyph->texPos.x() + glyph->texSize.x(), glyph->texPos.y() }, convertedColor }; + vertices[4] = { { glyphStartX + glyph->texSize.x() * textureSize.x(), y - glyph->bearing.y() + (glyph->texSize.y() * textureSize.y()) }, { glyph->texPos.x() + glyph->texSize.x(), glyph->texPos.y() + glyph->texSize.y() }, convertedColor }; - // triangle 2 - tri[3].pos = tri[0].pos; - tri[4].pos = tri[1].pos; - tri[5].pos << tri[1].pos.x(), tri[0].pos.y(); + // round vertices + for(int i = 1; i < 5; ++i) + vertices[i].pos.round(); - tri[3].tex = tri[0].tex; - tri[4].tex = tri[1].tex; - tri[5].tex << tri[1].tex.x(), tri[0].tex.y(); + // make duplicates of first and last vertex so this can be rendered as a triangle strip + vertices[0] = vertices[1]; + vertices[5] = vertices[4]; // advance x += glyph->advance.x(); @@ -801,15 +690,12 @@ TextCache* Font::buildTextCache(const std::string& text, Eigen::Vector2f offset, cache->metrics = { sizeText(text, lineSpacing) }; unsigned int i = 0; - for(auto it = vertMap.begin(); it != vertMap.end(); it++) + for(auto it = vertMap.cbegin(); it != vertMap.cend(); it++) { - TextCache::VertexList& vertList = cache->vertexLists.at(i); + TextCache::VertexList& vertList = cache->vertexLists.at(i++); vertList.textureIdPtr = &it->first->textureId; vertList.verts = it->second; - - vertList.colors.resize(4 * it->second.size()); - Renderer::buildGLColorArray(vertList.colors.data(), color, it->second.size()); } clearFaceCache(); @@ -819,13 +705,16 @@ TextCache* Font::buildTextCache(const std::string& text, Eigen::Vector2f offset, TextCache* Font::buildTextCache(const std::string& text, float offsetX, float offsetY, unsigned int color) { - return buildTextCache(text, Eigen::Vector2f(offsetX, offsetY), color, 0.0f); + return buildTextCache(text, Vector2f(offsetX, offsetY), color, 0.0f); } void TextCache::setColor(unsigned int color) { + const unsigned int convertedColor = Renderer::convertColor(color); + for(auto it = vertexLists.begin(); it != vertexLists.end(); it++) - Renderer::buildGLColorArray(it->colors.data(), color, it->verts.size()); + for(auto it2 = it->verts.begin(); it2 != it->verts.end(); it2++) + it2->col = convertedColor; } std::shared_ptr Font::getFromTheme(const ThemeData::ThemeElement* elem, unsigned int properties, const std::shared_ptr& orig) @@ -833,13 +722,13 @@ std::shared_ptr Font::getFromTheme(const ThemeData::ThemeElement* elem, un using namespace ThemeFlags; if(!(properties & FONT_PATH) && !(properties & FONT_SIZE)) return orig; - + std::shared_ptr font; int size = (orig ? orig->mSize : FONT_SIZE_MEDIUM); std::string path = (orig ? orig->mPath : getDefaultPath()); float sh = (float)Renderer::getScreenHeight(); - if(properties & FONT_SIZE && elem->has("fontSize")) + if(properties & FONT_SIZE && elem->has("fontSize")) size = (int)(sh * elem->get("fontSize")); if(properties & FONT_PATH && elem->has("fontPath")) path = elem->get("fontPath"); diff --git a/es-core/src/resources/Font.h b/es-core/src/resources/Font.h index daaecbead6..88b46820b7 100644 --- a/es-core/src/resources/Font.h +++ b/es-core/src/resources/Font.h @@ -1,30 +1,33 @@ #pragma once +#ifndef ES_CORE_RESOURCES_FONT_H +#define ES_CORE_RESOURCES_FONT_H -#include -#include "platform.h" -#include GLHEADER -#include -#include FT_FREETYPE_H -#include +#include "math/Vector2f.h" +#include "math/Vector2i.h" +#include "renderers/Renderer.h" #include "resources/ResourceManager.h" #include "ThemeData.h" +#include +#include FT_FREETYPE_H +#include class TextCache; -#define FONT_SIZE_SMALL ((unsigned int)(0.035f * Renderer::getScreenHeight())) -#define FONT_SIZE_MEDIUM ((unsigned int)(0.045f * Renderer::getScreenHeight())) -#define FONT_SIZE_LARGE ((unsigned int)(0.085f * Renderer::getScreenHeight())) +#define FONT_SIZE_MINI ((unsigned int)(0.030f * Math::min((int)Renderer::getScreenHeight(), (int)Renderer::getScreenWidth()))) +#define FONT_SIZE_SMALL ((unsigned int)(0.035f * Math::min((int)Renderer::getScreenHeight(), (int)Renderer::getScreenWidth()))) +#define FONT_SIZE_MEDIUM ((unsigned int)(0.045f * Math::min((int)Renderer::getScreenHeight(), (int)Renderer::getScreenWidth()))) +#define FONT_SIZE_LARGE ((unsigned int)(0.085f * Math::min((int)Renderer::getScreenHeight(), (int)Renderer::getScreenWidth()))) #define FONT_PATH_LIGHT ":/opensans_hebrew_condensed_light.ttf" #define FONT_PATH_REGULAR ":/opensans_hebrew_condensed_regular.ttf" -typedef unsigned long UnicodeChar; - enum Alignment { ALIGN_LEFT, ALIGN_CENTER, // centers both horizontally and vertically - ALIGN_RIGHT + ALIGN_RIGHT, + ALIGN_TOP, + ALIGN_BOTTOM }; //A TrueType Font renderer that uses FreeType and OpenGL. @@ -38,20 +41,21 @@ class Font : public IReloadable virtual ~Font(); - Eigen::Vector2f sizeText(std::string text, float lineSpacing = 1.5f); // Returns the expected size of a string when rendered. Extra spacing is applied to the Y axis. + Vector2f sizeText(std::string text, float lineSpacing = 1.5f); // Returns the expected size of a string when rendered. Extra spacing is applied to the Y axis. + Vector2f sizeCodePoint(unsigned int, float lineSpacing = 1.5f); // Returns the expected size of a Unicode code point. TextCache* buildTextCache(const std::string& text, float offsetX, float offsetY, unsigned int color); - TextCache* buildTextCache(const std::string& text, Eigen::Vector2f offset, unsigned int color, float xLen, Alignment alignment = ALIGN_LEFT, float lineSpacing = 1.5f); + TextCache* buildTextCache(const std::string& text, Vector2f offset, unsigned int color, float xLen, Alignment alignment = ALIGN_LEFT, float lineSpacing = 1.5f); void renderTextCache(TextCache* cache); - + std::string wrapText(std::string text, float xLen); // Inserts newlines into text to make it wrap properly. - Eigen::Vector2f sizeWrappedText(std::string text, float xLen, float lineSpacing = 1.5f); // Returns the expected size of a string after wrapping is applied. - Eigen::Vector2f getWrappedTextCursorOffset(std::string text, float xLen, size_t cursor, float lineSpacing = 1.5f); // Returns the position of of the cursor after moving "cursor" characters. + Vector2f sizeWrappedText(std::string text, float xLen, float lineSpacing = 1.5f); // Returns the expected size of a string after wrapping is applied. + Vector2f getWrappedTextCursorOffset(std::string text, float xLen, size_t cursor, float lineSpacing = 1.5f); // Returns the position of of the cursor after moving "cursor" characters. float getHeight(float lineSpacing = 1.5f) const; float getLetterHeight(); - void unload(std::shared_ptr& rm) override; - void reload(std::shared_ptr& rm) override; + bool unload() override; + void reload() override; int getSize() const; inline const std::string& getPath() const { return mPath; } @@ -63,12 +67,6 @@ class Font : public IReloadable size_t getMemUsage() const; // returns an approximation of VRAM used by this font's texture (in bytes) static size_t getTotalMemUsage(); // returns an approximation of total VRAM used by font textures (in bytes) - // utf8 stuff - static size_t getNextCursor(const std::string& str, size_t cursor); - static size_t getPrevCursor(const std::string& str, size_t cursor); - static size_t moveCursor(const std::string& str, size_t cursor, int moveAmt); // negative moveAmt = move backwards, positive = move forwards - static UnicodeChar readUnicodeChar(const std::string& str, size_t& cursor); // reads unicode character at cursor AND moves cursor to the next valid unicode char - private: static FT_Library sLibrary; static std::map< std::pair, std::weak_ptr > sFontMap; @@ -77,15 +75,15 @@ class Font : public IReloadable struct FontTexture { - GLuint textureId; - Eigen::Vector2i textureSize; + unsigned int textureId; + Vector2i textureSize; - Eigen::Vector2i writePos; + Vector2i writePos; int rowHeight; FontTexture(); ~FontTexture(); - bool findEmpty(const Eigen::Vector2i& size, Eigen::Vector2i& cursor_out); + bool findEmpty(const Vector2i& size, Vector2i& cursor_out); // you must call initTexture() after creating a FontTexture to get a textureId void initTexture(); // initializes the OpenGL texture according to this FontTexture's settings, updating textureId @@ -106,34 +104,38 @@ class Font : public IReloadable std::vector mTextures; - void getTextureForNewGlyph(const Eigen::Vector2i& glyphSize, FontTexture*& tex_out, Eigen::Vector2i& cursor_out); + void getTextureForNewGlyph(const Vector2i& glyphSize, FontTexture*& tex_out, Vector2i& cursor_out); std::map< unsigned int, std::unique_ptr > mFaceCache; - FT_Face getFaceForChar(UnicodeChar id); + FT_Face getFaceForChar(unsigned int id); void clearFaceCache(); struct Glyph { FontTexture* texture; - - Eigen::Vector2f texPos; - Eigen::Vector2f texSize; // in texels! - Eigen::Vector2f advance; - Eigen::Vector2f bearing; + Vector2f texPos; + Vector2f texSize; // in texels! + + Vector2f advance; + Vector2f bearing; }; - std::map mGlyphMap; + std::map mGlyphMap; + + Glyph* getGlyph(unsigned int id); - Glyph* getGlyph(UnicodeChar id); + bool isWhiteSpace(unsigned int c); int mMaxGlyphHeight; - + const int mSize; const std::string mPath; float getNewlineStartOffset(const std::string& text, const unsigned int& charStart, const float& xLen, const Alignment& alignment); + bool mLoaded; + friend TextCache; }; @@ -144,17 +146,11 @@ class Font : public IReloadable class TextCache { protected: - struct Vertex - { - Eigen::Vector2f pos; - Eigen::Vector2f tex; - }; struct VertexList { - GLuint* textureIdPtr; // this is a pointer because the texture ID can change during deinit/reinit (when launching a game) - std::vector verts; - std::vector colors; + std::vector verts; + unsigned int* textureIdPtr; // this is a pointer because the texture ID can change during deinit/reinit (when launching a game) }; std::vector vertexLists; @@ -162,10 +158,12 @@ class TextCache public: struct CacheMetrics { - Eigen::Vector2f size; + Vector2f size; } metrics; void setColor(unsigned int color); friend Font; }; + +#endif // ES_CORE_RESOURCES_FONT_H diff --git a/es-core/src/resources/ResourceManager.cpp b/es-core/src/resources/ResourceManager.cpp index b495c860ff..9353dda703 100644 --- a/es-core/src/resources/ResourceManager.cpp +++ b/es-core/src/resources/ResourceManager.cpp @@ -1,13 +1,10 @@ #include "ResourceManager.h" -#include "Log.h" -#include "../data/Resources.h" -#include -#include -namespace fs = boost::filesystem; +#include "utils/FileSystemUtil.h" +#include auto array_deleter = [](unsigned char* p) { delete[] p; }; -auto nop_deleter = [](unsigned char* p) { }; +auto nop_deleter = [](unsigned char* /*p*/) { }; std::shared_ptr ResourceManager::sInstance = nullptr; @@ -23,31 +20,47 @@ std::shared_ptr& ResourceManager::getInstance() return sInstance; } -const ResourceData ResourceManager::getFileData(const std::string& path) const +std::string ResourceManager::getResourcePath(const std::string& path) const { - //check if its embedded - - if(res2hMap.find(path) != res2hMap.end()) + // check if this is a resource file + if((path[0] == ':') && (path[1] == '/')) { - //it is - Res2hEntry embeddedEntry = res2hMap.find(path)->second; - ResourceData data = { - std::shared_ptr(const_cast(embeddedEntry.data), nop_deleter), - embeddedEntry.size - }; - return data; + std::string test; + + // check in homepath + test = Utils::FileSystem::getHomePath() + "/.emulationstation/resources/" + &path[2]; + if(Utils::FileSystem::exists(test)) + return test; + + // check in exepath + test = Utils::FileSystem::getExePath() + "/resources/" + &path[2]; + if(Utils::FileSystem::exists(test)) + return test; + + // check in cwd + test = Utils::FileSystem::getCWDPath() + "/resources/" + &path[2]; + if(Utils::FileSystem::exists(test)) + return test; } - //it's not embedded; load the file - if(!fs::exists(path)) + // not a resource, return unmodified path + return path; +} + +const ResourceData ResourceManager::getFileData(const std::string& path) const +{ + //check if its a resource + const std::string respath = getResourcePath(path); + + if(Utils::FileSystem::exists(respath)) { - //if the file doesn't exist, return an "empty" ResourceData - ResourceData data = {NULL, 0}; - return data; - }else{ - ResourceData data = loadFile(path); + ResourceData data = loadFile(respath); return data; } + + //if the file doesn't exist, return an "empty" ResourceData + ResourceData data = {NULL, 0}; + return data; } ResourceData ResourceManager::loadFile(const std::string& path) const @@ -55,58 +68,76 @@ ResourceData ResourceManager::loadFile(const std::string& path) const std::ifstream stream(path, std::ios::binary); stream.seekg(0, stream.end); - size_t size = (size_t)stream.tellg(); + std::ifstream::pos_type size = stream.tellg(); stream.seekg(0, stream.beg); + if(size>0) + { + //supply custom deleter to properly free array + std::shared_ptr data(new unsigned char[size], array_deleter); + stream.read((char*)data.get(), size); + stream.close(); - //supply custom deleter to properly free array - std::shared_ptr data(new unsigned char[size], array_deleter); - stream.read((char*)data.get(), size); - stream.close(); + ResourceData ret = {data, (size_t)size}; + return ret; + } - ResourceData ret = {data, size}; + //error reading file, return an "empty" ResourceData + ResourceData ret = {NULL, 0}; return ret; } bool ResourceManager::fileExists(const std::string& path) const { - //if it exists as an embedded file, return true - if(res2hMap.find(path) != res2hMap.end()) + //if it exists as a resource file, return true + if(getResourcePath(path) != path) return true; - return fs::exists(path); + return Utils::FileSystem::exists(path); } void ResourceManager::unloadAll() { - auto iter = mReloadables.begin(); - while(iter != mReloadables.end()) + auto iter = mReloadables.cbegin(); + while(iter != mReloadables.cend()) { - if(!iter->expired()) + std::shared_ptr info = *iter; + + if (!info->data.expired()) { - iter->lock()->unload(sInstance); + info->reload = info->data.lock()->unload(); iter++; - }else{ - iter = mReloadables.erase(iter); } + else + iter = mReloadables.erase(iter); } } void ResourceManager::reloadAll() { - auto iter = mReloadables.begin(); - while(iter != mReloadables.end()) + auto iter = mReloadables.cbegin(); + while(iter != mReloadables.cend()) { - if(!iter->expired()) + std::shared_ptr info = *iter; + + if (!info->data.expired()) { - iter->lock()->reload(sInstance); + if (info->reload) + { + info->data.lock()->reload(); + info->reload = false; + } + iter++; - }else{ - iter = mReloadables.erase(iter); } + else + iter = mReloadables.erase(iter); } } void ResourceManager::addReloadable(std::weak_ptr reloadable) { - mReloadables.push_back(reloadable); + std::shared_ptr info = std::make_shared(); + info->data = reloadable; + info->reload = false; + mReloadables.push_back(info); } diff --git a/es-core/src/resources/ResourceManager.h b/es-core/src/resources/ResourceManager.h index d9d4aa3b8a..7f86251ccd 100644 --- a/es-core/src/resources/ResourceManager.h +++ b/es-core/src/resources/ResourceManager.h @@ -1,9 +1,10 @@ #pragma once +#ifndef ES_CORE_RESOURCES_RESOURCE_MANAGER_H +#define ES_CORE_RESOURCES_RESOURCE_MANAGER_H -#include -#include -#include #include +#include +#include //The ResourceManager exists to... //Allow loading resources embedded into the executable like an actual file. @@ -20,8 +21,8 @@ class ResourceManager; class IReloadable { public: - virtual void unload(std::shared_ptr& rm) = 0; - virtual void reload(std::shared_ptr& rm) = 0; + virtual bool unload() = 0; + virtual void reload() = 0; }; class ResourceManager @@ -34,6 +35,7 @@ class ResourceManager void unloadAll(); void reloadAll(); + std::string getResourcePath(const std::string& path) const; const ResourceData getFileData(const std::string& path) const; bool fileExists(const std::string& path) const; @@ -44,5 +46,14 @@ class ResourceManager ResourceData loadFile(const std::string& path) const; - std::list< std::weak_ptr > mReloadables; + class ReloadableInfo + { + public: + std::weak_ptr data; + bool reload; + }; + + std::list> mReloadables; // std::weak_ptr }; + +#endif // ES_CORE_RESOURCES_RESOURCE_MANAGER_H diff --git a/es-core/src/resources/SVGResource.cpp b/es-core/src/resources/SVGResource.cpp deleted file mode 100644 index 1a4ea16fca..0000000000 --- a/es-core/src/resources/SVGResource.cpp +++ /dev/null @@ -1,101 +0,0 @@ -#include "SVGResource.h" -#include "nanosvg/nanosvg.h" -#include "nanosvg/nanosvgrast.h" -#include "Log.h" -#include "Util.h" -#include "ImageIO.h" - -#define DPI 96 - -SVGResource::SVGResource(const std::string& path, bool tile) : TextureResource(path, tile), mSVGImage(NULL) -{ - mLastWidth = 0; - mLastHeight = 0; -} - -SVGResource::~SVGResource() -{ - deinitSVG(); -} - -void SVGResource::unload(std::shared_ptr& rm) -{ - deinitSVG(); - TextureResource::unload(rm); -} - -void SVGResource::initFromMemory(const char* file, size_t length) -{ - deinit(); - deinitSVG(); - - // nsvgParse excepts a modifiable, null-terminated string - char* copy = (char*)malloc(length + 1); - assert(copy != NULL); - memcpy(copy, file, length); - copy[length] = '\0'; - - mSVGImage = nsvgParse(copy, "px", DPI); - free(copy); - - if(!mSVGImage) - { - LOG(LogError) << "Error parsing SVG image."; - return; - } - - if(mLastWidth && mLastHeight) - rasterizeAt(mLastWidth, mLastHeight); - else - rasterizeAt((size_t)round(mSVGImage->width), (size_t)round(mSVGImage->height)); -} - -void SVGResource::rasterizeAt(size_t width, size_t height) -{ - if(!mSVGImage || (width == 0 && height == 0)) - return; - - if(width == 0) - { - // auto scale width to keep aspect - width = (size_t)round((height / mSVGImage->height) * mSVGImage->width); - }else if(height == 0) - { - // auto scale height to keep aspect - height = (size_t)round((width / mSVGImage->width) * mSVGImage->height); - } - - if(width != (size_t)round(mSVGImage->width) && height != (size_t)round(mSVGImage->height)) - { - mLastWidth = width; - mLastHeight = height; - } - - unsigned char* imagePx = (unsigned char*)malloc(width * height * 4); - assert(imagePx != NULL); - - NSVGrasterizer* rast = nsvgCreateRasterizer(); - nsvgRasterize(rast, mSVGImage, 0, 0, height / mSVGImage->height, imagePx, width, height, width * 4); - nsvgDeleteRasterizer(rast); - - ImageIO::flipPixelsVert(imagePx, width, height); - - initFromPixels(imagePx, width, height); - free(imagePx); -} - -Eigen::Vector2f SVGResource::getSourceImageSize() const -{ - if(mSVGImage) - return Eigen::Vector2f(mSVGImage->width, mSVGImage->height); - - return Eigen::Vector2f::Zero(); -} - -void SVGResource::deinitSVG() -{ - if(mSVGImage) - nsvgDelete(mSVGImage); - - mSVGImage = NULL; -} diff --git a/es-core/src/resources/SVGResource.h b/es-core/src/resources/SVGResource.h deleted file mode 100644 index 87479c0cf1..0000000000 --- a/es-core/src/resources/SVGResource.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "resources/TextureResource.h" - -struct NSVGimage; - -class SVGResource : public TextureResource -{ -public: - virtual ~SVGResource(); - - virtual void unload(std::shared_ptr& rm) override; - - virtual void initFromMemory(const char* image, size_t length) override; - - void rasterizeAt(size_t width, size_t height); - Eigen::Vector2f getSourceImageSize() const; - -protected: - friend TextureResource; - SVGResource(const std::string& path, bool tile); - void deinitSVG(); - - NSVGimage* mSVGImage; - size_t mLastWidth; - size_t mLastHeight; -}; diff --git a/es-core/src/resources/TextureData.cpp b/es-core/src/resources/TextureData.cpp new file mode 100644 index 0000000000..33382b6d8d --- /dev/null +++ b/es-core/src/resources/TextureData.cpp @@ -0,0 +1,240 @@ +#include "resources/TextureData.h" + +#include "math/Misc.h" +#include "renderers/Renderer.h" +#include "resources/ResourceManager.h" +#include "ImageIO.h" +#include "Log.h" +#include +#include +#include +#include + +#define DPI 96 + +TextureData::TextureData(bool tile) : mTile(tile), mTextureID(0), mDataRGBA(nullptr), mScalable(false), + mWidth(0), mHeight(0), mSourceWidth(0.0f), mSourceHeight(0.0f) +{ +} + +TextureData::~TextureData() +{ + releaseVRAM(); + releaseRAM(); +} + +void TextureData::initFromPath(const std::string& path) +{ + // Just set the path. It will be loaded later + mPath = path; + // Only textures with paths are reloadable + mReloadable = true; +} + +bool TextureData::initSVGFromMemory(const unsigned char* fileData, size_t length) +{ + // If already initialised then don't read again + std::unique_lock lock(mMutex); + if (mDataRGBA) + return true; + + // nsvgParse excepts a modifiable, null-terminated string + char* copy = (char*)malloc(length + 1); + assert(copy != NULL); + memcpy(copy, fileData, length); + copy[length] = '\0'; + + NSVGimage* svgImage = nsvgParse(copy, "px", DPI); + free(copy); + if (!svgImage || (svgImage->width == 0) || (svgImage->height == 0)) + { + LOG(LogError) << "Error parsing SVG image."; + nsvgDelete(svgImage); + return false; + } + + // We want to rasterise this texture at a specific resolution. If the source size + // variables are set then use them otherwise set them from the parsed file + if (mSourceHeight == 0.0f) + mSourceHeight = svgImage->height; + + mSourceWidth = (mSourceHeight * svgImage->width) / svgImage->height; + + mWidth = (size_t)Math::round(mSourceWidth); + mHeight = (size_t)Math::round(mSourceHeight); + + unsigned char* dataRGBA = new unsigned char[mWidth * mHeight * 4]; + + NSVGrasterizer* rast = nsvgCreateRasterizer(); + float scale = Math::min(mHeight / svgImage->height, mWidth / svgImage->width); + nsvgRasterize(rast, svgImage, 0, 0, scale, dataRGBA, (int)mWidth, (int)mHeight, (int)mWidth * 4); + nsvgDeleteRasterizer(rast); + nsvgDelete(svgImage); + + ImageIO::flipPixelsVert(dataRGBA, mWidth, mHeight); + + mDataRGBA = dataRGBA; + + return true; +} + +bool TextureData::initImageFromMemory(const unsigned char* fileData, size_t length) +{ + size_t width, height; + + // If already initialised then don't read again + { + std::unique_lock lock(mMutex); + if (mDataRGBA) + return true; + } + + std::vector imageRGBA = ImageIO::loadFromMemoryRGBA32((const unsigned char*)(fileData), length, width, height); + if (imageRGBA.size() == 0) + { + LOG(LogError) << "Could not initialize texture from memory, invalid data! (file path: " << mPath << ", data ptr: " << (size_t)fileData << ", reported size: " << length << ")"; + return false; + } + + mSourceWidth = (float) width; + mSourceHeight = (float) height; + mScalable = false; + + return initFromRGBA(imageRGBA.data(), width, height); +} + +bool TextureData::initFromRGBA(const unsigned char* dataRGBA, size_t width, size_t height) +{ + // If already initialised then don't read again + std::unique_lock lock(mMutex); + if (mDataRGBA) + return true; + + // Take a copy + mDataRGBA = new unsigned char[width * height * 4]; + memcpy(mDataRGBA, dataRGBA, width * height * 4); + mWidth = width; + mHeight = height; + return true; +} + +bool TextureData::load() +{ + bool retval = false; + + // Need to load. See if there is a file + if (!mPath.empty()) + { + std::shared_ptr& rm = ResourceManager::getInstance(); + const ResourceData& data = rm->getFileData(mPath); + // is it an SVG? + if (mPath.substr(mPath.size() - 4, std::string::npos) == ".svg") + { + mScalable = true; + retval = initSVGFromMemory((const unsigned char*)data.ptr.get(), data.length); + } + else + retval = initImageFromMemory((const unsigned char*)data.ptr.get(), data.length); + } + return retval; +} + +bool TextureData::isLoaded() +{ + std::unique_lock lock(mMutex); + if (mDataRGBA || (mTextureID != 0)) + return true; + return false; +} + +bool TextureData::uploadAndBind() +{ + // See if it's already been uploaded + std::unique_lock lock(mMutex); + if (mTextureID != 0) + { + Renderer::bindTexture(mTextureID); + } + else + { + // Load it if necessary + if (!mDataRGBA) + { + return false; + } + // Make sure we're ready to upload + if ((mWidth == 0) || (mHeight == 0) || (mDataRGBA == nullptr)) + return false; + + // Upload texture + mTextureID = Renderer::createTexture(Renderer::Texture::RGBA, true, mTile, (int)mWidth, (int)mHeight, mDataRGBA); + } + return true; +} + +void TextureData::releaseVRAM() +{ + std::unique_lock lock(mMutex); + if (mTextureID != 0) + { + Renderer::destroyTexture(mTextureID); + mTextureID = 0; + } +} + +void TextureData::releaseRAM() +{ + std::unique_lock lock(mMutex); + delete[] mDataRGBA; + mDataRGBA = 0; +} + +size_t TextureData::width() +{ + if (mWidth == 0) + load(); + return mWidth; +} + +size_t TextureData::height() +{ + if (mHeight == 0) + load(); + return mHeight; +} + +float TextureData::sourceWidth() +{ + if (mSourceWidth == 0) + load(); + return mSourceWidth; +} + +float TextureData::sourceHeight() +{ + if (mSourceHeight == 0) + load(); + return mSourceHeight; +} + +void TextureData::setSourceSize(float width, float height) +{ + if (mScalable) + { + if ((mSourceWidth != width) || (mSourceHeight != height)) + { + mSourceWidth = width; + mSourceHeight = height; + releaseVRAM(); + releaseRAM(); + } + } +} + +size_t TextureData::getVRAMUsage() +{ + if ((mTextureID != 0) || (mDataRGBA != nullptr)) + return mWidth * mHeight * 4; + else + return 0; +} diff --git a/es-core/src/resources/TextureData.h b/es-core/src/resources/TextureData.h new file mode 100644 index 0000000000..44dc92623c --- /dev/null +++ b/es-core/src/resources/TextureData.h @@ -0,0 +1,64 @@ +#pragma once +#ifndef ES_CORE_RESOURCES_TEXTURE_DATA_H +#define ES_CORE_RESOURCES_TEXTURE_DATA_H + +#include +#include + +class TextureResource; + +class TextureData +{ +public: + TextureData(bool tile); + ~TextureData(); + + // These functions populate mDataRGBA but do not upload the texture to VRAM + + //!!!! Needs to be canonical path. Caller should check for duplicates before calling this + void initFromPath(const std::string& path); + bool initSVGFromMemory(const unsigned char* fileData, size_t length); + bool initImageFromMemory(const unsigned char* fileData, size_t length); + bool initFromRGBA(const unsigned char* dataRGBA, size_t width, size_t height); + + // Read the data into memory if necessary + bool load(); + + bool isLoaded(); + + // Upload the texture to VRAM if necessary and bind. Returns true if bound ok or + // false if either not loaded + bool uploadAndBind(); + + // Release the texture from VRAM + void releaseVRAM(); + + // Release the texture from conventional RAM + void releaseRAM(); + + // Get the amount of VRAM currenty used by this texture + size_t getVRAMUsage(); + + size_t width(); + size_t height(); + float sourceWidth(); + float sourceHeight(); + void setSourceSize(float width, float height); + + bool tiled() { return mTile; } + +private: + std::mutex mMutex; + bool mTile; + std::string mPath; + unsigned int mTextureID; + unsigned char* mDataRGBA; + size_t mWidth; + size_t mHeight; + float mSourceWidth; + float mSourceHeight; + bool mScalable; + bool mReloadable; +}; + +#endif // ES_CORE_RESOURCES_TEXTURE_DATA_H diff --git a/es-core/src/resources/TextureDataManager.cpp b/es-core/src/resources/TextureDataManager.cpp new file mode 100644 index 0000000000..8eccdbdd3d --- /dev/null +++ b/es-core/src/resources/TextureDataManager.cpp @@ -0,0 +1,231 @@ +#include "resources/TextureDataManager.h" + +#include "resources/TextureData.h" +#include "resources/TextureResource.h" +#include "Settings.h" + +TextureDataManager::TextureDataManager() +{ + unsigned char data[5 * 5 * 4]; + mBlank = std::shared_ptr(new TextureData(false)); + for (int i = 0; i < (5 * 5); ++i) + { + data[i*4] = (i % 2) * 255; + data[i*4+1] = (i % 2) * 255; + data[i*4+2] = (i % 2) * 255; + data[i*4+3] = 0; + } + mBlank->initFromRGBA(data, 5, 5); + mLoader = new TextureLoader; +} + +TextureDataManager::~TextureDataManager() +{ + delete mLoader; +} + +std::shared_ptr TextureDataManager::add(const TextureResource* key, bool tiled) +{ + remove(key); + std::shared_ptr data(new TextureData(tiled)); + mTextures.push_front(data); + mTextureLookup[key] = mTextures.cbegin(); + return data; +} + +void TextureDataManager::remove(const TextureResource* key) +{ + // Find the entry in the list + auto it = mTextureLookup.find(key); + if (it != mTextureLookup.cend()) + { + // Remove the list entry + mTextures.erase((*it).second); + // And the lookup + mTextureLookup.erase(it); + } +} + +std::shared_ptr TextureDataManager::get(const TextureResource* key, bool enableLoading) +{ + // If it's in the cache then we want to remove it from it's current location and + // move it to the top + std::shared_ptr tex; + auto it = mTextureLookup.find(key); + if (it != mTextureLookup.cend()) + { + tex = *(*it).second; + // Remove the list entry + mTextures.erase((*it).second); + // Put it at the top + mTextures.push_front(tex); + // Store it back in the lookup + mTextureLookup[key] = mTextures.cbegin(); + + // Make sure it's loaded or queued for loading + if (enableLoading && !tex->isLoaded()) + load(tex); + } + return tex; +} + +bool TextureDataManager::bind(const TextureResource* key) +{ + std::shared_ptr tex = get(key); + bool bound = false; + if (tex != nullptr) + bound = tex->uploadAndBind(); + if (!bound) + mBlank->uploadAndBind(); + return bound; +} + +size_t TextureDataManager::getTotalSize() +{ + size_t total = 0; + for (auto tex : mTextures) + total += tex->width() * tex->height() * 4; + return total; +} + +size_t TextureDataManager::getCommittedSize() +{ + size_t total = 0; + for (auto tex : mTextures) + total += tex->getVRAMUsage(); + return total; +} + +size_t TextureDataManager::getQueueSize() +{ + return mLoader->getQueueSize(); +} + +void TextureDataManager::load(std::shared_ptr tex, bool block) +{ + // See if it's already loaded + if (tex->isLoaded()) + return; + // Not loaded. Make sure there is room + size_t max_texture = (size_t)Settings::getInstance()->getInt("MaxVRAM") * 1024 * 1024; + + // if max_texture is 0, then texture memory should be considered unlimited + if (max_texture > 0) + { + size_t size = TextureResource::getTotalMemUsage(); + for (auto it = mTextures.crbegin(); it != mTextures.crend(); ++it) + { + if (size < max_texture) + break; + //size -= (*it)->getVRAMUsage(); + (*it)->releaseVRAM(); + (*it)->releaseRAM(); + // It may be already in the loader queue. In this case it wouldn't have been using + // any VRAM yet but it will be. Remove it from the loader queue + mLoader->remove(*it); + size = TextureResource::getTotalMemUsage(); + } + } + if (!block) + mLoader->load(tex); + else + tex->load(); +} + +TextureLoader::TextureLoader() : mExit(false) +{ + mThread = new std::thread(&TextureLoader::threadProc, this); +} + +TextureLoader::~TextureLoader() +{ + // Just abort any waiting texture + mTextureDataQ.clear(); + mTextureDataLookup.clear(); + + // Exit the thread + mExit = true; + mEvent.notify_one(); + mThread->join(); + delete mThread; +} + +void TextureLoader::threadProc() +{ + while (!mExit) + { + std::shared_ptr textureData; + { + // Wait for an event to say there is something in the queue + std::unique_lock lock(mMutex); + mEvent.wait(lock); + if (!mTextureDataQ.empty()) + { + textureData = mTextureDataQ.front(); + mTextureDataQ.pop_front(); + mTextureDataLookup.erase(mTextureDataLookup.find(textureData.get())); + } + } + // Queue has been released here but we might have a texture to process + while (textureData) + { + textureData->load(); + + // See if there is another item in the queue + textureData = nullptr; + std::unique_lock lock(mMutex); + if (!mTextureDataQ.empty()) + { + textureData = mTextureDataQ.front(); + mTextureDataQ.pop_front(); + mTextureDataLookup.erase(mTextureDataLookup.find(textureData.get())); + } + } + } +} + +void TextureLoader::load(std::shared_ptr textureData) +{ + // Make sure it's not already loaded + if (!textureData->isLoaded()) + { + std::unique_lock lock(mMutex); + // Remove it from the queue if it is already there + auto td = mTextureDataLookup.find(textureData.get()); + if (td != mTextureDataLookup.cend()) + { + mTextureDataQ.erase((*td).second); + mTextureDataLookup.erase(td); + } + + // Put it on the start of the queue as we want the newly requested textures to load first + mTextureDataQ.push_front(textureData); + mTextureDataLookup[textureData.get()] = mTextureDataQ.cbegin(); + mEvent.notify_one(); + } +} + +void TextureLoader::remove(std::shared_ptr textureData) +{ + // Just remove it from the queue so we don't attempt to load it + std::unique_lock lock(mMutex); + auto td = mTextureDataLookup.find(textureData.get()); + if (td != mTextureDataLookup.cend()) + { + mTextureDataQ.erase((*td).second); + mTextureDataLookup.erase(td); + } +} + +size_t TextureLoader::getQueueSize() +{ + // Gets the amount of video memory that will be used once all textures in + // the queue are loaded + size_t mem = 0; + std::unique_lock lock(mMutex); + for (auto tex : mTextureDataQ) + { + mem += tex->width() * tex->height() * 4; + } + return mem; +} diff --git a/es-core/src/resources/TextureDataManager.h b/es-core/src/resources/TextureDataManager.h new file mode 100644 index 0000000000..9c7b60b588 --- /dev/null +++ b/es-core/src/resources/TextureDataManager.h @@ -0,0 +1,87 @@ +#pragma once +#ifndef ES_CORE_RESOURCES_TEXTURE_DATA_MANAGER_H +#define ES_CORE_RESOURCES_TEXTURE_DATA_MANAGER_H + +#include +#include +#include +#include +#include +#include + +class TextureData; +class TextureResource; + +class TextureLoader +{ +public: + TextureLoader(); + ~TextureLoader(); + + void load(std::shared_ptr textureData); + void remove(std::shared_ptr textureData); + + size_t getQueueSize(); + +private: + void processQueue(); + void threadProc(); + + std::list > mTextureDataQ; + std::map >::const_iterator > mTextureDataLookup; + + std::thread* mThread; + std::mutex mMutex; + std::condition_variable mEvent; + bool mExit; +}; + +// +// This class manages the loading and unloading of textures +// +// When textures are added, the texture data is just stored as-is. The texture +// data should only have been constructed and not loaded for this to work correctly. +// When the get() function is called it indicates that a texture wants to be used so +// at this point the texture data is loaded (via a call to load()). +// +// Once the load is complete (which may not be on the first call to get() if the +// data is loaded in a background thread) then the get() function call uploadAndBind() +// to upload to VRAM if necessary and bind the texture. This is followed by a call +// to releaseRAM() which frees the memory buffer if the texture can be reloaded from +// disk if needed again +// +class TextureDataManager +{ +public: + TextureDataManager(); + ~TextureDataManager(); + + std::shared_ptr add(const TextureResource* key, bool tiled); + + // The texturedata being removed may be loading in a different thread. However it will + // be referenced by a smart point so we only need to remove it from our array and it + // will be deleted when the other thread has finished with it + void remove(const TextureResource* key); + + std::shared_ptr get(const TextureResource* key, bool enableLoading = true); + bool bind(const TextureResource* key); + + // Get the total size of all textures managed by this object, loaded and unloaded in bytes + size_t getTotalSize(); + // Get the total size of all committed textures (in VRAM) in bytes + size_t getCommittedSize(); + // Get the total size of all load-pending textures in the queue - these will + // be committed to VRAM as the queue is processed + size_t getQueueSize(); + // Load a texture, freeing resources as necessary to make space + void load(std::shared_ptr tex, bool block = false); + +private: + + std::list > mTextures; + std::map >::const_iterator > mTextureLookup; + std::shared_ptr mBlank; + TextureLoader* mLoader; +}; + +#endif // ES_CORE_RESOURCES_TEXTURE_DATA_MANAGER_H diff --git a/es-core/src/resources/TextureResource.cpp b/es-core/src/resources/TextureResource.cpp index e6657dcc20..975e6f70d4 100644 --- a/es-core/src/resources/TextureResource.cpp +++ b/es-core/src/resources/TextureResource.cpp @@ -1,119 +1,120 @@ #include "resources/TextureResource.h" -#include "Log.h" -#include "platform.h" -#include GLHEADER -#include "ImageIO.h" -#include "Renderer.h" -#include "Util.h" -#include "resources/SVGResource.h" -std::map< TextureResource::TextureKeyType, std::weak_ptr > TextureResource::sTextureMap; -std::list< std::weak_ptr > TextureResource::sTextureList; +#include "utils/FileSystemUtil.h" +#include "resources/TextureData.h" -TextureResource::TextureResource(const std::string& path, bool tile) : - mTextureID(0), mPath(path), mTextureSize(Eigen::Vector2i::Zero()), mTile(tile) -{ -} - -TextureResource::~TextureResource() -{ - deinit(); -} +TextureDataManager TextureResource::sTextureDataManager; +std::map< TextureResource::TextureKeyType, std::weak_ptr > TextureResource::sTextureMap; +std::set TextureResource::sAllTextures; -void TextureResource::unload(std::shared_ptr& rm) +TextureResource::TextureResource(const std::string& path, bool tile, bool dynamic) : mTextureData(nullptr), mSize(0.0f, 0.0f), mSourceSize(0.0f, 0.0f), mForceLoad(false) { - deinit(); -} + // Create a texture data object for this texture + if (!path.empty()) + { + // If there is a path then the 'dynamic' flag tells us whether to use the texture + // data manager to manage loading/unloading of this texture + std::shared_ptr data; + if (dynamic) + { + data = sTextureDataManager.add(this, tile); + data->initFromPath(path); + // Force the texture manager to load it using a blocking load + sTextureDataManager.load(data, true); + } + else + { + mTextureData = std::shared_ptr(new TextureData(tile)); + data = mTextureData; + data->initFromPath(path); + // Load it so we can read the width/height + data->load(); + } -void TextureResource::reload(std::shared_ptr& rm) -{ - if(!mPath.empty()) + mSize = Vector2i((int)data->width(), (int)data->height()); + mSourceSize = Vector2f(data->sourceWidth(), data->sourceHeight()); + } + else { - const ResourceData& data = rm->getFileData(mPath); - initFromMemory((const char*)data.ptr.get(), data.length); + // Create a texture managed by this class because it cannot be dynamically loaded and unloaded + mTextureData = std::shared_ptr(new TextureData(tile)); } + sAllTextures.insert(this); } -void TextureResource::initFromPixels(const unsigned char* dataRGBA, size_t width, size_t height) +TextureResource::~TextureResource() { - deinit(); + if (mTextureData == nullptr) + sTextureDataManager.remove(this); - assert(width > 0 && height > 0); - - //now for the openGL texture stuff - glGenTextures(1, &mTextureID); - glBindTexture(GL_TEXTURE_2D, mTextureID); - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, dataRGBA); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - const GLint wrapMode = mTile ? GL_REPEAT : GL_CLAMP_TO_EDGE; - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrapMode); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrapMode); - - mTextureSize << width, height; + sAllTextures.erase(sAllTextures.find(this)); } -void TextureResource::initFromMemory(const char* data, size_t length) +void TextureResource::initFromPixels(const unsigned char* dataRGBA, size_t width, size_t height) { - size_t width, height; - std::vector imageRGBA = ImageIO::loadFromMemoryRGBA32((const unsigned char*)(data), length, width, height); - - if(imageRGBA.size() == 0) - { - LOG(LogError) << "Could not initialize texture from memory, invalid data! (file path: " << mPath << ", data ptr: " << (size_t)data << ", reported size: " << length << ")"; - return; - } - - initFromPixels(imageRGBA.data(), width, height); + // This is only valid if we have a local texture data object + assert(mTextureData != nullptr); + mTextureData->releaseVRAM(); + mTextureData->releaseRAM(); + mTextureData->initFromRGBA(dataRGBA, width, height); + // Cache the image dimensions + mSize = Vector2i((int)width, (int)height); + mSourceSize = Vector2f(mTextureData->sourceWidth(), mTextureData->sourceHeight()); } -void TextureResource::deinit() +void TextureResource::initFromMemory(const char* data, size_t length) { - if(mTextureID != 0) - { - glDeleteTextures(1, &mTextureID); - mTextureID = 0; - } + // This is only valid if we have a local texture data object + assert(mTextureData != nullptr); + mTextureData->releaseVRAM(); + mTextureData->releaseRAM(); + mTextureData->initImageFromMemory((const unsigned char*)data, length); + // Get the size from the texture data + mSize = Vector2i((int)mTextureData->width(), (int)mTextureData->height()); + mSourceSize = Vector2f(mTextureData->sourceWidth(), mTextureData->sourceHeight()); } -const Eigen::Vector2i& TextureResource::getSize() const +const Vector2i TextureResource::getSize() const { - return mTextureSize; + return mSize; } bool TextureResource::isTiled() const { - return mTile; + if (mTextureData != nullptr) + return mTextureData->tiled(); + std::shared_ptr data = sTextureDataManager.get(this, false); + return data->tiled(); } -void TextureResource::bind() const +bool TextureResource::bind() { - if(mTextureID != 0) - glBindTexture(GL_TEXTURE_2D, mTextureID); + if (mTextureData != nullptr) + { + mTextureData->uploadAndBind(); + return true; + } else - LOG(LogError) << "Tried to bind uninitialized texture!"; + { + return sTextureDataManager.bind(this); + } } - -std::shared_ptr TextureResource::get(const std::string& path, bool tile) +std::shared_ptr TextureResource::get(const std::string& path, bool tile, bool forceLoad, bool dynamic) { std::shared_ptr& rm = ResourceManager::getInstance(); - const std::string canonicalPath = getCanonicalPath(path); - + const std::string canonicalPath = Utils::FileSystem::getCanonicalPath(path); if(canonicalPath.empty()) { - std::shared_ptr tex(new TextureResource("", tile)); + std::shared_ptr tex(new TextureResource("", tile, false)); rm->addReloadable(tex); //make sure we get properly deinitialized even though we do nothing on reinitialization return tex; } TextureKeyType key(canonicalPath, tile); auto foundTexture = sTextureMap.find(key); - if(foundTexture != sTextureMap.end()) + if(foundTexture != sTextureMap.cend()) { if(!foundTexture->second.expired()) return foundTexture->second.lock(); @@ -121,58 +122,113 @@ std::shared_ptr TextureResource::get(const std::string& path, b // need to create it std::shared_ptr tex; + tex = std::shared_ptr(new TextureResource(key.first, tile, dynamic)); + std::shared_ptr data = sTextureDataManager.get(tex.get()); // is it an SVG? - if(key.first.substr(key.first.size() - 4, std::string::npos) == ".svg") + if(key.first.substr(key.first.size() - 4, std::string::npos) != ".svg") { - // probably - // don't add it to our map because 2 svgs might be rasterized at different sizes - tex = std::shared_ptr(new SVGResource(key.first, tile)); - sTextureList.push_back(tex); // add it to our list though - rm->addReloadable(tex); - tex->reload(rm); - return tex; - }else{ - // normal texture - tex = std::shared_ptr(new TextureResource(key.first, tile)); + // Probably not. Add it to our map. We don't add SVGs because 2 svgs might be rasterized at different sizes sTextureMap[key] = std::weak_ptr(tex); - sTextureList.push_back(tex); - rm->addReloadable(tex); - tex->reload(ResourceManager::getInstance()); - return tex; } + + // Add it to the reloadable list + rm->addReloadable(tex); + + // Force load it if necessary. Note that it may get dumped from VRAM if we run low + if (forceLoad) + { + tex->mForceLoad = forceLoad; + data->load(); + } + + return tex; } -bool TextureResource::isInitialized() const +// For scalable source images in textures we want to set the resolution to rasterize at +void TextureResource::rasterizeAt(size_t width, size_t height) { - return mTextureID != 0; + std::shared_ptr data; + if (mTextureData != nullptr) + data = mTextureData; + else + data = sTextureDataManager.get(this); + mSourceSize = Vector2f((float)width, (float)height); + data->setSourceSize((float)width, (float)height); + if (mForceLoad || (mTextureData != nullptr)) + data->load(); } -size_t TextureResource::getMemUsage() const +Vector2f TextureResource::getSourceImageSize() const { - if(!mTextureID || mTextureSize.x() == 0 || mTextureSize.y() == 0) - return 0; + return mSourceSize; +} - return mTextureSize.x() * mTextureSize.y() * 4; +bool TextureResource::isInitialized() const +{ + return true; } size_t TextureResource::getTotalMemUsage() { size_t total = 0; + // Count up all textures that manage their own texture data + for (auto tex : sAllTextures) + { + if (tex->mTextureData != nullptr) + total += tex->mTextureData->getVRAMUsage(); + } + // Now get the committed memory from the manager + total += sTextureDataManager.getCommittedSize(); + // And the size of the loading queue + total += sTextureDataManager.getQueueSize(); + return total; +} + +size_t TextureResource::getTotalTextureSize() +{ + size_t total = 0; + // Count up all textures that manage their own texture data + for (auto tex : sAllTextures) + { + if (tex->mTextureData != nullptr) + total += tex->getSize().x() * tex->getSize().y() * 4; + } + // Now get the total memory from the manager + total += sTextureDataManager.getTotalSize(); + return total; +} + +bool TextureResource::unload() +{ + // Release the texture's resources + std::shared_ptr data; + if (mTextureData == nullptr) + data = sTextureDataManager.get(this, false); + else + data = mTextureData; - auto it = sTextureList.begin(); - while(it != sTextureList.end()) + if (data != nullptr && data->isLoaded()) { - if((*it).expired()) - { - // remove expired textures from the list - it = sTextureList.erase(it); - continue; - } + data->releaseVRAM(); + data->releaseRAM(); - total += (*it).lock()->getMemUsage(); - it++; + return true; } - return total; + return false; +} + +void TextureResource::reload() +{ + // For dynamically loaded textures the texture manager will load them on demand. + // For manually loaded textures we have to reload them here + if (mTextureData && !mTextureData->isLoaded()) + mTextureData->load(); + + // Uncomment this 2 lines in future release in order to reload texture VRAM exactly as it was before + // This is commented because it needs true images async loading, or it will be very long + + // else if (mTextureData == nullptr) + // sTextureDataManager.get(this); } diff --git a/es-core/src/resources/TextureResource.h b/es-core/src/resources/TextureResource.h index 811e71de37..c3c7e9dd29 100644 --- a/es-core/src/resources/TextureResource.h +++ b/es-core/src/resources/TextureResource.h @@ -1,51 +1,60 @@ #pragma once +#ifndef ES_CORE_RESOURCES_TEXTURE_RESOURCE_H +#define ES_CORE_RESOURCES_TEXTURE_RESOURCE_H +#include "math/Vector2i.h" +#include "math/Vector2f.h" #include "resources/ResourceManager.h" - +#include "resources/TextureDataManager.h" +#include #include -#include -#include "platform.h" -#include GLHEADER + +class TextureData; // An OpenGL texture. // Automatically recreates the texture with renderer deinit/reinit. class TextureResource : public IReloadable { public: - static std::shared_ptr get(const std::string& path, bool tile = false); + static std::shared_ptr get(const std::string& path, bool tile = false, bool forceLoad = false, bool dynamic = true); + void initFromPixels(const unsigned char* dataRGBA, size_t width, size_t height); + virtual void initFromMemory(const char* file, size_t length); + + // For scalable source images in textures we want to set the resolution to rasterize at + void rasterizeAt(size_t width, size_t height); + Vector2f getSourceImageSize() const; virtual ~TextureResource(); - virtual void unload(std::shared_ptr& rm) override; - virtual void reload(std::shared_ptr& rm) override; - bool isInitialized() const; bool isTiled() const; - const Eigen::Vector2i& getSize() const; - void bind() const; - - // Warning: will NOT correctly reinitialize when this texture is reloaded (e.g. ES starts/stops playing a game). - virtual void initFromMemory(const char* file, size_t length); - // Warning: will NOT correctly reinitialize when this texture is reloaded (e.g. ES starts/stops playing a game). - void initFromPixels(const unsigned char* dataRGBA, size_t width, size_t height); + const Vector2i getSize() const; + bool bind(); - size_t getMemUsage() const; // returns an approximation of the VRAM used by this texture (in bytes) static size_t getTotalMemUsage(); // returns an approximation of total VRAM used by textures (in bytes) + static size_t getTotalTextureSize(); // returns the number of bytes that would be used if all textures were in memory protected: - TextureResource(const std::string& path, bool tile); - void deinit(); - - Eigen::Vector2i mTextureSize; - const std::string mPath; - const bool mTile; + TextureResource(const std::string& path, bool tile, bool dynamic); + virtual bool unload(); + virtual void reload(); private: - GLuint mTextureID; + // mTextureData is used for textures that are not loaded from a file - these ones + // are permanently allocated and cannot be loaded and unloaded based on resources + std::shared_ptr mTextureData; + + // The texture data manager manages loading and unloading of filesystem based textures + static TextureDataManager sTextureDataManager; + + Vector2i mSize; + Vector2f mSourceSize; + bool mForceLoad; typedef std::pair TextureKeyType; static std::map< TextureKeyType, std::weak_ptr > sTextureMap; // map of textures, used to prevent duplicate textures - - static std::list< std::weak_ptr > sTextureList; // list of all textures, used for memory approximations + static std::set sAllTextures; // Set of all textures, used for memory management }; + +#endif // ES_CORE_RESOURCES_TEXTURE_RESOURCE_H diff --git a/es-core/src/utils/FileSystemUtil.cpp b/es-core/src/utils/FileSystemUtil.cpp new file mode 100644 index 0000000000..94be3a58bd --- /dev/null +++ b/es-core/src/utils/FileSystemUtil.cpp @@ -0,0 +1,789 @@ +#define _FILE_OFFSET_BITS 64 + +#include "utils/FileSystemUtil.h" + +#include +#include +#include +#include + +#if defined(_WIN32) +// because windows... +#include +#include +#define getcwd _getcwd +#define mkdir(x,y) _mkdir(x) +#define snprintf _snprintf +#define stat64 _stat64 +#define unlink _unlink +#define S_ISREG(x) (((x) & S_IFMT) == S_IFREG) +#define S_ISDIR(x) (((x) & S_IFMT) == S_IFDIR) +#else // _WIN32 +#include +#include +#endif // _WIN32 + +////////////////////////////////////////////////////////////////////////// + +namespace Utils +{ + namespace FileSystem + { + static std::recursive_mutex mutex = {}; + static std::string homePath = ""; + static std::string exePath = ""; + static std::map pathExistsIndex = std::map(); + +////////////////////////////////////////////////////////////////////////// + +#if defined(_WIN32) + static std::string convertFromWideString(const std::wstring _wstring) + { + const int numBytes = WideCharToMultiByte(CP_UTF8, 0, _wstring.c_str(), (int)_wstring.length(), nullptr, 0, nullptr, nullptr); + std::string string(numBytes, 0); + + WideCharToMultiByte(CP_UTF8, 0, _wstring.c_str(), (int)_wstring.length(), (char*)string.c_str(), numBytes, nullptr, nullptr); + + return std::string(string); + + } // convertFromWideString +#endif // _WIN32 + +////////////////////////////////////////////////////////////////////////// + + stringList getDirContent(const std::string& _path, const bool _recursive) + { + const std::string path = getGenericPath(_path); + stringList contentList; + + // only parse the directory, if it's a directory + if(isDirectory(path)) + { + +#if defined(_WIN32) + const std::unique_lock lock(mutex); + WIN32_FIND_DATAW findData; + const std::string wildcard = path + "/*"; + const HANDLE hFind = FindFirstFileW(std::wstring(wildcard.begin(), wildcard.end()).c_str(), &findData); + + if(hFind != INVALID_HANDLE_VALUE) + { + // loop over all files in the directory + do + { + const std::string name = convertFromWideString(findData.cFileName); + + // ignore "." and ".." + if((name != ".") && (name != "..")) + { + const std::string fullName(getGenericPath(path + "/" + name)); + + contentList.push_back(fullName); + + if(_recursive && isDirectory(fullName)) + contentList.merge(getDirContent(fullName, true)); + } + } + while(FindNextFileW(hFind, &findData)); + + FindClose(hFind); + } +#else // _WIN32 + DIR* dir = opendir(path.c_str()); + + if(dir != NULL) + { + struct dirent* entry; + + // loop over all files in the directory + while((entry = readdir(dir)) != NULL) + { + const std::string name(entry->d_name); + + // ignore "." and ".." + if((name != ".") && (name != "..")) + { + std::string fullName(getGenericPath(path + "/" + name)); + contentList.push_back(fullName); + + if(_recursive && isDirectory(fullName)) + contentList.merge(getDirContent(fullName, true)); + } + } + + closedir(dir); + } +#endif // !_WIN32 + + } + + // sort the content list + contentList.sort(); + + // return the content list + return contentList; + + } // getDirContent + +////////////////////////////////////////////////////////////////////////// + + stringList getPathList(const std::string& _path) + { + const std::string path = getGenericPath(_path); + stringList pathList; + size_t start = 0; + size_t end = 0; + + // split at '/' + while((end = path.find("/", start)) != std::string::npos) + { + if(end != start) + pathList.push_back(std::string(path, start, end - start)); + + start = end + 1; + } + + // add last folder / file to pathList + if(start != path.size()) + pathList.push_back(std::string(path, start, path.size() - start)); + + // return the path list + return pathList; + + } // getPathList + +////////////////////////////////////////////////////////////////////////// + + void setHomePath(const std::string& _path) + { + homePath = getGenericPath(_path); + + } // setHomePath + +////////////////////////////////////////////////////////////////////////// + + std::string getHomePath() + { + // only construct the homepath once + if(homePath.length()) + return homePath; + + // check if "getExePath()/.emulationstation/es_systems.cfg" exists + if(Utils::FileSystem::exists(getExePath() + "/.emulationstation/es_systems.cfg")) + homePath = getExePath(); + + // check for HOME environment variable + if(!homePath.length()) + { + const char* envHome = getenv("HOME"); + if(envHome) + homePath = getGenericPath(envHome); + } + +#if defined(_WIN32) + // on Windows we need to check HOMEDRIVE and HOMEPATH + if(!homePath.length()) + { + const char* envHomeDrive = getenv("HOMEDRIVE"); + const char* envHomePath = getenv("HOMEPATH"); + if(envHomeDrive && envHomePath) + homePath = getGenericPath(std::string(envHomeDrive) + "/" + envHomePath); + } +#endif // _WIN32 + + // no homepath found, fall back to current working directory + if(!homePath.length()) + homePath = getCWDPath(); + + // return constructed homepath + return homePath; + + } // getHomePath + +////////////////////////////////////////////////////////////////////////// + + std::string getCWDPath() + { + char temp[512]; + + // return current working directory path + return (getcwd(temp, 512) ? getGenericPath(temp) : ""); + + } // getCWDPath + +////////////////////////////////////////////////////////////////////////// + + void setExePath(const std::string& _path) + { + const size_t path_max = 32767; + +#if defined(_WIN32) + std::wstring result(path_max, 0); + if(GetModuleFileNameW(nullptr, &result[0], path_max) != 0) + exePath = convertFromWideString(result); +#else // _WIN32 + std::string result(path_max, 0); + if(readlink("/proc/self/exe", &result[0], path_max) != -1) + exePath = result; +#endif // !_WIN32 + + exePath = getCanonicalPath(exePath); + + // Fallback to argv[0] if everything else fails + if(exePath.empty()) + exePath = getCanonicalPath(_path); + if(isRegularFile(exePath)) + exePath = getParent(exePath); + + } // setExePath + +////////////////////////////////////////////////////////////////////////// + + std::string getExePath() + { + // return constructed exepath + return exePath; + + } // getExePath + +////////////////////////////////////////////////////////////////////////// + + std::string getPreferredPath(const std::string& _path) + { + std::string path = _path; + size_t offset = std::string::npos; + +#if defined(_WIN32) + // convert '/' to '\\' + while((offset = path.find('/')) != std::string::npos) + path.replace(offset, 1, "\\"); +#endif // _WIN32 + + return path; + } + +////////////////////////////////////////////////////////////////////////// + + std::string getGenericPath(const std::string& _path) + { + std::string path = _path; + size_t offset = std::string::npos; + + // remove "\\\\?\\" + if((path.find("\\\\?\\")) == 0) + path.erase(0, 4); + + // convert '\\' to '/' + while((offset = path.find('\\')) != std::string::npos) + path.replace(offset, 1 ,"/"); + + // remove double '/' + while((offset = path.find("//")) != std::string::npos) + path.erase(offset, 1); + + // remove trailing '/' when the path is more than a simple '/' + while(path.length() > 1 && ((offset = path.find_last_of('/')) == (path.length() - 1))) + path.erase(offset, 1); + + // return generic path + return path; + + } // getGenericPath + +////////////////////////////////////////////////////////////////////////// + + std::string getEscapedPath(const std::string& _path) + { + std::string path = getGenericPath(_path); + +#if defined(_WIN32) + // windows escapes stuff by just putting everything in quotes + return '"' + getPreferredPath(path) + '"'; +#else // _WIN32 + // insert a backslash before most characters that would mess up a bash path + const char* invalidChars = "\\ '\"!$^&*(){}[]?;<>"; + const char* invalidChar = invalidChars; + + while(*invalidChar) + { + size_t start = 0; + size_t offset = 0; + + while((offset = path.find(*invalidChar, start)) != std::string::npos) + { + start = offset + 1; + + if((offset == 0) || (path[offset - 1] != '\\')) + { + path.insert(offset, 1, '\\'); + ++start; + } + } + + ++invalidChar; + } + + // return escaped path + return path; +#endif // !_WIN32 + + } // getEscapedPath + +////////////////////////////////////////////////////////////////////////// + + std::string getCanonicalPath(const std::string& _path) + { + // temporary hack for builtin resources + if((_path[0] == ':') && (_path[1] == '/')) + return _path; + + std::string path = exists(_path) ? getAbsolutePath(_path) : getGenericPath(_path); + + // cleanup path + bool scan = true; + while(scan) + { + const stringList pathList = getPathList(path); + + path.clear(); + scan = false; + + for(stringList::const_iterator it = pathList.cbegin(); it != pathList.cend(); ++it) + { + // ignore empty + if((*it).empty()) + continue; + + // remove "/./" + if((*it) == ".") + continue; + + // resolve "/../" + if((*it) == "..") + { + path = getParent(path); + continue; + } + +#if defined(_WIN32) + // append folder to path + path += (path.size() == 0) ? (*it) : ("/" + (*it)); +#else // _WIN32 + // append folder to path + path += ("/" + (*it)); +#endif // !_WIN32 + + // resolve symlink + if(isSymlink(path)) + { + const std::string resolved = resolveSymlink(path); + + if(resolved.empty()) + return ""; + + if(isAbsolute(resolved)) + path = resolved; + else + path = getParent(path) + "/" + resolved; + + for(++it; it != pathList.cend(); ++it) + path += (path.size() == 0) ? (*it) : ("/" + (*it)); + + scan = true; + break; + } + } + } + + // return canonical path + return path; + + } // getCanonicalPath + +////////////////////////////////////////////////////////////////////////// + + std::string getAbsolutePath(const std::string& _path, const std::string& _base) + { + const std::string path = getGenericPath(_path); + const std::string base = isAbsolute(_base) ? getGenericPath(_base) : getAbsolutePath(_base); + + // return absolute path + return isAbsolute(path) ? path : getGenericPath(base + "/" + path); + + } // getAbsolutePath + +////////////////////////////////////////////////////////////////////////// + + std::string getParent(const std::string& _path) + { + std::string path = getGenericPath(_path); + size_t offset = std::string::npos; + + // find last '/' and erase it + if((offset = path.find_last_of('/')) != std::string::npos) + return path.erase(offset); + + // no parent found + return path; + + } // getParent + +////////////////////////////////////////////////////////////////////////// + + std::string getFileName(const std::string& _path) + { + const std::string path = getGenericPath(_path); + size_t offset = std::string::npos; + + // find last '/' and return the filename + if((offset = path.find_last_of('/')) != std::string::npos) + return ((path[offset + 1] == 0) ? "." : std::string(path, offset + 1)); + + // no '/' found, entire path is a filename + return path; + + } // getFileName + +////////////////////////////////////////////////////////////////////////// + + std::string getStem(const std::string& _path) + { + std::string fileName = getFileName(_path); + size_t offset = std::string::npos; + + // empty fileName + if(fileName == ".") + return fileName; + + // find last '.' and erase the extension + if((offset = fileName.find_last_of('.')) != std::string::npos) + return fileName.erase(offset); + + // no '.' found, filename has no extension + return fileName; + + } // getStem + +////////////////////////////////////////////////////////////////////////// + + std::string getExtension(const std::string& _path) + { + const std::string fileName = getFileName(_path); + size_t offset = std::string::npos; + + // empty fileName + if(fileName == ".") + return fileName; + + // find last '.' and return the extension + if((offset = fileName.find_last_of('.')) != std::string::npos) + return std::string(fileName, offset); + + // no '.' found, filename has no extension + return "."; + + } // getExtension + +////////////////////////////////////////////////////////////////////////// + + std::string resolveRelativePath(const std::string& _path, const std::string& _relativeTo, const bool _allowHome, const bool _skipDirectoryCheck) + { + const std::string path = getGenericPath(_path); + const std::string relativeTo = (_skipDirectoryCheck || isDirectory(_relativeTo)) ? getGenericPath(_relativeTo) : getParent(_relativeTo); + + // nothing to resolve + if(!path.length()) + return path; + + // replace '.' with relativeTo + if((path[0] == '.') && (path[1] == '/')) + return (relativeTo + &(path[1])); + + // replace '~' with homePath + if(_allowHome && (path[0] == '~') && (path[1] == '/')) + return (getHomePath() + &(path[1])); + + // absolute path + if(path[0] == '/') + return path; + + // concatenate paths + return (relativeTo + '/' + path); + + } // resolveRelativePath + +////////////////////////////////////////////////////////////////////////// + + std::string createRelativePath(const std::string& _path, const std::string& _relativeTo, const bool _allowHome, const bool _skipDirectoryCheck) + { + bool contains = false; + std::string path = removeCommonPath(_path, _relativeTo, contains, _skipDirectoryCheck); + + // success + if(contains) + return ("./" + path); + + if(_allowHome) + { + path = removeCommonPath(_path, getHomePath(), contains, true); + + // success + if(contains) + return ("~/" + path); + } + + // nothing to resolve + return path; + + } // createRelativePath + +////////////////////////////////////////////////////////////////////////// + + std::string removeCommonPath(const std::string& _path, const std::string& _common, bool& _contains, const bool _skipDirectoryCheck) + { + const std::string path = getGenericPath(_path); + const std::string common = (_skipDirectoryCheck || isDirectory(_common)) ? getGenericPath(_common) : getParent(_common); + + // check if path contains common + if(path.find(common) == 0) + { + _contains = true; + return path.substr(common.length() + 1); + } + + // it didn't + _contains = false; + return path; + + } // removeCommonPath + +////////////////////////////////////////////////////////////////////////// + + std::string resolveSymlink(const std::string& _path) + { + const std::string path = getGenericPath(_path); + std::string resolved; + +#if defined(_WIN32) + const HANDLE hFile = CreateFile(path.c_str(), FILE_READ_ATTRIBUTES, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0); + + if(hFile != INVALID_HANDLE_VALUE) + { + resolved.resize(GetFinalPathNameByHandle(hFile, nullptr, 0, FILE_NAME_NORMALIZED) + 1); + if(GetFinalPathNameByHandle(hFile, (LPSTR)resolved.data(), (DWORD)resolved.size(), FILE_NAME_NORMALIZED) > 0) + { + resolved.resize(resolved.size() - 1); + resolved = getGenericPath(resolved); + } + CloseHandle(hFile); + } +#else // _WIN32 + struct stat64 info; + + // check if lstat64 succeeded + if(lstat64(path.c_str(), &info) == 0) + { + resolved.resize(info.st_size); + if(readlink(path.c_str(), (char*)resolved.data(), resolved.size()) > 0) + resolved = getGenericPath(resolved); + } +#endif // !_WIN32 + + // return resolved path + return resolved; + + } // resolveSymlink + +////////////////////////////////////////////////////////////////////////// + + bool removeFile(const std::string& _path) + { + const std::unique_lock lock(mutex); + const std::string path = getGenericPath(_path); + + // don't remove if it doesn't exists + if(!exists(path)) + return true; + + bool removed = (unlink(path.c_str()) == 0); + + // if removed, let's remove it from the index + if (removed) + pathExistsIndex[_path] = false; + + // try to remove file + return removed; + + } // removeFile + +////////////////////////////////////////////////////////////////////////// + + bool createDirectory(const std::string& _path) + { + const std::string path = getGenericPath(_path); + + // don't create if it already exists + if(exists(path)) + return true; + + // try to create directory + if(mkdir(path.c_str(), 0755) == 0) + { + pathExistsIndex[_path] = true; + return true; + } + + // failed to create directory, try to create the parent + const std::string parent = getParent(path); + + // only try to create parent if it's not identical to path + if(parent != path) + createDirectory(parent); + + // try to create directory again now that the parent should exist + bool created = (mkdir(path.c_str(), 0755) == 0); + if(created) + pathExistsIndex[_path] = true; + + return created; + + } // createDirectory + +////////////////////////////////////////////////////////////////////////// + + bool exists(const std::string& _path) + { + const std::unique_lock lock(mutex); + + if(pathExistsIndex.find(_path) == pathExistsIndex.cend()) + { + const std::string path = getGenericPath(_path); + struct stat64 info; + // check if stat64 succeeded + pathExistsIndex[_path] = (stat64(path.c_str(), &info) == 0); + } + + return pathExistsIndex.at(_path); + + } // exists + +////////////////////////////////////////////////////////////////////////// + + bool isAbsolute(const std::string& _path) + { + const std::string path = getGenericPath(_path); + +#if defined(_WIN32) + return ((path.size() > 1) && (path[1] == ':')); +#else // _WIN32 + return ((path.size() > 0) && (path[0] == '/')); +#endif // !_WIN32 + + } // isAbsolute + +////////////////////////////////////////////////////////////////////////// + + bool isRegularFile(const std::string& _path) + { + const std::string path = getGenericPath(_path); + struct stat64 info; + + // check if stat64 succeeded + if(stat64(path.c_str(), &info) != 0) + return false; + + // check for S_IFREG attribute + return (S_ISREG(info.st_mode)); + + } // isRegularFile + +////////////////////////////////////////////////////////////////////////// + + bool isDirectory(const std::string& _path) + { + const std::string path = getGenericPath(_path); + struct stat64 info; + + // check if stat64 succeeded + if(stat64(path.c_str(), &info) != 0) + return false; + + // check for S_IFDIR attribute + return (S_ISDIR(info.st_mode)); + + } // isDirectory + +////////////////////////////////////////////////////////////////////////// + + bool isSymlink(const std::string& _path) + { + const std::string path = getGenericPath(_path); + +#if defined(_WIN32) + // check for symlink attribute + const DWORD Attributes = GetFileAttributes(path.c_str()); + if((Attributes != INVALID_FILE_ATTRIBUTES) && (Attributes & FILE_ATTRIBUTE_REPARSE_POINT)) + return true; +#else // _WIN32 + struct stat64 info; + + // check if lstat64 succeeded + if(lstat64(path.c_str(), &info) != 0) + return false; + + // check for S_IFLNK attribute + return (S_ISLNK(info.st_mode)); +#endif // !_WIN32 + + // not a symlink + return false; + + } // isSymlink + +////////////////////////////////////////////////////////////////////////// + + bool isHidden(const std::string& _path) + { + const std::string path = getGenericPath(_path); + +#if defined(_WIN32) + // check for hidden attribute + const DWORD Attributes = GetFileAttributes(path.c_str()); + if((Attributes != INVALID_FILE_ATTRIBUTES) && (Attributes & FILE_ATTRIBUTE_HIDDEN)) + return true; +#endif // _WIN32 + + // filenames starting with . are hidden in linux, we do this check for windows as well + if(getFileName(path)[0] == '.') + return true; + + // not hidden + return false; + + } // isHidden + +////////////////////////////////////////////////////////////////////////// + +#if !defined(_WIN32) + bool isExecutable(const std::string& _path) + { + const std::string path = getGenericPath(_path); + + // regular files and executables, but not setuid, setgid, shared text + const mode_t mask = S_IFREG; + const mode_t mask_exec = S_IXUSR | S_IXGRP | S_IXOTH; + struct stat64 info; + + // check if stat64 succeeded + if(stat64(path.c_str(), &info) != 0) + return false; + + // check for mask attributes + return (info.st_mode & mask) == mask && (info.st_mode & mask_exec) != 0; + + } // isExecutable +#endif // !_WIN32 + + } // FileSystem:: + +} // Utils:: diff --git a/es-core/src/utils/FileSystemUtil.h b/es-core/src/utils/FileSystemUtil.h new file mode 100644 index 0000000000..ac7a423843 --- /dev/null +++ b/es-core/src/utils/FileSystemUtil.h @@ -0,0 +1,50 @@ +#pragma once +#ifndef ES_CORE_UTILS_FILE_SYSTEM_UTIL_H +#define ES_CORE_UTILS_FILE_SYSTEM_UTIL_H + +#include +#include + +namespace Utils +{ + namespace FileSystem + { + typedef std::list stringList; + + stringList getDirContent (const std::string& _path, const bool _recursive = false); + stringList getPathList (const std::string& _path); + void setHomePath (const std::string& _path); + std::string getHomePath (); + std::string getCWDPath (); + void setExePath (const std::string& _path); + std::string getExePath (); + std::string getPreferredPath (const std::string& _path); + std::string getGenericPath (const std::string& _path); + std::string getEscapedPath (const std::string& _path); + std::string getCanonicalPath (const std::string& _path); + std::string getAbsolutePath (const std::string& _path, const std::string& _base = getCWDPath()); + std::string getParent (const std::string& _path); + std::string getFileName (const std::string& _path); + std::string getStem (const std::string& _path); + std::string getExtension (const std::string& _path); + std::string resolveRelativePath(const std::string& _path, const std::string& _relativeTo, const bool _allowHome, const bool _skipDirectoryCheck); + std::string createRelativePath (const std::string& _path, const std::string& _relativeTo, const bool _allowHome, const bool _skipDirectoryCheck); + std::string removeCommonPath (const std::string& _path, const std::string& _common, bool& _contains, const bool _skipDirectoryCheck); + std::string resolveSymlink (const std::string& _path); + bool removeFile (const std::string& _path); + bool createDirectory (const std::string& _path); + bool exists (const std::string& _path); + bool isAbsolute (const std::string& _path); + bool isRegularFile (const std::string& _path); + bool isDirectory (const std::string& _path); + bool isSymlink (const std::string& _path); + bool isHidden (const std::string& _path); +#if !defined(_WIN32) + bool isExecutable (const std::string& _path); +#endif // !_WIN32 + + } // FileSystem:: + +} // Utils:: + +#endif // ES_CORE_UTILS_FILE_SYSTEM_UTIL_H diff --git a/es-core/src/utils/ProfilingUtil.cpp b/es-core/src/utils/ProfilingUtil.cpp new file mode 100644 index 0000000000..0e4a290980 --- /dev/null +++ b/es-core/src/utils/ProfilingUtil.cpp @@ -0,0 +1,225 @@ + +#if defined(USE_PROFILING) + +#include "utils/ProfilingUtil.h" + +#include "math/Misc.h" +#include "Log.h" + +#include + +#if defined(_WIN32) +// because windows... +#include +#define snprintf _snprintf +#else // _WIN32 +#include +#endif // !_WIN32 + +////////////////////////////////////////////////////////////////////////// + +namespace Utils +{ + namespace Profiling + { + std::vector profiles; + std::vector threadStacks; + std::recursive_mutex mutex; + unsigned int counter = 0; + +////////////////////////////////////////////////////////////////////////// + + static double getFrequency( void ) + { +#if defined(_WIN32) + uint64_t qpFrequency; + QueryPerformanceFrequency((LARGE_INTEGER*)&qpFrequency); + return 1.0 / qpFrequency; +#else // _WIN32 + return 1.0 / 1000000.0; +#endif // _WIN32 + } // getFrequency + +////////////////////////////////////////////////////////////////////////// + + static uint64_t getCounter( void ) + { +#if defined(_WIN32) + uint64_t qpCounter; + QueryPerformanceCounter((LARGE_INTEGER*)&qpCounter); + return qpCounter; +#else // _WIN32 + timeval tv; + gettimeofday(&tv, nullptr); + return static_cast(tv.tv_sec) * 1000000u + static_cast(tv.tv_usec); +#endif // !_WIN32 + } // getCounter + +////////////////////////////////////////////////////////////////////////// + + static double getTime(void) + { + return getCounter() * getFrequency(); + + } // getTime + +////////////////////////////////////////////////////////////////////////// + + static bool _sortProfiles(const Profile* _a, const Profile* _b) + { + return _a->message < _b->message; + + } // _sortProfiles + +////////////////////////////////////////////////////////////////////////// + + unsigned int _generateIndex(void) + { + mutex.lock(); + unsigned int index = counter++; + mutex.unlock(); + + return index; + + } // _generateIndex + +////////////////////////////////////////////////////////////////////////// + + void _begin(const unsigned int _index, const std::string& _message) + { + const std::thread::id threadId = std::this_thread::get_id(); + ThreadStack* threadStack = nullptr; + Profile* profile = nullptr; + + mutex.lock(); + + for( ThreadStack* threadStackIt : threadStacks ) + if(threadStackIt->id == threadId) + threadStack = threadStackIt; + + if(!threadStack) + { + threadStack = new ThreadStack; + threadStack->id = threadId; + + threadStacks.push_back(threadStack); + } + + while(profiles.size() < counter) + { + profile = new Profile; + profile->message = ""; + profile->timeBegin = 0.0; + profile->timeTotal = 0.0; + profile->timeExternal = 0.0; + profile->timeMin = 999999999.0; + profile->timeMax = 0.0; + profile->callCount = 0; + + profiles.push_back(profile); + } + + profile = profiles[_index]; + + threadStack->stack.push(profile); + + profile->message = _message; + profile->timeBegin = getTime(); + + mutex.unlock(); + + } // _begin + +////////////////////////////////////////////////////////////////////////// + + int _end(void) + { + const double timeEnd = getTime(); + const std::thread::id threadId = std::this_thread::get_id(); + ThreadStack* threadStack = nullptr; + Profile* profile = nullptr; + + mutex.lock(); + + for( ThreadStack* threadStackIt : threadStacks ) + if(threadStackIt->id == threadId) + threadStack = threadStackIt; + + profile = threadStack->stack.top(); + threadStack->stack.pop(); + + // timer wrapped (~24 days) + if(timeEnd < profile->timeBegin) + { + mutex.unlock(); + return 0; + } + + const double timeElapsed = timeEnd - profile->timeBegin; + + profile->timeTotal += timeElapsed; + profile->timeMin = (profile->timeMin < timeElapsed) ? profile->timeMin : timeElapsed; + profile->timeMax = (profile->timeMax > timeElapsed) ? profile->timeMax : timeElapsed; + profile->callCount++; + + if(!threadStack->stack.empty()) + threadStack->stack.top()->timeExternal += timeElapsed; + + mutex.unlock(); + + return timeElapsed; + + } // _end + +////////////////////////////////////////////////////////////////////////// + + void _dump(void) + { + std::sort(profiles.begin(), profiles.end(), _sortProfiles); + + if(!profiles.empty()) + { + char buffer[1024]; + int longestMessage = 0; + + for(Profile* profile : profiles) + longestMessage = Math::max(longestMessage, (int)profile->message.length()); + + char format1[1024]; + snprintf(format1, 1024, "%%-%ds\t%%12s\t%%12s\t%%12s\t%%12s\t%%12s\t%%20s\t%%20s", longestMessage); + + snprintf(buffer, 1024, format1, "Message", "Calls", "Total Time", "Avg Time", "Min Time", "Max Time", "Internal Total Time", "Internal Avg Time"); + LOG(LogDebug) << buffer; + + char format2[1024]; + snprintf(format2, 1024, "%%-%ds\t%%12d\t%%12.6f\t%%12.6f\t%%12.6f\t%%12.6f\t%%20.6f\t%%20.6f", longestMessage); + + for(Profile* profile : profiles) + { + if(profile->message.length()) + { + snprintf(buffer, 1024, format2, profile->message.c_str(), profile->callCount, profile->timeTotal, profile->timeTotal / profile->callCount, profile->timeMin, profile->timeMax, profile->timeTotal - profile->timeExternal, (profile->timeTotal - profile->timeExternal) / profile->callCount); + LOG(LogDebug) << buffer; + } + + delete profile; + } + + profiles.clear(); + } + + if(!threadStacks.empty()) + { + for(ThreadStack* threadStack : threadStacks) + delete threadStack; + + threadStacks.clear(); + } + + } // _dump + + } // Profiling:: + +} // Utils:: + +#endif // USE_PROFILING diff --git a/es-core/src/utils/ProfilingUtil.h b/es-core/src/utils/ProfilingUtil.h new file mode 100644 index 0000000000..0cdbae0750 --- /dev/null +++ b/es-core/src/utils/ProfilingUtil.h @@ -0,0 +1,87 @@ +#pragma once +#ifndef ES_CORE_UTILS_PROFILING_UTIL_H +#define ES_CORE_UTILS_PROFILING_UTIL_H + +#if defined(USE_PROFILING) + +#include +#include +#include +#include +#include + +namespace Utils +{ + namespace Profiling + { + struct Profile + { + std::string message; + double timeBegin; + double timeTotal; + double timeExternal; + double timeMin; + double timeMax; + unsigned int callCount; + + }; // Profile + + struct ThreadStack + { + std::stack stack; + std::thread::id id; + + }; // ThreadStack + + extern std::vector profiles; + extern std::vector threadStacks; + extern std::recursive_mutex mutex; + extern unsigned int counter; + +////////////////////////////////////////////////////////////////////////// + + unsigned int _generateIndex(void); + void _begin (const unsigned int _index, const std::string& _message); + int _end (void); + void _dump (void); + +////////////////////////////////////////////////////////////////////////// + + class Scope + { + public: + + Scope(const unsigned int _index, const std::string& _message) { _begin(_index, _message); } + ~Scope(void) { _end(); } + + }; // Scope + + }; // Profiling:: + +} // Utils:: + +#define _profilingUnique(_name, _line) _name ## _line +#define _profilingUniqueIndex(_line) _profilingUnique(uniqueIndex, _line) +#define _profilingUniqueScope(_line) _profilingUnique(uniqueScope, _line) +#define __profilingUniqueIndex _profilingUniqueIndex(__LINE__) +#define __profilingUniqueScope _profilingUniqueScope(__LINE__) + +#define ProfileBegin(_message) static const unsigned int __profilingUniqueIndex = Utils::Profiling::_generateIndex(); Utils::Profiling::_begin(__profilingUniqueIndex, _message) +#define ProfileEnd() Utils::Profiling::_end() +#define ProfileScope(_message) static const unsigned int __profilingUniqueIndex = Utils::Profiling::_generateIndex(); const Utils::Profiling::Scope __profilingUniqueScope(__profilingUniqueIndex, _message) +#define ProfileDump() Utils::Profiling::_dump() + +#else // USE_PROFILING + +#define ProfileBegin(_message) +#define ProfileEnd() +#define ProfileScope(_message) +#define ProfileDump() + +#endif // !USE_PROFILING + +#if !defined(__PRETTY_FUNCTION__) +#define __PRETTY_FUNCTION__ __FUNCTION__ +#endif // !__PRETTY_FUNCTION__ + +#endif // ES_CORE_UTILS_TIME_UTIL_H diff --git a/es-core/src/utils/StringUtil.cpp b/es-core/src/utils/StringUtil.cpp new file mode 100644 index 0000000000..766cbccb03 --- /dev/null +++ b/es-core/src/utils/StringUtil.cpp @@ -0,0 +1,329 @@ +#include "utils/StringUtil.h" + +#include +#include + +////////////////////////////////////////////////////////////////////////// + +namespace Utils +{ + namespace String + { + unsigned int chars2Unicode(const std::string& _string, size_t& _cursor) + { + const char& c = _string[_cursor]; + unsigned int result = '?'; + + if((c & 0x80) == 0) // 0xxxxxxx, one byte character + { + // 0xxxxxxx + result = ((_string[_cursor++] ) ); + } + else if((c & 0xE0) == 0xC0) // 110xxxxx, two byte character + { + // 110xxxxx 10xxxxxx + result = (_string[_cursor++] & 0x1F) << 6; + result |= (_string[_cursor++] & 0x3F); + } + else if((c & 0xF0) == 0xE0) // 1110xxxx, three byte character + { + // 1110xxxx 10xxxxxx 10xxxxxx + result = (_string[_cursor++] & 0x0F) << 12; + result |= (_string[_cursor++] & 0x3F) << 6; + result |= (_string[_cursor++] & 0x3F); + } + else if((c & 0xF8) == 0xF0) // 11110xxx, four byte character + { + // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + result = (_string[_cursor++] & 0x07) << 18; + result |= (_string[_cursor++] & 0x3F) << 12; + result |= (_string[_cursor++] & 0x3F) << 6; + result |= (_string[_cursor++] & 0x3F); + } + else + { + // error, invalid unicode + ++_cursor; + } + + return result; + + } // chars2Unicode + +////////////////////////////////////////////////////////////////////////// + + std::string unicode2Chars(const unsigned int _unicode) + { + std::string result; + + if(_unicode < 0x80) // one byte character + { + result += ((_unicode ) & 0xFF); + } + else if(_unicode < 0x800) // two byte character + { + result += ((_unicode >> 6) & 0xFF) | 0xC0; + result += ((_unicode ) & 0x3F) | 0x80; + } + else if(_unicode < 0xFFFF) // three byte character + { + result += ((_unicode >> 12) & 0xFF) | 0xE0; + result += ((_unicode >> 6) & 0x3F) | 0x80; + result += ((_unicode ) & 0x3F) | 0x80; + } + else if(_unicode <= 0x1fffff) // four byte character + { + result += ((_unicode >> 18) & 0xFF) | 0xF0; + result += ((_unicode >> 12) & 0x3F) | 0x80; + result += ((_unicode >> 6) & 0x3F) | 0x80; + result += ((_unicode ) & 0x3F) | 0x80; + } + else + { + // error, invalid unicode + result += '?'; + } + + return result; + + } // unicode2Chars + +////////////////////////////////////////////////////////////////////////// + + size_t nextCursor(const std::string& _string, const size_t _cursor) + { + size_t result = _cursor; + + while(result < _string.length()) + { + ++result; + + if((_string[result] & 0xC0) != 0x80) // break if current character is not 10xxxxxx + break; + } + + return result; + + } // nextCursor + +////////////////////////////////////////////////////////////////////////// + + size_t prevCursor(const std::string& _string, const size_t _cursor) + { + size_t result = _cursor; + + while(result > 0) + { + --result; + + if((_string[result] & 0xC0) != 0x80) // break if current character is not 10xxxxxx + break; + } + + return result; + + } // prevCursor + +////////////////////////////////////////////////////////////////////////// + + size_t moveCursor(const std::string& _string, const size_t _cursor, const int _amount) + { + size_t result = _cursor; + + if(_amount > 0) + { + for(int i = 0; i < _amount; ++i) + result = nextCursor(_string, result); + } + else if(_amount < 0) + { + for(int i = _amount; i < 0; ++i) + result = prevCursor(_string, result); + } + + return result; + + } // moveCursor + +////////////////////////////////////////////////////////////////////////// + + std::string toLower(const std::string& _string) + { + std::string string; + + for(size_t i = 0; i < _string.length(); ++i) + string += (char)tolower(_string[i]); + + return string; + + } // toLower + +////////////////////////////////////////////////////////////////////////// + + std::string toUpper(const std::string& _string) + { + std::string string; + + for(size_t i = 0; i < _string.length(); ++i) + string += (char)toupper(_string[i]); + + return string; + + } // toUpper + +////////////////////////////////////////////////////////////////////////// + + std::string trim(const std::string& _string) + { + const size_t strBegin = _string.find_first_not_of(" \t"); + const size_t strEnd = _string.find_last_not_of(" \t"); + + if(strBegin == std::string::npos) + return ""; + + return _string.substr(strBegin, strEnd - strBegin + 1); + + } // trim + +////////////////////////////////////////////////////////////////////////// + + std::string replace(const std::string& _string, const std::string& _replace, const std::string& _with) + { + std::string string = _string; + size_t pos; + + while((pos = string.find(_replace)) != std::string::npos) + string = string.replace(pos, _replace.length(), _with.c_str(), _with.length()); + + return string; + + } // replace + +////////////////////////////////////////////////////////////////////////// + + bool startsWith(const std::string& _string, const std::string& _start) + { + return (_string.find(_start) == 0); + + } // startsWith + +////////////////////////////////////////////////////////////////////////// + + bool endsWith(const std::string& _string, const std::string& _end) + { + return (_string.find(_end) == (_string.size() - _end.size())); + + } // endsWith + +////////////////////////////////////////////////////////////////////////// + + std::string removeParenthesis(const std::string& _string) + { + static const char remove[4] = { '(', ')', '[', ']' }; + std::string string = _string; + size_t start; + size_t end; + bool done = false; + + while(!done) + { + done = true; + + for(size_t i = 0; i < sizeof(remove); i += 2) + { + end = string.find_first_of(remove[i + 1]); + start = string.find_last_of( remove[i + 0], end); + + if((start != std::string::npos) && (end != std::string::npos)) + { + string.erase(start, end - start + 1); + done = false; + } + } + } + + return trim(string); + + } // removeParenthesis + +////////////////////////////////////////////////////////////////////////// + + stringVector delimitedStringToVector(const std::string& _string, const std::string& _delimiter, bool sort) + { + stringVector vector; + size_t start = 0; + size_t comma = _string.find(_delimiter); + + while(comma != std::string::npos) + { + vector.push_back(_string.substr(start, comma - start)); + start = comma + 1; + comma = _string.find(_delimiter, start); + } + + vector.push_back(_string.substr(start)); + if (sort) + std::sort(vector.begin(), vector.end()); + + return vector; + + } // delimitedStringToVector + +////////////////////////////////////////////////////////////////////////// + + std::string vectorToDelimitedString(stringVector _vector, const std::string& _delimiter) + { + std::string string; + + std::sort(_vector.begin(), _vector.end()); + + for(stringVector::const_iterator it = _vector.cbegin(); it != _vector.cend(); ++it) + string += (string.length() ? _delimiter : "") + (*it); + + return string; + + } // vectorToDelimitedString + +////////////////////////////////////////////////////////////////////////// + + std::string format(const char* _format, ...) + { + va_list args; + va_list copy; + + va_start(args, _format); + + va_copy(copy, args); + const int length = vsnprintf(nullptr, 0, _format, copy); + va_end(copy); + + char* buffer = new char[length + 1]; + va_copy(copy, args); + vsnprintf(buffer, length + 1, _format, copy); + va_end(copy); + + va_end(args); + + std::string out(buffer); + delete[] buffer; + + return out; + + } // format + +////////////////////////////////////////////////////////////////////////// + + std::string scramble(const std::string& _input, const std::string& _key) + { + std::string buffer = _input; + + for(size_t i = 0; i < _input.size(); ++i) + buffer[i] = _input[i] ^ _key[i]; + + return buffer; + + } // scramble + + } // String:: + +} // Utils:: diff --git a/es-core/src/utils/StringUtil.h b/es-core/src/utils/StringUtil.h new file mode 100644 index 0000000000..f9600abc6c --- /dev/null +++ b/es-core/src/utils/StringUtil.h @@ -0,0 +1,35 @@ +#pragma once +#ifndef ES_CORE_UTILS_STRING_UTIL_H +#define ES_CORE_UTILS_STRING_UTIL_H + +#include +#include + +namespace Utils +{ + namespace String + { + typedef std::vector stringVector; + + unsigned int chars2Unicode (const std::string& _string, size_t& _cursor); + std::string unicode2Chars (const unsigned int _unicode); + size_t nextCursor (const std::string& _string, const size_t _cursor); + size_t prevCursor (const std::string& _string, const size_t _cursor); + size_t moveCursor (const std::string& _string, const size_t _cursor, const int _amount); + std::string toLower (const std::string& _string); + std::string toUpper (const std::string& _string); + std::string trim (const std::string& _string); + std::string replace (const std::string& _string, const std::string& _replace, const std::string& _with); + bool startsWith (const std::string& _string, const std::string& _start); + bool endsWith (const std::string& _string, const std::string& _end); + std::string removeParenthesis (const std::string& _string); + stringVector delimitedStringToVector(const std::string& _string, const std::string& _delimiter, bool sort = false); + std::string vectorToDelimitedString(stringVector _vector, const std::string& _delimiter); + std::string format (const char* _string, ...); + std::string scramble (const std::string& _input, const std::string& key); + + } // String:: + +} // Utils:: + +#endif // ES_CORE_UTILS_STRING_UTIL_H diff --git a/es-core/src/utils/ThreadPool.cpp b/es-core/src/utils/ThreadPool.cpp new file mode 100644 index 0000000000..3108cb62ab --- /dev/null +++ b/es-core/src/utils/ThreadPool.cpp @@ -0,0 +1,93 @@ +#include "ThreadPool.h" + +#if WIN32 +#include +#endif + +namespace Utils +{ + ThreadPool::ThreadPool() : mRunning(true), mWaiting(false), mNumWork(0) + { + size_t num_threads = std::thread::hardware_concurrency() - 1; + + auto doWork = [&](size_t id) + { +#if WIN32 + auto mask = (static_cast(1) << id); + SetThreadAffinityMask(GetCurrentThread(), mask); +#endif + + while (mRunning) + { + _mutex.lock(); + if (!mWorkQueue.empty()) + { + auto work = mWorkQueue.front(); + mWorkQueue.pop(); + _mutex.unlock(); + + try + { + work(); + } + catch (...) {} + + mNumWork--; + } + else + { + _mutex.unlock(); + + // Extra code : Exit finished threads + if (mWaiting) + return; + + std::this_thread::yield(); + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + } + }; + + mThreads.reserve(num_threads); + + for (size_t i = 0; i < num_threads; i++) + mThreads.push_back(std::thread(doWork, i)); + } + + ThreadPool::~ThreadPool() + { + mRunning = false; + + for (std::thread& t : mThreads) + if (t.joinable()) + t.join(); + } + + void ThreadPool::queueWorkItem(work_function work) + { + _mutex.lock(); + mWorkQueue.push(work); + mNumWork++; + _mutex.unlock(); + } + + void ThreadPool::wait() + { + mWaiting = true; + while (mNumWork.load() > 0) + std::this_thread::yield(); + } + + void ThreadPool::wait(work_function work, int delay) + { + mWaiting = true; + + while (mNumWork.load() > 0) + { + work(); + + std::this_thread::yield(); + std::this_thread::sleep_for(std::chrono::milliseconds(delay)); + } + } +} \ No newline at end of file diff --git a/es-core/src/utils/ThreadPool.h b/es-core/src/utils/ThreadPool.h new file mode 100644 index 0000000000..34eb844696 --- /dev/null +++ b/es-core/src/utils/ThreadPool.h @@ -0,0 +1,32 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace Utils +{ + class ThreadPool + { + public: + typedef std::function work_function; + + ThreadPool(); + ~ThreadPool(); + + void queueWorkItem(work_function work); + void wait(); + void wait(work_function work, int delay = 50); + + private: + bool mRunning; + bool mWaiting; + std::queue mWorkQueue; + std::atomic mNumWork; + std::mutex _mutex; + std::vector mThreads; + + }; +} \ No newline at end of file diff --git a/es-core/src/utils/TimeUtil.cpp b/es-core/src/utils/TimeUtil.cpp new file mode 100644 index 0000000000..1a9f76103c --- /dev/null +++ b/es-core/src/utils/TimeUtil.cpp @@ -0,0 +1,259 @@ +#include "utils/TimeUtil.h" + +#include + +////////////////////////////////////////////////////////////////////////// + +namespace Utils +{ + namespace Time + { + DateTime::DateTime() + { + mTime = 0; + mTimeStruct = { 0, 0, 0, 1, 0, 0, 0, 0, -1 }; + mIsoString = "00000000T000000"; + + } // DateTime + +////////////////////////////////////////////////////////////////////////// + + DateTime::DateTime(const time_t& _time) + { + setTime(_time); + + } // DateTime + +////////////////////////////////////////////////////////////////////////// + + DateTime::DateTime(const tm& _timeStruct) + { + setTimeStruct(_timeStruct); + + } // DateTime + +////////////////////////////////////////////////////////////////////////// + + DateTime::DateTime(const std::string& _isoString) + { + setIsoString(_isoString); + + } // DateTime + +////////////////////////////////////////////////////////////////////////// + + DateTime::~DateTime() + { + + } // ~DateTime + +////////////////////////////////////////////////////////////////////////// + + void DateTime::setTime(const time_t& _time) + { + mTime = (_time < 0) ? 0 : _time; + mTimeStruct = *localtime(&mTime); + mIsoString = timeToString(mTime); + + } // setTime + +////////////////////////////////////////////////////////////////////////// + + void DateTime::setTimeStruct(const tm& _timeStruct) + { + setTime(mktime((tm*)&_timeStruct)); + + } // setTimeStruct + +////////////////////////////////////////////////////////////////////////// + + void DateTime::setIsoString(const std::string& _isoString) + { + setTime(stringToTime(_isoString)); + + } // setIsoString + +////////////////////////////////////////////////////////////////////////// + + Duration::Duration(const time_t& _time) + { + mTotalSeconds = (unsigned int)_time; + mDays = (mTotalSeconds - (mTotalSeconds % (60*60*24))) / (60*60*24); + mHours = ((mTotalSeconds % (60*60*24)) - (mTotalSeconds % (60*60))) / (60*60); + mMinutes = ((mTotalSeconds % (60*60)) - (mTotalSeconds % (60))) / 60; + mSeconds = mTotalSeconds % 60; + + } // Duration + +////////////////////////////////////////////////////////////////////////// + + Duration::~Duration() + { + + } // ~Duration + +////////////////////////////////////////////////////////////////////////// + + time_t now() + { + time_t time; + ::time(&time); + return time; + + } // now + +////////////////////////////////////////////////////////////////////////// + + time_t stringToTime(const std::string& _string, const std::string& _format) + { + const char* s = _string.c_str(); + const char* f = _format.c_str(); + tm timeStruct = { 0, 0, 0, 1, 0, 0, 0, 0, -1 }; + size_t parsedChars = 0; + + if(_string == "not-a-date-time") + return mktime(&timeStruct); + + while(*f && (parsedChars < _string.length())) + { + if(*f == '%') + { + ++f; + + switch(*f++) + { + case 'Y': // The year [1970,xxxx] + { + if((parsedChars + 4) <= _string.length()) + { + timeStruct.tm_year = (*s++ - '0') * 1000; + timeStruct.tm_year += (*s++ - '0') * 100; + timeStruct.tm_year += (*s++ - '0') * 10; + timeStruct.tm_year += (*s++ - '0'); + if(timeStruct.tm_year >= 1900) + timeStruct.tm_year -= 1900; + } + + parsedChars += 4; + } + break; + + case 'm': // The month number [01,12] + { + if((parsedChars + 2) <= _string.length()) + { + timeStruct.tm_mon = (*s++ - '0') * 10; + timeStruct.tm_mon += (*s++ - '0'); + if(timeStruct.tm_mon >= 1) + timeStruct.tm_mon -= 1; + } + + parsedChars += 2; + } + break; + + case 'd': // The day of the month [01,31] + { + if((parsedChars + 2) <= _string.length()) + { + timeStruct.tm_mday = (*s++ - '0') * 10; + timeStruct.tm_mday += (*s++ - '0'); + } + + parsedChars += 2; + } + break; + + case 'H': // The hour (24-hour clock) [00,23] + { + if((parsedChars + 2) <= _string.length()) + { + timeStruct.tm_hour = (*s++ - '0') * 10; + timeStruct.tm_hour += (*s++ - '0'); + } + + parsedChars += 2; + } + break; + + case 'M': // The minute [00,59] + { + if((parsedChars + 2) <= _string.length()) + { + timeStruct.tm_min = (*s++ - '0') * 10; + timeStruct.tm_min += (*s++ - '0'); + } + + parsedChars += 2; + } + break; + + case 'S': // The second [00,59] + { + if((parsedChars + 2) <= _string.length()) + { + timeStruct.tm_sec = (*s++ - '0') * 10; + timeStruct.tm_sec += (*s++ - '0'); + } + + parsedChars += 2; + } + break; + } + } + else + { + ++s; + ++f; + } + } + + return mktime(&timeStruct); + + } // stringToTime + +////////////////////////////////////////////////////////////////////////// + + std::string timeToString(const time_t& _time, const std::string& _format) + { + const tm timeStruct = *localtime(&_time); + char buf[256] = { '\0' }; + const int MAX_LENGTH = 256; + + // Use strftime to format the string + if(!strftime(buf, MAX_LENGTH, _format.c_str(), &timeStruct)) + { + return ""; + } + else + { + return std::string(buf); + } + + } // timeToString + +////////////////////////////////////////////////////////////////////////// + + int daysInMonth(const int _year, const int _month) + { + tm timeStruct = { 0, 0, 0, 0, _month, _year - 1900, 0, 0, -1 }; + mktime(&timeStruct); + + return timeStruct.tm_mday; + + } // daysInMonth + +////////////////////////////////////////////////////////////////////////// + + int daysInYear(const int _year) + { + tm timeStruct = { 0, 0, 0, 0, 0, _year - 1900 + 1, 0, 0, -1 }; + mktime(&timeStruct); + + return timeStruct.tm_yday + 1; + + } // daysInYear + + } // Time:: + +} // Utils:: diff --git a/es-core/src/utils/TimeUtil.h b/es-core/src/utils/TimeUtil.h new file mode 100644 index 0000000000..3c1e7b7850 --- /dev/null +++ b/es-core/src/utils/TimeUtil.h @@ -0,0 +1,85 @@ +#pragma once +#ifndef ES_CORE_UTILS_TIME_UTIL_H +#define ES_CORE_UTILS_TIME_UTIL_H + +#include +#include + +namespace Utils +{ + namespace Time + { + static inline time_t blankDate() { + // 1970-01-02 + tm timeStruct = { 0, 0, 0, 2, 0, 70, 0, 0, -1 }; + return mktime(&timeStruct); + } + static int NOT_A_DATE_TIME = 0; + static time_t BLANK_DATE = blankDate(); + + class DateTime + { + public: + + DateTime(); + DateTime(const time_t& _time); + DateTime(const tm& _timeStruct); + DateTime(const std::string& _isoString); + ~DateTime(); + + const bool operator< (const DateTime& _other) const { return (mTime < _other.mTime); } + const bool operator<= (const DateTime& _other) const { return (mTime <= _other.mTime); } + const bool operator> (const DateTime& _other) const { return (mTime > _other.mTime); } + const bool operator>= (const DateTime& _other) const { return (mTime >= _other.mTime); } + operator time_t () const { return mTime; } + operator tm () const { return mTimeStruct; } + operator std::string() const { return mIsoString; } + + void setTime (const time_t& _time); + const time_t& getTime () const { return mTime; } + void setTimeStruct(const tm& _timeStruct); + const tm& getTimeStruct() const { return mTimeStruct; } + void setIsoString (const std::string& _isoString); + const std::string& getIsoString () const { return mIsoString; } + + private: + + time_t mTime; + tm mTimeStruct; + std::string mIsoString; + + }; // DateTime + + class Duration + { + public: + + Duration(const time_t& _time); + ~Duration(); + + unsigned int getDays () const { return mDays; } + unsigned int getHours () const { return mHours; } + unsigned int getMinutes() const { return mMinutes; } + unsigned int getSeconds() const { return mSeconds; } + + private: + + unsigned int mTotalSeconds; + unsigned int mDays; + unsigned int mHours; + unsigned int mMinutes; + unsigned int mSeconds; + + }; // Duration + + time_t now (); + time_t stringToTime(const std::string& _string, const std::string& _format = "%Y%m%dT%H%M%S"); + std::string timeToString(const time_t& _time, const std::string& _format = "%Y%m%dT%H%M%S"); + int daysInMonth (const int _year, const int _month); + int daysInYear (const int _year); + + } // Time:: + +} // Utils:: + +#endif // ES_CORE_UTILS_TIME_UTIL_H diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 9b09143ada..4f932f3b5f 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -1,5 +1,10 @@ -# set up the external libraries that aren't popular enough to be found on most +# set up the external libraries that aren't popular enough to be found on most # package managers are included with the project (in the 'external' folder) add_subdirectory("nanosvg") -add_subdirectory("pugixml") + +find_package(pugixml) + +if(NOT pugixml_FOUND) + add_subdirectory("pugixml") +endif() diff --git a/external/nanosvg/nanosvg.h b/external/nanosvg/nanosvg.h index ad2ee52601..76e0dbebe2 100644 --- a/external/nanosvg/nanosvg.h +++ b/external/nanosvg/nanosvg.h @@ -1,14 +1,14 @@ /* * Copyright (c) 2013-14 Mikko Mononen memon@inside.org - * + * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. - * + * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: - * + * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be @@ -17,7 +17,7 @@ * misrepresented as being the original software. * 3. This notice may not be removed or altered from any source distribution. * - * The SVG parser is based on Anti-Graim Geometry 2.4 SVG example + * The SVG parser is based on Anti-Grain Geometry 2.4 SVG example * Copyright (C) 2002-2004 Maxim Shemanarev (McSeem) (http://www.antigrain.com/) * * Arc calculation code based on canvg (https://code.google.com/p/canvg/) @@ -29,9 +29,11 @@ #ifndef NANOSVG_H #define NANOSVG_H +#ifndef NANOSVG_CPLUSPLUS #ifdef __cplusplus extern "C" { #endif +#endif // NanoSVG is a simple stupid single-header-file SVG parse. The output of the parser is a list of cubic bezier shapes. // @@ -43,23 +45,23 @@ extern "C" { // That is, you should get the same looking data as your designed in your favorite app. // // NanoSVG can return the paths in few different units. For example if you want to render an image, you may choose -// to get the paths in pixels, or if you are feeding the data into a CNC-cutter, you may want to use millimeters. +// to get the paths in pixels, or if you are feeding the data into a CNC-cutter, you may want to use millimeters. // -// The units passed to NanoVG should be one of: 'px', 'pt', 'pc' 'mm', 'cm', or 'in'. +// The units passed to NanoSVG should be one of: 'px', 'pt', 'pc' 'mm', 'cm', or 'in'. // DPI (dots-per-inch) controls how the unit conversion is done. // // If you don't know or care about the units stuff, "px" and 96 should get you going. /* Example Usage: - // Load - struct SNVGImage* image; + // Load SVG + NSVGimage* image; image = nsvgParseFromFile("test.svg", "px", 96); printf("size: %f x %f\n", image->width, image->height); // Use... - for (shape = image->shapes; shape != NULL; shape = shape->next) { - for (path = shape->paths; path != NULL; path = path->next) { - for (i = 0; i < path->npts-1; i += 3) { + for (NSVGshape *shape = image->shapes; shape != NULL; shape = shape->next) { + for (NSVGpath *path = shape->paths; path != NULL; path = path->next) { + for (int i = 0; i < path->npts-1; i += 3) { float* p = &path->pts[i*2]; drawCubicBez(p[0],p[1], p[2],p[3], p[4],p[5], p[6],p[7]); } @@ -69,86 +71,129 @@ extern "C" { nsvgDelete(image); */ -#define NSVG_PAINT_NONE 0 -#define NSVG_PAINT_COLOR 1 -#define NSVG_PAINT_LINEAR_GRADIENT 2 -#define NSVG_PAINT_RADIAL_GRADIENT 3 +enum NSVGpaintType { + NSVG_PAINT_UNDEF = -1, + NSVG_PAINT_NONE = 0, + NSVG_PAINT_COLOR = 1, + NSVG_PAINT_LINEAR_GRADIENT = 2, + NSVG_PAINT_RADIAL_GRADIENT = 3 +}; + +enum NSVGspreadType { + NSVG_SPREAD_PAD = 0, + NSVG_SPREAD_REFLECT = 1, + NSVG_SPREAD_REPEAT = 2 +}; + +enum NSVGlineJoin { + NSVG_JOIN_MITER = 0, + NSVG_JOIN_ROUND = 1, + NSVG_JOIN_BEVEL = 2 +}; + +enum NSVGlineCap { + NSVG_CAP_BUTT = 0, + NSVG_CAP_ROUND = 1, + NSVG_CAP_SQUARE = 2 +}; + +enum NSVGfillRule { + NSVG_FILLRULE_NONZERO = 0, + NSVG_FILLRULE_EVENODD = 1 +}; -#define NSVG_SPREAD_PAD 0 -#define NSVG_SPREAD_REFLECT 1 -#define NSVG_SPREAD_REPEAT 2 +enum NSVGflags { + NSVG_FLAGS_VISIBLE = 0x01 +}; -struct NSVGgradientStop { +typedef struct NSVGgradientStop { unsigned int color; float offset; -}; +} NSVGgradientStop; -struct NSVGgradient { +typedef struct NSVGgradient { float xform[6]; char spread; float fx, fy; int nstops; - struct NSVGgradientStop stops[1]; -}; + NSVGgradientStop stops[1]; +} NSVGgradient; -struct NSVGpaint { - char type; +typedef struct NSVGpaint { + signed char type; union { unsigned int color; - struct NSVGgradient* gradient; + NSVGgradient* gradient; }; -}; +} NSVGpaint; -struct NSVGpath +typedef struct NSVGpath { float* pts; // Cubic bezier points: x0,y0, [cpx1,cpx1,cpx2,cpy2,x1,y1], ... int npts; // Total number of bezier points. char closed; // Flag indicating if shapes should be treated as closed. float bounds[4]; // Tight bounding box of the shape [minx,miny,maxx,maxy]. struct NSVGpath* next; // Pointer to next path, or NULL if last element. -}; +} NSVGpath; -struct NSVGshape +typedef struct NSVGshape { - struct NSVGpaint fill; // Fill paint - struct NSVGpaint stroke; // Stroke paint + char id[64]; // Optional 'id' attr of the shape or its group + NSVGpaint fill; // Fill paint + NSVGpaint stroke; // Stroke paint float opacity; // Opacity of the shape. - float strokeWidth; // Stroke width (scaled) + float strokeWidth; // Stroke width (scaled). + float strokeDashOffset; // Stroke dash offset (scaled). + float strokeDashArray[8]; // Stroke dash array (scaled). + char strokeDashCount; // Number of dash values in dash array. + char strokeLineJoin; // Stroke join type. + char strokeLineCap; // Stroke cap type. + float miterLimit; // Miter limit + char fillRule; // Fill rule, see NSVGfillRule. + unsigned char flags; // Logical or of NSVG_FLAGS_* flags float bounds[4]; // Tight bounding box of the shape [minx,miny,maxx,maxy]. - struct NSVGpath* paths; // Linked list of paths in the image. + char fillGradient[64]; // Optional 'id' of fill gradient + char strokeGradient[64]; // Optional 'id' of stroke gradient + float xform[6]; // Root transformation for fill/stroke gradient + NSVGpath* paths; // Linked list of paths in the image. struct NSVGshape* next; // Pointer to next shape, or NULL if last element. -}; +} NSVGshape; -struct NSVGimage +typedef struct NSVGimage { float width; // Width of the image. float height; // Height of the image. - struct NSVGshape* shapes; // Linked list of shapes in the image. -}; + NSVGshape* shapes; // Linked list of shapes in the image. +} NSVGimage; // Parses SVG file from a file, returns SVG image as paths. -struct NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi); +NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi); // Parses SVG file from a null terminated string, returns SVG image as paths. -struct NSVGimage* nsvgParse(char* input, const char* units, float dpi); +// Important note: changes the string. +NSVGimage* nsvgParse(char* input, const char* units, float dpi); + +// Duplicates a path. +NSVGpath* nsvgDuplicatePath(NSVGpath* p); -// Deletes list of paths. -void nsvgDelete(struct NSVGimage* image); +// Deletes an image. +void nsvgDelete(NSVGimage* image); +#ifndef NANOSVG_CPLUSPLUS #ifdef __cplusplus -}; +} +#endif #endif - -#endif // NANOSVG_H #ifdef NANOSVG_IMPLEMENTATION #include #include +#include #include #define NSVG_PI (3.14159265358979323846264338327f) -#define NSVG_KAPPA90 (0.5522847493f) // Lenght proportional to radius of a cubic bezier handle for 90deg arcs. +#define NSVG_KAPPA90 (0.5522847493f) // Length proportional to radius of a cubic bezier handle for 90deg arcs. #define NSVG_ALIGN_MIN 0 #define NSVG_ALIGN_MID 1 @@ -157,6 +202,7 @@ void nsvgDelete(struct NSVGimage* image); #define NSVG_ALIGN_MEET 1 #define NSVG_ALIGN_SLICE 2 +#define NSVG_NOTUSED(v) do { (void)(1 ? (void)0 : ( (void)(v) ) ); } while(0) #define NSVG_RGB(r, g, b) (((unsigned int)r) | ((unsigned int)g << 8) | ((unsigned int)b << 16)) #ifdef _MSC_VER @@ -179,12 +225,7 @@ static int nsvg__isspace(char c) static int nsvg__isdigit(char c) { - return strchr("0123456789", c) != 0; -} - -static int nsvg__isnum(char c) -{ - return strchr("0123456789+-.eE", c) != 0; + return c >= '0' && c <= '9'; } static NSVG_INLINE float nsvg__minf(float a, float b) { return a < b ? a : b; } @@ -204,7 +245,7 @@ static void nsvg__parseContent(char* s, // Trim start white spaces while (*s && nsvg__isspace(*s)) s++; if (!*s) return; - + if (contentCb) (*contentCb)(ud, s); } @@ -219,7 +260,8 @@ static void nsvg__parseElement(char* s, char* name; int start = 0; int end = 0; - + char quote; + // Skip white space after the '<' while (*s && nsvg__isspace(*s)) s++; @@ -242,6 +284,9 @@ static void nsvg__parseElement(char* s, // Get attribs while (!end && *s && nattr < NSVG_XML_MAX_ATTRIBS-3) { + char* name = NULL; + char* value = NULL; + // Skip white space before the attrib name while (*s && nsvg__isspace(*s)) s++; if (!*s) break; @@ -249,20 +294,27 @@ static void nsvg__parseElement(char* s, end = 1; break; } - attr[nattr++] = s; + name = s; // Find end of the attrib name. while (*s && !nsvg__isspace(*s) && *s != '=') s++; if (*s) { *s++ = '\0'; } // Skip until the beginning of the value. - while (*s && *s != '\"') s++; + while (*s && *s != '\"' && *s != '\'') s++; if (!*s) break; + quote = *s; s++; // Store value and find the end of it. - attr[nattr++] = s; - while (*s && *s != '\"') s++; + value = s; + while (*s && *s != quote) s++; if (*s) { *s++ = '\0'; } + + // Store only well formed attributes + if (name && value) { + attr[nattr++] = name; + attr[nattr++] = value; + } } - + // List terminator attr[nattr++] = 0; attr[nattr++] = 0; @@ -300,7 +352,7 @@ int nsvg__parseXML(char* input, s++; } } - + return 1; } @@ -309,32 +361,59 @@ int nsvg__parseXML(char* input, #define NSVG_MAX_ATTR 128 -#define NSVG_USER_SPACE 0 -#define NSVG_OBJECT_SPACE 1 +enum NSVGgradientUnits { + NSVG_USER_SPACE = 0, + NSVG_OBJECT_SPACE = 1 +}; -struct NSVGgradientData +#define NSVG_MAX_DASHES 8 + +enum NSVGunits { + NSVG_UNITS_USER, + NSVG_UNITS_PX, + NSVG_UNITS_PT, + NSVG_UNITS_PC, + NSVG_UNITS_MM, + NSVG_UNITS_CM, + NSVG_UNITS_IN, + NSVG_UNITS_PERCENT, + NSVG_UNITS_EM, + NSVG_UNITS_EX +}; + +typedef struct NSVGcoordinate { + float value; + int units; +} NSVGcoordinate; + +typedef struct NSVGlinearData { + NSVGcoordinate x1, y1, x2, y2; +} NSVGlinearData; + +typedef struct NSVGradialData { + NSVGcoordinate cx, cy, r, fx, fy; +} NSVGradialData; + +typedef struct NSVGgradientData { char id[64]; char ref[64]; - char type; + signed char type; union { - struct { - float x1, y1, x2, y2; - } linear; - struct { - float cx, cy, r, fx, fy; - } radial; + NSVGlinearData linear; + NSVGradialData radial; }; char spread; char units; float xform[6]; int nstops; - struct NSVGgradientStop* stops; + NSVGgradientStop* stops; struct NSVGgradientData* next; -}; +} NSVGgradientData; -struct NSVGattrib +typedef struct NSVGattrib { + char id[64]; float xform[6]; unsigned int fillColor; unsigned int strokeColor; @@ -344,6 +423,13 @@ struct NSVGattrib char fillGradient[64]; char strokeGradient[64]; float strokeWidth; + float strokeDashOffset; + float strokeDashArray[NSVG_MAX_DASHES]; + int strokeDashCount; + char strokeLineJoin; + char strokeLineCap; + float miterLimit; + char fillRule; float fontSize; unsigned int stopColor; float stopOpacity; @@ -351,24 +437,25 @@ struct NSVGattrib char hasFill; char hasStroke; char visible; -}; +} NSVGattrib; -struct NSVGparser +typedef struct NSVGparser { - struct NSVGattrib attr[NSVG_MAX_ATTR]; + NSVGattrib attr[NSVG_MAX_ATTR]; int attrHead; float* pts; int npts; int cpts; - struct NSVGpath* plist; - struct NSVGimage* image; - struct NSVGgradientData* gradients; + NSVGpath* plist; + NSVGimage* image; + NSVGgradientData* gradients; + NSVGshape* shapesTail; float viewMinx, viewMiny, viewWidth, viewHeight; int alignX, alignY, alignType; float dpi; char pathFlag; - char defsFlag; -}; + char defsFlag; +} NSVGparser; static void nsvg__xformIdentity(float* t) { @@ -428,12 +515,12 @@ static void nsvg__xformMultiply(float* t, float* s) static void nsvg__xformInverse(float* inv, float* t) { - double det = (double)t[0] * t[3] - (double)t[2] * t[1]; - if (det > -1e-6 && det < -1e-6) { + double invdet, det = (double)t[0] * t[3] - (double)t[2] * t[1]; + if (det > -1e-6 && det < 1e-6) { nsvg__xformIdentity(t); return; } - double invdet = 1.0 / det; + invdet = 1.0 / det; inv[0] = (float)(t[3] * invdet); inv[2] = (float)(-t[2] * invdet); inv[4] = (float)(((double)t[2] * t[5] - (double)t[3] * t[4]) * invdet); @@ -472,7 +559,7 @@ static int nsvg__ptInBounds(float* pt, float* bounds) static double nsvg__evalBezier(double t, double p0, double p1, double p2, double p3) { - float it = 1.0-t; + double it = 1.0-t; return it*it*it*p0 + 3.0*it*it*t*p1 + 3.0*it*t*t*p2 + t*t*t*p3; } @@ -527,19 +614,20 @@ static void nsvg__curveBounds(float* bounds, float* curve) } } -static struct NSVGparser* nsvg__createParser() +static NSVGparser* nsvg__createParser(void) { - struct NSVGparser* p; - p = (struct NSVGparser*)malloc(sizeof(struct NSVGparser)); + NSVGparser* p; + p = (NSVGparser*)malloc(sizeof(NSVGparser)); if (p == NULL) goto error; - memset(p, 0, sizeof(struct NSVGparser)); + memset(p, 0, sizeof(NSVGparser)); - p->image = (struct NSVGimage*)malloc(sizeof(struct NSVGimage)); + p->image = (NSVGimage*)malloc(sizeof(NSVGimage)); if (p->image == NULL) goto error; - memset(p->image, 0, sizeof(struct NSVGimage)); + memset(p->image, 0, sizeof(NSVGimage)); // Init style nsvg__xformIdentity(p->attr[0].xform); + memset(p->attr[0].id, 0, sizeof p->attr[0].id); p->attr[0].fillColor = NSVG_RGB(0,0,0); p->attr[0].strokeColor = NSVG_RGB(0,0,0); p->attr[0].opacity = 1; @@ -547,8 +635,11 @@ static struct NSVGparser* nsvg__createParser() p->attr[0].strokeOpacity = 1; p->attr[0].stopOpacity = 1; p->attr[0].strokeWidth = 1; + p->attr[0].strokeLineJoin = NSVG_JOIN_MITER; + p->attr[0].strokeLineCap = NSVG_CAP_BUTT; + p->attr[0].miterLimit = 4; + p->attr[0].fillRule = NSVG_FILLRULE_NONZERO; p->attr[0].hasFill = 1; - p->attr[0].hasStroke = 0; p->attr[0].visible = 1; return p; @@ -561,10 +652,10 @@ static struct NSVGparser* nsvg__createParser() return NULL; } -static void nsvg__deletePaths(struct NSVGpath* path) +static void nsvg__deletePaths(NSVGpath* path) { while (path) { - struct NSVGpath *next = path->next; + NSVGpath *next = path->next; if (path->pts != NULL) free(path->pts); free(path); @@ -572,15 +663,15 @@ static void nsvg__deletePaths(struct NSVGpath* path) } } -static void nsvg__deletePaint(struct NSVGpaint* paint) +static void nsvg__deletePaint(NSVGpaint* paint) { - if (paint->type == NSVG_PAINT_LINEAR_GRADIENT || paint->type == NSVG_PAINT_LINEAR_GRADIENT) + if (paint->type == NSVG_PAINT_LINEAR_GRADIENT || paint->type == NSVG_PAINT_RADIAL_GRADIENT) free(paint->gradient); } -static void nsvg__deleteGradientData(struct NSVGgradientData* grad) +static void nsvg__deleteGradientData(NSVGgradientData* grad) { - struct NSVGgradientData* next; + NSVGgradientData* next; while (grad != NULL) { next = grad->next; free(grad->stops); @@ -589,7 +680,7 @@ static void nsvg__deleteGradientData(struct NSVGgradientData* grad) } } -static void nsvg__deleteParser(struct NSVGparser* p) +static void nsvg__deleteParser(NSVGparser* p) { if (p != NULL) { nsvg__deletePaths(p->plist); @@ -600,12 +691,12 @@ static void nsvg__deleteParser(struct NSVGparser* p) } } -static void nsvg__resetPath(struct NSVGparser* p) +static void nsvg__resetPath(NSVGparser* p) { p->npts = 0; } -static void nsvg__addPoint(struct NSVGparser* p, float x, float y) +static void nsvg__addPoint(NSVGparser* p, float x, float y) { if (p->npts+1 > p->cpts) { p->cpts = p->cpts ? p->cpts*2 : 8; @@ -617,12 +708,17 @@ static void nsvg__addPoint(struct NSVGparser* p, float x, float y) p->npts++; } -static void nsvg__moveTo(struct NSVGparser* p, float x, float y) +static void nsvg__moveTo(NSVGparser* p, float x, float y) { - nsvg__addPoint(p, x, y); + if (p->npts > 0) { + p->pts[(p->npts-1)*2+0] = x; + p->pts[(p->npts-1)*2+1] = y; + } else { + nsvg__addPoint(p, x, y); + } } -static void nsvg__lineTo(struct NSVGparser* p, float x, float y) +static void nsvg__lineTo(NSVGparser* p, float x, float y) { float px,py, dx,dy; if (p->npts > 0) { @@ -636,36 +732,85 @@ static void nsvg__lineTo(struct NSVGparser* p, float x, float y) } } -static void nsvg__cubicBezTo(struct NSVGparser* p, float cpx1, float cpy1, float cpx2, float cpy2, float x, float y) +static void nsvg__cubicBezTo(NSVGparser* p, float cpx1, float cpy1, float cpx2, float cpy2, float x, float y) { - nsvg__addPoint(p, cpx1, cpy1); - nsvg__addPoint(p, cpx2, cpy2); - nsvg__addPoint(p, x, y); + if (p->npts > 0) { + nsvg__addPoint(p, cpx1, cpy1); + nsvg__addPoint(p, cpx2, cpy2); + nsvg__addPoint(p, x, y); + } } -static struct NSVGattrib* nsvg__getAttr(struct NSVGparser* p) +static NSVGattrib* nsvg__getAttr(NSVGparser* p) { return &p->attr[p->attrHead]; } -static void nsvg__pushAttr(struct NSVGparser* p) +static void nsvg__pushAttr(NSVGparser* p) { if (p->attrHead < NSVG_MAX_ATTR-1) { p->attrHead++; - memcpy(&p->attr[p->attrHead], &p->attr[p->attrHead-1], sizeof(struct NSVGattrib)); + memcpy(&p->attr[p->attrHead], &p->attr[p->attrHead-1], sizeof(NSVGattrib)); } } -static void nsvg__popAttr(struct NSVGparser* p) +static void nsvg__popAttr(NSVGparser* p) { if (p->attrHead > 0) p->attrHead--; } -static struct NSVGgradientData* nsvg__findGradientData(struct NSVGparser* p, const char* id) +static float nsvg__actualOrigX(NSVGparser* p) { - struct NSVGgradientData* grad = p->gradients; - while (grad) { + return p->viewMinx; +} + +static float nsvg__actualOrigY(NSVGparser* p) +{ + return p->viewMiny; +} + +static float nsvg__actualWidth(NSVGparser* p) +{ + return p->viewWidth; +} + +static float nsvg__actualHeight(NSVGparser* p) +{ + return p->viewHeight; +} + +static float nsvg__actualLength(NSVGparser* p) +{ + float w = nsvg__actualWidth(p), h = nsvg__actualHeight(p); + return sqrtf(w*w + h*h) / sqrtf(2.0f); +} + +static float nsvg__convertToPixels(NSVGparser* p, NSVGcoordinate c, float orig, float length) +{ + NSVGattrib* attr = nsvg__getAttr(p); + switch (c.units) { + case NSVG_UNITS_USER: return c.value; + case NSVG_UNITS_PX: return c.value; + case NSVG_UNITS_PT: return c.value / 72.0f * p->dpi; + case NSVG_UNITS_PC: return c.value / 6.0f * p->dpi; + case NSVG_UNITS_MM: return c.value / 25.4f * p->dpi; + case NSVG_UNITS_CM: return c.value / 2.54f * p->dpi; + case NSVG_UNITS_IN: return c.value * p->dpi; + case NSVG_UNITS_EM: return c.value * attr->fontSize; + case NSVG_UNITS_EX: return c.value * attr->fontSize * 0.52f; // x-height of Helvetica. + case NSVG_UNITS_PERCENT: return orig + c.value / 100.0f * length; + default: return c.value; + } + return c.value; +} + +static NSVGgradientData* nsvg__findGradientData(NSVGparser* p, const char* id) +{ + NSVGgradientData* grad = p->gradients; + if (id == NULL || *id == '\0') + return NULL; + while (grad != NULL) { if (strcmp(grad->id, id) == 0) return grad; grad = grad->next; @@ -673,58 +818,86 @@ static struct NSVGgradientData* nsvg__findGradientData(struct NSVGparser* p, con return NULL; } -static struct NSVGgradient* nsvg__createGradient(struct NSVGparser* p, const char* id, const float* bounds, char* paintType) +static NSVGgradient* nsvg__createGradient(NSVGparser* p, const char* id, const float* localBounds, float *xform, signed char* paintType) { - struct NSVGattrib* attr = nsvg__getAttr(p); - struct NSVGgradientData* data = NULL; - struct NSVGgradientData* ref = NULL; - struct NSVGgradientStop* stops = NULL; - struct NSVGgradient* grad; - float dx, dy, d; + NSVGgradientData* data = NULL; + NSVGgradientData* ref = NULL; + NSVGgradientStop* stops = NULL; + NSVGgradient* grad; + float ox, oy, sw, sh, sl; int nstops = 0; + int refIter; data = nsvg__findGradientData(p, id); if (data == NULL) return NULL; // TODO: use ref to fill in all unset values too. ref = data; + refIter = 0; while (ref != NULL) { - if (ref->stops != NULL) { + NSVGgradientData* nextRef = NULL; + if (stops == NULL && ref->stops != NULL) { stops = ref->stops; nstops = ref->nstops; break; } - ref = nsvg__findGradientData(p, ref->ref); + nextRef = nsvg__findGradientData(p, ref->ref); + if (nextRef == ref) break; // prevent infite loops on malformed data + ref = nextRef; + refIter++; + if (refIter > 32) break; // prevent infite loops on malformed data } if (stops == NULL) return NULL; - grad = (struct NSVGgradient*)malloc(sizeof(struct NSVGgradient) + sizeof(struct NSVGgradientStop)*(nstops-1)); + grad = (NSVGgradient*)malloc(sizeof(NSVGgradient) + sizeof(NSVGgradientStop)*(nstops-1)); if (grad == NULL) return NULL; - // TODO: handle data->units == NSVG_OBJECT_SPACE. + // The shape width and height. + if (data->units == NSVG_OBJECT_SPACE) { + ox = localBounds[0]; + oy = localBounds[1]; + sw = localBounds[2] - localBounds[0]; + sh = localBounds[3] - localBounds[1]; + } else { + ox = nsvg__actualOrigX(p); + oy = nsvg__actualOrigY(p); + sw = nsvg__actualWidth(p); + sh = nsvg__actualHeight(p); + } + sl = sqrtf(sw*sw + sh*sh) / sqrtf(2.0f); if (data->type == NSVG_PAINT_LINEAR_GRADIENT) { + float x1, y1, x2, y2, dx, dy; + x1 = nsvg__convertToPixels(p, data->linear.x1, ox, sw); + y1 = nsvg__convertToPixels(p, data->linear.y1, oy, sh); + x2 = nsvg__convertToPixels(p, data->linear.x2, ox, sw); + y2 = nsvg__convertToPixels(p, data->linear.y2, oy, sh); // Calculate transform aligned to the line - dx = data->linear.x2 - data->linear.x1; - dy = data->linear.y2 - data->linear.y1; - d = sqrtf(dx*dx + dy*dy); + dx = x2 - x1; + dy = y2 - y1; grad->xform[0] = dy; grad->xform[1] = -dx; grad->xform[2] = dx; grad->xform[3] = dy; - grad->xform[4] = data->linear.x1; grad->xform[5] = data->linear.y1; + grad->xform[4] = x1; grad->xform[5] = y1; } else { + float cx, cy, fx, fy, r; + cx = nsvg__convertToPixels(p, data->radial.cx, ox, sw); + cy = nsvg__convertToPixels(p, data->radial.cy, oy, sh); + fx = nsvg__convertToPixels(p, data->radial.fx, ox, sw); + fy = nsvg__convertToPixels(p, data->radial.fy, oy, sh); + r = nsvg__convertToPixels(p, data->radial.r, 0, sl); // Calculate transform aligned to the circle - grad->xform[0] = data->radial.r; grad->xform[1] = 0; - grad->xform[2] = 0; grad->xform[3] = data->radial.r; - grad->xform[4] = data->radial.cx; grad->xform[5] = data->radial.cy; - grad->fx = data->radial.fx / data->radial.r; - grad->fy = data->radial.fy / data->radial.r; + grad->xform[0] = r; grad->xform[1] = 0; + grad->xform[2] = 0; grad->xform[3] = r; + grad->xform[4] = cx; grad->xform[5] = cy; + grad->fx = fx / r; + grad->fy = fy / r; } - nsvg__xformMultiply(grad->xform, attr->xform); nsvg__xformMultiply(grad->xform, data->xform); + nsvg__xformMultiply(grad->xform, xform); grad->spread = data->spread; - memcpy(grad->stops, stops, nstops*sizeof(struct NSVGgradientStop)); + memcpy(grad->stops, stops, nstops*sizeof(NSVGgradientStop)); grad->nstops = nstops; *paintType = data->type; @@ -732,22 +905,72 @@ static struct NSVGgradient* nsvg__createGradient(struct NSVGparser* p, const cha return grad; } -static void nsvg__addShape(struct NSVGparser* p) +static float nsvg__getAverageScale(float* t) +{ + float sx = sqrtf(t[0]*t[0] + t[2]*t[2]); + float sy = sqrtf(t[1]*t[1] + t[3]*t[3]); + return (sx + sy) * 0.5f; +} + +static void nsvg__getLocalBounds(float* bounds, NSVGshape *shape, float* xform) +{ + NSVGpath* path; + float curve[4*2], curveBounds[4]; + int i, first = 1; + for (path = shape->paths; path != NULL; path = path->next) { + nsvg__xformPoint(&curve[0], &curve[1], path->pts[0], path->pts[1], xform); + for (i = 0; i < path->npts-1; i += 3) { + nsvg__xformPoint(&curve[2], &curve[3], path->pts[(i+1)*2], path->pts[(i+1)*2+1], xform); + nsvg__xformPoint(&curve[4], &curve[5], path->pts[(i+2)*2], path->pts[(i+2)*2+1], xform); + nsvg__xformPoint(&curve[6], &curve[7], path->pts[(i+3)*2], path->pts[(i+3)*2+1], xform); + nsvg__curveBounds(curveBounds, curve); + if (first) { + bounds[0] = curveBounds[0]; + bounds[1] = curveBounds[1]; + bounds[2] = curveBounds[2]; + bounds[3] = curveBounds[3]; + first = 0; + } else { + bounds[0] = nsvg__minf(bounds[0], curveBounds[0]); + bounds[1] = nsvg__minf(bounds[1], curveBounds[1]); + bounds[2] = nsvg__maxf(bounds[2], curveBounds[2]); + bounds[3] = nsvg__maxf(bounds[3], curveBounds[3]); + } + curve[0] = curve[6]; + curve[1] = curve[7]; + } + } +} + +static void nsvg__addShape(NSVGparser* p) { - struct NSVGattrib* attr = nsvg__getAttr(p); + NSVGattrib* attr = nsvg__getAttr(p); float scale = 1.0f; - struct NSVGshape *shape, *cur, *prev; - struct NSVGpath* path; + NSVGshape* shape; + NSVGpath* path; + int i; if (p->plist == NULL) return; - shape = (struct NSVGshape*)malloc(sizeof(struct NSVGshape)); + shape = (NSVGshape*)malloc(sizeof(NSVGshape)); if (shape == NULL) goto error; - memset(shape, 0, sizeof(struct NSVGshape)); + memset(shape, 0, sizeof(NSVGshape)); - scale = nsvg__maxf(fabsf(attr->xform[0]), fabsf(attr->xform[3])); + memcpy(shape->id, attr->id, sizeof shape->id); + memcpy(shape->fillGradient, attr->fillGradient, sizeof shape->fillGradient); + memcpy(shape->strokeGradient, attr->strokeGradient, sizeof shape->strokeGradient); + memcpy(shape->xform, attr->xform, sizeof shape->xform); + scale = nsvg__getAverageScale(attr->xform); shape->strokeWidth = attr->strokeWidth * scale; + shape->strokeDashOffset = attr->strokeDashOffset * scale; + shape->strokeDashCount = (char)attr->strokeDashCount; + for (i = 0; i < attr->strokeDashCount; i++) + shape->strokeDashArray[i] = attr->strokeDashArray[i] * scale; + shape->strokeLineJoin = attr->strokeLineJoin; + shape->strokeLineCap = attr->strokeLineCap; + shape->miterLimit = attr->miterLimit; + shape->fillRule = attr->fillRule; shape->opacity = attr->opacity; shape->paths = p->plist; @@ -773,10 +996,7 @@ static void nsvg__addShape(struct NSVGparser* p) shape->fill.color = attr->fillColor; shape->fill.color |= (unsigned int)(attr->fillOpacity*255) << 24; } else if (attr->hasFill == 2) { - shape->fill.gradient = nsvg__createGradient(p, attr->fillGradient, shape->bounds, &shape->fill.type); - if (shape->fill.gradient == NULL) { - shape->fill.type = NSVG_PAINT_NONE; - } + shape->fill.type = NSVG_PAINT_UNDEF; } // Set stroke @@ -787,22 +1007,18 @@ static void nsvg__addShape(struct NSVGparser* p) shape->stroke.color = attr->strokeColor; shape->stroke.color |= (unsigned int)(attr->strokeOpacity*255) << 24; } else if (attr->hasStroke == 2) { - shape->stroke.gradient = nsvg__createGradient(p, attr->strokeGradient, shape->bounds, &shape->stroke.type); - if (shape->stroke.gradient == NULL) - shape->stroke.type = NSVG_PAINT_NONE; + shape->stroke.type = NSVG_PAINT_UNDEF; } + // Set flags + shape->flags = (attr->visible ? NSVG_FLAGS_VISIBLE : 0x00); + // Add to tail - prev = NULL; - cur = p->image->shapes; - while (cur != NULL) { - prev = cur; - cur = cur->next; - } - if (prev == NULL) + if (p->image->shapes == NULL) p->image->shapes = shape; else - prev->next = shape; + p->shapesTail->next = shape; + p->shapesTail = shape; return; @@ -810,33 +1026,37 @@ static void nsvg__addShape(struct NSVGparser* p) if (shape) free(shape); } -static void nsvg__addPath(struct NSVGparser* p, char closed) +static void nsvg__addPath(NSVGparser* p, char closed) { - struct NSVGattrib* attr = nsvg__getAttr(p); - struct NSVGpath* path = NULL; + NSVGattrib* attr = nsvg__getAttr(p); + NSVGpath* path = NULL; float bounds[4]; float* curve; int i; - - if (p->npts == 0) + + if (p->npts < 4) return; if (closed) nsvg__lineTo(p, p->pts[0], p->pts[1]); - path = (struct NSVGpath*)malloc(sizeof(struct NSVGpath)); + // Expect 1 + N*3 points (N = number of cubic bezier segments). + if ((p->npts % 3) != 1) + return; + + path = (NSVGpath*)malloc(sizeof(NSVGpath)); if (path == NULL) goto error; - memset(path, 0, sizeof(struct NSVGpath)); + memset(path, 0, sizeof(NSVGpath)); path->pts = (float*)malloc(p->npts*2*sizeof(float)); if (path->pts == NULL) goto error; path->closed = closed; path->npts = p->npts; - + // Transform path. for (i = 0; i < p->npts; ++i) nsvg__xformPoint(&path->pts[i*2], &path->pts[i*2+1], p->pts[i*2], p->pts[i*2+1], attr->xform); - + // Find bounds for (i = 0; i < path->npts-1; i += 3) { curve = &path->pts[i*2]; @@ -866,114 +1086,210 @@ static void nsvg__addPath(struct NSVGparser* p, char closed) } } -static const char* nsvg__getNextPathItem(const char* s, char* it) +// We roll our own string to float because the std library one uses locale and messes things up. +static double nsvg__atof(const char* s) { - int i = 0; - it[0] = '\0'; - // Skip white spaces and commas - while (*s && (nsvg__isspace(*s) || *s == ',')) s++; - if (!*s) return s; - if (*s == '-' || *s == '+' || nsvg__isdigit(*s)) { - // sign - if (*s == '-' || *s == '+') { - if (i < 63) it[i++] = *s; - s++; + char* cur = (char*)s; + char* end = NULL; + double res = 0.0, sign = 1.0; + long long intPart = 0, fracPart = 0; + char hasIntPart = 0, hasFracPart = 0; + + // Parse optional sign + if (*cur == '+') { + cur++; + } else if (*cur == '-') { + sign = -1; + cur++; + } + + // Parse integer part + if (nsvg__isdigit(*cur)) { + // Parse digit sequence + intPart = strtoll(cur, &end, 10); + if (cur != end) { + res = (double)intPart; + hasIntPart = 1; + cur = end; + } + } + + // Parse fractional part. + if (*cur == '.') { + cur++; // Skip '.' + if (nsvg__isdigit(*cur)) { + // Parse digit sequence + fracPart = strtoll(cur, &end, 10); + if (cur != end) { + res += (double)fracPart / pow(10.0, (double)(end - cur)); + hasFracPart = 1; + cur = end; + } } - // integer part + } + + // A valid number should have integer or fractional part. + if (!hasIntPart && !hasFracPart) + return 0.0; + + // Parse optional exponent + if (*cur == 'e' || *cur == 'E') { + long expPart = 0; + cur++; // skip 'E' + expPart = strtol(cur, &end, 10); // Parse digit sequence with sign + if (cur != end) { + res *= pow(10.0, (double)expPart); + } + } + + return res * sign; +} + + +static const char* nsvg__parseNumber(const char* s, char* it, const int size) +{ + const int last = size-1; + int i = 0; + + // sign + if (*s == '-' || *s == '+') { + if (i < last) it[i++] = *s; + s++; + } + // integer part + while (*s && nsvg__isdigit(*s)) { + if (i < last) it[i++] = *s; + s++; + } + if (*s == '.') { + // decimal point + if (i < last) it[i++] = *s; + s++; + // fraction part while (*s && nsvg__isdigit(*s)) { - if (i < 63) it[i++] = *s; + if (i < last) it[i++] = *s; s++; } - if (*s == '.') { - // decimal point - if (i < 63) it[i++] = *s; + } + // exponent + if ((*s == 'e' || *s == 'E') && (s[1] != 'm' && s[1] != 'x')) { + if (i < last) it[i++] = *s; + s++; + if (*s == '-' || *s == '+') { + if (i < last) it[i++] = *s; s++; - // fraction part - while (*s && nsvg__isdigit(*s)) { - if (i < 63) it[i++] = *s; - s++; - } } - // exponent - if (*s == 'e' || *s == 'E') { - if (i < 63) it[i++] = *s; + while (*s && nsvg__isdigit(*s)) { + if (i < last) it[i++] = *s; s++; - if (*s == '-' || *s == '+') { - if (i < 63) it[i++] = *s; - s++; - } - while (*s && nsvg__isdigit(*s)) { - if (i < 63) it[i++] = *s; - s++; - } } - it[i] = '\0'; - } else { - // Parse command - it[0] = *s++; - it[1] = '\0'; - return s; } + it[i] = '\0'; return s; } -static float nsvg__actualWidth(struct NSVGparser* p) +static const char* nsvg__getNextPathItemWhenArcFlag(const char* s, char* it) { - return p->viewWidth; + it[0] = '\0'; + while (*s && (nsvg__isspace(*s) || *s == ',')) s++; + if (!*s) return s; + if (*s == '0' || *s == '1') { + it[0] = *s++; + it[1] = '\0'; + return s; + } + return s; } -static float nsvg__actualHeight(struct NSVGparser* p) +static const char* nsvg__getNextPathItem(const char* s, char* it) { - return p->viewHeight; -} + it[0] = '\0'; + // Skip white spaces and commas + while (*s && (nsvg__isspace(*s) || *s == ',')) s++; + if (!*s) return s; + if (*s == '-' || *s == '+' || *s == '.' || nsvg__isdigit(*s)) { + s = nsvg__parseNumber(s, it, 64); + } else { + // Parse command + it[0] = *s++; + it[1] = '\0'; + return s; + } -static float nsvg__actualLength(struct NSVGparser* p) -{ - float w = nsvg__actualWidth(p), h = nsvg__actualHeight(p); - return sqrtf(w*w + h*h) / sqrtf(2.0f); + return s; } - static unsigned int nsvg__parseColorHex(const char* str) { - unsigned int c = 0, r = 0, g = 0, b = 0; - int n = 0; - str++; // skip # - // Calculate number of characters. - while(str[n] && !nsvg__isspace(str[n])) - n++; - if (n == 6) { - sscanf(str, "%x", &c); - } else if (n == 3) { - sscanf(str, "%x", &c); - c = (c&0xf) | ((c&0xf0) << 4) | ((c&0xf00) << 8); - c |= c<<4; - } - r = (c >> 16) & 0xff; - g = (c >> 8) & 0xff; - b = c & 0xff; - return NSVG_RGB(r,g,b); + unsigned int r=0, g=0, b=0; + if (sscanf(str, "#%2x%2x%2x", &r, &g, &b) == 3 ) // 2 digit hex + return NSVG_RGB(r, g, b); + if (sscanf(str, "#%1x%1x%1x", &r, &g, &b) == 3 ) // 1 digit hex, e.g. #abc -> 0xccbbaa + return NSVG_RGB(r*17, g*17, b*17); // same effect as (r<<4|r), (g<<4|g), .. + return NSVG_RGB(128, 128, 128); } +// Parse rgb color. The pointer 'str' must point at "rgb(" (4+ characters). +// This function returns gray (rgb(128, 128, 128) == '#808080') on parse errors +// for backwards compatibility. Note: other image viewers return black instead. + static unsigned int nsvg__parseColorRGB(const char* str) { - int r = -1, g = -1, b = -1; - char s1[32]="", s2[32]=""; - sscanf(str + 4, "%d%[%%, \t]%d%[%%, \t]%d", &r, s1, &g, s2, &b); - if (strchr(s1, '%')) { - return NSVG_RGB((r*255)/100,(g*255)/100,(b*255)/100); - } else { - return NSVG_RGB(r,g,b); + int i; + unsigned int rgbi[3]; + float rgbf[3]; + // try decimal integers first + if (sscanf(str, "rgb(%u, %u, %u)", &rgbi[0], &rgbi[1], &rgbi[2]) != 3) { + // integers failed, try percent values (float, locale independent) + const char delimiter[3] = {',', ',', ')'}; + str += 4; // skip "rgb(" + for (i = 0; i < 3; i++) { + while (*str && (nsvg__isspace(*str))) str++; // skip leading spaces + if (*str == '+') str++; // skip '+' (don't allow '-') + if (!*str) break; + rgbf[i] = nsvg__atof(str); + + // Note 1: it would be great if nsvg__atof() returned how many + // bytes it consumed but it doesn't. We need to skip the number, + // the '%' character, spaces, and the delimiter ',' or ')'. + + // Note 2: The following code does not allow values like "33.%", + // i.e. a decimal point w/o fractional part, but this is consistent + // with other image viewers, e.g. firefox, chrome, eog, gimp. + + while (*str && nsvg__isdigit(*str)) str++; // skip integer part + if (*str == '.') { + str++; + if (!nsvg__isdigit(*str)) break; // error: no digit after '.' + while (*str && nsvg__isdigit(*str)) str++; // skip fractional part + } + if (*str == '%') str++; else break; + while (*str && nsvg__isspace(*str)) str++; + if (*str == delimiter[i]) str++; + else break; + } + if (i == 3) { + rgbi[0] = roundf(rgbf[0] * 2.55f); + rgbi[1] = roundf(rgbf[1] * 2.55f); + rgbi[2] = roundf(rgbf[2] * 2.55f); + } else { + rgbi[0] = rgbi[1] = rgbi[2] = 128; + } + } + // clip values as the CSS spec requires + for (i = 0; i < 3; i++) { + if (rgbi[i] > 255) rgbi[i] = 255; } + return NSVG_RGB(rgbi[0], rgbi[1], rgbi[2]); } -struct NSVGNamedColor { +typedef struct NSVGNamedColor { const char* name; unsigned int color; -}; +} NSVGNamedColor; -struct NSVGNamedColor nsvg__colors[] = { +NSVGNamedColor nsvg__colors[] = { { "red", NSVG_RGB(255, 0, 0) }, { "green", NSVG_RGB( 0, 128, 0) }, @@ -1129,8 +1445,8 @@ struct NSVGNamedColor nsvg__colors[] = { static unsigned int nsvg__parseColorName(const char* str) { - int i, ncolors = sizeof(nsvg__colors) / sizeof(struct NSVGNamedColor); - + int i, ncolors = sizeof(nsvg__colors) / sizeof(NSVGNamedColor); + for (i = 0; i < ncolors; i++) { if (strcmp(nsvg__colors[i].name, str) == 0) { return nsvg__colors[i].color; @@ -1142,7 +1458,7 @@ static unsigned int nsvg__parseColorName(const char* str) static unsigned int nsvg__parseColor(const char* str) { - int len = 0; + size_t len = 0; while(*str == ' ') ++str; len = strlen(str); if (len >= 1 && *str == '#') @@ -1152,75 +1468,80 @@ static unsigned int nsvg__parseColor(const char* str) return nsvg__parseColorName(str); } -static float nsvg__convertToPixels(struct NSVGparser* p, float val, const char* units, int dir) +static float nsvg__parseOpacity(const char* str) { - struct NSVGattrib* attr; + float val = nsvg__atof(str); + if (val < 0.0f) val = 0.0f; + if (val > 1.0f) val = 1.0f; + return val; +} - if (p != NULL) { - // Convert units to pixels. - if (units[0] == '\0') { - return val; - } else if (units[0] == 'p' && units[1] == 'x') { - return val; - } else if (units[0] == 'p' && units[1] == 't') { - return val / 72.0f * p->dpi; - } else if (units[0] == 'p' && units[1] == 'c') { - return val / 6.0f * p->dpi; - } else if (units[0] == 'm' && units[1] == 'm') { - return val / 25.4f * p->dpi; - } else if (units[0] == 'c' && units[1] == 'm') { - return val / 2.54f * p->dpi; - } else if (units[0] == 'i' && units[1] == 'n') { - return val * p->dpi; - } else if (units[0] == '%') { - if (p != NULL) { - attr = nsvg__getAttr(p); - if (dir == 0) - return (val/100.0f) * nsvg__actualWidth(p); - else if (dir == 1) - return (val/100.0f) * nsvg__actualHeight(p); - else if (dir == 2) - return (val/100.0f) * nsvg__actualLength(p); - } else { - return (val/100.0f); - } - } else if (units[0] == 'e' && units[1] == 'm') { - if (p != NULL) { - attr = nsvg__getAttr(p); - return val * attr->fontSize; - } - } else if (units[0] == 'e' && units[1] == 'x') { - if (p != NULL) { - attr = nsvg__getAttr(p); - return val * attr->fontSize * 0.52f; // x-height of Helvetica. - } - } - } else { - // Convert units to pixels. - if (units[0] == '\0') { - return val; - } else if (units[0] == 'p' && units[1] == 'x') { - return val; - } else if (units[0] == '%') { - return (val/100.0f); - } - } +static float nsvg__parseMiterLimit(const char* str) +{ + float val = nsvg__atof(str); + if (val < 0.0f) val = 0.0f; return val; } -static float nsvg__parseFloat(struct NSVGparser* p, const char* str, int dir) +static int nsvg__parseUnits(const char* units) +{ + if (units[0] == 'p' && units[1] == 'x') + return NSVG_UNITS_PX; + else if (units[0] == 'p' && units[1] == 't') + return NSVG_UNITS_PT; + else if (units[0] == 'p' && units[1] == 'c') + return NSVG_UNITS_PC; + else if (units[0] == 'm' && units[1] == 'm') + return NSVG_UNITS_MM; + else if (units[0] == 'c' && units[1] == 'm') + return NSVG_UNITS_CM; + else if (units[0] == 'i' && units[1] == 'n') + return NSVG_UNITS_IN; + else if (units[0] == '%') + return NSVG_UNITS_PERCENT; + else if (units[0] == 'e' && units[1] == 'm') + return NSVG_UNITS_EM; + else if (units[0] == 'e' && units[1] == 'x') + return NSVG_UNITS_EX; + return NSVG_UNITS_USER; +} + +static int nsvg__isCoordinate(const char* s) +{ + // optional sign + if (*s == '-' || *s == '+') + s++; + // must have at least one digit, or start by a dot + return (nsvg__isdigit(*s) || *s == '.'); +} + +static NSVGcoordinate nsvg__parseCoordinateRaw(const char* str) +{ + NSVGcoordinate coord = {0, NSVG_UNITS_USER}; + char buf[64]; + coord.units = nsvg__parseUnits(nsvg__parseNumber(str, buf, 64)); + coord.value = nsvg__atof(buf); + return coord; +} + +static NSVGcoordinate nsvg__coord(float v, int units) { - float val = 0; - char units[32]=""; - sscanf(str, "%f%s", &val, units); - return nsvg__convertToPixels(p, val, units, dir); + NSVGcoordinate coord = {v, units}; + return coord; +} + +static float nsvg__parseCoordinate(NSVGparser* p, const char* str, float orig, float length) +{ + NSVGcoordinate coord = nsvg__parseCoordinateRaw(str); + return nsvg__convertToPixels(p, coord, orig, length); } static int nsvg__parseTransformArgs(const char* str, float* args, int maxNa, int* na) { const char* end; const char* ptr; - + char it[64]; + *na = 0; ptr = str; while (*ptr && *ptr != '(') ++ptr; @@ -1230,12 +1551,12 @@ static int nsvg__parseTransformArgs(const char* str, float* args, int maxNa, int while (*end && *end != ')') ++end; if (*end == 0) return 1; - + while (ptr < end) { - if (nsvg__isnum(*ptr)) { + if (*ptr == '-' || *ptr == '+' || *ptr == '.' || nsvg__isdigit(*ptr)) { if (*na >= maxNa) return 0; - args[(*na)++] = (float)atof(ptr); - while (ptr < end && nsvg__isnum(*ptr)) ++ptr; + ptr = nsvg__parseNumber(ptr, it, 64); + args[(*na)++] = (float)nsvg__atof(it); } else { ++ptr; } @@ -1243,6 +1564,7 @@ static int nsvg__parseTransformArgs(const char* str, float* args, int maxNa, int return (int)(end - str); } + static int nsvg__parseMatrix(float* xform, const char* str) { float t[6]; @@ -1260,6 +1582,7 @@ static int nsvg__parseTranslate(float* xform, const char* str) int na = 0; int len = nsvg__parseTransformArgs(str, args, 2, &na); if (na == 1) args[1] = 0.0; + nsvg__xformSetTranslation(t, args[0], args[1]); memcpy(xform, t, sizeof(float)*6); return len; @@ -1312,15 +1635,15 @@ static int nsvg__parseRotate(float* xform, const char* str) if (na > 1) { nsvg__xformSetTranslation(t, -args[1], -args[2]); - nsvg__xformPremultiply(m, t); + nsvg__xformMultiply(m, t); } - + nsvg__xformSetRotation(t, args[0]/180.0f*NSVG_PI); - nsvg__xformPremultiply(m, t); + nsvg__xformMultiply(m, t); if (na > 1) { nsvg__xformSetTranslation(t, args[1], args[2]); - nsvg__xformPremultiply(m, t); + nsvg__xformMultiply(m, t); } memcpy(xform, m, sizeof(float)*6); @@ -1331,26 +1654,33 @@ static int nsvg__parseRotate(float* xform, const char* str) static void nsvg__parseTransform(float* xform, const char* str) { float t[6]; + int len; nsvg__xformIdentity(xform); while (*str) { if (strncmp(str, "matrix", 6) == 0) - str += nsvg__parseMatrix(t, str); + len = nsvg__parseMatrix(t, str); else if (strncmp(str, "translate", 9) == 0) - str += nsvg__parseTranslate(t, str); + len = nsvg__parseTranslate(t, str); else if (strncmp(str, "scale", 5) == 0) - str += nsvg__parseScale(t, str); + len = nsvg__parseScale(t, str); else if (strncmp(str, "rotate", 6) == 0) - str += nsvg__parseRotate(t, str); + len = nsvg__parseRotate(t, str); else if (strncmp(str, "skewX", 5) == 0) - str += nsvg__parseSkewX(t, str); + len = nsvg__parseSkewX(t, str); else if (strncmp(str, "skewY", 5) == 0) - str += nsvg__parseSkewY(t, str); + len = nsvg__parseSkewY(t, str); else{ ++str; continue; } - + if (len != 0) { + str += len; + } else { + ++str; + continue; + } + nsvg__xformPremultiply(xform, t); } } @@ -1359,30 +1689,106 @@ static void nsvg__parseUrl(char* id, const char* str) { int i = 0; str += 4; // "url("; - if (*str == '#') + if (*str && *str == '#') str++; - while (i < 63 && *str != ')') { + while (i < 63 && *str && *str != ')') { id[i] = *str++; i++; } id[i] = '\0'; } -static void nsvg__parseStyle(struct NSVGparser* p, const char* str); +static char nsvg__parseLineCap(const char* str) +{ + if (strcmp(str, "butt") == 0) + return NSVG_CAP_BUTT; + else if (strcmp(str, "round") == 0) + return NSVG_CAP_ROUND; + else if (strcmp(str, "square") == 0) + return NSVG_CAP_SQUARE; + // TODO: handle inherit. + return NSVG_CAP_BUTT; +} + +static char nsvg__parseLineJoin(const char* str) +{ + if (strcmp(str, "miter") == 0) + return NSVG_JOIN_MITER; + else if (strcmp(str, "round") == 0) + return NSVG_JOIN_ROUND; + else if (strcmp(str, "bevel") == 0) + return NSVG_JOIN_BEVEL; + // TODO: handle inherit. + return NSVG_JOIN_MITER; +} -static int nsvg__parseAttr(struct NSVGparser* p, const char* name, const char* value) +static char nsvg__parseFillRule(const char* str) +{ + if (strcmp(str, "nonzero") == 0) + return NSVG_FILLRULE_NONZERO; + else if (strcmp(str, "evenodd") == 0) + return NSVG_FILLRULE_EVENODD; + // TODO: handle inherit. + return NSVG_FILLRULE_NONZERO; +} + +static const char* nsvg__getNextDashItem(const char* s, char* it) +{ + int n = 0; + it[0] = '\0'; + // Skip white spaces and commas + while (*s && (nsvg__isspace(*s) || *s == ',')) s++; + // Advance until whitespace, comma or end. + while (*s && (!nsvg__isspace(*s) && *s != ',')) { + if (n < 63) + it[n++] = *s; + s++; + } + it[n++] = '\0'; + return s; +} + +static int nsvg__parseStrokeDashArray(NSVGparser* p, const char* str, float* strokeDashArray) +{ + char item[64]; + int count = 0, i; + float sum = 0.0f; + + // Handle "none" + if (str[0] == 'n') + return 0; + + // Parse dashes + while (*str) { + str = nsvg__getNextDashItem(str, item); + if (!*item) break; + if (count < NSVG_MAX_DASHES) + strokeDashArray[count++] = fabsf(nsvg__parseCoordinate(p, item, 0.0f, nsvg__actualLength(p))); + } + + for (i = 0; i < count; i++) + sum += strokeDashArray[i]; + if (sum <= 1e-6f) + count = 0; + + return count; +} + +static void nsvg__parseStyle(NSVGparser* p, const char* str); + +static int nsvg__parseAttr(NSVGparser* p, const char* name, const char* value) { float xform[6]; - struct NSVGattrib* attr = nsvg__getAttr(p); + NSVGattrib* attr = nsvg__getAttr(p); if (!attr) return 0; - + if (strcmp(name, "style") == 0) { nsvg__parseStyle(p, value); } else if (strcmp(name, "display") == 0) { if (strcmp(value, "none") == 0) attr->visible = 0; - else - attr->visible = 1; + // Don't reset ->visible on display:inline, one display:none hides the whole subtree + } else if (strcmp(name, "fill") == 0) { if (strcmp(value, "none") == 0) { attr->hasFill = 0; @@ -1394,9 +1800,9 @@ static int nsvg__parseAttr(struct NSVGparser* p, const char* name, const char* v attr->fillColor = nsvg__parseColor(value); } } else if (strcmp(name, "opacity") == 0) { - attr->opacity = nsvg__parseFloat(p, value, 2); + attr->opacity = nsvg__parseOpacity(value); } else if (strcmp(name, "fill-opacity") == 0) { - attr->fillOpacity = nsvg__parseFloat(p, value, 2); + attr->fillOpacity = nsvg__parseOpacity(value); } else if (strcmp(name, "stroke") == 0) { if (strcmp(value, "none") == 0) { attr->hasStroke = 0; @@ -1408,80 +1814,95 @@ static int nsvg__parseAttr(struct NSVGparser* p, const char* name, const char* v attr->strokeColor = nsvg__parseColor(value); } } else if (strcmp(name, "stroke-width") == 0) { - attr->strokeWidth = nsvg__parseFloat(p, value, 2); + attr->strokeWidth = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p)); + } else if (strcmp(name, "stroke-dasharray") == 0) { + attr->strokeDashCount = nsvg__parseStrokeDashArray(p, value, attr->strokeDashArray); + } else if (strcmp(name, "stroke-dashoffset") == 0) { + attr->strokeDashOffset = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p)); } else if (strcmp(name, "stroke-opacity") == 0) { - attr->strokeOpacity = nsvg__parseFloat(NULL, value, 2); + attr->strokeOpacity = nsvg__parseOpacity(value); + } else if (strcmp(name, "stroke-linecap") == 0) { + attr->strokeLineCap = nsvg__parseLineCap(value); + } else if (strcmp(name, "stroke-linejoin") == 0) { + attr->strokeLineJoin = nsvg__parseLineJoin(value); + } else if (strcmp(name, "stroke-miterlimit") == 0) { + attr->miterLimit = nsvg__parseMiterLimit(value); + } else if (strcmp(name, "fill-rule") == 0) { + attr->fillRule = nsvg__parseFillRule(value); } else if (strcmp(name, "font-size") == 0) { - attr->fontSize = nsvg__parseFloat(p, value, 2); + attr->fontSize = nsvg__parseCoordinate(p, value, 0.0f, nsvg__actualLength(p)); } else if (strcmp(name, "transform") == 0) { nsvg__parseTransform(xform, value); nsvg__xformPremultiply(attr->xform, xform); } else if (strcmp(name, "stop-color") == 0) { attr->stopColor = nsvg__parseColor(value); } else if (strcmp(name, "stop-opacity") == 0) { - attr->stopOpacity = nsvg__parseFloat(NULL, value, 2); + attr->stopOpacity = nsvg__parseOpacity(value); } else if (strcmp(name, "offset") == 0) { - attr->stopOffset = nsvg__parseFloat(NULL, value, 2); + attr->stopOffset = nsvg__parseCoordinate(p, value, 0.0f, 1.0f); + } else if (strcmp(name, "id") == 0) { + strncpy(attr->id, value, 63); + attr->id[63] = '\0'; } else { return 0; } return 1; } -static int nsvg__parseNameValue(struct NSVGparser* p, const char* start, const char* end) +static int nsvg__parseNameValue(NSVGparser* p, const char* start, const char* end) { const char* str; const char* val; char name[512]; char value[512]; int n; - + str = start; while (str < end && *str != ':') ++str; - + val = str; - + // Right Trim while (str > start && (*str == ':' || nsvg__isspace(*str))) --str; ++str; - + n = (int)(str - start); if (n > 511) n = 511; if (n) memcpy(name, start, n); name[n] = 0; - + while (val < end && (*val == ':' || nsvg__isspace(*val))) ++val; - + n = (int)(end - val); if (n > 511) n = 511; if (n) memcpy(value, val, n); value[n] = 0; - + return nsvg__parseAttr(p, name, value); } -static void nsvg__parseStyle(struct NSVGparser* p, const char* str) +static void nsvg__parseStyle(NSVGparser* p, const char* str) { const char* start; const char* end; - + while (*str) { // Left Trim while(*str && nsvg__isspace(*str)) ++str; start = str; while(*str && *str != ';') ++str; end = str; - + // Right Trim while (end > start && (*end == ';' || nsvg__isspace(*end))) --end; ++end; - + nsvg__parseNameValue(p, start, end); if (*str) ++str; } } -static void nsvg__parseAttribs(struct NSVGparser* p, const char** attr) +static void nsvg__parseAttribs(NSVGparser* p, const char** attr) { int i; for (i = 0; attr[i]; i += 2) @@ -1519,11 +1940,14 @@ static int nsvg__getArgsPerElement(char cmd) case 'a': case 'A': return 7; + case 'z': + case 'Z': + return 0; } - return 0; + return -1; } -static void nsvg__pathMoveTo(struct NSVGparser* p, float* cpx, float* cpy, float* args, int rel) +static void nsvg__pathMoveTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) { if (rel) { *cpx += args[0]; @@ -1535,7 +1959,7 @@ static void nsvg__pathMoveTo(struct NSVGparser* p, float* cpx, float* cpy, float nsvg__moveTo(p, *cpx, *cpy); } -static void nsvg__pathLineTo(struct NSVGparser* p, float* cpx, float* cpy, float* args, int rel) +static void nsvg__pathLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) { if (rel) { *cpx += args[0]; @@ -1547,7 +1971,7 @@ static void nsvg__pathLineTo(struct NSVGparser* p, float* cpx, float* cpy, float nsvg__lineTo(p, *cpx, *cpy); } -static void nsvg__pathHLineTo(struct NSVGparser* p, float* cpx, float* cpy, float* args, int rel) +static void nsvg__pathHLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) { if (rel) *cpx += args[0]; @@ -1556,7 +1980,7 @@ static void nsvg__pathHLineTo(struct NSVGparser* p, float* cpx, float* cpy, floa nsvg__lineTo(p, *cpx, *cpy); } -static void nsvg__pathVLineTo(struct NSVGparser* p, float* cpx, float* cpy, float* args, int rel) +static void nsvg__pathVLineTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) { if (rel) *cpy += args[0]; @@ -1565,13 +1989,11 @@ static void nsvg__pathVLineTo(struct NSVGparser* p, float* cpx, float* cpy, floa nsvg__lineTo(p, *cpx, *cpy); } -static void nsvg__pathCubicBezTo(struct NSVGparser* p, float* cpx, float* cpy, +static void nsvg__pathCubicBezTo(NSVGparser* p, float* cpx, float* cpy, float* cpx2, float* cpy2, float* args, int rel) { - float x1, y1, x2, y2, cx1, cy1, cx2, cy2; - - x1 = *cpx; - y1 = *cpy; + float x2, y2, cx1, cy1, cx2, cy2; + if (rel) { cx1 = *cpx + args[0]; cy1 = *cpy + args[1]; @@ -1589,18 +2011,18 @@ static void nsvg__pathCubicBezTo(struct NSVGparser* p, float* cpx, float* cpy, } nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); - + *cpx2 = cx2; *cpy2 = cy2; *cpx = x2; *cpy = y2; } -static void nsvg__pathCubicBezShortTo(struct NSVGparser* p, float* cpx, float* cpy, +static void nsvg__pathCubicBezShortTo(NSVGparser* p, float* cpx, float* cpy, float* cpx2, float* cpy2, float* args, int rel) { float x1, y1, x2, y2, cx1, cy1, cx2, cy2; - + x1 = *cpx; y1 = *cpy; if (rel) { @@ -1614,24 +2036,24 @@ static void nsvg__pathCubicBezShortTo(struct NSVGparser* p, float* cpx, float* c x2 = args[2]; y2 = args[3]; } - + cx1 = 2*x1 - *cpx2; cy1 = 2*y1 - *cpy2; - + nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); - + *cpx2 = cx2; *cpy2 = cy2; *cpx = x2; *cpy = y2; } -static void nsvg__pathQuadBezTo(struct NSVGparser* p, float* cpx, float* cpy, +static void nsvg__pathQuadBezTo(NSVGparser* p, float* cpx, float* cpy, float* cpx2, float* cpy2, float* args, int rel) { float x1, y1, x2, y2, cx, cy; float cx1, cy1, cx2, cy2; - + x1 = *cpx; y1 = *cpy; if (rel) { @@ -1646,25 +2068,26 @@ static void nsvg__pathQuadBezTo(struct NSVGparser* p, float* cpx, float* cpy, y2 = args[3]; } - // Convert to cubix bezier + // Convert to cubic bezier cx1 = x1 + 2.0f/3.0f*(cx - x1); cy1 = y1 + 2.0f/3.0f*(cy - y1); cx2 = x2 + 2.0f/3.0f*(cx - x2); cy2 = y2 + 2.0f/3.0f*(cy - y2); + nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); - + *cpx2 = cx; *cpy2 = cy; *cpx = x2; *cpy = y2; } -static void nsvg__pathQuadBezShortTo(struct NSVGparser* p, float* cpx, float* cpy, +static void nsvg__pathQuadBezShortTo(NSVGparser* p, float* cpx, float* cpy, float* cpx2, float* cpy2, float* args, int rel) { float x1, y1, x2, y2, cx, cy; float cx1, cy1, cx2, cy2; - + x1 = *cpx; y1 = *cpy; if (rel) { @@ -1683,8 +2106,9 @@ static void nsvg__pathQuadBezShortTo(struct NSVGparser* p, float* cpx, float* cp cy1 = y1 + 2.0f/3.0f*(cy - y1); cx2 = x2 + 2.0f/3.0f*(cx - x2); cy2 = y2 + 2.0f/3.0f*(cy - y2); + nsvg__cubicBezTo(p, cx1,cy1, cx2,cy2, x2,y2); - + *cpx2 = cx; *cpy2 = cy; *cpx = x2; @@ -1704,17 +2128,17 @@ static float nsvg__vecang(float ux, float uy, float vx, float vy) float r = nsvg__vecrat(ux,uy, vx,vy); if (r < -1.0f) r = -1.0f; if (r > 1.0f) r = 1.0f; - return ((ux*vy < uy*vx) ? -1.0f : 1.0f) * acosf(r); + return ((ux*vy < uy*vx) ? -1.0f : 1.0f) * acosf(r); } -static void nsvg__pathArcTo(struct NSVGparser* p, float* cpx, float* cpy, float* args, int rel) +static void nsvg__pathArcTo(NSVGparser* p, float* cpx, float* cpy, float* args, int rel) { // Ported from canvg (https://code.google.com/p/canvg/) float rx, ry, rotx; float x1, y1, x2, y2, cx, cy, dx, dy, d; float x1p, y1p, cxp, cyp, s, sa, sb; float ux, uy, vx, vy, a1, da; - float x, y, tanx, tany, a, px, py, ptanx, ptany, t[6]; + float x, y, tanx, tany, a, px = 0, py = 0, ptanx = 0, ptany = 0, t[6]; float sinrx, cosrx; int fa, fs; int i, ndivs; @@ -1722,7 +2146,7 @@ static void nsvg__pathArcTo(struct NSVGparser* p, float* cpx, float* cpy, float* rx = fabsf(args[0]); // y radius ry = fabsf(args[1]); // x radius - rotx = args[2] / 180.0f * NSVG_PI; // x rotation engle + rotx = args[2] / 180.0f * NSVG_PI; // x rotation angle fa = fabsf(args[3]) > 1e-6 ? 1 : 0; // Large arc fs = fabsf(args[4]) > 1e-6 ? 1 : 0; // Sweep direction x1 = *cpx; // start point @@ -1749,7 +2173,7 @@ static void nsvg__pathArcTo(struct NSVGparser* p, float* cpx, float* cpy, float* sinrx = sinf(rotx); cosrx = cosf(rotx); - // Convert to center point parameterization. + // Convert to center point parameterization. // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes // 1) Compute x1', y1' x1p = cosrx * dx / 2.0f + sinrx * dy / 2.0f; @@ -1761,7 +2185,7 @@ static void nsvg__pathArcTo(struct NSVGparser* p, float* cpx, float* cpy, float* ry *= d; } // 2) Compute cx', cy' - s = 0.0f; + s = 0.0f; sa = nsvg__sqr(rx)*nsvg__sqr(ry) - nsvg__sqr(rx)*nsvg__sqr(y1p) - nsvg__sqr(ry)*nsvg__sqr(x1p); sb = nsvg__sqr(rx)*nsvg__sqr(y1p) + nsvg__sqr(ry)*nsvg__sqr(x1p); if (sa < 0.0f) sa = 0.0f; @@ -1787,13 +2211,10 @@ static void nsvg__pathArcTo(struct NSVGparser* p, float* cpx, float* cpy, float* // if (vecrat(ux,uy,vx,vy) <= -1.0f) da = NSVG_PI; // if (vecrat(ux,uy,vx,vy) >= 1.0f) da = 0; - if (fa) { - // Choose large arc - if (da > 0.0f) - da = da - 2*NSVG_PI; - else - da = 2*NSVG_PI + da; - } + if (fs == 0 && da > 0) + da -= 2 * NSVG_PI; + else if (fs == 1 && da < 0) + da += 2 * NSVG_PI; // Approximate the arc using cubic spline segments. t[0] = cosrx; t[1] = sinrx; @@ -1801,14 +2222,20 @@ static void nsvg__pathArcTo(struct NSVGparser* p, float* cpx, float* cpy, float* t[4] = cx; t[5] = cy; // Split arc into max 90 degree segments. - ndivs = (int)(fabsf(da) / (NSVG_PI*0.5f) + 0.5f); + // The loop assumes an iteration per end point (including start and end), this +1. + ndivs = (int)(fabsf(da) / (NSVG_PI*0.5f) + 1.0f); hda = (da / (float)ndivs) / 2.0f; - kappa = fabsf(4.0f / 3.0f * (1.0f - cosf(hda)) / sinf(hda)); + // Fix for ticket #179: division by 0: avoid cotangens around 0 (infinite) + if ((hda < 1e-3f) && (hda > -1e-3f)) + hda *= 0.5f; + else + hda = (1.0f - cosf(hda)) / sinf(hda); + kappa = fabsf(4.0f / 3.0f * hda); if (da < 0.0f) kappa = -kappa; for (i = 0; i <= ndivs; i++) { - a = a1 + da * (i/(float)ndivs); + a = a1 + da * ((float)i/(float)ndivs); dx = cosf(a); dy = sinf(a); nsvg__xformPoint(&x, &y, dx*rx, dy*ry, t); // position @@ -1825,19 +2252,20 @@ static void nsvg__pathArcTo(struct NSVGparser* p, float* cpx, float* cpy, float* *cpy = y2; } -static void nsvg__parsePath(struct NSVGparser* p, const char** attr) +static void nsvg__parsePath(NSVGparser* p, const char** attr) { const char* s = NULL; - char cmd; + char cmd = '\0'; float args[10]; int nargs; - int rargs; + int rargs = 0; + char initPoint; float cpx, cpy, cpx2, cpy2; const char* tmp[4]; char closedFlag; int i; char item[64]; - + for (i = 0; attr[i]; i += 2) { if (strcmp(attr[i], "d") == 0) { s = attr[i + 1]; @@ -1850,19 +2278,24 @@ static void nsvg__parsePath(struct NSVGparser* p, const char** attr) } } - if(s) - { + if (s) { nsvg__resetPath(p); cpx = 0; cpy = 0; + cpx2 = 0; cpy2 = 0; + initPoint = 0; closedFlag = 0; nargs = 0; - + while (*s) { - s = nsvg__getNextPathItem(s, item); + item[0] = '\0'; + if ((cmd == 'A' || cmd == 'a') && (nargs == 3 || nargs == 4)) + s = nsvg__getNextPathItemWhenArcFlag(s, item); + if (!*item) + s = nsvg__getNextPathItem(s, item); if (!*item) break; - if (nsvg__isnum(item[0])) { + if (cmd != '\0' && nsvg__isCoordinate(item)) { if (nargs < 10) - args[nargs++] = (float)atof(item); + args[nargs++] = (float)nsvg__atof(item); if (nargs >= rargs) { switch (cmd) { case 'm': @@ -1870,20 +2303,25 @@ static void nsvg__parsePath(struct NSVGparser* p, const char** attr) nsvg__pathMoveTo(p, &cpx, &cpy, args, cmd == 'm' ? 1 : 0); // Moveto can be followed by multiple coordinate pairs, // which should be treated as linetos. - cmd = (cmd =='m') ? 'l' : 'L'; - rargs = nsvg__getArgsPerElement(cmd); + cmd = (cmd == 'm') ? 'l' : 'L'; + rargs = nsvg__getArgsPerElement(cmd); + cpx2 = cpx; cpy2 = cpy; + initPoint = 1; break; case 'l': case 'L': nsvg__pathLineTo(p, &cpx, &cpy, args, cmd == 'l' ? 1 : 0); + cpx2 = cpx; cpy2 = cpy; break; case 'H': case 'h': nsvg__pathHLineTo(p, &cpx, &cpy, args, cmd == 'h' ? 1 : 0); + cpx2 = cpx; cpy2 = cpy; break; case 'V': case 'v': nsvg__pathVLineTo(p, &cpx, &cpy, args, cmd == 'v' ? 1 : 0); + cpx2 = cpx; cpy2 = cpy; break; case 'C': case 'c': @@ -1899,16 +2337,18 @@ static void nsvg__parsePath(struct NSVGparser* p, const char** attr) break; case 'T': case 't': - nsvg__pathQuadBezShortTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 's' ? 1 : 0); + nsvg__pathQuadBezShortTo(p, &cpx, &cpy, &cpx2, &cpy2, args, cmd == 't' ? 1 : 0); break; case 'A': case 'a': nsvg__pathArcTo(p, &cpx, &cpy, args, cmd == 'a' ? 1 : 0); + cpx2 = cpx; cpy2 = cpy; break; default: if (nargs >= 2) { cpx = args[nargs-2]; cpy = args[nargs-1]; + cpx2 = cpx; cpy2 = cpy; } break; } @@ -1916,7 +2356,6 @@ static void nsvg__parsePath(struct NSVGparser* p, const char** attr) } } else { cmd = item[0]; - rargs = nsvg__getArgsPerElement(cmd); if (cmd == 'M' || cmd == 'm') { // Commit path. if (p->npts > 0) @@ -1925,27 +2364,43 @@ static void nsvg__parsePath(struct NSVGparser* p, const char** attr) nsvg__resetPath(p); closedFlag = 0; nargs = 0; - } else if (cmd == 'Z' || cmd == 'z') { + } else if (initPoint == 0) { + // Do not allow other commands until initial point has been set (moveTo called once). + cmd = '\0'; + } + if (cmd == 'Z' || cmd == 'z') { closedFlag = 1; // Commit path. - if (p->npts > 0) + if (p->npts > 0) { + // Move current point to first point + cpx = p->pts[0]; + cpy = p->pts[1]; + cpx2 = cpx; cpy2 = cpy; nsvg__addPath(p, closedFlag); + } // Start new subpath. nsvg__resetPath(p); + nsvg__moveTo(p, cpx, cpy); closedFlag = 0; nargs = 0; } + rargs = nsvg__getArgsPerElement(cmd); + if (rargs == -1) { + // Command not recognized + cmd = '\0'; + rargs = 0; + } } } // Commit path. if (p->npts) - nsvg__addPath(p, closedFlag); + nsvg__addPath(p, closedFlag); } nsvg__addShape(p); } -static void nsvg__parseRect(struct NSVGparser* p, const char** attr) +static void nsvg__parseRect(NSVGparser* p, const char** attr) { float x = 0.0f; float y = 0.0f; @@ -1954,15 +2409,15 @@ static void nsvg__parseRect(struct NSVGparser* p, const char** attr) float rx = -1.0f; // marks not set float ry = -1.0f; int i; - + for (i = 0; attr[i]; i += 2) { if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { - if (strcmp(attr[i], "x") == 0) x = nsvg__parseFloat(p, attr[i+1], 0); - if (strcmp(attr[i], "y") == 0) y = nsvg__parseFloat(p, attr[i+1], 1); - if (strcmp(attr[i], "width") == 0) w = nsvg__parseFloat(p, attr[i+1], 0); - if (strcmp(attr[i], "height") == 0) h = nsvg__parseFloat(p, attr[i+1], 1); - if (strcmp(attr[i], "rx") == 0) rx = fabsf(nsvg__parseFloat(p, attr[i+1], 0)); - if (strcmp(attr[i], "ry") == 0) ry = fabsf(nsvg__parseFloat(p, attr[i+1], 1)); + if (strcmp(attr[i], "x") == 0) x = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); + if (strcmp(attr[i], "y") == 0) y = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); + if (strcmp(attr[i], "width") == 0) w = nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p)); + if (strcmp(attr[i], "height") == 0) h = nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p)); + if (strcmp(attr[i], "rx") == 0) rx = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p))); + if (strcmp(attr[i], "ry") == 0) ry = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p))); } } @@ -1972,7 +2427,7 @@ static void nsvg__parseRect(struct NSVGparser* p, const char** attr) if (ry < 0.0f) ry = 0.0f; if (rx > w/2.0f) rx = w/2.0f; if (ry > h/2.0f) ry = h/2.0f; - + if (w != 0.0f && h != 0.0f) { nsvg__resetPath(p); @@ -1993,28 +2448,28 @@ static void nsvg__parseRect(struct NSVGparser* p, const char** attr) nsvg__lineTo(p, x, y+ry); nsvg__cubicBezTo(p, x, y+ry*(1-NSVG_KAPPA90), x+rx*(1-NSVG_KAPPA90), y, x+rx, y); } - + nsvg__addPath(p, 1); nsvg__addShape(p); } } -static void nsvg__parseCircle(struct NSVGparser* p, const char** attr) +static void nsvg__parseCircle(NSVGparser* p, const char** attr) { float cx = 0.0f; float cy = 0.0f; float r = 0.0f; int i; - + for (i = 0; attr[i]; i += 2) { if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { - if (strcmp(attr[i], "cx") == 0) cx = nsvg__parseFloat(p, attr[i+1], 0); - if (strcmp(attr[i], "cy") == 0) cy = nsvg__parseFloat(p, attr[i+1], 1); - if (strcmp(attr[i], "r") == 0) r = fabsf(nsvg__parseFloat(p, attr[i+1], 2)); + if (strcmp(attr[i], "cx") == 0) cx = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); + if (strcmp(attr[i], "cy") == 0) cy = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); + if (strcmp(attr[i], "r") == 0) r = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualLength(p))); } } - + if (r > 0.0f) { nsvg__resetPath(p); @@ -2023,30 +2478,30 @@ static void nsvg__parseCircle(struct NSVGparser* p, const char** attr) nsvg__cubicBezTo(p, cx-r*NSVG_KAPPA90, cy+r, cx-r, cy+r*NSVG_KAPPA90, cx-r, cy); nsvg__cubicBezTo(p, cx-r, cy-r*NSVG_KAPPA90, cx-r*NSVG_KAPPA90, cy-r, cx, cy-r); nsvg__cubicBezTo(p, cx+r*NSVG_KAPPA90, cy-r, cx+r, cy-r*NSVG_KAPPA90, cx+r, cy); - + nsvg__addPath(p, 1); nsvg__addShape(p); } } -static void nsvg__parseEllipse(struct NSVGparser* p, const char** attr) +static void nsvg__parseEllipse(NSVGparser* p, const char** attr) { float cx = 0.0f; float cy = 0.0f; float rx = 0.0f; float ry = 0.0f; int i; - + for (i = 0; attr[i]; i += 2) { if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { - if (strcmp(attr[i], "cx") == 0) cx = nsvg__parseFloat(p, attr[i+1], 0); - if (strcmp(attr[i], "cy") == 0) cy = nsvg__parseFloat(p, attr[i+1], 1); - if (strcmp(attr[i], "rx") == 0) rx = fabsf(nsvg__parseFloat(p, attr[i+1], 0)); - if (strcmp(attr[i], "ry") == 0) ry = fabsf(nsvg__parseFloat(p, attr[i+1], 1)); + if (strcmp(attr[i], "cx") == 0) cx = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); + if (strcmp(attr[i], "cy") == 0) cy = nsvg__parseCoordinate(p, attr[i+1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); + if (strcmp(attr[i], "rx") == 0) rx = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualWidth(p))); + if (strcmp(attr[i], "ry") == 0) ry = fabsf(nsvg__parseCoordinate(p, attr[i+1], 0.0f, nsvg__actualHeight(p))); } } - + if (rx > 0.0f && ry > 0.0f) { nsvg__resetPath(p); @@ -2056,50 +2511,50 @@ static void nsvg__parseEllipse(struct NSVGparser* p, const char** attr) nsvg__cubicBezTo(p, cx-rx*NSVG_KAPPA90, cy+ry, cx-rx, cy+ry*NSVG_KAPPA90, cx-rx, cy); nsvg__cubicBezTo(p, cx-rx, cy-ry*NSVG_KAPPA90, cx-rx*NSVG_KAPPA90, cy-ry, cx, cy-ry); nsvg__cubicBezTo(p, cx+rx*NSVG_KAPPA90, cy-ry, cx+rx, cy-ry*NSVG_KAPPA90, cx+rx, cy); - + nsvg__addPath(p, 1); nsvg__addShape(p); } } -static void nsvg__parseLine(struct NSVGparser* p, const char** attr) +static void nsvg__parseLine(NSVGparser* p, const char** attr) { float x1 = 0.0; float y1 = 0.0; float x2 = 0.0; float y2 = 0.0; int i; - + for (i = 0; attr[i]; i += 2) { if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { - if (strcmp(attr[i], "x1") == 0) x1 = nsvg__parseFloat(p, attr[i + 1], 0); - if (strcmp(attr[i], "y1") == 0) y1 = nsvg__parseFloat(p, attr[i + 1], 1); - if (strcmp(attr[i], "x2") == 0) x2 = nsvg__parseFloat(p, attr[i + 1], 0); - if (strcmp(attr[i], "y2") == 0) y2 = nsvg__parseFloat(p, attr[i + 1], 1); + if (strcmp(attr[i], "x1") == 0) x1 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); + if (strcmp(attr[i], "y1") == 0) y1 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); + if (strcmp(attr[i], "x2") == 0) x2 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigX(p), nsvg__actualWidth(p)); + if (strcmp(attr[i], "y2") == 0) y2 = nsvg__parseCoordinate(p, attr[i + 1], nsvg__actualOrigY(p), nsvg__actualHeight(p)); } } - + nsvg__resetPath(p); - + nsvg__moveTo(p, x1, y1); nsvg__lineTo(p, x2, y2); - + nsvg__addPath(p, 0); nsvg__addShape(p); } -static void nsvg__parsePoly(struct NSVGparser* p, const char** attr, int closeFlag) +static void nsvg__parsePoly(NSVGparser* p, const char** attr, int closeFlag) { int i; const char* s; float args[2]; int nargs, npts = 0; char item[64]; - + nsvg__resetPath(p); - + for (i = 0; attr[i]; i += 2) { if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { if (strcmp(attr[i], "points") == 0) { @@ -2107,7 +2562,7 @@ static void nsvg__parsePoly(struct NSVGparser* p, const char** attr, int closeFl nargs = 0; while (*s) { s = nsvg__getNextPathItem(s, item); - args[nargs++] = (float)atof(item); + args[nargs++] = (float)nsvg__atof(item); if (nargs >= 2) { if (npts == 0) nsvg__moveTo(p, args[0], args[1]); @@ -2120,23 +2575,38 @@ static void nsvg__parsePoly(struct NSVGparser* p, const char** attr, int closeFl } } } - + nsvg__addPath(p, (char)closeFlag); nsvg__addShape(p); } -static void nsvg__parseSVG(struct NSVGparser* p, const char** attr) +static void nsvg__parseSVG(NSVGparser* p, const char** attr) { int i; for (i = 0; attr[i]; i += 2) { if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { if (strcmp(attr[i], "width") == 0) { - p->image->width = nsvg__parseFloat(p, attr[i + 1], 0); + p->image->width = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 0.0f); } else if (strcmp(attr[i], "height") == 0) { - p->image->height = nsvg__parseFloat(p, attr[i + 1], 1); + p->image->height = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 0.0f); } else if (strcmp(attr[i], "viewBox") == 0) { - sscanf(attr[i + 1], "%f%*[%%, \t]%f%*[%%, \t]%f%*[%%, \t]%f", &p->viewMinx, &p->viewMiny, &p->viewWidth, &p->viewHeight); + const char *s = attr[i + 1]; + char buf[64]; + s = nsvg__parseNumber(s, buf, 64); + p->viewMinx = nsvg__atof(buf); + while (*s && (nsvg__isspace(*s) || *s == '%' || *s == ',')) s++; + if (!*s) return; + s = nsvg__parseNumber(s, buf, 64); + p->viewMiny = nsvg__atof(buf); + while (*s && (nsvg__isspace(*s) || *s == '%' || *s == ',')) s++; + if (!*s) return; + s = nsvg__parseNumber(s, buf, 64); + p->viewWidth = nsvg__atof(buf); + while (*s && (nsvg__isspace(*s) || *s == '%' || *s == ',')) s++; + if (!*s) return; + s = nsvg__parseNumber(s, buf, 64); + p->viewHeight = nsvg__atof(buf); } else if (strcmp(attr[i], "preserveAspectRatio") == 0) { if (strstr(attr[i + 1], "none") != 0) { // No uniform scaling @@ -2166,19 +2636,32 @@ static void nsvg__parseSVG(struct NSVGparser* p, const char** attr) } } -static void nsvg__parseGradient(struct NSVGparser* p, const char** attr, char type) +static void nsvg__parseGradient(NSVGparser* p, const char** attr, signed char type) { int i; - struct NSVGgradientData* grad = (struct NSVGgradientData*)malloc(sizeof(struct NSVGgradientData)); + NSVGgradientData* grad = (NSVGgradientData*)malloc(sizeof(NSVGgradientData)); if (grad == NULL) return; - memset(grad, 0, sizeof(struct NSVGgradientData)); - + memset(grad, 0, sizeof(NSVGgradientData)); + grad->units = NSVG_OBJECT_SPACE; grad->type = type; + if (grad->type == NSVG_PAINT_LINEAR_GRADIENT) { + grad->linear.x1 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT); + grad->linear.y1 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT); + grad->linear.x2 = nsvg__coord(100.0f, NSVG_UNITS_PERCENT); + grad->linear.y2 = nsvg__coord(0.0f, NSVG_UNITS_PERCENT); + } else if (grad->type == NSVG_PAINT_RADIAL_GRADIENT) { + grad->radial.cx = nsvg__coord(50.0f, NSVG_UNITS_PERCENT); + grad->radial.cy = nsvg__coord(50.0f, NSVG_UNITS_PERCENT); + grad->radial.r = nsvg__coord(50.0f, NSVG_UNITS_PERCENT); + } + nsvg__xformIdentity(grad->xform); - // TODO: does not handle percent and objectBoundingBox correctly yet. for (i = 0; attr[i]; i += 2) { - if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { + if (strcmp(attr[i], "id") == 0) { + strncpy(grad->id, attr[i+1], 63); + grad->id[63] = '\0'; + } else if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) { if (strcmp(attr[i], "gradientUnits") == 0) { if (strcmp(attr[i+1], "objectBoundingBox") == 0) grad->units = NSVG_OBJECT_SPACE; @@ -2187,23 +2670,23 @@ static void nsvg__parseGradient(struct NSVGparser* p, const char** attr, char ty } else if (strcmp(attr[i], "gradientTransform") == 0) { nsvg__parseTransform(grad->xform, attr[i + 1]); } else if (strcmp(attr[i], "cx") == 0) { - grad->radial.cx = nsvg__parseFloat(p, attr[i + 1], 0); + grad->radial.cx = nsvg__parseCoordinateRaw(attr[i + 1]); } else if (strcmp(attr[i], "cy") == 0) { - grad->radial.cy = nsvg__parseFloat(p, attr[i + 1], 1); + grad->radial.cy = nsvg__parseCoordinateRaw(attr[i + 1]); } else if (strcmp(attr[i], "r") == 0) { - grad->radial.r = nsvg__parseFloat(p, attr[i + 1], 2); + grad->radial.r = nsvg__parseCoordinateRaw(attr[i + 1]); } else if (strcmp(attr[i], "fx") == 0) { - grad->radial.fx = nsvg__parseFloat(p, attr[i + 1], 0); + grad->radial.fx = nsvg__parseCoordinateRaw(attr[i + 1]); } else if (strcmp(attr[i], "fy") == 0) { - grad->radial.fy = nsvg__parseFloat(p, attr[i + 1], 1); + grad->radial.fy = nsvg__parseCoordinateRaw(attr[i + 1]); } else if (strcmp(attr[i], "x1") == 0) { - grad->linear.x1 = nsvg__parseFloat(p, attr[i + 1], 0); + grad->linear.x1 = nsvg__parseCoordinateRaw(attr[i + 1]); } else if (strcmp(attr[i], "y1") == 0) { - grad->linear.y1 = nsvg__parseFloat(p, attr[i + 1], 1); + grad->linear.y1 = nsvg__parseCoordinateRaw(attr[i + 1]); } else if (strcmp(attr[i], "x2") == 0) { - grad->linear.x2 = nsvg__parseFloat(p, attr[i + 1], 0); + grad->linear.x2 = nsvg__parseCoordinateRaw(attr[i + 1]); } else if (strcmp(attr[i], "y2") == 0) { - grad->linear.y2 = nsvg__parseFloat(p, attr[i + 1], 1); + grad->linear.y2 = nsvg__parseCoordinateRaw(attr[i + 1]); } else if (strcmp(attr[i], "spreadMethod") == 0) { if (strcmp(attr[i+1], "pad") == 0) grad->spread = NSVG_SPREAD_PAD; @@ -2212,11 +2695,9 @@ static void nsvg__parseGradient(struct NSVGparser* p, const char** attr, char ty else if (strcmp(attr[i+1], "repeat") == 0) grad->spread = NSVG_SPREAD_REPEAT; } else if (strcmp(attr[i], "xlink:href") == 0) { - strncpy(grad->ref, attr[i+1], 63); - grad->ref[63] = '\0'; - } else if (strcmp(attr[i], "id") == 0) { - strncpy(grad->id, attr[i+1], 63); - grad->id[63] = '\0'; + const char *href = attr[i+1]; + strncpy(grad->ref, href+1, 62); + grad->ref[62] = '\0'; } } } @@ -2225,11 +2706,11 @@ static void nsvg__parseGradient(struct NSVGparser* p, const char** attr, char ty p->gradients = grad; } -static void nsvg__parseGradientStop(struct NSVGparser* p, const char** attr) +static void nsvg__parseGradientStop(NSVGparser* p, const char** attr) { - struct NSVGattrib* curAttr = nsvg__getAttr(p); - struct NSVGgradientData* grad; - struct NSVGgradientStop* stop; + NSVGattrib* curAttr = nsvg__getAttr(p); + NSVGgradientData* grad; + NSVGgradientStop* stop; int i, idx; curAttr->stopOffset = 0; @@ -2245,7 +2726,7 @@ static void nsvg__parseGradientStop(struct NSVGparser* p, const char** attr) if (grad == NULL) return; grad->nstops++; - grad->stops = (struct NSVGgradientStop*)realloc(grad->stops, sizeof(struct NSVGgradientStop)*grad->nstops); + grad->stops = (NSVGgradientStop*)realloc(grad->stops, sizeof(NSVGgradientStop)*grad->nstops); if (grad->stops == NULL) return; // Insert @@ -2269,8 +2750,8 @@ static void nsvg__parseGradientStop(struct NSVGparser* p, const char** attr) static void nsvg__startElement(void* ud, const char* el, const char** attr) { - struct NSVGparser* p = (struct NSVGparser*)ud; - + NSVGparser* p = (NSVGparser*)ud; + if (p->defsFlag) { // Skip everything but gradients in defs if (strcmp(el, "linearGradient") == 0) { @@ -2282,7 +2763,7 @@ static void nsvg__startElement(void* ud, const char* el, const char** attr) } return; } - + if (strcmp(el, "g") == 0) { nsvg__pushAttr(p); nsvg__parseAttribs(p, attr); @@ -2331,8 +2812,8 @@ static void nsvg__startElement(void* ud, const char* el, const char** attr) static void nsvg__endElement(void* ud, const char* el) { - struct NSVGparser* p = (struct NSVGparser*)ud; - + NSVGparser* p = (NSVGparser*)ud; + if (strcmp(el, "g") == 0) { nsvg__popAttr(p); } else if (strcmp(el, "path") == 0) { @@ -2344,13 +2825,19 @@ static void nsvg__endElement(void* ud, const char* el) static void nsvg__content(void* ud, const char* s) { + NSVG_NOTUSED(ud); + NSVG_NOTUSED(s); // empty } -static void nsvg__imageBounds(struct NSVGparser* p, float* bounds) +static void nsvg__imageBounds(NSVGparser* p, float* bounds) { - struct NSVGshape* shape; + NSVGshape* shape; shape = p->image->shapes; + if (shape == NULL) { + bounds[0] = bounds[1] = bounds[2] = bounds[3] = 0.0; + return; + } bounds[0] = shape->bounds[0]; bounds[1] = shape->bounds[1]; bounds[2] = shape->bounds[2]; @@ -2373,48 +2860,54 @@ static float nsvg__viewAlign(float content, float container, int type) return (container - content) * 0.5f; } -static void nsvg__scaleGradient(struct NSVGgradient* grad, float tx, float ty, float sx, float sy) +static void nsvg__scaleGradient(NSVGgradient* grad, float tx, float ty, float sx, float sy) { - grad->xform[0] *= sx; - grad->xform[1] *= sx; - grad->xform[2] *= sy; - grad->xform[3] *= sy; - grad->xform[4] += tx*sx; - grad->xform[5] += ty*sx; + float t[6]; + nsvg__xformSetTranslation(t, tx, ty); + nsvg__xformMultiply (grad->xform, t); + + nsvg__xformSetScale(t, sx, sy); + nsvg__xformMultiply (grad->xform, t); } -static void nsvg__scaleToViewbox(struct NSVGparser* p, const char* units) +static void nsvg__scaleToViewbox(NSVGparser* p, const char* units) { - struct NSVGshape* shape; - struct NSVGpath* path; - float tx, ty, sx, sy, us, bounds[4], t[6]; + NSVGshape* shape; + NSVGpath* path; + float tx, ty, sx, sy, us, bounds[4], t[6], avgs; int i; float* pt; // Guess image size if not set completely. nsvg__imageBounds(p, bounds); + if (p->viewWidth == 0) { - if (p->image->width > 0) + if (p->image->width > 0) { p->viewWidth = p->image->width; - else - p->viewWidth = bounds[2]; + } else { + p->viewMinx = bounds[0]; + p->viewWidth = bounds[2] - bounds[0]; + } } if (p->viewHeight == 0) { - if (p->image->height > 0) + if (p->image->height > 0) { p->viewHeight = p->image->height; - else - p->viewHeight = bounds[3]; + } else { + p->viewMiny = bounds[1]; + p->viewHeight = bounds[3] - bounds[1]; + } } if (p->image->width == 0) p->image->width = p->viewWidth; if (p->image->height == 0) p->image->height = p->viewHeight; - tx = -p->viewMinx; + tx = -p->viewMinx; ty = -p->viewMiny; sx = p->viewWidth > 0 ? p->image->width / p->viewWidth : 0; sy = p->viewHeight > 0 ? p->image->height / p->viewHeight : 0; - us = 1.0f / nsvg__convertToPixels(p, 1.0f, units, 0); + // Unit scaling + us = 1.0f / nsvg__convertToPixels(p, nsvg__coord(1.0f, nsvg__parseUnits(units)), 0.0f, 1.0f); // Fix aspect ratio if (p->alignType == NSVG_ALIGN_MEET) { @@ -2432,6 +2925,7 @@ static void nsvg__scaleToViewbox(struct NSVGparser* p, const char* units) // Transform sx *= us; sy *= us; + avgs = (sx+sy) / 2.0f; for (shape = p->image->shapes; shape != NULL; shape = shape->next) { shape->bounds[0] = (shape->bounds[0] + tx) * sx; shape->bounds[1] = (shape->bounds[1] + ty) * sy; @@ -2460,17 +2954,48 @@ static void nsvg__scaleToViewbox(struct NSVGparser* p, const char* units) nsvg__xformInverse(shape->stroke.gradient->xform, t); } + shape->strokeWidth *= avgs; + shape->strokeDashOffset *= avgs; + for (i = 0; i < shape->strokeDashCount; i++) + shape->strokeDashArray[i] *= avgs; } +} - sx *= us; - sy *= us; +static void nsvg__createGradients(NSVGparser* p) +{ + NSVGshape* shape; + + for (shape = p->image->shapes; shape != NULL; shape = shape->next) { + if (shape->fill.type == NSVG_PAINT_UNDEF) { + if (shape->fillGradient[0] != '\0') { + float inv[6], localBounds[4]; + nsvg__xformInverse(inv, shape->xform); + nsvg__getLocalBounds(localBounds, shape, inv); + shape->fill.gradient = nsvg__createGradient(p, shape->fillGradient, localBounds, shape->xform, &shape->fill.type); + } + if (shape->fill.type == NSVG_PAINT_UNDEF) { + shape->fill.type = NSVG_PAINT_NONE; + } + } + if (shape->stroke.type == NSVG_PAINT_UNDEF) { + if (shape->strokeGradient[0] != '\0') { + float inv[6], localBounds[4]; + nsvg__xformInverse(inv, shape->xform); + nsvg__getLocalBounds(localBounds, shape, inv); + shape->stroke.gradient = nsvg__createGradient(p, shape->strokeGradient, localBounds, shape->xform, &shape->stroke.type); + } + if (shape->stroke.type == NSVG_PAINT_UNDEF) { + shape->stroke.type = NSVG_PAINT_NONE; + } + } + } } -struct NSVGimage* nsvgParse(char* input, const char* units, float dpi) +NSVGimage* nsvgParse(char* input, const char* units, float dpi) { - struct NSVGparser* p; - struct NSVGimage* ret = 0; - + NSVGparser* p; + NSVGimage* ret = 0; + p = nsvg__createParser(); if (p == NULL) { return NULL; @@ -2479,6 +3004,9 @@ struct NSVGimage* nsvgParse(char* input, const char* units, float dpi) nsvg__parseXML(input, nsvg__startElement, nsvg__endElement, nsvg__content, p); + // Create gradients after all definitions have been parsed + nsvg__createGradients(p); + // Scale to viewBox nsvg__scaleToViewbox(p, units); @@ -2490,12 +3018,12 @@ struct NSVGimage* nsvgParse(char* input, const char* units, float dpi) return ret; } -struct NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi) +NSVGimage* nsvgParseFromFile(const char* filename, const char* units, float dpi) { FILE* fp = NULL; - int size; + size_t size; char* data = NULL; - struct NSVGimage* image = NULL; + NSVGimage* image = NULL; fp = fopen(filename, "rb"); if (!fp) goto error; @@ -2504,7 +3032,7 @@ struct NSVGimage* nsvgParseFromFile(const char* filename, const char* units, flo fseek(fp, 0, SEEK_SET); data = (char*)malloc(size+1); if (data == NULL) goto error; - fread(data, size, 1, fp); + if (fread(data, 1, size, fp) != size) goto error; data[size] = '\0'; // Must be null terminated. fclose(fp); image = nsvgParse(data, units, dpi); @@ -2519,9 +3047,39 @@ struct NSVGimage* nsvgParseFromFile(const char* filename, const char* units, flo return NULL; } -void nsvgDelete(struct NSVGimage* image) +NSVGpath* nsvgDuplicatePath(NSVGpath* p) { - struct NSVGshape *snext, *shape; + NSVGpath* res = NULL; + + if (p == NULL) + return NULL; + + res = (NSVGpath*)malloc(sizeof(NSVGpath)); + if (res == NULL) goto error; + memset(res, 0, sizeof(NSVGpath)); + + res->pts = (float*)malloc(p->npts*2*sizeof(float)); + if (res->pts == NULL) goto error; + memcpy(res->pts, p->pts, p->npts * sizeof(float) * 2); + res->npts = p->npts; + + memcpy(res->bounds, p->bounds, sizeof(p->bounds)); + + res->closed = p->closed; + + return res; + +error: + if (res != NULL) { + free(res->pts); + free(res); + } + return NULL; +} + +void nsvgDelete(NSVGimage* image) +{ + NSVGshape *snext, *shape; if (image == NULL) return; shape = image->shapes; while (shape != NULL) { @@ -2535,4 +3093,6 @@ void nsvgDelete(struct NSVGimage* image) free(image); } -#endif +#endif // NANOSVG_IMPLEMENTATION + +#endif // NANOSVG_H diff --git a/external/nanosvg/nanosvgrast.h b/external/nanosvg/nanosvgrast.h index 60eac66ea5..90d42e9286 100644 --- a/external/nanosvg/nanosvgrast.h +++ b/external/nanosvg/nanosvgrast.h @@ -1,14 +1,14 @@ /* * Copyright (c) 2013-14 Mikko Mononen memon@inside.org - * + * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. - * + * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute it * freely, subject to the following restrictions: - * + * * 1. The origin of this software must not be misrepresented; you must not * claim that you wrote the original software. If you use this software * in a product, an acknowledgment in the product documentation would be @@ -25,13 +25,20 @@ #ifndef NANOSVGRAST_H #define NANOSVGRAST_H +#include "nanosvg.h" + +#ifndef NANOSVGRAST_CPLUSPLUS #ifdef __cplusplus extern "C" { #endif +#endif + +typedef struct NSVGrasterizer NSVGrasterizer; /* Example Usage: // Load SVG - struct SNVGImage* image = nsvgParseFromFile("test.svg."); + NSVGimage* image; + image = nsvgParseFromFile("test.svg", "px", 96); // Create rasterizer (can be used to render multiple images). struct NSVGrasterizer* rast = nsvgCreateRasterizer(); @@ -42,7 +49,7 @@ extern "C" { */ // Allocated rasterizer context. -struct NSVGrasterizer* nsvgCreateRasterizer(); +NSVGrasterizer* nsvgCreateRasterizer(void); // Rasterizes SVG image, returns RGBA image (non-premultiplied alpha) // r - pointer to rasterizer context @@ -53,23 +60,25 @@ struct NSVGrasterizer* nsvgCreateRasterizer(); // w - width of the image to render // h - height of the image to render // stride - number of bytes per scaleline in the destination buffer -void nsvgRasterize(struct NSVGrasterizer* r, - struct NSVGimage* image, float tx, float ty, float scale, +void nsvgRasterize(NSVGrasterizer* r, + NSVGimage* image, float tx, float ty, float scale, unsigned char* dst, int w, int h, int stride); // Deletes rasterizer context. -void nsvgDeleteRasterizer(struct NSVGrasterizer*); +void nsvgDeleteRasterizer(NSVGrasterizer*); +#ifndef NANOSVGRAST_CPLUSPLUS #ifdef __cplusplus -}; +} +#endif #endif - -#endif // NANOSVGRAST_H #ifdef NANOSVGRAST_IMPLEMENTATION #include +#include +#include #define NSVG__SUBSAMPLES 5 #define NSVG__FIXSHIFT 10 @@ -77,43 +86,62 @@ void nsvgDeleteRasterizer(struct NSVGrasterizer*); #define NSVG__FIXMASK (NSVG__FIX-1) #define NSVG__MEMPAGE_SIZE 1024 -struct NSVGedge { - float x0,y0, x1,y1; - int dir; - struct NSVGedge* next; -}; - -struct NSVGactiveEdge { +typedef struct NSVGedge { + float x0,y0, x1,y1; + int dir; + struct NSVGedge* next; +} NSVGedge; + +typedef struct NSVGpoint { + float x, y; + float dx, dy; + float len; + float dmx, dmy; + unsigned char flags; +} NSVGpoint; + +typedef struct NSVGactiveEdge { int x,dx; float ey; int dir; struct NSVGactiveEdge *next; -}; +} NSVGactiveEdge; -struct NSVGmemPage { +typedef struct NSVGmemPage { unsigned char mem[NSVG__MEMPAGE_SIZE]; int size; struct NSVGmemPage* next; -}; +} NSVGmemPage; -struct NSVGcachedPaint { - char type; +typedef struct NSVGcachedPaint { + signed char type; char spread; float xform[6]; unsigned int colors[256]; -}; +} NSVGcachedPaint; struct NSVGrasterizer { float px, py; - struct NSVGedge* edges; + float tessTol; + float distTol; + + NSVGedge* edges; int nedges; int cedges; - struct NSVGactiveEdge* freelist; - struct NSVGmemPage* pages; - struct NSVGmemPage* curpage; + NSVGpoint* points; + int npoints; + int cpoints; + + NSVGpoint* points2; + int npoints2; + int cpoints2; + + NSVGactiveEdge* freelist; + NSVGmemPage* pages; + NSVGmemPage* curpage; unsigned char* scanline; int cscanline; @@ -122,11 +150,14 @@ struct NSVGrasterizer int width, height, stride; }; -struct NSVGrasterizer* nsvgCreateRasterizer() +NSVGrasterizer* nsvgCreateRasterizer(void) { - struct NSVGrasterizer* r = (struct NSVGrasterizer*)malloc(sizeof(struct NSVGrasterizer)); + NSVGrasterizer* r = (NSVGrasterizer*)malloc(sizeof(NSVGrasterizer)); if (r == NULL) goto error; - memset(r, 0, sizeof(struct NSVGrasterizer)); + memset(r, 0, sizeof(NSVGrasterizer)); + + r->tessTol = 0.25f; + r->distTol = 0.01f; return r; @@ -135,39 +166,41 @@ struct NSVGrasterizer* nsvgCreateRasterizer() return NULL; } -void nsvgDeleteRasterizer(struct NSVGrasterizer* r) +void nsvgDeleteRasterizer(NSVGrasterizer* r) { - struct NSVGmemPage* p; + NSVGmemPage* p; if (r == NULL) return; p = r->pages; while (p != NULL) { - struct NSVGmemPage* next = p->next; + NSVGmemPage* next = p->next; free(p); p = next; } if (r->edges) free(r->edges); + if (r->points) free(r->points); + if (r->points2) free(r->points2); if (r->scanline) free(r->scanline); free(r); } -static struct NSVGmemPage* nsvg__nextPage(struct NSVGrasterizer* r, struct NSVGmemPage* cur) +static NSVGmemPage* nsvg__nextPage(NSVGrasterizer* r, NSVGmemPage* cur) { - struct NSVGmemPage *newp; + NSVGmemPage *newp; // If using existing chain, return the next page in chain if (cur != NULL && cur->next != NULL) { return cur->next; } - + // Alloc new page - newp = (struct NSVGmemPage*)malloc(sizeof(struct NSVGmemPage)); + newp = (NSVGmemPage*)malloc(sizeof(NSVGmemPage)); if (newp == NULL) return NULL; - memset(newp, 0, sizeof(struct NSVGmemPage)); - + memset(newp, 0, sizeof(NSVGmemPage)); + // Add to linked list if (cur != NULL) cur->next = newp; @@ -177,9 +210,9 @@ static struct NSVGmemPage* nsvg__nextPage(struct NSVGrasterizer* r, struct NSVGm return newp; } -static void nsvg__resetPool(struct NSVGrasterizer* r) +static void nsvg__resetPool(NSVGrasterizer* r) { - struct NSVGmemPage* p = r->pages; + NSVGmemPage* p = r->pages; while (p != NULL) { p->size = 0; p = p->next; @@ -187,7 +220,7 @@ static void nsvg__resetPool(struct NSVGrasterizer* r) r->curpage = r->pages; } -static unsigned char* nsvg__alloc(struct NSVGrasterizer* r, int size) +static unsigned char* nsvg__alloc(NSVGrasterizer* r, int size) { unsigned char* buf; if (size > NSVG__MEMPAGE_SIZE) return NULL; @@ -199,9 +232,64 @@ static unsigned char* nsvg__alloc(struct NSVGrasterizer* r, int size) return buf; } -static void nsvg__addEdge(struct NSVGrasterizer* r, float x0, float y0, float x1, float y1) +static int nsvg__ptEquals(float x1, float y1, float x2, float y2, float tol) +{ + float dx = x2 - x1; + float dy = y2 - y1; + return dx*dx + dy*dy < tol*tol; +} + +static void nsvg__addPathPoint(NSVGrasterizer* r, float x, float y, int flags) { - struct NSVGedge* e; + NSVGpoint* pt; + + if (r->npoints > 0) { + pt = &r->points[r->npoints-1]; + if (nsvg__ptEquals(pt->x,pt->y, x,y, r->distTol)) { + pt->flags = (unsigned char)(pt->flags | flags); + return; + } + } + + if (r->npoints+1 > r->cpoints) { + r->cpoints = r->cpoints > 0 ? r->cpoints * 2 : 64; + r->points = (NSVGpoint*)realloc(r->points, sizeof(NSVGpoint) * r->cpoints); + if (r->points == NULL) return; + } + + pt = &r->points[r->npoints]; + pt->x = x; + pt->y = y; + pt->flags = (unsigned char)flags; + r->npoints++; +} + +static void nsvg__appendPathPoint(NSVGrasterizer* r, NSVGpoint pt) +{ + if (r->npoints+1 > r->cpoints) { + r->cpoints = r->cpoints > 0 ? r->cpoints * 2 : 64; + r->points = (NSVGpoint*)realloc(r->points, sizeof(NSVGpoint) * r->cpoints); + if (r->points == NULL) return; + } + r->points[r->npoints] = pt; + r->npoints++; +} + +static void nsvg__duplicatePoints(NSVGrasterizer* r) +{ + if (r->npoints > r->cpoints2) { + r->cpoints2 = r->npoints; + r->points2 = (NSVGpoint*)realloc(r->points2, sizeof(NSVGpoint) * r->cpoints2); + if (r->points2 == NULL) return; + } + + memcpy(r->points2, r->points, sizeof(NSVGpoint) * r->npoints); + r->npoints2 = r->npoints; +} + +static void nsvg__addEdge(NSVGrasterizer* r, float x0, float y0, float x1, float y1) +{ + NSVGedge* e; // Skip horizontal edges if (y0 == y1) @@ -209,7 +297,7 @@ static void nsvg__addEdge(struct NSVGrasterizer* r, float x0, float y0, float x1 if (r->nedges+1 > r->cedges) { r->cedges = r->cedges > 0 ? r->cedges * 2 : 64; - r->edges = (struct NSVGedge*)realloc(r->edges, sizeof(struct NSVGedge) * r->cedges); + r->edges = (NSVGedge*)realloc(r->edges, sizeof(NSVGedge) * r->cedges); if (r->edges == NULL) return; } @@ -231,23 +319,29 @@ static void nsvg__addEdge(struct NSVGrasterizer* r, float x0, float y0, float x1 } } +static float nsvg__normalize(float *x, float* y) +{ + float d = sqrtf((*x)*(*x) + (*y)*(*y)); + if (d > 1e-6f) { + float id = 1.0f / d; + *x *= id; + *y *= id; + } + return d; +} + static float nsvg__absf(float x) { return x < 0 ? -x : x; } +static float nsvg__roundf(float x) { return (x >= 0) ? floorf(x + 0.5) : ceilf(x - 0.5); } -static void nsvg__flattenCubicBez(struct NSVGrasterizer* r, +static void nsvg__flattenCubicBez(NSVGrasterizer* r, float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4, - float tol, int level) + int level, int type) { float x12,y12,x23,y23,x34,y34,x123,y123,x234,y234,x1234,y1234; - - if (level > 10) return; + float dx,dy,d2,d3; - if (nsvg__absf(x1+x3-x2-x2) + nsvg__absf(y1+y3-y2-y2) + nsvg__absf(x2+x4-x3-x3) + nsvg__absf(y2+y4-y3-y3) < tol) { - nsvg__addEdge(r, r->px, r->py, x4, y4); - r->px = x4; - r->py = y4; - return; - } + if (level > 10) return; x12 = (x1+x2)*0.5f; y12 = (y1+y2)*0.5f; @@ -257,38 +351,503 @@ static void nsvg__flattenCubicBez(struct NSVGrasterizer* r, y34 = (y3+y4)*0.5f; x123 = (x12+x23)*0.5f; y123 = (y12+y23)*0.5f; + + dx = x4 - x1; + dy = y4 - y1; + d2 = nsvg__absf((x2 - x4) * dy - (y2 - y4) * dx); + d3 = nsvg__absf((x3 - x4) * dy - (y3 - y4) * dx); + + if ((d2 + d3)*(d2 + d3) < r->tessTol * (dx*dx + dy*dy)) { + nsvg__addPathPoint(r, x4, y4, type); + return; + } + x234 = (x23+x34)*0.5f; y234 = (y23+y34)*0.5f; x1234 = (x123+x234)*0.5f; y1234 = (y123+y234)*0.5f; - nsvg__flattenCubicBez(r, x1,y1, x12,y12, x123,y123, x1234,y1234, tol, level+1); - nsvg__flattenCubicBez(r, x1234,y1234, x234,y234, x34,y34, x4,y4, tol, level+1); + nsvg__flattenCubicBez(r, x1,y1, x12,y12, x123,y123, x1234,y1234, level+1, 0); + nsvg__flattenCubicBez(r, x1234,y1234, x234,y234, x34,y34, x4,y4, level+1, type); } -static void nsvg__flattenShape(struct NSVGrasterizer* r, struct NSVGshape* shape, float scale) +static void nsvg__flattenShape(NSVGrasterizer* r, NSVGshape* shape, float scale) { - struct NSVGpath* path; - float tol = 0.25f * 4.0f / scale; - int i; + int i, j; + NSVGpath* path; for (path = shape->paths; path != NULL; path = path->next) { + r->npoints = 0; // Flatten path - r->px = path->pts[0]; - r->py = path->pts[1]; + nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, 0); for (i = 0; i < path->npts-1; i += 3) { float* p = &path->pts[i*2]; - nsvg__flattenCubicBez(r, p[0],p[1], p[2],p[3], p[4],p[5], p[6],p[7], tol, 0); + nsvg__flattenCubicBez(r, p[0]*scale,p[1]*scale, p[2]*scale,p[3]*scale, p[4]*scale,p[5]*scale, p[6]*scale,p[7]*scale, 0, 0); } // Close path - nsvg__addEdge(r, r->px,r->py, path->pts[0],path->pts[1]); + nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, 0); + // Build edges + for (i = 0, j = r->npoints-1; i < r->npoints; j = i++) + nsvg__addEdge(r, r->points[j].x, r->points[j].y, r->points[i].x, r->points[i].y); + } +} + +enum NSVGpointFlags +{ + NSVG_PT_CORNER = 0x01, + NSVG_PT_BEVEL = 0x02, + NSVG_PT_LEFT = 0x04 +}; + +static void nsvg__initClosed(NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth) +{ + float w = lineWidth * 0.5f; + float dx = p1->x - p0->x; + float dy = p1->y - p0->y; + float len = nsvg__normalize(&dx, &dy); + float px = p0->x + dx*len*0.5f, py = p0->y + dy*len*0.5f; + float dlx = dy, dly = -dx; + float lx = px - dlx*w, ly = py - dly*w; + float rx = px + dlx*w, ry = py + dly*w; + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +static void nsvg__buttCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int connect) +{ + float w = lineWidth * 0.5f; + float px = p->x, py = p->y; + float dlx = dy, dly = -dx; + float lx = px - dlx*w, ly = py - dly*w; + float rx = px + dlx*w, ry = py + dly*w; + + nsvg__addEdge(r, lx, ly, rx, ry); + + if (connect) { + nsvg__addEdge(r, left->x, left->y, lx, ly); + nsvg__addEdge(r, rx, ry, right->x, right->y); + } + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +static void nsvg__squareCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int connect) +{ + float w = lineWidth * 0.5f; + float px = p->x - dx*w, py = p->y - dy*w; + float dlx = dy, dly = -dx; + float lx = px - dlx*w, ly = py - dly*w; + float rx = px + dlx*w, ry = py + dly*w; + + nsvg__addEdge(r, lx, ly, rx, ry); + + if (connect) { + nsvg__addEdge(r, left->x, left->y, lx, ly); + nsvg__addEdge(r, rx, ry, right->x, right->y); + } + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +#ifndef NSVG_PI +#define NSVG_PI (3.14159265358979323846264338327f) +#endif + +static void nsvg__roundCap(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p, float dx, float dy, float lineWidth, int ncap, int connect) +{ + int i; + float w = lineWidth * 0.5f; + float px = p->x, py = p->y; + float dlx = dy, dly = -dx; + float lx = 0, ly = 0, rx = 0, ry = 0, prevx = 0, prevy = 0; + + for (i = 0; i < ncap; i++) { + float a = (float)i/(float)(ncap-1)*NSVG_PI; + float ax = cosf(a) * w, ay = sinf(a) * w; + float x = px - dlx*ax - dx*ay; + float y = py - dly*ax - dy*ay; + + if (i > 0) + nsvg__addEdge(r, prevx, prevy, x, y); + + prevx = x; + prevy = y; + + if (i == 0) { + lx = x; ly = y; + } else if (i == ncap-1) { + rx = x; ry = y; + } + } + + if (connect) { + nsvg__addEdge(r, left->x, left->y, lx, ly); + nsvg__addEdge(r, rx, ry, right->x, right->y); + } + + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +static void nsvg__bevelJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth) +{ + float w = lineWidth * 0.5f; + float dlx0 = p0->dy, dly0 = -p0->dx; + float dlx1 = p1->dy, dly1 = -p1->dx; + float lx0 = p1->x - (dlx0 * w), ly0 = p1->y - (dly0 * w); + float rx0 = p1->x + (dlx0 * w), ry0 = p1->y + (dly0 * w); + float lx1 = p1->x - (dlx1 * w), ly1 = p1->y - (dly1 * w); + float rx1 = p1->x + (dlx1 * w), ry1 = p1->y + (dly1 * w); + + nsvg__addEdge(r, lx0, ly0, left->x, left->y); + nsvg__addEdge(r, lx1, ly1, lx0, ly0); + + nsvg__addEdge(r, right->x, right->y, rx0, ry0); + nsvg__addEdge(r, rx0, ry0, rx1, ry1); + + left->x = lx1; left->y = ly1; + right->x = rx1; right->y = ry1; +} + +static void nsvg__miterJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth) +{ + float w = lineWidth * 0.5f; + float dlx0 = p0->dy, dly0 = -p0->dx; + float dlx1 = p1->dy, dly1 = -p1->dx; + float lx0, rx0, lx1, rx1; + float ly0, ry0, ly1, ry1; + + if (p1->flags & NSVG_PT_LEFT) { + lx0 = lx1 = p1->x - p1->dmx * w; + ly0 = ly1 = p1->y - p1->dmy * w; + nsvg__addEdge(r, lx1, ly1, left->x, left->y); + + rx0 = p1->x + (dlx0 * w); + ry0 = p1->y + (dly0 * w); + rx1 = p1->x + (dlx1 * w); + ry1 = p1->y + (dly1 * w); + nsvg__addEdge(r, right->x, right->y, rx0, ry0); + nsvg__addEdge(r, rx0, ry0, rx1, ry1); + } else { + lx0 = p1->x - (dlx0 * w); + ly0 = p1->y - (dly0 * w); + lx1 = p1->x - (dlx1 * w); + ly1 = p1->y - (dly1 * w); + nsvg__addEdge(r, lx0, ly0, left->x, left->y); + nsvg__addEdge(r, lx1, ly1, lx0, ly0); + + rx0 = rx1 = p1->x + p1->dmx * w; + ry0 = ry1 = p1->y + p1->dmy * w; + nsvg__addEdge(r, right->x, right->y, rx1, ry1); + } + + left->x = lx1; left->y = ly1; + right->x = rx1; right->y = ry1; +} + +static void nsvg__roundJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p0, NSVGpoint* p1, float lineWidth, int ncap) +{ + int i, n; + float w = lineWidth * 0.5f; + float dlx0 = p0->dy, dly0 = -p0->dx; + float dlx1 = p1->dy, dly1 = -p1->dx; + float a0 = atan2f(dly0, dlx0); + float a1 = atan2f(dly1, dlx1); + float da = a1 - a0; + float lx, ly, rx, ry; + + if (da < NSVG_PI) da += NSVG_PI*2; + if (da > NSVG_PI) da -= NSVG_PI*2; + + n = (int)ceilf((nsvg__absf(da) / NSVG_PI) * (float)ncap); + if (n < 2) n = 2; + if (n > ncap) n = ncap; + + lx = left->x; + ly = left->y; + rx = right->x; + ry = right->y; + + for (i = 0; i < n; i++) { + float u = (float)i/(float)(n-1); + float a = a0 + u*da; + float ax = cosf(a) * w, ay = sinf(a) * w; + float lx1 = p1->x - ax, ly1 = p1->y - ay; + float rx1 = p1->x + ax, ry1 = p1->y + ay; + + nsvg__addEdge(r, lx1, ly1, lx, ly); + nsvg__addEdge(r, rx, ry, rx1, ry1); + + lx = lx1; ly = ly1; + rx = rx1; ry = ry1; + } + + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +static void nsvg__straightJoin(NSVGrasterizer* r, NSVGpoint* left, NSVGpoint* right, NSVGpoint* p1, float lineWidth) +{ + float w = lineWidth * 0.5f; + float lx = p1->x - (p1->dmx * w), ly = p1->y - (p1->dmy * w); + float rx = p1->x + (p1->dmx * w), ry = p1->y + (p1->dmy * w); + + nsvg__addEdge(r, lx, ly, left->x, left->y); + nsvg__addEdge(r, right->x, right->y, rx, ry); + + left->x = lx; left->y = ly; + right->x = rx; right->y = ry; +} + +static int nsvg__curveDivs(float r, float arc, float tol) +{ + float da = acosf(r / (r + tol)) * 2.0f; + int divs = (int)ceilf(arc / da); + if (divs < 2) divs = 2; + return divs; +} + +static void nsvg__expandStroke(NSVGrasterizer* r, NSVGpoint* points, int npoints, int closed, int lineJoin, int lineCap, float lineWidth) +{ + int ncap = nsvg__curveDivs(lineWidth*0.5f, NSVG_PI, r->tessTol); // Calculate divisions per half circle. + NSVGpoint left = {0,0,0,0,0,0,0,0}, right = {0,0,0,0,0,0,0,0}, firstLeft = {0,0,0,0,0,0,0,0}, firstRight = {0,0,0,0,0,0,0,0}; + NSVGpoint* p0, *p1; + int j, s, e; + + // Build stroke edges + if (closed) { + // Looping + p0 = &points[npoints-1]; + p1 = &points[0]; + s = 0; + e = npoints; + } else { + // Add cap + p0 = &points[0]; + p1 = &points[1]; + s = 1; + e = npoints-1; + } + + if (closed) { + nsvg__initClosed(&left, &right, p0, p1, lineWidth); + firstLeft = left; + firstRight = right; + } else { + // Add cap + float dx = p1->x - p0->x; + float dy = p1->y - p0->y; + nsvg__normalize(&dx, &dy); + if (lineCap == NSVG_CAP_BUTT) + nsvg__buttCap(r, &left, &right, p0, dx, dy, lineWidth, 0); + else if (lineCap == NSVG_CAP_SQUARE) + nsvg__squareCap(r, &left, &right, p0, dx, dy, lineWidth, 0); + else if (lineCap == NSVG_CAP_ROUND) + nsvg__roundCap(r, &left, &right, p0, dx, dy, lineWidth, ncap, 0); + } + + for (j = s; j < e; ++j) { + if (p1->flags & NSVG_PT_CORNER) { + if (lineJoin == NSVG_JOIN_ROUND) + nsvg__roundJoin(r, &left, &right, p0, p1, lineWidth, ncap); + else if (lineJoin == NSVG_JOIN_BEVEL || (p1->flags & NSVG_PT_BEVEL)) + nsvg__bevelJoin(r, &left, &right, p0, p1, lineWidth); + else + nsvg__miterJoin(r, &left, &right, p0, p1, lineWidth); + } else { + nsvg__straightJoin(r, &left, &right, p1, lineWidth); + } + p0 = p1++; + } + + if (closed) { + // Loop it + nsvg__addEdge(r, firstLeft.x, firstLeft.y, left.x, left.y); + nsvg__addEdge(r, right.x, right.y, firstRight.x, firstRight.y); + } else { + // Add cap + float dx = p1->x - p0->x; + float dy = p1->y - p0->y; + nsvg__normalize(&dx, &dy); + if (lineCap == NSVG_CAP_BUTT) + nsvg__buttCap(r, &right, &left, p1, -dx, -dy, lineWidth, 1); + else if (lineCap == NSVG_CAP_SQUARE) + nsvg__squareCap(r, &right, &left, p1, -dx, -dy, lineWidth, 1); + else if (lineCap == NSVG_CAP_ROUND) + nsvg__roundCap(r, &right, &left, p1, -dx, -dy, lineWidth, ncap, 1); + } +} + +static void nsvg__prepareStroke(NSVGrasterizer* r, float miterLimit, int lineJoin) +{ + int i, j; + NSVGpoint* p0, *p1; + + p0 = &r->points[r->npoints-1]; + p1 = &r->points[0]; + for (i = 0; i < r->npoints; i++) { + // Calculate segment direction and length + p0->dx = p1->x - p0->x; + p0->dy = p1->y - p0->y; + p0->len = nsvg__normalize(&p0->dx, &p0->dy); + // Advance + p0 = p1++; + } + + // calculate joins + p0 = &r->points[r->npoints-1]; + p1 = &r->points[0]; + for (j = 0; j < r->npoints; j++) { + float dlx0, dly0, dlx1, dly1, dmr2, cross; + dlx0 = p0->dy; + dly0 = -p0->dx; + dlx1 = p1->dy; + dly1 = -p1->dx; + // Calculate extrusions + p1->dmx = (dlx0 + dlx1) * 0.5f; + p1->dmy = (dly0 + dly1) * 0.5f; + dmr2 = p1->dmx*p1->dmx + p1->dmy*p1->dmy; + if (dmr2 > 0.000001f) { + float s2 = 1.0f / dmr2; + if (s2 > 600.0f) { + s2 = 600.0f; + } + p1->dmx *= s2; + p1->dmy *= s2; + } + + // Clear flags, but keep the corner. + p1->flags = (p1->flags & NSVG_PT_CORNER) ? NSVG_PT_CORNER : 0; + + // Keep track of left turns. + cross = p1->dx * p0->dy - p0->dx * p1->dy; + if (cross > 0.0f) + p1->flags |= NSVG_PT_LEFT; + + // Check to see if the corner needs to be beveled. + if (p1->flags & NSVG_PT_CORNER) { + if ((dmr2 * miterLimit*miterLimit) < 1.0f || lineJoin == NSVG_JOIN_BEVEL || lineJoin == NSVG_JOIN_ROUND) { + p1->flags |= NSVG_PT_BEVEL; + } + } + + p0 = p1++; + } +} + +static void nsvg__flattenShapeStroke(NSVGrasterizer* r, NSVGshape* shape, float scale) +{ + int i, j, closed; + NSVGpath* path; + NSVGpoint* p0, *p1; + float miterLimit = shape->miterLimit; + int lineJoin = shape->strokeLineJoin; + int lineCap = shape->strokeLineCap; + float lineWidth = shape->strokeWidth * scale; + + for (path = shape->paths; path != NULL; path = path->next) { + // Flatten path + r->npoints = 0; + nsvg__addPathPoint(r, path->pts[0]*scale, path->pts[1]*scale, NSVG_PT_CORNER); + for (i = 0; i < path->npts-1; i += 3) { + float* p = &path->pts[i*2]; + nsvg__flattenCubicBez(r, p[0]*scale,p[1]*scale, p[2]*scale,p[3]*scale, p[4]*scale,p[5]*scale, p[6]*scale,p[7]*scale, 0, NSVG_PT_CORNER); + } + if (r->npoints < 2) + continue; + + closed = path->closed; + + // If the first and last points are the same, remove the last, mark as closed path. + p0 = &r->points[r->npoints-1]; + p1 = &r->points[0]; + if (nsvg__ptEquals(p0->x,p0->y, p1->x,p1->y, r->distTol)) { + r->npoints--; + p0 = &r->points[r->npoints-1]; + closed = 1; + } + + if (shape->strokeDashCount > 0) { + int idash = 0, dashState = 1; + float totalDist = 0, dashLen, allDashLen, dashOffset; + NSVGpoint cur; + + if (closed) + nsvg__appendPathPoint(r, r->points[0]); + + // Duplicate points -> points2. + nsvg__duplicatePoints(r); + + r->npoints = 0; + cur = r->points2[0]; + nsvg__appendPathPoint(r, cur); + + // Figure out dash offset. + allDashLen = 0; + for (j = 0; j < shape->strokeDashCount; j++) + allDashLen += shape->strokeDashArray[j]; + if (shape->strokeDashCount & 1) + allDashLen *= 2.0f; + // Find location inside pattern + dashOffset = fmodf(shape->strokeDashOffset, allDashLen); + if (dashOffset < 0.0f) + dashOffset += allDashLen; + + while (dashOffset > shape->strokeDashArray[idash]) { + dashOffset -= shape->strokeDashArray[idash]; + idash = (idash + 1) % shape->strokeDashCount; + } + dashLen = (shape->strokeDashArray[idash] - dashOffset) * scale; + + for (j = 1; j < r->npoints2; ) { + float dx = r->points2[j].x - cur.x; + float dy = r->points2[j].y - cur.y; + float dist = sqrtf(dx*dx + dy*dy); + + if ((totalDist + dist) > dashLen) { + // Calculate intermediate point + float d = (dashLen - totalDist) / dist; + float x = cur.x + dx * d; + float y = cur.y + dy * d; + nsvg__addPathPoint(r, x, y, NSVG_PT_CORNER); + + // Stroke + if (r->npoints > 1 && dashState) { + nsvg__prepareStroke(r, miterLimit, lineJoin); + nsvg__expandStroke(r, r->points, r->npoints, 0, lineJoin, lineCap, lineWidth); + } + // Advance dash pattern + dashState = !dashState; + idash = (idash+1) % shape->strokeDashCount; + dashLen = shape->strokeDashArray[idash] * scale; + // Restart + cur.x = x; + cur.y = y; + cur.flags = NSVG_PT_CORNER; + totalDist = 0.0f; + r->npoints = 0; + nsvg__appendPathPoint(r, cur); + } else { + totalDist += dist; + cur = r->points2[j]; + nsvg__appendPathPoint(r, cur); + j++; + } + } + // Stroke any leftover path + if (r->npoints > 1 && dashState) + nsvg__expandStroke(r, r->points, r->npoints, 0, lineJoin, lineCap, lineWidth); + } else { + nsvg__prepareStroke(r, miterLimit, lineJoin); + nsvg__expandStroke(r, r->points, r->npoints, closed, lineJoin, lineCap, lineWidth); + } } } static int nsvg__cmpEdge(const void *p, const void *q) { - struct NSVGedge* a = (struct NSVGedge*)p; - struct NSVGedge* b = (struct NSVGedge*)q; + const NSVGedge* a = (const NSVGedge*)p; + const NSVGedge* b = (const NSVGedge*)q; if (a->y0 < b->y0) return -1; if (a->y0 > b->y0) return 1; @@ -296,9 +855,9 @@ static int nsvg__cmpEdge(const void *p, const void *q) } -static struct NSVGactiveEdge* nsvg__addActive(struct NSVGrasterizer* r, struct NSVGedge* e, float startPoint) +static NSVGactiveEdge* nsvg__addActive(NSVGrasterizer* r, NSVGedge* e, float startPoint) { - struct NSVGactiveEdge* z; + NSVGactiveEdge* z; if (r->freelist != NULL) { // Restore from freelist. @@ -306,7 +865,7 @@ static struct NSVGactiveEdge* nsvg__addActive(struct NSVGrasterizer* r, struct N r->freelist = z->next; } else { // Alloc new edge. - z = (struct NSVGactiveEdge*)nsvg__alloc(r, sizeof(struct NSVGactiveEdge)); + z = (NSVGactiveEdge*)nsvg__alloc(r, sizeof(NSVGactiveEdge)); if (z == NULL) return NULL; } @@ -314,10 +873,10 @@ static struct NSVGactiveEdge* nsvg__addActive(struct NSVGrasterizer* r, struct N // STBTT_assert(e->y0 <= start_point); // round dx down to avoid going too far if (dxdy < 0) - z->dx = -floorf(NSVG__FIX * -dxdy); + z->dx = (int)(-nsvg__roundf(NSVG__FIX * -dxdy)); else - z->dx = floorf(NSVG__FIX * dxdy); - z->x = floorf(NSVG__FIX * (e->x0 + dxdy * (startPoint - e->y0))); + z->dx = (int)nsvg__roundf(NSVG__FIX * dxdy); + z->x = (int)nsvg__roundf(NSVG__FIX * (e->x0 + dxdy * (startPoint - e->y0))); // z->x -= off_x * FIX; z->ey = e->y1; z->next = 0; @@ -326,54 +885,73 @@ static struct NSVGactiveEdge* nsvg__addActive(struct NSVGrasterizer* r, struct N return z; } -static void nsvg__freeActive(struct NSVGrasterizer* r, struct NSVGactiveEdge* z) +static void nsvg__freeActive(NSVGrasterizer* r, NSVGactiveEdge* z) { z->next = r->freelist; r->freelist = z; } +static void nsvg__fillScanline(unsigned char* scanline, int len, int x0, int x1, int maxWeight, int* xmin, int* xmax) +{ + int i = x0 >> NSVG__FIXSHIFT; + int j = x1 >> NSVG__FIXSHIFT; + if (i < *xmin) *xmin = i; + if (j > *xmax) *xmax = j; + if (i < len && j >= 0) { + if (i == j) { + // x0,x1 are the same pixel, so compute combined coverage + scanline[i] = (unsigned char)(scanline[i] + ((x1 - x0) * maxWeight >> NSVG__FIXSHIFT)); + } else { + if (i >= 0) // add antialiasing for x0 + scanline[i] = (unsigned char)(scanline[i] + (((NSVG__FIX - (x0 & NSVG__FIXMASK)) * maxWeight) >> NSVG__FIXSHIFT)); + else + i = -1; // clip + + if (j < len) // add antialiasing for x1 + scanline[j] = (unsigned char)(scanline[j] + (((x1 & NSVG__FIXMASK) * maxWeight) >> NSVG__FIXSHIFT)); + else + j = len; // clip + + for (++i; i < j; ++i) // fill pixels between x0 and x1 + scanline[i] = (unsigned char)(scanline[i] + maxWeight); + } + } +} + // note: this routine clips fills that extend off the edges... ideally this // wouldn't happen, but it could happen if the truetype glyph bounding boxes // are wrong, or if the user supplies a too-small bitmap -static void nsvg__fillActiveEdges(unsigned char* scanline, int len, struct NSVGactiveEdge* e, int maxWeight, int* xmin, int* xmax) +static void nsvg__fillActiveEdges(unsigned char* scanline, int len, NSVGactiveEdge* e, int maxWeight, int* xmin, int* xmax, char fillRule) { // non-zero winding fill int x0 = 0, w = 0; - while (e != NULL) { - if (w == 0) { - // if we're currently at zero, we need to record the edge start point - x0 = e->x; w += e->dir; - } else { - int x1 = e->x; w += e->dir; - // if we went to zero, we need to draw + if (fillRule == NSVG_FILLRULE_NONZERO) { + // Non-zero + while (e != NULL) { if (w == 0) { - int i = x0 >> NSVG__FIXSHIFT; - int j = x1 >> NSVG__FIXSHIFT; - if (i < *xmin) *xmin = i; - if (j > *xmax) *xmax = j; - if (i < len && j >= 0) { - if (i == j) { - // x0,x1 are the same pixel, so compute combined coverage - scanline[i] += (unsigned char)((x1 - x0) * maxWeight >> NSVG__FIXSHIFT); - } else { - if (i >= 0) // add antialiasing for x0 - scanline[i] += (unsigned char)(((NSVG__FIX - (x0 & NSVG__FIXMASK)) * maxWeight) >> NSVG__FIXSHIFT); - else - i = -1; // clip - - if (j < len) // add antialiasing for x1 - scanline[j] += (unsigned char)(((x1 & NSVG__FIXMASK) * maxWeight) >> NSVG__FIXSHIFT); - else - j = len; // clip - - for (++i; i < j; ++i) // fill pixels between x0 and x1 - scanline[i] += (unsigned char)maxWeight; - } - } + // if we're currently at zero, we need to record the edge start point + x0 = e->x; w += e->dir; + } else { + int x1 = e->x; w += e->dir; + // if we went to zero, we need to draw + if (w == 0) + nsvg__fillScanline(scanline, len, x0, x1, maxWeight, xmin, xmax); } + e = e->next; + } + } else if (fillRule == NSVG_FILLRULE_EVENODD) { + // Even-odd + while (e != NULL) { + if (w == 0) { + // if we're currently at zero, we need to record the edge start point + x0 = e->x; w = 1; + } else { + int x1 = e->x; w = 0; + nsvg__fillScanline(scanline, len, x0, x1, maxWeight, xmin, xmax); + } + e = e->next; } - e = e->next; } } @@ -381,31 +959,36 @@ static float nsvg__clampf(float a, float mn, float mx) { return a < mn ? mn : (a static unsigned int nsvg__RGBA(unsigned char r, unsigned char g, unsigned char b, unsigned char a) { - return (r) | (g << 8) | (b << 16) | (a << 24); + return ((unsigned int)r) | ((unsigned int)g << 8) | ((unsigned int)b << 16) | ((unsigned int)a << 24); } static unsigned int nsvg__lerpRGBA(unsigned int c0, unsigned int c1, float u) { - int iu = (float)(nsvg__clampf(u, 0.0f, 1.0f) * 256.0f); + int iu = (int)(nsvg__clampf(u, 0.0f, 1.0f) * 256.0f); int r = (((c0) & 0xff)*(256-iu) + (((c1) & 0xff)*iu)) >> 8; int g = (((c0>>8) & 0xff)*(256-iu) + (((c1>>8) & 0xff)*iu)) >> 8; int b = (((c0>>16) & 0xff)*(256-iu) + (((c1>>16) & 0xff)*iu)) >> 8; int a = (((c0>>24) & 0xff)*(256-iu) + (((c1>>24) & 0xff)*iu)) >> 8; - return nsvg__RGBA(r,g,b,a); + return nsvg__RGBA((unsigned char)r, (unsigned char)g, (unsigned char)b, (unsigned char)a); } static unsigned int nsvg__applyOpacity(unsigned int c, float u) { - int iu = (float)(nsvg__clampf(u, 0.0f, 1.0f) * 256.0f); + int iu = (int)(nsvg__clampf(u, 0.0f, 1.0f) * 256.0f); int r = (c) & 0xff; int g = (c>>8) & 0xff; int b = (c>>16) & 0xff; int a = (((c>>24) & 0xff)*iu) >> 8; - return nsvg__RGBA(r,g,b,a); + return nsvg__RGBA((unsigned char)r, (unsigned char)g, (unsigned char)b, (unsigned char)a); +} + +static inline int nsvg__div255(int x) +{ + return ((x+1) * 257) >> 16; } static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* cover, int x, int y, - float tx, float ty, float scale, struct NSVGcachedPaint* cache) + float tx, float ty, float scale, NSVGcachedPaint* cache) { if (cache->type == NSVG_PAINT_COLOR) { @@ -417,18 +1000,18 @@ static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* co for (i = 0; i < count; i++) { int r,g,b; - int a = ((int)cover[0] * ca) >> 8; + int a = nsvg__div255((int)cover[0] * ca); int ia = 255 - a; // Premultiply - r = (cr * a) >> 8; - g = (cg * a) >> 8; - b = (cb * a) >> 8; + r = nsvg__div255(cr * a); + g = nsvg__div255(cg * a); + b = nsvg__div255(cb * a); // Blend over - r += ((ia * (int)dst[0]) >> 8); - g += ((ia * (int)dst[1]) >> 8); - b += ((ia * (int)dst[2]) >> 8); - a += ((ia * (int)dst[3]) >> 8); + r += nsvg__div255(ia * (int)dst[0]); + g += nsvg__div255(ia * (int)dst[1]); + b += nsvg__div255(ia * (int)dst[2]); + a += nsvg__div255(ia * (int)dst[3]); dst[0] = (unsigned char)r; dst[1] = (unsigned char)g; @@ -446,8 +1029,8 @@ static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* co int i, cr, cg, cb, ca; unsigned int c; - fx = (x - tx) / scale; - fy = (y - ty) / scale; + fx = ((float)x - tx) / scale; + fy = ((float)y - ty) / scale; dx = 1.0f / scale; for (i = 0; i < count; i++) { @@ -459,19 +1042,19 @@ static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* co cb = (c >> 16) & 0xff; ca = (c >> 24) & 0xff; - a = ((int)cover[0] * ca) >> 8; + a = nsvg__div255((int)cover[0] * ca); ia = 255 - a; // Premultiply - r = (cr * a) >> 8; - g = (cg * a) >> 8; - b = (cb * a) >> 8; + r = nsvg__div255(cr * a); + g = nsvg__div255(cg * a); + b = nsvg__div255(cb * a); // Blend over - r += ((ia * (int)dst[0]) >> 8); - g += ((ia * (int)dst[1]) >> 8); - b += ((ia * (int)dst[2]) >> 8); - a += ((ia * (int)dst[3]) >> 8); + r += nsvg__div255(ia * (int)dst[0]); + g += nsvg__div255(ia * (int)dst[1]); + b += nsvg__div255(ia * (int)dst[2]); + a += nsvg__div255(ia * (int)dst[3]); dst[0] = (unsigned char)r; dst[1] = (unsigned char)g; @@ -491,8 +1074,8 @@ static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* co int i, cr, cg, cb, ca; unsigned int c; - fx = (x - tx) / scale; - fy = (y - ty) / scale; + fx = ((float)x - tx) / scale; + fy = ((float)y - ty) / scale; dx = 1.0f / scale; for (i = 0; i < count; i++) { @@ -506,19 +1089,19 @@ static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* co cb = (c >> 16) & 0xff; ca = (c >> 24) & 0xff; - a = ((int)cover[0] * ca) >> 8; + a = nsvg__div255((int)cover[0] * ca); ia = 255 - a; // Premultiply - r = (cr * a) >> 8; - g = (cg * a) >> 8; - b = (cb * a) >> 8; + r = nsvg__div255(cr * a); + g = nsvg__div255(cg * a); + b = nsvg__div255(cb * a); // Blend over - r += ((ia * (int)dst[0]) >> 8); - g += ((ia * (int)dst[1]) >> 8); - b += ((ia * (int)dst[2]) >> 8); - a += ((ia * (int)dst[3]) >> 8); + r += nsvg__div255(ia * (int)dst[0]); + g += nsvg__div255(ia * (int)dst[1]); + b += nsvg__div255(ia * (int)dst[2]); + a += nsvg__div255(ia * (int)dst[3]); dst[0] = (unsigned char)r; dst[1] = (unsigned char)g; @@ -532,9 +1115,9 @@ static void nsvg__scanlineSolid(unsigned char* dst, int count, unsigned char* co } } -static void nsvg__rasterizeSortedEdges(struct NSVGrasterizer *r, float tx, float ty, float scale, struct NSVGcachedPaint* cache) +static void nsvg__rasterizeSortedEdges(NSVGrasterizer *r, float tx, float ty, float scale, NSVGcachedPaint* cache, char fillRule) { - struct NSVGactiveEdge *active = NULL; + NSVGactiveEdge *active = NULL; int y, s; int e = 0; int maxWeight = (255 / NSVG__SUBSAMPLES); // weight per vertical scanline @@ -546,13 +1129,13 @@ static void nsvg__rasterizeSortedEdges(struct NSVGrasterizer *r, float tx, float xmax = 0; for (s = 0; s < NSVG__SUBSAMPLES; ++s) { // find center of pixel for this scanline - float scany = y*NSVG__SUBSAMPLES + s + 0.5f; - struct NSVGactiveEdge **step = &active; + float scany = (float)(y*NSVG__SUBSAMPLES + s) + 0.5f; + NSVGactiveEdge **step = &active; // update all active edges; // remove all active edges that terminate before the center of this scanline while (*step) { - struct NSVGactiveEdge *z = *step; + NSVGactiveEdge *z = *step; if (z->ey <= scany) { *step = z->next; // delete from list // NSVG__assert(z->valid); @@ -569,8 +1152,8 @@ static void nsvg__rasterizeSortedEdges(struct NSVGrasterizer *r, float tx, float step = &active; while (*step && (*step)->next) { if ((*step)->x > (*step)->next->x) { - struct NSVGactiveEdge* t = *step; - struct NSVGactiveEdge* q = t->next; + NSVGactiveEdge* t = *step; + NSVGactiveEdge* q = t->next; t->next = q->next; q->next = t; *step = q; @@ -584,7 +1167,7 @@ static void nsvg__rasterizeSortedEdges(struct NSVGrasterizer *r, float tx, float // insert all edges that start before the center of this scanline -- omit ones that also end on this scanline while (e < r->nedges && r->edges[e].y0 <= scany) { if (r->edges[e].y1 > scany) { - struct NSVGactiveEdge* z = nsvg__addActive(r, &r->edges[e], scany); + NSVGactiveEdge* z = nsvg__addActive(r, &r->edges[e], scany); if (z == NULL) break; // find insertion point if (active == NULL) { @@ -595,7 +1178,7 @@ static void nsvg__rasterizeSortedEdges(struct NSVGrasterizer *r, float tx, float active = z; } else { // find thing to insert AFTER - struct NSVGactiveEdge* p = active; + NSVGactiveEdge* p = active; while (p->next && p->next->x < z->x) p = p->next; // at this point, p->next->x is NOT < z->x @@ -608,13 +1191,13 @@ static void nsvg__rasterizeSortedEdges(struct NSVGrasterizer *r, float tx, float // now process all active edges in non-zero fashion if (active != NULL) - nsvg__fillActiveEdges(r->scanline, r->width, active, maxWeight, &xmin, &xmax); + nsvg__fillActiveEdges(r->scanline, r->width, active, maxWeight, &xmin, &xmax, fillRule); } // Blit if (xmin < 0) xmin = 0; if (xmax > r->width-1) xmax = r->width-1; if (xmin <= xmax) { - nsvg__scanlineSolid(&r->bitmap[y * r->stride] + xmin*4, xmax-xmin+1, &r->scanline[xmin], xmin, y, tx,ty,scale,cache); + nsvg__scanlineSolid(&r->bitmap[y * r->stride] + xmin*4, xmax-xmin+1, &r->scanline[xmin], xmin, y, tx,ty, scale, cache); } } @@ -630,9 +1213,9 @@ static void nsvg__unpremultiplyAlpha(unsigned char* image, int w, int h, int str for (x = 0; x < w; x++) { int r = row[0], g = row[1], b = row[2], a = row[3]; if (a != 0) { - row[0] = (int)(r*255/a); - row[1] = (int)(g*255/a); - row[2] = (int)(b*255/a); + row[0] = (unsigned char)(r*255/a); + row[1] = (unsigned char)(g*255/a); + row[2] = (unsigned char)(b*255/a); } row += 4; } @@ -669,9 +1252,9 @@ static void nsvg__unpremultiplyAlpha(unsigned char* image, int w, int h, int str n++; } if (n > 0) { - row[0] = r/n; - row[1] = g/n; - row[2] = b/n; + row[0] = (unsigned char)(r/n); + row[1] = (unsigned char)(g/n); + row[2] = (unsigned char)(b/n); } } row += 4; @@ -680,10 +1263,10 @@ static void nsvg__unpremultiplyAlpha(unsigned char* image, int w, int h, int str } -static void nsvg__initPaint(struct NSVGcachedPaint* cache, struct NSVGpaint* paint, float opacity) +static void nsvg__initPaint(NSVGcachedPaint* cache, NSVGpaint* paint, float opacity) { int i, j; - struct NSVGgradient* grad; + NSVGgradient* grad; cache->type = paint->type; @@ -700,19 +1283,20 @@ static void nsvg__initPaint(struct NSVGcachedPaint* cache, struct NSVGpaint* pai if (grad->nstops == 0) { for (i = 0; i < 256; i++) cache->colors[i] = 0; - } if (grad->nstops == 1) { + } else if (grad->nstops == 1) { + unsigned int color = nsvg__applyOpacity(grad->stops[0].color, opacity); for (i = 0; i < 256; i++) - cache->colors[i] = nsvg__applyOpacity(grad->stops[i].color, opacity); + cache->colors[i] = color; } else { - unsigned int ca, cb; + unsigned int ca, cb = 0; float ua, ub, du, u; int ia, ib, count; ca = nsvg__applyOpacity(grad->stops[0].color, opacity); ua = nsvg__clampf(grad->stops[0].offset, 0, 1); ub = nsvg__clampf(grad->stops[grad->nstops-1].offset, ua, 1); - ia = ua * 255.0f; - ib = ub * 255.0f; + ia = (int)(ua * 255.0f); + ib = (int)(ub * 255.0f); for (i = 0; i < ia; i++) { cache->colors[i] = ca; } @@ -722,8 +1306,8 @@ static void nsvg__initPaint(struct NSVGcachedPaint* cache, struct NSVGpaint* pai cb = nsvg__applyOpacity(grad->stops[i+1].color, opacity); ua = nsvg__clampf(grad->stops[i].offset, 0, 1); ub = nsvg__clampf(grad->stops[i+1].offset, 0, 1); - ia = ua * 255.0f; - ib = ub * 255.0f; + ia = (int)(ua * 255.0f); + ib = (int)(ub * 255.0f); count = ib - ia; if (count <= 0) continue; u = 0; @@ -740,15 +1324,57 @@ static void nsvg__initPaint(struct NSVGcachedPaint* cache, struct NSVGpaint* pai } -void nsvgRasterize(struct NSVGrasterizer* r, - struct NSVGimage* image, float tx, float ty, float scale, +/* +static void dumpEdges(NSVGrasterizer* r, const char* name) +{ + float xmin = 0, xmax = 0, ymin = 0, ymax = 0; + NSVGedge *e = NULL; + int i; + if (r->nedges == 0) return; + FILE* fp = fopen(name, "w"); + if (fp == NULL) return; + + xmin = xmax = r->edges[0].x0; + ymin = ymax = r->edges[0].y0; + for (i = 0; i < r->nedges; i++) { + e = &r->edges[i]; + xmin = nsvg__minf(xmin, e->x0); + xmin = nsvg__minf(xmin, e->x1); + xmax = nsvg__maxf(xmax, e->x0); + xmax = nsvg__maxf(xmax, e->x1); + ymin = nsvg__minf(ymin, e->y0); + ymin = nsvg__minf(ymin, e->y1); + ymax = nsvg__maxf(ymax, e->y0); + ymax = nsvg__maxf(ymax, e->y1); + } + + fprintf(fp, "", xmin, ymin, (xmax - xmin), (ymax - ymin)); + + for (i = 0; i < r->nedges; i++) { + e = &r->edges[i]; + fprintf(fp ,"", e->x0,e->y0, e->x1,e->y1); + } + + for (i = 0; i < r->npoints; i++) { + if (i+1 < r->npoints) + fprintf(fp ,"", r->points[i].x, r->points[i].y, r->points[i+1].x, r->points[i+1].y); + fprintf(fp ,"", r->points[i].x, r->points[i].y, r->points[i].flags == 0 ? "#f00" : "#0f0"); + } + + fprintf(fp, ""); + fclose(fp); +} +*/ + +void nsvgRasterize(NSVGrasterizer* r, + NSVGimage* image, float tx, float ty, float scale, unsigned char* dst, int w, int h, int stride) { - struct NSVGshape *shape = NULL; - struct NSVGedge *e = NULL; - struct NSVGcachedPaint cache; + NSVGshape *shape = NULL; + NSVGedge *e = NULL; + NSVGcachedPaint cache; int i; - + r->bitmap = dst; r->width = w; r->height = h; @@ -764,32 +1390,61 @@ void nsvgRasterize(struct NSVGrasterizer* r, memset(&dst[i*stride], 0, w*4); for (shape = image->shapes; shape != NULL; shape = shape->next) { - - if (shape->fill.type == NSVG_PAINT_NONE) + if (!(shape->flags & NSVG_FLAGS_VISIBLE)) continue; - nsvg__resetPool(r); - r->freelist = NULL; - r->nedges = 0; + if (shape->fill.type != NSVG_PAINT_NONE) { + nsvg__resetPool(r); + r->freelist = NULL; + r->nedges = 0; + + nsvg__flattenShape(r, shape, scale); + + // Scale and translate edges + for (i = 0; i < r->nedges; i++) { + e = &r->edges[i]; + e->x0 = tx + e->x0; + e->y0 = (ty + e->y0) * NSVG__SUBSAMPLES; + e->x1 = tx + e->x1; + e->y1 = (ty + e->y1) * NSVG__SUBSAMPLES; + } + + // Rasterize edges + if (r->nedges != 0) + qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge); - nsvg__flattenShape(r, shape, scale); + // now, traverse the scanlines and find the intersections on each scanline, use non-zero rule + nsvg__initPaint(&cache, &shape->fill, shape->opacity); - // Scale and translate edges - for (i = 0; i < r->nedges; i++) { - e = &r->edges[i]; - e->x0 = tx + e->x0 * scale; - e->y0 = (ty + e->y0 * scale) * NSVG__SUBSAMPLES; - e->x1 = tx + e->x1 * scale; - e->y1 = (ty + e->y1 * scale) * NSVG__SUBSAMPLES; + nsvg__rasterizeSortedEdges(r, tx,ty,scale, &cache, shape->fillRule); } + if (shape->stroke.type != NSVG_PAINT_NONE && (shape->strokeWidth * scale) > 0.01f) { + nsvg__resetPool(r); + r->freelist = NULL; + r->nedges = 0; + + nsvg__flattenShapeStroke(r, shape, scale); + +// dumpEdges(r, "edge.svg"); + + // Scale and translate edges + for (i = 0; i < r->nedges; i++) { + e = &r->edges[i]; + e->x0 = tx + e->x0; + e->y0 = (ty + e->y0) * NSVG__SUBSAMPLES; + e->x1 = tx + e->x1; + e->y1 = (ty + e->y1) * NSVG__SUBSAMPLES; + } + + // Rasterize edges + if (r->nedges != 0) + qsort(r->edges, r->nedges, sizeof(NSVGedge), nsvg__cmpEdge); - // Rasterize edges - qsort(r->edges, r->nedges, sizeof(struct NSVGedge), nsvg__cmpEdge); + // now, traverse the scanlines and find the intersections on each scanline, use non-zero rule + nsvg__initPaint(&cache, &shape->stroke, shape->opacity); - // now, traverse the scanlines and find the intersections on each scanline, use non-zero rule - nsvg__initPaint(&cache, &shape->fill, shape->opacity); - - nsvg__rasterizeSortedEdges(r, tx,ty,scale, &cache); + nsvg__rasterizeSortedEdges(r, tx,ty,scale, &cache, NSVG_FILLRULE_NONZERO); + } } nsvg__unpremultiplyAlpha(dst, w, h, stride); @@ -800,4 +1455,6 @@ void nsvgRasterize(struct NSVGrasterizer* r, r->stride = 0; } -#endif +#endif // NANOSVGRAST_IMPLEMENTATION + +#endif // NANOSVGRAST_H diff --git a/external/nanosvg/src/nanosvg_impl.cpp b/external/nanosvg/src/nanosvg_impl.cpp index 995d3372c6..a114909613 100644 --- a/external/nanosvg/src/nanosvg_impl.cpp +++ b/external/nanosvg/src/nanosvg_impl.cpp @@ -1,6 +1,5 @@ #define NANOSVG_IMPLEMENTATION #define NANOSVGRAST_IMPLEMENTATION +#define NANOSVG_ALL_COLOR_KEYWORDS // Include full list of color keywords. -#include -#include "nanosvg.h" #include "nanosvgrast.h" diff --git a/external/pugixml b/external/pugixml new file mode 160000 index 0000000000..ee86beb30e --- /dev/null +++ b/external/pugixml @@ -0,0 +1 @@ +Subproject commit ee86beb30e4973f5feffe3ce63bfa4fbadf72f38 diff --git a/external/pugixml/CMakeLists.txt b/external/pugixml/CMakeLists.txt deleted file mode 100644 index fb01783b12..0000000000 --- a/external/pugixml/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -project("pugixml") - -set(PUGI_HEADERS - ${CMAKE_CURRENT_SOURCE_DIR}/pugiconfig.hpp - ${CMAKE_CURRENT_SOURCE_DIR}/pugixml.hpp -) - -set(PUGI_SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/src/pugixml.cpp -) - -include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -add_library(pugixml STATIC ${PUGI_SOURCES} ${PUG_HEADERS}) diff --git a/external/pugixml/pugiconfig.hpp b/external/pugixml/pugiconfig.hpp deleted file mode 100644 index c2196715cd..0000000000 --- a/external/pugixml/pugiconfig.hpp +++ /dev/null @@ -1,69 +0,0 @@ -/** - * pugixml parser - version 1.2 - * -------------------------------------------------------- - * Copyright (C) 2006-2012, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) - * Report bugs and download new versions at http://pugixml.org/ - * - * This library is distributed under the MIT License. See notice at the end - * of this file. - * - * This work is based on the pugxml parser, which is: - * Copyright (C) 2003, by Kristen Wegner (kristen@tima.net) - */ - -#ifndef HEADER_PUGICONFIG_HPP -#define HEADER_PUGICONFIG_HPP - -// Uncomment this to enable wchar_t mode -// #define PUGIXML_WCHAR_MODE - -// Uncomment this to disable XPath -// #define PUGIXML_NO_XPATH - -// Uncomment this to disable STL -// #define PUGIXML_NO_STL - -// Uncomment this to disable exceptions -// #define PUGIXML_NO_EXCEPTIONS - -// Set this to control attributes for public classes/functions, i.e.: -// #define PUGIXML_API __declspec(dllexport) // to export all public symbols from DLL -// #define PUGIXML_CLASS __declspec(dllimport) // to import all classes from DLL -// #define PUGIXML_FUNCTION __fastcall // to set calling conventions to all public functions to fastcall -// In absence of PUGIXML_CLASS/PUGIXML_FUNCTION definitions PUGIXML_API is used instead - -// Uncomment this to switch to header-only version -// #define PUGIXML_HEADER_ONLY -// #include "pugixml.cpp" - -// Tune these constants to adjust memory-related behavior -// #define PUGIXML_MEMORY_PAGE_SIZE 32768 -// #define PUGIXML_MEMORY_OUTPUT_STACK 10240 -// #define PUGIXML_MEMORY_XPATH_PAGE_SIZE 4096 - -#endif - -/** - * Copyright (c) 2006-2012 Arseny Kapoulkine - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ diff --git a/external/pugixml/pugixml.hpp b/external/pugixml/pugixml.hpp deleted file mode 100644 index 77b4dcf474..0000000000 --- a/external/pugixml/pugixml.hpp +++ /dev/null @@ -1,1265 +0,0 @@ -/** - * pugixml parser - version 1.2 - * -------------------------------------------------------- - * Copyright (C) 2006-2012, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) - * Report bugs and download new versions at http://pugixml.org/ - * - * This library is distributed under the MIT License. See notice at the end - * of this file. - * - * This work is based on the pugxml parser, which is: - * Copyright (C) 2003, by Kristen Wegner (kristen@tima.net) - */ - -#ifndef PUGIXML_VERSION -// Define version macro; evaluates to major * 100 + minor so that it's safe to use in less-than comparisons -# define PUGIXML_VERSION 120 -#endif - -// Include user configuration file (this can define various configuration macros) -#include "pugiconfig.hpp" - -#ifndef HEADER_PUGIXML_HPP -#define HEADER_PUGIXML_HPP - -// Include stddef.h for size_t and ptrdiff_t -#include - -// Include exception header for XPath -#if !defined(PUGIXML_NO_XPATH) && !defined(PUGIXML_NO_EXCEPTIONS) -# include -#endif - -// Include STL headers -#ifndef PUGIXML_NO_STL -# include -# include -# include -#endif - -// Macro for deprecated features -#ifndef PUGIXML_DEPRECATED -# if defined(__GNUC__) -# define PUGIXML_DEPRECATED __attribute__((deprecated)) -# elif defined(_MSC_VER) && _MSC_VER >= 1300 -# define PUGIXML_DEPRECATED __declspec(deprecated) -# else -# define PUGIXML_DEPRECATED -# endif -#endif - -// If no API is defined, assume default -#ifndef PUGIXML_API -# define PUGIXML_API -#endif - -// If no API for classes is defined, assume default -#ifndef PUGIXML_CLASS -# define PUGIXML_CLASS PUGIXML_API -#endif - -// If no API for functions is defined, assume default -#ifndef PUGIXML_FUNCTION -# define PUGIXML_FUNCTION PUGIXML_API -#endif - -// Character interface macros -#ifdef PUGIXML_WCHAR_MODE -# define PUGIXML_TEXT(t) L ## t -# define PUGIXML_CHAR wchar_t -#else -# define PUGIXML_TEXT(t) t -# define PUGIXML_CHAR char -#endif - -namespace pugi -{ - // Character type used for all internal storage and operations; depends on PUGIXML_WCHAR_MODE - typedef PUGIXML_CHAR char_t; - -#ifndef PUGIXML_NO_STL - // String type used for operations that work with STL string; depends on PUGIXML_WCHAR_MODE - typedef std::basic_string, std::allocator > string_t; -#endif -} - -// The PugiXML namespace -namespace pugi -{ - // Tree node types - enum xml_node_type - { - node_null, // Empty (null) node handle - node_document, // A document tree's absolute root - node_element, // Element tag, i.e. '' - node_pcdata, // Plain character data, i.e. 'text' - node_cdata, // Character data, i.e. '' - node_comment, // Comment tag, i.e. '' - node_pi, // Processing instruction, i.e. '' - node_declaration, // Document declaration, i.e. '' - node_doctype // Document type declaration, i.e. '' - }; - - // Parsing options - - // Minimal parsing mode (equivalent to turning all other flags off). - // Only elements and PCDATA sections are added to the DOM tree, no text conversions are performed. - const unsigned int parse_minimal = 0x0000; - - // This flag determines if processing instructions (node_pi) are added to the DOM tree. This flag is off by default. - const unsigned int parse_pi = 0x0001; - - // This flag determines if comments (node_comment) are added to the DOM tree. This flag is off by default. - const unsigned int parse_comments = 0x0002; - - // This flag determines if CDATA sections (node_cdata) are added to the DOM tree. This flag is on by default. - const unsigned int parse_cdata = 0x0004; - - // This flag determines if plain character data (node_pcdata) that consist only of whitespace are added to the DOM tree. - // This flag is off by default; turning it on usually results in slower parsing and more memory consumption. - const unsigned int parse_ws_pcdata = 0x0008; - - // This flag determines if character and entity references are expanded during parsing. This flag is on by default. - const unsigned int parse_escapes = 0x0010; - - // This flag determines if EOL characters are normalized (converted to #xA) during parsing. This flag is on by default. - const unsigned int parse_eol = 0x0020; - - // This flag determines if attribute values are normalized using CDATA normalization rules during parsing. This flag is on by default. - const unsigned int parse_wconv_attribute = 0x0040; - - // This flag determines if attribute values are normalized using NMTOKENS normalization rules during parsing. This flag is off by default. - const unsigned int parse_wnorm_attribute = 0x0080; - - // This flag determines if document declaration (node_declaration) is added to the DOM tree. This flag is off by default. - const unsigned int parse_declaration = 0x0100; - - // This flag determines if document type declaration (node_doctype) is added to the DOM tree. This flag is off by default. - const unsigned int parse_doctype = 0x0200; - - // This flag determines if plain character data (node_pcdata) that is the only child of the parent node and that consists only - // of whitespace is added to the DOM tree. - // This flag is off by default; turning it on may result in slower parsing and more memory consumption. - const unsigned int parse_ws_pcdata_single = 0x0400; - - // The default parsing mode. - // Elements, PCDATA and CDATA sections are added to the DOM tree, character/reference entities are expanded, - // End-of-Line characters are normalized, attribute values are normalized using CDATA normalization rules. - const unsigned int parse_default = parse_cdata | parse_escapes | parse_wconv_attribute | parse_eol; - - // The full parsing mode. - // Nodes of all types are added to the DOM tree, character/reference entities are expanded, - // End-of-Line characters are normalized, attribute values are normalized using CDATA normalization rules. - const unsigned int parse_full = parse_default | parse_pi | parse_comments | parse_declaration | parse_doctype; - - // These flags determine the encoding of input data for XML document - enum xml_encoding - { - encoding_auto, // Auto-detect input encoding using BOM or < / class xml_object_range - { - public: - typedef It const_iterator; - - xml_object_range(It b, It e): _begin(b), _end(e) - { - } - - It begin() const { return _begin; } - It end() const { return _end; } - - private: - It _begin, _end; - }; - - // Writer interface for node printing (see xml_node::print) - class PUGIXML_CLASS xml_writer - { - public: - virtual ~xml_writer() {} - - // Write memory chunk into stream/file/whatever - virtual void write(const void* data, size_t size) = 0; - }; - - // xml_writer implementation for FILE* - class PUGIXML_CLASS xml_writer_file: public xml_writer - { - public: - // Construct writer from a FILE* object; void* is used to avoid header dependencies on stdio - xml_writer_file(void* file); - - virtual void write(const void* data, size_t size); - - private: - void* file; - }; - - #ifndef PUGIXML_NO_STL - // xml_writer implementation for streams - class PUGIXML_CLASS xml_writer_stream: public xml_writer - { - public: - // Construct writer from an output stream object - xml_writer_stream(std::basic_ostream >& stream); - xml_writer_stream(std::basic_ostream >& stream); - - virtual void write(const void* data, size_t size); - - private: - std::basic_ostream >* narrow_stream; - std::basic_ostream >* wide_stream; - }; - #endif - - // A light-weight handle for manipulating attributes in DOM tree - class PUGIXML_CLASS xml_attribute - { - friend class xml_attribute_iterator; - friend class xml_node; - - private: - xml_attribute_struct* _attr; - - typedef void (*unspecified_bool_type)(xml_attribute***); - - public: - // Default constructor. Constructs an empty attribute. - xml_attribute(); - - // Constructs attribute from internal pointer - explicit xml_attribute(xml_attribute_struct* attr); - - // Safe bool conversion operator - operator unspecified_bool_type() const; - - // Borland C++ workaround - bool operator!() const; - - // Comparison operators (compares wrapped attribute pointers) - bool operator==(const xml_attribute& r) const; - bool operator!=(const xml_attribute& r) const; - bool operator<(const xml_attribute& r) const; - bool operator>(const xml_attribute& r) const; - bool operator<=(const xml_attribute& r) const; - bool operator>=(const xml_attribute& r) const; - - // Check if attribute is empty - bool empty() const; - - // Get attribute name/value, or "" if attribute is empty - const char_t* name() const; - const char_t* value() const; - - // Get attribute value, or the default value if attribute is empty - const char_t* as_string(const char_t* def = PUGIXML_TEXT("")) const; - - // Get attribute value as a number, or the default value if conversion did not succeed or attribute is empty - int as_int(int def = 0) const; - unsigned int as_uint(unsigned int def = 0) const; - double as_double(double def = 0) const; - float as_float(float def = 0) const; - - // Get attribute value as bool (returns true if first character is in '1tTyY' set), or the default value if attribute is empty - bool as_bool(bool def = false) const; - - // Set attribute name/value (returns false if attribute is empty or there is not enough memory) - bool set_name(const char_t* rhs); - bool set_value(const char_t* rhs); - - // Set attribute value with type conversion (numbers are converted to strings, boolean is converted to "true"/"false") - bool set_value(int rhs); - bool set_value(unsigned int rhs); - bool set_value(double rhs); - bool set_value(bool rhs); - - // Set attribute value (equivalent to set_value without error checking) - xml_attribute& operator=(const char_t* rhs); - xml_attribute& operator=(int rhs); - xml_attribute& operator=(unsigned int rhs); - xml_attribute& operator=(double rhs); - xml_attribute& operator=(bool rhs); - - // Get next/previous attribute in the attribute list of the parent node - xml_attribute next_attribute() const; - xml_attribute previous_attribute() const; - - // Get hash value (unique for handles to the same object) - size_t hash_value() const; - - // Get internal pointer - xml_attribute_struct* internal_object() const; - }; - -#ifdef __BORLANDC__ - // Borland C++ workaround - bool PUGIXML_FUNCTION operator&&(const xml_attribute& lhs, bool rhs); - bool PUGIXML_FUNCTION operator||(const xml_attribute& lhs, bool rhs); -#endif - - // A light-weight handle for manipulating nodes in DOM tree - class PUGIXML_CLASS xml_node - { - friend class xml_attribute_iterator; - friend class xml_node_iterator; - friend class xml_named_node_iterator; - - protected: - xml_node_struct* _root; - - typedef void (*unspecified_bool_type)(xml_node***); - - public: - // Default constructor. Constructs an empty node. - xml_node(); - - // Constructs node from internal pointer - explicit xml_node(xml_node_struct* p); - - // Safe bool conversion operator - operator unspecified_bool_type() const; - - // Borland C++ workaround - bool operator!() const; - - // Comparison operators (compares wrapped node pointers) - bool operator==(const xml_node& r) const; - bool operator!=(const xml_node& r) const; - bool operator<(const xml_node& r) const; - bool operator>(const xml_node& r) const; - bool operator<=(const xml_node& r) const; - bool operator>=(const xml_node& r) const; - - // Check if node is empty. - bool empty() const; - - // Get node type - xml_node_type type() const; - - // Get node name/value, or "" if node is empty or it has no name/value - const char_t* name() const; - const char_t* value() const; - - // Get attribute list - xml_attribute first_attribute() const; - xml_attribute last_attribute() const; - - // Get children list - xml_node first_child() const; - xml_node last_child() const; - - // Get next/previous sibling in the children list of the parent node - xml_node next_sibling() const; - xml_node previous_sibling() const; - - // Get parent node - xml_node parent() const; - - // Get root of DOM tree this node belongs to - xml_node root() const; - - // Get text object for the current node - xml_text text() const; - - // Get child, attribute or next/previous sibling with the specified name - xml_node child(const char_t* name) const; - xml_attribute attribute(const char_t* name) const; - xml_node next_sibling(const char_t* name) const; - xml_node previous_sibling(const char_t* name) const; - - // Get child value of current node; that is, value of the first child node of type PCDATA/CDATA - const char_t* child_value() const; - - // Get child value of child with specified name. Equivalent to child(name).child_value(). - const char_t* child_value(const char_t* name) const; - - // Set node name/value (returns false if node is empty, there is not enough memory, or node can not have name/value) - bool set_name(const char_t* rhs); - bool set_value(const char_t* rhs); - - // Add attribute with specified name. Returns added attribute, or empty attribute on errors. - xml_attribute append_attribute(const char_t* name); - xml_attribute prepend_attribute(const char_t* name); - xml_attribute insert_attribute_after(const char_t* name, const xml_attribute& attr); - xml_attribute insert_attribute_before(const char_t* name, const xml_attribute& attr); - - // Add a copy of the specified attribute. Returns added attribute, or empty attribute on errors. - xml_attribute append_copy(const xml_attribute& proto); - xml_attribute prepend_copy(const xml_attribute& proto); - xml_attribute insert_copy_after(const xml_attribute& proto, const xml_attribute& attr); - xml_attribute insert_copy_before(const xml_attribute& proto, const xml_attribute& attr); - - // Add child node with specified type. Returns added node, or empty node on errors. - xml_node append_child(xml_node_type type = node_element); - xml_node prepend_child(xml_node_type type = node_element); - xml_node insert_child_after(xml_node_type type, const xml_node& node); - xml_node insert_child_before(xml_node_type type, const xml_node& node); - - // Add child element with specified name. Returns added node, or empty node on errors. - xml_node append_child(const char_t* name); - xml_node prepend_child(const char_t* name); - xml_node insert_child_after(const char_t* name, const xml_node& node); - xml_node insert_child_before(const char_t* name, const xml_node& node); - - // Add a copy of the specified node as a child. Returns added node, or empty node on errors. - xml_node append_copy(const xml_node& proto); - xml_node prepend_copy(const xml_node& proto); - xml_node insert_copy_after(const xml_node& proto, const xml_node& node); - xml_node insert_copy_before(const xml_node& proto, const xml_node& node); - - // Remove specified attribute - bool remove_attribute(const xml_attribute& a); - bool remove_attribute(const char_t* name); - - // Remove specified child - bool remove_child(const xml_node& n); - bool remove_child(const char_t* name); - - // Find attribute using predicate. Returns first attribute for which predicate returned true. - template xml_attribute find_attribute(Predicate pred) const - { - if (!_root) return xml_attribute(); - - for (xml_attribute attrib = first_attribute(); attrib; attrib = attrib.next_attribute()) - if (pred(attrib)) - return attrib; - - return xml_attribute(); - } - - // Find child node using predicate. Returns first child for which predicate returned true. - template xml_node find_child(Predicate pred) const - { - if (!_root) return xml_node(); - - for (xml_node node = first_child(); node; node = node.next_sibling()) - if (pred(node)) - return node; - - return xml_node(); - } - - // Find node from subtree using predicate. Returns first node from subtree (depth-first), for which predicate returned true. - template xml_node find_node(Predicate pred) const - { - if (!_root) return xml_node(); - - xml_node cur = first_child(); - - while (cur._root && cur._root != _root) - { - if (pred(cur)) return cur; - - if (cur.first_child()) cur = cur.first_child(); - else if (cur.next_sibling()) cur = cur.next_sibling(); - else - { - while (!cur.next_sibling() && cur._root != _root) cur = cur.parent(); - - if (cur._root != _root) cur = cur.next_sibling(); - } - } - - return xml_node(); - } - - // Find child node by attribute name/value - xml_node find_child_by_attribute(const char_t* name, const char_t* attr_name, const char_t* attr_value) const; - xml_node find_child_by_attribute(const char_t* attr_name, const char_t* attr_value) const; - - #ifndef PUGIXML_NO_STL - // Get the absolute node path from root as a text string. - string_t path(char_t delimiter = '/') const; - #endif - - // Search for a node by path consisting of node names and . or .. elements. - xml_node first_element_by_path(const char_t* path, char_t delimiter = '/') const; - - // Recursively traverse subtree with xml_tree_walker - bool traverse(xml_tree_walker& walker); - - #ifndef PUGIXML_NO_XPATH - // Select single node by evaluating XPath query. Returns first node from the resulting node set. - xpath_node select_single_node(const char_t* query, xpath_variable_set* variables = 0) const; - xpath_node select_single_node(const xpath_query& query) const; - - // Select node set by evaluating XPath query - xpath_node_set select_nodes(const char_t* query, xpath_variable_set* variables = 0) const; - xpath_node_set select_nodes(const xpath_query& query) const; - #endif - - // Print subtree using a writer object - void print(xml_writer& writer, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto, unsigned int depth = 0) const; - - #ifndef PUGIXML_NO_STL - // Print subtree to stream - void print(std::basic_ostream >& os, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto, unsigned int depth = 0) const; - void print(std::basic_ostream >& os, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, unsigned int depth = 0) const; - #endif - - // Child nodes iterators - typedef xml_node_iterator iterator; - - iterator begin() const; - iterator end() const; - - // Attribute iterators - typedef xml_attribute_iterator attribute_iterator; - - attribute_iterator attributes_begin() const; - attribute_iterator attributes_end() const; - - // Range-based for support - xml_object_range children() const; - xml_object_range children(const char_t* name) const; - xml_object_range attributes() const; - - // Get node offset in parsed file/string (in char_t units) for debugging purposes - ptrdiff_t offset_debug() const; - - // Get hash value (unique for handles to the same object) - size_t hash_value() const; - - // Get internal pointer - xml_node_struct* internal_object() const; - }; - -#ifdef __BORLANDC__ - // Borland C++ workaround - bool PUGIXML_FUNCTION operator&&(const xml_node& lhs, bool rhs); - bool PUGIXML_FUNCTION operator||(const xml_node& lhs, bool rhs); -#endif - - // A helper for working with text inside PCDATA nodes - class PUGIXML_CLASS xml_text - { - friend class xml_node; - - xml_node_struct* _root; - - typedef void (*unspecified_bool_type)(xml_text***); - - explicit xml_text(xml_node_struct* root); - - xml_node_struct* _data_new(); - xml_node_struct* _data() const; - - public: - // Default constructor. Constructs an empty object. - xml_text(); - - // Safe bool conversion operator - operator unspecified_bool_type() const; - - // Borland C++ workaround - bool operator!() const; - - // Check if text object is empty - bool empty() const; - - // Get text, or "" if object is empty - const char_t* get() const; - - // Get text, or the default value if object is empty - const char_t* as_string(const char_t* def = PUGIXML_TEXT("")) const; - - // Get text as a number, or the default value if conversion did not succeed or object is empty - int as_int(int def = 0) const; - unsigned int as_uint(unsigned int def = 0) const; - double as_double(double def = 0) const; - float as_float(float def = 0) const; - - // Get text as bool (returns true if first character is in '1tTyY' set), or the default value if object is empty - bool as_bool(bool def = false) const; - - // Set text (returns false if object is empty or there is not enough memory) - bool set(const char_t* rhs); - - // Set text with type conversion (numbers are converted to strings, boolean is converted to "true"/"false") - bool set(int rhs); - bool set(unsigned int rhs); - bool set(double rhs); - bool set(bool rhs); - - // Set text (equivalent to set without error checking) - xml_text& operator=(const char_t* rhs); - xml_text& operator=(int rhs); - xml_text& operator=(unsigned int rhs); - xml_text& operator=(double rhs); - xml_text& operator=(bool rhs); - - // Get the data node (node_pcdata or node_cdata) for this object - xml_node data() const; - }; - -#ifdef __BORLANDC__ - // Borland C++ workaround - bool PUGIXML_FUNCTION operator&&(const xml_text& lhs, bool rhs); - bool PUGIXML_FUNCTION operator||(const xml_text& lhs, bool rhs); -#endif - - // Child node iterator (a bidirectional iterator over a collection of xml_node) - class PUGIXML_CLASS xml_node_iterator - { - friend class xml_node; - - private: - mutable xml_node _wrap; - xml_node _parent; - - xml_node_iterator(xml_node_struct* ref, xml_node_struct* parent); - - public: - // Iterator traits - typedef ptrdiff_t difference_type; - typedef xml_node value_type; - typedef xml_node* pointer; - typedef xml_node& reference; - - #ifndef PUGIXML_NO_STL - typedef std::bidirectional_iterator_tag iterator_category; - #endif - - // Default constructor - xml_node_iterator(); - - // Construct an iterator which points to the specified node - xml_node_iterator(const xml_node& node); - - // Iterator operators - bool operator==(const xml_node_iterator& rhs) const; - bool operator!=(const xml_node_iterator& rhs) const; - - xml_node& operator*() const; - xml_node* operator->() const; - - const xml_node_iterator& operator++(); - xml_node_iterator operator++(int); - - const xml_node_iterator& operator--(); - xml_node_iterator operator--(int); - }; - - // Attribute iterator (a bidirectional iterator over a collection of xml_attribute) - class PUGIXML_CLASS xml_attribute_iterator - { - friend class xml_node; - - private: - mutable xml_attribute _wrap; - xml_node _parent; - - xml_attribute_iterator(xml_attribute_struct* ref, xml_node_struct* parent); - - public: - // Iterator traits - typedef ptrdiff_t difference_type; - typedef xml_attribute value_type; - typedef xml_attribute* pointer; - typedef xml_attribute& reference; - - #ifndef PUGIXML_NO_STL - typedef std::bidirectional_iterator_tag iterator_category; - #endif - - // Default constructor - xml_attribute_iterator(); - - // Construct an iterator which points to the specified attribute - xml_attribute_iterator(const xml_attribute& attr, const xml_node& parent); - - // Iterator operators - bool operator==(const xml_attribute_iterator& rhs) const; - bool operator!=(const xml_attribute_iterator& rhs) const; - - xml_attribute& operator*() const; - xml_attribute* operator->() const; - - const xml_attribute_iterator& operator++(); - xml_attribute_iterator operator++(int); - - const xml_attribute_iterator& operator--(); - xml_attribute_iterator operator--(int); - }; - - // Named node range helper - class xml_named_node_iterator - { - public: - // Iterator traits - typedef ptrdiff_t difference_type; - typedef xml_node value_type; - typedef xml_node* pointer; - typedef xml_node& reference; - - #ifndef PUGIXML_NO_STL - typedef std::forward_iterator_tag iterator_category; - #endif - - // Default constructor - xml_named_node_iterator(); - - // Construct an iterator which points to the specified node - xml_named_node_iterator(const xml_node& node, const char_t* name); - - // Iterator operators - bool operator==(const xml_named_node_iterator& rhs) const; - bool operator!=(const xml_named_node_iterator& rhs) const; - - xml_node& operator*() const; - xml_node* operator->() const; - - const xml_named_node_iterator& operator++(); - xml_named_node_iterator operator++(int); - - private: - mutable xml_node _node; - const char_t* _name; - }; - - // Abstract tree walker class (see xml_node::traverse) - class PUGIXML_CLASS xml_tree_walker - { - friend class xml_node; - - private: - int _depth; - - protected: - // Get current traversal depth - int depth() const; - - public: - xml_tree_walker(); - virtual ~xml_tree_walker(); - - // Callback that is called when traversal begins - virtual bool begin(xml_node& node); - - // Callback that is called for each node traversed - virtual bool for_each(xml_node& node) = 0; - - // Callback that is called when traversal ends - virtual bool end(xml_node& node); - }; - - // Parsing status, returned as part of xml_parse_result object - enum xml_parse_status - { - status_ok = 0, // No error - - status_file_not_found, // File was not found during load_file() - status_io_error, // Error reading from file/stream - status_out_of_memory, // Could not allocate memory - status_internal_error, // Internal error occurred - - status_unrecognized_tag, // Parser could not determine tag type - - status_bad_pi, // Parsing error occurred while parsing document declaration/processing instruction - status_bad_comment, // Parsing error occurred while parsing comment - status_bad_cdata, // Parsing error occurred while parsing CDATA section - status_bad_doctype, // Parsing error occurred while parsing document type declaration - status_bad_pcdata, // Parsing error occurred while parsing PCDATA section - status_bad_start_element, // Parsing error occurred while parsing start element tag - status_bad_attribute, // Parsing error occurred while parsing element attribute - status_bad_end_element, // Parsing error occurred while parsing end element tag - status_end_element_mismatch // There was a mismatch of start-end tags (closing tag had incorrect name, some tag was not closed or there was an excessive closing tag) - }; - - // Parsing result - struct PUGIXML_CLASS xml_parse_result - { - // Parsing status (see xml_parse_status) - xml_parse_status status; - - // Last parsed offset (in char_t units from start of input data) - ptrdiff_t offset; - - // Source document encoding - xml_encoding encoding; - - // Default constructor, initializes object to failed state - xml_parse_result(); - - // Cast to bool operator - operator bool() const; - - // Get error description - const char* description() const; - }; - - // Document class (DOM tree root) - class PUGIXML_CLASS xml_document: public xml_node - { - private: - char_t* _buffer; - - char _memory[192]; - - // Non-copyable semantics - xml_document(const xml_document&); - const xml_document& operator=(const xml_document&); - - void create(); - void destroy(); - - xml_parse_result load_buffer_impl(void* contents, size_t size, unsigned int options, xml_encoding encoding, bool is_mutable, bool own); - - public: - // Default constructor, makes empty document - xml_document(); - - // Destructor, invalidates all node/attribute handles to this document - ~xml_document(); - - // Removes all nodes, leaving the empty document - void reset(); - - // Removes all nodes, then copies the entire contents of the specified document - void reset(const xml_document& proto); - - #ifndef PUGIXML_NO_STL - // Load document from stream. - xml_parse_result load(std::basic_istream >& stream, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); - xml_parse_result load(std::basic_istream >& stream, unsigned int options = parse_default); - #endif - - // Load document from zero-terminated string. No encoding conversions are applied. - xml_parse_result load(const char_t* contents, unsigned int options = parse_default); - - // Load document from file - xml_parse_result load_file(const char* path, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); - xml_parse_result load_file(const wchar_t* path, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); - - // Load document from buffer. Copies/converts the buffer, so it may be deleted or changed after the function returns. - xml_parse_result load_buffer(const void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); - - // Load document from buffer, using the buffer for in-place parsing (the buffer is modified and used for storage of document data). - // You should ensure that buffer data will persist throughout the document's lifetime, and free the buffer memory manually once document is destroyed. - xml_parse_result load_buffer_inplace(void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); - - // Load document from buffer, using the buffer for in-place parsing (the buffer is modified and used for storage of document data). - // You should allocate the buffer with pugixml allocation function; document will free the buffer when it is no longer needed (you can't use it anymore). - xml_parse_result load_buffer_inplace_own(void* contents, size_t size, unsigned int options = parse_default, xml_encoding encoding = encoding_auto); - - // Save XML document to writer (semantics is slightly different from xml_node::print, see documentation for details). - void save(xml_writer& writer, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; - - #ifndef PUGIXML_NO_STL - // Save XML document to stream (semantics is slightly different from xml_node::print, see documentation for details). - void save(std::basic_ostream >& stream, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; - void save(std::basic_ostream >& stream, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default) const; - #endif - - // Save XML to file - bool save_file(const char* path, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; - bool save_file(const wchar_t* path, const char_t* indent = PUGIXML_TEXT("\t"), unsigned int flags = format_default, xml_encoding encoding = encoding_auto) const; - - // Get document element - xml_node document_element() const; - }; - -#ifndef PUGIXML_NO_XPATH - // XPath query return type - enum xpath_value_type - { - xpath_type_none, // Unknown type (query failed to compile) - xpath_type_node_set, // Node set (xpath_node_set) - xpath_type_number, // Number - xpath_type_string, // String - xpath_type_boolean // Boolean - }; - - // XPath parsing result - struct PUGIXML_CLASS xpath_parse_result - { - // Error message (0 if no error) - const char* error; - - // Last parsed offset (in char_t units from string start) - ptrdiff_t offset; - - // Default constructor, initializes object to failed state - xpath_parse_result(); - - // Cast to bool operator - operator bool() const; - - // Get error description - const char* description() const; - }; - - // A single XPath variable - class PUGIXML_CLASS xpath_variable - { - friend class xpath_variable_set; - - protected: - xpath_value_type _type; - xpath_variable* _next; - - xpath_variable(); - - // Non-copyable semantics - xpath_variable(const xpath_variable&); - xpath_variable& operator=(const xpath_variable&); - - public: - // Get variable name - const char_t* name() const; - - // Get variable type - xpath_value_type type() const; - - // Get variable value; no type conversion is performed, default value (false, NaN, empty string, empty node set) is returned on type mismatch error - bool get_boolean() const; - double get_number() const; - const char_t* get_string() const; - const xpath_node_set& get_node_set() const; - - // Set variable value; no type conversion is performed, false is returned on type mismatch error - bool set(bool value); - bool set(double value); - bool set(const char_t* value); - bool set(const xpath_node_set& value); - }; - - // A set of XPath variables - class PUGIXML_CLASS xpath_variable_set - { - private: - xpath_variable* _data[64]; - - // Non-copyable semantics - xpath_variable_set(const xpath_variable_set&); - xpath_variable_set& operator=(const xpath_variable_set&); - - xpath_variable* find(const char_t* name) const; - - public: - // Default constructor/destructor - xpath_variable_set(); - ~xpath_variable_set(); - - // Add a new variable or get the existing one, if the types match - xpath_variable* add(const char_t* name, xpath_value_type type); - - // Set value of an existing variable; no type conversion is performed, false is returned if there is no such variable or if types mismatch - bool set(const char_t* name, bool value); - bool set(const char_t* name, double value); - bool set(const char_t* name, const char_t* value); - bool set(const char_t* name, const xpath_node_set& value); - - // Get existing variable by name - xpath_variable* get(const char_t* name); - const xpath_variable* get(const char_t* name) const; - }; - - // A compiled XPath query object - class PUGIXML_CLASS xpath_query - { - private: - void* _impl; - xpath_parse_result _result; - - typedef void (*unspecified_bool_type)(xpath_query***); - - // Non-copyable semantics - xpath_query(const xpath_query&); - xpath_query& operator=(const xpath_query&); - - public: - // Construct a compiled object from XPath expression. - // If PUGIXML_NO_EXCEPTIONS is not defined, throws xpath_exception on compilation errors. - explicit xpath_query(const char_t* query, xpath_variable_set* variables = 0); - - // Destructor - ~xpath_query(); - - // Get query expression return type - xpath_value_type return_type() const; - - // Evaluate expression as boolean value in the specified context; performs type conversion if necessary. - // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. - bool evaluate_boolean(const xpath_node& n) const; - - // Evaluate expression as double value in the specified context; performs type conversion if necessary. - // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. - double evaluate_number(const xpath_node& n) const; - - #ifndef PUGIXML_NO_STL - // Evaluate expression as string value in the specified context; performs type conversion if necessary. - // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. - string_t evaluate_string(const xpath_node& n) const; - #endif - - // Evaluate expression as string value in the specified context; performs type conversion if necessary. - // At most capacity characters are written to the destination buffer, full result size is returned (includes terminating zero). - // If PUGIXML_NO_EXCEPTIONS is not defined, throws std::bad_alloc on out of memory errors. - // If PUGIXML_NO_EXCEPTIONS is defined, returns empty set instead. - size_t evaluate_string(char_t* buffer, size_t capacity, const xpath_node& n) const; - - // Evaluate expression as node set in the specified context. - // If PUGIXML_NO_EXCEPTIONS is not defined, throws xpath_exception on type mismatch and std::bad_alloc on out of memory errors. - // If PUGIXML_NO_EXCEPTIONS is defined, returns empty node set instead. - xpath_node_set evaluate_node_set(const xpath_node& n) const; - - // Get parsing result (used to get compilation errors in PUGIXML_NO_EXCEPTIONS mode) - const xpath_parse_result& result() const; - - // Safe bool conversion operator - operator unspecified_bool_type() const; - - // Borland C++ workaround - bool operator!() const; - }; - - #ifndef PUGIXML_NO_EXCEPTIONS - // XPath exception class - class PUGIXML_CLASS xpath_exception: public std::exception - { - private: - xpath_parse_result _result; - - public: - // Construct exception from parse result - explicit xpath_exception(const xpath_parse_result& result); - - // Get error message - virtual const char* what() const throw(); - - // Get parse result - const xpath_parse_result& result() const; - }; - #endif - - // XPath node class (either xml_node or xml_attribute) - class PUGIXML_CLASS xpath_node - { - private: - xml_node _node; - xml_attribute _attribute; - - typedef void (*unspecified_bool_type)(xpath_node***); - - public: - // Default constructor; constructs empty XPath node - xpath_node(); - - // Construct XPath node from XML node/attribute - xpath_node(const xml_node& node); - xpath_node(const xml_attribute& attribute, const xml_node& parent); - - // Get node/attribute, if any - xml_node node() const; - xml_attribute attribute() const; - - // Get parent of contained node/attribute - xml_node parent() const; - - // Safe bool conversion operator - operator unspecified_bool_type() const; - - // Borland C++ workaround - bool operator!() const; - - // Comparison operators - bool operator==(const xpath_node& n) const; - bool operator!=(const xpath_node& n) const; - }; - -#ifdef __BORLANDC__ - // Borland C++ workaround - bool PUGIXML_FUNCTION operator&&(const xpath_node& lhs, bool rhs); - bool PUGIXML_FUNCTION operator||(const xpath_node& lhs, bool rhs); -#endif - - // A fixed-size collection of XPath nodes - class PUGIXML_CLASS xpath_node_set - { - public: - // Collection type - enum type_t - { - type_unsorted, // Not ordered - type_sorted, // Sorted by document order (ascending) - type_sorted_reverse // Sorted by document order (descending) - }; - - // Constant iterator type - typedef const xpath_node* const_iterator; - - // Default constructor. Constructs empty set. - xpath_node_set(); - - // Constructs a set from iterator range; data is not checked for duplicates and is not sorted according to provided type, so be careful - xpath_node_set(const_iterator begin, const_iterator end, type_t type = type_unsorted); - - // Destructor - ~xpath_node_set(); - - // Copy constructor/assignment operator - xpath_node_set(const xpath_node_set& ns); - xpath_node_set& operator=(const xpath_node_set& ns); - - // Get collection type - type_t type() const; - - // Get collection size - size_t size() const; - - // Indexing operator - const xpath_node& operator[](size_t index) const; - - // Collection iterators - const_iterator begin() const; - const_iterator end() const; - - // Sort the collection in ascending/descending order by document order - void sort(bool reverse = false); - - // Get first node in the collection by document order - xpath_node first() const; - - // Check if collection is empty - bool empty() const; - - private: - type_t _type; - - xpath_node _storage; - - xpath_node* _begin; - xpath_node* _end; - - void _assign(const_iterator begin, const_iterator end); - }; -#endif - -#ifndef PUGIXML_NO_STL - // Convert wide string to UTF8 - std::basic_string, std::allocator > PUGIXML_FUNCTION as_utf8(const wchar_t* str); - std::basic_string, std::allocator > PUGIXML_FUNCTION as_utf8(const std::basic_string, std::allocator >& str); - - // Convert UTF8 to wide string - std::basic_string, std::allocator > PUGIXML_FUNCTION as_wide(const char* str); - std::basic_string, std::allocator > PUGIXML_FUNCTION as_wide(const std::basic_string, std::allocator >& str); -#endif - - // Memory allocation function interface; returns pointer to allocated memory or NULL on failure - typedef void* (*allocation_function)(size_t size); - - // Memory deallocation function interface - typedef void (*deallocation_function)(void* ptr); - - // Override default memory management functions. All subsequent allocations/deallocations will be performed via supplied functions. - void PUGIXML_FUNCTION set_memory_management_functions(allocation_function allocate, deallocation_function deallocate); - - // Get current memory management functions - allocation_function PUGIXML_FUNCTION get_memory_allocation_function(); - deallocation_function PUGIXML_FUNCTION get_memory_deallocation_function(); -} - -#if !defined(PUGIXML_NO_STL) && (defined(_MSC_VER) || defined(__ICC)) -namespace std -{ - // Workarounds for (non-standard) iterator category detection for older versions (MSVC7/IC8 and earlier) - std::bidirectional_iterator_tag PUGIXML_FUNCTION _Iter_cat(const pugi::xml_node_iterator&); - std::bidirectional_iterator_tag PUGIXML_FUNCTION _Iter_cat(const pugi::xml_attribute_iterator&); - std::forward_iterator_tag PUGIXML_FUNCTION _Iter_cat(const pugi::xml_named_node_iterator&); -} -#endif - -#if !defined(PUGIXML_NO_STL) && defined(__SUNPRO_CC) -namespace std -{ - // Workarounds for (non-standard) iterator category detection - std::bidirectional_iterator_tag PUGIXML_FUNCTION __iterator_category(const pugi::xml_node_iterator&); - std::bidirectional_iterator_tag PUGIXML_FUNCTION __iterator_category(const pugi::xml_attribute_iterator&); - std::forward_iterator_tag PUGIXML_FUNCTION __iterator_category(const pugi::xml_named_node_iterator&); -} -#endif - -#endif - -/** - * Copyright (c) 2006-2012 Arseny Kapoulkine - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ diff --git a/external/pugixml/pugixml_license.txt b/external/pugixml/pugixml_license.txt deleted file mode 100644 index ad0bc4607e..0000000000 --- a/external/pugixml/pugixml_license.txt +++ /dev/null @@ -1,27 +0,0 @@ -pugixml 1.2 - an XML processing library - - -This library is distributed under the MIT License: - -Copyright (c) 2006-2012 Arseny Kapoulkine - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/external/pugixml/src/pugixml.cpp b/external/pugixml/src/pugixml.cpp deleted file mode 100644 index 4035ab1cfd..0000000000 --- a/external/pugixml/src/pugixml.cpp +++ /dev/null @@ -1,10250 +0,0 @@ -/** - * pugixml parser - version 1.2 - * -------------------------------------------------------- - * Copyright (C) 2006-2012, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com) - * Report bugs and download new versions at http://pugixml.org/ - * - * This library is distributed under the MIT License. See notice at the end - * of this file. - * - * This work is based on the pugxml parser, which is: - * Copyright (C) 2003, by Kristen Wegner (kristen@tima.net) - */ - -#ifndef SOURCE_PUGIXML_CPP -#define SOURCE_PUGIXML_CPP - -#include "pugixml.hpp" - -#include -#include -#include -#include -#include - -#ifndef PUGIXML_NO_XPATH -# include -# include -# ifdef PUGIXML_NO_EXCEPTIONS -# include -# endif -#endif - -#ifndef PUGIXML_NO_STL -# include -# include -# include -#endif - -// For placement new -#include - -#ifdef _MSC_VER -# pragma warning(push) -# pragma warning(disable: 4127) // conditional expression is constant -# pragma warning(disable: 4324) // structure was padded due to __declspec(align()) -# pragma warning(disable: 4611) // interaction between '_setjmp' and C++ object destruction is non-portable -# pragma warning(disable: 4702) // unreachable code -# pragma warning(disable: 4996) // this function or variable may be unsafe -# pragma warning(disable: 4793) // function compiled as native: presence of '_setjmp' makes a function unmanaged -#endif - -#ifdef __INTEL_COMPILER -# pragma warning(disable: 177) // function was declared but never referenced -# pragma warning(disable: 279) // controlling expression is constant -# pragma warning(disable: 1478 1786) // function was declared "deprecated" -# pragma warning(disable: 1684) // conversion from pointer to same-sized integral type -#endif - -#if defined(__BORLANDC__) && defined(PUGIXML_HEADER_ONLY) -# pragma warn -8080 // symbol is declared but never used; disabling this inside push/pop bracket does not make the warning go away -#endif - -#ifdef __BORLANDC__ -# pragma option push -# pragma warn -8008 // condition is always false -# pragma warn -8066 // unreachable code -#endif - -#ifdef __SNC__ -// Using diag_push/diag_pop does not disable the warnings inside templates due to a compiler bug -# pragma diag_suppress=178 // function was declared but never referenced -# pragma diag_suppress=237 // controlling expression is constant -#endif - -// Inlining controls -#if defined(_MSC_VER) && _MSC_VER >= 1300 -# define PUGI__NO_INLINE __declspec(noinline) -#elif defined(__GNUC__) -# define PUGI__NO_INLINE __attribute__((noinline)) -#else -# define PUGI__NO_INLINE -#endif - -// Simple static assertion -#define PUGI__STATIC_ASSERT(cond) { static const char condition_failed[(cond) ? 1 : -1] = {0}; (void)condition_failed[0]; } - -// Digital Mars C++ bug workaround for passing char loaded from memory via stack -#ifdef __DMC__ -# define PUGI__DMC_VOLATILE volatile -#else -# define PUGI__DMC_VOLATILE -#endif - -// Borland C++ bug workaround for not defining ::memcpy depending on header include order (can't always use std::memcpy because some compilers don't have it at all) -#if defined(__BORLANDC__) && !defined(__MEM_H_USING_LIST) -using std::memcpy; -using std::memmove; -#endif - -// In some environments MSVC is a compiler but the CRT lacks certain MSVC-specific features -#if defined(_MSC_VER) && !defined(__S3E__) -# define PUGI__MSVC_CRT_VERSION _MSC_VER -#endif - -#ifdef PUGIXML_HEADER_ONLY -# define PUGI__NS_BEGIN namespace pugi { namespace impl { -# define PUGI__NS_END } } -# define PUGI__FN inline -# define PUGI__FN_NO_INLINE inline -#else -# if defined(_MSC_VER) && _MSC_VER < 1300 // MSVC6 seems to have an amusing bug with anonymous namespaces inside namespaces -# define PUGI__NS_BEGIN namespace pugi { namespace impl { -# define PUGI__NS_END } } -# else -# define PUGI__NS_BEGIN namespace pugi { namespace impl { namespace { -# define PUGI__NS_END } } } -# endif -# define PUGI__FN -# define PUGI__FN_NO_INLINE PUGI__NO_INLINE -#endif - -// uintptr_t -#if !defined(_MSC_VER) || _MSC_VER >= 1600 -# include -#else -# ifndef _UINTPTR_T_DEFINED -// No native uintptr_t in MSVC6 and in some WinCE versions -typedef size_t uintptr_t; -#define _UINTPTR_T_DEFINED -# endif -PUGI__NS_BEGIN - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; -PUGI__NS_END -#endif - -// Memory allocation -PUGI__NS_BEGIN - PUGI__FN void* default_allocate(size_t size) - { - return malloc(size); - } - - PUGI__FN void default_deallocate(void* ptr) - { - free(ptr); - } - - template - struct xml_memory_management_function_storage - { - static allocation_function allocate; - static deallocation_function deallocate; - }; - - template allocation_function xml_memory_management_function_storage::allocate = default_allocate; - template deallocation_function xml_memory_management_function_storage::deallocate = default_deallocate; - - typedef xml_memory_management_function_storage xml_memory; -PUGI__NS_END - -// String utilities -PUGI__NS_BEGIN - // Get string length - PUGI__FN size_t strlength(const char_t* s) - { - assert(s); - - #ifdef PUGIXML_WCHAR_MODE - return wcslen(s); - #else - return strlen(s); - #endif - } - - // Compare two strings - PUGI__FN bool strequal(const char_t* src, const char_t* dst) - { - assert(src && dst); - - #ifdef PUGIXML_WCHAR_MODE - return wcscmp(src, dst) == 0; - #else - return strcmp(src, dst) == 0; - #endif - } - - // Compare lhs with [rhs_begin, rhs_end) - PUGI__FN bool strequalrange(const char_t* lhs, const char_t* rhs, size_t count) - { - for (size_t i = 0; i < count; ++i) - if (lhs[i] != rhs[i]) - return false; - - return lhs[count] == 0; - } - -#ifdef PUGIXML_WCHAR_MODE - // Convert string to wide string, assuming all symbols are ASCII - PUGI__FN void widen_ascii(wchar_t* dest, const char* source) - { - for (const char* i = source; *i; ++i) *dest++ = *i; - *dest = 0; - } -#endif -PUGI__NS_END - -#if !defined(PUGIXML_NO_STL) || !defined(PUGIXML_NO_XPATH) -// auto_ptr-like buffer holder for exception recovery -PUGI__NS_BEGIN - struct buffer_holder - { - void* data; - void (*deleter)(void*); - - buffer_holder(void* data_, void (*deleter_)(void*)): data(data_), deleter(deleter_) - { - } - - ~buffer_holder() - { - if (data) deleter(data); - } - - void* release() - { - void* result = data; - data = 0; - return result; - } - }; -PUGI__NS_END -#endif - -PUGI__NS_BEGIN - static const size_t xml_memory_page_size = - #ifdef PUGIXML_MEMORY_PAGE_SIZE - PUGIXML_MEMORY_PAGE_SIZE - #else - 32768 - #endif - ; - - static const uintptr_t xml_memory_page_alignment = 32; - static const uintptr_t xml_memory_page_pointer_mask = ~(xml_memory_page_alignment - 1); - static const uintptr_t xml_memory_page_name_allocated_mask = 16; - static const uintptr_t xml_memory_page_value_allocated_mask = 8; - static const uintptr_t xml_memory_page_type_mask = 7; - - struct xml_allocator; - - struct xml_memory_page - { - static xml_memory_page* construct(void* memory) - { - if (!memory) return 0; //$ redundant, left for performance - - xml_memory_page* result = static_cast(memory); - - result->allocator = 0; - result->memory = 0; - result->prev = 0; - result->next = 0; - result->busy_size = 0; - result->freed_size = 0; - - return result; - } - - xml_allocator* allocator; - - void* memory; - - xml_memory_page* prev; - xml_memory_page* next; - - size_t busy_size; - size_t freed_size; - - char data[1]; - }; - - struct xml_memory_string_header - { - uint16_t page_offset; // offset from page->data - uint16_t full_size; // 0 if string occupies whole page - }; - - struct xml_allocator - { - xml_allocator(xml_memory_page* root): _root(root), _busy_size(root->busy_size) - { - } - - xml_memory_page* allocate_page(size_t data_size) - { - size_t size = offsetof(xml_memory_page, data) + data_size; - - // allocate block with some alignment, leaving memory for worst-case padding - void* memory = xml_memory::allocate(size + xml_memory_page_alignment); - if (!memory) return 0; - - // align upwards to page boundary - void* page_memory = reinterpret_cast((reinterpret_cast(memory) + (xml_memory_page_alignment - 1)) & ~(xml_memory_page_alignment - 1)); - - // prepare page structure - xml_memory_page* page = xml_memory_page::construct(page_memory); - - page->memory = memory; - page->allocator = _root->allocator; - - return page; - } - - static void deallocate_page(xml_memory_page* page) - { - xml_memory::deallocate(page->memory); - } - - void* allocate_memory_oob(size_t size, xml_memory_page*& out_page); - - void* allocate_memory(size_t size, xml_memory_page*& out_page) - { - if (_busy_size + size > xml_memory_page_size) return allocate_memory_oob(size, out_page); - - void* buf = _root->data + _busy_size; - - _busy_size += size; - - out_page = _root; - - return buf; - } - - void deallocate_memory(void* ptr, size_t size, xml_memory_page* page) - { - if (page == _root) page->busy_size = _busy_size; - - assert(ptr >= page->data && ptr < page->data + page->busy_size); - (void)!ptr; - - page->freed_size += size; - assert(page->freed_size <= page->busy_size); - - if (page->freed_size == page->busy_size) - { - if (page->next == 0) - { - assert(_root == page); - - // top page freed, just reset sizes - page->busy_size = page->freed_size = 0; - _busy_size = 0; - } - else - { - assert(_root != page); - assert(page->prev); - - // remove from the list - page->prev->next = page->next; - page->next->prev = page->prev; - - // deallocate - deallocate_page(page); - } - } - } - - char_t* allocate_string(size_t length) - { - // allocate memory for string and header block - size_t size = sizeof(xml_memory_string_header) + length * sizeof(char_t); - - // round size up to pointer alignment boundary - size_t full_size = (size + (sizeof(void*) - 1)) & ~(sizeof(void*) - 1); - - xml_memory_page* page; - xml_memory_string_header* header = static_cast(allocate_memory(full_size, page)); - - if (!header) return 0; - - // setup header - ptrdiff_t page_offset = reinterpret_cast(header) - page->data; - - assert(page_offset >= 0 && page_offset < (1 << 16)); - header->page_offset = static_cast(page_offset); - - // full_size == 0 for large strings that occupy the whole page - assert(full_size < (1 << 16) || (page->busy_size == full_size && page_offset == 0)); - header->full_size = static_cast(full_size < (1 << 16) ? full_size : 0); - - // round-trip through void* to avoid 'cast increases required alignment of target type' warning - // header is guaranteed a pointer-sized alignment, which should be enough for char_t - return static_cast(static_cast(header + 1)); - } - - void deallocate_string(char_t* string) - { - // this function casts pointers through void* to avoid 'cast increases required alignment of target type' warnings - // we're guaranteed the proper (pointer-sized) alignment on the input string if it was allocated via allocate_string - - // get header - xml_memory_string_header* header = static_cast(static_cast(string)) - 1; - - // deallocate - size_t page_offset = offsetof(xml_memory_page, data) + header->page_offset; - xml_memory_page* page = reinterpret_cast(static_cast(reinterpret_cast(header) - page_offset)); - - // if full_size == 0 then this string occupies the whole page - size_t full_size = header->full_size == 0 ? page->busy_size : header->full_size; - - deallocate_memory(header, full_size, page); - } - - xml_memory_page* _root; - size_t _busy_size; - }; - - PUGI__FN_NO_INLINE void* xml_allocator::allocate_memory_oob(size_t size, xml_memory_page*& out_page) - { - const size_t large_allocation_threshold = xml_memory_page_size / 4; - - xml_memory_page* page = allocate_page(size <= large_allocation_threshold ? xml_memory_page_size : size); - out_page = page; - - if (!page) return 0; - - if (size <= large_allocation_threshold) - { - _root->busy_size = _busy_size; - - // insert page at the end of linked list - page->prev = _root; - _root->next = page; - _root = page; - - _busy_size = size; - } - else - { - // insert page before the end of linked list, so that it is deleted as soon as possible - // the last page is not deleted even if it's empty (see deallocate_memory) - assert(_root->prev); - - page->prev = _root->prev; - page->next = _root; - - _root->prev->next = page; - _root->prev = page; - } - - // allocate inside page - page->busy_size = size; - - return page->data; - } -PUGI__NS_END - -namespace pugi -{ - /// A 'name=value' XML attribute structure. - struct xml_attribute_struct - { - /// Default ctor - xml_attribute_struct(impl::xml_memory_page* page): header(reinterpret_cast(page)), name(0), value(0), prev_attribute_c(0), next_attribute(0) - { - } - - uintptr_t header; - - char_t* name; ///< Pointer to attribute name. - char_t* value; ///< Pointer to attribute value. - - xml_attribute_struct* prev_attribute_c; ///< Previous attribute (cyclic list) - xml_attribute_struct* next_attribute; ///< Next attribute - }; - - /// An XML document tree node. - struct xml_node_struct - { - /// Default ctor - /// \param type - node type - xml_node_struct(impl::xml_memory_page* page, xml_node_type type): header(reinterpret_cast(page) | (type - 1)), parent(0), name(0), value(0), first_child(0), prev_sibling_c(0), next_sibling(0), first_attribute(0) - { - } - - uintptr_t header; - - xml_node_struct* parent; ///< Pointer to parent - - char_t* name; ///< Pointer to element name. - char_t* value; ///< Pointer to any associated string data. - - xml_node_struct* first_child; ///< First child - - xml_node_struct* prev_sibling_c; ///< Left brother (cyclic list) - xml_node_struct* next_sibling; ///< Right brother - - xml_attribute_struct* first_attribute; ///< First attribute - }; -} - -PUGI__NS_BEGIN - struct xml_document_struct: public xml_node_struct, public xml_allocator - { - xml_document_struct(xml_memory_page* page): xml_node_struct(page, node_document), xml_allocator(page), buffer(0) - { - } - - const char_t* buffer; - }; - - inline xml_allocator& get_allocator(const xml_node_struct* node) - { - assert(node); - - return *reinterpret_cast(node->header & xml_memory_page_pointer_mask)->allocator; - } -PUGI__NS_END - -// Low-level DOM operations -PUGI__NS_BEGIN - inline xml_attribute_struct* allocate_attribute(xml_allocator& alloc) - { - xml_memory_page* page; - void* memory = alloc.allocate_memory(sizeof(xml_attribute_struct), page); - - return new (memory) xml_attribute_struct(page); - } - - inline xml_node_struct* allocate_node(xml_allocator& alloc, xml_node_type type) - { - xml_memory_page* page; - void* memory = alloc.allocate_memory(sizeof(xml_node_struct), page); - - return new (memory) xml_node_struct(page, type); - } - - inline void destroy_attribute(xml_attribute_struct* a, xml_allocator& alloc) - { - uintptr_t header = a->header; - - if (header & impl::xml_memory_page_name_allocated_mask) alloc.deallocate_string(a->name); - if (header & impl::xml_memory_page_value_allocated_mask) alloc.deallocate_string(a->value); - - alloc.deallocate_memory(a, sizeof(xml_attribute_struct), reinterpret_cast(header & xml_memory_page_pointer_mask)); - } - - inline void destroy_node(xml_node_struct* n, xml_allocator& alloc) - { - uintptr_t header = n->header; - - if (header & impl::xml_memory_page_name_allocated_mask) alloc.deallocate_string(n->name); - if (header & impl::xml_memory_page_value_allocated_mask) alloc.deallocate_string(n->value); - - for (xml_attribute_struct* attr = n->first_attribute; attr; ) - { - xml_attribute_struct* next = attr->next_attribute; - - destroy_attribute(attr, alloc); - - attr = next; - } - - for (xml_node_struct* child = n->first_child; child; ) - { - xml_node_struct* next = child->next_sibling; - - destroy_node(child, alloc); - - child = next; - } - - alloc.deallocate_memory(n, sizeof(xml_node_struct), reinterpret_cast(header & xml_memory_page_pointer_mask)); - } - - PUGI__FN_NO_INLINE xml_node_struct* append_node(xml_node_struct* node, xml_allocator& alloc, xml_node_type type = node_element) - { - xml_node_struct* child = allocate_node(alloc, type); - if (!child) return 0; - - child->parent = node; - - xml_node_struct* first_child = node->first_child; - - if (first_child) - { - xml_node_struct* last_child = first_child->prev_sibling_c; - - last_child->next_sibling = child; - child->prev_sibling_c = last_child; - first_child->prev_sibling_c = child; - } - else - { - node->first_child = child; - child->prev_sibling_c = child; - } - - return child; - } - - PUGI__FN_NO_INLINE xml_attribute_struct* append_attribute_ll(xml_node_struct* node, xml_allocator& alloc) - { - xml_attribute_struct* a = allocate_attribute(alloc); - if (!a) return 0; - - xml_attribute_struct* first_attribute = node->first_attribute; - - if (first_attribute) - { - xml_attribute_struct* last_attribute = first_attribute->prev_attribute_c; - - last_attribute->next_attribute = a; - a->prev_attribute_c = last_attribute; - first_attribute->prev_attribute_c = a; - } - else - { - node->first_attribute = a; - a->prev_attribute_c = a; - } - - return a; - } -PUGI__NS_END - -// Helper classes for code generation -PUGI__NS_BEGIN - struct opt_false - { - enum { value = 0 }; - }; - - struct opt_true - { - enum { value = 1 }; - }; -PUGI__NS_END - -// Unicode utilities -PUGI__NS_BEGIN - inline uint16_t endian_swap(uint16_t value) - { - return static_cast(((value & 0xff) << 8) | (value >> 8)); - } - - inline uint32_t endian_swap(uint32_t value) - { - return ((value & 0xff) << 24) | ((value & 0xff00) << 8) | ((value & 0xff0000) >> 8) | (value >> 24); - } - - struct utf8_counter - { - typedef size_t value_type; - - static value_type low(value_type result, uint32_t ch) - { - // U+0000..U+007F - if (ch < 0x80) return result + 1; - // U+0080..U+07FF - else if (ch < 0x800) return result + 2; - // U+0800..U+FFFF - else return result + 3; - } - - static value_type high(value_type result, uint32_t) - { - // U+10000..U+10FFFF - return result + 4; - } - }; - - struct utf8_writer - { - typedef uint8_t* value_type; - - static value_type low(value_type result, uint32_t ch) - { - // U+0000..U+007F - if (ch < 0x80) - { - *result = static_cast(ch); - return result + 1; - } - // U+0080..U+07FF - else if (ch < 0x800) - { - result[0] = static_cast(0xC0 | (ch >> 6)); - result[1] = static_cast(0x80 | (ch & 0x3F)); - return result + 2; - } - // U+0800..U+FFFF - else - { - result[0] = static_cast(0xE0 | (ch >> 12)); - result[1] = static_cast(0x80 | ((ch >> 6) & 0x3F)); - result[2] = static_cast(0x80 | (ch & 0x3F)); - return result + 3; - } - } - - static value_type high(value_type result, uint32_t ch) - { - // U+10000..U+10FFFF - result[0] = static_cast(0xF0 | (ch >> 18)); - result[1] = static_cast(0x80 | ((ch >> 12) & 0x3F)); - result[2] = static_cast(0x80 | ((ch >> 6) & 0x3F)); - result[3] = static_cast(0x80 | (ch & 0x3F)); - return result + 4; - } - - static value_type any(value_type result, uint32_t ch) - { - return (ch < 0x10000) ? low(result, ch) : high(result, ch); - } - }; - - struct utf16_counter - { - typedef size_t value_type; - - static value_type low(value_type result, uint32_t) - { - return result + 1; - } - - static value_type high(value_type result, uint32_t) - { - return result + 2; - } - }; - - struct utf16_writer - { - typedef uint16_t* value_type; - - static value_type low(value_type result, uint32_t ch) - { - *result = static_cast(ch); - - return result + 1; - } - - static value_type high(value_type result, uint32_t ch) - { - uint32_t msh = static_cast(ch - 0x10000) >> 10; - uint32_t lsh = static_cast(ch - 0x10000) & 0x3ff; - - result[0] = static_cast(0xD800 + msh); - result[1] = static_cast(0xDC00 + lsh); - - return result + 2; - } - - static value_type any(value_type result, uint32_t ch) - { - return (ch < 0x10000) ? low(result, ch) : high(result, ch); - } - }; - - struct utf32_counter - { - typedef size_t value_type; - - static value_type low(value_type result, uint32_t) - { - return result + 1; - } - - static value_type high(value_type result, uint32_t) - { - return result + 1; - } - }; - - struct utf32_writer - { - typedef uint32_t* value_type; - - static value_type low(value_type result, uint32_t ch) - { - *result = ch; - - return result + 1; - } - - static value_type high(value_type result, uint32_t ch) - { - *result = ch; - - return result + 1; - } - - static value_type any(value_type result, uint32_t ch) - { - *result = ch; - - return result + 1; - } - }; - - struct latin1_writer - { - typedef uint8_t* value_type; - - static value_type low(value_type result, uint32_t ch) - { - *result = static_cast(ch > 255 ? '?' : ch); - - return result + 1; - } - - static value_type high(value_type result, uint32_t ch) - { - (void)ch; - - *result = '?'; - - return result + 1; - } - }; - - template struct wchar_selector; - - template <> struct wchar_selector<2> - { - typedef uint16_t type; - typedef utf16_counter counter; - typedef utf16_writer writer; - }; - - template <> struct wchar_selector<4> - { - typedef uint32_t type; - typedef utf32_counter counter; - typedef utf32_writer writer; - }; - - typedef wchar_selector::counter wchar_counter; - typedef wchar_selector::writer wchar_writer; - - template struct utf_decoder - { - static inline typename Traits::value_type decode_utf8_block(const uint8_t* data, size_t size, typename Traits::value_type result) - { - const uint8_t utf8_byte_mask = 0x3f; - - while (size) - { - uint8_t lead = *data; - - // 0xxxxxxx -> U+0000..U+007F - if (lead < 0x80) - { - result = Traits::low(result, lead); - data += 1; - size -= 1; - - // process aligned single-byte (ascii) blocks - if ((reinterpret_cast(data) & 3) == 0) - { - // round-trip through void* to silence 'cast increases required alignment of target type' warnings - while (size >= 4 && (*static_cast(static_cast(data)) & 0x80808080) == 0) - { - result = Traits::low(result, data[0]); - result = Traits::low(result, data[1]); - result = Traits::low(result, data[2]); - result = Traits::low(result, data[3]); - data += 4; - size -= 4; - } - } - } - // 110xxxxx -> U+0080..U+07FF - else if (static_cast(lead - 0xC0) < 0x20 && size >= 2 && (data[1] & 0xc0) == 0x80) - { - result = Traits::low(result, ((lead & ~0xC0) << 6) | (data[1] & utf8_byte_mask)); - data += 2; - size -= 2; - } - // 1110xxxx -> U+0800-U+FFFF - else if (static_cast(lead - 0xE0) < 0x10 && size >= 3 && (data[1] & 0xc0) == 0x80 && (data[2] & 0xc0) == 0x80) - { - result = Traits::low(result, ((lead & ~0xE0) << 12) | ((data[1] & utf8_byte_mask) << 6) | (data[2] & utf8_byte_mask)); - data += 3; - size -= 3; - } - // 11110xxx -> U+10000..U+10FFFF - else if (static_cast(lead - 0xF0) < 0x08 && size >= 4 && (data[1] & 0xc0) == 0x80 && (data[2] & 0xc0) == 0x80 && (data[3] & 0xc0) == 0x80) - { - result = Traits::high(result, ((lead & ~0xF0) << 18) | ((data[1] & utf8_byte_mask) << 12) | ((data[2] & utf8_byte_mask) << 6) | (data[3] & utf8_byte_mask)); - data += 4; - size -= 4; - } - // 10xxxxxx or 11111xxx -> invalid - else - { - data += 1; - size -= 1; - } - } - - return result; - } - - static inline typename Traits::value_type decode_utf16_block(const uint16_t* data, size_t size, typename Traits::value_type result) - { - const uint16_t* end = data + size; - - while (data < end) - { - uint16_t lead = opt_swap::value ? endian_swap(*data) : *data; - - // U+0000..U+D7FF - if (lead < 0xD800) - { - result = Traits::low(result, lead); - data += 1; - } - // U+E000..U+FFFF - else if (static_cast(lead - 0xE000) < 0x2000) - { - result = Traits::low(result, lead); - data += 1; - } - // surrogate pair lead - else if (static_cast(lead - 0xD800) < 0x400 && data + 1 < end) - { - uint16_t next = opt_swap::value ? endian_swap(data[1]) : data[1]; - - if (static_cast(next - 0xDC00) < 0x400) - { - result = Traits::high(result, 0x10000 + ((lead & 0x3ff) << 10) + (next & 0x3ff)); - data += 2; - } - else - { - data += 1; - } - } - else - { - data += 1; - } - } - - return result; - } - - static inline typename Traits::value_type decode_utf32_block(const uint32_t* data, size_t size, typename Traits::value_type result) - { - const uint32_t* end = data + size; - - while (data < end) - { - uint32_t lead = opt_swap::value ? endian_swap(*data) : *data; - - // U+0000..U+FFFF - if (lead < 0x10000) - { - result = Traits::low(result, lead); - data += 1; - } - // U+10000..U+10FFFF - else - { - result = Traits::high(result, lead); - data += 1; - } - } - - return result; - } - - static inline typename Traits::value_type decode_latin1_block(const uint8_t* data, size_t size, typename Traits::value_type result) - { - for (size_t i = 0; i < size; ++i) - { - result = Traits::low(result, data[i]); - } - - return result; - } - - static inline typename Traits::value_type decode_wchar_block_impl(const uint16_t* data, size_t size, typename Traits::value_type result) - { - return decode_utf16_block(data, size, result); - } - - static inline typename Traits::value_type decode_wchar_block_impl(const uint32_t* data, size_t size, typename Traits::value_type result) - { - return decode_utf32_block(data, size, result); - } - - static inline typename Traits::value_type decode_wchar_block(const wchar_t* data, size_t size, typename Traits::value_type result) - { - return decode_wchar_block_impl(reinterpret_cast::type*>(data), size, result); - } - }; - - template PUGI__FN void convert_utf_endian_swap(T* result, const T* data, size_t length) - { - for (size_t i = 0; i < length; ++i) result[i] = endian_swap(data[i]); - } - -#ifdef PUGIXML_WCHAR_MODE - PUGI__FN void convert_wchar_endian_swap(wchar_t* result, const wchar_t* data, size_t length) - { - for (size_t i = 0; i < length; ++i) result[i] = static_cast(endian_swap(static_cast::type>(data[i]))); - } -#endif -PUGI__NS_END - -PUGI__NS_BEGIN - enum chartype_t - { - ct_parse_pcdata = 1, // \0, &, \r, < - ct_parse_attr = 2, // \0, &, \r, ', " - ct_parse_attr_ws = 4, // \0, &, \r, ', ", \n, tab - ct_space = 8, // \r, \n, space, tab - ct_parse_cdata = 16, // \0, ], >, \r - ct_parse_comment = 32, // \0, -, >, \r - ct_symbol = 64, // Any symbol > 127, a-z, A-Z, 0-9, _, :, -, . - ct_start_symbol = 128 // Any symbol > 127, a-z, A-Z, _, : - }; - - static const unsigned char chartype_table[256] = - { - 55, 0, 0, 0, 0, 0, 0, 0, 0, 12, 12, 0, 0, 63, 0, 0, // 0-15 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16-31 - 8, 0, 6, 0, 0, 0, 7, 6, 0, 0, 0, 0, 0, 96, 64, 0, // 32-47 - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 192, 0, 1, 0, 48, 0, // 48-63 - 0, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, // 64-79 - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 0, 0, 16, 0, 192, // 80-95 - 0, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, // 96-111 - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 0, 0, 0, 0, 0, // 112-127 - - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, // 128+ - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192 - }; - - enum chartypex_t - { - ctx_special_pcdata = 1, // Any symbol >= 0 and < 32 (except \t, \r, \n), &, <, > - ctx_special_attr = 2, // Any symbol >= 0 and < 32 (except \t), &, <, >, " - ctx_start_symbol = 4, // Any symbol > 127, a-z, A-Z, _ - ctx_digit = 8, // 0-9 - ctx_symbol = 16 // Any symbol > 127, a-z, A-Z, 0-9, _, -, . - }; - - static const unsigned char chartypex_table[256] = - { - 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 2, 3, 3, 2, 3, 3, // 0-15 - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, // 16-31 - 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 16, 16, 0, // 32-47 - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 0, 0, 3, 0, 3, 0, // 48-63 - - 0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, // 64-79 - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0, 0, 20, // 80-95 - 0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, // 96-111 - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0, 0, 0, // 112-127 - - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, // 128+ - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 - }; - -#ifdef PUGIXML_WCHAR_MODE - #define PUGI__IS_CHARTYPE_IMPL(c, ct, table) ((static_cast(c) < 128 ? table[static_cast(c)] : table[128]) & (ct)) -#else - #define PUGI__IS_CHARTYPE_IMPL(c, ct, table) (table[static_cast(c)] & (ct)) -#endif - - #define PUGI__IS_CHARTYPE(c, ct) PUGI__IS_CHARTYPE_IMPL(c, ct, chartype_table) - #define PUGI__IS_CHARTYPEX(c, ct) PUGI__IS_CHARTYPE_IMPL(c, ct, chartypex_table) - - PUGI__FN bool is_little_endian() - { - unsigned int ui = 1; - - return *reinterpret_cast(&ui) == 1; - } - - PUGI__FN xml_encoding get_wchar_encoding() - { - PUGI__STATIC_ASSERT(sizeof(wchar_t) == 2 || sizeof(wchar_t) == 4); - - if (sizeof(wchar_t) == 2) - return is_little_endian() ? encoding_utf16_le : encoding_utf16_be; - else - return is_little_endian() ? encoding_utf32_le : encoding_utf32_be; - } - - PUGI__FN xml_encoding guess_buffer_encoding(uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3) - { - // look for BOM in first few bytes - if (d0 == 0 && d1 == 0 && d2 == 0xfe && d3 == 0xff) return encoding_utf32_be; - if (d0 == 0xff && d1 == 0xfe && d2 == 0 && d3 == 0) return encoding_utf32_le; - if (d0 == 0xfe && d1 == 0xff) return encoding_utf16_be; - if (d0 == 0xff && d1 == 0xfe) return encoding_utf16_le; - if (d0 == 0xef && d1 == 0xbb && d2 == 0xbf) return encoding_utf8; - - // look for <, (contents); - - PUGI__DMC_VOLATILE uint8_t d0 = data[0], d1 = data[1], d2 = data[2], d3 = data[3]; - - return guess_buffer_encoding(d0, d1, d2, d3); - } - - PUGI__FN bool get_mutable_buffer(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, bool is_mutable) - { - if (is_mutable) - { - out_buffer = static_cast(const_cast(contents)); - } - else - { - void* buffer = xml_memory::allocate(size > 0 ? size : 1); - if (!buffer) return false; - - memcpy(buffer, contents, size); - - out_buffer = static_cast(buffer); - } - - out_length = size / sizeof(char_t); - - return true; - } - -#ifdef PUGIXML_WCHAR_MODE - PUGI__FN bool need_endian_swap_utf(xml_encoding le, xml_encoding re) - { - return (le == encoding_utf16_be && re == encoding_utf16_le) || (le == encoding_utf16_le && re == encoding_utf16_be) || - (le == encoding_utf32_be && re == encoding_utf32_le) || (le == encoding_utf32_le && re == encoding_utf32_be); - } - - PUGI__FN bool convert_buffer_endian_swap(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, bool is_mutable) - { - const char_t* data = static_cast(contents); - - if (is_mutable) - { - out_buffer = const_cast(data); - } - else - { - out_buffer = static_cast(xml_memory::allocate(size > 0 ? size : 1)); - if (!out_buffer) return false; - } - - out_length = size / sizeof(char_t); - - convert_wchar_endian_swap(out_buffer, data, out_length); - - return true; - } - - PUGI__FN bool convert_buffer_utf8(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size) - { - const uint8_t* data = static_cast(contents); - - // first pass: get length in wchar_t units - out_length = utf_decoder::decode_utf8_block(data, size, 0); - - // allocate buffer of suitable length - out_buffer = static_cast(xml_memory::allocate((out_length > 0 ? out_length : 1) * sizeof(char_t))); - if (!out_buffer) return false; - - // second pass: convert utf8 input to wchar_t - wchar_writer::value_type out_begin = reinterpret_cast(out_buffer); - wchar_writer::value_type out_end = utf_decoder::decode_utf8_block(data, size, out_begin); - - assert(out_end == out_begin + out_length); - (void)!out_end; - - return true; - } - - template PUGI__FN bool convert_buffer_utf16(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, opt_swap) - { - const uint16_t* data = static_cast(contents); - size_t length = size / sizeof(uint16_t); - - // first pass: get length in wchar_t units - out_length = utf_decoder::decode_utf16_block(data, length, 0); - - // allocate buffer of suitable length - out_buffer = static_cast(xml_memory::allocate((out_length > 0 ? out_length : 1) * sizeof(char_t))); - if (!out_buffer) return false; - - // second pass: convert utf16 input to wchar_t - wchar_writer::value_type out_begin = reinterpret_cast(out_buffer); - wchar_writer::value_type out_end = utf_decoder::decode_utf16_block(data, length, out_begin); - - assert(out_end == out_begin + out_length); - (void)!out_end; - - return true; - } - - template PUGI__FN bool convert_buffer_utf32(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, opt_swap) - { - const uint32_t* data = static_cast(contents); - size_t length = size / sizeof(uint32_t); - - // first pass: get length in wchar_t units - out_length = utf_decoder::decode_utf32_block(data, length, 0); - - // allocate buffer of suitable length - out_buffer = static_cast(xml_memory::allocate((out_length > 0 ? out_length : 1) * sizeof(char_t))); - if (!out_buffer) return false; - - // second pass: convert utf32 input to wchar_t - wchar_writer::value_type out_begin = reinterpret_cast(out_buffer); - wchar_writer::value_type out_end = utf_decoder::decode_utf32_block(data, length, out_begin); - - assert(out_end == out_begin + out_length); - (void)!out_end; - - return true; - } - - PUGI__FN bool convert_buffer_latin1(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size) - { - const uint8_t* data = static_cast(contents); - - // get length in wchar_t units - out_length = size; - - // allocate buffer of suitable length - out_buffer = static_cast(xml_memory::allocate((out_length > 0 ? out_length : 1) * sizeof(char_t))); - if (!out_buffer) return false; - - // convert latin1 input to wchar_t - wchar_writer::value_type out_begin = reinterpret_cast(out_buffer); - wchar_writer::value_type out_end = utf_decoder::decode_latin1_block(data, size, out_begin); - - assert(out_end == out_begin + out_length); - (void)!out_end; - - return true; - } - - PUGI__FN bool convert_buffer(char_t*& out_buffer, size_t& out_length, xml_encoding encoding, const void* contents, size_t size, bool is_mutable) - { - // get native encoding - xml_encoding wchar_encoding = get_wchar_encoding(); - - // fast path: no conversion required - if (encoding == wchar_encoding) return get_mutable_buffer(out_buffer, out_length, contents, size, is_mutable); - - // only endian-swapping is required - if (need_endian_swap_utf(encoding, wchar_encoding)) return convert_buffer_endian_swap(out_buffer, out_length, contents, size, is_mutable); - - // source encoding is utf8 - if (encoding == encoding_utf8) return convert_buffer_utf8(out_buffer, out_length, contents, size); - - // source encoding is utf16 - if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) - { - xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; - - return (native_encoding == encoding) ? - convert_buffer_utf16(out_buffer, out_length, contents, size, opt_false()) : - convert_buffer_utf16(out_buffer, out_length, contents, size, opt_true()); - } - - // source encoding is utf32 - if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) - { - xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; - - return (native_encoding == encoding) ? - convert_buffer_utf32(out_buffer, out_length, contents, size, opt_false()) : - convert_buffer_utf32(out_buffer, out_length, contents, size, opt_true()); - } - - // source encoding is latin1 - if (encoding == encoding_latin1) return convert_buffer_latin1(out_buffer, out_length, contents, size); - - assert(!"Invalid encoding"); - return false; - } -#else - template PUGI__FN bool convert_buffer_utf16(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, opt_swap) - { - const uint16_t* data = static_cast(contents); - size_t length = size / sizeof(uint16_t); - - // first pass: get length in utf8 units - out_length = utf_decoder::decode_utf16_block(data, length, 0); - - // allocate buffer of suitable length - out_buffer = static_cast(xml_memory::allocate((out_length > 0 ? out_length : 1) * sizeof(char_t))); - if (!out_buffer) return false; - - // second pass: convert utf16 input to utf8 - uint8_t* out_begin = reinterpret_cast(out_buffer); - uint8_t* out_end = utf_decoder::decode_utf16_block(data, length, out_begin); - - assert(out_end == out_begin + out_length); - (void)!out_end; - - return true; - } - - template PUGI__FN bool convert_buffer_utf32(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, opt_swap) - { - const uint32_t* data = static_cast(contents); - size_t length = size / sizeof(uint32_t); - - // first pass: get length in utf8 units - out_length = utf_decoder::decode_utf32_block(data, length, 0); - - // allocate buffer of suitable length - out_buffer = static_cast(xml_memory::allocate((out_length > 0 ? out_length : 1) * sizeof(char_t))); - if (!out_buffer) return false; - - // second pass: convert utf32 input to utf8 - uint8_t* out_begin = reinterpret_cast(out_buffer); - uint8_t* out_end = utf_decoder::decode_utf32_block(data, length, out_begin); - - assert(out_end == out_begin + out_length); - (void)!out_end; - - return true; - } - - PUGI__FN size_t get_latin1_7bit_prefix_length(const uint8_t* data, size_t size) - { - for (size_t i = 0; i < size; ++i) - if (data[i] > 127) - return i; - - return size; - } - - PUGI__FN bool convert_buffer_latin1(char_t*& out_buffer, size_t& out_length, const void* contents, size_t size, bool is_mutable) - { - const uint8_t* data = static_cast(contents); - - // get size of prefix that does not need utf8 conversion - size_t prefix_length = get_latin1_7bit_prefix_length(data, size); - assert(prefix_length <= size); - - const uint8_t* postfix = data + prefix_length; - size_t postfix_length = size - prefix_length; - - // if no conversion is needed, just return the original buffer - if (postfix_length == 0) return get_mutable_buffer(out_buffer, out_length, contents, size, is_mutable); - - // first pass: get length in utf8 units - out_length = prefix_length + utf_decoder::decode_latin1_block(postfix, postfix_length, 0); - - // allocate buffer of suitable length - out_buffer = static_cast(xml_memory::allocate((out_length > 0 ? out_length : 1) * sizeof(char_t))); - if (!out_buffer) return false; - - // second pass: convert latin1 input to utf8 - memcpy(out_buffer, data, prefix_length); - - uint8_t* out_begin = reinterpret_cast(out_buffer); - uint8_t* out_end = utf_decoder::decode_latin1_block(postfix, postfix_length, out_begin + prefix_length); - - assert(out_end == out_begin + out_length); - (void)!out_end; - - return true; - } - - PUGI__FN bool convert_buffer(char_t*& out_buffer, size_t& out_length, xml_encoding encoding, const void* contents, size_t size, bool is_mutable) - { - // fast path: no conversion required - if (encoding == encoding_utf8) return get_mutable_buffer(out_buffer, out_length, contents, size, is_mutable); - - // source encoding is utf16 - if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) - { - xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; - - return (native_encoding == encoding) ? - convert_buffer_utf16(out_buffer, out_length, contents, size, opt_false()) : - convert_buffer_utf16(out_buffer, out_length, contents, size, opt_true()); - } - - // source encoding is utf32 - if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) - { - xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; - - return (native_encoding == encoding) ? - convert_buffer_utf32(out_buffer, out_length, contents, size, opt_false()) : - convert_buffer_utf32(out_buffer, out_length, contents, size, opt_true()); - } - - // source encoding is latin1 - if (encoding == encoding_latin1) return convert_buffer_latin1(out_buffer, out_length, contents, size, is_mutable); - - assert(!"Invalid encoding"); - return false; - } -#endif - - PUGI__FN size_t as_utf8_begin(const wchar_t* str, size_t length) - { - // get length in utf8 characters - return utf_decoder::decode_wchar_block(str, length, 0); - } - - PUGI__FN void as_utf8_end(char* buffer, size_t size, const wchar_t* str, size_t length) - { - // convert to utf8 - uint8_t* begin = reinterpret_cast(buffer); - uint8_t* end = utf_decoder::decode_wchar_block(str, length, begin); - - assert(begin + size == end); - (void)!end; - - // zero-terminate - buffer[size] = 0; - } - -#ifndef PUGIXML_NO_STL - PUGI__FN std::string as_utf8_impl(const wchar_t* str, size_t length) - { - // first pass: get length in utf8 characters - size_t size = as_utf8_begin(str, length); - - // allocate resulting string - std::string result; - result.resize(size); - - // second pass: convert to utf8 - if (size > 0) as_utf8_end(&result[0], size, str, length); - - return result; - } - - PUGI__FN std::basic_string as_wide_impl(const char* str, size_t size) - { - const uint8_t* data = reinterpret_cast(str); - - // first pass: get length in wchar_t units - size_t length = utf_decoder::decode_utf8_block(data, size, 0); - - // allocate resulting string - std::basic_string result; - result.resize(length); - - // second pass: convert to wchar_t - if (length > 0) - { - wchar_writer::value_type begin = reinterpret_cast(&result[0]); - wchar_writer::value_type end = utf_decoder::decode_utf8_block(data, size, begin); - - assert(begin + length == end); - (void)!end; - } - - return result; - } -#endif - - inline bool strcpy_insitu_allow(size_t length, uintptr_t allocated, char_t* target) - { - assert(target); - size_t target_length = strlength(target); - - // always reuse document buffer memory if possible - if (!allocated) return target_length >= length; - - // reuse heap memory if waste is not too great - const size_t reuse_threshold = 32; - - return target_length >= length && (target_length < reuse_threshold || target_length - length < target_length / 2); - } - - PUGI__FN bool strcpy_insitu(char_t*& dest, uintptr_t& header, uintptr_t header_mask, const char_t* source) - { - size_t source_length = strlength(source); - - if (source_length == 0) - { - // empty string and null pointer are equivalent, so just deallocate old memory - xml_allocator* alloc = reinterpret_cast(header & xml_memory_page_pointer_mask)->allocator; - - if (header & header_mask) alloc->deallocate_string(dest); - - // mark the string as not allocated - dest = 0; - header &= ~header_mask; - - return true; - } - else if (dest && strcpy_insitu_allow(source_length, header & header_mask, dest)) - { - // we can reuse old buffer, so just copy the new data (including zero terminator) - memcpy(dest, source, (source_length + 1) * sizeof(char_t)); - - return true; - } - else - { - xml_allocator* alloc = reinterpret_cast(header & xml_memory_page_pointer_mask)->allocator; - - // allocate new buffer - char_t* buf = alloc->allocate_string(source_length + 1); - if (!buf) return false; - - // copy the string (including zero terminator) - memcpy(buf, source, (source_length + 1) * sizeof(char_t)); - - // deallocate old buffer (*after* the above to protect against overlapping memory and/or allocation failures) - if (header & header_mask) alloc->deallocate_string(dest); - - // the string is now allocated, so set the flag - dest = buf; - header |= header_mask; - - return true; - } - } - - struct gap - { - char_t* end; - size_t size; - - gap(): end(0), size(0) - { - } - - // Push new gap, move s count bytes further (skipping the gap). - // Collapse previous gap. - void push(char_t*& s, size_t count) - { - if (end) // there was a gap already; collapse it - { - // Move [old_gap_end, new_gap_start) to [old_gap_start, ...) - assert(s >= end); - memmove(end - size, end, reinterpret_cast(s) - reinterpret_cast(end)); - } - - s += count; // end of current gap - - // "merge" two gaps - end = s; - size += count; - } - - // Collapse all gaps, return past-the-end pointer - char_t* flush(char_t* s) - { - if (end) - { - // Move [old_gap_end, current_pos) to [old_gap_start, ...) - assert(s >= end); - memmove(end - size, end, reinterpret_cast(s) - reinterpret_cast(end)); - - return s - size; - } - else return s; - } - }; - - PUGI__FN char_t* strconv_escape(char_t* s, gap& g) - { - char_t* stre = s + 1; - - switch (*stre) - { - case '#': // &#... - { - unsigned int ucsc = 0; - - if (stre[1] == 'x') // &#x... (hex code) - { - stre += 2; - - char_t ch = *stre; - - if (ch == ';') return stre; - - for (;;) - { - if (static_cast(ch - '0') <= 9) - ucsc = 16 * ucsc + (ch - '0'); - else if (static_cast((ch | ' ') - 'a') <= 5) - ucsc = 16 * ucsc + ((ch | ' ') - 'a' + 10); - else if (ch == ';') - break; - else // cancel - return stre; - - ch = *++stre; - } - - ++stre; - } - else // &#... (dec code) - { - char_t ch = *++stre; - - if (ch == ';') return stre; - - for (;;) - { - if (static_cast(ch - '0') <= 9) - ucsc = 10 * ucsc + (ch - '0'); - else if (ch == ';') - break; - else // cancel - return stre; - - ch = *++stre; - } - - ++stre; - } - - #ifdef PUGIXML_WCHAR_MODE - s = reinterpret_cast(wchar_writer::any(reinterpret_cast(s), ucsc)); - #else - s = reinterpret_cast(utf8_writer::any(reinterpret_cast(s), ucsc)); - #endif - - g.push(s, stre - s); - return stre; - } - - case 'a': // &a - { - ++stre; - - if (*stre == 'm') // &am - { - if (*++stre == 'p' && *++stre == ';') // & - { - *s++ = '&'; - ++stre; - - g.push(s, stre - s); - return stre; - } - } - else if (*stre == 'p') // &ap - { - if (*++stre == 'o' && *++stre == 's' && *++stre == ';') // ' - { - *s++ = '\''; - ++stre; - - g.push(s, stre - s); - return stre; - } - } - break; - } - - case 'g': // &g - { - if (*++stre == 't' && *++stre == ';') // > - { - *s++ = '>'; - ++stre; - - g.push(s, stre - s); - return stre; - } - break; - } - - case 'l': // &l - { - if (*++stre == 't' && *++stre == ';') // < - { - *s++ = '<'; - ++stre; - - g.push(s, stre - s); - return stre; - } - break; - } - - case 'q': // &q - { - if (*++stre == 'u' && *++stre == 'o' && *++stre == 't' && *++stre == ';') // " - { - *s++ = '"'; - ++stre; - - g.push(s, stre - s); - return stre; - } - break; - } - - default: - break; - } - - return stre; - } - - // Utility macro for last character handling - #define ENDSWITH(c, e) ((c) == (e) || ((c) == 0 && endch == (e))) - - PUGI__FN char_t* strconv_comment(char_t* s, char_t endch) - { - gap g; - - while (true) - { - while (!PUGI__IS_CHARTYPE(*s, ct_parse_comment)) ++s; - - if (*s == '\r') // Either a single 0x0d or 0x0d 0x0a pair - { - *s++ = '\n'; // replace first one with 0x0a - - if (*s == '\n') g.push(s, 1); - } - else if (s[0] == '-' && s[1] == '-' && ENDSWITH(s[2], '>')) // comment ends here - { - *g.flush(s) = 0; - - return s + (s[2] == '>' ? 3 : 2); - } - else if (*s == 0) - { - return 0; - } - else ++s; - } - } - - PUGI__FN char_t* strconv_cdata(char_t* s, char_t endch) - { - gap g; - - while (true) - { - while (!PUGI__IS_CHARTYPE(*s, ct_parse_cdata)) ++s; - - if (*s == '\r') // Either a single 0x0d or 0x0d 0x0a pair - { - *s++ = '\n'; // replace first one with 0x0a - - if (*s == '\n') g.push(s, 1); - } - else if (s[0] == ']' && s[1] == ']' && ENDSWITH(s[2], '>')) // CDATA ends here - { - *g.flush(s) = 0; - - return s + 1; - } - else if (*s == 0) - { - return 0; - } - else ++s; - } - } - - typedef char_t* (*strconv_pcdata_t)(char_t*); - - template struct strconv_pcdata_impl - { - static char_t* parse(char_t* s) - { - gap g; - - while (true) - { - while (!PUGI__IS_CHARTYPE(*s, ct_parse_pcdata)) ++s; - - if (*s == '<') // PCDATA ends here - { - *g.flush(s) = 0; - - return s + 1; - } - else if (opt_eol::value && *s == '\r') // Either a single 0x0d or 0x0d 0x0a pair - { - *s++ = '\n'; // replace first one with 0x0a - - if (*s == '\n') g.push(s, 1); - } - else if (opt_escape::value && *s == '&') - { - s = strconv_escape(s, g); - } - else if (*s == 0) - { - return s; - } - else ++s; - } - } - }; - - PUGI__FN strconv_pcdata_t get_strconv_pcdata(unsigned int optmask) - { - PUGI__STATIC_ASSERT(parse_escapes == 0x10 && parse_eol == 0x20); - - switch ((optmask >> 4) & 3) // get bitmask for flags (eol escapes) - { - case 0: return strconv_pcdata_impl::parse; - case 1: return strconv_pcdata_impl::parse; - case 2: return strconv_pcdata_impl::parse; - case 3: return strconv_pcdata_impl::parse; - default: return 0; // should not get here - } - } - - typedef char_t* (*strconv_attribute_t)(char_t*, char_t); - - template struct strconv_attribute_impl - { - static char_t* parse_wnorm(char_t* s, char_t end_quote) - { - gap g; - - // trim leading whitespaces - if (PUGI__IS_CHARTYPE(*s, ct_space)) - { - char_t* str = s; - - do ++str; - while (PUGI__IS_CHARTYPE(*str, ct_space)); - - g.push(s, str - s); - } - - while (true) - { - while (!PUGI__IS_CHARTYPE(*s, ct_parse_attr_ws | ct_space)) ++s; - - if (*s == end_quote) - { - char_t* str = g.flush(s); - - do *str-- = 0; - while (PUGI__IS_CHARTYPE(*str, ct_space)); - - return s + 1; - } - else if (PUGI__IS_CHARTYPE(*s, ct_space)) - { - *s++ = ' '; - - if (PUGI__IS_CHARTYPE(*s, ct_space)) - { - char_t* str = s + 1; - while (PUGI__IS_CHARTYPE(*str, ct_space)) ++str; - - g.push(s, str - s); - } - } - else if (opt_escape::value && *s == '&') - { - s = strconv_escape(s, g); - } - else if (!*s) - { - return 0; - } - else ++s; - } - } - - static char_t* parse_wconv(char_t* s, char_t end_quote) - { - gap g; - - while (true) - { - while (!PUGI__IS_CHARTYPE(*s, ct_parse_attr_ws)) ++s; - - if (*s == end_quote) - { - *g.flush(s) = 0; - - return s + 1; - } - else if (PUGI__IS_CHARTYPE(*s, ct_space)) - { - if (*s == '\r') - { - *s++ = ' '; - - if (*s == '\n') g.push(s, 1); - } - else *s++ = ' '; - } - else if (opt_escape::value && *s == '&') - { - s = strconv_escape(s, g); - } - else if (!*s) - { - return 0; - } - else ++s; - } - } - - static char_t* parse_eol(char_t* s, char_t end_quote) - { - gap g; - - while (true) - { - while (!PUGI__IS_CHARTYPE(*s, ct_parse_attr)) ++s; - - if (*s == end_quote) - { - *g.flush(s) = 0; - - return s + 1; - } - else if (*s == '\r') - { - *s++ = '\n'; - - if (*s == '\n') g.push(s, 1); - } - else if (opt_escape::value && *s == '&') - { - s = strconv_escape(s, g); - } - else if (!*s) - { - return 0; - } - else ++s; - } - } - - static char_t* parse_simple(char_t* s, char_t end_quote) - { - gap g; - - while (true) - { - while (!PUGI__IS_CHARTYPE(*s, ct_parse_attr)) ++s; - - if (*s == end_quote) - { - *g.flush(s) = 0; - - return s + 1; - } - else if (opt_escape::value && *s == '&') - { - s = strconv_escape(s, g); - } - else if (!*s) - { - return 0; - } - else ++s; - } - } - }; - - PUGI__FN strconv_attribute_t get_strconv_attribute(unsigned int optmask) - { - PUGI__STATIC_ASSERT(parse_escapes == 0x10 && parse_eol == 0x20 && parse_wconv_attribute == 0x40 && parse_wnorm_attribute == 0x80); - - switch ((optmask >> 4) & 15) // get bitmask for flags (wconv wnorm eol escapes) - { - case 0: return strconv_attribute_impl::parse_simple; - case 1: return strconv_attribute_impl::parse_simple; - case 2: return strconv_attribute_impl::parse_eol; - case 3: return strconv_attribute_impl::parse_eol; - case 4: return strconv_attribute_impl::parse_wconv; - case 5: return strconv_attribute_impl::parse_wconv; - case 6: return strconv_attribute_impl::parse_wconv; - case 7: return strconv_attribute_impl::parse_wconv; - case 8: return strconv_attribute_impl::parse_wnorm; - case 9: return strconv_attribute_impl::parse_wnorm; - case 10: return strconv_attribute_impl::parse_wnorm; - case 11: return strconv_attribute_impl::parse_wnorm; - case 12: return strconv_attribute_impl::parse_wnorm; - case 13: return strconv_attribute_impl::parse_wnorm; - case 14: return strconv_attribute_impl::parse_wnorm; - case 15: return strconv_attribute_impl::parse_wnorm; - default: return 0; // should not get here - } - } - - inline xml_parse_result make_parse_result(xml_parse_status status, ptrdiff_t offset = 0) - { - xml_parse_result result; - result.status = status; - result.offset = offset; - - return result; - } - - struct xml_parser - { - xml_allocator alloc; - char_t* error_offset; - xml_parse_status error_status; - - // Parser utilities. - #define PUGI__SKIPWS() { while (PUGI__IS_CHARTYPE(*s, ct_space)) ++s; } - #define PUGI__OPTSET(OPT) ( optmsk & (OPT) ) - #define PUGI__PUSHNODE(TYPE) { cursor = append_node(cursor, alloc, TYPE); if (!cursor) PUGI__THROW_ERROR(status_out_of_memory, s); } - #define PUGI__POPNODE() { cursor = cursor->parent; } - #define PUGI__SCANFOR(X) { while (*s != 0 && !(X)) ++s; } - #define PUGI__SCANWHILE(X) { while ((X)) ++s; } - #define PUGI__ENDSEG() { ch = *s; *s = 0; ++s; } - #define PUGI__THROW_ERROR(err, m) return error_offset = m, error_status = err, static_cast(0) - #define PUGI__CHECK_ERROR(err, m) { if (*s == 0) PUGI__THROW_ERROR(err, m); } - - xml_parser(const xml_allocator& alloc_): alloc(alloc_), error_offset(0), error_status(status_ok) - { - } - - // DOCTYPE consists of nested sections of the following possible types: - // , , "...", '...' - // - // - // First group can not contain nested groups - // Second group can contain nested groups of the same type - // Third group can contain all other groups - char_t* parse_doctype_primitive(char_t* s) - { - if (*s == '"' || *s == '\'') - { - // quoted string - char_t ch = *s++; - PUGI__SCANFOR(*s == ch); - if (!*s) PUGI__THROW_ERROR(status_bad_doctype, s); - - s++; - } - else if (s[0] == '<' && s[1] == '?') - { - // - s += 2; - PUGI__SCANFOR(s[0] == '?' && s[1] == '>'); // no need for ENDSWITH because ?> can't terminate proper doctype - if (!*s) PUGI__THROW_ERROR(status_bad_doctype, s); - - s += 2; - } - else if (s[0] == '<' && s[1] == '!' && s[2] == '-' && s[3] == '-') - { - s += 4; - PUGI__SCANFOR(s[0] == '-' && s[1] == '-' && s[2] == '>'); // no need for ENDSWITH because --> can't terminate proper doctype - if (!*s) PUGI__THROW_ERROR(status_bad_doctype, s); - - s += 4; - } - else PUGI__THROW_ERROR(status_bad_doctype, s); - - return s; - } - - char_t* parse_doctype_ignore(char_t* s) - { - assert(s[0] == '<' && s[1] == '!' && s[2] == '['); - s++; - - while (*s) - { - if (s[0] == '<' && s[1] == '!' && s[2] == '[') - { - // nested ignore section - s = parse_doctype_ignore(s); - if (!s) return s; - } - else if (s[0] == ']' && s[1] == ']' && s[2] == '>') - { - // ignore section end - s += 3; - - return s; - } - else s++; - } - - PUGI__THROW_ERROR(status_bad_doctype, s); - } - - char_t* parse_doctype_group(char_t* s, char_t endch, bool toplevel) - { - assert(s[0] == '<' && s[1] == '!'); - s++; - - while (*s) - { - if (s[0] == '<' && s[1] == '!' && s[2] != '-') - { - if (s[2] == '[') - { - // ignore - s = parse_doctype_ignore(s); - if (!s) return s; - } - else - { - // some control group - s = parse_doctype_group(s, endch, false); - if (!s) return s; - } - } - else if (s[0] == '<' || s[0] == '"' || s[0] == '\'') - { - // unknown tag (forbidden), or some primitive group - s = parse_doctype_primitive(s); - if (!s) return s; - } - else if (*s == '>') - { - s++; - - return s; - } - else s++; - } - - if (!toplevel || endch != '>') PUGI__THROW_ERROR(status_bad_doctype, s); - - return s; - } - - char_t* parse_exclamation(char_t* s, xml_node_struct* cursor, unsigned int optmsk, char_t endch) - { - // parse node contents, starting with exclamation mark - ++s; - - if (*s == '-') // 'value = s; // Save the offset. - } - - if (PUGI__OPTSET(parse_eol) && PUGI__OPTSET(parse_comments)) - { - s = strconv_comment(s, endch); - - if (!s) PUGI__THROW_ERROR(status_bad_comment, cursor->value); - } - else - { - // Scan for terminating '-->'. - PUGI__SCANFOR(s[0] == '-' && s[1] == '-' && ENDSWITH(s[2], '>')); - PUGI__CHECK_ERROR(status_bad_comment, s); - - if (PUGI__OPTSET(parse_comments)) - *s = 0; // Zero-terminate this segment at the first terminating '-'. - - s += (s[2] == '>' ? 3 : 2); // Step over the '\0->'. - } - } - else PUGI__THROW_ERROR(status_bad_comment, s); - } - else if (*s == '[') - { - // 'value = s; // Save the offset. - - if (PUGI__OPTSET(parse_eol)) - { - s = strconv_cdata(s, endch); - - if (!s) PUGI__THROW_ERROR(status_bad_cdata, cursor->value); - } - else - { - // Scan for terminating ']]>'. - PUGI__SCANFOR(s[0] == ']' && s[1] == ']' && ENDSWITH(s[2], '>')); - PUGI__CHECK_ERROR(status_bad_cdata, s); - - *s++ = 0; // Zero-terminate this segment. - } - } - else // Flagged for discard, but we still have to scan for the terminator. - { - // Scan for terminating ']]>'. - PUGI__SCANFOR(s[0] == ']' && s[1] == ']' && ENDSWITH(s[2], '>')); - PUGI__CHECK_ERROR(status_bad_cdata, s); - - ++s; - } - - s += (s[1] == '>' ? 2 : 1); // Step over the last ']>'. - } - else PUGI__THROW_ERROR(status_bad_cdata, s); - } - else if (s[0] == 'D' && s[1] == 'O' && s[2] == 'C' && s[3] == 'T' && s[4] == 'Y' && s[5] == 'P' && ENDSWITH(s[6], 'E')) - { - s -= 2; - - if (cursor->parent) PUGI__THROW_ERROR(status_bad_doctype, s); - - char_t* mark = s + 9; - - s = parse_doctype_group(s, endch, true); - if (!s) return s; - - if (PUGI__OPTSET(parse_doctype)) - { - while (PUGI__IS_CHARTYPE(*mark, ct_space)) ++mark; - - PUGI__PUSHNODE(node_doctype); - - cursor->value = mark; - - assert((s[0] == 0 && endch == '>') || s[-1] == '>'); - s[*s == 0 ? 0 : -1] = 0; - - PUGI__POPNODE(); - } - } - else if (*s == 0 && endch == '-') PUGI__THROW_ERROR(status_bad_comment, s); - else if (*s == 0 && endch == '[') PUGI__THROW_ERROR(status_bad_cdata, s); - else PUGI__THROW_ERROR(status_unrecognized_tag, s); - - return s; - } - - char_t* parse_question(char_t* s, xml_node_struct*& ref_cursor, unsigned int optmsk, char_t endch) - { - // load into registers - xml_node_struct* cursor = ref_cursor; - char_t ch = 0; - - // parse node contents, starting with question mark - ++s; - - // read PI target - char_t* target = s; - - if (!PUGI__IS_CHARTYPE(*s, ct_start_symbol)) PUGI__THROW_ERROR(status_bad_pi, s); - - PUGI__SCANWHILE(PUGI__IS_CHARTYPE(*s, ct_symbol)); - PUGI__CHECK_ERROR(status_bad_pi, s); - - // determine node type; stricmp / strcasecmp is not portable - bool declaration = (target[0] | ' ') == 'x' && (target[1] | ' ') == 'm' && (target[2] | ' ') == 'l' && target + 3 == s; - - if (declaration ? PUGI__OPTSET(parse_declaration) : PUGI__OPTSET(parse_pi)) - { - if (declaration) - { - // disallow non top-level declarations - if (cursor->parent) PUGI__THROW_ERROR(status_bad_pi, s); - - PUGI__PUSHNODE(node_declaration); - } - else - { - PUGI__PUSHNODE(node_pi); - } - - cursor->name = target; - - PUGI__ENDSEG(); - - // parse value/attributes - if (ch == '?') - { - // empty node - if (!ENDSWITH(*s, '>')) PUGI__THROW_ERROR(status_bad_pi, s); - s += (*s == '>'); - - PUGI__POPNODE(); - } - else if (PUGI__IS_CHARTYPE(ch, ct_space)) - { - PUGI__SKIPWS(); - - // scan for tag end - char_t* value = s; - - PUGI__SCANFOR(s[0] == '?' && ENDSWITH(s[1], '>')); - PUGI__CHECK_ERROR(status_bad_pi, s); - - if (declaration) - { - // replace ending ? with / so that 'element' terminates properly - *s = '/'; - - // we exit from this function with cursor at node_declaration, which is a signal to parse() to go to LOC_ATTRIBUTES - s = value; - } - else - { - // store value and step over > - cursor->value = value; - PUGI__POPNODE(); - - PUGI__ENDSEG(); - - s += (*s == '>'); - } - } - else PUGI__THROW_ERROR(status_bad_pi, s); - } - else - { - // scan for tag end - PUGI__SCANFOR(s[0] == '?' && ENDSWITH(s[1], '>')); - PUGI__CHECK_ERROR(status_bad_pi, s); - - s += (s[1] == '>' ? 2 : 1); - } - - // store from registers - ref_cursor = cursor; - - return s; - } - - char_t* parse(char_t* s, xml_node_struct* xmldoc, unsigned int optmsk, char_t endch) - { - strconv_attribute_t strconv_attribute = get_strconv_attribute(optmsk); - strconv_pcdata_t strconv_pcdata = get_strconv_pcdata(optmsk); - - char_t ch = 0; - xml_node_struct* cursor = xmldoc; - char_t* mark = s; - - while (*s != 0) - { - if (*s == '<') - { - ++s; - - LOC_TAG: - if (PUGI__IS_CHARTYPE(*s, ct_start_symbol)) // '<#...' - { - PUGI__PUSHNODE(node_element); // Append a new node to the tree. - - cursor->name = s; - - PUGI__SCANWHILE(PUGI__IS_CHARTYPE(*s, ct_symbol)); // Scan for a terminator. - PUGI__ENDSEG(); // Save char in 'ch', terminate & step over. - - if (ch == '>') - { - // end of tag - } - else if (PUGI__IS_CHARTYPE(ch, ct_space)) - { - LOC_ATTRIBUTES: - while (true) - { - PUGI__SKIPWS(); // Eat any whitespace. - - if (PUGI__IS_CHARTYPE(*s, ct_start_symbol)) // <... #... - { - xml_attribute_struct* a = append_attribute_ll(cursor, alloc); // Make space for this attribute. - if (!a) PUGI__THROW_ERROR(status_out_of_memory, s); - - a->name = s; // Save the offset. - - PUGI__SCANWHILE(PUGI__IS_CHARTYPE(*s, ct_symbol)); // Scan for a terminator. - PUGI__CHECK_ERROR(status_bad_attribute, s); //$ redundant, left for performance - - PUGI__ENDSEG(); // Save char in 'ch', terminate & step over. - PUGI__CHECK_ERROR(status_bad_attribute, s); //$ redundant, left for performance - - if (PUGI__IS_CHARTYPE(ch, ct_space)) - { - PUGI__SKIPWS(); // Eat any whitespace. - PUGI__CHECK_ERROR(status_bad_attribute, s); //$ redundant, left for performance - - ch = *s; - ++s; - } - - if (ch == '=') // '<... #=...' - { - PUGI__SKIPWS(); // Eat any whitespace. - - if (*s == '"' || *s == '\'') // '<... #="...' - { - ch = *s; // Save quote char to avoid breaking on "''" -or- '""'. - ++s; // Step over the quote. - a->value = s; // Save the offset. - - s = strconv_attribute(s, ch); - - if (!s) PUGI__THROW_ERROR(status_bad_attribute, a->value); - - // After this line the loop continues from the start; - // Whitespaces, / and > are ok, symbols and EOF are wrong, - // everything else will be detected - if (PUGI__IS_CHARTYPE(*s, ct_start_symbol)) PUGI__THROW_ERROR(status_bad_attribute, s); - } - else PUGI__THROW_ERROR(status_bad_attribute, s); - } - else PUGI__THROW_ERROR(status_bad_attribute, s); - } - else if (*s == '/') - { - ++s; - - if (*s == '>') - { - PUGI__POPNODE(); - s++; - break; - } - else if (*s == 0 && endch == '>') - { - PUGI__POPNODE(); - break; - } - else PUGI__THROW_ERROR(status_bad_start_element, s); - } - else if (*s == '>') - { - ++s; - - break; - } - else if (*s == 0 && endch == '>') - { - break; - } - else PUGI__THROW_ERROR(status_bad_start_element, s); - } - - // !!! - } - else if (ch == '/') // '<#.../' - { - if (!ENDSWITH(*s, '>')) PUGI__THROW_ERROR(status_bad_start_element, s); - - PUGI__POPNODE(); // Pop. - - s += (*s == '>'); - } - else if (ch == 0) - { - // we stepped over null terminator, backtrack & handle closing tag - --s; - - if (endch != '>') PUGI__THROW_ERROR(status_bad_start_element, s); - } - else PUGI__THROW_ERROR(status_bad_start_element, s); - } - else if (*s == '/') - { - ++s; - - char_t* name = cursor->name; - if (!name) PUGI__THROW_ERROR(status_end_element_mismatch, s); - - while (PUGI__IS_CHARTYPE(*s, ct_symbol)) - { - if (*s++ != *name++) PUGI__THROW_ERROR(status_end_element_mismatch, s); - } - - if (*name) - { - if (*s == 0 && name[0] == endch && name[1] == 0) PUGI__THROW_ERROR(status_bad_end_element, s); - else PUGI__THROW_ERROR(status_end_element_mismatch, s); - } - - PUGI__POPNODE(); // Pop. - - PUGI__SKIPWS(); - - if (*s == 0) - { - if (endch != '>') PUGI__THROW_ERROR(status_bad_end_element, s); - } - else - { - if (*s != '>') PUGI__THROW_ERROR(status_bad_end_element, s); - ++s; - } - } - else if (*s == '?') // 'header & xml_memory_page_type_mask) + 1 == node_declaration) goto LOC_ATTRIBUTES; - } - else if (*s == '!') // 'first_child) continue; - } - } - - s = mark; - - if (cursor->parent) - { - PUGI__PUSHNODE(node_pcdata); // Append a new node on the tree. - cursor->value = s; // Save the offset. - - s = strconv_pcdata(s); - - PUGI__POPNODE(); // Pop since this is a standalone. - - if (!*s) break; - } - else - { - PUGI__SCANFOR(*s == '<'); // '...<' - if (!*s) break; - - ++s; - } - - // We're after '<' - goto LOC_TAG; - } - } - - // check that last tag is closed - if (cursor != xmldoc) PUGI__THROW_ERROR(status_end_element_mismatch, s); - - return s; - } - - static xml_parse_result parse(char_t* buffer, size_t length, xml_node_struct* root, unsigned int optmsk) - { - xml_document_struct* xmldoc = static_cast(root); - - // store buffer for offset_debug - xmldoc->buffer = buffer; - - // early-out for empty documents - if (length == 0) return make_parse_result(status_ok); - - // create parser on stack - xml_parser parser(*xmldoc); - - // save last character and make buffer zero-terminated (speeds up parsing) - char_t endch = buffer[length - 1]; - buffer[length - 1] = 0; - - // perform actual parsing - parser.parse(buffer, xmldoc, optmsk, endch); - - xml_parse_result result = make_parse_result(parser.error_status, parser.error_offset ? parser.error_offset - buffer : 0); - assert(result.offset >= 0 && static_cast(result.offset) <= length); - - // update allocator state - *static_cast(xmldoc) = parser.alloc; - - // since we removed last character, we have to handle the only possible false positive - if (result && endch == '<') - { - // there's no possible well-formed document with < at the end - return make_parse_result(status_unrecognized_tag, length); - } - - return result; - } - }; - - // Output facilities - PUGI__FN xml_encoding get_write_native_encoding() - { - #ifdef PUGIXML_WCHAR_MODE - return get_wchar_encoding(); - #else - return encoding_utf8; - #endif - } - - PUGI__FN xml_encoding get_write_encoding(xml_encoding encoding) - { - // replace wchar encoding with utf implementation - if (encoding == encoding_wchar) return get_wchar_encoding(); - - // replace utf16 encoding with utf16 with specific endianness - if (encoding == encoding_utf16) return is_little_endian() ? encoding_utf16_le : encoding_utf16_be; - - // replace utf32 encoding with utf32 with specific endianness - if (encoding == encoding_utf32) return is_little_endian() ? encoding_utf32_le : encoding_utf32_be; - - // only do autodetection if no explicit encoding is requested - if (encoding != encoding_auto) return encoding; - - // assume utf8 encoding - return encoding_utf8; - } - -#ifdef PUGIXML_WCHAR_MODE - PUGI__FN size_t get_valid_length(const char_t* data, size_t length) - { - assert(length > 0); - - // discard last character if it's the lead of a surrogate pair - return (sizeof(wchar_t) == 2 && static_cast(static_cast(data[length - 1]) - 0xD800) < 0x400) ? length - 1 : length; - } - - PUGI__FN size_t convert_buffer(char_t* r_char, uint8_t* r_u8, uint16_t* r_u16, uint32_t* r_u32, const char_t* data, size_t length, xml_encoding encoding) - { - // only endian-swapping is required - if (need_endian_swap_utf(encoding, get_wchar_encoding())) - { - convert_wchar_endian_swap(r_char, data, length); - - return length * sizeof(char_t); - } - - // convert to utf8 - if (encoding == encoding_utf8) - { - uint8_t* dest = r_u8; - uint8_t* end = utf_decoder::decode_wchar_block(data, length, dest); - - return static_cast(end - dest); - } - - // convert to utf16 - if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) - { - uint16_t* dest = r_u16; - - // convert to native utf16 - uint16_t* end = utf_decoder::decode_wchar_block(data, length, dest); - - // swap if necessary - xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; - - if (native_encoding != encoding) convert_utf_endian_swap(dest, dest, static_cast(end - dest)); - - return static_cast(end - dest) * sizeof(uint16_t); - } - - // convert to utf32 - if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) - { - uint32_t* dest = r_u32; - - // convert to native utf32 - uint32_t* end = utf_decoder::decode_wchar_block(data, length, dest); - - // swap if necessary - xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; - - if (native_encoding != encoding) convert_utf_endian_swap(dest, dest, static_cast(end - dest)); - - return static_cast(end - dest) * sizeof(uint32_t); - } - - // convert to latin1 - if (encoding == encoding_latin1) - { - uint8_t* dest = r_u8; - uint8_t* end = utf_decoder::decode_wchar_block(data, length, dest); - - return static_cast(end - dest); - } - - assert(!"Invalid encoding"); - return 0; - } -#else - PUGI__FN size_t get_valid_length(const char_t* data, size_t length) - { - assert(length > 4); - - for (size_t i = 1; i <= 4; ++i) - { - uint8_t ch = static_cast(data[length - i]); - - // either a standalone character or a leading one - if ((ch & 0xc0) != 0x80) return length - i; - } - - // there are four non-leading characters at the end, sequence tail is broken so might as well process the whole chunk - return length; - } - - PUGI__FN size_t convert_buffer(char_t* /* r_char */, uint8_t* r_u8, uint16_t* r_u16, uint32_t* r_u32, const char_t* data, size_t length, xml_encoding encoding) - { - if (encoding == encoding_utf16_be || encoding == encoding_utf16_le) - { - uint16_t* dest = r_u16; - - // convert to native utf16 - uint16_t* end = utf_decoder::decode_utf8_block(reinterpret_cast(data), length, dest); - - // swap if necessary - xml_encoding native_encoding = is_little_endian() ? encoding_utf16_le : encoding_utf16_be; - - if (native_encoding != encoding) convert_utf_endian_swap(dest, dest, static_cast(end - dest)); - - return static_cast(end - dest) * sizeof(uint16_t); - } - - if (encoding == encoding_utf32_be || encoding == encoding_utf32_le) - { - uint32_t* dest = r_u32; - - // convert to native utf32 - uint32_t* end = utf_decoder::decode_utf8_block(reinterpret_cast(data), length, dest); - - // swap if necessary - xml_encoding native_encoding = is_little_endian() ? encoding_utf32_le : encoding_utf32_be; - - if (native_encoding != encoding) convert_utf_endian_swap(dest, dest, static_cast(end - dest)); - - return static_cast(end - dest) * sizeof(uint32_t); - } - - if (encoding == encoding_latin1) - { - uint8_t* dest = r_u8; - uint8_t* end = utf_decoder::decode_utf8_block(reinterpret_cast(data), length, dest); - - return static_cast(end - dest); - } - - assert(!"Invalid encoding"); - return 0; - } -#endif - - class xml_buffered_writer - { - xml_buffered_writer(const xml_buffered_writer&); - xml_buffered_writer& operator=(const xml_buffered_writer&); - - public: - xml_buffered_writer(xml_writer& writer_, xml_encoding user_encoding): writer(writer_), bufsize(0), encoding(get_write_encoding(user_encoding)) - { - PUGI__STATIC_ASSERT(bufcapacity >= 8); - } - - ~xml_buffered_writer() - { - flush(); - } - - void flush() - { - flush(buffer, bufsize); - bufsize = 0; - } - - void flush(const char_t* data, size_t size) - { - if (size == 0) return; - - // fast path, just write data - if (encoding == get_write_native_encoding()) - writer.write(data, size * sizeof(char_t)); - else - { - // convert chunk - size_t result = convert_buffer(scratch.data_char, scratch.data_u8, scratch.data_u16, scratch.data_u32, data, size, encoding); - assert(result <= sizeof(scratch)); - - // write data - writer.write(scratch.data_u8, result); - } - } - - void write(const char_t* data, size_t length) - { - if (bufsize + length > bufcapacity) - { - // flush the remaining buffer contents - flush(); - - // handle large chunks - if (length > bufcapacity) - { - if (encoding == get_write_native_encoding()) - { - // fast path, can just write data chunk - writer.write(data, length * sizeof(char_t)); - return; - } - - // need to convert in suitable chunks - while (length > bufcapacity) - { - // get chunk size by selecting such number of characters that are guaranteed to fit into scratch buffer - // and form a complete codepoint sequence (i.e. discard start of last codepoint if necessary) - size_t chunk_size = get_valid_length(data, bufcapacity); - - // convert chunk and write - flush(data, chunk_size); - - // iterate - data += chunk_size; - length -= chunk_size; - } - - // small tail is copied below - bufsize = 0; - } - } - - memcpy(buffer + bufsize, data, length * sizeof(char_t)); - bufsize += length; - } - - void write(const char_t* data) - { - write(data, strlength(data)); - } - - void write(char_t d0) - { - if (bufsize + 1 > bufcapacity) flush(); - - buffer[bufsize + 0] = d0; - bufsize += 1; - } - - void write(char_t d0, char_t d1) - { - if (bufsize + 2 > bufcapacity) flush(); - - buffer[bufsize + 0] = d0; - buffer[bufsize + 1] = d1; - bufsize += 2; - } - - void write(char_t d0, char_t d1, char_t d2) - { - if (bufsize + 3 > bufcapacity) flush(); - - buffer[bufsize + 0] = d0; - buffer[bufsize + 1] = d1; - buffer[bufsize + 2] = d2; - bufsize += 3; - } - - void write(char_t d0, char_t d1, char_t d2, char_t d3) - { - if (bufsize + 4 > bufcapacity) flush(); - - buffer[bufsize + 0] = d0; - buffer[bufsize + 1] = d1; - buffer[bufsize + 2] = d2; - buffer[bufsize + 3] = d3; - bufsize += 4; - } - - void write(char_t d0, char_t d1, char_t d2, char_t d3, char_t d4) - { - if (bufsize + 5 > bufcapacity) flush(); - - buffer[bufsize + 0] = d0; - buffer[bufsize + 1] = d1; - buffer[bufsize + 2] = d2; - buffer[bufsize + 3] = d3; - buffer[bufsize + 4] = d4; - bufsize += 5; - } - - void write(char_t d0, char_t d1, char_t d2, char_t d3, char_t d4, char_t d5) - { - if (bufsize + 6 > bufcapacity) flush(); - - buffer[bufsize + 0] = d0; - buffer[bufsize + 1] = d1; - buffer[bufsize + 2] = d2; - buffer[bufsize + 3] = d3; - buffer[bufsize + 4] = d4; - buffer[bufsize + 5] = d5; - bufsize += 6; - } - - // utf8 maximum expansion: x4 (-> utf32) - // utf16 maximum expansion: x2 (-> utf32) - // utf32 maximum expansion: x1 - enum - { - bufcapacitybytes = - #ifdef PUGIXML_MEMORY_OUTPUT_STACK - PUGIXML_MEMORY_OUTPUT_STACK - #else - 10240 - #endif - , - bufcapacity = bufcapacitybytes / (sizeof(char_t) + 4) - }; - - char_t buffer[bufcapacity]; - - union - { - uint8_t data_u8[4 * bufcapacity]; - uint16_t data_u16[2 * bufcapacity]; - uint32_t data_u32[bufcapacity]; - char_t data_char[bufcapacity]; - } scratch; - - xml_writer& writer; - size_t bufsize; - xml_encoding encoding; - }; - - PUGI__FN void text_output_escaped(xml_buffered_writer& writer, const char_t* s, chartypex_t type) - { - while (*s) - { - const char_t* prev = s; - - // While *s is a usual symbol - while (!PUGI__IS_CHARTYPEX(*s, type)) ++s; - - writer.write(prev, static_cast(s - prev)); - - switch (*s) - { - case 0: break; - case '&': - writer.write('&', 'a', 'm', 'p', ';'); - ++s; - break; - case '<': - writer.write('&', 'l', 't', ';'); - ++s; - break; - case '>': - writer.write('&', 'g', 't', ';'); - ++s; - break; - case '"': - writer.write('&', 'q', 'u', 'o', 't', ';'); - ++s; - break; - default: // s is not a usual symbol - { - unsigned int ch = static_cast(*s++); - assert(ch < 32); - - writer.write('&', '#', static_cast((ch / 10) + '0'), static_cast((ch % 10) + '0'), ';'); - } - } - } - } - - PUGI__FN void text_output(xml_buffered_writer& writer, const char_t* s, chartypex_t type, unsigned int flags) - { - if (flags & format_no_escapes) - writer.write(s); - else - text_output_escaped(writer, s, type); - } - - PUGI__FN void text_output_cdata(xml_buffered_writer& writer, const char_t* s) - { - do - { - writer.write('<', '!', '[', 'C', 'D'); - writer.write('A', 'T', 'A', '['); - - const char_t* prev = s; - - // look for ]]> sequence - we can't output it as is since it terminates CDATA - while (*s && !(s[0] == ']' && s[1] == ']' && s[2] == '>')) ++s; - - // skip ]] if we stopped at ]]>, > will go to the next CDATA section - if (*s) s += 2; - - writer.write(prev, static_cast(s - prev)); - - writer.write(']', ']', '>'); - } - while (*s); - } - - PUGI__FN void node_output_attributes(xml_buffered_writer& writer, const xml_node& node, unsigned int flags) - { - const char_t* default_name = PUGIXML_TEXT(":anonymous"); - - for (xml_attribute a = node.first_attribute(); a; a = a.next_attribute()) - { - writer.write(' '); - writer.write(a.name()[0] ? a.name() : default_name); - writer.write('=', '"'); - - text_output(writer, a.value(), ctx_special_attr, flags); - - writer.write('"'); - } - } - - PUGI__FN void node_output(xml_buffered_writer& writer, const xml_node& node, const char_t* indent, unsigned int flags, unsigned int depth) - { - const char_t* default_name = PUGIXML_TEXT(":anonymous"); - - if ((flags & format_indent) != 0 && (flags & format_raw) == 0) - for (unsigned int i = 0; i < depth; ++i) writer.write(indent); - - switch (node.type()) - { - case node_document: - { - for (xml_node n = node.first_child(); n; n = n.next_sibling()) - node_output(writer, n, indent, flags, depth); - break; - } - - case node_element: - { - const char_t* name = node.name()[0] ? node.name() : default_name; - - writer.write('<'); - writer.write(name); - - node_output_attributes(writer, node, flags); - - if (flags & format_raw) - { - if (!node.first_child()) - writer.write(' ', '/', '>'); - else - { - writer.write('>'); - - for (xml_node n = node.first_child(); n; n = n.next_sibling()) - node_output(writer, n, indent, flags, depth + 1); - - writer.write('<', '/'); - writer.write(name); - writer.write('>'); - } - } - else if (!node.first_child()) - writer.write(' ', '/', '>', '\n'); - else if (node.first_child() == node.last_child() && (node.first_child().type() == node_pcdata || node.first_child().type() == node_cdata)) - { - writer.write('>'); - - if (node.first_child().type() == node_pcdata) - text_output(writer, node.first_child().value(), ctx_special_pcdata, flags); - else - text_output_cdata(writer, node.first_child().value()); - - writer.write('<', '/'); - writer.write(name); - writer.write('>', '\n'); - } - else - { - writer.write('>', '\n'); - - for (xml_node n = node.first_child(); n; n = n.next_sibling()) - node_output(writer, n, indent, flags, depth + 1); - - if ((flags & format_indent) != 0 && (flags & format_raw) == 0) - for (unsigned int i = 0; i < depth; ++i) writer.write(indent); - - writer.write('<', '/'); - writer.write(name); - writer.write('>', '\n'); - } - - break; - } - - case node_pcdata: - text_output(writer, node.value(), ctx_special_pcdata, flags); - if ((flags & format_raw) == 0) writer.write('\n'); - break; - - case node_cdata: - text_output_cdata(writer, node.value()); - if ((flags & format_raw) == 0) writer.write('\n'); - break; - - case node_comment: - writer.write('<', '!', '-', '-'); - writer.write(node.value()); - writer.write('-', '-', '>'); - if ((flags & format_raw) == 0) writer.write('\n'); - break; - - case node_pi: - case node_declaration: - writer.write('<', '?'); - writer.write(node.name()[0] ? node.name() : default_name); - - if (node.type() == node_declaration) - { - node_output_attributes(writer, node, flags); - } - else if (node.value()[0]) - { - writer.write(' '); - writer.write(node.value()); - } - - writer.write('?', '>'); - if ((flags & format_raw) == 0) writer.write('\n'); - break; - - case node_doctype: - writer.write('<', '!', 'D', 'O', 'C'); - writer.write('T', 'Y', 'P', 'E'); - - if (node.value()[0]) - { - writer.write(' '); - writer.write(node.value()); - } - - writer.write('>'); - if ((flags & format_raw) == 0) writer.write('\n'); - break; - - default: - assert(!"Invalid node type"); - } - } - - inline bool has_declaration(const xml_node& node) - { - for (xml_node child = node.first_child(); child; child = child.next_sibling()) - { - xml_node_type type = child.type(); - - if (type == node_declaration) return true; - if (type == node_element) return false; - } - - return false; - } - - inline bool allow_insert_child(xml_node_type parent, xml_node_type child) - { - if (parent != node_document && parent != node_element) return false; - if (child == node_document || child == node_null) return false; - if (parent != node_document && (child == node_declaration || child == node_doctype)) return false; - - return true; - } - - PUGI__FN void recursive_copy_skip(xml_node& dest, const xml_node& source, const xml_node& skip) - { - assert(dest.type() == source.type()); - - switch (source.type()) - { - case node_element: - { - dest.set_name(source.name()); - - for (xml_attribute a = source.first_attribute(); a; a = a.next_attribute()) - dest.append_attribute(a.name()).set_value(a.value()); - - for (xml_node c = source.first_child(); c; c = c.next_sibling()) - { - if (c == skip) continue; - - xml_node cc = dest.append_child(c.type()); - assert(cc); - - recursive_copy_skip(cc, c, skip); - } - - break; - } - - case node_pcdata: - case node_cdata: - case node_comment: - case node_doctype: - dest.set_value(source.value()); - break; - - case node_pi: - dest.set_name(source.name()); - dest.set_value(source.value()); - break; - - case node_declaration: - { - dest.set_name(source.name()); - - for (xml_attribute a = source.first_attribute(); a; a = a.next_attribute()) - dest.append_attribute(a.name()).set_value(a.value()); - - break; - } - - default: - assert(!"Invalid node type"); - } - } - - inline bool is_text_node(xml_node_struct* node) - { - xml_node_type type = static_cast((node->header & impl::xml_memory_page_type_mask) + 1); - - return type == node_pcdata || type == node_cdata; - } - - // get value with conversion functions - PUGI__FN int get_value_int(const char_t* value, int def) - { - if (!value) return def; - - #ifdef PUGIXML_WCHAR_MODE - return static_cast(wcstol(value, 0, 10)); - #else - return static_cast(strtol(value, 0, 10)); - #endif - } - - PUGI__FN unsigned int get_value_uint(const char_t* value, unsigned int def) - { - if (!value) return def; - - #ifdef PUGIXML_WCHAR_MODE - return static_cast(wcstoul(value, 0, 10)); - #else - return static_cast(strtoul(value, 0, 10)); - #endif - } - - PUGI__FN double get_value_double(const char_t* value, double def) - { - if (!value) return def; - - #ifdef PUGIXML_WCHAR_MODE - return wcstod(value, 0); - #else - return strtod(value, 0); - #endif - } - - PUGI__FN float get_value_float(const char_t* value, float def) - { - if (!value) return def; - - #ifdef PUGIXML_WCHAR_MODE - return static_cast(wcstod(value, 0)); - #else - return static_cast(strtod(value, 0)); - #endif - } - - PUGI__FN bool get_value_bool(const char_t* value, bool def) - { - if (!value) return def; - - // only look at first char - char_t first = *value; - - // 1*, t* (true), T* (True), y* (yes), Y* (YES) - return (first == '1' || first == 't' || first == 'T' || first == 'y' || first == 'Y'); - } - - // set value with conversion functions - PUGI__FN bool set_value_buffer(char_t*& dest, uintptr_t& header, uintptr_t header_mask, char (&buf)[128]) - { - #ifdef PUGIXML_WCHAR_MODE - char_t wbuf[128]; - impl::widen_ascii(wbuf, buf); - - return strcpy_insitu(dest, header, header_mask, wbuf); - #else - return strcpy_insitu(dest, header, header_mask, buf); - #endif - } - - PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, int value) - { - char buf[128]; - sprintf(buf, "%d", value); - - return set_value_buffer(dest, header, header_mask, buf); - } - - PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, unsigned int value) - { - char buf[128]; - sprintf(buf, "%u", value); - - return set_value_buffer(dest, header, header_mask, buf); - } - - PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, double value) - { - char buf[128]; - sprintf(buf, "%g", value); - - return set_value_buffer(dest, header, header_mask, buf); - } - - PUGI__FN bool set_value_convert(char_t*& dest, uintptr_t& header, uintptr_t header_mask, bool value) - { - return strcpy_insitu(dest, header, header_mask, value ? PUGIXML_TEXT("true") : PUGIXML_TEXT("false")); - } - - // we need to get length of entire file to load it in memory; the only (relatively) sane way to do it is via seek/tell trick - PUGI__FN xml_parse_status get_file_size(FILE* file, size_t& out_result) - { - #if defined(PUGI__MSVC_CRT_VERSION) && PUGI__MSVC_CRT_VERSION >= 1400 && !defined(_WIN32_WCE) - // there are 64-bit versions of fseek/ftell, let's use them - typedef __int64 length_type; - - _fseeki64(file, 0, SEEK_END); - length_type length = _ftelli64(file); - _fseeki64(file, 0, SEEK_SET); - #elif defined(__MINGW32__) && !defined(__NO_MINGW_LFS) && !defined(__STRICT_ANSI__) - // there are 64-bit versions of fseek/ftell, let's use them - typedef off64_t length_type; - - fseeko64(file, 0, SEEK_END); - length_type length = ftello64(file); - fseeko64(file, 0, SEEK_SET); - #else - // if this is a 32-bit OS, long is enough; if this is a unix system, long is 64-bit, which is enough; otherwise we can't do anything anyway. - typedef long length_type; - - fseek(file, 0, SEEK_END); - length_type length = ftell(file); - fseek(file, 0, SEEK_SET); - #endif - - // check for I/O errors - if (length < 0) return status_io_error; - - // check for overflow - size_t result = static_cast(length); - - if (static_cast(result) != length) return status_out_of_memory; - - // finalize - out_result = result; - - return status_ok; - } - - PUGI__FN xml_parse_result load_file_impl(xml_document& doc, FILE* file, unsigned int options, xml_encoding encoding) - { - if (!file) return make_parse_result(status_file_not_found); - - // get file size (can result in I/O errors) - size_t size = 0; - xml_parse_status size_status = get_file_size(file, size); - - if (size_status != status_ok) - { - fclose(file); - return make_parse_result(size_status); - } - - // allocate buffer for the whole file - char* contents = static_cast(xml_memory::allocate(size > 0 ? size : 1)); - - if (!contents) - { - fclose(file); - return make_parse_result(status_out_of_memory); - } - - // read file in memory - size_t read_size = fread(contents, 1, size, file); - fclose(file); - - if (read_size != size) - { - xml_memory::deallocate(contents); - return make_parse_result(status_io_error); - } - - return doc.load_buffer_inplace_own(contents, size, options, encoding); - } - -#ifndef PUGIXML_NO_STL - template struct xml_stream_chunk - { - static xml_stream_chunk* create() - { - void* memory = xml_memory::allocate(sizeof(xml_stream_chunk)); - - return new (memory) xml_stream_chunk(); - } - - static void destroy(void* ptr) - { - xml_stream_chunk* chunk = static_cast(ptr); - - // free chunk chain - while (chunk) - { - xml_stream_chunk* next = chunk->next; - xml_memory::deallocate(chunk); - chunk = next; - } - } - - xml_stream_chunk(): next(0), size(0) - { - } - - xml_stream_chunk* next; - size_t size; - - T data[xml_memory_page_size / sizeof(T)]; - }; - - template PUGI__FN xml_parse_status load_stream_data_noseek(std::basic_istream& stream, void** out_buffer, size_t* out_size) - { - buffer_holder chunks(0, xml_stream_chunk::destroy); - - // read file to a chunk list - size_t total = 0; - xml_stream_chunk* last = 0; - - while (!stream.eof()) - { - // allocate new chunk - xml_stream_chunk* chunk = xml_stream_chunk::create(); - if (!chunk) return status_out_of_memory; - - // append chunk to list - if (last) last = last->next = chunk; - else chunks.data = last = chunk; - - // read data to chunk - stream.read(chunk->data, static_cast(sizeof(chunk->data) / sizeof(T))); - chunk->size = static_cast(stream.gcount()) * sizeof(T); - - // read may set failbit | eofbit in case gcount() is less than read length, so check for other I/O errors - if (stream.bad() || (!stream.eof() && stream.fail())) return status_io_error; - - // guard against huge files (chunk size is small enough to make this overflow check work) - if (total + chunk->size < total) return status_out_of_memory; - total += chunk->size; - } - - // copy chunk list to a contiguous buffer - char* buffer = static_cast(xml_memory::allocate(total)); - if (!buffer) return status_out_of_memory; - - char* write = buffer; - - for (xml_stream_chunk* chunk = static_cast*>(chunks.data); chunk; chunk = chunk->next) - { - assert(write + chunk->size <= buffer + total); - memcpy(write, chunk->data, chunk->size); - write += chunk->size; - } - - assert(write == buffer + total); - - // return buffer - *out_buffer = buffer; - *out_size = total; - - return status_ok; - } - - template PUGI__FN xml_parse_status load_stream_data_seek(std::basic_istream& stream, void** out_buffer, size_t* out_size) - { - // get length of remaining data in stream - typename std::basic_istream::pos_type pos = stream.tellg(); - stream.seekg(0, std::ios::end); - std::streamoff length = stream.tellg() - pos; - stream.seekg(pos); - - if (stream.fail() || pos < 0) return status_io_error; - - // guard against huge files - size_t read_length = static_cast(length); - - if (static_cast(read_length) != length || length < 0) return status_out_of_memory; - - // read stream data into memory (guard against stream exceptions with buffer holder) - buffer_holder buffer(xml_memory::allocate((read_length > 0 ? read_length : 1) * sizeof(T)), xml_memory::deallocate); - if (!buffer.data) return status_out_of_memory; - - stream.read(static_cast(buffer.data), static_cast(read_length)); - - // read may set failbit | eofbit in case gcount() is less than read_length (i.e. line ending conversion), so check for other I/O errors - if (stream.bad() || (!stream.eof() && stream.fail())) return status_io_error; - - // return buffer - size_t actual_length = static_cast(stream.gcount()); - assert(actual_length <= read_length); - - *out_buffer = buffer.release(); - *out_size = actual_length * sizeof(T); - - return status_ok; - } - - template PUGI__FN xml_parse_result load_stream_impl(xml_document& doc, std::basic_istream& stream, unsigned int options, xml_encoding encoding) - { - void* buffer = 0; - size_t size = 0; - - // load stream to memory (using seek-based implementation if possible, since it's faster and takes less memory) - xml_parse_status status = (stream.tellg() < 0) ? load_stream_data_noseek(stream, &buffer, &size) : load_stream_data_seek(stream, &buffer, &size); - if (status != status_ok) return make_parse_result(status); - - return doc.load_buffer_inplace_own(buffer, size, options, encoding); - } -#endif - -#if defined(PUGI__MSVC_CRT_VERSION) || defined(__BORLANDC__) || (defined(__MINGW32__) && !defined(__STRICT_ANSI__)) - PUGI__FN FILE* open_file_wide(const wchar_t* path, const wchar_t* mode) - { - return _wfopen(path, mode); - } -#else - PUGI__FN char* convert_path_heap(const wchar_t* str) - { - assert(str); - - // first pass: get length in utf8 characters - size_t length = wcslen(str); - size_t size = as_utf8_begin(str, length); - - // allocate resulting string - char* result = static_cast(xml_memory::allocate(size + 1)); - if (!result) return 0; - - // second pass: convert to utf8 - as_utf8_end(result, size, str, length); - - return result; - } - - PUGI__FN FILE* open_file_wide(const wchar_t* path, const wchar_t* mode) - { - // there is no standard function to open wide paths, so our best bet is to try utf8 path - char* path_utf8 = convert_path_heap(path); - if (!path_utf8) return 0; - - // convert mode to ASCII (we mirror _wfopen interface) - char mode_ascii[4] = {0}; - for (size_t i = 0; mode[i]; ++i) mode_ascii[i] = static_cast(mode[i]); - - // try to open the utf8 path - FILE* result = fopen(path_utf8, mode_ascii); - - // free dummy buffer - xml_memory::deallocate(path_utf8); - - return result; - } -#endif - - PUGI__FN bool save_file_impl(const xml_document& doc, FILE* file, const char_t* indent, unsigned int flags, xml_encoding encoding) - { - if (!file) return false; - - xml_writer_file writer(file); - doc.save(writer, indent, flags, encoding); - - int result = ferror(file); - - fclose(file); - - return result == 0; - } -PUGI__NS_END - -namespace pugi -{ - PUGI__FN xml_writer_file::xml_writer_file(void* file_): file(file_) - { - } - - PUGI__FN void xml_writer_file::write(const void* data, size_t size) - { - size_t result = fwrite(data, 1, size, static_cast(file)); - (void)!result; // unfortunately we can't do proper error handling here - } - -#ifndef PUGIXML_NO_STL - PUGI__FN xml_writer_stream::xml_writer_stream(std::basic_ostream >& stream): narrow_stream(&stream), wide_stream(0) - { - } - - PUGI__FN xml_writer_stream::xml_writer_stream(std::basic_ostream >& stream): narrow_stream(0), wide_stream(&stream) - { - } - - PUGI__FN void xml_writer_stream::write(const void* data, size_t size) - { - if (narrow_stream) - { - assert(!wide_stream); - narrow_stream->write(reinterpret_cast(data), static_cast(size)); - } - else - { - assert(wide_stream); - assert(size % sizeof(wchar_t) == 0); - - wide_stream->write(reinterpret_cast(data), static_cast(size / sizeof(wchar_t))); - } - } -#endif - - PUGI__FN xml_tree_walker::xml_tree_walker(): _depth(0) - { - } - - PUGI__FN xml_tree_walker::~xml_tree_walker() - { - } - - PUGI__FN int xml_tree_walker::depth() const - { - return _depth; - } - - PUGI__FN bool xml_tree_walker::begin(xml_node&) - { - return true; - } - - PUGI__FN bool xml_tree_walker::end(xml_node&) - { - return true; - } - - PUGI__FN xml_attribute::xml_attribute(): _attr(0) - { - } - - PUGI__FN xml_attribute::xml_attribute(xml_attribute_struct* attr): _attr(attr) - { - } - - PUGI__FN static void unspecified_bool_xml_attribute(xml_attribute***) - { - } - - PUGI__FN xml_attribute::operator xml_attribute::unspecified_bool_type() const - { - return _attr ? unspecified_bool_xml_attribute : 0; - } - - PUGI__FN bool xml_attribute::operator!() const - { - return !_attr; - } - - PUGI__FN bool xml_attribute::operator==(const xml_attribute& r) const - { - return (_attr == r._attr); - } - - PUGI__FN bool xml_attribute::operator!=(const xml_attribute& r) const - { - return (_attr != r._attr); - } - - PUGI__FN bool xml_attribute::operator<(const xml_attribute& r) const - { - return (_attr < r._attr); - } - - PUGI__FN bool xml_attribute::operator>(const xml_attribute& r) const - { - return (_attr > r._attr); - } - - PUGI__FN bool xml_attribute::operator<=(const xml_attribute& r) const - { - return (_attr <= r._attr); - } - - PUGI__FN bool xml_attribute::operator>=(const xml_attribute& r) const - { - return (_attr >= r._attr); - } - - PUGI__FN xml_attribute xml_attribute::next_attribute() const - { - return _attr ? xml_attribute(_attr->next_attribute) : xml_attribute(); - } - - PUGI__FN xml_attribute xml_attribute::previous_attribute() const - { - return _attr && _attr->prev_attribute_c->next_attribute ? xml_attribute(_attr->prev_attribute_c) : xml_attribute(); - } - - PUGI__FN const char_t* xml_attribute::as_string(const char_t* def) const - { - return (_attr && _attr->value) ? _attr->value : def; - } - - PUGI__FN int xml_attribute::as_int(int def) const - { - return impl::get_value_int(_attr ? _attr->value : 0, def); - } - - PUGI__FN unsigned int xml_attribute::as_uint(unsigned int def) const - { - return impl::get_value_uint(_attr ? _attr->value : 0, def); - } - - PUGI__FN double xml_attribute::as_double(double def) const - { - return impl::get_value_double(_attr ? _attr->value : 0, def); - } - - PUGI__FN float xml_attribute::as_float(float def) const - { - return impl::get_value_float(_attr ? _attr->value : 0, def); - } - - PUGI__FN bool xml_attribute::as_bool(bool def) const - { - return impl::get_value_bool(_attr ? _attr->value : 0, def); - } - - PUGI__FN bool xml_attribute::empty() const - { - return !_attr; - } - - PUGI__FN const char_t* xml_attribute::name() const - { - return (_attr && _attr->name) ? _attr->name : PUGIXML_TEXT(""); - } - - PUGI__FN const char_t* xml_attribute::value() const - { - return (_attr && _attr->value) ? _attr->value : PUGIXML_TEXT(""); - } - - PUGI__FN size_t xml_attribute::hash_value() const - { - return static_cast(reinterpret_cast(_attr) / sizeof(xml_attribute_struct)); - } - - PUGI__FN xml_attribute_struct* xml_attribute::internal_object() const - { - return _attr; - } - - PUGI__FN xml_attribute& xml_attribute::operator=(const char_t* rhs) - { - set_value(rhs); - return *this; - } - - PUGI__FN xml_attribute& xml_attribute::operator=(int rhs) - { - set_value(rhs); - return *this; - } - - PUGI__FN xml_attribute& xml_attribute::operator=(unsigned int rhs) - { - set_value(rhs); - return *this; - } - - PUGI__FN xml_attribute& xml_attribute::operator=(double rhs) - { - set_value(rhs); - return *this; - } - - PUGI__FN xml_attribute& xml_attribute::operator=(bool rhs) - { - set_value(rhs); - return *this; - } - - PUGI__FN bool xml_attribute::set_name(const char_t* rhs) - { - if (!_attr) return false; - - return impl::strcpy_insitu(_attr->name, _attr->header, impl::xml_memory_page_name_allocated_mask, rhs); - } - - PUGI__FN bool xml_attribute::set_value(const char_t* rhs) - { - if (!_attr) return false; - - return impl::strcpy_insitu(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); - } - - PUGI__FN bool xml_attribute::set_value(int rhs) - { - if (!_attr) return false; - - return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); - } - - PUGI__FN bool xml_attribute::set_value(unsigned int rhs) - { - if (!_attr) return false; - - return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); - } - - PUGI__FN bool xml_attribute::set_value(double rhs) - { - if (!_attr) return false; - - return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); - } - - PUGI__FN bool xml_attribute::set_value(bool rhs) - { - if (!_attr) return false; - - return impl::set_value_convert(_attr->value, _attr->header, impl::xml_memory_page_value_allocated_mask, rhs); - } - -#ifdef __BORLANDC__ - PUGI__FN bool operator&&(const xml_attribute& lhs, bool rhs) - { - return (bool)lhs && rhs; - } - - PUGI__FN bool operator||(const xml_attribute& lhs, bool rhs) - { - return (bool)lhs || rhs; - } -#endif - - PUGI__FN xml_node::xml_node(): _root(0) - { - } - - PUGI__FN xml_node::xml_node(xml_node_struct* p): _root(p) - { - } - - PUGI__FN static void unspecified_bool_xml_node(xml_node***) - { - } - - PUGI__FN xml_node::operator xml_node::unspecified_bool_type() const - { - return _root ? unspecified_bool_xml_node : 0; - } - - PUGI__FN bool xml_node::operator!() const - { - return !_root; - } - - PUGI__FN xml_node::iterator xml_node::begin() const - { - return iterator(_root ? _root->first_child : 0, _root); - } - - PUGI__FN xml_node::iterator xml_node::end() const - { - return iterator(0, _root); - } - - PUGI__FN xml_node::attribute_iterator xml_node::attributes_begin() const - { - return attribute_iterator(_root ? _root->first_attribute : 0, _root); - } - - PUGI__FN xml_node::attribute_iterator xml_node::attributes_end() const - { - return attribute_iterator(0, _root); - } - - PUGI__FN xml_object_range xml_node::children() const - { - return xml_object_range(begin(), end()); - } - - PUGI__FN xml_object_range xml_node::children(const char_t* name_) const - { - return xml_object_range(xml_named_node_iterator(child(name_), name_), xml_named_node_iterator()); - } - - PUGI__FN xml_object_range xml_node::attributes() const - { - return xml_object_range(attributes_begin(), attributes_end()); - } - - PUGI__FN bool xml_node::operator==(const xml_node& r) const - { - return (_root == r._root); - } - - PUGI__FN bool xml_node::operator!=(const xml_node& r) const - { - return (_root != r._root); - } - - PUGI__FN bool xml_node::operator<(const xml_node& r) const - { - return (_root < r._root); - } - - PUGI__FN bool xml_node::operator>(const xml_node& r) const - { - return (_root > r._root); - } - - PUGI__FN bool xml_node::operator<=(const xml_node& r) const - { - return (_root <= r._root); - } - - PUGI__FN bool xml_node::operator>=(const xml_node& r) const - { - return (_root >= r._root); - } - - PUGI__FN bool xml_node::empty() const - { - return !_root; - } - - PUGI__FN const char_t* xml_node::name() const - { - return (_root && _root->name) ? _root->name : PUGIXML_TEXT(""); - } - - PUGI__FN xml_node_type xml_node::type() const - { - return _root ? static_cast((_root->header & impl::xml_memory_page_type_mask) + 1) : node_null; - } - - PUGI__FN const char_t* xml_node::value() const - { - return (_root && _root->value) ? _root->value : PUGIXML_TEXT(""); - } - - PUGI__FN xml_node xml_node::child(const char_t* name_) const - { - if (!_root) return xml_node(); - - for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) - if (i->name && impl::strequal(name_, i->name)) return xml_node(i); - - return xml_node(); - } - - PUGI__FN xml_attribute xml_node::attribute(const char_t* name_) const - { - if (!_root) return xml_attribute(); - - for (xml_attribute_struct* i = _root->first_attribute; i; i = i->next_attribute) - if (i->name && impl::strequal(name_, i->name)) - return xml_attribute(i); - - return xml_attribute(); - } - - PUGI__FN xml_node xml_node::next_sibling(const char_t* name_) const - { - if (!_root) return xml_node(); - - for (xml_node_struct* i = _root->next_sibling; i; i = i->next_sibling) - if (i->name && impl::strequal(name_, i->name)) return xml_node(i); - - return xml_node(); - } - - PUGI__FN xml_node xml_node::next_sibling() const - { - if (!_root) return xml_node(); - - if (_root->next_sibling) return xml_node(_root->next_sibling); - else return xml_node(); - } - - PUGI__FN xml_node xml_node::previous_sibling(const char_t* name_) const - { - if (!_root) return xml_node(); - - for (xml_node_struct* i = _root->prev_sibling_c; i->next_sibling; i = i->prev_sibling_c) - if (i->name && impl::strequal(name_, i->name)) return xml_node(i); - - return xml_node(); - } - - PUGI__FN xml_node xml_node::previous_sibling() const - { - if (!_root) return xml_node(); - - if (_root->prev_sibling_c->next_sibling) return xml_node(_root->prev_sibling_c); - else return xml_node(); - } - - PUGI__FN xml_node xml_node::parent() const - { - return _root ? xml_node(_root->parent) : xml_node(); - } - - PUGI__FN xml_node xml_node::root() const - { - if (!_root) return xml_node(); - - impl::xml_memory_page* page = reinterpret_cast(_root->header & impl::xml_memory_page_pointer_mask); - - return xml_node(static_cast(page->allocator)); - } - - PUGI__FN xml_text xml_node::text() const - { - return xml_text(_root); - } - - PUGI__FN const char_t* xml_node::child_value() const - { - if (!_root) return PUGIXML_TEXT(""); - - for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) - if (i->value && impl::is_text_node(i)) - return i->value; - - return PUGIXML_TEXT(""); - } - - PUGI__FN const char_t* xml_node::child_value(const char_t* name_) const - { - return child(name_).child_value(); - } - - PUGI__FN xml_attribute xml_node::first_attribute() const - { - return _root ? xml_attribute(_root->first_attribute) : xml_attribute(); - } - - PUGI__FN xml_attribute xml_node::last_attribute() const - { - return _root && _root->first_attribute ? xml_attribute(_root->first_attribute->prev_attribute_c) : xml_attribute(); - } - - PUGI__FN xml_node xml_node::first_child() const - { - return _root ? xml_node(_root->first_child) : xml_node(); - } - - PUGI__FN xml_node xml_node::last_child() const - { - return _root && _root->first_child ? xml_node(_root->first_child->prev_sibling_c) : xml_node(); - } - - PUGI__FN bool xml_node::set_name(const char_t* rhs) - { - switch (type()) - { - case node_pi: - case node_declaration: - case node_element: - return impl::strcpy_insitu(_root->name, _root->header, impl::xml_memory_page_name_allocated_mask, rhs); - - default: - return false; - } - } - - PUGI__FN bool xml_node::set_value(const char_t* rhs) - { - switch (type()) - { - case node_pi: - case node_cdata: - case node_pcdata: - case node_comment: - case node_doctype: - return impl::strcpy_insitu(_root->value, _root->header, impl::xml_memory_page_value_allocated_mask, rhs); - - default: - return false; - } - } - - PUGI__FN xml_attribute xml_node::append_attribute(const char_t* name_) - { - if (type() != node_element && type() != node_declaration) return xml_attribute(); - - xml_attribute a(impl::append_attribute_ll(_root, impl::get_allocator(_root))); - a.set_name(name_); - - return a; - } - - PUGI__FN xml_attribute xml_node::prepend_attribute(const char_t* name_) - { - if (type() != node_element && type() != node_declaration) return xml_attribute(); - - xml_attribute a(impl::allocate_attribute(impl::get_allocator(_root))); - if (!a) return xml_attribute(); - - a.set_name(name_); - - xml_attribute_struct* head = _root->first_attribute; - - if (head) - { - a._attr->prev_attribute_c = head->prev_attribute_c; - head->prev_attribute_c = a._attr; - } - else - a._attr->prev_attribute_c = a._attr; - - a._attr->next_attribute = head; - _root->first_attribute = a._attr; - - return a; - } - - PUGI__FN xml_attribute xml_node::insert_attribute_before(const char_t* name_, const xml_attribute& attr) - { - if ((type() != node_element && type() != node_declaration) || attr.empty()) return xml_attribute(); - - // check that attribute belongs to *this - xml_attribute_struct* cur = attr._attr; - - while (cur->prev_attribute_c->next_attribute) cur = cur->prev_attribute_c; - - if (cur != _root->first_attribute) return xml_attribute(); - - xml_attribute a(impl::allocate_attribute(impl::get_allocator(_root))); - if (!a) return xml_attribute(); - - a.set_name(name_); - - if (attr._attr->prev_attribute_c->next_attribute) - attr._attr->prev_attribute_c->next_attribute = a._attr; - else - _root->first_attribute = a._attr; - - a._attr->prev_attribute_c = attr._attr->prev_attribute_c; - a._attr->next_attribute = attr._attr; - attr._attr->prev_attribute_c = a._attr; - - return a; - } - - PUGI__FN xml_attribute xml_node::insert_attribute_after(const char_t* name_, const xml_attribute& attr) - { - if ((type() != node_element && type() != node_declaration) || attr.empty()) return xml_attribute(); - - // check that attribute belongs to *this - xml_attribute_struct* cur = attr._attr; - - while (cur->prev_attribute_c->next_attribute) cur = cur->prev_attribute_c; - - if (cur != _root->first_attribute) return xml_attribute(); - - xml_attribute a(impl::allocate_attribute(impl::get_allocator(_root))); - if (!a) return xml_attribute(); - - a.set_name(name_); - - if (attr._attr->next_attribute) - attr._attr->next_attribute->prev_attribute_c = a._attr; - else - _root->first_attribute->prev_attribute_c = a._attr; - - a._attr->next_attribute = attr._attr->next_attribute; - a._attr->prev_attribute_c = attr._attr; - attr._attr->next_attribute = a._attr; - - return a; - } - - PUGI__FN xml_attribute xml_node::append_copy(const xml_attribute& proto) - { - if (!proto) return xml_attribute(); - - xml_attribute result = append_attribute(proto.name()); - result.set_value(proto.value()); - - return result; - } - - PUGI__FN xml_attribute xml_node::prepend_copy(const xml_attribute& proto) - { - if (!proto) return xml_attribute(); - - xml_attribute result = prepend_attribute(proto.name()); - result.set_value(proto.value()); - - return result; - } - - PUGI__FN xml_attribute xml_node::insert_copy_after(const xml_attribute& proto, const xml_attribute& attr) - { - if (!proto) return xml_attribute(); - - xml_attribute result = insert_attribute_after(proto.name(), attr); - result.set_value(proto.value()); - - return result; - } - - PUGI__FN xml_attribute xml_node::insert_copy_before(const xml_attribute& proto, const xml_attribute& attr) - { - if (!proto) return xml_attribute(); - - xml_attribute result = insert_attribute_before(proto.name(), attr); - result.set_value(proto.value()); - - return result; - } - - PUGI__FN xml_node xml_node::append_child(xml_node_type type_) - { - if (!impl::allow_insert_child(this->type(), type_)) return xml_node(); - - xml_node n(impl::append_node(_root, impl::get_allocator(_root), type_)); - - if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); - - return n; - } - - PUGI__FN xml_node xml_node::prepend_child(xml_node_type type_) - { - if (!impl::allow_insert_child(this->type(), type_)) return xml_node(); - - xml_node n(impl::allocate_node(impl::get_allocator(_root), type_)); - if (!n) return xml_node(); - - n._root->parent = _root; - - xml_node_struct* head = _root->first_child; - - if (head) - { - n._root->prev_sibling_c = head->prev_sibling_c; - head->prev_sibling_c = n._root; - } - else - n._root->prev_sibling_c = n._root; - - n._root->next_sibling = head; - _root->first_child = n._root; - - if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); - - return n; - } - - PUGI__FN xml_node xml_node::insert_child_before(xml_node_type type_, const xml_node& node) - { - if (!impl::allow_insert_child(this->type(), type_)) return xml_node(); - if (!node._root || node._root->parent != _root) return xml_node(); - - xml_node n(impl::allocate_node(impl::get_allocator(_root), type_)); - if (!n) return xml_node(); - - n._root->parent = _root; - - if (node._root->prev_sibling_c->next_sibling) - node._root->prev_sibling_c->next_sibling = n._root; - else - _root->first_child = n._root; - - n._root->prev_sibling_c = node._root->prev_sibling_c; - n._root->next_sibling = node._root; - node._root->prev_sibling_c = n._root; - - if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); - - return n; - } - - PUGI__FN xml_node xml_node::insert_child_after(xml_node_type type_, const xml_node& node) - { - if (!impl::allow_insert_child(this->type(), type_)) return xml_node(); - if (!node._root || node._root->parent != _root) return xml_node(); - - xml_node n(impl::allocate_node(impl::get_allocator(_root), type_)); - if (!n) return xml_node(); - - n._root->parent = _root; - - if (node._root->next_sibling) - node._root->next_sibling->prev_sibling_c = n._root; - else - _root->first_child->prev_sibling_c = n._root; - - n._root->next_sibling = node._root->next_sibling; - n._root->prev_sibling_c = node._root; - node._root->next_sibling = n._root; - - if (type_ == node_declaration) n.set_name(PUGIXML_TEXT("xml")); - - return n; - } - - PUGI__FN xml_node xml_node::append_child(const char_t* name_) - { - xml_node result = append_child(node_element); - - result.set_name(name_); - - return result; - } - - PUGI__FN xml_node xml_node::prepend_child(const char_t* name_) - { - xml_node result = prepend_child(node_element); - - result.set_name(name_); - - return result; - } - - PUGI__FN xml_node xml_node::insert_child_after(const char_t* name_, const xml_node& node) - { - xml_node result = insert_child_after(node_element, node); - - result.set_name(name_); - - return result; - } - - PUGI__FN xml_node xml_node::insert_child_before(const char_t* name_, const xml_node& node) - { - xml_node result = insert_child_before(node_element, node); - - result.set_name(name_); - - return result; - } - - PUGI__FN xml_node xml_node::append_copy(const xml_node& proto) - { - xml_node result = append_child(proto.type()); - - if (result) impl::recursive_copy_skip(result, proto, result); - - return result; - } - - PUGI__FN xml_node xml_node::prepend_copy(const xml_node& proto) - { - xml_node result = prepend_child(proto.type()); - - if (result) impl::recursive_copy_skip(result, proto, result); - - return result; - } - - PUGI__FN xml_node xml_node::insert_copy_after(const xml_node& proto, const xml_node& node) - { - xml_node result = insert_child_after(proto.type(), node); - - if (result) impl::recursive_copy_skip(result, proto, result); - - return result; - } - - PUGI__FN xml_node xml_node::insert_copy_before(const xml_node& proto, const xml_node& node) - { - xml_node result = insert_child_before(proto.type(), node); - - if (result) impl::recursive_copy_skip(result, proto, result); - - return result; - } - - PUGI__FN bool xml_node::remove_attribute(const char_t* name_) - { - return remove_attribute(attribute(name_)); - } - - PUGI__FN bool xml_node::remove_attribute(const xml_attribute& a) - { - if (!_root || !a._attr) return false; - - // check that attribute belongs to *this - xml_attribute_struct* attr = a._attr; - - while (attr->prev_attribute_c->next_attribute) attr = attr->prev_attribute_c; - - if (attr != _root->first_attribute) return false; - - if (a._attr->next_attribute) a._attr->next_attribute->prev_attribute_c = a._attr->prev_attribute_c; - else if (_root->first_attribute) _root->first_attribute->prev_attribute_c = a._attr->prev_attribute_c; - - if (a._attr->prev_attribute_c->next_attribute) a._attr->prev_attribute_c->next_attribute = a._attr->next_attribute; - else _root->first_attribute = a._attr->next_attribute; - - impl::destroy_attribute(a._attr, impl::get_allocator(_root)); - - return true; - } - - PUGI__FN bool xml_node::remove_child(const char_t* name_) - { - return remove_child(child(name_)); - } - - PUGI__FN bool xml_node::remove_child(const xml_node& n) - { - if (!_root || !n._root || n._root->parent != _root) return false; - - if (n._root->next_sibling) n._root->next_sibling->prev_sibling_c = n._root->prev_sibling_c; - else if (_root->first_child) _root->first_child->prev_sibling_c = n._root->prev_sibling_c; - - if (n._root->prev_sibling_c->next_sibling) n._root->prev_sibling_c->next_sibling = n._root->next_sibling; - else _root->first_child = n._root->next_sibling; - - impl::destroy_node(n._root, impl::get_allocator(_root)); - - return true; - } - - PUGI__FN xml_node xml_node::find_child_by_attribute(const char_t* name_, const char_t* attr_name, const char_t* attr_value) const - { - if (!_root) return xml_node(); - - for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) - if (i->name && impl::strequal(name_, i->name)) - { - for (xml_attribute_struct* a = i->first_attribute; a; a = a->next_attribute) - if (impl::strequal(attr_name, a->name) && impl::strequal(attr_value, a->value)) - return xml_node(i); - } - - return xml_node(); - } - - PUGI__FN xml_node xml_node::find_child_by_attribute(const char_t* attr_name, const char_t* attr_value) const - { - if (!_root) return xml_node(); - - for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) - for (xml_attribute_struct* a = i->first_attribute; a; a = a->next_attribute) - if (impl::strequal(attr_name, a->name) && impl::strequal(attr_value, a->value)) - return xml_node(i); - - return xml_node(); - } - -#ifndef PUGIXML_NO_STL - PUGI__FN string_t xml_node::path(char_t delimiter) const - { - xml_node cursor = *this; // Make a copy. - - string_t result = cursor.name(); - - while (cursor.parent()) - { - cursor = cursor.parent(); - - string_t temp = cursor.name(); - temp += delimiter; - temp += result; - result.swap(temp); - } - - return result; - } -#endif - - PUGI__FN xml_node xml_node::first_element_by_path(const char_t* path_, char_t delimiter) const - { - xml_node found = *this; // Current search context. - - if (!_root || !path_ || !path_[0]) return found; - - if (path_[0] == delimiter) - { - // Absolute path; e.g. '/foo/bar' - found = found.root(); - ++path_; - } - - const char_t* path_segment = path_; - - while (*path_segment == delimiter) ++path_segment; - - const char_t* path_segment_end = path_segment; - - while (*path_segment_end && *path_segment_end != delimiter) ++path_segment_end; - - if (path_segment == path_segment_end) return found; - - const char_t* next_segment = path_segment_end; - - while (*next_segment == delimiter) ++next_segment; - - if (*path_segment == '.' && path_segment + 1 == path_segment_end) - return found.first_element_by_path(next_segment, delimiter); - else if (*path_segment == '.' && *(path_segment+1) == '.' && path_segment + 2 == path_segment_end) - return found.parent().first_element_by_path(next_segment, delimiter); - else - { - for (xml_node_struct* j = found._root->first_child; j; j = j->next_sibling) - { - if (j->name && impl::strequalrange(j->name, path_segment, static_cast(path_segment_end - path_segment))) - { - xml_node subsearch = xml_node(j).first_element_by_path(next_segment, delimiter); - - if (subsearch) return subsearch; - } - } - - return xml_node(); - } - } - - PUGI__FN bool xml_node::traverse(xml_tree_walker& walker) - { - walker._depth = -1; - - xml_node arg_begin = *this; - if (!walker.begin(arg_begin)) return false; - - xml_node cur = first_child(); - - if (cur) - { - ++walker._depth; - - do - { - xml_node arg_for_each = cur; - if (!walker.for_each(arg_for_each)) - return false; - - if (cur.first_child()) - { - ++walker._depth; - cur = cur.first_child(); - } - else if (cur.next_sibling()) - cur = cur.next_sibling(); - else - { - // Borland C++ workaround - while (!cur.next_sibling() && cur != *this && !cur.parent().empty()) - { - --walker._depth; - cur = cur.parent(); - } - - if (cur != *this) - cur = cur.next_sibling(); - } - } - while (cur && cur != *this); - } - - assert(walker._depth == -1); - - xml_node arg_end = *this; - return walker.end(arg_end); - } - - PUGI__FN size_t xml_node::hash_value() const - { - return static_cast(reinterpret_cast(_root) / sizeof(xml_node_struct)); - } - - PUGI__FN xml_node_struct* xml_node::internal_object() const - { - return _root; - } - - PUGI__FN void xml_node::print(xml_writer& writer, const char_t* indent, unsigned int flags, xml_encoding encoding, unsigned int depth) const - { - if (!_root) return; - - impl::xml_buffered_writer buffered_writer(writer, encoding); - - impl::node_output(buffered_writer, *this, indent, flags, depth); - } - -#ifndef PUGIXML_NO_STL - PUGI__FN void xml_node::print(std::basic_ostream >& stream, const char_t* indent, unsigned int flags, xml_encoding encoding, unsigned int depth) const - { - xml_writer_stream writer(stream); - - print(writer, indent, flags, encoding, depth); - } - - PUGI__FN void xml_node::print(std::basic_ostream >& stream, const char_t* indent, unsigned int flags, unsigned int depth) const - { - xml_writer_stream writer(stream); - - print(writer, indent, flags, encoding_wchar, depth); - } -#endif - - PUGI__FN ptrdiff_t xml_node::offset_debug() const - { - xml_node_struct* r = root()._root; - - if (!r) return -1; - - const char_t* buffer = static_cast(r)->buffer; - - if (!buffer) return -1; - - switch (type()) - { - case node_document: - return 0; - - case node_element: - case node_declaration: - case node_pi: - return (_root->header & impl::xml_memory_page_name_allocated_mask) ? -1 : _root->name - buffer; - - case node_pcdata: - case node_cdata: - case node_comment: - case node_doctype: - return (_root->header & impl::xml_memory_page_value_allocated_mask) ? -1 : _root->value - buffer; - - default: - return -1; - } - } - -#ifdef __BORLANDC__ - PUGI__FN bool operator&&(const xml_node& lhs, bool rhs) - { - return (bool)lhs && rhs; - } - - PUGI__FN bool operator||(const xml_node& lhs, bool rhs) - { - return (bool)lhs || rhs; - } -#endif - - PUGI__FN xml_text::xml_text(xml_node_struct* root): _root(root) - { - } - - PUGI__FN xml_node_struct* xml_text::_data() const - { - if (!_root || impl::is_text_node(_root)) return _root; - - for (xml_node_struct* node = _root->first_child; node; node = node->next_sibling) - if (impl::is_text_node(node)) - return node; - - return 0; - } - - PUGI__FN xml_node_struct* xml_text::_data_new() - { - xml_node_struct* d = _data(); - if (d) return d; - - return xml_node(_root).append_child(node_pcdata).internal_object(); - } - - PUGI__FN xml_text::xml_text(): _root(0) - { - } - - PUGI__FN static void unspecified_bool_xml_text(xml_text***) - { - } - - PUGI__FN xml_text::operator xml_text::unspecified_bool_type() const - { - return _data() ? unspecified_bool_xml_text : 0; - } - - PUGI__FN bool xml_text::operator!() const - { - return !_data(); - } - - PUGI__FN bool xml_text::empty() const - { - return _data() == 0; - } - - PUGI__FN const char_t* xml_text::get() const - { - xml_node_struct* d = _data(); - - return (d && d->value) ? d->value : PUGIXML_TEXT(""); - } - - PUGI__FN const char_t* xml_text::as_string(const char_t* def) const - { - xml_node_struct* d = _data(); - - return (d && d->value) ? d->value : def; - } - - PUGI__FN int xml_text::as_int(int def) const - { - xml_node_struct* d = _data(); - - return impl::get_value_int(d ? d->value : 0, def); - } - - PUGI__FN unsigned int xml_text::as_uint(unsigned int def) const - { - xml_node_struct* d = _data(); - - return impl::get_value_uint(d ? d->value : 0, def); - } - - PUGI__FN double xml_text::as_double(double def) const - { - xml_node_struct* d = _data(); - - return impl::get_value_double(d ? d->value : 0, def); - } - - PUGI__FN float xml_text::as_float(float def) const - { - xml_node_struct* d = _data(); - - return impl::get_value_float(d ? d->value : 0, def); - } - - PUGI__FN bool xml_text::as_bool(bool def) const - { - xml_node_struct* d = _data(); - - return impl::get_value_bool(d ? d->value : 0, def); - } - - PUGI__FN bool xml_text::set(const char_t* rhs) - { - xml_node_struct* dn = _data_new(); - - return dn ? impl::strcpy_insitu(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; - } - - PUGI__FN bool xml_text::set(int rhs) - { - xml_node_struct* dn = _data_new(); - - return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; - } - - PUGI__FN bool xml_text::set(unsigned int rhs) - { - xml_node_struct* dn = _data_new(); - - return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; - } - - PUGI__FN bool xml_text::set(double rhs) - { - xml_node_struct* dn = _data_new(); - - return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; - } - - PUGI__FN bool xml_text::set(bool rhs) - { - xml_node_struct* dn = _data_new(); - - return dn ? impl::set_value_convert(dn->value, dn->header, impl::xml_memory_page_value_allocated_mask, rhs) : false; - } - - PUGI__FN xml_text& xml_text::operator=(const char_t* rhs) - { - set(rhs); - return *this; - } - - PUGI__FN xml_text& xml_text::operator=(int rhs) - { - set(rhs); - return *this; - } - - PUGI__FN xml_text& xml_text::operator=(unsigned int rhs) - { - set(rhs); - return *this; - } - - PUGI__FN xml_text& xml_text::operator=(double rhs) - { - set(rhs); - return *this; - } - - PUGI__FN xml_text& xml_text::operator=(bool rhs) - { - set(rhs); - return *this; - } - - PUGI__FN xml_node xml_text::data() const - { - return xml_node(_data()); - } - -#ifdef __BORLANDC__ - PUGI__FN bool operator&&(const xml_text& lhs, bool rhs) - { - return (bool)lhs && rhs; - } - - PUGI__FN bool operator||(const xml_text& lhs, bool rhs) - { - return (bool)lhs || rhs; - } -#endif - - PUGI__FN xml_node_iterator::xml_node_iterator() - { - } - - PUGI__FN xml_node_iterator::xml_node_iterator(const xml_node& node): _wrap(node), _parent(node.parent()) - { - } - - PUGI__FN xml_node_iterator::xml_node_iterator(xml_node_struct* ref, xml_node_struct* parent): _wrap(ref), _parent(parent) - { - } - - PUGI__FN bool xml_node_iterator::operator==(const xml_node_iterator& rhs) const - { - return _wrap._root == rhs._wrap._root && _parent._root == rhs._parent._root; - } - - PUGI__FN bool xml_node_iterator::operator!=(const xml_node_iterator& rhs) const - { - return _wrap._root != rhs._wrap._root || _parent._root != rhs._parent._root; - } - - PUGI__FN xml_node& xml_node_iterator::operator*() const - { - assert(_wrap._root); - return _wrap; - } - - PUGI__FN xml_node* xml_node_iterator::operator->() const - { - assert(_wrap._root); - return const_cast(&_wrap); // BCC32 workaround - } - - PUGI__FN const xml_node_iterator& xml_node_iterator::operator++() - { - assert(_wrap._root); - _wrap._root = _wrap._root->next_sibling; - return *this; - } - - PUGI__FN xml_node_iterator xml_node_iterator::operator++(int) - { - xml_node_iterator temp = *this; - ++*this; - return temp; - } - - PUGI__FN const xml_node_iterator& xml_node_iterator::operator--() - { - _wrap = _wrap._root ? _wrap.previous_sibling() : _parent.last_child(); - return *this; - } - - PUGI__FN xml_node_iterator xml_node_iterator::operator--(int) - { - xml_node_iterator temp = *this; - --*this; - return temp; - } - - PUGI__FN xml_attribute_iterator::xml_attribute_iterator() - { - } - - PUGI__FN xml_attribute_iterator::xml_attribute_iterator(const xml_attribute& attr, const xml_node& parent): _wrap(attr), _parent(parent) - { - } - - PUGI__FN xml_attribute_iterator::xml_attribute_iterator(xml_attribute_struct* ref, xml_node_struct* parent): _wrap(ref), _parent(parent) - { - } - - PUGI__FN bool xml_attribute_iterator::operator==(const xml_attribute_iterator& rhs) const - { - return _wrap._attr == rhs._wrap._attr && _parent._root == rhs._parent._root; - } - - PUGI__FN bool xml_attribute_iterator::operator!=(const xml_attribute_iterator& rhs) const - { - return _wrap._attr != rhs._wrap._attr || _parent._root != rhs._parent._root; - } - - PUGI__FN xml_attribute& xml_attribute_iterator::operator*() const - { - assert(_wrap._attr); - return _wrap; - } - - PUGI__FN xml_attribute* xml_attribute_iterator::operator->() const - { - assert(_wrap._attr); - return const_cast(&_wrap); // BCC32 workaround - } - - PUGI__FN const xml_attribute_iterator& xml_attribute_iterator::operator++() - { - assert(_wrap._attr); - _wrap._attr = _wrap._attr->next_attribute; - return *this; - } - - PUGI__FN xml_attribute_iterator xml_attribute_iterator::operator++(int) - { - xml_attribute_iterator temp = *this; - ++*this; - return temp; - } - - PUGI__FN const xml_attribute_iterator& xml_attribute_iterator::operator--() - { - _wrap = _wrap._attr ? _wrap.previous_attribute() : _parent.last_attribute(); - return *this; - } - - PUGI__FN xml_attribute_iterator xml_attribute_iterator::operator--(int) - { - xml_attribute_iterator temp = *this; - --*this; - return temp; - } - - PUGI__FN xml_named_node_iterator::xml_named_node_iterator(): _name(0) - { - } - - PUGI__FN xml_named_node_iterator::xml_named_node_iterator(const xml_node& node, const char_t* name): _node(node), _name(name) - { - } - - PUGI__FN bool xml_named_node_iterator::operator==(const xml_named_node_iterator& rhs) const - { - return _node == rhs._node; - } - - PUGI__FN bool xml_named_node_iterator::operator!=(const xml_named_node_iterator& rhs) const - { - return _node != rhs._node; - } - - PUGI__FN xml_node& xml_named_node_iterator::operator*() const - { - assert(_node._root); - return _node; - } - - PUGI__FN xml_node* xml_named_node_iterator::operator->() const - { - assert(_node._root); - return const_cast(&_node); // BCC32 workaround - } - - PUGI__FN const xml_named_node_iterator& xml_named_node_iterator::operator++() - { - assert(_node._root); - _node = _node.next_sibling(_name); - return *this; - } - - PUGI__FN xml_named_node_iterator xml_named_node_iterator::operator++(int) - { - xml_named_node_iterator temp = *this; - ++*this; - return temp; - } - - PUGI__FN xml_parse_result::xml_parse_result(): status(status_internal_error), offset(0), encoding(encoding_auto) - { - } - - PUGI__FN xml_parse_result::operator bool() const - { - return status == status_ok; - } - - PUGI__FN const char* xml_parse_result::description() const - { - switch (status) - { - case status_ok: return "No error"; - - case status_file_not_found: return "File was not found"; - case status_io_error: return "Error reading from file/stream"; - case status_out_of_memory: return "Could not allocate memory"; - case status_internal_error: return "Internal error occurred"; - - case status_unrecognized_tag: return "Could not determine tag type"; - - case status_bad_pi: return "Error parsing document declaration/processing instruction"; - case status_bad_comment: return "Error parsing comment"; - case status_bad_cdata: return "Error parsing CDATA section"; - case status_bad_doctype: return "Error parsing document type declaration"; - case status_bad_pcdata: return "Error parsing PCDATA section"; - case status_bad_start_element: return "Error parsing start element tag"; - case status_bad_attribute: return "Error parsing element attribute"; - case status_bad_end_element: return "Error parsing end element tag"; - case status_end_element_mismatch: return "Start-end tags mismatch"; - - default: return "Unknown error"; - } - } - - PUGI__FN xml_document::xml_document(): _buffer(0) - { - create(); - } - - PUGI__FN xml_document::~xml_document() - { - destroy(); - } - - PUGI__FN void xml_document::reset() - { - destroy(); - create(); - } - - PUGI__FN void xml_document::reset(const xml_document& proto) - { - reset(); - - for (xml_node cur = proto.first_child(); cur; cur = cur.next_sibling()) - append_copy(cur); - } - - PUGI__FN void xml_document::create() - { - // initialize sentinel page - PUGI__STATIC_ASSERT(offsetof(impl::xml_memory_page, data) + sizeof(impl::xml_document_struct) + impl::xml_memory_page_alignment <= sizeof(_memory)); - - // align upwards to page boundary - void* page_memory = reinterpret_cast((reinterpret_cast(_memory) + (impl::xml_memory_page_alignment - 1)) & ~(impl::xml_memory_page_alignment - 1)); - - // prepare page structure - impl::xml_memory_page* page = impl::xml_memory_page::construct(page_memory); - - page->busy_size = impl::xml_memory_page_size; - - // allocate new root - _root = new (page->data) impl::xml_document_struct(page); - _root->prev_sibling_c = _root; - - // setup sentinel page - page->allocator = static_cast(_root); - } - - PUGI__FN void xml_document::destroy() - { - // destroy static storage - if (_buffer) - { - impl::xml_memory::deallocate(_buffer); - _buffer = 0; - } - - // destroy dynamic storage, leave sentinel page (it's in static memory) - if (_root) - { - impl::xml_memory_page* root_page = reinterpret_cast(_root->header & impl::xml_memory_page_pointer_mask); - assert(root_page && !root_page->prev && !root_page->memory); - - // destroy all pages - for (impl::xml_memory_page* page = root_page->next; page; ) - { - impl::xml_memory_page* next = page->next; - - impl::xml_allocator::deallocate_page(page); - - page = next; - } - - // cleanup root page - root_page->allocator = 0; - root_page->next = 0; - root_page->busy_size = root_page->freed_size = 0; - - _root = 0; - } - } - -#ifndef PUGIXML_NO_STL - PUGI__FN xml_parse_result xml_document::load(std::basic_istream >& stream, unsigned int options, xml_encoding encoding) - { - reset(); - - return impl::load_stream_impl(*this, stream, options, encoding); - } - - PUGI__FN xml_parse_result xml_document::load(std::basic_istream >& stream, unsigned int options) - { - reset(); - - return impl::load_stream_impl(*this, stream, options, encoding_wchar); - } -#endif - - PUGI__FN xml_parse_result xml_document::load(const char_t* contents, unsigned int options) - { - // Force native encoding (skip autodetection) - #ifdef PUGIXML_WCHAR_MODE - xml_encoding encoding = encoding_wchar; - #else - xml_encoding encoding = encoding_utf8; - #endif - - return load_buffer(contents, impl::strlength(contents) * sizeof(char_t), options, encoding); - } - - PUGI__FN xml_parse_result xml_document::load_file(const char* path_, unsigned int options, xml_encoding encoding) - { - reset(); - - FILE* file = fopen(path_, "rb"); - - return impl::load_file_impl(*this, file, options, encoding); - } - - PUGI__FN xml_parse_result xml_document::load_file(const wchar_t* path_, unsigned int options, xml_encoding encoding) - { - reset(); - - FILE* file = impl::open_file_wide(path_, L"rb"); - - return impl::load_file_impl(*this, file, options, encoding); - } - - PUGI__FN xml_parse_result xml_document::load_buffer_impl(void* contents, size_t size, unsigned int options, xml_encoding encoding, bool is_mutable, bool own) - { - reset(); - - // check input buffer - assert(contents || size == 0); - - // get actual encoding - xml_encoding buffer_encoding = impl::get_buffer_encoding(encoding, contents, size); - - // get private buffer - char_t* buffer = 0; - size_t length = 0; - - if (!impl::convert_buffer(buffer, length, buffer_encoding, contents, size, is_mutable)) return impl::make_parse_result(status_out_of_memory); - - // delete original buffer if we performed a conversion - if (own && buffer != contents && contents) impl::xml_memory::deallocate(contents); - - // parse - xml_parse_result res = impl::xml_parser::parse(buffer, length, _root, options); - - // remember encoding - res.encoding = buffer_encoding; - - // grab onto buffer if it's our buffer, user is responsible for deallocating contens himself - if (own || buffer != contents) _buffer = buffer; - - return res; - } - - PUGI__FN xml_parse_result xml_document::load_buffer(const void* contents, size_t size, unsigned int options, xml_encoding encoding) - { - return load_buffer_impl(const_cast(contents), size, options, encoding, false, false); - } - - PUGI__FN xml_parse_result xml_document::load_buffer_inplace(void* contents, size_t size, unsigned int options, xml_encoding encoding) - { - return load_buffer_impl(contents, size, options, encoding, true, false); - } - - PUGI__FN xml_parse_result xml_document::load_buffer_inplace_own(void* contents, size_t size, unsigned int options, xml_encoding encoding) - { - return load_buffer_impl(contents, size, options, encoding, true, true); - } - - PUGI__FN void xml_document::save(xml_writer& writer, const char_t* indent, unsigned int flags, xml_encoding encoding) const - { - impl::xml_buffered_writer buffered_writer(writer, encoding); - - if ((flags & format_write_bom) && encoding != encoding_latin1) - { - // BOM always represents the codepoint U+FEFF, so just write it in native encoding - #ifdef PUGIXML_WCHAR_MODE - unsigned int bom = 0xfeff; - buffered_writer.write(static_cast(bom)); - #else - buffered_writer.write('\xef', '\xbb', '\xbf'); - #endif - } - - if (!(flags & format_no_declaration) && !impl::has_declaration(*this)) - { - buffered_writer.write(PUGIXML_TEXT("'); - if (!(flags & format_raw)) buffered_writer.write('\n'); - } - - impl::node_output(buffered_writer, *this, indent, flags, 0); - } - -#ifndef PUGIXML_NO_STL - PUGI__FN void xml_document::save(std::basic_ostream >& stream, const char_t* indent, unsigned int flags, xml_encoding encoding) const - { - xml_writer_stream writer(stream); - - save(writer, indent, flags, encoding); - } - - PUGI__FN void xml_document::save(std::basic_ostream >& stream, const char_t* indent, unsigned int flags) const - { - xml_writer_stream writer(stream); - - save(writer, indent, flags, encoding_wchar); - } -#endif - - PUGI__FN bool xml_document::save_file(const char* path_, const char_t* indent, unsigned int flags, xml_encoding encoding) const - { - FILE* file = fopen(path_, (flags & format_save_file_text) ? "w" : "wb"); - return impl::save_file_impl(*this, file, indent, flags, encoding); - } - - PUGI__FN bool xml_document::save_file(const wchar_t* path_, const char_t* indent, unsigned int flags, xml_encoding encoding) const - { - FILE* file = impl::open_file_wide(path_, (flags & format_save_file_text) ? L"w" : L"wb"); - return impl::save_file_impl(*this, file, indent, flags, encoding); - } - - PUGI__FN xml_node xml_document::document_element() const - { - for (xml_node_struct* i = _root->first_child; i; i = i->next_sibling) - if ((i->header & impl::xml_memory_page_type_mask) + 1 == node_element) - return xml_node(i); - - return xml_node(); - } - -#ifndef PUGIXML_NO_STL - PUGI__FN std::string PUGIXML_FUNCTION as_utf8(const wchar_t* str) - { - assert(str); - - return impl::as_utf8_impl(str, wcslen(str)); - } - - PUGI__FN std::string PUGIXML_FUNCTION as_utf8(const std::basic_string& str) - { - return impl::as_utf8_impl(str.c_str(), str.size()); - } - - PUGI__FN std::basic_string PUGIXML_FUNCTION as_wide(const char* str) - { - assert(str); - - return impl::as_wide_impl(str, strlen(str)); - } - - PUGI__FN std::basic_string PUGIXML_FUNCTION as_wide(const std::string& str) - { - return impl::as_wide_impl(str.c_str(), str.size()); - } -#endif - - PUGI__FN void PUGIXML_FUNCTION set_memory_management_functions(allocation_function allocate, deallocation_function deallocate) - { - impl::xml_memory::allocate = allocate; - impl::xml_memory::deallocate = deallocate; - } - - PUGI__FN allocation_function PUGIXML_FUNCTION get_memory_allocation_function() - { - return impl::xml_memory::allocate; - } - - PUGI__FN deallocation_function PUGIXML_FUNCTION get_memory_deallocation_function() - { - return impl::xml_memory::deallocate; - } -} - -#if !defined(PUGIXML_NO_STL) && (defined(_MSC_VER) || defined(__ICC)) -namespace std -{ - // Workarounds for (non-standard) iterator category detection for older versions (MSVC7/IC8 and earlier) - PUGI__FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_node_iterator&) - { - return std::bidirectional_iterator_tag(); - } - - PUGI__FN std::bidirectional_iterator_tag _Iter_cat(const pugi::xml_attribute_iterator&) - { - return std::bidirectional_iterator_tag(); - } - - PUGI__FN std::forward_iterator_tag _Iter_cat(const pugi::xml_named_node_iterator&) - { - return std::forward_iterator_tag(); - } -} -#endif - -#if !defined(PUGIXML_NO_STL) && defined(__SUNPRO_CC) -namespace std -{ - // Workarounds for (non-standard) iterator category detection - PUGI__FN std::bidirectional_iterator_tag __iterator_category(const pugi::xml_node_iterator&) - { - return std::bidirectional_iterator_tag(); - } - - PUGI__FN std::bidirectional_iterator_tag __iterator_category(const pugi::xml_attribute_iterator&) - { - return std::bidirectional_iterator_tag(); - } - - PUGI__FN std::forward_iterator_tag __iterator_category(const pugi::xml_named_node_iterator&) - { - return std::forward_iterator_tag(); - } -} -#endif - -#ifndef PUGIXML_NO_XPATH - -// STL replacements -PUGI__NS_BEGIN - struct equal_to - { - template bool operator()(const T& lhs, const T& rhs) const - { - return lhs == rhs; - } - }; - - struct not_equal_to - { - template bool operator()(const T& lhs, const T& rhs) const - { - return lhs != rhs; - } - }; - - struct less - { - template bool operator()(const T& lhs, const T& rhs) const - { - return lhs < rhs; - } - }; - - struct less_equal - { - template bool operator()(const T& lhs, const T& rhs) const - { - return lhs <= rhs; - } - }; - - template void swap(T& lhs, T& rhs) - { - T temp = lhs; - lhs = rhs; - rhs = temp; - } - - template I min_element(I begin, I end, const Pred& pred) - { - I result = begin; - - for (I it = begin + 1; it != end; ++it) - if (pred(*it, *result)) - result = it; - - return result; - } - - template void reverse(I begin, I end) - { - while (begin + 1 < end) swap(*begin++, *--end); - } - - template I unique(I begin, I end) - { - // fast skip head - while (begin + 1 < end && *begin != *(begin + 1)) begin++; - - if (begin == end) return begin; - - // last written element - I write = begin++; - - // merge unique elements - while (begin != end) - { - if (*begin != *write) - *++write = *begin++; - else - begin++; - } - - // past-the-end (write points to live element) - return write + 1; - } - - template void copy_backwards(I begin, I end, I target) - { - while (begin != end) *--target = *--end; - } - - template void insertion_sort(I begin, I end, const Pred& pred, T*) - { - assert(begin != end); - - for (I it = begin + 1; it != end; ++it) - { - T val = *it; - - if (pred(val, *begin)) - { - // move to front - copy_backwards(begin, it, it + 1); - *begin = val; - } - else - { - I hole = it; - - // move hole backwards - while (pred(val, *(hole - 1))) - { - *hole = *(hole - 1); - hole--; - } - - // fill hole with element - *hole = val; - } - } - } - - // std variant for elements with == - template void partition(I begin, I middle, I end, const Pred& pred, I* out_eqbeg, I* out_eqend) - { - I eqbeg = middle, eqend = middle + 1; - - // expand equal range - while (eqbeg != begin && *(eqbeg - 1) == *eqbeg) --eqbeg; - while (eqend != end && *eqend == *eqbeg) ++eqend; - - // process outer elements - I ltend = eqbeg, gtbeg = eqend; - - for (;;) - { - // find the element from the right side that belongs to the left one - for (; gtbeg != end; ++gtbeg) - if (!pred(*eqbeg, *gtbeg)) - { - if (*gtbeg == *eqbeg) swap(*gtbeg, *eqend++); - else break; - } - - // find the element from the left side that belongs to the right one - for (; ltend != begin; --ltend) - if (!pred(*(ltend - 1), *eqbeg)) - { - if (*eqbeg == *(ltend - 1)) swap(*(ltend - 1), *--eqbeg); - else break; - } - - // scanned all elements - if (gtbeg == end && ltend == begin) - { - *out_eqbeg = eqbeg; - *out_eqend = eqend; - return; - } - - // make room for elements by moving equal area - if (gtbeg == end) - { - if (--ltend != --eqbeg) swap(*ltend, *eqbeg); - swap(*eqbeg, *--eqend); - } - else if (ltend == begin) - { - if (eqend != gtbeg) swap(*eqbeg, *eqend); - ++eqend; - swap(*gtbeg++, *eqbeg++); - } - else swap(*gtbeg++, *--ltend); - } - } - - template void median3(I first, I middle, I last, const Pred& pred) - { - if (pred(*middle, *first)) swap(*middle, *first); - if (pred(*last, *middle)) swap(*last, *middle); - if (pred(*middle, *first)) swap(*middle, *first); - } - - template void median(I first, I middle, I last, const Pred& pred) - { - if (last - first <= 40) - { - // median of three for small chunks - median3(first, middle, last, pred); - } - else - { - // median of nine - size_t step = (last - first + 1) / 8; - - median3(first, first + step, first + 2 * step, pred); - median3(middle - step, middle, middle + step, pred); - median3(last - 2 * step, last - step, last, pred); - median3(first + step, middle, last - step, pred); - } - } - - template void sort(I begin, I end, const Pred& pred) - { - // sort large chunks - while (end - begin > 32) - { - // find median element - I middle = begin + (end - begin) / 2; - median(begin, middle, end - 1, pred); - - // partition in three chunks (< = >) - I eqbeg, eqend; - partition(begin, middle, end, pred, &eqbeg, &eqend); - - // loop on larger half - if (eqbeg - begin > end - eqend) - { - sort(eqend, end, pred); - end = eqbeg; - } - else - { - sort(begin, eqbeg, pred); - begin = eqend; - } - } - - // insertion sort small chunk - if (begin != end) insertion_sort(begin, end, pred, &*begin); - } -PUGI__NS_END - -// Allocator used for AST and evaluation stacks -PUGI__NS_BEGIN - struct xpath_memory_block - { - xpath_memory_block* next; - - char data[ - #ifdef PUGIXML_MEMORY_XPATH_PAGE_SIZE - PUGIXML_MEMORY_XPATH_PAGE_SIZE - #else - 4096 - #endif - ]; - }; - - class xpath_allocator - { - xpath_memory_block* _root; - size_t _root_size; - - public: - #ifdef PUGIXML_NO_EXCEPTIONS - jmp_buf* error_handler; - #endif - - xpath_allocator(xpath_memory_block* root, size_t root_size = 0): _root(root), _root_size(root_size) - { - #ifdef PUGIXML_NO_EXCEPTIONS - error_handler = 0; - #endif - } - - void* allocate_nothrow(size_t size) - { - const size_t block_capacity = sizeof(_root->data); - - // align size so that we're able to store pointers in subsequent blocks - size = (size + sizeof(void*) - 1) & ~(sizeof(void*) - 1); - - if (_root_size + size <= block_capacity) - { - void* buf = _root->data + _root_size; - _root_size += size; - return buf; - } - else - { - size_t block_data_size = (size > block_capacity) ? size : block_capacity; - size_t block_size = block_data_size + offsetof(xpath_memory_block, data); - - xpath_memory_block* block = static_cast(xml_memory::allocate(block_size)); - if (!block) return 0; - - block->next = _root; - - _root = block; - _root_size = size; - - return block->data; - } - } - - void* allocate(size_t size) - { - void* result = allocate_nothrow(size); - - if (!result) - { - #ifdef PUGIXML_NO_EXCEPTIONS - assert(error_handler); - longjmp(*error_handler, 1); - #else - throw std::bad_alloc(); - #endif - } - - return result; - } - - void* reallocate(void* ptr, size_t old_size, size_t new_size) - { - // align size so that we're able to store pointers in subsequent blocks - old_size = (old_size + sizeof(void*) - 1) & ~(sizeof(void*) - 1); - new_size = (new_size + sizeof(void*) - 1) & ~(sizeof(void*) - 1); - - // we can only reallocate the last object - assert(ptr == 0 || static_cast(ptr) + old_size == _root->data + _root_size); - - // adjust root size so that we have not allocated the object at all - bool only_object = (_root_size == old_size); - - if (ptr) _root_size -= old_size; - - // allocate a new version (this will obviously reuse the memory if possible) - void* result = allocate(new_size); - assert(result); - - // we have a new block - if (result != ptr && ptr) - { - // copy old data - assert(new_size > old_size); - memcpy(result, ptr, old_size); - - // free the previous page if it had no other objects - if (only_object) - { - assert(_root->data == result); - assert(_root->next); - - xpath_memory_block* next = _root->next->next; - - if (next) - { - // deallocate the whole page, unless it was the first one - xml_memory::deallocate(_root->next); - _root->next = next; - } - } - } - - return result; - } - - void revert(const xpath_allocator& state) - { - // free all new pages - xpath_memory_block* cur = _root; - - while (cur != state._root) - { - xpath_memory_block* next = cur->next; - - xml_memory::deallocate(cur); - - cur = next; - } - - // restore state - _root = state._root; - _root_size = state._root_size; - } - - void release() - { - xpath_memory_block* cur = _root; - assert(cur); - - while (cur->next) - { - xpath_memory_block* next = cur->next; - - xml_memory::deallocate(cur); - - cur = next; - } - } - }; - - struct xpath_allocator_capture - { - xpath_allocator_capture(xpath_allocator* alloc): _target(alloc), _state(*alloc) - { - } - - ~xpath_allocator_capture() - { - _target->revert(_state); - } - - xpath_allocator* _target; - xpath_allocator _state; - }; - - struct xpath_stack - { - xpath_allocator* result; - xpath_allocator* temp; - }; - - struct xpath_stack_data - { - xpath_memory_block blocks[2]; - xpath_allocator result; - xpath_allocator temp; - xpath_stack stack; - - #ifdef PUGIXML_NO_EXCEPTIONS - jmp_buf error_handler; - #endif - - xpath_stack_data(): result(blocks + 0), temp(blocks + 1) - { - blocks[0].next = blocks[1].next = 0; - - stack.result = &result; - stack.temp = &temp; - - #ifdef PUGIXML_NO_EXCEPTIONS - result.error_handler = temp.error_handler = &error_handler; - #endif - } - - ~xpath_stack_data() - { - result.release(); - temp.release(); - } - }; -PUGI__NS_END - -// String class -PUGI__NS_BEGIN - class xpath_string - { - const char_t* _buffer; - bool _uses_heap; - - static char_t* duplicate_string(const char_t* string, size_t length, xpath_allocator* alloc) - { - char_t* result = static_cast(alloc->allocate((length + 1) * sizeof(char_t))); - assert(result); - - memcpy(result, string, length * sizeof(char_t)); - result[length] = 0; - - return result; - } - - static char_t* duplicate_string(const char_t* string, xpath_allocator* alloc) - { - return duplicate_string(string, strlength(string), alloc); - } - - public: - xpath_string(): _buffer(PUGIXML_TEXT("")), _uses_heap(false) - { - } - - explicit xpath_string(const char_t* str, xpath_allocator* alloc) - { - bool empty_ = (*str == 0); - - _buffer = empty_ ? PUGIXML_TEXT("") : duplicate_string(str, alloc); - _uses_heap = !empty_; - } - - explicit xpath_string(const char_t* str, bool use_heap): _buffer(str), _uses_heap(use_heap) - { - } - - xpath_string(const char_t* begin, const char_t* end, xpath_allocator* alloc) - { - assert(begin <= end); - - bool empty_ = (begin == end); - - _buffer = empty_ ? PUGIXML_TEXT("") : duplicate_string(begin, static_cast(end - begin), alloc); - _uses_heap = !empty_; - } - - void append(const xpath_string& o, xpath_allocator* alloc) - { - // skip empty sources - if (!*o._buffer) return; - - // fast append for constant empty target and constant source - if (!*_buffer && !_uses_heap && !o._uses_heap) - { - _buffer = o._buffer; - } - else - { - // need to make heap copy - size_t target_length = strlength(_buffer); - size_t source_length = strlength(o._buffer); - size_t result_length = target_length + source_length; - - // allocate new buffer - char_t* result = static_cast(alloc->reallocate(_uses_heap ? const_cast(_buffer) : 0, (target_length + 1) * sizeof(char_t), (result_length + 1) * sizeof(char_t))); - assert(result); - - // append first string to the new buffer in case there was no reallocation - if (!_uses_heap) memcpy(result, _buffer, target_length * sizeof(char_t)); - - // append second string to the new buffer - memcpy(result + target_length, o._buffer, source_length * sizeof(char_t)); - result[result_length] = 0; - - // finalize - _buffer = result; - _uses_heap = true; - } - } - - const char_t* c_str() const - { - return _buffer; - } - - size_t length() const - { - return strlength(_buffer); - } - - char_t* data(xpath_allocator* alloc) - { - // make private heap copy - if (!_uses_heap) - { - _buffer = duplicate_string(_buffer, alloc); - _uses_heap = true; - } - - return const_cast(_buffer); - } - - bool empty() const - { - return *_buffer == 0; - } - - bool operator==(const xpath_string& o) const - { - return strequal(_buffer, o._buffer); - } - - bool operator!=(const xpath_string& o) const - { - return !strequal(_buffer, o._buffer); - } - - bool uses_heap() const - { - return _uses_heap; - } - }; - - PUGI__FN xpath_string xpath_string_const(const char_t* str) - { - return xpath_string(str, false); - } -PUGI__NS_END - -PUGI__NS_BEGIN - PUGI__FN bool starts_with(const char_t* string, const char_t* pattern) - { - while (*pattern && *string == *pattern) - { - string++; - pattern++; - } - - return *pattern == 0; - } - - PUGI__FN const char_t* find_char(const char_t* s, char_t c) - { - #ifdef PUGIXML_WCHAR_MODE - return wcschr(s, c); - #else - return strchr(s, c); - #endif - } - - PUGI__FN const char_t* find_substring(const char_t* s, const char_t* p) - { - #ifdef PUGIXML_WCHAR_MODE - // MSVC6 wcsstr bug workaround (if s is empty it always returns 0) - return (*p == 0) ? s : wcsstr(s, p); - #else - return strstr(s, p); - #endif - } - - // Converts symbol to lower case, if it is an ASCII one - PUGI__FN char_t tolower_ascii(char_t ch) - { - return static_cast(ch - 'A') < 26 ? static_cast(ch | ' ') : ch; - } - - PUGI__FN xpath_string string_value(const xpath_node& na, xpath_allocator* alloc) - { - if (na.attribute()) - return xpath_string_const(na.attribute().value()); - else - { - const xml_node& n = na.node(); - - switch (n.type()) - { - case node_pcdata: - case node_cdata: - case node_comment: - case node_pi: - return xpath_string_const(n.value()); - - case node_document: - case node_element: - { - xpath_string result; - - xml_node cur = n.first_child(); - - while (cur && cur != n) - { - if (cur.type() == node_pcdata || cur.type() == node_cdata) - result.append(xpath_string_const(cur.value()), alloc); - - if (cur.first_child()) - cur = cur.first_child(); - else if (cur.next_sibling()) - cur = cur.next_sibling(); - else - { - while (!cur.next_sibling() && cur != n) - cur = cur.parent(); - - if (cur != n) cur = cur.next_sibling(); - } - } - - return result; - } - - default: - return xpath_string(); - } - } - } - - PUGI__FN unsigned int node_height(xml_node n) - { - unsigned int result = 0; - - while (n) - { - ++result; - n = n.parent(); - } - - return result; - } - - PUGI__FN bool node_is_before(xml_node ln, unsigned int lh, xml_node rn, unsigned int rh) - { - // normalize heights - for (unsigned int i = rh; i < lh; i++) ln = ln.parent(); - for (unsigned int j = lh; j < rh; j++) rn = rn.parent(); - - // one node is the ancestor of the other - if (ln == rn) return lh < rh; - - // find common ancestor - while (ln.parent() != rn.parent()) - { - ln = ln.parent(); - rn = rn.parent(); - } - - // there is no common ancestor (the shared parent is null), nodes are from different documents - if (!ln.parent()) return ln < rn; - - // determine sibling order - for (; ln; ln = ln.next_sibling()) - if (ln == rn) - return true; - - return false; - } - - PUGI__FN bool node_is_ancestor(xml_node parent, xml_node node) - { - while (node && node != parent) node = node.parent(); - - return parent && node == parent; - } - - PUGI__FN const void* document_order(const xpath_node& xnode) - { - xml_node_struct* node = xnode.node().internal_object(); - - if (node) - { - if (node->name && (node->header & xml_memory_page_name_allocated_mask) == 0) return node->name; - if (node->value && (node->header & xml_memory_page_value_allocated_mask) == 0) return node->value; - return 0; - } - - xml_attribute_struct* attr = xnode.attribute().internal_object(); - - if (attr) - { - if ((attr->header & xml_memory_page_name_allocated_mask) == 0) return attr->name; - if ((attr->header & xml_memory_page_value_allocated_mask) == 0) return attr->value; - return 0; - } - - return 0; - } - - struct document_order_comparator - { - bool operator()(const xpath_node& lhs, const xpath_node& rhs) const - { - // optimized document order based check - const void* lo = document_order(lhs); - const void* ro = document_order(rhs); - - if (lo && ro) return lo < ro; - - // slow comparison - xml_node ln = lhs.node(), rn = rhs.node(); - - // compare attributes - if (lhs.attribute() && rhs.attribute()) - { - // shared parent - if (lhs.parent() == rhs.parent()) - { - // determine sibling order - for (xml_attribute a = lhs.attribute(); a; a = a.next_attribute()) - if (a == rhs.attribute()) - return true; - - return false; - } - - // compare attribute parents - ln = lhs.parent(); - rn = rhs.parent(); - } - else if (lhs.attribute()) - { - // attributes go after the parent element - if (lhs.parent() == rhs.node()) return false; - - ln = lhs.parent(); - } - else if (rhs.attribute()) - { - // attributes go after the parent element - if (rhs.parent() == lhs.node()) return true; - - rn = rhs.parent(); - } - - if (ln == rn) return false; - - unsigned int lh = node_height(ln); - unsigned int rh = node_height(rn); - - return node_is_before(ln, lh, rn, rh); - } - }; - - struct duplicate_comparator - { - bool operator()(const xpath_node& lhs, const xpath_node& rhs) const - { - if (lhs.attribute()) return rhs.attribute() ? lhs.attribute() < rhs.attribute() : true; - else return rhs.attribute() ? false : lhs.node() < rhs.node(); - } - }; - - PUGI__FN double gen_nan() - { - #if defined(__STDC_IEC_559__) || ((FLT_RADIX - 0 == 2) && (FLT_MAX_EXP - 0 == 128) && (FLT_MANT_DIG - 0 == 24)) - union { float f; uint32_t i; } u[sizeof(float) == sizeof(uint32_t) ? 1 : -1]; - u[0].i = 0x7fc00000; - return u[0].f; - #else - // fallback - const volatile double zero = 0.0; - return zero / zero; - #endif - } - - PUGI__FN bool is_nan(double value) - { - #if defined(PUGI__MSVC_CRT_VERSION) || defined(__BORLANDC__) - return !!_isnan(value); - #elif defined(fpclassify) && defined(FP_NAN) - return fpclassify(value) == FP_NAN; - #else - // fallback - const volatile double v = value; - return v != v; - #endif - } - - PUGI__FN const char_t* convert_number_to_string_special(double value) - { - #if defined(PUGI__MSVC_CRT_VERSION) || defined(__BORLANDC__) - if (_finite(value)) return (value == 0) ? PUGIXML_TEXT("0") : 0; - if (_isnan(value)) return PUGIXML_TEXT("NaN"); - return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); - #elif defined(fpclassify) && defined(FP_NAN) && defined(FP_INFINITE) && defined(FP_ZERO) - switch (fpclassify(value)) - { - case FP_NAN: - return PUGIXML_TEXT("NaN"); - - case FP_INFINITE: - return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); - - case FP_ZERO: - return PUGIXML_TEXT("0"); - - default: - return 0; - } - #else - // fallback - const volatile double v = value; - - if (v == 0) return PUGIXML_TEXT("0"); - if (v != v) return PUGIXML_TEXT("NaN"); - if (v * 2 == v) return value > 0 ? PUGIXML_TEXT("Infinity") : PUGIXML_TEXT("-Infinity"); - return 0; - #endif - } - - PUGI__FN bool convert_number_to_boolean(double value) - { - return (value != 0 && !is_nan(value)); - } - - PUGI__FN void truncate_zeros(char* begin, char* end) - { - while (begin != end && end[-1] == '0') end--; - - *end = 0; - } - - // gets mantissa digits in the form of 0.xxxxx with 0. implied and the exponent -#if defined(PUGI__MSVC_CRT_VERSION) && PUGI__MSVC_CRT_VERSION >= 1400 && !defined(_WIN32_WCE) - PUGI__FN void convert_number_to_mantissa_exponent(double value, char* buffer, size_t buffer_size, char** out_mantissa, int* out_exponent) - { - // get base values - int sign, exponent; - _ecvt_s(buffer, buffer_size, value, DBL_DIG + 1, &exponent, &sign); - - // truncate redundant zeros - truncate_zeros(buffer, buffer + strlen(buffer)); - - // fill results - *out_mantissa = buffer; - *out_exponent = exponent; - } -#else - PUGI__FN void convert_number_to_mantissa_exponent(double value, char* buffer, size_t buffer_size, char** out_mantissa, int* out_exponent) - { - // get a scientific notation value with IEEE DBL_DIG decimals - sprintf(buffer, "%.*e", DBL_DIG, value); - assert(strlen(buffer) < buffer_size); - (void)!buffer_size; - - // get the exponent (possibly negative) - char* exponent_string = strchr(buffer, 'e'); - assert(exponent_string); - - int exponent = atoi(exponent_string + 1); - - // extract mantissa string: skip sign - char* mantissa = buffer[0] == '-' ? buffer + 1 : buffer; - assert(mantissa[0] != '0' && mantissa[1] == '.'); - - // divide mantissa by 10 to eliminate integer part - mantissa[1] = mantissa[0]; - mantissa++; - exponent++; - - // remove extra mantissa digits and zero-terminate mantissa - truncate_zeros(mantissa, exponent_string); - - // fill results - *out_mantissa = mantissa; - *out_exponent = exponent; - } -#endif - - PUGI__FN xpath_string convert_number_to_string(double value, xpath_allocator* alloc) - { - // try special number conversion - const char_t* special = convert_number_to_string_special(value); - if (special) return xpath_string_const(special); - - // get mantissa + exponent form - char mantissa_buffer[64]; - - char* mantissa; - int exponent; - convert_number_to_mantissa_exponent(value, mantissa_buffer, sizeof(mantissa_buffer), &mantissa, &exponent); - - // make the number! - char_t result[512]; - char_t* s = result; - - // sign - if (value < 0) *s++ = '-'; - - // integer part - if (exponent <= 0) - { - *s++ = '0'; - } - else - { - while (exponent > 0) - { - assert(*mantissa == 0 || static_cast(*mantissa - '0') <= 9); - *s++ = *mantissa ? *mantissa++ : '0'; - exponent--; - } - } - - // fractional part - if (*mantissa) - { - // decimal point - *s++ = '.'; - - // extra zeroes from negative exponent - while (exponent < 0) - { - *s++ = '0'; - exponent++; - } - - // extra mantissa digits - while (*mantissa) - { - assert(static_cast(*mantissa - '0') <= 9); - *s++ = *mantissa++; - } - } - - // zero-terminate - assert(s < result + sizeof(result) / sizeof(result[0])); - *s = 0; - - return xpath_string(result, alloc); - } - - PUGI__FN bool check_string_to_number_format(const char_t* string) - { - // parse leading whitespace - while (PUGI__IS_CHARTYPE(*string, ct_space)) ++string; - - // parse sign - if (*string == '-') ++string; - - if (!*string) return false; - - // if there is no integer part, there should be a decimal part with at least one digit - if (!PUGI__IS_CHARTYPEX(string[0], ctx_digit) && (string[0] != '.' || !PUGI__IS_CHARTYPEX(string[1], ctx_digit))) return false; - - // parse integer part - while (PUGI__IS_CHARTYPEX(*string, ctx_digit)) ++string; - - // parse decimal part - if (*string == '.') - { - ++string; - - while (PUGI__IS_CHARTYPEX(*string, ctx_digit)) ++string; - } - - // parse trailing whitespace - while (PUGI__IS_CHARTYPE(*string, ct_space)) ++string; - - return *string == 0; - } - - PUGI__FN double convert_string_to_number(const char_t* string) - { - // check string format - if (!check_string_to_number_format(string)) return gen_nan(); - - // parse string - #ifdef PUGIXML_WCHAR_MODE - return wcstod(string, 0); - #else - return atof(string); - #endif - } - - PUGI__FN bool convert_string_to_number(const char_t* begin, const char_t* end, double* out_result) - { - char_t buffer[32]; - - size_t length = static_cast(end - begin); - char_t* scratch = buffer; - - if (length >= sizeof(buffer) / sizeof(buffer[0])) - { - // need to make dummy on-heap copy - scratch = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); - if (!scratch) return false; - } - - // copy string to zero-terminated buffer and perform conversion - memcpy(scratch, begin, length * sizeof(char_t)); - scratch[length] = 0; - - *out_result = convert_string_to_number(scratch); - - // free dummy buffer - if (scratch != buffer) xml_memory::deallocate(scratch); - - return true; - } - - PUGI__FN double round_nearest(double value) - { - return floor(value + 0.5); - } - - PUGI__FN double round_nearest_nzero(double value) - { - // same as round_nearest, but returns -0 for [-0.5, -0] - // ceil is used to differentiate between +0 and -0 (we return -0 for [-0.5, -0] and +0 for +0) - return (value >= -0.5 && value <= 0) ? ceil(value) : floor(value + 0.5); - } - - PUGI__FN const char_t* qualified_name(const xpath_node& node) - { - return node.attribute() ? node.attribute().name() : node.node().name(); - } - - PUGI__FN const char_t* local_name(const xpath_node& node) - { - const char_t* name = qualified_name(node); - const char_t* p = find_char(name, ':'); - - return p ? p + 1 : name; - } - - struct namespace_uri_predicate - { - const char_t* prefix; - size_t prefix_length; - - namespace_uri_predicate(const char_t* name) - { - const char_t* pos = find_char(name, ':'); - - prefix = pos ? name : 0; - prefix_length = pos ? static_cast(pos - name) : 0; - } - - bool operator()(const xml_attribute& a) const - { - const char_t* name = a.name(); - - if (!starts_with(name, PUGIXML_TEXT("xmlns"))) return false; - - return prefix ? name[5] == ':' && strequalrange(name + 6, prefix, prefix_length) : name[5] == 0; - } - }; - - PUGI__FN const char_t* namespace_uri(const xml_node& node) - { - namespace_uri_predicate pred = node.name(); - - xml_node p = node; - - while (p) - { - xml_attribute a = p.find_attribute(pred); - - if (a) return a.value(); - - p = p.parent(); - } - - return PUGIXML_TEXT(""); - } - - PUGI__FN const char_t* namespace_uri(const xml_attribute& attr, const xml_node& parent) - { - namespace_uri_predicate pred = attr.name(); - - // Default namespace does not apply to attributes - if (!pred.prefix) return PUGIXML_TEXT(""); - - xml_node p = parent; - - while (p) - { - xml_attribute a = p.find_attribute(pred); - - if (a) return a.value(); - - p = p.parent(); - } - - return PUGIXML_TEXT(""); - } - - PUGI__FN const char_t* namespace_uri(const xpath_node& node) - { - return node.attribute() ? namespace_uri(node.attribute(), node.parent()) : namespace_uri(node.node()); - } - - PUGI__FN void normalize_space(char_t* buffer) - { - char_t* write = buffer; - - for (char_t* it = buffer; *it; ) - { - char_t ch = *it++; - - if (PUGI__IS_CHARTYPE(ch, ct_space)) - { - // replace whitespace sequence with single space - while (PUGI__IS_CHARTYPE(*it, ct_space)) it++; - - // avoid leading spaces - if (write != buffer) *write++ = ' '; - } - else *write++ = ch; - } - - // remove trailing space - if (write != buffer && PUGI__IS_CHARTYPE(write[-1], ct_space)) write--; - - // zero-terminate - *write = 0; - } - - PUGI__FN void translate(char_t* buffer, const char_t* from, const char_t* to) - { - size_t to_length = strlength(to); - - char_t* write = buffer; - - while (*buffer) - { - PUGI__DMC_VOLATILE char_t ch = *buffer++; - - const char_t* pos = find_char(from, ch); - - if (!pos) - *write++ = ch; // do not process - else if (static_cast(pos - from) < to_length) - *write++ = to[pos - from]; // replace - } - - // zero-terminate - *write = 0; - } - - struct xpath_variable_boolean: xpath_variable - { - xpath_variable_boolean(): value(false) - { - } - - bool value; - char_t name[1]; - }; - - struct xpath_variable_number: xpath_variable - { - xpath_variable_number(): value(0) - { - } - - double value; - char_t name[1]; - }; - - struct xpath_variable_string: xpath_variable - { - xpath_variable_string(): value(0) - { - } - - ~xpath_variable_string() - { - if (value) xml_memory::deallocate(value); - } - - char_t* value; - char_t name[1]; - }; - - struct xpath_variable_node_set: xpath_variable - { - xpath_node_set value; - char_t name[1]; - }; - - static const xpath_node_set dummy_node_set; - - PUGI__FN unsigned int hash_string(const char_t* str) - { - // Jenkins one-at-a-time hash (http://en.wikipedia.org/wiki/Jenkins_hash_function#one-at-a-time) - unsigned int result = 0; - - while (*str) - { - result += static_cast(*str++); - result += result << 10; - result ^= result >> 6; - } - - result += result << 3; - result ^= result >> 11; - result += result << 15; - - return result; - } - - template PUGI__FN T* new_xpath_variable(const char_t* name) - { - size_t length = strlength(name); - if (length == 0) return 0; // empty variable names are invalid - - // $$ we can't use offsetof(T, name) because T is non-POD, so we just allocate additional length characters - void* memory = xml_memory::allocate(sizeof(T) + length * sizeof(char_t)); - if (!memory) return 0; - - T* result = new (memory) T(); - - memcpy(result->name, name, (length + 1) * sizeof(char_t)); - - return result; - } - - PUGI__FN xpath_variable* new_xpath_variable(xpath_value_type type, const char_t* name) - { - switch (type) - { - case xpath_type_node_set: - return new_xpath_variable(name); - - case xpath_type_number: - return new_xpath_variable(name); - - case xpath_type_string: - return new_xpath_variable(name); - - case xpath_type_boolean: - return new_xpath_variable(name); - - default: - return 0; - } - } - - template PUGI__FN void delete_xpath_variable(T* var) - { - var->~T(); - xml_memory::deallocate(var); - } - - PUGI__FN void delete_xpath_variable(xpath_value_type type, xpath_variable* var) - { - switch (type) - { - case xpath_type_node_set: - delete_xpath_variable(static_cast(var)); - break; - - case xpath_type_number: - delete_xpath_variable(static_cast(var)); - break; - - case xpath_type_string: - delete_xpath_variable(static_cast(var)); - break; - - case xpath_type_boolean: - delete_xpath_variable(static_cast(var)); - break; - - default: - assert(!"Invalid variable type"); - } - } - - PUGI__FN xpath_variable* get_variable(xpath_variable_set* set, const char_t* begin, const char_t* end) - { - char_t buffer[32]; - - size_t length = static_cast(end - begin); - char_t* scratch = buffer; - - if (length >= sizeof(buffer) / sizeof(buffer[0])) - { - // need to make dummy on-heap copy - scratch = static_cast(xml_memory::allocate((length + 1) * sizeof(char_t))); - if (!scratch) return 0; - } - - // copy string to zero-terminated buffer and perform lookup - memcpy(scratch, begin, length * sizeof(char_t)); - scratch[length] = 0; - - xpath_variable* result = set->get(scratch); - - // free dummy buffer - if (scratch != buffer) xml_memory::deallocate(scratch); - - return result; - } -PUGI__NS_END - -// Internal node set class -PUGI__NS_BEGIN - PUGI__FN xpath_node_set::type_t xpath_sort(xpath_node* begin, xpath_node* end, xpath_node_set::type_t type, bool rev) - { - xpath_node_set::type_t order = rev ? xpath_node_set::type_sorted_reverse : xpath_node_set::type_sorted; - - if (type == xpath_node_set::type_unsorted) - { - sort(begin, end, document_order_comparator()); - - type = xpath_node_set::type_sorted; - } - - if (type != order) reverse(begin, end); - - return order; - } - - PUGI__FN xpath_node xpath_first(const xpath_node* begin, const xpath_node* end, xpath_node_set::type_t type) - { - if (begin == end) return xpath_node(); - - switch (type) - { - case xpath_node_set::type_sorted: - return *begin; - - case xpath_node_set::type_sorted_reverse: - return *(end - 1); - - case xpath_node_set::type_unsorted: - return *min_element(begin, end, document_order_comparator()); - - default: - assert(!"Invalid node set type"); - return xpath_node(); - } - } - - class xpath_node_set_raw - { - xpath_node_set::type_t _type; - - xpath_node* _begin; - xpath_node* _end; - xpath_node* _eos; - - public: - xpath_node_set_raw(): _type(xpath_node_set::type_unsorted), _begin(0), _end(0), _eos(0) - { - } - - xpath_node* begin() const - { - return _begin; - } - - xpath_node* end() const - { - return _end; - } - - bool empty() const - { - return _begin == _end; - } - - size_t size() const - { - return static_cast(_end - _begin); - } - - xpath_node first() const - { - return xpath_first(_begin, _end, _type); - } - - void push_back(const xpath_node& node, xpath_allocator* alloc) - { - if (_end == _eos) - { - size_t capacity = static_cast(_eos - _begin); - - // get new capacity (1.5x rule) - size_t new_capacity = capacity + capacity / 2 + 1; - - // reallocate the old array or allocate a new one - xpath_node* data = static_cast(alloc->reallocate(_begin, capacity * sizeof(xpath_node), new_capacity * sizeof(xpath_node))); - assert(data); - - // finalize - _begin = data; - _end = data + capacity; - _eos = data + new_capacity; - } - - *_end++ = node; - } - - void append(const xpath_node* begin_, const xpath_node* end_, xpath_allocator* alloc) - { - size_t size_ = static_cast(_end - _begin); - size_t capacity = static_cast(_eos - _begin); - size_t count = static_cast(end_ - begin_); - - if (size_ + count > capacity) - { - // reallocate the old array or allocate a new one - xpath_node* data = static_cast(alloc->reallocate(_begin, capacity * sizeof(xpath_node), (size_ + count) * sizeof(xpath_node))); - assert(data); - - // finalize - _begin = data; - _end = data + size_; - _eos = data + size_ + count; - } - - memcpy(_end, begin_, count * sizeof(xpath_node)); - _end += count; - } - - void sort_do() - { - _type = xpath_sort(_begin, _end, _type, false); - } - - void truncate(xpath_node* pos) - { - assert(_begin <= pos && pos <= _end); - - _end = pos; - } - - void remove_duplicates() - { - if (_type == xpath_node_set::type_unsorted) - sort(_begin, _end, duplicate_comparator()); - - _end = unique(_begin, _end); - } - - xpath_node_set::type_t type() const - { - return _type; - } - - void set_type(xpath_node_set::type_t value) - { - _type = value; - } - }; -PUGI__NS_END - -PUGI__NS_BEGIN - struct xpath_context - { - xpath_node n; - size_t position, size; - - xpath_context(const xpath_node& n_, size_t position_, size_t size_): n(n_), position(position_), size(size_) - { - } - }; - - enum lexeme_t - { - lex_none = 0, - lex_equal, - lex_not_equal, - lex_less, - lex_greater, - lex_less_or_equal, - lex_greater_or_equal, - lex_plus, - lex_minus, - lex_multiply, - lex_union, - lex_var_ref, - lex_open_brace, - lex_close_brace, - lex_quoted_string, - lex_number, - lex_slash, - lex_double_slash, - lex_open_square_brace, - lex_close_square_brace, - lex_string, - lex_comma, - lex_axis_attribute, - lex_dot, - lex_double_dot, - lex_double_colon, - lex_eof - }; - - struct xpath_lexer_string - { - const char_t* begin; - const char_t* end; - - xpath_lexer_string(): begin(0), end(0) - { - } - - bool operator==(const char_t* other) const - { - size_t length = static_cast(end - begin); - - return strequalrange(other, begin, length); - } - }; - - class xpath_lexer - { - const char_t* _cur; - const char_t* _cur_lexeme_pos; - xpath_lexer_string _cur_lexeme_contents; - - lexeme_t _cur_lexeme; - - public: - explicit xpath_lexer(const char_t* query): _cur(query) - { - next(); - } - - const char_t* state() const - { - return _cur; - } - - void next() - { - const char_t* cur = _cur; - - while (PUGI__IS_CHARTYPE(*cur, ct_space)) ++cur; - - // save lexeme position for error reporting - _cur_lexeme_pos = cur; - - switch (*cur) - { - case 0: - _cur_lexeme = lex_eof; - break; - - case '>': - if (*(cur+1) == '=') - { - cur += 2; - _cur_lexeme = lex_greater_or_equal; - } - else - { - cur += 1; - _cur_lexeme = lex_greater; - } - break; - - case '<': - if (*(cur+1) == '=') - { - cur += 2; - _cur_lexeme = lex_less_or_equal; - } - else - { - cur += 1; - _cur_lexeme = lex_less; - } - break; - - case '!': - if (*(cur+1) == '=') - { - cur += 2; - _cur_lexeme = lex_not_equal; - } - else - { - _cur_lexeme = lex_none; - } - break; - - case '=': - cur += 1; - _cur_lexeme = lex_equal; - - break; - - case '+': - cur += 1; - _cur_lexeme = lex_plus; - - break; - - case '-': - cur += 1; - _cur_lexeme = lex_minus; - - break; - - case '*': - cur += 1; - _cur_lexeme = lex_multiply; - - break; - - case '|': - cur += 1; - _cur_lexeme = lex_union; - - break; - - case '$': - cur += 1; - - if (PUGI__IS_CHARTYPEX(*cur, ctx_start_symbol)) - { - _cur_lexeme_contents.begin = cur; - - while (PUGI__IS_CHARTYPEX(*cur, ctx_symbol)) cur++; - - if (cur[0] == ':' && PUGI__IS_CHARTYPEX(cur[1], ctx_symbol)) // qname - { - cur++; // : - - while (PUGI__IS_CHARTYPEX(*cur, ctx_symbol)) cur++; - } - - _cur_lexeme_contents.end = cur; - - _cur_lexeme = lex_var_ref; - } - else - { - _cur_lexeme = lex_none; - } - - break; - - case '(': - cur += 1; - _cur_lexeme = lex_open_brace; - - break; - - case ')': - cur += 1; - _cur_lexeme = lex_close_brace; - - break; - - case '[': - cur += 1; - _cur_lexeme = lex_open_square_brace; - - break; - - case ']': - cur += 1; - _cur_lexeme = lex_close_square_brace; - - break; - - case ',': - cur += 1; - _cur_lexeme = lex_comma; - - break; - - case '/': - if (*(cur+1) == '/') - { - cur += 2; - _cur_lexeme = lex_double_slash; - } - else - { - cur += 1; - _cur_lexeme = lex_slash; - } - break; - - case '.': - if (*(cur+1) == '.') - { - cur += 2; - _cur_lexeme = lex_double_dot; - } - else if (PUGI__IS_CHARTYPEX(*(cur+1), ctx_digit)) - { - _cur_lexeme_contents.begin = cur; // . - - ++cur; - - while (PUGI__IS_CHARTYPEX(*cur, ctx_digit)) cur++; - - _cur_lexeme_contents.end = cur; - - _cur_lexeme = lex_number; - } - else - { - cur += 1; - _cur_lexeme = lex_dot; - } - break; - - case '@': - cur += 1; - _cur_lexeme = lex_axis_attribute; - - break; - - case '"': - case '\'': - { - char_t terminator = *cur; - - ++cur; - - _cur_lexeme_contents.begin = cur; - while (*cur && *cur != terminator) cur++; - _cur_lexeme_contents.end = cur; - - if (!*cur) - _cur_lexeme = lex_none; - else - { - cur += 1; - _cur_lexeme = lex_quoted_string; - } - - break; - } - - case ':': - if (*(cur+1) == ':') - { - cur += 2; - _cur_lexeme = lex_double_colon; - } - else - { - _cur_lexeme = lex_none; - } - break; - - default: - if (PUGI__IS_CHARTYPEX(*cur, ctx_digit)) - { - _cur_lexeme_contents.begin = cur; - - while (PUGI__IS_CHARTYPEX(*cur, ctx_digit)) cur++; - - if (*cur == '.') - { - cur++; - - while (PUGI__IS_CHARTYPEX(*cur, ctx_digit)) cur++; - } - - _cur_lexeme_contents.end = cur; - - _cur_lexeme = lex_number; - } - else if (PUGI__IS_CHARTYPEX(*cur, ctx_start_symbol)) - { - _cur_lexeme_contents.begin = cur; - - while (PUGI__IS_CHARTYPEX(*cur, ctx_symbol)) cur++; - - if (cur[0] == ':') - { - if (cur[1] == '*') // namespace test ncname:* - { - cur += 2; // :* - } - else if (PUGI__IS_CHARTYPEX(cur[1], ctx_symbol)) // namespace test qname - { - cur++; // : - - while (PUGI__IS_CHARTYPEX(*cur, ctx_symbol)) cur++; - } - } - - _cur_lexeme_contents.end = cur; - - _cur_lexeme = lex_string; - } - else - { - _cur_lexeme = lex_none; - } - } - - _cur = cur; - } - - lexeme_t current() const - { - return _cur_lexeme; - } - - const char_t* current_pos() const - { - return _cur_lexeme_pos; - } - - const xpath_lexer_string& contents() const - { - assert(_cur_lexeme == lex_var_ref || _cur_lexeme == lex_number || _cur_lexeme == lex_string || _cur_lexeme == lex_quoted_string); - - return _cur_lexeme_contents; - } - }; - - enum ast_type_t - { - ast_op_or, // left or right - ast_op_and, // left and right - ast_op_equal, // left = right - ast_op_not_equal, // left != right - ast_op_less, // left < right - ast_op_greater, // left > right - ast_op_less_or_equal, // left <= right - ast_op_greater_or_equal, // left >= right - ast_op_add, // left + right - ast_op_subtract, // left - right - ast_op_multiply, // left * right - ast_op_divide, // left / right - ast_op_mod, // left % right - ast_op_negate, // left - right - ast_op_union, // left | right - ast_predicate, // apply predicate to set; next points to next predicate - ast_filter, // select * from left where right - ast_filter_posinv, // select * from left where right; proximity position invariant - ast_string_constant, // string constant - ast_number_constant, // number constant - ast_variable, // variable - ast_func_last, // last() - ast_func_position, // position() - ast_func_count, // count(left) - ast_func_id, // id(left) - ast_func_local_name_0, // local-name() - ast_func_local_name_1, // local-name(left) - ast_func_namespace_uri_0, // namespace-uri() - ast_func_namespace_uri_1, // namespace-uri(left) - ast_func_name_0, // name() - ast_func_name_1, // name(left) - ast_func_string_0, // string() - ast_func_string_1, // string(left) - ast_func_concat, // concat(left, right, siblings) - ast_func_starts_with, // starts_with(left, right) - ast_func_contains, // contains(left, right) - ast_func_substring_before, // substring-before(left, right) - ast_func_substring_after, // substring-after(left, right) - ast_func_substring_2, // substring(left, right) - ast_func_substring_3, // substring(left, right, third) - ast_func_string_length_0, // string-length() - ast_func_string_length_1, // string-length(left) - ast_func_normalize_space_0, // normalize-space() - ast_func_normalize_space_1, // normalize-space(left) - ast_func_translate, // translate(left, right, third) - ast_func_boolean, // boolean(left) - ast_func_not, // not(left) - ast_func_true, // true() - ast_func_false, // false() - ast_func_lang, // lang(left) - ast_func_number_0, // number() - ast_func_number_1, // number(left) - ast_func_sum, // sum(left) - ast_func_floor, // floor(left) - ast_func_ceiling, // ceiling(left) - ast_func_round, // round(left) - ast_step, // process set left with step - ast_step_root // select root node - }; - - enum axis_t - { - axis_ancestor, - axis_ancestor_or_self, - axis_attribute, - axis_child, - axis_descendant, - axis_descendant_or_self, - axis_following, - axis_following_sibling, - axis_namespace, - axis_parent, - axis_preceding, - axis_preceding_sibling, - axis_self - }; - - enum nodetest_t - { - nodetest_none, - nodetest_name, - nodetest_type_node, - nodetest_type_comment, - nodetest_type_pi, - nodetest_type_text, - nodetest_pi, - nodetest_all, - nodetest_all_in_namespace - }; - - template struct axis_to_type - { - static const axis_t axis; - }; - - template const axis_t axis_to_type::axis = N; - - class xpath_ast_node - { - private: - // node type - char _type; - char _rettype; - - // for ast_step / ast_predicate - char _axis; - char _test; - - // tree node structure - xpath_ast_node* _left; - xpath_ast_node* _right; - xpath_ast_node* _next; - - union - { - // value for ast_string_constant - const char_t* string; - // value for ast_number_constant - double number; - // variable for ast_variable - xpath_variable* variable; - // node test for ast_step (node name/namespace/node type/pi target) - const char_t* nodetest; - } _data; - - xpath_ast_node(const xpath_ast_node&); - xpath_ast_node& operator=(const xpath_ast_node&); - - template static bool compare_eq(xpath_ast_node* lhs, xpath_ast_node* rhs, const xpath_context& c, const xpath_stack& stack, const Comp& comp) - { - xpath_value_type lt = lhs->rettype(), rt = rhs->rettype(); - - if (lt != xpath_type_node_set && rt != xpath_type_node_set) - { - if (lt == xpath_type_boolean || rt == xpath_type_boolean) - return comp(lhs->eval_boolean(c, stack), rhs->eval_boolean(c, stack)); - else if (lt == xpath_type_number || rt == xpath_type_number) - return comp(lhs->eval_number(c, stack), rhs->eval_number(c, stack)); - else if (lt == xpath_type_string || rt == xpath_type_string) - { - xpath_allocator_capture cr(stack.result); - - xpath_string ls = lhs->eval_string(c, stack); - xpath_string rs = rhs->eval_string(c, stack); - - return comp(ls, rs); - } - } - else if (lt == xpath_type_node_set && rt == xpath_type_node_set) - { - xpath_allocator_capture cr(stack.result); - - xpath_node_set_raw ls = lhs->eval_node_set(c, stack); - xpath_node_set_raw rs = rhs->eval_node_set(c, stack); - - for (const xpath_node* li = ls.begin(); li != ls.end(); ++li) - for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) - { - xpath_allocator_capture cri(stack.result); - - if (comp(string_value(*li, stack.result), string_value(*ri, stack.result))) - return true; - } - - return false; - } - else - { - if (lt == xpath_type_node_set) - { - swap(lhs, rhs); - swap(lt, rt); - } - - if (lt == xpath_type_boolean) - return comp(lhs->eval_boolean(c, stack), rhs->eval_boolean(c, stack)); - else if (lt == xpath_type_number) - { - xpath_allocator_capture cr(stack.result); - - double l = lhs->eval_number(c, stack); - xpath_node_set_raw rs = rhs->eval_node_set(c, stack); - - for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) - { - xpath_allocator_capture cri(stack.result); - - if (comp(l, convert_string_to_number(string_value(*ri, stack.result).c_str()))) - return true; - } - - return false; - } - else if (lt == xpath_type_string) - { - xpath_allocator_capture cr(stack.result); - - xpath_string l = lhs->eval_string(c, stack); - xpath_node_set_raw rs = rhs->eval_node_set(c, stack); - - for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) - { - xpath_allocator_capture cri(stack.result); - - if (comp(l, string_value(*ri, stack.result))) - return true; - } - - return false; - } - } - - assert(!"Wrong types"); - return false; - } - - template static bool compare_rel(xpath_ast_node* lhs, xpath_ast_node* rhs, const xpath_context& c, const xpath_stack& stack, const Comp& comp) - { - xpath_value_type lt = lhs->rettype(), rt = rhs->rettype(); - - if (lt != xpath_type_node_set && rt != xpath_type_node_set) - return comp(lhs->eval_number(c, stack), rhs->eval_number(c, stack)); - else if (lt == xpath_type_node_set && rt == xpath_type_node_set) - { - xpath_allocator_capture cr(stack.result); - - xpath_node_set_raw ls = lhs->eval_node_set(c, stack); - xpath_node_set_raw rs = rhs->eval_node_set(c, stack); - - for (const xpath_node* li = ls.begin(); li != ls.end(); ++li) - { - xpath_allocator_capture cri(stack.result); - - double l = convert_string_to_number(string_value(*li, stack.result).c_str()); - - for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) - { - xpath_allocator_capture crii(stack.result); - - if (comp(l, convert_string_to_number(string_value(*ri, stack.result).c_str()))) - return true; - } - } - - return false; - } - else if (lt != xpath_type_node_set && rt == xpath_type_node_set) - { - xpath_allocator_capture cr(stack.result); - - double l = lhs->eval_number(c, stack); - xpath_node_set_raw rs = rhs->eval_node_set(c, stack); - - for (const xpath_node* ri = rs.begin(); ri != rs.end(); ++ri) - { - xpath_allocator_capture cri(stack.result); - - if (comp(l, convert_string_to_number(string_value(*ri, stack.result).c_str()))) - return true; - } - - return false; - } - else if (lt == xpath_type_node_set && rt != xpath_type_node_set) - { - xpath_allocator_capture cr(stack.result); - - xpath_node_set_raw ls = lhs->eval_node_set(c, stack); - double r = rhs->eval_number(c, stack); - - for (const xpath_node* li = ls.begin(); li != ls.end(); ++li) - { - xpath_allocator_capture cri(stack.result); - - if (comp(convert_string_to_number(string_value(*li, stack.result).c_str()), r)) - return true; - } - - return false; - } - else - { - assert(!"Wrong types"); - return false; - } - } - - void apply_predicate(xpath_node_set_raw& ns, size_t first, xpath_ast_node* expr, const xpath_stack& stack) - { - assert(ns.size() >= first); - - size_t i = 1; - size_t size = ns.size() - first; - - xpath_node* last = ns.begin() + first; - - // remove_if... or well, sort of - for (xpath_node* it = last; it != ns.end(); ++it, ++i) - { - xpath_context c(*it, i, size); - - if (expr->rettype() == xpath_type_number) - { - if (expr->eval_number(c, stack) == i) - *last++ = *it; - } - else if (expr->eval_boolean(c, stack)) - *last++ = *it; - } - - ns.truncate(last); - } - - void apply_predicates(xpath_node_set_raw& ns, size_t first, const xpath_stack& stack) - { - if (ns.size() == first) return; - - for (xpath_ast_node* pred = _right; pred; pred = pred->_next) - { - apply_predicate(ns, first, pred->_left, stack); - } - } - - void step_push(xpath_node_set_raw& ns, const xml_attribute& a, const xml_node& parent, xpath_allocator* alloc) - { - if (!a) return; - - const char_t* name = a.name(); - - // There are no attribute nodes corresponding to attributes that declare namespaces - // That is, "xmlns:..." or "xmlns" - if (starts_with(name, PUGIXML_TEXT("xmlns")) && (name[5] == 0 || name[5] == ':')) return; - - switch (_test) - { - case nodetest_name: - if (strequal(name, _data.nodetest)) ns.push_back(xpath_node(a, parent), alloc); - break; - - case nodetest_type_node: - case nodetest_all: - ns.push_back(xpath_node(a, parent), alloc); - break; - - case nodetest_all_in_namespace: - if (starts_with(name, _data.nodetest)) - ns.push_back(xpath_node(a, parent), alloc); - break; - - default: - ; - } - } - - void step_push(xpath_node_set_raw& ns, const xml_node& n, xpath_allocator* alloc) - { - if (!n) return; - - switch (_test) - { - case nodetest_name: - if (n.type() == node_element && strequal(n.name(), _data.nodetest)) ns.push_back(n, alloc); - break; - - case nodetest_type_node: - ns.push_back(n, alloc); - break; - - case nodetest_type_comment: - if (n.type() == node_comment) - ns.push_back(n, alloc); - break; - - case nodetest_type_text: - if (n.type() == node_pcdata || n.type() == node_cdata) - ns.push_back(n, alloc); - break; - - case nodetest_type_pi: - if (n.type() == node_pi) - ns.push_back(n, alloc); - break; - - case nodetest_pi: - if (n.type() == node_pi && strequal(n.name(), _data.nodetest)) - ns.push_back(n, alloc); - break; - - case nodetest_all: - if (n.type() == node_element) - ns.push_back(n, alloc); - break; - - case nodetest_all_in_namespace: - if (n.type() == node_element && starts_with(n.name(), _data.nodetest)) - ns.push_back(n, alloc); - break; - - default: - assert(!"Unknown axis"); - } - } - - template void step_fill(xpath_node_set_raw& ns, const xml_node& n, xpath_allocator* alloc, T) - { - const axis_t axis = T::axis; - - switch (axis) - { - case axis_attribute: - { - for (xml_attribute a = n.first_attribute(); a; a = a.next_attribute()) - step_push(ns, a, n, alloc); - - break; - } - - case axis_child: - { - for (xml_node c = n.first_child(); c; c = c.next_sibling()) - step_push(ns, c, alloc); - - break; - } - - case axis_descendant: - case axis_descendant_or_self: - { - if (axis == axis_descendant_or_self) - step_push(ns, n, alloc); - - xml_node cur = n.first_child(); - - while (cur && cur != n) - { - step_push(ns, cur, alloc); - - if (cur.first_child()) - cur = cur.first_child(); - else if (cur.next_sibling()) - cur = cur.next_sibling(); - else - { - while (!cur.next_sibling() && cur != n) - cur = cur.parent(); - - if (cur != n) cur = cur.next_sibling(); - } - } - - break; - } - - case axis_following_sibling: - { - for (xml_node c = n.next_sibling(); c; c = c.next_sibling()) - step_push(ns, c, alloc); - - break; - } - - case axis_preceding_sibling: - { - for (xml_node c = n.previous_sibling(); c; c = c.previous_sibling()) - step_push(ns, c, alloc); - - break; - } - - case axis_following: - { - xml_node cur = n; - - // exit from this node so that we don't include descendants - while (cur && !cur.next_sibling()) cur = cur.parent(); - cur = cur.next_sibling(); - - for (;;) - { - step_push(ns, cur, alloc); - - if (cur.first_child()) - cur = cur.first_child(); - else if (cur.next_sibling()) - cur = cur.next_sibling(); - else - { - while (cur && !cur.next_sibling()) cur = cur.parent(); - cur = cur.next_sibling(); - - if (!cur) break; - } - } - - break; - } - - case axis_preceding: - { - xml_node cur = n; - - while (cur && !cur.previous_sibling()) cur = cur.parent(); - cur = cur.previous_sibling(); - - for (;;) - { - if (cur.last_child()) - cur = cur.last_child(); - else - { - // leaf node, can't be ancestor - step_push(ns, cur, alloc); - - if (cur.previous_sibling()) - cur = cur.previous_sibling(); - else - { - do - { - cur = cur.parent(); - if (!cur) break; - - if (!node_is_ancestor(cur, n)) step_push(ns, cur, alloc); - } - while (!cur.previous_sibling()); - - cur = cur.previous_sibling(); - - if (!cur) break; - } - } - } - - break; - } - - case axis_ancestor: - case axis_ancestor_or_self: - { - if (axis == axis_ancestor_or_self) - step_push(ns, n, alloc); - - xml_node cur = n.parent(); - - while (cur) - { - step_push(ns, cur, alloc); - - cur = cur.parent(); - } - - break; - } - - case axis_self: - { - step_push(ns, n, alloc); - - break; - } - - case axis_parent: - { - if (n.parent()) step_push(ns, n.parent(), alloc); - - break; - } - - default: - assert(!"Unimplemented axis"); - } - } - - template void step_fill(xpath_node_set_raw& ns, const xml_attribute& a, const xml_node& p, xpath_allocator* alloc, T v) - { - const axis_t axis = T::axis; - - switch (axis) - { - case axis_ancestor: - case axis_ancestor_or_self: - { - if (axis == axis_ancestor_or_self && _test == nodetest_type_node) // reject attributes based on principal node type test - step_push(ns, a, p, alloc); - - xml_node cur = p; - - while (cur) - { - step_push(ns, cur, alloc); - - cur = cur.parent(); - } - - break; - } - - case axis_descendant_or_self: - case axis_self: - { - if (_test == nodetest_type_node) // reject attributes based on principal node type test - step_push(ns, a, p, alloc); - - break; - } - - case axis_following: - { - xml_node cur = p; - - for (;;) - { - if (cur.first_child()) - cur = cur.first_child(); - else if (cur.next_sibling()) - cur = cur.next_sibling(); - else - { - while (cur && !cur.next_sibling()) cur = cur.parent(); - cur = cur.next_sibling(); - - if (!cur) break; - } - - step_push(ns, cur, alloc); - } - - break; - } - - case axis_parent: - { - step_push(ns, p, alloc); - - break; - } - - case axis_preceding: - { - // preceding:: axis does not include attribute nodes and attribute ancestors (they are the same as parent's ancestors), so we can reuse node preceding - step_fill(ns, p, alloc, v); - break; - } - - default: - assert(!"Unimplemented axis"); - } - } - - template xpath_node_set_raw step_do(const xpath_context& c, const xpath_stack& stack, T v) - { - const axis_t axis = T::axis; - bool attributes = (axis == axis_ancestor || axis == axis_ancestor_or_self || axis == axis_descendant_or_self || axis == axis_following || axis == axis_parent || axis == axis_preceding || axis == axis_self); - - xpath_node_set_raw ns; - ns.set_type((axis == axis_ancestor || axis == axis_ancestor_or_self || axis == axis_preceding || axis == axis_preceding_sibling) ? xpath_node_set::type_sorted_reverse : xpath_node_set::type_sorted); - - if (_left) - { - xpath_node_set_raw s = _left->eval_node_set(c, stack); - - // self axis preserves the original order - if (axis == axis_self) ns.set_type(s.type()); - - for (const xpath_node* it = s.begin(); it != s.end(); ++it) - { - size_t size = ns.size(); - - // in general, all axes generate elements in a particular order, but there is no order guarantee if axis is applied to two nodes - if (axis != axis_self && size != 0) ns.set_type(xpath_node_set::type_unsorted); - - if (it->node()) - step_fill(ns, it->node(), stack.result, v); - else if (attributes) - step_fill(ns, it->attribute(), it->parent(), stack.result, v); - - apply_predicates(ns, size, stack); - } - } - else - { - if (c.n.node()) - step_fill(ns, c.n.node(), stack.result, v); - else if (attributes) - step_fill(ns, c.n.attribute(), c.n.parent(), stack.result, v); - - apply_predicates(ns, 0, stack); - } - - // child, attribute and self axes always generate unique set of nodes - // for other axis, if the set stayed sorted, it stayed unique because the traversal algorithms do not visit the same node twice - if (axis != axis_child && axis != axis_attribute && axis != axis_self && ns.type() == xpath_node_set::type_unsorted) - ns.remove_duplicates(); - - return ns; - } - - public: - xpath_ast_node(ast_type_t type, xpath_value_type rettype_, const char_t* value): - _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(0), _right(0), _next(0) - { - assert(type == ast_string_constant); - _data.string = value; - } - - xpath_ast_node(ast_type_t type, xpath_value_type rettype_, double value): - _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(0), _right(0), _next(0) - { - assert(type == ast_number_constant); - _data.number = value; - } - - xpath_ast_node(ast_type_t type, xpath_value_type rettype_, xpath_variable* value): - _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(0), _right(0), _next(0) - { - assert(type == ast_variable); - _data.variable = value; - } - - xpath_ast_node(ast_type_t type, xpath_value_type rettype_, xpath_ast_node* left = 0, xpath_ast_node* right = 0): - _type(static_cast(type)), _rettype(static_cast(rettype_)), _axis(0), _test(0), _left(left), _right(right), _next(0) - { - } - - xpath_ast_node(ast_type_t type, xpath_ast_node* left, axis_t axis, nodetest_t test, const char_t* contents): - _type(static_cast(type)), _rettype(xpath_type_node_set), _axis(static_cast(axis)), _test(static_cast(test)), _left(left), _right(0), _next(0) - { - _data.nodetest = contents; - } - - void set_next(xpath_ast_node* value) - { - _next = value; - } - - void set_right(xpath_ast_node* value) - { - _right = value; - } - - bool eval_boolean(const xpath_context& c, const xpath_stack& stack) - { - switch (_type) - { - case ast_op_or: - return _left->eval_boolean(c, stack) || _right->eval_boolean(c, stack); - - case ast_op_and: - return _left->eval_boolean(c, stack) && _right->eval_boolean(c, stack); - - case ast_op_equal: - return compare_eq(_left, _right, c, stack, equal_to()); - - case ast_op_not_equal: - return compare_eq(_left, _right, c, stack, not_equal_to()); - - case ast_op_less: - return compare_rel(_left, _right, c, stack, less()); - - case ast_op_greater: - return compare_rel(_right, _left, c, stack, less()); - - case ast_op_less_or_equal: - return compare_rel(_left, _right, c, stack, less_equal()); - - case ast_op_greater_or_equal: - return compare_rel(_right, _left, c, stack, less_equal()); - - case ast_func_starts_with: - { - xpath_allocator_capture cr(stack.result); - - xpath_string lr = _left->eval_string(c, stack); - xpath_string rr = _right->eval_string(c, stack); - - return starts_with(lr.c_str(), rr.c_str()); - } - - case ast_func_contains: - { - xpath_allocator_capture cr(stack.result); - - xpath_string lr = _left->eval_string(c, stack); - xpath_string rr = _right->eval_string(c, stack); - - return find_substring(lr.c_str(), rr.c_str()) != 0; - } - - case ast_func_boolean: - return _left->eval_boolean(c, stack); - - case ast_func_not: - return !_left->eval_boolean(c, stack); - - case ast_func_true: - return true; - - case ast_func_false: - return false; - - case ast_func_lang: - { - if (c.n.attribute()) return false; - - xpath_allocator_capture cr(stack.result); - - xpath_string lang = _left->eval_string(c, stack); - - for (xml_node n = c.n.node(); n; n = n.parent()) - { - xml_attribute a = n.attribute(PUGIXML_TEXT("xml:lang")); - - if (a) - { - const char_t* value = a.value(); - - // strnicmp / strncasecmp is not portable - for (const char_t* lit = lang.c_str(); *lit; ++lit) - { - if (tolower_ascii(*lit) != tolower_ascii(*value)) return false; - ++value; - } - - return *value == 0 || *value == '-'; - } - } - - return false; - } - - case ast_variable: - { - assert(_rettype == _data.variable->type()); - - if (_rettype == xpath_type_boolean) - return _data.variable->get_boolean(); - - // fallthrough to type conversion - } - - default: - { - switch (_rettype) - { - case xpath_type_number: - return convert_number_to_boolean(eval_number(c, stack)); - - case xpath_type_string: - { - xpath_allocator_capture cr(stack.result); - - return !eval_string(c, stack).empty(); - } - - case xpath_type_node_set: - { - xpath_allocator_capture cr(stack.result); - - return !eval_node_set(c, stack).empty(); - } - - default: - assert(!"Wrong expression for return type boolean"); - return false; - } - } - } - } - - double eval_number(const xpath_context& c, const xpath_stack& stack) - { - switch (_type) - { - case ast_op_add: - return _left->eval_number(c, stack) + _right->eval_number(c, stack); - - case ast_op_subtract: - return _left->eval_number(c, stack) - _right->eval_number(c, stack); - - case ast_op_multiply: - return _left->eval_number(c, stack) * _right->eval_number(c, stack); - - case ast_op_divide: - return _left->eval_number(c, stack) / _right->eval_number(c, stack); - - case ast_op_mod: - return fmod(_left->eval_number(c, stack), _right->eval_number(c, stack)); - - case ast_op_negate: - return -_left->eval_number(c, stack); - - case ast_number_constant: - return _data.number; - - case ast_func_last: - return static_cast(c.size); - - case ast_func_position: - return static_cast(c.position); - - case ast_func_count: - { - xpath_allocator_capture cr(stack.result); - - return static_cast(_left->eval_node_set(c, stack).size()); - } - - case ast_func_string_length_0: - { - xpath_allocator_capture cr(stack.result); - - return static_cast(string_value(c.n, stack.result).length()); - } - - case ast_func_string_length_1: - { - xpath_allocator_capture cr(stack.result); - - return static_cast(_left->eval_string(c, stack).length()); - } - - case ast_func_number_0: - { - xpath_allocator_capture cr(stack.result); - - return convert_string_to_number(string_value(c.n, stack.result).c_str()); - } - - case ast_func_number_1: - return _left->eval_number(c, stack); - - case ast_func_sum: - { - xpath_allocator_capture cr(stack.result); - - double r = 0; - - xpath_node_set_raw ns = _left->eval_node_set(c, stack); - - for (const xpath_node* it = ns.begin(); it != ns.end(); ++it) - { - xpath_allocator_capture cri(stack.result); - - r += convert_string_to_number(string_value(*it, stack.result).c_str()); - } - - return r; - } - - case ast_func_floor: - { - double r = _left->eval_number(c, stack); - - return r == r ? floor(r) : r; - } - - case ast_func_ceiling: - { - double r = _left->eval_number(c, stack); - - return r == r ? ceil(r) : r; - } - - case ast_func_round: - return round_nearest_nzero(_left->eval_number(c, stack)); - - case ast_variable: - { - assert(_rettype == _data.variable->type()); - - if (_rettype == xpath_type_number) - return _data.variable->get_number(); - - // fallthrough to type conversion - } - - default: - { - switch (_rettype) - { - case xpath_type_boolean: - return eval_boolean(c, stack) ? 1 : 0; - - case xpath_type_string: - { - xpath_allocator_capture cr(stack.result); - - return convert_string_to_number(eval_string(c, stack).c_str()); - } - - case xpath_type_node_set: - { - xpath_allocator_capture cr(stack.result); - - return convert_string_to_number(eval_string(c, stack).c_str()); - } - - default: - assert(!"Wrong expression for return type number"); - return 0; - } - - } - } - } - - xpath_string eval_string_concat(const xpath_context& c, const xpath_stack& stack) - { - assert(_type == ast_func_concat); - - xpath_allocator_capture ct(stack.temp); - - // count the string number - size_t count = 1; - for (xpath_ast_node* nc = _right; nc; nc = nc->_next) count++; - - // gather all strings - xpath_string static_buffer[4]; - xpath_string* buffer = static_buffer; - - // allocate on-heap for large concats - if (count > sizeof(static_buffer) / sizeof(static_buffer[0])) - { - buffer = static_cast(stack.temp->allocate(count * sizeof(xpath_string))); - assert(buffer); - } - - // evaluate all strings to temporary stack - xpath_stack swapped_stack = {stack.temp, stack.result}; - - buffer[0] = _left->eval_string(c, swapped_stack); - - size_t pos = 1; - for (xpath_ast_node* n = _right; n; n = n->_next, ++pos) buffer[pos] = n->eval_string(c, swapped_stack); - assert(pos == count); - - // get total length - size_t length = 0; - for (size_t i = 0; i < count; ++i) length += buffer[i].length(); - - // create final string - char_t* result = static_cast(stack.result->allocate((length + 1) * sizeof(char_t))); - assert(result); - - char_t* ri = result; - - for (size_t j = 0; j < count; ++j) - for (const char_t* bi = buffer[j].c_str(); *bi; ++bi) - *ri++ = *bi; - - *ri = 0; - - return xpath_string(result, true); - } - - xpath_string eval_string(const xpath_context& c, const xpath_stack& stack) - { - switch (_type) - { - case ast_string_constant: - return xpath_string_const(_data.string); - - case ast_func_local_name_0: - { - xpath_node na = c.n; - - return xpath_string_const(local_name(na)); - } - - case ast_func_local_name_1: - { - xpath_allocator_capture cr(stack.result); - - xpath_node_set_raw ns = _left->eval_node_set(c, stack); - xpath_node na = ns.first(); - - return xpath_string_const(local_name(na)); - } - - case ast_func_name_0: - { - xpath_node na = c.n; - - return xpath_string_const(qualified_name(na)); - } - - case ast_func_name_1: - { - xpath_allocator_capture cr(stack.result); - - xpath_node_set_raw ns = _left->eval_node_set(c, stack); - xpath_node na = ns.first(); - - return xpath_string_const(qualified_name(na)); - } - - case ast_func_namespace_uri_0: - { - xpath_node na = c.n; - - return xpath_string_const(namespace_uri(na)); - } - - case ast_func_namespace_uri_1: - { - xpath_allocator_capture cr(stack.result); - - xpath_node_set_raw ns = _left->eval_node_set(c, stack); - xpath_node na = ns.first(); - - return xpath_string_const(namespace_uri(na)); - } - - case ast_func_string_0: - return string_value(c.n, stack.result); - - case ast_func_string_1: - return _left->eval_string(c, stack); - - case ast_func_concat: - return eval_string_concat(c, stack); - - case ast_func_substring_before: - { - xpath_allocator_capture cr(stack.temp); - - xpath_stack swapped_stack = {stack.temp, stack.result}; - - xpath_string s = _left->eval_string(c, swapped_stack); - xpath_string p = _right->eval_string(c, swapped_stack); - - const char_t* pos = find_substring(s.c_str(), p.c_str()); - - return pos ? xpath_string(s.c_str(), pos, stack.result) : xpath_string(); - } - - case ast_func_substring_after: - { - xpath_allocator_capture cr(stack.temp); - - xpath_stack swapped_stack = {stack.temp, stack.result}; - - xpath_string s = _left->eval_string(c, swapped_stack); - xpath_string p = _right->eval_string(c, swapped_stack); - - const char_t* pos = find_substring(s.c_str(), p.c_str()); - if (!pos) return xpath_string(); - - const char_t* result = pos + p.length(); - - return s.uses_heap() ? xpath_string(result, stack.result) : xpath_string_const(result); - } - - case ast_func_substring_2: - { - xpath_allocator_capture cr(stack.temp); - - xpath_stack swapped_stack = {stack.temp, stack.result}; - - xpath_string s = _left->eval_string(c, swapped_stack); - size_t s_length = s.length(); - - double first = round_nearest(_right->eval_number(c, stack)); - - if (is_nan(first)) return xpath_string(); // NaN - else if (first >= s_length + 1) return xpath_string(); - - size_t pos = first < 1 ? 1 : static_cast(first); - assert(1 <= pos && pos <= s_length + 1); - - const char_t* rbegin = s.c_str() + (pos - 1); - - return s.uses_heap() ? xpath_string(rbegin, stack.result) : xpath_string_const(rbegin); - } - - case ast_func_substring_3: - { - xpath_allocator_capture cr(stack.temp); - - xpath_stack swapped_stack = {stack.temp, stack.result}; - - xpath_string s = _left->eval_string(c, swapped_stack); - size_t s_length = s.length(); - - double first = round_nearest(_right->eval_number(c, stack)); - double last = first + round_nearest(_right->_next->eval_number(c, stack)); - - if (is_nan(first) || is_nan(last)) return xpath_string(); - else if (first >= s_length + 1) return xpath_string(); - else if (first >= last) return xpath_string(); - else if (last < 1) return xpath_string(); - - size_t pos = first < 1 ? 1 : static_cast(first); - size_t end = last >= s_length + 1 ? s_length + 1 : static_cast(last); - - assert(1 <= pos && pos <= end && end <= s_length + 1); - const char_t* rbegin = s.c_str() + (pos - 1); - const char_t* rend = s.c_str() + (end - 1); - - return (end == s_length + 1 && !s.uses_heap()) ? xpath_string_const(rbegin) : xpath_string(rbegin, rend, stack.result); - } - - case ast_func_normalize_space_0: - { - xpath_string s = string_value(c.n, stack.result); - - normalize_space(s.data(stack.result)); - - return s; - } - - case ast_func_normalize_space_1: - { - xpath_string s = _left->eval_string(c, stack); - - normalize_space(s.data(stack.result)); - - return s; - } - - case ast_func_translate: - { - xpath_allocator_capture cr(stack.temp); - - xpath_stack swapped_stack = {stack.temp, stack.result}; - - xpath_string s = _left->eval_string(c, stack); - xpath_string from = _right->eval_string(c, swapped_stack); - xpath_string to = _right->_next->eval_string(c, swapped_stack); - - translate(s.data(stack.result), from.c_str(), to.c_str()); - - return s; - } - - case ast_variable: - { - assert(_rettype == _data.variable->type()); - - if (_rettype == xpath_type_string) - return xpath_string_const(_data.variable->get_string()); - - // fallthrough to type conversion - } - - default: - { - switch (_rettype) - { - case xpath_type_boolean: - return xpath_string_const(eval_boolean(c, stack) ? PUGIXML_TEXT("true") : PUGIXML_TEXT("false")); - - case xpath_type_number: - return convert_number_to_string(eval_number(c, stack), stack.result); - - case xpath_type_node_set: - { - xpath_allocator_capture cr(stack.temp); - - xpath_stack swapped_stack = {stack.temp, stack.result}; - - xpath_node_set_raw ns = eval_node_set(c, swapped_stack); - return ns.empty() ? xpath_string() : string_value(ns.first(), stack.result); - } - - default: - assert(!"Wrong expression for return type string"); - return xpath_string(); - } - } - } - } - - xpath_node_set_raw eval_node_set(const xpath_context& c, const xpath_stack& stack) - { - switch (_type) - { - case ast_op_union: - { - xpath_allocator_capture cr(stack.temp); - - xpath_stack swapped_stack = {stack.temp, stack.result}; - - xpath_node_set_raw ls = _left->eval_node_set(c, swapped_stack); - xpath_node_set_raw rs = _right->eval_node_set(c, stack); - - // we can optimize merging two sorted sets, but this is a very rare operation, so don't bother - rs.set_type(xpath_node_set::type_unsorted); - - rs.append(ls.begin(), ls.end(), stack.result); - rs.remove_duplicates(); - - return rs; - } - - case ast_filter: - case ast_filter_posinv: - { - xpath_node_set_raw set = _left->eval_node_set(c, stack); - - // either expression is a number or it contains position() call; sort by document order - if (_type == ast_filter) set.sort_do(); - - apply_predicate(set, 0, _right, stack); - - return set; - } - - case ast_func_id: - return xpath_node_set_raw(); - - case ast_step: - { - switch (_axis) - { - case axis_ancestor: - return step_do(c, stack, axis_to_type()); - - case axis_ancestor_or_self: - return step_do(c, stack, axis_to_type()); - - case axis_attribute: - return step_do(c, stack, axis_to_type()); - - case axis_child: - return step_do(c, stack, axis_to_type()); - - case axis_descendant: - return step_do(c, stack, axis_to_type()); - - case axis_descendant_or_self: - return step_do(c, stack, axis_to_type()); - - case axis_following: - return step_do(c, stack, axis_to_type()); - - case axis_following_sibling: - return step_do(c, stack, axis_to_type()); - - case axis_namespace: - // namespaced axis is not supported - return xpath_node_set_raw(); - - case axis_parent: - return step_do(c, stack, axis_to_type()); - - case axis_preceding: - return step_do(c, stack, axis_to_type()); - - case axis_preceding_sibling: - return step_do(c, stack, axis_to_type()); - - case axis_self: - return step_do(c, stack, axis_to_type()); - - default: - assert(!"Unknown axis"); - return xpath_node_set_raw(); - } - } - - case ast_step_root: - { - assert(!_right); // root step can't have any predicates - - xpath_node_set_raw ns; - - ns.set_type(xpath_node_set::type_sorted); - - if (c.n.node()) ns.push_back(c.n.node().root(), stack.result); - else if (c.n.attribute()) ns.push_back(c.n.parent().root(), stack.result); - - return ns; - } - - case ast_variable: - { - assert(_rettype == _data.variable->type()); - - if (_rettype == xpath_type_node_set) - { - const xpath_node_set& s = _data.variable->get_node_set(); - - xpath_node_set_raw ns; - - ns.set_type(s.type()); - ns.append(s.begin(), s.end(), stack.result); - - return ns; - } - - // fallthrough to type conversion - } - - default: - assert(!"Wrong expression for return type node set"); - return xpath_node_set_raw(); - } - } - - bool is_posinv() - { - switch (_type) - { - case ast_func_position: - return false; - - case ast_string_constant: - case ast_number_constant: - case ast_variable: - return true; - - case ast_step: - case ast_step_root: - return true; - - case ast_predicate: - case ast_filter: - case ast_filter_posinv: - return true; - - default: - if (_left && !_left->is_posinv()) return false; - - for (xpath_ast_node* n = _right; n; n = n->_next) - if (!n->is_posinv()) return false; - - return true; - } - } - - xpath_value_type rettype() const - { - return static_cast(_rettype); - } - }; - - struct xpath_parser - { - xpath_allocator* _alloc; - xpath_lexer _lexer; - - const char_t* _query; - xpath_variable_set* _variables; - - xpath_parse_result* _result; - - #ifdef PUGIXML_NO_EXCEPTIONS - jmp_buf _error_handler; - #endif - - void throw_error(const char* message) - { - _result->error = message; - _result->offset = _lexer.current_pos() - _query; - - #ifdef PUGIXML_NO_EXCEPTIONS - longjmp(_error_handler, 1); - #else - throw xpath_exception(*_result); - #endif - } - - void throw_error_oom() - { - #ifdef PUGIXML_NO_EXCEPTIONS - throw_error("Out of memory"); - #else - throw std::bad_alloc(); - #endif - } - - void* alloc_node() - { - void* result = _alloc->allocate_nothrow(sizeof(xpath_ast_node)); - - if (!result) throw_error_oom(); - - return result; - } - - const char_t* alloc_string(const xpath_lexer_string& value) - { - if (value.begin) - { - size_t length = static_cast(value.end - value.begin); - - char_t* c = static_cast(_alloc->allocate_nothrow((length + 1) * sizeof(char_t))); - if (!c) throw_error_oom(); - - memcpy(c, value.begin, length * sizeof(char_t)); - c[length] = 0; - - return c; - } - else return 0; - } - - xpath_ast_node* parse_function_helper(ast_type_t type0, ast_type_t type1, size_t argc, xpath_ast_node* args[2]) - { - assert(argc <= 1); - - if (argc == 1 && args[0]->rettype() != xpath_type_node_set) throw_error("Function has to be applied to node set"); - - return new (alloc_node()) xpath_ast_node(argc == 0 ? type0 : type1, xpath_type_string, args[0]); - } - - xpath_ast_node* parse_function(const xpath_lexer_string& name, size_t argc, xpath_ast_node* args[2]) - { - switch (name.begin[0]) - { - case 'b': - if (name == PUGIXML_TEXT("boolean") && argc == 1) - return new (alloc_node()) xpath_ast_node(ast_func_boolean, xpath_type_boolean, args[0]); - - break; - - case 'c': - if (name == PUGIXML_TEXT("count") && argc == 1) - { - if (args[0]->rettype() != xpath_type_node_set) throw_error("Function has to be applied to node set"); - return new (alloc_node()) xpath_ast_node(ast_func_count, xpath_type_number, args[0]); - } - else if (name == PUGIXML_TEXT("contains") && argc == 2) - return new (alloc_node()) xpath_ast_node(ast_func_contains, xpath_type_string, args[0], args[1]); - else if (name == PUGIXML_TEXT("concat") && argc >= 2) - return new (alloc_node()) xpath_ast_node(ast_func_concat, xpath_type_string, args[0], args[1]); - else if (name == PUGIXML_TEXT("ceiling") && argc == 1) - return new (alloc_node()) xpath_ast_node(ast_func_ceiling, xpath_type_number, args[0]); - - break; - - case 'f': - if (name == PUGIXML_TEXT("false") && argc == 0) - return new (alloc_node()) xpath_ast_node(ast_func_false, xpath_type_boolean); - else if (name == PUGIXML_TEXT("floor") && argc == 1) - return new (alloc_node()) xpath_ast_node(ast_func_floor, xpath_type_number, args[0]); - - break; - - case 'i': - if (name == PUGIXML_TEXT("id") && argc == 1) - return new (alloc_node()) xpath_ast_node(ast_func_id, xpath_type_node_set, args[0]); - - break; - - case 'l': - if (name == PUGIXML_TEXT("last") && argc == 0) - return new (alloc_node()) xpath_ast_node(ast_func_last, xpath_type_number); - else if (name == PUGIXML_TEXT("lang") && argc == 1) - return new (alloc_node()) xpath_ast_node(ast_func_lang, xpath_type_boolean, args[0]); - else if (name == PUGIXML_TEXT("local-name") && argc <= 1) - return parse_function_helper(ast_func_local_name_0, ast_func_local_name_1, argc, args); - - break; - - case 'n': - if (name == PUGIXML_TEXT("name") && argc <= 1) - return parse_function_helper(ast_func_name_0, ast_func_name_1, argc, args); - else if (name == PUGIXML_TEXT("namespace-uri") && argc <= 1) - return parse_function_helper(ast_func_namespace_uri_0, ast_func_namespace_uri_1, argc, args); - else if (name == PUGIXML_TEXT("normalize-space") && argc <= 1) - return new (alloc_node()) xpath_ast_node(argc == 0 ? ast_func_normalize_space_0 : ast_func_normalize_space_1, xpath_type_string, args[0], args[1]); - else if (name == PUGIXML_TEXT("not") && argc == 1) - return new (alloc_node()) xpath_ast_node(ast_func_not, xpath_type_boolean, args[0]); - else if (name == PUGIXML_TEXT("number") && argc <= 1) - return new (alloc_node()) xpath_ast_node(argc == 0 ? ast_func_number_0 : ast_func_number_1, xpath_type_number, args[0]); - - break; - - case 'p': - if (name == PUGIXML_TEXT("position") && argc == 0) - return new (alloc_node()) xpath_ast_node(ast_func_position, xpath_type_number); - - break; - - case 'r': - if (name == PUGIXML_TEXT("round") && argc == 1) - return new (alloc_node()) xpath_ast_node(ast_func_round, xpath_type_number, args[0]); - - break; - - case 's': - if (name == PUGIXML_TEXT("string") && argc <= 1) - return new (alloc_node()) xpath_ast_node(argc == 0 ? ast_func_string_0 : ast_func_string_1, xpath_type_string, args[0]); - else if (name == PUGIXML_TEXT("string-length") && argc <= 1) - return new (alloc_node()) xpath_ast_node(argc == 0 ? ast_func_string_length_0 : ast_func_string_length_1, xpath_type_string, args[0]); - else if (name == PUGIXML_TEXT("starts-with") && argc == 2) - return new (alloc_node()) xpath_ast_node(ast_func_starts_with, xpath_type_boolean, args[0], args[1]); - else if (name == PUGIXML_TEXT("substring-before") && argc == 2) - return new (alloc_node()) xpath_ast_node(ast_func_substring_before, xpath_type_string, args[0], args[1]); - else if (name == PUGIXML_TEXT("substring-after") && argc == 2) - return new (alloc_node()) xpath_ast_node(ast_func_substring_after, xpath_type_string, args[0], args[1]); - else if (name == PUGIXML_TEXT("substring") && (argc == 2 || argc == 3)) - return new (alloc_node()) xpath_ast_node(argc == 2 ? ast_func_substring_2 : ast_func_substring_3, xpath_type_string, args[0], args[1]); - else if (name == PUGIXML_TEXT("sum") && argc == 1) - { - if (args[0]->rettype() != xpath_type_node_set) throw_error("Function has to be applied to node set"); - return new (alloc_node()) xpath_ast_node(ast_func_sum, xpath_type_number, args[0]); - } - - break; - - case 't': - if (name == PUGIXML_TEXT("translate") && argc == 3) - return new (alloc_node()) xpath_ast_node(ast_func_translate, xpath_type_string, args[0], args[1]); - else if (name == PUGIXML_TEXT("true") && argc == 0) - return new (alloc_node()) xpath_ast_node(ast_func_true, xpath_type_boolean); - - break; - - default: - break; - } - - throw_error("Unrecognized function or wrong parameter count"); - - return 0; - } - - axis_t parse_axis_name(const xpath_lexer_string& name, bool& specified) - { - specified = true; - - switch (name.begin[0]) - { - case 'a': - if (name == PUGIXML_TEXT("ancestor")) - return axis_ancestor; - else if (name == PUGIXML_TEXT("ancestor-or-self")) - return axis_ancestor_or_self; - else if (name == PUGIXML_TEXT("attribute")) - return axis_attribute; - - break; - - case 'c': - if (name == PUGIXML_TEXT("child")) - return axis_child; - - break; - - case 'd': - if (name == PUGIXML_TEXT("descendant")) - return axis_descendant; - else if (name == PUGIXML_TEXT("descendant-or-self")) - return axis_descendant_or_self; - - break; - - case 'f': - if (name == PUGIXML_TEXT("following")) - return axis_following; - else if (name == PUGIXML_TEXT("following-sibling")) - return axis_following_sibling; - - break; - - case 'n': - if (name == PUGIXML_TEXT("namespace")) - return axis_namespace; - - break; - - case 'p': - if (name == PUGIXML_TEXT("parent")) - return axis_parent; - else if (name == PUGIXML_TEXT("preceding")) - return axis_preceding; - else if (name == PUGIXML_TEXT("preceding-sibling")) - return axis_preceding_sibling; - - break; - - case 's': - if (name == PUGIXML_TEXT("self")) - return axis_self; - - break; - - default: - break; - } - - specified = false; - return axis_child; - } - - nodetest_t parse_node_test_type(const xpath_lexer_string& name) - { - switch (name.begin[0]) - { - case 'c': - if (name == PUGIXML_TEXT("comment")) - return nodetest_type_comment; - - break; - - case 'n': - if (name == PUGIXML_TEXT("node")) - return nodetest_type_node; - - break; - - case 'p': - if (name == PUGIXML_TEXT("processing-instruction")) - return nodetest_type_pi; - - break; - - case 't': - if (name == PUGIXML_TEXT("text")) - return nodetest_type_text; - - break; - - default: - break; - } - - return nodetest_none; - } - - // PrimaryExpr ::= VariableReference | '(' Expr ')' | Literal | Number | FunctionCall - xpath_ast_node* parse_primary_expression() - { - switch (_lexer.current()) - { - case lex_var_ref: - { - xpath_lexer_string name = _lexer.contents(); - - if (!_variables) - throw_error("Unknown variable: variable set is not provided"); - - xpath_variable* var = get_variable(_variables, name.begin, name.end); - - if (!var) - throw_error("Unknown variable: variable set does not contain the given name"); - - _lexer.next(); - - return new (alloc_node()) xpath_ast_node(ast_variable, var->type(), var); - } - - case lex_open_brace: - { - _lexer.next(); - - xpath_ast_node* n = parse_expression(); - - if (_lexer.current() != lex_close_brace) - throw_error("Unmatched braces"); - - _lexer.next(); - - return n; - } - - case lex_quoted_string: - { - const char_t* value = alloc_string(_lexer.contents()); - - xpath_ast_node* n = new (alloc_node()) xpath_ast_node(ast_string_constant, xpath_type_string, value); - _lexer.next(); - - return n; - } - - case lex_number: - { - double value = 0; - - if (!convert_string_to_number(_lexer.contents().begin, _lexer.contents().end, &value)) - throw_error_oom(); - - xpath_ast_node* n = new (alloc_node()) xpath_ast_node(ast_number_constant, xpath_type_number, value); - _lexer.next(); - - return n; - } - - case lex_string: - { - xpath_ast_node* args[2] = {0}; - size_t argc = 0; - - xpath_lexer_string function = _lexer.contents(); - _lexer.next(); - - xpath_ast_node* last_arg = 0; - - if (_lexer.current() != lex_open_brace) - throw_error("Unrecognized function call"); - _lexer.next(); - - if (_lexer.current() != lex_close_brace) - args[argc++] = parse_expression(); - - while (_lexer.current() != lex_close_brace) - { - if (_lexer.current() != lex_comma) - throw_error("No comma between function arguments"); - _lexer.next(); - - xpath_ast_node* n = parse_expression(); - - if (argc < 2) args[argc] = n; - else last_arg->set_next(n); - - argc++; - last_arg = n; - } - - _lexer.next(); - - return parse_function(function, argc, args); - } - - default: - throw_error("Unrecognizable primary expression"); - - return 0; - } - } - - // FilterExpr ::= PrimaryExpr | FilterExpr Predicate - // Predicate ::= '[' PredicateExpr ']' - // PredicateExpr ::= Expr - xpath_ast_node* parse_filter_expression() - { - xpath_ast_node* n = parse_primary_expression(); - - while (_lexer.current() == lex_open_square_brace) - { - _lexer.next(); - - xpath_ast_node* expr = parse_expression(); - - if (n->rettype() != xpath_type_node_set) throw_error("Predicate has to be applied to node set"); - - bool posinv = expr->rettype() != xpath_type_number && expr->is_posinv(); - - n = new (alloc_node()) xpath_ast_node(posinv ? ast_filter_posinv : ast_filter, xpath_type_node_set, n, expr); - - if (_lexer.current() != lex_close_square_brace) - throw_error("Unmatched square brace"); - - _lexer.next(); - } - - return n; - } - - // Step ::= AxisSpecifier NodeTest Predicate* | AbbreviatedStep - // AxisSpecifier ::= AxisName '::' | '@'? - // NodeTest ::= NameTest | NodeType '(' ')' | 'processing-instruction' '(' Literal ')' - // NameTest ::= '*' | NCName ':' '*' | QName - // AbbreviatedStep ::= '.' | '..' - xpath_ast_node* parse_step(xpath_ast_node* set) - { - if (set && set->rettype() != xpath_type_node_set) - throw_error("Step has to be applied to node set"); - - bool axis_specified = false; - axis_t axis = axis_child; // implied child axis - - if (_lexer.current() == lex_axis_attribute) - { - axis = axis_attribute; - axis_specified = true; - - _lexer.next(); - } - else if (_lexer.current() == lex_dot) - { - _lexer.next(); - - return new (alloc_node()) xpath_ast_node(ast_step, set, axis_self, nodetest_type_node, 0); - } - else if (_lexer.current() == lex_double_dot) - { - _lexer.next(); - - return new (alloc_node()) xpath_ast_node(ast_step, set, axis_parent, nodetest_type_node, 0); - } - - nodetest_t nt_type = nodetest_none; - xpath_lexer_string nt_name; - - if (_lexer.current() == lex_string) - { - // node name test - nt_name = _lexer.contents(); - _lexer.next(); - - // was it an axis name? - if (_lexer.current() == lex_double_colon) - { - // parse axis name - if (axis_specified) throw_error("Two axis specifiers in one step"); - - axis = parse_axis_name(nt_name, axis_specified); - - if (!axis_specified) throw_error("Unknown axis"); - - // read actual node test - _lexer.next(); - - if (_lexer.current() == lex_multiply) - { - nt_type = nodetest_all; - nt_name = xpath_lexer_string(); - _lexer.next(); - } - else if (_lexer.current() == lex_string) - { - nt_name = _lexer.contents(); - _lexer.next(); - } - else throw_error("Unrecognized node test"); - } - - if (nt_type == nodetest_none) - { - // node type test or processing-instruction - if (_lexer.current() == lex_open_brace) - { - _lexer.next(); - - if (_lexer.current() == lex_close_brace) - { - _lexer.next(); - - nt_type = parse_node_test_type(nt_name); - - if (nt_type == nodetest_none) throw_error("Unrecognized node type"); - - nt_name = xpath_lexer_string(); - } - else if (nt_name == PUGIXML_TEXT("processing-instruction")) - { - if (_lexer.current() != lex_quoted_string) - throw_error("Only literals are allowed as arguments to processing-instruction()"); - - nt_type = nodetest_pi; - nt_name = _lexer.contents(); - _lexer.next(); - - if (_lexer.current() != lex_close_brace) - throw_error("Unmatched brace near processing-instruction()"); - _lexer.next(); - } - else - throw_error("Unmatched brace near node type test"); - - } - // QName or NCName:* - else - { - if (nt_name.end - nt_name.begin > 2 && nt_name.end[-2] == ':' && nt_name.end[-1] == '*') // NCName:* - { - nt_name.end--; // erase * - - nt_type = nodetest_all_in_namespace; - } - else nt_type = nodetest_name; - } - } - } - else if (_lexer.current() == lex_multiply) - { - nt_type = nodetest_all; - _lexer.next(); - } - else throw_error("Unrecognized node test"); - - xpath_ast_node* n = new (alloc_node()) xpath_ast_node(ast_step, set, axis, nt_type, alloc_string(nt_name)); - - xpath_ast_node* last = 0; - - while (_lexer.current() == lex_open_square_brace) - { - _lexer.next(); - - xpath_ast_node* expr = parse_expression(); - - xpath_ast_node* pred = new (alloc_node()) xpath_ast_node(ast_predicate, xpath_type_node_set, expr); - - if (_lexer.current() != lex_close_square_brace) - throw_error("Unmatched square brace"); - _lexer.next(); - - if (last) last->set_next(pred); - else n->set_right(pred); - - last = pred; - } - - return n; - } - - // RelativeLocationPath ::= Step | RelativeLocationPath '/' Step | RelativeLocationPath '//' Step - xpath_ast_node* parse_relative_location_path(xpath_ast_node* set) - { - xpath_ast_node* n = parse_step(set); - - while (_lexer.current() == lex_slash || _lexer.current() == lex_double_slash) - { - lexeme_t l = _lexer.current(); - _lexer.next(); - - if (l == lex_double_slash) - n = new (alloc_node()) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0); - - n = parse_step(n); - } - - return n; - } - - // LocationPath ::= RelativeLocationPath | AbsoluteLocationPath - // AbsoluteLocationPath ::= '/' RelativeLocationPath? | '//' RelativeLocationPath - xpath_ast_node* parse_location_path() - { - if (_lexer.current() == lex_slash) - { - _lexer.next(); - - xpath_ast_node* n = new (alloc_node()) xpath_ast_node(ast_step_root, xpath_type_node_set); - - // relative location path can start from axis_attribute, dot, double_dot, multiply and string lexemes; any other lexeme means standalone root path - lexeme_t l = _lexer.current(); - - if (l == lex_string || l == lex_axis_attribute || l == lex_dot || l == lex_double_dot || l == lex_multiply) - return parse_relative_location_path(n); - else - return n; - } - else if (_lexer.current() == lex_double_slash) - { - _lexer.next(); - - xpath_ast_node* n = new (alloc_node()) xpath_ast_node(ast_step_root, xpath_type_node_set); - n = new (alloc_node()) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0); - - return parse_relative_location_path(n); - } - - // else clause moved outside of if because of bogus warning 'control may reach end of non-void function being inlined' in gcc 4.0.1 - return parse_relative_location_path(0); - } - - // PathExpr ::= LocationPath - // | FilterExpr - // | FilterExpr '/' RelativeLocationPath - // | FilterExpr '//' RelativeLocationPath - xpath_ast_node* parse_path_expression() - { - // Clarification. - // PathExpr begins with either LocationPath or FilterExpr. - // FilterExpr begins with PrimaryExpr - // PrimaryExpr begins with '$' in case of it being a variable reference, - // '(' in case of it being an expression, string literal, number constant or - // function call. - - if (_lexer.current() == lex_var_ref || _lexer.current() == lex_open_brace || - _lexer.current() == lex_quoted_string || _lexer.current() == lex_number || - _lexer.current() == lex_string) - { - if (_lexer.current() == lex_string) - { - // This is either a function call, or not - if not, we shall proceed with location path - const char_t* state = _lexer.state(); - - while (PUGI__IS_CHARTYPE(*state, ct_space)) ++state; - - if (*state != '(') return parse_location_path(); - - // This looks like a function call; however this still can be a node-test. Check it. - if (parse_node_test_type(_lexer.contents()) != nodetest_none) return parse_location_path(); - } - - xpath_ast_node* n = parse_filter_expression(); - - if (_lexer.current() == lex_slash || _lexer.current() == lex_double_slash) - { - lexeme_t l = _lexer.current(); - _lexer.next(); - - if (l == lex_double_slash) - { - if (n->rettype() != xpath_type_node_set) throw_error("Step has to be applied to node set"); - - n = new (alloc_node()) xpath_ast_node(ast_step, n, axis_descendant_or_self, nodetest_type_node, 0); - } - - // select from location path - return parse_relative_location_path(n); - } - - return n; - } - else return parse_location_path(); - } - - // UnionExpr ::= PathExpr | UnionExpr '|' PathExpr - xpath_ast_node* parse_union_expression() - { - xpath_ast_node* n = parse_path_expression(); - - while (_lexer.current() == lex_union) - { - _lexer.next(); - - xpath_ast_node* expr = parse_union_expression(); - - if (n->rettype() != xpath_type_node_set || expr->rettype() != xpath_type_node_set) - throw_error("Union operator has to be applied to node sets"); - - n = new (alloc_node()) xpath_ast_node(ast_op_union, xpath_type_node_set, n, expr); - } - - return n; - } - - // UnaryExpr ::= UnionExpr | '-' UnaryExpr - xpath_ast_node* parse_unary_expression() - { - if (_lexer.current() == lex_minus) - { - _lexer.next(); - - xpath_ast_node* expr = parse_unary_expression(); - - return new (alloc_node()) xpath_ast_node(ast_op_negate, xpath_type_number, expr); - } - else return parse_union_expression(); - } - - // MultiplicativeExpr ::= UnaryExpr - // | MultiplicativeExpr '*' UnaryExpr - // | MultiplicativeExpr 'div' UnaryExpr - // | MultiplicativeExpr 'mod' UnaryExpr - xpath_ast_node* parse_multiplicative_expression() - { - xpath_ast_node* n = parse_unary_expression(); - - while (_lexer.current() == lex_multiply || (_lexer.current() == lex_string && - (_lexer.contents() == PUGIXML_TEXT("mod") || _lexer.contents() == PUGIXML_TEXT("div")))) - { - ast_type_t op = _lexer.current() == lex_multiply ? ast_op_multiply : - _lexer.contents().begin[0] == 'd' ? ast_op_divide : ast_op_mod; - _lexer.next(); - - xpath_ast_node* expr = parse_unary_expression(); - - n = new (alloc_node()) xpath_ast_node(op, xpath_type_number, n, expr); - } - - return n; - } - - // AdditiveExpr ::= MultiplicativeExpr - // | AdditiveExpr '+' MultiplicativeExpr - // | AdditiveExpr '-' MultiplicativeExpr - xpath_ast_node* parse_additive_expression() - { - xpath_ast_node* n = parse_multiplicative_expression(); - - while (_lexer.current() == lex_plus || _lexer.current() == lex_minus) - { - lexeme_t l = _lexer.current(); - - _lexer.next(); - - xpath_ast_node* expr = parse_multiplicative_expression(); - - n = new (alloc_node()) xpath_ast_node(l == lex_plus ? ast_op_add : ast_op_subtract, xpath_type_number, n, expr); - } - - return n; - } - - // RelationalExpr ::= AdditiveExpr - // | RelationalExpr '<' AdditiveExpr - // | RelationalExpr '>' AdditiveExpr - // | RelationalExpr '<=' AdditiveExpr - // | RelationalExpr '>=' AdditiveExpr - xpath_ast_node* parse_relational_expression() - { - xpath_ast_node* n = parse_additive_expression(); - - while (_lexer.current() == lex_less || _lexer.current() == lex_less_or_equal || - _lexer.current() == lex_greater || _lexer.current() == lex_greater_or_equal) - { - lexeme_t l = _lexer.current(); - _lexer.next(); - - xpath_ast_node* expr = parse_additive_expression(); - - n = new (alloc_node()) xpath_ast_node(l == lex_less ? ast_op_less : l == lex_greater ? ast_op_greater : - l == lex_less_or_equal ? ast_op_less_or_equal : ast_op_greater_or_equal, xpath_type_boolean, n, expr); - } - - return n; - } - - // EqualityExpr ::= RelationalExpr - // | EqualityExpr '=' RelationalExpr - // | EqualityExpr '!=' RelationalExpr - xpath_ast_node* parse_equality_expression() - { - xpath_ast_node* n = parse_relational_expression(); - - while (_lexer.current() == lex_equal || _lexer.current() == lex_not_equal) - { - lexeme_t l = _lexer.current(); - - _lexer.next(); - - xpath_ast_node* expr = parse_relational_expression(); - - n = new (alloc_node()) xpath_ast_node(l == lex_equal ? ast_op_equal : ast_op_not_equal, xpath_type_boolean, n, expr); - } - - return n; - } - - // AndExpr ::= EqualityExpr | AndExpr 'and' EqualityExpr - xpath_ast_node* parse_and_expression() - { - xpath_ast_node* n = parse_equality_expression(); - - while (_lexer.current() == lex_string && _lexer.contents() == PUGIXML_TEXT("and")) - { - _lexer.next(); - - xpath_ast_node* expr = parse_equality_expression(); - - n = new (alloc_node()) xpath_ast_node(ast_op_and, xpath_type_boolean, n, expr); - } - - return n; - } - - // OrExpr ::= AndExpr | OrExpr 'or' AndExpr - xpath_ast_node* parse_or_expression() - { - xpath_ast_node* n = parse_and_expression(); - - while (_lexer.current() == lex_string && _lexer.contents() == PUGIXML_TEXT("or")) - { - _lexer.next(); - - xpath_ast_node* expr = parse_and_expression(); - - n = new (alloc_node()) xpath_ast_node(ast_op_or, xpath_type_boolean, n, expr); - } - - return n; - } - - // Expr ::= OrExpr - xpath_ast_node* parse_expression() - { - return parse_or_expression(); - } - - xpath_parser(const char_t* query, xpath_variable_set* variables, xpath_allocator* alloc, xpath_parse_result* result): _alloc(alloc), _lexer(query), _query(query), _variables(variables), _result(result) - { - } - - xpath_ast_node* parse() - { - xpath_ast_node* result = parse_expression(); - - if (_lexer.current() != lex_eof) - { - // there are still unparsed tokens left, error - throw_error("Incorrect query"); - } - - return result; - } - - static xpath_ast_node* parse(const char_t* query, xpath_variable_set* variables, xpath_allocator* alloc, xpath_parse_result* result) - { - xpath_parser parser(query, variables, alloc, result); - - #ifdef PUGIXML_NO_EXCEPTIONS - int error = setjmp(parser._error_handler); - - return (error == 0) ? parser.parse() : 0; - #else - return parser.parse(); - #endif - } - }; - - struct xpath_query_impl - { - static xpath_query_impl* create() - { - void* memory = xml_memory::allocate(sizeof(xpath_query_impl)); - - return new (memory) xpath_query_impl(); - } - - static void destroy(void* ptr) - { - if (!ptr) return; - - // free all allocated pages - static_cast(ptr)->alloc.release(); - - // free allocator memory (with the first page) - xml_memory::deallocate(ptr); - } - - xpath_query_impl(): root(0), alloc(&block) - { - block.next = 0; - } - - xpath_ast_node* root; - xpath_allocator alloc; - xpath_memory_block block; - }; - - PUGI__FN xpath_string evaluate_string_impl(xpath_query_impl* impl, const xpath_node& n, xpath_stack_data& sd) - { - if (!impl) return xpath_string(); - - #ifdef PUGIXML_NO_EXCEPTIONS - if (setjmp(sd.error_handler)) return xpath_string(); - #endif - - xpath_context c(n, 1, 1); - - return impl->root->eval_string(c, sd.stack); - } -PUGI__NS_END - -namespace pugi -{ -#ifndef PUGIXML_NO_EXCEPTIONS - PUGI__FN xpath_exception::xpath_exception(const xpath_parse_result& result_): _result(result_) - { - assert(_result.error); - } - - PUGI__FN const char* xpath_exception::what() const throw() - { - return _result.error; - } - - PUGI__FN const xpath_parse_result& xpath_exception::result() const - { - return _result; - } -#endif - - PUGI__FN xpath_node::xpath_node() - { - } - - PUGI__FN xpath_node::xpath_node(const xml_node& node_): _node(node_) - { - } - - PUGI__FN xpath_node::xpath_node(const xml_attribute& attribute_, const xml_node& parent_): _node(attribute_ ? parent_ : xml_node()), _attribute(attribute_) - { - } - - PUGI__FN xml_node xpath_node::node() const - { - return _attribute ? xml_node() : _node; - } - - PUGI__FN xml_attribute xpath_node::attribute() const - { - return _attribute; - } - - PUGI__FN xml_node xpath_node::parent() const - { - return _attribute ? _node : _node.parent(); - } - - PUGI__FN static void unspecified_bool_xpath_node(xpath_node***) - { - } - - PUGI__FN xpath_node::operator xpath_node::unspecified_bool_type() const - { - return (_node || _attribute) ? unspecified_bool_xpath_node : 0; - } - - PUGI__FN bool xpath_node::operator!() const - { - return !(_node || _attribute); - } - - PUGI__FN bool xpath_node::operator==(const xpath_node& n) const - { - return _node == n._node && _attribute == n._attribute; - } - - PUGI__FN bool xpath_node::operator!=(const xpath_node& n) const - { - return _node != n._node || _attribute != n._attribute; - } - -#ifdef __BORLANDC__ - PUGI__FN bool operator&&(const xpath_node& lhs, bool rhs) - { - return (bool)lhs && rhs; - } - - PUGI__FN bool operator||(const xpath_node& lhs, bool rhs) - { - return (bool)lhs || rhs; - } -#endif - - PUGI__FN void xpath_node_set::_assign(const_iterator begin_, const_iterator end_) - { - assert(begin_ <= end_); - - size_t size_ = static_cast(end_ - begin_); - - if (size_ <= 1) - { - // deallocate old buffer - if (_begin != &_storage) impl::xml_memory::deallocate(_begin); - - // use internal buffer - if (begin_ != end_) _storage = *begin_; - - _begin = &_storage; - _end = &_storage + size_; - } - else - { - // make heap copy - xpath_node* storage = static_cast(impl::xml_memory::allocate(size_ * sizeof(xpath_node))); - - if (!storage) - { - #ifdef PUGIXML_NO_EXCEPTIONS - return; - #else - throw std::bad_alloc(); - #endif - } - - memcpy(storage, begin_, size_ * sizeof(xpath_node)); - - // deallocate old buffer - if (_begin != &_storage) impl::xml_memory::deallocate(_begin); - - // finalize - _begin = storage; - _end = storage + size_; - } - } - - PUGI__FN xpath_node_set::xpath_node_set(): _type(type_unsorted), _begin(&_storage), _end(&_storage) - { - } - - PUGI__FN xpath_node_set::xpath_node_set(const_iterator begin_, const_iterator end_, type_t type_): _type(type_), _begin(&_storage), _end(&_storage) - { - _assign(begin_, end_); - } - - PUGI__FN xpath_node_set::~xpath_node_set() - { - if (_begin != &_storage) impl::xml_memory::deallocate(_begin); - } - - PUGI__FN xpath_node_set::xpath_node_set(const xpath_node_set& ns): _type(ns._type), _begin(&_storage), _end(&_storage) - { - _assign(ns._begin, ns._end); - } - - PUGI__FN xpath_node_set& xpath_node_set::operator=(const xpath_node_set& ns) - { - if (this == &ns) return *this; - - _type = ns._type; - _assign(ns._begin, ns._end); - - return *this; - } - - PUGI__FN xpath_node_set::type_t xpath_node_set::type() const - { - return _type; - } - - PUGI__FN size_t xpath_node_set::size() const - { - return _end - _begin; - } - - PUGI__FN bool xpath_node_set::empty() const - { - return _begin == _end; - } - - PUGI__FN const xpath_node& xpath_node_set::operator[](size_t index) const - { - assert(index < size()); - return _begin[index]; - } - - PUGI__FN xpath_node_set::const_iterator xpath_node_set::begin() const - { - return _begin; - } - - PUGI__FN xpath_node_set::const_iterator xpath_node_set::end() const - { - return _end; - } - - PUGI__FN void xpath_node_set::sort(bool reverse) - { - _type = impl::xpath_sort(_begin, _end, _type, reverse); - } - - PUGI__FN xpath_node xpath_node_set::first() const - { - return impl::xpath_first(_begin, _end, _type); - } - - PUGI__FN xpath_parse_result::xpath_parse_result(): error("Internal error"), offset(0) - { - } - - PUGI__FN xpath_parse_result::operator bool() const - { - return error == 0; - } - - PUGI__FN const char* xpath_parse_result::description() const - { - return error ? error : "No error"; - } - - PUGI__FN xpath_variable::xpath_variable() - { - } - - PUGI__FN const char_t* xpath_variable::name() const - { - switch (_type) - { - case xpath_type_node_set: - return static_cast(this)->name; - - case xpath_type_number: - return static_cast(this)->name; - - case xpath_type_string: - return static_cast(this)->name; - - case xpath_type_boolean: - return static_cast(this)->name; - - default: - assert(!"Invalid variable type"); - return 0; - } - } - - PUGI__FN xpath_value_type xpath_variable::type() const - { - return _type; - } - - PUGI__FN bool xpath_variable::get_boolean() const - { - return (_type == xpath_type_boolean) ? static_cast(this)->value : false; - } - - PUGI__FN double xpath_variable::get_number() const - { - return (_type == xpath_type_number) ? static_cast(this)->value : impl::gen_nan(); - } - - PUGI__FN const char_t* xpath_variable::get_string() const - { - const char_t* value = (_type == xpath_type_string) ? static_cast(this)->value : 0; - return value ? value : PUGIXML_TEXT(""); - } - - PUGI__FN const xpath_node_set& xpath_variable::get_node_set() const - { - return (_type == xpath_type_node_set) ? static_cast(this)->value : impl::dummy_node_set; - } - - PUGI__FN bool xpath_variable::set(bool value) - { - if (_type != xpath_type_boolean) return false; - - static_cast(this)->value = value; - return true; - } - - PUGI__FN bool xpath_variable::set(double value) - { - if (_type != xpath_type_number) return false; - - static_cast(this)->value = value; - return true; - } - - PUGI__FN bool xpath_variable::set(const char_t* value) - { - if (_type != xpath_type_string) return false; - - impl::xpath_variable_string* var = static_cast(this); - - // duplicate string - size_t size = (impl::strlength(value) + 1) * sizeof(char_t); - - char_t* copy = static_cast(impl::xml_memory::allocate(size)); - if (!copy) return false; - - memcpy(copy, value, size); - - // replace old string - if (var->value) impl::xml_memory::deallocate(var->value); - var->value = copy; - - return true; - } - - PUGI__FN bool xpath_variable::set(const xpath_node_set& value) - { - if (_type != xpath_type_node_set) return false; - - static_cast(this)->value = value; - return true; - } - - PUGI__FN xpath_variable_set::xpath_variable_set() - { - for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i) _data[i] = 0; - } - - PUGI__FN xpath_variable_set::~xpath_variable_set() - { - for (size_t i = 0; i < sizeof(_data) / sizeof(_data[0]); ++i) - { - xpath_variable* var = _data[i]; - - while (var) - { - xpath_variable* next = var->_next; - - impl::delete_xpath_variable(var->_type, var); - - var = next; - } - } - } - - PUGI__FN xpath_variable* xpath_variable_set::find(const char_t* name) const - { - const size_t hash_size = sizeof(_data) / sizeof(_data[0]); - size_t hash = impl::hash_string(name) % hash_size; - - // look for existing variable - for (xpath_variable* var = _data[hash]; var; var = var->_next) - if (impl::strequal(var->name(), name)) - return var; - - return 0; - } - - PUGI__FN xpath_variable* xpath_variable_set::add(const char_t* name, xpath_value_type type) - { - const size_t hash_size = sizeof(_data) / sizeof(_data[0]); - size_t hash = impl::hash_string(name) % hash_size; - - // look for existing variable - for (xpath_variable* var = _data[hash]; var; var = var->_next) - if (impl::strequal(var->name(), name)) - return var->type() == type ? var : 0; - - // add new variable - xpath_variable* result = impl::new_xpath_variable(type, name); - - if (result) - { - result->_type = type; - result->_next = _data[hash]; - - _data[hash] = result; - } - - return result; - } - - PUGI__FN bool xpath_variable_set::set(const char_t* name, bool value) - { - xpath_variable* var = add(name, xpath_type_boolean); - return var ? var->set(value) : false; - } - - PUGI__FN bool xpath_variable_set::set(const char_t* name, double value) - { - xpath_variable* var = add(name, xpath_type_number); - return var ? var->set(value) : false; - } - - PUGI__FN bool xpath_variable_set::set(const char_t* name, const char_t* value) - { - xpath_variable* var = add(name, xpath_type_string); - return var ? var->set(value) : false; - } - - PUGI__FN bool xpath_variable_set::set(const char_t* name, const xpath_node_set& value) - { - xpath_variable* var = add(name, xpath_type_node_set); - return var ? var->set(value) : false; - } - - PUGI__FN xpath_variable* xpath_variable_set::get(const char_t* name) - { - return find(name); - } - - PUGI__FN const xpath_variable* xpath_variable_set::get(const char_t* name) const - { - return find(name); - } - - PUGI__FN xpath_query::xpath_query(const char_t* query, xpath_variable_set* variables): _impl(0) - { - impl::xpath_query_impl* qimpl = impl::xpath_query_impl::create(); - - if (!qimpl) - { - #ifdef PUGIXML_NO_EXCEPTIONS - _result.error = "Out of memory"; - #else - throw std::bad_alloc(); - #endif - } - else - { - impl::buffer_holder impl_holder(qimpl, impl::xpath_query_impl::destroy); - - qimpl->root = impl::xpath_parser::parse(query, variables, &qimpl->alloc, &_result); - - if (qimpl->root) - { - _impl = static_cast(impl_holder.release()); - _result.error = 0; - } - } - } - - PUGI__FN xpath_query::~xpath_query() - { - impl::xpath_query_impl::destroy(_impl); - } - - PUGI__FN xpath_value_type xpath_query::return_type() const - { - if (!_impl) return xpath_type_none; - - return static_cast(_impl)->root->rettype(); - } - - PUGI__FN bool xpath_query::evaluate_boolean(const xpath_node& n) const - { - if (!_impl) return false; - - impl::xpath_context c(n, 1, 1); - impl::xpath_stack_data sd; - - #ifdef PUGIXML_NO_EXCEPTIONS - if (setjmp(sd.error_handler)) return false; - #endif - - return static_cast(_impl)->root->eval_boolean(c, sd.stack); - } - - PUGI__FN double xpath_query::evaluate_number(const xpath_node& n) const - { - if (!_impl) return impl::gen_nan(); - - impl::xpath_context c(n, 1, 1); - impl::xpath_stack_data sd; - - #ifdef PUGIXML_NO_EXCEPTIONS - if (setjmp(sd.error_handler)) return impl::gen_nan(); - #endif - - return static_cast(_impl)->root->eval_number(c, sd.stack); - } - -#ifndef PUGIXML_NO_STL - PUGI__FN string_t xpath_query::evaluate_string(const xpath_node& n) const - { - impl::xpath_stack_data sd; - - return impl::evaluate_string_impl(static_cast(_impl), n, sd).c_str(); - } -#endif - - PUGI__FN size_t xpath_query::evaluate_string(char_t* buffer, size_t capacity, const xpath_node& n) const - { - impl::xpath_stack_data sd; - - impl::xpath_string r = impl::evaluate_string_impl(static_cast(_impl), n, sd); - - size_t full_size = r.length() + 1; - - if (capacity > 0) - { - size_t size = (full_size < capacity) ? full_size : capacity; - assert(size > 0); - - memcpy(buffer, r.c_str(), (size - 1) * sizeof(char_t)); - buffer[size - 1] = 0; - } - - return full_size; - } - - PUGI__FN xpath_node_set xpath_query::evaluate_node_set(const xpath_node& n) const - { - if (!_impl) return xpath_node_set(); - - impl::xpath_ast_node* root = static_cast(_impl)->root; - - if (root->rettype() != xpath_type_node_set) - { - #ifdef PUGIXML_NO_EXCEPTIONS - return xpath_node_set(); - #else - xpath_parse_result res; - res.error = "Expression does not evaluate to node set"; - - throw xpath_exception(res); - #endif - } - - impl::xpath_context c(n, 1, 1); - impl::xpath_stack_data sd; - - #ifdef PUGIXML_NO_EXCEPTIONS - if (setjmp(sd.error_handler)) return xpath_node_set(); - #endif - - impl::xpath_node_set_raw r = root->eval_node_set(c, sd.stack); - - return xpath_node_set(r.begin(), r.end(), r.type()); - } - - PUGI__FN const xpath_parse_result& xpath_query::result() const - { - return _result; - } - - PUGI__FN static void unspecified_bool_xpath_query(xpath_query***) - { - } - - PUGI__FN xpath_query::operator xpath_query::unspecified_bool_type() const - { - return _impl ? unspecified_bool_xpath_query : 0; - } - - PUGI__FN bool xpath_query::operator!() const - { - return !_impl; - } - - PUGI__FN xpath_node xml_node::select_single_node(const char_t* query, xpath_variable_set* variables) const - { - xpath_query q(query, variables); - return select_single_node(q); - } - - PUGI__FN xpath_node xml_node::select_single_node(const xpath_query& query) const - { - xpath_node_set s = query.evaluate_node_set(*this); - return s.empty() ? xpath_node() : s.first(); - } - - PUGI__FN xpath_node_set xml_node::select_nodes(const char_t* query, xpath_variable_set* variables) const - { - xpath_query q(query, variables); - return select_nodes(q); - } - - PUGI__FN xpath_node_set xml_node::select_nodes(const xpath_query& query) const - { - return query.evaluate_node_set(*this); - } -} - -#endif - -#ifdef __BORLANDC__ -# pragma option pop -#endif - -// Intel C++ does not properly keep warning state for function templates, -// so popping warning state at the end of translation unit leads to warnings in the middle. -#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) -# pragma warning(pop) -#endif - -// Undefine all local macros (makes sure we're not leaking macros in header-only mode) -#undef PUGI__NO_INLINE -#undef PUGI__STATIC_ASSERT -#undef PUGI__DMC_VOLATILE -#undef PUGI__MSVC_CRT_VERSION -#undef PUGI__NS_BEGIN -#undef PUGI__NS_END -#undef PUGI__FN -#undef PUGI__FN_NO_INLINE -#undef PUGI__IS_CHARTYPE_IMPL -#undef PUGI__IS_CHARTYPE -#undef PUGI__IS_CHARTYPEX -#undef PUGI__SKIPWS -#undef PUGI__OPTSET -#undef PUGI__PUSHNODE -#undef PUGI__POPNODE -#undef PUGI__SCANFOR -#undef PUGI__SCANWHILE -#undef PUGI__ENDSEG -#undef PUGI__THROW_ERROR -#undef PUGI__CHECK_ERROR - -#endif - -/** - * Copyright (c) 2006-2012 Arseny Kapoulkine - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - */ diff --git a/resources/arrow.svg b/resources/arrow.svg new file mode 100644 index 0000000000..505356adee --- /dev/null +++ b/resources/arrow.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/busy_0.svg b/resources/busy_0.svg new file mode 100644 index 0000000000..646e7c2ee8 --- /dev/null +++ b/resources/busy_0.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/resources/busy_1.svg b/resources/busy_1.svg new file mode 100644 index 0000000000..19297c4e25 --- /dev/null +++ b/resources/busy_1.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/resources/busy_2.svg b/resources/busy_2.svg new file mode 100644 index 0000000000..31bff4e9a7 --- /dev/null +++ b/resources/busy_2.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/resources/busy_3.svg b/resources/busy_3.svg new file mode 100644 index 0000000000..523efb627b --- /dev/null +++ b/resources/busy_3.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/data/resources/button.png b/resources/button.png similarity index 100% rename from data/resources/button.png rename to resources/button.png diff --git a/data/resources/button_filled.png b/resources/button_filled.png similarity index 100% rename from data/resources/button_filled.png rename to resources/button_filled.png diff --git a/resources/cartridge.svg b/resources/cartridge.svg new file mode 100644 index 0000000000..661c0371e6 --- /dev/null +++ b/resources/cartridge.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/checkbox_checked.svg b/resources/checkbox_checked.svg new file mode 100644 index 0000000000..5f19b53021 --- /dev/null +++ b/resources/checkbox_checked.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/resources/checkbox_unchecked.svg b/resources/checkbox_unchecked.svg new file mode 100644 index 0000000000..5808eb13df --- /dev/null +++ b/resources/checkbox_unchecked.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/fav_add.svg b/resources/fav_add.svg new file mode 100644 index 0000000000..34402f462b --- /dev/null +++ b/resources/fav_add.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/fav_remove.svg b/resources/fav_remove.svg new file mode 100644 index 0000000000..bb5f3f2a72 --- /dev/null +++ b/resources/fav_remove.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/folder.svg b/resources/folder.svg new file mode 100644 index 0000000000..24393589be --- /dev/null +++ b/resources/folder.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/data/resources/frame.png b/resources/frame.png similarity index 100% rename from data/resources/frame.png rename to resources/frame.png diff --git a/resources/help/analog_down.svg b/resources/help/analog_down.svg new file mode 100644 index 0000000000..e76f67d04f --- /dev/null +++ b/resources/help/analog_down.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/resources/help/analog_left.svg b/resources/help/analog_left.svg new file mode 100644 index 0000000000..c841f079de --- /dev/null +++ b/resources/help/analog_left.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/resources/help/analog_right.svg b/resources/help/analog_right.svg new file mode 100644 index 0000000000..c163bf7037 --- /dev/null +++ b/resources/help/analog_right.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/resources/help/analog_stick.svg b/resources/help/analog_stick.svg new file mode 100644 index 0000000000..e6fb01e7cb --- /dev/null +++ b/resources/help/analog_stick.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/resources/help/analog_thumb.svg b/resources/help/analog_thumb.svg new file mode 100644 index 0000000000..4da4ff50e6 --- /dev/null +++ b/resources/help/analog_thumb.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/resources/help/analog_up.svg b/resources/help/analog_up.svg new file mode 100644 index 0000000000..a004e43b5e --- /dev/null +++ b/resources/help/analog_up.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/resources/help/button_1.svg b/resources/help/button_1.svg new file mode 100644 index 0000000000..aea898fe4c --- /dev/null +++ b/resources/help/button_1.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_2.svg b/resources/help/button_2.svg new file mode 100644 index 0000000000..4216cb9918 --- /dev/null +++ b/resources/help/button_2.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_3.svg b/resources/help/button_3.svg new file mode 100644 index 0000000000..2c2f21f89a --- /dev/null +++ b/resources/help/button_3.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_4.svg b/resources/help/button_4.svg new file mode 100644 index 0000000000..dc31c17112 --- /dev/null +++ b/resources/help/button_4.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_a.svg b/resources/help/button_a.svg new file mode 100644 index 0000000000..c88ad1a3c7 --- /dev/null +++ b/resources/help/button_a.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_b.svg b/resources/help/button_b.svg new file mode 100644 index 0000000000..115fd1919d --- /dev/null +++ b/resources/help/button_b.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_circle.svg b/resources/help/button_circle.svg new file mode 100644 index 0000000000..4f707be0ef --- /dev/null +++ b/resources/help/button_circle.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_cross.svg b/resources/help/button_cross.svg new file mode 100644 index 0000000000..a6a906c703 --- /dev/null +++ b/resources/help/button_cross.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_hotkey.svg b/resources/help/button_hotkey.svg new file mode 100644 index 0000000000..f4e200c8b5 --- /dev/null +++ b/resources/help/button_hotkey.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_l.svg b/resources/help/button_l.svg new file mode 100644 index 0000000000..07dc3b0ab7 --- /dev/null +++ b/resources/help/button_l.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_lr.svg b/resources/help/button_lr.svg new file mode 100644 index 0000000000..df6096811a --- /dev/null +++ b/resources/help/button_lr.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/help/button_lt.svg b/resources/help/button_lt.svg new file mode 100644 index 0000000000..0c4a212650 --- /dev/null +++ b/resources/help/button_lt.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/resources/help/button_r.svg b/resources/help/button_r.svg new file mode 100644 index 0000000000..8db52740c7 --- /dev/null +++ b/resources/help/button_r.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_rt.svg b/resources/help/button_rt.svg new file mode 100644 index 0000000000..15f0fd0adc --- /dev/null +++ b/resources/help/button_rt.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/resources/help/button_select.svg b/resources/help/button_select.svg new file mode 100644 index 0000000000..eba861d6c6 --- /dev/null +++ b/resources/help/button_select.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/help/button_square.svg b/resources/help/button_square.svg new file mode 100644 index 0000000000..f0b8ac3625 --- /dev/null +++ b/resources/help/button_square.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_start.svg b/resources/help/button_start.svg new file mode 100644 index 0000000000..78fb5632e5 --- /dev/null +++ b/resources/help/button_start.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/resources/help/button_triangle.svg b/resources/help/button_triangle.svg new file mode 100644 index 0000000000..716e02cff7 --- /dev/null +++ b/resources/help/button_triangle.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_x.svg b/resources/help/button_x.svg new file mode 100644 index 0000000000..c0898eb234 --- /dev/null +++ b/resources/help/button_x.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/button_y.svg b/resources/help/button_y.svg new file mode 100644 index 0000000000..11ef2d2b8d --- /dev/null +++ b/resources/help/button_y.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/resources/help/buttons_east.svg b/resources/help/buttons_east.svg new file mode 100644 index 0000000000..a2d210e0fa --- /dev/null +++ b/resources/help/buttons_east.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/help/buttons_north.svg b/resources/help/buttons_north.svg new file mode 100644 index 0000000000..bec23c8110 --- /dev/null +++ b/resources/help/buttons_north.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/help/buttons_south.svg b/resources/help/buttons_south.svg new file mode 100644 index 0000000000..8d3814634a --- /dev/null +++ b/resources/help/buttons_south.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/help/buttons_west.svg b/resources/help/buttons_west.svg new file mode 100644 index 0000000000..fb5970c987 --- /dev/null +++ b/resources/help/buttons_west.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/help/dpad_all.svg b/resources/help/dpad_all.svg new file mode 100644 index 0000000000..19ede31971 --- /dev/null +++ b/resources/help/dpad_all.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/help/dpad_down.svg b/resources/help/dpad_down.svg new file mode 100644 index 0000000000..84a41fc386 --- /dev/null +++ b/resources/help/dpad_down.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/help/dpad_left.svg b/resources/help/dpad_left.svg new file mode 100644 index 0000000000..1b018d69ef --- /dev/null +++ b/resources/help/dpad_left.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/help/dpad_leftright.svg b/resources/help/dpad_leftright.svg new file mode 100644 index 0000000000..e18a6d725b --- /dev/null +++ b/resources/help/dpad_leftright.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/help/dpad_right.svg b/resources/help/dpad_right.svg new file mode 100644 index 0000000000..228f5e044f --- /dev/null +++ b/resources/help/dpad_right.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/help/dpad_up.svg b/resources/help/dpad_up.svg new file mode 100644 index 0000000000..eb6dc0c9cd --- /dev/null +++ b/resources/help/dpad_up.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/help/dpad_updown.svg b/resources/help/dpad_updown.svg new file mode 100644 index 0000000000..85116059ce --- /dev/null +++ b/resources/help/dpad_updown.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/mamebioses.xml b/resources/mamebioses.xml new file mode 100644 index 0000000000..2369798f76 --- /dev/null +++ b/resources/mamebioses.xml @@ -0,0 +1,91 @@ + +3dobios +acpsx +airlbios +aleck64 +alg3do +alg_bios +allied +ar_bios +aristmk5 +aristmk6 +aristmk7 +atarisy1 +awbios +bubsys +cchip +cdibios +cedmag +chihiro +coh1000a +coh1000c +coh1000t +coh1000w +coh1001l +coh1002e +coh1002m +coh1002t +coh1002v +coh3002c +coh3002t +cpzn1 +cpzn2 +crysbios +cubo +cvs +decocass +f355bios +f355dlx +galgbios +gp_110 +gq863 +gts1 +hikaru +hng64 +hod2bios +isgsm +iteagle +konamigv +konamigx +konendev +kpython +kpython2 +kviper +lindbios +mac2bios +macsbios +maxaflex +megaplay +megatech +midssio +namcoc69 +namcoc70 +namcoc75 +naomi +naomi2 +naomigd +neogeo +nichidvd +nmk004 +nss +pgm +playch10 +pumpitup +recel +sammymdl +segasp +sfcbox +shtzone +skns +stvbios +su2000 +sys246 +sys256 +sys573 +taitofx1 +taitotz +tourvis +tps +triforce +v4bios +ym2608 diff --git a/resources/mamedevices.xml b/resources/mamedevices.xml new file mode 100644 index 0000000000..825cf8f221 --- /dev/null +++ b/resources/mamedevices.xml @@ -0,0 +1,1163 @@ + +22vp931 +3c505 +3xtwin +4dparprn +a1000kbd_de +a1000kbd_dk +a1000kbd_fr +a1000kbd_gb +a1000kbd_it +a1000kbd_se +a1000kbd_us +a1200kbd_rb +a1cass +a2000kbd_ch +a2000kbd_de +a2000kbd_dk +a2000kbd_es +a2000kbd_fr +a2000kbd_g80_de +a2000kbd_g80_dk +a2000kbd_g80_gb +a2000kbd_g80_se +a2000kbd_g80_us +a2000kbd_gb +a2000kbd_it +a2000kbd_no +a2000kbd_se +a2000kbd_us +a2aevm80 +a2ap16 +a2ap16a +a2aplcrd +a2booti +a2bufgrapplerplus +a2bufgrapplerplusa +a2cffa02 +a2cffa2 +a2corvus +a2diskiing +a2excel9 +a2focdrv +a2grappler +a2grapplerplus +a2hsscsi +a2iwm +a2lancegs +a2memexp +a2mouse +a2parprn +a2pdromdr +a2pic +a2q68 +a2q68plus +a2ramfac +a2romfp +a2romint +a2scsi +a2sd +a2sider1 +a2sider2 +a2ssc +a2superdrive +a2suprterm +a2surance +a2swyft +a2thunpl +a2tmstho +a2twarp +a2ultrme +a2ulttrm +a2uniprint +a2vidtrm +a2vistaa800 +a2vtc1 +a2vulcan +a2vulgld +a2vuliie +a2zipdrv +a3fdc +a500kbd_ch +a500kbd_de +a500kbd_dk +a500kbd_es +a500kbd_fr +a500kbd_gb +a500kbd_it +a500kbd_no +a500kbd_se +a500kbd_us +a600kbd_ch +a600kbd_de +a600kbd_dk +a600kbd_es +a600kbd_fr +a600kbd_gb +a600kbd_it +a600kbd_no +a600kbd_se +a600kbd_us +abc1600mac +abc1600mover +abc55 +abc77 +abc800kb +abc80kb +abc830 +abc832 +abc834 +abc838 +abc850flop +abc99 +abc_db4106 +abc_db4107 +abc_db4112 +abc_fd2 +abc_slutprov +abc_ssa +abc_uni800 +abc_unidisk +abcsio +acb2072 +ace_sp_reelctrl +ace_sp_reelctrl_pcp +acorn_vdu80 +acs8600_ics +adam_ddp +adam_fdc +adam_ide +adam_kb +adam_prn +adam_spi +adbmodem +agat7_flop +agat840k_hle +agat9_flop +agat_fdc +aha1542a +aha1542b +aha1542c +aha1542cf +aha1542cp +aha1740 +aha1742a +aha2940au +alto2_cpu +altos2_kbd +amiga_a2091 +amiga_a570 +amiga_a590 +amiga_ar1 +amiga_ar2 +amiga_ar3 +amiga_buddha +amiga_oktagon2008 +amiga_ripple +ampex230_kbd +ap2000 +aplcd150 +aprikb +aprissi +arc_a448 +arc_a448b +arc_acejoy +arc_armadeus +arc_bbcio_aga30 +arc_bbcio_aka10 +arc_bbcio_we +arc_eaglem2 +arc_ether1_aka25 +arc_ether2_aeh50 +arc_ether3_aeh54 +arc_ethera +arc_etherd +arc_etherr +arc_faxpack +arc_greyhawk +arc_hdisc_akd52 +arc_hdisc_cw +arc_hdisc_morley +arc_hdisc_we +arc_ide_be +arc_ide_rdev +arc_iomidi_aka15 +arc_lark +arc_lbp4 +arc_midi2 +arc_midi_aka16 +arc_midimax +arc_midimax2 +arc_nexus_a500 +arc_rom_aka05 +arc_rom_r225 +arc_rs423 +arc_scan256 +arc_scanjunior +arc_scanjunior3 +arc_scanlight +arc_scanvideo +arc_scsi_a500 +arc_scsi_aka31 +arc_scsi_aka32 +arc_scsi_cumana +arc_scsi_ling +arc_scsi_morley +arc_scsi_oak +arc_scsi_vti +arc_serial +arc_spectra +arc_ua_morley +arc_uma_morley +arc_upa_hccs +arc_upmidi_aka12 +archimedes_keyboard +asc88 +ascsasi +at_keybc +atari1050 +atari810 +atom_discpack +ax208 +ax208p +banshee_x86 +basf7100_kbd +bbc_24bbc +bbc_2ndserial +bbc_acorn1770 +bbc_acorn8271 +bbc_ams3 +bbc_ariesb20 +bbc_ariesb32 +bbc_autoprom +bbc_beebspch +bbc_bitstik1 +bbc_bitstik2 +bbc_cc500 +bbc_chameleon +bbc_cisco +bbc_cumana1 +bbc_cumana2 +bbc_cumana68k +bbc_cv1797 +bbc_datacentre +bbc_ieee488 +bbc_integrab +bbc_kenda +bbc_memexb20 +bbc_mertec +bbc_morleyaa +bbc_multiform +bbc_opus1770 +bbc_opus2791 +bbc_opus2793 +bbc_opus3 +bbc_opus8272 +bbc_opusa +bbc_pdram +bbc_pms64k +bbc_ramdisc +bbc_raven20 +bbc_stl1770_1 +bbc_stl1770_2 +bbc_stl2m128 +bbc_stl4m32 +bbc_stldfdc_1 +bbc_stlswr128 +bbc_stlswr16 +bbc_stlswr32 +bbc_stlswr64 +bbc_tube_16032 +bbc_tube_32016 +bbc_tube_32016l +bbc_tube_6502 +bbc_tube_6502e +bbc_tube_6502p +bbc_tube_65c102 +bbc_tube_80186 +bbc_tube_80286 +bbc_tube_a500 +bbc_tube_a500d +bbc_tube_arm +bbc_tube_arm7 +bbc_tube_casper +bbc_tube_cms6809 +bbc_tube_matchbox +bbc_tube_pcplus +bbc_tube_rc6502 +bbc_tube_rc65816 +bbc_tube_x25 +bbc_tube_z80 +bbc_tube_z80w +bbc_tube_zep100 +bbc_tube_zep100l +bbc_tube_zep100m +bbc_tube_zep100w +bbc_udm +bbc_voicebox +bbc_we32kram +bbc_weddb2 +bbc_weddb3 +betadisk +bingoct +bk_kmd +bluechip +bml3kanji +bml3mp1802 +bml3mp1805 +bsmt2000 +bt542b +bt542bh +bt545s +bw2_ramcard +bwtwo +c1526 +c1540 +c1541 +c1541c +c1541dd +c1541ii +c1541pd +c1541pdc +c1551 +c1563 +c1570 +c1571 +c1571cr +c1581 +c2031 +c2040 +c2040_fdc +c3040 +c4023 +c4040 +c64_buscard +c64_buscard2 +c64_cspeech +c64_mscr +c64_nl10 +c64_supercpu +c64_xl80 +c64_z80videopak +c8050 +c8050fdc +c8250 +c8250lp +c8280 +cadabc +cbm2_hrga +cbm2_hrgb +cbm8000_hsg_a +cbm8000_hsg_b +cbm_interpod +cbm_serbox +cchip +ccs7710 +cd6809_fdc +cd90_015 +cd90_351 +cd90_640 +cdd2000 +cdr4210 +cdrn820s +cdu415 +cdu561_25 +cdu75s +centennial_sl01m_15_11194 +centennial_sl02m_15_11194 +centennial_sl04m_15_11194 +cffa1 +cfp1080s +cga +cga_iskr1030m +cga_iskr1031 +cga_m24 +cga_mc1502 +cga_poisk2 +cga_superimpose +cgenie_fdc +cgthree +chessmachine +cit101_kbd +cit101e_kbd +cit220p_kbd +clgd542x +clgd5446_pci +clgd5465_laguna +cmdhd +cmdrc2 +cmi_ankbd +cmi_mkbd +cms_4080term +cmsscsi +coco_dcmodem +coco_fdc +coco_orch90 +coco_psg +coco_rs232 +coco_scii +coco_ssc +coco_t4426 +coco_wpk +coco_wpk2 +coco_wpkrs +compiskb +comx_clm +comx_eb +comx_epr +comx_fd +comx_pl80 +comx_prn +comx_thm +concept_kbd +cp2024 +cp31 +cp450_fdc +cpc_brunword4 +cpc_ddi1 +cpc_dkspeech +cpc_hd20 +cpc_mface2 +cpc_ser +cpc_serams +cpc_smartwatch +cpc_ssa1 +cpc_transtape +cpuap +cq90_028 +crd254sh +crt9028_000 +crvfdc01 +crvfdc02 +csd1 +cuda +cuda302 +cudalite +cv8lc +cw7501 +d2fdc +d9060 +d9090 +db50xg +db60xg +dc320b +dc320e +dc820 +dc820b +dectalk_isa +dg640 +digilog_kbd +dim68k_kbd +dio98543 +dio98544 +dio98550 +dio98603a +dio98603b +dio98628 +dio98629 +diskii13 +dm_clgd5430 +dmv_k220 +dmv_k230 +dmv_k231 +dmv_k235 +dmv_k806 +dmv_keyboard +dragon_fdc +dragon_jcbsnd +dragon_jcbspch +dragon_serial +dragon_sprites +ds1001 +dsd4432 +dw_kbd +ec1840_0002 +ec1841_0002 +ecb_grip21 +econet_e01 +econet_e01s +ef9340_1 +ef9365 +ega +egret +einstein_sd +einstein_speech +eispc_kb +electron_ap1 +electron_ap6 +electron_elksd128 +electron_elksd64 +electron_m2105 +electron_mc68k +electron_mode7 +electron_plus1 +electron_plus3 +electron_pwrjoy +electron_romboxp +electron_sidewndr +electron_voxbox +enh2000 +enp10 +ep64_exdos +epson_pf10 +epson_qx_option_multifont +epson_rx80 +epson_tf20 +ergoline_kbd +et4000 +et4000_kasan16 +et4kw32i +europc_kbd +ev346 +ex1280 +ex800 +executive10_102_kbd +exorterm155_device +f4431_kbd +fc_disksys +fd148 +fd2000 +fd4000 +fdc344 +fdcmag +filetto_cga +freedom220_kbd +fsd1 +fsd2 +g80_1500 +geforce256 +geforce256ddr +gfxultra +gfxultrap +gic +gunsense +h89bus +hardbox +hcpu30 +hd44780 +hd44780u +hd61830 +hd63484 +he191_3425 +heath_gp19_tlb +heath_igc_super19_tlb_device +heath_igc_tlb_device +heath_igc_ultra_tlb_device +heath_igc_watz_tlb_device +heath_imaginator_tlb +heath_super19_tlb +heath_superset_tlb +heath_tlb +heath_ultra_tlb +heath_watz_tlb +hk68v10 +hp82900 +hp82937 +hp82939 +hp9122c +hp9133 +hp98034 +hp98035 +hp98046 +hp9845_prt +hp9895 +hpblp +human_interface +i8244 +i8245 +ibm_mfc +ibm_vga +idpart_video +ie15_device +ie15kbd +imds2ioc +imi5000h +indusgt +intv_ecs +intv_voice +iq151_disc2 +iq151_minigraf +iq151_ms15a +iq151_video32 +iq151_video64 +isa_aga +isa_aga_pc200 +isa_epc_mda +isa_finalchs +isa_hdc +isa_hdc_ec1841 +isa_hercules +isa_ibm_mda +isa_ibm_pgc +isa_ibm_speech +isa_pcmidi +isa_prose4001 +isbc202 +isbc8024 +isbc_215g +jaleco_vj_pc +jc1310 +jvs13551 +k573_dio +k573kara +k573mcr +k573msu +k7659_keyboard +kaypro10kbd +kb_3270pc +kb_ec1841 +kb_iskr1030 +kb_ms_natural +kb_pc83 +kb_pcat101 +kb_pcat84 +kb_pcxt83 +kbd_lle_en_us +kc_d004 +kc_d004_gide +keytronic_l2207 +keytronic_pc3270 +keytronic_pc3270_at +km035 +ks0066 +labtam_3232 +labtam_8086cpu +labtam_vducom +labtam_z80sbc +lba_enhancer +lc7985 +ldp1000 +ldp1450 +ldv1000 +lk201 +lm24014h +lrk331 +lux10828 +lux21046 +lux21056 +lx800 +lx810l +m1comm +m20_8086 +m24_kbd +m24_z8000 +m50458 +m68705p3 +m68705p5 +m68705r3 +m68705u3 +m68hc05pge +m68hc705c4a +m68hc705c8a +mach64isa +mackbd_m0110 +mackbd_m0110a +mackbd_m0110a_f +mackbd_m0110a_j +mackbd_m0110b +mackbd_m0110f +mackbd_m0110j +mackbd_m0110t +mackbd_m0120 +mackbd_m0120p +mb90082 +mbc55x_kbd +mc1502_rom +mcx128 +md_kbd +md_rom_svp +mg1_kbd_device +mga2064w +microtan_kbd_mt009 +microtouch +midcsd +midssio +mie +mindset_sound_module +minichif +mks3 +mm1kb +mm5740 +mockingboardd +model1io +model1io2 +mpcb030 +mpcb828 +mpcb849 +mpcb896 +mpcb963 +mpcba63 +mpcba79 +mpcbb68 +mpcbb92 +mpf1_epb +mpf1_epb_ibp +mpf1_iom_ip +mpf1_prt +mpf1_prt_ip +mpf1_sgb +mpf1_ssb +mpf1_tva_ip +mpf1_vid +mps1200 +mps1250 +mpu401 +ms7004 +msdsd1 +msdsd2 +mshark +msm6222b01 +msmt070 +msmt071 +msmt081 +msmt094 +msx_cart_bm_012 +msx_cart_easispeech +msx_cart_sfg01 +msx_cart_sfg05 +msx_cart_skw01 +msx_cart_sunrise_ataide +msx_moonsound +mtx_cfx +mtx_sdxbas +mtx_sdxcpm +mu5lcd +mulcd +mvme120 +mvme121 +mvme122 +mvme123 +mvme147 +mvme180 +mvme181 +mvme187 +mvme327a +mvme328 +mvme350 +mzr8105 +nabupc_keyboard +namco50 +namco51 +namco52 +namco53 +namco54 +namco56 +namco58 +namco59 +namco62 +namco_amc +namco_asca1 +namco_asca3 +namco_asca3a +namco_asca5 +namco_csz1 +namco_cyberlead +namco_cyberlead_led +namco_cyberleada +namco_emio102 +namco_fca10 +namco_fca11 +namco_fcb +namco_tssio +namco_xmiu1 +namcoc65 +namcoc67 +namcoc68 +namcoc69 +namcoc70 +namcoc71 +namcoc74 +namcoc75 +namcoc76 +nanoreseau_mo +nanoreseau_to +nb_aenet +nb_amc3b +nb_btbug +nb_c264 +nb_image +nb_laserview +nb_m2hr +nb_m2vc +nb_mdc48 +nb_mdc824 +nb_qdlink +nb_rtpd +nb_sp8s3 +nb_spdq +nb_thungx +nb_vikbw +nb_wspt +ncr53c825_pci +neon250 +nes_rob +newbrain_eim +newbrain_fdc +nlq401 +nmk004 +novell_dcb +np600a3 +nss_tvinterface +omniwave +omti8621isa +oric_jasmin +oric_microdisc +osa_analyst +osa_maestro +osa_maestroa +osa_sparc +oti64111_pci +p1_fdc +p1_hdc +p1_rom +p72 +pa7246 +partner_gdp +pc1512kb +pc1640_iga +pc80s31 +pc80s31k +pc88va2_fd_if +pc9801_118 +pc9801_26 +pc9801_55l +pc9801_55u +pc9801_86 +pc9801_spb +pc98_otomichan_kai +pcd_kbd +pcd_video +pcx_video +pd3_30hr +pd3_c264 +pd3_lviw +pd3_mclr +pd3_pc16 +pdc20262 +pds30_emac +pds_hyper +pds_sefp +pdslc_macconlc +pet_softbox +pet_superpet +pg200 +plg100_vl +plg150_ap +plus4_sid +polyvti +pr8210 +premier_fdc +profighterq +profighterqa +profighterqb +profighterx +promotion3210 +ps2_keybc +psion_3fax +psion_3link_ser +psion_parallel +psx_cd +psxgboost +pvga1a +pvga1a_jk +px320a +qg640 +ql_cumanafdi +ql_gold +ql_kdi +ql_mhd +ql_mpfdi +ql_opdbm +ql_pcmlqdi +ql_qldisc +ql_qplus4 +ql_qubide +ql_sdisk +ql_sqboard256 +ql_sqboard512 +ql_sqmouse +ql_sqmouse512 +ql_trump +ql_trump256 +ql_trump512 +ql_trump768 +qs1000 +qsound +qsound_hle +qts1 +quadro +qx10_keyboard_ascii +qx10_keyboard_hasci +rageiidvd +rc2014_micro +rc2014_mini_cpm +rc2014_pagable_rom +rc2014_rom_ram_512k +rc2014_switchable_rom +riva128 +riva128zx +rivatnt +rivatnt2 +rivatnt2_m64 +rivatnt2_ultra +rm_mq2 +robotron_k7070 +robotron_k7071 +rolm_pdc +rolm_smioc +rtpc_kbd +rx01 +s100_am310 +s100_djdma +s100_mm65k16s +s100_nsmdsa +s100_nsmdsad +s100_sj2db +s1410 +s3_764 +s97269pb +s_smp +sa1403d +saa5050 +saa5051 +saa5052 +saa5053 +saa5054 +saa5055 +saa5056 +saa5057 +saa5240a +saa5240b +saa5243e +sad8852 +satcdb +sb16 +sb300p +sbus_hme +sbus_sunpc +sc119 +scorpion_ic +sdtandy_fdc +sed1200da +sed1200db +sed1200fa +sed1200fb +sed1278 +sed1330 +sega837_14438 +segaai_soundbox +segabill +segadimm +seganetw +sente6vb +serad +sfd1001 +sgi_gm1 +sgi_ip4 +sgi_kbd +side116 +simutrek +sis630_gui +sis6326_agp +sis900_eth +smoc501 +sms_diypaddle +smvme2000 +sn74s262 +sn74s263 +sns_dsp1bleg +sns_dsp1leg +sns_dsp1leg_hi +sns_dsp2leg +sns_dsp3leg +sns_dsp4leg +sns_rom_sgb +sns_rom_sgb2 +sns_seta10leg +sns_seta11leg +softcard3 +spc1000_fdd_exp +spectrum_beta128 +spectrum_betacbi +spectrum_betaclone +spectrum_betaplus +spectrum_betav2 +spectrum_betav3 +spectrum_d40 +spectrum_d80 +spectrum_d80v2 +spectrum_disciple +spectrum_flpone +spectrum_gamma +spectrum_intf1 +spectrum_kempcentref +spectrum_kempcentreu +spectrum_kempdisc +spectrum_lprint +spectrum_lprint3 +spectrum_mface1 +spectrum_mface128 +spectrum_mface128v1 +spectrum_mface1v1 +spectrum_mface1v2 +spectrum_mface1v3 +spectrum_mface3 +spectrum_mikroplus +spectrum_mpoker +spectrum_mprint +spectrum_opus +spectrum_plus2test +spectrum_plusd +spectrum_proceed +spectrum_sdi +spectrum_spdos +spectrum_speccydos +spectrum_specmate +spectrum_swiftdisc +spectrum_swiftdisc2 +spectrum_usource +spectrum_uspeech +spectrum_vtx5000 +spectrum_wafa +st_kbd +stereo_fx +stic +sun1cpu +sv603 +sv806 +sw1000xg +swtpc8212_device +sx1541 +sys68k_cpu1 +sys68k_cpu20 +sys68k_cpu21 +sys68k_cpu21a +sys68k_cpu21b +sys68k_cpu21s +sys68k_cpu21ya +sys68k_cpu21yb +sys68k_cpu30 +sys68k_cpu30be +sys68k_cpu30lite +sys68k_cpu30x +sys68k_cpu30xa +sys68k_cpu30za +sys68k_cpu33 +sys68k_iscsi1 +sys68k_isio1 +t5182 +tanbus_ra32krom +tanbus_tandos +tanbus_tanex +tanbus_vid8082 +tandberg_tdv2100_disp_logic +tandberg_tdv2100_keyboard +tandy2kb +tdl12 +technica +tek410x_kbd +tek_msu_fdc +teletex800 +tetriskr_cga +tgui9680 +ti99_bwg +ti99_ccdcc +ti99_ccfdc +ti99_ddcc1 +ti99_evpc +ti99_fdc +ti99_gkracker +ti99_hfdc +ti99_myarcmem +ti99_pcode +ti99_rs232 +ti99_speech +ti99_tipi +ti99_whtscsi +ti_hx5102 +tiki100_8088 +tim011_kbd +tk02 +tms32030 +tms32031 +tms32032 +tms32033 +to8_kbd +to9_kbd +to9p_kbd +tp880v +tp881v +trs80m2kb +turbogx +turbogxp +tv950kb +tv955kb +tvc_hbf +tvga9000 +ultra12f +ultra12f32 +ultra14f +ultra24f +umc6650 +upd7220 +upd7220a +uts_400kbd +uts_extw +v102_kbd +v1050kb +v50_kbd +v550_kbd +vanta +vector4_kbd +vic1515 +vic1520 +vic20_fe3 +vic20_videopak +victor9k_fdc +victor9k_kb +virge_pci +virgedx_pci +vision864 +vision964 +vision968 +voicebox +votrsc01 +votrsc01a +vp700 +vtech_fdc +vtech_rs232 +vtech_rtty +vtech_sdloader +vtech_wordpro +wangpc_lic +wangpc_rtc +wangpc_tig +wangpc_wdc +wangpckb +wd1002a_wx1 +wd1007a +wd90c00_jk +wd90c11_lr +wd90c30_lr +wd90c31_lr +wd90c31a_lr +wd90c31a_zs +wd90c33_zz +wd90c90_jk +wd9710_pci +wdxt_gen +wg130 +wyse700 +x68k_cz6bs1 +x820kb +xt446 +xtide +ym2413 +ym2423 +ym2608 +ymf281 +z8671 +z8682 +zip100_ide +zorba_kbd +zxbus_neogs diff --git a/resources/mamenames.xml b/resources/mamenames.xml new file mode 100644 index 0000000000..2e99566d3d --- /dev/null +++ b/resources/mamenames.xml @@ -0,0 +1,149913 @@ + + + 005 + 005 + + + 100lions + 100 Lions (10219211, NSW/ACT) + + + 100lionsa + 100 Lions (30223811, ASP) + + + 10yard + 10-Yard Fight (World, set 1) + + + 10yard85 + 10-Yard Fight '85 (US, Taito license) + + + 10yardj + 10-Yard Fight (Japan) + + + 11beat + Eleven Beat + + + 15lions + 15 Lions (10166211, Queensland) + + + 18w + 18 Wheeler (set 1) + + + 18w2 + 18 Wheeler (set 2) + + + 18wheelr + 18 Wheeler: American Pro Trucker (deluxe, Rev A) + + + 18wheelro + 18 Wheeler: American Pro Trucker (deluxe) + + + 18wheelrt + 18 Wheeler: American Pro Trucker (deluxe, Rev T) + + + 18wheels + 18 Wheeler: American Pro Trucker (standard) + + + 18wheelu + 18 Wheeler: American Pro Trucker (upright) + + + 1941 + 1941: Counter Attack (World 900227) + + + 1941j + 1941: Counter Attack (Japan) + + + 1941r1 + 1941: Counter Attack (World) + + + 1941u + 1941: Counter Attack (USA 900227) + + + 1942 + 1942 (Revision B) + + + 1942a + 1942 (Revision A) + + + 1942abl + 1942 (Revision A, bootleg) + + + 1942b + 1942 (First Version) + + + 1942c64 + 1942 (C64 Music) + + + 1942h + Supercharger 1942 + + + 1942iti + 1942 (Itisa bootleg) + + + 1942p + 1942 (Tecfri PCB, bootleg?) + + + 1942w + 1942 (Williams Electronics license) + + + 1943 + 1943: The Battle of Midway (Euro) + + + 1943b + 1943: Battle of Midway (bootleg, hack of Japan set) + + + 1943b2 + 1943: Battle of Midway (bootleg, hack of Japan set, set 2) + + + 1943bj + 1943: Midway Kaisen (bootleg) + + + 1943j + 1943: Midway Kaisen (Japan, Rev B) + + + 1943ja + 1943: Midway Kaisen (Japan) + + + 1943jah + 1943: Midway Kaisen (Japan, no protection hack) + + + 1943jaha + 1943: Midway Kaisen (Japan, no protection hack, alt) + + + 1943kai + 1943 Kai: Midway Kaisen (Japan) + + + 1943mii + 1943: The Battle of Midway Mark II (US) + + + 1943u + 1943: The Battle of Midway (US, Rev C) + + + 1943ua + 1943: The Battle of Midway (US) + + + 1944 + 1944: The Loop Master (Europe 000620) + + + 1944ad + 1944: The Loop Master (USA 000620 alt Phoenix Edition) (bootleg) + + + 1944d + 1944: The Loop Master (USA 000620 Phoenix Edition) (bootleg) + + + 1944j + 1944: The Loop Master (Japan 000620) + + + 1944u + 1944: The Loop Master (USA 000620) + + + 1945kiii + 1945k III (newer, OPCX2 PCB) + + + 1945kiiin + 1945k III (newer, OPCX1 PCB) + + + 1945kiiio + 1945k III (older, OPCX1 PCB) + + + 1945kiiipt + 1945k III (Promat license, OPCX1 PCB) + + + 19in1 + 19 in 1 MAME bootleg (BAR-V000) + + + 19xx + 19XX: The War Against Destiny (Europe 960104) + + + 19xxa + 19XX: The War Against Destiny (Asia 960104) + + + 19xxar1 + 19XX: The War Against Destiny (Asia 951207) + + + 19xxb + 19XX: The War Against Destiny (Brazil 951218) + + + 19xxd + 19XX: The War Against Destiny (USA 951207 Phoenix Edition) (bootleg) + + + 19xxh + 19XX: The War Against Destiny (Hispanic 951218) + + + 19xxj + 19XX: The War Against Destiny (Japan 960104, yellow case) + + + 19xxjr1 + 19XX: The War Against Destiny (Japan 951225) + + + 19xxjr2 + 19XX: The War Against Destiny (Japan 951207) + + + 19xxu + 19XX: The War Against Destiny (USA 951207) + + + 19yy + 19YY (Neo CD conversion, ADK World) + + + 19yyo + 19YY (Neo CD conversion, ADK World)(Original release) + + + 1on1gov + 1 on 1 Government (Japan) + + + 2020bb + 2020 Super Baseball (set 1) + + + 2020bba + 2020 Super Baseball (set 2) + + + 2020bbcd + 2020 Super Baseball (Neo CD conversion) + + + 2020bbh + 2020 Super Baseball (set 3) + + + 20pacgal + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.08) + + + 20pacgalr0 + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.00) + + + 20pacgalr1 + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.01) + + + 20pacgalr2 + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.02) + + + 20pacgalr3 + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.03) + + + 20pacgalr4 + Ms. Pac-Man/Galaga - 20th Anniversary Class of 1981 Reunion (V1.04) + + + 24_130 + 24 v1.30 + + + 24_140 + 24 v1.40 + + + 24_144 + 24 v1.44 + + + 24_150 + 24 v1.50 + + + 24cdjuke + Midcoin Juke Box 24CD + + + 25pacman + Pac-Man - 25th Anniversary Edition (Rev 3.00) + + + 25pacmano + Pac-Man - 25th Anniversary Edition (Rev 2.00) + + + 280zzzap + 280-ZZZAP + + + 2mindril + Two Minute Drill (Ver 2.93A 1994/02/16) + + + 2mindrila + Two Minute Drill (Ver 2.2A 1993/10/18) + + + 2spicy + 2 Spicy + + + 30test + 30 Test (remake) + + + 39in1 + 39 in 1 MAME bootleg (GNO-V000) + + + 3bagfull + 3 Bags Full (5VXFC790, Victoria) + + + 3bagfullnz + 3 Bags Full (3VXFC5345, New Zealand) + + + 3bagfullu + 3 Bags Full (4XF5196I02, US) + + + 3cdpoker + 3 Cards Poker 96 (V1.6) + + + 3cdpokera + 3 Cards Poker 96 (V1.0) + + + 3countb + 3 Count Bout / Fire Suplex (NGM-043 ~ NGH-043) + + + 3countba + 3 Count Bout / Fire Suplex (NGM-043) + + + 3in1semi + New HyperMan (3-in-1 with Cookie & Bibi & HyperMan) (set 1) + + + 3in1semia + New HyperMan (3-in-1 with Cookie & Bibi & HyperMan) (set 2) + + + 3kokushi + Sankokushi (Japan) + + + 3lilpigs + 3 Lil' Pigs + + + 3on3dunk + 3 On 3 Dunk Madness (US, prototype? 1997/02/04) + + + 3stooges + The Three Stooges In Brides Is Brides (set 1) + + + 3stoogesa + The Three Stooges In Brides Is Brides (set 2) + + + 3super8 + 3 Super 8 (Italy) + + + 3wishrd + Three Wishes Red (Russia) (Atronic) + + + 3wonders + Three Wonders (World 910520) + + + 3wondersb + Three Wonders (bootleg) + + + 3wondersbi + Three Wonders (Italian bootleg) + + + 3wondersh + Three Wonders (hack) + + + 3wondersha + Three Wonders (hack, set 2) + + + 3wondersr1 + Three Wonders (World 910513) + + + 3wondersu + Three Wonders (USA 910520) + + + 3wonderu + Three Wonders (US 910520) + + + 3x3puzzl + 3X3 Puzzle (Enterprise) + + + 3x3puzzla + 3X3 Puzzle (Normal) + + + 40love + Forty-Love (World) + + + 40lovebl + Forty-Love (bootleg) + + + 40lovej + Forty-Love (Japan) + + + 47pie2 + Idol Janshi Su-Chi-Pie 2 (v1.1) + + + 47pie2o + Idol Janshi Su-Chi-Pie 2 (v1.0) + + + 48in1 + 48 in 1 MAME bootleg (ver 3.09, HPH-V000) + + + 48in1a + 48 in 1 MAME bootleg (ver 3.02, HPH-V000) + + + 48in1b + 48 in 1 MAME bootleg (ver 3.09, HPH-V000, alt flash) + + + 48in1c + 48 in 1 MAME bootleg (ver 3.08, HPH-V000) + + + 4dwarrio + 4-D Warriors (315-5162) + + + 4enlinea + Cuatro en Linea (rev. A-07) + + + 4enlineb + Cuatro en Linea (rev. A-06) + + + 4enraya + 4 En Raya (set 1) + + + 4enrayaa + 4 En Raya (set 2) + + + 4in1 + 4 Fun in 1 + + + 4in1a + 4 in 1 MAME bootleg (ver 3.00, PLZ-V014) + + + 4in1b + 4 in 1 MAME bootleg (PLZ-V001) + + + 4in1boot + Puzzle King (PacMan 2, Tetris, HyperMan 2, Snow Bros.) + + + 4play + 4 player input test + + + 4psimasy + Mahjong 4P Shimasho (Japan) + + + 4roses + Four Roses (encrypted, set 1) + + + 4rosesa + Four Roses (encrypted, set 2) + + + 500gp + 500 GP (US, 5GP3 Ver. C) + + + 50lionrr + 50 Lions - Roaring Riches (20301311, NSW/ACT) + + + 50lions + 50 Lions (10120511, NSW/ACT) + + + 50lionsa + 50 Lions (10156111, ASP) + + + 50lionsu + 50 Lions (0152077, US) + + + 5acespkr + 5-Aces Poker + + + 5clown + Five Clown (English, set 1) + + + 5clowna + Five Clown (English, set 2) + + + 5clownsp + Five Clown (Spanish hack) + + + 5drag + 5 Dragons (20161011, NSW/ACT) + + + 5draga + 5 Dragons (10176611, ASP) + + + 5dragce + 5 Dragons - Cash Express (0152309, US) + + + 5dragnz + 5 Dragons (10178611, New Zealand) + + + 5dragsp + 5 Dragons (20161011, NSW/ACT, Show Program) + + + 5koi + 5 Koi - Power Pay (10250711, NSW/ACT) + + + 5koia + 5 Koi - Power Pay (1J016211, ASP) + + + 600 + 600 + + + 60in1 + 60 in 1 MAME bootleg (ver 3.00, ICD-V000) + + + 64streej + 64th. Street - A Detective Story (Japan) + + + 64street + 64th. Street: A Detective Story (World) + + + 64streetj + 64th. Street: A Detective Story (Japan, set 1) + + + 64streetja + 64th. Street: A Detective Story (Japan, set 2) + + + 720 + 720 Degrees (rev 4) + + + 720g + 720 Degrees (German, rev 2) + + + 720gr1 + 720 Degrees (German, rev 1) + + + 720r1 + 720 Degrees (rev 1) + + + 720r2 + 720 Degrees (rev 2) + + + 720r3 + 720 Degrees (rev 3) + + + 7gold + 7 Gold + + + 7jigen + 7jigen no Youseitachi - Mahjong 7 Dimensions (Japan) + + + 7mezzo + 7 e Mezzo + + + 7ordi + 7 Ordi (Korea) + + + 7smash + 7 Smash + + + 7toitsu + Chi-Toitsu + + + 800fath + 800 Fathoms + + + 800fatha + 800 Fathoms (older) + + + 86lions + 86 Lions + + + 88games + '88 Games + + + 8ball + Video Eight Ball + + + 8ball1 + Video Eight Ball (Rev.1) + + + 8ballact + Eight Ball Action (DK conversion) + + + 8ballact2 + Eight Ball Action (DKJr conversion) + + + 8ballat2 + Eight Ball Action (DKJr conversion) + + + 8bpm + Eight Ball Action (Pac-Man conversion) + + + 98best44 + Neo Print - '98 NeoPri Best 44 (Japan) (T4i 3.07) + + + 99bottles + 99 Bottles of Beer + + + 99lstwar + '99: The Last War (set 1) + + + 99lstwara + '99: The Last War (set 2) + + + 99lstwarb + '99: The Last War (bootleg) + + + 99lstwark + '99: The Last War (Kyugo) + + + 99lstwra + '99: The Last War (alternate) + + + 9ballsh2 + 9-Ball Shootout (set 2) + + + 9ballsh3 + 9-Ball Shootout (set 3) + + + 9ballsht + 9-Ball Shootout (set 1) + + + 9ballsht2 + 9-Ball Shootout (set 2) + + + 9ballsht3 + 9-Ball Shootout (set 3) + + + 9ballshtc + 9-Ball Shootout Championship + + + a51mxr3k + Area 51 / Maximum Force Duo (R3000, 2/10/98) + + + a51mxr3ka + Area 51 / Maximum Force Duo (R3000, 2/02/98) + + + a51site4 + Area 51: Site 4 (HD Rev 2.01, September 7, 1998) + + + a51site4a + Area 51: Site 4 (HD Rev 2.0, September 11, 1998) + + + a7lucky88 + Lucky 88 (Aristocrat MK-7) + + + aa + Alien Armada + + + aadvent + African Adventure (Konami Endeavour, Russia) + + + aafb + All American Football (rev E) + + + aafbb + All American Football (rev B) + + + aafbc + All American Football (rev C) + + + aafbd2p + All American Football (rev D, 2 players) + + + aar_101 + Aaron Spelling (1.01) + + + aavenger + Airborne Avenger + + + abacus + Abacus (Ver 1.0) + + + abaseb + Atari Baseball (set 1) + + + abaseb2 + Atari Baseball (set 2) + + + abattle + Astro Battle (set 1) + + + abattle2 + Astro Battle (set 2) + + + abcheck + Abnormal Check + + + abclimax + After Burner Climax (Export) + + + abcop + A.B. Cop (World) (FD1094 317-0169b) + + + abcopd + A.B. Cop (World) (bootleg of FD1094 317-0169b set) + + + abcopj + A.B. Cop (Japan) (FD1094 317-0169b) + + + abcopjd + A.B. Cop (Japan) (bootleg of FD1094 317-0169b set) + + + abigchs + Big Cheese (Russia) (Atronic) + + + ablast + Hong Tian Lei (A-Blast) (Japan) + + + ablastb + Hong Tian Lei (A-Blast) (bootleg) + + + abnudge + Animal Bonus Nudge (Version 2.1 Dual) + + + abnudgeb + Animal Bonus Nudge (Version 2.0, set 1) + + + abnudged + Animal Bonus Nudge (Version 2.0, set 2) + + + abnudgeo + Animal Bonus Nudge (Version 1.7) + + + abscam + Abscam + + + abunai + Abunai Houkago - Mou Matenai (Japan 890325) + + + aburner + After Burner + + + aburner2 + After Burner II + + + aburner2g + After Burner II (German) + + + abv105 + Airborne (1.5) + + + abv106 + Airborne (1.6) + + + abv106r + Airborne (Redemption) + + + abyssali + Abyssal Infants (HB) + + + ac1bbclb + Big Break Club (Ace) (ACESYS1) (set 1) + + + ac1bbclba + Big Break Club (Ace) (ACESYS1) (set 2) + + + ac1bluec + Blue Chip (Pcp) (ACESYS1) (set 1) + + + ac1blueca + Blue Chip (Pcp) (ACESYS1) (set 2) + + + ac1bluecb + Blue Chip (Pcp) (ACESYS1) (set 3) + + + ac1bluecc + Blue Chip (Pcp) (ACESYS1) (set 4) + + + ac1bluecd + Blue Chip (Pcp) (ACESYS1) (set 5) + + + ac1clbmn + Club Money (Ace) (ACESYS1) (set 1) + + + ac1clbsv + Club Sovereign (Ace) (ACESYS1) + + + ac1clbxt + Club Xtra (Ace) (ACESYS1) (set 1) + + + ac1clbxta + Club Xtra (Ace) (ACESYS1) (set 2) + + + ac1cshtw + Cash Towers (Ace) (ACESYS1) + + + ac1dbldx + Double Deluxe (Pcp) (ACESYS1) + + + ac1gogld + Go For Gold (Ace) (ACESYS1) (set 1) + + + ac1hideh + Hi De Hi Deluxe (Ace) (ACESYS1) (set 1) + + + ac1hideha + Hi De Hi Deluxe (Ace) (ACESYS1) (set 2) + + + ac1hotpf + Hot Profit (Ace) (ACESYS1) + + + ac1nudbk + Nudge Break (Pcp) (ACESYS1) (set 1) + + + ac1nudbka + Nudge Break (Pcp) (ACESYS1) (set 2) + + + ac1nudbkb + Nudge Break (Pcp) (ACESYS1) (set 3) + + + ac1nudbkc + Nudge Break (Pcp) (ACESYS1) (set 4) + + + ac1nudbkd + Nudge Break (Pcp) (ACESYS1) (set 5) + + + ac1piaca + Play It Again Casino (Ace) (ACESYS1) + + + ac1piacl + Play It Again Club (Ace) (ACESYS1) (set 1) + + + ac1piacla + Play It Again Club (Ace) (ACESYS1) (set 2) + + + ac1piaclb + Play It Again Club (Ace) (ACESYS1) (set 3) + + + ac1piaclc + Play It Again Club (Ace) (ACESYS1) (set 4) + + + ac1primt + Primetime (Ace) (ACESYS1) (set 1) + + + ac1prmcl + Premier Club (Ace) (ACESYS1) (set 1) + + + ac1prmcla + Premier Club (Ace) (ACESYS1) (set 2) + + + ac1prmclb + Premier Club (Ace) (ACESYS1) (set 3) + + + ac1prmclc + Premier Club (Ace) (ACESYS1) (set 4) + + + ac1pster + Pound Sterling (Ace) (ACESYS1) + + + ac1pstrt + Pound Stretcher (Pcp) (ACESYS1) + + + ac1roll + Roll Up (Pcp) (ACESYS1) (set 1) + + + ac1rolla + Roll Up (Pcp) (ACESYS1) (set 2) + + + ac1rollb + Roll Up (Pcp) (ACESYS1) (set 3) + + + ac1rundx + Runner Deluxe Club (Ace) (ACESYS1) (set 1) + + + ac1rundxa + Runner Deluxe Club (Ace) (ACESYS1) (set 2) + + + ac1shid + Super Hi De Hi (Ace) (ACESYS1) (set 1) + + + ac1shida + Super Hi De Hi (Ace) (ACESYS1) (set 2) + + + ac1sstrk + Starstruck (Pcp) (ACESYS1) (set 1) + + + ac1sstrka + Starstruck (Pcp) (ACESYS1) (set 2) + + + ac1sstrkb + Starstruck (Pcp) (ACESYS1) (set 3) + + + ac1taklv + Take It Or Leave It (Ace) (ACESYS1) (set 1) + + + ac1totb + Top Of The Bill (Ace) (ACESYS1) + + + ac1unk + unknown Ace System 1 game + + + ac1xpres + Xpress (Pcp) (ACESYS1) + + + acchi + Janken Game Acchi Muite Hoi! (Japan 1.3) + + + ace + Ace + + + aceattac + Ace Attacker (FD1094 317-0059) + + + aceattaca + Ace Attacker (Japan, System 16A, FD1094 317-0060) + + + acedriv3 + Ace Driver 3: Final Turn + + + acedrive + Ace Driver: Racing Evolution (World, AD2) + + + acedrvrw + Ace Driver (Rev. AD2, World) + + + acefruit + Silhouette + + + acheart + Arcana Heart + + + acheartf + Arcana Heart Full + + + acitya + Atlantic City Action + + + aclown + Clown (Russia) (Atronic) + + + acombat + Astro Combat (newer, CB) + + + acombat3 + Astro Combat (unencrypted) + + + acombat4 + Astro Combat (encrypted) + + + acombato + Astro Combat (older, PZ) + + + acommand + Alien Command (v2.1) + + + acrobatm + Acrobat Mission + + + acrobatmbl + Acrobat Mission (bootleg with Raiden sounds) + + + act2000 + Action 2000 (Version 3.5E Dual) + + + act2000b1 + Action 2000 (Version 3.5R, set 2) + + + act2000bx + Action 2000 (Version 3.30XT, set 2) + + + act2000d1 + Action 2000 (Version 3.5R, set 1) + + + act2000dx + Action 2000 (Version 3.30XT, set 1) + + + act2000o + Action 2000 (Version 3.3) + + + act2000o2 + Action 2000 (Version 3.10XT) + + + act2000o3 + Action 2000 (Version 1.2) + + + act2000v1 + Action 2000 (Version 3.5R Dual) + + + act2000vx + Action 2000 (Version 3.30XT Dual) + + + actfanc1 + Act-Fancer Cybernetick Hyper Weapon (World revision 1) + + + actfancj + Act-Fancer Cybernetick Hyper Weapon (Japan revision 1) + + + actfancr + Act-Fancer Cybernetick Hyper Weapon (World revision 3) + + + actfancr1 + Act-Fancer Cybernetick Hyper Weapon (World revision 1) + + + actfancr2 + Act-Fancer Cybernetick Hyper Weapon (World revision 2) + + + actfancrj + Act-Fancer Cybernetick Hyper Weapon (Japan revision 1) + + + actionhw + Action Hollywood + + + ad2083 + A. D. 2083 + + + ad4ctl + Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 1) + + + ad4ctla + Cop The Lot Club (Video) (Bellfruit) (Adder 4) (set 2) + + + ad4film + Film Premiere (Video?) (Bellfruit) (Adder 4) (set 1) + + + ad4filma + Film Premiere (Video?) (Bellfruit) (Adder 4) (set 2) + + + ad4skill + Skill Dice (BFM) (Scorpion 4 + Adder 4) + + + ad5bpfpm + Bullseye Pounds For Points (Mazooma) (Adder 5) (set 1) + + + ad5bpfpma + Bullseye Pounds For Points (Mazooma) (Adder 5) (set 2) + + + ad5bpfpmb + Bullseye Pounds For Points (Mazooma) (Adder 5) (set 3) + + + ad5bpfpmc + Bullseye Pounds For Points (Mazooma) (Adder 5) (set 4) + + + ad5bpfpmd + Bullseye Pounds For Points (Mazooma) (Adder 5) (set 5) + + + ad5btc + Bullseye Triple Club (PR1758, BFGPBULS) (Bellfruit) (Adder 5) (set 1) + + + ad5btca + Bullseye Triple Club (PR1758, BFGPBULS) (Bellfruit) (Adder 5) (set 3) + + + ad5btcb + Bullseye Triple Club (PR1758, BFGNBULS) (Bellfruit) (Adder 5) (set 4) + + + ad5cmons + Crazy Money (Bellfruit) (Adder 5) (set 1) + + + ad5cmonsa + Crazy Money (Bellfruit) (Adder 5) (set 2) + + + ad5copsr + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 1) + + + ad5copsr0 + Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 7) + + + ad5copsr1 + Cops 'n' Robbers (PR2497) (Mazooma) (Adder 5) (set 2) + + + ad5copsr2 + Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 8) + + + ad5copsr3 + Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 1) + + + ad5copsr4 + Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 5) + + + ad5copsr5 + Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 2) + + + ad5copsr6 + Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 6) + + + ad5copsr7 + Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 4) + + + ad5copsra + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 2) + + + ad5copsrb + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 3) + + + ad5copsrc + Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 1) + + + ad5copsrd + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 4) + + + ad5copsre + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 5) + + + ad5copsrf + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 6) + + + ad5copsrg + Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 2) + + + ad5copsrh + Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 1) + + + ad5copsri + Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 2) + + + ad5copsrj + Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 5) + + + ad5copsrk + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 7) + + + ad5copsrl + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 8) + + + ad5copsrm + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 9) + + + ad5copsrn + Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 3) + + + ad5copsro + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 10) + + + ad5copsrp + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 11) + + + ad5copsrq + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 12) + + + ad5copsrr + Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 4) + + + ad5copsrs + Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 3) + + + ad5copsrt + Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 4) + + + ad5copsru + Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 6) + + + ad5copsrv + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 13) + + + ad5copsrw + Cops 'n' Robbers (PR3206) (Bellfruit) (Adder 5) (set 14) + + + ad5copsrx + Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 5) + + + ad5copsry + Cops 'n' Robbers (PR1965) (Bellfruit) (Adder 5) (set 6) + + + ad5copsrz + Cops 'n' Robbers (PR2497) (Mazooma) (Adder 5) (set 1) + + + ad5crcpt + Cops 'n' Robbers Community Party (Bellfruit) (Adder 5) (set 1) + + + ad5crcpta + Cops 'n' Robbers Community Party (Bellfruit) (Adder 5) (set 2) + + + ad5crsc + Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 1) + + + ad5crsca + Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 2) + + + ad5crscb + Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 3) + + + ad5crscc + Cops 'n' Robbers (PR2476) (Mazooma) (Adder 5) (set 4) + + + ad5crscd + Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 7) + + + ad5crsce + Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 8) + + + ad5crscf + Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 9) + + + ad5crscg + Cops 'n' Robbers (PR2495) (Mazooma) (Adder 5) (set 10) + + + ad5crsch + Cops 'n' Robbers (PR2628) (Mazooma) (Adder 5) (set 3) + + + ad5dnd + Deal or No Deal (Bellfruit) (Adder 5) (set 1) + + + ad5dnda + Deal or No Deal (Bellfruit) (Adder 5) (set 2) + + + ad5dndb + Deal or No Deal (Bellfruit) (Adder 5) (set 3) + + + ad5dndc + Deal or No Deal (Bellfruit) (Adder 5) (set 4) + + + ad5dndcl + Deal or No Deal Club (Bellfruit) (Adder 5) (set 1) + + + ad5dndcla + Deal or No Deal Club (Bellfruit) (Adder 5) (set 2) + + + ad5dndclb + Deal or No Deal Club (Bellfruit) (Adder 5) (set 3) + + + ad5dndclc + Deal or No Deal Club (Bellfruit) (Adder 5) (set 4) + + + ad5dndcld + Deal or No Deal Club (Bellfruit) (Adder 5) (set 5) + + + ad5dndcle + Deal or No Deal Club (Bellfruit) (Adder 5) (set 6) + + + ad5dndclf + Deal or No Deal Club (Bellfruit) (Adder 5) (set 20) + + + ad5dndclg + Deal or No Deal Club (Bellfruit) (Adder 5) (set 21) + + + ad5dndd + Deal or No Deal (Bellfruit) (Adder 5) (set 5) + + + ad5dnddd + Deal or No Deal Double Deal or No Deal (Bellfruit) (Adder 5) (set 1) + + + ad5dnddda + Deal or No Deal Double Deal or No Deal (Bellfruit) (Adder 5) (set 2) + + + ad5dnde + Deal or No Deal (Bellfruit) (Adder 5) (set 6) + + + ad5dndf + Deal or No Deal (Bellfruit) (Adder 5) (set 7) + + + ad5dndg + Deal or No Deal (Bellfruit) (Adder 5) (set 8) + + + ad5dndh + Deal or No Deal (Bellfruit) (Adder 5) (set 9) + + + ad5dndi + Deal or No Deal (Bellfruit) (Adder 5) (set 10) + + + ad5dndj + Deal or No Deal (Bellfruit) (Adder 5) (set 11) + + + ad5dndk + Deal or No Deal (Bellfruit) (Adder 5) (set 12) + + + ad5dndl + Deal or No Deal (Bellfruit) (Adder 5) (set 13) + + + ad5dndm + Deal or No Deal (Bellfruit) (Adder 5) (set 14) + + + ad5dndn + Deal or No Deal (Bellfruit) (Adder 5) (set 15) + + + ad5dndo + Deal or No Deal (Bellfruit) (Adder 5) (set 16) + + + ad5dndp + Deal or No Deal (Bellfruit) (Adder 5) (set 17) + + + ad5dndpg + Deal or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 1) + + + ad5dndpga + Deal or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 2) + + + ad5dndpgb + Deal or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 3) + + + ad5dndpgc + Deal or No Deal The Perfect Game (Bellfruit) (Adder 5) (set 4) + + + ad5dndpl + Deal or No Deal Platinum (Bellfruit) (Adder 5) (set 1) + + + ad5dndpla + Deal or No Deal Platinum (Bellfruit) (Adder 5) (set 2) + + + ad5dndplb + Deal or No Deal Platinum (Bellfruit) (Adder 5) (set 3) + + + ad5dndplc + Deal or No Deal Platinum (Bellfruit) (Adder 5) (set 4) + + + ad5dndq + Deal or No Deal (Bellfruit) (Adder 5) (set 18) + + + ad5dndr + Deal or No Deal (Bellfruit) (Adder 5) (set 19) + + + ad5dndu + Deal or No Deal (Bellfruit) (Adder 5) (set 22) + + + ad5dndv + Deal or No Deal (Bellfruit) (Adder 5) (set 23) + + + ad5etdls + El Trebol de la Suerte (Bellfruit) (Adder 5) + + + ad5eyes + Eyes Down (PR2242, MAZNEYDW) (Mazooma) (Adder 5) (set 1) + + + ad5eyesa + Eyes Down (PR2242, MAZNEYDW) (Mazooma) (Adder 5) (set 2) + + + ad5eyesb + Eyes Down (PR2246, MAZNEYDW) (Mazooma) (Adder 5) (set 1) + + + ad5eyesc + Eyes Down (PR2246, MAZPEYDW) (Mazooma) (Adder 5) (set 1) + + + ad5eyesd + Eyes Down (PR2242, MAZPEYDW) (Mazooma) (Adder 5) (set 1) + + + ad5eyese + Eyes Down (PR2242, MAZPEYDW) (Mazooma) (Adder 5) (set 2) + + + ad5eyesf + Eyes Down (PR2246, MAZPEYDW) (Mazooma) (Adder 5) (set 2) + + + ad5eyesg + Eyes Down (PR2246, MAZNEYDW) (Mazooma) (Adder 5) (set 2) + + + ad5gldmn + Gold Mine (Bellfruit) (Adder 5) (set 1) + + + ad5gldmna + Gold Mine (Bellfruit) (Adder 5) (set 2) + + + ad5gldmnb + Gold Mine (Bellfruit) (Adder 5) (set 3) + + + ad5gldmnc + Gold Mine (Bellfruit) (Adder 5) (set 4) + + + ad5gldmnd + Gold Mine (Bellfruit) (Adder 5) (set 5) + + + ad5gldmne + Gold Mine (Bellfruit) (Adder 5) (set 6) + + + ad5gldmnf + Gold Mine (Bellfruit) (Adder 5) (set 7) + + + ad5gldmng + Gold Mine (Bellfruit) (Adder 5) (set 8) + + + ad5gldmnh + Gold Mine (Bellfruit) (Adder 5) (set 9) + + + ad5gldmni + Gold Mine (Bellfruit) (Adder 5) (set 10) + + + ad5gldmnj + Gold Mine (Bellfruit) (Adder 5) (set 11) + + + ad5gldmnk + Gold Mine (Bellfruit) (Adder 5) (set 12) + + + ad5gldwn + Golden Winner (Mazooma) (Adder 5) (set 1) + + + ad5gldwna + Golden Winner (Mazooma) (Adder 5) (set 2) + + + ad5hir + Hi Roller (Bellfruit) (Adder 5) (set 1) + + + ad5hira + Hi Roller (Bellfruit) (Adder 5) (set 2) + + + ad5hirb + Hi Roller (Bellfruit) (Adder 5) (set 3) + + + ad5hirc + Hi Roller (Bellfruit) (Adder 5) (set 4) + + + ad5hircl + Hi Roller Club (Bellfruit) (Adder 5) (set 1) + + + ad5hircla + Hi Roller Club (Bellfruit) (Adder 5) (set 2) + + + ad5hirclb + Hi Roller Club (Bellfruit) (Adder 5) (set 3) + + + ad5jckmo + Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 1) + + + ad5jckmoa + Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 2) + + + ad5jckmob + Jackpot Monopoly (PR2253, MAZNJACM) (Mazooma) (Adder 5) + + + ad5jckmoc + Jackpot Monopoly (PR2226, MAZNJACM) (Mazooma) (Adder 5) (set 3) + + + ad5jckmod + Jackpot Monopoly (PR2226, MAZPJACM) (Mazooma) (Adder 5) (set 1) + + + ad5jckmoe + Jackpot Monopoly (PR2226, MAZPJACM) (Mazooma) (Adder 5) (set 2) + + + ad5lluck + Lady Luck (Bellfruit) (Adder 5) + + + ad5mcob + Monte Carlo Or Bust (Qps) (Adder 5) (set 1) + + + ad5mcoba + Monte Carlo Or Bust (Qps) (Adder 5) (set 2) + + + ad5mcobb + Monte Carlo Or Bust (Qps) (Adder 5) (set 3) + + + ad5mcobc + Monte Carlo Or Bust (Qps) (Adder 5) (set 4) + + + ad5monop + Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 1) + + + ad5monopa + Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 2) + + + ad5monopb + Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 3) + + + ad5monopc + Random Monopoly (PR2217, MAZNRNDN) (Mazooma) (Adder 5) (set 4) + + + ad5monopd + Random Monopoly (PR2221, MAZNRNDN) (Mazooma) (Adder 5) (set 1) + + + ad5monope + Random Monopoly (PR2221, MAZNRNDN) (Mazooma) (Adder 5) (set 2) + + + ad5monopf + Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 1) + + + ad5monopg + Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 2) + + + ad5monoph + Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 3) + + + ad5monopi + Random Monopoly (PR2217, MAZPRNDN) (Mazooma) (Adder 5) (set 4) + + + ad5monopj + Random Monopoly (PR2221, MAZPRNDN) (Mazooma) (Adder 5) (set 1) + + + ad5monopk + Random Monopoly (PR2221, MAZPRNDN) (Mazooma) (Adder 5) (set 2) + + + ad5mowow + Monopoly Wheel Of Wealth (PR2365, MAZNBPFP) (Mazooma) (Adder 5) (set 1) + + + ad5mowowa + Monopoly Wheel Of Wealth (PR2365, MAZNWOWT) (Mazooma) (Adder 5) (set 1) + + + ad5mowowb + Monopoly Wheel Of Wealth (PR2365, MAZNWOWT) (Mazooma) (Adder 5) (set 2) + + + ad5mowowc + Monopoly Wheel Of Wealth (PR2389, MAZNWWBU) (Mazooma) (Adder 5) + + + ad5mowowd + Monopoly Wheel Of Wealth (PR2365, MAZNMWOW) (Mazooma) (Adder 5) + + + ad5mowowe + Monopoly Wheel Of Wealth (PR2365, MAZPBPFP) (Mazooma) (Adder 5) (set 1) + + + ad5mowowf + Monopoly Wheel Of Wealth (PR2365, MAZPWOWT) (Mazooma) (Adder 5) (set 1) + + + ad5mowowg + Monopoly Wheel Of Wealth (PR2365, MAZPWOWT) (Mazooma) (Adder 5) (set 2) + + + ad5mowowh + Monopoly Wheel Of Wealth (PR2389, MAZPWWBU) (Mazooma) (Adder 5) + + + ad5mowowi + Monopoly Wheel Of Wealth (PR2365, MAZPMWOW) (Mazooma) (Adder 5) + + + ad5mowowj + Monopoly Wheel Of Wealth (PR3075) (Adder 5) (set 1) + + + ad5mowowk + Monopoly Wheel Of Wealth (PR3075) (Adder 5) (set 2) + + + ad5mowowl + Monopoly Wheel Of Wealth (PR2365, MAZNBPFP) (Mazooma) (Adder 5) (set 2) + + + ad5mowowm + Monopoly Wheel Of Wealth (PR2365, MAZPBPFP) (Mazooma) (Adder 5) (set 2) + + + ad5mr2r + Monopoly Road To Riches (Mazooma) (Adder 5) (set 1) + + + ad5mr2ra + Monopoly Road To Riches (Mazooma) (Adder 5) (set 2) + + + ad5mr2rb + Monopoly Road To Riches (Mazooma) (Adder 5) (set 3) + + + ad5mr2rc + Monopoly Road To Riches (Mazooma) (Adder 5) (set 4) + + + ad5mr2rd + Monopoly Road To Riches (Mazooma) (Adder 5) (set 5) + + + ad5mr2re + Monopoly Road To Riches (Mazooma) (Adder 5) (set 6) + + + ad5mr2rf + Monopoly Road To Riches (Mazooma) (Adder 5) (set 7) + + + ad5mr2rg + Monopoly Road To Riches (Mazooma) (Adder 5) (set 8) + + + ad5mr2rh + Monopoly Road To Riches (Mazooma) (Adder 5) (set 9) + + + ad5mww + Random Monopoly Wonders Of The World (PR2284) (Mazooma) (Adder 5) + + + ad5mwwa + Random Monopoly Wonders Of The World (PR2291) (Mazooma) (Adder 5) + + + ad5pking + Poker King (Bellfruit) (Adder 5) (set 1) + + + ad5pkinga + Poker King (Bellfruit) (Adder 5) (set 2) + + + ad5pp + Pink Panther (PR2283, QPSNPINK) (Mazooma) (Adder 5) (set 1) + + + ad5ppa + Pink Panther (PR2283, QPSNPINK) (Mazooma) (Adder 5) (set 2) + + + ad5ppb + Pink Panther (PR2267, MAZNPINK) (Mazooma) (Adder 5) (set 1) + + + ad5ppbtb + Pink Panther Break The Bank (PR2304, QPSNPPBB) (Qps) (Adder 5) (set 1) + + + ad5ppbtba + Pink Panther Break The Bank (PR2304, QPSNPPBB) (Qps) (Adder 5) (set 2) + + + ad5ppbtbb + Pink Panther Break The Bank (PR2304, QPSPPPBB) (Qps) (Adder 5) (set 1) + + + ad5ppbtbc + Pink Panther Break The Bank (PR2304, QPSPPPBB) (Qps) (Adder 5) (set 2) + + + ad5ppc + Pink Panther (PR2267, MAZNPINK) (Mazooma) (Adder 5) (set 2) + + + ad5ppd + Pink Panther (MAZNPINK) (Mazooma) (Adder 5) (set 1) + + + ad5ppe + Pink Panther (MAZNPINK) (Mazooma) (Adder 5) (set 2) + + + ad5ppf + Pink Panther (PR2283, QPSPPINK) (Mazooma) (Adder 5) (set 1) + + + ad5ppg + Pink Panther (PR2283, QPSPPINK) (Mazooma) (Adder 5) (set 2) + + + ad5pph + Pink Panther (PR2267, MAZPPINK) (Mazooma) (Adder 5) + + + ad5ppi + Pink Panther (MAZPPINK) (Mazooma) (Adder 5) (set 1) + + + ad5ppj + Pink Panther (MAZPPINK) (Mazooma) (Adder 5) (set 2) + + + ad5rapid + Rapid Pay (Bellfruit) (Adder 5) (set 1) + + + ad5rapida + Rapid Pay (Bellfruit) (Adder 5) (set 2) + + + ad5rcash + Reel Cash (Mazooma) (Adder 5) (set 1) + + + ad5rcasha + Reel Cash (Mazooma) (Adder 5) (set 2) + + + ad5rroul + Reel Roulette (QPSNRLRO) (Mazooma) (Adder 5) + + + ad5rroula + Reel Roulette (QPSPRLRO) (Mazooma) (Adder 5) + + + ad5rroulb + Reel Roulette (MAZNRERO) (Mazooma) (Adder 5) + + + ad5rroulc + Reel Roulette (MAZPRERO) (Mazooma) (Adder 5) + + + ad5rsclb + Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 1) + + + ad5rsclba + Random Spinner Club (PR1826, BFGNRNDN) (Bellfruit) (Adder 5) (set 1) + + + ad5rsclbb + Random Spinner Club (PR1826, BFGNRNDN) (Bellfruit) (Adder 5) (set 2) + + + ad5rsclbc + Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 2) + + + ad5rsclbd + Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 3) + + + ad5rsclbe + Random Spinner Club (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 4) + + + ad5rsclbf + Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 1) + + + ad5rsclbg + Random Spinner Club (PR1826, BFGPRNDN) (Bellfruit) (Adder 5) (set 1) + + + ad5rsclbh + Random Spinner Club (PR1826, BFGPRNDN) (Bellfruit) (Adder 5) (set 2) + + + ad5rsclbi + Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 2) + + + ad5rsclbj + Random Spinner Club (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 3) + + + ad5rsnw + Random Spin 'n' Win (PR2226, MAZNRNDN) (Mazooma) (Adder 5) (set 1) + + + ad5rsnwa + Random Spin 'n' Win (PR2226, MAZNRNDN) (Mazooma) (Adder 5) (set 2) + + + ad5rsnwb + Random Spin 'n' Win (PR2226, MAZPRNDN) (Mazooma) (Adder 5) (set 1) + + + ad5rsnwc + Random Spin 'n' Win (PR2226, MAZPRNDN) (Mazooma) (Adder 5) (set 2) + + + ad5rspin + Random Spinner (PR1669, BFGNRNDN) (Bellfruit) (Adder 5) (set 1) + + + ad5rspinb + Random Spinner (PR1669, BFGPRNDN) (Bellfruit) (Adder 5) (set 2) + + + ad5rspinc + Random Spinner (Bellfruit) (Adder 5) (set 1) + + + ad5rsrm + Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 1) + + + ad5rsrma + Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 2) + + + ad5rsrr + Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 3) + + + ad5rsrra + Ronnie O'Sullivan's Rocket Money (Bellfruit) (Adder 5) (set 4) + + + ad5rwclb + Random Winner Club (PR1756, BFGNRWSX) (Bellfruit) (Adder 5) (set 1) + + + ad5rwclba + Random Winner Club (PR1756, BFGNRWSX) (Bellfruit) (Adder 5) (set 2) + + + ad5rwclbb + Random Winner Club (PR1756, BFGPRWSX) (Bellfruit) (Adder 5) (set 1) + + + ad5rwclbc + Random Winner Club (PR1756, BFGPRWSX) (Bellfruit) (Adder 5) (set 2) + + + ad5rwclbd + Random Winner Club (PR1757, BFGPRWCL) (Bellfruit) (Adder 5) + + + ad5rwclbe + Random Winner Club (PR1757, BFGNRWCL) (Bellfruit) (Adder 5) + + + ad5sslam + Super Slam (Bellfruit) (Adder 5) (set 1) + + + ad5sslama + Super Slam (Bellfruit) (Adder 5) (set 2) + + + ad5sslamb + Super Slam (Bellfruit) (Adder 5) (set 3) + + + ad5sslamc + Super Slam (Bellfruit) (Adder 5) (set 4) + + + ad5sslamd + Super Slam (Bellfruit) (Adder 5) (set 5) + + + ad5sslame + Super Slam (Bellfruit) (Adder 5) (set 6) + + + ad5sslamf + Super Slam (Bellfruit) (Adder 5) (set 7) + + + ad5tornc + Tornado Club (PR1629, 5.5, rv 8, BFGNTORD) (Bellfruit) (Adder 5) + + + ad5tornca + Tornado Club (PR1629, 5.8, rv 7, BFGNTORD) (Bellfruit) (Adder 5) + + + ad5torncb + Tornado Club (PR1629, 5.5, rv 8, BFGPTORD) (Bellfruit) (Adder 5) + + + ad5torncc + Tornado Club (PR1629, 5.8, rv 7, BFGPTORD) (Bellfruit) (Adder 5) + + + ad5torncd + Tornado Club (PR1627, 0.1, rv 1, BFGPTORN) (Bellfruit) (Adder 5) + + + ad5tornce + Tornado Club (PR1627, 0.1, rv 1, BFGNTORN) (Bellfruit) (Adder 5) + + + ad5vlv + Viva Las Vegas (Bellfruit) (Adder 5) (set 1) + + + ad5vlvb + Viva Las Vegas (Bellfruit) (Adder 5) (set 2) + + + ad5vlvc + Viva Las Vegas (Bellfruit) (Adder 5) (set 3) + + + ad5vlvd + Viva Las Vegas (Bellfruit) (Adder 5) (set 4) + + + ad5vlve + Viva Las Vegas (Bellfruit) (Adder 5) (set 5) + + + ad5vlvf + Viva Las Vegas (Bellfruit) (Adder 5) (set 6) + + + ad5vpa + Video Poker Ace (Bellfruit) (Adder 5) (set 1) + + + ad5vpaa + Video Poker Ace (Bellfruit) (Adder 5) (set 2) + + + ad5vpab + Video Poker Ace (Bellfruit) (Adder 5) (set 3) + + + ad5vpac + Video Poker Ace (Bellfruit) (Adder 5) (set 4) + + + adillor + Armadillo Racing (World, AM2 Ver.A) + + + adillorj + Armadillo Racing (Japan, AM1 Ver.A) + + + adonis + Adonis (0200751V, NSW/ACT) + + + adonisa + Adonis (0100751V, NSW/ACT) + + + adonisa6 + Adonis (0151178, US) + + + adonisce + Adonis - Cash Express (0201005V, NSW/ACT) + + + adonisu + Adonis (BHG1508, US) + + + adpoker + Amstar Draw Poker + + + adults + Adults Only (Ukraine, V. 43.23) + + + adultsa + Adults Only (Ukraine, V. 43.17) + + + aduskcm + African Dusk - Mr. Cashman (20006711, NSW/ACT) + + + aerfboo2 + Aero Fighters (bootleg, set 2) + + + aerfboot + Aero Fighters (bootleg, set 1) + + + aeroboto + Aeroboto + + + aerofgt + Aero Fighters (World / USA + Canada / Korea / Hong Kong / Taiwan) (newer hardware) + + + aerofgtb + Aero Fighters (Taiwan / Japan, set 1) + + + aerofgtc + Aero Fighters (Taiwan / Japan, set 2) + + + aerofgts + Aero Fighters Special (USA) + + + aerofgtsg + Aero Fighters Special (VER 1.00G) + + + aerofgtst + Aero Fighters Special (Taiwan) + + + aerolitol + Aerolitos Espaciales (Spanish bootleg of Asteroids) + + + aerolitos + Aerolitos (Spanish bootleg of Asteroids) + + + afighter + Action Fighter (FD1089A 317-0018) + + + afightera + Action Fighter (unprotected) + + + afighterb + Action Fighter (unprotected, analog controls) + + + afighterc + Action Fighter (FD1089B 317-unknown) + + + afighterd + Action Fighter (FD1089B 317-unknown, analog controls) + + + afightere + Action Fighter (System 16B, unprotected, analog controls) + + + afighterf + Action Fighter (System 16B, FD1089B 317-unknown, analog controls) + + + afighterg + Action Fighter (System 16B, FD1089B 317-unknown) + + + afighterh + Action Fighter (System 16B, FD1089A 317-0018) + + + afire + Astro Fire + + + afm_10 + Attack From Mars (1.0) + + + afm_11 + Attack From Mars (1.1) + + + afm_113 + Attack From Mars (1.13, Free play) + + + afm_113b + Attack From Mars (1.13b) + + + afm_11u + Attack From Mars (1.1 Ultrapin) + + + afterhrs + After Hours (0251071, US) + + + aftor + Af-Tor + + + aftrshok + Aftershock (Lazer-Tron, set 1) + + + aftrshoka + Aftershock (Lazer-Tron, set 2) + + + afv_l4 + Addams Family Values (Coin Dropper L-4) + + + agallet + Air Gallet (Europe) + + + agalleta + Air Gallet (older, Europe) + + + agalletah + Air Gallet (older, Hong Kong) + + + agalletaj + Akuu Gallet (older, Japan) + + + agalletak + Air Gallet (older, Korea) + + + agalletat + Air Gallet (older, Taiwan) + + + agalletau + Air Gallet (older, USA) + + + agalleth + Air Gallet (Hong Kong) + + + agalletj + Akuu Gallet (Japan) + + + agalletk + Air Gallet (Korea) + + + agallett + Air Gallet (Taiwan) + + + agalletu + Air Gallet (USA) + + + age_cand + Candy Crane (AGE) + + + agent777 + Agents 777 + + + agentx1 + Agent X (prototype, rev 1) + + + agentx2 + Agent X (prototype, rev 2) + + + agentx3 + Agent X (prototype, rev 3) + + + agentx4 + Agent X (prototype, rev 4) + + + agress + Agress - Missile Daisenryaku (Japan) + + + agressb + Agress - Missile Daisenryaku (English bootleg) + + + agsoccer + A.G. Soccer Ball (R18u, 2.5L sound) + + + agsoccer07 + A.G. Soccer Ball (R07u) + + + agsoccera + A.G. Soccer Ball (R18u, 2.1 sound) + + + aimode + Ai-mode - Pet Shiiku (Japan) + + + ainferno + Air Inferno (World) + + + ainfernoj + Air Inferno (Japan) + + + ainfernou + Air Inferno (US) + + + airass + Air Assault (World) + + + airattck + Air Attack (set 1) + + + airattcka + Air Attack (set 2) + + + airbustj + Air Buster (Japan) + + + airbustr + Air Buster: Trouble Specialty Raid Unit (World) + + + airbustrb + Air Buster: Trouble Specialty Raid Unit (bootleg) + + + airbustrj + Air Buster: Trouble Specialty Raid Unit (Japan) + + + airco22b + Air Combat 22 (Japan, ACS1 Ver.B) + + + aircomb + Air Combat (AC2, US) + + + aircombj + Air Combat (AC1, Japan) + + + aircombu + Air Combat (US) + + + airduel + Air Duel (World, M82 hardware) + + + airdueljm72 + Air Duel (Japan, M72 hardware) + + + airduelm72 + Air Duel (World, M72 hardware) + + + airduelu + Air Duel (US location test, M82 hardware) + + + airrace + Air Race (prototype) + + + airraid + Air Raid (Single PCB) + + + airtrix + Air Trix (Rev A) + + + airtrixo + Air Trix (original) + + + airwlkrs + Air Walkers + + + airwolf + Airwolf + + + airwolfa + Airwolf (US) + + + ajax + Ajax + + + ajaxj + Ajax (Japan) + + + ajofrin + Ajofrin City + + + akamaru + Panel & Variety Akamaru Q Joushou Dont-R + + + akamj + Aka Mahjong (Double Bet, ver 1 16) + + + akatana + Akai Katana (2010/ 8/13 MASTER VER.) + + + akazukin + Akazukin (Japan) + + + aking + Angler King (Japan, AG1 Ver. A) + + + akiss + Mahjong Angel Kiss (ver 1.0) + + + akkaarrh + Akka Arrh (prototype) + + + akkanvdr + Akkanbeder (Ver 2.5J 1995/06/14) + + + akumajou + Akuma-Jou Dracula (Japan version P) + + + akumajoun + Akuma-Jou Dracula (Japan version N) + + + aladmdb + Aladdin (bootleg of Mega Drive version) + + + alantin + Alantin - Aladdin's Magic Lamp + + + albatross + Albatross (US prototype?) + + + alcapone + Al Capone + + + alcat_l7 + Alley Cats (Shuffle) (L-7) + + + alchemst + Alchemist (01J02046, Venezuela) + + + alchemy + Alchemy (1J009611, NSW/ACT) + + + alcon + Alcon (US) + + + alexkidd + Alex Kidd: The Lost Stars (set 2, unprotected) + + + alexkidd1 + Alex Kidd: The Lost Stars (set 1, FD1089A 317-0021) + + + algar_l1 + Algar (L-1) + + + ali + Ali + + + alibaba + Ali Baba and 40 Thieves + + + alibabab + Mustafa and 40 Thieves (bootleg) + + + alien + Alien: The Arcade Medal Edition (satellite) + + + alien3 + Alien3: The Gun (World) + + + alien3j + Alien3: The Gun (Japan) + + + alien3u + Alien3: The Gun (US, Rev A) + + + alienar + Alien Arena + + + alienaru + Alien Arena (Stargate upgrade) + + + aliencha + Alien Challenge (World) + + + alienchac + Alien Challenge (China) + + + aliencr + Alien Crush (United Amusements PC Engine) + + + alienfnt + Alien Front (Rev T) + + + alienfnta + Alien Front (Rev A) + + + alieninv + Alien Invasion + + + alieninvp2 + Alien Invasion Part II + + + alienres + Alien Rescue (Homebrew, Test Build July 2019) + + + aliens + Aliens (World set 1) + + + aliens2 + Aliens (World set 2) + + + aliens3 + Aliens (World set 3) + + + aliens4 + Aliens (World set 4) + + + aliensa + Aliens (Asia) + + + aliensec + Alien Sector + + + aliensj + Aliens (Japan set 1) + + + aliensj2 + Aliens (Japan set 2) + + + alienstr + Alien Star + + + aliensu + Aliens (US) + + + aliensu2 + Aliens (US, set 2) + + + aliensya + Alien Syndrome (set 2) + + + aliensyb + Alien Syndrome (set 3) + + + aliensyj + Alien Syndrome (Japan) + + + aliensyn + Alien Syndrome (set 4, System 16B, unprotected) + + + aliensyn2 + Alien Syndrome (set 2, System 16A, FD1089A 317-0033) + + + aliensyn3 + Alien Syndrome (set 3, System 16B, FD1089A 317-0033) + + + aliensyn5 + Alien Syndrome (set 5, System 16A, FD1089B 317-0037) + + + aliensyn7 + Alien Syndrome (set 7, System 16B, MC-8123B 317-00xx) + + + aliensynj + Alien Syndrome (set 6, Japan, new, System 16B, FD1089A 317-0033) + + + aliensynjo + Alien Syndrome (set 1, Japan, old, System 16A, FD1089A 317-0033) + + + aligator + Alligator Hunt (World, protected) + + + aligatorp + Alligator Hunt (protected, prototype?) + + + aligators + Alligator Hunt (Spain, protected) + + + aligatorun + Alligator Hunt (unprotected, set 1) + + + aligatoruna + Alligator Hunt (unprotected, set 2) + + + aligatun + Alligator Hunt (unprotected) + + + alinvade + Alien Invaders + + + alleymas + Alley Master + + + alpha1v + Alpha One (Vision Electronics) + + + alphaho + Alpha Fighter / Head On + + + alphahob + Missile / Circuit (bootleg of Alpha Fighter / Head On) + + + alpham2 + Alpha Mission II / ASO II - Last Guardian (NGM-007 ~ NGH-007) + + + alpham2p + Alpha Mission II / ASO II - Last Guardian (prototype) + + + alphamis + Alpha Mission + + + alphaona + Alpha One (prototype, 5 lives) + + + alphaone + Alpha One (prototype, 3 lives) + + + alphaonea + Alpha One (prototype, 5 lives) + + + alphaxz + The Alphax Z (Japan) + + + alpilot + Airline Pilots (World, Rev B) + + + alpilotj + Airline Pilots (Japan, Rev A) + + + alpine + Alpine Ski (set 1) + + + alpinea + Alpine Ski (set 2) + + + alpinerc + Alpine Racer (World, AR2 Ver.C) + + + alpinerd + Alpine Racer (World, AR2 Ver.D) + + + alpinerjc + Alpine Racer (Japan, AR1 Ver.C) + + + alpines + Alpine Surfer (World, AF2 Ver.A, set 1) + + + alpinesa + Alpine Surfer (World, AF2 Ver.A, set 2) + + + alpinr2a + Alpine Racer 2 (World, ARS2 Ver.A) + + + alpinr2b + Alpine Racer 2 (World, ARS2 Ver.B) + + + alpok_f6 + Alien Poker (L-6 French speech) + + + alpok_l2 + Alien Poker (L-2) + + + alpok_l6 + Alien Poker (L-6) + + + altair + Altair + + + altair2 + Altair II + + + altaten + Alta Tensione (ver. 2.01a) + + + altbeas2 + Altered Beast (Version 2) + + + altbeast + Altered Beast (set 8) (8751 317-0078) + + + altbeast2 + Altered Beast (set 2) (MC-8123B 317-0066) + + + altbeast4 + Altered Beast (set 4) (MC-8123B 317-0066) + + + altbeast5 + Altered Beast (set 5) (FD1094 317-0069) + + + altbeast5d + Altered Beast (set 5) (bootleg of FD1094 317-0069 set) + + + altbeast6 + Altered Beast (set 6) (8751 317-0076) + + + altbeastbl + Altered Beast (Datsu bootleg) + + + altbeastbl2 + Altered Beast (bootleg) + + + altbeastj + Juuouki (set 7, Japan) (8751 317-0077) + + + altbeastj1 + Juuouki (set 1, Japan) (FD1094 317-0065) + + + altbeastj3 + Juuouki (set 3, Japan) (FD1094 317-0068) + + + altbeastj3d + Juuouki (set 3, Japan) (bootleg of FD1094 317-0068 set) + + + am_mg24 + Multi Game I (V.Ger 2.4) + + + am_mg24a + Multi Game I (V.Stm 2.7) + + + am_mg3 + Multi Game III (V.Ger 3.5) + + + am_mg31i + Multi Game III (S.Ita 3.1) + + + am_mg33i + Multi Game III (S.Ita 3.3) + + + am_mg34i + Multi Game III (S.Ita 3.4) + + + am_mg35i + Multi Game III (S.Ita 3.5) + + + am_mg3a + Multi Game III (V.Ger 3.64) + + + am_mg4sk + Multi Game IV (AMGSK_VA3.85) + + + am_mg4v + Multi Game IV (V.Ger 3.44) + + + am_mg5hu + Multi Game V (AMGHU_VB3.65) + + + amatelas + Sei Senshi Amatelass + + + amazon + Soldier Girl Amazon + + + amazoneo + Soldier Girl Amazon Neo (HB) + + + amazonh + Amazon Hunt + + + amazonh2 + Amazon Hunt II (French) + + + amazonh3 + Amazon Hunt III (French) + + + amazonh3a + Amazon Hunt III (rev. 1, French) + + + amazonha + Amazon Hunt (alternate set) + + + amazoni2 + Amazonia King II (V202BR) + + + amazonia + Amazonia King (V104BR) + + + amazonkp + Amazonia King Plus (V204BR) + + + amazonsp + Amazon Spirit (Konami Endeavour, NSW) + + + amazont + Soldier Girl Amazon (Tecfri license) + + + amaztsk + Amazonia (Ming-Yang Electronic / TSK) + + + ambush + Ambush + + + ambushh + Ambush (hack?) + + + ambushj + Ambush (Japan) + + + ambusht + Ambush (Tecfri) + + + ambushv + Ambush (Volt Electronics) + + + amclink + Amcoe Link Control Box (Version 2.2) + + + amerdart + Ameri Darts (set 1) + + + amerdart2 + Ameri Darts (set 2) + + + amerdart3 + Ameri Darts (set 3) + + + america + America 1492 + + + americna + Americana (9131-01) + + + americnaa + Americana (9131-00) + + + amerihok + Ameri-Hockey + + + amerug + Amerug (Shoei bootleg of Atari Football) + + + amhbattl + Acchi Muite Hoi Battle (Japan, ver 1.04) + + + amidar + Amidar + + + amidar1 + Amidar (older) + + + amidarb + Amidar (bootleg, set 1) + + + amidarb2 + Amidar (bootleg, set 2) + + + amidarc + Amidar (Cirsa bootleg) + + + amidaro + Amidar (Olympia) + + + amidars + Amidar (Scramble hardware) + + + amidaru + Amidar (Stern Electronics) + + + amigo + Amigo (bootleg of Amidar, set 1) + + + amigo2 + Amigo (bootleg of Amidar, set 2) + + + aminosan + Aminosan (satellite) + + + ampkr228 + American Poker II (iamp2 v28) + + + ampkr2b1 + American Poker II (bootleg, set 1) + + + ampkr2b2 + American Poker II (bootleg, set 2) + + + ampkr2b3 + American Poker II (bootleg, set 3) + + + ampkr2b4 + American Poker II (bootleg, set 4) + + + ampkr2jsp + American Poker II - Jackpot (Spanish, set 1) + + + ampkr2jspa + American Poker II - Jackpot (Spanish, set 2) + + + ampkr2jspb + American Poker II - Jackpot (Spanish, set 3) + + + ampkr95 + American Poker 95 + + + ampoker2 + American Poker II + + + amspdwy + American Speedway (set 1) + + + amspdwya + American Speedway (set 2) + + + amusco + American Music Poker (V1.4) + + + amuse + Amuse (Version 50.08 IBA) + + + amuse1 + Amuse (Version 30.08 IBA) + + + amuse1a + Amuse (Version 30.08A) + + + amzqueen + Amazon Queen (10005511, NSW/ACT) + + + amztempl + Amazon Temple (10299811, NSW/ACT) + + + ancienta + Ancient Atlantis (set 1) + + + ancientaa + Ancient Atlantis (set 2) + + + ancientab + Ancient Atlantis (set 3) + + + ancientac + Ancient Atlantis (set 4) + + + ancientad + Ancient Atlantis (set 5) + + + andretti + Mario Andretti (rev.T4) + + + andretti0 + Mario Andretti + + + androdun + Andro Dunos (NGM-049 ~ NGH-049) + + + androidp + Android (prototype, later build) + + + androidpo + Android (prototype, early build) + + + andromed + Andromeda SS (Japan?) + + + andromep + Andromeda (set 1) + + + andromepa + Andromeda (set 2) + + + angelkds + Angel Kids (Japan) + + + anibonus + Animal Bonus (Version 1.8E Dual) + + + anibonusb1 + Animal Bonus (Version 1.7R, set 1) + + + anibonusb2 + Animal Bonus (Version 1.7LT, set 1) + + + anibonusd1 + Animal Bonus (Version 1.7R, set 2) + + + anibonusd2 + Animal Bonus (Version 1.7LT, set 2) + + + anibonuso + Animal Bonus (Version 1.5) + + + anibonuso2 + Animal Bonus (Version 1.4, set 1) + + + anibonuso3 + Animal Bonus (Version 1.4, set 2) + + + anibonusv1 + Animal Bonus (Version 1.8R Dual) + + + anibonusv2 + Animal Bonus (Version 1.8LT Dual) + + + anibonusxo + Animal Bonus (Version 1.50XT) + + + anibonusxo2 + Animal Bonus (Version 1.40XT, set 1) + + + anibonusxo3 + Animal Bonus (Version 1.40XT, set 2) + + + animalc + Animal Catch + + + animalhjb + Animal House (bootleg of Jingle Bell) + + + animalhs + Animal House (V1.0, set 1) + + + animalhsa + Animal House (V1.0, set 2) + + + animalhsb + Animal House (set 3) + + + animalhsc + Animal House (set 4) + + + animaljr + Exciting Animal Land Jr. (USA, Canada, Mexico) + + + animaljrj + Waiwai Animal Land Jr. (Japan) + + + animaljrs + Animalandia Jr. (Spanish) + + + animalw + Animal Wonders (ver A900) + + + animechmp + Anime Champ (GCA07 VER. JAA) + + + animpkr + unknown rocket/animal-themed poker + + + anithunt + Animal Treasure Hunt (Version 1.9R, set 1) + + + anithuntd1 + Animal Treasure Hunt (Version 1.9R, set 2) + + + anithunto + Animal Treasure Hunt (Version 1.7) + + + anithunto2 + Animal Treasure Hunt (Version 1.5) + + + anithuntv1 + Animal Treasure Hunt (Version 1.9R Dual) + + + anmlbskt + Animal Basket / Hustle Tamaire Kyousou (24 Jan 2005) + + + anmlbskta + Animal Basket / Hustle Tamaire Kyousou (19 Jan 2005) + + + anoworld + Another World (Japan, V1.8) + + + anpanman + Soreike! Anpanman Popcorn Koujou (Rev B) + + + anpanman2 + Soreike! Anpanman Popcorn Koujou 2 (Rev C) + + + anpanman2a + Soreike! Anpanman Popcorn Koujou 2 (Rev A) + + + anpanmana + Soreike! Anpanman Popcorn Koujou (Rev A) + + + antar + Antar (Playmatic, set 1) + + + antar2 + Antar (Playmatic, set 2) + + + antcleo + Antony and Cleopatra (10163211, NSW/ACT) + + + antcleoa + Antony and Cleopatra (10177211, ASP) + + + anteater + Anteater + + + anteaterg + Ameisenbaer (German) + + + anteatergg + Ameisenbaer (German bootleg on Galaxian hardware) + + + anteateruk + The Anteater (UK) + + + antiairc + Anti-Aircraft + + + aodk + Aggressors of Dark Kombat / Tsuukai GANGAN Koushinkyoku (ADM-008 ~ ADH-008) + + + aof + Art of Fighting / Ryuuko no Ken (NGM-044 ~ NGH-044) + + + aof2 + Art of Fighting 2 / Ryuuko no Ken 2 (NGM-056) + + + aof2a + Art of Fighting 2 / Ryuuko no Ken 2 (NGH-056) + + + aof2bh + Art of Fighting 2 / Ryuuko no Ken 2 (Enable hidden characters V2) + + + aof2bhs + Art of Fighting 2 / Ryuuko no Ken 2 (Boss With Simple Attack Edition, Hack) + + + aof3 + Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden + + + aof3bh + Art of Fighting 3 - The Path of the Warrior / Art of Fighting - Ryuuko no Ken Gaiden (Enable Hidden Characters V2) + + + aof3k + Art of Fighting 3 - The Path of the Warrior (Korean release) + + + aofbr + Art of Fighting / Ryuuko no Ken (Portuguese edition v1.0, Hack) + + + aoh + Age Of Heroes - Silkroad 2 (v0.63 - 2001/02/07) + + + apache3 + Apache 3 (rev F) + + + apache3a + Apache 3 (rev E) + + + apache3b + Apache 3 (Kana Corporation license, rev G) + + + apb + APB - All Points Bulletin (rev 7) + + + apb1 + APB - All Points Bulletin (rev 1) + + + apb2 + APB - All Points Bulletin (rev 2) + + + apb3 + APB - All Points Bulletin (rev 3) + + + apb4 + APB - All Points Bulletin (rev 4) + + + apb5 + APB - All Points Bulletin (rev 5) + + + apb6 + APB - All Points Bulletin (rev 6) + + + apbf + APB - All Points Bulletin (French) + + + apbg + APB - All Points Bulletin (German) + + + aplan + A-Plan + + + aplarail + Attack Pla Rail (Japan, AP1/VER.A) + + + aplatoon + Platoon (V.3.1 US) + + + apocof + Apollo Coffee (0151105, US) + + + apollo13 + Apollo 13 (CPU 5.01, display A5.00) + + + apollo13_10 + Apollo 13 (CPU 1.00, display A1.00) + + + apollo13_20 + Apollo 13 (CPU 2.03, display A2.01) + + + apollo13_d4 + Apollo 13 (CPU 5.01, display A4.01) + + + aponow + Apocaljpse Now (bootleg of Rescue) + + + apparel + Apparel Night (Japan 860929) + + + apple10 + Apple 10 (Ver 1.21) + + + appoooh + Appoooh + + + aquajack + Aqua Jack (World) + + + aquajackj + Aqua Jack (Japan) + + + aquajacku + Aqua Jack (US) + + + aquajckj + Aqua Jack (Japan) + + + aquajet + Aqua Jet (World, AJ2 Ver.B) + + + aqualand + Aqualand (set 1) + + + aqualanda + Aqualand (set 2) + + + aquario + Clockwork Aquario (prototype) + + + aquarium + Aquarium (US) + + + aquariumj + Aquarium (Japan) + + + aquarush + Aqua Rush (Japan, AQ1/VER.A1) + + + aquastge + Aqua Stage + + + ar_airh + SportTime Table Hockey (Arcadia, set 1, V 2.1) + + + ar_airh2 + SportTime Table Hockey (Arcadia, set 2) + + + ar_argh + Aaargh (Arcadia) + + + ar_blast + Blastaball (Arcadia, V 2.1) + + + ar_bowl + SportTime Bowling (Arcadia, V 2.1) + + + ar_dart + World Darts (Arcadia, set 1, V 2.1) + + + ar_dart2 + World Darts (Arcadia, set 2) + + + ar_dlta + Delta Command (Arcadia) + + + ar_fast + Magic Johnson's Fast Break (Arcadia, V 2.8) + + + ar_fasta + Magic Johnson's Fast Break (Arcadia, V 2.7) + + + ar_ldrb + Leader Board Golf (Arcadia, set 1, V 2.5) + + + ar_ldrba + Leader Board Golf (Arcadia, set 2, V 2.4) + + + ar_ldrbb + Leader Board Golf (Arcadia, set 3) + + + ar_ninj + Ninja Mission (Arcadia, set 1, V 2.5) + + + ar_ninj2 + Ninja Mission (Arcadia, set 2) + + + ar_pm + Pharaohs Match (Arcadia) + + + ar_rdwr + RoadWars (Arcadia, V 2.3) + + + ar_sdwr + Sidewinder (Arcadia, set 1, V 2.1) + + + ar_sdwr2 + Sidewinder (Arcadia, set 2) + + + ar_socc + World Trophy Soccer (Arcadia, V 3.0) + + + ar_spot + Spot (Arcadia, V 2.0) + + + ar_sprg + Space Ranger (Arcadia, V 2.0) + + + ar_xeon + Xenon (Arcadia, V 2.3) + + + arabfgt + Arabian Fight (World) + + + arabfgtj + Arabian Fight (Japan) + + + arabfgtu + Arabian Fight (US) + + + arabiamj + Arabian Magic (Japan) + + + arabiamu + Arabian Magic (US) + + + arabian + Arabian + + + arabiana + Arabian (Atari) + + + arabianm + Arabian Magic (Ver 1.0O 1992/07/06) + + + arabianmj + Arabian Magic (Ver 1.0J 1992/07/06) + + + arabianmu + Arabian Magic (Ver 1.0A 1992/07/06) + + + arabnga6 + Arabian Nights (2J008211, NSW/ACT) + + + arabnga6a + Arabian Nights (10122611, ASP) + + + arabnga6u + Arabian Nights (0151356, US) + + + arac6k27 + Super Six Plus II English Mark Darts (v2.7) + + + arac6k28sp + Super Six Plus II English Mark Darts (v2.8, Spanish) + + + arac6k33 + Super Six Plus II English Mark Darts (v3.3) + + + aracnis + Aracnis (bootleg of Scorpion on Moon Cresta hardware, set 1) + + + aracnisa + Aracnis (bootleg of Scorpion on Moon Cresta hardware, set 2) + + + arbalest + Arbalester + + + arcadecl + Arcade Classics (prototype) + + + arcadia + Waga Seishun no Arcadia + + + arcadian + Arcadia (NMK) + + + archriv2 + Arch Rivals (rev 2.0) + + + archrivl + Arch Rivals (rev 4.0 6/29/89) + + + archrivla + Arch Rivals (rev 2.0 5/03/89) + + + archrivlb + Arch Rivals (rev 2.0 5/03/89, 8-way joystick bootleg) + + + arctthnd + Arctic Thunder (v1.002) + + + arcwins + Arctic Wins (4XF5227H04, US) + + + arcwinsa + Arctic Wins (4XF5227H03, US) + + + area51 + Area 51 (R3000) + + + area51a + Area 51 (Atari Games license, Oct 25, 1995) + + + area51mx + Area 51 / Maximum Force Duo v2.0 + + + area51t + Area 51 (Time Warner license, Oct 17, 1996) + + + area51ta + Area 51 (Time Warner license, Nov 27, 1995) + + + area88 + Area 88 (Japan) + + + area88r + Area 88 (Japan Resale Ver.) + + + arena + Arena + + + arenaa + Arena (alternate set) + + + arenaf + Arena (French) + + + arenag + Arena (German) + + + arescue + Air Rescue (World) + + + arescuej + Air Rescue (Japan) + + + arescueu + Air Rescue (US) + + + argus + Argus + + + argusg + Argus (Gottlieb, prototype) + + + arian + Arian Mission + + + arish + Arishinko (0151087, US) + + + arist_l1 + Aristocrat (Shuffle) (L-1) + + + arizna10 + Arizona 10 (v1.1) + + + arizona + Arizona + + + ark1ball + Arkanoid (bootleg with MCU, harder) + + + ark1balla + Arkanoid (bootleg with MCU, harder, alt) + + + arkangc + Arkanoid (Game Corporation bootleg, set 1) + + + arkangc2 + Arkanoid (Game Corporation bootleg, set 2) + + + arkanoid + Arkanoid (World, older) + + + arkanoidj + Arkanoid (Japan, newer) + + + arkanoidja + Arkanoid (Japan, newer w/level select) + + + arkanoidjb + Arkanoid (Japan, older) + + + arkanoidjbl + Arkanoid (bootleg with MCU, set 1) + + + arkanoidjbl2 + Arkanoid (bootleg with MCU, set 2) + + + arkanoidjbla + Arkanoid (bootleg with MCU, alt) + + + arkanoidpe + Arkanoid (Phoenix Electronics Co. license) + + + arkanoidu + Arkanoid (US, newer) + + + arkanoiduo + Arkanoid (US, older) + + + arkarea + Ark Area + + + arkatayt + Arkanoid (Tayto bootleg) + + + arkatour + Tournament Arkanoid (US, older) + + + arkatour2 + Tournament Arkanoid (US, newer) + + + arkbl2 + Arkanoid (Japanese bootleg Set 2) + + + arkbl3 + Arkanoid (Japanese bootleg Set 3) + + + arkbloc2 + Block (Game Corporation bootleg, set 2) + + + arkbloc3 + Block (Game Corporation bootleg, set 3) + + + arkblock + Block (Game Corporation bootleg, set 1) + + + arkgcbl + Arkanoid (bootleg on Block hardware, set 1) + + + arkgcbla + Arkanoid (bootleg on Block hardware, set 2) + + + arknid2j + Arkanoid - Revenge of DOH (Japan) + + + arknid2u + Arkanoid - Revenge of DOH (US) + + + arknoid2 + Arkanoid - Revenge of DOH (World) + + + arknoid2b + Arkanoid - Revenge of DOH (Japan bootleg) + + + arknoid2j + Arkanoid - Revenge of DOH (Japan) + + + arknoid2u + Arkanoid - Revenge of DOH (US) + + + arknoidj + Arkanoid (Japan, newer w/level select) + + + arknoidu + Arkanoid (US) + + + arknoiuo + Arkanoid (US, older) + + + arkretrn + Arkanoid Returns (Ver 2.02O 1997/02/10) + + + arkretrnj + Arkanoid Returns (Ver 2.02J 1997/02/10) + + + arkretrnu + Arkanoid Returns (Ver 2.02A 1997/02/10) + + + arktayt2 + Arkanoid (Tayto bootleg, harder) + + + arlingtn + Arlington Horse Racing (v1.40-D) + + + arlingtna + Arlington Horse Racing (v1.21-D) + + + armada + Armada + + + armchamp + Arm Champs (Japan) + + + armchmp2 + Arm Champs II (ver 2.7) + + + armchmp2o + Arm Champs II (ver 1.7) + + + armchmp2o2 + Arm Champs II (ver 2.6) + + + armedf + Armed F (Japan) + + + armedff + Armed F (Fillmore license) + + + armora + Armor Attack + + + armorap + Armor Attack (prototype) + + + armorar + Armor Attack (Rock-Ola) + + + armorca2 + Armored Car (set 2) + + + armorcar + Armored Car (set 1) + + + armorcar2 + Armored Car (set 2) + + + armwar + Armored Warriors (Europe 941024) + + + armwar1d + Armored Warriors (Europe 941011 Phoenix Edition) (bootleg) + + + armwara + Armored Warriors (Asia 941024) + + + armwarar1 + Armored Warriors (Asia 940920) + + + armwarb + Armored Warriors (Brazil 941024) + + + armwarr1 + Armored Warriors (Europe 941011) + + + armwaru + Armored Warriors (USA 941024) + + + armwaru1 + Armored Warriors (USA 940920) + + + armwrest + Arm Wrestling + + + arthurkn + Arthur's Knights + + + arwincm + Arctic Wins - Mr. Cashman (0151065, US) + + + as1 + AS-1 Controller + + + as_acp + unknown Astra 'ACP' (Astra, V403) + + + as_bbr + Bullion Bars (Astra, V101) + + + as_bbra + Bullion Bars (Astra, V102,alt) + + + as_bbrb + Bullion Bars (Astra, V201) + + + as_bbrc + Bullion Bars (Astra, V003) + + + as_bbrd + Bullion Bars (Astra, V102) + + + as_bbre + Bullion Bars (Astra, V105) + + + as_bbrf + Bullion Bars (Astra, V004) + + + as_big10 + Big 10 (Astra, V500) + + + as_big10a + Big 10 (Astra, V503) + + + as_big10b + Big 10 (Astra, V507) + + + as_big10c + Big 10 (Astra, V601) + + + as_big10d + Big 10 (Astra, V605) + + + as_big15 + Big 15 (Astra, V101) + + + as_bigcs + Big Cash (Astra, V101) + + + as_bigcsa + Big Cash (Astra, V103) + + + as_bigtm + Big Time (Astra, V003) + + + as_celeb + Celebration (Astra, V100) + + + as_celeba + Celebration (Astra, V101) + + + as_celebb + Celebration (Astra, V201) + + + as_colmn + Colour Of Money (Astra, V200) + + + as_colmna + Colour Of Money (Astra, V107) + + + as_colmnb + Colour Of Money (Astra, V108) + + + as_colmnc + Colour Of Money (Astra, V109) + + + as_colmnd + Colour Of Money (Astra, V908) + + + as_cshah + Cash Ahoi (Lowen, V105) + + + as_cshcs + Cash Castle (Lowen, V006) + + + as_csv + Slot Slant (?) (Astra, V202) + + + as_dblcs + Double Cash (Astra, V110) + + + as_dblcsa + Double Cash (Astra, V112) + + + as_dblcsb + Double Cash (Astra, V108) + + + as_dblcsc + Double Cash (Astra, V109) + + + as_dblcsd + Double Cash (Astra, V106) + + + as_dblcse + Double Cash (Astra, V102) + + + as_dblcsf + Double Cash (Astra, V100) + + + as_dblcsg + Double Cash (Astra, V100, alt) + + + as_dblcsh + Double Cash (Astra, V004) + + + as_djp + Double Jackpot (Astra, V107) + + + as_djpa + Double Jackpot (Astra, V004) + + + as_djpb + Double Jackpot (Astra, V109) + + + as_fortn + Fortune Teller (Astra, V009) + + + as_gof + Game Of Fortune (Lowen, V208) + + + as_hc + Hokey Cokey (Astra, V107) + + + as_hca + Hokey Cokey (Astra, V109) + + + as_hcb + Hokey Cokey (Astra, V110) + + + as_hcc + Hokey Cokey (Astra, V111) + + + as_hcd + Hokey Cokey (Astra, V909) + + + as_hog + Hearts Of Gold (Astra, V002) + + + as_hr + Hot Reel (Astra, V004) + + + as_hxr + Hot Cross Run (Astra, V108) + + + as_jackb + Jackpot Bell (Astra, V104) + + + as_jjive + Jungle Jive (Astra, V107) + + + as_jjivea + Jungle Jive (Astra, V106) + + + as_jjiveb + Jungle Jive (Astra, V104) + + + as_jjivec + Jungle Jive (Astra, V102) + + + as_jjived + Jungle Jive (Astra, V101) + + + as_jjivee + Jungle Jive (Astra, V101, alt) + + + as_jjivef + Jungle Jive (Astra, V004) + + + as_jjiveg + Jungle Jive (Astra, V005) + + + as_jmpj + Jumping Jackpots (Astra, V100) + + + as_jmpja + Jumping Jackpots (Astra, V102) + + + as_jolly + Jolly Roger (Astra, V103) + + + as_jpx + Jackpot X (Astra, V100) + + + as_jpxa + Jackpot X (Astra, V101) + + + as_jpxb + Jackpot X (Astra, V002) + + + as_kingc + King Cash (Astra, V106) + + + as_kingca + King Cash (Astra, V103) + + + as_koc + King Of Clubs (Astra, V200) + + + as_koca + King Of Clubs (Astra, V101) + + + as_lbt + Little Big 10 (Astra, V103) + + + as_lbta + Little Big 10 (Astra, V102) + + + as_ldl + Little Devils (Astra, V700) + + + as_ldla + Little Devils (Astra, V600) + + + as_ldlb + Little Devils (Astra, V312) + + + as_ldlc + Little Devils (Astra, V003) + + + as_ldld + Little Devils (Astra, V102) + + + as_ldle + Little Devils (Astra, V103) + + + as_letsp + Let's Party (Astra, V904) + + + as_mp + Mission Possible (Lowen, V118) + + + as_mp2 + Mission Possible 2 (Lowen, V114) + + + as_otr + Over The Rainbow (Astra, V104) + + + as_otra + Over The Rainbow (Astra, V102) + + + as_party + Party Time (Astra, V105) + + + as_partya + Party Time (Astra, V110) + + + as_partyb + Party Time (Astra, V112) + + + as_partyc + Party Time (Astra, V206) + + + as_partyd + Party Time (Astra, V401) + + + as_partye + Party Time (Astra, V907) + + + as_partyf + Party Time (Astra, V906) + + + as_pb + Piggy Banking (Astra, V105) + + + as_pharg + Pharaoh's Gold (Astra, V005) + + + as_pharga + Pharaoh's Gold (Astra, V101) + + + as_phargb + Pharaoh's Gold (Astra, V102) + + + as_phargc + Pharaoh's Gold (Astra, V104) + + + as_phargd + Pharaoh's Gold (Astra, V106) + + + as_pharge + Pharaoh's Gold (Astra, V107) + + + as_pia + Pay It Again (Astra, V202) + + + as_piaa + Pay It Again (Astra, V206) + + + as_piab + Pay It Again (Astra, V904) + + + as_ptf + Party Fruits (Astra, V102) + + + as_ptfa + Party Fruits (Astra, V803) + + + as_ptfb + Party Fruits (Astra, V905) + + + as_ptfc + Party Fruits (Astra) + + + as_rab + Ring A Bell (Astra, V105) + + + as_raba + Ring A Bell (Astra, V106) + + + as_rabb + Ring A Bell (Astra, V107) + + + as_rabc + Ring A Bell (Astra, V104) + + + as_rbg + River Boat Gambler (Astra, V304) + + + as_rbga + River Boat Gambler (Astra, V303) + + + as_rbgb + River Boat Gambler (Astra, V104) + + + as_rbgc + River Boat Gambler (Astra, V102) + + + as_rbgd + River Boat Gambler (Astra, V101) + + + as_rbge + River Boat Gambler (Astra, V008) + + + as_rbglo + River Boat Gambler (Lowen, V106) + + + as_rox + Roll X (Astra, V006) + + + as_rtr + Ready To Roll (Astra, V101) + + + as_rtra + Ready To Roll (Astra, V101, alt 1) + + + as_rtrb + Ready To Roll (Astra, V101, alt 2) + + + as_rtrc + Ready To Roll (Astra, V101, alt 3) + + + as_rtrd + Ready To Roll (Astra, V100, ) + + + as_rtre + Ready To Roll (Astra, V100, alt) + + + as_rtrf + Ready To Roll (Astra, V200) + + + as_rtrg + Ready To Roll (Astra, V200, alt) + + + as_rtrh + Ready To Roll (Astra, V202) + + + as_siu + Step It Up (Astra, V202) + + + as_siua + Step It Up (Astra, V203) + + + as_sld + Super Little Devil (Astra, V700) + + + as_slda + Super Little Devil (Astra, V600) + + + as_sldb + Super Little Devil (Astra, V500) + + + as_sldc + Super Little Devil (Astra, V400) + + + as_sldd + Super Little Devil (Astra, V200) + + + as_slde + Super Little Devil (Astra, V101) + + + as_sltcl + Slots Classic (?) (Astra) + + + as_srb + Super Ring a Bell (Astra, V004) + + + as_srba + Super Ring a Bell (Astra, V100) + + + as_srbb + Super Ring a Bell (Astra, V101) + + + as_srbc + Super Ring a Bell (Astra, V201) + + + as_srbd + Super Ring a Bell (Astra, V202) + + + as_srbe + Super Ring a Bell (Astra, V203) + + + as_stp + Stampede (Astra, V103) + + + as_stpa + Stampede (Astra, V102) + + + as_stpb + Stampede (Astra, V105) + + + as_tbl + Triple Bells (Astra, V104) + + + as_tbla + Triple Bells (Astra, V105) + + + as_tblb + Triple Bells (Astra, V106) + + + as_tblc + Triple Bells (Astra, V103) + + + as_tbld + Triple Bells (Astra, V304) + + + as_tble + Triple Bells (Astra, V303) + + + as_tblf + Triple Bells (Astra, V301) + + + as_td + Twin Dragons (Astra, V103) + + + as_tem + Temptation (Astra, V101) + + + as_tema + Temptation (Astra, V006) + + + as_topsl + Top Slot (Astra, V103) + + + as_topsla + Top Slot (Astra, V104) + + + as_topslb + Top Slot (Astra, V201) + + + as_topslc + Top Slot (Astra, V203) + + + as_topsld + Top Slot (Astra, V205) + + + as_twp + Twin Pots (Astra, V106) + + + as_twpa + Twin Pots (Astra, V104) + + + as_vcv + Viva Cash Vegas (Astra, V005) + + + as_vcva + Viva Cash Vegas (Astra, V107) + + + as_vcvb + Viva Cash Vegas (Astra, V106) + + + as_vcvc + Viva Cash Vegas (Astra, V104) + + + as_vcvd + Viva Cash Vegas (Astra, V102) + + + as_vcve + Viva Cash Vegas (Astra, V101) + + + as_vn + Vegas Nights (Astra, V205) + + + as_ws + Win Streak (Astra, V100) + + + as_ww + Wicked Willy (Astra, V203) + + + as_wwa + Wicked Willy (Astra, V204) + + + as_wwb + Wicked Willy (Astra, V205) + + + as_wwc + Wicked Willy (Astra, V104) + + + as_wwd + Wicked Willy (Astra, V103) + + + as_wwe + Wicked Willy (Astra, V102) + + + ashnojoe + Ashita no Joe (Japan) + + + ashura + Ashura Blaster (World) + + + ashuraj + Ashura Blaster (Japan) + + + ashurau + Ashura Blaster (US) + + + asideral + Ataque Sideral (Spanish bootleg of UniWar S) + + + asndynmt + Asian Dynamite / Dynamite Deka EX + + + asndynmto + Asian Dynamite / Dynamite Deka EX (older) + + + asnprinc + Asian Princess (0352502, US) + + + aso + ASO - Armored Scrum Object + + + asoccer + American Soccer (Japan) + + + assault + Assault (Rev B) + + + assaultj + Assault (Japan) + + + assaultp + Assault Plus (Japan) + + + astannie + Asteroid Annie and the Aliens + + + astdelu1 + Asteroids Deluxe (rev 1) + + + astdelux + Asteroids Deluxe (rev 3) + + + astdelux1 + Asteroids Deluxe (rev 1) + + + astdelux2 + Asteroids Deluxe (rev 2) + + + asterion + Asterion + + + asterix + Asterix (ver EAD) + + + asterixaad + Asterix (ver AAD) + + + asterixeaa + Asterix (ver EAA) + + + asterixeac + Asterix (ver EAC) + + + asterixj + Asterix (ver JAD) + + + asterock + Asterock (Sidam bootleg of Asteroids) + + + asterockv + Asterock (Videotron bootleg of Asteroids) + + + asteroi1 + Asteroids (rev 1) + + + asteroib + Asteroids (bootleg on Lunar Lander hardware) + + + asteroid + Asteroids (rev 4) + + + asteroid1 + Asteroids (rev 1) + + + asteroid2 + Asteroids (rev 2) + + + asteroidb1 + Asteroids (bootleg on Lunar Lander hardware, set 1) + + + asteroidb2 + Asteroids (bootleg on Lunar Lander hardware, set 2) + + + astinvad + Astro Invader + + + astinvadb + Astro Invader (bootleg) + + + astoneag + Stone Age (Astro, Ver. EN.03.A, 2005/02/21) + + + astorm + Alien Storm (World, 2 Players) (FD1094 317-0154) + + + astorm2p + Alien Storm (2 Player) + + + astorm3 + Alien Storm (World, 3 Players) (FD1094 317-0148) + + + astorm3d + Alien Storm (World, 3 Players) (bootleg of FD1094 317-0148 set) + + + astormb2 + Alien Storm (bootleg, set 2) + + + astormbl + Alien Storm (bootleg, set 1) + + + astormj + Alien Storm (Japan, 2 Players) (FD1094 317-0146) + + + astormjd + Alien Storm (Japan, 2 Players) (bootleg of FD1094 317-0146 set) + + + astormu + Alien Storm (US, 3 Players) (FD1094 317-0147) + + + astormud + Alien Storm (US, 3 Players) (bootleg of FD1094 317-0147 set) + + + astrass + Astra SuperStars (J 980514 V1.002) + + + astrians + Astrians (clone of Swarm) + + + astroamb + Astro Ambush (Scramble bootleg on Galaxian hardware) + + + astrob + Astro Blaster (version 3) + + + astrob1 + Astro Blaster (version 1) + + + astrob2 + Astro Blaster (version 2) + + + astrob2a + Astro Blaster (version 2a) + + + astrob2b + Astro Blaster (version 2b) + + + astrobf + Astro Blaster (French) + + + astrobg + Astro Blaster (German) + + + astrof + Astro Fighter (set 1) + + + astrof2 + Astro Fighter (set 2) + + + astrof3 + Astro Fighter (set 3) + + + astroff + Astro Fighter (Famaresa bootleg, set 1) + + + astroff2 + Astro Fighter (Famaresa bootleg, set 2) + + + astrofl + Astro Flash (Japan) + + + astroft + Astro Fighter (Taito) + + + astron + Astron Belt + + + astronp + Astron Belt (Pioneer LDV1000) + + + astropal + Astropal + + + astrowar + Astro Wars + + + astrxeaa + Asterix (World ver. EAA) + + + astrxeac + Asterix (World ver. EAC) + + + astyanax + The Astyanax (EPROM version) + + + astyanaxa + The Astyanax (mask ROM version) + + + asuka + Asuka & Asuka (World) + + + asukaj + Asuka & Asuka (Japan, rev 1) + + + asukaja + Asuka & Asuka (Japan) + + + asurabld + Asura Blade - Sword of Dynasty (Japan) + + + asurabus + Asura Buster - Eternal Warriors (USA) + + + asurabusj + Asura Buster - Eternal Warriors (Japan, set 1) + + + asurabusja + Asura Buster - Eternal Warriors (Japan, set 2) + + + asurabusjr + Asura Buster - Eternal Warriors (Japan) (ARCADIA review build) + + + asylum + Asylum (prototype) + + + atamanot + Computer Quiz Atama no Taisou (Japan) + + + ataqandr + Ataque Androide - Moon Cresta (FAR S.A. Spanish bootleg) + + + atarians + The Atarians + + + atarifb + Atari Football (revision 2) + + + atarifb1 + Atari Football (revision 1) + + + atarifb2 + Atari Football II + + + atarifb4 + Atari 4 Player Football + + + ataxx + Ataxx (rev 5) + + + ataxxa + Ataxx (rev 4) + + + ataxxe + Ataxx (Europe) + + + ataxxj + Ataxx (Japan) + + + atehate + Athena no Hatena? + + + atetb3482 + Tetris (bootleg set 6, with UM3482) + + + atetb5205 + Tetris (bootleg set 7, with OKI M5205) + + + atetckt2 + Tetris (Cocktail set 2) + + + atetcktl + Tetris (Cocktail set 1) + + + atetris + Tetris (set 1) + + + atetrisa + Tetris (set 2) + + + atetrisb + Tetris (bootleg set 1) + + + atetrisb2 + Tetris (bootleg set 2) + + + atetrisb3 + Tetris (bootleg set 3) + + + atetrisb4 + Tetris (bootleg set 4) + + + atetrisb5 + Tetris (bootleg set 5) + + + atetrisbp + Tetris (bartop, prototype) + + + atetrisc + Tetris (cocktail set 1) + + + atetrisc2 + Tetris (cocktail set 2) + + + athena + Athena + + + athenab + Athena (bootleg) + + + atkgld + All the King's Gold (0152152, US) + + + atla_ltd + Atlantis (LTD) + + + atlantca + Atlantica (Russia) (Atronic) (set 1) + + + atlantcaa + Atlantica (Russia) (Atronic) (set 2) + + + atlantip + Atlantis (rev. 3) + + + atlantis + Battle of Atlantis (set 1) + + + atlantis2 + Battle of Atlantis (set 2) + + + atlantisb + Battle of Atlantis (bootleg) + + + atlantol + Atlant Olimpic (Italian bootleg) + + + atlants2 + Battle of Atlantis (set 2) + + + atleta + Atleta + + + atombjt + Atom (bootleg of Bombjack Twin) + + + atomboy + Atomic Boy (revision B) + + + atomboya + Atomic Boy (revision A) + + + atomicp + Atomic Point (Korea) + + + atompunk + Atomic Punk (US) + + + ator + Ator (set 1, 2 bumpers) + + + ator3bmp + Ator (set 2, 3 bumpers) + + + atrbonpk + Bonus Poker (Atronic) + + + atrbtlma + Beetlemania (Atronic) + + + atricmon + I C Money (Atronic) (set 1) + + + atricmona + I C Money (Atronic) (set 2) + + + atronic + Atronic SetUp/Clear Chips (Russia, set 1) + + + atronica + Atronic SetUp/Clear Chips (Russia, set 2) + + + atronicb + Atronic SetUp/Clear Chips + + + atrwild + Wild Thing (Atronic) + + + attack + Attack + + + attackf + Attack (bootleg of Defender) + + + attackfc + Attack Force (encrypted) + + + attackfcu + Attack Force (unencrypted) + + + attckexd + Attack (set 1) + + + attckexd2 + Attack (set 2) + + + attckufo + Attack UFO + + + attila + Attila The Hun + + + atvtrack + ATV Track (set 1) + + + atvtracka + ATV Track (set 2) + + + atworld + Around The World (Version 1.4R CGA) + + + atworldd1 + Around The World (Version 1.3R CGA) + + + atworlde1 + Around The World (Version 1.3E CGA) + + + au + Au (location test) + + + aurail + Aurail (set 3, US) (unprotected) + + + aurail1 + Aurail (set 2, World) (FD1089B 317-0168) + + + aurail1d + Aurail (set 2, World) (bootleg of FD1089B 317-0168 set) + + + aurailj + Aurail (set 1, Japan) (FD1089A 317-0167) + + + aurailjd + Aurail (set 1, Japan) (bootleg of FD1089A 317-0167 set) + + + ausfache + Akatsuki Blitzkampf Ausf. Achse (Japan) + + + aust201 + Austin Powers (CPU 2.01, display A2.00) + + + aust300 + Austin Powers (CPU 3.00, display A3.00) + + + aust301 + Austin Powers (CPU 3.01, display A3.00) + + + austin + Austin Powers (CPU 3.02, display A3.00) + + + austinf + Austin Powers (CPU 3.02, display F3.00, France) + + + austing + Austin Powers (CPU 3.02, display G3.00, Germany) + + + austini + Austin Powers (CPU 3.02, display I3.00, Italy) + + + austnew + Austin Powers (CPU 3.02, display A3.00, ARM7 sound board) + + + autmoon + Autumn Moon (1VXFC5488, New Zealand) + + + automat + Automat (bootleg of Robocop) + + + automatm + Automat (bootleg of Robocop, Modular System) + + + autopapa + El auto feo + + + av2mj1bb + AV2Mahjong No.1 Bay Bridge no Seijo (Japan) + + + av2mj2rg + AV2Mahjong No.2 Rouge no Kaori (Japan) + + + avalnc12 + The Key Of Avalon 1.2 - Summon The New Monsters (client, Rev A) (GDT-0010A) + + + avalnc13 + The Key Of Avalon 1.3 - Chaotic Sabbat (client, Rev C) (GDT-0010C) + + + avalnc25 + The Key Of Avalon 2.5 - War of the Key (client, Rev B) (GDT-0019B) + + + avalnc25a + The Key Of Avalon 2.5 - War of the Key (client, Rev A) (GDT-0019A) + + + avalnche + Avalanche + + + avalns12 + The Key Of Avalon 1.2 - Summon The New Monsters (server, Rev A) (GDT-0009A) + + + avalns13 + The Key Of Avalon 1.3 - Chaotic Sabbat (server, Rev C) (GDT-0009C) + + + avalns25 + The Key Of Avalon 2.5 - War of the Key (server, Rev B) (GDT-0018B) + + + avalns25a + The Key Of Avalon 2.5 - War of the Key (server, Rev A) (GDT-0018A) + + + avalon20 + The Key Of Avalon 2.0 - Eutaxy and Commandment (client, Rev B) (GDT-0017B) + + + avalonc + The Key Of Avalon - The Wizard Master (client, Rev G) (GDT-0006G) + + + avalonca + The Key Of Avalon - The Wizard Master (client, Rev A) (GDT-0006A) + + + avaloncc + The Key Of Avalon - The Wizard Master (client, Rev C) (GDT-0006C) + + + avalonce + The Key Of Avalon - The Wizard Master (client, Rev E) (GDT-0006E) + + + avaloncf + The Key Of Avalon - The Wizard Master (client, Rev F) (GDT-0006F) + + + avalons + The Key Of Avalon - The Wizard Master (server, Rev G) (GDT-0005G) + + + avalonsa + The Key Of Avalon - The Wizard Master (server, Rev A) (GDT-0005A) + + + avalonsc + The Key Of Avalon - The Wizard Master (server, Rev C) (GDT-0005C) + + + avalonse + The Key Of Avalon - The Wizard Master (server, Rev E) (GDT-0005E) + + + avalonsf + The Key Of Avalon - The Wizard Master (server, Rev F) (GDT-0005F) + + + avefenix + Ave Fenix (Electrogame, Spanish bootleg of Phoenix) + + + avefenixl + Ave Fenix (Laguna, Spanish bootleg of Phoenix) + + + avefenixrf + Ave Fenix (Recreativos Franco, Spanish bootleg of Phoenix) + + + avenger + Avenger + + + avenger2 + Avengers (US set 2) + + + avengers + Avengers (US, rev. D) + + + avengersa + Avengers (US, rev. C) + + + avengersb + Avengers (US, rev. A) + + + avengersc + Avengers (US) + + + avengrgs + Avengers In Galactic Storm (US/Europe 1.0) + + + avengrgsbh + Avengers In Galactic Storm (Playable Boss, Hack) + + + avengrgsj + Avengers In Galactic Storm (Japan 1.2) + + + avmjts + AV-Mahjong Two Shot (Japan Ver 1.00 1990/05/21) + + + avsp + Alien vs. Predator (Europe 940520) + + + avspa + Alien vs. Predator (Asia 940520) + + + avspd + Alien vs. Predator (Europe 940520 Phoenix Edition) (bootleg) + + + avsph + Alien vs. Predator (Hispanic 940520) + + + avspirit + Avenging Spirit + + + avspj + Alien vs. Predator (Japan 940520) + + + avspu + Alien vs. Predator (USA 940520) + + + avtbingo + Arrow Bingo + + + avtnfl + NFL (ver 109) + + + avtsym14 + Symbols (ver 1.4) + + + avtsym25 + Symbols (ver 2.5) + + + awetoss + Awesome Toss 'Em (Lazer-Tron) + + + aztarac + Aztarac + + + azumanga + Azumanga Daioh Puzzle Bobble (GDL-0018) + + + azurian + Azurian Attack + + + b2b + Bang Bang Busters (2010 NCI release) + + + b3rinsya + Burning Sanrinsya - Burning Tricycle + + + b83catms + Cat & Mouse (Bellfruit) (System 83) + + + b83cops + Cops & Robbers (Bellfruit) (System 83) + + + b85bdclb + Big Deal Club (System 85, set 1) + + + b85bdclba + Big Deal Club (System 85, set 2) + + + b85bdclbb + Big Deal Club (System 85, set 3) + + + b85cb7p + Bar Sevens (Bellfruit) (Protocol) (System 85) + + + b85cblit + Cash Blitz (System 85, set 1) + + + b85cblita + Cash Blitz (System 85, set 2) + + + b85cblitb + Cash Blitz (System 85, set 3) + + + b85cexpl + Cash Explosion (System 85) + + + b85clbpm + Club Premier (System 85) + + + b85cops + Cops 'n' Robbers (Dutch) (Bellfruit) (System 85) + + + b85dbldl + Double Dealer (System 85, set 1) + + + b85dbldla + Double Dealer (System 85, set 2) + + + b85dbldlb + Double Dealer (System 85, set 3) + + + b85disc + Discovey (Dutch) (Bellfruit) (System 85) + + + b85hilo + Hi-Lo Silver (System 85, set 1) + + + b85hiloa + Hi-Lo Silver (System 85, set 2) + + + b85jkwld + Jokers Wild (Dutch) (System 85) + + + b85jpclb + Jackpot Club (System 85, set 1) + + + b85jpclba + Jackpot Club (System 85, set 2) + + + b85jpclbb + Jackpot Club (System 85, set 3) + + + b85jpclbc + Jackpot Club (System 85, set 4) + + + b85koc + King of Clubs (Bellfruit) (System 85, set 1) + + + b85koca + King of Clubs (Bellfruit) (System 85, set 2) + + + b85luckd + Lucky Dice (Dutch) (System 85) + + + b85lucky + Lucky Cards (Dutch) (System 85) + + + b85potp + Pick Of The Pack (System 85) + + + b85ritz + The Ritz (System 85, set 1) + + + b85ritza + The Ritz (System 85, set 2) + + + b85ritzb + The Ritz (System 85, set 3) + + + b85ritzc + The Ritz (System 85, set 4) + + + b85ritzd + The Ritz (System 85, set 5) + + + b85royal + The Royal (System 85) + + + b85scard + Supercards (Dutch, Game Card 39-340-271?) (System 85) + + + b85sngam + Super Nudge Gambler (System 85) + + + baboshka + Babooshka (Atronic) + + + baboshkar + Babooshka (Russia) (Atronic) + + + babydad + Baby Dado + + + babyfrts + Baby Fruits (100 pts version) + + + babyfrts25 + Baby Fruits (25 pts version) + + + babypac + Baby Pac-Man (set 1) + + + babypac2 + Baby Pac-Man (set 2) + + + babypkr + Baby Poker + + + bace + Balloon Ace + + + backfire + Backfire! (Japan, set 1) + + + backfirea + Backfire! (Japan, set 2) + + + backfirt + Back Fire (Tecmo, bootleg) + + + backgamn + Backgammon + + + badapple + Bad Apple (HB, Tech-Demo) + + + baddog + Bad Dog Poker (0200428V, NSW/ACT) + + + baddudes + Bad Dudes vs. Dragonninja (US, revision 1) + + + badgirls + Bad Girls + + + badgirlsa + Bad Girls (alternate set) + + + badgirlsf + Bad Girls (French) + + + badgirlsg + Bad Girls (German) + + + badlands + Bad Lands + + + badlandsb + Bad Lands (bootleg) + + + badlandsb2 + Bad Lands (bootleg, alternate) + + + badlandsm + Bad Lands (Modular System) + + + bagman + Bagman + + + bagmanf + Le Bagnard (bootleg on Crazy Kong hardware) + + + bagmanj + Bagman (Taito) + + + bagmanm2 + Bagman (bootleg on Moon Cresta hardware, set 2) + + + bagmanm3 + Bagman (bootleg on Moon Cresta hardware, set 3) + + + bagmanmc + Bagman (bootleg on Moon Cresta hardware, set 1) + + + bagmans + Bagman (Stern Electronics, revision A5) + + + bagmans2 + Bagman (Stern set 2) + + + bagmans3 + Bagman (Stern Electronics, revision A3) + + + bagmans4 + Bagman (Stern Electronics, revision A4) + + + bagnard + Le Bagnard (set 1) + + + bagnarda + Le Bagnard (set 2) + + + bagnardi + Le Bagnard (Itisa, Spain) + + + bagnardio + Le Bagnard (Itisa, Spain, older) + + + baile + Baile 2005 (V3.2 2005-01-12) + + + bakatono + Bakatonosama Mahjong Manyuuki (MOM-002 ~ MOH-002) + + + bakubaku + Baku Baku Animal (J 950407 V1.000) + + + bakubrkr + Bakuretsu Breaker (Japan) + + + bakuhatu + Mahjong Bakuhatsu Junjouden (Japan) + + + bakutotu + Bakutotsu Kijuutei + + + balcube + Bal Cube + + + ballbomb + Balloon Bomber + + + ballboy + Ball Boy (2 players) + + + ballboy3p + Ball Boy (3 players) + + + ballbros + Balloon Brothers + + + ballch + Ball Challenge (20020607 1.0 OVERSEA) + + + ballpom + Ball Pom Line + + + balonfgt + Vs. Balloon Fight (set BF4 A-3) + + + baluba + Baluba-louk no Densetsu (Japan) + + + bam2 + Bust a Move 2 - Dance Tengoku Mix (HDD Japanese ROM ver. 1999/07/17 10:00:00) + + + bam2a + Bust a Move 2 - Dance Tengoku Mix (CDROM Japanese ROM ver. 1999/07/17 10:00:00) + + + bananadr + Mahjong Banana Dream (Japan 891124) + + + bananas + Bananas Go Bahamas (set 1) + + + bananasa + Bananas Go Bahamas (set 2) + + + banbam + BanBam + + + bandido + Bandido + + + bandit + Bandit (US) + + + bang + Bang! + + + bangball + Bang Bang Ball (v1.05) + + + bangbead + Bang Bead + + + bangbedp + Bang Bead (Prototype?) + + + bangj + Gun Gabacho (Japan) + + + bankp + Bank Panic + + + bankpt + Bank Panic (Tecfri bootleg) + + + bankrob + Bank Robbery (Ver. 3.32) + + + bankroba + Bank Robbery (Ver. 2.00) + + + bankrobb + Bank Robbery (Ver. 1.23) + + + baoqingt + Bao Qing Tian + + + baracuda + Barracuda + + + baraduka + Baraduke (set 2) + + + baraduke + Baraduke + + + barata + Dona Barata (early prototype) + + + barbball + Barroom Baseball (prototype) + + + barbwire + Barb Wire + + + barek2ch + Bare Knuckle II (scrambled bootleg of Mega Drive version) + + + barek2mb + Bare Knuckle II (bootleg of Mega Drive version) + + + barek3mb + Bare Knuckle III (scrambled bootleg of Mega Drive version) + + + barek3mba + Bare Knuckle III (bootleg of Mega Drive version) + + + barekch + Bare Knuckle (scrambled bootleg of Mega Drive version) + + + barline + Barline (Japan?) + + + barra_l1 + Barracora (L-1) + + + barricad + Barricade + + + barrier + Barrier + + + baryon + Baryon - Future Assault (set 1) + + + baryona + Baryon - Future Assault (set 2) + + + basebal2 + Baseball: The Season II + + + basket + Basket + + + basketbal + Basket Ball (8-way joystick bootleg of Arch Rivals) + + + bassang2 + Bass Angler 2 (GE865 VER. JAA) + + + bassangl + Bass Angler (GE765 VER. JAA) + + + basschal + Sega Bass Fishing Challenge Version A + + + basschalo + Sega Bass Fishing Challenge + + + bassdx + Sega Bass Fishing Deluxe (USA) + + + batcir + Battle Circuit (Europe 970319) + + + batcira + Battle Circuit (Asia 970319) + + + batcird + Battle Circuit (Europe 970319 Phoenix Edition) (bootleg) + + + batcirj + Battle Circuit (Japan 970319) + + + batlball + Battle Balls (Germany, newer) + + + batlballa + Battle Balls (Hong Kong) + + + batlballe + Battle Balls (Hong Kong, earlier) + + + batlballo + Battle Balls (Germany, earlier) + + + batlballpt + Battle Balls (Portugal) + + + batlballu + Battle Balls (US) + + + batlbubl + Battle Bubble (v2.00) + + + batlgear + Battle Gear (Ver 2.40 A) + + + batlgr2 + Battle Gear 2 (v2.04J) + + + batlgr2a + Battle Gear 2 (v2.01J) + + + batlgr3 + Battle Gear 3 (Ver.2.01A) + + + batlzone + Battle Zone (bootleg of Mayday) + + + batman + Batman + + + batman2 + Batman Part 2 + + + batmanf + Batman Forever (4.0) + + + batmanf1 + Batman Forever (1.02) + + + batmanf2 + Batman Forever (2.02) + + + batmanf3 + Batman Forever (3.0) + + + batmanfr + Batman Forever (JUE 960507 V1.000) + + + batrider + Armed Police Batrider (Europe) (Fri Feb 13 1998) + + + batriderc + Armed Police Batrider (China) (Fri Feb 13 1998) + + + batriderhk + Armed Police Batrider (Hong Kong) (Mon Dec 22 1997) + + + batriderj + Armed Police Batrider (Japan, B version) (Fri Feb 13 1998) + + + batriderja + Armed Police Batrider (Japan, older version) (Mon Dec 22 1997) + + + batriderk + Armed Police Batrider (Korea) (Fri Feb 13 1998) + + + batridert + Armed Police Batrider (Taiwan) (Mon Dec 22 1997) + + + batrideru + Armed Police Batrider (USA) (Fri Feb 13 1998) + + + batridra + Armed Police Batrider (Japan, version A) + + + batridrk + Armed Police Batrider (Korea, version B) + + + batsugun + Batsugun + + + batsuguna + Batsugun (older, set 1) + + + batsugunb + Batsugun (Korean PCB) + + + batsugunbl + Batsugun (bootleg) + + + batsugunc + Batsugun (older, set 2) + + + batsugunsp + Batsugun - Special Version + + + battlan2 + Battle Lane! Vol. 5 (set 2) + + + battlan3 + Battle Lane! Vol. 5 (set 3) + + + battlane + Battle Lane! Vol. 5 (set 1) + + + battlane2 + Battle Lane! Vol. 5 (set 2) + + + battlane3 + Battle Lane! Vol. 5 (set 3) + + + battlcry + Battlecry (Version E) + + + battlcryc + Battlecry (Version C) + + + battlcryp + Battlecry (Prototype) + + + battleg + Battle Garegga - Type 2 (Denmark - China) (Tue Apr 2 1996) + + + battlega + Battle Garegga (Europe - USA - Japan - Asia) (Sat Feb 3 1996) + + + battlegb + Battle Garegga (Austria - Hong Kong) (Sat Mar 2 1996) + + + battlera + Battle Rangers (World) + + + battles + Battles (set 1) + + + battles2 + Battles (set 2) + + + battlex + Battle Cross + + + battlntj + Battlantis (Japan) + + + battlnts + Battlantis (version G) + + + battlntsa + Battlantis (version F) + + + battlntsj + Battlantis (Japan, version E) + + + battroad + The Battle-Road + + + batugnsp + Batsugun (Special Ver.) + + + batwings + Battle Wings (alt) + + + bay_d300 + Baywatch (3.00 Dutch) + + + bay_d400 + Baywatch (4.00 English) + + + bay_e400 + Baywatch (4.00 Dutch) + + + bay_f201 + Baywatch (2.01 French) + + + bay_g300 + Baywatch (3.00 German) + + + bayrouta + Bay Route (set 2) + + + bayroute + Bay Route (set 3, World) (FD1094 317-0116) + + + bayroute1 + Bay Route (set 1, US) (unprotected) + + + bayrouteb1 + Bay Route (encrypted, protected bootleg) + + + bayrouteb2 + Bay Route (Datsu bootleg) + + + bayrouted + Bay Route (set 3, World) (bootleg of FD1094 317-0116 set) + + + bayroutej + Bay Route (set 2, Japan) (FD1094 317-0115) + + + bayroutejd + Bay Route (set 2, Japan) (bootleg of FD1094 317-0115 set) + + + bayrtbl1 + Bay Route (bootleg set 1) + + + bayrtbl2 + Bay Route (bootleg set 2) + + + baywatch + Baywatch + + + bazooka + Bazooka + + + bazookabr + Bazooka (Brazil) + + + bb_21up + 21 Up (Bellfruit) (Black Box) (5p Stake, £1 Jackpot) + + + bb_21upa + 21 Up (Bellfruit) (Black Box) (10p Stake, £2 Jackpot) + + + bb_bellt + Bell Trail (Bellfruit) (Black Box) (5p Stake, £1 Jackpot) + + + bb_cjack + Crackerjack (Bellfruit) (Black Box) (5p Stake, £2 Jackpot) + + + bb_dblit + Double It (Bellfruit) (Black Box) (10p Stake, £2 Jackpot) + + + bb_fiest + Fiesta (Associated Leisure) (Black Box) (2p Stake, £1/£2 Jackpot) + + + bb_firec + Fire Cracker (Bellfruit) (Black Box) (10p Stake, £2 Jackpot) + + + bb_gspin + Golden Spin (BWB) (Black Box) (MK1.5, 5p Stake, £50 Jackpot) + + + bb_nudcl + Nudge Climber (Bellfruit) (Black Box) (5p Stake, £1 Jackpot, all cash) + + + bb_nudgm + The Nudge Machine (ADMC) (Black Box) (5p Stake, £1/£2 Jackpot) + + + bb_oal + Oranges And Lemons (Bellfruit) (Black Box) (10p Stake, £2 Jackpot) + + + bb_reelg + Reel Gambler (Bellfruit) (Black Box) (10p Stake, £2 Jackpot) + + + bb_spinu + Spin Up (CTL) (Black Box) (10p Stake, £3 Jackpot) + + + bb_upndn + Upstairs 'N' Downstairs (Bellfruit) (Black Box) (5p Stake, £1 Jackpot) + + + bb_upndna + Upstairs 'N' Downstairs (Bellfruit) (Black Box) (5p Stake, £1 Jackpot, all cash) + + + bbakradu + Battle Bakraid - Unlimited version (Japan) (Tue Jun 8 1999) + + + bbakraid + Battle Bakraid - Unlimited Version (USA) (Tue Jun 8 1999) + + + bbakraidc + Battle Bakraid - Unlimited Version (China) (Tue Jun 8 1999) + + + bbakraidj + Battle Bakraid - Unlimited Version (Japan) (Tue Jun 8 1999) + + + bbakraidja + Battle Bakraid (Japan) (Wed Apr 7 1999) + + + bballoon + BnB Arcade + + + bballrmt + Baseball (Ramtek) + + + bballs + Bouncing Balls + + + bballsa + Bouncing Balls (Adult) + + + bbb108 + Big Bang Bar (Beta 1.8 US) + + + bbb109 + Big Bang Bar (Beta 1.9 US) + + + bbbingo + Bin Bin Bingo (Japan, main unit) + + + bbbingot + Bin Bin Bingo (Japan, terminal) + + + bbbowlin + Big Ball Bowling (Bowler) + + + bbbxing + Best Bout Boxing (ver 1.3) + + + bbchall + Baby Boom Challenge + + + bbeltzac + Black Belt (Zaccaria) + + + bbeltzacf + Black Belt (Zaccaria, French speech) + + + bbeltzacg + Black Belt (Zaccaria, German speech) + + + bbeltzaci + Black Belt (Zaccaria, Italian speech) + + + bbh + Big Buck Hunter (v1.00.14) + + + bbh2sp + Big Buck Hunter II - Sportsman's Paradise (v2.02.11) + + + bbh2spa + Big Buck Hunter II - Sportsman's Paradise (v2.02.09) + + + bbh2spb + Big Buck Hunter II - Sportsman's Paradise (v2.02.08) + + + bbh_140 + Big Buck Hunter Pro v1.40 + + + bbh_150 + Big Buck Hunter Pro v1.50 + + + bbh_160 + Big Buck Hunter Pro v1.60 + + + bbhcotw + Big Buck Hunter Call of the Wild (v3.02.5) + + + bbhsc + Big Buck Hunter - Shooter's Challenge (v1.60.01) + + + bbhsca + Big Buck Hunter - Shooter's Challenge (v1.50.07) + + + bbmanw + Bomber Man World / New Dyna Blaster - Global Quest + + + bbmanwj + Bomber Man World (Japan) + + + bbmanwja + Bomber Man World (Japan, revised sound hardware) + + + bbnny_l2 + Bugs Bunny Birthday Ball (L-2) + + + bbnny_lg + Bugs Bunny Birthday Ball (LG-2) German + + + bbnny_lu + Bugs Bunny Birthday Ball (LU-2) European + + + bbombo + Baby & Bombo + + + bbonk + Bigfoot Bonkers + + + bbprot + unknown fighting game 'BB' (prototype) + + + bbredux + Bubble Bobble ('bootleg redux' hack for Bobble Bobble PCB) + + + bbros + Buster Bros. (USA) + + + bbust2 + Beast Busters: Second Nightmare + + + bbusters + Beast Busters (World) + + + bbustersj + Beast Busters (Japan, Version 2, 3 Player) + + + bbustersja + Beast Busters (Japan, Version 2, 2 Player) + + + bbustersu + Beast Busters (US, Version 3) + + + bbustersua + Beast Busters (US, Version 2) + + + bcats_g4 + Bad Cats (LG-4) + + + bcats_l2 + Bad Cats (LA-2) + + + bcats_l5 + Bad Cats (L-5) + + + bchance + Bonne Chance! (French/English) + + + bchancep + Bonne Chance! (Golden Poker prequel HW, set 1) + + + bchanceq + Bonne Chance! (Golden Poker prequel HW, set 2) + + + bchopper + Battle Chopper (World) + + + bcrusher + Bone Crusher + + + bcruzm12 + Battle Cruiser M-12 + + + bcstry + B.C. Story (set 1) + + + bcstrya + B.C. Story (set 2) + + + bdk_130 + Batman - The Dark Knight v1.30 + + + bdk_150 + Batman - The Dark Knight v1.50 + + + bdk_160 + Batman - The Dark Knight v1.60 + + + bdk_200 + Batman - The Dark Knight v2.00 + + + bdk_210 + Batman - The Dark Knight v2.10 + + + bdk_220 + Batman - The Dark Knight v2.20 + + + bdk_290 + Batman - The Dark Knight v2.90 + + + bdk_294 + Batman - The Dark Knight v2.94 + + + bdrdown + Border Down (Rev A) (GDL-0023A) + + + bdream97 + Hudie Meng 97 + + + beachpt + Beach Patrol (Russia) (Atronic) + + + beachspi + Beach Spikers (GDS-0014) + + + beaminv + Beam Invader + + + bearnec + Bear Necessities (Russia) (Atronic) + + + beast + Shadow of the Beast (Neo Geo demo) + + + beastf + Beastie Feastie + + + beastfp + Beastie Feastie (Pac-Man conversion) + + + beastrzb + Beastorizer (bootleg) + + + beastrzr + Beastorizer (USA, Sep 22 1997) + + + beastrzra + Beastorizer (USA, Jun 21 1997) + + + beastrzrb + Beastorizer (USA bootleg) + + + beatclck + Beat the Clock + + + beatclck2 + Beat the Clock (with flasher support) + + + beathead + BeatHead (prototype) + + + beautyb + Beauty Block + + + beavbuk + Beaver Bucks (20255111, NSW/ACT) + + + beebop + Bee Bop (set 1) + + + beebopa + Bee Bop (set 2) + + + beebopb + Bee Bop (set 3) + + + beebopc + Bee Bop (set 4) + + + beebopd + Bee Bop (set 5) + + + beebope + Bee Bop (set 6) + + + beeline + Beeline (39-360-075) + + + beetlem + Beetlemania (set 1) + + + beetlema + Beetlemania (set 2) + + + beetlemb + Beetlemania (set 3) + + + beetlemc + Beetlemania (set 4) + + + beetlemd + Beetlemania (set 5) + + + beetleup + Beetles Unplugged (Russia) (Atronic) + + + beezer + Beezer (version 9.0) + + + beezer1 + Beezer (unknown earlier version) + + + beezerk + Bee-Zerk + + + begas + Bega's Battle (Revision 3) + + + begas1 + Bega's Battle (Revision 1) + + + bejpoker + Bonanza's Joker Poker + + + bel + Behind Enemy Lines + + + bellring + Bell Ringer + + + bellstr1 + Bell-Star+ 5 (Vip2 v.3.6.02) + + + bellstr2 + Bell-Star+ (Vip2 v.25.02.02) + + + bellstr3 + Bell-Star+ (Vip2 v.30.1.02) + + + bellstrp + Bell Star Plus + + + bellybmbr + Belly Bomber + + + belslots + Bel Slots Export (5.01) + + + benberob + Ben Bero Beh (Japan) + + + berabohm + Chou Zetsurinjin Berabowman (Japan, Rev C) + + + berabohmb + Chou Zetsurinjin Berabowman (Japan, Rev B) + + + beraboho + Beraboh Man (Japan version B) + + + berenstn + The Berenstain Bears in Bigpaw's Cave + + + berlwall + The Berlin Wall + + + berlwallk + The Berlin Wall (Korea) + + + berlwallt + The Berlin Wall (bootleg?) + + + berlwalt + The Berlin Wall (set 2) + + + bermudaa + Bermuda Triangle (US older version) + + + bermudao + Bermuda Triangle (Japan old version) + + + bermudat + Bermuda Triangle (World?) + + + bermudata + Bermuda Triangle (World Wars) (US) + + + bermudatj + Bermuda Triangle (Japan) + + + berzerk + Berzerk (revision RC31A) + + + berzerk1 + Berzerk (set 2) + + + berzerka + Berzerk (revision RC31) + + + berzerkb + Berzerk (revision RC28) + + + berzerkf + Berzerk (French Speech, revision RC31) + + + berzerkg + Berzerk (German Speech, revision RC32) + + + berzerks + Berzerk (Spanish Speech, revision RC32) + + + bestbest + Best Of Best + + + bestleag + Best League (bootleg of Big Striker, Italian Serie A) + + + bestleaw + Best League (bootleg of Big Striker, World Cup) + + + bestri + Bestri (Korea, set 1) + + + bestria + Bestri (Korea, set 2) + + + betafrce + Beta Force + + + betzoo + Betting Zoo - Mr. Cashman (0251064, US) + + + bformula2 + Baby Formula 2 + + + bg_barmy + Barmy Army + + + bg_dbells + Dancing Bells + + + bg_ddb + Ding Dong Bells (B Gaming Technology) + + + bg_max + Max A Million (set 1) + + + bg_maxa + Max A Million (set 2) + + + bgaregga + Battle Garegga (Europe / USA / Japan / Asia) (Sat Feb 3 1996) + + + bgareggabl + 1945 Er Dai / 1945 Part-2 (Chinese hack of Battle Garegga) + + + bgareggabla + Leishen Chuan / Thunder Deity Biography (Chinese hack of Battle Garegga) + + + bgareggablj + Battle Garegga (Japan, bootleg) (Sat Feb 3 1996) + + + bgareggacn + Battle Garegga - Type 2 (Denmark / China) (Tue Apr 2 1996) + + + bgareggahk + Battle Garegga (Austria / Hong Kong) (Sat Feb 3 1996) + + + bgareggak + Battle Garegga (Korea / Greece) (Wed Feb 7 1996) + + + bgaregganv + Battle Garegga - New Version (Austria / Hong Kong) (Sat Mar 2 1996) + + + bgareggat + Battle Garegga (location test) (Wed Jan 17 1996) + + + bgareggat2 + Battle Garegga - Type 2 (Europe / USA / Japan / Asia) (Sat Mar 2 1996) + + + bgareggatw + Battle Garegga (Taiwan / Germany) (Thu Feb 1 1996) + + + bgareggaz + Battle Garegga Zakk version (Europe / USA / Japan / Asia) (Sat Feb 3 1996) + + + bgbasketb + Basketball (Benchmark Games, set 1) + + + bgbasketbb + Basketball (Benchmark Games, set 2) + + + bguns_l7 + Big Guns (L-7) + + + bguns_l8 + Big Guns (L-8) + + + bguns_la + Big Guns (L-A) + + + bguns_p1 + Big Guns (P-1) + + + bhead2k + Beach Head 2000 Install - 05/27/03 + + + bhead2k2 + Beach Head 2002 Install - 05/27/03 + + + bhead2k3 + Beach Head 2003 Desert War Install - 05/27/03 + + + bhead2ka + Beach Head 2000 Install - 09/16/01 + + + bhol_ltd + Black Hole (LTD) + + + big10 + Big 10 (1985, Success) + + + big10a + Big 10 (1986, System Make) + + + bigappg + The Big Apple (2131-13, U5-0) + + + bigbang + Big Bang (9th Nov. 1993, set 1) + + + bigbanga + Big Bang (9th Nov. 1993, set 2) + + + bigbat + Big Bat (Bat game) + + + bigben + Big Ben (30126911, NSW/ACT) + + + bigbena + Big Ben (20126911, NSW/ACT) + + + bigbenb + Big Ben (10169611, ASP) + + + bigbenq + Big Ben (20201111, Queensland) + + + bigblue + Big Blue (Russia) (Atronic) + + + bigbucks + Big Bucks + + + bigcsino + Big Casino + + + bigdeal + Big Deal (Hungarian, set 1) + + + bigdeal0 + Big Deal Belgien (5.04) + + + bigdealb + Big Deal (Hungarian, set 2) + + + bigevglf + Big Event Golf (US) + + + bigevglfj + Big Event Golf (Japan) + + + bigfghtr + Tatakae! Big Fighter (Japan) + + + bigfight + Big Fight - Big Trouble In The Atlantic Ocean + + + bigfightj + Big Fight - Big Trouble In The Atlantic Ocean (Japan, rev F) + + + biggame + Big Game + + + bigheart + Big Hearted (10000511, NSW/ACT) + + + bighouse + Big House + + + bighousef + Big House (French) + + + bighouseg + Big House (German) + + + bighurt + Frank Thomas' Big Hurt (rev.3) + + + bigjoke + The Big Joke (Version 0.00) + + + bigkarnk + Big Karnak (ver. 1.0, checksum 1e38c94) + + + bigkarnkm + Big Karnak (Modular System) + + + bigkong + Big Kong + + + bigkonggx + Big Kong (bootleg of Crazy Kong on Galaxian hardware) + + + bigprowr + The Big Pro Wrestling! (set 1) + + + bigprowra + The Big Pro Wrestling! (set 2) + + + bigred + Big Red (2J009211, NSW/ACT) + + + bigred2 + Big Red 2 (5J011311, NSW/ACT) + + + bigreda + Big Red (1J009211, NSW/ACT) + + + bigrun + Big Run (11th Rallye version, Europe?) + + + bigrunu + Big Run (11th Rallye version, US?) + + + bigstrik + Big Striker + + + bigstrkb + Big Striker (bootleg) + + + bigstrkba + Big Striker (bootleg w/Italian teams) + + + bigtown + Big Town + + + bigtwin + Big Twin + + + bigtwinb + Big Twin (No Girls Conversion) + + + bijokkog + Bijokko Gakuen (Japan 880116) + + + bijokkoy + Bijokko Yume Monogatari (Japan 870925) + + + bikerace + Bike Race + + + bikerace2 + Bike Race (2-ball play) + + + bikiniko + BiKiNikko - Okinawa de Ippai Shichaimashita (Japan) + + + bikkuri + Bikkuri Pro Wrestling (Japan 881221, Ver 1.05) + + + bikkuric + Bikkuri Card (Japan) + + + biliard + New Biliard 98 (Pool 10 hack) + + + billiard + The Billiards (bootleg of Video Hustler) + + + billlist + Billard List + + + bilyard + Billiard + + + bingo + Bingo + + + bingo75 + Bingo 75 + + + bingoc + Bingo Circus (Rev. A 891001) + + + bingogal + Bingo Galaxy (main) + + + bingogalo + Bingo Galaxy (main) (MDA-C0039A) + + + bingogals + Bingo Galaxy (satellite) + + + bingoman + Bingo Mania (P03-P07-P14) + + + bingomana + Bingo Mania (A03) + + + bingopar + Bingo Parade (main) (MDA-C0008E) + + + bingopd + Paradise (Industrias Brasileiras, Version 1.04) + + + bingor1 + Bingo Roll / Bell Star? (set 1) + + + bingor2 + Bingo Roll / Bell Star? (set 2) + + + bingor3 + Bingo Roll / Bell Star? (set 3) + + + bingor4 + Bingo Roll / Bell Star? (set 4) + + + bingor5 + Bingo Roll / Bell Star V3? (set 5) + + + bingor6 + Bingo Roll / Turbo Bingo? + + + bingor7 + Bingo Roll (209 / 19-1-95) + + + bingor8 + Bingo Roll 2001 (v22.1) + + + bingor9 + Bingo Roll (Vip2 v26.02.02) + + + bingowav + Bingo Wave + + + bingowng + Bingo (set 1) + + + bingownga + Bingo (set 2) + + + bingplnt + Bingo Planet (Rev C) (M1 Satellite board) + + + bingpty + Bingo Party Multicart (Rev B) (M1 Satellite board) + + + bioatack + Bio Attack + + + biofreak + Bio F.R.E.A.K.S (prototype, boot ROM 0.1i) + + + biomtoy + Biomechanical Toy (ver. 1.0.1885, checksum 69f5e032) + + + biomtoya + Biomechanical Toy (ver. 1.0.1884, checksum 3f316c70) + + + biomtoyb + Biomechanical Toy (ver. 1.0.1878, checksum d84b28ff) + + + biomtoyc + Biomechanical Toy (ver. 1.0.1870, checksum ba682195) + + + bionicc + Bionic Commando (Euro) + + + bionicc1 + Bionic Commando (US set 1) + + + bionicc2 + Bionic Commando (US set 2) + + + bioniccbl + Bionic Commandos (bootleg, set 1) + + + bioniccbl2 + Bionic Commandos (bootleg, set 2) + + + bioplayc + Bioplaything Cop (ver. 1.0.1823, checksum cd960fc9, prototype) + + + bioship + Bio-ship Paladin + + + biplane + Biplane + + + biplane4 + Biplane 4 + + + birdiy + Birdiy + + + birdtry + Birdie Try (Japan, revision 2, revision 1 MCU) + + + birdtrya + Birdie Try (Japan, revision 2) + + + birdtryb + Birdie Try (Japan, sample version) + + + bishi + Bishi Bashi Champ Mini Game Senshuken (ver JAA, 3 Players) + + + bishjan + Bishou Jan (Japan, Ver. 203) + + + bj92 + Black Jack (Irem, satellite unit, rev. T) + + + bjourney + Blue's Journey / Raguy (ALM-001 ~ ALH-001) + + + bjourneyh + Blue's Journey / Raguy (ALH-001) + + + bjpoker + Poker / Black Jack (Model 7521) + + + bjtwin + Bombjack Twin (set 1) + + + bjtwina + Bombjack Twin (set 2) + + + bjtwinp + Bombjack Twin (prototype? with adult pictures, set 1) + + + bjtwinpa + Bombjack Twin (prototype? with adult pictures, set 2) + + + bk2k_l4 + Black Knight 2000 (L-4) + + + bk2k_la2 + Black Knight 2000 (LA-2) + + + bk2k_lg1 + Black Knight 2000 (LG-1) + + + bk2k_lg3 + Black Knight 2000 (LG-3) + + + bk2k_pa5 + Black Knight 2000 (PA-5) + + + bk2k_pa7 + Black Knight 2000 (PA-7) + + + bk2k_pf1 + Black Knight 2000 (PF-1) + + + bk2k_pu1 + Black Knight 2000 (PU-1) + + + bk3ssrmb + Bare Knuckle III / Sunset Riders (scrambled bootleg of Mega Drive versions) + + + bk_f4 + Black Knight (L-4, French speech) + + + bk_l2 + Black Knight (L-2) + + + bk_l3 + Black Knight (L-3) + + + bk_l4 + Black Knight (L-4) + + + bking + Birdie King + + + bking2 + Birdie King 2 + + + bking3 + Birdie King 3 + + + bkrtmaq + Bakuretsu Quiz Ma-Q Dai Bouken (Japan) + + + bktigerb + Black Tiger (bootleg) + + + bkungfu + Beyond Kung-Fu (location test) + + + black + Czernyj Korabl (Arcade bootleg of ZX Spectrum 'Blackbeard') + + + black100 + Blackwater 100 + + + black100s + Blackwater 100 (Single Ball Play) + + + blackbd + Black Beard (Russia, set 1) + + + blackbda + Black Beard (Russia, set 2) + + + blackbdb + Black Beard (Russia, set 3) + + + blackbdu + Black Beard (US.00, 2005/03/14) + + + blackblt + Black Belt + + + blackblt2 + Black Belt (Squawk and Talk) + + + blackhol + Black Hole (EFG Sanremo) + + + blackjck + Black Jack (Pinball) + + + blackpnt + Black Panther (0200818V, Victoria) + + + blackpntu + Black Panther (FHG0949-01, US) + + + blackt96 + Black Touch '96 + + + bladestl + Blades of Steel (version T, Joystick) + + + bladestle + Blades of Steel (version E, Trackball) + + + bladestll + Blades of Steel (version L, Trackball) + + + bladstle + Blades of Steel (version E) + + + blakpyra + Black Pyramid + + + blandia + Blandia + + + blandiap + Blandia (prototype) + + + blasted + Blasted + + + blaster + Blaster + + + blasterkit + Blaster (conversion kit) + + + blastero + Blaster (location test) + + + blastkit + Blaster (kit) + + + blasto + Blasto + + + blastoff + Blast Off (Japan) + + + blazeon + Blaze On (World) + + + blazeonj + Blaze On (Japan) + + + blazer + Blazer (Japan) + + + blazlaz + Blazing Lazers (United Amusements PC Engine) + + + blazstar + Blazing Star + + + blazstarcm + Blazing Star (Stage Select Hack) + + + blbeauty + Black Beauty (Shuffle) + + + blckgalb + Block Gal (bootleg) + + + blckhole + Black Hole (Rev. 4) + + + blckhole2 + Black Hole (Rev. 2) + + + blckhols + Black Hole (Sound Only) + + + blckjack + Black Jack (InterFlip) + + + blckout2 + Block Out (set 2) + + + blckoutj + Block Out (Japan) + + + bldwolf + Bloody Wolf (US) + + + bldwolfj + Narazumono Sentoubutai Bloody Wolf (Japan) + + + bldyr3b + Bloody Roar 3 (bootleg) + + + bldyroar + Bloody Roar (Japan, Jun 21 1997) + + + bldyrolr + Bloody Roller + + + bldyror2 + Bloody Roar 2 (World) + + + bldyror2a + Bloody Roar 2 (Asia) + + + bldyror2j + Bloody Roar 2 (Japan) + + + bldyror2u + Bloody Roar 2 (USA) + + + blicks + Blicks (Japan) + + + blitz + NFL Blitz (ver 1.21, Dec 5 1997) + + + blitz2k + NFL Blitz 2000 Gold Edition (ver 1.2, Sep 22 1999) + + + blitz99 + NFL Blitz '99 (ver 1.30, Sep 22 1998) + + + blitz99a + NFL Blitz '99 (ver 1.2, Aug 28 1998) + + + blkbrum + Black Brumby (1J009111, NSW/ACT) + + + blkbustr + BlockBuster + + + blkdrgon + Black Dragon (Japan) + + + blkdrgonb + Black Dragon (bootleg) + + + blkfever + Black Fever + + + blkhearj + Black Heart (Japan) + + + blkheart + Black Heart + + + blkheartj + Black Heart (Japan) + + + blkhole + Black Hole + + + blkmust + Black Mustang (0152584, US) + + + blkou_f1 + Blackout (L-1, French Speech) + + + blkou_l1 + Blackout (L-1) + + + blkou_t1 + Blackout (T-1) + + + blkpnthr + Black Panther + + + blkrhino + Black Rhino (4VXFC830, NSW) + + + blkrhinonz + Black Rhino (3VXFC5344, New Zealand) + + + blkrose + Black Rose Rapid Fire Grand Prix (Konami Endeavour, Queensland) + + + blkshpsq + Black Sheep Squadron + + + blktch2 + Black Touch II (Korea) + + + blktiger + Black Tiger + + + blktigera + Black Tiger (older) + + + blktigerb1 + Black Tiger (bootleg set 1) + + + blktigerb2 + Black Tiger (bootleg set 2) + + + blktigerb3 + Black Tiger / Black Dragon (mixed bootleg?) + + + blktigerm + Black Tiger (Modular System) + + + blktouch + Black Touch (Korea) + + + blmbycar + Blomby Car (Version 1P0) + + + blmbycaru + Blomby Car (Version 1P0, not encrypted) + + + blmbycau + Blomby Car (not encrypted) + + + block + Block Block (World 911219 Joystick) + + + block2 + Block 2 (S.P.A. Co. bootleg) + + + blocka + Block Block (World 910910) + + + blockade + Blockade + + + blockbl + Block Block (bootleg) + + + blockcar + Block Carnival / Thunder & Lightning 2 + + + blockcarb + Block Carnival / Thunder & Lightning 2 (bootleg) + + + blockch + G.T. Block Challenger + + + blocken + Blocken (Japan) + + + blockgal + Block Gal (MC-8123B, 317-0029) + + + blockgalb + Block Gal (bootleg) + + + blockhl + Block Hole + + + blockj + Block Block (Japan 910910) + + + blockout + Block Out (set 1) + + + blockout2 + Block Out (set 2) + + + blockout3 + Block Out (Europe and Oceania) + + + blockoutj + Block Out (Japan) + + + blockr1 + Block Block (World 911106 Joystick) + + + blockr2 + Block Block (World 910910) + + + blocktax + Blockout (TAX) + + + blokpong + Block Pong-Pong + + + bloodbro + Blood Bros. (World?) + + + bloodbroj + Blood Bros. (Japan, rev A) + + + bloodbroja + Blood Bros. (Japan) + + + bloodbrok + Blood Bros. (Korea) + + + bloodbrom + Blood Bros. (Modular System) + + + bloodbrou + Blood Bros. (US) + + + bloods11 + Blood Storm (v1.10) + + + bloods21 + Blood Storm (v2.10) + + + bloods22 + Blood Storm (v2.20) + + + bloodstm + Blood Storm (v2.22) + + + bloodstm104 + Blood Storm (v1.04) + + + bloodstm110 + Blood Storm (v1.10) + + + bloodstm210 + Blood Storm (v2.10) + + + bloodstm220 + Blood Storm (v2.20) + + + bloodstm221 + Blood Storm (v2.21) + + + bloodwar + Blood Warrior + + + bloto + Blits Loto (Ukraine, V. 30.16) + + + blotoa + Blits Loto (Ukraine, V. 30.08) + + + blox16b + Bloxeed (System 16B, PS2 data file) + + + bloxeed + Bloxeed (Japan) (FD1094 317-0139) + + + bloxeeda + Bloxeed (Japan, earlier) (FD1094 317-0139) + + + bloxeedbl + Bloxeed (bootleg) + + + bloxeedc + Bloxeed (World, C System) + + + bloxeedd + Bloxeed (Japan) (bootleg of FD1094 317-0139 set) + + + bloxeedu + Bloxeed (US, C System, Rev A) + + + blpearl + Black Pearl (Ukraine, V. 45.02) + + + blpearla + Black Pearl (Ukraine, V. 43.07) + + + blpearlb + Black Pearl (Ukraine, V. 43.04) + + + blpearlc + Black Pearl (Ukraine, V. 42.03) + + + blpearld + Black Pearl (Ukraine, V. 42.01) + + + blshark + Blue Shark (MDS Hellas) + + + blsthead + Blasteroids (with heads) + + + blstroi2 + Blasteroids (rev 2) + + + blstroi3 + Blasteroids (rev 3) + + + blstroid + Blasteroids (rev 4) + + + blstroid2 + Blasteroids (rev 2) + + + blstroid3 + Blasteroids (rev 3) + + + blstroidg + Blasteroids (German, rev 2) + + + blstroidh + Blasteroids (with heads) + + + blstroig + Blasteroids (German, rev 2) + + + blswhstl + Bells & Whistles (World, version L) + + + blswhstla + Bells & Whistles (Asia, version M) + + + bluehawk + Blue Hawk + + + bluehawkn + Blue Hawk (Japan, NTC license) + + + bluehawn + Blue Hawk (NTC) + + + blueprnj + Blue Print (Jaleco) + + + blueprnt + Blue Print (Midway) + + + blueprntj + Blue Print (Jaleco) + + + blueshrk + Blue Shark + + + blueshrkmr + Blue Shark (Model Racing bootleg, set 1) + + + blueshrkmr2 + Blue Shark (Model Racing bootleg, set 2) + + + bluetigr + Blue Tiger (20259511, NSW/ACT) + + + blvelvet + Black Velvet + + + blzntrnd + Blazing Tornado + + + bm1stmix + beatmania (ver JA-B) + + + bm2ndmix + beatmania 2nd MIX (ver JA-B) + + + bm2ndmxa + beatmania 2nd MIX (ver JA-A) + + + bm3 + Beatmania III + + + bm36th + Beatmania III Append 6th Mix + + + bm37th + Beatmania III Append 7th Mix + + + bm3core + Beatmania III Append Core Remix + + + bm3final + Beatmania III The Final + + + bm3rdeaa + beatmania 3rd MIX (ver EA-A) + + + bm3rdmix + beatmania 3rd MIX (ver JA-A) + + + bm4thmix + beatmania 4th MIX (ver JA-A) + + + bm5thmix + beatmania 5th MIX (ver JA-A) + + + bm6thmix + beatmania 6th MIX (ver JA-A) + + + bm7thmix + beatmania 7th MIX (ver JA-B) + + + bmanroul + Bomberman Misobon Roulette (961028 JPN) + + + bmaster + Blade Master (World) + + + bmbugs + Bumble Bugs (0351180, US) + + + bmcbowl + Konkyuu no Hoshi + + + bmclubmx + beatmania Club MIX (ver JA-A) + + + bmcmxaac + beatmania complete MIX (ver AA-C) + + + bmcompm2 + beatmania complete MIX 2 (ver JA-A) + + + bmcompmx + beatmania complete MIX (ver JA-C) + + + bmcompmxb + beatmania complete MIX (ver JA-B) + + + bmcorerm + beatmania CORE REMIX (ver JA-A) + + + bmcpokr + Dongfang Shenlong + + + bmdct + beatmania featuring Dreams Come True (ver JA-A) + + + bmf_at + Batman Forever (Austrian) + + + bmf_be + Batman Forever (Belgian) + + + bmf_ch + Batman Forever (Swiss) + + + bmf_cn + Batman Forever (Canadian) + + + bmf_de + Batman Forever (German) + + + bmf_fr + Batman Forever (French) + + + bmf_it + Batman Forever (Italian, 4.0, Nov. 1 1995, Display Rev. 4.01) + + + bmf_ita + Batman Forever (Italian, 4.0, Sept. 26 1995, Display Rev. 4.00) + + + bmf_itb + Batman Forever (Italian, 4.0, Sept. 26 1995, Display Rev. 4.00, earlier sound ROM) + + + bmf_jp + Batman Forever (Japanese) + + + bmf_nl + Batman Forever (Dutch, 4.0) + + + bmf_nl302 + Batman Forever (Dutch, 3.02) + + + bmf_no + Batman Forever (Norwegian) + + + bmf_sp + Batman Forever (Spanish) + + + bmf_sv + Batman Forever (Swedish) + + + bmf_time + Batman Forever (Timed Play) + + + bmf_uk + Batman Forever (English) + + + bmfinal + beatmania THE FINAL (ver JA-A) + + + bmiidx + beatmania IIDX (863 JAB) + + + bmiidx2 + beatmania IIDX 2nd style (GC985 JAA) + + + bmiidx3 + beatmania IIDX 3rd style (GC992 JAC) + + + bmiidx3a + beatmania IIDX 3rd style (GC992 JAA) + + + bmiidx3b + beatmania IIDX 3rd style (GC992 JAB) + + + bmiidx4 + beatmania IIDX 4th style (GCA03 JAA) + + + bmiidx5 + beatmania IIDX 5th style (GCA17 JAA) + + + bmiidx6 + beatmania IIDX 6th style (GCB4U JAB) + + + bmiidx6a + beatmania IIDX 6th style (GCB4U JAA) + + + bmiidx7 + beatmania IIDX 7th style (GCB44 JAB) + + + bmiidx7a + beatmania IIDX 7th style (GCB44 JAA) + + + bmiidx8 + beatmania IIDX 8th style (GCC44 JAA) + + + bmiidxa + beatmania IIDX (863 JAA) + + + bmiidxc + beatmania IIDX with DDR 2nd Club Version (896 JAB) + + + bmiidxc2 + beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM) + + + bmiidxca + beatmania IIDX with DDR 2nd Club Version (896 JAA) + + + bmiidxs + beatmania IIDX Substream (983 JAA) + + + bmiidxsa + beatmania IIDX Substream (983-AA JAA) + + + bmoonii + Blue Moon II + + + bmx + BMX + + + bmxstunts + BMX Stunts + + + bnglngby + Vs. Raid on Bungeling Bay (RD4-2 B) + + + bngotime + Bingo Time + + + bnj + Bump 'n' Jump + + + bnjm + Bump 'n' Jump (Midway) + + + bnstars + Vs. Janshi Brandnew Stars (Ver 1.1, MegaSystem 32 Version) + + + bnstars1 + Vs. Janshi Brandnew Stars + + + bnstlkr + Bonus Talker + + + bntyhunt + Bounty Hunter (GC-Tech Co., LTD) + + + bnzabros + Bonanza Bros (US, Floppy DS3-5000-07d? Based) + + + bnzabrosj + Bonanza Bros (Japan, Floppy DS3-5000-07b Based) + + + bnzai_g3 + Banzai Run (L-3) Germany + + + bnzai_l1 + Banzai Run (L-1) + + + bnzai_l3 + Banzai Run (L-3) + + + bnzai_pa + Banzai Run (P-A) + + + boasorte + Boa Sorte! (Golden Poker prequel HW) + + + boatrace + Exciting Boat Race + + + bobdolly + Bob and Dolly (0352298, US) + + + boblbobl + Bobble Bobble (bootleg of Bubble Bobble) + + + boblcave + Bubble Bobble: Lost Cave V1.2 (for Bobble Bobble PCB) + + + bodyslam + Body Slam (8751 317-0015) + + + bogeyman + Bogey Manor + + + boggy84 + Boggy '84 + + + boggy84b + Boggy '84 (bootleg, set 1) + + + boggy84b2 + Boggy '84 (bootleg, set 2) + + + bolsaint + Bolsa Internacional (euro) + + + bombaway + Bombs Away + + + bombbee + Bomb Bee + + + bomber + Bomber (bootleg of Scramble) + + + bombjac2 + Bomb Jack (set 2) + + + bombjack + Bomb Jack + + + bombjack2 + Bomb Jack (earlier) + + + bombjackbl + Bomb Jack (bootleg) + + + bombjackt + Bomb Jack (Tecfri, Spain) + + + bombkick + Bomb Kick (set 1) + + + bombkicka + Bomb Kick (set 2) + + + bomblord + Bomber Lord (bootleg) + + + bombrman + Bomber Man (Japan) + + + bombsa + Bombs Away (prototype) + + + bonanza + Touchstar Bonanza (Revision 3) + + + bonanzar2 + Touchstar Bonanza (Revision 2) + + + bonebstr + Bone Busters Inc. + + + bonebstrf + Bone Busters Inc. (French) + + + bonebstrg + Bone Busters Inc. (German) + + + bongo + Bongo + + + bongog + Bongo (Galaxian hardware) + + + bonkadv + B.C. Kid / Bonk's Adventure / Kyukyoku!! PC Genjin + + + bonkadva + Bonk's Adventure (prototype) + + + bonusch + Bonus Chance (W-8, set 1) + + + bonuscha + Bonus Chance (W-8, set 2) + + + bonuscrd + Bonus Card (German) + + + bonuscrda + Bonus Card (German, ATG Electronic hack) + + + bonuspkr + Bonus Poker + + + bonusstage + Bonus Stage (HB) + + + bonzeadu + Bonze Adventure (US) + + + bonzeadv + Bonze Adventure (World, rev 1) + + + bonzeadvo + Bonze Adventure (World) + + + bonzeadvp + Bonze Adventure (World, prototype, newer) + + + bonzeadvp2 + Bonze Adventure (World, prototype, older) + + + bonzeadvu + Bonze Adventure (US, rev 1) + + + boo1000 + Boo 1000 + + + boobhack + Booby Kids (Italian manufactured graphic hack / bootleg of Kid no Hore Hore Daisakusen (bootleg)) + + + boobood + Boo Boo Donpatchi (Japan, ver 1.01) + + + boogwing + Boogie Wings (Europe v1.5, 92.12.07) + + + boogwinga + Boogie Wings (Asia v1.5, 92.12.07) + + + boogwingu + Boogie Wings (USA v1.7, 92.12.14) + + + bookra + Book Of Ra (set 1) + + + bookthr + Book Theatre (Ver 1.2) + + + boomrang + Boomer Rang'r / Genesis (set 1) + + + boomranga + Boomer Rang'r / Genesis (set 2) + + + boonggab + Boong-Ga Boong-Ga (Spank'em!) + + + bootcamp + Boot Camp (set 1) + + + bootcampa + Boot Camp (set 2) + + + boothill + Boot Hill + + + bootsctn + Boot Scootin' (0100812V, NSW/ACT) + + + bootsctnu + Boot Scootin' (AHG1547, US) + + + bootsctnua + Boot Scootin' (AHG1433, US) + + + bootsctnub + Boot Scootin' (GHG1012-02, US) + + + bootsctnuc + Boot Scootin' (GHG1012-01, US) + + + bootsctnud + Boot Scootin' (GHG1008-03, US) + + + bop_l2 + The Machine: Bride of Pinbot (L-2) + + + bop_l3 + The Machine: Bride of Pinbot (L-3) + + + bop_l4 + The Machine: Bride of Pinbot (L-4) + + + bop_l5 + The Machine: Bride of Pinbot (L-5) + + + bop_l6 + The Machine: Bride of Pinbot (L-6) + + + bop_l7 + The Machine: Bride of Pinbot (L-7) + + + borench + Borench (set 1) + + + borencha + Borench (set 2) + + + borenchj + Borench (Japan) + + + borntofi + Born To Fight (set 1) + + + borntofia + Born To Fight (set 2) + + + borntofiv + Born To Fight (Vifico license) + + + bosco + Bosconian - Star Destroyer (version 5) + + + bosco1 + Bosconian - Star Destroyer (version 1, newer) + + + bosco1o + Bosconian - Star Destroyer (version 1, older) + + + bosco3 + Bosconian - Star Destroyer (version 3) + + + boscomd + Bosconian - Star Destroyer (Midway, new version) + + + boscomdo + Bosconian - Star Destroyer (Midway, old version) + + + boscoo + Bosconian (old version) + + + boscoo2 + Bosconian (older version) + + + botanic + Botanic (English / Spanish) + + + botanic2 + Botanic (English / Spanish, Bagman conversion) + + + botanicf + Botanic (French) + + + botss + Battle of the Solar System (rev. 1.1a 7/23/92) + + + botss11 + Battle of the Solar System (rev. 1.1 3/24/92) + + + bottl10b + Bottle 10 (Italian, set 2) + + + bottle10 + Bottle 10 (Italian, set 1) + + + bottom9 + Bottom of the Ninth (version T) + + + bottom9n + Bottom of the Ninth (version N) + + + bouldash + Boulder Dash / Boulder Dash Part 2 (World) + + + bouldashj + Boulder Dash / Boulder Dash Part 2 (Japan) + + + bouldshj + Boulder Dash - Boulder Dash Part 2 (Japan) + + + bounty + The Bounty (set 1) + + + bounty2 + The Bounty (set 2) + + + bountyh + Bounty Hunter + + + bountyhg + Bounty Hunter (German) + + + bowarrow + Bow & Arrow (Prototype, rev. 23) + + + bowarrowa + Bow & Arrow (Prototype, rev. 22) + + + bowl3d + 3-D Bowling + + + bowler + Bowling Alley + + + bowlgum + Bowling Gum + + + bowlrama + Bowl-O-Rama (Rev 1.0) + + + bowlroad + Bowling Road (Ver 1.5) + + + bowlroad14 + Bowling Road (Ver 1.4) + + + bowlroad14n + Bowling Road (Ver 1.4, ND2001 hardware) + + + bowltry + Bowling Try! + + + bowmen + Bowmen + + + boxer + Boxer (prototype) + + + boxingb + Boxing Bugs + + + boxingm + Boxing Mania: Ashita no Joe (ver JAA) + + + boxyboy + Boxy Boy (World, SB2) + + + boxyboya + Boxy Boy (SB?) + + + bpanicdx + Block Panic DX (HB, ver. 20250101) + + + bparty + Bachelorette Party (BHG1248, US) + + + bpartya + Bachelorette Party (BHG1579, US) + + + bpartyb + Bachelorette Party (BHG1247, US) + + + bpoker + Video Poker (v1403) + + + br_l1 + Black Rose (L-1) + + + br_l3 + Black Rose (L-3) + + + br_l4 + Black Rose (L-4) + + + br_p17 + Black Rose (SP-1) + + + bradley + Bradley Trainer + + + brain + Brain + + + brapboys + B.Rap Boys (World) + + + brapboysj + B.Rap Boys Special (Japan) + + + brapboysp + B.Rap Boys Special (World, newer) + + + brapboysp2 + B.Rap Boys Special (World, older) + + + brapboyspj + B.Rap Boys Special (Japan) + + + brapboyspu + B.Rap Boys Special (US) + + + brasil + Bra$il (Version 3) + + + brasil86 + Brasil 86 + + + brasil87 + Brasil 87 + + + brasil89 + Brasil 89 (set 1) + + + brasil89a + Brasil 89 (set 2) + + + brasil93 + Brasil 93 + + + braveff + Brave Firefighters + + + brazil + Brazil (20180311, NSW/ACT) + + + brazila + Brazil (10218511, ASP) + + + brdrlinb + Borderline (Karateco bootleg) + + + brdrline + Borderline + + + brdrlinet + Borderline (Tranquillizer Gun conversion) + + + brdrlins + Borderline (Sidam bootleg) + + + break86 + Break '86 + + + breakers + Breakers + + + breakout + Breakout + + + breakrev + Breakers Revenge + + + breakrevbh + Breakers Revenge (Boss Hack) + + + breywood + Breywood (Japan revision 2) + + + brglitz + Ballroom Glitz + + + brhino + Black Rhino (IGT) + + + brickppl + Brick People / Block PeePoo (Ver 1.002) + + + brickyrd + Brickyard + + + brickzn + Brick Zone (v6.0, Joystick) + + + brickzn11 + Brick Zone (v1.1, Spinner) + + + brickzn3 + Brick Zone (v3.0) + + + brickznv4 + Brick Zone (v4.0, Spinner) + + + brickznv5 + Brick Zone (v5.0, Joystick) + + + brival + Burning Rival (World) + + + brivalj + Burning Rival (Japan) + + + brix + Brix + + + brixian + Brixian + + + brkball + Break Ball + + + brkblast + Brick Blast (bootleg of Wall Crash) + + + brkrevext + Breakers Revenge (Extra Mode, Hack) + + + brkrevjq + Breakers Revenge (Enhanced, Hack) + + + brkthru + Break Thru (US) + + + brkthrubl + Break Thru (bootleg) + + + brkthruj + Kyohkoh-Toppa (Japan) + + + brkthrut + Break Thru (Tecfri license) + + + brod + Brodjaga (Arcade bootleg of ZX Spectrum 'Inspector Gadget and the Circus of Fear') + + + bronx + Bronx + + + brooklyn + Brooklyn (set 1) (Bingo) + + + brooklyna + Brooklyn (set 2) (Bingo) + + + brooks + Brooks & Dunn (rev.T1) + + + brubber + Burnin' Rubber + + + brutforc + Brute Force + + + brvblade + Brave Blade (World) + + + brvbladea + Brave Blade (Asia) + + + brvbladeg + Brave Blade (VER 1.40G) + + + brvbladej + Brave Blade (Japan) + + + brvbladeu + Brave Blade (USA) + + + brvteam + Brave Team + + + bs4thmix + beatstage 4th MIX (ver KA-A) + + + bs94 + Buena Suerte '94 + + + bsb105 + Breakshot (Beta) + + + bscompmx + beatstage complete MIX (ver KA-B) + + + bsebman + Bomberman (Version 6.6) + + + bsebmanbl + Bomberman (Version 6.6, Avraam bootleg) + + + bsebmanbl2 + Bomberman (Version 6.6, J.T. bootleg) + + + bshark + Battle Shark (World) + + + bsharkj + Battle Shark (Japan) + + + bsharkjjs + Battle Shark (Japan, Joystick) + + + bsharku + Battle Shark (US) + + + bsktball + Atari Basketball + + + bsktbllp + Basket Ball + + + bsplash + Banana Splash (set 1) + + + bssoccer + Back Street Soccer (KRB-0031 PCB) + + + bssoccera + Back Street Soccer (KRB-0032A PCB) + + + bstars + Baseball Stars Professional (NGM-002) + + + bstars2 + Baseball Stars 2 + + + bstarsh + Baseball Stars Professional (NGH-002) + + + bstrk_l1 + Big Strike (Shuffle) (L-1) + + + bsuerte + Buena Suerte (Spanish, set 1) + + + bsuertea + Buena Suerte (Spanish, set 2) + + + bsuerteb + Buena Suerte (Spanish, set 3) + + + bsuertec + Buena Suerte (Spanish, set 4) + + + bsuerted + Buena Suerte (Spanish, set 5) + + + bsuertee + Buena Suerte (Spanish, set 6) + + + bsuertef + Buena Suerte (Spanish, set 7) + + + bsuerteg + Buena Suerte (Spanish, set 8) + + + bsuerteh + Buena Suerte (Spanish, set 9) + + + bsuertei + Buena Suerte (Spanish, set 10) + + + bsuertej + Buena Suerte (Spanish, set 11) + + + bsuertek + Buena Suerte (Spanish, set 12) + + + bsuertel + Buena Suerte (Spanish, set 13) + + + bsuertem + Buena Suerte (Spanish, set 14) + + + bsuerten + Buena Suerte (Spanish, set 15, Prodel PCB) + + + bsuerteo + Buena Suerte (Spanish, set 16) + + + bsuertep + Buena Suerte (Spanish, set 17) + + + bsuerteq + Buena Suerte (Spanish, set 18) + + + bsuerter + Buena Suerte (Spanish, set 19) + + + bsuertes + Buena Suerte (Spanish, set 20) + + + bsuertet + Buena Suerte (Spanish, set 21) + + + bsuerteu + Buena Suerte (Spanish, set 22) + + + bsuertev + Buena Suerte (Spanish/Portuguese, set 23) + + + bsuprem + Baby Suprem + + + bsv100r + Breakshot (Redemption 1.0) + + + bsv102 + Breakshot (1.2) + + + bsv102r + Breakshot (Redemption 1.2) + + + bsv103 + Breakshot (1.3) + + + btchamp + Beat the Champ (GV053 UAA01) + + + btime + Burger Time (Data East set 1) + + + btime2 + Burger Time (Data East set 2) + + + btime3 + Burger Time (Data East USA) + + + btimem + Burger Time (Midway) + + + btippers + Big Tippers (Russian) + + + btlecity + Vs. Battle City + + + btlfield + Battle Field (Japan) + + + btlfieldb + Battle Field (bootleg) + + + btlfront + BattleFront + + + btlkroad + Battle K-Road + + + btlkroadk + Battle K-Road (Korea) + + + btltryst + Battle Tryst (ver JAC) + + + btmn_101 + Batman (USA 1.01, display A1.02) + + + btmn_103 + Batman (USA 1.03, display A1.02) + + + btmn_103f + Batman (France 1.03, display F1.03) + + + btmn_103g + Batman (Germany 1.03, display G1.04) + + + btmn_106 + Batman (USA 1.06, display A1.02) + + + btoads + Battletoads + + + btorneo + Bubble Torneo + + + btplay2k + Beat Player 2000 + + + bttf_a20 + Back to the Future - The Pinball (2.0) + + + bttf_a21 + Back to the Future - The Pinball (2.1) + + + bttf_a27 + Back to the Future - The Pinball (2.7) + + + bttf_a28 + Back to the Future - The Pinball (2.8) + + + bttf_g27 + Back to the Future - The Pinball (2.7, Germany) + + + bub68705 + Bubble Bobble (bootleg with 68705) + + + bub68705a + Bubble Bobble (boolteg with 68705, set 2) + + + bub8749 + Bubble Bobble (bootleg of Japan Ver 0.0 with 8749) + + + bubblem + Bubble Memories: The Story Of Bubble Bobble III (Ver 2.4O 1996/02/15) + + + bubblembe + Bubble Memories: Black Edition (Hack) + + + bubblemj + Bubble Memories: The Story Of Bubble Bobble III (Ver 2.3J 1996/02/07) + + + bubblemu + Bubble Memories: The Story Of Bubble Bobble III (Ver 2.5A 1996/02/21) + + + bubbles + Bubbles + + + bubblesp + Bubbles (prototype) + + + bubblesr + Bubbles (Solid Red label) + + + bubbletr + Bubble Trouble - Golly! Ghost! 2 (World, Rev B) + + + bubbletrj + Bubble Trouble - Golly! Ghost! 2 (Japan, Rev C) + + + bubbobr1 + Bubble Bobble (US) + + + bubbroul + Bubblen Roulette (Japan, main ver. 1.8, video ver. 1.3) + + + bubbroul17 + Bubblen Roulette (Japan, main ver. 1.7, video ver. 1.3) + + + bubl2000 + Bubble 2000 + + + bubl2000a + Bubble 2000 V1.2 + + + bublbob1 + Bubble Bobble (older) + + + bublbob2 + Bubble Bobble II (Ver 2.6O 1994/12/16) + + + bublbob2o + Bubble Bobble II (Ver 2.5O 1994/10/05) + + + bublbob2p + Bubble Bobble II (Ver 0.0J 1993/12/13, prototype) + + + bublbobl + Bubble Bobble (Japan, Ver 0.1) + + + bublbobl1 + Bubble Bobble (Japan, Ver 0.0) + + + bublboblb + Bubble Bobble (for Bobble Bobble PCB) + + + bublboblp + Bubble Bobble (prototype on Tokio hardware) + + + bublboblr + Bubble Bobble (US, Ver 5.1) + + + bublboblr1 + Bubble Bobble (US, Ver 1.0) + + + bublboblu + Bubble Bobble (Ultra Version, Hack) + + + bublbobr + Bubble Bobble (US with mode select) + + + bublbust + Bubble Buster (USA, B-System) + + + bublcave + Bubble Bobble: Lost Cave V1.2 + + + bublcave10 + Bubble Bobble: Lost Cave V1.0 + + + bublcave11 + Bubble Bobble: Lost Cave V1.1 + + + bublpong + Bubble Pong Pong + + + bubsympe + Bubble Symphony (Europe) + + + bubsymph + Bubble Symphony (Japan) + + + bubsymphb + Bubble Symphony (bootleg with OKI6295) + + + bubsymphba + Seoul Symphony (Bubble Symphony bootleg with OKI6295) + + + bubsymphe + Bubble Symphony (Ver 2.5O 1994/10/05) + + + bubsymphj + Bubble Symphony (Ver 2.5J 1994/10/05) + + + bubsymphu + Bubble Symphony (Ver 2.5A 1994/10/05) + + + bubsympu + Bubble Symphony (US) + + + bubucar + Bu Bu Car (English) + + + bucaneer + Buccaneer (Aristocrat, 10173011, NSW/ACT) + + + bucaneera + Buccaneer (Aristocrat, 10181911, ASP) + + + bucaneeru + Buccaneer (Aristocrat, 0252523, US) + + + bucaner + Buccaneer (set 1) + + + bucanera + Buccaneer (set 2) + + + buccanra + Buccaneers (set 2) + + + buccanrs + Buccaneers (set 1) + + + buccanrsa + Buccaneers (set 2) + + + buccanrsb + Buccaneers (set 3, harder) + + + buckrgrs + Buck Rogers + + + buckrog + Buck Rogers: Planet of Zoom + + + buckrogn + Buck Rogers: Planet of Zoom (not encrypted, set 1) + + + buckrogn2 + Buck Rogers: Planet of Zoom (not encrypted, set 2) + + + buckstop + The Buck Stops Here (10294311, NSW/ACT) + + + bucky + Bucky O'Hare (ver EAB) + + + buckyaa + Bucky O'Hare (ver AA) + + + buckyaab + Bucky O'Hare (ver AAB) + + + buckyea + Bucky O'Hare (ver EA) + + + buckyjaa + Bucky O'Hare (ver JAA) + + + buckyua + Bucky O'Hare (US version UA) + + + buckyuab + Bucky O'Hare (ver UAB) + + + buffalo + Buffalo (10217811, NSW/ACT) + + + buffaloa + Buffalo (20232611, ASP) + + + buffalou + Buffalo (0252636, US) + + + bugfever + Bugs Fever (Version 1.7R CGA) + + + bugfeverd + Bugs Fever (Version 1.7E CGA) + + + bugfevero + Bugs Fever (Version 1.6R CGA) + + + bugfeverv + Bugs Fever (Version 1.7R Dual) + + + bugfeverv2 + Bugs Fever (Version 1.7E Dual) + + + buggyboy + Buggy Boy/Speed Buggy (cockpit, rev. D) + + + buggyboyb + Buggy Boy/Speed Buggy (cockpit, rev. B) + + + buggyboyjr + Buggy Boy Junior/Speed Buggy (upright) + + + buggychl + Buggy Challenge + + + buggychlt + Buggy Challenge (Tecfri) + + + buggycht + Buggy Challenge (Tecfri) + + + bujutsu + Fighting Wu-Shu 2nd! (ver JAA) + + + bullet + Bullet (FD1094 317-0041) + + + bulletd + Bullet (bootleg of FD1094 317-0041 set) + + + bullfgt + Bullfight (315-5065) + + + bullfgtr + Bull Fighter + + + bullfgtrs + Bull Fighter (Sega) + + + bullion2 + Bullion 2 + + + bullsdrt + Bulls Eye Darts + + + bullsdrtg + Bulls Eye Darts (Galaxian conversion) + + + bullseye + 301/Bullseye (301 Darts Scoring) + + + bullseyn + 301/Bullseye (Traditional Scoring) + + + bumba + Bumba (bootleg of Head On) + + + bumblbug + Bumble Bugs (0200510V, NSW/ACT) + + + bumblbugq + Bumble Bugs (0200456V, Queensland) + + + bumblbugu + Bumble Bugs (CHG0479-03, US) + + + bumblbugua + Bumble Bugs (CHG0479-02, US) + + + bumblbugub + Bumble Bugs (CHG0479-99, US) + + + bungeem + Bungee Monkey (set 1) + + + bungeema + Bungee Monkey (set 2) + + + buraiken + Hissatsu Buraiken (Japan, rev. A) + + + buraikenb + Hissatsu Buraiken (Japan, bootleg) + + + burgkids + Burger Kids (Japan) + + + burglarx + Burglar X + + + buriki + Buriki One: World Grapple Tournament '99 in Tokyo (rev.B) + + + burnforc + Burning Force (Japan, new version (Rev C)) + + + burnforco + Burning Force (Japan, old version) + + + burningf + Burning Fight (NGM-018 ~ NGH-018) + + + burningfh + Burning Fight (NGH-018, US) + + + burningfp + Burning Fight (prototype, older) + + + burningfpa + Burning Fight (prototype, near final, ver 23.3, 910326) + + + burningfpb + Burning Fight (prototype, newer, V07) + + + burningh + Burning Fight (set 2) + + + bushido + Bushido (set 1) + + + bushidoa + Bushido (set 2) + + + bushidob + Bushido (set 3) + + + bushrngr + Bushranger (10006111, NSW/ACT) + + + buster + Buster + + + butasan + Butasan - Pig's & Bomber's (Japan, English) + + + butasanj + Butasan (Japan, Japanese) + + + butrfly + Butterfly Video Game (version A00) + + + butrflybl + Butterfly Video Game (version U350C) + + + buttdeli + Butterfly Delight (0200143V, NSW/ACT) + + + buttobi + Buttobi Striker + + + buzzard + Buzzard + + + buzzundr + Buzzundrum (Ace) + + + bwcasino + Boardwalk Casino + + + bwidow + Black Widow + + + bwidowp + Black Widow (prototype) + + + bwing + B-Wings (Japan) + + + bwings + B-Wings (Japan new Ver.) + + + bwingsa + B-Wings (Alt Ver.?) + + + bwingso + B-Wings (Japan old Ver.) + + + bygone + Bygone (prototype) + + + bzone + Battle Zone (rev 2) + + + bzone2 + Battle Zone (set 2) + + + bzonea + Battle Zone (rev 1) + + + bzonec + Battle Zone (cocktail) + + + c3_ppays + The Phrase That Pays (Bellfruit) (Cobra 3?) + + + c3_rtime + Radio Times (Bellfruit) (Cobra 3) + + + c3_telly + Telly Addicts (Bellfruit) (Cobra 3) + + + c3_totp + Top of the Pops (Bellfruit) (Cobra 3?) + + + cabal + Cabal (World, Joystick) + + + cabala + Cabal (Korea?, Joystick) + + + cabalbl + Cabal (bootleg of Joystick version, set 1, alternate sound hardware) + + + cabalbl2 + Cabal (bootleg of Joystick version, set 2) + + + cabalm + Cabal (Modular System) + + + cabalng + Cabal - Neo Geo Conversion (HB) + + + cabaluk + Cabal (UK, Trackball) + + + cabalukj + Cabal (UK, Joystick) + + + cabalus + Cabal (US set 1, Trackball) + + + cabalus2 + Cabal (US set 2, Trackball) + + + cabaret + Cabaret Show + + + cachat + Cachat (Japan) + + + cactjack + Cactus Jack's + + + cactus + Cactus (bootleg of Saboten Bombers) + + + cactusco + Cactus Corral (10237711, NSW/ACT) + + + cadanglr + Angler Dangler (DECO Cassette) (US) + + + cadash + Cadash (World) + + + cadashf + Cadash (France) + + + cadashg + Cadash (Germany, rev 1) + + + cadashgo + Cadash (Germany) + + + cadashi + Cadash (Italy) + + + cadashj + Cadash (Japan, rev 2) + + + cadashj1 + Cadash (Japan, rev 1) + + + cadashjo + Cadash (Japan) + + + cadashp + Cadash (World, prototype) + + + cadashs + Cadash (Spain, rev 1) + + + cadashu + Cadash (US, rev 2) + + + cadashu1 + Cadash (US, rev 1?) + + + cafebrk + Mahjong Cafe Break (Ver. 1.01J) + + + cafedoll + Mahjong Cafe Doll (Japan, Ver. 1.00) + + + cafedollg + Mahjong Cafe Doll Great (Japan, Ver. 1.00) + + + cafepara + Mahjong Cafe Paradise (Ver. 1.00) + + + cafetime + Mahjong Cafe Time + + + cairblad + Change Air Blade (Japan) + + + cakefght + Cake Fighter (hack of Twinkle Star Sprites) + + + calchase + California Chase + + + calcune + Calcune (Japan, prototype) + + + calibr50 + Caliber 50 (Ver. 1.01) + + + calipso + Calipso + + + callwld + Call of the Wild (10256611, NSW/ACT) + + + calorie + Calorie Kun vs Moguranian + + + calorieb + Calorie Kun vs Moguranian (bootleg) + + + calspeed + California Speed (Version 2.1a Apr 17 1998, GUTS 1.25 Apr 17 1998 / MAIN Apr 17 1998) + + + calspeeda + California Speed (Version 1.0r8 Mar 10 1998, GUTS Mar 10 1998 / MAIN Mar 10 1998) + + + calspeedb + California Speed (Version 1.0r7a Mar 4 1998, GUTS Mar 3 1998 / MAIN Jan 19 1998) + + + calyking + Calypso King (20197111, NSW/ACT) + + + cameltrj + Cameltry (Japan) + + + cameltry + Cameltry (World, YM2610) + + + cameltrya + Cameltry (World, YM2203 + M6295) + + + cameltryau + Cameltry (US, YM2203 + M6295) + + + cameltryj + Cameltry (Japan, YM2610) + + + cameltryu + Cameltry (US, YM2610) + + + camlight + Camel Lights + + + camltrua + Cameltry (US, alt sound) + + + canaryrc + Canary Riches (10218211, NSW/ACT) + + + canasta + Canasta '86' + + + candance + Cannon Dancer (Japan) + + + candory + Candory (Ponpoko bootleg with Mario) + + + candy + Candy Candy + + + cane + Cane (prototype) + + + cannball + Cannon Ball (Yun Sung, horizontal) + + + cannballv + Cannon Ball (Yun Sung, vertical) + + + cannonb + Cannon Ball (bootleg on Crazy Kong hardware) (set 1, buggy) + + + cannonb2 + Cannon Ball (bootleg on Crazy Kong hardware) (set 2, buggy) + + + cannonb3 + Cannon Ball (bootleg on Crazy Kong hardware) (set 3, no bonus game) + + + cannonbp + Cannon Ball (Pac-Man Hardware) + + + canrose + Canyon Rose (AHG1463, US) + + + canvas + Canvas Croquis + + + canyon + Canyon Bomber + + + canyonp + Canyon Bomber (prototype) + + + capbowl + Capcom Bowling (set 1) + + + capbowl2 + Capcom Bowling (set 2) + + + capbowl3 + Capcom Bowling (set 3) + + + capbowl4 + Capcom Bowling (set 4) + + + capcor + Capitani Coraggiosi (Ver 1.3) + + + capitol + Capitol + + + caprcyc + Capriccio Cyclone + + + capsnk + Capcom Vs. SNK: Millennium Fight 2000 (Rev C) + + + capsnka + Capcom Vs. SNK: Millennium Fight 2000 (Rev A) + + + capsnkb + Capcom Vs. SNK: Millennium Fight 2000 + + + captainbarrel + Captain Barrel (HB) + + + captainx + Captain X + + + captaven + Captain America and The Avengers (Asia Rev 1.4) + + + captavena + Captain America and The Avengers (Asia Rev 1.0) + + + captavene + Captain America and The Avengers (UK Rev 1.4) + + + captavenj + Captain America and The Avengers (Japan Rev 0.2) + + + captavenu + Captain America and The Avengers (US Rev 1.9) + + + captavenua + Captain America and The Avengers (US Rev 1.4) + + + captavenuu + Captain America and The Avengers (US Rev 1.6) + + + captavna + Captain America and The Avengers (Asia Rev 1.0) + + + captavne + Captain America and The Avengers (UK Rev 1.4) + + + captavnj + Captain America and The Avengers (Japan Rev 0.2) + + + captavnu + Captain America and The Avengers (US Rev 1.9) + + + captavuu + Captain America and The Avengers (US Rev 1.6) + + + captc1v4 + Captain Commando (1v4, Hack) + + + captcm2y + Captain Commando (Master, Hack) + + + captcmcr + Captain Commando (CR7 Elite, Hack) + + + captcmdw + Captain Commando (Warriors, Hack) + + + captcmjy + Captain Commando (Elite Competition, Hack) + + + captcmmy + Captain Commando (Incubus, Hack) + + + captcmsc + Captain Commando (Switchable Character, Hack) + + + captcmsh + Captain Commando (Contest, Hack) + + + captcmwx + Captain Commando (Infinite Bullets, Hack) + + + captcmzs + Captain Commando (God of War, Hack) + + + captcmzt + Captain Commando (Journey, Hack) + + + captcomj + Captain Commando (Japan 911202) + + + captcomm + Captain Commando (World 911202) + + + captcommb + Captain Commando (bootleg) + + + captcommb2 + Captain Commando (bootleg with 2xMSM5205) + + + captcommb3 + Captain Commando (bootleg with YM2151 + 2xMSM5205) + + + captcommj + Captain Commando (Japan 911202) + + + captcommjr1 + Captain Commando (Japan 910928) + + + captcommr1 + Captain Commando (World 911014) + + + captcommu + Captain Commando (USA 910928) + + + captcomu + Captain Commando (US 910928) + + + captflag + Captain Flag (Japan) + + + captre + Captain Commando Readjusted (Hack, v1.2) + + + capunc + Capitan Uncino (Nazionale Elettronica, Ver 1.2) + + + car2 + Car 2 (bootleg of Head On 2) + + + caractn + Car Action (set 1) + + + caractn2 + Car Action (set 2) + + + caramball + Caramball + + + carb2002 + Carriage Bonus 2002 (bootleg) + + + carb2003 + Carriage Bonus 2003 (bootleg) + + + carboule + Caribbean Boule (M1 Satellite board) + + + cardline + Card Line + + + carhntds + Car Hunt / Deep Scan (France) + + + carhop + Car Hop + + + caribe + Caribe + + + carjmbre + Car Jamboree + + + carket + Carket Ball + + + carnevil + CarnEvil (v1.0.3) + + + carnevil1 + CarnEvil (v1.0.1) + + + carnivac + Carnival (Astro Corp., US.004.D) + + + carnival + Carnival (upright, AY8912 music) + + + carnivalb + Carnival (upright, PIT8253 music) + + + carnivalc + Carnival (cocktail) + + + carnivalca + Carnival (cocktail, earlier) + + + carnivalh + Carnival (Head On hardware, set 1) + + + carnivalha + Carnival (Head On hardware, set 2) + + + carnivalmm + Carnival (ManilaMatic bootleg) + + + carnking + Carnival King (v1.00.11) + + + carnvckt + Carnival (cocktail) + + + carpolo + Car Polo + + + carrera + Carrera (Version 6.7) + + + cartfury + CART Fury Championship Racing (ver 1.00) + + + cas21iwc + Casino 21 UCMC/IWC (ver 30.08) + + + casanova + Casanova + + + casbjack + Casino Black Jack (color, Standard 00-05) + + + cascade + Cascade + + + cashcade + Cashcade (JPM) (SYSTEM5 VIDEO) + + + cashcat + Cash Cat (0100676V, NSW/ACT) + + + cashcata + Cash Cat (0100557V, NSW/ACT) + + + cashcatnz + Cash Cat (0300863V, New Zealand) + + + cashcham + Cash Chameleon (0100438V, NSW/ACT) + + + cashchama + Cash Chameleon (0200437V, NSW/ACT) + + + cashchamnz + Cash Chameleon (0300781V, New Zealand) + + + cashchamu + Cash Chameleon (DHG4078-99, US) + + + cashcra5 + Cash Crop (0300467V, NSW/ACT) + + + cashcra5a + Cash Crop (0300447V, NSW/ACT) + + + cashcrop + Cash Crop (Russian) + + + cashline + Cashline + + + cashquiz + Cash Quiz (Type B, Version 5) + + + cashtrn + Cash Train (v1.10) + + + casino5 + Casino Five (3315-02, U5-2B) + + + casino5a + Casino Five (3315-02, U5-0) + + + casino5b + Casino Five (3315-12, U5-0) + + + caspoker + Casino Poker (Ver PM88-01-21, German) + + + caspokera + Casino Poker (Ver PM86LO-35-5, German) + + + caspokerb + Casino Poker (Ver PM86-35-1, German) + + + castaway + Castaway (Russia) (Atronic) (set 1) + + + castawaya + Castaway (Russia) (Atronic) (set 2) + + + castawayt + Cast Away (dual 6809 GI Australasia PCB) + + + castfant + Astro Fantasia (DECO Cassette) (US) + + + castfpt + Fortune Pot (Castle) (MACH2000 V2rvA) + + + castrev + Revolution (Castle) (MACH2000 V1rvE) + + + caswin + Casino Winner + + + catacomb + Catacomb + + + catacomp + Catacomb (Pinball) + + + catapult + Catapult + + + catch22 + Catch-22 (version 8.0) + + + catchp + Catch (prototype) + + + caterplr + Caterpillar (bootleg of Centipede) + + + catnmous + Cat and Mouse (type 02 program) + + + catnmousa + Cat and Mouse (type 01 program) + + + catt + Catt (Japan) + + + cavelon + Cavelon + + + caveman + Caveman (Pinball/Video Combo, set 1) + + + cavemana + Caveman (Pinball/Video Combo, set 2) + + + cavenger + Cosmic Avenger + + + cavnegro + Cavaleiro Negro (set 1) + + + cavnegro1 + Cavaleiro Negro (set 2) + + + cavnegro2 + Cavaleiro Negro (set 3) + + + cawing + Carrier Air Wing (World 901012) + + + cawingb2 + Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM5205, set 2) + + + cawingbl + Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM5205, set 1) + + + cawingj + U.S. Navy (Japan 901012) + + + cawingr1 + Carrier Air Wing (World 901009) + + + cawingu + Carrier Air Wing (USA 901130) + + + cawingur1 + Carrier Air Wing (USA 901012) + + + cb2 + Cherry Bonus II (V2.00 06/01) + + + cb2001 + Cherry Bonus 2001 (V1.1I) + + + cb3 + Cherry Bonus III (ver.1.40, encrypted) + + + cb3a + Cherry Bonus III (ver.1.40, set 2) + + + cb3b + Cherry Bonus III (alt) + + + cb3c + Cherry Bonus III (Ivanhoe V46-0799) + + + cb3d + Cherry Bonus III (set 3) + + + cb3e + Cherry Bonus III (set 4, encrypted bootleg) + + + cb3f + Cherry Bonus III (set 5, encrypted bootleg) + + + cb3g + Cherry Bonus III (ver.1.40, set 6) + + + cb3h + Cherry Bonus III (ver.1.40, set 7) + + + cb3s51 + Cherry Bonus III (ver.5.1) + + + cb4 + Cherry Bonus IV (V5.0) + + + cb4a + Cherry Bonus IV (V1.2) + + + cb5 + Cherry Bonus V Five (V1.3) + + + cb5_11 + Cherry Bonus V Five (V1.1) + + + cbaai + Cherry Bonus (A.A.I. bootleg) + + + cbaj + Cool Boarders Arcade Jam (Export) + + + cbajbl + Cool Boarders Arcade Jam (Export bootleg) + + + cball + Cannonball (Atari, prototype) + + + cbasebal + Capcom Baseball (Japan) + + + cbdash + Boulder Dash (DECO Cassette) (US) + + + cbnj + Bump 'n' Jump (DECO Cassette) (US) + + + cbombers + Chase Bombers (World) + + + cbombersj + Chase Bombers (Japan) + + + cbombersp + Chase Bombers (Japan Prototype) + + + cbrava + Costa Brava (2 jackpot points, 81%) + + + cbravaa + Costa Brava (1 jackpot point, 77%) + + + cbravab + Costa Brava (2 jackpot points, 77%) + + + cbravac + Costa Brava (4 jackpot points, 77%) + + + cbravad + Costa Brava (8 jackpot points, 77%) + + + cbtime + Burger Time (DECO Cassette) (US) + + + cbully + Coche Bully + + + cburnrb2 + Cassette: Burnin' Rubber (set 2) + + + cburnrub + Burnin' Rubber (DECO Cassette) (US) (set 1) + + + cburnrub2 + Burnin' Rubber (DECO Cassette) (US) (set 2) + + + cburnrubj + Burnin' Rubber (DECO Cassette) (Japan) + + + cbuster + Crude Buster (World FX version) + + + cbusterj + Crude Buster (Japan FR revision 1) + + + cbusterw + Crude Buster (World FU version) + + + cc_10 + Cactus Canyon (1.0) + + + cc_104 + Cactus Canyon (1.04 Test 0.2) + + + cc_12 + Cactus Canyon (1.2) + + + cc_13 + Cactus Canyon (1.3) + + + ccasino + Chinese Casino (Japan) + + + ccastle2 + Crystal Castles (version 2) + + + ccastle3 + Crystal Castles (version 3) + + + ccastlej + Crystal Castles (joystick version) + + + ccastles + Crystal Castles (version 4) + + + ccastles1 + Crystal Castles (version 1) + + + ccastles2 + Crystal Castles (version 2) + + + ccastles3 + Crystal Castles (version 3) + + + ccastlesf + Crystal Castles (version 3, French) + + + ccastlesg + Crystal Castles (version 3, German) + + + ccastlesj + Crystal Castles (joystick version) + + + ccastlesp + Crystal Castles (version 3, Spanish) + + + ccboot + Crazy Climber (bootleg set 1) + + + ccboot2 + Crazy Climber (bootleg set 2) + + + ccbootmm + Crazy Climber (ManilaMatic bootleg) + + + ccbootmr + Crazy Climber (Model Racing bootleg) + + + ccclass + Country Club Classic (v1.10 03-apr-1997) + + + ccfboxa + Chihiro Firmware Update For Compact Flash Box (4.01) (GDX-0024A) + + + cchance + Cherry Chance + + + cchasm + Cosmic Chasm (set 1) + + + cchasm1 + Cosmic Chasm (set 2) + + + cclimber + Crazy Climber (US set 1) + + + cclimbera + Crazy Climber (US set 2) + + + cclimberj + Crazy Climber (Japan) + + + cclimbr2 + Crazy Climber 2 (Japan) + + + cclimbr2a + Crazy Climber 2 (Japan, Harder) + + + cclimbrj + Crazy Climber (Japan) + + + cclimbroper + Crazy Climber (Spanish, Operamatic bootleg) + + + cclimbrrod + Crazy Climber (Spanish, Rodmar bootleg) + + + cclownz + Crazzy Clownz (Version 1.0) + + + ccorsario + Corsarios (Cirsa slot machine, V6.0D) + + + ccorsarioa + Corsarios (Cirsa slot machine, V5.10D, Catalonia) + + + ccruise + Caribbean Cruise + + + cdiscon1 + Disco No.1 (DECO Cassette) (US) + + + cdracula + Castle Of Dracula + + + cdrawpkr + Draw Poker (Joker Poker V.01) + + + cdsteljn + DS Telejan (DECO Cassette) (Japan) + + + cecmatch + ChuckECheese's Match Game + + + cellage + Cellage + + + cencourt + Center Court (World, 4 Players, prototype) (MC-8123B) + + + centaur + Centaur + + + centauri + Centaur (Inder) (set 1) + + + centauri2 + Centaur (Inder) (set 2) + + + centipb2 + Centipede (bootleg, set 1) + + + centipd2 + Centipede (revision 2) + + + centipdb + Centipede (bootleg, set 1) + + + centipdb2 + Centipede (bootleg, set 2) + + + centipdd + Centipede Dux (hack) + + + centiped + Centipede (revision 4) + + + centiped1 + Centipede (revision 1) + + + centiped2 + Centipede (revision 2) + + + centiped3 + Centipede (revision 3) + + + centipedj + Centipede (Japan, revision 3) + + + centrion + Centurion (0152314, US) + + + centtime + Centipede (revision 4) + + + cerberup + Cerberus (Pinball) + + + cerberus + Cerberus + + + cexplore + Explorer (DECO Cassette) (US) + + + cfarm + Chicken Farm (Version 2.0) + + + cfarwest + Far West (Compumatic) + + + cfblue + Crazy Fruits Blue (Russia) (Atronic) (set 1) + + + cfbluea + Crazy Fruits Blue (Russia) (Atronic) (set 2) + + + cfboy0a1 + Flash Boy (vertical) (DECO Cassette MD) (No.12/Ver.0/Set.1,Japan) + + + cfever1k + Casino Fever 1k + + + cfever40 + Casino Fever 4.0 + + + cfever50 + Casino Fever 5.0 + + + cfever51 + Casino Fever 5.1 + + + cfever61 + Casino Fever 6.1 + + + cfghtice + Fighting Ice Hockey (DECO Cassette) (US) + + + cfgreen + Crazy Fruits Green (Russia) (Atronic) + + + cfield + Chaos Field (Japan) (GDL-0025) + + + cfishing + Fishing (DECO Cassette) (Japan) + + + cflyball + Flying Ball (DECO Cassette) (US) + + + cftbl_l2 + Creature from the Black Lagoon (L-2) + + + cftbl_l3 + Creature from the Black Lagoon (L-3,SP-1) + + + cftbl_l4 + Creature from the Black Lagoon (L-4) + + + cgang + Cosmo Gang (US) + + + cgangpzj + Cosmo Gang the Puzzle (Japan) + + + cgangpzl + Cosmo Gang the Puzzle (US) + + + cgangpzlj + Cosmo Gang the Puzzle (Japan) + + + cgidjp + Double Joker Poker (CGI) + + + cgip23b + Credit Poker (ver.23b, 7 & 9 bonus) + + + cgip30b + Credit Poker (ver.30b, 7 & 9 bonus) + + + cgip30cs + Credit Poker (ver.30c, standard) + + + cgold + Caribbean Gold (3VXEC449, US) + + + cgold2 + Caribbean Gold II (4XF5182H04, US) + + + cgold2a + Caribbean Gold II (3XF5182H04, US) + + + cgraplop + Cluster Buster (DECO Cassette) (US) + + + cgraplop2 + Graplop (DECO Cassette) (US) (Prototype?) + + + cgraplopj + Graplop (DECO Cassette) (Japan) + + + cgraplp2 + Cassette: Graplop (aka Cluster Buster) (set 2) + + + cgunship + Cobra Gunship + + + ch2000 + Fruit Bonus 2000 / New Cherry 2000 (Version 4.4E Dual) + + + ch2000b1 + Fruit Bonus 2000 / New Cherry 2000 (Version 4.4R, set 1) + + + ch2000b2 + Fruit Bonus 2000 / New Cherry 2000 (Version 4.1LT, set 1) + + + ch2000c1 + Fruit Bonus 2000 / New Cherry 2000 (Version 4.4R, set 2) + + + ch2000c2 + Fruit Bonus 2000 / New Cherry 2000 (Version 4.1LT, set 2) + + + ch2000d1 + Fruit Bonus 2000 / New Cherry 2000 (Version 4.4R, set 3) + + + ch2000d2 + Fruit Bonus 2000 / New Cherry 2000 (Version 4.1LT, set 3) + + + ch2000o + Fruit Bonus 2000 / New Cherry 2000 (Version 3.9XT) + + + ch2000o2 + Fruit Bonus 2000 / New Cherry 2000 (Version 3.9D) + + + ch2000o3 + Fruit Bonus 2000 / New Cherry 2000 (Version 3.9) + + + ch2000v1 + Fruit Bonus 2000 / New Cherry 2000 (Version 4.4R Dual) + + + ch2000v2 + Fruit Bonus 2000 / New Cherry 2000 (Version 4.1LT Dual) + + + ch3001r + Champion 3001 Regular + + + chainrec + Chain Reaction (World, Version 2.2, 1995.09.25) + + + chaknpop + Chack'n Pop + + + chakumel + Chaku Melo Collection + + + chalgirl + Challenge Girl (Falcon bootleg) + + + challeng + Challenger + + + cham24 + Chameleon 24 + + + chamburger + Hamburger (DECO Cassette) (Japan) + + + chameleo + Chameleon + + + champ2 + Countertop Champion 2 (ver 2.11) + + + champbas + Champion Base Ball + + + champbasj + Champion Base Ball (Japan set 1) + + + champbasja + Champion Base Ball (Japan set 2) + + + champbasjb + Champion Base Ball (Japan set 3) + + + champbb2 + Champion Base Ball Part-2 (set 1) + + + champbb2j + Champion Base Ball Part-2 (Japan) + + + champbbj + Champion Baseball (Japan set 1) + + + champbja + Champion Baseball (Japan set 2) + + + champbwl + Championship Bowling + + + champbwla + Championship Bowling (location test) + + + champion + Champion 85 + + + champwr + Champion Wrestler (World) + + + champwrj + Champion Wrestler (Japan) + + + champwru + Champion Wrestler (US) + + + chamrx1 + Chameleon RX-1 + + + chanbara + Chanbara (Japan) + + + chance + Chance + + + chance32 + Chance Thirty Two + + + changela + Change Lanes + + + changes + Changes + + + changesa + Changes (EME license) + + + changyu + Mayo no 21 + + + changyu2 + 999 + + + chaosbrk + Chaos Breaker (v2.02J) + + + chaoshea + Chaos Heat (V2.09O 1998/10/02 17:00) + + + chaosheaj + Chaos Heat (V2.08J 1998/09/25 17:00) + + + chariotc + Chariot Challenge (0100787V, NSW/ACT) + + + chariotcpe + Chariot Challenge (04J00714, Peru) + + + chariotcu + Chariot Challenge (RHG0635-02, US) + + + charles + Charleston (V2.1, Catalonia) + + + charlien + Charlie Ninja + + + charlies + Charlie's Angels + + + chasehq + Chase H.Q. (World) + + + chasehq2 + Chase H.Q. 2 (v2.0.6.JP) + + + chasehqj + Chase H.Q. (Japan) + + + chasehqju + Chase H.Q. (Japan, upright?) + + + chasehqu + Chase H.Q. (US) + + + chboxing + Champion Boxing + + + checkma5 + Checkmate (01J00681, NSW/ACT) + + + checkmaj + Check Man (Japan) + + + checkman + Check Man + + + checkmanj + Check Man (Japan) + + + checkmat + Checkmate + + + cheekyms + Cheeky Mouse + + + cheesech + Cheese Chase + + + cheetah + Cheetah (Black Cabinet) + + + cheetahb + Cheetah (Blue Cabinet) + + + chelnov + Atomic Runner Chelnov (World) + + + chelnovj + Atomic Runner Chelnov (Japan) + + + chelnovjbl + Atomic Runner Chelnov (Japan, bootleg with I8031, set 1) + + + chelnovjbla + Atomic Runner Chelnov (Japan, bootleg with I8031, set 2) + + + chelnovu + Atomic Runner Chelnov (US) + + + cherry96 + New Cherry '96 (bootleg of New Fruit Bonus?) + + + chessc2 + Chess Challenge II (ver. 1445A) + + + chewheel + Cherry Wheel (Version 1.7) + + + chewing + Chewing Gum + + + chexx83 + Chexx (EM Bubble Hockey, 1983 1.1) + + + cheyenne + Cheyenne (version 1.0) + + + chicdale + Chickendales (Atronic) + + + chicgum + Chic Gum Video + + + chicken + Chicken (Russia) (Atronic) + + + chickna5 + Chicken (0100351V, NSW/ACT) + + + chickna5q + Chicken (0200530V, Queensland) + + + chickna5u + Chicken (RHG0730-03, US) + + + chickna5ua + Chicken (RHG0730-99, US) + + + chickna5v + Chicken (01J01886, Venezuela) + + + chikij + Chiki Chiki Boys (Japan 900619) + + + chiller + Chiller (version 3.0) + + + chillicc + Chilli Con Cash (set 1) + + + chimerab + Chimera Beast (Japan, prototype, set 1) + + + chimeraba + Chimera Beast (Japan, prototype, set 2) + + + chinagat + China Gate (US) + + + chinatow + China Town (Ver 1B, Dino4 HW) + + + chinatwn + China Town (Japan) + + + chinher2 + Chinese Hero (older) + + + chinhero + Chinese Hero + + + chinhero2 + Chinese Hero (older, set 1) + + + chinhero3 + Chinese Hero (older, set 2) + + + chinherot + Chinese Heroe (Taito) + + + chinmoku + Mahjong Chinmoku no Hentai (Japan 900511) + + + chinsan + Ganbare Chinsan Ooshoubu (MC-8123A, 317-5012) + + + chkndraw + Chicken Draw (2131-04, U5-1) + + + chkndrawa + Chicken Draw (2131-04, U5-0) + + + chkun + Chance Kun (Japan) + + + chleague + Champion League (v220I, Poker) + + + chleagul + Champion League (v220I, Lattine) + + + chleagxa + Champion League (v220I, dual program, set 1) + + + chleagxb + Champion League (v220I, dual program, set 2) + + + chmpnum + Champion Number (V0.74) + + + chmpnuma + Champion Number (V0.67) + + + chmppool + Champion Pool (v1.0) + + + chocomk + Musapey's Choco Marker (Rev A) (GDL-0014A) + + + chocovdr + Uchuu Daisakusen: Chocovader Contactee (Japan, CVC1 Ver.A) + + + chokchok + Choky! Choky! + + + choko + Janpai Puzzle Choukou (Japan 010820) + + + choplift + Choplifter (8751 315-5151) + + + chopliftbl + Choplifter (bootleg) + + + chopliftu + Choplifter (unprotected) + + + chopper + Chopper I (US Ver 2) + + + choppera + Chopper I (US Ver 1?) + + + chopperb + Chopper I (US) + + + choroqhr + Choro Q Hyper Racing 5 (J 981230 V1.000) + + + chplft + Choplifter + + + chplftb + Choplifter (alternate) + + + chplftbl + Choplifter (bootleg) + + + chqflag + Chequered Flag + + + chqflagj + Chequered Flag (Japan) + + + chry10 + Cherry 10 (bootleg with PIC16F84) + + + chryangl + Cherry Angel (set 1) + + + chryangla + Cherry Angel (encrypted, W-4 hardware) + + + chryanglb + Cherry Angel (set 2) + + + chrygld + Cherry Gold I (set 1) + + + chryglda + Cherry Gold I (set 2, encrypted bootleg) + + + chsuper2 + Champion Super 2 (V0.13) + + + chsuper3 + Champion Super 3 (V0.35) + + + chthree + Channel Three + + + chuckieegg + Chuckie Egg + + + chucklck + Chuck-A-Luck + + + chukatai + Chuka Taisen (World) (P0-028-A PCB) + + + chukataij + Chuka Taisen (Japan) (P0-028-A PCB) + + + chukataija + Chuka Taisen (Japan) (P0-025-A PCB) + + + chukataiu + Chuka Taisen (US) (P0-028-A PCB) + + + chukataj + Chuka Taisen (Japan) + + + chukatau + Chuka Taisen (US) + + + chusenoh + Chusenoh + + + chwrestl + Champion Pro Wrestling + + + chwy + Highway Chase (DECO Cassette) (US) + + + ciclone + Ciclone + + + cinhell + Chance in Hell - Lil' Lucy (0251125, US) + + + circa33 + Circa 1933 + + + circus + Circus / Acrobat TV + + + circusc + Circus Charlie (level select, set 1) + + + circusc2 + Circus Charlie (level select, set 2) + + + circusc3 + Circus Charlie (level select, set 3) + + + circusc4 + Circus Charlie (no level select) + + + circuscc + Circus Charlie (Centuri) + + + circusce + Circus Charlie (Centuri, earlier) + + + circuso + Circus / Acrobat TV (older) + + + circusp + Circus + + + cischeat + Cisco Heat + + + citalcup + Champion Italian Cup (bootleg V220IT) + + + cityatta + City Attack (Petaco S.A., bootleg of Pleiads) + + + citybmrj + City Bomber (Japan) + + + citybomb + City Bomber (World) + + + citybombj + City Bomber (Japan) + + + citycon + City Connection (set 1) + + + citycona + City Connection (set 2) + + + citylove + City Love (Japan 860908) + + + cityslck + City Slicker + + + cj3play + Triple Play (Ver. 1.10) + + + cjbj + Blackjack (Ver. 1.31) + + + cjddz + Chaoji Dou Dizhu (V219CN) + + + cjddz215cn + Chaoji Dou Dizhu (V215CN) + + + cjddz217cn + Chaoji Dou Dizhu (V217CN) + + + cjddzlf + Chaoji Dou Dizhu Liang Fu Pai (V109CN) + + + cjddzp + Chaoji Dou Dizhu Jiaqiang Ban (S300CN) + + + cjddzsp + Super Dou Di Zhu Special (V122CN) + + + cjdh2 + Chao Ji Da Heng 2 (V311CN) + + + cjdh2a + Chao Ji Da Heng 2 (V311CNA) + + + cjdh2b + Chao Ji Da Heng 2 (V311CNB) + + + cjdh2c + Chao Ji Da Heng 2 (V215CN) + + + cjffruit + Funny Fruit (Ver. 1.13) + + + cjplus + New! Cherry Plus (Ver. 3.10) + + + cjslh + Cai Jin Shen Long (link version, host) + + + cjsll + Cai Jin Shen Long (link version, extension, S111CN) + + + cjtljp + Chaoji Tuolaji Jiaqiang Ban (V206CN) + + + ckidzo + Ckidzo + + + ckong + Crazy Kong + + + ckonga + Crazy Kong (set 2) + + + ckongalc + Crazy Kong (Alca bootleg) + + + ckongcv + Crazy Kong (bootleg on Galaxian hardware, encrypted, set 2) + + + ckongdks + Donkey Kong (Spanish bootleg of Crazy Kong) + + + ckongg + Crazy Kong (bootleg on Galaxian hardware) + + + ckonggx + Crazy Kong (bootleg on Galaxian hardware, encrypted, set 1) + + + ckongis + Crazy Kong (bootleg on Galaxian hardware, encrypted, set 3) + + + ckongjeu + Crazy Kong (Jeutel bootleg) + + + ckongmc + Crazy Kong (bootleg on Moon Cresta hardware, set 1) + + + ckongmc2 + Crazy Kong (bootleg on Moon Cresta hardware, set 2) + + + ckongo + Crazy Kong (Orca bootleg) + + + ckongpt2 + Crazy Kong Part II (set 1) + + + ckongpt2a + Crazy Kong Part II (set 2) + + + ckongpt2b + Crazy Kong Part II (alternative levels) + + + ckongpt2b2 + Crazy Kong Part II (bootleg) + + + ckongpt2j + Crazy Kong Part II (Japan) + + + ckongpt2jeu + Crazy Kong Part II (Jeutel bootleg) + + + ckongpt2ss + Crazy Kong (SegaSA / Sonic bootleg) + + + ckongs + Crazy Kong (bootleg on Scramble hardware) + + + ckpt_a17 + Checkpoint (1.7) + + + clapapa + Rootin' Tootin' / La-Pa-Pa (DECO Cassette) (US) + + + clapapa2 + Rootin' Tootin' (DECO Cassette) (US) + + + clas1812 + Class of 1812 + + + classice + Classic Edition (Version 1.6E) + + + classice1 + Classic Edition (Version 1.6R, set 1) + + + classice2 + Classic Edition (Version 1.6LT, set 1) + + + classiced1 + Classic Edition (Version 1.6R, set 2) + + + classiced2 + Classic Edition (Version 1.6LT, set 2) + + + classicev + Classic Edition (Version 1.6E Dual) + + + classicev1 + Classic Edition (Version 1.6R Dual) + + + classicev2 + Classic Edition (Version 1.6LT Dual) + + + claybust + Claybuster + + + claychal + Sega Clay Challenge + + + claypign + Clay Pigeon (version 2.0) + + + clayshoo + Clay Shoot + + + clbowl + Coors Light Bowling + + + cleanswp + Clean Sweep + + + cleoftp + Cleopatra Fortune Plus (GDL-0012) + + + cleopatr + Cleopatra Fortune (Ver 2.1J 1996/09/05) + + + cleopatro + Cleopatra Fortune (Ver 2.1O 1996/09/05, bootleg) + + + cleoptra + Cleopatra + + + cliffhgr + Cliff Hanger (set 1) + + + cliffhgra + Cliff Hanger (set 2) + + + cliffhgra2 + Cliff Hanger (set 3) + + + clkwise + Clockwise (1VXEC534, New Zealand) + + + cll + Cuty Line Limited (ver.1.30) + + + cloak + Cloak & Dagger (rev 5) + + + cloakfr + Cloak & Dagger (French) + + + cloakgr + Cloak & Dagger (German) + + + cloaksp + Cloak & Dagger (Spanish) + + + clocknch + Lock'n'Chase (DECO Cassette) (US) + + + clocknchj + Lock'n'Chase (DECO Cassette) (Japan) + + + closeenc + Close Encounters of the Third Kind + + + cloud9 + Cloud 9 (prototype) + + + clown + Clown + + + clowndwn + Clown Roll Down (Elwood) + + + clowns + Clowns (rev. 2) + + + clowns1 + Clowns (rev. 1) + + + clpoker + Poker Genius + + + clrmatch + Color Match + + + clshroad + Clash-Road + + + clshroadd + Clash-Road (Data East license) + + + clshroads + Clash-Road (Status license) + + + cltchitr + Clutch Hitter (US) (FD1094 317-0176) + + + cltchitrd + Clutch Hitter (US) (bootleg of FD1094 317-0176 set) + + + cltchitrj + Clutch Hitter (Japan) (FD1094 317-0175) + + + cltchitrjd + Clutch Hitter (Japan) (bootleg of FD1094 317-0175 set) + + + club90s + Mahjong CLUB 90's (set 1) (Japan 900919) + + + club90sa + Mahjong CLUB 90's (set 2) (Japan 900919) + + + clubcard + Club Card (ver. 1.1 English) + + + clubk2k3 + Club Kart: European Session (2003, Rev A) + + + clubk2kp + Club Kart: European Session (2003, prototype, set 1) + + + clubk2kpa + Club Kart: European Session (2003, prototype, set 2) + + + clubkcyc + Club Kart for Cycraft (Rev A) (GDS-0029A) + + + clubkcyco + Club Kart for Cycraft (GDS-0029) + + + clubkprz + Club Kart Prize (Export, Japan, Rev A) + + + clubkpzb + Club Kart Prize Version B (Export, Japan) + + + clubkpzbp + Club Kart Prize Version B (prototype) + + + clubkrt + Club Kart: European Session (Rev D) + + + clubkrta + Club Kart: European Session (Rev A) + + + clubkrtc + Club Kart: European Session (Rev C) + + + clubkrto + Club Kart: European Session + + + clubpacm + Pacman Club / Club Lambada (Argentina) + + + clubpacma + Pacman Club (Argentina) + + + cluckypo + Lucky Poker (DECO Cassette) (US) + + + cluclu + Vs. Clu Clu Land + + + cluedo + Cluedo (prod. 2D) + + + cluedo2 + Cluedo (prod. 2) + + + cluedo2c + Cluedo (prod. 2C) + + + cluedod + Cluedo (prod. 2D) (Protocol) + + + cm2005 + Cherry Master 2005 (Ver. 1.10U) + + + cm2005a + Cherry Master 2005 (Ver. 1.02U) + + + cm2005b + Cherry Master 2005 (Ver. 0.14H) + + + cmagica + Carta Magica (Ver 1.8) + + + cmanhat + Manhattan (DECO Cassette) (Japan) + + + cmast91 + Cherry Master '91 (ver.1.30) + + + cmast92 + Cherry Master '92 (V1.2D) + + + cmast92a + Cherry Master '92 (V1.1D) + + + cmast97 + Cherry Master '97 (V1.7, set 1) + + + cmast97a + Cherry Master '97 (V1.7, set 2) + + + cmast97i + Cheri Mondo '97 (V1.4I) + + + cmast99 + Cherry Master '99 (V9B.00) + + + cmast99b + Cherry Master '99 (V9B.00 bootleg / hack) + + + cmaster + Cherry Master I (ver.1.01, set 1) + + + cmasterb + Cherry Master I (ver.1.01, set 2) + + + cmasterbv + Cherry Master I (ver.1.01, set 4, with Blitz Poker ROM?) + + + cmasterc + Cherry Master I (ver.1.01, set 3) + + + cmasterd + Cherry Master I (ver.1.01, set 5) + + + cmastere + Cherry Master I (ver.1.01, set 6) + + + cmasterf + Cherry Master I (ver.1.01, set 7) + + + cmasterg + Cherry Master I (ver.1.01, set 8, V4-B-) + + + cmasterh + Cherry Master I (ver.1.10) + + + cmasteri + Cherry Master I (ver.1.01, set 9) + + + cmasterj + Cherry Master I (ver.1.01, set 10, BET stops all) + + + cmasterk + Cherry Master I (ver.1.01, set 11, TAKE stops all) + + + cmasterl + Cherry Master I (ver.1.01, set 12) + + + cmcwa + Chibi Maruko-chan - Wanage de Asobo!! + + + cmehyou + Mahjong Circuit no Mehyou (Japan) + + + cmezspin + Cherry Master I (E-Z Spin bootleg / hack) + + + cmezspina + Cherry Master I (E-Z Spin Hands Count bootleg / hack, set 1) + + + cmezspinb + Cherry Master I (E-Z Spin Hands Count bootleg / hack, set 2) + + + cmfb55 + Cherry Master (bootleg, Game FB55 Ver.2) + + + cmfun + Cherry Master (Fun USA v2.5 bootleg / hack) + + + cmissnx + Mission-X (DECO Cassette) (US) + + + cmkenosp + Coinmaster Keno (Y2K, Spanish, 2000-12-14) + + + cmkenospa + Coinmaster Keno (Y2K, Spanish, 2000-12-02) + + + cmmb103 + Centipede / Millipede / Missile Command (rev 1.03) + + + cmmb162 + Centipede / Millipede / Missile Command / Let's Go Bowling (rev 1.62) + + + cmpacman + Super Pacman (v1.2) + Cherry Master (Corsica, v8.31, unencrypted, set 1) + + + cmpacmana + Super Pacman (v1.2) + Cherry Master (Corsica, v8.31, unencrypted, set 2) + + + cmpacmanb + Super Pacman (v1.2) + Cherry Master (Corsica, v8.31, encrypted) + + + cmrltv75 + Coinmaster Roulette P497 V75 (Y2K, Spanish) + + + cmtetris + Tetris + Cherry Master (Corsica, v8.01, unencrypted, set 1) + + + cmtetrisa + Tetris + Cherry Master (Corsica, v8.01, unencrypted, set 2) + + + cmtetrisb + Tetris + Cherry Master (+K, Canada Version, encrypted) + + + cmtetrisc + Tetris + Cherry Master (Corsica, v8.01, encrypted) + + + cmtetrisd + Tetris + Cherry Master (Aidonis Games bootleg) + + + cmtetriskr + Tetris + Global Money Fever (Corsica, v8.01, Korean bootleg) + + + cmtonig + Cashman Tonight (30194711, NSW/ACT) + + + cmv4 + Cherry Master (ver.4, set 1) + + + cmv4a + Cherry Master (ver.4, set 2) + + + cmv4zg + Cherry Bonus III (Ziogas V4.1 hack, set 1) + + + cmv4zga + Cherry Bonus III (Ziogas V4.1 hack, set 2) + + + cmv801 + Cherry Master (Corsica, ver.8.01) + + + cmwm + Cherry Master (Watermelon bootleg / hack) + + + cnbe + Codename - Blut Engel (HB, ver. 20060119) + + + cnbe2018 + Codename - Blut Engel (HB, ver. 20180905) + + + cndi + Chip n Dale (FMV Demo) + + + cndypuzl + Candy Puzzle (v1.0) + + + cnebula + Nebula (DECO Cassette) (UK) + + + cnights2 + Cassette: Night Star (set 2) + + + cnightst + Night Star (DECO Cassette) (US) (set 1) + + + cnightst2 + Night Star (DECO Cassette) (US) (set 2) + + + cninja + Caveman Ninja (World ver 4) + + + cninja0 + Caveman Ninja (World revision 0) + + + cninja1 + Caveman Ninja (World ver 1) + + + cninjabl + Caveman Ninja (bootleg) + + + cninjabl2 + Tatakae Genshizin Joe & Mac (Japan, bootleg) + + + cninjau + Caveman Ninja (US ver 4) + + + cntct_l1 + Contact (L-1) + + + cntforce + Counterforce + + + cntine31 + Continental 3 in 1 (Bingo) + + + cntinntl + Continental (Bingo) + + + cntinntl2 + Continental (Bingo, alternate version) + + + cntrygrl + Country Girl (Japan set 1) + + + cntrygrla + Country Girl (Japan set 2) + + + cntsteer + Counter Steer (Japan) + + + cobra + Cobra Command (Data East LD, set 1) + + + cobraa + Cobra Command (Data East LD, set 2) + + + cobracmj + Cobra-Command (Japan) + + + cobracom + Cobra-Command (World/US revision 5) + + + cobracoma + Cobra-Command (World/US revision 4) + + + cobracomb + Cobra-Command (World/US) + + + cobracomib + Cobra-Command (Italian bootleg) + + + cobracomj + Cobra-Command (Japan) + + + cobracomja + Cobra-Command (Japan?, set 2) + + + cobracomjb + Cobra-Command (Japan, bootleg) + + + cobram3 + Cobra Command (M.A.C.H. 3 hardware, set 1) + + + cobram3a + Cobra Command (M.A.C.H. 3 hardware, set 2) + + + cobrap + Cobra + + + cobrapb + Cobra (Playbar) + + + cobrasd + Cobra Sport Dart / Tour Sport Dart (Oki MSM6376 sound) + + + cobrasda + Cobra Sport Dart / Tour Sport Dart (AY-8910 sound) + + + cobraseg + Cobra Command (Sega LaserDisc Hardware) + + + cobrata + Cobra: The Arcade (CBR1 Ver. B) + + + cocean1a + Ocean to Ocean (Medal) (DECO Cassette MD) (No.10/Ver.1,Japan) + + + cocean6b + Ocean to Ocean (Medal) (DECO Cassette MD) (No.10/Ver.6,US) + + + cocoloco + Coco Loco (set 1) + + + cocolocoa + Coco Loco (set 2) + + + cocolocob + Coco Loco (set 3) + + + code1d + Code One Dispatch Ver 1.21 (ver UAD) + + + code1db + Code One Dispatch Ver 1.16 (ver UAB) + + + codemagik + Code Magik (Ver 5.5) / Super 7 (stealth game) + + + colmns97 + Columns '97 (JET 961209 V1.000) + + + colony7 + Colony 7 (set 1) + + + colony7a + Colony 7 (set 2) + + + colorama + Colorama (P521, English) + + + coloramas + Colorama (P521 V13, Spanish) + + + colt + Colt + + + columbia + Columbia + + + columbus + Columbus (set 1) + + + columbusa + Columbus (set 2) + + + columbusb + Columbus (set 3) + + + columbusc + Columbus (set 4) + + + columbusd + Columbus (set 5) + + + columbuse + Columbus (set 6) + + + columbusf + Columbus (set 7) + + + column2j + Columns II: The Voyage Through Time (Japan) + + + columns + Columns (World) + + + columns2 + Columns II: The Voyage Through Time (World) + + + columnsj + Columns (Japan) + + + columnsn + Columns - Neo Geo (HB) + + + columnsu + Columns (US, cocktail, Rev A) + + + combasc + Combat School (joystick) + + + combascb + Combat School (bootleg) + + + combascj + Combat School (Japan trackball) + + + combasct + Combat School (trackball) + + + combat + Combat (version 3.0) + + + combatsc + Combat School (joystick) + + + combatscb + Combat School (bootleg) + + + combatscj + Combat School (Japan trackball) + + + combatsct + Combat School (trackball) + + + combh + Combat Hawk + + + comebaby + Come On Baby + + + comeback + Come Back + + + comet_l4 + Comet (L-4) + + + comet_l5 + Comet (L-5) + + + comg074 + Cal Omega - Game 7.4 (Gaming Poker, W.Export) + + + comg076 + Cal Omega - Game 7.6 (Arcade Poker) + + + comg079 + Cal Omega - Game 7.9 (Arcade Poker) + + + comg080 + Cal Omega - Game 8.0 (Arcade Black Jack) + + + comg094 + Cal Omega - Game 9.4 (Keno) + + + comg107 + Cal Omega - Game 10.7c (Big Game) + + + comg123 + Cal Omega - Game 12.3 (Ticket Poker) + + + comg125 + Cal Omega - Game 12.5 (Bingo) + + + comg127 + Cal Omega - Game 12.7 (Keno) + + + comg128 + Cal Omega - Game 12.8 (Arcade Game) + + + comg134 + Cal Omega - Game 13.4 (Nudge) + + + comg145 + Cal Omega - Game 14.5 (Pixels) + + + comg157 + Cal Omega - Game 15.7 (Double-Draw Poker) + + + comg159 + Cal Omega - Game 15.9 (Wild Double-Up) + + + comg164 + Cal Omega - Game 16.4 (Keno) + + + comg168 + Cal Omega - Game 16.8 (Keno) + + + comg170 + Cal Omega - Game 17.0 (Amusement Poker) + + + comg172 + Cal Omega - Game 17.2 (Double Double Poker) + + + comg175 + Cal Omega - Game 17.51 (Gaming Draw Poker, Sch 07-0T) + + + comg176 + Cal Omega - Game 17.6 (Nudge) + + + comg181 + Cal Omega - Game 18.1 (Nudge) + + + comg183 + Cal Omega - Game 18.3 (Pixels) + + + comg184 + Cal Omega - Game 18.4 (Pixels) + + + comg185 + Cal Omega - Game 18.5 (Pixels) + + + comg186 + Cal Omega - Game 18.6 (Pixels) + + + comg187 + Cal Omega - Game 18.7 (Amusement Poker) + + + comg204 + Cal Omega - Game 20.4 (Super Blackjack) + + + comg208 + Cal Omega - Game 20.8 (Winner's Choice) + + + comg214 + Cal Omega - Game 21.4 (Wild Double-Up Poker) + + + comg227 + Cal Omega - Game 22.7 (Amusement Poker, d/d) + + + comg230 + Cal Omega - Game 23.0 (FC Bingo (4-card)) + + + comg236 + Cal Omega - Game 23.6 (Hotline) + + + comg239 + Cal Omega - Game 23.9 (Gaming Draw Poker) + + + comg240 + Cal Omega - Game 24.0 (Gaming Draw Poker, hold) + + + comg246 + Cal Omega - Game 24.6 (Hotline) + + + comg272a + Cal Omega - Game 27.2 (Keno, amusement) + + + comg272b + Cal Omega - Game 27.2 (Keno, gaming) + + + comg5107 + CEI 51.07 (CEI 906-III Poker, Schedule 05F) + + + comg5108 + CEI 51.08 (CEI 906-III Poker, Schedule 05F) + + + comg5108a + CEI 51.08 (CEI 906-III Poker, Schedule 09F) + + + comg5108b + CEI 51.08 (CEI 906-III Poker, Schedule 21F) + + + comg6004 + CEI 60.04 (CEI 906-III Poker, Schedule 09F) + + + comg903d + Cal Omega - System 903 Diag.PROM + + + comg905d + Cal Omega - System 905 Diag.PROM + + + commandj + Senjou no Ookami + + + commando + Commando (World) + + + commandob + Commando (bootleg set 1) + + + commandob2 + Commando (bootleg set 2) + + + commandob3 + Commando (bootleg set 3) + + + commandoj + Senjou no Ookami + + + commandou + Commando (US set 1) + + + commandou2 + Commando (US set 2) + + + commandu + Commando (US) + + + commandw + Command War - Super Special Battle & War Game (Ver 0.0J, prototype) + + + commsega + Commando (Sega) + + + comotion + CoMotion + + + comotionp + CoMotion (patent) + + + compglfo + Competition Golf Final Round (old version) + + + compgolf + Competition Golf Final Round (World?, revision 3) + + + compgolfo + Competition Golf Final Round (Japan, old version) + + + complexx + Complex X + + + condor + Condor (Sidam bootleg of Phoenix) + + + condorn + Condor (S C Novar bootleg of Phoenix) + + + condorva + Condor (Valadon Automation bootleg of Phoenix) + + + coneyis + Old Coney Island! + + + confmiss + Confidential Mission (GDS-0001) + + + congo + Congo Bongo (Rev C, 2 board stack) + + + congo_11 + Congo (1.1) + + + congo_11s10 + Congo (1.1, DCS sound 1.0) + + + congo_13 + Congo (1.3) + + + congo_20 + Congo (2.0) + + + congo_21 + Congo (2.1) + + + congoa + Congo Bongo (Rev C, 3 board stack) + + + conquer + Conqueror + + + conquest + Conquest (prototype) + + + contcirc + Continental Circus (World) + + + contcircj + Continental Circus (Japan) + + + contcircu + Continental Circus (US set 1) + + + contcircua + Continental Circus (US set 2) + + + contcrcu + Continental Circus (US) + + + contra + Contra (US / Asia, set 1) + + + contra1 + Contra (US / Asia, set 2) + + + contrab + Contra (bootleg) + + + contrabj + Contra (Japan bootleg, set 1) + + + contrabj1 + Contra (Japan bootleg, set 2) + + + contrae + Contra (US / Asia, set 3) + + + contraj + Contra (Japan, set 1) + + + contraj1 + Contra (Japan, set 2) + + + contrajb + Contra (Japan bootleg) + + + cookbib + Cookie & Bibi (set 1) + + + cookbib2 + Cookie & Bibi 2 (English, set 1) + + + cookbib2a + Cookie & Bibi 2 (English, set 2) + + + cookbib2b + Cookie & Bibi 2 (English, set 3) + + + cookbib2c + Cookie & Bibi 2 (English / Korean) + + + cookbib3 + Cookie & Bibi 3 + + + cookbiba + Cookie & Bibi (set 2) + + + cookrace + Cook Race + + + cool104 + Cool 104 + + + coolmini + Cool Minigame Collection + + + coolminii + Cool Minigame Collection (Italy) + + + coolpool + Cool Pool + + + coolridr + Cool Riders + + + coozumou + Oozumou - The Grand Sumo (DECO Cassette) (Japan) + + + cop01 + Cop 01 (set 1) + + + cop01a + Cop 01 (set 2) + + + cops + Cops (USA) + + + copsnrob + Cops'n Robbers + + + copsuk + Cops (UK) + + + coralr2 + Coral Riches II (1VXFC5472, New Zealand) + + + coralrc2 + Coral Riches II (0100919V, NSW/ACT) + + + coronatn + Coronation Street Quiz Game + + + coronatnd + Coronation Street Quiz Game (Protocol) + + + corrida + Corrida de Toros (30178311, NSW/ACT) + + + corsario + Corsario + + + corv_21 + Corvette (2.1) + + + corv_la1 + Corvette (LA1) + + + corv_lx1 + Corvette (LX1) + + + corv_lx2 + Corvette (LX2) + + + corv_px3 + Corvette (PX3 Prototype) + + + corv_px4 + Corvette (PX4 Prototype) + + + cosflash + Cosmic Flash + + + cosflnsm + Cosmic Flash (NSM) + + + cosmccop + Cosmic Cop (World) + + + cosmic + Cosmic + + + cosmica + Cosmic Alien (version II, set 1) + + + cosmica1 + Cosmic Alien (first version) + + + cosmica2 + Cosmic Alien (older) + + + cosmica22 + Cosmic Alien (version II, set 2) + + + cosmica23 + Cosmic Alien (version II, set 3) + + + cosmica2a + Cosmic Alien (early version II?) + + + cosmicg + Cosmic Guerilla + + + cosmicgi + Cosmic Guerilla (Spanish bootleg) + + + cosmicin + Cosmic Invaders (bootleg of Space Invaders) + + + cosmicm2 + Cosmic Monsters 2 + + + cosmicmo + Cosmic Monsters (version II) + + + cosmo + Cosmo + + + cosmogng + Cosmo Gang the Video (US) + + + cosmogngj + Cosmo Gang the Video (Japan) + + + cosmognj + Cosmo Gang the Video (Japan) + + + cosmos + Cosmos + + + cothello + Computer Othello + + + cots + Creatures of the Sea (20050328 USA 6.3) + + + cotton + Cotton (set 4, World) (FD1094 317-0181a) + + + cotton2 + Cotton 2 (JUET 970902 V1.000) + + + cottona + Cotton + + + cottonbm + Cotton Boomerang (JUET 980709 V1.000) + + + cottond + Cotton (set 4, World) (bootleg of FD1094 317-0181a set) + + + cottong + Cotocoto Cottong + + + cottonj + Cotton (set 2, Japan, Rev B) (FD1094 317-0179b) + + + cottonja + Cotton (set 1, Japan, Rev A) (FD1094 317-0179a) + + + cottonjad + Cotton (set 1, Japan, Rev A) (bootleg of FD1094 317-0179a set) + + + cottonjd + Cotton (set 2, Japan, Rev B) (bootleg of FD1094 317-0179b set) + + + cottonu + Cotton (set 3, US) (FD1094 317-0180) + + + cottonud + Cotton (set 3, US) (bootleg of FD1094 317-0180 set) + + + countdwn + Count-Down + + + countrb2 + Counter Run (bootleg set 2) + + + countrnb + Counter Run (bootleg set 1) + + + countrun + Counter Run (NS6201-A 1988.3) + + + countrunb + Counter Run (bootleg set 1) + + + countrunb2 + Counter Run (bootleg set 2) + + + countrunb3 + Counter Run (bootleg set 3) + + + countryc + Country Club + + + couple + The Couples (set 1) + + + couplei + The Couples (set 3) + + + couplep + The Couples (set 2) + + + covidarts + Covidarts + + + cowboy + Cowboy Eight Ball (set 1) + + + cowboy2 + Cowboy Eight Ball 2 + + + cowboya + Cowboy Eight Ball (set 2) + + + cowrace + Cow Race (hack of King Derby) + + + cowtipp + Cow Tipping - Shake Cattle & Roll (set 1) + + + cowtippa + Cow Tipping - Shake Cattle & Roll (set 2) + + + cp_15 + The Champion Pub (1.5) + + + cp_16 + The Champion Pub (1.6) + + + cphd + Crouching Poney Hidden Dragon (HB, Demo) + + + cpoker + Champion Poker (v220I) + + + cpoker101 + Champion Poker (v101) + + + cpoker2 + Champion Poker 2 (V100A) + + + cpoker201f + Champion Poker (v201F) + + + cpoker210ks + Champion Poker (v210KS) + + + cpoker300us + Champion Poker (v300US) + + + cpokerpk + Champion Italian PK (bootleg, blue board) + + + cpokerpkg + Champion Italian PK (bootleg, green board) + + + cpokert + Champion Poker (v200G) + + + cpokerx + Champion Poker (v100) + + + cppicf + Peter Pepper's Ice Cream Factory (DECO Cassette) (US) (set 1) + + + cppicf2 + Peter Pepper's Ice Cream Factory (DECO Cassette) (US) (set 2) + + + cprobowl + Pro Bowling (DECO Cassette) (US) + + + cprogolf + Tournament Pro Golf (DECO Cassette) (US) + + + cprogolf18 + 18 Challenge Pro Golf (DECO Cassette) (Japan) + + + cprogolfj + Tournament Pro Golf (DECO Cassette) (Japan) + + + cprosocc + Cassette: Pro Soccer + + + cps1demo + Chaos Demo (CPS-1) + + + cps1frog + Frog Feast (CPS-1) + + + cps1mult + CPS1 Multi Game + + + cps3boot + CPS3 Multi-game bootleg for HD6417095 type SH2 (V4) + + + cps3boota + CPS3 Multi-game bootleg for dead security cart (V5) + + + cps3bootao + CPS3 Multi-game bootleg for dead security cart (older) + + + cps3bootao2 + CPS3 Multi-game bootleg for dead security cart (oldest) (New Generation, 2nd Impact and 3rd Strike only) + + + cps3booto + CPS3 Multi-game bootleg for HD6417095 type SH2 (older) + + + cps3booto2 + CPS3 Multi-game bootleg for HD6417095 type SH2 (oldest) (New Generation, 3rd Strike, JoJo's Venture, JoJo's Bizarre Adventure and Red Earth only) + + + cps3bs32 + Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, V3) + + + cps3bs32a + Street Fighter III 2nd Impact: Giant Attack (USA 970930, bootleg for HD6417095 type SH2, older) + + + cpsoccer + Pro Soccer (DECO Cassette) (US) + + + cpsoccerj + Pro Soccer (DECO Cassette) (Japan) + + + cptennis + Pro Tennis (DECO Cassette) (US) + + + cptennisj + Pro Tennis (DECO Cassette) (Japan) + + + cpthook + Captain Hook + + + cptlucky + Captain Lucky + + + cptshark + Captain Shark (Ver. CS.01.6, Apr 21 2006) + + + cpzodiac + Captain Zodiac (World) + + + cpzodiacj + Captain Zodiac (Japan) + + + cr589fw + CD-ROM Drive Updater 2.0 (700B04) + + + cr589fwa + CD-ROM Drive Updater (700A04) + + + crackndj + Crackin' DJ + + + cracksht + Crackshot (version 2.0) + + + crakndj2 + Crackin' DJ Part 2 (Japan) + + + crash + Crash (set 1) + + + crasha + Crash (set 2) + + + crashh + Crash (Pac-Man) + + + crashnsc + Crash 'n Score/Stock Car + + + crashrd + Crash Road (bootleg of Space Chaser) + + + crater + Crater Raider + + + crazybal + Crazy Balls (NAT) + + + crazybala + Crazy Balls (Bontempi, set 1) + + + crazybalb + Crazy Balls (Bontempi, set 2) + + + crazyblk + Crazy Blocks + + + crazybon + Crazy Bonus 2002 (Ver. 1, set 1) + + + crazybona + Crazy Bonus 2002 (Ver. 1, set 2) + + + crazybonb + Crazy Bonus 2002 (Ver. 1, set 3) + + + crazycop + Crazy Cop (Japan) + + + crazyfgt + Crazy Fight + + + crazym + Crazy Mazey + + + crazywar + Crazy War + + + crbalon2 + Crazy Balloon (set 2) + + + crbaloon + Crazy Balloon (set 1) + + + crbaloon2 + Crazy Balloon (set 2) + + + cregchg + Chihiro Change Region GD USA (611-0028A) + + + crgolf + Crowns Golf (834-5419-04) + + + crgolfa + Crowns Golf (834-5419-03) + + + crgolfb + Crowns Golf (set 3) + + + crgolfbt + Champion Golf (bootleg) + + + crgolfc + Champion Golf + + + crgolfhi + Crowns Golf in Hawaii + + + cricket + Cricket + + + crimec + Crime City (World) + + + crimecj + Crime City (Japan) + + + crimecu + Crime City (US) + + + crimep2 + Crime Patrol 2: Drug Wars (v1.3) + + + crimep2_11 + Crime Patrol 2: Drug Wars (v1.1) + + + crimepat + Crime Patrol (v1.51) + + + crimepat_10 + Crime Patrol (v1.0) + + + crimepat_12 + Crime Patrol (v1.2) + + + crimepat_14 + Crime Patrol (v1.4) + + + crimfght + Crime Fighters (World 2 players) + + + crimfghtj + Crime Fighters (Japan 2 Players) + + + crimfghtu + Crime Fighters (US 4 Players) + + + crimfgt2 + Crime Fighters (World 2 Players) + + + crimfgtj + Crime Fighters (Japan 2 Players) + + + crisscrs + Criss Cross (Sweden) + + + critcrsh + Critter Crusher (EA 951204 V1.000) + + + crkdown + Crack Down (World, Floppy Based, FD1094 317-0058-04c) + + + crkdownj + Crack Down (Japan, Floppy Based, FD1094 317-0058-04b Rev A) + + + crkdownu + Crack Down (US, Floppy Based, FD1094 317-0058-04d) + + + crockman + Crock-Man + + + crockmnf + Crock-Man (Marti Colls bootleg of Rene Pierre Crock-Man) + + + croquis + Croquis (Korea) + + + croquisg + Croquis (Germany) + + + crospang + Cross Pang + + + crospuzl + Cross Puzzle + + + crossbld + Cross Blades! (Japan) + + + crossbow + Crossbow (version 2.0) + + + crossmg2 + Cross Magic Mark 2 + + + croupier + Croupier (Playmark Roulette v.20.05) + + + croupiera + Croupier (Playmark Roulette v.09.04) + + + croupierb + Croupier II (Playmark Roulette v.03.09) + + + crsbingo + Poker Carnival + + + crshrac2 + Lethal Crash Race (set 2) + + + crshrace + Lethal Crash Race / Bakuretsu Crash Race (set 1) + + + crshrace2 + Lethal Crash Race / Bakuretsu Crash Race (set 2) + + + crshrace2a + Lethal Crash Race / Bakuretsu Crash Race (set 2, alternate sound ROM) + + + crswd2bl + Crossed Swords 2 (bootleg of CD version) + + + crsword + Crossed Swords (ALM-002 ~ ALH-002) + + + crszone + Crisis Zone (World, CSZO4 Ver. B) + + + crszonev2a + Crisis Zone (World, CSZO2 Ver. A) + + + crszonev2b + Crisis Zone (World, CSZO2 Ver. B) + + + crszonev3a + Crisis Zone (US, CSZO3 Ver. A) + + + crszonev3b + Crisis Zone (US, CSZO3 Ver. B, set 1) + + + crszonev3b2 + Crisis Zone (US, CSZO3 Ver. B, set 2) + + + crszonev4a + Crisis Zone (World, CSZO4 Ver. A) + + + crtaxihr + Crazy Taxi High Roller (Rev B) (GDX-0002B) + + + cruisin + Cruisin + + + crush + Crush Roller (set 1) + + + crush2 + Crush Roller (set 2) + + + crush3 + Crush Roller (set 3) + + + crush4 + Crush Roller (set 4) + + + crush5 + Crush Roller (set 5) + + + crushbl + Crush Roller (bootleg, set 1) + + + crushbl2 + Crush Roller (bootleg, set 2) + + + crushbl3 + Crush Roller (bootleg, set 3) + + + crusherm + Crusher Makochan (Japan) + + + crushrlf + Crush Roller (Famare SA PCB) + + + crushs + Crush Roller (bootleg, set 4) + + + crusnexo + Cruis'n Exotica (version 2.4) + + + crusnexoa + Cruis'n Exotica (version 2.0) + + + crusnexoaa + Cruis'n Exotica (version 2.0, alternate ROM format) + + + crusnexob + Cruis'n Exotica (version 1.6) + + + crusnexoc + Cruis'n Exotica (version 1.3) + + + crusnexod + Cruis'n Exotica (version 1.0) + + + crusnu21 + Cruis'n USA (rev L2.1) + + + crusnu40 + Cruis'n USA (rev L4.0) + + + crusnusa + Cruis'n USA (v4.5) + + + crusnusa11 + Cruis'n USA (v1.1) + + + crusnusa20 + Cruis'n USA (v2.0) + + + crusnusa21 + Cruis'n USA (v2.1) + + + crusnusa40 + Cruis'n USA (v4.0) + + + crusnusa41 + Cruis'n USA (v4.1) + + + crusnusa44 + Cruis'n USA (v4.4) + + + crusnw13 + Cruis'n World (rev L1.3) + + + crusnw20 + Cruis'n World (rev L2.0) + + + crusnwld + Cruis'n World (v2.5) + + + crusnwld13 + Cruis'n World (v1.3) + + + crusnwld17 + Cruis'n World (v1.7) + + + crusnwld19 + Cruis'n World (v1.9) + + + crusnwld20 + Cruis'n World (v2.0) + + + crusnwld23 + Cruis'n World (v2.3) + + + crusnwld24 + Cruis'n World (v2.4) + + + cryptklr + Crypt Killer (GQ420 UAA) + + + crysking + The Crystal of Kings + + + cryspri + Crystal Springs (10144411, NSW/ACT) + + + cryspria + Crystal Springs (10155811, ASP) + + + cryspriu + Crystal Springs (0352557, US) + + + crystal + Crystal Colours (CMC hardware) + + + crystal2 + Crystal Gal 2 (Japan 860620) + + + crystalc + Crystals Colours (Ver 1.02) + + + crystalca + Crystals Colours (Ver 1.01) + + + crystalg + Crystal Gal (Japan 860512) + + + crzclass + Zhaoji Fengdou + + + crzcross + Crazy Cross (ver EAA) + + + crzmon2 + Crazy Monkey 2 (100310 World) + + + crzmon2_10 + Crazy Monkey 2 (110124 Entertainment A) + + + crzmon2_11 + Crazy Monkey 2 (110204 Entertainment A) + + + crzmon2_12 + Crazy Monkey 2 (110311 Entertainment B) + + + crzmon2_13 + Crazy Monkey 2 (140526 Entertainment B) + + + crzmon2_14 + Crazy Monkey 2 (110411 Entertainment C) + + + crzmon2_2 + Crazy Monkey 2 (100311 Lottery) + + + crzmon2_3 + Crazy Monkey 2 (100315 Entertainment) + + + crzmon2_4 + Crazy Monkey 2 (100618 Russia) + + + crzmon2_5 + Crazy Monkey 2 (100413 Entertainment X) + + + crzmon2_6 + Crazy Monkey 2 (101220 Entertainment X) + + + crzmon2_7 + Crazy Monkey 2 (101208 Entertainment N) + + + crzmon2_8 + Crazy Monkey 2 (101220 Entertainment N) + + + crzmon2_9 + Crazy Monkey 2 (110111 Entertainment A) + + + crzrally + Crazy Rally (set 1) + + + crzrallya + Crazy Rally (set 2) + + + crzrallyg + Crazy Rally (Gecas license) + + + crzrallyrf + Crazy Rally (Recreativos Franco license) + + + crzybell + Crazy Bell (V1.2D) + + + crzybugs + Crazy Bugs (V204US) + + + crzybugs103jp + Crazy Bugs (V103JP) + + + crzybugs200us + Crazy Bugs (V200US) + + + crzybugs202us + Crazy Bugs (V202US) + + + crzyddz + Crazy Dou Di Zhu + + + crzyddz2 + Crazy Dou Di Zhu II + + + crzytaxi + Crazy Taxi + + + cs10_sps + Casino Strip X (Poker version, for Sony LD) + + + cs11_sps + Casino Strip XI (Poker version, for Sony LD, set 1) + + + cs11_sps2 + Casino Strip XI (Poker version, for Sony LD, set 2) + + + cs11_ssp + Casino Strip XI (Shooting Game version, for Pioneer LD) + + + cs12_sps + Casino Strip XII (Poker version, for Sony LD) + + + cs1_spp + Casino Strip I (Poker version, for Pioneer LD, set 1) + + + cs1_spp2 + Casino Strip I (Poker version, for Pioneer LD, set 2) + + + cs2_sps + Casino Strip II (Poker version, for Sony LD) + + + cs3_qps + Casino Strip III (Poker version, for Sony LD) + + + cs5_spp + Casino Strip V (Poker version, for Pioneer LD) + + + cs5_ssp + Casino Strip V (Shooting Game version, for Pioneer LD) + + + cs6_sps + Casino Strip VI (Poker version, for Sony LD) + + + cs6_ssp + Casino Strip VI (Shooting Game version, for Pioneer LD) + + + cs8_spp + Casino Strip VIII (Poker version, for Pioneer LD) + + + cs8_sps + Casino Strip VIII (Poker version, for Sony LD) + + + cs8_ssp + Casino Strip VIII (Shooting Game version, for Pioneer LD) + + + cs9_qps + Casino Strip IX (Poker version, for Sony LD) + + + cs9_spp + Casino Strip IX (Poker version, for Pioneer LD) + + + cscaoysd + Crayon Shin-chan - Arashi o Yobu! Sushitori Daigassen + + + csclub + Capcom Sports Club (Europe 971017) + + + csclub1 + Capcom Sports Club (Europe 970722) + + + csclub1d + Capcom Sports Club (Europe 970722 Phoenix Edition) (bootleg) + + + cscluba + Capcom Sports Club (Asia 970722) + + + csclubh + Capcom Sports Club (Hispanic 970722) + + + csclubj + Capcom Sports Club (Japan 970722) + + + csclubjy + Capcom Sports Club (Japan 970722, yellow case) + + + cscrtry + Scrum Try (DECO Cassette) (US) (set 1) + + + cscrtry2 + Scrum Try (DECO Cassette) (US) (set 2) + + + csd + Choy Sun Doa (10104011, NSW/ACT) + + + csda + Choy Sun Doa (20131511, ASP) + + + csdce + Choy Sun Doa - Cash Express (30149511, NSW/ACT) + + + csdjc + Choy Sun Doa - Jackpot Carnival (20156611, Queensland) + + + csdq + Choy Sun Doa (10121111, Queensland) + + + csdsp + Choy Sun Doa (20104011, NSW/ACT, Show Program) + + + csdtenis + Super Doubles Tennis (DECO Cassette) (Japan) + + + cshift + Chicken Shift (11/23/84) + + + cshooter + Cross Shooter (Single PCB) + + + cshootert + Cross Shooter (2 PCB Stack) + + + cshootre + Cross Shooter (encrypted) + + + csi_102 + C.S.I. v1.02 + + + csi_103 + C.S.I. v1.03 + + + csi_104 + C.S.I. v1.04 + + + csi_200 + C.S.I. v2.00 + + + csi_210 + C.S.I. v2.10 + + + csi_230 + C.S.I. v2.30 + + + csi_240 + C.S.I. v2.40 + + + csilver + Captain Silver (World) + + + csilverj + Captain Silver (Japan, revision 2) + + + csilverja + Captain Silver (Japan, revision 1) + + + csk227it + Champion Skill (with Ability) + + + csk234it + Champion Skill (Ability, Poker & Symbols) + + + cskater + Skater (DECO Cassette) (Japan) + + + csmash + Cosmic Smash (Rev A) + + + csmasho + Cosmic Smash + + + csmic_l1 + Cosmic Gunfight (L-1) + + + cspe_qps + Casino Strip Private Eyes / All Start (Poker version, for Sony LD) + + + cspike + Cannon Spike / Gun Spike + + + cspin2 + Capriccio Spin 2 + + + csplayh1 + Super CD Dai8dan Mahjong Hanafuda Cosplay Tengoku (Japan) + + + csplayh5 + Mahjong Hanafuda Cosplay Tengoku 5 (Japan) + + + csplayh6 + Mahjong Hanafuda Cosplay Tengoku 6 - Junai-hen (Japan) + + + csplayh7 + Cosplay Tengoku 7 - Super Kogal Ranking (Japan) + + + cspring1 + Championship Sprint (German, rev 1) + + + csprins1 + Championship Sprint (Spanish, rev 1) + + + csprint + Championship Sprint (rev 3) + + + csprint1 + Championship Sprint (rev 1) + + + csprint2 + Championship Sprint (rev 2) + + + csprintf + Championship Sprint (French) + + + csprintg + Championship Sprint (German, rev 2) + + + csprintg1 + Championship Sprint (German, rev 1) + + + csprints + Championship Sprint (Spanish, rev 2) + + + csprints1 + Championship Sprint (Spanish, rev 1) + + + csret + Choy Sun Returns (20212211, NSW/ACT) + + + cstlevna + Vs. Castlevania + + + csuperas + Super Astro Fighter (DECO Cassette) (US) + + + csv1_qps + Casino Strip Vivid 1 (Poker version, for Sony LD) + + + cswat + Cosmoswat + + + csweetht + Sweet Heart (DECO Cassette) (US) + + + ct2k3sa + Crouching Tiger Hidden Dragon 2003 Super Plus (hack of The King of Fighters 2001, alternate) + + + ct2k3sp + Crouching Tiger Hidden Dragon 2003 Super Plus (hack of The King of Fighters 2001) + + + ctainv + CTA Invader + + + ctcheese + Cut The Cheese (Redemption) + + + ctchzdlx + Cut The Cheese Deluxe (redemption, CPU 1.00, display A1.00) + + + cterrani + Terranean (DECO Cassette) (US) + + + cthd2003 + Crouching Tiger Hidden Dragon 2003 (hack of The King of Fighters 2001) + + + cthd2k3a + Crouching Tiger Hidden Dragon 2003 (The King of Fighters 2001 bootleg, set 2) + + + ctisland + Treasure Island (DECO Cassette) (US) (set 1) + + + ctisland2 + Treasure Island (DECO Cassette) (US) (set 2) + + + ctisland3 + Treasure Island (DECO Cassette) (Europe?) + + + ctislnd2 + Cassette: Treasure Island (set 2) + + + ctislnd3 + Cassette: Treasure Island (set 3) + + + ctomaday + Captain Tomaday + + + ctornado + Tornado (DECO Cassette) (US) + + + ctower + The Tower (DECO Cassette) (Europe) + + + ctribe + The Combatribes (US, rev 2, set 1) + + + ctribeb + The Combatribes (bootleg set 1) + + + ctribeb2 + The Combatribes (bootleg set 2) + + + ctribej + The Combatribes (Japan, rev 2) + + + ctribeu1 + The Combatribes (US, rev 1) + + + ctribeua + The Combatribes (US, rev 2, set 2) + + + ctrpllrp + Caterpillar Pacman Hack + + + ctsttape + Test Tape (DECO Cassette) (US) + + + cubeqst + Cube Quest (01/04/84) + + + cubeqsta + Cube Quest (12/30/83) + + + cubybop + Cuby Bop (location test) + + + cucaracha + La Cucaracha (set 1) + + + cucaracha2 + La Cucaracha (set 2) + + + cuckoo + Cuckoo (0200753V, NSW/ACT) + + + cuckoou + Cuckoo (CHG1195, US) + + + cue + Cue (Prototype) + + + cueball + Cue Ball Wizard + + + cueballa + Cue Ball Wizard (rev. 2) + + + cueballb + Cue Ball Wizard (rev. 3) + + + cueballc + Cue Ball Wizard (older display rev.) + + + cuebrckj + Cue Brick (World version D) + + + cuebrick + Cue Brick (World, version D) + + + cuebrickj + Cue Brick (Japan) + + + cultname + Seimei-Kantei-Meimei-Ki Cult Name + + + cultures + Jibun wo Migaku Culture School Mahjong Hen + + + cuncino + Capitan Uncino (High Video, version 2) + + + cuoreuno + Cuore 1 (Italian, set 1) + + + cuoreunoa + Cuore 1 (Italian, set 2) + + + cuoreunob + Cuore 1 (Italian, set 3) + + + cuoreunoc + Cuore 1 (Italian, set 4) + + + cuoreunod + Cuore 1 (Italian, set 5) + + + cuoreunoe + Cuore 1 (Italian, set 6) + + + cuoreunof + Cuore 1 (Italian, set 7) + + + cupfinal + Taito Cup Finals (Ver 1.0O 1993/02/28) + + + cupsoc + Seibu Cup Soccer (set 1) + + + cupsoc2 + Seibu Cup Soccer (set 2) + + + cupsoca + Seibu Cup Soccer (set 2) + + + cupsocb + Seibu Cup Soccer (set 3) + + + cupsocbl + Seibu Cup Soccer (bootleg) + + + cupsocs + Seibu Cup Soccer :Selection: (set 1) + + + cupsocs2 + Seibu Cup Soccer :Selection: (set 2) + + + cupsocsb + Seibu Cup Soccer :Selection: (bootleg, set 1) + + + cupsocsb2 + Seibu Cup Soccer :Selection: (bootleg, set 2) + + + cupsocsb3 + Seibu Cup Soccer :Selection: (bootleg, set 3) + + + cupsocsb4 + Seibu Cup Soccer :Selection: (bootleg, set 4) + + + cupsocsb5 + Seibu Cup Soccer :Selection: (bootleg, set 5) + + + curvebal + Curve Ball + + + cutefght + Cute Fighter + + + cutieq + Cutie Q + + + cuttherope + Cut The Rope + + + cutyline + Cuty Line (ver.1.01) + + + cutylinea + Cuty Line (LC-88 bootleg, ver.8.05C) + + + cutylineb + Cuty Line (LC-88 bootleg, ver.7C.14) + + + cv_10 + Cirqus Voltaire (1.0) + + + cv_11 + Cirqus Voltaire (1.1) + + + cv_13 + Cirqus Voltaire (1.3) + + + cv_14 + Cirqus Voltaire (1.4) + + + cv_20h + Cirqus Voltaire (2.0H) + + + cv_d52 + Cirqus Voltaire (D.52 prototype) + + + cvs2 + Capcom Vs. SNK 2: Mark Of The Millennium 2001 (USA) (GDL-0008) + + + cvs2mf + Capcom Vs. SNK 2: Millionaire Fighting 2001 (Japan, Rev A) (GDL-0007A) + + + cvsgd + Capcom Vs. SNK: Millennium Fight 2000 Pro (Japan) (GDL-0004) + + + cwheel + Catherine Wheel + + + cworld + Capcom World (Japan) + + + cworld2j + Adventure Quiz Capcom World 2 (Japan 920611) + + + cworld2ja + Adventure Quiz Capcom World 2 (Japan 920611, B-Board 90629B-3, no battery) + + + cworld2jb + Adventure Quiz Capcom World 2 (Japan 920611, B-Board 91634B-2) + + + cybattlr + Cybattler + + + cyberb21 + Cyberball 2072 (2 player, rev 1) + + + cyberb22 + Cyberball 2072 (2 player, rev 2) + + + cyberb23 + Cyberball 2072 (2 player, rev 3) + + + cyberb2p + Cyberball 2072 (2 player, rev 4) + + + cyberba2 + Cyberball (rev 2) + + + cyberbal + Cyberball (rev 4) + + + cyberbal1 + Cyberball (rev 1) + + + cyberbal2 + Cyberball (rev 2) + + + cyberbal2p + Cyberball 2072 (2 player, rev 4) + + + cyberbal2p1 + Cyberball 2072 (2 player, rev 1) + + + cyberbal2p2 + Cyberball 2072 (2 player, rev 2) + + + cyberbal2p3 + Cyberball 2072 (2 player, rev 3) + + + cyberbalp + Cyberball (prototype) + + + cyberbalt + Tournament Cyberball 2072 (rev 2) + + + cyberbalt1 + Tournament Cyberball 2072 (rev 1) + + + cyberbap + Cyberball (prototype) + + + cyberbt + Tournament Cyberball 2072 (rev 2) + + + cyberbt1 + Tournament Cyberball 2072 (rev 1) + + + cyberlip + Cyber-Lip (NGM-010) + + + cybertnk + Cyber Tank (v1.4) + + + cyborgforce + Cyborg Force (HB) + + + cybots + Cyberbots: Fullmetal Madness (Europe 950424) + + + cybotsam + Cyberbots: Fullmetal Madness (Access Mod, Hack) + + + cybotsj + Cyberbots: Fullmetal Madness (Japan 950420) + + + cybotsjd + Cyberbots: Fullmetal Madness (Japan 950424) (decrypted bootleg) + + + cybotsu + Cyberbots: Fullmetal Madness (USA 950424) + + + cybotsud + Cyberbots: Fullmetal Madness (USA 950424 Phoenix Edition) (bootleg) + + + cybrcomm + Cyber Commando (Japan, CY1) + + + cybrcycc + Cyber Cycles (World, CB2 Ver.C) + + + cybrcyccj + Cyber Cycles (Japan, CB1 Ver.C) + + + cybrnaut + Cybernaut + + + cybsled + Cyber Sled (CY2, World) + + + cybsleda + Cyber Sled (CY1, World?) + + + cybstorm + Cyberstorm (prototype) + + + cyclemb + Cycle Maabou (Japan) + + + cycln_l1 + Cyclone (L-1) + + + cycln_l4 + Cyclone (L-4) + + + cycln_l5 + Cyclone (L-5) + + + cyclopes + Cyclopes (12/85) + + + cyclopes1 + Cyclopes (11/85) + + + cyclshtg + Cycle Shooting + + + cyclwarr + Cycle Warriors (rev C) + + + cyclwarra + Cycle Warriors (rev B) + + + cyclwarrb + Cycle Warriors + + + cyvern + Cyvern - The Dragon Weapons (US) + + + cyvernj + Cyvern - The Dragon Weapons (Japan) + + + czeroize + Zeroize (DECO Cassette) (US) + + + czmon + Crazy Monkey (030217 World) + + + czmon_12 + Crazy Monkey (090711 Entertainment) + + + czmon_13 + Crazy Monkey (100311 World) + + + czmon_15 + Crazy Monkey (100311 Entertainment) + + + czmon_16 + Crazy Monkey (100312 Russia) + + + czmon_17 + Crazy Monkey (100324 Entertainment X) + + + czmon_18 + Crazy Monkey (100331 Entertainment X) + + + czmon_19 + Crazy Monkey (101208 Entertainment N) + + + czmon_2 + Crazy Monkey (030225 World) + + + czmon_20 + Crazy Monkey (110111 Entertainment A) + + + czmon_21 + Crazy Monkey (110124 Entertainment A) + + + czmon_22 + Crazy Monkey (110204 Entertainment A) + + + czmon_23 + Crazy Monkey (110311 Entertainment B) + + + czmon_24 + Crazy Monkey (140526 Entertainment B) + + + czmon_25 + Crazy Monkey (110411 Entertainment C) + + + czmon_3 + Crazy Monkey (030227 World) + + + czmon_4 + Crazy Monkey (030404 World) + + + czmon_5 + Crazy Monkey (030421 World) + + + czmon_6 + Crazy Monkey (031016 World) + + + czmon_7 + Crazy Monkey (031110 World) + + + czmon_7a + Crazy Monkey (bootleg, 031110, backdoor set 1) + + + czmon_7b + Crazy Monkey (bootleg, 031110, backdoor set 2) + + + czmon_8 + Crazy Monkey (050120 World) + + + czmon_8a + Crazy Monkey (bootleg, 050120, backdoor) + + + czmon_8b + Crazy Monkey (bootleg, 050120, changed version text) + + + czmon_8c + Crazy Monkey (bootleg, 050120, VIDEO GAME-1 CM01) + + + czmon_8d + Crazy Monkey (bootleg, 050120, LOTTOGAME (I)) + + + czmon_8e + Crazy Monkey (bootleg, 050120, LOTO PROGRAM V-CM2) + + + czmon_8f + Crazy Monkey (bootleg, 050120, LOTOS CM01) + + + czmon_9 + Crazy Monkey (070315 Russia) + + + czmon_9a + Crazy Monkey (bootleg, 070315, VIDEO GAME-1 O01 set 1) + + + czmon_9b + Crazy Monkey (bootleg, 070315, VIDEO GAME-1 O01 set 2) + + + czmon_9c + Crazy Monkey (bootleg, 070315, payout percentage 70) + + + d9final + Dream 9 Final (v2.24) + + + d9flower + Dream 9 Flower (v1.00c) + + + dacholer + Dacholer + + + dadandrn + Kyukyoku Sentai Dadandarn (ver JAA) + + + dagenta6 + Double Agent (0152082, US) + + + dai2kaku + Dai-Dai-Kakumei (Japan) + + + dai3wksi + Dai 3 Wakusei (Japan) + + + daifugo + Daifugo (Japan) + + + daikaiju + Daikaiju no Gyakushu (rev 1) + + + daimakai + Daimakaimura (Japan) + + + daimakaib + Daimakaimura (bootleg) + + + daimakair + Daimakaimura (Japan Resale Ver.) + + + daimyojn + Mahjong Daimyojin (Japan, T017-PB-00) + + + daioh + Daioh + + + daioha + Daioh (earlier) + + + daiohc + Daioh (93111A PCB conversion) + + + daiohp + Daioh (prototype) + + + daiohp2 + Daioh (prototype, earlier) + + + daiohp3 + Daioh (prototype, earliest) + + + daireach + Mahjong Dai-Reach (Japan, TSM012-C01) + + + daireika + Mahjong Daireikai (Japan) + + + dairesya + Dai Ressya Goutou (Japan, version K) + + + daisenpu + Daisenpu (Japan) + + + daiskiss + Daisu-Kiss (ver JAA) + + + daisyari + Daisyarin (Japan) + + + daitorid + Daitoride + + + daitorida + Daitoride (YMF278B version) + + + daiyogen + Mahjong Daiyogen (Japan) + + + dakar + Dakar + + + dakkochn + DakkoChan House (MC-8123B, 317-5014) + + + dalejr + Dale Jr. (CPU 5.00, display J5.00) + + + dallaspk + Dallas Poker (CZ/V1) + + + dambustr + Dambusters (US, set 1) + + + dambustra + Dambusters (US, set 2) + + + dambustruk + Dambusters (UK) + + + dance864 + DANCE 86.4 FUNKY RADIO STATION (E01:J:A:A:2005040400) + + + danceyes + Dancing Eyes (World, DC2/VER.B) + + + danceyesj + Dancing Eyes (Japan, DC1/VER.A) + + + danceyesu + Dancing Eyes (US, DC3/VER.C) + + + danchih + Danchi de Hanafuda (J 990607 V1.400) + + + danchiq + Danchi de Quiz: Okusan Yontaku Desuyo! (J 001128 V1.200) + + + dangar + Ufo Robo Dangar (4/09/1987) + + + dangar2 + Dangar - Ufo Robo (9-26-1986) + + + dangara + Ufo Robo Dangar (12/1/1986) + + + dangarb + Ufo Robo Dangar (9/26/1986, bootleg set 1) + + + dangarbt + Ufo Robo Dangar (9/26/1986, bootleg set 2) + + + dangarj + Ufo Robo Dangar (9/26/1986, Japan) + + + dangbar + Dangerous Bar + + + dangcurv + Dangerous Curves (Ver 2.9 O) + + + dangcurvj + Dangerous Curves (Ver 2.2 J) + + + dangerex + Danger Express (prototype) + + + dangerz + Danger Zone (rev 2) + + + dangerz0 + Danger Zone (rev 0) + + + dangseed + Dangerous Seed (Japan) + + + dankuga + Dan-Ku-Ga (Ver 0.0J 1994/12/13, prototype) + + + daraku + The Fallen Angels (World) / Daraku Tenshi - The Fallen Angels (Japan) + + + dardos + Dardos + + + darius + Darius (World, rev 2) + + + darius2 + Darius II (triple screen) (Japan, rev 1) + + + darius2d + Darius II (dual screen) (Japan, Rev 2) + + + darius2do + Darius II (dual screen) (Japan, Rev 1) + + + dariuse + Darius Extra Version (Japan) + + + dariusg + Darius Gaiden - Silver Hawk (Ver 2.5O 1994/09/19) + + + dariusgj + Darius Gaiden - Silver Hawk (Ver 2.5J 1994/09/19) + + + dariusgu + Darius Gaiden - Silver Hawk (Ver 2.5A 1994/09/19) + + + dariusgx + Darius Gaiden - Silver Hawk Extra Version (Ver 2.7J 1995/03/06) (Official Hack) + + + dariusj + Darius (Japan, rev 1) + + + dariuso + Darius (Japan) + + + dariusu + Darius (US, rev 2) + + + darkadv + Dark Adventure + + + darkedge + Dark Edge (World) + + + darkedgej + Dark Edge (Japan) + + + darkhleg + Dark Horse Legend (GX706 VER. JAA) + + + darkhors + Dark Horse (USA v4.00, bootleg of Jockey Club II) + + + darkmist + The Lost Castle In Darkmist + + + darkplnt + Dark Planet + + + darksea1 + Dark Seal (World revision 1) + + + darkseaj + Dark Seal (Japan) + + + darkseal + Dark Seal (World revision 3) + + + darkseal1 + Dark Seal (World revision 1) + + + darkseal2 + Dark Seal 2 (Japan v2.1) + + + darksealj + Dark Seal (Japan revision 4) + + + darksel2 + Dark Seal 2 (Japan v2.1) + + + darkshad + Dark Shadow + + + darktowr + Dark Tower + + + darkwar + Dark Warrior + + + darthvdr + Darth Vader (bootleg of Space Invaders) + + + darwin + Darwin 4078 (Japan) + + + dashhero + Minna Ganbare! Dash Hero + + + dassaul4 + Desert Assault (US 4 Players) + + + dassault + Desert Assault (US) + + + dassault4 + Desert Assault (US 4 Players) + + + dawg + Dawg Gone Fun + + + dayto2pe + Daytona USA 2: Power Edition (Japan) + + + daytona + Daytona USA (Revision A) + + + daytona2 + Daytona USA 2: Battle on the Edge (Japan, Revision A) + + + daytona93 + Daytona USA + + + daytonagtx + Daytona USA (GTX 2004 Edition) + + + daytonam + Daytona USA (To The MAXX) + + + daytonas + Daytona USA (With Saturn Adverts) + + + daytonase + Daytona USA Special Edition (Revision A) + + + daytonat + Daytona USA (Turbo hack, set 1) + + + daytonata + Daytona USA (Turbo hack, set 2) + + + dazzler + Dazzler + + + dbc + Daai Baan Sing (Hong Kong, V027H) + + + dblagent + Double Agent (3XF5287H04, US) + + + dblaxle + Double Axle (US, Rev 1) + + + dblaxleu + Double Axle (US) + + + dblaxleul + Double Axle (US, Rev 1, Linkable) + + + dblchal + Double Challenge (Version 1.5R, set 1) + + + dblchalc1 + Double Challenge (Version 1.5R, set 2) + + + dblchald1 + Double Challenge (Version 1.5R, set 3) + + + dblchalo + Double Challenge (Version 1.1) + + + dblchalv1 + Double Challenge (Version 1.5R Dual) + + + dblcrown + Double Crown (v1.0.3) + + + dbldolph + Double Dolphins (20000211, NSW/ACT) + + + dbldolphq + Double Dolphins (40003211, Queensland) + + + dbldolphu + Double Dolphins (0351006, US) + + + dbldyn + The Double Dynamites + + + dbldynj + The Double Dynamites (Japan, 13NOV89) + + + dbldynu + The Double Dynamites (US, 13NOV89) + + + dblewing + Double Wings (set 1) + + + dblewinga + Double Wings (set 2) + + + dblewingb + Double Wings (Asia) + + + dblheart + Double Hearts + + + dblplay + Super Baseball Double Play Home Run Derby + + + dblpoint + Double Point + + + dblpointd + Double Point (Dong Bang Electron, bootleg?) + + + dbreed + Dragon Breed (World, M81 hardware) + + + dbreedjm72 + Dragon Breed (Japan, M72 hardware) + + + dbreedm72 + Dragon Breed (World, M72 hardware) + + + dbz + Dragon Ball Z (rev B) + + + dbz2 + Dragon Ball Z 2 - Super Battle + + + dbz2bl + Dragon Ball Z 2 - Super Battle (bootleg) + + + dbza + Dragon Ball Z (rev A) + + + dbzbgck + Dragon Ball Z - Bucchigiri no Chou Kessen + + + dbzvrvs + Dragon Ball Z: V.R. V.S. (Japan, Rev A) + + + dcclub + Dynamic Country Club (World, ROM Based) + + + dcclubfd + Dynamic Country Club (US, Floppy Based, FD1094 317-0058-09d) + + + dcclubj + Dynamic Country Club (Japan, ROM Based) + + + dcheese + Double Cheese + + + dcon + D-Con + + + dcrown + Dream Crown (set 1) + + + dcrowna + Dream Crown (set 2) + + + dd_l2 + Dr. Dude (LA-2) + + + dd_lu1 + Dr. Dude (LU-1) Europe + + + dd_p06 + Dr. Dude (PA-6 WPC) + + + dd_p6 + Dr. Dude (PA-6) + + + dd_p7 + Dr. Dude (PA-7 WPC) + + + dday + D-Day + + + ddayc + D-Day (Centuri) + + + ddaydoo + Chulgyeok D-Day (Korea) + + + ddayjlc + D-Day (Jaleco set 1) + + + ddayjlca + D-Day (Jaleco set 2) + + + ddboy + Dam Dam Boy (on dedicated PCB) + + + ddboya + Dam Dam Boy (on Tsukande Toru Chicchi PCB) + + + ddcrew + D. D. Crew (World, 3 Players) (FD1094 317-0190) + + + ddcrew1 + D. D. Crew (World, 4 Players) (FD1094 317-0187) + + + ddcrew1d + D. D. Crew (World, 4 Players) (bootleg of FD1094 317-0187 set) + + + ddcrew2 + D. D. Crew (World, 2 Players) (FD1094 317-0184) + + + ddcrew2d + D. D. Crew (World, 2 Players) (bootleg of FD1094 317-0184 set) + + + ddcrewbl + D. D. Crew (bootleg) + + + ddcrewd + D. D. Crew (World, 3 Players) (bootleg of FD1094 317-0190 set) + + + ddcrewj + D. D. Crew (Japan, 4 Players) (FD1094 317-0185) + + + ddcrewj2 + D. D. Crew (Japan, 2 Players) (FD1094 317-0182) + + + ddcrewj2d + D. D. Crew (Japan, 2 Players) (bootleg of FD1094 317-0182 set) + + + ddcrewjd + D. D. Crew (Japan, 4 Players) (bootleg of FD1094 317-0185 set) + + + ddcrewu + D. D. Crew (US, 4 Players) (FD1094 317-0186) + + + ddcrewud + D. D. Crew (US, 4 Players) (bootleg of FD1094 317-0186 set) + + + dddoor + Doraemon no Dokodemo Door + + + ddealer + Double Dealer + + + ddenlovj + Don Den Lover Vol. 1 - Shiro Kuro Tsukeyo! (Japan) + + + ddenlovr + Don Den Lover Vol. 1 (Hong Kong) + + + ddenlovrb + Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea, bootleg) + + + ddenlovrk + Don Den Lover Vol. 1 - Heukbaeg-euro Jeonghaja (Korea) + + + dderby + Death Derby + + + ddonpach + DoDonPachi (World, 1997 2/ 5 Master Ver.) + + + ddonpacha + DoDonPachi (2012/02/12 Arrange Ver. 1.1) (hack) + + + ddonpachj + DoDonPachi (Japan, 1997 2/ 5 Master Ver.) + + + ddonpchj + DoDonPachi (Japan) + + + ddp2 + DoDonPachi II - Bee Storm (World, ver. 102) + + + ddp2100 + DoDonPachi II - Bee Storm (World, ver. 100) + + + ddp2100c + DoDonPachi - Feng Bao (China, ver. 100) + + + ddp2100hk + DoDonPachi II - Fung Bou (Hong Kong, ver. 100) + + + ddp2100j + DoDonPachi II (Japan, ver. 100) + + + ddp2100k + DoDonPachi II - Bee Storm (Korea, ver. 100) + + + ddp2100t + DoDonPachi - Feng Bao (Taiwan, ver. 100) + + + ddp2101 + DoDonPachi II - Bee Storm (World, ver. 101) + + + ddp2101c + DoDonPachi - Feng Bao (China, ver. 101) + + + ddp2101hk + DoDonPachi II - Fung Bou (Hong Kong, ver. 101) + + + ddp2101j + DoDonPachi II (Japan, ver. 101) + + + ddp2101k + DoDonPachi II - Bee Storm (Korea, ver. 101) + + + ddp2101t + DoDonPachi - Feng Bao (Taiwan, ver. 101) + + + ddp2c + DoDonPachi - Feng Bao (China, ver. 102) + + + ddp2hk + DoDonPachi II - Fung Bou (Hong Kong, ver. 102) + + + ddp2j + DoDonPachi II (Japan, ver. 102) + + + ddp2k + DoDonPachi II - Bee Storm (Korea, ver. 102) + + + ddp2t + DoDonPachi - Feng Bao (Taiwan, ver. 102) + + + ddp3 + DoDonPachi III (World, 2002.05.15 Master Ver) + + + ddp3a + DoDonPachi Dai-Ou-Jou (V100, second revision) + + + ddp3b + DoDonPachi Dai-Ou-Jou (V100, first revision) + + + ddp3blk + DoDonPachi Dai-Ou-Jou (Black Label) + + + ddpdfk + DoDonPachi Dai-Fukkatsu Ver 1.5 (2008/06/23 MASTER VER 1.5) + + + ddpdfk10 + DoDonPachi Dai-Fukkatsu Ver 1.0 (2008/05/16 MASTER VER) + + + ddpdoj + DoDonPachi Dai-Ou-Jou (Japan, 2002.04.05.Master Ver, 68k Label V101) + + + ddpdoja + DoDonPachi Dai-Ou-Jou (Japan, 2002.04.05.Master Ver, 68k Label V100) + + + ddpdojb + DoDonPachi Dai-Ou-Jou (Japan, 2002.04.05 Master Ver) + + + ddpdojblk + DoDonPachi Dai-Ou-Jou Black Label (Japan, 2002.10.07.Black Ver, newer) + + + ddpdojblka + DoDonPachi Dai-Ou-Jou Black Label (Japan, 2002.10.07.Black Ver, older) + + + ddpdojblkb + DoDonPachi Dai-Ou-Jou Black Label (Japan, 2002.10.07 Black Ver) + + + ddpdojblkbl + DoDonPachi Dai-Ou-Jou Black Label (Japan, 2002.10.07 Black Ver., bootleg Knights of Valour Super Heroes conversion) + + + ddpdojp + DoDonPachi Dai-Ou-Jou (Japan, 2002.04.05 Master Ver, location test) + + + ddpdojt + DoDonPachi Dai-Ou-Jou Tamashii (V201, China) + + + ddpsdoj + DoDonPachi SaiDaiOuJou (2012/ 4/20) + + + ddr2m + Dance Dance Revolution 2nd Mix (GN895 VER. JAA) + + + ddr2mc + Dance Dance Revolution 2nd Mix with beatmaniaIIDX CLUB VERSiON (GE896 VER. JAA) + + + ddr2mc2 + Dance Dance Revolution 2nd Mix with beatmaniaIIDX substream CLUB VERSiON 2 (GE984 VER. JAA) + + + ddr2ml + Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAC) + + + ddr2mla + Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAB) + + + ddr2mlb + Dance Dance Revolution 2nd Mix - Link Ver (GE885 VER. JAA) + + + ddr3ma + Dance Dance Revolution 3rd Mix (GN887 VER. AAA) + + + ddr3mj + Dance Dance Revolution 3rd Mix (GN887 VER. JAA) + + + ddr3mk + Dance Dance Revolution 3rd Mix - Ver.Korea2 (GN887 VER. KBA) + + + ddr3mka + Dance Dance Revolution 3rd Mix - Ver.Korea (GN887 VER. KAA) + + + ddr3mp + Dance Dance Revolution 3rd Mix Plus (G*A22 VER. JAA) + + + ddr4m + Dance Dance Revolution 4th Mix (G*A33 VER. AAA) + + + ddr4mj + Dance Dance Revolution 4th Mix (G*A33 VER. JAA) + + + ddr4mp + Dance Dance Revolution 4th Mix Plus (G*A34 VER. JAA) + + + ddr4mps + Dance Dance Revolution 4th Mix Plus Solo (G*A34 VER. JBA) + + + ddr4ms + Dance Dance Revolution 4th Mix Solo (G*A33 VER. ABA) + + + ddr4msj + Dance Dance Revolution 4th Mix Solo (G*A33 VER. JBA) + + + ddr5m + Dance Dance Revolution 5th Mix (G*A27 VER. JAA) + + + ddra + Dance Dance Revolution (GN845 VER. AAA) + + + ddragn2u + Double Dragon II - The Revenge (US) + + + ddrago3b + Double Dragon 3 - The Rosetta Stone (bootleg) + + + ddragon + Double Dragon (World set 1) + + + ddragon2 + Double Dragon II: The Revenge (World) + + + ddragon2b2 + Double Dragon II: The Revenge (US, bootleg, set 2) + + + ddragon2bl + Double Dragon II: The Revenge (US, bootleg) + + + ddragon2j + Double Dragon II: The Revenge (Japan) + + + ddragon2u + Double Dragon II: The Revenge (US) + + + ddragon3 + Double Dragon 3: The Rosetta Stone (US) + + + ddragon3b + Double Dragon 3: The Rosetta Stone (bootleg) + + + ddragon3j + Double Dragon 3: The Rosetta Stone (Japan) + + + ddragon3p + Double Dragon 3: The Rosetta Stone (prototype) + + + ddragon6809 + Double Dragon (bootleg with 3xM6809, set 1) + + + ddragon6809a + Double Dragon (bootleg with 3xM6809, set 2) + + + ddragona + Double Dragon (World set 2) + + + ddragonb + Double Dragon (bootleg) + + + ddragonbl + Double Dragon (bootleg with HD6309) + + + ddragonbl2 + Double Dragon (bootleg) + + + ddragonbla + Double Dragon (bootleg with MC6803) + + + ddragonj + Double Dragon (Japan set 1) + + + ddragonja + Double Dragon (Japan set 2) + + + ddragonm + Double Dragon (Modular System) + + + ddragonu + Double Dragon (US set 1) + + + ddragonua + Double Dragon (US set 2) + + + ddragonub + Double Dragon (US set 3) + + + ddragonw + Double Dragon (World) + + + ddrbocd + Dance Dance Revolution Best of Cool Dancers (GE892 VER. JAA) + + + ddream95 + Dunk Dream '95 (Japan 1.4, EAM) + + + ddrextrm + Dance Dance Revolution Extreme (G*C36 VER. JAA) + + + ddribble + Double Dribble + + + ddribblep + Double Dribble (prototype?) + + + ddrj + Dance Dance Revolution - Internet Ranking Ver (GC845 VER. JBA) + + + ddrja + Dance Dance Revolution (GC845 VER. JAA) + + + ddrjb + Dance Dance Revolution (GC845 VER. JAB) + + + ddrkara + Dance Dance Revolution Karaoke Mix (GQ921 VER. JBB) + + + ddrkara2 + Dance Dance Revolution Karaoke Mix 2 (GQ947 VER. JAA) + + + ddrkids + Dance Dance Revolution Kids (GQAN4 JAA) + + + ddrmax + DDRMAX - Dance Dance Revolution 6th Mix (G*B19 VER. JAA) + + + ddrmax2 + DDRMAX2 - Dance Dance Revolution 7th Mix (G*B20 VER. JAA) + + + ddrs2k + Dance Dance Revolution Solo 2000 (GC905 VER. AAA) + + + ddrs2kj + Dance Dance Revolution Solo 2000 (GC905 VER. JAA) + + + ddrsbm + Dance Dance Revolution Solo Bass Mix (GQ894 VER. JAA) + + + ddrsn2a + Dance Dance Revolution SuperNOVA 2 (GDJ:A:A:A:2007100800) + + + ddrsn2aa + Dance Dance Revolution SuperNOVA 2 (GDJ:A:A:A:2007071100) + + + ddrsn2j + Dance Dance Revolution SuperNOVA 2 (GDJ:J:A:A:2007100800) + + + ddrsn2ja + Dance Dance Revolution SuperNOVA 2 (GDJ:J:A:A:2007071100) + + + ddrsn2u + Dance Dance Revolution SuperNOVA 2 (GDJ:U:A:A:2007100800) + + + ddrsna + Dance Dance Revolution SuperNOVA (FDH:A:A:A:2006071300) + + + ddrsnj + Dance Dance Revolution SuperNOVA (FDH:J:A:A:2006090600) + + + ddrsnu + Dance Dance Revolution SuperNOVA (FDH:U:A:A:2006072400) + + + ddru + Dance Dance Revolution (GN845 VER. UAA) + + + ddrusa + Dance Dance Revolution USA (G*A44 VER. UAA) + + + ddsom + Dungeons & Dragons: Shadow over Mystara (Europe 960619) + + + ddsom1v4 + Dungeons & Dragons: Shadow over Mystara (1v4, Hack) + + + ddsoma + Dungeons & Dragons: Shadow over Mystara (Asia 960619) + + + ddsomar1 + Dungeons & Dragons: Shadow over Mystara (Asia 960208) + + + ddsomb + Dungeons & Dragons: Shadow over Mystara (Brazil 960223) + + + ddsomcfs + Dungeons & Dragons: Shadow over Mystara (Change the Final Strike condition, Hack) + + + ddsomh + Dungeons & Dragons: Shadow over Mystara (Hispanic 960223) + + + ddsomj + Dungeons & Dragons: Shadow over Mystara (Japan 960619) + + + ddsomjc + Dungeons & Dragons: Shadow over Mystara (T-Chi) + + + ddsomjr1 + Dungeons & Dragons: Shadow over Mystara (Japan 960223) + + + ddsomjr2 + Dungeons & Dragons: Shadow over Mystara (Japan 960206) + + + ddsomr1 + Dungeons & Dragons: Shadow over Mystara (Europe 960223) + + + ddsomr2 + Dungeons & Dragons: Shadow over Mystara (Europe 960209) + + + ddsomr3 + Dungeons & Dragons: Shadow over Mystara (Europe 960208) + + + ddsomu + Dungeons & Dragons: Shadow over Mystara (USA 960619) + + + ddsomud + Dungeons & Dragons: Shadow over Mystara (USA 960619 Phoenix Edition) (bootleg) + + + ddsomudp + Dungeons & Dragons: Shadow over Mystara (Plus, Hack) + + + ddsomur1 + Dungeons & Dragons: Shadow over Mystara (USA 960209) + + + ddtod + Dungeons & Dragons: Tower of Doom (Europe 940412) + + + ddtoda + Dungeons & Dragons: Tower of Doom (Asia 940412) + + + ddtodar1 + Dungeons & Dragons: Tower of Doom (Asia 940113) + + + ddtodd + Dungeons & Dragons: Tower of Doom (Europe 940412 Phoenix Edition) (bootleg) + + + ddtoddp + Dungeons & Dragons: Tower of Doom (Plus, Hack) + + + ddtodh + Dungeons & Dragons: Tower of Doom (Hispanic 940412) + + + ddtodhr1 + Dungeons & Dragons: Tower of Doom (Hispanic 940125) + + + ddtodhr2 + Dungeons & Dragons: Tower of Doom (Hispanic 940113) + + + ddtodj + Dungeons & Dragons: Tower of Doom (Japan 940412) + + + ddtodjr1 + Dungeons & Dragons: Tower of Doom (Japan 940125) + + + ddtodjr2 + Dungeons & Dragons: Tower of Doom (Japan 940113) + + + ddtodr1 + Dungeons & Dragons: Tower of Doom (Europe 940113) + + + ddtodu + Dungeons & Dragons: Tower of Doom (USA 940125) + + + ddtodur1 + Dungeons & Dragons: Tower of Doom (USA 940113) + + + ddungeon + Dangerous Dungeons (set 1) + + + ddungeone + Dangerous Dungeons (set 2) + + + ddux + Dynamite Dux (set 3, World) (FD1094 317-0096) + + + ddux1 + Dynamite Dux (set 1, World) (8751 317-0095) + + + dduxbl + Dynamite Dux (Datsu bootleg) + + + dduxd + Dynamite Dux (set 3, World) (bootleg of FD1094 317-0096 set) + + + dduxj + Dynamite Dux (set 2, Japan) (FD1094 317-0094) + + + dduxjd + Dynamite Dux (set 2, Japan) (bootleg of FD1094 317-0094 set) + + + ddz + Dou Di Zhu + + + deadang + Dead Angle + + + deadconj + Dead Connection (Japan) + + + deadconx + Dead Connection (World) + + + deadconxj + Dead Connection (Japan) + + + deadeye + Dead Eye + + + deadweap + Deadly Weapon + + + dealer + The Dealer + + + dealracl + The Dealer (ACL) + + + deathbrd + Death Brade (Japan ver JM-3) + + + deathcox + Death Crimson OX (USA) + + + deathcoxj + Death Crimson OX (Japan, Rev A) + + + deathcoxo + Death Crimson OX (Japan) + + + deathrac + Death Race + + + deathsm2 + Deathsmiles II: Makai no Merry Christmas (2009/10/14 MASTER VER 4.00) + + + deathsml + Deathsmiles (2007/10/09 MASTER VER) + + + decathlt + Decathlete (JUET 960709 V1.001) + + + decathlto + Decathlete (JUET 960424 V1.000) + + + decodark + DECO Cassette System ROM Multigame (Darksoft, v17) + + + decodark15 + DECO Cassette System ROM Multigame (Darksoft, v15) + + + decodark16 + DECO Cassette System ROM Multigame (Darksoft, v16) + + + decomult + DECO Cassette System ROM Multigame (David Widel) + + + deepfrz + Deep Freeze (10282311, NSW/ACT) + + + deepfrzu + Deep Freeze (0154081, US) + + + deerhunt + Deer Hunting USA V4.3 + + + deerhunta + Deer Hunting USA V4.2 + + + deerhuntb + Deer Hunting USA V4.0 + + + deerhuntc + Deer Hunting USA V3 + + + deerhuntd + Deer Hunting USA V2 + + + deerhunte + Deer Hunting USA V1 + + + deerhuntj + Deer Hunting USA V4.4.1 (Japan) + + + defcmnd + Defense Command (bootleg of Defender) + + + defence + Defence Command (bootleg of Defender) + + + defender + Defender (Red label) + + + defenderb + Defender (Blue label) + + + defenderg + Defender (Green label) + + + defenderj + T.T Defender + + + defenderom + Operacion Defender (bootleg of Defender) + + + defenderw + Defender (White label) + + + defendg + Defender (Green label) + + + defendw + Defender (White label) + + + defense + Defense (System 16B, FD1089A 317-0028) + + + defenseb + Defense (bootleg of Defender) + + + defndjeu + Defender (bootleg) + + + deltabel + Delta Belle (0252532, US) + + + deltaqn + Delta Queen (20185211, NSW/ACT) + + + deltrace + Delta Race + + + deluxe4u + Deluxe 4 U (ver. 0107, 07/01/2000) + + + deluxe5 + Deluxe 5 (ver. 0107, 07/01/2000, set 1) + + + deluxe5a + Deluxe 5 (ver. 0107, 07/01/2000, set 2) + + + deluxe5b + Deluxe 5 (ver. 0107, 07/01/2000, set 3) + + + demndrgn + Demons & Dragons (prototype) + + + demoderb + Demolition Derby + + + demoderbc + Demolition Derby (cocktail) + + + demoderm + Demolition Derby (MCR-3 Mono Board Version) + + + demofist + Demolish Fist + + + demon + Demon + + + demoneye + Demoneye-X + + + demonwl1 + Demon's World - Horror Story (Taito license) + + + demonwld + Demon's World (World) / Horror Story (Japan) (set 1) + + + demonwld1 + Demon's World (World) / Horror Story (Japan) (set 2) + + + demonwld2 + Demon's World (World) / Horror Story (Japan) (set 3) + + + demonwld3 + Demon's World (World) / Horror Story (Japan) (set 4) + + + demonwld4 + Demon's World (World) / Horror Story (Japan) (set 5) + + + demonwld5 + Demon's World (World) / Horror Story (Japan) (set 6) + + + dendego + Densha de GO! (Ver 2.3 J) + + + dendego2 + Densha de GO! 2 Kousoku-hen (Ver 2.5 J) + + + dendego23k + Densha de GO! 2 Kousoku-hen 3000-bandai (Ver 2.20 J) + + + dendego3 + Densha de GO 3! Tsukin-hen (V2.03J) + + + dendegoa + Densha de GO! (Ver 2.2 J) + + + dendegox + Densha de GO! EX (Ver 2.4 J) + + + denjinmk + Denjin Makai (set 1) + + + denjinmka + Denjin Makai (set 2) + + + denseib + Ghost Chaser Densei (SNES bootleg, set 1) + + + denseib2 + Ghost Chaser Densei (SNES bootleg, set 2) + + + depthch + Depthcharge + + + depthcho + Depthcharge (older) + + + depthv1 + Depthcharge (older) + + + derbyo2k + Derby Owners Club 2000 Ver.2 (Japan, Rev A) + + + derbyoc + Derby Owners Club (Japan, Rev B) + + + derbyoc2 + Derby Owners Club II Ver.2.1 (Japan, Rev B) + + + derbyocw + Derby Owners Club World Edition EX (Rev D) + + + deroon + Deroon DeroDero (earlier, set 1) + + + deroon2 + Deroon DeroDero / Tecmo Stackers + + + deroona + Deroon DeroDero (earlier, set 2) + + + desert + Desert Tank + + + desertbr + Desert Breaker (World) (FD1094 317-0196) + + + desertbrd + Desert Breaker (World) (bootleg of FD1094 317-0196 set) + + + desertbrj + Desert Breaker (Japan) (FD1094 317-0194) + + + desertbrjd + Desert Breaker (Japan) (bootleg of FD1094 317-0194 set) + + + desertdn + Desert Dan + + + desertgu + Desert Gun + + + desertwr + Desert War / Wangan Sensou (ver 1.0) + + + destdrby + Destruction Derby + + + desterth + Destination Earth (bootleg of Lunar Rescue) + + + destiny + Destiny - The Fortuneteller (USA) + + + destroyr + Destroyer (Atari, version O2) + + + destroyr1 + Destroyer (Atari, version O1) + + + destryer + Destroyer (Cidelsa, set 1) + + + destryera + Destroyer (Cidelsa, set 2) + + + detatwin + Detana!! Twin Bee (Japan, version J) + + + detest + Data East Test Chip + + + deucesw2 + Deuces Wild 2 - American Heritage (Ver. 2.02F) + + + devilfsg + Devil Fish (Galaxian hardware, bootleg[Q]) + + + devilfsh + Devil Fish (Scramble hardware) + + + devilfshg + Devil Fish (Galaxian hardware) + + + devilfshgb + Devil Fish (Galaxian hardware, bootleg) + + + devilw + Devil World + + + devstor2 + Devastators (ver. X) + + + devstor3 + Devastators (ver. V) + + + devstors + Devastators (ver. Z) + + + devstors2 + Devastators (ver. 2) + + + devstorsv + Devastators (ver. V) + + + devstorsx + Devastators (ver. X) + + + devzone + Devil Zone + + + devzone2 + Devil Zone (easier) + + + df_djpkr + Double Joker Poker (45%-75% payout) + + + dfeverg + Dancing Fever Gold (J 000821 V2.001) + + + dfeveron + Dangun Feveron (Japan, 98/09/17 VER.) + + + dfjail + The Destroyer From Jail (Korea) + + + dfkbl + DoDonPachi Dai-Fukkatsu Black Label (2010/1/18 BLACK LABEL) + + + dfndr_l4 + Defender (L-4) + + + dfruit + Fruit Dream (Japan, Ver. 1.20) + + + dfruita + Fruit Dream (Japan, Ver. 1.10) + + + dh_lf2 + Dirty Harry (LF-2) + + + dh_lx2 + Dirty Harry (LX-2) + + + dharma + Dharma Doujou + + + dharmag + Dharma Doujou (Germany) + + + dharmaj + Dharma Doujou (Japan) + + + dharmak + Dharma Doujou (Korea) + + + dhunting + Dream Hunting (US) + + + di4ever + Diamonds Forever (10105011, NSW/ACT) + + + diaelite + Diana Elite + + + diamdest + Diamond Destiny (AHG1533, US) + + + diamdove + Diamond Dove (0101018V, NSW/ACT) + + + diamhrts + Diamonds & Hearts - Power Pay (10229311, NSW/ACT) + + + diamond + Diamond Run + + + diamondking + Diamond King (with Euro support) + + + diamondkinp + Diamond King (without Euro support) + + + diamondp + Diamond Lady + + + diamondpf + Diamond Lady (French) + + + diamondpg + Diamond Lady (German) + + + diamrun + Diamond Run + + + dibif727 + Diana Bifuca (v7.27) + + + dibif743 + Diana Bifuca (v7.43) + + + dibifpspdp + Diana Bifuca (unknown version, ProSPDP based) + + + dibifuca + Diana Bifuca (v9.25) + + + dicegame + Dice - The Dice Game! + + + dicemstr + Dice Master + + + diehard + Die Hard Arcade (UET 960515 V1.000) + + + dietgo + Diet Go Go (Europe v1.1 1992.09.26, set 1) + + + dietgoe + Diet Go Go (Europe v1.1 1992.09.26, set 2) + + + dietgoea + Diet Go Go (Europe v1.1 1992.09.26, set 3) + + + dietgoeb + Diet Go Go (Europe v1.1 1992.08.04) + + + dietgoj + Diet Go Go (Japan v1.1 1992.09.26) + + + dietgou + Diet Go Go (USA v1.1 1992.09.26) + + + digamart + Diga Mart (rev. A) + + + digdug + Dig Dug (rev 2) + + + digdug1 + Dig Dug (rev 1) + + + digdug2 + Dig Dug II (New Ver.) + + + digdug2o + Dig Dug II (Old Ver.) + + + digduga1 + Dig Dug (Atari, rev 1) + + + digdugat + Dig Dug (Atari, rev 2) + + + digdugat1 + Dig Dug (Atari, rev 1) + + + digdugb + Dig Dug (rev 1) + + + digger + Digger + + + diggerc + Digger (CVS) + + + diggerma + Digger Man (prototype) + + + digsid + Dig Dug (manufactured by Sidam) + + + dimahoo + Dimahoo (Europe 000121) + + + dimahoou + Dimahoo (USA 000121) + + + dimahoud + Dimahoo (USA 000121 Phoenix Edition) (bootleg) + + + dimeye + Diamond Eyes (10129211, ASP) + + + dimeyece + Diamond Eyes - Cash Express (0152039, US) + + + dimeyeu + Diamond Eyes (0251312, US) + + + dimtouch + Diamond Touch (0400433V, NSW/ACT) + + + dindice + Dice game + + + diner_f2 + Diner (LF-2) French + + + diner_g2 + Diner (LG-2) German + + + diner_l1 + Diner (LU-1) Europe + + + diner_l2 + Diner (LU-2) Europe + + + diner_l3 + Diner (LA-3) + + + diner_l4 + Diner (LA-4) + + + diner_p0 + Diner (PA-0 prototype) + + + dingo + Dingo + + + dingoe + Dingo (encrypted) + + + dino + Cadillacs and Dinosaurs (World 930201) + + + dino1v3 + Cadillacs and Dinosaurs (1v3, Hack) + + + dino3j + Cadillacs: Kyouryuu Shin Seiki (Three Prohibitions, Hack) + + + dinoa + Cadillacs and Dinosaurs (Asia TW 930223) + + + dinodino + Dino Dino (Ver. A1.1, 01/13/2005) + + + dinods + Cadillacs and Dinosaurs (God of War, Hack) + + + dinodw + Cadillacs and Dinosaurs (Warriors, Hack) + + + dinoeggs + Dinosaur Eggs (R02) + + + dinoeh + Cadillacs and Dinosaurs (hack, World 930201) + + + dinofmly + Dino Family + + + dinofmlya + Dino Family (Portuguese, Tangasoft license) + + + dinofw + Cadillacs and Dinosaurs (Framework 2022 Series, Hack) + + + dinoh + Cadillacs and Dinosaurs (bootleg, Asia TW 930223) + + + dinohc + Cadillacs and Dinosaurs (Chinese bootleg, Asia TW 930223) + + + dinohunt + Dinosaur Hunter (Chinese bootleg of Cadillacs and Dinosaurs) + + + dinoj + Cadillacs: Kyouryuu Shin Seiki (Japan 930201) + + + dinojd + Cadillacs and Dinosaurs (GOTVG 10th Anniversary, Hack) + + + dinojj + Cadillacs and Dinosaurs (Contest, Hack) + + + dinoki25 + Dinosaur King - D-Team VS. the Alpha Fortress (Export, Ver 2.500) (MDA-C0047) + + + dinoki4 + Kodai Ouja Kyouryuu King - Mezame yo! Arata-naru Chikara!! (Japan, Ver 4.000) (MDA-C0061) + + + dinokich + Konglongwang - D-Kids VS Alpha Yaosai (China, Ver 2.501) (MDA-C0081) + + + dinoking + Dinosaur King (USA) + + + dinokior + Dinosaur King - Operation: Dinosaur Rescue (USA, Export) (MDA-C0021) + + + dinokr + Cadillacs and Dinosaurs (Crazy BBQ, Hack) + + + dinoly + Cadillacs and Dinosaurs (Purgatory, Hack) + + + dinopic + Cadillacs and Dinosaurs (bootleg with PIC16C57, set 1) + + + dinopic2 + Cadillacs and Dinosaurs (bootleg with PIC16C57, set 2) + + + dinopic3 + Cadillacs and Dinosaurs (bootleg with PIC16C57, set 3) + + + dinopic4 + Cadillacs and Dinosaurs (bootleg with PIC16C57, set 4) + + + dinopic5 + Cadillacs and Dinosaurs (bootleg with PIC16C57, set 5) + + + dinoplus + Cadillacs and Dinosaurs (Judgement Day, Hack) + + + dinore + Cadillacs and Dinosaurs Readjusted (Hack, v1.4) + + + dinorex + Dino Rex (World) + + + dinorexj + Dino Rex (Japan) + + + dinorexu + Dino Rex (US) + + + dinosa6 + Dinosaur (10118811, NSW/ACT) + + + dinosdj + Cadillacs and Dinosaurs (Triassic, Hack) + + + dinosj + Cadillacs and Dinosaurs (Century, Hack) + + + dinoss + Cadillacs and Dinosaurs (Competition, Hack) + + + dinosyn + Cadillacs and Dinosaurs (2020 Commemorative, Hack) + + + dinot + Cadillacs and Dinosaurs Turbo 97 (bootleg, Asia TW 930223, set 1) + + + dinotj + Cadillacs and Dinosaurs (General, Hack) + + + dinotpic + Cadillacs and Dinosaurs Turbo 97 (bootleg, Asia TW 930223, set 2) + + + dinotw + Cadillacs and Dinosaurs (King, Hack) + + + dinou + Cadillacs and Dinosaurs (USA 930201) + + + dinowj + Cadillacs and Dinosaurs (Random Enemies, Hack) + + + dinoxz + Cadillacs and Dinosaurs (Scream, Hack) + + + dinoyz + Cadillacs and Dinosaurs (Dragon, Hack) + + + diola827 + Diana Olakoa (v8.27) + + + diolakoa + Diana Olakoa (v8.38) + + + dirtdash + Dirt Dash (World, DT2 Ver.B) + + + dirtdasha + Dirt Dash (World, DT2 Ver.A) + + + dirtdashj + Dirt Dash (Japan, DT1 Ver.A) + + + dirtdvls + Dirt Devils (Export, Revision A) + + + dirtdvlsau + Dirt Devils (Australia, Revision A) + + + dirtdvlsg + Dirt Devils (Export, Ver. G?) + + + dirtdvlsj + Dirt Devils (Japan, Revision A) + + + dirtdvlsu + Dirt Devils (USA, Revision A) + + + dirtfoxj + Dirt Fox (Japan) + + + dirtypig + Dirty Pigskin Football + + + disco + Disco No.1 + + + disco79 + Disco '79 + + + disco_l1 + Disco Fever (L-1) + + + discoboy + Disco Boy + + + discoboyp + Disco Boy (Promat license) + + + discodan + Disco Dancing + + + discof + Disco No.1 (Rev.F) + + + ditrio + Diamond Trio (set 1) + + + divebomb + Kyuukoukabakugekitai - Dive Bomber Squad (Japan, prototype) + + + diverboy + Diver Boy + + + djboy + DJ Boy (World) + + + djboyj + DJ Boy (Japan, set 1) + + + djboyja + DJ Boy (Japan, set 2) + + + djboyu + DJ Boy (US, set 1) + + + djboyua + DJ Boy (US, set 2) + + + djgirl + DJ Girl (Promat license) + + + dkaccel + Donkey Kong Accelerate + + + dkbanana + Donkey Kong Banana Kingdom (host) + + + dkbanans + Donkey Kong Banana Kingdom (satellite) + + + dkbattle + Dinoking Battle + + + dkcbarrel + Donkey Kong Crazy Barrels Edition + + + dkchrmx + Donkey Kong Christmas Remix (Hack) + + + dkchrte + Donkey Kong Christmas Tournament Edition (Hack) + + + dkduel + Donkey Kong Duel + + + dkfreerun + Donkey Kong Freerun Edition + + + dkgenm72 + Daiku no Gensan (Japan, M72) + + + dkgensan + Daiku no Gensan (Japan, M84 hardware) + + + dkgensanm72 + Daiku no Gensan (Japan, M72 hardware) + + + dkgensanm82 + Daiku no Gensan (Japan, M82 hardware) + + + dkhrthnt + Donkey Kong Hearthunt + + + dking + Donkey King + + + dkingjr + Donkey King Jr. (bootleg of Donkey Kong Jr.) + + + dkjfever + Donkey Kong Jungle Fever (Ver.1.000, 2005/08/03) + + + dkkids + Dinoking Kids + + + dkmb + Donkey Kong / Donkey Kong Jr / Mario Bros + + + dkngjnrb + Donkey Kong Junior (bootleg[Q]) + + + dkngjnrj + Donkey Kong Junior (Japan[Q]) + + + dkong + Donkey Kong (US set 1) + + + dkong3 + Donkey Kong 3 (US) + + + dkong3abl + Donkey Kong 3 (bootleg on Ambush hardware) + + + dkong3b + Donkey Kong 3 (bootleg on Donkey Kong Jr. hardware) + + + dkong3hs + Donkey Kong High Score Kit (hack,V1.0a) + + + dkong3j + Donkey Kong 3 (Japan) + + + dkong40y + Donkey Kong Anniversary Edition + + + dkongbp + Donkey Kong Barrelpalooza v1.06 + + + dkongbp1 + Donkey Kong Barrelpalooza v1.07 + + + dkongchm + Donkey Kong League Championship v1.00 + + + dkongchm1 + Donkey Kong Championship Edition v1.01 + + + dkongddk + Double Donkey Kong (hack,V1.2) + + + dkongf + Donkey Kong Foundry (hack) + + + dkonghrd + Donkey Kong (hard kit) + + + dkonghs + Donkey Kong High Score Kit (hack,V1.2) + + + dkongike + Donkey Kong/DK (Japan) (hack,V1.1 IKE) + + + dkongitd + Donkey Kong In the Dark v1.02 + + + dkongj + Donkey Kong (Japan set 1) + + + dkongjnrj + Donkey Kong Junior (Japan set F-1) + + + dkongjo + Donkey Kong (Japan set 2) + + + dkongjo1 + Donkey Kong (Japan set 3) + + + dkongjp + Donkey Kong (Japan set 1) + + + dkongjr + Donkey Kong Junior (US set F-2) + + + dkongjr2 + Donkey Kong Junior (US, bootleg?) + + + dkongjrb + Donkey Kong Jr. (bootleg) + + + dkongjrc + Donkey Kong/JR (combo) (hack,V1.2) + + + dkongjre + Donkey Kong Junior (E kit) + + + dkongjrhs + Donkey Junior High Score Kit (hack,V1.2) + + + dkongjrj + Donkey Kong Jr. (Japan) + + + dkongjrm + Donkey Kong Jr. (bootleg on Moon Cresta hardware, set 1) + + + dkongjrmc + Donkey Kong Jr. (bootleg on Moon Cresta hardware, set 2) + + + dkongjrpb + Donkey Kong Junior (P kit, bootleg) + + + dkongo + Donkey Kong (US set 2) + + + dkongotr + Donkey Kong On the Run v1.02 + + + dkongp + Donkey Kong (Patched) + + + dkongpac + Donkey Kong (Pacman Graphics) + + + dkongpe + Donkey Kong: Pauline Edition Rev 5 (2013-04-22) + + + dkongran1 + Donkey Kong Randomized Edition v1.01 + + + dkongrev + Donkey Kong Reverse (Hack) + + + dkongss + Donkey Kong Skip Start v1.00 + + + dkongst + Donkey Kong Springs Trainer + + + dkongst2 + Donkey Kong Springs Trainer 2 + + + dkongte + Donkey Kong Tournament Edition (Hack) + + + dkongtj + Donkey Kong Twisted Jungle v1.05 + + + dkongx + Donkey Kong II: Jumpman Returns (hack, V1.2) + + + dkongx11 + Donkey Kong II: Jumpman Returns (hack, V1.1) + + + dkpace + Donkey Kong Pace + + + dkpmx + Donkey Kong Pac-Man Crossover + + + dkrainbow + Donkey Kong - Arcade Rainbow (hack) + + + dkrdemo + Donkey Kong Remix (Demo) + + + dkremix + Donkey Kong Remix (Hack) + + + dkrndmzr + Donkey Kong RNDMZR + + + dkspkyrmx + Donkey Kong Spooky Remix (Hack) + + + dkspkyte + Donkey Kong Spooky Tournament Edition (Hack) + + + dktrainer + Donkey Kong Trainer 1.01 + + + dkwizardry + Donkey Kong Wizardry + + + dlair + Dragon's Lair (US Rev. F2) + + + dlair2 + Dragon's Lair 2: Time Warp (US v3.19) + + + dlair2_200 + Dragon's Lair 2: Time Warp (US v2.00, AMOA prototype) + + + dlair2_211 + Dragon's Lair 2: Time Warp (US v2.11) + + + dlair2_300 + Dragon's Lair 2: Time Warp (US v3.00) + + + dlair2_312 + Dragon's Lair 2: Time Warp (Europe v3.12) + + + dlair2_314 + Dragon's Lair 2: Time Warp (US v3.14) + + + dlair2_315 + Dragon's Lair 2: Time Warp (US v3.15) + + + dlair2_315s + Dragon's Lair 2: Time Warp (Spanish v3.15) + + + dlair2_316e + Dragon's Lair 2: Time Warp (Europe v3.16) + + + dlair2_317e + Dragon's Lair 2: Time Warp (Europe v3.17) + + + dlair2_318 + Dragon's Lair 2: Time Warp (US v3.18) + + + dlair2_319e + Dragon's Lair 2: Time Warp (Europe v3.19) + + + dlair2_319s + Dragon's Lair 2: Time Warp (Spanish v3.19) + + + dlair_1 + Dragon's Lair (US Beta 1, Pioneer PR-7820) + + + dlair_2 + Dragon's Lair (US Beta 2?, Pioneer PR-7820) + + + dlaira + Dragon's Lair (US Rev. A, Pioneer PR-7820) + + + dlairb + Dragon's Lair (US Rev. B, Pioneer PR-7820) + + + dlairc + Dragon's Lair (US Rev. C, Pioneer PR-7820) + + + dlaird + Dragon's Lair (US Rev. D, Pioneer LD-V1000) + + + dlaire + Dragon's Lair (US Rev. E) + + + dlairf + Dragon's Lair (US Rev. F) + + + dland + Dream Land / Super Dream Land (bootleg of Bubble Bobble) + + + dleague + Dynamite League (US) + + + dleaguej + Dynamite League (Japan) + + + dleuro + Dragon's Lair (European) + + + dleuroalt + Dragon's Lair (European, alternate) + + + dlital + Dragon's Lair (Italian) + + + dm_h5 + Demolition Man (H-5) + + + dm_h6 + Demolition Man (H-6) + + + dm_la1 + Demolition Man (LA-1) + + + dm_lx3 + Demolition Man (LX-3) + + + dm_lx4 + Demolition Man (LX-4) + + + dm_pa2 + Demolition Man (PA-2) + + + dm_px5 + Demolition Man (PX-5) + + + dmainevent + Main Event (Destron) + + + dmdfever + Diamond Fever (0200302V, NSW/ACT) + + + dmndhrt + Diamond Heart (v1.06) + + + dmndhrtn + Diamond Heart New (v20.0) + + + dmndrby + Diamond Derby (Win bet, newer) + + + dmndrbya + Diamond Derby (Win bet, original) + + + dmndrbybl + Diamond Derby (Quinella bet, EDG Impeuropex bootleg) + + + dmnfrnt + Demon Front / Moyu Zhanxian (68k label V105, ROM M105XX 08/05/02) (ARM label V105, ROM 08/05/02 S105XX) + + + dmnfrnt102 + Demon Front / Moyu Zhanxian (68k label V102, ROM M102XX 06/19/02) (ARM label V102, ROM 05/24/02 S101XX) + + + dmnfrnt103 + Demon Front / Moyu Zhanxian (68k label V103, ROM M103XX 07/05/02) (ARM label V103, ROM 07/05/02 S103XX) + + + dmnfrntpcb + Demon Front V1.1 / Moyu Zhanxian V1.1 (68k label V107KR, ROM M107KR 11/03/03) (ARM label V106KR, ROM 10/16/03 S106KR) (JAMMA PCB) + + + dmnfrntpcba + Demon Front (VM105XX, S105XX, China, Single PCB Version) + + + dmodrbcc + Demolition Derby (Chicago Coin) + + + dmx + Dance Maniax (G*874 VER. JAA) + + + dmx2m + Dance Maniax 2nd Mix (G*A39 VER. JAA) + + + dmx2majp + Dance Maniax 2nd Mix Append J-Paradise (G*A38 VER. JAA) + + + dmxa + Dance Maniax (G*874 VER. AAA) + + + dnbanban + Dora Neco BanBan + + + dncfrks + Dance Freaks (G*874 VER. KAA) + + + dncsprt + Dancing Spirit (Russia) (Atronic) + + + dngrtrck + Danger Track (bootleg of Rally X) + + + dnmtdeka + Dynamite Deka (J 960515 V1.000) + + + doa + Dead or Alive (Model 2B, Revision C) + + + doa2 + Dead or Alive 2 + + + doa2a + Dead or Alive 2 (Rev A) + + + doa2m + Dead or Alive 2 Millennium + + + doaa + Dead or Alive (Model 2A, Revision A) + + + doaab + Dead or Alive (Model 2A) + + + doaae + Dead or Alive (Export, Model 2A, Revision A) + + + doab + Dead or Alive (Model 2B, Revision B) + + + doapp + Dead Or Alive ++ (Japan/USA/Export) + + + doappk + Dead Or Alive ++ (Korea) + + + dobouchn + Dobou-Chan (ver JAA) + + + docastl2 + Mr. Do's Castle (set 2) + + + docastle + Mr. Do's Castle (set 1) + + + docastle2 + Mr. Do's Castle (set 2) + + + docastleo + Mr. Do's Castle (older) + + + docastlo + Mr. Do's Castle (older) + + + docchift + Docchi Fighter (Japan, ver 1.02) + + + dockman + Dock Man (set 1) + + + dockmanb + Dock Man (set 2) + + + dockmanc + Dock Man (set 3) + + + dodgecty + Dodge City (9131-02, U9-2T) + + + dodgectya + Dodge City (9131-02, U9-2B) + + + dodgectyba + Dodge City (2131-82, U5-0D) + + + dodgectybb + Dodge City (2131-82, U5-50) + + + dodgectybc + Dodge City (2131-82, U5-0 GT) + + + dodgem + Dodgem + + + dodgeman + Dodge Man + + + dodghero + Minna Atsumare! Dodge Hero + + + dogfgt + Acrobatic Dog-Fight + + + dogfgtj + But-ten Ohara's Suit-Cha Luck-a Dog-Fight (Japan) + + + dogfgtu + Acrobatic Dog-Fight (USA) + + + dogfight + Dog Fight (Thunderbolt) + + + dogfightp + Dog Fight (Orca, prototype) + + + dogosokb + Dogou Souken (Joystick hack bootleg) + + + dogosoke + Dogou Souken + + + dogosokj + Dogou Souken (joystick hack bootleg) + + + dogpatch + Dog Patch + + + dogstdx + dogstation Deluxe + + + dogyuun + Dogyuun + + + dogyuuna + Dogyuun (older set) + + + dogyuunb + Dogyuun (oldest set) + + + dogyuunt + Dogyuun (10/9/1992 location test) + + + dogyuunto + Dogyuun (8/25/1992 location test) + + + dojokkot + Dojokko Tsukami (Japan, ver 1.02) + + + dokaben + Dokaben (Japan) + + + dokaben2 + Dokaben 2 (Japan) + + + dokidoki + Doki Doki Penguin Land + + + dokodemo + Doko Demo Issho: Toro's Fishing (Ver.1.00, 2006/06/07) + + + dokyusei + Mahjong Doukyuusei + + + dokyusp + Mahjong Doukyuusei Special + + + dollyptn + Dolly Parton + + + dolmen + Dolmen + + + dolmenk + Goindol (Afega) + + + dolphin + Dolphin Blue + + + dolphinp + Dolphin's Pearl (set 1) + + + dolphntr + Dolphin Treasure (0200424V, NSW/ACT) + + + dolphntra + Dolphin Treasure (0100424V, NSW/ACT) + + + dolphntrb + Dolphin Treasure (0100388V, NSW/ACT) + + + dolphntrce + Dolphin Treasure - Cash Express (AHG1607, US) + + + dolphntrcea + Dolphin Treasure - Cash Express (AHG1606, US) + + + dolphntrceb + Dolphin Treasure - Cash Express (AHG1519, US) + + + dolphntrq + Dolphin Treasure (0101250V, Queensland) + + + dolphntru + Dolphin Treasure (FHG4076-02, US) + + + dolphntrua + Dolphin Treasure (FHG4077-02, US) + + + doltra6 + Dolphin Treasure (10177911, ASP) + + + doltra6nz + Dolphin Treasure (20265311, New Zealand) + + + domino + Domino Man (set 1) + + + domino2 + Domino II (Bingo) + + + dominoa + Domino Man (set 2) + + + dominob + Domino Block + + + dominobv2 + Domino Block ver.2 + + + dominos + Dominos + + + dominos4 + Dominos 4 (Cocktail) + + + dommy + Dommy + + + doncdoon + Hanabi de Doon! - Don-chan Puzzle + + + dondenmj + Don Den Mahjong (Japan) + + + dondokdj + Don Doko Don (Japan) + + + dondokdu + Don Doko Don (US) + + + dondokod + Don Doko Don (World, rev 1) + + + dondokodj + Don Doko Don (Japan, rev 1) + + + dondokodu + Don Doko Don (US, rev 1) + + + donghaer + Donggul Donggul Haerong + + + donight + Mr.Do's Nightmare (hack by Krazy Ivan) + + + donpachi + DonPachi (US) + + + donpachihk + DonPachi (Hong Kong) + + + donpachij + DonPachi (Japan) + + + donpachijs + DonPachi (Japan, Satsuei version) + + + donpachikr + DonPachi (Korea) + + + donpachj + DonPachi (Japan) + + + donpachk + DonPachi (Korea) + + + donpepito + Hola Don Pepito + + + doodlejmp + Doodle Jump Arcade (v1.16) + + + dorachan + Dora-chan (Japan) + + + doraemon + Doraemon no Eawase Montage (prototype) + + + dorodon + Dorodon (set 1) + + + dorodon2 + Dorodon (set 2) + + + dorunru2 + Do! Run Run (set 2) + + + dorunruc + Do! Run Run (Do's Castle hardware) + + + dorunrun + Do! Run Run (set 1) + + + dorunrun2 + Do! Run Run (set 2) + + + dorunrunc + Do! Run Run (Do's Castle hardware, set 1) + + + dorunrunca + Do! Run Run (Do's Castle hardware, set 2) + + + dotriku2 + Dottori Kun (old version) + + + dotrikun + Dottori Kun (new version) + + + dotrikun2 + Dottori Kun (old version) + + + dotriman + Dottori-Man Jr. + + + dotron + Discs of Tron (Upright, 10/4/83) + + + dotrona + Discs of Tron (Upright, 9/22/83) + + + dotrone + Discs of Tron (Environmental) + + + dotronep + Discs of Tron (Environmental, prototype, 8/9/83) + + + doubldsp + Double Dragon (Special 2017, Hack) + + + double8l + Double 8 Line + + + doubled + Double Dragon One (Demo) + + + doubledp + Double Dragon (Plus, Hack) + + + doubledr + Double Dragon (Neo-Geo) + + + doubledrbh + Double Dragon (Boss hack) + + + doubledt + Double Dragon (Optimized, Hack) + + + douni + Mr. Do! vs. Unicorns (Japan) + + + dowild + Mr. Do's Wild Ride + + + downhill + Downhill Bikers (World, DH2 Ver. A) + + + downhillu + Downhill Bikers (US, DH3 Ver. A) + + + downtowj + DownTown (joystick hack) + + + downtown + DownTown / Mokugeki (set 1) + + + downtown2 + DownTown / Mokugeki (set 2) + + + downtownj + DownTown / Mokugeki (joystick hack) + + + downtownp + DownTown / Mokugeki (prototype) + + + dpatrol + Desert Patrol + + + dpatrola + Desert Patrol (set 2) + + + dphl + Draw Poker HI-LO (M.Kramer) + + + dphla + Draw Poker HI-LO (Alt) + + + dphljp + Draw Poker HI-LO (Japanese) + + + dphlunka + Draw Poker HI-LO (unknown, rev 1) + + + dphlunkb + Draw Poker HI-LO (unknown, rev 2) + + + dplay + Double Play + + + dpoker + Draw Poker (Bally, 03-20) + + + dquizgo + Date Quiz Go Go (Korea) + + + dquizgo2 + Date Quiz Go Go Episode 2 + + + drac_l1 + Bram Stoker's Dracula (L-1) + + + drac_p11 + Bram Stoker's Dracula (P-11) + + + draco + Draco + + + dracula + Dracula (Pinball) + + + dragchrn + Dragon Chronicles (DC001 Ver. A) + + + dragfist + Dragonfist + + + dragnblz + Dragon Blaze + + + dragnfly + Dragonfly (Konami Endeavour, Russia) + + + dragngun + Dragon Gun (US) + + + dragngunj + Dragon Gun (Japan) + + + dragntr + Dragon Treasure (Rev B) (GDS-0030B) + + + dragntr2 + Dragon Treasure 2 (Rev A) (GDS-0037A) + + + dragntr3 + Dragon Treasure 3 (Rev A) (GDS-0041A) + + + dragntra + Dragon Treasure (Rev A) (GDS-0030A) + + + dragon + Dragon + + + dragonmj + Dragon Mahjong (Ver 1.20) + + + dragonmj103 + Dragon Mahjong (Ver 1.03) + + + dragonsh + Dragon's Heaven (development board) + + + dragoona + Dragoon Might (ver AAB) + + + dragoonj + Dragoon Might (ver JAA) + + + dragrace + Drag Race + + + dragsphr + Dragon Sphere + + + dragwld2 + Zhong Guo Long II (ver. 100C, China) + + + drail + Dream Rail + + + draillov + Dream Rail Lovely + + + drakor + Drakor + + + drakton + Drakton (DK conversion) + + + draw88pkr + Draw 88 Poker (V2.0) + + + drbyocwa + Derby Owners Club World Edition (Rev A) + + + drbyocwb + Derby Owners Club World Edition (Rev B) + + + drbyocwc + Derby Owners Club World Edition (Rev C) + + + drbyocwt + Derby Owners Club World Edition (Rev T) + + + drdmania + Dardomania (v2.1) + + + dream9 + Dream 9 (v1.52) + + + dreambal + Dream Ball (Japan V2.4) + + + dreamwld + Dream World + + + dreamwv + Dream Weaver (0200586V, NSW/ACT) + + + dremshpr + Dream Shopper + + + drgdance + Dragon Dance (V1.02J) + + + drgnbowl + Dragon Bowl (set 1, encrypted program) + + + drgnbowla + Dragon Bowl (set 2, unencrypted program) + + + drgnbstr + Dragon Buster + + + drgneye + Dragon's Eye (0100521V, NSW/ACT) + + + drgninja + Dragonninja (Japan, revision 1) + + + drgninjab + Dragonninja (bootleg) + + + drgninjab2 + Dragonninja (bootleg with 68705) + + + drgninjam + Dragon Ninja (Modular System) + + + drgnlord + Dragon Lord (10173511, NSW/ACT) + + + drgnmgic + Dragon Magic (2J015711, NSW/ACT) + + + drgnmst + Dragon Master (set 1) + + + drgnmst2 + Dragon Master (set 2) + + + drgnunit + Dragon Unit / Castle of Dragon + + + drgnwrld + Dragon World (World, V040O) + + + drgnwrldv10c + Zhongguo Long (China, V010C) + + + drgnwrldv11h + Dung Fong Zi Zyu (Hong Kong, V011H, set 1) + + + drgnwrldv11ha + Dung Fong Zi Zyu (Hong Kong, V011H, set 2) + + + drgnwrldv20j + Chuugokuryuu (Japan, V020J) + + + drgnwrldv21 + Dragon World (World, V021O) + + + drgnwrldv21j + Chuugokuryuu (Japan, V021J) + + + drgnwrldv30 + Dragon World (World, V030O) + + + drgnwrldv40k + Dongbang Jiju (Korea, V040K) + + + drgpunch + Dragon Punch (Japan) + + + drgw2 + Dragon World II (ver. 110X, Export) + + + drgw2100c + Zhongguo Long II (ver. 100C, China) + + + drgw2100hk + Dungfong Zi Zyu II (ver. 100H, Hong Kong) + + + drgw2100j + Chuugokuryuu II (ver. 100J, Japan) + + + drgw2100x + Dragon World II (ver. 100X, Export) + + + drgw2101c + Zhongguo Long II (ver. 101C, China) + + + drgw2101j + Chuugokuryuu II (ver. 101J, Japan) + + + drgw3 + Dragon World 3 / Zhongguo Long 3 / Dungfong Zi Zyu 3 / Chuugokuryuu 3 Special (ver. 106) + + + drgw3100 + Chuugokuryuu 3 Special (Japan, ver. 100) + + + drgw3103 + Chuugokuryuu 3 Special (Japan, ver. 103) + + + drgw3105 + Dragon World 3 / Zhongguo Long 3 / Dungfong Zi Zyu 3 / Chuugokuryuu 3 Special (ver. 105) + + + drhl + Drews Revenge (v.2.89, set 1) + + + drhla + Drews Revenge (v.2.89, set 2) + + + dribling + Dribbling (set 1) + + + driblinga + Dribbling (set 2) + + + driblingam + Dribbling (Automave) + + + driblingo + Dribbling (Olympia) + + + driblingvm + Dribbling (Videomac bootleg, Brazil) + + + driblino + Dribbling (Olympia) + + + drifto94 + Drift Out '94 - The Hard Order (Japan) + + + driftout + Drift Out (Europe) + + + driftoutct + Drift Out (Europe, Cameltry conversion) + + + driftoutj + Drift Out (Japan) + + + drius2do + Darius II (dual screen) (Japan old version) + + + drivedge + Driver's Edge (v1.6) + + + driveout + Drive Out (bootleg of Drift Out) + + + driveyes + Driver's Eyes (Japan) (1992/01/10, Main Ver 2.1, Sub Ver 1.1) + + + drivfrcb + Driving Force (Galaxian conversion bootleg) + + + drivfrcg + Driving Force (Galaxian conversion) + + + drivfrcp + Driving Force (Pac-Man conversion) + + + drivfrcsg + Driving Force (Galaxian conversion, Seatongrove UK, E-0010) + + + drivfrcsga + Driving Force (Galaxian conversion, Seatongrove UK, E-0237) + + + drivfrct + Top Racer (bootleg of Driving Force) + + + drkseal + Dark Seal (8-liner) + + + drktnjr + Drakton (DKJr conversion) + + + drmario + Vs. Dr. Mario + + + drmcatch + Dream Catcher (10126721, NSW/ACT) + + + drmcatcha + Dream Catcher (10172921, ASP) + + + drmicro + Dr. Micro + + + drmmake + Dream Maker (Atronic) + + + drmmaker + Dream Maker (Russia) (Atronic) + + + drmn + DrumMania (GQ881 VER. JAD) + + + drmn10m + DrumMania 10th Mix (G*D40 VER. JAA) + + + drmn2m + DrumMania 2nd Mix (GE912 VER. JAB) + + + drmn2mpu + DrumMania 2nd Mix Session Power Up Kit (GE912 VER. JAB) + + + drmn3m + DrumMania 3rd Mix (G*A23 VER. JAA) + + + drmn4m + DrumMania 4th Mix (G*A25 VER. JAA) + + + drmn5m + DrumMania 5th Mix (G*B05 VER. JAA) + + + drmn6m + DrumMania 6th Mix (G*B16 VER. JAA) + + + drmn7m + DrumMania 7th Mix power-up ver. (G*C07 VER. JBA) + + + drmn7ma + DrumMania 7th Mix (G*C07 VER. JAA) + + + drmn8m + DrumMania 8th Mix (G*C38 VER. JAA) + + + drmn9m + DrumMania 9th Mix (G*D09 VER. JAB) + + + drmn9ma + DrumMania 9th Mix (G*D09 VER. JAA) + + + drmna + DrumMania (GQ881 VER. JAD ALT CD) + + + drmnu + DrumMania (GQ881 VER. UAB) + + + drmnv2a + DrumMania V2 (F02:A:A:A:2006011201) + + + drmnv2aa + DrumMania V2 (F02:A:A:A:2005112800) + + + drmnv2ab + DrumMania V2 (F02:A:A:A:2005101600) + + + drmnv2j + DrumMania V2 (F02:J:A:A:2006011201) + + + drmnv2ja + DrumMania V2 (F02:J:A:A:2005112800) + + + drmnv2jb + DrumMania V2 (F02:J:A:A:2005101600) + + + drmnv3a + DrumMania V3 (F32:A:A:A:2006101800) + + + drmnv3aa + DrumMania V3 (F32:A:A:A:2006072600) + + + drmnv3j + DrumMania V3 (F32:J:A:A:2006101800) + + + drmnv3ja + DrumMania V3 (F32:J:A:A:2006072600) + + + drmnva + DrumMania V (E02:A:A:A:2005050200) + + + drmnvj + DrumMania V (E02:J:A:A:2005050200) + + + drmred + Dream of the Red Chamber (10273811, NSW/ACT) + + + drtomy + Dr. Tomy + + + drtoppel + Dr. Toppel's Adventure (World) + + + drtoppela + Dr. Toppel's Adventure (World, alt?) + + + drtoppelj + Dr. Toppel's Tankentai (Japan) + + + drtoppelu + Dr. Toppel's Adventure (US) + + + drtopplj + Dr. Toppel's Tankentai (Japan) + + + drtopplu + Dr. Toppel's Adventure (US) + + + drw80pk2 + Draw 80 Poker - Minn + + + drw80pkr + Draw 80 Poker + + + dsaber + Dragon Saber (World, DO2) + + + dsabera + Dragon Saber (World, older?) + + + dsaberj + Dragon Saber (Japan, Rev B) + + + dsccr94j + Dream Soccer '94 (Japan) + + + dsem + Dancing Stage Euro Mix (G*936 VER. EAA) + + + dsem2 + Dancing Stage Euro Mix 2 (G*C23 VER. EAA) + + + dsfdct + Dancing Stage featuring Dreams Come True (GC910 VER. JCA) + + + dsfdcta + Dancing Stage featuring Dreams Come True (GC910 VER. JAA) + + + dsfdr + Dancing Stage Featuring Disney's Rave (GCA37JAA) + + + dsftkd + Dancing Stage featuring TRUE KiSS DESTiNATiON (G*884 VER. JAA) + + + dslayrr + Dragon Slayer (Russia, v15.B, 2005/08/10) + + + dslayrra + Dragon Slayer (Russia, v16.B, 2005/11/10) + + + dsmbl + Deathsmiles MegaBlack Label (2008/10/06 MEGABLACK LABEL VER) + + + dsoccr94 + Dream Soccer '94 (World, M107 hardware) + + + dsoccr94j + Dream Soccer '94 (Japan, M92 hardware) + + + dsoccr94k + Dream Soccer '94 (Korea, M107 hardware) + + + dspirit + Dragon Spirit (new version (DS3)) + + + dspirit1 + Dragon Spirit (old version (DS1)) + + + dspirit2 + Dragon Spirit (DS2) + + + dspirito + Dragon Spirit (old version) + + + dsrtwars + Desert Wars (bootleg of Battle Zone) + + + dstage + Dancing Stage - Internet Ranking Ver (GC845 VER. EBA) + + + dstagea + Dancing Stage (GN845 VER. EAA) + + + dstagesn + Dancing Stage SuperNOVA (FDH:E:A:A:2006072500) + + + dstagesna + Dancing Stage SuperNOVA (FDH:E:A:A:2006032200) + + + dstbloom + Desert Bloom (0300111V, NSW/ACT) + + + dstblooma + Desert Bloom (0200111V, NSW/ACT) + + + dstgold + Desert Gold (20202311, ASP) + + + dstlk + Darkstalkers: The Night Warriors (Europe 940705) + + + dstlka + Darkstalkers: The Night Warriors (Asia 940705) + + + dstlkh + Darkstalkers: The Night Warriors (Hispanic 940818) + + + dstlku + Darkstalkers: The Night Warriors (USA 940818) + + + dstlku1d + Darkstalkers: The Night Warriors (USA 940705 Phoenix Edition) (bootleg) + + + dstlkur1 + Darkstalkers: The Night Warriors (USA 940705) + + + dt7 + DT7 (prototype) + + + dtfamily + Diet Family + + + dtoyoken + Mahjong Dai Touyouken (Japan) + + + dtrvwz5 + Deluxe Trivia ? Whiz Edition 5 (6221-70, U5-0A) + + + dtrvwz5v + Deluxe Trivia ? Whiz Edition 5 (6221-75, U5-0, Vertical) + + + dualaslt + Dual Assault + + + dualgame + Dual Games (prototype) + + + duckhunt + Vs. Duck Hunt (set DH3 E) + + + ducki + Duck Tales (FMV Demo) + + + dumpmtmt + Dump Matsumoto (Japan, 8751 317-0011a) + + + dumpump + Dump The Ump + + + dungdrag + Dungeons & Dragons + + + dungenmu + Dungeon Magic (US) + + + dungeonm + Dungeon Magic (Ver 2.1O 1994/02/18) + + + dungeonmu + Dungeon Magic (Ver 2.1A 1994/02/18) + + + dunhuang + Mahjong Dunhuang + + + dunkmnia + Dunk Mania (World, DM2/VER.C) + + + dunkmniajc + Dunk Mania (Japan, DM1/VER.C) + + + dunkshot + Dunk Shot (Rev C, FD1089A 317-0022) + + + dunkshota + Dunk Shot (Rev A, FD1089A 317-0022) + + + dunkshoto + Dunk Shot (FD1089A 317-0022) + + + dvisland + Devil Island (Version 1.4R CGA) + + + dvislando + Devil Island (Version 1.0R CGA) + + + dvlrider + Devil Riders + + + dvlriderf + Devil Riders (French speech) + + + dvlriderg + Devil Riders (German speech) + + + dvlrideri + Devil Riders (Italian speech) + + + dvlsdre + Devil's Dare + + + dvlsdre2 + Devil's Dare (Sound Only) + + + dw + Dynasty Wars (World) + + + dw2001 + Chuugokuryuu 2001 [Dragon World 2001] (V100 02/21/01 16:05:16, Japan) + + + dw_l1 + Doctor Who (L-1) + + + dw_l2 + Doctor Who (L-2) + + + dw_p5 + Doctor Who (P-5) + + + dwarfd + Draw Poker III / Dwarfs Den (Dwarf Gfx) + + + dwarfda + Draw Poker III / Dwarfs Den (Card Gfx) + + + dwex + Dragon World 3 EX / Zhongguo Long 3 EX / Dungfong Zi Zyu 3 EX / Chuugokuryuu 3 EX (ver. 100) + + + dwex101cn + Dragon World 3 EX / Zhongguo Long 3 EX / Dungfong Zi Zyu 3 EX / Chuugokuryuu 3 EX (ver. 101CN) + + + dwi + DarkWing Duck (FMV Demo) + + + dwia + DarkWing Duck (FMV Demo, alt) + + + dwj + Tenchi wo Kurau (Japan) + + + dwpc + Zhongguo Long Pretty Chance [Dragon World Pretty Chance] (V110 03/19/02 11:13:16, China) + + + dwpc101j + Chuugokuryuu Pretty Chance [Dragon World Pretty Chance] (V101 09/26/01 10:23:26, Japan) + + + dybb99 + Dynamite Baseball '99 (Japan, Rev B) + + + dybbnao + Dynamite Baseball NAOMI (Japan) + + + dyger + Dyger (Korea set 1) + + + dygera + Dyger (Korea set 2) + + + dygolf + Virtua Golf / Dynamic Golf (Rev A) (GDS-0009A) + + + dygolfp + Virtua Golf / Dynamic Golf (prototype) + + + dynabb + Dynamite Baseball + + + dynabb97 + Dynamite Baseball 97 (Revision A) + + + dynablsb + Dynablaster (bootleg) + + + dynablst + Dynablaster / Bomber Man + + + dynablstb + Dynablaster / Bomber Man (bootleg, set 1) + + + dynablstb2 + Dynablaster / Bomber Man (bootleg, set 2) + + + dynablstb3 + Dynablaster / Bomber Man (bootleg, set 3) + + + dynablstb4 + Dynablaster / Bomber Man (bootleg, set 4) + + + dynabomb + Dynamite Bomber (Korea, Rev 1.5) + + + dynadice + Dynamic Dice + + + dynagear + Dyna Gear + + + dynajack + Dynamite Jack (01J00081, NSW/ACT) + + + dynajacku + Dynamite Jack (CHG1562, US) + + + dynamcop + Dynamite Cop (Export, Model 2A) + + + dynamcopb + Dynamite Cop (Export, Model 2B) + + + dynamcopc + Dynamite Cop (USA, Model 2C) + + + dynamoah + Air Hockey (6.12?, encrypted) + + + dynamoaha + Air Hockey (6.03, encrypted) + + + dynamski + Dynamic Ski + + + dynashot + Dynamic Shoot Kyousou + + + dynasty + Dynasty (2009, Ver. 1.02) + + + dynastye + Dynasty (1992, V5.1G) + + + dyndeka2 + Dynamite Deka 2 (Japan, Model 2A) + + + dyndeka2b + Dynamite Deka 2 (Japan, Model 2B) + + + dynduke + Dynamite Duke (Europe, 03SEP89) + + + dyndukea + Dynamite Duke (Europe, 25JUL89) + + + dyndukej + Dynamite Duke (Japan, 03SEP89) + + + dyndukeja + Dynamite Duke (Japan, 25JUL89) + + + dyndukeu + Dynamite Duke (US, 25JUL89) + + + dynobop + Dyno Bop (V1.1) + + + dynwar + Dynasty Wars (USA, B-Board 89624B-?) + + + dynwara + Dynasty Wars (USA, B-Board 88622B-3) + + + dynwarj + Tenchi wo Kurau (Japan) + + + dynwarjr + Tenchi wo Kurau (Japan Resale Ver.) + + + dzigzag + Zig Zag (Dig Dug hardware) + + + eagle + Eagle (set 1) + + + eagle2 + Eagle (set 2) + + + eagle3 + Eagle (set 3) + + + eaglrock + Eagle Rock - Cash Express (0151126, US) + + + eaglshot + Eagle Shot Golf (US) + + + eaglshotj + Eagle Shot Golf (Japan, bootleg?) + + + eaglshta + Eagle Shot Golf (alt) + + + earthinv + Super Earth Invasion + + + earthjkr + U.N. Defense Force: Earth Joker (US / Japan, set 1) + + + earthjkra + U.N. Defense Force: Earth Joker (US / Japan, set 2) + + + earthjkrb + U.N. Defense Force: Earth Joker (US / Japan, set 3) + + + earthjkrp + U.N. Defense Force: Earth Joker (Japan, prototype?) + + + eastland + Easter Island - Cash Express (0151117, US) + + + eatpm_3g + Elvira and the Party Monsters (LG-3) + + + eatpm_4g + Elvira and the Party Monsters (LG-4) + + + eatpm_4u + Elvira and the Party Monsters (LU-4) + + + eatpm_f1 + Elvira and the Party Monsters (LF-1) French + + + eatpm_l1 + Elvira and the Party Monsters (LA-1) + + + eatpm_l2 + Elvira and the Party Monsters (LA-2) + + + eatpm_l4 + Elvira and the Party Monsters (LA-4) + + + eatpm_p7 + Elvira and the Party Monsters (PA-7) + + + eballchp + Eight Ball Champ + + + eballchps + Eight Ball Champ (Spain, Z-Pinball hardware) + + + eballd14 + Eight Ball Deluxe (rev. 14) + + + eballdlx + Eight Ball Deluxe (rev. 15) + + + eballdlxp1 + Eight Ball Deluxe (prototype rev. 1) + + + eballdlxp2 + Eight Ball Deluxe (prototype rev. 2) + + + eballdlxp3 + Eight Ball Deluxe (prototype rev. 3) + + + eballdlxp4 + Eight Ball Deluxe (prototype rev. 4) + + + ebases + Extra Bases + + + ec_bar5 + Bar 5 (older PCB) (Electrocoin) + + + ec_bar7 + Bar 7 (Concept Games Ltd) (?) + + + ec_barx + Bar X (Electrocoin) (set 1) + + + ec_barx__0 + Bar X (Electrocoin) (set 28) + + + ec_barx__1 + Bar X (Electrocoin) (set 29) + + + ec_barx__2 + Bar X (Electrocoin) (set 30) + + + ec_barx__3 + Bar X (Electrocoin) (set 31) + + + ec_barx__4 + Bar X (Electrocoin) (set 32) + + + ec_barx__5 + Bar X (Electrocoin) (set 33) + + + ec_barx__6 + Bar X (Electrocoin) (set 34) + + + ec_barx__7 + Bar X (Electrocoin) (set 35) + + + ec_barx__8 + Bar X (Electrocoin) (set 36) + + + ec_barx__9 + Bar X (Electrocoin) (set 37) + + + ec_barx__a + Bar X (Electrocoin) (set 2) + + + ec_barx__a0 + Bar X (Electrocoin) (set 64) + + + ec_barx__a1 + Bar X (Electrocoin) (set 65) + + + ec_barx__a2 + Bar X (Electrocoin) (set 66) + + + ec_barx__a3 + Bar X (Electrocoin) (set 67) + + + ec_barx__a4 + Bar X (Electrocoin) (set 68) + + + ec_barx__a5 + Bar X (Electrocoin) (set 69) + + + ec_barx__a6 + Bar X (Electrocoin) (set 70) + + + ec_barx__a7 + Bar X (Electrocoin) (set 71) + + + ec_barx__a8 + Bar X (Electrocoin) (set 72) + + + ec_barx__a9 + Bar X (Electrocoin) (set 73) + + + ec_barx__aa + Bar X (Electrocoin) (set 38) + + + ec_barx__ab + Bar X (Electrocoin) (set 39) + + + ec_barx__ac + Bar X (Electrocoin) (set 40) + + + ec_barx__ad + Bar X (Electrocoin) (set 41) + + + ec_barx__ae + Bar X (Electrocoin) (set 42) + + + ec_barx__af + Bar X (Electrocoin) (set 43) + + + ec_barx__ag + Bar X (Electrocoin) (set 44) + + + ec_barx__ah + Bar X (Electrocoin) (set 45) + + + ec_barx__ai + Bar X (Electrocoin) (set 46) + + + ec_barx__aj + Bar X (Electrocoin) (set 47) + + + ec_barx__ak + Bar X (Electrocoin) (set 48) + + + ec_barx__al + Bar X (Electrocoin) (set 49) + + + ec_barx__am + Bar X (Electrocoin) (set 50) + + + ec_barx__an + Bar X (Electrocoin) (set 51) + + + ec_barx__ao + Bar X (Electrocoin) (set 52) + + + ec_barx__ap + Bar X (Electrocoin) (set 53) + + + ec_barx__aq + Bar X (Electrocoin) (set 54) + + + ec_barx__ar + Bar X (Electrocoin) (set 55) + + + ec_barx__as + Bar X (Electrocoin) (set 56) + + + ec_barx__at + Bar X (Electrocoin) (set 57) + + + ec_barx__au + Bar X (Electrocoin) (set 58) + + + ec_barx__av + Bar X (Electrocoin) (set 59) + + + ec_barx__aw + Bar X (Electrocoin) (set 60) + + + ec_barx__ax + Bar X (Electrocoin) (set 61) + + + ec_barx__ay + Bar X (Electrocoin) (set 62) + + + ec_barx__az + Bar X (Electrocoin) (set 63) + + + ec_barx__b + Bar X (Electrocoin) (set 3) + + + ec_barx__ba + Bar X (Electrocoin) (set 74) + + + ec_barx__bb + Bar X (Electrocoin) (set 75) + + + ec_barx__bc + Bar X (Electrocoin) (set 76) + + + ec_barx__bd + Bar X (Electrocoin) (set 77) + + + ec_barx__be + Bar X (Electrocoin) (set 78) + + + ec_barx__bf + Bar X (Electrocoin) (set 79) + + + ec_barx__bg + Bar X (Electrocoin) (set 80) + + + ec_barx__bh + Bar X (Electrocoin) (set 81) + + + ec_barx__bi + Bar X (Electrocoin) (set 82) + + + ec_barx__bj + Bar X (Electrocoin) (set 83) + + + ec_barx__bk + Bar X (Electrocoin) (set 84) + + + ec_barx__bl + Bar X (Electrocoin) (set 85) + + + ec_barx__bm + Bar X (Electrocoin) (set 86) + + + ec_barx__bn + Bar X (Electrocoin) (set 87) + + + ec_barx__bo + Bar X (Electrocoin) (set 88) + + + ec_barx__bp + Bar X (Electrocoin) (set 89) + + + ec_barx__bq + Bar X (Electrocoin) (set 90) + + + ec_barx__br + Bar X (Electrocoin) (set 91) + + + ec_barx__bs + Bar X (Electrocoin) (set 92) + + + ec_barx__bt + Bar X (Electrocoin) (set 93) + + + ec_barx__bu + Bar X (Electrocoin) (set 94) + + + ec_barx__c + Bar X (Electrocoin) (set 4) + + + ec_barx__d + Bar X (Electrocoin) (set 5) + + + ec_barx__e + Bar X (Electrocoin) (set 6) + + + ec_barx__f + Bar X (Electrocoin) (set 7) + + + ec_barx__g + Bar X (Electrocoin) (set 8) + + + ec_barx__h + Bar X (Electrocoin) (set 9) + + + ec_barx__i + Bar X (Electrocoin) (set 10) + + + ec_barx__j + Bar X (Electrocoin) (set 11) + + + ec_barx__k + Bar X (Electrocoin) (set 12) + + + ec_barx__l + Bar X (Electrocoin) (set 13) + + + ec_barx__m + Bar X (Electrocoin) (set 14) + + + ec_barx__n + Bar X (Electrocoin) (set 15) + + + ec_barx__o + Bar X (Electrocoin) (set 16) + + + ec_barx__p + Bar X (Electrocoin) (set 17) + + + ec_barx__q + Bar X (Electrocoin) (set 18) + + + ec_barx__r + Bar X (Electrocoin) (set 19) + + + ec_barx__s + Bar X (Electrocoin) (set 20) + + + ec_barx__t + Bar X (Electrocoin) (set 21) + + + ec_barx__u + Bar X (Electrocoin) (set 22) + + + ec_barx__v + Bar X (Electrocoin) (set 23) + + + ec_barx__w + Bar X (Electrocoin) (set 24) + + + ec_barx__x + Bar X (Electrocoin) (set 25) + + + ec_barx__y + Bar X (Electrocoin) (set 26) + + + ec_barx__z + Bar X (Electrocoin) (set 27) + + + ec_barxmab + Bar X (MAB PCB) (Electrocoin) + + + ec_barxo + Bar X (older PCB) (Electrocoin) (set 1) + + + ec_barxoa + Bar X (older PCB) (Electrocoin) (set 2) + + + ec_barxob + Bar X (older PCB) (Electrocoin) (set 3) + + + ec_barxoc + Bar X (older PCB) (Electrocoin) (set 4) + + + ec_barxod + Bar X (older PCB) (Electrocoin) (set 5) + + + ec_barxoe + Bar X (older PCB) (Electrocoin) (set 6) + + + ec_big7 + Big 7 / Super Big 7 (Electrocoin) (set 1) + + + ec_big7__0 + Big 7 / Super Big 7 (Electrocoin) (set 28) + + + ec_big7__1 + Big 7 / Super Big 7 (Electrocoin) (set 29) + + + ec_big7__2 + Big 7 / Super Big 7 (Electrocoin) (set 30) + + + ec_big7__3 + Big 7 / Super Big 7 (Electrocoin) (set 31) + + + ec_big7__4 + Big 7 / Super Big 7 (Electrocoin) (set 32) + + + ec_big7__5 + Big 7 / Super Big 7 (Electrocoin) (set 33) + + + ec_big7__6 + Big 7 / Super Big 7 (Electrocoin) (set 34) + + + ec_big7__7 + Big 7 / Super Big 7 (Electrocoin) (set 35) + + + ec_big7__8 + Big 7 / Super Big 7 (Electrocoin) (set 36) + + + ec_big7__9 + Big 7 / Super Big 7 (Electrocoin) (set 37) + + + ec_big7__a + Big 7 / Super Big 7 (Electrocoin) (set 2) + + + ec_big7__a0 + Big 7 / Super Big 7 (Electrocoin) (set 64) + + + ec_big7__a1 + Big 7 / Super Big 7 (Electrocoin) (set 65) + + + ec_big7__a2 + Big 7 / Super Big 7 (Electrocoin) (set 66) + + + ec_big7__aa + Big 7 / Super Big 7 (Electrocoin) (set 38) + + + ec_big7__ab + Big 7 / Super Big 7 (Electrocoin) (set 39) + + + ec_big7__ac + Big 7 / Super Big 7 (Electrocoin) (set 40) + + + ec_big7__ad + Big 7 / Super Big 7 (Electrocoin) (set 41) + + + ec_big7__ae + Big 7 / Super Big 7 (Electrocoin) (set 42) + + + ec_big7__af + Big 7 / Super Big 7 (Electrocoin) (set 43) + + + ec_big7__ag + Big 7 / Super Big 7 (Electrocoin) (set 44) + + + ec_big7__ah + Big 7 / Super Big 7 (Electrocoin) (set 45) + + + ec_big7__ai + Big 7 / Super Big 7 (Electrocoin) (set 46) + + + ec_big7__aj + Big 7 / Super Big 7 (Electrocoin) (set 47) + + + ec_big7__ak + Big 7 / Super Big 7 (Electrocoin) (set 48) + + + ec_big7__al + Big 7 / Super Big 7 (Electrocoin) (set 49) + + + ec_big7__am + Big 7 / Super Big 7 (Electrocoin) (set 50) + + + ec_big7__an + Big 7 / Super Big 7 (Electrocoin) (set 51) + + + ec_big7__ao + Big 7 / Super Big 7 (Electrocoin) (set 52) + + + ec_big7__ap + Big 7 / Super Big 7 (Electrocoin) (set 53) + + + ec_big7__aq + Big 7 / Super Big 7 (Electrocoin) (set 54) + + + ec_big7__ar + Big 7 / Super Big 7 (Electrocoin) (set 55) + + + ec_big7__as + Big 7 / Super Big 7 (Electrocoin) (set 56) + + + ec_big7__at + Big 7 / Super Big 7 (Electrocoin) (set 57) + + + ec_big7__au + Big 7 / Super Big 7 (Electrocoin) (set 58) + + + ec_big7__av + Big 7 / Super Big 7 (Electrocoin) (set 59) + + + ec_big7__aw + Big 7 / Super Big 7 (Electrocoin) (set 60) + + + ec_big7__ax + Big 7 / Super Big 7 (Electrocoin) (set 61) + + + ec_big7__ay + Big 7 / Super Big 7 (Electrocoin) (set 62) + + + ec_big7__az + Big 7 / Super Big 7 (Electrocoin) (set 63) + + + ec_big7__b + Big 7 / Super Big 7 (Electrocoin) (set 3) + + + ec_big7__c + Big 7 / Super Big 7 (Electrocoin) (set 4) + + + ec_big7__d + Big 7 / Super Big 7 (Electrocoin) (set 5) + + + ec_big7__e + Big 7 / Super Big 7 (Electrocoin) (set 6) + + + ec_big7__f + Big 7 / Super Big 7 (Electrocoin) (set 7) + + + ec_big7__g + Big 7 / Super Big 7 (Electrocoin) (set 8) + + + ec_big7__h + Big 7 / Super Big 7 (Electrocoin) (set 9) + + + ec_big7__i + Big 7 / Super Big 7 (Electrocoin) (set 10) + + + ec_big7__j + Big 7 / Super Big 7 (Electrocoin) (set 11) + + + ec_big7__k + Big 7 / Super Big 7 (Electrocoin) (set 12) + + + ec_big7__l + Big 7 / Super Big 7 (Electrocoin) (set 13) + + + ec_big7__m + Big 7 / Super Big 7 (Electrocoin) (set 14) + + + ec_big7__n + Big 7 / Super Big 7 (Electrocoin) (set 15) + + + ec_big7__o + Big 7 / Super Big 7 (Electrocoin) (set 16) + + + ec_big7__p + Big 7 / Super Big 7 (Electrocoin) (set 17) + + + ec_big7__q + Big 7 / Super Big 7 (Electrocoin) (set 18) + + + ec_big7__r + Big 7 / Super Big 7 (Electrocoin) (set 19) + + + ec_big7__s + Big 7 / Super Big 7 (Electrocoin) (set 20) + + + ec_big7__t + Big 7 / Super Big 7 (Electrocoin) (set 21) + + + ec_big7__u + Big 7 / Super Big 7 (Electrocoin) (set 22) + + + ec_big7__v + Big 7 / Super Big 7 (Electrocoin) (set 23) + + + ec_big7__w + Big 7 / Super Big 7 (Electrocoin) (set 24) + + + ec_big7__x + Big 7 / Super Big 7 (Electrocoin) (set 25) + + + ec_big7__y + Big 7 / Super Big 7 (Electrocoin) (set 26) + + + ec_big7__z + Big 7 / Super Big 7 (Electrocoin) (set 27) + + + ec_bx125 + Bar X 125 (Electrocoin) (set 1) + + + ec_bx125a + Bar X 125 (Electrocoin) (set 2) + + + ec_bx180 + Bar X (Z180 hardware) (Electrocoin) (set 1) + + + ec_bx180a + Bar X (Z180 hardware) (Electrocoin) (set 2) + + + ec_bxd7s + Bar X Diamond 7s (2006 COOL7) (Electrocoin) (set 1) + + + ec_bxd7s__a + Bar X Diamond 7s (2006 COOL7) (Electrocoin) (set 2) + + + ec_bxd7s__b + Bar X Diamond 7s (2006 COOL7) (Electrocoin) (set 3) + + + ec_bxd7s__c + Bar X Diamond 7s (2006 COOL7) (Electrocoin) (set 4) + + + ec_bxd7s__d + Bar X Diamond 7s (2006 COOL7) (Electrocoin) (set 5) + + + ec_casbx + Casino Bar X (Electrocoin) (set 1) + + + ec_casbx__a + Casino Bar X (Electrocoin) (set 2) + + + ec_casbx__b + Casino Bar X (Electrocoin) (set 3) + + + ec_casbxcon + Casino Bar X (Concept Games Ltd) (?) + + + ec_casbxo + Casino Bar X (older PCB) (Electrocoin) (set 1) + + + ec_casbxoa + Casino Bar X (older PCB) (Electrocoin) (set 2) + + + ec_casmb + Casino Multi Bar (Concept Games Ltd) (?) + + + ec_fltr + Flutter (Concept Games Ltd) (?) + + + ec_gold7 + Golden 7 (Concept Games Ltd) (?) + + + ec_jackb + Jackpot Bars (MAB PCB?) (Concept Games Ltd) (?) + + + ec_laby + Labyrinth (v8) (Electrocoin) + + + ec_labya + Labyrinth (v10) (Electrocoin) + + + ec_mag7s + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 1) + + + ec_mag7s__0 + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 28) + + + ec_mag7s__1 + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 29) + + + ec_mag7s__2 + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 30) + + + ec_mag7s__3 + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 31) + + + ec_mag7s__4 + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 32) + + + ec_mag7s__5 + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 33) + + + ec_mag7s__6 + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 34) + + + ec_mag7s__7 + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 35) + + + ec_mag7s__8 + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 36) + + + ec_mag7s__9 + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 37) + + + ec_mag7s__a + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 2) + + + ec_mag7s__a0 + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 64) + + + ec_mag7s__aa + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 38) + + + ec_mag7s__ab + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 39) + + + ec_mag7s__ac + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 40) + + + ec_mag7s__ad + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 41) + + + ec_mag7s__ae + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 42) + + + ec_mag7s__af + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 43) + + + ec_mag7s__ag + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 44) + + + ec_mag7s__ah + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 45) + + + ec_mag7s__ai + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 46) + + + ec_mag7s__aj + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 47) + + + ec_mag7s__ak + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 48) + + + ec_mag7s__al + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 49) + + + ec_mag7s__am + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 50) + + + ec_mag7s__an + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 51) + + + ec_mag7s__ao + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 52) + + + ec_mag7s__ap + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 53) + + + ec_mag7s__aq + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 54) + + + ec_mag7s__ar + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 55) + + + ec_mag7s__as + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 56) + + + ec_mag7s__at + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 57) + + + ec_mag7s__au + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 58) + + + ec_mag7s__av + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 59) + + + ec_mag7s__aw + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 60) + + + ec_mag7s__ax + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 61) + + + ec_mag7s__ay + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 62) + + + ec_mag7s__az + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 63) + + + ec_mag7s__b + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 3) + + + ec_mag7s__c + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 4) + + + ec_mag7s__d + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 5) + + + ec_mag7s__e + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 6) + + + ec_mag7s__f + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 7) + + + ec_mag7s__g + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 8) + + + ec_mag7s__h + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 9) + + + ec_mag7s__i + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 10) + + + ec_mag7s__j + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 11) + + + ec_mag7s__k + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 12) + + + ec_mag7s__l + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 13) + + + ec_mag7s__m + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 14) + + + ec_mag7s__n + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 15) + + + ec_mag7s__o + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 16) + + + ec_mag7s__p + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 17) + + + ec_mag7s__q + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 18) + + + ec_mag7s__r + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 19) + + + ec_mag7s__s + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 20) + + + ec_mag7s__t + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 21) + + + ec_mag7s__u + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 22) + + + ec_mag7s__v + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 23) + + + ec_mag7s__w + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 24) + + + ec_mag7s__x + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 25) + + + ec_mag7s__y + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 26) + + + ec_mag7s__z + Magic 7s / Cool 7 / Bar X 7 (2001 COOL7) (Electrocoin) (set 27) + + + ec_mgbel + Megabell (Concept Games Ltd) (?) + + + ec_multb + Multi Bar (Concept Games Ltd) (?) + + + ec_ndgxs + Nudge Xcess (MAB PCB?) (Concept Games Ltd) (?) + + + ec_oxocg + Oxo Classic Gold (Electrocoin) (?) + + + ec_oxocl + Oxo Club (Electrocoin) (?) + + + ec_oxogb + Oxo Golden Bars (Electrocoin) (?) + + + ec_oxorl + Oxo Reels (Electrocoin) (?) + + + ec_oxorv + Oxo Revolution (Electrocoin) (?) + + + ec_penni + Pennies From Heaven (v1) (Electrocoin) + + + ec_pennia + Pennies From Heaven (v6) (Electrocoin) + + + ec_pyram + Pyramid (v1) (Electrocoin) + + + ec_pyrama + Pyramid (v6) (Electrocoin) + + + ec_rcc + Royal Casino Club (Electrocoin) (?) + + + ec_rdht7 + Red Hot 7 (MAB PCB?) (Concept Games Ltd) (?) + + + ec_redbr + Red Bar (Electrocoin) (set 1) + + + ec_redbr__0 + Red Bar (Electrocoin) (set 28) + + + ec_redbr__1 + Red Bar (Electrocoin) (set 29) + + + ec_redbr__2 + Red Bar (Electrocoin) (set 30) + + + ec_redbr__3 + Red Bar (Electrocoin) (set 31) + + + ec_redbr__4 + Red Bar (Electrocoin) (set 32) + + + ec_redbr__5 + Red Bar (Electrocoin) (set 33) + + + ec_redbr__6 + Red Bar (Electrocoin) (set 34) + + + ec_redbr__7 + Red Bar (Electrocoin) (set 35) + + + ec_redbr__8 + Red Bar (Electrocoin) (set 36) + + + ec_redbr__9 + Red Bar (Electrocoin) (set 37) + + + ec_redbr__a + Red Bar (Electrocoin) (set 2) + + + ec_redbr__a0 + Red Bar (Electrocoin) (set 64) + + + ec_redbr__a1 + Red Bar (Electrocoin) (set 65) + + + ec_redbr__a2 + Red Bar (Electrocoin) (set 66) + + + ec_redbr__a3 + Red Bar (Electrocoin) (set 67) + + + ec_redbr__a4 + Red Bar (Electrocoin) (set 68) + + + ec_redbr__a5 + Red Bar (Electrocoin) (set 69) + + + ec_redbr__a6 + Red Bar (Electrocoin) (set 70) + + + ec_redbr__a7 + Red Bar (Electrocoin) (set 71) + + + ec_redbr__a8 + Red Bar (Electrocoin) (set 72) + + + ec_redbr__a9 + Red Bar (Electrocoin) (set 73) + + + ec_redbr__aa + Red Bar (Electrocoin) (set 38) + + + ec_redbr__ab + Red Bar (Electrocoin) (set 39) + + + ec_redbr__ac + Red Bar (Electrocoin) (set 40) + + + ec_redbr__ad + Red Bar (Electrocoin) (set 41) + + + ec_redbr__ae + Red Bar (Electrocoin) (set 42) + + + ec_redbr__af + Red Bar (Electrocoin) (set 43) + + + ec_redbr__ag + Red Bar (Electrocoin) (set 44) + + + ec_redbr__ah + Red Bar (Electrocoin) (set 45) + + + ec_redbr__ai + Red Bar (Electrocoin) (set 46) + + + ec_redbr__aj + Red Bar (Electrocoin) (set 47) + + + ec_redbr__ak + Red Bar (Electrocoin) (set 48) + + + ec_redbr__al + Red Bar (Electrocoin) (set 49) + + + ec_redbr__am + Red Bar (Electrocoin) (set 50) + + + ec_redbr__an + Red Bar (Electrocoin) (set 51) + + + ec_redbr__ao + Red Bar (Electrocoin) (set 52) + + + ec_redbr__ap + Red Bar (Electrocoin) (set 53) + + + ec_redbr__aq + Red Bar (Electrocoin) (set 54) + + + ec_redbr__ar + Red Bar (Electrocoin) (set 55) + + + ec_redbr__as + Red Bar (Electrocoin) (set 56) + + + ec_redbr__at + Red Bar (Electrocoin) (set 57) + + + ec_redbr__au + Red Bar (Electrocoin) (set 58) + + + ec_redbr__av + Red Bar (Electrocoin) (set 59) + + + ec_redbr__aw + Red Bar (Electrocoin) (set 60) + + + ec_redbr__ax + Red Bar (Electrocoin) (set 61) + + + ec_redbr__ay + Red Bar (Electrocoin) (set 62) + + + ec_redbr__az + Red Bar (Electrocoin) (set 63) + + + ec_redbr__b + Red Bar (Electrocoin) (set 3) + + + ec_redbr__b0 + Red Bar (Electrocoin) (set 100) + + + ec_redbr__b1 + Red Bar (Electrocoin) (set 101) + + + ec_redbr__ba + Red Bar (Electrocoin) (set 74) + + + ec_redbr__bb + Red Bar (Electrocoin) (set 75) + + + ec_redbr__bc + Red Bar (Electrocoin) (set 76) + + + ec_redbr__bd + Red Bar (Electrocoin) (set 77) + + + ec_redbr__be + Red Bar (Electrocoin) (set 78) + + + ec_redbr__bf + Red Bar (Electrocoin) (set 79) + + + ec_redbr__bg + Red Bar (Electrocoin) (set 80) + + + ec_redbr__bh + Red Bar (Electrocoin) (set 81) + + + ec_redbr__bi + Red Bar (Electrocoin) (set 82) + + + ec_redbr__bj + Red Bar (Electrocoin) (set 83) + + + ec_redbr__bk + Red Bar (Electrocoin) (set 84) + + + ec_redbr__bl + Red Bar (Electrocoin) (set 85) + + + ec_redbr__bm + Red Bar (Electrocoin) (set 86) + + + ec_redbr__bn + Red Bar (Electrocoin) (set 87) + + + ec_redbr__bo + Red Bar (Electrocoin) (set 88) + + + ec_redbr__bp + Red Bar (Electrocoin) (set 89) + + + ec_redbr__bq + Red Bar (Electrocoin) (set 90) + + + ec_redbr__br + Red Bar (Electrocoin) (set 91) + + + ec_redbr__bs + Red Bar (Electrocoin) (set 92) + + + ec_redbr__bt + Red Bar (Electrocoin) (set 93) + + + ec_redbr__bu + Red Bar (Electrocoin) (set 94) + + + ec_redbr__bv + Red Bar (Electrocoin) (set 95) + + + ec_redbr__bw + Red Bar (Electrocoin) (set 96) + + + ec_redbr__bx + Red Bar (Electrocoin) (set 97) + + + ec_redbr__by + Red Bar (Electrocoin) (set 98) + + + ec_redbr__c + Red Bar (Electrocoin) (set 4) + + + ec_redbr__d + Red Bar (Electrocoin) (set 5) + + + ec_redbr__e + Red Bar (Electrocoin) (set 6) + + + ec_redbr__f + Red Bar (Electrocoin) (set 7) + + + ec_redbr__g + Red Bar (Electrocoin) (set 8) + + + ec_redbr__h + Red Bar (Electrocoin) (set 9) + + + ec_redbr__i + Red Bar (Electrocoin) (set 10) + + + ec_redbr__j + Red Bar (Electrocoin) (set 11) + + + ec_redbr__k + Red Bar (Electrocoin) (set 12) + + + ec_redbr__l + Red Bar (Electrocoin) (set 13) + + + ec_redbr__m + Red Bar (Electrocoin) (set 14) + + + ec_redbr__n + Red Bar (Electrocoin) (set 15) + + + ec_redbr__o + Red Bar (Electrocoin) (set 16) + + + ec_redbr__p + Red Bar (Electrocoin) (set 17) + + + ec_redbr__q + Red Bar (Electrocoin) (set 18) + + + ec_redbr__r + Red Bar (Electrocoin) (set 19) + + + ec_redbr__s + Red Bar (Electrocoin) (set 20) + + + ec_redbr__t + Red Bar (Electrocoin) (set 21) + + + ec_redbr__u + Red Bar (Electrocoin) (set 22) + + + ec_redbr__v + Red Bar (Electrocoin) (set 23) + + + ec_redbr__w + Red Bar (Electrocoin) (set 24) + + + ec_redbr__x + Red Bar (Electrocoin) (set 25) + + + ec_redbr__y + Red Bar (Electrocoin) (set 26) + + + ec_redbr__z + Red Bar (Electrocoin) (set 27) + + + ec_sbarx + Super Bar X (Electrocoin) (set 1) + + + ec_sbarx__0 + Super Bar X (Electrocoin) (set 28) + + + ec_sbarx__1 + Super Bar X (Electrocoin) (set 29) + + + ec_sbarx__2 + Super Bar X (Electrocoin) (set 30) + + + ec_sbarx__3 + Super Bar X (Electrocoin) (set 31) + + + ec_sbarx__4 + Super Bar X (Electrocoin) (set 32) + + + ec_sbarx__5 + Super Bar X (Electrocoin) (set 33) + + + ec_sbarx__6 + Super Bar X (Electrocoin) (set 34) + + + ec_sbarx__7 + Super Bar X (Electrocoin) (set 35) + + + ec_sbarx__8 + Super Bar X (Electrocoin) (set 36) + + + ec_sbarx__9 + Super Bar X (Electrocoin) (set 37) + + + ec_sbarx__a + Super Bar X (Electrocoin) (set 2) + + + ec_sbarx__a0 + Super Bar X (Electrocoin) (set 64) + + + ec_sbarx__a1 + Super Bar X (Electrocoin) (set 65) + + + ec_sbarx__a2 + Super Bar X (Electrocoin) (set 66) + + + ec_sbarx__a3 + Super Bar X (Electrocoin) (set 67) + + + ec_sbarx__a4 + Super Bar X (Electrocoin) (set 68) + + + ec_sbarx__aa + Super Bar X (Electrocoin) (set 38) + + + ec_sbarx__ab + Super Bar X (Electrocoin) (set 39) + + + ec_sbarx__ac + Super Bar X (Electrocoin) (set 40) + + + ec_sbarx__ad + Super Bar X (Electrocoin) (set 41) + + + ec_sbarx__ae + Super Bar X (Electrocoin) (set 42) + + + ec_sbarx__af + Super Bar X (Electrocoin) (set 43) + + + ec_sbarx__ag + Super Bar X (Electrocoin) (set 44) + + + ec_sbarx__ah + Super Bar X (Electrocoin) (set 45) + + + ec_sbarx__ai + Super Bar X (Electrocoin) (set 46) + + + ec_sbarx__aj + Super Bar X (Electrocoin) (set 47) + + + ec_sbarx__ak + Super Bar X (Electrocoin) (set 48) + + + ec_sbarx__al + Super Bar X (Electrocoin) (set 49) + + + ec_sbarx__am + Super Bar X (Electrocoin) (set 50) + + + ec_sbarx__an + Super Bar X (Electrocoin) (set 51) + + + ec_sbarx__ao + Super Bar X (Electrocoin) (set 52) + + + ec_sbarx__ap + Super Bar X (Electrocoin) (set 53) + + + ec_sbarx__aq + Super Bar X (Electrocoin) (set 54) + + + ec_sbarx__ar + Super Bar X (Electrocoin) (set 55) + + + ec_sbarx__as + Super Bar X (Electrocoin) (set 56) + + + ec_sbarx__at + Super Bar X (Electrocoin) (set 57) + + + ec_sbarx__au + Super Bar X (Electrocoin) (set 58) + + + ec_sbarx__av + Super Bar X (Electrocoin) (set 59) + + + ec_sbarx__aw + Super Bar X (Electrocoin) (set 60) + + + ec_sbarx__ax + Super Bar X (Electrocoin) (set 61) + + + ec_sbarx__ay + Super Bar X (Electrocoin) (set 62) + + + ec_sbarx__az + Super Bar X (Electrocoin) (set 63) + + + ec_sbarx__b + Super Bar X (Electrocoin) (set 3) + + + ec_sbarx__c + Super Bar X (Electrocoin) (set 4) + + + ec_sbarx__d + Super Bar X (Electrocoin) (set 5) + + + ec_sbarx__e + Super Bar X (Electrocoin) (set 6) + + + ec_sbarx__f + Super Bar X (Electrocoin) (set 7) + + + ec_sbarx__g + Super Bar X (Electrocoin) (set 8) + + + ec_sbarx__h + Super Bar X (Electrocoin) (set 9) + + + ec_sbarx__i + Super Bar X (Electrocoin) (set 10) + + + ec_sbarx__j + Super Bar X (Electrocoin) (set 11) + + + ec_sbarx__k + Super Bar X (Electrocoin) (set 12) + + + ec_sbarx__l + Super Bar X (Electrocoin) (set 13) + + + ec_sbarx__m + Super Bar X (Electrocoin) (set 14) + + + ec_sbarx__n + Super Bar X (Electrocoin) (set 15) + + + ec_sbarx__o + Super Bar X (Electrocoin) (set 16) + + + ec_sbarx__p + Super Bar X (Electrocoin) (set 17) + + + ec_sbarx__q + Super Bar X (Electrocoin) (set 18) + + + ec_sbarx__r + Super Bar X (Electrocoin) (set 19) + + + ec_sbarx__s + Super Bar X (Electrocoin) (set 20) + + + ec_sbarx__t + Super Bar X (Electrocoin) (set 21) + + + ec_sbarx__u + Super Bar X (Electrocoin) (set 22) + + + ec_sbarx__v + Super Bar X (Electrocoin) (set 23) + + + ec_sbarx__w + Super Bar X (Electrocoin) (set 24) + + + ec_sbarx__x + Super Bar X (Electrocoin) (set 25) + + + ec_sbarx__y + Super Bar X (Electrocoin) (set 26) + + + ec_sbarx__z + Super Bar X (Electrocoin) (set 27) + + + ec_sbxbr + Super Bar X (Brunel Research) (set 1) + + + ec_sbxbra + Super Bar X (Brunel Research) (set 2) + + + ec_sbxbrb + Super Bar X (Brunel Research) (set 3) + + + ec_sbxbrc + Super Bar X (Brunel Research) (set 4) + + + ec_sbxbrd + Super Bar X (Brunel Research) (set 5) + + + ec_sbxbre + Super Bar X (Brunel Research) (set 6) + + + ec_sbxbrf + Super Bar X (Brunel Research) (set 7) + + + ec_sbxbrg + Super Bar X (Brunel Research) (set 8) + + + ec_sbxbrh + Super Bar X (Brunel Research) (set 9) + + + ec_secrt + Secret Castle (v1) (Electrocoin) + + + ec_spbdx + Super Bar X Deluxe (Electrocoin) (set 1) + + + ec_spbdx__a + Super Bar X Deluxe (Electrocoin) (set 2) + + + ec_spbdx__b + Super Bar X Deluxe (Electrocoin) (set 3) + + + ec_spbdx__c + Super Bar X Deluxe (Electrocoin) (set 4) + + + ec_spbdx__d + Super Bar X Deluxe (Electrocoin) (set 5) + + + ec_spbg7mab + Super Big 7 (MAB PCB) (Electrocoin) (?) + + + ec_sphin + Sphinx (v2) (Electrocoin) (set 1) + + + ec_sphina + Sphinx (v2) (Electrocoin) (set 2) + + + ec_sphinb + Sphinx (v1) (Electrocoin) + + + ec_stair + Stairway To Heaven (v11) (Electrocoin) + + + ec_staira + Stairway To Heaven (v1) (Electrocoin) + + + ec_stkex + Stake X (Concept Games Ltd) (?) + + + ec_sumnc + Casino Super Multi Nudger (Concept / Electrocoin Oxo) (?) + + + ec_sumnd + Super Multi Nudger (Concept / Electrocoin Oxo) (?) + + + ec_supbxcon + Super Bar X (MAB PCB) (Concept Games Ltd) (?) + + + ec_supbxmab + Super Bar X (MAB PCB) (Electrocoin) (?) + + + ec_supmb + Super Multi Bar (Concept Games Ltd) (?) + + + ec_suprl + Super Reels (Electrocoin) (?) + + + ec_unk5 + unknown 'Electrocoin' Fruit Machines (Electrocoin) (set 1) + + + ec_unk5__a + unknown 'Electrocoin' Fruit Machines (Electrocoin) (set 2) + + + ec_unk5__b + unknown 'Electrocoin' Fruit Machines (Electrocoin) (set 3) + + + ec_unk5__c + unknown 'Electrocoin' Fruit Machines (Electrocoin) (set 4) + + + ec_unkt + unknown 'T' (MAB PCB?) (Concept Games Ltd) (?) + + + eca + Emergency Call Ambulance (Export) + + + ecaj + Emergency Call Ambulance (Japan) + + + ecap + Emergency Call Ambulance (US location test?) + + + ecau + Emergency Call Ambulance (USA) + + + eclipse + Eclipse + + + ecofghtr + Eco Fighters (World 931203) + + + ecofghtra + Eco Fighters (Asia 931203) + + + ecofghtrd + Eco Fighters (World 931203 Phoenix Edition) (bootleg) + + + ecofghtrh + Eco Fighters (Hispanic 931203) + + + ecofghtru + Eco Fighters (USA 940215) + + + ecofghtru1 + Eco Fighters (USA 931203) + + + edf + E.D.F.: Earth Defense Force (set 1) + + + edfa + E.D.F.: Earth Defense Force (set 2) + + + edfbl + E.D.F.: Earth Defense Force (bootleg) + + + edfp + E.D.F.: Earth Defense Force (Japan, prototype) + + + edfu + E.D.F.: Earth Defense Force (North America) + + + edrandy + The Cliffhanger - Edward Randy (World ver 3) + + + edrandy1 + The Cliffhanger - Edward Randy (World ver 1) + + + edrandy2 + The Cliffhanger - Edward Randy (World ver 2) + + + edrandyj + The Cliffhanger - Edward Randy (Japan ver 3) + + + eeekk + Eeekk! + + + eeekkp + Eeekk! (Pac-Man conversion) + + + efce + Enchanted Forest - Cash Express (0151084, US) + + + efdt + El Fin Del Tiempo + + + eforest + Enchanted Forest (4VXFC818, NSW) + + + eforestnz + Enchanted Forest (3VXFC5343, New Zealand) + + + eforestu + Enchanted Forest (12XF528902, US) + + + eforsta5 + Enchanted Forest (0400122V, NSW/ACT) + + + eforsta5u + Enchanted Forest (JHG0415-03, US) + + + eforsta5ua + Enchanted Forest (JHG0415-99, US) + + + eforstce + Enchanted Forest - Cash Express (AHG1615, US) + + + eforstcea + Enchanted Forest - Cash Express (CHG1536, US) + + + egghunt + Egg Hunt + + + eggor + Eggor + + + eggs + Eggs (USA) + + + eggsplc + Eggs Playing Chicken + + + eggsrccm + Eggstreme Riches - Mr. Cashman (0351149, US) + + + eggventr + Egg Venture (Release 10) + + + eggventr1 + Egg Venture (Release 1) + + + eggventr2 + Egg Venture (Release 2) + + + eggventr4 + Egg Venture (Release 4) + + + eggventr7 + Egg Venture (Release 7) + + + eggventr8 + Egg Venture (Release 8) + + + eggventra + Egg Venture (A.L. Release) + + + eggventrd + Egg Venture Deluxe + + + eggvntdx + Egg Venture Deluxe + + + ehrgeiz + Ehrgeiz (World, EG2/VER.A) + + + ehrgeizja + Ehrgeiz (Japan, EG1/VER.A) + + + ehrgeizua + Ehrgeiz (US, EG3/VER.A) + + + eibise + Eibise (Japan) + + + eightbll + Eight Ball (rev. 20) + + + eightblo + Eight Ball (rev. 17) + + + eightfrc + Eight Forces + + + eightman + Eight Man (NGM-025 ~ NGH-025) + + + einning + Extra Inning / Ball Park II + + + einnings + Extra Inning + + + ejanhs + E Jong High School (Japan) + + + ejihon + Ejihon Tantei Jimusho (J 950613 V1.000) + + + ejollyx5 + Euro Jolly X5 + + + ejollyx9 + Euro Jolly X9 + + + ejsakura + E-Jan Sakurasou (Japan, SYS386F V2.0) + + + ejsakura12 + E-Jan Sakurasou (Japan, SYS386F V1.2) + + + elandore + Touryuu Densetsu Elan-Doree / Elan Doree - Legend of Dragoon (JUET 980922 V1.006) + + + elcirculo + El Circulo + + + eldoradd + El Dorado (V5.1DR) + + + eldoraddo + El Dorado (V1.1TA) + + + eldoraddoa + El Dorado (V1.4D) + + + eldoraddob + El Dorado (V2.0D) + + + eldoraddoc + El Dorado (V1.1J) + + + eldorado + El Dorado City of Gold + + + eldoralg + Eldorado (4.2) + + + eldorda5 + El Dorado (0100652V, NSW/ACT) + + + elecyoy2 + The Electric Yo-Yo (set 2) + + + elecyoyo + The Electric Yo-Yo (rev 1) + + + elecyoyoa + The Electric Yo-Yo + + + elektra + Elektra + + + elephfam + Elephant Family (Italian, new) + + + elephfmb + Elephant Family (Italian, old) + + + elevatob + Elevator Action (bootleg) + + + elevator + Elevator Action (BA3, 4 PCB version, 1.1) + + + elevatora + Elevator Action (EA, 5 PCB version, 1.1) + + + elevatorb + Elevator Action (bootleg) + + + elfin + Elfin + + + elgrande + El Grande - 5 Card Draw (New) + + + elim2 + Eliminator (2 Players, set 1) + + + elim2a + Eliminator (2 Players, set 2) + + + elim2c + Eliminator (2 Players, cocktail) + + + elim4 + Eliminator (4 Players) + + + elim4p + Eliminator (4 Players, prototype) + + + elsygame + unknown Elsy game + + + elsypokr + unknown Elsy poker + + + elvact2u + Elevator Action II (Ver 2.2A 1995/02/20) + + + elvactr + Elevator Action Returns (Ver 2.2O 1995/02/20) + + + elvactrj + Elevator Action Returns (Ver 2.2J 1995/02/20) + + + elvis + Elvis? + + + elvisf + Elvis (CPU 5.00, display F5.00, France) + + + elvisf302 + Elvis (CPU 3.02, display F3.02, France) + + + elvisf303 + Elvis (CPU 3.03, display F3.02, France) + + + elvisf4 + Elvis (CPU 4.00, display F4.01, France) + + + elvisg + Elvis (CPU 5.00, display G5.00, Germany) + + + elvisg302 + Elvis (CPU 3.02, display G3.02, Germany) + + + elvisg303 + Elvis (CPU 3.03, display G3.02, Germany) + + + elvisg4 + Elvis (CPU 4.00, display G4.01, Germany) + + + elvisi + Elvis (CPU 5.00, display I5.00, Italy) + + + elvisi302 + Elvis (CPU 3.02, display I3.02, Italy) + + + elvisi303 + Elvis (CPU 3.03, display I3.02, Italy) + + + elvisi4 + Elvis (CPU 4.00, display I4.01, Italy) + + + elvisl + Elvis (CPU 5.00, display L5.00, Spain) + + + elvisl302 + Elvis (CPU 3.02, display L3.02, Spain) + + + elvisl303 + Elvis (CPU 3.03, display L3.02, Spain) + + + elvisl4 + Elvis (CPU 4.00, display L4.01, Spain) + + + elvisp + Elvis (CPU 5.00, display A5.00) + + + elvisp100 + Elvis (CPU 1.00, display A1.00) + + + elvisp302 + Elvis (CPU 3.02, display A3.02) + + + elvisp303 + Elvis (CPU 3.03, display A3.02) + + + elvisp4 + Elvis (CPU 4.00, display A4.01) + + + embargo + Embargo + + + embryon + Embryon + + + emeralda + Emeraldia (World) + + + emeraldah + Emeraldia (Bankbank New Rotate Hack) + + + emeraldaj + Emeraldia (Japan Version B) + + + emeraldaja + Emeraldia (Japan) + + + emerldaa + Emeraldia (Japan) + + + emjjoshi + E-Touch Mahjong Series #2: Joshiryou de NE! (Japan) + + + emjscanb + E-Touch Mahjong Series #6: Scandal Blue - Midara na Daishou (Japan) + + + emjtrapz + E-Touch Mahjong Series #7: Trap Zone - Yokubou no Kaisoku Densha (Japan) + + + empcity + Empire City: 1931 (bootleg?) + + + empcityfr + Empire City: 1931 (France) + + + empcityi + Empire City: 1931 (Italy) + + + empcityj + Empire City: 1931 (Japan) + + + empcityu + Empire City: 1931 (US) + + + empsback + The Empire Strikes Back (Hankin Pinball) + + + enchantr + Enchantress (20000711, NSW/ACT) + + + enchlamp + Enchanted Lamp (Konami Endeavour, Russia) + + + encspell + Enchanted Spell (10257011, NSW/ACT) + + + endless + Gundam Wing: Endless Duel (SNES bootleg, set 1) + + + endlessa + Gundam Wing: Endless Duel (SNES bootleg, set 2) + + + endrichs + Endless Riches (Ver 1.21) + + + endrichsa + Endless Riches (Ver 1.20) + + + endrichsb + Endless Riches (Ver 1.10) + + + endurob2 + Enduro Racer (bootleg set 2) + + + endurobl + Enduro Racer (bootleg set 1) + + + enduror + Enduro Racer (Rev A, YM2151, FD1089B 317-0013A) + + + enduror1 + Enduro Racer (YM2203, FD1089B 317-0013A) + + + enduror1d + Enduro Racer (bootleg of YM2203, FD1089B 317-0013A set) + + + endurora + Enduro Racer (Rev A, YM2151, mask ROM sprites, FD1089B 317-0013A) + + + endurorb + Enduro Racer (YM2151, FD1089B 317-0013A) + + + endurord + Enduro Racer (bootleg of Rev A, YM2151, FD1089B 317-0013A set) + + + enforce + Enforce (World) + + + enforcej + Enforce (Japan) + + + enforceja + Enforce (Japan, Analog Controls) + + + enigma2 + Enigma II + + + enigma2a + Enigma II (Space Invaders hardware) + + + enigma2b + Phantoms II (Space Invaders hardware) + + + enmadaio + Enma Daio (Japan) + + + eott + Eyes of the Tiger (10002011, NSW/ACT) + + + ep_21clb + Twenty One Club (Maygay) (EPOCH) (3.2, set 1) + + + ep_21clba + Twenty One Club (Maygay) (EPOCH) (3.2, set 2) + + + ep_25crt + 25 Carrot Gold (Maygay) (EPOCH) (1.2, set 1) + + + ep_25crta + 25 Carrot Gold (Maygay) (EPOCH) (1.1, set 2) + + + ep_25crtb + 25 Carrot Gold (Maygay) (EPOCH) (3.1, set 3) + + + ep_25crtc + 25 Carrot Gold (Maygay) (EPOCH) (4.1, set 4) + + + ep_25crtd + 25 Carrot Gold (Maygay) (EPOCH) (5.1, set 5) + + + ep_bartk + Bar Trekkin (Maygay) (EPOCH) (4.5, set 1) + + + ep_bartka + Bar Trekkin (Maygay) (EPOCH) (3.9, set 2) + + + ep_bartkb + Bar Trekkin (Maygay) (EPOCH) (3.9, set 3) + + + ep_bartkc + Bar Trekkin (Maygay) (EPOCH) (4.4, set 4) + + + ep_bartkd + Bar Trekkin (Maygay) (EPOCH) (4.4, set 5) + + + ep_bartke + Bar Trekkin (Maygay) (EPOCH) (4.5, set 6) + + + ep_bartkf + Bar Trekkin (Maygay) (EPOCH) (4.2, set 7) + + + ep_baskr + Pounds Of The Baskervilles (Maygay) (EPOCH) (1.7, set 1) + + + ep_baskra + Pounds Of The Baskervilles (Maygay) (EPOCH) (2.2, set 2) + + + ep_baskrb + Pounds Of The Baskervilles (Maygay) (EPOCH) (2.2, set 3) + + + ep_baskrc + Pounds Of The Baskervilles (Maygay) (EPOCH) (1.7, set 4) + + + ep_baskrd + Pounds Of The Baskervilles (Maygay) (EPOCH) (2.1, set 5) + + + ep_baskre + Pounds Of The Baskervilles (Maygay) (EPOCH) (1.5, set 6) + + + ep_bathl + Bat Outa Hell (Global) (EPOCH) (2.1, set 1) + + + ep_bathla + Bat Outa Hell (Global) (EPOCH) (2.1, set 2) + + + ep_bathlb + Bat Outa Hell (Global) (EPOCH) (2.2, set 3) + + + ep_bathlc + Bat Outa Hell (Global) (EPOCH) (2.2, set 4) + + + ep_bathld + Bat Outa Hell (Global) (EPOCH) (3.1, set 5) + + + ep_bathle + Bat Outa Hell (Global) (EPOCH) (3.1, set 6) + + + ep_bathlf + Bat Outa Hell (Global) (EPOCH) (4.1, set 7) + + + ep_bathlg + Bat Outa Hell (Global) (EPOCH) (4.1, set 8) + + + ep_bathlh + Bat Outa Hell (Global) (EPOCH) (3.3, set 9) + + + ep_batls + Battleships (Maygay) (EPOCH) (2.2, set 1) + + + ep_batlsa + Battleships (Maygay) (EPOCH) (2.2, set 2) + + + ep_batlsb + Battleships (Maygay) (EPOCH) (1.9, set 3) + + + ep_batlsc + Battleships (Maygay) (EPOCH) (1.9, set 4) + + + ep_bbars + Balloon Bars (Maygay) (EPOCH) (1.2, set 1) + + + ep_bbarsa + Balloon Bars (Maygay) (EPOCH) (1.2, set 2) + + + ep_bbarsb + Balloon Bars (Maygay) (EPOCH) (2.0, set 3) + + + ep_bbarsc + Balloon Bars (Maygay) (EPOCH) (2.0, set 4) + + + ep_bbonz + Bingo Bonanza (Maygay - Union) (EPOCH) (set 1) + + + ep_bbonza + Bingo Bonanza (Maygay - Union) (EPOCH) (set 2) + + + ep_beav3 + Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 3.3, set 1) + + + ep_beav3a + Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 3.3, set 2) + + + ep_beav3b + Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 4.2, set 3) + + + ep_beav3c + Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 4.2, set 4) + + + ep_beavr + Casino Beaver Las Vegas (Global) (EPOCH) (set 1) + + + ep_beavra + Casino Beaver Las Vegas (Global) (EPOCH) (set 2) + + + ep_beavrb + Casino Beaver Las Vegas (Global) (EPOCH) (set 3) + + + ep_beavrc + Casino Beaver Las Vegas (Global) (EPOCH) (set 4) + + + ep_beavrd + Casino Beaver Las Vegas (Global) (EPOCH) (set 5) + + + ep_beavre + Casino Beaver Las Vegas (Global) (EPOCH) (set 6) + + + ep_beavrf + Casino Beaver Las Vegas (Global) (EPOCH) (set 7) + + + ep_beavrg + Casino Beaver Las Vegas (Global) (EPOCH) (set 8) + + + ep_beavrh + Casino Beaver Las Vegas (Global) (EPOCH) (set 9) + + + ep_beavri + Casino Beaver Las Vegas (Global) (EPOCH) (set 10) + + + ep_beavrj + Casino Beaver Las Vegas (Global) (EPOCH) (set 11) + + + ep_beavrk + Casino Beaver Las Vegas (Global) (EPOCH) (set 12) + + + ep_beavrl + Casino Beaver Las Vegas (Global) (EPOCH) (set 13) + + + ep_beavrm + Casino Beaver Las Vegas (Global) (EPOCH) (set 14) + + + ep_beavrn + Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 2.3, set 5) + + + ep_beavro + Casino Beaver Las Vegas (Global) (EPOCH) (CA000720, 2.3, set 6) + + + ep_bingb + Bingo Belle (Maygay) (EPOCH) (1.3, set 1) + + + ep_bingba + Bingo Belle (Maygay) (EPOCH) (1.3, set 2) + + + ep_bjclb + The Blackjack Club (Global) (EPOCH) + + + ep_braid + Bank Raid (Extreme) (EPOCH) (BARA 0.1, set 1) + + + ep_braida + Bank Raid (Extreme) (EPOCH) (BARA 0.1, set 2) + + + ep_braidb + Bank Raid (Extreme) (EPOCH) (BARA 0.5, set 3) + + + ep_braidc + Bank Raid (Extreme) (EPOCH) (BARA 0.5, set 4) + + + ep_braidd + Bank Raid (Extreme) (EPOCH) (BARA 0.5, set 5) + + + ep_braide + Bank Raid (Extreme) (EPOCH) (BARA 0.5, set 6) + + + ep_bubsq + Bubble & Squeak (Extreme) (EPOCH) (BASQ 0.2, set 1) + + + ep_bubsqa + Bubble & Squeak (Extreme) (EPOCH) (BASQ 0.2, set 2) + + + ep_bubsqb + Bubble & Squeak (Extreme) (EPOCH) (BASQ 0.3, set 3) + + + ep_bubsqc + Bubble & Squeak (Extreme) (EPOCH) (BASQ 0.3, set 4) + + + ep_bubsqd + Bubble & Squeak (Extreme) (EPOCH) (BASQ 0.4, set 5) + + + ep_bvrcl + Beaver Las Vegas Club (Global) (EPOCH) (set 1) + + + ep_bvrcla + Beaver Las Vegas Club (Global) (EPOCH) (set 2) + + + ep_bvrclb + Beaver Las Vegas Club (Global) (EPOCH) (set 3) + + + ep_bvrclc + Beaver Las Vegas Club (Global) (EPOCH) (set 4) + + + ep_bvrcld + Beaver Las Vegas Club (Global) (EPOCH) (set 5) + + + ep_bvrcle + Beaver Las Vegas Club (Global) (EPOCH) (set 6) + + + ep_bvrclf + Beaver Las Vegas Club (Global) (EPOCH) (set 7) + + + ep_bvrclg + Beaver Las Vegas Club (Global) (EPOCH) (set 8) + + + ep_bvrclh + Beaver Las Vegas Club (Global) (EPOCH) (set 9) + + + ep_bvrcli + Beaver Las Vegas Club (Global) (EPOCH) (set 10) + + + ep_bvrclj + Beaver Las Vegas Club (Global) (EPOCH) (set 11) + + + ep_bvrclk + Beaver Las Vegas Club (Global) (EPOCH) (set 12) + + + ep_bvruc + Beaver Uncovered (Global) (EPOCH) (1.4, set 1) + + + ep_bvruca + Beaver Uncovered (Global) (EPOCH) (1.4, set 2) + + + ep_bvrucb + Beaver Uncovered (Global) (EPOCH) (1.6, set 3) + + + ep_bvrucc + Beaver Uncovered (Global) (EPOCH) (2.3, set 4) + + + ep_cahoy + Cash Ahoy (Maygay - Eclipse?) (EPOCH) (set 1) + + + ep_cahoya + Cash Ahoy (Maygay) (EPOCH) (set 2) + + + ep_cahoyb + Cash Ahoy (Maygay) (EPOCH) (set 3) + + + ep_calyp + Calypso (Maygay) (EPOCH) (2.2, set 1) + + + ep_calypa + Calypso (Maygay) (EPOCH) (2.2, set 2) + + + ep_cascz + Casino Crazy (Global) (EPOCH) (set 1) + + + ep_cascza + Casino Crazy (Global) (EPOCH) (2.1, set 2) + + + ep_casgc + Casino Grand Club (Maygay) (EPOCH) (1.1, set 1) + + + ep_casgca + Casino Grand Club (Maygay) (EPOCH) (1.1, set 2) + + + ep_casgcb + Casino Grand Club (Maygay) (EPOCH) (1.4, set 3) + + + ep_casgcc + Casino Grand Club (Maygay) (EPOCH) (1.4, set 4) + + + ep_cashn + Cashino (Maygay - Extreme) (EPOCH) (CSHI 1.0, set 1) + + + ep_cashna + Cashino (Maygay - Extreme) (EPOCH) (CSHI 1.0, set 2) + + + ep_casrd + Casino Royale Deluxe Club (Maygay) (EPOCH) (1.5, set 1) + + + ep_casrda + Casino Royale Deluxe Club (Maygay) (EPOCH) (1.3, set 2) + + + ep_cbrcl + Cannonball Run Club (Global) (EPOCH) (set 1) + + + ep_cbrcla + Cannonball Run Club (Global) (EPOCH) (set 2) + + + ep_cbrclb + Cannonball Run Club (Global) (EPOCH) (set 3) + + + ep_cbrclc + Cannonball Run Club (Global) (EPOCH) (set 4) + + + ep_cbrcld + Cannonball Run Club (Global) (EPOCH) (set 5) + + + ep_cbrcle + Cannonball Run Club (Global) (EPOCH) (set 6) + + + ep_cbrclf + Cannonball Run Club (Global) (EPOCH) (set 7) + + + ep_cbrclg + Cannonball Run Club (Global) (EPOCH) (set 8) + + + ep_cbrclh + Cannonball Run Club (Global) (EPOCH) (set 9) + + + ep_cbrcli + Cannonball Run Club (Global) (EPOCH) (set 10) + + + ep_cbrclj + Cannonball Run Club (Global) (EPOCH) (set 11) + + + ep_cbrclk + Cannonball Run Club (Global) (EPOCH) (set 12) + + + ep_cbrun + Cannonball Run (Global) (EPOCH) (2.2, set 1) + + + ep_cbruna + Cannonball Run (Global) (EPOCH) (2.2, set 2) + + + ep_cbrunb + Cannonball Run (Global) (EPOCH) (2.4, set 3) + + + ep_cbrunc + Cannonball Run (Global) (EPOCH) (2.4, set 4) + + + ep_cbrund + Cannonball Run (Global) (EPOCH) (3.1, set 5) + + + ep_cbrune + Cannonball Run (Global) (EPOCH) (3.1, set 6) + + + ep_cclas + Casino Classic (Global) (EPOCH) (set 1) + + + ep_cclasa + Casino Classic (Global) (EPOCH) (set 2) + + + ep_ccock + Cash Cocktail (Maygay) (EPOCH) (1.1, set 1) + + + ep_ccocka + Cash Cocktail (Maygay) (EPOCH) (1.1, set 2) + + + ep_ccockb + Cash Cocktail (Maygay) (EPOCH) (1.1, set 3) + + + ep_ccockc + Cash Cocktail (Maygay) (EPOCH) (1.1, set 4) + + + ep_cdspn + Cardinal Spin (Maygay) (EPOCH) (1.1, set 1) + + + ep_cdspna + Cardinal Spin (Maygay) (EPOCH) (1.1, set 2) + + + ep_cfall + Cash Falls (Maygay) (EPOCH) (1.2, set 1) + + + ep_cfalla + Cash Falls (Maygay) (EPOCH) (1.3, set 2) + + + ep_cfallb + Cash Falls (Maygay) (EPOCH) (1.3, set 3) + + + ep_cfallc + Cash Falls (Maygay) (EPOCH) (2.3, set 4) + + + ep_cfalld + Cash Falls (Maygay) (EPOCH) (2.3, set 5) + + + ep_cfalle + Cash Falls (Maygay) (EPOCH) (3.2, set 6) + + + ep_cfallf + Cash Falls (Maygay) (EPOCH) (3.2, set 7) + + + ep_cflow + Cash Flow (Maygay) (EPOCH) (3.7, set 1) + + + ep_cflowa + Cash Flow (Maygay) (EPOCH) (3.2, set 2) + + + ep_cflowc + Cash Flow (Maygay) (EPOCH) (3.A, set 3) + + + ep_cflowd + Cash Flow (Maygay) (EPOCH) (3.A, set 4) + + + ep_cgord + Cash Gordon (Maygay) (EPOCH) (2.1, set 1) + + + ep_cgorda + Cash Gordon (Maygay) (EPOCH) (2.3, set 2) + + + ep_cgordb + Cash Gordon (Maygay) (EPOCH) (2.3, set 3) + + + ep_cgordc + Cash Gordon (Maygay) (EPOCH) (1.9, set 4) + + + ep_cgrc + Casino Grand Classic (Global) (EPOCH) (set 1) + + + ep_cgrca + Casino Grand Classic (Global) (EPOCH) (set 2) + + + ep_cgred + Club Greed (Global) (EPOCH) (set 1) + + + ep_cgreda + Club Greed (Global) (EPOCH) (set 2) + + + ep_chock + Chocks Away (Maygay) (EPOCH) (1.1, set 1) + + + ep_chocka + Chocks Away (Maygay) (EPOCH) (1.1, set 2) + + + ep_chockb + Chocks Away (Maygay) (EPOCH) (1.1, set 3) + + + ep_cock + Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 1) + + + ep_cocka + Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 2) + + + ep_cockb + Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 3) + + + ep_cockc + Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 4) + + + ep_cockd + Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 5) + + + ep_cocke + Cock A Doodle Dosh (Maygay - Union) (EPOCH) (set 6) + + + ep_commd + Complete Madness (Maygay) (EPOCH) (2.2, set 1) + + + ep_commda + Complete Madness (Maygay) (EPOCH) (2.2, set 2) + + + ep_commdb + Complete Madness (Maygay) (EPOCH) (1.1, set 3) + + + ep_commdc + Complete Madness (Maygay) (EPOCH) (1.2, set 4) + + + ep_commdd + Complete Madness (Maygay) (EPOCH) (2.1, set 5) + + + ep_cor2 + Coronation Street 2 (Maygay) (EPOCH) (3.7, set 1) + + + ep_cor2a + Coronation Street 2 (Maygay) (EPOCH) (3.7, set 2) + + + ep_cor2b + Coronation Street 2 (Maygay) (EPOCH) (3.8, set 3) + + + ep_cor2c + Coronation Street 2 (Maygay) (EPOCH) (3.8, set 4) + + + ep_cormn + Coronation Street Monopoly Club (Maygay) (EPOCH) (1.7, set 1) + + + ep_cormna + Coronation Street Monopoly Club (Maygay) (EPOCH) (1.7, set 2) + + + ep_cosc + Carry On Screaming (Maygay) (EPOCH) (1.3, set 1) + + + ep_cosca + Carry On Screaming (Maygay) (EPOCH) (1.3, set 2) + + + ep_cow + Carry On Winning (Maygay) (EPOCH) (1.3, set 1) + + + ep_cowa + Carry On Winning (Maygay) (EPOCH) (1.3, set 2) + + + ep_crazy + Reel Crazy (Maygay) (EPOCH) (1.6, set 1) + + + ep_crazya + Reel Crazy (Maygay) (EPOCH) (1.6, set 2) + + + ep_crazyb + Reel Crazy (Maygay) (EPOCH) (2.6, set 3) + + + ep_crazyc + Reel Crazy (Maygay) (EPOCH) (2.6, set 4) + + + ep_crazyd + Reel Crazy (Maygay) (EPOCH) (1.9, set 5) + + + ep_crazye + Reel Crazy (Maygay) (EPOCH) (1.9, set 6) + + + ep_crzbn + Crazy Bingo (Maygay) (EPOCH) (1.1, set 1) + + + ep_crzbna + Crazy Bingo (Maygay) (EPOCH) (1.1, set 2) + + + ep_crzbnb + Crazy Bingo (Maygay) (EPOCH) (1.1 Gala, set 3) + + + ep_crzbnc + Crazy Bingo (Maygay) (EPOCH) (1.1 Gala, set 4) + + + ep_cshpn + Cash In The Pan (Maygay) (EPOCH) (1.1, set 1) + + + ep_cshpna + Cash In The Pan (Maygay) (EPOCH) (1.1, set 2) + + + ep_cslay + Cash Slayer (Global) (EPOCH) (1.4, set 1) + + + ep_cslaya + Cash Slayer (Global) (EPOCH) (set 2) + + + ep_cstrk + Crazy Streak Club (Global) (EPOCH) (set 1) + + + ep_cstrka + Crazy Streak Club (Global) (EPOCH) (set 2) + + + ep_cstrkb + Crazy Streak Club (Global) (EPOCH) (set 3) + + + ep_cstrkc + Crazy Streak Club (Global) (EPOCH) (set 4) + + + ep_cstrkd + Crazy Streak Club (Global) (EPOCH) (set 5) + + + ep_cstrke + Crazy Streak Club (Global) (EPOCH) (set 6) + + + ep_cstrkf + Crazy Streak Club (Global) (EPOCH) (set 7) + + + ep_cstrkg + Crazy Streak Club (Global) (EPOCH) (set 8) + + + ep_ctc + Cut Throat Cash (Global) (EPOCH) (1.2, set 1) + + + ep_ctca + Cut Throat Cash (Global) (EPOCH) (1.2, set 2) + + + ep_ctit + Cash Of The Titans (Maygay) (EPOCH) (1.5, set 1) + + + ep_ctita + Cash Of The Titans (Maygay) (EPOCH) (1.5, set 2) + + + ep_cyc + Cyclone (Extreme) (EPOCH) (CYCL 0.2, set 1) + + + ep_cyca + Cyclone (Extreme) (EPOCH) (CYCL 0.2, set 2) + + + ep_cycb + Cyclone (Extreme) (EPOCH) (CYCL 0.3, set 3) + + + ep_cycc + Cyclone (Extreme) (EPOCH) (CYCL 0.3, set 4) + + + ep_cycd + Cyclone (Extreme) (EPOCH) (CYCL 0.1, set 5) + + + ep_cyce + Cyclone (Extreme) (EPOCH) (CYCL 0.1, set 6) + + + ep_cycl + Cyclone Club (Maygay) (EPOCH) (3.1, set 1) + + + ep_cycla + Cyclone Club (Maygay) (EPOCH) (3.1, set 2) + + + ep_cyclb + Cyclone Club (Maygay) (EPOCH) (2.1, set 3) + + + ep_dblim + Double Impact (Maygay - Impulse) (EPOCH) (set 1) + + + ep_dblima + Double Impact (Maygay - Impulse) (EPOCH) (set 2) + + + ep_dblimb + Double Impact (Maygay - Impulse) (EPOCH) (set 3) + + + ep_dblimc + Double Impact (Maygay - Impulse) (EPOCH) (set 4) + + + ep_dblimd + Double Impact (Maygay - Impulse) (EPOCH) (set 5) + + + ep_ddq + Dungeons & Drag Queens (Global) (EPOCH) (1.4, set 1) + + + ep_ddqa + Dungeons & Drag Queens (Global) (EPOCH) (1.4, set 2) + + + ep_ddqb + Dungeons & Drag Queens (Global) (EPOCH) (2.1, set 3) + + + ep_ddqc + Dungeons & Drag Queens (Global) (EPOCH) (2.1, set 4) + + + ep_ddqcl + Dungeons & Drag Queens Club (Global) (EPOCH) (set 1) + + + ep_ddqcla + Dungeons & Drag Queens Club (Global) (EPOCH) (set 2) + + + ep_ddqclb + Dungeons & Drag Queens Club (Global) (EPOCH) (set 3) + + + ep_ddqclc + Dungeons & Drag Queens Club (Global) (EPOCH) (set 4) + + + ep_ddqcld + Dungeons & Drag Queens Club (Global) (EPOCH) (set 5) + + + ep_ddqcle + Dungeons & Drag Queens Club (Global) (EPOCH) (set 6) + + + ep_ddqclf + Dungeons & Drag Queens Club (Global) (EPOCH) (set 7) + + + ep_ddqclg + Dungeons & Drag Queens Club (Global) (EPOCH) (set 8) + + + ep_ddqd + Dungeons & Drag Queens (Global) (EPOCH) (2.2, set 5) + + + ep_ddqe + Dungeons & Drag Queens (Global) (EPOCH) (2.2, set 6) + + + ep_ddqf + Dungeons & Drag Queens (Global) (EPOCH) (2.4, set 7) + + + ep_ddqg + Dungeons & Drag Queens (Global) (EPOCH) (2.4, set 8) + + + ep_ddqh + Dungeons & Drag Queens (Global) (EPOCH) (2.5, set 9) + + + ep_ddqi + Dungeons & Drag Queens (Global) (EPOCH) (2.5, set 10) + + + ep_dmbus + Dambusters (Impulse) (EPOCH) (set 1) + + + ep_dmbusa + Dambusters (Impulse) (EPOCH) (set 2) + + + ep_dmbusb + Dambusters (Impulse) (EPOCH) (set 3) + + + ep_dmbusc + Dambusters (Impulse) (EPOCH) (set 4) + + + ep_dmbusd + Dambusters (Impulse) (EPOCH) (set 5) + + + ep_dmbuse + Dambusters (Impulse) (EPOCH) (set 6) + + + ep_dmbusf + Dambusters (Impulse) (EPOCH) (set 7) + + + ep_doubl + Double Top (Maygay) (EPOCH) (1.4, set 1) + + + ep_doubla + Double Top (Maygay) (EPOCH) (1.4, set 2) + + + ep_doublb + Double Top (Maygay) (EPOCH) (1.6, set 3) + + + ep_doublc + Double Top (Maygay) (EPOCH) (1.6, set 4) + + + ep_doubld + Double Top (Maygay) (EPOCH) (1.4, set 5) + + + ep_duff + The Simpsons - Duff Beer Guide (Maygay) (EPOCH) (set 1) + + + ep_duffa + The Simpsons - Duff Beer Guide (Maygay) (EPOCH) (set 2) + + + ep_duffb + The Simpsons - Duff Beer Guide (Maygay) (EPOCH) (set 3) + + + ep_duffc + The Simpsons - Duff Beer Guide (Maygay) (EPOCH) (set 4) + + + ep_evil + Evil Streak (Maygay) (EPOCH) (1.6, set 1) + + + ep_evila + Evil Streak (Maygay) (EPOCH) (1.6, set 2) + + + ep_evilb + Evil Streak (Maygay) (EPOCH) (1.4, set 3) + + + ep_fgods + Fruit Of The Gods (Maygay) (EPOCH) (1.2, set 1) + + + ep_fgodsa + Fruit Of The Gods (Maygay) (EPOCH) (1.2, set 2) + + + ep_fgodsb + Fruit Of The Gods (Maygay) (EPOCH) (2.2, set 3) + + + ep_fgodsc + Fruit Of The Gods (Maygay) (EPOCH) (2.2, set 4) + + + ep_fgodsd + Fruit Of The Gods (Maygay) (EPOCH) (2.1, set 5) + + + ep_fgodse + Fruit Of The Gods (Maygay) (EPOCH) (3.2, set 6) + + + ep_fgodsf + Fruit Of The Gods (Maygay) (EPOCH) (1.1, set 7) + + + ep_fgodsg + Fruit Of The Gods (Maygay) (EPOCH) (1.1, set 8) + + + ep_flash + Flashback (Maygay - Impulse) (EPOCH) (set 1) + + + ep_flasha + Flashback (Maygay - Impulse) (EPOCH) (set 2) + + + ep_flashb + Flashback (Maygay - Impulse) (EPOCH) (set 3) + + + ep_flashc + Flashback (Maygay - Impulse) (EPOCH) (set 4) + + + ep_flashd + Flashback (Maygay - Impulse) (EPOCH) (set 5) + + + ep_flashe + Flashback (Maygay - Impulse) (EPOCH) (set 6) + + + ep_flashf + Flashback (Maygay - Impulse) (EPOCH) (set 7) + + + ep_fmf + Full Moon Fever (Global) (EPOCH) (set 1) + + + ep_fmfa + Full Moon Fever (Global) (EPOCH) (set 2) + + + ep_fnclb + Fruit & Nudge Club (Maygay) (EPOCH) (set 1) + + + ep_fnclba + Fruit & Nudge Club (Maygay) (EPOCH) (set 2) + + + ep_fog + Fields of Gold (Global) (EPOCH) (set 1) + + + ep_foga + Fields of Gold (Global) (EPOCH) (set 2) + + + ep_fortg + Fortune & Glory (Maygay - Impulse) (EPOCH) (set 1) + + + ep_fortga + Fortune & Glory (Maygay - Impulse) (EPOCH) (set 2) + + + ep_fortgb + Fortune & Glory (Maygay - Impulse) (EPOCH) (set 3) + + + ep_fran + Frantic (Maygay) (EPOCH) (set 1) + + + ep_frana + Frantic (Maygay) (EPOCH) (set 2) + + + ep_fullm + Full Moon Fever (Maygay - Impulse) (EPOCH) (set 1) + + + ep_fullma + Full Moon Fever (Maygay - Impulse) (EPOCH) (set 2) + + + ep_fullmb + Full Moon Fever (Maygay - Impulse) (EPOCH) (set 3) + + + ep_fullmc + Full Moon Fever (Maygay - Impulse) (EPOCH) (set 4) + + + ep_fullmd + Full Moon Fever (Maygay - Impulse) (EPOCH) (set 5) + + + ep_fullme + Full Moon Fever (Maygay - Impulse) (EPOCH) (set 6) + + + ep_fullmf + Full Moon Fever (Maygay - Impulse) (EPOCH) (set 7) + + + ep_funny + Funny Money (Maygay) (EPOCH) (set 1) + + + ep_funnya + Funny Money (Maygay) (EPOCH) (set 2) + + + ep_funnyb + Funny Money (Maygay) (EPOCH) (set 3) + + + ep_funnyc + Funny Money (Maygay) (EPOCH) (set 4) + + + ep_funnyd + Funny Money (Maygay) (EPOCH) (set 5) + + + ep_funnye + Funny Money (Maygay) (EPOCH) (set 6) + + + ep_funnyf + Funny Money (Maygay) (EPOCH) (set 7) + + + ep_funnyg + Funny Money (Maygay) (EPOCH) (set 8) + + + ep_geclb + Great Escape Club (Maygay) (EPOCH) (1.C, set 1) + + + ep_geclba + Great Escape Club (Maygay) (EPOCH) (1.C, set 2) + + + ep_geclbb + Great Escape Club (Maygay) (EPOCH) (1.9, set 3) + + + ep_geron + Geronimo (Maygay - Impulse) (EPOCH) (set 1) + + + ep_gerona + Geronimo (Maygay - Impulse) (EPOCH) (set 2) + + + ep_geronb + Geronimo (Maygay - Impulse) (EPOCH) (set 3) + + + ep_geronc + Geronimo (Maygay - Impulse) (EPOCH) (set 4) + + + ep_gerond + Geronimo (Maygay - Impulse) (EPOCH) (set 5) + + + ep_gerone + Geronimo (Maygay - Impulse) (EPOCH) (set 6) + + + ep_gesc2 + Great Escape 2 (Maygay) (EPOCH) (2.1, set 1) + + + ep_gesc2a + Great Escape 2 (Maygay) (EPOCH) (2.1, set 2) + + + ep_gldtp + Gold Top (Maygay) (EPOCH) (1.1, set 1) + + + ep_gldtpa + Gold Top (Maygay) (EPOCH) (1.1, set 2) + + + ep_goldf + Gold Fever (Impulse) (EPOCH) + + + ep_greed + Greed (Global) (EPOCH) (1.3, set 1) + + + ep_greeda + Greed (Global) (EPOCH) (1.3, set 2) + + + ep_gresc + Great Escape (Maygay) (EPOCH) (1.1, set 1) + + + ep_gresca + Great Escape (Maygay) (EPOCH) (1.1, set 2) + + + ep_gridr + Gridrunner (Maygay - Impulse) (EPOCH) (set 1) + + + ep_gridra + Gridrunner (Maygay - Impulse) (EPOCH) (set 2) + + + ep_gridrb + Gridrunner (Maygay - Impulse) (EPOCH) (set 3) + + + ep_gridrc + Gridrunner (Maygay - Impulse) (EPOCH) (set 4) + + + ep_gridrd + Gridrunner (Maygay - Impulse) (EPOCH) (set 5) + + + ep_grncl + Grid Runner Club (Global) (EPOCH) (set 1) + + + ep_grncla + Grid Runner Club (Global) (EPOCH) (set 2) + + + ep_grnclb + Grid Runner Club (Global) (EPOCH) (set 3) + + + ep_grnclc + Grid Runner Club (Global) (EPOCH) (set 4) + + + ep_grun + Grid Runner (Global) (EPOCH) (set 1) + + + ep_gruna + Grid Runner (Global) (EPOCH) (set 2) + + + ep_gtrot + Globe Trotter (Global) (EPOCH) (set 1) + + + ep_gtrota + Globe Trotter (Global) (EPOCH) (set 2) + + + ep_heybc + Hey Big Spender Club (Global) (EPOCH) (set 1) + + + ep_heybca + Hey Big Spender Club (Global) (EPOCH) (set 2) + + + ep_heybg + Hey Big Spender (Global) (EPOCH) (set 1) + + + ep_heybga + Hey Big Spender (Global) (EPOCH) (set 2) + + + ep_heybgb + Hey Big Spender (Global) (EPOCH) (set 3) + + + ep_heybgc + Hey Big Spender (Global) (EPOCH) (set 4) + + + ep_hhclb + Haunted House Club (Maygay) (EPOCH) (1.4, set 1) + + + ep_hhclba + Haunted House Club (Maygay) (EPOCH) (1.4, set 2) + + + ep_hhclbb + Haunted House Club (Maygay) (EPOCH) (1.1, set 3) + + + ep_hhclbc + Haunted House Club (Maygay) (EPOCH) (1.1, set 4) + + + ep_highv + High Voltage (Maygay - Impulse) (EPOCH) (set 1) + + + ep_highva + High Voltage (Maygay - Impulse) (EPOCH) (set 2) + + + ep_highvb + High Voltage (Maygay - Impulse) (EPOCH) (set 3) + + + ep_highvc + High Voltage (Maygay - Impulse) (EPOCH) (set 4) + + + ep_highvd + High Voltage (Maygay - Impulse) (EPOCH) (set 5) + + + ep_highve + High Voltage (Maygay - Impulse) (EPOCH) (set 6) + + + ep_highvf + High Voltage (Maygay - Impulse) (EPOCH) (set 7) + + + ep_hiscl + Hi Spirits Club (Global) (EPOCH) (set 1) + + + ep_hiscla + Hi Spirits Club (Global) (EPOCH) (set 2) + + + ep_hispr + Hi Spirits (Global) (EPOCH) (1.A, set 1) + + + ep_hispra + Hi Spirits (Global) (EPOCH) (1.A, set 2) + + + ep_hisprb + Hi Spirits (Global) (EPOCH) (4.2, set 3) + + + ep_hisprc + Hi Spirits (Global) (EPOCH) (4.2, set 4) + + + ep_hisprd + Hi Spirits (Global) (EPOCH) (3.2, set 5) + + + ep_hispre + Hi Spirits (Global) (EPOCH) (3.2, set 6) + + + ep_hogmn + Hog Money (Maygay - Impulse) (EPOCH) (set 1) + + + ep_hogmna + Hog Money (Maygay - Impulse) (EPOCH) (set 2) + + + ep_hogmnb + Hog Money (Maygay - Impulse) (EPOCH) (set 3) + + + ep_homer + The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.A, set 1) + + + ep_homera + The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (3.2, set 3) + + + ep_homerb + The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (3.2, set 4) + + + ep_homerc + The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.B, set 5) + + + ep_homerd + The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.B, set 6) + + + ep_homere + The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (3.1, set 7) + + + ep_homerf + The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (3.1, set 8) + + + ep_homerg + The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.1, set 9) + + + ep_homerh + The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.1, set 10) + + + ep_homeri + The Simpsons - Homer's Meltdown (Maygay) (EPOCH) (2.9, set 2) + + + ep_htdgs + Hot Dogs (Maygay) (EPOCH) (set 1) + + + ep_htdgsa + Hot Dogs (Maygay) (EPOCH) (set 2) + + + ep_hubbl + Hubble Bubble (Maygay) (EPOCH) (set 1) + + + ep_hubbla + Hubble Bubble (Maygay) (EPOCH) (set 2) + + + ep_hur + Hurricane (Global) (EPOCH) (set 1) + + + ep_hura + Hurricane (Global) (EPOCH) (set 2) + + + ep_hurb + Hurricane (Global) (EPOCH) (set 3) + + + ep_huric + Hurricane (Maygay - Impulse) (EPOCH) (set 1) + + + ep_hurica + Hurricane (Maygay - Impulse) (EPOCH) (set 2) + + + ep_huricb + Hurricane (Maygay - Impulse) (EPOCH) (set 3) + + + ep_huricc + Hurricane (Maygay - Impulse) (EPOCH) (set 4) + + + ep_huricd + Hurricane (Maygay - Impulse) (EPOCH) (set 5) + + + ep_hurice + Hurricane (Maygay - Impulse) (EPOCH) (set 6) + + + ep_hvns + Heavens Above (Maygay) (EPOCH) (set 1) + + + ep_hvnsa + Heavens Above (Maygay) (EPOCH) (set 2) + + + ep_hyst + Hysteria (Maygay - Impulse) (EPOCH) (set 1) + + + ep_hysta + Hysteria (Maygay - Impulse) (EPOCH) (set 2) + + + ep_icebg + Ice Burger (Maygay) (EPOCH) (1.4, set 1) + + + ep_icebga + Ice Burger (Maygay) (EPOCH) (1.2, set 2) + + + ep_icebgb + Ice Burger (Maygay) (EPOCH) (1.4, set 3) + + + ep_icebgc + Ice Burger (Maygay) (EPOCH) (1.3, set 4) + + + ep_icebgd + Ice Burger (Maygay) (EPOCH) (1.1, set 5) + + + ep_icebge + Ice Burger (Maygay) (EPOCH) (1.1, set 6) + + + ep_icebgf + Ice Burger (Maygay) (EPOCH) (1.3, set 7) + + + ep_icebgg + Ice Burger (Maygay) (EPOCH) (1.3, set 8) + + + ep_icebgh + Ice Burger (Maygay) (EPOCH) (1.4, set 9) + + + ep_icebgi + Ice Burger (Maygay) (EPOCH) (1.4, set 10) + + + ep_ifern + Inferno (Impulse) (EPOCH) (set 1) + + + ep_iferna + Inferno (Impulse) (EPOCH) (set 2) + + + ep_ijcl + The Italian Job Club (Maygay) (EPOCH) (2.6, set 1) + + + ep_ijcla + The Italian Job Club (Maygay) (EPOCH) (2.5, set 2) + + + ep_ijob + The Italian Job (Maygay) (EPOCH, v2.1) + + + ep_ijoba + The Italian Job (Maygay) (EPOCH, v1.1) + + + ep_imj + I'm A Jackpot (Global) (EPOCH) (1.5) + + + ep_inca + Inca Dinka Do (Maygay - Extreme) (EPOCH) (INCA 1.2, set 1) + + + ep_incaa + Inca Dinka Do (Maygay - Extreme) (EPOCH) (INCA 1.2, set 2) + + + ep_incab + Inca Dinka Do (Maygay - Extreme) (EPOCH) (INCA 1.1, set 3) + + + ep_itjb2 + The Italian Job 2 (Maygay) (EPOCH) (1.5, set 1) + + + ep_itjb2a + The Italian Job 2 (Maygay) (EPOCH) (1.5, set 2) + + + ep_itjb2b + The Italian Job 2 (Maygay) (EPOCH) (2.3, set 3) + + + ep_itjb2c + The Italian Job 2 (Maygay) (EPOCH) (2.3, set 4) + + + ep_itjb3 + Italian Job 3 (Maygay) (EPOCH) (set 1) + + + ep_itjb3a + Italian Job 3 (Maygay) (EPOCH) (set 2) + + + ep_jakbn + Jackpot & The Beanstreak (Extreme) (EPOCH) (JABS 0.3, set 1) + + + ep_jakbna + Jackpot & The Beanstreak (Extreme) (EPOCH) (JABS 0.3, set 2) + + + ep_jakbnb + Jackpot & The Beanstreak (Extreme) (EPOCH) (JABS 0.5, set 3) + + + ep_jakbnc + Jackpot & The Beanstreak (Extreme) (EPOCH) (JABS 0.5, set 4) + + + ep_jsttt + Just The Ticket (Maygay) (EPOCH) (4.2, set 1) + + + ep_jsttta + Just The Ticket (Maygay) (EPOCH) (4.2, set 2) + + + ep_jstttb + Just The Ticket (Maygay) (EPOCH) (3.5, set 3) + + + ep_jstttc + Just The Ticket (Maygay) (EPOCH) (3.4, set 4) + + + ep_jstttd + Just The Ticket (Maygay) (EPOCH) (3.5, set 5) + + + ep_jsttte + Just The Ticket (Maygay) (EPOCH) (3.5, set 6) + + + ep_jstttf + Just The Ticket (Maygay) (EPOCH) (3.6, set 7) + + + ep_jstttg + Just The Ticket (Maygay) (EPOCH) (3.6, set 8) + + + ep_kopcl + Knockout Punch Club (Global) (EPOCH) (set 1) + + + ep_kopcla + Knockout Punch Club (Global) (EPOCH) (set 2) + + + ep_kopclb + Knockout Punch Club (Global) (EPOCH) (set 3) + + + ep_ll + Lucky Ladders (Extreme) (EPOCH) (LULA 0.3, set 1) + + + ep_lla + Lucky Ladders (Extreme) (EPOCH) (LULA 0.3, set 2) + + + ep_loadd + Loaded (Maygay) (EPOCH) (LOAD 1.2, set 1) + + + ep_loadda + Loaded (Maygay) (EPOCH) (LOAD 1.2, set 2) + + + ep_ltt + Licence To Thrill (Global) (EPOCH) (set 1) + + + ep_ltta + Licence To Thrill (Global) (EPOCH) (set 2) + + + ep_lug + London Underground (Maygay) (EPOCH) (2.4, set 1) + + + ep_luga + London Underground (Maygay) (EPOCH) (2.9, set 2) + + + ep_lugb + London Underground (Maygay) (EPOCH) (3.1, set 3) + + + ep_lugc + London Underground (Maygay) (EPOCH) (3.1, set 4) + + + ep_lukld + Lucky Ladders (Maygay) (EPOCH) (LULA 0.2, set 1) + + + ep_luklda + Lucky Ladders (Maygay) (EPOCH) (LULA 0.2, set 2) + + + ep_makmv + Make Your Move (Global) (EPOCH) (set 1) + + + ep_makmva + Make Your Move (Global) (EPOCH) (set 2) + + + ep_manic + Manic Miner (Maygay - Impulse) (EPOCH) (set 1) + + + ep_manica + Manic Miner (Maygay - Impulse) (EPOCH) (set 2) + + + ep_manicb + Manic Miner (Maygay - Impulse) (EPOCH) (set 3) + + + ep_manicc + Manic Miner (Maygay - Impulse) (EPOCH) (set 4) + + + ep_manicd + Manic Miner (Maygay - Impulse) (EPOCH) (set 5) + + + ep_manice + Manic Miner (Maygay - Impulse) (EPOCH) (set 6) + + + ep_manicf + Manic Miner (Maygay - Impulse) (EPOCH) (set 7) + + + ep_mario + Super Mario (Maygay) (EPOCH) (1.5, set 1) + + + ep_marioa + Super Mario (Maygay) (EPOCH) (1.5, set 2) + + + ep_mariob + Super Mario (Maygay) (EPOCH) (1.A, set 3) + + + ep_marioc + Super Mario (Maygay) (EPOCH) (1.A, set 4) + + + ep_mariod + Super Mario (Maygay) (EPOCH) (2.A, set 5) + + + ep_marioe + Super Mario (Maygay) (EPOCH) (2.A, set 6) + + + ep_mariof + Super Mario (Maygay) (EPOCH) (1.C, set 7) + + + ep_mariog + Super Mario (Maygay) (EPOCH) (1.C, set 8) + + + ep_marioh + Super Mario (Maygay) (EPOCH) (1.B, set 9) + + + ep_matrx + Matrix (Maygay - Impulse) (EPOCH) + + + ep_merln + Merlin's Magic (Maygay) (EPOCH) (1.91) + + + ep_midas + Midas Touch Club (Maygay) (EPOCH) (1.1, set 1) + + + ep_midasa + Midas Touch Club (Maygay) (EPOCH) (1.1, set 2) + + + ep_milhr + Who Wants To Be A Millionhare? (Global) (EPOCH) (1.2, set 1) + + + ep_milhra + Who Wants To Be A Millionhare? (Global) (EPOCH) (1.2, set 2) + + + ep_milhrb + Who Wants To Be A Millionhare? (Global) (EPOCH) (1.3, set 3) + + + ep_milhrc + Who Wants To Be A Millionhare? (Global) (EPOCH) (1.3, set 4) + + + ep_milhrd + Who Wants To Be A Millionhare? (Global) (EPOCH) (1.6, set 5) + + + ep_milhre + Who Wants To Be A Millionhare? (Global) (EPOCH) (1.6, set 6) + + + ep_milhrf + Who Wants To Be A Millionhare? (Global) (EPOCH) (1.9, set 7) + + + ep_milhrg + Who Wants To Be A Millionhare? (Global) (EPOCH) (1.9, set 8) + + + ep_mkart + Mario Kart (Maygay) (EPOCH) (1.2, set 1) + + + ep_mkarta + Mario Kart (Maygay) (EPOCH) (1.2, set 2) + + + ep_mkartb + Mario Kart (Maygay) (EPOCH) (1.6, set 3) + + + ep_mkartc + Mario Kart (Maygay) (EPOCH) (1.6, set 4) + + + ep_mkartd + Mario Kart (Maygay) (EPOCH) (1.1, set 5) + + + ep_mkarte + Mario Kart (Maygay) (EPOCH) (1.5, set 6) + + + ep_mlhrc + Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 1) + + + ep_mlhrca + Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 2) + + + ep_mlhrcb + Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 3) + + + ep_mlhrcc + Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 4) + + + ep_mlhrcd + Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 5) + + + ep_mlhrce + Who Whats To Be A Millionhare Club (Global) (EPOCH) (set 6) + + + ep_monbs + Monte Carlo Or Bust (Maygay) (EPOCH) (1.2, set 1) + + + ep_monbsa + Monte Carlo Or Bust (Maygay) (EPOCH) (1.2, set 2) + + + ep_monky + Monkey Business (Global) (EPOCH) (1.4, set 1) + + + ep_monkya + Monkey Business (Global) (EPOCH) (1.5, set 2) + + + ep_monrt + The Money Returns Club (Global) (EPOCH) (set 1) + + + ep_monrta + The Money Returns Club (Global) (EPOCH) (set 2) + + + ep_monrtb + The Money Returns Club (Global) (EPOCH) (set 3) + + + ep_monrtc + The Money Returns Club (Global) (EPOCH) (set 4) + + + ep_monrtd + The Money Returns Club (Global) (EPOCH) (set 5) + + + ep_monrte + The Money Returns Club (Global) (EPOCH) (set 6) + + + ep_monrtf + The Money Returns Club (Global) (EPOCH) (set 7) + + + ep_monsh + The Moonshine Club (Global) (EPOCH) (set 1) + + + ep_monsha + The Moonshine Club (Global) (EPOCH) (set 2) + + + ep_monshb + The Moonshine Club (Global) (EPOCH) (set 3) + + + ep_monshc + The Moonshine Club (Global) (EPOCH) (set 4) + + + ep_monshd + The Moonshine Club (Global) (EPOCH) (set 5) + + + ep_monshe + The Moonshine Club (Global) (EPOCH) (set 6) + + + ep_monshf + The Moonshine Club (Global) (EPOCH) (set 7) + + + ep_mrmus + Mr Muscle (Maygay) (EPOCH) (1.2, set 1) + + + ep_mrmusa + Mr Muscle (Maygay) (EPOCH) (1.2, set 2) + + + ep_mummy + Mummy Talks (Impulse) (EPOCH) (set 1) + + + ep_mummya + Mummy Talks (Impulse) (EPOCH) (set 2) + + + ep_mummyb + Mummy Talks (Impulse) (EPOCH) (set 3) + + + ep_mummyc + Mummy Talks (Impulse) (EPOCH) (set 4) + + + ep_mummyd + Mummy Talks (Impulse) (EPOCH) (set 5) + + + ep_mummye + Mummy Talks (Impulse) (EPOCH) (set 6) + + + ep_mummyf + Mummy Talks (Impulse) (EPOCH) (set 7) + + + ep_mwom + Mortal Wombat (Maygay) (EPOCH) (set 1) + + + ep_mwoma + Mortal Wombat (Maygay) (EPOCH) (set 2) + + + ep_mwomb + Mortal Wombat (Maygay) (EPOCH) (set 3) + + + ep_mwomc + Mortal Wombat (Maygay) (EPOCH) (set 4) + + + ep_mwomd + Mortal Wombat (Maygay) (EPOCH) (set 5) + + + ep_noter + Note Runner (Maygay) (EPOCH) (NORU 0.1, set 1) + + + ep_notera + Note Runner (Maygay) (EPOCH) (NORU 0.1, set 2) + + + ep_noterb + Note Runner (Maygay) (EPOCH) (NORU 0.2, set 3) + + + ep_noterc + Note Runner (Maygay) (EPOCH) (NORU 0.2, set 4) + + + ep_noterd + Note Runner (Maygay) (EPOCH) (NORU 1.0, set 5) + + + ep_notere + Note Runner (Maygay) (EPOCH) (NORU 1.0, set 6) + + + ep_nuns + Nuns Of Navarone (Maygay) (EPOCH) (2.4, set 1) + + + ep_nunsa + Nuns Of Navarone (Maygay) (EPOCH) (2.4, set 2) + + + ep_nyny + New York New York (Maygay) (EPOCH) (3.6, set 1) + + + ep_nynya + New York New York (Maygay) (EPOCH) (3.6, set 2) + + + ep_nynyb + New York New York (Maygay) (EPOCH) (4.6, set 3) + + + ep_nynyc + New York New York (Maygay) (EPOCH) (4.6, set 4) + + + ep_nynyd + New York New York (Maygay) (EPOCH) (3.A, set 5) + + + ep_nynye + New York New York (Maygay) (EPOCH) (3.A, set 6) + + + ep_nynyf + New York New York (Maygay) (EPOCH) (3.9, set 7) + + + ep_otm + Over The Moon (Maygay) (EPOCH) (1.2, set 1) + + + ep_otma + Over The Moon (Maygay) (EPOCH) (1.2, set 2) + + + ep_otmcl + Over The Moon Club (Maygay) (EPOCH) (set 1) + + + ep_otmcla + Over The Moon Club (Maygay) (EPOCH) (set 2) + + + ep_ozzie + Ozzie Ozzie Ozzie (Maygay) (EPOCH) (2.Z, set 1) + + + ep_ozziea + Ozzie Ozzie Ozzie (Maygay) (EPOCH) ( .2, set 2) + + + ep_ozzieb + Ozzie Ozzie Ozzie (Maygay) (EPOCH) (5.J, set 3) + + + ep_ozziec + Ozzie Ozzie Ozzie (Maygay) (EPOCH) (6.J, set 4) + + + ep_ozzied + Ozzie Ozzie Ozzie (Maygay) (EPOCH) (1.1, set 5) + + + ep_ozziee + Ozzie Ozzie Ozzie (Maygay) (EPOCH) (1.1, set 6) + + + ep_ozzief + Ozzie Ozzie Ozzie (Maygay) (EPOCH) (2.Z, set 7) + + + ep_ozzieg + Ozzie Ozzie Ozzie (Maygay) (EPOCH) (0.2, set 8) + + + ep_ozzieh + Ozzie Ozzie Ozzie (Maygay) (EPOCH) (0.2, set 9) + + + ep_party + Party Party (Global) (EPOCH) (1.1) + + + ep_pascl + Passport To Riches Classic Club (Maygay) (EPOCH) (1.2, set 1) + + + ep_pascla + Passport To Riches Classic Club (Maygay) (EPOCH) (1.2, set 2) + + + ep_passp + Passport To Riches Club (Maygay) (EPOCH) (1.2, set 1) + + + ep_passpa + Passport To Riches Club (Maygay) (EPOCH) (1.2, set 2) + + + ep_passpb + Passport To Riches Classic Club (Maygay) (EPOCH) (1.3, set 3) + + + ep_passpc + Passport To Riches Classic Club (Maygay) (EPOCH) (1.3, set 4) + + + ep_pesos + Pick Yer Pesos (Maygay - Impulse) (EPOCH) (set 1) + + + ep_pesosa + Pick Yer Pesos (Maygay - Impulse) (EPOCH) (set 2) + + + ep_pesosb + Pick Yer Pesos (Maygay - Impulse) (EPOCH) (set 3) + + + ep_pesosc + Pick Yer Pesos (Maygay - Impulse) (EPOCH) (set 4) + + + ep_pharo + Pharaoh's Treasure (Maygay) (EPOCH) (set 1) + + + ep_pharoa + Pharaoh's Treasure (Maygay) (EPOCH) (set 2) + + + ep_pizza + Pizza The Action (Maygay) (EPOCH) (2.3, set 1) + + + ep_pizzaa + Pizza The Action (Maygay) (EPOCH) (2.3, set 2) + + + ep_pizzab + Pizza The Action (Maygay) (EPOCH) (2.1, set 3) + + + ep_pizzac + Pizza The Action (Maygay) (EPOCH) (2.1, set 4) + + + ep_pkni + The Phoenix Knights (Global) (EPOCH) (1.1, set 1) + + + ep_pknia + The Phoenix Knights (Global) (EPOCH) (1.1, set 2) + + + ep_pknib + The Phoenix Knights (Global) (EPOCH) (1.3, set 3) + + + ep_pknic + The Phoenix Knights (Global) (EPOCH) (1.3, set 4) + + + ep_pknid + The Phoenix Knights (Global) (EPOCH) (1.4, set 5) + + + ep_pknie + The Phoenix Knights (Global) (EPOCH) (1.7, set 6) + + + ep_pknif + The Phoenix Knights (Global) (EPOCH) (1.7, set 7) + + + ep_pwrpl + Power Play (Maygay) (EPOCH) (PPLY 0.3, set 1) + + + ep_pwrpla + Power Play (Maygay) (EPOCH) (PPLY 0.3, set 2) + + + ep_rags + Rags To Riches Club (Maygay) (EPOCH) (1.10, set 1) + + + ep_ragsa + Rags To Riches Club (Maygay) (EPOCH) (1.10, set 2) + + + ep_rchik + Rich Chics Club (Global) (EPOCH) (set 1) + + + ep_rchika + Rich Chics Club (Global) (EPOCH) (set 2) + + + ep_react + Reactor (Maygay - Impulse) (EPOCH) (set 1) + + + ep_reacta + Reactor (Maygay - Impulse) (EPOCH) (set 2) + + + ep_reactb + Reactor (Maygay - Impulse) (EPOCH) (set 3) + + + ep_reactc + Reactor (Maygay - Impulse) (EPOCH) (set 4) + + + ep_reactd + Reactor (Maygay - Impulse) (EPOCH) (set 5) + + + ep_reacte + Reactor (Maygay - Impulse) (EPOCH) (set 6) + + + ep_redl + Red Line (Extreme) (EPOCH) (RELI 0.1, set 1) + + + ep_redla + Red Line (Extreme) (EPOCH) (RELI 0.1, set 2) + + + ep_rlgdt + Reel Good Time (Rebuild) (Global) (Version 1.0) (EPOCH) + + + ep_roost + Roosters Millions (Maygay) (EPOCH) (1.2, set 1) + + + ep_roosta + Roosters Millions (Maygay) (EPOCH) (1.2, set 2) + + + ep_royrc + Royal Roulette Club (Impulse) (EPOCH) (set 1) + + + ep_royrca + Royal Roulette Club (Impulse) (EPOCH) (set 2) + + + ep_royrl + Royal Roulette (Maygay) (EPOCH) (set 1) + + + ep_royrla + Royal Roulette (Maygay) (EPOCH) (set 2) + + + ep_royrlb + Royal Roulette (Maygay) (EPOCH) (set 3) + + + ep_royrlc + Royal Roulette (Maygay) (EPOCH) (set 4) + + + ep_royrld + Royal Roulette (Maygay) (EPOCH) (set 5) + + + ep_royrle + Royal Roulette (Maygay) (EPOCH) (set 6) + + + ep_rtt + Round The Twist (Maygay) (EPOCH) (set 1) + + + ep_rtta + Round The Twist (Maygay) (EPOCH) (set 2) + + + ep_scrm + Screamin Demon (Maygay) (EPOCH) (SCDE 2.0, set 1) + + + ep_scrma + Screamin Demon (Maygay) (EPOCH) (SCDE 2.0, set 2) + + + ep_scrmb + Screamin Demon (Maygay) (EPOCH) (SCDE 1.0, set 3) + + + ep_scrmc + Screamin Demon (Maygay) (EPOCH) (SCDE 1.0, set 4) + + + ep_sdcla + Spotted Dick Classic (Global) (EPOCH) (set 1) + + + ep_sdclaa + Spotted Dick Classic (Global) (EPOCH) (set 2) + + + ep_sdclab + Spotted Dick Classic (Global) (EPOCH) (set 3) + + + ep_sdclac + Spotted Dick Classic (Global) (EPOCH) (set 4) + + + ep_sdclad + Spotted Dick Classic (Global) (EPOCH) (set 5) + + + ep_sdclae + Spotted Dick Classic (Global) (EPOCH) (set 6) + + + ep_sdclaf + Spotted Dick Classic (Global) (EPOCH) (set 7) + + + ep_sdclag + Spotted Dick Classic (Global) (EPOCH) (set 8) + + + ep_sdclb + Spotted Dick Club (Global) (EPOCH) (set 1) + + + ep_sdclba + Spotted Dick Club (Global) (EPOCH) (set 2) + + + ep_secag + Secret Agent (Maygay) (EPOCH) (1.5, set 1) + + + ep_secaga + Secret Agent (Maygay) (EPOCH) (1.5, set 2) + + + ep_secagb + Secret Agent (Maygay) (EPOCH) (1.3, set 3) + + + ep_simfr + Simply Fruits (Maygay) (EPOCH) (1.2, set 1) + + + ep_simfra + Simply Fruits (Maygay) (EPOCH) (1.2, set 2) + + + ep_simp + The Simpsons (Maygay) (EPOCH) (3.6, set 1) + + + ep_simpa + The Simpsons (Maygay) (EPOCH) (3.5, set 2) + + + ep_simpb + The Simpsons (Maygay) (EPOCH) (3.5, set 3) + + + ep_simpc + The Simpsons (Maygay) (EPOCH) (4.5, set 4) + + + ep_simpd + The Simpsons (Maygay) (EPOCH) (4.5, set 5) + + + ep_simpe + The Simpsons (Maygay) (EPOCH) (1.5, set 6) + + + ep_simpf + The Simpsons (Maygay) (EPOCH) (1.5, set 7) + + + ep_simpg + The Simpsons (Maygay) (EPOCH) (2.5, set 8) + + + ep_simph + The Simpsons (Maygay) (EPOCH) (2.5, set 9) + + + ep_simpj + The Simpsons (Maygay) (EPOCH) (1.8, set 10) + + + ep_simpk + The Simpsons (Maygay) (EPOCH) (1.8, set 11) + + + ep_simpl + The Simpsons (Maygay) (EPOCH) (3.7, set 12) + + + ep_simpm + The Simpsons (Maygay) (EPOCH) (3.7, set 13) + + + ep_smoke + Holy Smoke! (Impulse) (EPOCH) (set 1) + + + ep_smokea + Holy Smoke! (Impulse) (EPOCH) (set 2) + + + ep_smokeb + Holy Smoke! (Impulse) (EPOCH) (set 3) + + + ep_smokec + Holy Smoke! (Impulse) (EPOCH) (set 4) + + + ep_smoked + Holy Smoke! (Impulse) (EPOCH) (set 5) + + + ep_smokee + Holy Smoke! (Impulse) (EPOCH) (set 6) + + + ep_smokef + Holy Smoke! (Impulse) (EPOCH) (set 7) + + + ep_smokeg + Holy Smoke! (Impulse) (EPOCH) (set 8) + + + ep_smokeh + Holy Smoke! (Impulse) (EPOCH) (set 9) + + + ep_smokei + Holy Smoke! (Impulse) (EPOCH) (set 10) + + + ep_smokej + Holy Smoke! (Impulse) (EPOCH) (set 11) + + + ep_snbev + Saturday Night Beaver (Global) (EPOCH) (1.8, set 1) + + + ep_snbeva + Saturday Night Beaver (Global) (EPOCH) (1.8, set 2) + + + ep_snbevb + Saturday Night Beaver (Global) (EPOCH) (1.9, set 3) + + + ep_snbevc + Saturday Night Beaver (Global) (EPOCH) (1.9, set 4) + + + ep_snbevd + Saturday Night Beaver (Global) (EPOCH) (2.1, set 5) + + + ep_snbeve + Saturday Night Beaver (Global) (EPOCH) (2.1, set 6) + + + ep_snset + Sunset Strip (Extreme) (EPOCH) (SUST 0.1, set 1) + + + ep_snseta + Sunset Strip (Extreme) (EPOCH) (SUST 0.1, set 2) + + + ep_snw + Super Nudge Wink (Maygay - Union) (EPOCH) (set 1) + + + ep_snwa + Super Nudge Wink (Maygay - Union) (EPOCH) (set 2) + + + ep_snwb + Super Nudge Wink (Maygay - Union) (EPOCH) (set 3) + + + ep_snwc + Super Nudge Wink (Maygay - Union) (EPOCH) (set 4) + + + ep_snwd + Super Nudge Wink (Maygay - Union) (EPOCH) (set 5) + + + ep_spart + Spartacash (Maygay - Impulse) (EPOCH) (set 1) + + + ep_sparta + Spartacash (Maygay - Impulse) (EPOCH) (set 2) + + + ep_spartb + Spartacash (Maygay - Impulse) (EPOCH) (set 3) + + + ep_spcbw + Special Brew (Maygay) (EPOCH) (1.1, set 1) + + + ep_spcbwa + Special Brew (Maygay) (EPOCH) (1.1, set 2) + + + ep_spcbwb + Special Brew (Maygay) (EPOCH) (1.3, set 3) + + + ep_spcbwc + Special Brew (Maygay) (EPOCH) (1.3, set 4) + + + ep_spcbwd + Special Brew (Maygay) (EPOCH) (1.5, set 5) + + + ep_spcbwe + Special Brew (Maygay) (EPOCH) (1.5, set 6) + + + ep_spcbwf + Special Brew (Maygay) (EPOCH) (1.6, set 7) + + + ep_spcbwg + Special Brew (Maygay) (EPOCH) (1.6, set 8) + + + ep_spcbwh + Special Brew (Maygay) (EPOCH) (1.4, set 9) + + + ep_spcbwi + Special Brew (Maygay) (EPOCH) (1.4, set 10) + + + ep_spcbwj + Special Brew (Maygay) (EPOCH) (1.8, set 11) + + + ep_spcbwk + Special Brew (Maygay) (EPOCH) (1.8, set 12) + + + ep_spcbwl + Special Brew (Maygay) (EPOCH) (1.9, set 13) + + + ep_spcbwm + Special Brew (Maygay) (EPOCH) (1.9, set 14) + + + ep_spec + Spectre (Maygay) (EPOCH) (1.6, set 1) + + + ep_speca + Spectre (Maygay) (EPOCH) (1.6, set 2) + + + ep_specb + Spectre (Maygay) (EPOCH) (1.3, set 3) + + + ep_spin + Spin On It (Maygay - Impulse) (EPOCH) (set 1) + + + ep_spina + Spin On It (Maygay - Impulse) (EPOCH) (set 2) + + + ep_spinb + Spin On It (Maygay - Impulse) (EPOCH) (set 3) + + + ep_spinc + Spin On It (Maygay - Impulse) (EPOCH) (set 4) + + + ep_spind + Spin On It (Maygay - Impulse) (EPOCH) (set 5) + + + ep_spine + Spin On It (Maygay - Impulse) (EPOCH) (set 6) + + + ep_spirt + Hi Spirits (Global) (EPOCH) (2.3, set 1) + + + ep_spirta + Hi Spirits (Global) (EPOCH) (2.3, set 2) + + + ep_spirtb + Hi Spirits (Global) (EPOCH) (4.1, set 3) + + + ep_spntn + Spin & Tonic (Maygay - Impulse) (EPOCH) (set 1) + + + ep_spntna + Spin & Tonic (Maygay - Impulse) (EPOCH) (set 2) + + + ep_spntnb + Spin & Tonic (Maygay - Impulse) (EPOCH) (set 3) + + + ep_spntnc + Spin & Tonic (Maygay - Impulse) (EPOCH) (set 4) + + + ep_spook + Spooky Hollow (Global) (EPOCH) (1.3, set 1) + + + ep_spooka + Spooky Hollow (Global) (EPOCH) (1.3, set 2) + + + ep_spookb + Spooky Hollow (Global) (EPOCH) (2.7, set 3) + + + ep_srwin + Sir Winalot (Maygay) (EPOCH) (2.6, set 1) + + + ep_srwina + Sir Winalot (Maygay) (EPOCH) (3.3, set 2) + + + ep_srwinb + Sir Winalot (Maygay) (EPOCH) (3.3, set 3) + + + ep_srwinc + Sir Winalot (Maygay) (EPOCH) (2.6, set 4) + + + ep_srwind + Sir Winalot (Maygay) (EPOCH) (2.1, set 5) + + + ep_step + Stepping Stones (Maygay) (EPOCH) (1.0, set 1) + + + ep_stepa + Stepping Stones (Maygay) (EPOCH) (1.0, set 2) + + + ep_stm + Storm Force (Global) (EPOCH) (set 1) + + + ep_stma + Storm Force (Global) (EPOCH) (set 2) + + + ep_stmb + Storm Force (Global) (EPOCH) (set 3) + + + ep_stmc + Storm Force (Global) (EPOCH) (set 4) + + + ep_stmcl + Storm Force Club (Global) (EPOCH) (set 1) + + + ep_stmcla + Storm Force Club (Global) (EPOCH) (set 2) + + + ep_strat + Stratagem (Maygay) (EPOCH) (set 1) + + + ep_strata + Stratagem (Maygay) (EPOCH) (set 2) + + + ep_subb + Subbuteo (Maygay) (EPOCH) (set 1) + + + ep_subba + Subbuteo (Maygay) (EPOCH) (set 2) + + + ep_subbb + Subbuteo (Maygay) (EPOCH) (set 3) + + + ep_subbc + Subbuteo (Maygay) (EPOCH) (set 4) + + + ep_subbd + Subbuteo (Maygay) (EPOCH) (set 5) + + + ep_subbe + Subbuteo (Maygay) (EPOCH) (set 6) + + + ep_subbf + Subbuteo (Maygay) (EPOCH) (set 7) + + + ep_subbg + Subbuteo (Maygay) (EPOCH) (set 8) + + + ep_survi + Survival (Maygay) (EPOCH) (1.4, set 1) + + + ep_survia + Survival (Maygay) (EPOCH) (1.4, set 2) + + + ep_tak5 + Take Five (Maygay - Union) (EPOCH) (set 1) + + + ep_tak5a + Take Five (Maygay - Union) (EPOCH) (set 2) + + + ep_tcrwn + Triple Crown (Maygay) (EPOCH) (2.2, set 1) + + + ep_tcrwna + Triple Crown (Maygay) (EPOCH) (2.2, set 2) + + + ep_tcrwnb + Triple Crown (Maygay) (EPOCH) (2.2, set 3) + + + ep_tcrwnc + Triple Crown (Maygay) (EPOCH) (2.2, set 4) + + + ep_tcrwnd + Triple Crown (Maygay) (EPOCH) (3.1, set 5) + + + ep_tcrwne + Triple Crown (Maygay) (EPOCH) (3.1, set 6) + + + ep_tincn + Tin Can Alley (Maygay) (EPOCH) (1.5, set 1) + + + ep_tincna + Tin Can Alley (Maygay) (EPOCH) (1.5, set 2) + + + ep_tits + Title Shot Club (Maygay) (EPOCH) (1.7, set 1) + + + ep_titsa + Title Shot Club (Maygay) (EPOCH) (1.7, set 2) + + + ep_titsb + Title Shot Club (Maygay) (EPOCH) (1.5, set 3) + + + ep_tod + Truth Or Dare (Global) (EPOCH) (set 1) + + + ep_toda + Truth Or Dare (Global) (EPOCH) (set 2) + + + ep_tonfn + Tons Of Fun (Maygay) (EPOCH) (1.5, set 1) + + + ep_tonfna + Tons Of Fun (Maygay) (EPOCH) (1.5, set 2) + + + ep_tortr + Torture TV (Maygay) (EPOCH) (1.3, set 1) + + + ep_tortra + Torture TV (Maygay) (EPOCH) (1.3, set 2) + + + ep_tp + Trivial Pursuit (Maygay) (EPOCH) (3.5, set 1) + + + ep_tp2 + Trivial Pursuit 2 (Maygay) (EPOCH) (2.2, set 1) + + + ep_tp2a + Trivial Pursuit 2 (Maygay) (EPOCH) (2.2, set 2) + + + ep_tpa + Trivial Pursuit (Maygay) (EPOCH) (3.5, set 2) + + + ep_tpb + Trivial Pursuit (Maygay) (EPOCH) (2.1, set 3) + + + ep_trail + Trailblazer (Maygay - Impulse) (EPOCH) (set 1) + + + ep_traila + Trailblazer (Maygay - Impulse) (EPOCH) (set 2) + + + ep_trailb + Trailblazer (Maygay - Impulse) (EPOCH) (set 3) + + + ep_treas + Treasure Hunt (Global) (EPOCH) (Version 1.6) + + + ep_tree + Tree Amigos (Maygay) (EPOCH) (TRAM 0.3, set 1) + + + ep_treea + Tree Amigos (Maygay) (EPOCH) (TRAM 0.3, set 2) + + + ep_trics + Triple Cash (Maygay - Union) (EPOCH) (set 1) + + + ep_tricsa + Triple Cash (Maygay - Union) (EPOCH) (set 2) + + + ep_tutcl + Tutankhamun Club (Maygay) (EPOCH) (2.1, set 1) + + + ep_tutcla + Tutankhamun Club (Maygay) (EPOCH) (2.1, set 2) + + + ep_tutclb + Tutankhamun Club (Maygay) (EPOCH) (1.8, set 3) + + + ep_twarp + Time Warp (Extreme) (EPOCH) (TWRP 0.1, set 1) + + + ep_twarpa + Time Warp (Extreme) (EPOCH) (TWRP 0.1, set 2) + + + ep_twarpb + Time Warp (Extreme) (EPOCH) (TWRP 0.4, set 3) + + + ep_twarpc + Time Warp (Extreme) (EPOCH) (TWRP 0.4, set 4) + + + ep_utncl + Utter Nutter Club (Global) (EPOCH) (set 1) + + + ep_utncla + Utter Nutter Club (Global) (EPOCH) (set 2) + + + ep_utnut + Utter Nutter (Global) (EPOCH) (set 1) + + + ep_utnuta + Utter Nutter (Global) (EPOCH) (set 2) + + + ep_utnutb + Utter Nutter (Global) (EPOCH) (set 3) + + + ep_utnutc + Utter Nutter (Global) (EPOCH) (set 4) + + + ep_vipjv + Viper Jive (Maygay - Extreme) (EPOCH) (JIVE 1.1, set 1) + + + ep_vipjva + Viper Jive (Maygay - Extreme) (EPOCH) (JIVE 1.1, set 2) + + + ep_vipjvb + Viper Jive (Maygay - Extreme) (EPOCH) (JIVE 2.2, set 3) + + + ep_vipjvc + Viper Jive (Maygay - Extreme) (EPOCH) (JIVE 2.2, set 4) + + + ep_vipjvd + Viper Jive (Maygay - Extreme) (EPOCH) (JIVE 2.1, set 5) + + + ep_wf + Wildfire (Global) (EPOCH) (set 1) + + + ep_wfa + Wildfire (Global) (EPOCH) (set 2) + + + ep_wfb + Wildfire (Global) (EPOCH) (set 3) + + + ep_wfc + Wildfire (Global) (EPOCH) (set 4) + + + ep_wfd + Wildfire (Global) (EPOCH) (set 5) + + + ep_wfe + Wildfire (Global) (EPOCH) (set 6) + + + ep_wff + Wildfire (Global) (EPOCH) (set 7) + + + ep_wfg + Wildfire (Global) (EPOCH) (set 8) + + + ep_wildf + Wildfire (Maygay - Impulse) (EPOCH) (set 1) + + + ep_wildfa + Wildfire (Maygay - Impulse) (EPOCH) (set 2) + + + ep_wipeo + Wipeout (Maygay) (EPOCH) (set 1) + + + ep_wipeoa + Wipeout (Maygay) (EPOCH) (set 2) + + + ep_wipeob + Wipeout (Maygay) (EPOCH) (set 3) + + + ep_wipeoc + Wipeout (Maygay) (EPOCH) (set 4) + + + ep_wipeoe + Wipeout (Maygay) (EPOCH) (set 5) + + + ep_wleek + Weakest Leek Club (Global) (EPOCH) (set 1) + + + ep_wleeka + Weakest Leek Club (Global) (EPOCH) (set 2) + + + ep_word + Word Up (Maygay) (EPOCH) (1.4, set 1) + + + ep_worda + Word Up (Maygay) (EPOCH) (1.4, set 2) + + + ep_wordb + Word Up (Maygay) (EPOCH) (2.4, set 3) + + + ep_wordc + Word Up (Maygay) (EPOCH) (2.4, set 4) + + + ep_wordd + Word Up (Maygay) (EPOCH) (3.1, set 5) + + + ep_worde + Word Up (Maygay) (EPOCH) (3.1, set 6) + + + ep_wordf + Word Up (Maygay) (EPOCH) (4.1, set 7) + + + ep_wordg + Word Up (Maygay) (EPOCH) (4.1, set 8) + + + ep_wside + Wildside (Global) (EPOCH) (1.2, set 1) + + + ep_wsidea + Wildside (Global) (EPOCH) (set 2) + + + ep_wud + What's Up Doc (Global) (EPOCH) (set 1) + + + ep_wuda + What's Up Doc (Global) (EPOCH) (set 2) + + + ep_wudb + What's Up Doc (Global) (EPOCH) (set 3) + + + ep_wudc + What's Up Doc (Global) (EPOCH) (set 4) + + + ep_wudd + What's Up Doc (Global) (EPOCH) (set 5) + + + ep_wude + What's Up Doc (Global) (EPOCH) (set 6) + + + ep_xspot + X Marks The Spot (Maygay) (EPOCH) (1.5, set 1) + + + ep_xspota + X Marks The Spot (Maygay) (EPOCH) (1.5, set 2) + + + ep_xspotb + X Marks The Spot (Maygay) (EPOCH) (1.4, set 3) + + + ep_xtra + X-tra X-tra (Maygay) (EPOCH) (1.5, set 1) + + + ep_xtraa + X-tra X-tra (Maygay) (EPOCH) (1.5, set 2) + + + eprom + Escape from the Planet of the Robot Monsters (set 1) + + + eprom2 + Escape from the Planet of the Robot Monsters (set 2) + + + equites + Equites + + + equitess + Equites (Sega) + + + erosone + Eros One + + + ertictac + Erotictac/Tactic + + + ertictaca + Erotictac/Tactic (ver 01) + + + ertictacb + Erotictac/Tactic (set 2) + + + esb + The Empire Strikes Back + + + escape + Escape + + + esckids + Escape Kids (Asia, 4 Players) + + + esckidsj + Escape Kids (Japan, 2 Players) + + + esclwrld + Escape from the Lost World + + + esclwrldg + Escape from the Lost World (German) + + + escmars + Escape from Mars (bootleg of Lunar Rescue) + + + escounts + Every Second Counts (39-360-053) + + + esh + Esh's Aurunmilla (set 1) + + + esha + Esh's Aurunmilla (set 2) + + + esha_la1 + Earthshaker (LA-1) + + + esha_la3 + Earthshaker (LA-3) + + + esha_lg1 + Earthshaker (German) (LG-1) + + + esha_lg2 + Earthshaker (German) (LG-2) + + + esha_ma3 + Earthshaker (Metallica) (LA-3) + + + esha_pa1 + Earthshaker (Prototype) (PA-1) + + + esha_pa4 + Earthshaker (Prototype) (PA-4) + + + esha_pr4 + Earthshaker (Family version) (PR-4) + + + eshb + Esh's Aurunmilla (set 3) + + + eshockey + Exciting Speed Hockey (V19930325) + + + espgal + Espgaluda (2003/10/15 Master Ver) + + + espgal2 + Espgaluda II (2005/11/14.MASTER VER.) + + + espgal2a + Espgaluda II (2005/11/14 MASTER VER, newer CV1000-B PCB) + + + espgal2b + Espgaluda II (2005/11/14 MASTER VER, original CV1000-B PCB) + + + espgalbl + Espgaluda (2003/10/15 Master Ver, bootleg cartridge conversion) + + + espial + Espial (Europe) + + + espiale + Espial (Europe) + + + espialj + Espial (Japan) + + + espialn + Espial (Nova Apparate license) + + + espialu + Espial (US?) + + + esprade + ESP Ra.De. (World, 1998 4/22 International Ver.) + + + espradej + ESP Ra.De. (Japan, 1998 4/21 Master Ver.) + + + espradejo + ESP Ra.De. (Japan, 1998 4/14 Master Ver.) + + + espradeo + ESP Ra.De. (Japan Ver 1998 4-14) + + + estrike + Eagle Strike (40289711, NSW/ACT) + + + eswat + Cyber Police ESWAT (set 4, World) (FD1094 317-0130) + + + eswatbl + Cyber Police ESWAT (bootleg, set 1) + + + eswatbl2 + Cyber Police ESWAT (bootleg, set 2) + + + eswatd + Cyber Police ESWAT (set 4, World) (bootleg of FD1094 317-0130 set) + + + eswatj + Cyber Police ESWAT (set 2, Japan) (FD1094 317-0128) + + + eswatj1 + Cyber Police ESWAT (set 1, Japan) (FD1094 317-0131) + + + eswatj1d + Cyber Police ESWAT (set 1, Japan) (bootleg of FD1094 317-0131 set) + + + eswatjd + Cyber Police ESWAT (set 2, Japan) (bootleg of FD1094 317-0128 set) + + + eswatu + Cyber Police ESWAT (set 3, US) (FD1094 317-0129) + + + eswatud + Cyber Police ESWAT (set 3, US) (bootleg of FD1094 317-0129 set) + + + eto + Kokontouzai Eto Monogatari (Japan) + + + etoa + Kokontouzai Eto Monogatari (Japan, prototype?) + + + euro2k2 + Europa 2002 (Ver 2.0, set 1) + + + euro2k2a + Europa 2002 (Ver 2.0, set 2) + + + euro2k2s + Europa 2002 Space (Ver 3.0) + + + euroch92 + Euro Champ '92 (World) + + + euroch92j + Euro Champ '92 (Japan) + + + eurodsr + Euro Double Star Record (ver.1.2) + + + eurogael + Euro League (Gaelco bootleg, Modular System) + + + eurogame + The Euro Game (set 1) + + + eurogamea + The Euro Game (set 2) + + + europass + Euro Pass (Ver 1.1) + + + europl01 + EuroPlay 2001 + + + evelknie + Evel Knievel + + + evilngt + Evil Night (ver UBA) + + + evilston + Evil Stone + + + evlfight + Evil Fight + + + evosocc + Evolution Soccer + + + ewf + Earth Wind Fire + + + excalibr + Excalibur (Gottlieb) + + + excalibrf + Excalibur (Gottlieb, French) + + + excalibrg + Excalibur (Gottlieb, German) + + + excelsr + Excelsior (set 1) + + + excelsra + Excelsior (set 2) + + + excitbj + Exciting Black Jack + + + excitbkj + Vs. Excitebike (Japan) + + + excitebk + Vs. Excitebike (set EB4-3 E) + + + excitebkj + Vs. Excitebike (set EB4-4 A) + + + excitebko + Vs. Excitebike (set EB4-3 ?) + + + excthour + Exciting Hour + + + exctleag + Excite League (FD1094 317-0079) + + + exctleagd + Excite League (bootleg of FD1094 317-0079 set) + + + exctscc2 + Exciting Soccer II + + + exctscca + Exciting Soccer (alternate music) + + + exctsccb + Exciting Soccer (bootleg) + + + exctsccr + Exciting Soccer + + + exctsccra + Exciting Soccer (alternate music) + + + exctsccrb + Exciting Soccer (bootleg) + + + exctsccrj + Exciting Soccer (Japan) + + + exctsccrjo + Exciting Soccer (Japan, older) + + + exctsccru + Exciting Soccer (US) + + + exedexes + Exed Exes + + + exerion + Exerion + + + exerionb + Exerion (bootleg, set 1) + + + exerionb2 + Exerion (bootleg, set 2) + + + exerionba + Exerion (Assa, bootleg) + + + exeriont + Exerion (Taito) + + + exerizer + Exerizer (Japan) + + + exerizerb + Exerizer (bootleg) + + + exerizrb + Exerizer (Japan) (bootleg) + + + exodus + Exodus (bootleg?) + + + expcard + Express Card / Top Card (Ver. 1.5) + + + explbrkr + Explosive Breaker (World) + + + explbrkrk + Explosive Breaker (Korea) + + + explorer + Explorer (bootleg of Scramble) + + + exprraid + Express Raider (World, Rev 4) + + + exprraidi + Express Raider (Italy) + + + exprraidu + Express Raider (US, rev 5) + + + exsafar + Safari (Extrema, Ukraine, V. 43.14) + + + exsafara + Safari (Extrema, Ukraine, V. 43.08) + + + exsafarb + Safari (Extrema, Ukraine, V. 42.07) + + + exsafarc + Safari (Extrema, Ukraine, V. 42.04) + + + extdwnhl + Extreme Downhill (v1.5) + + + exterm + Exterminator + + + extradrw + Extra Draw (V100VE) + + + extrmatn + Extermination (World) + + + extrmatnj + Extermination (Japan) + + + extrmatnu + Extermination (US, World Games) + + + extrmatnur + Extermination (US, Romstar) + + + extrmth + Treasure Hunt (Extrema, Ukraine, V. 34.03) + + + extrmtha + Treasure Hunt (Extrema, Ukraine, V. 34.02) + + + extrmti + Treasure Island (Extrema, Ukraine, V. 32.49) + + + exvania + Exvania (World) + + + exvaniaj + Exvania (Japan) + + + exzisus + Exzisus (Japan, dedicated) + + + exzisusa + Exzisus (Japan, conversion) + + + exzisust + Exzisus (TAD license) + + + eyes + Eyes (US, set 1) + + + eyes2 + Eyes (US, set 2) + + + eyesb + Eyes (bootleg, set 1) + + + eyeszac + Eyes (Italy) + + + eyeszacb + Eyes (bootleg, set 2, decrypted) + + + ez2d2m + Ez2dancer 2nd Move + + + eztouch + EZ Touch (v116 China) + + + f14_l1 + F-14 Tomcat (L-1) + + + f14_p3 + F-14 Tomcat (P-3) + + + f14_p4 + F-14 Tomcat (P-4) + + + f14_p5 + F-14 Tomcat (P-5) + + + f15se + F-15 Strike Eagle (rev. 2.2 02/25/91, 29K ver. 3.1f) + + + f15se21 + F-15 Strike Eagle (rev. 2.1 02/04/91) + + + f15se22 + F-15 Strike Eagle (rev. 2.2 02/25/91, 29K ver. 2.2a) + + + f16s8l + F-16 Super 8 Lines + + + f1dream + F-1 Dream + + + f1dreamb + F-1 Dream (bootleg, set 1) + + + f1dreamba + F-1 Dream (bootleg, set 2) + + + f1en + F1 Exhaust Note (World, Rev A) + + + f1enj + F1 Exhaust Note (Japan, Rev A) + + + f1enu + F1 Exhaust Note (US, Rev A) + + + f1gp + F-1 Grand Prix (set 1) + + + f1gp2 + F-1 Grand Prix Part II + + + f1gpa + F-1 Grand Prix (set 2) + + + f1gpb + F-1 Grand Prix (set 3) + + + f1gpbl + F-1 Grand Prix (Playmark bootleg) + + + f1gpp + F1 Grand Prix (Nuova Bell Games) + + + f1gpstar + Grand Prix Star (ver 4.0) + + + f1gpstar2 + Grand Prix Star (ver 2.0) + + + f1gpstar3 + Grand Prix Star (ver 3.0) + + + f1gpstr2 + F-1 Grand Prix Star II + + + f1lap + F1 Super Lap (World) + + + f1lapj + F1 Super Lap (Japan) + + + f1lapt + F1 Super Lap (World, Unprotected) + + + f1superb + F-1 Super Battle + + + f355 + Ferrari F355 Challenge (deluxe, no link) + + + f355p + Ferrari F355 Challenge (private show version) + + + f355twin + Ferrari F355 Challenge (twin/deluxe) + + + f355twinp + Ferrari F355 Challenge (twin/deluxe, preview) + + + f355twn2 + Ferrari F355 Challenge 2 - International Course Edition (twin/deluxe) + + + fa + F/A (Japan) + + + faceoff + Face Off (Japan 2 Players) + + + faceoffh + Face-Off (EM Bubble Hockey) + + + faeton + Faeton (7 digits) + + + faeton6d + Faeton (6 digits) + + + failgate + Fail Gate + + + fairyl2 + Fairy Land 2 (set 1) + + + fairyl2a + Fairy Land 2 (set 2) + + + fairyl2b + Fairy Land 2 (set 3) + + + fairyl2bl + Fairy Land 2 (bootleg) + + + falcnwld + Falcons Wild - Wild Card 1991 (TVG) + + + falcnwlda + Falcons Wild - World Wide Poker (Video Klein, set 1) + + + falcnwldb + Falcons Wild - World Wide Poker (Video Klein, set 2) + + + falcnwldc + Falcons Wild - World Wide Poker (Falcon original, protected) + + + falcnwldd + Falcons Wild - World Wide Poker (Falcon original) + + + falcon + Falcon (bootleg of Phoenix) (8085A CPU) + + + falconun + unknown Falcon gambling machine + + + falconz + Falcon (bootleg of Phoenix) (Z80 CPU) + + + fambowl + Family Bowl (Japan, FB1/VER.A V1.00) + + + famibox + FamicomBox + + + famistat + FamicomStation + + + famlyfun + Family Fun! + + + fantasia + Fantasia (940429 PCB, set 1) + + + fantasiaa + Fantasia (940307 PCB) + + + fantasiab + Fantasia (940429 PCB, set 2) + + + fantasian + Fantasia (940803 PCB) + + + fantastc + Fantastic (Galaga conversion on Galaxian hardware) + + + fantasy + fantasy + + + fantasyg + Fantasy (Germany, set 1) + + + fantasyg2 + Fantasy (Germany, set 2) + + + fantasyj + Fantasy (Japan) + + + fantasyu + Fantasy (US) + + + fantazia + Fantazia (bootleg?) + + + fantcar + Fantastic Car (M89 hardware) + + + fantcar87 + Fantastic Car (Micro-87 hardware, newer) + + + fantcar87a + Fantastic Car (Micro-87 hardware, older) + + + fantjour + Fantastic Journey (ver EAA) + + + fantjoura + Fantastic Journey (ver AAA) + + + fantland + Fantasy Land (set 1) + + + fantlanda + Fantasy Land (set 2) + + + fantsia2 + Fantasia II (Explicit) + + + fantsia2a + Fantasia II (Less Explicit) + + + fantsia2n + Fantasia II (1998) + + + fantstry + Fantasy Story (set 1) + + + fantstrya + Fantasy Story (set 2) + + + fantsy95 + Fantasy '95 + + + fantzn2 + Fantasy Zone II - The Tears of Opa-Opa (MC-8123, 317-0057) + + + fantzn2x + Fantasy Zone II - The Tears of Opa-Opa (System 16C version) + + + fantzn2xp + Fantasy Zone II - The Tears of Opa-Opa (System 16C version, prototype) + + + fantzn2xps2 + Fantasy Zone II - The Tears of Opa-Opa (System 16C, PS2 data file) + + + fantznps2 + Fantasy Zone (System 16B, PS2 data file) + + + fantznta + Fantasy Zone Time Attack (System 16B, PS2 data file) + + + fantzone + Fantasy Zone (Rev A, unprotected) + + + fantzone1 + Fantasy Zone (unprotected) + + + fantzonee + Fantasy Zone (FD1089B 317-0016) + + + fantzoneno + Fantasy Zone (New, Oversea, PS2) + + + fantzonenu + Fantasy Zone (New, US Rev.A, PS2) + + + fantzonep + Fantasy Zone (317-5000) + + + fantzonepr + Fantasy Zone (prototype) + + + fantzoneta + Fantasy Zone (Time Attack, bootleg) + + + fantzono + Fantasy Zone (Old Ver.) + + + fanzonem + Fantasy Zone (medal game, REV.A) (J 990202 V1.000) + + + farfalla + Farfalla + + + farfallaf + Farfalla (French speech) + + + farfallag + Farfalla (German speech) + + + farfallai + Farfalla (Italian speech) + + + farmer + Farmers Rebellion + + + farwest + Far West + + + fashion + Fashion (Version 2.14) + + + fashiong + Fashion Gambler (set 1) + + + fashiong2 + Fashion Gambler (set 2) + + + fastdraw + Fast Draw Showdown (v1.31) + + + fastdraw_130 + Fast Draw Showdown (v1.30) + + + fastdrwp + Fast Draw (poker conversion kit)? + + + fastfort + Fast Fortune (0100651V, NSW/ACT) + + + fastfred + Fast Freddie + + + fastlane + Fast Lane + + + fasttrack + Fast Track + + + fateulc + Fate: Unlimited Codes (FUD1 ver. A) + + + fateulcb + Fate: Unlimited Codes (bootleg) + + + fatfursa + Fatal Fury Special / Garou Densetsu Special (set 2) + + + fatfursp + Fatal Fury Special / Garou Densetsu Special (NGM-058 ~ NGH-058, set 1) + + + fatfurspa + Fatal Fury Special / Garou Densetsu Special (NGM-058 ~ NGH-058, set 2) + + + fatfurspb + Fatal Fury Special (SNES bootleg with timer) + + + fatfurwa + Fatal Fury: Wild Ambition / Garou Densetsu: Wild Ambition (rev.A) + + + fatfury1 + Fatal Fury - King of Fighters / Garou Densetsu - Shukumei no Tatakai (NGM-033 ~ NGH-033) + + + fatfury2 + Fatal Fury 2 / Garou Densetsu 2 - Arata-naru Tatakai (NGM-047 ~ NGH-047) + + + fatfury2a + Fatal Fury 2 / Garou Densetsu 2 - arata-naru tatakai (NGM-047) + + + fatfury3 + Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - Haruka-naru Tatakai (NGM-069 ~ NGH-069) + + + fatfury3a + Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - haruka-naru tatakai (NGM-069 ~ NGH-069) (alternate set) + + + fathom + Fathom + + + fax + FAX + + + fax2 + FAX 2 + + + fb2010 + Fruit Bonus 2010 (v. 2.0.1.3) + + + fb2010a + Fruit Bonus 2010 (v. 2.0.1.0) + + + fb2gen + Fruit Bonus 2nd Generation (Version 1.8E Dual) + + + fb2genc1 + Fruit Bonus 2nd Generation (Version 1.8R, set 1) + + + fb2genc2 + Fruit Bonus 2nd Generation (Version 1.8LT, set 1) + + + fb2gend1 + Fruit Bonus 2nd Generation (Version 1.8R, set 2) + + + fb2gend2 + Fruit Bonus 2nd Generation (Version 1.8LT, set 2) + + + fb2geno + Fruit Bonus 2nd Generation (Version 1.6XT) + + + fb2geno2 + Fruit Bonus 2nd Generation (Version 1.5) + + + fb2genv1 + Fruit Bonus 2nd Generation (Version 1.8R Dual) + + + fb2genv2 + Fruit Bonus 2nd Generation (Version 1.8LT Dual) + + + fb2nd + Fruit Bonus 2nd Edition (Version 1.8R, set 1) + + + fb2ndc2 + Fruit Bonus 2nd Edition (Version 1.8LT, set 1) + + + fb2ndd1 + Fruit Bonus 2nd Edition (Version 1.8R, set 2) + + + fb2ndd2 + Fruit Bonus 2nd Edition (Version 1.8LT, set 2) + + + fb2ndo + Fruit Bonus 2nd Edition (Version 1.5) + + + fb2ndv1 + Fruit Bonus 2nd Edition (Version 1.8R Dual) + + + fb2ndv2 + Fruit Bonus 2nd Edition (Version 1.8LT Dual) + + + fb3g + Fruit Bonus 3G (Version 1.0.3) + + + fb4 + Fruit Bonus 2004 (Version 1.5R, set 1) + + + fb4_14 + Fruit Bonus 2004 (Version 1.4) + + + fb4b2 + Fruit Bonus 2004 (Version 1.5LT, set 1) + + + fb4c1 + Fruit Bonus 2004 (Version 1.5R, set 2) + + + fb4c2 + Fruit Bonus 2004 (Version 1.5LT, set 2) + + + fb4d1 + Fruit Bonus 2004 (Version 1.5R, set 3) + + + fb4d2 + Fruit Bonus 2004 (Version 1.5LT, set 3) + + + fb4exp + Fruit Bonus 2005 (2004 Export - Version 1.5E Dual) + + + fb4o + Fruit Bonus 2004 (Version 1.3XT) + + + fb4o2 + Fruit Bonus 2004 (Version 1.2) + + + fb4v1 + Fruit Bonus 2004 (Version 1.5R Dual) + + + fb4v2 + Fruit Bonus 2004 (Version 1.5LT Dual) + + + fb5 + Fruit Bonus 2005 (Version 1.5SH, set 1) + + + fb5c + Fruit Bonus 2005 (Version 1.5SH, set 2) + + + fb5d + Fruit Bonus 2005 (Version 1.5SH, set 3) + + + fb5v + Fruit Bonus 2005 (Version 1.5SH Dual) + + + fb6 + Fruit Bonus '06 - 10th anniversary (Version 1.7E CGA) + + + fb6d1 + Fruit Bonus '06 - 10th anniversary (Version 1.7R CGA) + + + fb6d2 + Fruit Bonus '06 - 10th anniversary (Version 1.7LT CGA) + + + fb6s1 + Fruit Bonus '06 - 10th anniversary (Version 1.7R CGA, Compact PCB) + + + fb6s2 + Fruit Bonus '06 - 10th anniversary (Version 1.7LT CGA, Compact PCB) + + + fb6s3 + Fruit Bonus '06 - 10th anniversary (Version 1.3R CGA, Compact PCB) + + + fb6se + Fruit Bonus 2006 Special Edition (Version 1.4E CGA) + + + fb6sed1 + Fruit Bonus 2006 Special Edition (Version 1.4R CGA) + + + fb6sed2 + Fruit Bonus 2006 Special Edition (Version 1.4LT CGA) + + + fb6sev + Fruit Bonus 2006 Special Edition (Version 1.4E Dual) + + + fb6sev1 + Fruit Bonus 2006 Special Edition (Version 1.4R Dual) + + + fb6sev2 + Fruit Bonus 2006 Special Edition (Version 1.4LT Dual) + + + fb6v + Fruit Bonus '06 - 10th anniversary (Version 1.7E Dual) + + + fb6v1 + Fruit Bonus '06 - 10th anniversary (Version 1.7R Dual) + + + fb6v2 + Fruit Bonus '06 - 10th anniversary (Version 1.7LT Dual) + + + fbait2bc + Fisherman's Bait 2 - A Bass Challenge (GE865 VER. UAB) + + + fbaitbc + Fisherman's Bait - A Bass Challenge (GE765 VER. UAB) + + + fbaitmc + Fisherman's Bait - Marlin Challenge (GX889 VER. EA) + + + fbaitmca + Fisherman's Bait - Marlin Challenge (GX889 VER. AA) + + + fbaitmcj + Fisherman's Bait - Marlin Challenge (GX889 VER. JA) + + + fbaitmcu + Fisherman's Bait - Marlin Challenge (GX889 VER. UA) + + + fball + Fire Ball (FM Work) + + + fball_ii + Fireball II + + + fbclass + Fireball Classic + + + fbcrazy + Football Crazy (Video Quiz) + + + fbdeluxe + Fruit Bonus Deluxe (Version 1.0.9) + + + fbdeluxeo + Fruit Bonus Deluxe (Version 1.0.7) + + + fbfrenzy + Football Frenzy (NGM-034 ~ NGH-034) + + + fcnudge + Fruit Carnival Nudge (Version 2.1 Dual) + + + fcnudgeo + Fruit Carnival Nudge (Version 2.0, set 1) + + + fcnudgeo2 + Fruit Carnival Nudge (Version 2.0, set 2) + + + fcnudgeo3 + Fruit Carnival Nudge (Version 1.7) + + + fcockt + Fruit Cocktail (030505 World) + + + fcockt2 + Fruit Cocktail 2 (080707 Russia) + + + fcockt2_10 + Fruit Cocktail 2 (110111 Entertainment A) + + + fcockt2_11 + Fruit Cocktail 2 (110124 Entertainment A) + + + fcockt2_12 + Fruit Cocktail 2 (110204 Entertainment A) + + + fcockt2_13 + Fruit Cocktail 2 (110311 Entertainment B) + + + fcockt2_14 + Fruit Cocktail 2 (140526 Entertainment B) + + + fcockt2_15 + Fruit Cocktail 2 (110411 Entertainment C) + + + fcockt2_2 + Fruit Cocktail 2 (080904 Russia) + + + fcockt2_3 + Fruit Cocktail 2 (080909 World) + + + fcockt2_4 + Fruit Cocktail 2 (081105 World) + + + fcockt2_4a + Fruit Cocktail 2 (bootleg, 081105, banking address hack) + + + fcockt2_4b + Fruit Cocktail 2 (bootleg, 081105, banking address hack, no credit limit) + + + fcockt2_4c + Fruit Cocktail 2 (bootleg, 081105, VIDEO GAME-1 FR02) + + + fcockt2_4d + Fruit Cocktail 2 (bootleg, 081105, banking address hack, payout percentage 70) + + + fcockt2_4e + Fruit Cocktail 2 (bootleg, 081105, LOTTOGAME (I)) + + + fcockt2_4f + Fruit Cocktail 2 (bootleg, 081105, LOTOS FR02) + + + fcockt2_5 + Fruit Cocktail 2 (081106 Russia) + + + fcockt2_6 + Fruit Cocktail 2 (090525 Lottery) + + + fcockt2_7 + Fruit Cocktail 2 (090813 Entertainment) + + + fcockt2_8 + Fruit Cocktail 2 (100412 Entertainment X) + + + fcockt2_9 + Fruit Cocktail 2 (101208 Entertainment N) + + + fcockt2a + Fruit Cocktail 2 (bootleg, 080707, banking address hack) + + + fcockt_10 + Fruit Cocktail (070517 Russia) + + + fcockt_11 + Fruit Cocktail (070822 Russia) + + + fcockt_12 + Fruit Cocktail (070911 Russia) + + + fcockt_14 + Fruit Cocktail (090708 Entertainment) + + + fcockt_15 + Fruit Cocktail (100324 Entertainment X) + + + fcockt_16 + Fruit Cocktail (100331 Entertainment X) + + + fcockt_17 + Fruit Cocktail (101208 Entertainment N) + + + fcockt_18 + Fruit Cocktail (110111 Entertainment A) + + + fcockt_19 + Fruit Cocktail (110124 Entertainment A) + + + fcockt_2 + Fruit Cocktail (030512 World) + + + fcockt_20 + Fruit Cocktail (110204 Entertainment A) + + + fcockt_21 + Fruit Cocktail (110311 Entertainment B) + + + fcockt_22 + Fruit Cocktail (140526 Entertainment B) + + + fcockt_3 + Fruit Cocktail (030623 World) + + + fcockt_4 + Fruit Cocktail (031028 World) + + + fcockt_5 + Fruit Cocktail (031111 World) + + + fcockt_6 + Fruit Cocktail (040216 World) + + + fcockt_6a + Fruit Cocktail (bootleg, 040216, banking address hack) + + + fcockt_6b + Fruit Cocktail (bootleg, 040216, backdoor) + + + fcockt_6c + Fruit Cocktail (bootleg, 040216, LotoRossy+) + + + fcockt_6d + Fruit Cocktail (bootleg, 040216, VIDEO GAME-1 FR01) + + + fcockt_7 + Fruit Cocktail (050118 World) + + + fcockt_7a + Fruit Cocktail (bootleg, 050118, backdoor) + + + fcockt_7b + Fruit Cocktail (bootleg, 050118, VIDEO GAME-1 FR01) + + + fcockt_7c + Fruit Cocktail (bootleg, 050118, payout percentage 40) + + + fcockt_7d + Fruit Cocktail (bootleg, 050118, payout percentage 60) + + + fcockt_7e + Fruit Cocktail (bootleg, 050118, payout percentage 70) + + + fcockt_7f + Fruit Cocktail (bootleg, 050118, changed version text) + + + fcockt_7g + Fruit Cocktail (bootleg, 050118, LOTO PROGRAM V-FC2) + + + fcockt_7h + Fruit Cocktail (bootleg, 050118, LOTOS FR01) + + + fcockt_8 + Fruit Cocktail (060111 World) + + + fcockt_8a + Fruit Cocktail (bootleg, 060111, LOTO COCKTAIL V01-0001) + + + fcockt_8b + Fruit Cocktail (bootleg, 060111, LOTTOGAME (I)) + + + fcockt_9 + Fruit Cocktail (070305 Russia) + + + fcombat + Field Combat + + + fcrash + Final Crash (bootleg of Final Fight) + + + fearless + Fearless Pinocchio (V101US) + + + fengyunh + Fengyun Hui + + + fenix + Fenix (Orio bootleg of Phoenix) + + + fenixn + Fenix (Niemer bootleg of Phoenix) + + + fever13 + Fever 13 (Japan, v1.3) + + + feverch + Fever Chance (W-6, Japan, set 1) + + + fevercha + Fever Chance (W-6, Japan, set 2) + + + feverchtw + Fever Chance (W-6, Taiwan) + + + feversoc + Fever Soccer + + + feversos + Fever SOS (World, 98/09/25 VER) + + + ffantasa + Fighting Fantasy (Japan) + + + ffantasy + Fighting Fantasy (Japan, revision 3) + + + ffantasya + Fighting Fantasy (Japan) + + + ffantasyb + Fighting Fantasy (Japan revision ?) + + + ffantasybl + Fighting Fantasy (bootleg with 68705) + + + ffantasyj + Fighting Fantasy (Japan, revision 2) + + + ffantasym + Fighting Fantasy (Modular System) + + + ffigh1v2 + Final Fight (1v2, Hack) + + + ffight + Final Fight (World, set 1) + + + ffight2b + Final Fight 2 (SNES bootleg) + + + ffight3b + Final Fight 3 (SNES bootleg, set 1) + + + ffight3b2 + Final Fight 3 (SNES bootleg, set 2) + + + ffighta + Final Fight (World, set 2) + + + ffightae + Final Fight 30th Anniversary Edition (World, hack) + + + ffightaec2 + Final Fight: Anniversary Edition (CPS2 hardware) + + + ffightaec2ds + Final Fight: Anniversary Edition (Deadly Streets, Hack)(CPS2 Hardware) + + + ffightaemgc + Final Fight 30th Anniversary Edition (Mad Gear's City Hack) + + + ffightbl + Final Fight (bootleg) + + + ffightbla + Final Fight (bootleg on Final Crash PCB) + + + ffightblb + Final Fight (bootleg with single OKI) + + + ffightdw + Final Fight (Warriors, Hack) + + + ffightfw + Final Fight (Framework, Hack) + + + ffightj + Final Fight (Japan) + + + ffightj1 + Final Fight (Japan 900112) + + + ffightj2 + Final Fight (Japan 900305) + + + ffightj3 + Final Fight (Japan 900405) + + + ffightj4 + Final Fight (Japan 900613) + + + ffightjh + Street Smart / Final Fight (Japan, hack) + + + ffightu + Final Fight (USA, set 1) + + + ffightu1 + Final Fight (USA, set 2) + + + ffightu2 + Final Fight (USA, set 3) + + + ffightua + Final Fight (USA 900112) + + + ffightub + Final Fight (USA 900424) + + + ffightuc + Final Fight (USA 900613) + + + ffortune + Fantasy Fortune (1VXFC5460, New Zealand) + + + ffreveng + Final Fight Revenge / Final Revenge (JUET 990930 V1.100) + + + ffrevng10 + Final Fight Revenge / Final Revenge (JUET 990714 V1.000) + + + ffruits + Frantic Fruits + + + ffurspbs + Fatal Fury Special / Garou Densetsu Special (Optional Hidden Character Third Edition, Hack) + + + ffurspbt + Fatal Fury Special / Garou Densetsu Special (BT Version PPX, Hack) + + + ffury1bs + Fatal Fury - King of Fighters / Garou Densetsu - Shukumei no Tatakai (Boss, Hack) + + + ffury2es + Fatal Fury 2 / Garou Densetsu 2 - Arata-naru Tatakai (Easy Special Attacks, Hack) + + + ffury3bs + Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - Haruka-naru Tatakai (Ancient Battles Resurgence, Hack) + + + ffury3eh + Fatal Fury 3 - Road to the Final Victory / Garou Densetsu 3 - Haruka-naru Tatakai (Add Char - Ultra kill style changed, Hack) + + + ffv101 + Flipper Football (v1.01) + + + ffv103 + Flipper Football (v1.03) + + + ffv104 + Flipper Football (v1.04) + + + fg_1000af + Family Guy v10.0 (English,French) + + + fg_1000ag + Family Guy v10.0 (English,German) + + + fg_1000ai + Family Guy v10.0 (English,Italian) + + + fg_1000al + Family Guy v10.0 (English,Spanish) + + + fg_110af + Family Guy v11.0 (English,French) + + + fg_110ag + Family Guy v11.0 (English,German) + + + fg_110ai + Family Guy v11.0 (English,Italian) + + + fg_110al + Family Guy v11.0 (English,Spanish) + + + fg_120af + Family Guy v12.0 (English,French) + + + fg_120ag + Family Guy v12.0 (English,German) + + + fg_120ai + Family Guy v12.0 (English,Italian) + + + fg_120al + Family Guy v12.0 (English,Spanish) + + + fg_300ai + Family Guy v3.0 (English,Italian) + + + fg_400a + Family Guy v4.0 (English) + + + fg_400ag + Family Guy v4.0 (English,German) + + + fg_700af + Family Guy v7.0 (English,French) + + + fg_700al + Family Guy v7.0 (English,Spanish) + + + fg_800al + Family Guy v8.0 (English,Spanish) + + + fghtatck + Fighter & Attacker (US) + + + fghtbskt + Fighting Basketball + + + fghthist + Fighter's History (World ver 43-09, DE-0395-1 PCB) + + + fghthista + Fighter's History (World ver 43-07, DE-0380-2 PCB) + + + fghthistb + Fighter's History (World ver 43-05, DE-0380-2 PCB) + + + fghthistj + Fighter's History (Japan ver 41-07, DE-0395-1 PCB) + + + fghthistja + Fighter's History (Japan ver 41-05, DE-0380-2 PCB) + + + fghthistjb + Fighter's History (Japan ver 41-04, DE-0380-1 PCB) + + + fghthistu + Fighter's History (US ver 42-09, DE-0396-0 PCB) + + + fghthistua + Fighter's History (US ver 42-06, DE-0395-1 PCB) + + + fghthistub + Fighter's History (US ver 42-05, DE-0395-1 PCB) + + + fghthistuc + Fighter's History (US ver 42-03, DE-0380-2 PCB) + + + fghtjam + Capcom Fighting Jam (JAM1 Ver. A) + + + fghtmn + Fighting Mania (QG918 VER. EAA) + + + fghtmna + Fighting Mania (QG918 VER. AAA) + + + fghtmnk + Fighting Mania (QG918 VER. KAA) + + + fghtmnu + Fighting Mania (QG918 VER. UAA) + + + fgoal + Field Goal (set 1) + + + fgoala + Field Goal (set 2) + + + fgtlayer + Fighting Layer (Asia, FTL3/VER.A) + + + fgtlayerja + Fighting Layer (Japan, FTL0/VER.A) + + + fh_905h + Funhouse (9.05H) + + + fh_l2 + Funhouse (L-2) + + + fh_l3 + Funhouse (L-3) + + + fh_l4 + Funhouse (L-4) + + + fh_l5 + Funhouse (L-5) + + + fh_l9 + Funhouse (L-9, SL-2m) + + + fh_l9b + Funhouse (L-9, SL-2m, bootleg improved German translation) + + + fh_pa1 + Funhouse (L-2, prototype PA-1 System 11 sound) + + + fhawk + Fighting Hawk (World) + + + fhawkj + Fighting Hawk (Japan) + + + fhboxers + Funky Head Boxers (JUETBKAL 951218 V1.000) + + + fhunter + Fortune Hunter (2XF5196I01, US) + + + fhuntera + Fortune Hunter (2XF5196I02, US) + + + fi6845 + Fast Invaders (6845 version) + + + fi8275 + Fast Invaders (8275 version) + + + fiches + Les Fiches (ver 1.3) + + + fiches12 + Les Fiches (ver 1.2) + + + fidlstix + Fiddle Stix (1st Rev) + + + fieldday + Field Day + + + fightfev + Fight Fever / Wang Jung Wang (set 1) + + + fightfeva + Fight Fever / Wang Jung Wang (set 2) + + + fightfva + Fight Fever (set 2) + + + fightrol + Fighting Roller + + + filetto + Filetto (v1.05 901009) + + + filthyr + Filthy Rich (English) + + + filthyrr + Filthy Rich (Russian) + + + finalap2 + Final Lap 2 + + + finalap2j + Final Lap 2 (Japan) + + + finalap3 + Final Lap 3 (World, Rev C) + + + finalap3a + Final Lap 3 (World, set 2) + + + finalap3bl + Final Lap 3 (bootleg) + + + finalap3j + Final Lap 3 (Japan) + + + finalap3jc + Final Lap 3 (Japan, Rev C) + + + finalapc + Final Lap (Rev C) + + + finalapd + Final Lap (Rev D) + + + finalapr + Final Lap R (Rev. B) + + + finalapr1 + Final Lap R + + + finalaprj + Final Lap R (Japan Rev. C) + + + finalaprj1 + Final Lap R (Japan Rev. B) + + + finalb + Final Blow (World) + + + finalbj + Final Blow (Japan) + + + finalbny + Mahjong Final Bunny (Japan) + + + finalbu + Final Blow (US, rev 1) + + + finalgdr + Final Godori (Korea, version 2.20.5915) + + + finalizb + Finalizer - Super Transformation (bootleg) + + + finalizr + Finalizer - Super Transformation (set 1) + + + finalizra + Finalizer - Super Transformation (set 2) + + + finalizrb + Finalizer - Super Transformation (bootleg) + + + finallap + Final Lap (Rev E) + + + finallapc + Final Lap (Rev C) + + + finallapd + Final Lap (Rev D) + + + finallapjb + Final Lap (Japan, Rev B) + + + finallapjc + Final Lap (Japan, Rev C) + + + finalp2j + Final Lap 2 (Japan) + + + finalp3a + Final Lap 3 (World) + + + finalttr + Final Tetris + + + findlove + Zenkoku Seifuku Bishoujo Grand Prix Find Love (J 971212 V1.000) + + + findout + Find Out (Version 4.04, set 1) + + + findouta + Find Out (Version 4.04, set 2) + + + finehour + Finest Hour (Japan) + + + finfurl + Final Furlong (World, FF2 Ver. A) + + + finfurl2 + Final Furlong 2 (World) + + + finfurl2j + Final Furlong 2 (Japan, FFS1 Ver.A) + + + finger + Finger (bootleg of Stinger) + + + finlapjb + Final Lap (Japan - Rev B) + + + finlapjc + Final Lap (Japan - Rev C) + + + finlarch + Final Arch (J 950714 V1.001) + + + fire_l2 + Fire! (L-2) + + + fire_l3 + Fire! (L-3) + + + fireact + Fire Action + + + fireactd + Fire Action Deluxe + + + fireball + Fireball + + + firebarr + Fire Barrel (Japan) + + + firebatl + Fire Battle + + + firebeas + Firebeast (prototype) + + + firebird + Hot Fire Birds + + + firednc + Fire Dancer (20184911, NSW/ACT) + + + firednca + Fire Dancer (10191311, ASP) + + + firefox + Fire Fox (set 1) + + + firefoxa + Fire Fox (set 2) + + + firehawk + Fire Hawk (World) / Huohu Chuanshuo (China) (horizontal) + + + firehawkv + Fire Hawk (World) / Huohu Chuanshuo (China) (switchable orientation) + + + firemntn + Fire Mountain + + + fireone + Fire One + + + fireshrk + Fire Shark + + + fireshrka + Fire Shark (earlier) + + + fireshrkd + Fire Shark (Korea, set 1, easier) + + + fireshrkdh + Fire Shark (Korea, set 2, harder) + + + firetpbl + Fire Trap (Japan bootleg) + + + firetrap + Fire Trap (US, rev A) + + + firetrapa + Fire Trap (US) + + + firetrapbl + Fire Trap (Japan bootleg) + + + firetrapj + Fire Trap (Japan) + + + firetrk + Fire Truck / Smokey Joe (PROM version) + + + firetrka + Fire Truck / Smokey Joe (ROM version) + + + firstcl + First Class Traveller (set 1) + + + fisco400 + Cisco/Fisco 400 + + + fishbatl + Fisherman Battle (Japan, ver 1.03) + + + fishfren + Fishin' Frenzy (prototype) + + + fishingm + Fishing Master (971107 JPN) + + + fitegol2 + Fighting Golf (US) + + + fitegolf + Lee Trevino's Fighting Golf (World?) + + + fitegolfu + Lee Trevino's Fighting Golf (US, Ver 2, set 1) + + + fitegolfua + Lee Trevino's Fighting Golf (US, Ver 2, set 2) + + + fitfight + Fit of Fighting + + + fitter + Fitter + + + fitterbl + Fitter (bootleg of Round-Up) + + + fiveside + Five a Side Soccer (ver UAA) + + + fixeighb + FixEight (Bootleg) + + + fixeight + FixEight (Europe) + + + fixeighta + FixEight (Southeast Asia) + + + fixeightat + FixEight (Southeast Asia, Taito license) + + + fixeightbl + FixEight (Korea, bootleg) + + + fixeighth + FixEight (Hong Kong) + + + fixeightht + FixEight (Hong Kong, Taito license) + + + fixeightj + FixEight - Jigoku no Eiyuu Densetsu (Japan) + + + fixeightjt + FixEight - Jigoku no Eiyuu Densetsu (Japan, Taito license) + + + fixeightk + FixEight (Korea) + + + fixeightkt + FixEight (Korea, Taito license) + + + fixeightt + FixEight (Europe, Taito license) + + + fixeighttw + FixEight (Taiwan) + + + fixeighttwt + FixEight (Taiwan, Taito license) + + + fixeightu + FixEight (USA) + + + fixeightut + FixEight (USA, Taito license) + + + fjbuster + Fujiyama Buster (Japan) + + + fjholden + FJ Holden + + + fl7_2000 + Flaming 7 (Custom Hardware, Main, 2000 Bonus) + + + fl7_2k16 + Flaming 7 (Custom Hardware, Egyptian Gold, 2000 Bonus) + + + fl7_3121 + Flaming 7 (W4 Hardware, Red, White & Blue 7's + Hollywood Nights) + + + fl7_50 + Flaming 7 (Custom Hardware, Main, 50 Bonus) + + + fl7_500 + Flaming 7 (Custom Hardware, Main, 500 Bonus) + + + fl7_tw + Flaming 7 (Taiwanese Hardware, unknown version) + + + flagrall + '96 Flag Rally + + + flamegun + Flame Gunner (Export) + + + flamegung + Flame Gunner (VER 1.40G) + + + flamegunj + Flame Gunner (Japan) + + + flamolce + Flame of Olympus - Cash Express (0351025, US) + + + flamoljc + Flame of Olympus - Jackpot Carnival (0251048, US) + + + flapchck + Flappy Chicken (HB, ver. 20230430) + + + flash_l1 + Flash (Williams, L-1) + + + flash_l2 + Flash (Williams, L-2) + + + flash_t1 + Flash (Williams, T-1) Ted Estes + + + flashgal + Flashgal (set 1) + + + flashgala + Flashgal (set 2) + + + flashgalk + Flashgal (set 1, Kyugo logo) + + + flashgdn + Flash Gordon + + + flashgdnf + Flash Gordon (French) + + + flashgdnfv + Flash Gordon (French Vocalizer sound) + + + flashgdnp1 + Flash Gordon (prototype rev. 1) + + + flashgdnp2 + Flash Gordon (prototype rev. 2) + + + flashgdnv + Flash Gordon (Vocalizer sound) + + + flashman + Flashman + + + fldragon + Flash Dragon + + + fldragona + Flash Dragon (alternate set) + + + flicker + Flicker (prototype) + + + flicky + Flicky (128k Version, 315-5051) + + + flickya + Flicky (128k Version, 315-5051, larger ROMs) + + + flickyb + Flicky (128k Version, 315-5051, larger ROMs, newer) + + + flickyg + Flicky (128k Version, System 2, 315-5051, alt graphics) + + + flickyo + Flicky (64k Version, 315-5051, set 1) + + + flickys1 + Flicky (64k Version, 315-5051, set 2) + + + flickys2 + Flicky (128k Version, not encrypted) + + + flickys2g + Flicky (128k Version, System 2, not encrypted, alt graphics) + + + flickyup + Flicky (64k Version, on Up'n Down boardset, set 1) + + + flickyupa + Flicky (64k Version, on Up'n Down boardset, set 2) + + + flight2k + Flight 2000 + + + flipjack + Flipper Jack + + + flipmaze + Flip Maze (V2.04J 1999/09/02 20:00) + + + flipshot + Battle Flip Shot + + + flipull + Flipull (Japan) + + + flkatck + Flak Attack (Japan) + + + flkatcka + Flak Attack (Japan, PWB 450593 sub-board) + + + floritas + Floritas (bootleg of Moon Cresta) + + + floritasm + Floritas (Multivideo Spanish bootleg of Moon Cresta) + + + flower + Flower (US) + + + flowerbl + Flower (bootleg) + + + flowerj + Flower (Japan) + + + flsbeats + Flash Beats + + + flstory + The FairyLand Story + + + flstoryj + The FairyLand Story (Japan) + + + flstoryo + The FairyLand Story (earlier) + + + flyball + Flyball (rev 2) + + + flyball1 + Flyball (rev 1) + + + flyboy + Fly-Boy + + + flyboyb + Fly-Boy (bootleg) + + + flyingf + Flying Fortress + + + flytiger + Flying Tiger (set 1) + + + flytigera + Flying Tiger (set 2) + + + fmaniac2p + Fishing Maniac 2+ + + + fmaniac3 + Fishing Maniac 3 + + + fncywld + Fancy World - Earth of Crisis + + + fnf + The Fast And The Furious (v3.06) + + + fnkyfish + Funky Fish + + + fnshark + Flyin' Shark (bootleg of Hishou Zame) + + + foathens + Flame of Athens + + + followst + Follow the Stars (20001411, NSW/ACT) + + + fonz + Fonz + + + foodf + Food Fight (rev 3) + + + foodf1 + Food Fight (rev 1) + + + foodf2 + Food Fight (rev 2) + + + foodfc + Food Fight (cocktail) + + + foolrace + Fool Race + + + football + Football + + + footbpow + Football Power (version 1.2) + + + footbpow11 + Football Power (version 1.1) + + + footchmp + Football Champ / Euro Football Champ (World) + + + footchmpbl + Football Champ / Euro Football Champ (World) (bootleg) + + + force + Force + + + forcebrk + Force Break (bootleg) + + + forceii + Force II + + + forgottn + Forgotten Worlds (World, newer) + + + forgottna + Forgotten Worlds (World) + + + forgottnj + Forgotten Worlds (Japan) (English prototype) + + + forgottnu + Forgotten Worlds (USA, B-Board 88621B-2, Rev. C) + + + forgottnua + Forgotten Worlds (USA, B-Board 88618B-2, Rev. A) + + + forgottnuaa + Forgotten Worlds (USA, B-Board 88618B-2, Rev. AA) + + + forgottnuc + Forgotten Worlds (USA, B-Board 88618B-2, Rev. C) + + + forgottnue + Forgotten Worlds (USA, B-Board 88618B-2, Rev. E) + + + formatz + Formation Z + + + formula1 + Formula 1 + + + fort2b + Fortress 2 Blue Arcade (World) (ver 1.01 / pcb ver 3.05) + + + fort2ba + Fortress 2 Blue Arcade (Korea) (ver 1.00 / pcb ver 3.05) + + + fortath + Fortune of Athena (10248611, NSW/ACT) + + + fortecrd + Forte Card (Ver 110, Spanish) + + + fortecrde + Forte Card (Ver 103, English) + + + fortellr + Fortune Teller (01J00131, NSW/ACT) + + + fortfvr + Fortune Fever (BHG1566, US) + + + fortking + Fortune King (10230911, ASP) + + + fortune1 + Fortune I (PK485-S) Draw Poker + + + fotns + Fist Of The North Star / Hokuto no Ken + + + fourplay + Four Play + + + fourtrax + Four Trax (World) + + + fourtraxa + Four Trax (US?, censored banners) + + + fourtraxj + Four Trax (Japan) + + + fourx4 + 4x4 + + + foxylady + Foxy Lady + + + fpoint + Flash Point (set 2, Japan) (FD1094 317-0127A) + + + fpoint1 + Flash Point (set 1, Japan) (FD1094 317-0127A) + + + fpoint1d + Flash Point (set 1, Japan) (bootleg of FD1094 317-0127A set) + + + fpointbj + Flash Point (Japan, bootleg set 1) + + + fpointbl + Flash Point (World, bootleg) + + + fpointbla + Flash Point (Japan, bootleg set 2) + + + fpointd + Flash Point (set 2, Japan) (bootleg of FD1094 317-0127A set) + + + fpwr2_l2 + Firepower II (L-2) + + + frankst + Mary Shelley's Frankenstein + + + frankstg + Mary Shelley's Frankenstein (Germany) + + + franksti + Mary Shelley's Frankenstein (Italy) + + + franticf + Frantic Fred (Release 2) + + + franticfa + Frantic Fred + + + freddy + Freddy: A Nightmare on Elm Street (rev.4) + + + freddy3 + Freddy: A Nightmare on Elm Street (rev.3) + + + fredmem + Fred Flintstone's Memory Match (World?, Ticket version, 3/17/95) + + + fredmemc + Fred Flintstone's Memory Match (Mandarin Chinese, 3/17/95) + + + fredmemj + Fred Flintstone's Memory Match (Japan, High Score version, 3/20/95) + + + fredmemuk + Fred Flintstone's Memory Match (UK, 3/17/95) + + + fredmemus + Fred Flintstone's Memory Match (US, High Score version, 3/10/95) + + + fredmesp + Fred Flintstone's Memory Match (Spanish, 3/17/95) + + + freedeal + Free Deal Twin Jokers Progressive + + + freedom + Freedom + + + freefall + Freefall + + + freekckb + Free Kick (bootleg) + + + freekick + Free Kick (NS6201-A 1987.10) + + + freekicka + Free Kick (NS6201-A 1987.9) + + + freekickb1 + Free Kick (bootleg set 1) + + + freekickb2 + Free Kick (bootleg set 2) + + + freekickb3 + Free Kick (bootleg set 3) + + + freeway + FreeWay (V5.12) + + + freewaya + FreeWay (V4.31) + + + freeze + Freeze + + + freezeat + Freeze (Atari) (prototype, English voice, 96/10/25) + + + freezeat2 + Freeze (Atari) (prototype, 96/10/18) + + + freezeat3 + Freeze (Atari) (prototype, 96/10/07) + + + freezeat4 + Freeze (Atari) (prototype, 96/10/03) + + + freezeat5 + Freeze (Atari) (prototype, 96/09/20, AMOA-96) + + + freezeat6 + Freeze (Atari) (prototype, 96/09/07, Jamma-96) + + + freezeatjp + Freeze (Atari) (prototype, Japanese voice, 96/10/25) + + + frenzy + Frenzy (revision RA1) + + + frenzyxprss + Frenzy Express + + + fresh + Fruit Fresh (Italy) + + + friskyt + Frisky Tom (set 1) + + + friskyta + Frisky Tom (set 2) + + + friskytb + Frisky Tom (set 3) + + + frogf + Frog (Falcon bootleg) + + + frogg + Frog (bootleg on Galaxian hardware) + + + froggeg + Frog (Hermatic, bootleg on Galaxian hardware from Electro Game) + + + frogger + Frogger + + + froggeram + Frogger (bootleg on Amigo? hardware) + + + froggereb + Frogger - New Serie 92 (bootleg) + + + froggermc + Frogger (Moon Cresta hardware) + + + froggers + Frog + + + froggers1 + Frogger (Sega, set 1) + + + froggers2 + Frogger (Sega, set 2) + + + froggers3 + Frogger (Sega, set 3) + + + froggert + Frogger (Turtles hardware) + + + froggerv + Frogger (Videotron bootleg) + + + froggervd + Frogger (Hermatic, bootleg on Scramble hardware from Video Dens) + + + froggrmc + Frogger (Moon Cresta hardware) + + + froggrs + Frogger (Coin Music, bootleg on Scramble hardware) + + + frogs + Frogs + + + frogseg1 + Frogger (Sega set 1) + + + frogseg2 + Frogger (Sega set 2) + + + frogwld + Frog Wild 2 (0251114, US) + + + froman2b + Idol Mahjong Final Romance 2 (Neo-Geo, bootleg of CD version) + + + fromanc2 + Taisen Idol-Mahjong Final Romance 2 (Japan, newer) + + + fromanc2o + Taisen Idol-Mahjong Final Romance 2 (Japan, older) + + + fromanc4 + Taisen Mahjong Final Romance 4 (Japan) + + + fromance + Idol-Mahjong Final Romance (Japan) + + + fromancr + Taisen Mahjong Final Romance R (Japan) + + + frontier + Frontier + + + frontlin + Front Line (AA1, 4 PCB version) + + + frontlina + Front Line (FL, 5 PCB version) + + + fround + The Final Round (version M) + + + froundl + The Final Round (version L) + + + frpwr_l2 + Firepower (L-2) + + + frpwr_l6 + Firepower (L-6) + + + frpwr_t6 + Firepower (T-6) + + + frtgenie + Fruit Genie (Version 1-1-03, set 1) + + + frtgeniea + Fruit Genie (Version 1-1-03, set 2) + + + frtgenieb + Fruit Genie (Version 1-1-03, set 3) + + + frtgeniec + Fruit Genie (Version 1-1-03, set 4) + + + frtgenied + Fruit Genie (VT 2.11) + + + fruitbun + Fruits & Bunny (World?) + + + fruitcat + Fruit Cat (v2.00) + + + fruitpar + Fruit Paradise (V214US) + + + fruitpar206us + Fruit Paradise (V206US) + + + fruitpc + Fruit Land + + + fruitsamples + fruitsamples + + + fruitsmg + Fruits Magic - The Magic Party + + + fruitstb + Fruit Star Bonus (Ver 8.2.00ITL) + + + fruitstba + Fruit Star Bonus (Ver 8.27PVIE) + + + fruitstbb + Fruit Star Bonus (Ver 8.20PIR) + + + fruitstbc + Fruit Star Bonus (Ver 8.36UNG-1100) + + + fruitstbd + Fruit Star Bonus (Ver 8.30UNG-200) + + + fruitstbe + Fruit Star Bonus (Ver 8.23PSTK, Steiermark) + + + fruitstbf + Fruit Star Bonus (Ver 8.17BGL-3, Burgenland, set 1) + + + fruitstbg + Fruit Star Bonus (Ver 8.17BGL-3, Burgenland, set 2) + + + fruitstbh + Fruit Star Bonus (Ver 8.30UNG-25, set 1) + + + fruitstbi + Fruit Star Bonus (Ver 8.30UNG-25, set 2) + + + fruitstr + Fruit Star (T10S, encrypted) + + + fruitstra + Fruit Star (v810, encrypted) + + + fruitwld + Fruit World (V111) + + + fruitwlda + Fruit World (V110) + + + fs_la5 + The Flintstones (LA-5) + + + fs_lx2 + The Flintstones (LX-2) + + + fs_lx3 + The Flintstones (LX-3) + + + fs_lx4 + The Flintstones (LX-4) + + + fs_lx5 + The Flintstones (LX-5) + + + fs_sp2 + The Flintstones (SP-2) + + + fshark + Flying Shark (World) + + + fsharkb + Flying Shark (World, bootleg) + + + fsharkbt + Flying Shark (bootleg with 8741) + + + fsoccer + Fighting Soccer (version 4) + + + fsoccerb + Fighting Soccer (Joystick hack bootleg) + + + fsoccerba + Fighting Soccer (Joystick hack bootleg, alt) + + + fsoccerj + Fighting Soccer (Japan) + + + fspiderb + Frog & Spiders (bootleg?) + + + fstarfrc + Final Star Force (US) + + + fstarfrcj + Final Star Force (Japan, set 1) + + + fstarfrcja + Final Star Force (Japan, set 2) + + + fstarfrcw + Final Star Force (World?) + + + fstation + Fun Station Spielekoffer 9 Spiele + + + fstgfish + Festival: Goldfish Scoop + + + fswords + Fighters Swords (Korean release of Samurai Shodown III) + + + ft_l3 + Fish Tales (L-3) + + + ft_l4 + Fish Tales (L-4) + + + ft_l5 + Fish Tales (L-5) + + + ft_p2 + Fish Tales (P-2) + + + ft_p4 + Fish Tales (P-4) + + + ftimpact + Fighters' Impact (Ver 2.02O) + + + ftimpactg + Fighters' Impact (VER 2.10G) + + + ftimpactj + Fighters' Impact (Ver 2.02J) + + + ftimpactu + Fighters' Impact (Ver 2.02A) + + + ftimpcta + Fighters' Impact A (Ver 2.00J) + + + fts2in1 + Super Two In One + + + ftsoccer + Fighting Soccer + + + ftspeed + Faster Than Speed + + + fullthrl + Full Throttle (Japan) + + + fun4 + Fun Four (set 1) + + + fun4a + Fun Four (set 2) + + + funcsino + Status Fun Casino (V1.3s) + + + funcube + Funcube (v1.5) + + + funcube2 + Funcube 2 (v1.1) + + + funcube3 + Funcube 3 (v1.1) + + + funcube4 + Funcube 4 (v1.0) + + + funcube5 + Funcube 5 (v1.0) + + + funeball + Fun-E-Ball + + + funkball + Funky Ball + + + funkybee + Funky Bee + + + funkybeeb + Funky Bee (bootleg, harder) + + + funkyfig + The First Funky Fighter (USA, Canada, Mexico / Japan, set 1) + + + funkyfiga + The First Funky Fighter (USA, Canada, Mexico / Japan, set 2) + + + funkyjet + Funky Jet (World, rev 1) + + + funkyjeta + Funky Jet (World) + + + funkyjeta2 + Funky Jet (Korea, prototype?) + + + funkyjetb + Funky Jet (bootleg) + + + funkyjetj + Funky Jet (Japan, rev 2) + + + funlddlx + Funny Land de Luxe + + + funnyfm + Funny Farm (v1.17) + + + funnyfma + Funny Farm (v1.26) + + + funnyfmb + Funny Farm (v1.30) + + + funnymou + Funny Mouse (Japan) + + + funquiz + Fun World Quiz (German) + + + funquiza + Fun World Quiz (German, 12-11-1990) + + + funquizb + Fun World Quiz (German, 27-04-1990) + + + funriver + Fun River (Version 1.4R CGA) + + + funriverd1 + Fun River (Version 1.3R CGA) + + + funriverv + Fun River (Version 1.4R Dual) + + + funybubl + Funny Bubble + + + funybublc + Funny Bubble (Comad version) + + + funystrp + Funny Strip + + + futari10 + Mushihime-Sama Futari Ver 1.0 (2006/10/23 MASTER VER.) + + + futari15 + Mushihime-Sama Futari Ver 1.5 (2006/12/8.MASTER VER. 1.54.) + + + futari15a + Mushihime-Sama Futari Ver 1.5 (2006/12/8 MASTER VER 1.54) + + + futaribl + Mushihime-Sama Futari Black Label - Another Ver (2009/11/27 INTERNATIONAL BL) + + + futariblj + Mushihime-Sama Futari Black Label (2007/12/11 BLACK LABEL VER) + + + futflash + Future Flash (set 1) + + + futflasha + Future Flash (set 2) + + + futrquen + Future Queen + + + futspy + Future Spy (315-5061) + + + futurspa + Future Spa + + + futurwld + Future World + + + fuudol + Fuudol (Japan) + + + fuusenpn + Fuusen Pentai + + + fvipers + Fighting Vipers (Revision D) + + + fvipers2 + Fighting Vipers 2 (Japan, Revision A) + + + fvipers2o + Fighting Vipers 2 (Japan) + + + fvipersb + Fighting Vipers (Revision B) + + + fvrpitch + Fever Pitch (2VXEC534, NSW) + + + fw_a0_1 + unknown Fun World A0-1 game + + + fw_a7_11 + unknown Fun World A7-11 game 1 + + + fw_a7_11a + unknown Fun World A7-11 game 2 + + + fwheel + Fortune Wheel + + + fx + F-X (bootleg of S.R.D. Mission) + + + fzeroax + F-Zero AX (Rev E) (GDT-0004E) + + + fzeroaxc + F-Zero AX (Rev C) (GDT-0004C) + + + fzeroaxd + F-Zero AX (Rev D) (GDT-0004D) + + + fzeroaxm + F-Zero AX Monster Ride + + + g13jnr + Golgo 13: Juusei no Requiem (Japan, GLT1 VER.A) + + + g13knd + Golgo 13 Kiseki no Dandou (Japan, GLS1/VER.A) + + + g4u2 + Games 4 U 2 (94 5.6-0) + + + g4u3 + Games 4 U 3 (94 5.6-4) + + + g4u3a + Games 4 U 3 (94 5.6-5) + + + g4u4 + Games 4 U 4 (94 5.6-5) + + + g4u5 + Games 4 U 5 (94 5.6-5) + + + g4u6 + Games 4 U 6 (94 5.6-5) + + + g4u7 + Games 4 U 7 (94 5.6-5a) + + + ga2 + Golden Axe: The Revenge of Death Adder (World, Rev B) + + + ga2j + Golden Axe: The Revenge of Death Adder (Japan) + + + ga2u + Golden Axe: The Revenge of Death Adder (US, Rev A) + + + gahaha + GAHAHA Ippatsudou (World, GID2 Ver.A) + + + gahaha2 + GAHAHA Ippatsudou 2 (Japan, GIS1 Ver.A) + + + gaia + Gaia Crusaders + + + gaialast + Gaia - The Last Choice of Earth + + + gaiapols + Gaiapolis (ver EAF) + + + gaiapolsj + Gaiapolis (ver JAF) + + + gaiapolsu + Gaiapolis (ver UAF) + + + gaiden + Ninja Gaiden (US) + + + gakupara + Quiz Gakuen Paradise (Japan, ver. 1.04) + + + gakupara102 + Quiz Gakuen Paradise (Japan, ver. 1.02) + + + gakusai + Mahjong Gakuensai (Japan, set 1) + + + gakusai2 + Mahjong Gakuensai 2 (Japan) + + + gakusaia + Mahjong Gakuensai (Japan, set 2) + + + gal10ren + Mahjong Gal 10-renpatsu (Japan) + + + gal3 + Galaxian 3 - Theater 6 : Project Dragoon + + + galactic + Galactica - Batalha Espacial + + + galactica2 + Galactica-2 (bootleg of Moon Alien Part 2) + + + galag88b + Galaga '88 (set 2) + + + galag88j + Galaga '88 (Japan) + + + galaga + Galaga (Namco rev. B) + + + galaga3 + Galaga 3 (GP3 rev. D) + + + galaga3a + Galaga 3 (GP3 rev. C) + + + galaga3b + Galaga 3 (GP3) + + + galaga3c + Galaga 3 (set 4) + + + galaga3m + Galaga 3 (set 5) + + + galaga88 + Galaga '88 + + + galaga88a + Galaga '88 (02-03-88) + + + galaga88j + Galaga '88 (Japan) + + + galagamf + Galaga (Midway set 1 with fast shoot hack) + + + galagamk + Galaga (Midway set 2) + + + galagamw + Galaga (Midway set 1) + + + galagao + Galaga (Namco) + + + galagap + Galaga (Patched) + + + galagawm + Galaga Wave Mixer (Hack) + + + galaktron + Galaktron (Petaco S.A.) + + + galap1 + Space Invaders Galactica (hack of 'Galaxian (Namco set 2)') + + + galap2 + GX Part 2 (hack of Galaxian) + + + galap4 + Galaxian Part 4 (hack) + + + galapx + Galaxian Part X (hack of 'Moon Alien') + + + galartic + Galaxian (Artic System bootleg) + + + galastrm + Galactic Storm (Japan) + + + galaxbsf + Galaxian (bootleg, set 1) + + + galaxbsf2 + Galaxian (bootleg, set 3) + + + galaxcirsa + Galaxian (Cirsa Spanish bootleg) + + + galaxi + Galaxi (v2.0) + + + galaxia + Galaxia (set 1) + + + galaxiaa + Galaxia (set 2) + + + galaxiab + Galaxia (set 3) + + + galaxiaj + Galaxian (Namco set 2) + + + galaxiamv + Diviertate Galaxia (Multivideo, Spanish bootleg of Galaxian) + + + galaxian + Galaxian (Namco set 1) + + + galaxiana + Galaxian (Namco set 2) + + + galaxianbl + Galaxian (bootleg, set 2) + + + galaxianbl2 + Galaxian (bootleg, set 4) + + + galaxianbl3 + Galaxian (Spanish bootleg) + + + galaxianem + Galaxian (Electromar Spanish bootleg) + + + galaxiani + Galaxian (Irem) + + + galaxianiii + Galaxian III (bootleg of Galaxian) + + + galaxianm + Galaxian (Midway set 1) + + + galaxianmo + Galaxian (Midway set 2) + + + galaxianrp + Galaxian (Rene Pierre bootleg) + + + galaxiant + Galaxian (Taito) + + + galaxrcgg + Galaxian Growing Galaxip / Galaxian Nave Creciente (Recreativos Covadonga Spanish bootleg) + + + galaxrf + Galaxian (Recreativos Franco S.A. Spanish bootleg) + + + galaxrfgg + Galaxian Growing Galaxip / Galaxian Nave Creciente (Recreativos Franco S.A. Spanish bootleg) + + + galaxyfg + Galaxy Fight - Universal Warriors + + + galaxygn + Galaxy Gunners + + + galaxygnh + Galaxy Gunners (1990 year hack) + + + galaxypi + Galaxy + + + galaxyr + Galaxy Ranger + + + galaxyrp + Galaxy Ranger (Pioneer LDV1000) + + + galaxyx + Galaxy X (bootleg of Galaxian) + + + galds + Gals Ds - Three Dealers Casino House (bootleg?) + + + galemp + Galaxy Empire (bootleg?) + + + galeone + Il Galeone + + + galgame + Galaxy Game + + + galgame2 + Galaxy Games StarPak 2 + + + galgame3 + Galaxy Games StarPak 3 + + + galgame4 + Galaxy Games StarPak 4 + + + galgame4p + Galaxy Games StarPak 4 (prototype) + + + galhustl + Gals Hustler + + + galilfac + Galileo Factory (main) + + + galivan + Cosmo Police Galivan (12/26/1985) + + + galivan2 + Cosmo Police Galivan (12/16/1985) + + + galivan3 + Cosmo Police Galivan (12/11/1985) + + + galkaika + Mahjong Gal no Kaika (Japan) + + + galkamika + Kamikaze (Electrogame, Spanish bootleg of Galaxian) + + + galkoku + Mahjong Gal no Kokuhaku (Japan) + + + gallag + Gallag + + + gallag50 + Gallag Video Game / Petalouda (Butterfly, x50) + + + gallgall + Gallagher's Gallery (v2.2) + + + gallgall_21 + Gallagher's Gallery (v2.1) + + + gallop + Gallop - Armed Police Unit (Japan, M84 hardware) + + + gallopm72 + Gallop - Armed Police Unit (Japan, M72 hardware) + + + galmedes + Galmedes (Japan) + + + galmidw + Galaxian (Midway) + + + galmidwo + Galaxian (Midway, old rev) + + + galmonst + Galaxy Monsters (Laguna S.A. Spanish bootleg of Space Invaders) + + + galpandx + Gals Panic DX (Asia) + + + galpani2 + Gals Panic II (Asia) + + + galpani2e + Gals Panic II (English) + + + galpani2e2 + Gals Panic II (English, 2 PCB ver.) + + + galpani2g + Gals Panic II (Germany, 2 PCB ver.) + + + galpani2gs + Gals Panic II (Germany, single PCB) + + + galpani2i + Gals Panic II (Italy, single PCB) + + + galpani2i2 + Gals Panic II (Italy, 2 PCB ver.) + + + galpani2j + Gals Panic II (Japan) + + + galpani2k + Gals Panic II (Korea, single PCB) + + + galpani2t + Gals Panic II (Taiwan, 2 PCB ver.) + + + galpani3 + Gals Panic 3 (Euro) + + + galpani3hk + Gals Panic 3 (Hong Kong) + + + galpani3j + Gals Panic 3 (Japan) + + + galpani3k + Gals Panic 3 (Korea) + + + galpani4 + Gals Panic 4 (Europe) + + + galpani4j + Gals Panic 4 (Japan) + + + galpani4k + Gals Panic 4 (Korea) + + + galpanib + Gals Panic (set 2) + + + galpanic + Gals Panic (unprotected, ver. 2.0) + + + galpanica + Gals Panic (unprotected) + + + galpanicb + Gals Panic (ULA protected, set 1) + + + galpanicc + Gals Panic (ULA protected, set 2) + + + galpanicms + New Quiz (Modular System bootleg of Gals Panic) + + + galpanidx + Gals Panic DX (Asia) + + + galpaniex + Gals Panic EX (Korea) + + + galpanis + Gals Panic S - Extra Edition (Europe, revision 1) + + + galpanisa + Gals Panic S - Extra Edition (Asia) + + + galpanise + Gals Panic S - Extra Edition (Europe, set 2) + + + galpanisj + Gals Panic S - Extra Edition (Japan, revision 1) + + + galpanisk + Gals Panic S - Extra Edition (Korea, revision 1) + + + galpaniska + Gals Panic S - Extra Edition (Korea) + + + galpanisu + Gals Panic SU (Korea, Gals Panic 4 re-release) + + + galpans2 + Gals Panic S2 (Europe, version 3) + + + galpans2a + Gals Panic S2 (Asia, version 1.1) + + + galpans2j + Gals Panic S2 (Japan) + + + galpans3 + Gals Panic S3 (Japan) + + + galpansu + Gals Panic SU (Korea, version 5) + + + galpansua + Gals Panic SU (Korea) + + + galsnew + Gals Panic (Export, EXPRO-02 PCB) + + + galsnewj + Gals Panic (Japan, EXPRO-02 PCB) + + + galsnewk + Gals Panic (Korea, EXPRO-02 PCB) + + + galsnewt + Gals Panic (Taiwan, EXPRO-02 PCB) + + + galsnewu + Gals Panic (US, EXPRO-02 PCB) + + + galspnbl + Gals Pinball + + + galturbo + Galaxian Turbo (hack of 'Super Galaxians') + + + galwars2 + Galaxy Wars II (bootleg of Defender) + + + galxwar2 + Galaxy Wars (Universal set 2) + + + galxwars + Galaxy Wars (Universal set 1) + + + galxwars2 + Galaxy Wars (Universal set 2) + + + galxwarst + Galaxy Wars (Taito?) + + + galxwarst2 + Galaxy Wars (Taito) + + + galxwart + Galaxy Wars (Taito[Q]) + + + gamatron + Gamatron + + + gamatros + Gamatron (Sonic) + + + gambjack + Gamblin' Jack (20197211, NSW/ACT) + + + gambl186 + Multi Game (Italian, Versione 4.0.3 - 1.5.7, 05-FEV-99(397)) (V398?) + + + gambl186a + Multi Game (Italian, Versione 4.0.3 - 1.5.7, 05-FEV-99(397)) (V399?) + + + gambl186b + Multi Game (Italian, Versione 3.8.6T - 1.5.6, 25-AUG-97) (V378?) + + + gambl186c + Multi Game (French / English, Version Soft 4.4.8T - 4.0.5, 26-OCT-00) + + + gambl186d + Multi Game (English, Version Soft 4.1.2T - 1.5.7, 16-MAY-00(397)) + + + gambl186e + Multi Game (Italian, Versione 3.9.8 - 1.5.7, 01-JUL-98) + + + gambler + The Gambler (11XF528902, US) + + + gamblra5 + The Gambler (EHG0916-02, US) + + + gamecst2 + GameCristal (version 2.613) + + + gamecstl + GameCristal + + + gamesnsm + The Games (NSM) + + + gametngk + The Game Paradise - Master of Shooting! / Game Tengoku - The Game Paradise (ver 1.0) + + + gametree + Game Tree + + + gammagic + Game Magic + + + gampo812 + Gamble Poker (v812, encrypted) + + + gampo816 + Gamble Poker (v816, encrypted) + + + gamshara + Gamshara (20020912A / 10021 Ver.A) + + + gamsharao + Gamshara (20020716A / 10021 Ver.A) + + + gamt1 + Gaminator 1 (set 1) + + + gamt10 + Gaminator 10 (set 1) + + + gamt10a + Gaminator 10 (set 2) + + + gamt10b + Gaminator 10 (set 3) + + + gamt10bag + Gaminator 10 (bootleg, Bag) + + + gamt10c + Gaminator 10 (set 4) + + + gamt10d + Gaminator 10 (set 5) + + + gamt10e + Gaminator 10 (set 6) + + + gamt10ent + Gaminator 10 (bootleg, Ent) + + + gamt10f + Gaminator 10 (set 7) + + + gamt10g + Gaminator 10 (set 8) + + + gamt10gmult + Gaminator 10 (bootleg, Multiloto) + + + gamt10h + Gaminator 10 (set 9) + + + gamt10i + Gaminator 10 (set 10) + + + gamt10j + Gaminator 10 (set 11) + + + gamt10k + Gaminator 10 (set 12) + + + gamt10l + Gaminator 10 (set 13) + + + gamt10lotc + Gaminator 10 (bootleg, C-Loto) + + + gamt10lotm + Gaminator 10 (bootleg, Lotomatic) + + + gamt10m + Gaminator 10 (set 14) + + + gamt10n + Gaminator 10 (set 15) + + + gamt10o + Gaminator 10 (set 16) + + + gamt11 + Gaminator 11 (set 1) + + + gamt11a + Gaminator 11 (set 2) + + + gamt11b + Gaminator 11 (set 3) + + + gamt11bmult + Gaminator 11 (bootleg, Multiloto) + + + gamt11c + Gaminator 11 (set 4) + + + gamt12 + Gaminator 12 (set 1) + + + gamt12a + Gaminator 12 (set 2) + + + gamt12b + Gaminator 12 (set 3) + + + gamt16 + Gaminator 16 (set 1) + + + gamt16a + Gaminator 16 (set 2) + + + gamt16b + Gaminator 16 (set 3) + + + gamt16c + Gaminator 16 (set 4) + + + gamt16d + Gaminator 16 (set 5) + + + gamt16e + Gaminator 16 (set 6) + + + gamt16f + Gaminator 16 (set 7) + + + gamt16fmult + Gaminator 16 (bootleg, Multiloto) + + + gamt16g + Gaminator 16 (set 8) + + + gamt16h + Gaminator 16 (set 9) + + + gamt16i + Gaminator 16 (set 10) + + + gamt16j + Gaminator 16 (set 11) + + + gamt16k + Gaminator 16 (set 12) + + + gamt16lotc + Gaminator 16 (bootleg, C-Loto) + + + gamt17 + Gaminator 17 (set 1) + + + gamt17a + Gaminator 17 (set 2) + + + gamt17b + Gaminator 17 (set 3) + + + gamt18 + Gaminator 18 (set 1) + + + gamt18a + Gaminator 18 (set 2) + + + gamt18b + Gaminator 18 (set 3) + + + gamt18bmult + Gaminator 18 (bootleg, Multiloto) + + + gamt18c + Gaminator 18 (set 4) + + + gamt18d + Gaminator 18 (set 5) + + + gamt18ent + Gaminator 18 (bootleg, Ent) + + + gamt18lotc + Gaminator 18 (bootleg, C-Loto) + + + gamt19 + Gaminator 19 (set 1) + + + gamt19a + Gaminator 19 (set 2) + + + gamt19ent + Gaminator 19 (bootleg, Ent) + + + gamt19lotc + Gaminator 19 (bootleg, C-Loto) + + + gamt19mult + Gaminator 19 (bootleg, Multiloto) + + + gamt1a + Gaminator 1 (set 2) + + + gamt1b + Gaminator 1 (set 3) + + + gamt1ent + Gaminator 1 (bootleg, Ent) + + + gamt1lotc + Gaminator 1 (bootleg, C-Loto) + + + gamt20 + Gaminator 20 (set 1) + + + gamt20a + Gaminator 20 (set 2) + + + gamt20b + Gaminator 20 (set 3) + + + gamt20ent + Gaminator 20 (bootleg, Ent) + + + gamt20lotc + Gaminator 20 (bootleg, C-Loto) + + + gamt20lotm + Gaminator 20 (bootleg, Lotomatic) + + + gamt21 + Gaminator 21 (set 1) + + + gamt21a + Gaminator 21 (set 2) + + + gamt21amult + Gaminator 21 (bootleg, Multiloto) + + + gamt22 + Gaminator 22 (set 1) + + + gamt22a + Gaminator 22 (set 2) + + + gamt22amult + Gaminator 22 (bootleg, Multiloto) + + + gamt22b + Gaminator 22 (set 3) + + + gamt23 + Gaminator 23 (set 1) + + + gamt23a + Gaminator 23 (set 2) + + + gamt23b + Gaminator 23 (set 3) + + + gamt29 + Gaminator 29 (set 1) + + + gamt29a + Gaminator 29 (set 2) + + + gamt30 + Gaminator 30 (set 1) + + + gamt31 + Gaminator 31 (set 1) + + + gamt31mult + Gaminator 31 (bootleg, Multiloto) + + + gamt4 + Gaminator 4 (set 1) + + + gamt4a + Gaminator 4 (set 2) + + + gamt4b + Gaminator 4 (set 3) + + + gamt4c + Gaminator 4 (set 4) + + + gamt4d + Gaminator 4 (set 5) + + + gamt4dbag + Gaminator 4 (bootleg, Bag, set 1) + + + gamt4e + Gaminator 4 (set 6) + + + gamt4ent + Gaminator 4 (bootleg, Ent) + + + gamt4f + Gaminator 4 (set 7) + + + gamt4fbag + Gaminator 4 (bootleg, Bag, set 2) + + + gamt4g + Gaminator 4 (set 8) + + + gamt4h + Gaminator 4 (set 9) + + + gamt4hbag + Gaminator 4 (bootleg, Bag, set 3) + + + gamt4hmult + Gaminator 4 (bootleg, Multiloto) + + + gamt4i + Gaminator 4 (set 10) + + + gamt4ibag + Gaminator 4 (bootleg, Bag, set 4) + + + gamt4j + Gaminator 4 (set 11) + + + gamt4lotc + Gaminator 4 (bootleg, C-Loto) + + + gamt4lotca + Gaminator 4 (C-Loto, MK4) + + + gamt4lotm + Gaminator 4 (bootleg, Lotomatic) + + + gamt5 + Gaminator 5 (set 1) + + + gamt6 + Gaminator 6 (set 1) + + + gamt6a + Gaminator 6 (set 2) + + + gamt6b + Gaminator 6 (set 3) + + + gamt6c + Gaminator 6 (set 4) + + + gamt6d + Gaminator 6 (set 5) + + + gamt6e + Gaminator 6 (set 6) + + + gamt6ent + Gaminator 6 (bootleg, Ent) + + + gamt6f + Gaminator 6 (set 7) + + + gamt6lotc + Gaminator 6 (bootleg, C-Loto) + + + gamt7 + Gaminator 7 (set 1) + + + gamt7a + Gaminator 7 (set 2) + + + gamt7b + Gaminator 7 (set 3) + + + gamt7c + Gaminator 7 (set 4) + + + gamt7d + Gaminator 7 (set 5) + + + gamt7e + Gaminator 7 (set 6) + + + gamt7f + Gaminator 7 (set 7) + + + gamt7g + Gaminator 7 (set 8) + + + gamt7h + Gaminator 7 (set 9) + + + gamt8 + Gaminator 8 (set 1) + + + gamt8a + Gaminator 8 (set 2) + + + gamt8b + Gaminator 8 (set 3) + + + gamt8c + Gaminator 8 (set 4) + + + gamt8d + Gaminator 8 (set 5) + + + gamt8lotc + Gaminator 8 (bootleg, C-Loto) + + + gamt9 + Gaminator 9 (set 1) + + + gamt9a + Gaminator 9 (set 2) + + + gamt9lotc + Gaminator 9 (bootleg, C-Loto) + + + ganbare + Ganbare! Marine Kun (Japan 2K0411) + + + ganbaremo + Ganbare Momotarou Oni Taiji + + + gangonta + Ganbare! Gonta!! 2 / Party Time: Gonta the Diver II (Japan Release) + + + gangrose + Gangster's Roses (v4.70) + + + gangwarb + Gang Wars (bootleg) + + + gangwars + Gang Wars + + + gangwarsb + Gang Wars (bootleg) + + + gangwarsj + Gang Wars (Japan) + + + gangwarsu + Gang Wars (US) + + + ganjaja + Ganbare Jajamaru Saisho wa Goo / Ganbare Jajamaru Hop Step & Jump + + + ganryu + Ganryu / Musashi Ganryuki + + + gaplus + Gaplus (GP2 rev. B) + + + gaplusa + Gaplus (GP2) + + + gaplusd + Gaplus (GP2 rev D, alternate hardware) + + + gapluse + Gaplus (GP7) + + + gapluso + Gaplus (rev. B) + + + gaplust + Gaplus (Tecfri PCB) + + + garage + Garage (040122 World) + + + garage_10 + Garage (100331 Entertainment X) + + + garage_11 + Garage (101208 Entertainment N) + + + garage_12 + Garage (110111 Entertainment A) + + + garage_13 + Garage (110124 Entertainment A) + + + garage_14 + Garage (110204 Entertainment A) + + + garage_15 + Garage (110311 Entertainment B) + + + garage_16 + Garage (140526 Entertainment B) + + + garage_17 + Garage (110411 Entertainment C) + + + garage_2 + Garage (040123 World) + + + garage_3 + Garage (040216 World) + + + garage_4 + Garage (040219 World) + + + garage_4a + Garage (bootleg, 040219, backdoor) + + + garage_4b + Garage (bootleg, 040219, changed version text) + + + garage_4c + Garage (bootleg, 040219, LOTO PROGRAM V-GG2) + + + garage_5 + Garage (050311 World) + + + garage_5a + Garage (bootleg, 050311, backdoor) + + + garage_5b + Garage (bootleg, 050311, VIDEO GAME-1 GA01) + + + garage_5c + Garage (bootleg, 050311, payout percentage 70) + + + garage_5d + Garage (bootleg, 050311, LOTTOGAME (I)) + + + garage_5e + Garage (bootleg, 050311, LOTOS GA01) + + + garage_6 + Garage (070213 Russia) + + + garage_7 + Garage (070329 Russia) + + + garage_9 + Garage (090715 Entertainment) + + + gardia + Gardia (317-0006) + + + gardiab + Gardia (317-0007?, bootleg) + + + gardiaj + Gardia (Japan, 317-0006) + + + garogun + Garogun Seroyang (Korea) + + + garou + Garou - Mark of the Wolves (NGM-2530) + + + garoubl + Garou - Mark of the Wolves (bootleg) + + + garoubs + Garou - Mark of the Wolves (Enable hidden characters, Hack) + + + garouh + Garou - Mark of the Wolves (NGM-2530 ~ NGH-2530) + + + garouha + Garou - Mark of the Wolves (NGH-2530) + + + garoujq + Garou - Mark of the Wolves (Enhanced, Hack) + + + garouo + Garou - Mark of the Wolves (set 2) + + + garoup + Garou - Mark of the Wolves (prototype) + + + garuka + Garuka (Japan ver. W) + + + garyoret + Garyo Retsuden (Japan) + + + gatedom1 + Gate of Doom (US revision 1) + + + gatedoom + Gate of Doom (US revision 4) + + + gatedoom1 + Gate of Doom (US revision 1) + + + gatsbee + Gatsbee + + + gaun22p1 + Gauntlet II (2 Players, rev 1) + + + gaun22pg + Gauntlet II (2 Players, German) + + + gaun2pg1 + Gauntlet (2 Players, German, rev 1) + + + gaun2pj2 + Gauntlet (2 Players, Japanese, rev 2) + + + gaun2pr3 + Gauntlet (2 Players, rev 3) + + + gaunt2 + Gauntlet II + + + gaunt22p + Gauntlet II (2 Players, rev 2) + + + gaunt22p1 + Gauntlet II (2 Players, rev 1) + + + gaunt22pg + Gauntlet II (2 Players, German) + + + gaunt2g + Gauntlet II (German) + + + gaunt2p + Gauntlet (2 Players, rev 6) + + + gaunt2pg + Gauntlet (2 Players, German, rev 4) + + + gaunt2pj + Gauntlet (2 Players, Japanese, rev 5) + + + gauntdl + Gauntlet Dark Legacy (version DL 2.52) + + + gauntdl24 + Gauntlet Dark Legacy (version DL 2.4) + + + gauntg + Gauntlet (German, rev 10) + + + gauntgr3 + Gauntlet (German, rev 3) + + + gauntgr6 + Gauntlet (German, rev 6) + + + gauntgr8 + Gauntlet (German, rev 8) + + + gauntj + Gauntlet (Japanese, rev 13) + + + gauntj12 + Gauntlet (Japanese, rev 12) + + + gauntleg + Gauntlet Legends (version 1.6) + + + gauntleg12 + Gauntlet Legends (version 1.2) + + + gauntlet + Gauntlet (rev 14) + + + gauntlet2p + Gauntlet (2 Players, rev 6) + + + gauntlet2pg + Gauntlet (2 Players, German, rev 4) + + + gauntlet2pg1 + Gauntlet (2 Players, German, rev 1) + + + gauntlet2pj + Gauntlet (2 Players, Japanese, rev 5) + + + gauntlet2pj2 + Gauntlet (2 Players, Japanese, rev 2) + + + gauntlet2pr3 + Gauntlet (2 Players, rev 3) + + + gauntletg + Gauntlet (German, rev 10) + + + gauntletgr3 + Gauntlet (German, rev 3) + + + gauntletgr6 + Gauntlet (German, rev 6) + + + gauntletgr8 + Gauntlet (German, rev 8) + + + gauntletj + Gauntlet (Japanese, rev 13) + + + gauntletj12 + Gauntlet (Japanese, rev 12) + + + gauntletr1 + Gauntlet (rev 1) + + + gauntletr2 + Gauntlet (rev 2) + + + gauntletr4 + Gauntlet (rev 4) + + + gauntletr5 + Gauntlet (rev 5) + + + gauntletr7 + Gauntlet (rev 7) + + + gauntletr9 + Gauntlet (rev 9) + + + gauntlets + Gauntlet (Spanish, rev 15) + + + gauntr1 + Gauntlet (rev 1) + + + gauntr2 + Gauntlet (rev 2) + + + gauntr4 + Gauntlet (rev 4) + + + gauntr5 + Gauntlet (rev 5) + + + gauntr7 + Gauntlet (rev 7) + + + gauntr9 + Gauntlet (rev 9) + + + gaunts + Gauntlet (Spanish, rev 15) + + + gaxeduel + Golden Axe - The Duel (JUETL 950117 V1.000) + + + gbbchmp + Great Bishi Bashi Champ (GBA48 VER. JAB) + + + gberet + Green Beret + + + gberetb + Green Beret (bootleg) + + + gblchmp + Global Champion (Ver 2.1A 1994/07/29) + + + gbmoney + The Good, The Bad & The Money (0351016, US) + + + gbusters + Gang Busters (set 1) + + + gbustersa + Gang Busters (set 2) + + + gcastle + Golden Castle (prototype?) + + + gchgchmp + Gachaga Champ (GE877 VER. JAB) + + + gcpinbal + Grand Cross (v1.02F) + + + gdarius + G-Darius (Ver 2.02O) + + + gdarius2 + G-Darius Ver.2 (Ver 2.03J) + + + gdariusg + G-Darius (VER 2.70G) + + + gdariusj + G-Darius (Ver 2.01J) + + + gdariusu + G-Darius (Ver 2.02A) + + + gderby + Gran Derby (Spanish hack of Jockey Club) + + + gdfs + Mobile Suit Gundam Final Shooting (Japan) + + + gdvsgd + Gundam vs. Gundam (GVS1 Ver. A) + + + gdvsgdnx + Gundam vs. Gundam Next + + + geebee + Gee Bee (Japan) + + + geebeea + Gee Bee (UK) + + + geebeeb + Gee Bee (Europe) + + + geebeeg + Gee Bee (US) + + + gegege + GeGeGe no Kitarou Youkai Slot + + + gegemdb + Gegege no Kitaro Yokai Yokocho Matsuri de Battle Ja (GYM1 Ver.A) + + + geimulti + GEI Multi Game + + + geisha + Geisha (0101153V, NSW/ACT) + + + geishaa6 + Geisha (10000811, NSW/ACT) + + + geishaa6a + Geisha (10122011, ASP) + + + geishaa6b + Geisha (10112411, ASP) + + + geishajc + Geisha - Jackpot Carnival (0351033, US) + + + geishanz + Geisha (0101408V, New Zealand) + + + gekimaka + Geki Makaimura + + + gekiretu + Quiz Gekiretsu Scramble (Japan) + + + gekiretup + Quiz Gekiretsu Scramble (Japan, prototype) + + + gekiridn + Gekirindan (Ver 2.3O 1995/09/21) + + + gekiridnj + Gekirindan (Ver 2.3J 1995/09/21) + + + gekirido + Gekirindan (Japan) + + + gekisha + Mahjong Gekisha (Japan) + + + gekishap2 + Mahjong Gekisha Part II (Japan) + + + gekisou + Gekisou (Japan) + + + gekitsui + Gekitsui Oh (Japan) + + + gekpurya + Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev C) (GDT-0008C) + + + gekpuryb + Gekitou Pro Yakyuu Mizushima Shinji All Stars vs. Pro Yakyuu (Rev B) (GDT-0008B) + + + gemcrush + Gemcrush (Japan, prototype) + + + gemini + Gemini Wing (World) + + + gemini2k + Gemini 2000 (set 1) + + + gemini2k1 + Gemini 2000 (set 2) + + + geminib + Gemini Wing (bootleg) + + + geminij + Gemini Wing (Japan) + + + genesisp + Genesis + + + genesispf + Genesis (French) + + + genesispg + Genesis (German) + + + genie + Genie (ICP-1, set 1) + + + geniea + Genie (ICP-1, set 2) + + + geniep + Genie (Pinball) + + + genius6 + Genius 6 (V110F) + + + genius6a + Genius 6 (V133F) + + + genius6b + Genius 6 (V132F) + + + genix + Genix Family + + + genmagi + Genie Magic (0200894V, NSW/ACT) + + + genpeitd + Genpei ToumaDen + + + genpin + genpin + + + gensitou + Genshitou 1930's (Japan) + + + geostorm + Geo Storm (Japan, 014 custom sound CPU) + + + geostorma + Geo Storm (Japan, 026 custom sound CPU) + + + gepoker + Poker (Version 50.02 ICB, set 1) + + + gepoker1 + Poker (Version 50.02 ICB, set 2) + + + gepoker2 + Poker (Version 50.02 ICB, set 3) + + + gepoker3 + Poker (Version 50.02 ICB, set 4) + + + getaway + Get A Way (upright) + + + getbass + Get Bass: Sega Bass Fishing (Japan) + + + getbassdx + Get Bass: Sega Bass Fishing Deluxe (Japan) + + + getbassur + Get Bass: Sega Bass Fishing Upright (Japan) + + + getrich + Get Rich (Version 1.0.1) + + + getstar + Guardian (US) + + + getstarb + Get Star (bootleg) + + + getstarb1 + Get Star (bootleg set 1) + + + getstarb2 + Get Star (bootleg set 2) + + + getstarj + Get Star (Japan) + + + gfire2 + Golden Fire II + + + gfootbal + Gaelco Football + + + gforce2 + Galaxy Force 2 + + + gforce2j + Galaxy Force 2 (Japan) + + + gforce2ja + Galaxy Force 2 (Japan, Rev A) + + + gforce2sd + Galaxy Force 2 (Super Deluxe unit) + + + ggate + Golden Gate (set 1) (Bingo) + + + ggatea + Golden Gate (set 2) (Bingo) + + + ggconnie + Go! Go! Connie chan Jaka Jaka Janken + + + gghost + Goalie Ghost + + + ggisuka + Guilty Gear Isuka + + + ggoemon + Ganbare Goemon + + + ggram2 + Giant Gram: All Japan Pro Wrestling 2 (Japan) + + + ggreats2 + Golfing Greats 2 (ver JAC) + + + gground + Gain Ground (World, 3 Players, Floppy Based, FD1094 317-0058-03d Rev A) + + + ggroundj + Gain Ground (Japan, 2 Players, Floppy Based, FD1094 317-0058-03b) + + + ggx + Guilty Gear X + + + ggx15 + Guilty Gear X ver. 1.5 + + + ggxx + Guilty Gear XX (GDL-0011) + + + ggxxac + Guilty Gear XX Accent Core (Japan) (GDL-0041) + + + ggxxrl + Guilty Gear XX #Reload (Japan, Rev A) (GDL-0019A) + + + ggxxrlo + Guilty Gear XX #Reload (Japan) (GDL-0019) + + + ggxxsla + Guilty Gear XX Slash (Japan, Rev A) (GDL-0033A) + + + ghlpanic + Ghoul Panic (World, OB2/VER.A) + + + ghoshunt + Ghost Hunter + + + ghostb + The Real Ghostbusters (US 2 Players, revision 2) + + + ghostb2a + The Real Ghostbusters (US 2 Players) + + + ghostb3 + The Real Ghostbusters (US 3 Players, revision 3B?) + + + ghostb3a + The Real Ghostbusters (US 3 Players, revision 2) + + + ghostbi + Ghost Busters (FMV Demo) + + + ghostlop + Ghostlop (prototype) + + + ghostmun + Ghost Muncher + + + ghostsev + Ghost Squad Evolution + + + ghostsqo + Ghost Squad (GDX-0012) + + + ghostsqu + Ghost Squad (Rev A) (GDX-0012A) + + + ghouls + Ghouls'n Ghosts (World) + + + ghoulsu + Ghouls'n Ghosts (USA) + + + ghox + Ghox (spinner) + + + ghoxj + Ghox (joystick) + + + ghoxjo + Ghox (joystick, older) + + + ghunter + Gang Hunter / Dead Angle + + + ghunters + Gang Hunter / Dead Angle (Spain) + + + ghv101 + Goofy Hoops + + + gi_l3 + Gilligan's Island (L-3) + + + gi_l4 + Gilligan's Island (L-4) + + + gi_l6 + Gilligan's Island (L-6) + + + gi_l8 + Gilligan's Island (L-8) + + + gi_l9 + Gilligan's Island (L-9) + + + giclasex + GI-Classic EX (satellite terminal) + + + giclassvr + GI-Classic EX (server) + + + gigaman2 + Giga Man 2: The Power Fighters (bootleg of Mega Man 2: The Power Fighters) + + + gigandes + Gigandes + + + gigandesa + Gigandes (earlier) + + + gigas + Gigas (MC-8123, 317-5002) + + + gigasb + Gigas (bootleg) + + + gigasm2 + Gigas Mark II (MC-8123, 317-5002) + + + gigasm2b + Gigas Mark II (bootleg) + + + gigawing + Giga Wing (USA 990222) + + + gigawinga + Giga Wing (Asia 990222) + + + gigawingb + Giga Wing (Brazil 990222) + + + gigawingd + Giga Wing (USA 990222 Phoenix Edition) (bootleg) + + + gigawingh + Giga Wing (Hispanic 990222) + + + gigawingj + Giga Wing (Japan 990223) + + + gigawingjd + Giga Wing (Japan 990223 Phoenix Edition) (bootleg) + + + gijoe + G.I. Joe (World, EAB, set 1) + + + gijoea + G.I. Joe (Asia, AA) + + + gijoeea + G.I. Joe (World, EB8, prototype?) + + + gijoej + G.I. Joe (Japan, JAA) + + + gijoeu + G.I. Joe (US, UAB) + + + gijoeua + G.I. Joe (US, UAA) + + + gimeabrk + Gimme A Break (7/7/85) + + + ginganin + Ginga Ninkyouden (set 1) + + + ginganina + Ginga Ninkyouden (set 2) + + + ginkun + Ganbare Ginkun + + + gionbana + Gionbana (Japan 890120) + + + girotutt + GiroTutto + + + gjspace + GekiToride-Jong Space (10011 Ver.A) + + + gkigt4 + Game King (v4.x) + + + gkigt43 + Game King (v4.3) + + + gkigt43n + Game King (v4.3, NJ) + + + gkigt4ms + Game King (v4.x, MS) + + + gkigt5p + Game King (Triple-Five Play) + + + gkigtez + Game King (EZ Pay, v4.0) + + + gkigtezms + Game King (EZ Pay, v4.0, MS) + + + gkkey + Game King (Set Chips) + + + gl_coc + Carry On Clubbin' (Global) (v3.0) (Stealth) + + + gl_coc29 + Carry On Clubbin' (Global) (v2.9) (Stealth) + + + gl_coc29p + Carry On Clubbin' (Global) (v2.9 Protocol) (Stealth) + + + gl_cocp + Carry On Clubbin' (Global) (v3.0 Protocol) (Stealth) + + + gl_dow + Deals On Wheels (Global) (v1.4) (Stealth) + + + gl_dowcl + Deals On Wheels Club (Global) (v1.6) (Stealth) + + + gl_dowclp + Deals On Wheels Club (Global) (v1.6 Protocol) (Stealth) + + + gl_dowp + Deals On Wheels (Global) (v1.4 Protocol) (Stealth) + + + gl_grncl + Grid Runner Club (Global) (Stealth?) (set 1) + + + gl_grncla + Grid Runner Club (Global) (Stealth?) (set 2) + + + gl_hbh + Heartbreak Hotel (Global) (v1.0) (Stealth) + + + gl_hbhcl + Heartbreak Hotel Club (Global) (v1.9) (Stealth) + + + gl_hbhcla + Heartbreak Hotel Club (Global) (set 2) (Stealth) + + + gl_hbhclp + Heartbreak Hotel Club (Global) (v1.9 Protocol) (Stealth) + + + gl_snbev + Saturday Night Beaver (Global) (Stealth?) (set 1) + + + gl_snbeva + Saturday Night Beaver (Global) (Stealth?) (set 2) + + + gl_uyr + Up Yer Riggin Club (Global) (v2.8) (Stealth) + + + gl_uyrp + Up Yer Riggin Club (Global) (v2.8 Protocol) (Stealth) + + + gl_wywh + Wish You Were Here Club (Global) (v2.9) (Stealth) + + + gl_wywh24 + Wish You Were Here Club (Global) (v2.4) (Stealth) + + + gl_wywh24p + Wish You Were Here Club (Global) (v2.4 Protocol) (Stealth) + + + gl_wywhp + Wish You Were Here Club (Global) (v2.9 Protocol) (Stealth) + + + gladiador + Gladiadores (V1.0, CAA) + + + gladiatp + Gladiators (pinball) + + + gladiatr + Gladiator (US) + + + gladmort + GladMort (HB, Demo 2) + + + glass + Glass (Ver 1.1, Break Edition, Checksum 49D5E66B, Version 1994) + + + glass10 + Glass (Ver 1.0, Break Edition, Checksum C5513F3C) + + + glass10a + Glass (Ver 1.0, Break Edition, Checksum D3864FDB) + + + glasskr + Glass (Ver 1.1, Break Edition, Checksum D419AB69, Version 1994) (censored, unprotected) + + + glck6809 + Good Luck! (dual 6809 GI Australasia PCB) + + + gldarrow + Golden Arrow (Standard G8-03) + + + gldgong + The Golden Gong (20196011, ASP) + + + gldgongq + The Golden Gong (10217411, Queensland) + + + gldgongu + The Golden Gong (0152558, US) + + + gldncrwn + Golden Crown (Dutch, Game Card 95-752-011) + + + gldncrwnhop + Golden Crown Hopper (Dutch, Game Card) + + + gldneye + Goldeneye (CPU 4.04, display A4.00) + + + gldneye_402 + Goldeneye (CPU 4.02, display A4.00) + + + gldnflc + The Golden Fleece (10158311, NSW/ACT) + + + gldnpkr + Golden Poker (8VXEC037, New Zealand) + + + glfgreat + Golfing Greats (World, version L) + + + glfgreatj + Golfing Greats (Japan, version J) + + + glfgreatu + Golfing Greats (US, version K) + + + glfgretj + Golfing Greats (Japan) + + + glizrdce + Green Lizard - Cash Express (AHG1623, US) + + + gloc + G-LOC Air Battle (World) + + + glocr360 + G-LOC R360 (World) + + + glocr360j + G-LOC R360 (Japan) + + + glocu + G-LOC Air Battle (US) + + + glprac2j + Gallop Racer 2 (JAPAN) + + + glprac2l + Gallop Racer 2 Link HW (JAPAN) + + + glpracr + Gallop Racer (English Ver 10.17.K) + + + glpracr2 + Gallop Racer 2 (Export) + + + glpracr2j + Gallop Racer 2 (Japan) + + + glpracr2l + Gallop Racer 2 Link HW (Japan) + + + glpracr3 + Gallop Racer 3 (Export) + + + glpracr3j + Gallop Racer 3 (Japan) + + + glpracrj + Gallop Racer (Japanese Ver 9.01.12) + + + glregion + Golden Region + + + gluck2 + Good Luck II + + + glxplay + Galaxy Play + + + glxplay2 + Galaxy Play 2 + + + gmahou + Great Mahou Daisakusen (Japan 000121) + + + gmfamily + Games Family + + + gmgalax + Ghostmuncher Galaxian (bootleg) + + + gmine_l2 + Gold Mine (Shuffle) (L-2) + + + gmissile + Guided Missile + + + gmsshoot + Sharpshooter (coin pusher) + + + gnbarich + Gunbarich + + + gng + Ghosts'n Goblins (World? set 1) + + + gnga + Ghosts'n Goblins (World? set 2) + + + gngbl + Ghosts'n Goblins (bootleg with Cross) + + + gngbla + Ghosts'n Goblins (bootleg, harder) + + + gngblita + Ghosts'n Goblins (Italian bootleg, harder) + + + gngc + Ghosts'n Goblins (World? set 3) + + + gngprot + Ghosts'n Goblins (prototype) + + + gngt + Ghosts'n Goblins (US) + + + gnome + Gnome (070906 Russia) + + + gnome_10 + Gnome (100326 Lottery) + + + gnome_11 + Gnome (100326 Entertainment) + + + gnome_12 + Gnome (100326 Russia) + + + gnome_13 + Gnome (100407 Entertainment X) + + + gnome_14 + Gnome (101208 Entertainment N) + + + gnome_15 + Gnome (110124 Entertainment A) + + + gnome_16 + Gnome (110204 Entertainment A) + + + gnome_17 + Gnome (110311 Entertainment B) + + + gnome_18 + Gnome (140526 Entertainment B) + + + gnome_19 + Gnome (110411 Entertainment C) + + + gnome_2 + Gnome (071115 Russia) + + + gnome_2a + Gnome (bootleg, 071115, banking address hack) + + + gnome_3 + Gnome (080303 World) + + + gnome_3a + Gnome (bootleg, 080303, banking address hack) + + + gnome_3b + Gnome (bootleg, 080303, banking address hack, payout percentage 45) + + + gnome_3c + Gnome (bootleg, 080303, banking address hack, payout percentage 60) + + + gnome_4 + Gnome (090402 Russia) + + + gnome_5 + Gnome (090406 World) + + + gnome_5a + Gnome (bootleg, 090406, banking address hack, payout percentage 70) + + + gnome_5b + Gnome (bootleg, 090406, LOTTOGAME (I)) + + + gnome_7 + Gnome (090708 Lottery) + + + gnome_8 + Gnome (090810 Entertainment) + + + gnome_9 + Gnome (100326 World) + + + gnomea + Gnome (bootleg, 070906, banking address hack set 1) + + + gnomeatw + Gnome Around The World (0100767V, NSW/ACT) + + + gnomeb + Gnome (bootleg, 070906, banking address hack set 2) + + + gnomec + Gnome (bootleg, 070906, banking address hack set 3) + + + gnomed + Gnome (bootleg, 070906, VIDEO GAME-1 GN01) + + + gnomee + Gnome (bootleg, 070906, LOTOS GN01) + + + gnr_200 + Guns N Roses (USA 2.00, display A3.00) + + + gnr_300 + Guns N Roses (USA 3.00, display A3.00) + + + gnr_300d + Guns N Roses (Dutch 3.00, display A3.00) + + + gnr_300f + Guns N Roses (French 3.00, display F3.00) + + + gnumber + Golden Number + + + go2000 + Go 2000 + + + goal92 + Goal! '92 + + + goaltogo + Goal To Go + + + goalx3 + Goal! Goal! Goal! + + + goape + Go Ape (10006211, NSW/ACT) + + + gobyrc + Go By RC (V2.03O 1999/05/25 13:31) + + + gocowboy + Go Go Cowboy (English, prize) + + + godzilla + Godzilla (Japan) + + + godzillp + Godzilla (pinball, CPU 2.05, display A2.00) + + + godzillp_090 + Godzilla (pinball, CPU 0.90, display A0.991) + + + godzillp_100 + Godzilla (pinball, CPU 1.00, display A1.00) + + + gogold + Go For The Gold (Japan) + + + gogomile + Susume! Mile Smile / Go Go! Mile Smile (newer) + + + gogomileo + Susume! Mile Smile / Go Go! Mile Smile (older) + + + gogomilj + Susume! Mile Smile (Japan) + + + gogostrk + Go Go Strike + + + gogreen + Go For Green (10003411, NSW/ACT) + + + gogreena + Go For Green (10122111, ASP) + + + goindol + Goindol (SunA, World) + + + goindolj + Goindol (SunA, Japan) + + + goindolu + Goindol (SunA, US) + + + goinnuts + Goin' Nuts + + + goketsuj + Gouketsuji Ichizoku: Senzo Kuyou (v200906230) + + + gokuparo + Gokujou Parodius: Kako no Eikou o Motomete (ver JAD) + + + goldarch + Golden Archer (10197411, NSW/ACT) + + + goldart + Goldart (Spain) + + + goldartp + Goldart (Portugal) + + + goldball + Gold Ball (set 1) + + + goldballn + Gold Ball (Field Service Upgrade) + + + goldbug + Gold Bug + + + goldcity + Gold City (Russia) (Atronic) + + + goldcue + Golden Cue (CPU 0.04, display 0.10 + + + goldenc + Golden Canaries (1VXFC5462, New Zealand) + + + goldenchip + Golden Chip + + + goldenra + Golden Ra (0101164V, NSW/ACT) + + + goldfish + Gold Fish (020903, prototype) + + + goldfrts + Golden Fruits + + + goldfrui + Gold Fruit + + + goldgame + Golden Game (Bingo) + + + goldgkit1 + Golden Game Kit 1 Generation (Bingo) + + + goldgkitb + Golden Game Kit Bingo Stake 6/10 (Bingo) + + + goldglen + Golden Glenn (Russia) (Atronic) + + + goldgnew + Golden Game Bingo New (Bingo) + + + goldgstake + Golden Game Bingo Stake 6/10 (Bingo) + + + goldinc + Golden Incas (10174011, NSW/ACT, Show Program) + + + goldincu + Golden Incas (0252533, US) + + + goldmedb + Gold Medalist (bootleg) + + + goldmedl + Gold Medalist (set 1, Alpha68k II PCB) + + + goldmedla + Gold Medalist (set 2, Alpha68k III PCB) + + + goldmedlb + Gold Medalist (bootleg, Alpha68k III PCB) + + + goldnabl + Golden Axe (bootleg) + + + goldnaxa + Golden Axe (set 6, US) (8751 317-123A) + + + goldnaxb + Golden Axe (Version 2 317-0110) + + + goldnaxc + Golden Axe (Version 2 317-0122) + + + goldnaxe + Golden Axe (set 6, US) (8751 317-123A) + + + goldnaxe1 + Golden Axe (set 1, World) (FD1094 317-0110) + + + goldnaxe1d + Golden Axe (set 1, World) (bootleg of FD1094 317-0110 set) + + + goldnaxe2 + Golden Axe (set 2, US) (8751 317-0112) + + + goldnaxe3 + Golden Axe (set 3, World) (FD1094 317-0120) + + + goldnaxe3d + Golden Axe (set 3, World) (bootleg of FD1094 317-0120 set) + + + goldnaxeb1 + Golden Axe (encrypted bootleg) + + + goldnaxeb2 + Golden Axe (bootleg) + + + goldnaxej + Golden Axe (set 4, Japan) (FD1094 317-0121) + + + goldnaxejd + Golden Axe (set 4, Japan) (bootleg of FD1094 317-0121 set) + + + goldnaxeng + Golden Axe Neo Geo (HB) + + + goldnaxeu + Golden Axe (set 5, US) (FD1094 317-0122) + + + goldnaxeud + Golden Axe (set 5, US) (bootleg of FD1094 317-0122 set) + + + goldnaxj + Golden Axe (Version 1, Japan) + + + goldnjkr + Golden Joker (Ver 16.06UNG-25, set 1) + + + goldnjkra + Golden Joker (Ver 16.06UNG-25, set 2) + + + goldnpkb + Golden Poker Double Up (Mini Boy) + + + goldnpkc + Golden Poker Double Up (bootleg, set 1) + + + goldnpkd + Golden Poker Double Up (bootleg, set 2) + + + goldnpke + Golden Poker Double Up (bootleg, set 3) + + + goldnpkf + Golden Poker Double Up (bootleg, set 4) + + + goldnpkg + Golden Poker Double Up (bootleg, set 5) + + + goldnpkh + Golden Poker Double Up (tearoom*sara hack) + + + goldnpkr + Golden Poker Double Up (Big Boy) + + + goldpya6 + Golden Pyramids (10196511, ASP) + + + goldpym + Golden Pyramids Special Edition - Maximillions (10130811, NSW/ACT) + + + goldpyr + Golden Pyramids (0100878V, ASP) + + + goldpyru + Golden Pyramids (AHG1206-99, US) + + + goldpyrua + Golden Pyramids (AHG1205-03, US) + + + goldsam + Golden Samurai (10247811, NSW/ACT) + + + goldstar + Golden Star + + + goldstbl + Golden Star (Blue version) + + + goldwing + Gold Wings + + + goldwingf + Gold Wings (French) + + + goldwingg + Gold Wings (German) + + + golgo13 + Golgo 13 (Japan, GLG1/VER.A) + + + gollygho + Golly! Ghost! + + + gomoku + Gomoku Narabe Renju + + + gondo + Gondomania (World) + + + gondou + Gondomania (US) + + + gonefsh2 + Gone Fishing 2 + + + good + Good (Korea) + + + goodejan + Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 1) + + + goodejana + Good E Jong -Kachinuki Mahjong Syoukin Oh!!- (set 2) + + + goodluck + Good Luck + + + goonies + Vs. The Goonies (set E) + + + goori + Goori Goori + + + gorf + Gorf + + + gorfirec + Gorf (Spain, Irecsa license) + + + gorfpgm1 + Gorf (program 1) + + + gorfpgm1f + Gorf (program 1, with French language ROM) + + + gorfpgm1g + Gorf (program 1, with German language ROM) + + + gork + Gork + + + gorkans + Gorkans + + + gorodki + Gorodki + + + gostop + Kankoku Hanafuda Go-Stop + + + gostopac + Go & Stop + + + gotcha + Got-cha Mini Game Festival + + + gotya + Got-Ya (12/24/1981) + + + gowcaiet + Voltage Fighter - Gowcaizer / Choujin Gakuen Gowcaizer (Eternal, Hack) + + + gowcaizr + Voltage Fighter - Gowcaizer / Choujin Gakuen Gowcaizer + + + gp2quiz + Gals Panic II - Quiz Version + + + gp2se + Gals Panic II' - Special Edition (Japan) + + + gp98 + Grand Prix '98 (V100K, set 1) + + + gp98a + Grand Prix '98 (V100K, set 2) + + + gpgolf + Golden Par Golf (Joystick, V1.1) + + + gpgolfa + Golden Par Golf (Joystick, V1.0) + + + gpilots + Ghost Pilots (NGM-020 ~ NGH-020) + + + gpilotsh + Ghost Pilots (NGH-020, US) + + + gpilotsp + Ghost Pilots (prototype) + + + gprider + GP Rider (World, FD1094 317-0163) (Twin setup) + + + gpriderj + GP Rider (Japan, FD1094 317-0161) (Twin setup) + + + gpriderjs + GP Rider (Japan, FD1094 317-0161) + + + gpriders + GP Rider (World, FD1094 317-0163) + + + gprideru + GP Rider (US, FD1094 317-0162) (Twin setup) + + + gpriderus + GP Rider (US, FD1094 317-0162) + + + gprix + Grand Prix (CPU 4.50, display A4.00) + + + gprix_301 + Grand Prix (CPU 3.01, display A3.01) + + + gprix_340 + Grand Prix (CPU 3.40, display A3.03) + + + gprix_350 + Grand Prix (CPU 3.50, display A3.03) + + + gprix_352 + Grand Prix (CPU 3.52, display A3.03) + + + gprix_400 + Grand Prix (CPU 4.00, display A4.00) + + + gprixf + Grand Prix (CPU 4.50, display F4.00, France) + + + gprixf_301 + Grand Prix (CPU 3.01, display F3.01, France) + + + gprixf_340 + Grand Prix (CPU 3.40, display F3.03, France) + + + gprixf_350 + Grand Prix (CPU 3.50, display F3.03, France) + + + gprixf_352 + Grand Prix (CPU 3.52, display F3.03, France) + + + gprixf_400 + Grand Prix (CPU 4.00, display F4.00, France) + + + gprixg + Grand Prix (CPU 4.50, display G4.00, Germany) + + + gprixg_301 + Grand Prix (CPU 3.01, display G3.01, Germany) + + + gprixg_340 + Grand Prix (CPU 3.40, display G3.03, Germany) + + + gprixg_350 + Grand Prix (CPU 3.50, display G3.03, Germany) + + + gprixg_352 + Grand Prix (CPU 3.52, display G3.03, Germany) + + + gprixg_400 + Grand Prix (CPU 4.00, display G4.00, Germany) + + + gprixi + Grand Prix (CPU 4.50, display I4.00, Italy) + + + gprixi_301 + Grand Prix (CPU 3.01, display I3.01, Italy) + + + gprixi_340 + Grand Prix (CPU 3.40, display I3.03, Italy) + + + gprixi_350 + Grand Prix (CPU 3.50, display I3.03, Italy) + + + gprixi_352 + Grand Prix (CPU 3.52, display I3.03, Italy) + + + gprixi_400 + Grand Prix (CPU 4.00, display I4.00, Italy) + + + gprixl + Grand Prix (CPU 4.50, display L4.00, Spain) + + + gprixl_301 + Grand Prix (CPU 3.01, display L3.01, Spain) + + + gprixl_340 + Grand Prix (CPU 3.40, display L3.03, Spain) + + + gprixl_350 + Grand Prix (CPU 3.50, display L3.03, Spain) + + + gprixl_352 + Grand Prix (CPU 3.52, display L3.03, Spain) + + + gprixl_400 + Grand Prix (CPU 4.00, display L4.00, Spain) + + + gpworld + GP World + + + gradius + Gradius (Japan, ROM version) + + + gradius2 + Gradius II: GOFER no Yabou (Japan, new) + + + gradius2a + Gradius II: GOFER no Yabou (Japan, old) + + + gradius2b + Gradius II: GOFER no Yabou (Japan, older) + + + gradius3 + Gradius III (World, version R) + + + gradius3a + Gradius III (Asia) + + + gradius3j + Gradius III: Densetsu kara Shinwa e (Japan, version 3, newer) + + + gradius3ja + Gradius III: Densetsu kara Shinwa e (Japan, version S) + + + gradius3jas + Gradius III: Densetsu kara Shinwa e (Japan, version S, split) + + + gradius4 + Gradius IV: Fukkatsu (ver JAC) + + + gradius4a + Gradius IV (ver AAC) + + + gradius4aa + Gradius IV (ver AAA) + + + gradius4ja + Gradius IV: Fukkatsu (ver JAA) + + + gradius4u + Gradius IV (ver UAC) + + + gradius4ua + Gradius IV (ver UAA) + + + gradiusb + Gradius (Bubble System) + + + grainbow + SD Gundam Sangokushi Rainbow Tairiku Senki (Japan) + + + grainbowk + SD Gundam Sangokushi Rainbow Tairiku Senki (Korea) + + + grally + Gran Rally (Spanish bootleg of Pole Position II) + + + gram2000 + Giant Gram 2000 + + + grancan + Grand Canyon (Ukraine, V. 43.09) + + + grancana + Grand Canyon (Ukraine, V. 43.05) + + + grancanb + Grand Canyon (Ukraine, V. 42.13) + + + grancanc + Grand Canyon (Ukraine, V. 42.06) + + + grancapi + Gran Capitan (Version 3) + + + grand8 + Le Grand 8 + + + grand_l1 + Grand Lizard (L-1) + + + grand_l3 + Grand Lizard (L-3) + + + grand_l4 + Grand Lizard (L-4) + + + grandprx + Grand Prix + + + granfrat + Grande Fratello (Ver. 1.7) + + + granny + Granny and the Gators + + + granslam + Grand Slam + + + granslam4 + Grand Slam (4 Players) + + + grasspin + Grasspin + + + gratia + Gratia - Second Earth (ver 1.0, 92047-01 version) + + + gratiaa + Gratia - Second Earth (ver 1.0, 91022-10 version) + + + gratispk + Gratis Poker (V.204, set 1) + + + gratispka + Gratis Poker (V.204, set 2) + + + gravitar + Gravitar (version 3) + + + gravitar1 + Gravitar (version 1) + + + gravitar2 + Gravitar (version 2) + + + gravitr2 + Gravitar (version 2) + + + gravp + Gravitar (prototype) + + + grchamp + Grand Champion (set 1) + + + grchampa + Grand Champion (set 2) + + + grchampb + Grand Champion (set 3) + + + grdforce + Guardian Force (JUET 980318 V0.105) + + + grdian + Guardian (US) + + + grdiands + Guardians / Denjin Makai II (Pro, Hack) + + + grdianke + Guardians / Denjin Makai II (Reverie, Hack) + + + grdianls + Guardians / Denjin Makai II (LBS Super, Hack) + + + grdians + Guardians / Denjin Makai II (P-FG01-1 PCB) + + + grdiansa + Guardians / Denjin Makai II (P0-113A PCB) + + + grdiansbl + Guardians / Denjin Makai II (bootleg) + + + grdiansl + Guardians / Denjin Makai II (LBS, Hack) + + + grdiansp + Guardians / Denjin Makai II (Plus, Hack) + + + grdiansy + Guardians / Denjin Makai II (Evil, Hack) + + + grdius2a + Gradius II - GOFER no Yabou (Japan Old Ver.) + + + grdius2b + Gradius II - GOFER no Yabou (Japan Older Ver.) + + + grdius3a + Gradius III (Asia) + + + grdius3e + Gradius III (World [Q]) + + + grdnstrm + Guardian Storm (horizontal, not encrypted) + + + grdnstrmau + Guardian Storm (horizontal, Australia) + + + grdnstrmg + Guardian Storm (Germany) + + + grdnstrmj + Sen Jing - Guardian Storm (Japan) + + + grdnstrmk + Jeon Sin - Guardian Storm (Korea) + + + grdnstrmv + Guardian Storm (vertical) + + + greatgun + Great Guns + + + greatgur + Great Gurianos (bootleg?) + + + greenber + Green Beret (Irem) + + + gregular + Golden Regular (version 388/2000) + + + grescue + Galaxy Rescue + + + grgar_l1 + Gorgar (L-1) + + + grgar_t1 + Gorgar (T-1) + + + gridiron + Gridiron Fight + + + gridlee + Gridlee + + + griffon + Griffon (Videotron bootleg of Phoenix) + + + griffono + Griffon (Olympia bootleg of Phoenix) + + + grindsta + Grind Stormer (older set) + + + grindstm + Grind Stormer + + + grindstma + Grind Stormer (older set) + + + grizzly + Grizzly (10214711, NSW/ACT) + + + grmatch + Grudge Match (Yankee Game Technology) + + + grndprix + Grand Prix (Treasure Bonus bootleg) + + + grndtour + Grand Tour (V100U) + + + grnlizrd + Green Lizard (4VXFC811, NSW) + + + grobda + Grobda (New Ver.) + + + grobda2 + Grobda (Old Ver. set 1) + + + grobda3 + Grobda (Old Ver. set 2) + + + groovef + Groove on Fight - Gouketsuji Ichizoku 3 (J 970416 V1.001) + + + groundfx + Ground Effects / Super Ground Effects (Japan) + + + growl + Growl (World, Rev 1) + + + growla + Growl (World) + + + growlp + Growl (World, prototype) + + + growlu + Growl (US) + + + grtwall + The Great Wall + + + grudge + Grudge Match (v00.90, prototype) + + + grudgei + Grudge Match (v00.90, Italy, location test?) + + + grudgep + Grudge Match (v00.80, prototype) + + + gryzor + Gryzor (set 1) + + + gryzor1 + Gryzor (set 2) + + + gryzorm + Gryzor (Modular System) + + + gs4002 + Selection (Version 40.02TMB, set 1) + + + gs4002a + Selection (Version 40.02TMB, set 2) + + + gs471 + unknown medal game GS471 + + + gs_la3 + The Bally Game Show (LA-3) + + + gs_lg6 + The Bally Game Show (LG-6) Germany + + + gs_lu3 + The Bally Game Show (LU-3) Europe + + + gs_lu4 + The Bally Game Show (LU-4) Europe + + + gseeker + Grid Seeker: Project Storm Hammer (Ver 1.3O) + + + gseekerj + Grid Seeker: Project Storm Hammer (Ver 1.3J) + + + gseekeru + Grid Seeker: Project Storm Hammer (Ver 1.3A) + + + gslgr94j + Great Sluggers '94 (Japan) + + + gslgr94u + Great Sluggers '94 + + + gslugrsj + Great Sluggers (Japan) + + + gsspade + Spade + + + gstream + G-Stream G2020 + + + gstrik2 + Grand Striker 2 (Europe and Oceania) + + + gstrik2j + Grand Striker 2 (Japan) + + + gstriker + Grand Striker (Europe, Oceania) + + + gstrikera + Grand Striker (Americas) + + + gstrikerj + Grand Striker (Japan) + + + gsword + Great Swordsman (World?) + + + gsword2 + Great Swordsman (Japan?) + + + gt103a1 + Trivia (Unsorted question ROMs) + + + gt103aa + Trivia (Version 1.03a, alt questions 1) + + + gt103ab + Trivia (Version 1.03a, alt questions 2) + + + gt103asx + Trivia (Version 1.03a, sex questions) + + + gt103asxa + Trivia (Version 1.03a, sex questions, alt revision questions) + + + gt2k + Golden Tee 2K (v1.00) + + + gt2kp100 + Golden Tee 2K (v1.00) (alt protection) + + + gt2ks100 + Golden Tee 2K (v1.00S) + + + gt2kt500 + Golden Tee 2K Tournament (v5.00) + + + gt3d + Golden Tee 3D Golf (v1.93N) + + + gt3dl19 + Golden Tee 3D Golf (v1.9L) + + + gt3dl191 + Golden Tee 3D Golf (v1.91L) + + + gt3dl192 + Golden Tee 3D Golf (v1.92L) + + + gt3ds192 + Golden Tee 3D Golf (v1.92S) + + + gt3dt211 + Golden Tee 3D Golf Tournament (v2.11) + + + gt3dt231 + Golden Tee 3D Golf Tournament (v2.31) + + + gt3dv14 + Golden Tee 3D Golf (v1.4) + + + gt3dv15 + Golden Tee 3D Golf (v1.5) + + + gt3dv16 + Golden Tee 3D Golf (v1.6) + + + gt3dv17 + Golden Tee 3D Golf (v1.7) + + + gt3dv18 + Golden Tee 3D Golf (v1.8) + + + gt507uk + Trivia (UK Version 5.07) + + + gt97 + Golden Tee '97 (v1.30) + + + gt97s121 + Golden Tee '97 (v1.21S) + + + gt97t240 + Golden Tee '97 Tournament (v2.40) + + + gt97t243 + Golden Tee '97 Tournament (v2.43) + + + gt97v120 + Golden Tee '97 (v1.20) + + + gt97v121 + Golden Tee '97 (v1.21) + + + gt97v122 + Golden Tee '97 (v1.22) + + + gt98 + Golden Tee '98 (v1.10) + + + gt98c100 + Golden Tee '98 (v1.00C) + + + gt98s100 + Golden Tee '98 (v1.00S) + + + gt98t302 + Golden Tee '98 Tournament (v3.02) + + + gt98t303 + Golden Tee '98 Tournament (v3.03) + + + gt98v100 + Golden Tee '98 (v1.00) + + + gt99 + Golden Tee '99 (v1.00) + + + gt99s100 + Golden Tee '99 (v1.00S) + + + gt99t400 + Golden Tee '99 Tournament (v4.00) + + + gtclassc + Golden Tee Classic (v1.00) + + + gtclasscp + Golden Tee Classic (v1.00) (alt protection) + + + gtclasscs + Golden Tee Classic (v1.00S) + + + gtdiamond + Golden Tee Diamond Edition Tournament (v3.05T ELC) + + + gteikob2 + Gingateikoku No Gyakushu (bootleg set 2) + + + gteikokb + Gingateikoku No Gyakushu (bootleg set 1) + + + gteikoku + Gingateikoku no Gyakushu + + + gteikokub + Gingateikoku no Gyakushu (bootleg set 1) + + + gteikokub2 + Gingateikoku no Gyakushu (bootleg set 2) + + + gteikokub3 + Gingateikoku no Gyakushu (bootleg set 3) + + + gtfore01 + Golden Tee Fore! (v1.00.25) + + + gtfore02 + Golden Tee Fore! 2002 (v2.01.06) + + + gtfore03 + Golden Tee Fore! 2003 (v3.00.10) + + + gtfore03a + Golden Tee Fore! 2003 (v3.00.09) + + + gtfore04 + Golden Tee Fore! 2004 Extra (v4.00.08) + + + gtfore04a + Golden Tee Fore! 2004 (v4.00.00) + + + gtfore05 + Golden Tee Fore! 2005 Extra (v5.01.06) + + + gtfore05a + Golden Tee Fore! 2005 Extra (v5.01.02) + + + gtfore05b + Golden Tee Fore! 2005 Extra (v5.01.00) + + + gtfore05c + Golden Tee Fore! 2005 Extra (v5.00.00) + + + gtfore06 + Golden Tee Fore! 2006 Complete (v6.00.01) + + + gtfrk10m + Guitar Freaks 10th Mix (G*D10 VER. JAB) + + + gtfrk10ma + Guitar Freaks 10th Mix (G*D10 VER. JAA) + + + gtfrk11m + Guitar Freaks 11th Mix (G*D39 VER. JAA) + + + gtfrk3ma + Guitar Freaks 3rd Mix (GE949 VER. JAB) + + + gtfrk3mb + Guitar Freaks 3rd Mix - security cassette versionup (949JAZ02) + + + gtg + Golden Tee Golf (Joystick, v3.3) + + + gtg2 + Golden Tee Golf II (Trackball, V2.2) + + + gtg2j + Golden Tee Golf II (Joystick, V1.0) + + + gtg2t + Golden Tee Golf II (Trackball, V1.1) + + + gtgj31 + Golden Tee Golf (Joystick, v3.1) + + + gtgt10 + Golden Tee Golf (Trackball, v1.0) + + + gtgt20 + Golden Tee Golf (Trackball, v2.0) + + + gtgt21 + Golden Tee Golf (Trackball, v2.1) + + + gticlub + GTI Club: Rally Cote D'Azur (ver EAA) + + + gticlub2 + GTI Club: Corso Italiano (ver JAB) + + + gticlub2ea + Driving Party: Racing in Italy (ver EAA) + + + gticluba + GTI Club: Rally Cote D'Azur (ver AAA) + + + gticlubj + GTI Club: Rally Cote D'Azur (ver JAA) + + + gticlubu + GTI Club: Rally Cote D'Azur (ver UAA) + + + gtipoker + GTI Poker + + + gtipokra + GTI Poker? (SMS hardware) + + + gtmr + 1000 Miglia: Great 1000 Miles Rally (Taiwan 94/07/18) + + + gtmr2 + Mille Miglia 2: Great 1000 Miles Rally (95/05/24) + + + gtmr2a + Mille Miglia 2: Great 1000 Miles Rally (95/04/04) + + + gtmr2u + Great 1000 Miles Rally 2 USA (95/07/11) + + + gtmr2ua + Great 1000 Miles Rally 2 USA (95/05/18) + + + gtmra + 1000 Miglia: Great 1000 Miles Rally (94/06/13) + + + gtmrb + 1000 Miglia: Great 1000 Miles Rally (94/05/26) + + + gtmre + Great 1000 Miles Rally: Evolution Model!!! (94/09/06) + + + gtmro + 1000 Miglia: Great 1000 Miles Rally (94/05/10) + + + gtmrusa + Great 1000 Miles Rally: U.S.A Version! (94/09/06) + + + gtrak10 + Gran Trak 10/Trak 10/Formula K + + + gtrak10a + Gran Trak 10/Trak 10/Formula K (older) + + + gtrak20 + Gran Trak 20/Trak 20/Twin Racer + + + gtrfrk2m + Guitar Freaks 2nd Mix Ver 1.01 (GQ883 VER. JAD) + + + gtrfrk2ma + Guitar Freaks 2nd Mix (GQ883 VER. EAA) + + + gtrfrk2maa + Guitar Freaks 2nd Mix (GQ883 VER. AAA) + + + gtrfrk2mja + Guitar Freaks 2nd Mix (GQ883 VER. JAA) + + + gtrfrk2mka + Guitar Freaks 2nd Mix (GQ883 VER. KAA) + + + gtrfrk2ml1 + Guitar Freaks 2nd Mix Link Kit 1 (GE929 VER. JAA) + + + gtrfrk2ml2 + Guitar Freaks 2nd Mix Link Kit 2 (GC929 VER. JBB) + + + gtrfrk2mua + Guitar Freaks 2nd Mix (GQ883 VER. UAA) + + + gtrfrk3m + Guitar Freaks 3rd Mix (GE949 VER. JAC) + + + gtrfrk4m + Guitar Freaks 4th Mix (G*A24 VER. JAA) + + + gtrfrk5m + Guitar Freaks 5th Mix (G*A26 VER. JAA) + + + gtrfrk5ma + Guitar Freaks 5th Mix (G*A26 VER. AAA) + + + gtrfrk6m + Guitar Freaks 6th Mix (G*B06 VER. JAA) + + + gtrfrk7m + Guitar Freaks 7th Mix (G*B17 VER. JAA) + + + gtrfrk8m + Guitar Freaks 8th Mix power-up ver. (G*C08 VER. JBA) + + + gtrfrk8ma + Guitar Freaks 8th Mix (G*C08 VER. JAA) + + + gtrfrk9m + Guitar Freaks 9th Mix (G*C39 VER. JAA) + + + gtrfrks + Guitar Freaks Ver 1.01 (GQ886 VER. EAD) + + + gtrfrksa + Guitar Freaks Ver 1.01 (GQ886 VER. AAD) + + + gtrfrksaa + Guitar Freaks (GQ886 VER. AAA) + + + gtrfrksac + Guitar Freaks (GQ886 VER. AAC) + + + gtrfrksc + Guitar Freaks (GQ886 VER. EAC) + + + gtrfrksea + Guitar Freaks (GQ886 VER. EAA) + + + gtrfrksj + Guitar Freaks Ver 1.01 (GQ886 VER. JAD) + + + gtrfrksja + Guitar Freaks (GQ886 VER. JAA) + + + gtrfrksjc + Guitar Freaks (GQ886 VER. JAC) + + + gtrfrksu + Guitar Freaks Ver 1.01 (GQ886 VER. UAD) + + + gtrfrksua + Guitar Freaks (GQ886 VER. UAA) + + + gtrfrksuc + Guitar Freaks (GQ886 VER. UAC) + + + gtrfrkv2a + Guitar Freaks V2 (F03:A:A:A:2006011201) + + + gtrfrkv2aa + Guitar Freaks V2 (F03:A:A:A:2005112800) + + + gtrfrkv2ab + Guitar Freaks V2 (F03:A:A:A:2005101600) + + + gtrfrkv2j + Guitar Freaks V2 (F03:J:A:A:2006011201) + + + gtrfrkv2ja + Guitar Freaks V2 (F03:J:A:A:2005112800) + + + gtrfrkv2jb + Guitar Freaks V2 (F03:J:A:A:2005101600) + + + gtrfrkv3a + Guitar Freaks V3 (F33:A:A:A:2006101800) + + + gtrfrkv3aa + Guitar Freaks V3 (F33:A:A:A:2006072600) + + + gtrfrkv3j + Guitar Freaks V3 (F33:J:A:A:2006101800) + + + gtrfrkv3ja + Guitar Freaks V3 (F33:J:A:A:2006072600) + + + gtrfrkva + Guitar Freaks V (E03:A:A:A:2005050200) + + + gtrfrkvj + Guitar Freaks V (E03:J:A:A:2005050200) + + + gtroppo + Gone Troppo (1VXEC542, New Zealand) + + + gtroyal + Golden Tee Royal Edition Tournament (v4.02T EDM) + + + gtsers1 + Trivia (Questions Series 1) + + + gtsers10 + Trivia (Questions Series 10) + + + gtsers11 + Trivia (Questions Series 11) + + + gtsers11a + Trivia (Questions Series 11, alt question ROM, set 1) + + + gtsers11b + Trivia (Questions Series 11, alt question ROM, set 2) + + + gtsers12 + Trivia (Questions Series 12) + + + gtsers12a + Trivia (Questions Series 12, alt question ROM) + + + gtsers14 + Trivia (Questions Series 14) + + + gtsers14a + Trivia (Questions Series 14, alt question ROM) + + + gtsers15 + Trivia (Questions Series 15) + + + gtsers18 + Trivia (Questions Series 18) + + + gtsers2 + Trivia (Questions Series 2) + + + gtsers3 + Trivia (Questions Series 3) + + + gtsers4 + Trivia (Questions Series 4) + + + gtsers5 + Trivia (Questions Series 5) + + + gtsers7 + Trivia (Questions Series 7) + + + gtsers7a + Trivia (Questions Series 7, alt question ROM) + + + gtsers8 + Trivia (Questions Series 8) + + + gtsers8a + Trivia (Questions Series 8, alt question ROM) + + + gtsers9 + Trivia (Questions Series 9) + + + gtsersa + Trivia (Alt revision questions set 1) + + + gtsersb + Trivia (Alt revision questions set 2) + + + gtsupreme + Golden Tee Supreme Edition Tournament (v5.10T ELC S) + + + guab + Give us a Break + + + guardian + Guardians of the 'Hood + + + guiness + The Guiness (Japan) + + + guitarheroac + Guitar Hero Arcade (v1.0.5) + + + gulfstr2 + Gulf Storm (Media Shoji) + + + gulfstrm + Gulf Storm (set 1) + + + gulfstrma + Gulf Storm (set 2) + + + gulfstrmb + Gulf Storm (set 3) + + + gulfstrmk + Gulf Storm (Korea) + + + gulfstrmm + Gulf Storm (Japan, Media Shoji license) + + + gulfwar2 + Gulf War II (set 1) + + + gulfwar2a + Gulf War II (set 2) + + + gulunpa + Gulun.Pa! (Japan 931220 L) (prototype) + + + gumbo + Gumbo + + + gumrally + Gumball Rally + + + gunbalina + Gunbalina (Japan, GNN1 Ver.A) + + + gunball + Gun Ball (Japan) + + + gunbarl + Gunbarl (Japan, GNB4/VER.A) + + + gunbarla + Gunbarl (Japan, GNB1/VER.A) + + + gunbird + Gunbird (World) + + + gunbird2 + Gunbird 2 (set 1) + + + gunbird2a + Gunbird 2 (set 2) + + + gunbirdj + Gunbird (Japan) + + + gunbirdk + Gunbird (Korea) + + + gunblade + Gunblade NY (Revision A) + + + gunbulet + Gun Bullet (Japan) + + + gunbuletj + Gun Bullet (Japan, GN1) + + + gunbuletw + Gun Bullet (World, GN3 Rev B) + + + gunbustr + Gunbuster (World) + + + gunbustrj + Gunbuster (Japan) + + + gunbustru + Gunbuster (US) + + + gunchamp + Gun Champ + + + gunchamps + Gun Champ (newer, Super Shot hardware) + + + gundamex + Mobile Suit Gundam EX Revue + + + gundamos + Gundam Battle Operating Simulator (GDX-0013) + + + gundcb79 + Mobile Suit Gundam 0079 Card Builder (CDV-10010) + + + gundcb79a + Mobile Suit Gundam 0079 Card Builder Ver.2.02 (CDV-10024B) + + + gundcb83 + Mobile Suit Gundam 0083 Card Builder (CDV-10030) + + + gundcb83a + Mobile Suit Gundam 0083 Card Builder Check Disk (CDV-10031) + + + gundcb83b + Mobile Suit Gundam 0083 Card Builder Ver.2.10 (CDV-10037B) + + + gundeala + Gun Dealer (set 2) + + + gundealr + Gun Dealer + + + gundealra + Gun Dealer (alt card set) + + + gundealrbl + Gun Dealer (Yam! Yam!? hardware, set 1) + + + gundealrbl2 + Gun Dealer (Yam! Yam!? hardware, set 2) + + + gundealrt + Gun Dealer (Japan) + + + gundealt + Gun Dealer (Tecmo) + + + gundhara + Gundhara + + + gundharac + Gundhara (Chinese, bootleg?) + + + gundl94 + Gun Dealer '94 + + + gundmct + Mobile Suit Gundam: Federation Vs. Zeon + + + gundmgd + Mobile Suit Gundam: Federation Vs. Zeon (GDL-0001) + + + gundmxgd + Mobile Suit Gundam: Federation Vs. Zeon DX (USA, Japan) (GDL-0006) + + + gundzaft + Gundam Seed: Federation vs. Z.A.F.T. (SED1 Ver. A) + + + gunfight + Gun Fight (set 1) + + + gunfighto + Gun Fight (set 2) + + + gunforc2 + Gun Force II (US) + + + gunforce + Gunforce - Battle Fire Engulfed Terror Island (World) + + + gunforcej + Gunforce - Battle Fire Engulfed Terror Island (Japan) + + + gunforceu + Gunforce - Battle Fire Engulfed Terror Island (US) + + + gunforcj + Gunforce - Battle Fire Engulfed Terror Island (Japan) + + + gunforcu + Gunforce - Battle Fire Engulfed Terror Island (US) + + + gunfronj + Gun Frontier (Japan) + + + gunfront + Gun & Frontier (World) + + + gunfrontj + Gun Frontier (Japan) + + + gunhard + Gun Hard (Japan) + + + gunhohki + Mahou Keibitai Gun Hohki (Japan) + + + gunkids + Hayauchi Gun Kids + + + gunlock + Gunlock (Ver 2.3O 1994/01/20) + + + gunlocko + Gunlock (Ver 2.0O 1993/12/15) + + + gunman + Gunman + + + gunmania + GunMania (GL906 VER. JAA) + + + gunmast + Gun Master + + + gunnail + GunNail (28th May. 1992) + + + gunnailb + GunNail (bootleg) + + + gunnailp + GunNail (location test) + + + gunnrose + Guns and Roses (C606191SMP, NSW) + + + gunpey + Gunpey (Japan) + + + gunshot + Gun Shot + + + gunsmoka + Gun.Smoke (US set 2) + + + gunsmoke + Gun.Smoke (World, 1985-11-15) + + + gunsmokeb + Gun.Smoke (World, 1985-11-15) (bootleg) + + + gunsmokeg + Gun.Smoke (Germany, 1985-11-15, censored) + + + gunsmokej + Gun.Smoke (Japan, 1985-11-15) + + + gunsmokeu + Gun.Smoke (USA and Canada, 1986-04-08) + + + gunsmokeua + Gun.Smoke (USA and Canada, 1986-01-20) + + + gunsmokeub + Gun.Smoke (USA and Canada, 1985-11-15, set 1) + + + gunsmokeuc + Gun.Smoke (USA and Canada, 1985-11-15, set 2) + + + gunsmokj + Gun.Smoke (Japan) + + + gunsmoku + Gun.Smoke (US set 1) + + + gunsur2 + Gun Survivor 2 Biohazard Code: Veronica (World, BHF2 Ver.E) + + + gunsur2j + Gun Survivor 2 Biohazard Code: Veronica (Japan, BHF1 Ver.E) + + + gunwars + Gunmen Wars (Japan, GM1 Ver. B) + + + gunwarsa + Gunmen Wars (Japan, GM1 Ver. A) + + + gururin + Gururin + + + gussun + Gussun Oyoyo (Japan) + + + gutangtn + Guttang Gottong + + + gutangtns + Guttang Gottong (Sega license) + + + guts + Guts n' Glory (prototype) + + + gutsn + Guts'n (Japan) + + + guttangt + Guttang Gottong (bootleg on Galaxian hardware) + + + guttangts3 + Guttang Gottong (Sede 3 bootleg on Galaxian hardware) + + + guwange + Guwange (Japan, 1999 6/24 Master Ver 16:55) + + + guwanges + Guwange (Japan, 2000 7/ 7 Special Ver 13:22) + + + guzzler + Guzzler + + + guzzlers + Guzzler (Swimmer conversion) + + + gvrxpsup + Global VR XP OS Update/Install - 06/11/02 + + + gvrxpsys + Global VR XP OS Install - 09/30/01 + + + gw_l1 + The Getaway: High Speed II (L-1) + + + gw_l2 + The Getaway: High Speed II (L-2) + + + gw_l3 + The Getaway: High Speed II (L-3) + + + gw_l5 + The Getaway: High Speed II (L-5) + + + gw_p7 + The Getaway: High Speed II (P-7) + + + gw_pb + The Getaway: High Speed II (P-B) + + + gw_pc + The Getaway: High Speed II (P-C) + + + gwar + Guerrilla War (US) + + + gwara + Guerrilla War (Version 1, set 1) + + + gwarab + Guerrilla War (Version 1, set 2) + + + gwarb + Guerrilla War (Joystick hack bootleg) + + + gwarfare + Global Warfare + + + gwarj + Guevara (Japan) + + + gwarrior + Galactic Warriors + + + gwasu + Gwasuwon (Korea) + + + gwing2 + Giga Wing 2 + + + gwinggen + Giga Wing Generations (v2.02J) + + + gwinner + Golden Winner + + + gwnn + The Game With No Name! (0452501, US) + + + gyakyu + Ginga Yakyu + + + gynotai + Gynotai (Japan) + + + gypmagic + Gypsy Magic (Konami Endeavour, Russia) + + + gypsyjug + Gypsy Juggler + + + gyrodine + Gyrodine + + + gyrodinet + Gyrodine (Taito Corporation license) + + + gyruss + Gyruss + + + gyrussb + Gyruss (bootleg?) + + + gyrussce + Gyruss (Centuri) + + + hachamf + Hacha Mecha Fighter (19th Sep. 1991, protected, set 1) + + + hachamfa + Hacha Mecha Fighter (19th Sep. 1991, protected, set 2) + + + hachamfb + Hacha Mecha Fighter (19th Sep. 1991, unprotected, bootleg Thunder Dragon conversion) + + + hachamfp + Hacha Mecha Fighter (Location Test Prototype, 19th Sep. 1991) + + + hacher + Hacher (hack of Win Win Bingo EN.01.6) + + + hachoo + Hachoo! (World, set 1) + + + hachooa + Hachoo! (World, set 2) + + + hachooj + Hachoo! (Japan) + + + haekaka + Hae Hae Ka Ka Ka + + + hal21 + HAL21 + + + hal21j + HAL21 (Japan) + + + halfway + Halfway To Hell: Progear Red Label (2016-1-17 Red label ver) + + + halley + Halley Comet (set 1) + + + halleya + Halley Comet (set 2) + + + halleyb + Halley Comet (set 3) + + + halleycj + Halley's Comet (Japan set 2) + + + halleys + Halley's Comet (US) + + + halleysc + Halley's Comet (US) + + + halleysc87 + Halley's Comet '87 + + + halleyscj + Halley's Comet (Japan, rev 1) + + + halleyscja + Halley's Comet (Japan) + + + halleyscjp + Halley's Comet (Japan, prototype) + + + halltsk + Halloween (Ming-Yang Electronic / TSK, version 1.0) + + + hamaway + Hammer Away (Japan, prototype) + + + hamboy + Hammer Boy + + + hamhouse + Hamburger House + + + hamhouse9 + Hamburger House 9 + + + hammer + Hammer + + + hammerch + Hammer Champ (Japan) + + + hana6pt2 + Hana Awase 6 Part II + + + hanaawas + Hana Awase + + + hanadojo + Hana Doujou (set 1) + + + hanadojoa + Hana Doujou (set 2) + + + hanagumi + Sakura Taisen - Hanagumi Taisen Columns (J 971007 V1.010) + + + hanakanz + Hana Kanzashi (Japan) + + + hanamai + Hana no Mai (Japan) + + + hanamomb + Mahjong Hana no Momoko gumi (Japan 881125) + + + hanamomo + Mahjong Hana no Momoko gumi (Japan 881201) + + + hanaoji + Hana to Ojisan (ver 1.01, 1991/12/09) + + + hanaojia + Hana to Ojisan (ver 1.00, 1991/08/23) + + + hanaren2 + Hana no Ren-Chan II (Japan) + + + hanaroku + Hanaroku + + + hanayara + Hana wo Yaraneba! (Japan) + + + hangly + Hangly-Man (set 1) + + + hangly2 + Hangly-Man (set 2) + + + hangly3 + Hangly-Man (set 3) + + + hangman + Hangman + + + hangon + Hang-On (Rev A) + + + hangon1 + Hang-On + + + hangon2 + Hang-On (Rev A, ride-on) + + + hangonjr + Hang-On Jr. (Rev. B) + + + hangonp + Hang-On (Sonic) + + + hangonvf + VF (bootleg of Hang-On) + + + hangplt + Hang Pilot (ver JAB) + + + hangpltu + Hang Pilot (ver UAA) + + + hangzo + Hangzo (Japan, prototype) + + + hapfarm + Happy Farm (Ver. US.01.02.B) + + + haphippy + Happy Happy Hippy (Atronic) + + + haplucky + Happy Lucky! + + + happy6 + Huanle Liuhe Yi (Happy 6-in-1) (M68K ver. V101, ARM ver. V102CN) + + + happy6100cn + Huanle Liuhe Yi (Happy 6-in-1) (M68K ver. V100, ARM ver. V100CN) + + + happy6100hk + Huanle Liuhe Yi (Happy 6-in-1) (M68K ver. V100HK, ARM ver. V100HK) + + + happy6101 + Huanle Liuhe Yi (Happy 6-in-1) (M68K ver. V100, ARM ver. V101CN) + + + happyskl + Happy Skill (Italy, V611IT) + + + hapyfsh2 + Happy Fish (V2 PCB, 302-in-1) + + + hapytour + Happy Tour + + + harashi + Hana Arashi (Japan) + + + hardbody + Hardbody (rev. D) + + + hardbodyc + Hardbody (rev. C) + + + hardbodyg + Hardbody (German rev. B) + + + harddrb5 + Hard Drivin' (cockpit, British, rev 5) + + + harddrb6 + Hard Drivin' (cockpit, British, rev 6) + + + harddrc1 + Hard Drivin' (compact, rev 1) + + + harddrcb + Hard Drivin' (compact, British, rev 2) + + + harddrcg + Hard Drivin' (compact, German, rev 2) + + + harddrg4 + Hard Drivin' (cockpit, German, rev 4) + + + harddriv + Hard Drivin' (cockpit, rev 7) + + + harddriv1 + Hard Drivin' (cockpit, rev 1) + + + harddriv2 + Hard Drivin' (cockpit, rev 2) + + + harddriv3 + Hard Drivin' (cockpit, rev 3) + + + harddrivb + Hard Drivin' (cockpit, British, rev 7) + + + harddrivb5 + Hard Drivin' (cockpit, British, rev 5) + + + harddrivb6 + Hard Drivin' (cockpit, British, rev 6) + + + harddrivc + Hard Drivin' (compact, rev 2) + + + harddrivc1 + Hard Drivin' (compact, rev 1) + + + harddrivcb + Hard Drivin' (compact, British, rev 2) + + + harddrivcbl + Hard Drivin' (compact, rev 2 bootleg) + + + harddrivcg + Hard Drivin' (compact, German, rev 2) + + + harddrivg + Hard Drivin' (cockpit, German, rev 7) + + + harddrivg4 + Hard Drivin' (cockpit, German, rev 4) + + + harddrivj + Hard Drivin' (cockpit, Japan, rev 7) + + + harddrivj6 + Hard Drivin' (cockpit, Japan, rev 6) + + + harddrj6 + Hard Drivin' (cockpit, Japan, rev 6) + + + harddrv1 + Hard Drivin' (cockpit, rev 1) + + + harddrv2 + Hard Drivin' (cockpit, rev 2) + + + harddrv3 + Hard Drivin' (cockpit, rev 3) + + + harddrvb + Hard Drivin' (cockpit, British, rev 7) + + + harddrvc + Hard Drivin' (compact, rev 2) + + + harddrvg + Hard Drivin' (cockpit, German, rev 7) + + + harddrvj + Hard Drivin' (cockpit, Japan, rev 7) + + + harddunj + Hard Dunk (Japan) + + + harddunk + Hard Dunk (World) + + + harddunkj + Hard Dunk (Japan) + + + hardhat + Hard Hat + + + hardhea2 + Hard Head 2 (v2.0, Music Program v2.4) + + + hardhea2a + Hard Head 2 (v2.0, Music Program v2.0) + + + hardhea2b + Hard Head 2 (v2.0, bootleg) + + + hardhead + Hard Head + + + hardheadb + Hard Head (bootleg, set 1) + + + hardheadb2 + Hard Head (bootleg, set 2) + + + hardheadb3 + Hard Head (bootleg, set 3) + + + hardhedb + Hard Head (bootleg) + + + hardyard + Hard Yardage (v1.20) + + + hardyard10 + Hard Yardage (v1.00) + + + hardyard11 + Hard Yardage (v1.10) + + + hardyd10 + Hard Yardage (v1.00) + + + harem + Harem + + + haremchl + Harem Challenge + + + harikiri + Harikiri Junior Baseball (Japan, main ver. 1.0, video ver. 1.3) + + + harl_a10 + Harley Davidson (Sega, CPU 1.03, display A1.00) + + + harl_a13 + Harley Davidson (Sega, CPU 1.03, display A1.04) + + + harl_a18 + Harley Davidson (Stern, CPU 1.08, display A1.05) + + + harl_a30 + Harley Davidson (Stern, CPU 3.00, display A3.00) + + + harl_a40 + Harley Davidson (Stern, CPU 4.00, display A4.00) + + + harl_f13 + Harley Davidson (Sega, CPU 1.03, display F1.04, France) + + + harl_f18 + Harley Davidson (Stern, CPU 1.08, display F1.05, France) + + + harl_f30 + Harley Davidson (Stern, CPU 3.00, display F3.00, France) + + + harl_f40 + Harley Davidson (Stern, CPU 4.00, display F4.00, France) + + + harl_g13 + Harley Davidson (Sega, CPU 1.03, display G1.04, Germany) + + + harl_g18 + Harley Davidson (Stern, CPU 1.08, display G1.05, Germany) + + + harl_g30 + Harley Davidson (Stern, CPU 3.00, display G3.00, Germany) + + + harl_g40 + Harley Davidson (Stern, CPU 4.00, display G4.00, Germany) + + + harl_i13 + Harley Davidson (Sega, CPU 1.03, display I1.04, Italy) + + + harl_i18 + Harley Davidson (Stern, CPU 1.08, display I1.05, Italy) + + + harl_i30 + Harley Davidson (Stern, CPU 3.00, display I3.00, Italy) + + + harl_i40 + Harley Davidson (Stern, CPU 4.00, display I4.00, Italy) + + + harl_l13 + Harley Davidson (Sega, CPU 1.03, display L1.04, Spain) + + + harl_l18 + Harley Davidson (Stern, CPU 1.08, display L1.05, Spain) + + + harl_l30 + Harley Davidson (Stern, CPU 3.00, display L3.00, Spain) + + + harl_l40 + Harley Davidson (Stern, CPU 4.00, display L4.00, Spain) + + + harl_u13 + Harley Davidson (Sega, CPU 1.03, display A1.04, UK) + + + harley + Harley-Davidson and L.A. Riders (Export, Revision B) + + + harleya + Harley-Davidson and L.A. Riders (Export, Revision A) + + + hasamu + Hasamu (Japan) + + + hatena + Adventure Quiz 2 - Hatena? no Daibouken (Japan 900228) + + + hatris + Hatris (US) + + + hatrisj + Hatris (Japan) + + + hatrisp + Hatris (show version) + + + hattrick + Hat Trick (11/12/84) + + + haunthig + Haunted House (IGS, V109US) + + + haunthig101us + Haunted House (IGS, V101US) + + + hawaii + Hawaii (Russia) + + + hawkman + Hawkman (set 1) + + + hawkman1 + Hawkman (set 2) + + + hayaosi1 + Hayaoshi Quiz Ouza Ketteisen: The King Of Quiz + + + hayaosi2 + Hayaoshi Quiz Grand Champion Taikai + + + hayaosi3 + Hayaoshi Quiz Nettou Namahousou (ver 1.5) + + + hayaosi3a + Hayaoshi Quiz Nettou Namahousou (ver 1.2) + + + hb_bar7 + Bar Seven (Fairgames) (set 1) + + + hb_bar7a + Bar Seven (Fairgames) (set 2) + + + hb_bigx + Big X (JPM) (set 1) + + + hb_bigxa + Big X (JPM) (set 2) + + + hb_bigxb + Big X (JPM) (set 3) + + + hb_bigxc + Big X (JPM) (set 4) + + + hb_bigxd + Big X (JPM) (set 5) + + + hb_cashc + Cash Crusade (Qps) (set 1) + + + hb_cashca + Cash Crusade (Qps) (set 2) + + + hb_cashcb + Cash Crusade (Qps) (set 3) + + + hb_cashx + Cash X (Fairgames) (set 1) + + + hb_cashxa + Cash X (Fairgames) (set 2) + + + hb_ccow + Cash Cow (Qps) (set 1) + + + hb_ccowa + Cash Cow (Qps) (set 2) + + + hb_ccowb + Cash Cow (Qps) (set 3) + + + hb_cr + Cash Raker (Qps) (set 1) + + + hb_cra + Cash Raker (Qps) (set 2) + + + hb_crb + Cash Raker (Qps) (set 3) + + + hb_cwf + Cherry Win Falls (Fairgames) (set 1) + + + hb_cwfa + Cherry Win Falls (Fairgames) (set 2) + + + hb_dac + Dough & Arrow Club (Qps, set 1) + + + hb_daca + Dough & Arrow Club (Qps, set 2) + + + hb_dacb + Dough & Arrow Club (Qps, set 3) + + + hb_dacc + Dough & Arrow Club (Qps, set 4) + + + hb_dacd + Dough & Arrow Club (Qps, set 5) + + + hb_dace + Dough & Arrow Club (Qps, set 6) + + + hb_dacf + Dough & Arrow Club (Qps, set 7) + + + hb_dacg + Dough & Arrow Club (Qps, set 8) + + + hb_dacz + Dough & Arrow Club (Qps, set 9) + + + hb_frtcl + Fruitopia Club (Qps) (set 1) + + + hb_frtcla + Fruitopia Club (Qps) (set 2) + + + hb_frtclb + Fruitopia Club (Qps) (set 3) + + + hb_frtclc + Fruitopia Club (Qps) (set 4) + + + hb_frtcld + Fruitopia Club (Qps) (set 5) + + + hb_frtcle + Fruitopia Club (Qps) (set 6) + + + hb_frtclf + Fruitopia Club (Qps) (set 7) + + + hb_frtclg + Fruitopia Club (Qps) (set 8) + + + hb_frtclh + Fruitopia Club (Qps) (set 9) + + + hb_frtcli + Fruitopia Club (Qps) (set 10) + + + hb_frtclj + Fruitopia Club (Qps) (set 11) + + + hb_frtclk + Fruitopia Club (Qps) (set 12) + + + hb_frtcll + Fruitopia Club (Qps) (set 13) + + + hb_frtclm + Fruitopia Club (Qps) (set 14) + + + hb_frtcln + Fruitopia Club (Qps) (set 15) + + + hb_gldpl + Golden Palace (Qps / Mazooma) (set 1) + + + hb_gldpla + Golden Palace (Qps / Mazooma) (set 2) + + + hb_gldwn + Golden Winner (Fairgames) (set 1) + + + hb_gldwna + Golden Winner (Fairgames) (set 2) + + + hb_gpal + Golden Palace (Qps) (set 1) + + + hb_gpala + Golden Palace (Qps) (set 2) + + + hb_gpalb + Golden Palace (Qps) (set 3) + + + hb_gpalc + Golden Palace (Qps) (set 4) + + + hb_gpald + Golden Palace (Qps) (set 5) + + + hb_gpale + Golden Palace (Qps) (set 6) + + + hb_gpalf + Golden Palace (Qps) (set 7) + + + hb_gpalg + Golden Palace (Qps) (set 8) + + + hb_gpalh + Golden Palace (Qps) (set 9) + + + hb_gpali + Golden Palace (Qps) (set 10) + + + hb_hotst + Hot Stuff (JPM?) (set 1) + + + hb_hotsta + Hot Stuff (JPM?) (set 2) + + + hb_hotstb + Hot Stuff (JPM?) (set 3) + + + hb_hotstc + Hot Stuff (JPM?) (set 4) + + + hb_hotstd + Hot Stuff (JPM?) (set 5) + + + hb_hotste + Hot Stuff (JPM?) (set 6) + + + hb_hotstf + Hot Stuff (JPM?) (set 7) + + + hb_hotstg + Hot Stuff (JPM?) (set 8) + + + hb_hotsth + Hot Stuff (JPM?) (set 9) + + + hb_jailb + Jail Break (Qps) (set 1) + + + hb_jailba + Jail Break (Qps) (set 2) + + + hb_jkrwl + Jokers Wild (Fairgames) (set 1) + + + hb_jkrwla + Jokers Wild (Fairgames) (set 2) + + + hb_junglet + Jungle Treasures + + + hb_medal + Medallion Job (Qps) + + + hb_mrmon + Mr. Money (Qps) (set 1) + + + hb_mrmona + Mr. Money (Qps) (set 2) + + + hb_mrmonb + Mr. Money (Qps) (set 3) + + + hb_mrmonc + Mr. Money (Qps) (set 4) + + + hb_rckrl + Rock 'n' Roll (Qps) (set 1) + + + hb_rckrla + Rock 'n' Roll (Qps) (set 2) + + + hb_rckrlb + Rock 'n' Roll (Qps) (set 3) + + + hb_rckrlc + Rock 'n' Roll (Qps) (set 4) + + + hb_rckrld + Rock 'n' Roll (Qps) (set 5) + + + hb_rckrle + Rock 'n' Roll (Qps) (set 6) + + + hb_rckrlf + Rock 'n' Roll (Qps) (set 7) + + + hb_rckrlg + Rock 'n' Roll (Qps) (set 8) + + + hb_rhv + Red Hot Voucher (Qps) (set 1) + + + hb_rhva + Red Hot Voucher (Qps) (set 2) + + + hb_ringb + Ring A Bell (JPM) (set 1) + + + hb_ringba + Ring A Bell (JPM) (set 2) + + + hb_ringbb + Ring A Bell (JPM) (set 3) + + + hb_ringbc + Ring A Bell (JPM) (set 4) + + + hb_ringbd + Ring A Bell (JPM) (set 5) + + + hb_ringbe + Ring A Bell (JPM) (set 6) + + + hb_ydd + Yabba-Dabba-Dough (Qps) (set 1) + + + hb_ydda + Yabba-Dabba-Dough (Qps) (set 2) + + + hbarrel + Heavy Barrel (World) + + + hbarrelu + Heavy Barrel (US, revision 3) + + + hbarrelua + Heavy Barrel (US, revision 1) + + + hbarrelw + Heavy Barrel (World) + + + hcastle + Haunted Castle (version M) + + + hcastlee + Haunted Castle (version E) + + + hcastlej + Akuma-Jou Dracula (Japan version P) + + + hcastlek + Haunted Castle (version K) + + + hcastleo + Haunted Castle (version K) + + + hcastljo + Akuma-Jou Dracula (Japan version N) + + + hclimber + Hill Climber + + + hcrash + Hyper Crash (version D) + + + hcrashc + Hyper Crash (version C) + + + hd_l1 + Harley Davidson (L-1) + + + hd_l2 + Harley Davidson (L-2) + + + hd_l3 + Harley Davidson (L-3) + + + hdrivaip + Hard Drivin's Airborne (prototype, early rev) + + + hdrivair + Hard Drivin's Airborne (prototype) + + + hdrivairp + Hard Drivin's Airborne (prototype, early rev) + + + headon + Head On (2 players) + + + headon1 + Head On (1 player) + + + headon2 + Head On 2 + + + headon2s + Head On 2 (Sidam bootleg) + + + headonb + Head On (bootleg on dedicated hardware) + + + headonch + Monita to Rimoko no Head On Channel (prototype, hack) + + + headoni + Head On (Irem, M-15 Hardware) + + + headonmz + Head On (bootleg, alt maze) + + + headonn + Head On N + + + headons + Head On (Sidam bootleg, set 1) + + + headonsa + Head On (Sidam bootleg, set 2) + + + heartatk + Heart Attack + + + heartgld + Heart of Gold (20169511, NSW/ACT) + + + heartglda + Heart of Gold (10184211, ASP) + + + heartspd + Hearts & Spades + + + heartveg + Heart of Vegas (10232911, NSW/ACT) + + + heatbrl + Heated Barrel (World version 3) + + + heatbrl2 + Heated Barrel (World version 2) + + + heatbrl3 + Heated Barrel (World version ?) + + + heatbrle + Heated Barrel (Electronic Devices license) + + + heatbrlo + Heated Barrel (World old version) + + + heatbrlu + Heated Barrel (US) + + + heatof11 + Heat of Eleven '98 (ver EAA) + + + heavymtl + Heavy Metal + + + heberpop + Hebereke no Popoon (Japan) + + + hedpanic + Head Panic (ver. 0117, 17/01/2000) + + + hedpanic830 + Head Panic (ver. 8.30) + + + hedpanica + Head Panic (ver. 0702, 02/07/1999) + + + hedpanicf + Head Panic (ver. 0315, 15/03/2000) + + + hedpanico + Head Panic (ver. 0615, 15/06/1999) + + + heiankyo + Heiankyo Alien + + + helifira + HeliFire (set 2) + + + helifire + HeliFire (set 1) + + + helifirea + HeliFire (set 2) + + + hellfir1 + Hellfire (1P Ver.) + + + hellfire + Hellfire (2P set) + + + hellfire1 + Hellfire (1P set) + + + hellfire1a + Hellfire (1P set, older) + + + hellfire2a + Hellfire (2P set, older) + + + hellngt + Hell Night (ver EAA) + + + herbiedk + Herbie at the Olympics (DK conversion) + + + hercules + Hercules + + + hermit + The Hermit (Ver. 1.14) + + + hero + Hero + + + herodk + Hero in the Castle of Doom (DK conversion) + + + herodku + Hero in the Castle of Doom (DK conversion, not encrypted) + + + heromem + Heroine's Memory + + + heuksun + Heuk Sun Baek Sa (Korea) + + + hexa + Hexa + + + hexaa + Hexa (with 2xZ80, protected) + + + hexagone + L'Hexagone (France) + + + hexaprs + Hexa President (YM2610 set) + + + hexaprsz + Hexa President (YMZ280B set) + + + hexion + Hexion (Japan ver JAB) + + + hexionb + Hexion (Asia ver AAA, bootleg) + + + hexpool + Hex Pool (Shinkai) + + + hexpoola + Hex Pool (Senko) + + + hg_frd + Fruit Deuce (Hazel Grove) + + + hginga + Hanafuda Hana Ginga (Japan) + + + hgkairak + Taisen Hot Gimmick Kairakuten (Japan) + + + hglbtrtr + Harlem Globetrotters On Tour + + + hgokbang + Hanafuda Hana Gokou Bangaihen (Japan) + + + hgokou + Hanafuda Hana Gokou (Japan, ver. B) + + + hgokoua + Hanafuda Hana Gokou (Japan, ver. A) + + + hh + Haunted House (Rev. 2) + + + hh_1 + Haunted House (Rev. 1) + + + hharry + Hammerin' Harry (World, M81 hardware) + + + hharryb + Hammerin' Harry (World, M84 hardware bootleg) + + + hharryb2 + Hammerin' Harry (Playmark bootleg) + + + hharryu + Hammerin' Harry (US, M84 hardware) + + + hhhippos + Hungry Hungry Hippos (redemption game) + + + hhotel + Haunted Hotel + + + hhunter + Haunted Hunter (Japan, ver 1.00) + + + hidctch2 + Hidden Catch 2 (pcb ver 3.03) (Kor/Eng) (AT89c52 protected) + + + hidctch2a + Hidden Catch 2 (pcb ver 1.00) (Kor/Eng/Jpn/Chi) + + + hidctch3 + Hidden Catch 3 (ver 1.00 / pcb ver 3.05) + + + hideseek + Hide & Seek + + + hidnc2k + Hidden Catch 2000 (AT89c52 protected) + + + hidnctch + Hidden Catch (World) / Tul Lin Gu Lim Chat Ki '98 (Korea) (pcb ver 3.03) + + + hidnctcha + Hidden Catch (World) / Tul Lin Gu Lim Chat Ki '98 (Korea) (pcb ver 3.02) + + + higemaru + Pirate Ship Higemaru + + + highnoon + High Noon (20004111, NSW/ACT) + + + highroll + High Roller + + + highspla + Space Fever High Splitter (set 2) + + + highsplt + SF-HiSplitter (set 1) + + + highsplta + SF-HiSplitter (set 2) + + + highspltb + SF-HiSplitter (alt sound) + + + higurashi + Higurashi no Naku Koro ni Jong (Japan) + + + hiimpact + High Impact Football (rev LA5 02/15/91) + + + hiimpact1 + High Impact Football (rev LA1 12/16/90) + + + hiimpact2 + High Impact Football (rev LA2 12/26/90) + + + hiimpact3 + High Impact Football (rev LA3 12/27/90) + + + hiimpact4 + High Impact Football (rev LA4 02/04/91) + + + hiimpactp + High Impact Football (prototype, revision0 proto 8.6 12/09/90) + + + hikcheck + Hikaru Check ROM Board + + + hilice + Hi Lice (V102FA) + + + himesiki + Himeshikibu (Japan) + + + hipai + Hi Pai Paradise + + + hipai2 + Hi Pai Paradise 2 + + + hipoly + Hipoly (bootleg of Hyper Olympic) + + + hippodrm + Hippodrome (US) + + + hirol_fr + High Roller Casino (CPU 3.00, display F3.00, France) + + + hirol_gr + High Roller Casino (CPU 3.00, display G3.00, Germany) + + + hirol_gr_210 + High Roller Casino (CPU 2.10, display G2.01, Germany) + + + hirol_it + High Roller Casino (CPU 3.00, display I3.00, Italy) + + + hirolcas + High Roller Casino (CPU 3.00, display A3.00) + + + hirolcas_210 + High Roller Casino (CPU 2.10, display A2.00) + + + hirolcat + High Roller Casino (CPU 2.90, display A2.99) + + + hironew + High Roller Casino (CPU 3.00, display A3.00, ARM7 sound board) + + + hiryuken + Hokuha Syourin Hiryu no Ken + + + hishouza + Hishou Zame (Japan) + + + hishouzab + Hishou Zame (Japan, bootleg) + + + histryma + The History of Martial Arts (set 1) + + + histryma2 + The History of Martial Arts (set 2) + + + hitice + Hit the Ice (US) + + + hiticej + Hit the Ice (Japan) + + + hiticerb + Hit the Ice (US, with riser board) + + + hitme + Hit Me (set 1) + + + hitme1 + Hit Me (set 2) + + + hitnmis2 + Hit 'n Miss (version 2.0) + + + hitnmiss + Hit 'n Miss (version 3.0) + + + hitnmiss2 + Hit 'n Miss (version 2.0) + + + hitpar + Hit Parade 108 / 144 / 160 + + + hitpoker + Hit Poker (Bulgaria) + + + hjingi + Hana Jingi (Japan set 1) + + + hjingia + Hana Jingi (Japan set 2) + + + hkagerou + Hana Kagerou (Japan) + + + hldspin1 + Hold & Spin I (Version 2.7T, set 1) + + + hldspin1dt + Hold & Spin I (Version 2.7T, set 2) + + + hldspin1o + Hold & Spin I (Version 2.5T) + + + hldspin1vt + Hold & Spin I (Version 2.7T Dual) + + + hldspin2 + Hold & Spin II (Version 2.8R, set 1) + + + hldspin2d1 + Hold & Spin II (Version 2.8R, set 2) + + + hldspin2o + Hold & Spin II (Version 2.6) + + + hldspin2v1 + Hold & Spin II (Version 2.8R Dual) + + + hlntroy + Helen of Troy (1J008311, NSW/ACT) + + + hlntroya + Helen of Troy (10129121, ASP) + + + hlntroyb + Helen of Troy (10122711, ASP) + + + hlntroyc + Helen of Troy (10116411, ASP) + + + hlntroyu + Helen of Troy (0151336, US) + + + hlywoodh + Hollywood Heat + + + hlywoodhf + Hollywood Heat (French) + + + hlywoodhg + Hollywood Heat (German) + + + hmcompm2 + hiphopmania complete MIX 2 (ver UA-A) + + + hmcompmx + hiphopmania complete MIX (ver UA-B) + + + hmgeo + Heavy Metal: Geomatrix (Rev B) + + + hnageman + AV Hanafuda Hana no Ageman (Japan 900716) + + + hnayayoi + Hana Yayoi (Japan) + + + hncholms + Hunchback Olympic (Scramble hardware) + + + hndlchmp + Handle Champ (GQ710 97/12/18 VER. SAA) + + + hndlchmpj + Handle Champ (GQ710 1997/12/08 VER. JAB) + + + hnfubuki + Hana Fubuki (Japan) + + + hngmnjpm + Hangman (JPM) + + + hngmnjpmd + Hangman (JPM) (Protocol) + + + hnkochou + Hana Kochou (Japan) + + + hnoridur + Hana Oriduru (Japan) + + + hnrose + Hanafuda Night Rose (Japan, TSM008-04) + + + hnxmasev + AV Hanafuda Hana no Christmas Eve (Japan 901204) + + + hoccer + Hoccer (newer) + + + hoccer2 + Hoccer (earlier) + + + hockyrmt + Hockey (Ramtek) + + + hocrash + Crash (bootleg of Head On) + + + hod + House of Diamonds + + + hoedown + Hoe Down + + + hogalley + Vs. Hogan's Alley (set HA4-1 E-1) + + + hogwild + Hog Wild (US) + + + holddraw + Hold & Draw + + + holdrma6 + Hollywood Dreams (10100511, NSW/ACT) + + + holdrma6a + Hollywood Dreams (10122811, ASP) + + + holeland + Hole Land (Japan) + + + holeland2 + Hole Land (Spain) + + + holo + Holosseum (US, Rev A) + + + homerun + Moero!! Pro Yakyuu Homerun Kyousou + + + homo + Homo + + + homura + Homura (v2.04J) + + + honeybee + Honey-Bee (v3.0) + + + honeydol + Honey Doll + + + honeypot + Honey Pot (03J00241, NSW/ACT) + + + honktonk + Honky Tonk (BHG1455, US) + + + honooinv + Honoo no Invader (Japan, main ver. 1.35, video ver. 1.35) + + + hook + Hook (World) + + + hook1v4 + Hook (1v4, Hack) + + + hook6h + Hook (6th Emperor, Hack) + + + hook_400 + Hook (USA 4.01, display A4.00) + + + hook_401 + Hook (USA 4.01, display A4.01) + + + hook_401_p + Hook (USA 4.01 with prototype sound, display A4.01) + + + hook_404 + Hook (USA 4.04, display A4.01) + + + hook_408 + Hook (USA 4.08, display A4.01) + + + hook_e406 + Hook (UK 4.06, display A4.01) + + + hook_f401 + Hook (USA 4.01, display F4.01) + + + hookbo + Hook (Gai Gai, Hack) + + + hookdj + Hook (Item, Hack) + + + hookdszz + Hook (Summit War, Hack) + + + hookdw + Hook (Warriors, Hack) + + + hookgs + Hook (The Expendables, Hack) + + + hookgs2 + Hook (The Expendables II, Hack) + + + hookhd + Hook (Pirate Wars, Hack) + + + hookhd2 + Hook (Pirate Wars II, Hack) + + + hookj + Hook (Japan) + + + hookjy + Hook (Elite, Hack) + + + hookjyds + Hook (Elite Competition, Hack) + + + hooknx + Hook (Hook's Reversal, Hack) + + + hooknx2 + Hook (Hook's Reversal II, Hack) + + + hookpj + Hook (POK KAI, Hack) + + + hookpls + Hook (Plus, Hack) + + + hooksw + Hook (SW, Hack) + + + hooksw2 + Hook (SW2, Hack) + + + hooku + Hook (US) + + + hookx2 + Hook (X2, Hack) + + + hookxr + Hook (Xin Er, Hack) + + + hookxx + Hook (XX, Hack) + + + hoopitup + Hoop it Up World Tour - 3 on 3 (Rev 23) + + + hoopitup21 + Hoop it Up World Tour - 3 on 3 (Rev 21) + + + hoops + Hoops + + + hoops95 + Hoops (Europe/Asia 1.7) + + + hoops96 + Hoops '96 (Europe/Asia 2.0) + + + hoopshot + Hoop Shot (version 05.22) + + + hopmappy + Hopping Mappy + + + hopper + SWP Hopper Board + + + hopprobo + Hopper Robo + + + horekid + Kid no Hore Hore Daisakusen + + + horekidb + Kid no Hore Hore Daisakusen (bootleg set 1) + + + horekidb2 + Kid no Hore Hore Daisakusen (bootleg set 2) + + + horekidb3 + Kid no Hore Hore Daisakusen - Neo Geo Conversion (HB) + + + horizon + Horizon (Irem) + + + horses4c + Horses For Courses (NSW, Australia) + + + horshoes + American Horseshoes (US) + + + hostinv + Host Invaders + + + hotblock + Hot Blocks - Tetrix II (set 1) + + + hotblocka + Hot Blocks - Tetrix II (set 2) + + + hotblockb + Hot Blocks - Tetrix II (set 3) + + + hotbody + Hot Body I + + + hotbody2 + Hot Body II + + + hotbubl + Hot Bubble (Korea, with adult pictures) + + + hotbubla + Hot Bubble (Korea) + + + hotchase + Hot Chase (set 1) + + + hotchasea + Hot Chase (set 2) + + + hotchili + Hot Chilli (95103, v0104) + + + hotd + The House of the Dead (Revision A) + + + hotd2 + The House of the Dead 2 (USA) + + + hotd2e + The House of the Dead 2 (Export) + + + hotd2o + The House of the Dead 2 + + + hotd2p + The House of the Dead 2 (prototype) + + + hotd3 + The House of the Dead III (GDX-0001) + + + hotd4 + The House of the Dead 4 (Export) (Rev B) + + + hotd4a + The House of the Dead 4 (Export) (Rev A) + + + hotdebut + Quiz de Idol! Hot Debut (Japan) + + + hotdex + The House of the Dead EX (Japan) + + + hotdo + The House of the Dead + + + hotdoggn + Hotdoggin' + + + hotdogst + Hotdog Storm (Korea) + + + hotdp + The House of the Dead (prototype) + + + hotgm4ev + Taisen Hot Gimmick 4 Ever (Japan) + + + hotgmck + Taisen Hot Gimmick (Japan) + + + hotgmck3 + Taisen Hot Gimmick 3 Digital Surfing (Japan) + + + hotgmcki + Mahjong Hot Gimmick Integral (Japan) + + + hotgmkmp + Taisen Hot Gimmick Mix Party + + + hothand + Hot Hand + + + hotmemry + Hot Memory (V1.2, Germany, 12/28/94) + + + hotmemry11 + Hot Memory (V1.1, Germany, 11/30/94) + + + hotmind + Hot Mind (Hard Times hardware) + + + hotminda + Hot Mind (adjustable prize) + + + hotmindff + Hot Mind (Fit of Fighting hardware) + + + hotnight + Hot Night + + + hotpinbl + Hot Pinball + + + hotrod + Hot Rod (World, 3 Players, Turbo set 1, Floppy Based) + + + hotroda + Hot Rod (World, 3 Players, Turbo set 2, Floppy Based) + + + hotrodj + Hot Rod (Japan, 4 Players, Floppy Based, Rev C) + + + hotrodja + Hot Rod (Japan, 4 Players, Floppy Based, Rev B) + + + hotshock + Hot Shocker + + + hotshockb + Hot Shocker (early revision?) + + + hotshots + Hot Shots + + + hotshotsf + Hot Shots (French) + + + hotshotsg + Hot Shots (German) + + + hotslot + Hot Slot (ver. 05.01) + + + hotslots + Hot Slots (6.00) + + + hotsmash + Vs. Hot Smash + + + hotstuff + Olympic Hot Stuff (TAS 5 Reel System) + + + hottop + Hot Toppings (English) + + + hottopa + Hot Toppings (Russian?) + + + hotwheel + Hot Wheels + + + hourouki + Mahjong Hourouki Part 1 - Seishun Hen (Japan) + + + houseball + House Ball + + + housecard + House of Cards (HSC1) + + + househrt + House of Hearts (10200311, NSW/ACT) + + + househrta + House of Hearts (10208411, ASP) + + + housemn2 + House Mannequin Roppongi Live hen (Japan 870418) + + + housemnq + House Mannequin (Japan 870217) + + + howzat + Howzat! + + + hparadis + Super Hana Paradise (Japan) + + + hpierrot + Happy Pierrot + + + hpolym84 + Hyper Olympic '84 + + + hppyvideo + Happy Video + + + hpuncher + Hard Puncher (Japan) + + + hpyagu98 + Hanguk Pro Yagu 98 + + + hrclass + Home Run Classic (v1.21 12-feb-1997) + + + hrdtimes + Hard Times (set 1) + + + hrdtimesa + Hard Times (set 2) + + + hrtthrob + Heart Throb (01J02866, Venezuela) + + + hs_l3 + High Speed (L-3) + + + hs_l4 + High Speed (L-4) + + + hsf2 + Hyper Street Fighter II: The Anniversary Edition (USA 040202) + + + hsf230b + Hyper Street Fighter II: The Anniversary Edition (30% Blood, Hack) + + + hsf2a + Hyper Street Fighter II: The Anniversary Edition (Asia 040202) + + + hsf2app + Hyper Street Fighter II Plus Plus (Asia ver.170625 Hack by yumeji) + + + hsf2d + Hyper Street Fighter II: The Anniversary Edition (Asia 040202 Phoenix Edition) (bootleg) + + + hsf2da + Hyper Street Fighter II: The Anniversary Edition (Asia 040202 alt Phoenix Edition) (bootleg) + + + hsf2df + Hyper Street Fighter II: The Anniversary Edition (Difficulty Fix, Hack) + + + hsf2ev2 + Hyper Street Fighter II: The Anniversary Edition (Easy Move v2, Hack) + + + hsf2j + Hyper Street Fighter II: The Anniversary Edition (Japan 040202) + + + hsf2j1 + Hyper Street Fighter II: The Anniversary Edition (Japan 040123) + + + hsf2j2 + Hyper Street Fighter II: The Anniversary Edition (Japan 031222) + + + hsf2jpp + Hyper Street Fighter II Plus Plus (Japan ver.170625 Hack by yumeji) + + + hsf2pp + Hyper Street Fighter II Plus Plus (USA ver.170625 Hack by yumeji) + + + hshavoc + High Seas Havoc + + + hshot_p8 + Hot Shot Basketball (P-8) + + + hspot2 + Hot Spot 2 + + + hspot3 + Hot Spot 3 + + + hstenn10 + Hot Shots Tennis (V1.0) + + + hstennis + Hot Shots Tennis (V1.1) + + + hstennis10 + Hot Shots Tennis (V1.0) + + + htchctch + Hatch Catch + + + htengoku + Hanafuda Hana Tengoku (Japan) + + + hthero + Hat Trick Hero (Japan) + + + hthero93 + Hat Trick Hero '93 (Ver 1.0J 1993/02/28) + + + hthero93u + Hat Trick Hero '93 (Ver 1.0A 1993/02/28) + + + hthero94 + Hat Trick Hero '94 (Ver 2.2A 1994/05/26) + + + hthero95 + Hat Trick Hero '95 (Ver 2.5J 1994/11/03) + + + hthero95a + Hat Trick Hero '95 (Ver 2.6Asia 1994/11/17) + + + hthero95u + Hat Trick Hero '95 (Ver 2.5A 1994/11/03) + + + htheroj + Hat Trick Hero (Japan) + + + htherou + Hat Trick Hero (US) + + + hthro95u + Hat Trick Hero '95 (US) + + + httip_l1 + Hot Tip (L-1) + + + huhimage + Heat Up Hockey Image (Ver.1.003R) + + + hulk + The Incredible Hulk + + + humlan + Humlan's Lyckohjul (Sweden, Ver. 402) + + + hummerxt + Hummer Extreme + + + hunchbak + Hunchback (set 1) + + + hunchbaka + Hunchback (set 2) + + + hunchbgb + Hunchback (FAR S.A. bootleg on Galaxian hardware) + + + hunchbkd + Hunchback (DK conversion) + + + hunchbkg + Hunchback (Galaxian hardware) + + + hunchbks + Hunchback (Scramble hardware) + + + hunchbks2 + Hunchback (Scramble hardware, bootleg) + + + huncholy + Hunchback Olympic + + + hurr_l2 + Hurricane (L-2) + + + hustle + Hustle + + + hustler + Video Hustler + + + hustlerb + Video Hustler (bootleg, set 1) + + + hustlerb2 + Fatsy Gambler (bootleg of Video Hustler) + + + hustlerb3 + Video Pool (bootleg of Video Hustler) + + + hustlerb4 + Video Hustler (bootleg, set 2) + + + hustlerb5 + Video Hustler (bootleg, set 3) + + + hustlerb6 + Video Hustler (bootleg, set 4) + + + hustlerb7 + Video Hustler (bootleg, set 5) + + + hustlerd + Video Hustler (Dynamo Games) + + + hustlerp + Hustler + + + hvnsgate + Heaven's Gate + + + hvoltage + High Voltage + + + hvymetal + Heavy Metal (315-5135) + + + hvymetap + Heavy Metal Meltdown + + + hvymetapg + Heavy Metal Meltdown (German) + + + hvysmsh + Heavy Smash (Europe version -2) + + + hvysmsha + Heavy Smash (Asia version -4) + + + hvysmshj + Heavy Smash (Japan version -2) + + + hvyunit + Heavy Unit (World) + + + hvyunitj + Heavy Unit (Japan, newer) + + + hvyunitja + Heavy Unit (Japan, alternate ROM format) + + + hvyunitjo + Heavy Unit (Japan, older) + + + hvyunitu + Heavy Unit -U.S.A. Version- (US) + + + hwchamp + Heavyweight Champ (set 1) + + + hwchampa + Heavyweight Champ (set 2) + + + hwchampj + Heavyweight Champ (Japan) (FD1094 317-0046) + + + hwchampjd + Heavyweight Champ (Japan) (bootleg of FD1094 317-0046 set) + + + hwparty + Halloween Party (US.23.A) + + + hwrace + High Way Race + + + hydra + Hydra + + + hydrap + Hydra (prototype 5/14/90) + + + hydrap2 + Hydra (prototype 5/25/90) + + + hydrthnd + Hydro Thunder + + + hydrthnd100d + Hydro Thunder (v1.00d) + + + hydrthnd101b + Hydro Thunder (v1.01b) + + + hyhoo + Hayaoshi Taisen Quiz Hyhoo (Japan) + + + hyhoo2 + Hayaoshi Taisen Quiz Hyhoo 2 (Japan) + + + hyouban + Mahjong Hyouban Musume (Japan) + + + hypbbc2p + Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. JAA) + + + hypbbc2pk + Hyper Bishi Bashi Champ - 2 Player (GX908 1999/08/24 VER. KAA) + + + hypbl_l2 + HyperBall (L-2) + + + hypbl_l3 + HyperBall (L-3) + + + hypbl_l4 + HyperBall (L-4) + + + hyperath + Hyper Athlete (GV021 Japan 1.00) + + + hyperbbc + Hyper Bishi Bashi Champ (GQ876 VER. EAA) + + + hyperbbca + Hyper Bishi Bashi Champ (GQ876 VER. AAA) + + + hyperbbck + Hyper Bishi Bashi Champ (GE876 VER. KAA) + + + hypernoid + Hypernoid (HB, ver. 20220224) + + + hyperpac + Hyper Pacman + + + hyperpacb + Hyper Pacman (bootleg) + + + hyperpcb + Hyper Pacman (bootleg) + + + hyperspc + Hyperspace (bootleg of Asteroids) + + + hyperspt + Hyper Sports + + + hypersptb + Hyper Sports (bootleg) + + + hyperv2 + Hyper V2 (Global VR) Install - 06/12/02 + + + hyperv2a + Hyper V2 (Global VR) Install - 09/30/01 + + + hyprdelj + Hyper Duel (Japan) + + + hyprdriv + Hyperdrive (ver 1.40, Oct 23 1998) + + + hyprduel + Hyper Duel (Japan set 1) + + + hyprduel2 + Hyper Duel (Japan set 2) + + + hypreac2 + Mahjong Hyper Reaction 2 (Japan) + + + hypreact + Mahjong Hyper Reaction (Japan) + + + hyprolyb + Hyper Olympic (bootleg) + + + hyprolym + Hyper Olympic + + + hyprolyma + Hyper Olympic (bugfixed) + + + hyprolymb + Hyper Olympic (bootleg, set 1) + + + hyprolymba + Hyper Olympic (bootleg, set 2) + + + hypsptsp + Hyper Sports Special (Japan) + + + i500_10r + Indianapolis 500 (1.0R) + + + i500_11b + Indianapolis 500 (1.1 Belgium) + + + i500_11r + Indianapolis 500 (1.1R) + + + ibara + Ibara (2005/03/22 MASTER VER.., '06. 3. 7 ver.) + + + ibarablk + Ibara Kuro Black Label (2006/02/06. MASTER VER.) + + + ibarablka + Ibara Kuro Black Label (2006/02/06 MASTER VER.) + + + ibarao + Ibara (2005/03/22 MASTER VER..) + + + iccash + I C Cash (Russia) (Atronic) + + + ice_bozo + Bozo's Pail Toss (v2.07) + + + ice_tbd + Turbo Drive (ICE) + + + iceclimb + Vs. Ice Climber (set IC4-4 B-1) + + + iceclimba + Vs. Ice Climber (set IC4-4 ?) + + + iceclmbj + Vs. Ice Climber (Japan) + + + iceclmrd + Vs. Ice Climber Dual (set IC4-4 A-1) + + + iceclmrj + Vs. Ice Climber Dual (Japan) + + + icecold + Ice Cold Beer (set 1) + + + icecoldf + Ice Cold Beer (set 2) + + + icecoldice + Ice Cold Beer (ICE) + + + icefever + Ice Fever + + + icemania + Ice Mania + + + icescape + Icescape (V104FA) + + + ichiban + Ichi Ban Jyan + + + ichir + Puzzle & Action: Ichidant-R (World) + + + ichirbl + Puzzle & Action: Ichidant-R (World) (bootleg) + + + ichirj + Puzzle & Action: Ichidant-R (Japan) + + + ichirjbl + Puzzle & Action: Ichidant-R (Japan) (bootleg) + + + ichirk + Puzzle & Action: Ichidant-R (Korea) + + + icproul + Roulette (ICP-1 PCB) + + + id4 + Independence Day (CPU 2.02, display A2.00) + + + id4_201 + Independence Day (CPU 2.01, display A2.00) + + + id4f + Independence Day (CPU 2.02, display F2.00, France) + + + id4f_201 + Independence Day (CPU 2.01, display F2.00, France) + + + idhimitu + Idol no Himitsu (Japan 890304) + + + idolmj + Idol-Mahjong Housoukyoku (Japan) + + + idsoccer + Indoor Soccer (set 1) + + + idsoccera + Indoor Soccer (set 2) + + + idsoccert + Indoor Soccer (Tecfri) + + + iemoto + Iemoto (Japan 871020) + + + iemotom + Iemoto (Japan 871118, medal) + + + ifslots + ifslots + + + iganinju + Iga Ninjyutsuden (Japan) + + + iganinjub + Iga Ninjyutsuden (Japan, bootleg) + + + igmo + IGMO + + + igromula + Igrosoft Multigame Bootleg (15 Games) + + + igromult + Igrosoft Multigame Bootleg (10 Games) + + + igs_ncs + New Champion Skill (v100n) + + + igs_ncs2 + New Champion Skill (v100n 2000) + + + igsm312 + unknown 'IGS 6POKER2' game (V312CN) + + + igstet341 + Tetris (v341R) + + + igstet342 + Tetris (v342R) + + + igtmg133 + Multi Game (IGT, M0000133) + + + igtmg156 + Multi Game (IGT, M0000156) + + + igtmg159 + Multi Game (IGT, M0000159) + + + igtmg164 + Multi Game (IGT, M0000164) + + + igtmg166 + Multi Game (IGT, M0000166) + + + igtmg214 + Multi Game (IGT, M0000214) + + + igtmg247 + Multi Game (IGT, M0000247) + + + igtmg394 + Multi Game (IGT, M0000394) + + + igtmg535 + Multi Game (IGT, M0000535) + + + igtsc + Super Cherry + + + igtvp + Vision printer + + + ij_l3 + Indiana Jones (L-3) + + + ij_l4 + Indiana Jones (L-4) + + + ij_l5 + Indiana Jones (L-5) + + + ij_l6 + Indiana Jones (L-6) + + + ij_l7 + Indiana Jones (L-7) + + + ij_lg7 + Indiana Jones (LG-7) + + + ikari + Ikari Warriors (US JAMMA) + + + ikari3 + Ikari III - The Rescue (World version 1, 8-Way Joystick) + + + ikari3j + Ikari Three (Japan, Rotary Joystick) + + + ikari3k + Ikari Three (Korea, 8-Way Joystick) + + + ikari3nr + Ikari III - The Rescue (World, 8-Way Joystick) + + + ikari3u + Ikari III - The Rescue (US, Rotary Joystick) + + + ikari3w + Ikari III - The Rescue (World, Rotary Joystick) + + + ikaria + Ikari Warriors (US, set 1) + + + ikaria2 + Ikari Warriors (US, set 2) + + + ikarijp + Ikari (Japan No Continues) + + + ikarijpb + Ikari (Joystick hack bootleg) + + + ikarinc + Ikari Warriors (US No Continues) + + + ikariram + Rambo 3 (bootleg of Ikari, Joystick hack) + + + ikaruga + Ikaruga (GDL-0010) + + + ikki + Ikki (Japan) + + + illvelo + Illvelo (Illmatic Envelope) (Japan) + + + ilpag + Il Pagliaccio (Italy, Ver. 2.7C) + + + im1p1952 + Imperial (1P1952IZ) Blue Moon + + + im1p19s1 + Imperial (1P19S1IZ) Sheer Magic + + + im2_100 + Iron Man 2 v1.00 + + + im2_110 + Iron Man 2 v1.10 + + + im2_120 + Iron Man 2 v1.20 + + + im2_140 + Iron Man 2 v1.40 + + + im2p1929 + Imperial (2P1929IZ) Castaway Stampede + + + im3p1940 + Imperial (3P1940IZ) Cashline D Bucks + + + imago + Imago (cocktail set) + + + imagoa + Imago (no cocktail set) + + + imekura + Imekura Mahjong (Japan) + + + imgfight + Image Fight (World) + + + imgfightj + Image Fight (Japan) + + + imgfightjb + Image Fight (Japan, bootleg) + + + imolagp + Imola Grand Prix (set 1) + + + imolagpo + Imola Grand Prix (set 2) + + + imsorry + I'm Sorry (315-5110, US) + + + imsorryj + Gonbee no I'm Sorry (315-5110, Japan) + + + inca + Inca + + + incachf + Inca Chief (20190711, NSW/ACT) + + + incanp + Incan Pyramid (Konami Endeavour, Russia) + + + incanpq + Incan Pyramid (Konami Endeavour, Queensland) + + + incasun + Inca Sun (0100872V, NSW/ACT) + + + incasunnz + Inca Sun (0101108V, New Zealand) + + + incasunsp + Inca Sun (0100872V, NSW/ACT, Show Program) + + + incasunu + Inca Sun (DHG1577, US) + + + incasunua + Inca Sun (CHG1458, US) + + + incasunv + Inca Sun (01J01946, Venezuela) + + + ind250cc + 250 CC + + + indgldcm + Indian Gold - Mr. Cashman (10102511, NSW/ACT) + + + indianbt + Indian Battle + + + indianbtbr + Indian Battle (Brazil) + + + indprncs + Indian Princess (10174111, NSW/ACT) + + + indream + Indian Dreaming (10004211, NSW/ACT) + + + indreama + Indian Dreaming (10192211, ASP) + + + indrem2c + Indian Dreaming 2nd Chance (10150611, NSW/ACT) + + + indrema5 + Indian Dreaming (0100845V, NSW/ACT) + + + indrema5q + Indian Dreaming (0101340V, Queensland) + + + indrema5v + Indian Dreaming (02J01856, Venezuela) + + + indremce + Indian Dreaming - Cash Express (20109411, NSW/ACT) + + + indremll + Indian Dreaming - Lady Luck (20151911, NSW/ACT) + + + indremmm + Indian Dreaming - Maximillions (10130711, NSW/ACT) + + + indunkgam + unknown gambling game on Inder pinball hardware + + + indy4 + Indy 4 + + + indy500 + INDY 500 Twin (Revision A, Newer) + + + indy500d + INDY 500 Deluxe (Revision A) + + + indy500to + INDY 500 Twin (Revision A) + + + indy800 + Indy 800 + + + indy_113a + Indiana Jones v1.13 + + + indy_113f + Indiana Jones v1.13 (French) + + + indy_113g + Indiana Jones v1.13 (German) + + + indy_113i + Indiana Jones v1.13 (Italian) + + + indy_113l + Indiana Jones v1.13 (Spanish) + + + indy_114a + Indiana Jones v1.14 + + + indy_114f + Indiana Jones v1.14 (French) + + + indy_114g + Indiana Jones v1.14 (German) + + + indy_114i + Indiana Jones v1.14 (Italian) + + + indy_114l + Indiana Jones v1.14 (Spanish) + + + indy_116a + Indiana Jones v1.16 + + + indy_116f + Indiana Jones v1.16 (French) + + + indy_116g + Indiana Jones v1.16 (German) + + + indy_116i + Indiana Jones v1.16 (Italian) + + + indy_116l + Indiana Jones v1.16 (Spanish) + + + indy_210 + Indiana Jones v2.10 + + + indy_210f + Indiana Jones v2.10 (French) + + + indyheat + Danny Sullivan's Indy Heat (rev 1) + + + indytem2 + Indiana Jones and the Temple of Doom (set 2) + + + indytem3 + Indiana Jones and the Temple of Doom (set 3) + + + indytem4 + Indiana Jones and the Temple of Doom (set 4) + + + indytemd + Indiana Jones and the Temple of Doom (German) + + + indytemp + Indiana Jones and the Temple of Doom (set 1) + + + indytemp2 + Indiana Jones and the Temple of Doom (set 2) + + + indytemp3 + Indiana Jones and the Temple of Doom (set 3) + + + indytemp4 + Indiana Jones and the Temple of Doom (set 4) + + + indytempc + Indiana Jones and the Temple of Doom (cocktail) + + + indytempd + Indiana Jones and the Temple of Doom (German) + + + inferno + Inferno (Williams) + + + inidv3ca + Initial D Arcade Stage Ver. 3 Cycraft Edition (Export, Rev A) (GDS-0039A) + + + inidv3cy + Initial D Arcade Stage Ver. 3 Cycraft Edition (Export, Rev B) (GDS-0039B) + + + initd + Initial D Arcade Stage (Japan, Rev B) (GDS-0020B) + + + initdexp + Initial D Arcade Stage (Export, Rev A) (GDS-0025A) + + + initdexpo + Initial D Arcade Stage (Export) (GDS-0025) + + + initdo + Initial D Arcade Stage (Japan) (GDS-0020) + + + initdv2e + Initial D Arcade Stage Ver. 2 (Export) (GDS-0027) + + + initdv2j + Initial D Arcade Stage Ver. 2 (Japan, Rev B) (GDS-0026B) + + + initdv2ja + Initial D Arcade Stage Ver. 2 (Japan, Rev A) (GDS-0026A) + + + initdv2jo + Initial D Arcade Stage Ver. 2 (Japan) (GDS-0026) + + + initdv3e + Initial D Arcade Stage Ver. 3 (Export) (GDS-0033) + + + initdv3j + Initial D Arcade Stage Ver. 3 (Japan, Rev C) (GDS-0032C) + + + initdv3jb + Initial D Arcade Stage Ver. 3 (Japan, Rev B) (GDS-0032B) + + + initiad4 + Initial D4 (Rev D) + + + initiad4c + Initial D4 (Rev C) + + + inquiztr + Inquizitor (V1.2) + + + inquiztr11 + Inquizitor (V1.1) + + + inquiztr12a + Inquizitor (V1.2, alt) + + + insector + Insector (prototype) + + + insectx + Insector X (World) + + + insectxbl + Insector X (bootleg) + + + insectxj + Insector X (Japan) + + + instantm + Polaroid Instant Memories + + + intcup94 + International Cup '94 (Ver 2.2O 1994/05/26) + + + inthunt + In The Hunt (World) + + + inthuntu + In The Hunt (US) + + + intlaser + International Team Laser (prototype) + + + intrepi2 + Intrepid (set 2) + + + intrepid + Intrepid (set 1) + + + intrepid2 + Intrepid (set 2) + + + intrepidb + Intrepid (Elsys bootleg, set 1) + + + intrepidb2 + Intrepid (Loris bootleg) + + + intrepidb3 + Intrepid (Elsys bootleg, set 2) + + + intrgirl + Intergirl + + + intrgmes + Joker Card (Inter Games) + + + introdon + Karaoke Quiz Intro Don Don! (J 960213 V1.000) + + + intrscti + Intersecti + + + intruder + Intruder + + + inttoote + International Toote (Germany, P523.V01) + + + inttoote2 + International Toote II (v1.24, P387.V01) + + + inufuku + Quiz & Variety Sukusuku Inufuku (Japan) + + + inunoos + Inu no Osanpo / Dog Walking (Japan, Export, Rev A) + + + invad2ct + Space Invaders II (Midway, cocktail) + + + invaddlx + Space Invaders Deluxe + + + invader4 + Space Invaders Part Four (bootleg of Space Attack II) + + + invaderl + Space Invaders (Logitec) + + + invadernc + Space Invaders (Nas Corp bootleg) + + + invaders + Space Invaders / Space Invaders M + + + invadersem + Space Invaders (Electromar, Spanish) + + + invadpt2 + Space Invaders Part II (Taito, bigger ROMs) + + + invadpt2a + Space Invaders Part II (Taito, smaller ROMs) + + + invadpt2br + Space Invaders Part II (Brazil) + + + invadrmr + Space Invaders (Model Racing) + + + invasioa + Invasion (bootleg, set 1, normal graphics) + + + invasiob + Invasion (bootleg, set 2, no copyright) + + + invasion + Invasion (Sidam) + + + invasiona + UFO Robot Attack (bootleg of Invasion, newer set) + + + invasiona2 + UFO Robot Attack (bootleg of Invasion, older set) + + + invasionb + Invasion (Italian bootleg) + + + invasionrz + Invasion (bootleg set 1, R Z SRL Bologna) + + + invasionrza + Invasion (bootleg set 2, R Z SRL Bologna) + + + invasnab + Invasion - The Abductors (version 5.0) + + + invasnab3 + Invasion - The Abductors (version 3.0) + + + invasnab4 + Invasion - The Abductors (version 4.0) + + + invcarht + Invinco / Car Hunt (Germany) + + + invds + Invinco / Deep Scan + + + invho2 + Invinco / Head On 2 (set 1) + + + invho2a + Invinco / Head On 2 (set 2) + + + invinco + Invinco + + + invmulti + Space Invaders Multigame (M8.03D) + + + invmultim1a + Space Invaders Multigame (M8.01A) + + + invmultim2a + Space Invaders Multigame (M8.02A) + + + invmultim2c + Space Invaders Multigame (M8.02C) + + + invmultim3a + Space Invaders Multigame (M8.03A) + + + invmultip + Space Invaders Multigame (prototype) + + + invmultis1a + Space Invaders Multigame (S0.81A) + + + invmultis2a + Space Invaders Multigame (S0.82A) + + + invmultis3a + Space Invaders Multigame (S0.83A) + + + invmultit3d + Space Invaders Multigame (T8.03D) + + + invqix + Space Invaders / Qix Silver Anniversary Edition (Ver. 2.03) + + + invrvnga + Invader's Revenge (Dutchford) + + + invrvnge + Invader's Revenge (set 1) + + + invrvngea + Invader's Revenge (set 2) + + + invrvngeb + Invader's Revenge (set 3) + + + invrvngedu + Invader's Revenge (Dutchford, single PCB) + + + invrvngegw + Invader's Revenge (Game World, single PCB) + + + inwinner + Instant Winner (Russian) + + + inwinners + Instant Winner (Spanish) + + + inyourfa + In Your Face (North America, prototype) + + + iomoon + Io Moon + + + iowapp + Iowa Premium Player (2131-21, U5-1) + + + ipminvad + IPM Invader (set 1) + + + ipminvad1 + IPM Invader (set 2) + + + ippatsu + Ippatsu Gyakuten (Japan) + + + ippo2 + Hard Puncher Hajime no Ippo 2 - The Fighting! - Ouja e no chousen (VER.2.00J) + + + iqblock + IQ-Block (V100U) + + + iqblocka + Shuzi Leyuan (China, V127M, gambling) + + + iqblockf + IQ Block (V113FR, gambling) + + + iqpipe + IQ Pipe + + + irion + Irion + + + irobot + I, Robot + + + iron + Iron (SNES bootleg) + + + ironball + Iron Balls + + + ironclad + Choutetsu Brikin'ger / Iron Clad (prototype) + + + ironclado + Choutetsu Brikin'ger / Iron Clad (prototype, bootleg) + + + ironfort + Iron Fortress + + + ironfortc + Gongtit Jiucoi Iron Fortress (Hong Kong) + + + ironhors + Iron Horse (version K) + + + ironhorsh + Iron Horse (version H) + + + ironmaid + Iron Maiden + + + irrmaze + The Irritating Maze / Ultra Denryu Iraira Bou + + + island + Island (050713 World) + + + island2 + Island 2 (060529 World) + + + island2_10 + Island 2 (110124 Entertainment A) + + + island2_11 + Island 2 (110204 Entertainment A) + + + island2_12 + Island 2 (110311 Entertainment B) + + + island2_13 + Island 2 (140526 Entertainment B) + + + island2_14 + Island 2 (110411 Entertainment C) + + + island2_2 + Island 2 (061214 World) + + + island2_3 + Island 2 (061218 World) + + + island2_3a + Island 2 (bootleg, 061218, VIDEO GAME-1 OS2-01) + + + island2_4 + Island 2 (070205 Russia) + + + island2_4a + Island 2 (bootleg, 070205, banking address hack) + + + island2_5 + Island 2 (090528 Lottery) + + + island2_6 + Island 2 (090724 Entertainment) + + + island2_7 + Island 2 (100401 Entertainment X) + + + island2_8 + Island 2 (101208 Entertainment N) + + + island2_9 + Island 2 (110111 Entertainment A) + + + island2a + Island 2 (bootleg, 060529, banking address hack) + + + island2b + Island 2 (bootleg, 060529, banking address hack, changed version text) + + + island2c + Island 2 (bootleg, 060529, LOTTOGAME (I)) + + + island_2 + Island (070409 Russia) + + + island_3 + Island (090806 Entertainment) + + + islanda + Island (bootleg, 050713, backdoor) + + + islandb + Island (bootleg, 050713, VIDEO GAME-1 OS01) + + + islandc + Island (bootleg, 050713, LOTOS OS01) + + + isld_vortex + Vortex (Island Design) + + + isshoni + Isshoni Wanwan Waiwai Puppy 2008 + + + istellar + Inter Stellar (Laser Fantasy) + + + istellar2 + Inter Stellar Zangus (Laser Fantasy vol. 2) + + + istreb + Istrebiteli + + + itaten + Itazura Tenshi (Japan) + + + itazurac + Itazura Cockroach (Japan, ver 1.02) + + + itazuram + Itazura Monkey + + + ivorytsk + Ivory Tusk + + + ixion + Ixion (prototype) + + + j2008 + unknown '008' (Unk) (MPS) + + + j2adnote + Add A Note (JPM) (MPS, set 1) + + + j2adnotea + Add A Note (JPM) (MPS, set 2) + + + j2adnoteb + Add A Note (JPM) (MPS, set 3) + + + j2adnotec + Add A Note (JPM) (MPS, set 4) + + + j2adnoted + Add A Note (JPM) (MPS, set 5) + + + j2adnotee + Add A Note (JPM) (MPS, set 6) + + + j2adnotef + Add A Note (JPM) (MPS, set 7) + + + j2adnoteg + Add A Note (JPM) (MPS, set 8) + + + j2adnoteh + Add A Note (JPM) (MPS, set 9) + + + j2adnotei + Add A Note (JPM) (MPS, set 10) + + + j2always + Always Eight (Bwb) (MPS) + + + j2b7 + Bar 7? (JPM) (MPS) + + + j2bankch + Bank Chase (JPM) (MPS) + + + j2bankrd + Bank Raid (JPM) (MPS) + + + j2bigbnk + Big Banker (JPM) (MPS) + + + j2bigbox + Big Box (JPM) (MPS) + + + j2bigbuk + Big Buck$ (JPM) (MPS) + + + j2bigdl + Big Deal (JPM) (MPS) + + + j2bkroll + Bank Roll (JPM) (MPS) + + + j2blkchy + Black Cherry (JPM) (MPS) + + + j2blustr + Blue Streak (Pcp) (MPS) + + + j2bodym + Body Match (JPM) (MPS) + + + j2bonanz + Bonanza (Eurocoin) (MPS) + + + j2cashab + Cashablanca (JPM) (MPS) + + + j2cashbn + Cash Bonus Club (JPM) (MPS) + + + j2cashfl + Cash Falls (JPM) (MPS) + + + j2cashrl + Cash Reels (JPM) (MPS) + + + j2cashro + Cash Rolls (JPM) (MPS) + + + j2cashrv + Cash Reserve (JPM) (MPS) + + + j2cashry + Cashino Royale (Pcp) (MPS) + + + j2cashtd + Cash Track Deluxe (JPM) (MPS) + + + j2cashtk + Cash Track (JPM) (MPS) + + + j2casino + Casino Classic (Pcp) (MPS) + + + j2chsn + unknown 'chsnsn05' (Unk) (MPS) + + + j2clbbin + Club Bingo (Crystal) (MPS) + + + j2club77 + Club 77 (Unk) (MPS) + + + j2coinct + Coin Count (JPM) (MPS) + + + j2coinsh + Coin Shoot (Bwb) (MPS) + + + j2contnd + Continuous Nudger (Mdm) (MPS) + + + j2coppot + Copper Pot (JPM) (MPS) + + + j2coprun + Copper Run (JPM) (MPS) + + + j2cprndx + Copper Run Deluxe (JPM) (MPS) + + + j2criscr + Criss Cross Jackpot (Pcp) (MPS) + + + j2crkbnk + Crack The Bank (JPM) (MPS) + + + j2crown + Crown Dealer (Unk) (MPS) + + + j2cshalm + Cash Alarm (Pcp) (MPS) + + + j2cshcrd + Cash Cards (Pcp) (MPS) + + + j2cshfil + Cash-Filla (Pcp) (MPS) + + + j2cshnud + Cash Nudger (Mdm) (MPS) + + + j2cshsmh + Cash Smash (Pcp) (MPS) + + + j2cvault + Cash Vault (JPM) (MPS) + + + j2dropld + Drop The Lot Deluxe (JPM) (MPS) + + + j2droplt + Drop The Lot (JPM) (MPS) + + + j2ewn + Each Way Nudger (JPM) (MPS) + + + j2ews + Each Way Shuffle (JPM) (MPS) + + + j2exec + Executive Club (JPM) (MPS) + + + j2fasttk + Fast Trak (JPM) (MPS) + + + j2fiveal + Five Alive (JPM) (MPS) + + + j2fiveln + Five Liner (JPM) (MPS) + + + j2fivepn + Fivepenny Nudger (Mdm) (MPS) + + + j2fqueen + Find The Queen (JPM) (MPS) + + + j2frmtch + Fruit Match (JPM) (MPS) + + + j2frucnx + Fruit Connexion (Pcp) (MPS) + + + j2fullhs + Full House Club (JPM) (MPS) + + + j2fws + Five Way Shuffle (set 1) (JPM) (MPS) + + + j2fwsa + Five Way Shuffle (set 2) (JPM) (MPS) + + + j2ghostb + Ghostbuster (JPM) (MPS) + + + j2gldchy + Golden Cherry (JPM) (MPS) + + + j2gldwin + Golden Win (JPM) (MPS) + + + j2goldbr + Golden Bars (JPM) (MPS) + + + j2goldrn + Gold Run (JPM) (MPS) + + + j2hcash + Hot Cash (Unk) (MPS) + + + j2hilocl + Hi Lo Climber Club (Crystal) (MPS) + + + j2hinote + Hi Note (JPM) (MPS) + + + j2hirola + Hi Roll (Unk) (MPS) + + + j2hiroll + Hi Roller (JPM) (MPS) + + + j2hitmon + Hit Money (Pcp) (MPS) + + + j2hotpot + Hot Pot (JPM) (MPS) + + + j2hotptd + Hot Pot Deluxe (JPM) (MPS) + + + j2hotsht + Hot Shot Club (JPM) (MPS) + + + j2hypnot + Hypernote (JPM) (MPS) + + + j2jackbr + Jackpot Bars (JPM) (MPS) + + + j2jackdc + Jackpot Dice (JPM) (MPS) + + + j2jokers + Jokers (JPM) (MPS) + + + j2kingcl + King Of Clubs (JPM) (MPS) + + + j2lhs + unknown 'lhs' (Unk) (MPS) + + + j2litean + Lite A Nudge (JPM) (MPS) + + + j2litnot + Lite A Note Club (Crystal) (MPS) + + + j2loots + Loot Shoot (Pcp) (MPS) + + + j2lovshd + Loot Shoot Deluxe (JPM) (MPS) + + + j2lovsht + Loot Shoot (JPM) (MPS) + + + j2luckar + Lucky Arrows (JPM) (MPS) + + + j2lucky2 + Lucky 2s (JPM) (MPS) + + + j2match + Match It (JPM) (MPS) + + + j2maxima + Maxima (Pcp) (MPS) + + + j2missis + Mississippi Gambler Club (Crystal) (MPS) + + + j2monblt + Money Belt (JPM) (MPS) + + + j2monbnd + Money Bands (JPM) (MPS) + + + j2mongam + Money Game (JPM) (MPS) + + + j2mongmd + Money Game Deluxe (JPM) (MPS) + + + j2monmin + Money Mine (Unk) (MPS) + + + j2monmtx + Money Matrix (Bwb) (MPS) + + + j2montrp + Money Trapper (Pcp) (MPS) + + + j2multwn + Multi Win (JPM) (MPS) + + + j2nbz + Nudge Bonanza (JPM) (MPS) + + + j2ncsp + unknown 'ncsp0pp' (Bwb) (MPS) + + + j2nn2 + unknown 'nn_2' (Unk) (MPS) + + + j2nolimt + No Limit Nudge (Mdm) (MPS) + + + j2notesh + Note Shoot (JPM) (MPS) + + + j2notexc + Note Exchange (set 1) (JPM) (MPS) + + + j2notexca + Note Exchange (set 2) (JPM) (MPS) + + + j2notexcb + Note Exchange (set 3) (JPM) (MPS) + + + j2notspn + Note Spinner (Unk) (MPS) + + + j2nrrp + unknown 'nprpopp' (Bwb) (MPS) + + + j2nsc15 + unknown 'nsc15' (Pcp) (MPS) + + + j2nsw12 + unknown 'nsw12' (Pcp) (MPS) + + + j2nud5p + 5p Nudger (JPM) (MPS) + + + j2nudbnz + Nudge Bonanza Deluxe (set 1) (JPM) (MPS) + + + j2nudbnza + Nudge Bonanza Deluxe (set 2) (JPM) (MPS) + + + j2nuddud + Nudge Double Up Deluxe (JPM) (MPS) + + + j2nuddup + Nudge Double Up (JPM) (MPS) + + + j2nudfev + Nudge Fever (Bwb) (MPS) + + + j2nudmon + Nudge Money (Pcp) (MPS) + + + j2nudnud + Nudge Nudge (JPM) (MPS) + + + j2nudshf + Nudge Shuffler (JPM) (MPS) + + + j2nudup3 + Nudge Double Up MkIII (JPM) (MPS) + + + j2paypkt + Pay Packet (Pcp) (MPS) + + + j2penny + In For A Penny In For A Pound (Pcp) (MPS) + + + j2pharo + Pharoah (Unk) (MPS) + + + j2pinac + Pinnacle (JPM) (MPS) + + + j2pinclb + Pinnacle Club (JPM) (MPS) + + + j2plsmnd + Plus Money Deluxe (JPM) (MPS) + + + j2plsmon + Plus Money (JPM) (MPS) + + + j2plsnud + Plus Nudge (JPM) (MPS) + + + j2pndrsh + Pound Rush (JPM) (MPS) + + + j2potlck + Pot Luck (JPM) (MPS) + + + j2pyramd + Pyramid (JPM) (MPS) + + + j2rdclb + Royal Deal Club (JPM) (MPS) + + + j2reelbn + Reel Bingo Club (set 1) (JPM) (MPS) + + + j2reelbna + Reel Bingo Club (set 2) (JPM) (MPS) + + + j2reelbo + Reel Bonus (JPM) (MPS) + + + j2reelcz + Reel Crazy (JPM) (MPS) + + + j2reeldc + Reel Deal Club (JPM) (MPS) + + + j2reelmc + Reel Magic Club (JPM) (MPS) + + + j2reelmg + Reel Magic (JPM) (MPS) + + + j2reelmgd + Reel Magic (JPM) [Dutch] (MPS) + + + j2reelmo + Reel Money (JPM) (MPS) + + + j2rm941 + unknown 'rm941' (Unk) (MPS) + + + j2rotnot + Rota Note (JPM) (MPS) + + + j2roulcl + Roulette Club (JPM) [Mps] (MPS) + + + j2sex + Super Exchanger (Unk) (MPS) + + + j2silvcl + Silver Classic (Pcp) (MPS) + + + j2silvsh + Silver Shot (Pcp) (MPS) + + + j2sirich + Strike It Rich (JPM) (MPS) (set 1) + + + j2siricha + Strike It Rich (JPM) (MPS) (set 2) + + + j2sldgld + Solid Gold (JPM) (MPS) + + + j2slvrgh + Silver Ghost (JPM) (MPS) + + + j2sng + Super Nudge Gambler (Cotswold Microsystems) (MPS) + + + j2spcrsv + Special Reserve (JPM) (MPS) + + + j2ss + Supa Stepper (JPM) (MPS) + + + j2sset + Sunset Strip (v2.0) (Unk) (MPS?) + + + j2sstrea + Supa Streak (Pcp) (MPS) + + + j2stahed + Streets Ahead (JPM) (MPS) + + + j2strk10 + Strike Ten (Ace) (MPS) + + + j2supchy + Super Cherry (Eurocoin) (MPS) + + + j2super7 + Super 7's (Unk) (MPS) + + + j2supfrc + Supa Fruit Club (JPM) (MPS) + + + j2supfrt + Supa Fruit (JPM) (MPS) + + + j2supln + Super Line (JPM) (MPS) + + + j2suppot + Super Pots (JPM) (MPS) + + + j2suprft + Super Fruit (JPM) (MPS) + + + j2suprl + Super Reel (JPM) (MPS) + + + j2suprsh + Supershot (JPM) (MPS) + + + j2supsft + Supashifta (JPM) (MPS) + + + j2supstp + Supa Steppa (JPM) (MPS) + + + j2supstr + Superstars (JPM) (MPS) + + + j2suptrk + Supa Track (JPM) (MPS) + + + j2swbank + Switch Back (JPM) (MPS) + + + j2take2 + Take 2 (JPM) (MPS) + + + j2topcd + Top Card (Bwb) (MPS) + + + j2topsht + Top Shot (JPM) (MPS) + + + j2trail + Trailblazer (Bwb) (MPS) + + + j2tst + MPS 1 Test Rom (JPM) (MPS) + + + j2tstplt + Test Pilot (set 1) (Pcp) (MPS) + + + j2tstplta + Test Pilot (set 2) (Pcp) (MPS) + + + j2tupnd + Tuppenny Nudger (Mdm) (MPS) + + + j2tupnud + Tuppenny Nudger (JPM) (MPS) + + + j2wag + Win-A-Gain (Bwb) (MPS) + + + j2westrn + Western (JPM) (MPS) + + + j2wrb + Wild Reel Bingo (JPM) (MPS) + + + j2xxx + Triple X (Bwb) (MPS) + + + j5ar80 + Around The World In Eighty Days (JPM) (SYSTEM5, set 1) + + + j5ar80a + Around The World In Eighty Days (JPM) (SYSTEM5, set 2) + + + j5ar80b + Around The World In Eighty Days (JPM) (SYSTEM5, set 3) + + + j5ar80c + Around The World In Eighty Days (JPM) (SYSTEM5, set 4) + + + j5ar80cl + Around The World Club (JPM) (SYSTEM5, set 1) + + + j5ar80cla + Around The World Club (JPM) (SYSTEM5, set 2) + + + j5ar80clb + Around The World Club (JPM) (SYSTEM5, set 3) + + + j5ar80clc + Around The World Club (JPM) (SYSTEM5, set 4) + + + j5ar80d + Around The World In Eighty Days (JPM) (SYSTEM5, set 5) + + + j5buc + Buccaneer (JPM) (SYSTEM5) + + + j5cir + Circus (JPM) (SYSTEM5, set 1) + + + j5cira + Circus (JPM) (SYSTEM5, set 2) + + + j5cirb + Circus (JPM) (SYSTEM5, set 3) + + + j5circ + Circus (JPM) (SYSTEM5, set 4) + + + j5cird + Circus (JPM) (SYSTEM5, set 5) + + + j5cire + Circus (JPM) (SYSTEM5, set 6) + + + j5clbnud + Club Nudger (JPM) (SYSTEM5-SAA, set 1) + + + j5clbnuda + Club Nudger (JPM) (SYSTEM5-SAA, set 2) + + + j5daycls + Daytona Classic (JPM) (SYSTEM5, set 1) + + + j5dayclsa + Daytona Classic (JPM) (SYSTEM5, set 2) + + + j5daytn + Daytona (JPM) (SYSTEM5, set 1) + + + j5daytna + Daytona (JPM) (SYSTEM5, set 2) + + + j5dirty + Dirty Dozen (JPM) (SYSTEM5, set 1) + + + j5dirtya + Dirty Dozen (JPM) (SYSTEM5, set 2) + + + j5dirtyb + Dirty Dozen (JPM) (SYSTEM5, set 3) + + + j5dirtyc + Dirty Dozen (JPM) (SYSTEM5, set 4) + + + j5fair + Fairground (JPM) (SYSTEM5, set 1) + + + j5faira + Fairground (JPM) (SYSTEM5, set 2) + + + j5fairb + Fairground (JPM) (SYSTEM5, set 3) + + + j5fairc + Fairground (JPM) (SYSTEM5, set 4) + + + j5faird + Fairground (JPM) (SYSTEM5, set 5) + + + j5faire + Fairground (JPM) (SYSTEM5, set 6) + + + j5fairf + Fairground (JPM) (SYSTEM5, set 7) + + + j5fairg + Fairground (JPM) (SYSTEM5, set 8) + + + j5fairgd + Fairground Attraction Club (JPM) (SYSTEM5, set 1) + + + j5fairgda + Fairground Attraction Club (JPM) (SYSTEM5, set 2) + + + j5fairgdb + Fairground Attraction Club (JPM) (SYSTEM5, set 3) + + + j5fairgdc + Fairground Attraction Club (JPM) (SYSTEM5, set 4) + + + j5fairgdd + Fairground Attraction Club (JPM) (SYSTEM5, set 5) + + + j5fairgde + Fairground Attraction Club (JPM) (SYSTEM5, set 6) + + + j5fairh + Fairground (JPM) (SYSTEM5, set 9) + + + j5fairi + Fairground (JPM) (SYSTEM5, set 10) + + + j5fairj + Fairground (JPM) (SYSTEM5, set 11) + + + j5fairk + Fairground (JPM) (SYSTEM5, set 12) + + + j5fairl + Fairground (JPM) (SYSTEM5, set 13) + + + j5fairm + Fairground (JPM) (SYSTEM5, set 14) + + + j5fairn + Fairground (JPM) (SYSTEM5, set 15) + + + j5fairo + Fairground (JPM) (SYSTEM5, set 16) + + + j5fairp + Fairground (JPM) (SYSTEM5, set 17) + + + j5fairq + Fairground (JPM) (SYSTEM5, set 18) + + + j5fifth + 5th Avenue (JPM) (SYSTEM5-SAA) + + + j5filth + Filthy Rich (JPM) (SYSTEM5, set 1) + + + j5filtha + Filthy Rich (JPM) (SYSTEM5, set 2) + + + j5filthb + Filthy Rich (JPM) (SYSTEM5, set 3) + + + j5filthc + Filthy Rich (JPM) (SYSTEM5, set 4) + + + j5filthd + Filthy Rich (JPM) (SYSTEM5, set 5) + + + j5filthe + Filthy Rich (JPM) (SYSTEM5, set 6) + + + j5filthf + Filthy Rich (JPM) (SYSTEM5, set 7) + + + j5filthg + Filthy Rich (JPM) (SYSTEM5, set 8) + + + j5filthh + Filthy Rich (JPM) (SYSTEM5, set 9) + + + j5filthi + Filthy Rich (JPM) (SYSTEM5, set 10) + + + j5filthj + Filthy Rich (JPM) (SYSTEM5, set 11) + + + j5firebl + Fireball (JPM) (SYSTEM5-SAA, set 1) + + + j5firebla + Fireball (JPM) (SYSTEM5-SAA, set 2) + + + j5fireblb + Fireball (JPM) (SYSTEM5-SAA, set 3) + + + j5frmag + Fruit Magic (JPM) (SYSTEM5-SAA) + + + j5goldbr + Golden Bars (JPM) (SYSTEM5-SAA) + + + j5hagar + Hagar (JPM) (SYSTEM5, set 1) + + + j5hagara + Hagar (JPM) (SYSTEM5, set 2) + + + j5hagarb + Hagar (JPM) (SYSTEM5, set 3) + + + j5hagarc + Hagar (JPM) (SYSTEM5, set 4) + + + j5hagard + Hagar (JPM) (SYSTEM5, set 5) + + + j5hagare + Hagar (JPM) (SYSTEM5, set 6) + + + j5hagarf + Hagar (JPM) (SYSTEM5, set 7) + + + j5hagarg + Hagar (JPM) (SYSTEM5, set 8) + + + j5hagarh + Hagar (JPM) (SYSTEM5, set 9) + + + j5hagari + Hagar (JPM) (SYSTEM5, set 10) + + + j5hagarj + Hagar (JPM) (SYSTEM5, set 11) + + + j5hagsho + Hagar Showcase (JPM) (SYSTEM5, set 1) + + + j5hagshoa + Hagar Showcase (JPM) (SYSTEM5, set 2) + + + j5hagshob + Hagar Showcase (JPM) (SYSTEM5, set 3) + + + j5hagshoc + Hagar Showcase (JPM) (SYSTEM5, set 4) + + + j5hilos + Hi-Lo Silver (JPM) (SYSTEM5) + + + j5holly + Hollywood Nights (JPM) (SYSTEM5, set 1) + + + j5hollya + Hollywood Nights (JPM) (SYSTEM5, set 2) + + + j5hollyb + Hollywood Nights (JPM) (SYSTEM5, set 3) + + + j5hollyc + Hollywood Nights (JPM) (SYSTEM5, set 4) + + + j5hollyd + Hollywood Nights (JPM) (SYSTEM5, set 5) + + + j5hollye + Hollywood Nights (JPM) (SYSTEM5, set 6) + + + j5hotdog + Hot Dogs (JPM) (SYSTEM5, set 1) + + + j5hotdoga + Hot Dogs (JPM) (SYSTEM5, set 2) + + + j5indsum + Indian Summer (JPM) (SYSTEM5) + + + j5intr + Intrigue (JPM) (SYSTEM5, set 1) + + + j5intra + Intrigue (JPM) (SYSTEM5, set 2) + + + j5intrb + Intrigue (JPM) (SYSTEM5, set 3) + + + j5intrc + Intrigue (JPM) (SYSTEM5, set 4) + + + j5jokgld + Jokers Gold (JPM) (SYSTEM5, set 1) + + + j5jokglda + Jokers Gold (JPM) (SYSTEM5, set 2) + + + j5jokgldb + Jokers Gold (JPM) (SYSTEM5, set 3) + + + j5jokgldc + Jokers Gold (JPM) (SYSTEM5, set 4) + + + j5jokgldd + Jokers Gold (JPM) (SYSTEM5, set 5) + + + j5jokglde + Jokers Gold (JPM) (SYSTEM5, set 6) + + + j5jokgldf + Jokers Gold (JPM) (SYSTEM5, set 7) + + + j5jokgldg + Jokers Gold (JPM) (SYSTEM5, set 8) + + + j5jokgldh + Jokers Gold (JPM) (SYSTEM5, set 9) + + + j5movie + Movie Magic Club (Crystal) (SYSTEM5) + + + j5nite + Nite Club (JPM) (SYSTEM5, set 1) + + + j5nitea + Nite Club (JPM) (SYSTEM5, set 2) + + + j5nudfic + Nudge Fiction (JPM) (SYSTEM5) + + + j5palm + Palm Springs (JPM) (SYSTEM5, set 1) + + + j5palma + Palm Springs (JPM) (SYSTEM5, set 2) + + + j5phnx + Phoenix (JPM) (SYSTEM5, set 1) + + + j5phnxa + Phoenix (JPM) (SYSTEM5, set 2) + + + j5popeye + Popeye (JPM) (SYSTEM5, set 1) + + + j5popeyea + Popeye (JPM) (SYSTEM5, set 2) + + + j5popeyeb + Popeye (JPM) (SYSTEM5, set 3) + + + j5popeyec + Popeye (JPM) (SYSTEM5, set 4) + + + j5popeyed + Popeye (JPM) (SYSTEM5, set 5) + + + j5popeyee + Popeye (JPM) (SYSTEM5, set 6) + + + j5popeyef + Popeye (JPM) (SYSTEM5, set 7) + + + j5popeyeg + Popeye (JPM) (SYSTEM5, set 8) + + + j5popeyeh + Popeye (JPM) (SYSTEM5, set 9) + + + j5popeyei + Popeye (JPM) (SYSTEM5, set 10) + + + j5popprz + Prize Popeye Vending (JPM) (SYSTEM5, set 1) + + + j5popprza + Prize Popeye Vending (JPM) (SYSTEM5, set 2) + + + j5popth + Popeye's Treasure Hunt (JPM) (SYSTEM5, set 1) + + + j5poptha + Popeye's Treasure Hunt (JPM) (SYSTEM5, set 2) + + + j5popthb + Popeye's Treasure Hunt (JPM) (SYSTEM5, set 3) + + + j5reelgh + Reel Ghost (JPM) (SYSTEM5-SAA) + + + j5revo + Revolver (JPM) (SYSTEM5, set 1) + + + j5revoa + Revolver (JPM) (SYSTEM5, set 2) + + + j5roul + Roulette (JPM) (SYSTEM5) + + + j5roulcl + Roulette Club (JPM) (SYSTEM5, set 1) + + + j5roulcla + Roulette Club (JPM) (SYSTEM5, set 2) + + + j5roulclb + Roulette Club (JPM) (SYSTEM5, set 3) + + + j5roulclc + Roulette Club (JPM) (SYSTEM5, set 4) + + + j5sizl + Sizzling (JPM) (SYSTEM5) + + + j5slvree + Silver Reels (JPM) (SYSTEM5, set 1) + + + j5slvreea + Silver Reels (JPM) (SYSTEM5, set 2) + + + j5slvstr + Silver Streak (JPM) (SYSTEM5, set 1) + + + j5slvstra + Silver Streak (JPM) (SYSTEM5, set 2) + + + j5slvstrb + Silver Streak (JPM) (SYSTEM5, set 3) + + + j5street + Streetwise (JPM) (SYSTEM5) + + + j5sup4 + Super 4 (JPM) (SYSTEM5-SAA) + + + j5supbar + Super Bars (JPM) (SYSTEM5, set 1) + + + j5supbara + Super Bars (JPM) (SYSTEM5, set 2) + + + j5suphi + Super Hi-Lo (JPM) (SYSTEM5-SAA) + + + j5swop + Swop A Fruit Club (JPM) (SYSTEM5-SAA) + + + j5td + Tumbling Dice (JPM) (SYSTEM5-SAA) + + + j5term + Terminator (JPM) (SYSTEM5) + + + j5topshp + Top Of The Shop Club (JPM) (SYSTEM5) + + + j5trail + Trailblazer Club (JPM) (SYSTEM5, set 1) + + + j5traila + Trailblazer Club (JPM) (SYSTEM5, set 2) + + + j5trailb + Trailblazer Club (JPM) (SYSTEM5, set 3) + + + j5tst1 + JPM System 5 Test Set (JPM) (SYSTEM5, set 1) + + + j5tst2 + JPM System 5 Test Set (JPM) (SYSTEM5, set 2) + + + j5tstal + JPM System 5 Alpha Display Test Utility (JPM) (SYSTEM5) + + + j5uj + Union Jackpot (JPM) (SYSTEM5, set 1) + + + j5uja + Union Jackpot (JPM) (SYSTEM5, set 2) + + + j5ujb + Union Jackpot (JPM) (SYSTEM5, set 3) + + + j5wsc + Wall Street Club (JPM) (SYSTEM5, set 1) + + + j5wsca + Wall Street Club (JPM) (SYSTEM5, set 2) + + + j6aceclb + Ace Of Clubs (Crystal) (IMPACT, GND D 4) + + + j6aceclba + Ace Of Clubs (Crystal) (IMPACT, GND D 4 P, Protocol) + + + j6acehi + Aces High (Ace) (IMPACT) + + + j6amdrm + American Dream (Mdm) (IMPACT) + + + j6arcade + Arcadia (JPM) (IMPACT) (AR9 C10, V9, set 1) + + + j6arcadea + Arcadia (JPM) (IMPACT) (AR9 A C10, V9, set 2) + + + j6arcadeb + Arcadia (JPM) (IMPACT) (AR9 C10, V9, set 3) + + + j6arcadec + Arcadia (JPM) (IMPACT) (AR9 P, V9, set 4, Protocol) + + + j6arcaded + Arcadia (JPM) (IMPACT) (AR9 P C10, V9, set 5, Protocol) + + + j6arcadee + Arcadia (JPM) (IMPACT) (AR10 C11, V10, set 1, Protocol) + + + j6arcadef + Arcadia (JPM) (IMPACT) (AR10 A C11, V10, set 2, Protocol) + + + j6arcadeg + Arcadia (JPM) (IMPACT) (AR10 C11, V10, set 3, Protocol) + + + j6arcadeh + Arcadia (JPM) (IMPACT) (AR10 P, V10, set 4, Protocol) + + + j6arcadei + Arcadia (JPM) (IMPACT) (AR10 P C11, V10, set 5, Protocol) + + + j6arcadej + Arcadia (JPM) (IMPACT) (AR10 C11, V10, set 6, Protocol?) + + + j6bags + Three Bags Full (JPM) (IMPACT) + + + j6bbankr + Big Banker (JPM) (IMPACT) (BB 2 T 2) + + + j6big50 + Big 50 (JPM) (IMPACT) (BF12 L12) + + + j6big50a + Big 50 (JPM) (IMPACT) (BF12P F12, Protocol) + + + j6big50b + Big 50 (JPM) (IMPACT) (BF12 AH12) + + + j6big50c + Big 50 (JPM) (IMPACT) (BF12 L12, Whitbread) + + + j6big50d + Big 50 (JPM) (IMPACT) (BF L8) + + + j6bigbnk + Big Banker (JPM) (IMPACT) (BB10C 20) (set 1) + + + j6bigbnka + Big Banker (JPM) (IMPACT) (BB10C 20) (set 2, Protocol) + + + j6bigbnkb + Big Banker (JPM) (IMPACT) (BB10C 20) (set 3) + + + j6bigbnkc + Big Banker (JPM) (IMPACT) (BB10C 20) (set 4) + + + j6bigbnkd + Big Banker (JPM) (IMPACT) (BB8 H18) + + + j6bigbnke + Big Banker (JPM) (IMPACT) (BB8 P H18) (Protocol) + + + j6bigbnkf + Big Banker (JPM) (IMPACT) (BB8 AH18) + + + j6bigbnkg + Big Banker (JPM) (IMPACT) (BB6 C 16) (set 1, Protocol) + + + j6bigbnkh + Big Banker (JPM) (IMPACT) (BB6 C 16) (set 2) + + + j6bigbnki + Big Banker (JPM) (IMPACT) (BB2B H11) + + + j6bigbnkj + Big Banker (JPM) (IMPACT) (BB2BP H11) (Protocol) + + + j6bigbnkk + Big Banker (JPM) (IMPACT) (BB2B AH11) + + + j6bigbnkl + Big Banker (JPM) (IMPACT) (BB2BI H11) + + + j6bigbnkm + Big Banker (JPM) (IMPACT) (BB2II H08) + + + j6bigbnkn + Big Banker (JPM) (IMPACT) (BB 9C 19) + + + j6bigbnko + Big Banker (JPM) (IMPACT) (BB5 I H15) + + + j6bigbnkp + Big Banker (JPM) (IMPACT) (BB4 I H09) + + + j6bigbuk + Big Bucks (JPM) (IMPACT) (set 1) + + + j6bigbuka + Big Bucks (JPM) (IMPACT) (set 2) + + + j6bigbukb + Big Bucks (JPM) (IMPACT) (set 3) + + + j6bigbukc + Big Bucks (JPM) (IMPACT) (set 4) + + + j6bigbukd + Big Bucks (JPM) (IMPACT) (set 5) + + + j6bigbuke + Big Bucks (JPM) (IMPACT) (set 6) + + + j6bigbukf + Big Bucks (JPM) (IMPACT) (set 7) + + + j6bigbukg + Big Bucks (JPM) (IMPACT) (set 8) + + + j6bigbukh + Big Bucks (JPM) (IMPACT) (set 9) + + + j6bigbuki + Big Bucks (JPM) (IMPACT) (set 10) + + + j6bigbukj + Big Bucks (JPM) (IMPACT) (set 11) + + + j6bigcsh + Big Cash Machine (Empire) (IMPACT) + + + j6bigpct + Big Picture (Ace) (IMPACT) (set 1) + + + j6bigpcta + Big Picture (Ace) (IMPACT) (set 2, Protocol) + + + j6bigpctb + Big Picture (Ace) (IMPACT) (set 3) + + + j6bigtop + Big Top Club (JPM) (IMPACT) (BT3 BT6) set 1) + + + j6bigtopa + Big Top Club (JPM) (IMPACT) (BT4 BT8) (set 2) + + + j6bigtopb + Big Top Club (JPM) (IMPACT) (BT4 BT8P) (set 3, Protocol) + + + j6bigtopc + Big Top Club (JPM) (IMPACT) (BT4 BT8F) (set 4) + + + j6bigwhl + Big Wheel (JPM) (IMPACT) (set 1) + + + j6bigwhla + Big Wheel (JPM) (IMPACT) (set 2, Protocol) + + + j6bigwhlb + Big Wheel (JPM) (IMPACT) (set 3) + + + j6bigwhlc + Big Wheel (JPM) (IMPACT) (set 4) + + + j6bigwhld + Big Wheel (JPM) (IMPACT) (set 5) + + + j6bigwhle + Big Wheel (JPM) (IMPACT) (set 6) + + + j6bmc + Big Money Club (Crystal) (IMPACT) (set 1) + + + j6bmca + Big Money Club (Crystal) (IMPACT) (set 2) + + + j6bnkrcl + Banker Club (JPM) (IMPACT) (V6, set 1) + + + j6bnkrcla + Banker Club (JPM) (IMPACT) (V6, set 2) + + + j6bnkrclb + Banker Club (JPM) (IMPACT) (V6, set 3) + + + j6bnkrclc + Banker Club (JPM) (IMPACT) (V2) + + + j6bno + Big Nite Out (Crystal) (IMPACT) (set 1) + + + j6bnoa + Big Nite Out (Crystal) (IMPACT) (set 2) + + + j6bnob + Big Nite Out (Crystal) (IMPACT) (set 3) + + + j6bnoc + Big Nite Out (Crystal) (IMPACT) (set 4) + + + j6bnza + Bonanza (JPM) (IMPACT) (BO1 H06) + + + j6bnzaa + Bonanza (JPM) (IMPACT) (BO1 P H06) (Protocol) + + + j6bnzab + Bonanza (JPM) (IMPACT) (BO1 AH06) + + + j6bnzac + Bonanza (JPM) (IMPACT) (BO1 I H06) + + + j6bnzad + Bonanza (JPM) (IMPACT) (BO 9 14) + + + j6bnzae + Bonanza (JPM) (IMPACT) (BO 9P 14) (Protocol) + + + j6bnzaf + Bonanza (JPM) (IMPACT) (BO 9 A 14) + + + j6bnzag + Bonanza (JPM) (IMPACT) (BO 9I 14) + + + j6bnzah + Bonanza (JPM) (IMPACT) (BO5 H10) + + + j6bnzai + Bonanza (JPM) (IMPACT) (BO5 I H10) + + + j6bnzaj + Bonanza (JPM) (IMPACT) (incomplete pair) + + + j6bnzak + Bonanza (JPM) (IMPACT) (BO06 11) + + + j6brkout + Breakout (JPM) (IMPACT) (set 1) + + + j6brkouta + Breakout (JPM) (IMPACT) (set 2) + + + j6btbw + Born To Be Wild Club (Crystal) (IMPACT) (set 1) + + + j6btbwa + Born To Be Wild Club (Crystal) (IMPACT) (set 2) + + + j6btbwb + Born To Be Wild Club (Crystal) (IMPACT) (set 3) + + + j6btbwc + Born To Be Wild Club (Crystal) (IMPACT) (set 4) + + + j6btbwd + Born To Be Wild Club (Crystal) (IMPACT) (set 5) + + + j6bucks + Bucks Fizz (Ace) (IMPACT) + + + j6camelt + Camelot (JPM) (IMPACT) (CA8 C10) + + + j6camelta + Camelot (JPM) (IMPACT) (CA8P C10, Protocol) + + + j6cameltb + Camelot (JPM) (IMPACT) (CA8 AC10) + + + j6cameltc + Camelot (JPM) (IMPACT) (CA8 C10, Whitbread) + + + j6cameltd + Camelot (JPM) (IMPACT) (CA6 C8) + + + j6cas5 + Casino 5ive Liner (JPM) (IMPACT) (set 1) + + + j6cas5a + Casino 5ive Liner (JPM) (IMPACT) (set 2) + + + j6cas5b + Casino 5ive Liner (JPM) (IMPACT) (set 3) + + + j6cas5c + Casino 5ive Liner (JPM) (IMPACT) (set 4) + + + j6cas5d + Casino 5ive Liner (JPM) (IMPACT) (set 5) + + + j6cas5e + Casino 5ive Liner (JPM) (IMPACT) (set 6) + + + j6cas5f + Casino 5ive Liner (JPM) (IMPACT) (set 7) + + + j6cas5g + Casino 5ive Liner (JPM) (IMPACT) (set 8, Whitbread) + + + j6cas5h + Casino 5ive Liner (JPM) (IMPACT) (set 9) + + + j6cas5i + Casino 5ive Liner (JPM) (IMPACT) (set 10) + + + j6cas5j + Casino 5ive Liner (JPM) (IMPACT) (set 11) + + + j6cas5k + Casino 5ive Liner (JPM) (IMPACT) (set 12, Whitbread) + + + j6cas5l + Casino 5ive Liner (JPM) (IMPACT) (set 13) + + + j6cascla + Casino Crazy Classic Club (JPM) (IMPACT) (set 1) + + + j6casclaa + Casino Crazy Classic Club (JPM) (IMPACT) (set 2) + + + j6casclab + Casino Crazy Classic Club (JPM) (IMPACT) (set 3) + + + j6casclac + Casino Crazy Classic Club (JPM) (IMPACT) (set 4) + + + j6casclad + Casino Crazy Classic Club (JPM) (IMPACT) (set 5) + + + j6casclae + Casino Crazy Classic Club (JPM) (IMPACT) (set 6) + + + j6casclaf + Casino Crazy Classic Club (JPM) (IMPACT) (set 7) + + + j6casclag + Casino Crazy Classic Club (JPM) (IMPACT) (set 8) + + + j6casclah + Casino Crazy Classic Club (JPM) (IMPACT) (set 9) + + + j6casclai + Casino Crazy Classic Club (JPM) (IMPACT) (set 10) + + + j6casclaj + Casino Crazy Classic Club (JPM) (IMPACT) (set 11) + + + j6casclak + Casino Crazy Classic Club (JPM) (IMPACT) (set 12) + + + j6casclal + Casino Crazy Classic Club (JPM) (IMPACT) (set 13) + + + j6casclam + Casino Crazy Classic Club (JPM) (IMPACT) (set 14) + + + j6casclan + Casino Crazy Classic Club (JPM) (IMPACT) (set 15) + + + j6casclao + Casino Crazy Classic Club (JPM) (IMPACT) (set 16) + + + j6casclap + Casino Crazy Classic Club (JPM) (IMPACT) (set 17) + + + j6casclaq + Casino Crazy Classic Club (JPM) (IMPACT) (set 18) + + + j6casclar + Casino Crazy Classic Club (JPM) (IMPACT) (set 19) + + + j6casclas + Casino Crazy Classic Club (JPM) (IMPACT) (set 20) + + + j6casclat + Casino Crazy Classic Club (JPM) (IMPACT) (set 21) + + + j6casclb + Casino Crazy Club (JPM) (IMPACT) (set 1) + + + j6casclba + Casino Crazy Club (JPM) (IMPACT) (set 2) + + + j6cascz + Casino Crazy (JPM) (IMPACT) (CC07C L12) (set 1) + + + j6cascza + Casino Crazy (JPM) (IMPACT) (CC07C L12) (set 2) + + + j6casczb + Casino Crazy (JPM) (IMPACT) (set 3) + + + j6casczc + Casino Crazy (JPM) (IMPACT) (CC11C L16) (set 4) + + + j6casczd + Casino Crazy (JPM) (IMPACT) (set 5) + + + j6cascze + Casino Crazy (JPM) (IMPACT) (CC16C L23) (set 6) + + + j6casczf + Casino Crazy (JPM) (IMPACT) (CC16C L23) (set 7) + + + j6casczg + Casino Crazy (JPM) (IMPACT) (CC16C AL23) (set 8) + + + j6casczh + Casino Crazy (JPM) (IMPACT) (CC16C L23) (set 9) + + + j6casczi + Casino Crazy (JPM) (IMPACT) (CC15C L22) (set 10) + + + j6casczj + Casino Crazy (JPM) (IMPACT) (set 11) + + + j6casczk + Casino Crazy (JPM) (IMPACT) (CC12C L17) (set 12) + + + j6casczl + Casino Crazy (JPM) (IMPACT) (set 13) + + + j6casczm + Casino Crazy (JPM) (IMPACT) (CC02C L08) (set 14) + + + j6caslas + Casino Las Vegas (JPM) (IMPACT) (set 1) + + + j6caslasa + Casino Las Vegas (JPM) (IMPACT) (set 2) + + + j6caslasb + Casino Las Vegas (JPM) (IMPACT) (set 3) + + + j6caslasc + Casino Las Vegas (JPM) (IMPACT) (set 4, Whitbread) + + + j6ccc + Casino Crazy Club (Crystal) (IMPACT) (set 1) + + + j6ccca + Casino Crazy Club (Crystal) (IMPACT) (set 2) + + + j6cccb + Casino Crazy Club (Crystal) (IMPACT) (set 3) + + + j6cccc + Casino Crazy Club (Crystal) (IMPACT) (set 4) + + + j6cccla + Casino Crazy Classic (JPM) (IMPACT) (set 1) + + + j6ccclaa + Casino Crazy Classic (JPM) (IMPACT) (set 2) + + + j6ccclab + Casino Crazy Classic (JPM) (IMPACT) (set 3) + + + j6ccclac + Casino Crazy Classic (JPM) (IMPACT) (set 4) + + + j6ccclad + Casino Crazy Classic (JPM) (IMPACT) (set 5) + + + j6ccclae + Casino Crazy Classic (JPM) (IMPACT) (set 6) + + + j6ccclaf + Casino Crazy Classic (JPM) (IMPACT) (set 7) + + + j6ccclag + Casino Crazy Classic (JPM) (IMPACT) (set 8) + + + j6ccclah + Casino Crazy Classic (JPM) (IMPACT) (set 9) + + + j6ccclai + Casino Crazy Classic (JPM) (IMPACT) (set 10) + + + j6ccclaj + Casino Crazy Classic (JPM) (IMPACT) (set 11) + + + j6ccclak + Casino Crazy Classic (JPM) (IMPACT) (set 12) + + + j6cdivr + Cash Diver (Crystal) (IMPACT) + + + j6cheque + Cheque Mate (JPM) (IMPACT) + + + j6cluclb + Cluedo Club (JPM) (IMPACT) (set 1) + + + j6cluclba + Cluedo Club (JPM) (IMPACT) (set 2) + + + j6cluclbb + Cluedo Club (JPM) (IMPACT) (set 3) + + + j6cluclbc + Cluedo Club (JPM) (IMPACT) (set 4) + + + j6cluclbd + Cluedo Club (JPM) (IMPACT) (set 5) + + + j6cluclbe + Cluedo Club (JPM) (IMPACT) (set 6) + + + j6cluclbf + Cluedo Club (JPM) (IMPACT) (set 7) + + + j6cluclbg + Cluedo Club (JPM) (IMPACT) (set 8) + + + j6cluclbh + Cluedo Club (JPM) (IMPACT) (set 9) + + + j6cluclbi + Cluedo Club (JPM) (IMPACT) (set 10) + + + j6cluclbj + Cluedo Club (JPM) (IMPACT) (set 11) + + + j6cluclbk + Cluedo Club (JPM) (IMPACT) (set 12) + + + j6cluclbl + Cluedo Club (JPM) (IMPACT) (set 13) + + + j6col + Coliseum (Mdm) (IMPACT) (set 1) + + + j6cola + Coliseum (Mdm) (IMPACT) (set 2) + + + j6colb + Coliseum Cash (JPM) (IMPACT) (set 6) + + + j6colc + Coliseum Cash (JPM) (IMPACT) (set 7) + + + j6colcsh + Coliseum Cash (JPM) (IMPACT) (set 1) + + + j6colcsha + Coliseum Cash (JPM) (IMPACT) (set 2) + + + j6colcshb + Coliseum Cash (JPM) (IMPACT) (set 3) + + + j6colcshc + Coliseum Cash (JPM) (IMPACT) (set 4) + + + j6colcshd + Coliseum Cash (JPM) (IMPACT) (set 5) + + + j6cold + Coliseum Cash (JPM) (IMPACT) (set 8) + + + j6cole + Coliseum Cash (JPM) (IMPACT) (set 9) + + + j6colf + Coliseum Cash (JPM) (IMPACT) (set 10) + + + j6colic + Coliseum (Crystal) (IMPACT) (set 1) + + + j6colica + Coliseum (Crystal) (IMPACT) (set 2) + + + j6colicb + Coliseum (Crystal) (IMPACT) (set 3) + + + j6colicc + Coliseum (Crystal) (IMPACT) (set 4) + + + j6colicd + Coliseum (Crystal) (IMPACT) (set 5) + + + j6colmon + Colour Of Money (JPM) (IMPACT) (set 1, Whitbread) + + + j6colmona + Colour Of Money (JPM) (IMPACT) (set 2) + + + j6colmonb + Colour Of Money (JPM) (IMPACT) (set 3) + + + j6colmonc + Colour Of Money (JPM) (IMPACT) (set 4) + + + j6colmond + Colour Of Money (JPM) (IMPACT) (set 5) + + + j6colmone + Colour Of Money (JPM) (IMPACT) (set 6, Whitbread) + + + j6colmonf + Colour Of Money (JPM) (IMPACT) (set 7) + + + j6colmong + Colour Of Money (JPM) (IMPACT) (set 8) + + + j6colmonh + Colour Of Money (JPM) (IMPACT) (set 9) + + + j6colmoni + Colour Of Money (JPM) (IMPACT) (set 10) + + + j6colmonj + Colour Of Money (JPM) (IMPACT) (set 11) + + + j6coprob + Cops 'n' Robbers (Qps) (IMPACT) (set 1) + + + j6coproba + Cops 'n' Robbers (Qps) (IMPACT) (set 2) + + + j6coprobb + Cops 'n' Robbers (Qps) (IMPACT) (set 3) + + + j6coprobc + Cops 'n' Robbers (Qps) (IMPACT) (set 4) + + + j6coprobd + Cops 'n' Robbers (Qps) (IMPACT) (set 5) + + + j6coprobe + Cops 'n' Robbers (Qps) (IMPACT) (set 6) + + + j6cpal + Caesars Palace (Ace) (IMPACT) (set 1) + + + j6cpala + Caesars Palace (Ace) (IMPACT) (set 2) + + + j6cpalb + Caesars Palace (Ace) (IMPACT) (set 3) + + + j6cpalc + Caesars Palace (Ace) (IMPACT) (set 4, Whitbread) + + + j6cpald + Caesars Palace (Crystal) (IMPACT) (set 1) + + + j6cpale + Caesars Palace (Crystal) (IMPACT) (set 2) + + + j6cpalf + Caesars Palace (Crystal) (IMPACT) (set 3) + + + j6cpalg + Caesars Palace (Ace) (IMPACT) (set 5) + + + j6cpclb + Caesar's Palace Club (JPM) (IMPACT) (set 1) + + + j6cpclba + Caesar's Palace Club (JPM) (IMPACT) (set 2) + + + j6cpclbb + Caesar's Palace Club (JPM) (IMPACT) (set 3, Protocol) + + + j6crack + Cracker (JPM) (IMPACT) (set 1) + + + j6cracka + Cracker (JPM) (IMPACT) (set 2) + + + j6crackb + Cracker (JPM) (IMPACT) (set 3) + + + j6crackc + Cracker (JPM) (IMPACT) (set 4) + + + j6crackd + Cracker (JPM) (IMPACT) (set 5) + + + j6cracke + Cracker (JPM) (IMPACT) (set 6, Whitbread) + + + j6crackf + Cracker (JPM) (IMPACT) (set 7) + + + j6crackg + Cracker (JPM) (IMPACT) (set 8) + + + j6crackh + Cracker (JPM) (IMPACT) (set 9) + + + j6cracki + Cracker (JPM) (IMPACT) (set 10) + + + j6crackj + Cracker (JPM) (IMPACT) (set 11) + + + j6crakr + Cracker (Crystal) (IMPACT) (set 1) + + + j6crakra + Cracker (Crystal) (IMPACT) (set 2) + + + j6crakrb + Cracker (Crystal) (IMPACT) (set 3) + + + j6crsfir + Cross Fire (JPM) (IMPACT) (set 1) + + + j6crsfira + Cross Fire (JPM) (IMPACT) (set 2) + + + j6crzclb + Crazy Club (JPM) (IMPACT) (set 1) + + + j6crzclba + Crazy Club (JPM) (IMPACT) (set 2) + + + j6crzclbb + Crazy Club (JPM) (IMPACT) (set 3) + + + j6crzclbc + Crazy Club (JPM) (IMPACT) (set 4) + + + j6cshbeu + Cash Box Club (Empire) (Euro) (IMPACT) + + + j6cshbox + Cash Box Club (Empire) (IMPACT) (set 1) + + + j6cshboxa + Cash Box Club (Empire) (IMPACT) (set 2) + + + j6cshboxb + Cash Box Club (Empire) (IMPACT) (set 3) + + + j6cshbst + Cash Buster (JPM) (IMPACT) (set 1) + + + j6cshbsta + Cash Buster (JPM) (IMPACT) (set 2) + + + j6cshbstb + Cash Buster (JPM) (IMPACT) (set 3) + + + j6cshbstc + Cash Buster (JPM) (IMPACT) (set 4, Whitbread) + + + j6cshbstd + Cash Buster (JPM) (IMPACT) (set 5) + + + j6cshcnt + Cash Countdown (JPM) (IMPACT) (set 1) + + + j6cshcnta + Cash Countdown (JPM) (IMPACT) (set 2) + + + j6cshrd + Cash Raider (Ace) (IMPACT) (set 1) + + + j6cshrda + Cash Raider (Ace) (IMPACT) (set 2) + + + j6cshrdb + Cash Raider (Ace) (IMPACT) (set 3) + + + j6cshrdc + Cash Raider (Ace) (IMPACT) (set 4, Whitbread) + + + j6cshrdd + Cash Raider (Ace) (IMPACT) (set 5) + + + j6cshtwr + Cash Towers (JPM) (IMPACT) + + + j6cshvgs + Cash Vegas Strip (JPM) (IMPACT) (set 1) + + + j6cshvgsa + Cash Vegas Strip (JPM) (IMPACT) (set 2) + + + j6cshvgsb + Cash Vegas Strip (JPM) (IMPACT) (set 3) + + + j6cshvgsc + Cash Vegas Strip (JPM) (IMPACT) (set 4) + + + j6cshvgsd + Cash Vegas Strip (JPM) (IMPACT) (set 5) + + + j6cshvgse + Cash Vegas Strip (JPM) (IMPACT) (set 6) + + + j6cshvgsf + Cash Vegas Strip (JPM) (IMPACT) (set 7) + + + j6cshvgsg + Cash Vegas Strip (JPM) (IMPACT) (set 8) + + + j6cshvgsh + Cash Vegas Strip (JPM) (IMPACT) (set 9) + + + j6cshvgsi + Cash Vegas Strip (JPM) (IMPACT) (set 10) + + + j6cshvgsj + Cash Vegas Strip (JPM) (IMPACT) (set 11) + + + j6cshvgsk + Cash Vegas Strip (JPM) (IMPACT) (set 12) + + + j6cshvgsl + Cash Vegas Strip (JPM) (IMPACT) (set 13) + + + j6cshvgsm + Cash Vegas Strip (JPM) (IMPACT) (set 14) + + + j6cshvgsn + Cash Vegas Strip (JPM) (IMPACT) (set 15) + + + j6cshvgso + Cash Vegas Strip (JPM) (IMPACT) (set 16) + + + j6cshvgsp + Cash Vegas Strip (JPM) (IMPACT) (set 17) + + + j6cshvgsq + Cash Vegas Strip (JPM) (IMPACT) (set 18) + + + j6cshvgsr + Cash Vegas Strip (JPM) (IMPACT) (set 19) + + + j6daygld + Daytona Gold (JPM) (IMPACT) (set 1) + + + j6dayglda + Daytona Gold (JPM) (IMPACT) (set 2) + + + j6daygldb + Daytona Gold (JPM) (IMPACT) (set 3) + + + j6daygldc + Daytona Gold (JPM) (IMPACT) (set 4) + + + j6daygldd + Daytona Gold (JPM) (IMPACT) (set 5) + + + j6dayglde + Daytona Gold (JPM) (IMPACT) (set 6) + + + j6dayml + Daytona Millennium (JPM) (IMPACT) (set 1) + + + j6daymla + Daytona Millennium (JPM) (IMPACT) (set 2) + + + j6daymlb + Daytona Millennium (JPM) (IMPACT) (set 3) + + + j6dmngz + Diamond Geezer (JPM) (IMPACT) + + + j6dmnjkr + Demon Jokers (JPM) (IMPACT) (set 1) + + + j6dmnjkra + Demon Jokers (JPM) (IMPACT) (set 2) + + + j6dmnjkrb + Demon Jokers (JPM) (IMPACT) (set 3) + + + j6dmnjkrc + Demon Jokers (JPM) (IMPACT) (set 4) + + + j6drdogh + Dr Dough (Qps) (IMPACT) + + + j6dyfl + Do You Feel Lucky (JPM) (IMPACT) (set 1) + + + j6dyfla + Do You Feel Lucky (JPM) (IMPACT) (set 2) + + + j6dyflb + Do You Feel Lucky (JPM) (IMPACT) (set 3) + + + j6dyflc + Do You Feel Lucky (JPM) (IMPACT) (set 4) + + + j6dyfld + Do You Feel Lucky (JPM) (IMPACT) (set 5) + + + j6dyfle + Do You Feel Lucky (JPM) (IMPACT) (set 6, Whitbread) + + + j6dyflf + Do You Feel Lucky (JPM) (IMPACT) (set 7) + + + j6dyflg + Do You Feel Lucky (JPM) (IMPACT) (set 8) + + + j6dyflh + Do You Feel Lucky (JPM) (IMPACT) (set 9) + + + j6dyfli + Do You Feel Lucky (JPM) (IMPACT) (set 10) + + + j6dyflj + Do You Feel Lucky (JPM) (IMPACT) (set 11) + + + j6easy + Easy Money (Crystal) (IMPACT) (set 1) + + + j6easya + Easy Money (Crystal) (IMPACT) (set 2) + + + j6easyb + Easy Money (Crystal) (IMPACT) (set 3) + + + j6easyc + Easy Money (Crystal) (IMPACT) (set 4) + + + j6euphor + Euphoria (Ace) (IMPACT) (set 1) + + + j6euphora + Euphoria (Ace) (IMPACT) (set 2) + + + j6euphorb + Euphoria (Ace) (IMPACT) (set 3) + + + j6euphorc + Euphoria (Ace) (IMPACT) (set 4) + + + j6euphord + Euphoria (Ace) (IMPACT) (set 5) + + + j6euphore + Euphoria (Ace) (IMPACT) (set 6) + + + j6euphorf + Euphoria (Ace) (IMPACT) (set 7) + + + j6ewn + Each Way Nudger Mark 3 (Crystal) (IMPACT) (set 1) + + + j6ewndg + Each Way Nudger Mark 3 (Crystal) (IMPACT) (set 2) + + + j6ewndga + Each Way Nudger Mark 3 (Crystal) (IMPACT) (set 3) + + + j6ewndgb + Each Way Nudger Mark 3 (Crystal) (IMPACT) (set 4) + + + j6fastfr + Fast Fruits Club (Qps) (IMPACT) (set 1) + + + j6fastfra + Fast Fruits Club (Qps) (IMPACT) (set 2) + + + j6fasttk + Fast?Trak (JPM) (IMPACT) (set 1) + + + j6fasttka + Fast?Trak (JPM) (IMPACT) (set 2) + + + j6fasttkb + Fast?Trak (JPM) (IMPACT) (set 3) + + + j6fasttkc + Fast?Trak (JPM) (IMPACT) (set 4, Whitbread) + + + j6fbcrz + Football Crazy (JPM) (IMPACT) + + + j6ffc + Frame & Fortune Club (Crystal) (IMPACT) (set 1) + + + j6ffca + Frame & Fortune Club (Crystal) (IMPACT) (set 2) + + + j6ffcb + Frame & Fortune Club (Crystal) (IMPACT) (set 3) + + + j6ffcc + Frame & Fortune Club (Crystal) (IMPACT) (set 4) + + + j6ffcd + Frame & Fortune Club (Crystal) (IMPACT) (set 5) + + + j6ffce + Frame & Fortune Club (Crystal) (IMPACT) (set 6) + + + j6fifth + 5th Dimension (Ace) (IMPACT) + + + j6filth + Filthy Rich Club (JPM) (IMPACT) (set 1) + + + j6filtha + Filthy Rich Club (JPM) (IMPACT) (set 2) + + + j6filthb + Filthy Rich Club (JPM) (IMPACT) (set 3) + + + j6filthc + Filthy Rich Club (JPM) (IMPACT) (set 4) + + + j6firbl + Fireball (Ace) (IMPACT) (set 1, Whitbread) + + + j6firbla + Fireball (Ace) (IMPACT) (set 2) + + + j6firblb + Fireball (Ace) (IMPACT) (set 3) + + + j6firblc + Fireball (Ace) (IMPACT) (set 4) + + + j6firbld + Fireball (Ace) (IMPACT) (set 5, Whitbread) + + + j6firclb + Firecracker Club (JPM) (IMPACT) (set 1) + + + j6firclba + Firecracker Club (JPM) (IMPACT) (set 2) + + + j6firclbb + Firecracker Club (JPM) (IMPACT) (set 3) + + + j6firclbc + Firecracker Club (JPM) (IMPACT) (set 4) + + + j6fireck + Firecracker (JPM) (IMPACT) (set 1) + + + j6firecka + Firecracker (JPM) (IMPACT) (set 2) + + + j6fireckb + Firecracker (JPM) (IMPACT) (set 3) + + + j6fireckc + Firecracker (JPM) (IMPACT) (set 4) + + + j6fireckd + Firecracker (JPM) (IMPACT) (set 5) + + + j6firecke + Firecracker (JPM) (IMPACT) (set 6) + + + j6fivalv + Five Alive Club (JPM) (IMPACT) (set 1) + + + j6fivalva + Five Alive Club (JPM) (IMPACT) (set 2) + + + j6fivalvb + Five Alive Club (JPM) (IMPACT) (set 3) + + + j6fiveln + Five Liner (JPM) (IMPACT) (set 1) + + + j6fivelna + Five Liner (JPM) (IMPACT) (set 2) + + + j6fivelnb + Five Liner (JPM) (IMPACT) (set 3) + + + j6fivelnc + Five Liner (JPM) (IMPACT) (set 4, Whitbread) + + + j6footy + Football Fever (Empire) (IMPACT) (set 1) + + + j6footya + Football Fever (Empire) (IMPACT) (set 2) + + + j6footyb + Football Fever (Empire) (IMPACT) (set 3) + + + j6framft + Frame & Fortune Club (JPM) (IMPACT) + + + j6frc10 + Force 10 (JPM) (IMPACT) (set 1) + + + j6frc10a + Force 10 (JPM) (IMPACT) (set 2) + + + j6frc10b + Force 10 (JPM) (IMPACT) (set 3) + + + j6frc10c + Force 10 (JPM) (IMPACT) (set 4, Whitbread) + + + j6frc10d + Force 10 (JPM) (IMPACT) (set 5) + + + j6frtmch + The Fruit Machine (JPM) (IMPACT) + + + j6frtpot + Fruitpots (Qps) (IMPACT) (set 1) + + + j6frtpota + Fruitpots (Qps) (IMPACT) (set 2) + + + j6frtpotb + Fruitpots (Qps) (IMPACT) (set 3) + + + j6frtpotc + Fruitpots (Qps) (IMPACT) (set 4) + + + j6gforce + G Force Roller Coaster (JPM) (IMPACT) (set 1) + + + j6gforcea + G Force Roller Coaster (JPM) (IMPACT) (set 2) + + + j6gforceb + G Force Roller Coaster (JPM) (IMPACT) (set 3) + + + j6gforcec + G Force Roller Coaster (JPM) (IMPACT) (set 4, Whitbread) + + + j6gforced + G Force Roller Coaster (JPM) (IMPACT) (set 5) + + + j6gidogh + G.I. Dough (Ace) (IMPACT) + + + j6gldclb + Gladiator Club (JPM) (IMPACT) (set 1) + + + j6gldclba + Gladiator Club (JPM) (IMPACT) (set 2) + + + j6gldclbb + Gladiator Club (JPM) (IMPACT) (set 3, Protocol) + + + j6gldday + Golden Day (JPM) (IMPACT) + + + j6gldmin + Gold Mine (Empire) (IMPACT) + + + j6gldpl + Golden Palace (Qps) (IMPACT) + + + j6gogold + Go For Gold (JPM) (IMPACT) (set 1) + + + j6gogolda + Go For Gold (JPM) (IMPACT) (set 2, Protocol) + + + j6gogoldb + Go For Gold (JPM) (IMPACT) (set 3) + + + j6gogoldc + Go For Gold (JPM) (IMPACT) (set 4, Whitbread) + + + j6golddm + Golden Demons (JPM) (IMPACT) (set 1) + + + j6golddma + Golden Demons (JPM) (IMPACT) (set 2) + + + j6goldgl + Golden Goal (JPM) (IMPACT) (set 1) + + + j6goldgla + Golden Goal (JPM) (IMPACT) (set 2) + + + j6goldglb + Golden Goal (JPM) (IMPACT) (set 3) + + + j6goldglc + Golden Goal (JPM) (IMPACT) (set 4) + + + j6goldgld + Golden Goal (JPM) (IMPACT) (set 5) + + + j6goldgle + Golden Goal (JPM) (IMPACT) (set 6) + + + j6goldglf + Golden Goal (JPM) (IMPACT) (set 7) + + + j6goldglg + Golden Goal (JPM) (IMPACT) (set 8) + + + j6goldglh + Golden Goal (JPM) (IMPACT) (set 9) + + + j6goldgli + Golden Goal (JPM) (IMPACT) (set 10) + + + j6goldglj + Golden Goal (JPM) (IMPACT) (set 11) + + + j6goldglk + Golden Goal (JPM) (IMPACT) (set 12) + + + j6goldgll + Golden Goal (JPM) (IMPACT) (set 13) + + + j6grc + Gold Rush Club (Crystal) (IMPACT) (set 1) + + + j6grca + Gold Rush Club (Crystal) (IMPACT) (set 2) + + + j6guab + Give Us A Break (JPM) (IMPACT) (GB 5 C 8) (set 1) + + + j6guaba + Give Us A Break (JPM) (IMPACT) (GB 5P C 8) (set 2, Protocol) + + + j6guabb + Give Us A Break (JPM) (IMPACT) (GB 5 C 8) (set 3, Whitbread) + + + j6guabc + Give Us A Break (JPM) (IMPACT) (GB 6 C 9) (set 4) + + + j6guabcl + Give Us A Break Club (JPM) (IMPACT) (GB 8 GB12) (set 1) + + + j6guabcla + Give Us A Break Club (JPM) (IMPACT) (GB 8 GB12P) (set 2, Protocol) + + + j6guabd + Give Us A Break (JPM) (IMPACT) (GB 6P C 9) (set 5, Protocol) + + + j6guabe + Give Us A Break (JPM) (IMPACT) (GB 6 C 9) (set 6) + + + j6guabf + Give Us A Break (JPM) (IMPACT) (GB 6 C 9) (set 7, Whitbread) + + + j6h5clb + High Five Club (JPM) (IMPACT) (set 1) + + + j6h5clba + High Five Club (JPM) (IMPACT) (set 2) + + + j6hapyhr + Happy Hour (JPM) (IMPACT) (HH2 C5) (set 1) + + + j6hapyhra + Happy Hour (JPM) (IMPACT) (HH2 C5) (set 2) + + + j6hapyhrb + Happy Hour (JPM) (IMPACT) (HH2 C5) (set 3) + + + j6hdc + Hot Dogs Club (Crystal) (IMPACT) (set 1) + + + j6hdca + Hot Dogs Club (Crystal) (IMPACT) (set 2) + + + j6hdcb + Hot Dogs Club (Crystal) (IMPACT) (set 3) + + + j6hdcc + Hot Dogs Club (Crystal) (IMPACT) (set 4) + + + j6hdcd + Hot Dogs Club (Crystal) (IMPACT) (set 5) + + + j6hdce + Hot Dogs Club (Crystal) (IMPACT) (set 6) + + + j6hdcf + Hot Dogs Club (Crystal) (IMPACT) (set 7) + + + j6hdcg + Hot Dogs Club (Crystal) (IMPACT) (set 8) + + + j6hifly + Hi Flyer (Ace) (IMPACT) + + + j6hikar + Hi Karate (Crystal) (IMPACT) (set 1) + + + j6hikara + Hi Karate (Crystal) (IMPACT) (set 2) + + + j6hikarb + Hi Karate (Crystal) (IMPACT) (set 3) + + + j6hilosv + Hi-Lo Silver (JPM) (IMPACT) (set 1) + + + j6hilosva + Hi-Lo Silver (JPM) (IMPACT) (set 2) + + + j6hilosvb + Hi-Lo Silver (JPM) (IMPACT) (set 3) + + + j6hilosvc + Hi-Lo Silver (JPM) (IMPACT) (set 4, Whitbread) + + + j6hilosvd + Hi-Lo Silver (JPM) (IMPACT) (set 5) + + + j6hilosve + Hi-Lo Silver (JPM) (IMPACT) (set 6) + + + j6hiphop + Hip Hopper (Ace) (IMPACT) (set 1) + + + j6hiphopa + Hip Hopper (Ace) (IMPACT) (set 2) + + + j6hiphopb + Hip Hopper (Ace) (IMPACT) (set 3) + + + j6hiphopc + Hip Hopper (Ace) (IMPACT) (set 4) + + + j6hiphopd + Hip Hopper (Ace) (IMPACT) (set 5) + + + j6hirlcl + Hi Roller Club (JPM) (IMPACT) (set 1) + + + j6hirlcla + Hi Roller Club (JPM) (IMPACT) (set 2) + + + j6hirlclb + Hi Roller Club (JPM) (IMPACT) (set 3) + + + j6hirlclc + Hi Roller Club (JPM) (IMPACT) (set 4, Protocol) + + + j6hirol + Hi Roller (JPM) (IMPACT) (set 1) + + + j6hirola + Hi Roller (JPM) (IMPACT) (set 2) + + + j6hirolb + Hi Roller (JPM) (IMPACT) (set 3) + + + j6hirolc + Hi Roller (JPM) (IMPACT) (set 4, Whitbread) + + + j6hirold + Hi Roller (JPM) (IMPACT) (set 5, Whitbread) + + + j6hisprt + High Spirits (Empire) (IMPACT) (prototype?) + + + j6histk + Hi Stakes (Qps) (IMPACT) (set 1) + + + j6histka + Hi Stakes (Qps) (IMPACT) (set 2) + + + j6hotsht + Hot Shot (Ace) (IMPACT) (set 1) + + + j6hotshta + Hot Shot (Ace) (IMPACT) (set 2) + + + j6hotshtb + Hot Shot (Ace) (IMPACT) (set 3) + + + j6hotshtc + Hot Shot (Ace) (IMPACT) (set 4, Whitbread) + + + j6hotshtd + Hot Shot (Ace) (IMPACT) (set 5) + + + j6hotshte + Hot Shot (Ace) (IMPACT) (set 6) + + + j6hotshtf + Hot Shot (Ace) (IMPACT) (set 7) + + + j6hotshtg + Hot Shot (Ace) (IMPACT) (set 8) + + + j6hotshth + Hot Shot (Ace) (IMPACT) (set 9) + + + j6hotshti + Hot Shot (Ace) (IMPACT) (set 10) + + + j6hotshtj + Hot Shot (Ace) (IMPACT) (set 11) + + + j6hotshtk + Hot Shot (Ace) (IMPACT) (set 12) + + + j6hotshtl + Hot Shot (Ace) (IMPACT) (set 13) + + + j6impact + Hi Impact (JPM) (IMPACT) (set 1) + + + j6impacta + Hi Impact (JPM) (IMPACT) (set 2) + + + j6impactb + Hi Impact (JPM) (IMPACT) (set 3) + + + j6impactc + Hi Impact (JPM) (IMPACT) (15GBP Jackpot) + + + j6impls + Impulse (Crystal) (IMPACT) + + + j6impuls + Impulse (JPM) (IMPACT) (IP 5 C13) (set 1) + + + j6impulsa + Impulse (JPM) (IMPACT) (IP 6 C14) (set 2) + + + j6impulsb + Impulse (JPM) (IMPACT) (IP 6 AC14) (set 3) + + + j6impulsc + Impulse (JPM) (IMPACT) (IP 7 C15) (set 4) + + + j6impulsd + Impulse (JPM) (IMPACT) (IP 7 AC13) (set 5) + + + j6impulse + Impulse (JPM) (IMPACT) (IP 7P C15) (set 6) + + + j6impulsf + Impulse (JPM) (IMPACT) (IP 7P C15) (set 7, Whitbread) + + + j6indy + Indiana Jones (JPM) (IMPACT) (IJ6 L11) (set 1) + + + j6indya + Indiana Jones (JPM) (IMPACT) (IJ6P L11) (set 2, Protocol) + + + j6indyb + Indiana Jones (JPM) (IMPACT) (IJ6 I L11) (set 3) + + + j6indyc + Indiana Jones (JPM) (IMPACT) (IJ6A AL13) (set 4) + + + j6indyd + Indiana Jones (JPM) (IMPACT) (IJ6AP AL13) (set 5, Protocol) + + + j6indye + Indiana Jones (JPM) (IMPACT) (IJ8 L18) (set 6) + + + j6indyf + Indiana Jones (JPM) (IMPACT) (IJ8P L18) (set 7, Protocol) + + + j6indyg + Indiana Jones (JPM) (IMPACT) (IJ8 AL18) (set 8) + + + j6indyge + Indiana Jones (JPM) (IMPACT, German set 1) + + + j6indyge2 + Indiana Jones (JPM) (IMPACT, German set 2) + + + j6indyh + Indiana Jones (JPM) (IMPACT) (IJ8 I L18) (set 9) + + + j6indyi + Indiana Jones (JPM) (IMPACT) (IJ11 L22) (set 10) + + + j6indyj + Indiana Jones (JPM) (IMPACT) (IJ11P L22) (set 11, Protocol) + + + j6indyk + Indiana Jones (JPM) (IMPACT) (IJ11 AL22) (set 12) + + + j6jackjs + Jackpot Justice (Qps) (IMPACT) (set 1) + + + j6jackjsa + Jackpot Justice (Qps) (IMPACT) (set 2) + + + j6jackjsb + Jackpot Justice (Qps) (IMPACT) (set 3) + + + j6jackjsc + Jackpot Justice (Qps) (IMPACT) (set 4) + + + j6jkpldx + Jokers Plus Deluxe (JPM) (IMPACT) (set 1) + + + j6jkpldxa + Jokers Plus Deluxe (JPM) (IMPACT) (set 2) + + + j6jkrgld + Jokers Gold (JPM) (IMPACT) + + + j6jkrpls + Jokers Plus (JPM) (IMPACT) (set 1) + + + j6jkrplsa + Jokers Plus (JPM) (IMPACT) (set 2) + + + j6jkrplsb + Jokers Plus (JPM) (IMPACT) (set 3) + + + j6jkrplsc + Jokers Plus (JPM) (IMPACT) (set 4) + + + j6jkrplsd + Jokers Plus (JPM) (IMPACT) (set 5) + + + j6jkrplse + Jokers Plus (JPM) (IMPACT) (set 6) + + + j6jkwld + Jokers Wild (JPM) (IMPACT) + + + j6jungfv + Jungle Fever (Ace) (IMPACT) + + + j6kamel + Kameleon (JPM) (IMPACT) + + + j6kapang + Kapang! (Crystal) (IMPACT) (set 1) + + + j6kapanga + Kapang! (Crystal) (IMPACT) (set 2) + + + j6kfc + Kung Fu Club (Crystal) (IMPACT) (set 1) + + + j6kfca + Kung Fu Club (Crystal) (IMPACT) (set 2) + + + j6kfcb + Kung Fu Club (Crystal) (IMPACT) (set 3) + + + j6knight + Your Lucky Knight (JPM) (IMPACT) (set 1) + + + j6knighta + Your Lucky Knight (JPM) (IMPACT) (set 2) + + + j6knightb + Your Lucky Knight (JPM) (IMPACT) (set 3) + + + j6knightc + Your Lucky Knight (JPM) (IMPACT) (set 4) + + + j6knightd + Your Lucky Knight (JPM) (IMPACT) (set 5) + + + j6knighte + Your Lucky Knight (JPM) (IMPACT) (set 6) + + + j6kungfu + Kung Fu (Ace) (IMPACT) (set 1) + + + j6kungfua + Kung Fu (Ace) (IMPACT) (set 2) + + + j6kungfub + Kung Fu (Ace) (IMPACT) (set 3) + + + j6kungfuc + Kung Fu (Ace) (IMPACT) (set 4) + + + j6kungfud + Kung Fu (Ace) (IMPACT) (set 5, Whitbread) + + + j6luckla + Lucky Las Vegas (Crystal) (IMPACT) (set 1) + + + j6lucklaa + Lucky Las Vegas (Crystal) (IMPACT) (set 2) + + + j6lucklab + Lucky Las Vegas (Crystal) (IMPACT) (set 3) + + + j6lucklo + Lucky Lottery Club (Crystal) (IMPACT) (set 1) + + + j6luckloa + Lucky Lottery Club (Crystal) (IMPACT) (set 2) + + + j6magcir + Magic Circle Club (JPM) (IMPACT) (set 1) + + + j6magcira + Magic Circle Club (JPM) (IMPACT) (set 2) + + + j6magcirb + Magic Circle Club (JPM) (IMPACT) (set 3) + + + j6magcirc + Magic Circle Club (JPM) (IMPACT) (set 4) + + + j6magcird + Magic Circle Club (JPM) (IMPACT) (set 5) + + + j6mavrk + Maverick (JPM) (IMPACT) (set 1) + + + j6mavrka + Maverick (JPM) (IMPACT) (set 2) + + + j6mavrkb + Maverick (JPM) (IMPACT) (set 3) + + + j6mavrkc + Maverick (JPM) (IMPACT) (set 4, Whitbread) + + + j6mavrkd + Maverick (JPM) (IMPACT) (set 5) + + + j6maxcsh + Maximus Cash (JPM) (IMPACT) + + + j6maxod + Maximum Overdrive (JPM) (IMPACT) (set 1) + + + j6maxoda + Maximum Overdrive (JPM) (IMPACT) (set 2) + + + j6maxodb + Maximum Overdrive (JPM) (IMPACT) (set 3) + + + j6maxodc + Maximum Overdrive (JPM) (IMPACT) (set 4, Whitbread) + + + j6medal + Medallion Job (Qps) (IMPACT) (set 1) + + + j6medala + Medallion Job (Qps) (IMPACT) (set 2) + + + j6medalb + Medallion Job (Qps) (IMPACT) (set 3) + + + j6medalc + Medallion Job (Qps) (IMPACT) (set 4) + + + j6medald + Medallion Job (Qps) (IMPACT) (set 5) + + + j6megbck + Mega Bucks (JPM) (IMPACT) (set 1) + + + j6megbcka + Mega Bucks (JPM) (IMPACT) (set 2) + + + j6megbckb + Mega Bucks (JPM) (IMPACT) (set 3) + + + j6megbckc + Mega Bucks (JPM) (IMPACT) (set 4) + + + j6megbckd + Mega Bucks (JPM) (IMPACT) (set 5, Whitbread) + + + j6milln + Millionaire (JPM) (IMPACT) (set 1) + + + j6millna + Millionaire (JPM) (IMPACT) (set 2) + + + j6monmad + Money Madness (Ace) (IMPACT) + + + j6mono60 + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO13 C24) (set 1) + + + j6mono60a + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO13 C24) (set 2) + + + j6mono60b + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO13 C24) (set 3) + + + j6mono60c + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO13 C24) (set 4, Whitbread) + + + j6mono60d + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO11 L22) (set 5) + + + j6mono60e + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO11P L22)(set 6, Protocol) + + + j6mono60f + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO11 AL22 (set 7) + + + j6mono60g + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO11 L22) (set 8, Whitbread) + + + j6mono60h + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO11 IL22) (set 9) + + + j6mono60i + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO11 IL22) (set 10) + + + j6mono60j + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO8 L16) (set 11) + + + j6mono60k + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (set 12) + + + j6mono60l + Monopoly 60th Anniversary Edition (JPM) (IMPACT) (MO3 L11) (set 13) + + + j6monobn + Monopoly Bingo (JPM) (IMPACT) (set 1) + + + j6monobna + Monopoly Bingo (JPM) (IMPACT) (set 2) + + + j6monobnb + Monopoly Bingo (JPM) (IMPACT) (set 3) + + + j6monst + Monster Cash Club (Crystal) (IMPACT) (set 1) + + + j6monsta + Monster Cash Club (Crystal) (IMPACT) (set 2) + + + j6monstb + Monster Cash Club (Crystal) (IMPACT) (set 3) + + + j6monstc + Monster Cash Club (Crystal) (IMPACT) (set 4) + + + j6monstd + Monster Cash Club (Crystal) (IMPACT) (set 5) + + + j6montlk + Money Talks (JPM) (IMPACT) (MT5 L17) (set 1) + + + j6montlka + Money Talks (JPM) (IMPACT) (MT5 I L17) (set 2) + + + j6montlkb + Money Talks (JPM) (IMPACT) (MT3 L12) (set 3) + + + j6montlkc + Money Talks (JPM) (IMPACT) (MT3 P L12) (set 4, Protocol) + + + j6montlkd + Money Talks (JPM) (IMPACT) (MT3 A L12) (set 5) + + + j6montlke + Money Talks (JPM) (IMPACT) (MT3 P GL12) (set 6, Protocol) + + + j6montlkf + Money Talks (JPM) (IMPACT) (MT7 L19) (set 7) + + + j6montlkg + Money Talks (JPM) (IMPACT) (MT7 P L19) (set 8, Protocol) + + + j6montlkh + Money Talks (JPM) (IMPACT) (MT7 A L19) (set 9) + + + j6outlaw + Outlaw (JPM) (IMPACT, v3) + + + j6outlawc + Outlaw (JPM) (IMPACT, Club?) + + + j6outlawd + Outlaw (JPM) (IMPACT, v3) (Protocol) + + + j6oxo + Oxo (JPM) (IMPACT) (set 1) + + + j6oxoa + Oxo (JPM) (IMPACT) (set 2) + + + j6oxob + Oxo (JPM) (IMPACT) (set 3) + + + j6oxobin + Oxo Bingo (JPM) (IMPACT) (OX6 L12) (set 1) + + + j6oxobina + Oxo Bingo (JPM) (IMPACT) (OX6 L12) (set 2) + + + j6oxobinb + Oxo Bingo (JPM) (IMPACT) (OX8 AC14) (set 3) + + + j6oxobinc + Oxo Bingo (JPM) (IMPACT) (OX8 AC14) (set 4) + + + j6oxobind + Oxo Bingo (JPM) (IMPACT) (OX11 AC17) (set 5) + + + j6oxobine + Oxo Bingo (JPM) (IMPACT) (set 6) + + + j6oxobinf + Oxo Bingo (JPM) (IMPACT) (OX11 AC17) (set 7) + + + j6oxoc + Oxo (JPM) (IMPACT) (set 4) + + + j6oxod + Oxo (JPM) (IMPACT) (set 5) + + + j6oxoe + Oxo (JPM) (IMPACT) (set 6) + + + j6pacman + Pac Man Plus (Qps) (IMPACT) + + + j6papa + Paparazzi (Empire) (IMPACT) (set 1) + + + j6papaa + Paparazzi (Empire) (IMPACT) (set 2) + + + j6papab + Paparazzi (Empire) (IMPACT) (set 3) + + + j6papac + Paparazzi (Empire) (IMPACT) (set 4) + + + j6papad + Paparazzi (Empire) (IMPACT) (set 5) + + + j6papae + Paparazzi (Empire) (IMPACT) (set 6) + + + j6papaf + Paparazzi (Empire) (IMPACT) (set 7) + + + j6phxgld + Phoenix Gold (JPM) (IMPACT) (set 1) + + + j6phxglda + Phoenix Gold (JPM) (IMPACT) (set 2) + + + j6phxgldb + Phoenix Gold (JPM) (IMPACT) (set 3) + + + j6phxgldc + Phoenix Gold (JPM) (IMPACT) (set 4) + + + j6phxgldd + Phoenix Gold (JPM) (IMPACT) (set 5) + + + j6phxglde + Phoenix Gold (JPM) (IMPACT) (set 6) + + + j6phxgldf + Phoenix Gold (JPM) (IMPACT) (set 7) + + + j6phxgldg + Phoenix Gold (JPM) (IMPACT) (set 8) + + + j6pinfvr + Pinball Fever (Crystal) (IMPACT) + + + j6pinwzc + Pinball Wizard (Crystal) (IMPACT) (set 1) + + + j6pinwzca + Pinball Wizard (Crystal) (IMPACT) (set 2) + + + j6pinwzcb + Pinball Wizard (Crystal) (IMPACT) (set 3) + + + j6pinwzd + Pinball Wizard (JPM) (IMPACT) (set 1) + + + j6pinwzda + Pinball Wizard (JPM) (IMPACT) (set 2) + + + j6pinwzdb + Pinball Wizard (JPM) (IMPACT) (set 3) + + + j6pinwzdc + Pinball Wizard (JPM) (IMPACT) (set 4, Whitbread) + + + j6pinwzdd + Pinball Wizard (JPM) (IMPACT) (set 5) + + + j6pinwzde + Pinball Wizard (JPM) (IMPACT) (set 6) + + + j6pirgld + Pirates Gold (JPM) (IMPACT) (set 1) + + + j6pirglda + Pirates Gold (JPM) (IMPACT) (set 2) + + + j6pnxgd + Phoenix Gold De Luxe (JPM) (IMPACT) + + + j6pnxmil + Phoenix Millennium (JPM) (IMPACT) (set 1) + + + j6pnxmila + Phoenix Millennium (JPM) (IMPACT) (set 2) + + + j6pnxmilb + Phoenix Millennium (JPM) (IMPACT) (set 3) + + + j6pnxmilc + Phoenix Millennium (JPM) (IMPACT) (set 4) + + + j6pog + Pot Of Gold (Ace) (IMPACT) (set 1) + + + j6poga + Pot Of Gold (Ace) (IMPACT) (set 2) + + + j6pogb + Pot Of Gold (Ace) (IMPACT) (set 3) + + + j6pogc + Pot Of Gold (Ace) (IMPACT) (set 4) + + + j6pogcls + Pot Of Gold Classic (Ace) (IMPACT) (set 1) + + + j6pogclsa + Pot Of Gold Classic (Ace) (IMPACT) (set 2) + + + j6pogclsb + Pot Of Gold Classic (Ace) (IMPACT) (set 3) + + + j6pogd + Pot Of Gold (Ace) (IMPACT) (set 5) + + + j6pompay + Up Pompay (Ace) (IMPACT) (set 1) + + + j6pompaya + Up Pompay (Ace) (IMPACT) (set 2) + + + j6pompayb + Up Pompay (Ace) (IMPACT) (set 3) + + + j6pompayc + Up Pompay (Ace) (IMPACT) (set 4, Whitbread) + + + j6popoli + Popeye & Olive (JPM) (IMPACT) (set 1) + + + j6popolia + Popeye & Olive (JPM) (IMPACT) (set 2) + + + j6potg + Pot Of Gold (Crystal) (IMPACT) (set 1) + + + j6potga + Pot Of Gold (Crystal) (IMPACT) (set 2) + + + j6potgb + Pot Of Gold (Crystal) (IMPACT) (set 3) + + + j6pwrlin + Power Lines (JPM) (IMPACT) (set 1) + + + j6pwrlina + Power Lines (JPM) (IMPACT) (set 2) + + + j6pwrspn + Powerspin (JPM) (IMPACT) (set 1) + + + j6pwrspna + Powerspin (JPM) (IMPACT) (set 2) + + + j6pwrspnb + Powerspin (JPM) (IMPACT) (set 3) + + + j6pwrspnc + Powerspin (JPM) (IMPACT) (set 4, Whitbread) + + + j6pwrspnd + Powerspin (JPM) (IMPACT) (set 5) + + + j6pwrspne + Powerspin (JPM) (IMPACT) (set 6) + + + j6quantm + Quantum Leap (JPM) (IMPACT) (set 1) + + + j6quantma + Quantum Leap (JPM) (IMPACT) (set 2) + + + j6quantmb + Quantum Leap (JPM) (IMPACT) (set 3) + + + j6quantmc + Quantum Leap (JPM) (IMPACT) (set 4, Whitbread) + + + j6quick + Quicksilver (RAL) (HLB AC2) (IMPACT) + + + j6r2rum + Ready To Rumble (Crystal) (IMPACT) (set 1) + + + j6r2ruma + Ready To Rumble (Crystal) (IMPACT) (set 2) + + + j6r2rumb + Ready To Rumble (Crystal) (IMPACT) (set 3) + + + j6r2rumc + Ready To Rumble (Crystal) (IMPACT) (set 4) + + + j6r2rumd + Ready To Rumble (Crystal) (IMPACT) (set 5) + + + j6r2rume + Ready To Rumble (Crystal) (IMPACT) (set 6) + + + j6ra + Red Alert (JPM) (IMPACT) (set 1) + + + j6raa + Red Alert (JPM) (IMPACT) (set 2) + + + j6rab + Red Alert (JPM) (IMPACT) (set 3) + + + j6rac + Red Alert (JPM) (IMPACT) (set 4, Whitbread) + + + j6raclb + Red Alert Club (JPM) (IMPACT) (set 1) + + + j6raclba + Red Alert Club (JPM) (IMPACT) (set 2) + + + j6raclbb + Red Alert Club (JPM) (IMPACT) (set 3) + + + j6raclbc + Red Alert Club (JPM) (IMPACT) (set 4) + + + j6raclbd + Red Alert Club (JPM) (IMPACT) (set 5) + + + j6rad + Red Alert (JPM) (IMPACT) (set 5) + + + j6rager + Red Alert (JPM) [German] (IMPACT) + + + j6ramese + Rameses' Riches Club (Crystal) (IMPACT) (set 1) + + + j6ramesea + Rameses' Riches Club (Crystal) (IMPACT) (set 2) + + + j6rameseb + Rameses' Riches Club (Crystal) (IMPACT) (set 3) + + + j6ramesec + Rameses' Riches Club (Crystal) (IMPACT) (set 4) + + + j6ramesed + Rameses' Riches Club (Crystal) (IMPACT) (set 5) + + + j6ramesee + Rameses' Riches Club (Crystal) (IMPACT) (set 6) + + + j6ramesef + Rameses' Riches Club (Crystal) (IMPACT) (set 7) + + + j6rccls + Roller Coaster Classic (JPM) (IMPACT) (set 1) + + + j6rcclsa + Roller Coaster Classic (JPM) (IMPACT) (set 2) + + + j6rcclsb + Roller Coaster Classic (JPM) (IMPACT) (set 3) + + + j6rcclub + Roller Coaster Club (JPM) (IMPACT) (set 1) + + + j6rccluba + Roller Coaster Club (JPM) (IMPACT) (set 2) + + + j6rcclubb + Roller Coaster Club (JPM) (IMPACT) (set 3) + + + j6redal + Red Alert (Crystal) (IMPACT) (set 1) + + + j6redala + Red Alert (Crystal) (IMPACT) (set 2) + + + j6redarw + Red Arrow (JPM) (IMPACT) (set 1) + + + j6redarwa + Red Arrow (JPM) (IMPACT) (set 2) + + + j6redarwb + Red Arrow (JPM) (IMPACT) (set 3) + + + j6redarwc + Red Arrow (JPM) (IMPACT) (set 4) + + + j6redarwd + Red Arrow (JPM) (IMPACT) (set 5) + + + j6redarwe + Red Arrow (JPM) (IMPACT) (set 6, Whitbread) + + + j6redarwf + Red Arrow (JPM) (IMPACT) (set 7) + + + j6redarwg + Red Arrow (JPM) (IMPACT) (set 8) + + + j6redarwh + Red Arrow (JPM) (IMPACT) (set 9) + + + j6redarwi + Red Arrow (JPM) (IMPACT) (set 10) + + + j6redarwj + Red Arrow (JPM) (IMPACT) (set 11) + + + j6redarww + Red Arrow (JPM) (IMPACT) (set 12, Whitbread) + + + j6reddmn + Red Demon (JPM) (IMPACT) + + + j6reelb + Reel Bingo Classic Club (Crystal) (IMPACT) (set 1) + + + j6reelba + Reel Bingo Classic Club (Crystal) (IMPACT) (set 2) + + + j6reelmn + Reel Money (JPM) (IMPACT) (RE 9) (set 1) + + + j6reelmna + Reel Money (JPM) (IMPACT) (RE 9) (set 2) + + + j6reelmnb + Reel Money (JPM) (IMPACT) (RE 9) (set 3) + + + j6reelmnc + Reel Money (JPM) (IMPACT) (RE 9) (set 4) + + + j6reelmnd + Reel Money (JPM) (IMPACT) (RE 7) (set 5) + + + j6reelth + Reel Thing (Ace) (IMPACT) set 1) + + + j6reeltha + Reel Thing (Crystal) (IMPACT) (set 1) + + + j6reelthb + Reel Thing (Crystal) (IMPACT) (set 2) + + + j6rh6 + Red Hot 6 (JPM) (IMPACT) (set 1) + + + j6rh6a + Red Hot 6 (JPM) (IMPACT) (set 2) + + + j6rh6b + Red Hot 6 (JPM) (IMPACT) (set 3) + + + j6rh6c + Red Hot 6 (JPM) (IMPACT) (set 4) + + + j6rh6cl + Red Hot Six Club (JPM) (IMPACT) (set 1) + + + j6rh6cla + Red Hot Six Club (JPM) (IMPACT) (set 2) + + + j6rh6clb + Red Hot Six Club (JPM) (IMPACT) (set 3) + + + j6rh6clc + Red Hot Six Club (JPM) (IMPACT) (set 4) + + + j6rh6cld + Red Hot Six Club (JPM) (IMPACT) (set 5) + + + j6rh6d + Red Hot 6 (JPM) (IMPACT) (set 5) + + + j6rh6e + Red Hot 6 (JPM) (IMPACT) (set 6) + + + j6rhchil + Red Hot Chili Stepper (Ace) (IMPACT) (set 1) + + + j6rhchila + Red Hot Chili Stepper (Ace) (IMPACT) (set 2) + + + j6rhchilb + Red Hot Chili Stepper (Ace) (IMPACT) (set 3) + + + j6rhchilc + Red Hot Chili Stepper (Ace) (IMPACT) (set 4) + + + j6rhchild + Red Hot Chili Stepper (Ace) (IMPACT) (set 5) + + + j6richpk + Rich Pickings (Ace) (IMPACT) + + + j6rico + Ricochet (JPM) (IMPACT) (R I) (set 1) + + + j6ricoa + Ricochet (JPM) (IMPACT) (R IP) (set 2) + + + j6ricob + Ricochet (JPM) (IMPACT) (R IA) (set 3) + + + j6ricoc + Ricochet (JPM) (IMPACT) (R I) (set 4) + + + j6ricod + Ricochet (JPM) (IMPACT) (R IS) (set 5) + + + j6ricoe + Ricochet (JPM) (IMPACT) (R IS) (set 6) + + + j6robin + Robin Hood (Ace) (IMPACT) (set 1) + + + j6robina + Robin Hood (Ace) (IMPACT) (set 2) + + + j6robinb + Robin Hood (Ace) (IMPACT) (set 3) + + + j6robinc + Robin Hood (Ace) (IMPACT) (set 4) + + + j6roller + Roller Coaster (JPM) (IMPACT) (RC11 C30, 30p Stake, £15 Jackpot) + + + j6rollera + Roller Coaster (JPM) (IMPACT) (RC11P C30, 30p Stake, £15 Jackpot, Protocol) + + + j6rollerb + Roller Coaster (JPM) (IMPACT) (RC11 AC30, 30p Stake, £15 Jackpot) + + + j6rollerc + Roller Coaster (JPM) (IMPACT) (RC11 C30, 30p Stake, £15 Jackpot, Whitbread) + + + j6rollerd + Roller Coaster (JPM) (IMPACT) (RC11 C29, 30p Stake, £15 Jackpot) + + + j6rollere + Roller Coaster (JPM) (IMPACT) (RC10 C20, 20p Stake, £10 Jackpot) + + + j6rollerf + Roller Coaster (JPM) (IMPACT) (RC9 L26, 20p Stake, £8 Jackpot) + + + j6rollerg + Roller Coaster (JPM) (IMPACT) (RC9P L26, 20p Stake, £8 Jackpot, Protocol) + + + j6rollerh + Roller Coaster (JPM) (IMPACT) (RC9 AL26, 20p Stake, £8 Jackpot) + + + j6rolleri + Roller Coaster (JPM) (IMPACT) (RC9 L26, 20p Stake, £10 Jackpot, Whitbread) + + + j6rollerj + Roller Coaster (JPM) (IMPACT) (RC5 L14, 20p Stake, £8 Jackpot) + + + j6rollerk + Roller Coaster (JPM) (IMPACT) (RC4 L15, 20p Stake, £8 Jackpot) + + + j6rollerl + Roller Coaster (JPM) (IMPACT) (RC4P L15, 20p Stake, £8 Jackpot, Protocol) + + + j6rollerm + Roller Coaster (JPM) (IMPACT) (RC4 AL15, 20p Stake, £8 Jackpot) + + + j6rollern + Roller Coaster (JPM) (IMPACT) (RC4 I L15, 20p Stake, £8 Jackpot) + + + j6rollero + Roller Coaster (JPM) (IMPACT) (RC2 L07, 20p Stake, £8 Jackpot) + + + j6rollerp + Roller Coaster (JPM) (IMPACT) (RC2 I L07, 20p Stake, £8 Jackpot) + + + j6roof + Thru' The Roof (Ace) (IMPACT) (set 1) + + + j6roofa + Thru' The Roof (Ace) (IMPACT) (set 2) + + + j6royfls + Royal Flush Club (JPM) (IMPACT) (set 1) + + + j6royflsa + Royal Flush Club (JPM) (IMPACT) (set 2) + + + j6royflsb + Royal Flush Club (JPM) (IMPACT) (set 3) + + + j6royflsc + Royal Flush Club (JPM) (IMPACT) (set 4) + + + j6royflsd + Royal Flush Club (JPM) (IMPACT) (set 5) + + + j6royflse + Royal Flush Club (JPM) (IMPACT) (set 6) + + + j6samur + Samurai Club (JPM) (IMPACT) (set 1) + + + j6samura + Samurai Club (JPM) (IMPACT) (set 2) + + + j6samurb + Samurai Club (JPM) (IMPACT) (set 3) + + + j6samurc + Samurai Club (JPM) (IMPACT) (set 4) + + + j6samurd + Samurai Club (JPM) (IMPACT) (set 5) + + + j6scarlt + Captain Scarlet (Ace) (IMPACT) + + + j6shoot + ShootOut (JPM) (IMPACT) (Whitbread) + + + j6showtm + It's Showtime (JPM) (IMPACT) (set 1) + + + j6showtma + It's Showtime (JPM) (IMPACT) (set 2) + + + j6showtmb + It's Showtime (JPM) (IMPACT) (set 3) + + + j6showtmc + It's Showtime (JPM) (IMPACT) (set 4) + + + j6showtmd + It's Showtime (JPM) (IMPACT) (set 5) + + + j6showtme + It's Showtime (JPM) (IMPACT) (set 6) + + + j6showtmf + It's Showtime (JPM) (IMPACT) (set 7) + + + j6showtmg + It's Showtime (JPM) (IMPACT) (set 8) + + + j6showtmh + It's Showtime (JPM) (IMPACT) (set 9) + + + j6showtmi + It's Showtime (JPM) (IMPACT) (set 10) + + + j6showtmj + It's Showtime (JPM) (IMPACT) (set 11) + + + j6showtmk + It's Showtime (JPM) (IMPACT) (set 12) + + + j6showtml + It's Showtime (JPM) (IMPACT) (set 13) + + + j6sidewd + Sidewinder (JPM) (IMPACT) (set 1) + + + j6sidewda + Sidewinder (JPM) (IMPACT) (set 2) + + + j6sidewdb + Sidewinder (JPM) (IMPACT) (set 3) + + + j6sidewdc + Sidewinder (JPM) (IMPACT) (set 4, Whitbread) + + + j6sidewdd + Sidewinder (JPM) (IMPACT) (set 5) + + + j6sidewde + Sidewinder (JPM) (IMPACT) (set 6) + + + j6slagn + Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 1) + + + j6slagna + Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 2) + + + j6slagnb + Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 3) + + + j6slagnc + Snakes & Ladders Slides Again (Crystal) (IMPACT) (set 4) + + + j6slvgst + Silver Ghost (JPM) (IMPACT) (set 1) + + + j6slvgsta + Silver Ghost (JPM) (IMPACT) (set 2) + + + j6slvgstb + Silver Ghost (JPM) (IMPACT) (set 3) + + + j6slvgstc + Silver Ghost (JPM) (IMPACT) (set 4) + + + j6slvgstd + Silver Ghost (JPM) (IMPACT) (set 5) + + + j6slvgste + Silver Ghost (JPM) (IMPACT) (set 6) + + + j6slvgstf + Silver Ghost (JPM) (IMPACT) (set 7) + + + j6slvgstg + Silver Ghost (JPM) (IMPACT) (set 8) + + + j6snakes + Snakes & Ladders (JPM) (IMPACT) (SL18 C22) (set 1) + + + j6snakesa + Snakes & Ladders (JPM) (IMPACT) (SL18P C22) (set 2, Protocol) + + + j6snakesb + Snakes & Ladders (JPM) (IMPACT) (SL18 AC22) (set 3) + + + j6snakesc + Snakes & Ladders (JPM) (IMPACT) (SL18 C22) (set 4, Whitbread) + + + j6snakesd + Snakes & Ladders (JPM) (IMPACT) (SL16 C20) (set 5) + + + j6snakese + Snakes & Ladders (JPM) (IMPACT) (SL17 C21) (set 6) + + + j6snakesf + Snakes & Ladders (JPM) (IMPACT) (SL10 C13) (set 7) + + + j6snakesg + Snakes & Ladders (JPM) (IMPACT) (SL8P C11) (set 8) + + + j6snakesh + Snakes & Ladders (JPM) (SL11 C14) (IMPACT) (set 9) + + + j6snakesi + Snakes & Ladders (JPM) (SL11 AC14) (IMPACT) (set 10) + + + j6snakesj + Snakes & Ladders (JPM) (SL11P CA4) (IMPACT) (set 11, Protocol) + + + j6snakesk + Snakes & Ladders (JPM) (SL15 C18) (IMPACT) (set 12) + + + j6snakesl + Snakes & Ladders (JPM) (SLB C2) (IMPACT) (set 13) + + + j6sonic + Sonic The Hedgehog (JPM) (IMPACT) (SO10 C13) + + + j6sonica + Sonic The Hedgehog (JPM) (IMPACT) (SO10P C13, Protocol) + + + j6sonicb + Sonic The Hedgehog (JPM) (IMPACT) (SO10 AC13) + + + j6sonicc + Sonic The Hedgehog (JPM) (IMPACT) (SO10 C13, Whitbread) + + + j6sonicd + Sonic The Hedgehog (JPM) (IMPACT) (SO9 C12) + + + j6sonice + Sonic The Hedgehog (JPM) (IMPACT) (SO7 C10) + + + j6sonicf + Sonic The Hedgehog (JPM) (IMPACT) (SO7 AC10) + + + j6sonicg + Sonic The Hedgehog (JPM) (IMPACT) (SO1 AC2) + + + j6sonich + Sonic The Hedgehog (JPM) (IMPACT) (set 9) + + + j6spcinv + Space Invaders (Crystal) (IMPACT) + + + j6stards + Stardust (JPM) (IMPACT) (SD 2 C 7) (set 1) + + + j6stardsa + Stardust (JPM) (IMPACT) (SD 2P C 7) (set 2, Protocol) + + + j6stardsb + Stardust (JPM) (IMPACT) (SD 2 AC 7) (set 3) + + + j6stardsc + Stardust (JPM) (IMPACT) (SD 2 C 7) (set 4, Whitbread) + + + j6start + Starturn (JPM / Showcase) (IMPACT) (set 1) + + + j6starta + Starturn (JPM / Showcase) (IMPACT) (set 2) + + + j6strk10 + Strike 10 (Ace) (IMPACT) (set 1) + + + j6strk10a + Strike 10 (Ace) (IMPACT) (set 2) + + + j6strk10b + Strike 10 (Ace) (IMPACT) (set 3) + + + j6strk10c + Strike 10 (Ace) (IMPACT) (set 4) + + + j6strk10d + Strike 10 (Ace) (IMPACT) (set 5) + + + j6strk10e + Strike 10 (Ace) (IMPACT) (set 6) + + + j6strk10f + Strike 10 (Ace) (IMPACT) (set 7) + + + j6strk10g + Strike 10 (Ace) (IMPACT) (set 8) + + + j6strk10h + Strike 10 (Ace) (IMPACT) (set 9) + + + j6strk10i + Strike 10 (Ace) (IMPACT) (set 10) + + + j6strk10j + Strike 10 (Ace) (IMPACT) (set 11) + + + j6strk10k + Strike 10 (Ace) (IMPACT) (set 12) + + + j6supbrk + Super Breakout (JPM) (IMPACT) (set 1) + + + j6supbrka + Super Breakout (JPM) (IMPACT) (set 2) + + + j6supbrkb + Super Breakout (JPM) (IMPACT) (set 3) + + + j6supbrkc + Super Breakout (JPM) (IMPACT) (set 4) + + + j6supbrkd + Super Breakout (JPM) (IMPACT) (set 5) + + + j6supbrke + Super Breakout (JPM) (IMPACT) (set 6, Whitbread) + + + j6supbrkf + Super Breakout (JPM) (IMPACT) (set 7) + + + j6supbrkg + Super Breakout (JPM) (IMPACT) (set 8) + + + j6supbrkh + Super Breakout (JPM) (IMPACT) (set 9) + + + j6supbrki + Super Breakout (JPM) (IMPACT) (set 10) + + + j6supbrkj + Super Breakout (JPM) (IMPACT) (set 11) + + + j6svndb + 7 Deadly Bins (Ace) (IMPACT) + + + j6swpdrp + Swop Till Ya Drop (JPM) (IMPACT) + + + j6tbirds + Thunderbirds (JPM) (IMPACT) (set 1) + + + j6tbirdsa + Thunderbirds (JPM) (IMPACT) (set 2) + + + j6tbirdsb + Thunderbirds (JPM) (IMPACT) (set 3) + + + j6tbirdsc + Thunderbirds (JPM) (IMPACT) (set 4) + + + j6tbirdsd + Thunderbirds (JPM) (IMPACT) (set 5) + + + j6tbirdse + Thunderbirds (JPM) (IMPACT) (set 6, Whitbread) + + + j6tbirdsf + Thunderbirds (JPM) (IMPACT) (set 7) + + + j6tbirdsg + Thunderbirds (JPM) (IMPACT) (set 8) + + + j6tbirdsh + Thunderbirds (JPM) (IMPACT) (set 9) + + + j6tbirdsi + Thunderbirds (JPM) (IMPACT) (set 10) + + + j6tbirdsj + Thunderbirds (JPM) (IMPACT) (set 11) + + + j6tbirdsk + Thunderbirds (Crystal) (IMPACT) (set 1) + + + j6tbirdsl + Thunderbirds (Crystal) (IMPACT) (set 2) + + + j6tbirdsm + Thunderbirds (Crystal) (IMPACT) (set 3) + + + j6tbirdsn + Thunderbirds (Crystal) (IMPACT) (set 4) + + + j6tbirdso + Thunderbirds (Crystal) (IMPACT) (set 5) + + + j6tbirdsp + Thunderbirds (Crystal) (IMPACT) (set 6) + + + j6tbirdsq + Thunderbirds (Crystal) (IMPACT) (set 7) + + + j6tbirdsr + Thunderbirds (JPM / Predator) (IMPACT) + + + j6tbrdcl + Thunderbirds Club (JPM) (IMPACT) (set 1) + + + j6tbrdcla + Thunderbirds Club (JPM) (IMPACT) (set 2) + + + j6tbrdclb + Thunderbirds Club (JPM) (IMPACT) (set 3) + + + j6tbrdclc + Thunderbirds Club (JPM) (IMPACT) (set 4) + + + j6tbrdcld + Thunderbirds Club (JPM) (IMPACT) (set 5) + + + j6tbrdcle + Thunderbirds Club (JPM) (IMPACT) (set 6) + + + j6tbrdclf + Thunderbirds Club (JPM) (IMPACT) (set 7) + + + j6tbrdclg + Thunderbirds Club (JPM) (IMPACT) (set 8) + + + j6tbrdclh + Thunderbirds Club (JPM) (IMPACT) (set 9) + + + j6tbrdcli + Thunderbirds Club (JPM) (IMPACT) (set 10) + + + j6tbrdclj + Thunderbirds Club (JPM) (IMPACT) (set 11) + + + j6tbrdclk + Thunderbirds Club (JPM) (IMPACT) (set 12) + + + j6tbrdcll + Thunderbirds Club (JPM) (IMPACT) (set 13) + + + j6thril + Thriller (Crystal) (IMPACT) (set 1) + + + j6thrila + Thriller (Crystal) (IMPACT) (set 2) + + + j6tomb + Tomb Raider (JPM) (IMPACT) (set 1) + + + j6tomba + Tomb Raider (JPM) (IMPACT) (set 2) + + + j6tombb + Tomb Raider (JPM) (IMPACT) (set 3) + + + j6tombc + Tomb Raider (JPM) (IMPACT) (set 4) + + + j6tombd + Tomb Raider (JPM) (IMPACT) (set 5) + + + j6tombe + Tomb Raider (JPM) (IMPACT) (set 6) + + + j6tombf + Tomb Raider (JPM) (IMPACT) (set 7) + + + j6tombg + Tomb Raider (JPM) (IMPACT) (set 8) + + + j6topflg + Top Flight (Ace) (IMPACT) + + + j6tqust + Treasure Quest (Crystal) (IMPACT) (set 1) + + + j6tqusta + Treasure Quest (Crystal) (IMPACT) (set 2) + + + j6tqustb + Treasure Quest (Crystal) (IMPACT) (set 3) + + + j6tqustc + Treasure Quest (Crystal) (IMPACT) (set 4) + + + j6tutti + Tutti Frutti (Qps) (IMPACT) + + + j6twst + Twister (Ace) (IMPACT) (set 1) + + + j6twsta + Twister (Ace) (IMPACT) (set 2) + + + j6twstb + Twister (Ace) (IMPACT) (set 3) + + + j6twstc + Twister (Ace) (IMPACT) (set 4) + + + j6twstd + Twister (Ace) (IMPACT) (set 5) + + + j6twstdt + Twister (JPM) [Dutch] (IMPACT) + + + j6twste + Twister (Ace) (IMPACT) (set 6) + + + j6twstf + Twister (Ace) (IMPACT) (set 7) + + + j6twstg + Twister (Ace) (IMPACT) (set 8) + + + j6twsth + Twister (Ace) (IMPACT) (set 9) + + + j6twsti + Twister (Ace) (IMPACT) (set 10) + + + j6twstj + Twister (Ace) (IMPACT) (set 11) + + + j6untch + Untouchable (JPM) (IMPACT) (UN3B LO6) + + + j6untcha + Untouchable (JPM) (IMPACT) (UN3BI LO6) + + + j6vindal + Vindaloot (JPM) (IMPACT) + + + j6vivark + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 1) + + + j6vivarka + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 2) + + + j6vivarkb + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 3) + + + j6vivarkc + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 4) + + + j6vivarkd + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 5, Whitbread) + + + j6vivarke + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 6) + + + j6vivarkf + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 7) + + + j6vivarkg + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 8) + + + j6vivarkh + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 9) + + + j6vivarki + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 10) + + + j6vivarkj + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 11) + + + j6vivarkk + The Flintstones in Viva Rock Vegas (JPM) (IMPACT) (set 12) + + + j6vivrkc + The Flintstones in Viva Rock Vegas (Club) (JPM) (IMPACT) (set 1) + + + j6vivrkca + The Flintstones in Viva Rock Vegas (Club) (JPM) (IMPACT) (set 2) + + + j6vivrkcb + The Flintstones in Viva Rock Vegas (Club) (JPM) (IMPACT) (set 3) + + + j6wildw + Wild West (Ace) (IMPACT) (set 1) + + + j6wildwa + Wild West (Ace) (IMPACT) (set 2) + + + j6wildwb + Wild West (Ace) (IMPACT) (set 3, Whitbread) + + + j6wildwc + Wild West (Ace) (IMPACT) (set 4) + + + j6wildwd + Wild West (Ace) (IMPACT) (set 5) + + + j6wildwe + Wild West (Ace) (IMPACT) (set 6) + + + j6wildwf + Wild West (Ace) (IMPACT) (set 7) + + + j6wildwg + Wild West (Ace) (IMPACT) (set 8, Whitbread) + + + j6wizard + Wizard Of Odds (JPM) (IMPACT) (WZ 7 C 8) (set 1) + + + j6wizarda + Wizard Of Odds (JPM) (IMPACT) (WZ 7P C 8) (set 2, Protocol) + + + j6wizardb + Wizard Of Odds (JPM) (IMPACT) (WZ 7 AC 8) (set 3) + + + j6wizardc + Wizard Of Odds (JPM) (IMPACT) (WZ 7 C 8) (set 4, Whitbread) + + + j6wizardd + Wizard Of Odds (JPM) (IMPACT) (WZ 4 C 5) (set 5) + + + j6wizarde + Wizard Of Odds (JPM) (IMPACT) (WZ 5 C 6) (set 6) + + + j6wldkng + Wild King Club (JPM) (IMPACT) (WK 5) (set 1) + + + j6wldknga + Wild King Club (JPM) (IMPACT) (WK 5P) (set 2, Protocol) + + + j6wthing + Wild Thing (Empire) (IMPACT) (set 1) + + + j6wthinga + Wild Thing (Empire) (IMPACT) (set 2) + + + j6wthingb + Wild Thing (Empire) (IMPACT) (set 3) + + + j7bmagic + Black Magic (JPM) + + + j7bullio + Bullionaire (Ace) + + + j7cexprs + Cash Xpress (JPM) + + + j7clbmag + Club Magic (JPM) + + + j7crztrl + Crazy Trails (JPM) + + + j7fantaz + Fantaztec (JPM) + + + j7kerchn + Ker - Chinq (JPM) + + + j7r2roll + Ready To Roll (JPM) + + + j7razzma + Razzamataz (JPM) (set 1) + + + j7razzmaa + Razzamataz (JPM) (set 2) + + + j7tubgld + Turbo Gold (JPM) + + + j7wldwkd + Wild 'N' Wicked (JPM) + + + j80alad + Aladdin's Cave (PCP) + + + j80bac + Bank A Coin (JPM) (SYSTEM80) + + + j80blbnk + Blankity Bank (PCP) (SYSTEM80) + + + j80bounc + Bouncer (JPM) (SYSTEM80) + + + j80fortr + Fortune Trail (JPM) + + + j80frogh + Frog Hop (JPM) (SYSTEM80) + + + j80fruit + Fruit Snappa (JPM) (SYSTEM80) + + + j80golds + Golden Steppa (JPM) (SYSTEM80) + + + j80hotln + Hot Lines (JPM) (SYSTEM80) + + + j80mster + Masterspy (Pcp) + + + j80myspn + Mystery Spin (JPM) (SYSTEM80) + + + j80nudg2 + Nudge Double Up MkII (JPM) (SYSTEM80) + + + j80plsnd + Plus Nudge (JPM) + + + j80rr + Road Runner (JPM) (SYSTEM80, set 1) + + + j80rra + Road Runner (JPM) (SYSTEM80, set 2) + + + j80supbk + Superbank (JPM) (SYSTEM80) + + + j80supst + Supa Steppa (JPM) (SYSTEM80) + + + j80topsp + Top Sprint (JPM) (SYSTEM80) + + + j80topup + Top Up (JPM) (SYSTEM80) + + + j80tumbl + Tumble (JPM) (SYSTEM80) + + + j80wsprt + Winsprint (JPM) (V4, 5x20p) (SYSTEM80) + + + j80wsprt2 + Winsprint (JPM) (V2, 10x10p) (SYSTEM80) + + + j80wsprt3 + Winsprint (JPM) (V3, 50p, 5 credits) (SYSTEM80) + + + j_cnudgr + Cash Nudger? (SRU) (5p Stake, £2 Jackpot) + + + j_dt + Double Top (JPM) (SRU) (revision 13, 5p/10p Stake, £2 Jackpot) + + + j_dud + Nudge Double Up Deluxe (JPM) (SRU) (revision 10, 5p Stake, £1 Jackpot) + + + j_duda + Nudge Double Up Deluxe (JPM) (SRU) (5p/10p Stake, £2 Jackpot) + + + j_dudb + Nudge Double Up Deluxe (JPM) (SRU) (revision 12, £2 Jackpot) + + + j_ewn + Each Way Nudger (JPM) (SRU) (revision 20, 5p Stake, £1 Jackpot) + + + j_ewna + Each Way Nudger (JPM) (SRU) (revision 26A, 5p/10p Stake, £2 Jackpot) + + + j_ewnb + Each Way Nudger (JPM) (SRU) (5p/10p Stake, £2 Jackpot) + + + j_ewnc + Each Way Nudger (JPM) (SRU) (earlier, 5p Stake, £1 Jackpot) + + + j_ewnd + Each Way Nudger (JPM) (SRU) (revision 23C, 5p Stake, £1 Jackpot) + + + j_ews + Each Way Shuffle (JPM) (SRU) (revision 8A, 5p/10p Stake, £2 Jackpot) + + + j_ewsa + Each Way Shuffle (JPM) (SRU) (revision 13A, 5p/10p Stake, £2 Jackpot) + + + j_ewsb + Each Way Shuffle (JPM) (SRU) (revision 13C, 5p/10p Stake, £2 Jackpot) + + + j_ewsdlx + Each Way Shuffle Deluxe (CTL) (SRU) (5p/10p Stake, £3 Jackpot) + + + j_goldn2 + Golden 2's (CTL) (SRU) (2p Stake, £1.50 Jackpot) + + + j_la + Lucky Aces (SRU) (1p/2p Stake, £1.50 Jackpot) + + + j_lal + Lite a Line (Dutch) (JPM) (SRU) (revision 52) + + + j_lan + Lite A Nudge (JPM) (SRU) (revision 17F, 5p Stake, £1 Jackpot) + + + j_lana + Lite A Nudge (JPM) (SRU) (5p/10p Stake, £2 Jackpot) + + + j_lanb + Lite A Nudge (JPM) (SRU) (earlier, 5p Stake, £1 Jackpot) + + + j_lc + Lucky Casino (JPM) (SRU) (revision 8A) + + + j_lca + Lucky Casino (JPM) (SRU) (revision 8, lower %) + + + j_lt + Lucky 2's (JPM) (SRU) (revision 9, 10p Stake, £2 Jackpot) + + + j_ndu + Nudge Double Up (JPM) (SRU) (revision 17, 5p Stake, £1 Jackpot) + + + j_ndua + Nudge Double Up (JPM) (SRU) (revision 17, 5p Stake, £1 Jackpot, lower %) + + + j_ndub + Nudge Double Up (JPM) (SRU) (earlier?, 5p Stake, £1 Jackpot) + + + j_plus2 + Plus 2 (CTL) (SRU) (2p Stake, £1 Jackpot) + + + j_ssh + Silver Shuffle (CTL) (SRU) (2p Stake, £1.50 Jackpot) + + + j_sup2p + Super 2p Shuffle (Mdm) (SRU) (2p Stake, £1 Jackpot) + + + j_super2 + Super 2 (SRU) (2p Stake, £1 Jackpot) + + + j_supsh + Super Shuffle (Louth Coin) (SRU) (10p Stake, £3 Jackpot) + + + j_supsha + Super Shuffle (Louth Coin) (SRU) (5p Stake, £1.50 Jackpot) + + + j_ts + Two Step (JPM) (SRU) (5p Stake, £2 Jackpot) + + + jack + Jack the Giantkiller (set 1) + + + jack2 + Jack the Giantkiller (set 2) + + + jack2opn + Jacks to Open + + + jack3 + Jack the Giantkiller (set 3) + + + jackal + Jackal (World, 8-way Joystick) + + + jackalbl + Jackal (bootleg, Rotary Joystick) + + + jackalj + Tokushu Butai Jackal (Japan, 8-way Joystick) + + + jackalr + Jackal (World, Rotary Joystick) + + + jackbean + Jack & The Beanstalk (Doyle & Assoc.?) + + + jackhous + Jack House + + + jackie + Happy Jackie (v110U) + + + jackler + Jackler (bootleg of Jungler) + + + jackpool + Jackpot Cards / Jackpot Pool (Italy) + + + jackpot + Jackpot Bowling (Ver 16.16L) + + + jackpota + Jackpot Bowling (Ver 1.16L) + + + jackrab2 + Jack Rabbit (set 2) + + + jackrabs + Jack Rabbit (special) + + + jackrabt + Jack Rabbit (set 1) + + + jackrabt2 + Jack Rabbit (set 2) + + + jackrabts + Jack Rabbit (special) + + + jackuse + Jack Use (Jackpot settings for Interflip slots machines) + + + jackvent + Jack's Venture - Inca Treasure + + + jailbrek + Jail Break + + + jailbrekb + Jail Break (bootleg) + + + jailbrk + Jailbreak (10125611, NSW/ACT) + + + jajamaru + Vs. Ninja Jajamaru Kun (Japan) + + + jambo + Jambo! Safari (Rev A) + + + jamesb + James Bond (Timed Play) + + + jamesb2 + James Bond (3/5-Ball) + + + janbari + Mahjong Janjan Baribari (Japan) + + + jangou + Jangou (Japan) + + + jangtaku + Jang Taku (V 1.3) + + + janjans1 + Lovely Pop Mahjong JangJang Shimasho (Japan) + + + janjans2 + Lovely Pop Mahjong JangJang Shimasho 2 (Japan) + + + jankenmn + Janken Man Kattara Ageru + + + janoh + Jan Oh (set 1) + + + janoha + Jan Oh (set 2) + + + janohb + Jan Oh (set 3) + + + janptr96 + Janputer '96 (Japan) + + + janptrsp + Janputer Special (Japan) + + + janputer + New Double Bet Mahjong (bootleg of Royal Mahjong, set 1) + + + janputera + New Double Bet Mahjong (bootleg of Royal Mahjong, set 2) + + + janshi + Janshi + + + janshin + Janshin Densetsu - Quest of Jongmaster + + + janshinp + Mahjong Janshin Plus (Japan) + + + jansou + Jansou (set 1) + + + jansoua + Jansou (V 1.1) + + + jantotsu + 4nin-uchi Mahjong Jantotsu + + + jantouki + Jong Tou Ki (Japan) + + + janyoup2 + Janyou Part II (ver 7.03, July 1 1983) + + + janyoup2702 + Janyou Part II (ver 7.02, July 1 1983) + + + janyoup2a + Janyou Part II (ver 7.03, July 1 1983, no title screen) + + + janyuki + Jong Yu Ki (Japan) + + + jb_04a + Jack*Bot (0.4A prototype) + + + jb_10b + Jack*Bot (1.0B) (Belgium/Canada) + + + jb_10r + Jack*Bot (1.0R) + + + jbell + Jingle Bell (v200US) + + + jbell133i + Jingle Bell (Italy, V133I) + + + jbell141ue + Jingle Bell (EU, V141UE) + + + jbell153ue + Jingle Bell (EU, V153UE) + + + jbell155ue + Jingle Bell (EU, V155UE) + + + jbell157us + Jingle Bell (US, V157US) + + + jchan + Jackie Chan - The Kung-Fu Master (rev 4?) + + + jchan2 + Jackie Chan in Fists of Fire + + + jchana + Jackie Chan - The Kung-Fu Master (rev 3?) + + + jclub2bl + Jockey Club II (USA v4.00, bootleg) + + + jclub2v100 + Jockey Club II (v1.00, older hardware) + + + jclub2v101 + Jockey Club II (v1.01, older hardware) + + + jclub2v110 + Jockey Club II (v1.10X, older hardware) + + + jclub2v112 + Jockey Club II (v1.12X, older hardware) + + + jclub2v200 + Jockey Club II (v2.00, newer hardware) + + + jclub2v201 + Jockey Club II (v2.01X, newer hardware) + + + jclub2v203 + Jockey Club II (v2.03X RC, older hardware, prototype) + + + jclub2v204 + Jockey Club II (v2.04, newer hardware) + + + jclub2v205 + Jockey Club II (v2.05, newer hardware) + + + jclub2v220 + Jockey Club II (v2.20X, newer hardware) + + + jcross + Jumping Cross (set 1) + + + jcrossa + Jumping Cross (set 2) + + + jd_l1 + Judge Dredd (L-1) + + + jd_l4 + Judge Dredd (L-4) + + + jd_l5 + Judge Dredd (L-5) + + + jd_l6 + Judge Dredd (L-6) + + + jd_l7 + Judge Dredd (L-7) + + + jdredd + Judge Dredd (Rev C Dec. 17 1997) + + + jdreddb + Judge Dredd (Rev B Nov. 26 1997) + + + jdreddp + Judge Dredd (rev TA1 7/12/92, location test) + + + jedi + Return of the Jedi + + + jefffox + You Might Be A Redneck If... - Jeff Foxworthy (0351068, US) + + + jesterch + Jester Chance (dual 6809 GI Australasia PCB) + + + jestmagi + Jester Magic (Konami Endeavour, Russia) + + + jetfight + Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 1) + + + jetfighta + Jet Fighter/Jet Fighter Cocktail/Launch Aircraft (set 2) + + + jetwave + Jet Wave (EAB, Euro v1.04) + + + jetwavej + Jet Wave (JAB, Japan v1.04) + + + jewelcm + Jewel of the Enchantress - Mr. Cashman (0151051, US) + + + jgakuen + Shiritsu Justice Gakuen: Legion of Heroes (Japan 971216) + + + jgakuen1 + Shiritsu Justice Gakuen: Legion of Heroes (Japan 971117) + + + jhzb + Jin Hua Zhengba (V113CN) + + + jigkmgri + Jigoku Meguri (Japan, rev 1) + + + jigkmgria + Jigoku Meguri (Japan) + + + jin + Jin + + + jingling + Jingling Jiazu Genie 2000 + + + jingystm + Jingi Storm - The Arcade (Japan) (GDL-0037) + + + jinhulu2 + Jin Hu Lu 2 (v412GS) + + + jinpaish + Jinpai Suoha - Show Hand (Chinese version 2004-09-22) + + + jitsupro + Jitsuryoku!! Pro Yakyuu (Japan) + + + jituroku + Jitsuroku Maru-chi Mahjong (Japan) + + + jjack + Jumping Jack + + + jjparad2 + Jan Jan Paradise 2 + + + jjparads + Jan Jan Paradise + + + jjpoker + Jackpot Joker Poker (set 1) + + + jjpokerb + Jackpot Joker Poker (set 2) + + + jjsquawk + J. J. Squawkers + + + jjsquawkb + J. J. Squawkers (bootleg) + + + jjsquawkb2 + J. J. Squawkers (bootleg, Blandia Conversion) + + + jjsquawko + J. J. Squawkers (older) + + + jking02 + Jungle King 2002 (V209US) + + + jking103a + Jungle King (V103A) + + + jking200pr + Jungle King (V200PR) + + + jking302us + Jungle King (V302US) + + + jkrbonus + Joker Bonus + + + jkrmast + Joker Master 2000 Special Edition (V515) + + + jkrmasta + Joker Master 2000 Special Edition (V512) + + + jkrpkra5 + Joker Poker (0301477V, New Zealand) + + + jlasvegas + Las Vegas (Jeutel, set 1) + + + jlasvegasa + Las Vegas (Jeutel, set 2) + + + jleague + The J.League 1994 (Japan, Rev A) + + + jleagueo + The J.League 1994 (Japan) + + + jm_05r + Johnny Mnemonic (0.5R) + + + jm_12b + Johnny Mnemonic (1.2B) Belgium + + + jm_12r + Johnny Mnemonic (1.2R) + + + jmpbreak + Jumping Break (set 1) + + + jmpbreaka + Jumping Break (set 2) + + + jnero + Johnny Nero Action Hero (v01.01.08) + + + jngld_l1 + Jungle Lord (L-1) + + + jngld_l2 + Jungle Lord (L-2) + + + jngolady + Jangou Lady (Japan) + + + jockeyc + Jockey Club (v1.18) + + + jockeygp + Jockey Grand Prix (set 1) + + + jockeygpa + Jockey Grand Prix (set 2) + + + joemac + Tatakae Genshizin Joe & Mac (Japan ver 1) + + + joemacr + Joe & Mac Returns (World, Version 1.1, 1994.05.27) + + + joemacra + Joe & Mac Returns (World, Version 1.0, 1994.05.19) + + + joemacrj + Joe & Mac Returns (Japan, Version 1.2, 1994.06.06) + + + jogakuen + Mahjong Jogakuen (Japan) + + + joinem + Joinem + + + jojo + JoJo's Venture (Europe 990128) + + + jojoa + JoJo's Venture (Asia 990128) + + + jojoar1 + JoJo's Venture (Asia 990108) + + + jojoar2 + JoJo's Venture (Asia 981202) + + + jojoba + JoJo's Bizarre Adventure (Europe 991015, NO CD) + + + jojobajr1 + JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927) + + + jojobajr2 + JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913) + + + jojoban + JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 991015, NO CD) + + + jojobaner1 + JoJo's Bizarre Adventure (Europe 990927, NO CD) + + + jojobaner2 + JoJo's Bizarre Adventure (Europe 990913, NO CD) + + + jojobanr1 + JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990927, NO CD) + + + jojobanr2 + JoJo no Kimyou na Bouken: Mirai e no Isan (Japan 990913, NO CD) + + + jojobanrb + JoJo's Bizarre Adventure (Rainbow Edition v1.0.1 2021) + + + jojobar1 + JoJo's Bizarre Adventure (Europe 990927) + + + jojobar2 + JoJo's Bizarre Adventure (Europe 990913) + + + jojoj + JoJo no Kimyou na Bouken (Japan 990128) + + + jojojr1 + JoJo no Kimyou na Bouken (Japan 990108) + + + jojojr2 + JoJo no Kimyou na Bouken (Japan 981202) + + + jojon + JoJo's Venture (Asia 990128, NO CD) + + + jojonr1 + JoJo's Venture (Asia 990108, NO CD) + + + jojonr2 + JoJo's Venture (Asia 981202, NO CD) + + + jojor1 + JoJo's Venture (Europe 990108) + + + jojor2 + JoJo's Venture (Europe 981202) + + + jojou + JoJo's Venture (USA 990128) + + + jojour1 + JoJo's Venture (USA 990108) + + + jojour2 + JoJo's Venture (USA 981202) + + + jokcrdep + Joker Card / Multi Card (Epoxy brick CPU) + + + jokercar + Joker Card (witch game) + + + jokercrd + Joker Card 300 (Ver.A267BC, encrypted) + + + jokercrdf + Joker Card (encrypted) + + + jokpoker + Joker Poker (Version 16.03B) + + + jokpokera + Joker Poker (Version 16.03BI 5-10-85, Joker Poker ICB 9-30-86) + + + jokpokerb + Joker Poker (Version 16.04BI 10-19-88, Joker Poker ICB 9-30-86) + + + jokpokerc + Joker Poker (Version 16.03BI 5-10-85, Poker No Raise ICB 9-30-86) + + + jokrlady + Joker Lady + + + jokrpokr + Joker Poker + + + jokrwild + Joker's Wild (encrypted) + + + jokrz_g4 + Jokerz! (G-4) + + + jokrz_l3 + Jokerz! (L-3) + + + jokrz_l6 + Jokerz! (L-6) + + + jollycrd + Jolly Card (German, set 1) + + + jollycrda + Jolly Card (German, set 2) + + + jollyjgr + Jolly Jogger + + + jolyc3x3 + Jolly Card (3x3 deal) + + + jolyc980 + Jolly Card Professional 2.0 (Spale Soft) + + + jolyccra + Jolly Card (Croatian, set 1) + + + jolyccrb + Jolly Card (Croatian, set 2) + + + jolycdab + Jolly Card (German, Fun World, bootleg) + + + jolycdcy + Zabavni Karti (Bulgarian, cyrillic, encrypted) + + + jolycdev + Jolly Card (Evona Electronic) + + + jolycdib + Jolly Card (Italian, encrypted bootleg, set 1) + + + jolycdic + Jolly Card (Italian, encrypted bootleg, set 2) + + + jolycdid + Jolly Card (Italian, different colors, set 1) + + + jolycdie + Jolly Card (Italian, different colors, set 2) + + + jolycdif + Jolly Card (Italian, bootleg, set 1) + + + jolycdig + Jolly Card (Italian, bootleg, set 2) + + + jolycdih + Jolly Card (Italian, bootleg, set 3) + + + jolycdii + Jolly Card (Italian, encrypted bootleg, set 3) + + + jolycdit + Jolly Card (Italian, blue TAB board, encrypted) + + + jolycdsp + Jolly Card (Spanish, blue TAB board, encrypted) + + + jolycmzs + Jolly Card Professional 2.0 (MZS Tech) + + + jolygame + Jolly Game (V1, Otti Karl logo) + + + jolyjokr + Jolly Joker (98bet, set 1) + + + jolyjokra + Jolly Joker (98bet, set 2) + + + jolyjokrb1 + Jolly Joker (40bet, higher paytable) + + + jolyjokrb2 + Jolly Joker (40bet, lower paytable) + + + jolyjokrc + Jolly Joker (Apple Time) + + + jolyjokrm + Jolly Joker (Solid State module in suicide board) + + + jolyjokro + Jolly Joker (original program, interleaved GFX, Impera logo) + + + jolyjokrp + Jolly Joker (original program, interleaved GFX, no logo) + + + jolyjokrs + Jolly Joker (original program, interleaved GFX, Otti Karl logo, set 1) + + + jolyjokrt + Jolly Joker (original program, interleaved GFX, Otti Karl logo, set 2) + + + jolypark + Jolly Park + + + jongbou + Mahjong Block Jongbou (Japan) + + + jongbou2 + Mahjong Block Jongbou 2 (Japan) + + + jongkyo + Jongkyo + + + jongpute + Jongputer + + + jongshin + Jong Shin (Japan) + + + jongtei + Mahjong Jong-Tei (Japan, NM532-01) + + + jongteia + Mahjong Jong-Tei (Japan, Techno-Top license) + + + josvolly + Joshi Volleyball + + + journey + Journey + + + joust + Joust (Green label) + + + joust2 + Joust 2 - Survival of the Fittest (revision 2) + + + joust2r1 + Joust 2 - Survival of the Fittest (revision 1) + + + joustr + Joust (Red label) + + + joustwr + Joust (White-Red label) + + + jousty + Joust (Yellow label) + + + joyfulr + Joyful Road (Japan) + + + joyjoy + Puzzled / Joy Joy Kid (NGM-021 ~ NGH-021) + + + joyman + Joyman + + + joystand + Joy Stand Private + + + jpark + Jurassic Park (World, Rev A) + + + jpark3 + Jurassic Park III (ver EBC) + + + jpark3u + Jurassic Park III (ver UBC) + + + jparkj + Jurassic Park (Japan, Rev A, Deluxe) + + + jparkja + Jurassic Park (Japan, Deluxe) + + + jparkjc + Jurassic Park (Japan, Rev A, Conversion) + + + jparkmb + Jurassic Park (bootleg of Mega Drive version) + + + jpcoin + Joker Poker (Coinmaster set 1) + + + jpcoin2 + Joker Poker (Coinmaster, Amusement Only) + + + jpinball + Pin Ball + + + jpjcoin + Jackpot Joker Poker (Version 88V 01) + + + jplstw20 + The Lost World: Jurassic Park (pinball, CPU 2.00, display A2.01) + + + jplstw22 + The Lost World: Jurassic Park (pinball, CPU 2.02, display A2.01) + + + jpopnics + Jumping Pop (Nics, Korean hack of Plump Pop) + + + jppyex98 + Jikkyou Pawafuru Puro Yakyu EX '98 (GC811 VER. JAA) + + + jptparty + Jackpot Party (Russian) + + + jrking + Junior King (bootleg of Donkey Kong Jr.) + + + jrpacman + Jr. Pac-Man (11/9/83) + + + jrpacmanf + Jr. Pac-Man (speedup hack) + + + jrpacmbl + Jr. Pac-Man (Pengo hardware, bootleg) + + + jrpacmnf + Jr. Pac-Man (speedup hack) + + + jsk + Joryuu Syougi Kyoushitsu (Japan) + + + jspecter + Jatre Specter (set 1) + + + jspecter2 + Jatre Specter (set 2) + + + jspectr2 + Jatre Specter (set 2) + + + jst_l1 + Joust (L-1) + + + jst_l2 + Joust (L-2) + + + jt104 + JT 104 / NinjaKun Ashura no Shou + + + jubileep + Double-Up Poker (Jubilee) + + + juju + JuJu Densetsu (Japan) + + + jujub + JuJu Densetsu (Playmark bootleg) + + + jujuba + JuJu Densetsu (Japan, bootleg) + + + jumanji + Jumanji (V502) + + + jumanjia + Jumanji (V113) + + + jumbogod + Jumbo Godzilla + + + jumpbean + Jumping Beans (0100161V, NSW/ACT) + + + jumpbug + Jump Bug + + + jumpbugb + Jump Bug (bootleg, set 1) + + + jumpbugbc + Jump Bug (bootleg, set 3) + + + jumpbugbrf + Jump Bug (bootleg, set 2) + + + jumpcoas + Jump Coaster (World) + + + jumpcoasa + Jump Coaster + + + jumpcoast + Jump Coaster (Taito) + + + jumping + Jumping (set 1) + + + jumpinga + Jumping (set 2) + + + jumpingi + Jumping (set 3, Imnoe PCB) + + + jumpjkpt + Jumping Jackpots (Russia) (Atronic) + + + jumpjoey + Jumpin' Joeys (0100383V, NSW/ACT) + + + jumpjoeyu + Jumpin' Joeys (DHG4735-02, US) + + + jumpjump + Jump Jump + + + jumpkids + Jump Kids + + + jumpkun + Jump Kun (prototype) + + + jumppop + Jumping Pop (set 1) + + + jumppope + Jumping Pop (set 2) + + + jumpshot + Jump Shot + + + jumpshotp + Jump Shot Engineering Sample + + + junai + Junai - Manatsu no First Kiss (Japan) + + + junai2 + Junai 2 - White Love Story (Japan) + + + jungjuic + Jungle Juice (0200240V, ASP) + + + jungleani + Jungle's Animals (v3.0) + + + jungleby + Jungle Boy (bootleg) + + + jungleh + Jungle Hunt (US) + + + junglehbr + Jungle Hunt (Brazil) + + + junglek + Jungle King (Japan) + + + junglekas + Jungle King (alternate sound) + + + junglekj2 + Jungle King (Japan, earlier) + + + junglekj2a + Jungle King (Japan, earlier, alt) + + + jungler + Jungler + + + junglero + Jungler (Olympia) + + + junglers + Jungler (Stern Electronics) + + + jungleyo + Jungle (Italy VI3.02) + + + junglhbr + Jungle Hunt (Brazil) + + + junglkj2 + Jungle King (Japan, earlier) + + + jungsub + Jungler (Subelectro, bootleg on Scramble hardware) + + + junofrst + Juno First + + + junofrstg + Juno First (Gottlieb) + + + junofstg + Juno First (Gottlieb) + + + jupk_305 + Jurassic Park (USA 3.05, display A4.00) + + + jupk_307 + Jurassic Park (USA 3.07, display A4.00) + + + jupk_501 + Jurassic Park (USA 5.01, display A5.01) + + + jupk_501g + Jurassic Park (USA 5.01, display G5.01) + + + jupk_513 + Jurassic Park (USA 5.13, display A5.10) + + + jurassic99 + Jurassic 99 (Cadillacs and Dinosaurs bootleg with EM78P447AP) + + + jwildb52 + Joker's Wild (B52 system, BP55114-V1104, Ver.054NMV) + + + jwildb52a + Joker's Wild (B52 system, WP02001-054, Ver.031WM) + + + jwildb52h + Joker's Wild (B52 system, BP55114-V1104, Ver.054NMV, Harrah's GFX) + + + jxry + Jixiang Ruyi (V116CN) + + + jxzh + Jinxiu Zhonghua + + + jy_03 + Junk Yard (0.3) + + + jy_11 + Junk Yard (1.1) + + + jy_12 + Junk Yard (1.2) + + + jyangoku + Jyangokushi: Haoh no Saihai (Japan 990527) + + + jyuohki + Jyuohki (Japan) + + + jzth + Juezhan Tianhuang + + + k7_olym + Olympic Darts K7 (v3.11) + + + k7_olym30 + Olympic Darts K7 (v3.00) + + + kabukijq + Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den (Enhanced, Hack) + + + kabukikl + Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den + + + kabukiklb + Far East of Eden - Kabuki Klash / Tengai Makyou - Shin Den (Add hidden characters) + + + kabukiz + Kabuki-Z (World) + + + kabukizj + Kabuki-Z (Japan) + + + kageki + Kageki (World) + + + kagekih + Kageki (hack) + + + kagekij + Kageki (Japan) + + + kagekiu + Kageki (US) + + + kaguya + Mahjong Kaguyahime (Japan 880521) + + + kaguya2 + Mahjong Kaguyahime Sono2 (Japan 890829) + + + kaguya2f + Mahjong Kaguyahime Sono2 Fukkokuban (Japan 010808) + + + kaiserkj + Kaiser Knuckle (Japan) + + + kaiserkn + Kaiser Knuckle (Ver 2.1O 1994/07/29) + + + kaiserknj + Kaiser Knuckle (Ver 2.1J 1994/07/29) + + + kaitei + Kaitei Takara Sagashi + + + kaiteids + Kaitei Daisensou (Japan) + + + kaitein + Kaitei Takara Sagashi (Namco license) + + + kaiunqz + Kaiun Quiz (Japan, KW1/VER.A) + + + kajotcrd + Kajot Card (Version 1.01, Wien Euro) + + + kakumei + Mahjong Kakumei (Japan) + + + kakumei2 + Mahjong Kakumei 2 - Princess League (Japan) + + + kamakazi3 + Kamakazi III (hack of 'Super Galaxians') + + + kamenrid + Masked Riders Club Battle Race / Kamen Rider Club Battle Racer + + + kamikaze + Kamikaze + + + kamikazesp + Kamikaze (Euromatic S.A., Spanish bootleg of Scramble) + + + kamikazp + Kamikaze (Potomac Games, bootleg of Galaxian) + + + kamikcab + Kamikaze Cabbie + + + kanatuen + Kanatsuen no Onna (Japan 880905) + + + kangaroa + Kangaroo (Atari) + + + kangarob + Kangaroo (bootleg) + + + kangaroo + Kangaroo + + + kangarooa + Kangaroo (Atari) + + + kangaroob + Kangaroo (bootleg) + + + kangarool + Kangaroo (Löwen-Automaten) + + + kaos + Kaos + + + karatblu + Karate Blazers (US) + + + karatblz + Karate Blazers (World, set 1) + + + karatblza + Karate Blazers (World, set 2) + + + karatblzbl + Karate Blazers (bootleg with Street Smart sound hardware) + + + karatblzj + Toushin Blazers (Japan, Tecmo license) + + + karatblzt + Karate Blazers (World, Tecmo license) + + + karatblzu + Karate Blazers (US) + + + karateda + Karate Dou (Arfyc bootleg) + + + karatedo + Karate Dou (Japan) + + + karatevs + Taisen Karate Dou (Japan) + + + karatour + The Karate Tournament + + + karatourj + Chatan Yara Kuushanku - The Karate Tournament (Japan) + + + karianx + Karian Cross (Rev. 1.0) + + + karnov + Karnov (US, rev 6) + + + karnova + Karnov (US, rev 5) + + + karnovj + Karnov (Japan) + + + karnovjbl + Karnov (Japan, bootleg with NEC D8748HD) + + + karnovng + Karnov Neo Geo (HB) + + + karnovr + Karnov's Revenge / Fighter's History Dynamite + + + karnovre + Karnov's Revenge / Fighter's History Dynamite - Revolution (Hack, v0.2) + + + karous + Karous (Japan) (GDL-0040) + + + kartduel + Kart Duel (World, KTD2/VER.A) + + + kartduelja + Kart Duel (Japan, KTD1/VER.A) + + + kas89 + Kasino '89 + + + kattobas + Kattobase Power Pro Kun + + + kazan + Ninja Kazan (World) + + + kbadlands + Badlands (Konami, set 1) + + + kbadlandsh + Badlands (Konami, set 2) + + + kbash + Knuckle Bash + + + kbash2 + Knuckle Bash 2 (bootleg) + + + kbashk + Knuckle Bash (Korean PCB) + + + kbashp + Knuckle Bash (location test) + + + kbh + Keyboardheaven (Korea) + + + kbm + Keyboardmania + + + kbm2nd + Keyboardmania 2nd Mix + + + kbm3rd + Keyboardmania 3rd Mix + + + kchamp + Karate Champ (US) + + + kchamp2p + Karate Champ (US, 2 players) + + + kchamptec + Karate Champ (Tecfri bootleg) + + + kchampvs + Karate Champ: Player Vs Player (US, set 1) + + + kchampvs2 + Karate Champ: Player Vs Player (US, set 2) + + + kchampvs3 + Karate Champ: Player Vs Player (US, set 3) + + + kchampvs4 + Karate Champ: Player Vs Player (US, set 4) + + + kd2001 + Knock Down 2001 (Japan, KD11 Ver. B) + + + kdeadeye + Dead Eye (GV054 UAA01) + + + kdynastg + King of Dynast Gear (version 1.8) + + + keirinou + Keirin Ou + + + keith + Keith Courage In Alpha Zones (United Amusements PC Engine) + + + keithlcy + Dramatic Adventure Quiz Keith & Lucy (Japan) + + + keks + Keks (060328 World) + + + keks_10 + Keks (110816 Entertainment X) + + + keks_11 + Keks (101209 Entertainment N) + + + keks_12 + Keks (110816 Entertainment N) + + + keks_13 + Keks (110204 Entertainment A) + + + keks_14 + Keks (110208 Entertainment A) + + + keks_15 + Keks (110816 Entertainment A) + + + keks_16 + Keks (110311 Entertainment B) + + + keks_17 + Keks (110816 Entertainment B) + + + keks_18 + Keks (140526 Entertainment B) + + + keks_19 + Keks (110411 Entertainment C) + + + keks_2 + Keks (060403 World) + + + keks_2a + Keks (bootleg, 060403, banking address hack) + + + keks_2b + Keks (bootleg, 060403, banking address hack, changed version text) + + + keks_2c + Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 1) + + + keks_2d + Keks (bootleg, 060403, VIDEO GAME-1 KS01 set 2) + + + keks_2e + Keks (bootleg, 060403, banking address hack, payout percentage 60) + + + keks_2f + Keks (bootleg, 060403, LOTTOGAME (I)) + + + keks_2g + Keks (bootleg, 060403, LOTOS KS01) + + + keks_3 + Keks (070119 Russia) + + + keks_3a + Keks (bootleg, 070119, banking address hack set 1) + + + keks_3b + Keks (bootleg, 070119, banking address hack set 2) + + + keks_4 + Keks (090604 Lottery) + + + keks_5 + Keks (090727 Entertainment) + + + keks_6 + Keks (110816 World) + + + keks_7 + Keks (110816 Russia) + + + keks_8 + Keks (100330 Entertainment X) + + + keks_9 + Keks (100331 Entertainment X) + + + keksa + Keks (bootleg, 060328, banking address hack) + + + keksb + Keks (bootleg, 060328, backdoor) + + + keksc + Keks (bootleg, 060328, banking address hack, changed version text) + + + kengo + Ken-Go (World) + + + kengoj + Ken-Go (Japan) + + + kenseim + Ken Sei Mogura: Street Fighter II (Japan 940418, Ver 1.00) + + + keroppi + Kero Kero Keroppi's Let's Play Together (USA, Version 2.0) + + + keroppij + Kero Kero Keroppi no Isshoni Asobou (Japan) + + + keroro + Keroro Gunsou: Pekopon Shinryaku Shirei...De Arimasu! (KRG1 Ver.A) + + + ket + Ketsui: Kizuna Jigoku Tachi (2003/01/01. Master Ver.) + + + ket1 + Ketsui: Kizuna Jigoku Tachi (2003/01/01. Master Ver.) (alt rom fill) + + + keta + Ketsui: Kizuna Jigoku Tachi (2003/01/01 Master Ver.) + + + ketarr + Ketsui: Kizuna Jigoku Tachi (2014/07/16 ARRANGE 1.7 VER) (hack) + + + ketarr10 + Ketsui: Kizuna Jigoku Tachi (2012/04/17 ARRANGE VER) (hack) + + + ketarr15 + Ketsui: Kizuna Jigoku Tachi (2012/06/26 ARRANGE 1.5 VER) (hack) + + + ketarr151 + Ketsui: Kizuna Jigoku Tachi (2012/06/26 ARRANGE 1.51 VER) (hack) + + + ketarrf + Ketsui: Kizuna Jigoku Tachi (2012/04/17 FAST. VER) (hack) + + + ketarrs15 + Ketsui: Kizuna Jigoku Tachi (2012/06/27 MR.STOIC 1.5 VER) (hack) + + + ketarrs151 + Ketsui: Kizuna Jigoku Tachi (2012/06/27 MR.STOIC 1.51 VER) (hack) + + + ketb + Ketsui: Kizuna Jigoku Tachi (2003/01/01 Master Ver) + + + ketbl + Ketsui: Kizuna Jigoku Tachi (2003/01/01. Master Ver., bootleg cartridge conversion) + + + keyboard + La Keyboard (GDS-0017) + + + kf10thep + The King of Fighters 10th Anniversary Extra Plus (bootleg of The King of Fighters 2002) + + + kf10thuo + The King of Fighters 10th Anniversary (Optimized 2020, Hack) + + + kf2k1pkz + The King of Fighters 2001 (PS2 Krizalid, Hack) + + + kf2k1pla + The King of Fighters 2001 Plus (set 2, bootleg / hack) + + + kf2k1pls + The King of Fighters 2001 Plus (set 1, bootleg / hack) + + + kf2k1ult + The King of Fighters 2001 (All Boss Plus, Hack) + + + kf2k23rd + The King of Fighters 2002 (3rd Strike of Orochi, Hack) + + + kf2k2mix + The King of Fighters 2002 (Climax, Hack) + + + kf2k2mp + The King of Fighters 2002 Magic Plus (bootleg) + + + kf2k2mp2 + The King of Fighters 2002 Magic Plus II (bootleg) + + + kf2k2mp3 + The King of Fighters 2002 Magic Plus III (Hack) + + + kf2k2p17 + The King of Fighters 2002 (Plus 2017, Hack) + + + kf2k2pla + The King of Fighters 2002 Plus (bootleg set 2) + + + kf2k2plb + The King of Fighters 2002 Plus (bootleg set 3) + + + kf2k2plc + The King of Fighters 2002 Super (bootleg) + + + kf2k2plh + The King of Fighters 2002 Plus (Hack) + + + kf2k2pls + The King of Fighters 2002 Plus (bootleg set 1) + + + kf2k2ps2re + The King of Fighters 2002 (PlayStation 2 Plus 2025 ver 1.0, Hack) + + + kf2k3bl + The King of Fighters 2003 (bootleg set 1) + + + kf2k3bla + The King of Fighters 2003 (bootleg set 2) + + + kf2k3p2s + The King of Fighters 2003 (PS2 Style Portraits, Hack) + + + kf2k3pcb + The King of Fighters 2003 (Japan, JAMMA PCB) + + + kf2k3pl + The King of Fighters 2004 Plus / Hero (bootleg of The King of Fighters 2003) + + + kf2k3ps2 + The King of Fighters 2003 (PlayStation 2, Hack) + + + kf2k3upl + The King of Fighters 2004 Ultra Plus (bootleg of The King of Fighters 2003) + + + kf2k4pls + The King of Fighters Special Edition 2004 Plus (bootleg) + + + kf2k5uni + The King of Fighters 10th Anniversary 2005 Unique (bootleg of The King of Fighters 2002) + + + kftgoal + Kick for the Goal + + + kgalah + King Galah (0200536V, NSW/ACT) + + + kgalaha + King Galah (0100536V, NSW/ACT) + + + kgalahce + King Galah - Cash Express (AHG1625, US) + + + kgbird + K.G. Bird (3XF5264H04, US) + + + kgbirda5 + K.G. Bird (0200024V, NSW/ACT) + + + kgbirdnz + K.G. Bird (4VXFC5341, New Zealand, 5c) + + + kgbirdnza + K.G. Bird (4VXFC5341, New Zealand, 10c) + + + kick + Kick (upright) + + + kick4csh + Kick '4' Cash (Export) + + + kicka + Kick (cocktail) + + + kickball + Kick Ball + + + kickboy + Kick Boy + + + kickc + Kick (cocktail) + + + kicker + Kicker + + + kickgoal + Kick Goal (set 1) + + + kickgoala + Kick Goal (set 2) + + + kickman + Kickman (upright) + + + kicknkick + Kick & Kick (GNA36 VER. EAA) + + + kicknrun + Kick and Run (World) + + + kicknrunu + Kick and Run (US) + + + kickoff + Kick Off: Jaleco Cup (Japan) + + + kickoffb + Kick Off: World Cup (bootleg) + + + kickridr + Kick Rider + + + kidnap + Kidnap + + + kidniki + Kid Niki - Radical Ninja (World) + + + kidnikib + Kid Niki (bootleg) + + + kidnikiu + Kid Niki - Radical Ninja (US) + + + kikaioh + Choukou Senki Kikaioh (Japan 980914) + + + kikcubic + Meikyu Jima (Japan) + + + kikcubicb + Kickle Cubele + + + kikikai + KiKi KaiKai + + + kiko_a10 + King Kong (1.0) + + + kikstart + Kick Start: Wheelie King + + + killbld + The Killing Blade / Ao Jian Kuang Dao (ver. 109, Chinese Board) + + + killbld100 + The Killing Blade / Ao Jian Kuang Dao (ver. 100) + + + killbld104 + The Killing Blade / Ao Jian Kuang Dao (ver. 104) + + + killbld106 + The Killing Blade / Ao Jian Kuang Dao (ver. 106) + + + killbld109 + The Killing Blade (ver. 109 alt, Chinese Board) + + + killbldjq + The Killing Blade - Infinite Energy (Hack) + + + killbldp + The Killing Blade Plus / Ao Jian Kuang Dao Jiaqiang Ban (China, ver. 300) + + + killbldqy + The Killing Blade - Heroes (Hack) + + + killcom + Killer Comet + + + kimbldhl + Kimble Double HI-LO + + + kimblz80 + Kimble Double HI-LO (z80 version) + + + kingbalj + King and Balloon (Japan) + + + kingball + King & Balloon (US) + + + kingballj + King & Balloon (Japan) + + + kingdmgp + Kingdom Grandprix + + + kingdrbb + King Derby (Taiwan bootleg) + + + kingdrbb2 + King Derby (bootleg set 2) + + + kingdrby + King Derby (1981) + + + kingnep + King Neptune (20189111, NSW/ACT) + + + kingnile + King of the Nile (30106331, NSW/ACT) + + + kingnilea + King of the Nile (20106321, NSW/ACT) + + + kingnileb + King of the Nile (10127511, ASP) + + + kingofb + King of Boxer (World) + + + kingofbj + King of Boxer (Japan) + + + kingpeng + King Penguin (20109021, NSW/ACT) + + + kingpengsp + King Penguin (40109021, NSW/ACT, Show Program) + + + kingpin + Kingpin + + + kingrt66 + The King of Route 66 (Rev A) + + + kingrt66p + The King of Route 66 (prototype) + + + kingsran + King's Ransom (0301689V, New Zealand) + + + kingt_l1 + King Tut (Shuffle) (L-1) + + + kingtut + King Tut (NSW, Australia) + + + kingyo + Yataimura Kingyosukui (1-player, Japan, Ver 1.005) + + + kingyoch + Yataimura Kingyosukui (4-player, China, Ver 1.000) + + + kinniku + Kinnikuman Muscle Grand Prix (KN1 Ver. A) + + + kinniku2 + Kinnikuman Muscle Grand Prix 2 (KN2 Ver. A) + + + kinst + Killer Instinct + + + kinst2 + Killer Instinct 2 + + + kinst2uk + Killer Instinct 2 (upgrade kit) + + + kinstb + Killer Instinct (SNES bootleg) + + + kinstsnes + Killer Instinct (SNES bootleg with timer) + + + kirameki + Kirameki Star Road (Ver 2.10J 1997/08/29) + + + kirarast + Ryuusei Janshi Kirara Star + + + kisekaeh + Kisekae Hanafuda + + + kisekaem + Kisekae Mahjong + + + kiss + Kiss + + + kissp + Kiss (prototype) + + + kissp2 + Kiss (prototype v.2) + + + kittenk + Kitten Kaboodle + + + kiwame + Pro Mahjong Kiwame + + + kiwames + Pro Mahjong Kiwame S (J 951020 V1.208) + + + kizuna + Kizuna Encounter - Super Tag Battle / Fu'un Super Tag Battle + + + kizuna4p + Kizuna Encounter - Super Tag Battle 4 Way Battle Version / Fu'un Super Tag Battle Special Version + + + kkcount + Circlun - Kuru.Kuru-Count + + + kkongltd + King Kong + + + kkotnoli + Kkot No Li (Kill the Bees) + + + klax + Klax (version 6) + + + klax2 + Klax (set 2) + + + klax3 + Klax (set 3) + + + klax4 + Klax (version 4) + + + klax5 + Klax (version 5) + + + klax5bl + Klax (version 5, bootleg set 1) + + + klax5bl2 + Klax (version 5, bootleg set 2) + + + klax5bl3 + Klax (version 5, bootleg set 3) + + + klaxd + Klax (Germany) + + + klaxd2 + Klax (Germany, version 2) + + + klaxj + Klax (Japan) + + + klaxj3 + Klax (Japan, version 3) + + + klaxj4 + Klax (Japan, version 4) + + + klaxp1 + Klax (prototype set 1) + + + klaxp2 + Klax (prototype set 2) + + + klondkp + KlonDike+ + + + klxyj + Kuai Le Xi You Ji + + + knckhead + Knuckle Heads (World) + + + knckheadj + Knuckle Heads (Japan) + + + knckheadjp + Knuckle Heads (Japan, Prototype?) + + + knckhedj + Knuckle Heads (Japan) + + + kncljoe + Knuckle Joe (set 1) + + + kncljoea + Knuckle Joe (set 2) + + + kngtmare + Knightmare (prototype) + + + knightar + Knights in Armor + + + knightb + Knight Boy (bootleg of KiKi KaiKai, set 1) + + + knightba + Knight Boy (bootleg of KiKi KaiKai, set 2) + + + knightct + Knights of the Round (Count, Hack) + + + knights + Knights of the Round (World 911127) + + + knightsb + Knights of the Round (bootleg with 2xMSM5205, set 1) + + + knightsb2 + Knights of the Round (bootleg, World 911127) + + + knightsb3 + Knights of the Round (bootleg with 2xMSM5205, set 2) + + + knightsb4 + Knights of the Round (bootleg with YM2151 + 2xMSM5205) + + + knightsb5 + Knights of the Round (bootleg, Japan 911127) + + + knightsc + Knights of the Round (hack, Chinese Translation) + + + knightsch + Knight's Chance (HB) + + + knightsh + Knights of the Round (hack) + + + knightsh2 + Knights of the Round (bootleg, World 911127) + + + knightsj + Knights of the Round (Japan 911127, B-Board 91634B-2) + + + knightsja + Knights of the Round (Japan 911127, B-Board 89625B-1) + + + knightsp + Knights of the Round (Plus, Hack) + + + knightsu + Knights of the Round (USA 911127) + + + knockout + Knock Out!! (bootleg, set 1) + + + knockoutb + Knock Out!! (bootleg, set 2) + + + knockoutc + Knock Out!! (bootleg, set 3) + + + knpuzzle + Kotoba no Puzzle Mojipittan (Japan, KPM1 Ver.A) + + + koalama6 + Koala Mint (30001011, NSW/ACT) + + + koalamnt + Koala Mint (CHG1573, US) + + + kod + The King of Dragons (World 910805) + + + kod1v3 + The King of Dragons (1v3, Hack) + + + kodb + The King of Dragons (bootleg) + + + kodbs + The King of Dragons (Boss Battle, Hack) + + + kodda + The King of Dragons (World 910731 Phoenix Edition) (bootleg) + + + koddw + The King of Dragons (Warriors, Hack) + + + kodh + The King of Dragons (hack) + + + kodj + The King of Dragons (Japan 910805, B-Board 90629B-3) + + + kodja + The King of Dragons (Japan 910805, B-Board 89625B-1) + + + kodly + The King of Dragons (Tough Plus, Hack) + + + kodlys + The King of Dragons (Dragonslayer, Hack) + + + kodr1 + The King of Dragons (World 910711) + + + kodr2 + The King of Dragons (World 910731) + + + kodsr + The King of Dragons (Remix Special, Hack) + + + kodu + The King of Dragons (USA 910910) + + + kodure + Kodure Ookami (Japan) + + + kodyh + The King of Dragons (Fireworks, Hack) + + + kof10th + The King of Fighters 10th Anniversary (bootleg of The King of Fighters 2002) + + + kof10thd + The King of Fighters 10th Anniversary (The King of Fighters 2002 bootleg / Fully Decrypted) + + + kof2000 + The King of Fighters 2000 (NGM-2570 ~ NGH-2570) + + + kof2000bc + The King of Fighters 2000 (Imitate BC 14 System, Hack By Aillis) + + + kof2000n + The King of Fighters 2000 (not encrypted) + + + kof2000t + The King of Fighters 2000 (Optimized, Hack) + + + kof2001 + The King of Fighters 2001 (NGM-262?) + + + kof2001h + The King of Fighters 2001 (NGH-2621) + + + kof2002 + The King of Fighters 2002 (NGM-2650 ~ NGH-2650) + + + kof2002b + The King of Fighters 2002 (bootleg) + + + kof2002m + The King of Fighters 2002 (Mugen, Hack) + + + kof2002t + The King of Fighters 2002 Plus (Optimised, Hack) + + + kof2002um + The King of Fighters - Fuchou Zhi Lu/Road to Revenge / The King of Fighters 2002 Unlimited Match (China) + + + kof2002umj + The King of Fighters 2002 Unlimited Match (Japan) + + + kof2003 + The King of Fighters 2003 (NGM-2710, Export) + + + kof2003d + The King of Fighters 2003 (Decrypted) + + + kof2003h + The King of Fighters 2003 (NGH-2710) + + + kof2003t + The King of Fighters 2003 (Plus, Hack) + + + kof2k1bs + The King of Fighters 2001 (Boss, Hack) + + + kof2k1fd + The King of Fighters 2001 (Fully Decrypted) + + + kof2k1rp + The King of Fighters 2001 (Remix Pro v1.02 Final, Hack) + + + kof2k1ru + The King of Fighters 2001 (Remix Ultra 2.3, Hack) + + + kof2k2br + The King of Fighters 2002 (Portuguese edition v2.0, Hack) + + + kof2k2fd + The King of Fighters 2002 (Fully Decrypted) + + + kof2k2jq + The King of Fighters 2002 (Infinite Energy, Hack) + + + kof2k2ly + The King of Fighters 2002 (Remix, Hack) + + + kof2k2omg + The King of Fighters 2002 (Omega v.0?) + + + kof2k2omg8 + The King of Fighters 2002 (Omega v0.8) + + + kof2k2omg9 + The King of Fighters 2002 (Omega v0.9) + + + kof2k2omg9b + The King of Fighters 2002 (Omega v0.9 beta) + + + kof2k2ru + The King of Fighters 2002 (Remix Ultra 3.5, Hack) + + + kof2k2ts + The King of Fighters 2002 (Battle with Orochi, Hack) + + + kof2k3br + The King of Fighters 2003 (Portuguese edition v1.0, Hack) + + + kof2k3fd + The King of Fighters 2003 (Fully Decrypted) + + + kof2k4se + The King of Fighters Special Edition 2004 (bootleg of The King of Fighters 2002) + + + kof2kfd + The King of Fighters 2000 (Fully Decrypted) + + + kof2kotc + The King of Fighters 2000 (OTC, Hack) + + + kof2kpls + The King of Fighters 2000 (Plus Blue, Hack) + + + kof2kps2 + The King of Fighters 2000 (Playstation 2, Hack) + + + kof2ksp + The King of Fighters 2000 (Special, Hack) + + + kof2kxxx + The King of Fighters 2000 SP XXX (Hack, Ver. 2016-01-04) + + + kof94 + The King of Fighters '94 (NGM-055 ~ NGH-055) + + + kof94br + The King of Fighters '94 (Portuguese edition, Hack) + + + kof94bs + The King of Fighters '94 (Boss, Hack) + + + kof94nr2 + The King of Fighters '94 (New Remix 2018 Rev.2, Hack) + + + kof94rz + The King of Fighters '94 (Hack Boss Remixed) + + + kof94te + The King of Fighters '94 (Team Edit Edition: KOF95 style portraits v1.4.2, Hack) + + + kof94tea + The King of Fighters '94 (Team Edit Edition: KOF94 style portraits v1.4.2, Hack) + + + kof95 + The King of Fighters '95 (NGM-084) + + + kof95a + The King of Fighters '95 (NGM-084, alt board) + + + kof95b + The King of Fighters '95 (Enable Hidden Characters V.[?]) + + + kof95bs + The King of Fighters '95 (Boss, Hack) + + + kof95h + The King of Fighters '95 (NGH-084) + + + kof95jq + The King of Fighters '95 (Infinite Energy, Hack) + + + kof95sp + The King of Fighters '95 (Special 2017, Hack) + + + kof95sr3 + The King of Fighters '95 (Super Remix V3, Hack) + + + kof95t + The King of Fighters '95 (Optimized, Hack) + + + kof96 + The King of Fighters '96 (NGM-214) + + + kof96a + The King of Fighters '96 (NGM-214, alt board) + + + kof96ae + The King of Fighters '96 (Anniversary, Hack) + + + kof96cn + The King of Fighters '96 (Chinese Edition, ver 1.0, Hack) + + + kof96ep + The King of Fighters '96 (bootleg / hack) + + + kof96h + The King of Fighters '96 (NGH-214) + + + kof96pls + The King of Fighters '96 (Plus, Hack) + + + kof96r + The King of Fighters '96 (Revised, Hack) + + + kof96rp + The King of Fighters '96 (Remix Plus 08 SP, Hack) + + + kof96rss + The King of Fighters '96 (Remix Spring Special, Version 1.5, Hack) + + + kof97 + The King of Fighters '97 (NGM-2320) + + + kof97a + The King of Fighters '97 (set 2) + + + kof97ae + The King of Fighters '97 (Anniversary, Hack) + + + kof97bs + The King of Fighters '97 (Boss, Hack) + + + kof97bt + The King of Fighters '97 (Balanced & Optimized, Hack) + + + kof97cb + The King of Fighters '97 (Combo, Hack) + + + kof97cbt + The King of Fighters '97 (Combo Training, Hack, Ver. 2018) + + + kof97ce + The King of Fighters '97 (Champion Edition, Hack) + + + kof97cn + The King of Fighters '97 (10th Anniversary Chinese Edition, Hack) + + + kof97eb + The King of Fighters '97 (Evolution & Balance, Hack) + + + kof97evf + The King of Fighters '97 (Evolution FC2, Hack) + + + kof97evn + The King of Fighters '97 (Evolution New, Hack) + + + kof97h + The King of Fighters '97 (NGH-2320) + + + kof97inv + The King of Fighters '97 (Invincible Plus!, B2.1.2107, Hack) + + + kof97k + The King of Fighters '97 (Korean release) + + + kof97m + The King of Fighters '97 (Dream Back, Hack) + + + kof97oro + The King of Fighters '97 Chongchu Jianghu Plus 2003 (bootleg) + + + kof97pla + The King of Fighters '97 Chongchu Jianghu Plus 2003 (bootleg, set 2) + + + kof97plc + The King of Fighters '97 Plus (Enhanced, Hack) + + + kof97plh + The King of Fighters '97 Plus (Hack) + + + kof97pls + The King of Fighters '97 Plus (bootleg) + + + kof97pm + The King of Fighters '97 (Practice Mode, Hack) + + + kof97ps + The King of Fighters '97 (Imitation Playstation final improved version 2016-10-29) + + + kof97rc + The King of Fighters '97 (Random Combo, Hack, Ver. 2010) + + + kof97rm + The King of Fighters '97 (Randomized, Hack) + + + kof97sp + The King of Fighters '97 (Special, Hack) + + + kof97st + The King of Fighters '97 (Strengthen Innovation, Hack) + + + kof97t + The King of Fighters '97 (Optimized, Hack) + + + kof97ts + The King of Fighters '97 (Battle with Orochi, v1.2, Hack) + + + kof97ubp + The King of Fighters '97 (Ultimate Battle Plus, Hack) + + + kof97xt + The King of Fighters '97 (Final Battle, Hack) + + + kof98 + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGM-2420) + + + kof98a + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGM-2420, alt board) + + + kof98ae + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Anniversary, Hack) + + + kof98bc2k2 + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (BC Style 2002, Hack) (Unknown Author) + + + kof98bc2nd + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (BC 2nd Impact Edition, Hack, Ver.2020-07-29) + + + kof98bsc + King of Fighters '98 - Dream Match Never Ends (Boss Chinese Edition, Hack) + + + kof98cb + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Combo, Hack) + + + kof98cp + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Combo Plus, Hack) + + + kof98eck + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Easy Combo Edition, Hack) + + + kof98evo + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Evolution, Hack) + + + kof98h + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (NGH-2420) + + + kof98k + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Korean board, set 1) + + + kof98ka + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Korean board, set 2) + + + kof98mix + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Unlimited, Hack) + + + kof98n + The King of Fighters '98 - The Slugfest - King of Fighters '98 / Dream Match Never Ends (Decrypted) + + + kof98pfe + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Plus Final Edition, Hack) + + + kof98plc + King of Fighters '98 - Dream Match Never Ends (Plus Chinese Edition, Hack) + + + kof98rat + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Ratio, Hack) + + + kof98ult + The King of Fighters '98 - The Slugfest / King of Fighters '98 - Dream Match Never Ends (Ultimate Match, Hack) + + + kof98um + The King of Fighters '98: Ultimate Match (v1.00) + + + kof98umh + The King of Fighters '98: Ultimate Match HERO (China, V100, 09-08-23) + + + kof99 + The King of Fighters '99 - Millennium Battle (NGM-2510) + + + kof99a + The King of Fighters '99 - Millennium Battle (set 2) + + + kof99ae + The King of Fighters '99 - Millennium Battle (Anniversary, Hack) + + + kof99cb + The King of Fighters '99 - Millennium Battle (Combo, Hack) + + + kof99e + The King of Fighters '99 - Millennium Battle (earlier) + + + kof99eur + The King of Fighters '99 - Millennium Battle (Evolution Ultra Remix, Hack) + + + kof99fd + The King of Fighters '99 - Millennium Battle (Fully Decrypted) + + + kof99h + The King of Fighters '99 - Millennium Battle (NGH-2510) + + + kof99jh + The King of Fighters '99 - Millennium Battle (Evolution, Hack) + + + kof99jq + The King of Fighters '99 - Millennium Battle (Infinite Energy, Hack) + + + kof99k + The King of Fighters '99 - Millennium Battle (Korean release) + + + kof99ka + The King of Fighters '99 - Millennium Battle (Korean release, non-encrypted program) + + + kof99n + The King of Fighters '99 - Millennium Battle (not encrypted) + + + kof99p + The King of Fighters '99 - Millennium Battle (prototype) + + + kof99pls + The King of Fighters '99 - Millennium Battle (Plus, Hack) + + + kof99rp + The King of Fighters '99 - Millennium Battle (Remix Pro v2.01 Final, Hack) + + + kof99sk + The King of Fighters '99 - Millennium Battle (LC+SK, Hack) + + + kof99sr + The King of Fighters '99 - Millennium Battle (Summer Revolution, Hack) + + + kof99t + The King of Fighters '99 - Millennium Battle (Optimized, Hack) + + + kofnw + The King of Fighters Neowave + + + kofnwj + The King of Fighters Neowave (Japan) + + + kofskyst + KOF Sky Stage (v1.00J) + + + koftball + King of Football + + + kofxi + The King of Fighters XI + + + kofxii + The King of Fighters XII (v1.00) + + + kog + King of Gladiator (bootleg of The King of Fighters '97) + + + kogplus + King of Gladiator Plus (The King of Fighters '97 bootleg) + + + kohinoor + Kohinoor (10136711, NSW/ACT) + + + koikoi + Koi Koi Part 2 + + + koikois + Koi Koi Shimasho - Super Real Hanafuda + + + koikois2 + Koi Koi Shimasho 2 - Super Real Hanafuda (Japan) + + + koinomp + Mahjong Koi no Magic Potion (Japan) + + + kok + Povar / Sobrat' Buran / Agroprom (Arcade multi-game bootleg of ZX Spectrum 'Cookie', 'Jetpac' & 'Pssst') + + + kokoroj + Soreike Kokology (Rev A) + + + kokoroj2 + Soreike Kokology Vol. 2 - Kokoro no Tanteikyoku + + + kokoroja + Soreike Kokology + + + kollon + Kollon (V2.04JA 2003/11/01 12:00) + + + kollonc + Kollon (V2.04JC 2003/11/01 12:00) + + + komemokos + Komemokos (hack of 'Pac-Man (Cirsa, Spanish bootleg)') + + + komocomo + Komo Como (Topmar, bootleg?) + + + konam80a + Konami 80's AC Special (GC826 VER. AAA) + + + konam80j + Konami 80's Gallery (GC826 VER. JAA) + + + konam80k + Konami 80's AC Special (GC826 VER. KAA) + + + konam80s + Konami 80's AC Special (GC826 VER. EAA) + + + konam80u + Konami 80's AC Special (GC826 VER. UAA) + + + konami88 + Konami '88 + + + konamigt + Konami GT + + + konek + Konek-Gorbunok + + + kong + Kong (Donkey Kong conversion on Galaxian hardware) + + + kong2600 + Donkey Kong (2600 graphics, hack) + + + kongball + Kong Ball (prototype) + + + konhaji + Konnano Hajimete! (Japan) + + + konotako + Kono e Tako (10021 Ver.A) + + + kontest + Konami Test Board (GX800, Japan) + + + konzero + Zero (Konami Endeavour) + + + kookabuk + Kooka Bucks (0100677V, NSW/ACT) + + + kopunch + KO Punch + + + korinai + Mahjong-zukino Korinai Menmen (Japan 880425) + + + korinaim + Mahjong-zukino Korinai Menmen (Japan 880920, medal) + + + korokoro + Koro Koro Quest (Japan) + + + koroleva + Snezhnaja Koroleva + + + koropens + Korokoro Pensuke + + + korosuke + Korosuke Roller (Japan) + + + koshien + Ah Eikou no Koshien (Japan) + + + kosmokil + Kosmo Killer + + + kosteel + Kings of Steel + + + kot + Kot-Rybolov (Terminal) + + + kotbinsp + Kkotbinyeo Special (Korea) + + + kotbinyo + Kkotbinyeo (Korea) + + + kotbinyosu + Speed Up / Kkotbinyeo (Korea) + + + kothello + Kyuukyoku no Othello + + + kotm + King of the Monsters (set 1) + + + kotm2 + King of the Monsters 2 - The Next Thing (NGM-039 ~ NGH-039) + + + kotm2a + King of the Monsters 2 - The Next Thing (older) + + + kotm2p + King of the Monsters 2 - The Next Thing (prototype) + + + kotmh + King of the Monsters (set 2) + + + kouyakyu + The Koukou Yakyuu + + + kov + Knights of Valour / Sanguo Zhan Ji / Sangoku Senki (ver. 117, Hong Kong) + + + kov111 + Knights of Valour / Sanguo Zhan Ji / Sangoku Senki (ver. 111, Japanese Board) + + + kov114 + Knights of Valour / Sanguo Zhan Ji / Sangoku Senki (ver. 114, Hong Kong) + + + kov115 + Knights of Valour / Sanguo Zhan Ji / Sangoku Senki (ver. 115) + + + kov2 + Knights of Valour 2 / Sanguo Zhan Ji 2 / Sangoku Senki 2 (ver. 107, 102, 100HK) + + + kov2100 + Knights of Valour 2 / Sanguo Zhan Ji 2 / Sangoku Senki 2 (ver. 100, 100, 100HK) + + + kov2101 + Knights of Valour 2 / Sanguo Zhan Ji 2 / Sangoku Senki 2 (ver. 101, 101, 100HK) + + + kov2102 + Knights of Valour 2 / Sanguo Zhan Ji 2 / Sangoku Senki 2 (ver. 102, 101, 100HK) + + + kov21022 + Knights of Valour 2 / Sanguo Zhan Ji 2 / Sangoku Senki 2 (ver. 102, 102, 100HK) + + + kov2103 + Knights of Valour 2 / Sanguo Zhan Ji 2 / Sangoku Senki 2 (ver. 103, 101, 100HK) + + + kov2104 + Knights of Valour 2 / Sanguo Zhan Ji 2 / Sangoku Senki 2 (ver. 104, 102, 100HK) + + + kov2106 + Knights of Valour 2 / Sanguo Zhan Ji 2 / Sangoku Senki 2 (ver. 106, 102, 100HK) + + + kov2dzxx + Knights of Valour 2 - Dou Zhuan Xing Xuan (Hack, ver.110) + + + kov2nl + Knights of Valour 2 New Legend / Sanguo Zhan Ji 2 Guang Sao Yu Jun (V302, Oversea) + + + kov2nl_300 + Knights of Valour 2 New Legend / Sanguo Zhan Ji 2 Guang Sao Yu Jun (V300, Oversea) + + + kov2nl_300cn + Sanguo Zhan Ji 2 Gaishi Yingxiong (V300, China) + + + kov2nl_301 + Knights of Valour 2 New Legend / Sanguo Zhan Ji 2 Guang Sao Yu Jun (V301, Oversea) + + + kov2nl_301cn + Sanguo Zhan Ji 2 Gaishi Yingxiong (V301, China) + + + kov2nl_302cn + Sanguo Zhan Ji 2 Gaishi Yingxiong (V302, China) + + + kov2p + Knights of Valour 2 Plus - Nine Dragons / Sanguo Zhan Ji 2 Qunxiong Zhengba / Sanguo Zhan Ji 2 Feilong Zai Tian / Sangoku Senki Busyou Souha (ver. M205XX, 200, 100CN) + + + kov2p200 + Knights of Valour 2 Plus - Nine Dragons / Sanguo Zhan Ji 2 Qunxiong Zhengba / Sanguo Zhan Ji 2 Feilong Zai Tian / Sangoku Senki Busyou Souha (ver. M200XX, 200, 100CN) + + + kov2p202 + Knights of Valour 2 Plus - Nine Dragons / Sanguo Zhan Ji 2 Qunxiong Zhengba / Sanguo Zhan Ji 2 Feilong Zai Tian / Sangoku Senki Busyou Souha (ver. M202XX, 200, 100CN) + + + kov2p203 + Knights of Valour 2 Plus - Nine Dragons / Sanguo Zhan Ji 2 Qunxiong Zhengba / Sanguo Zhan Ji 2 Feilong Zai Tian / Sangoku Senki Busyou Souha (ver. M203XX, 200, 100CN) + + + kov2p204 + Knights of Valour 2 Plus - Nine Dragons / Sanguo Zhan Ji 2 Qunxiong Zhengba / Sanguo Zhan Ji 2 Feilong Zai Tian / Sangoku Senki Busyou Souha (ver. M204XX, 200, 100CN) + + + kov2pemp + Knights of Valour 2 Plus - Extend Magic Plus (Hack) + + + kov2pfwll + Sanguo Zhan Ji 2 Fengwu Longyin (ver. 205S, , Hack of Sanguo Zhan Ji 2 Qunxiong Zhengba) + + + kov2pfwlys + Sanguo Zhan Ji 2 Fengwu Longyin (ver. S0709, Hack of Sanguo Zhan Ji 2 Qunxiong Zhengba) + + + kov2pshjz + Knights of Valour 2 Plus - Shuang Han Jiu Zhou (Hack) + + + kov2pshpd + Knights of Valour 2 Plus - Xie Feng Tian Chi (Hack) + + + kov3 + Knights of Valour 3 / Sanguo Zhan Ji 3 (V104, China, Hong Kong, Taiwan) + + + kov3_100 + Knights of Valour 3 / Sanguo Zhan Ji 3 (V100, China, Hong Kong, Taiwan) + + + kov3_101 + Knights of Valour 3 / Sanguo Zhan Ji 3 (V101, China, Hong Kong, Taiwan) + + + kov3_102 + Knights of Valour 3 / Sanguo Zhan Ji 3 (V102, China, Hong Kong, Taiwan) + + + kov3hd + Knights of Valour 3 HD (M-105CN 13-07-04 18:54:01) + + + kov3hd101 + Knights of Valour 3 HD (V101) + + + kov3hd102 + Knights of Valour 3 HD (V102) + + + kov3hd103 + Knights of Valour 3 HD (V103) + + + kov3hd104 + Knights of Valour 3 HD (V104) + + + kov7sprt + Knights of Valour - The Seven Spirits + + + kovassg + Knights of Valour: Ao Shi San Guo / Sangoku Senki: Ao shi San Guo (V202CN, China) + + + kovassge + Knights of Valour: Ao Shi San Guo / Sangoku Senki: Ao shi San Guo (Encrypted, V202CN, China) + + + kovassgn + Knights of Valour: Ao Shi San Guo / Sangoku Senki: Ao shi San Guo (Newer, V202CN, China) + + + kovlsjb + Luanshi Jie Ba (bootleg of Knights of Valour Super Heroes Plus, ver. 200CN, set 1) + + + kovlsjba + Luanshi Jie Ba (bootleg of Knights of Valour Super Heroes Plus, ver. 200CN, set 2) + + + kovlsqh + Luanshi Quanhuang (bootleg of Knights of Valour Super Heroes Plus, ver. 200CN) + + + kovlsqh2 + Luanshi Quanhuang 2 (bootleg of Knights of Valour Super Heroes Plus, ver. 200CN) + + + kovlsqho + Knights of Valour: Luan Shi Quan Huang Te Bie Ban / Sangoku Senki: Luan Shi Quan Huang Te Bie Ban (V112CN, China) + + + kovlsyx + Sanguo Zhan Ji - Luan Shi Ying Xiong + + + kovlsyxqszl + Luan Shi Ying Xiong - Qiu Sheng Zhi Lu (hack of Knights of Valour Super Heroes Plus, ver. 500) + + + kovlsyxqxzl + Luan Shi Ying Xiong - Qun Xiong Zhu Lu (hack of Knights of Valour Super Heroes Plus, ver. 500) + + + kovlsyxqxzlp + Luan Shi Ying Xiong - Qun Xiong Zhu Lu Plus (hack of Knights of Valour Super Heroes Plus, ver. 500) + + + kovp12dw + Knights of Valour Plus 2012 - Warriors + + + kovp12em + Knights of Valour Plus 2012 - Nightmare + + + kovphsqj + Sanguo Zhan Ji - Heng Sao Qian Jun (Hack) + + + kovplus + Knights of Valour Plus / Sanguo Zhan Ji Zhengzong Plus / Sangoku Senki Masamune Plus (ver. 119, set 1) + + + kovplus20tx + Knights of Valour Plus - Qun Xiong Luan Wu 2020 + + + kovplusa + Knights of Valour Plus / Sanguo Zhan Ji Zhengzong Plus / Sangoku Senki Masamune Plus (ver. 119, set 2) + + + kovplusq + Knights of Valour Plus - New Biography of Heroes (V120) + + + kovptstd + Sanguo Zhan Ji - Zhen Tun Shi Tian Di (Hack) + + + kovpxba + Sanguo Zhan Ji - Xiao Bing Zheng Ba (Ver.A, Hack) + + + kovpxbb + Sanguo Zhan Ji - Xiao Bing Zheng Ba (Ver.B, Hack) + + + kovqhsgs + Quanhuang Sanguo Tebie Ban (bootleg of Knights of Valour Super Heroes, V303CN, Nov 21 2008 19:03:49) + + + kovqhsgs302 + Quanhuang Sanguo Tebie Ban (bootleg of Knights of Valour Super Heroes, V302CN, Dec 29 2010 16:31:32) + + + kovqhsgsa + Quanhuang Sanguo Tebie Ban (bootleg of Knights of Valour Super Heroes, V303CN alt, China) + + + kovqhsgsd + Quanhuang Sanguo Tebie Ban (bootleg of Knights of Valour Super Heroes, V303CN, China, decrypted version) + + + kovqxzbws + Qunxiong Zhengba - Fengyun Zai Qi (Wushuang, Hack, ver. 20230501) + + + kovsgqyz + Sanguo Qunying Zhuan Zhengzong Plus (bootleg of Knights of Valour Plus, set 1) + + + kovsgqyza + Sanguo Qunying Zhuan Zhengzong Plus (bootleg of Knights of Valour Plus, set 2) + + + kovsgqyzb + Sanguo Qunying Zhuan Zhengzong Plus (bootleg of Knights of Valour Plus, set 3) + + + kovsgqyzc + Sanguo Qunying Zhuan Zhengzong Plus (bootleg of Knights of Valour Plus, set 4) + + + kovsgqyzd + Knights of Valour: SanGuo QunYingZhuan / Sangoku Senki: SanGuo QunYingZhuan (V119, set 5) + + + kovsh + Knights of Valour Super Heroes / Sanguo Zhan Ji Fengyun Zaiqi / Sangoku Senki Super Heroes (ver. 104, CN) + + + kovsh100 + Knights of Valour Super Heroes / Sanguo Zhan Ji Fengyun Zaiqi / Sangoku Senki Super Heroes (ver. 100, CN) + + + kovsh101 + Knights of Valour Super Heroes / Sanguo Zhan Ji Fengyun Zaiqi / Sangoku Senki Super Heroes (ver. 101, CN) + + + kovsh102 + Knights of Valour Super Heroes / Sanguo Zhan Ji Fengyun Zaiqi / Sangoku Senki Super Heroes (ver. 102, CN) + + + kovsh103 + Knights of Valour Super Heroes / Sanguo Zhan Ji Fengyun Zaiqi / Sangoku Senki Super Heroes (ver. 103, CN) + + + kovshb + Knights of Valour Superheroes / Sangoku Senki Superheroes (bootleg, V104, China) + + + kovshdf + Knights of Valour Superheroes / Sangoku Senki Superheroes - Dungeons & Warriors (Hack) + + + kovshmg + Knights of Valour Superheroes / Sangoku Senki Superheroes - Muggle Legend (Hack) + + + kovshp + Knights of Valour Super Heroes Plus / Sanguo Zhan Ji Luanshi Xiaoxiong (ver. 101) + + + kovshp100 + Knights of Valour Super Heroes Plus / Sanguo Zhan Ji Luanshi Xiaoxiong (ver. 100) + + + kovshp101 + Knights of Valour Super Heroes Plus / Sanguo Zhan Ji Luanshi Xiaoxiong (ver. 101, Chinese Board) + + + kovshpd3dw + Luan Shi Ying Xiong - Qun Xiong Zhu Lu Wu Shuang Edition (Hack, ver. 500) + + + kovshpqszl + Knights of Valour Super Heroes Plus (The Road to Survival True King, ver. 500) + + + kovshpqszltw + Knights of Valour Super Heroes Plus (The Road to Survival True King Tian Wang, ver. 500) + + + kovshpzqhl + Knights of Valour Super Heroes Plus (The Best Firepower In 2020, 2020-02-06) + + + kovshszl + Knights of Valour Superheroes / Sangoku Senki Superheroes - The Road Beyond the Gods (Hack) + + + kovshxas + Aoshi Sanguo (bootleg of Knights of Valour Super Heroes Plus, V202CN, Oct 6 2008 09:59:26) + + + kovshxsh + Sangoku Senki Super Heroes - Evil & Darkness Plus (Hack) + + + kovytzy + Knights of Valour Super Heroes / Sanguo Zhan Ji Fengyun Zaiqi / Sangoku Senki Super Heroes (SANGO EX+) (ver. 201 'Yitong Zhongyuan', China) + + + kovytzyce + Knights of Valour Super Heroes / Yi Tong Zhong Yuan Qing Ban (2020-A, hack) + + + kovytzyws + Knights of Valour Super Heroes / Yi Tong Zhong Yuan Wu Shuang Ban (2019-0, hack) + + + kovytzywscw + Yi Tong Zhong Yuan - Warriors + + + kozure + Kozure Ookami (Japan) + + + kpontoon + Pontoon (Konami) + + + kpv106 + Kingpin (Pinball) + + + kram + Kram (rev 1) + + + kram2 + Kram (set 2) + + + kram3 + Kram (encrypted) + + + krama + Kram + + + krame + Kram (encrypted) + + + kroozr + Kozmik Kroozr + + + krull + Krull + + + krullp + Krull (Pinball) + + + krzybowl + Krazy Bowl + + + ksayakyu + Kusayakyuu + + + ktiger + Kyukyoku Tiger (Japan, 2 player cooperative) + + + ktiger2 + Kyukyoku Tiger II (Ver 2.1J 1995/11/30) + + + ktiger2p + Kyukyoku Tiger (Japan, 2 Players) + + + ktigera + Kyukyoku Tiger (Japan, 2 player alternate) + + + kuhga + Kuhga - Operation Code 'Vapor Trail' (Japan revision 3) + + + kungfu + Kung Fu Fighters (IGS, v202N) + + + kungfua + Kung Fu Fighters (IGS, v100) + + + kungfub + Kung-Fu Master (bootleg set 1) + + + kungfub2 + Kung-Fu Master (bootleg set 2) + + + kungfub3 + Kung-Fu Master (bootleg set 3) + + + kungfub3s + Kung-Fu Senjyo (bootleg, Spanish) + + + kungfud + Kung-Fu Master (Data East) + + + kungfum + Kung-Fu Master (World) + + + kungfumd + Kung-Fu Master (US) + + + kungfur + Kung-Fu Roushi + + + kungfut + Kung-Fu Taikun (set 1) + + + kungfuta + Kung-Fu Taikun (set 2) + + + kuniokub + Nekketsu Kouha Kunio-kun (Japan bootleg) + + + kuniokun + Nekketsu Kouha Kunio-kun (Japan) + + + kuniokunb + Nekketsu Kouha Kunio-kun (Japan bootleg) + + + kurdart + Kursaal Darts + + + kurikina + Kuri Kinton (World, prototype[Q]) + + + kurikinj + Kuri Kinton (Japan) + + + kurikint + Kuri Kinton (World) + + + kurikinta + Kuri Kinton (World, prototype?) + + + kurikintj + Kuri Kinton (Japan) + + + kurikintu + Kuri Kinton (US) + + + kurikintw + Kuri Kinton (US, World Games license) + + + kurikinu + Kuri Kinton (US) + + + kurucham + Kurukuru Chameleon (Japan) (GDL-0034) + + + kurufev + Kurukuru Fever + + + kurukuru + Kuru Kuru Pyon Pyon (Japan) + + + kuzmich + Kuzmich-Egorych + + + kyhaton + Keep Your Hat On (BHG1204, US) + + + kyros + Kyros + + + kyrosj + Kyros no Yakata (Japan) + + + kyuhito + Kyukyoku no Hito (Japan 880824) + + + kyukaidk + Kyuukai Douchuuki (Japan, new version (Rev B)) + + + kyukaidko + Kyuukai Douchuuki (Japan, old version) + + + kyukaido + Kyuukai Douchuuki (Japan old version) + + + kyustrkr + Last Striker / Kyuukyoku no Striker + + + kz26 + KZ-26 + + + kzaurus + Pittanko Zaurus + + + l9nibble + Lucky 9 + + + labrinth + Labyrinth (Ver 1.5) + + + labyrunk + Labyrinth Runner (World Ver. K) + + + labyrunr + Labyrinth Runner (Japan) + + + labyrunrf + Labyrinth Runner (World Ver. F) + + + labyrunrk + Labyrinth Runner (World Ver. K) + + + lacrazyc + Let's Attack Crazy Cross (GV027 Asia 1.10) + + + ladybug + Lady Bug + + + ladybugb + Lady Bug (bootleg) + + + ladybugb2 + Coccinelle (bootleg of Lady Bug) + + + ladybugg + Lady Bug (bootleg on Galaxian hardware) + + + ladyfrog + Lady Frog + + + ladygolf + Vs. Stroke & Match Golf (Ladies Version, set LG4 ?) + + + ladygolfe + Vs. Stroke & Match Golf (Ladies Version, set LG4 E) + + + ladygum + Lady Gum + + + ladykill + Lady Killer + + + ladylinr + Lady Liner (set 1) + + + ladylinra + Lady Liner (set 2) + + + ladylinrb + Lady Liner (encrypted, set 1) + + + ladylinrc + Lady Liner (encrypted, set 2) + + + ladylinrd + Lady Liner (encrypted, set 3) + + + ladylinre + Lady Liner (encrypted, set 4) + + + ladyluck + Lady Luck + + + ladylukt + Lady Luck (Taito) + + + ladymakr + Lady Maker (Japan) + + + ladymstr + Lady Master of Kung Fu (rev 1) + + + ladymstra + Lady Master of Kung Fu + + + ladyshot + Lady Sharpshooter (set 1) + + + ladyshota + Lady Sharpshooter (set 2) + + + lagirl + LA Girl + + + lagunar + Laguna Racer + + + lah_104f + Last Action Hero (USA 1.04, display F1.01) + + + lah_104s + Last Action Hero (USA 1.04, display L1.02) + + + lah_106c + Last Action Hero (Canada 1.06, display A1.04) + + + lah_107 + Last Action Hero (USA 1.07, display A1.06) + + + lah_108s + Last Action Hero (USA 1.08, display L1.04) + + + lah_110 + Last Action Hero (USA 1.10, display A1.06) + + + lah_112 + Last Action Hero (USA 1.12, display A1.06) + + + lah_xxx_s105 + Last Action Hero (unknown CPU, display L1.05) + + + lamachin + L.A. Machineguns (Japan) + + + lancelot + Sir Lancelot + + + landbrk + Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 3.02) + + + landbrka + Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 3.03) (AT89c52 protected) + + + landbrkb + Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 1.0) (AT89c52 protected) + + + landgear + Landing Gear (Ver 4.2 O) + + + landgeara + Landing Gear (Ver 3.1 O) + + + landgearj + Landing Gear (Ver 4.2 J) + + + landgearja + Landing Gear (Ver 3.0 J) + + + landhigh + Landing High Japan (Ver 2.01 OK) + + + landhigha + Landing High Japan (Ver 2.02 O) + + + landmakr + Land Maker (Ver 2.02O 1998/06/02) + + + landmakrhe + Land Maker (English Translation Hack) + + + landmakrj + Land Maker (Ver 2.01J 1998/06/01) + + + landmakrp + Land Maker (Ver 2.02O 1998/06/02, prototype) + + + landmkrp + Land Maker (World Prototype) + + + lans2004 + Lansquenet 2004 (bootleg of Shock Troopers - 2nd Squad) + + + lapbylap + Lap By Lap + + + laperla + La Perla Nera (Ver 2.0) + + + laperlag + La Perla Nera Gold (Ver 2.0) + + + larana + La Rana (set 1) + + + larana2 + La Rana (set 2) + + + laser + Astro Laser (bootleg of Space Laser) + + + laser2k1 + Laser 2001 (Ver 1.2) + + + laserbas + Laser Base (set 1) + + + laserbasa + Laser Base (set 2) + + + laserbat + Laser Battle + + + lasso + Lasso + + + lasstixx + Laser Strixx 2 + + + lastapos + The Last Apostle Puppetshow + + + lastbank + Last Bank (v1.16) + + + lastbd2b + The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (Enable Hidden Characters V4) + + + lastbd2e + The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (Enhanced, Hack) + + + lastbd2i + The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (Infinite Energy, Hack) + + + lastbd2p + The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (Plus, Hack) + + + lastbd2t + The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (Team, Hack) + + + lastbh + The Last Bounty Hunter (v1.01) + + + lastbh_006 + The Last Bounty Hunter (v0.06) + + + lastblad + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGM-2340) + + + lastblada + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGM-2340, alt board) + + + lastbladh + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (NGH-2340) + + + lastbld2 + The Last Blade 2 / Bakumatsu Roman - Dai Ni Maku Gekka no Kenshi (NGM-2430 ~ NGH-2430) + + + lastblda + Last Blade / Bakumatsu Roman - Gekka no Kenshi, The (set 2) + + + lastbldi + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (Infinite Energy, Hack) + + + lastbldp + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (Plus, Hack) + + + lastblsp + The Last Blade / Bakumatsu Roman - Gekka no Kenshi (Special 2017 v2.5 FINAL, Hack) + + + lastbrnx + Last Bronx (Export, Revision A) + + + lastbrnxj + Last Bronx: Tokyo Bangaichi (Japan, Revision A) + + + lastbrnxu + Last Bronx (USA, Revision A) + + + lastday + The Last Day (set 1) + + + lastdaya + The Last Day (set 2) + + + lastduel + Last Duel (US New Ver.) + + + lastduelb + Last Duel (bootleg) + + + lastduelj + Last Duel (Japan) + + + lastduelm + Last Duel (Modular System) + + + lastduelo + Last Duel (US Old Ver.) + + + lastfero + Last Fortress - Toride (Erotic) + + + lastfght + Last Fighting + + + lastfort + Last Fortress - Toride (Japan, VG420 PCB) + + + lastforte + Last Fortress - Toride (China, Rev C) + + + lastfortea + Last Fortress - Toride (China, Rev A) + + + lastfortg + Last Fortress - Toride (Germany) + + + lastfortj + Last Fortress - Toride (Japan, VG460 PCB) + + + lastfortk + Last Fortress - Toride (Korea) + + + lastfour + Last Four (09:12 16/01/2001) + + + lasthope + Last Hope (bootleg AES to MVS conversion, no coin support) + + + lastkm + Last KM (ver 1.0.0275, checksum 13bff751, prototype) + + + lastlap + Last Lap + + + lastmisn + Last Mission (World revision 8) + + + lastmisnj + Last Mission (Japan) + + + lastmisnu5 + Last Mission (US revision 5) + + + lastmisnu6 + Last Mission (US revision 6) + + + lastmsnj + Last Mission (Japan) + + + lastmsno + Last Mission (US revision 5) + + + lastsold + The Last Soldier (Korean release of The Last Blade) + + + laststar + The Last Starfighter (prototype) + + + lastsurv + Last Survivor (Japan) (FD1094 317-0083) + + + lastsurvd + Last Survivor (Japan) (bootleg of FD1094 317-0083 set) + + + lasvegas + Las Vegas, Nevada + + + lazarian + Lazarian + + + lazercmd + Lazer Command + + + lazrlord + Lazer Lord + + + lazybug + Lazy Bug + + + lbeach + Long Beach + + + lbgrande + Libero Grande (World, LG2/VER.A) + + + lbowling + League Bowling (NGM-019 ~ NGH-019) + + + lbvbiosu + VBIOS updater + + + lc_11 + League Champ (1.1) (Shuffle) + + + lca + Lights...Camera...Action! + + + lca2 + Lights...Camera...Action! (rev.2) + + + lckydraw + Lucky Draw (pinball, set 1) + + + lckydrawa + Lucky Draw (pinball, set 2) + + + ldmj1mbh + LD Mahjong #1 Marine Blue no Hitomi (Japan) + + + ldquiz4 + LD Quiz dai 4-dan - Kotaetamon Gachi! (Japan) + + + ldrink + Lucky Drink (set 1) + + + ldrinka + Lucky Drink (set 2) + + + ldrun + Lode Runner (set 1) + + + ldrun2 + Lode Runner II - The Bungeling Strikes Back + + + ldrun3 + Lode Runner III - The Golden Labyrinth + + + ldrun3j + Lode Runner III - Majin no Fukkatsu (Japan, rev. A) + + + ldrun3jc + Lode Runner III - Majin no Fukkatsu (Japan, rev. C) + + + ldrun3jp + Lode Runner III - Majin No Fukkatsu + + + ldrun4 + Lode Runner IV - Teikoku Karano Dasshutsu (Japan) + + + ldruna + Lode Runner (set 2) + + + le2 + Lethal Enforcers II: Gun Fighters (ver EAA) + + + le2j + Lethal Enforcers II: The Western (ver JAA) + + + le2u + Lethal Enforcers II: Gun Fighters (ver UAA) + + + leadang + Lead Angle (Japan) + + + leader + Leader (version Z 2E, Greece) + + + leadera + Leader (version Z 2F, Greece) + + + leaguemn + Yakyuu Kakutou League-Man (Japan, set 1) + + + leaguemna + Yakyuu Kakutou League-Man (Japan, set 2) + + + lectrono + Lectronamo + + + leds2011 + Led Storm Rally 2011 (World) + + + leds2011p + Led Storm Rally 2011 (US, prototype 12) + + + leds2011u + Led Storm Rally 2011 (US) + + + ledstorm + Led Storm (US) + + + legend + Legend + + + legendb + Legion (bootleg of Legend) + + + legendoh + Legend of Heroes + + + legendos + Legend of Success Joe / Ashita no Joe Densetsu + + + legendsb + Legend (SNES bootleg) + + + legion + Legion - Spinner-87 (World ver 2.03) + + + legionj + Chouji Meikyuu Legion (Japan ver 1.05, set 1) + + + legionj2 + Chouji Meikyuu Legion (Japan ver 1.05, set 2) + + + legionjb + Chouji Meikyuu Legion (Japan ver 1.05, bootleg set 1) + + + legionjb2 + Chouji Meikyuu Legion (Japan ver 1.05, bootleg set 2) + + + legionna + Legionnaire (World) + + + legionnaj + Legionnaire (Japan) + + + legionnau + Legionnaire (US) + + + legionnu + Legionnaire (US) + + + legiono + Chouji Meikyuu Legion (Japan bootleg ver 1.05) + + + legofair + Koukuu Kihei Monogatari - The Legend of Air Cavalry (Japan) + + + legrandc + Le Grandchamps + + + leking + Le King + + + lemans + Le Mans + + + lemans24 + Le Mans 24 (Japan, Revision B) + + + lemmings + Lemmings (US prototype) + + + lemnangl + Mahjong Lemon Angel (Japan) + + + lemrol + Let 'em Roll (0151115, US) + + + lependu + Le Pendu (Bilingue, Version 04) + + + leprechn + Leprechaun (set 1) + + + leprechna + Leprechaun (set 2) + + + leprgld + Leprechaun's Gold (Russian) + + + leprglds + Leprechaun's Gold (Spanish) + + + lespendu + Le Super Pendu (V1, words set #1) + + + lespenduj + Le Super Pendu (V1, words set #2) + + + lethalen + Lethal Enforcers (ver UAE, 11/19/92 15:04) + + + lethaleneaa + Lethal Enforcers (ver EAA, 09/09/92 09:44) + + + lethaleneab + Lethal Enforcers (ver EAB, 10/14/92 19:53) + + + lethalenead + Lethal Enforcers (ver EAD, 11/11/92 10:52) + + + lethaleneae + Lethal Enforcers (ver EAE, 11/19/92 16:24) + + + lethalenj + Lethal Enforcers (ver JAD, 12/04/92 17:16) + + + lethalenua + Lethal Enforcers (ver UAA, 08/17/92 21:38) + + + lethalenub + Lethal Enforcers (ver UAB, 09/01/92 11:12) + + + lethalenux + Lethal Enforcers (ver unknown, US, 08/06/92 15:11, hacked/proto?) + + + lethalj + Lethal Justice (Version 2.3) + + + lethalth + Lethal Thunder (World) + + + letsdnce + Let's Dance + + + letsgof + Let's Go Fishing (5XF5196I02, US) + + + letsgoju + Let's Go Jungle (Export) + + + levers + Levers + + + lgfish + Let's Go Fish'n (10220111, NSW/ACT) + + + lgfisha + Let's Go Fish'n (10223911, ASP) + + + lghost + Laser Ghost (World) (FD1094 317-0166) + + + lghostd + Laser Ghost (World) (bootleg of FD1094 317-0166 set) + + + lghostj + Laser Ghost (Japan) (FD1094 317-0164) + + + lghostu + Laser Ghost (US) (FD1094 317-0165) + + + lghostud + Laser Ghost (US) (bootleg of FD1094 317-0165 set) + + + lgp + Laser Grand Prix + + + lgpalt + Laser Grand Prix (alternate) + + + lgtnfght + Lightning Fighters (World) + + + lgtnfghta + Lightning Fighters (Asia) + + + lgtnfghtu + Lightning Fighters (US) + + + lhaunt + Lucky Haunter (030707 World) + + + lhaunt_10 + Lucky Haunter (090712 Entertainment) + + + lhaunt_11 + Lucky Haunter (100331 Entertainment X) + + + lhaunt_12 + Lucky Haunter (101209 Entertainment N) + + + lhaunt_13 + Lucky Haunter (110111 Entertainment A) + + + lhaunt_14 + Lucky Haunter (110204 Entertainment A) + + + lhaunt_15 + Lucky Haunter (110311 Entertainment B) + + + lhaunt_16 + Lucky Haunter (140526 Entertainment B) + + + lhaunt_2 + Lucky Haunter (030804 World) + + + lhaunt_3 + Lucky Haunter (031027 World) + + + lhaunt_4 + Lucky Haunter (031111 World) + + + lhaunt_4a + Lucky Haunter (bootleg, 031111, backdoor) + + + lhaunt_5 + Lucky Haunter (040216 World) + + + lhaunt_5a + Lucky Haunter (bootleg, 040216, backdoor) + + + lhaunt_6 + Lucky Haunter (040825 World) + + + lhaunt_6a + Lucky Haunter (bootleg, 040825, backdoor) + + + lhaunt_6b + Lucky Haunter (bootleg, 040825, VIDEO GAME-1 PB01) + + + lhaunt_6c + Lucky Haunter (bootleg, 040825, changed version text) + + + lhaunt_6d + Lucky Haunter (bootleg, 040825, LOTTOGAME (I)) + + + lhaunt_6e + Lucky Haunter (bootleg, 040825, LOTO PROGRAM V-LH2) + + + lhaunt_6f + Lucky Haunter (bootleg, 040825, LOTOS PB01) + + + lhaunt_7 + Lucky Haunter (070402 Russia) + + + lhaunt_8 + Lucky Haunter (070604 Russia) + + + lhb + Long Hu Bang (China, V035C) + + + lhb2 + Lung Fu Bong II (Hong Kong, V185H) + + + lhbv33c + Long Hu Bang (China, V033C) + + + lhcdb + Last Hope CD Beta (Neo CD conversion) + + + lhdmg + Long Hu Da Manguan (V102C3M) + + + lhdmgp + Long Hu Da Manguan Duizhan Jiaqiang Ban (V400C3M) + + + lhdmgp200c3m + Long Hu Da Manguan Duizhan Jiaqiang Ban (V200C3M) + + + lhfy + Long Hu Feng Yun Gao Qing Ban (V206CN) + + + lhtb + Long Hu Tebie Ban (V101CN) + + + lhzb + Long Hu Zhengba (China, VS105M, set 1) + + + lhzb2 + Long Hu Zhengba 2 (China, set 1) + + + lhzb2a + Long Hu Zhengba 2 (China, VS221M) + + + lhzb3 + Long Hu Zhengba III (V400CN) + + + lhzb3106c5m + Long Hu Zhengba III (V106C5M) + + + lhzb3in1 + Long Hu Zhengba San He Yi (V100CN) + + + lhzb3sjb + Long Hu Zhengba III Shengji Ban (V300C5) + + + lhzb4 + Long Hu Zhengba 4 (V104CN) + + + lhzb4dhb + Long Hu Zhengba 4 Dui Hua Ban (V203CN) + + + lhzba + Long Hu Zhengba (China, VS105M, set 2) + + + lhzbgqb + Long Hu Zheng Ba Gao Qing Ban (V105CN) + + + liberat2 + Liberator (set 2) + + + liberatb + Liberation (bootleg) + + + liberate + Liberation + + + liberateb + Liberation (bootleg) + + + liberatr + Liberator (version 2) + + + liberatrp + Liberator (prototype) + + + liblrabl + Libble Rabble + + + lifefrce + Lifeforce (US) + + + lifefrcej + Lifeforce (Japan) + + + lifefrcj + Lifeforce (Japan) + + + lightbr + Light Bringer (Ver 2.2O 1994/04/08) + + + lightbrj + Light Bringer (Ver 2.1J 1994/02/18) + + + lightnin + Lightning + + + lineking + Line King (0252534, US) + + + link + Link (Korean bootleg of Atari Tetris) + + + linkypip + Linky Pipe + + + liquidk + Liquid Kids (World) + + + liquidku + Liquid Kids (US) + + + lithero + Little Hero + + + littlerb + Little Robin + + + livegal + Live Gal (Japan 870530) + + + livequiz + Live Quiz Show + + + lizard + Pinball Lizard + + + lizwiz + Lizard Wizard + + + lkage + The Legend of Kage (rev 2) + + + lkagea + The Legend of Kage (rev 1) + + + lkageb + The Legend of Kage + + + lkageb2 + The Legend of Kage (bootleg set 2) + + + lkageb3 + The Legend of Kage (bootleg set 3) + + + lkagebl1 + The Legend of Kage (bootleg set 1) + + + lkagebl2 + The Legend of Kage (bootleg set 2) + + + lkagebl3 + The Legend of Kage (bootleg set 3) + + + lkagebl4 + The Legend of Kage (bootleg set 4) + + + lkagem + The Legend of Kage (rev 2, MSM5232 sound) + + + ll3 + Lucky Line III + + + llander + Lunar Lander (rev 2) + + + llander1 + Lunar Lander (rev 1) + + + llandert + Lunar Lander (screen test) + + + llcharm + Lucky Lady's Charm (set 1) + + + llcharma + Lucky Lady's Charm (set 2) + + + lluck3x3 + Lucky Lady (3x3 deal) + + + lluck4x1 + Lucky Lady (4x1 aces) + + + lnc + Lock'n'Chase + + + lockload + Locked 'n Loaded (World) + + + lockloadu + Locked 'n Loaded (US, Dragon Gun conversion) + + + lockon + Lock-On (rev. E) + + + lockonc + Lock-On (rev. C) + + + lockonph + Lock On (Philko) + + + locoboot + Loco-Motion (bootleg) + + + locoloot + Loco Loot (0100473V, NSW/ACT) + + + locoloota + Loco Loot (0100472V, NSW/ACT) + + + locolootnz + Loco Loot (0600725V, New Zealand) + + + locolootq + Loco Loot (0300670V, Queensland) + + + locolootu + Loco Loot (AHG1513, US) + + + locomotn + Loco-Motion + + + locomotp + Locomotion + + + loderdfa + Lode Runner - The Dig Fight (ver. A) + + + loderndf + Lode Runner - The Dig Fight (ver. B) + + + loderndfa + Lode Runner - The Dig Fight (ver. A) + + + loffire + Line of Fire / Bakudan Yarou (World) (FD1094 317-0136) + + + loffired + Line of Fire / Bakudan Yarou (World) (bootleg of FD1094 317-0136 set) + + + loffirej + Line of Fire / Bakudan Yarou (Japan) (FD1094 317-0134) + + + loffirejd + Line of Fire / Bakudan Yarou (Japan) (bootleg of FD1094 317-0134 set) + + + loffireu + Line of Fire / Bakudan Yarou (US) (FD1094 317-0135) + + + loffireud + Line of Fire / Bakudan Yarou (US) (bootleg of FD1094 317-0135 set) + + + logger + Logger (Rev.3) + + + loggerr2 + Logger (Rev.2) + + + logicpr2 + Logic Pro 2 (Japan) + + + logicpro + Logic Pro (Japan) + + + loht + Legend of Hero Tonma (World) + + + loht_ms + Legend of Hero Tonma (Gaelco bootleg, Modular System) + + + lohtb + Legend of Hero Tonma (Playmark unprotected bootleg) + + + lohtb2 + Legend of Hero Tonma (Japan, bootleg with i8751) + + + lohtb3 + Legend of Hero Tonma (World, bootleg with i8751) + + + lohtj + Legend of Hero Tonma (Japan) + + + lol + Life of Luxury (Russian) + + + lomakai + Legend of Makai (World) + + + lonewolf + Lone Wolf (0100587V, NSW/ACT) + + + looper + Looper + + + looping + Looping + + + loopinga + Looping (set 2) + + + loopingv + Looping (Venture Line license, set 1) + + + loopingva + Looping (Venture Line license, set 2) + + + looptris + Looptris (HB, v. 20211226) + + + looptrsp + Looptris Plus (HB, ver. 20221224) + + + lordgun + Lord of Gun (World) + + + lordgunu + Lord of Gun (USA) + + + lordleo + Lord Leopard (30111211, NSW/ACT) + + + lordofk + The Lord of King (Japan) + + + lordofkb + The Lord of King (bootleg, not protected) + + + lordofkbp + The Lord of King (bootleg, protected) + + + lortium + Lortium + + + lostspc + Lost in Space (CPU 1.01, display A1.02) + + + lostspc_d1 + Lost in Space (CPU 1.01, display A1.01) + + + lostspcf + Lost in Space (CPU 1.01, display F1.02, France) + + + lostspcg + Lost in Space (CPU 1.01, display G1.02, Germany) + + + losttmbh + Lost Tomb (hard) + + + losttomb + Lost Tomb (easy) + + + losttombh + Lost Tomb (hard) + + + losttrea + Lost Treasure (V1.03) + + + lostwrld + Lost Worlds (Japan) + + + lostwrldo + Lost Worlds (Japan Old Ver.) + + + lostwrlp + Lost World + + + lostwsga + The Lost World: Jurassic Park (Japan, Revision A) + + + lostwsgp + The Lost World: Jurassic Park (location test) + + + lotlot + Lot Lot + + + lotr + The Lord Of The Rings (CPU 10.00, display A10.00) + + + lotr3 + The Lord Of The Rings (CPU 3.00, display A3.00) + + + lotr401 + The Lord Of The Rings (CPU 4.01, display A4.03) + + + lotr410 + The Lord Of The Rings (CPU 4.10, display A4.04) + + + lotr5 + The Lord Of The Rings (CPU 5.00, display A5.00) + + + lotr501 + The Lord Of The Rings (CPU 5.01, display A5.01) + + + lotr6 + The Lord Of The Rings (CPU 6.00, display A6.00) + + + lotr7 + The Lord Of The Rings (CPU 7.00, display A7.00) + + + lotr8 + The Lord Of The Rings (CPU 8.00, display A8.00) + + + lotr9 + The Lord Of The Rings (CPU 9.00, display A9.00) + + + lotr_fr + The Lord Of The Rings (CPU 10.00, display F10.00, France) + + + lotr_fr401 + The Lord Of The Rings (CPU 4.01, display F4.03, France) + + + lotr_fr410 + The Lord Of The Rings (CPU 4.10, display F4.04, France) + + + lotr_fr5 + The Lord Of The Rings (CPU 5.00, display F5.00, France) + + + lotr_fr501 + The Lord Of The Rings (CPU 5.01, display F5.01, France) + + + lotr_fr6 + The Lord Of The Rings (CPU 6.00, display F6.00, France) + + + lotr_fr7 + The Lord Of The Rings (CPU 7.00, display F7.00, France) + + + lotr_fr8 + The Lord Of The Rings (CPU 8.00, display F8.00, France) + + + lotr_fr9 + The Lord Of The Rings (CPU 9.00, display F9.00, France) + + + lotr_gr + The Lord Of The Rings (CPU 10.00, display G10.00, Germany) + + + lotr_gr401 + The Lord Of The Rings (CPU 4.01, display G4.03, Germany) + + + lotr_gr410 + The Lord Of The Rings (CPU 4.10, display G4.04, Germany) + + + lotr_gr5 + The Lord Of The Rings (CPU 5.00, display G5.00, Germany) + + + lotr_gr501 + The Lord Of The Rings (CPU 5.01, display G5.01, Germany) + + + lotr_gr6 + The Lord Of The Rings (CPU 6.00, display G6.00, Germany) + + + lotr_gr7 + The Lord Of The Rings (CPU 7.00, display G7.00, Germany) + + + lotr_gr8 + The Lord Of The Rings (CPU 8.00, display G8.00, Germany) + + + lotr_gr9 + The Lord Of The Rings (CPU 9.00, display G9.00, Germany) + + + lotr_it + The Lord Of The Rings (CPU 10.00, display I10.00, Italy) + + + lotr_it401 + The Lord Of The Rings (CPU 4.01, display I4.03, Italy) + + + lotr_it410 + The Lord Of The Rings (CPU 4.10, display I4.04, Italy) + + + lotr_it5 + The Lord Of The Rings (CPU 5.00, display I5.00, Italy) + + + lotr_it501 + The Lord Of The Rings (CPU 5.01, display I5.01, Italy) + + + lotr_it6 + The Lord Of The Rings (CPU 6.00, display I6.00, Italy) + + + lotr_it7 + The Lord Of The Rings (CPU 7.00, display I7.00, Italy) + + + lotr_it8 + The Lord Of The Rings (CPU 8.00, display I8.00, Italy) + + + lotr_it9 + The Lord Of The Rings (CPU 9.00, display I9.00, Italy) + + + lotr_le + The Lord Of The Rings (CPU 10.02, display A10.00, Limited Edition) + + + lotr_sp + The Lord Of The Rings (CPU 10.00, display L10.00, Spain) + + + lotr_sp401 + The Lord Of The Rings (CPU 4.01, display L4.03, Spain) + + + lotr_sp5 + The Lord Of The Rings (CPU 5.00, display L5.00, Spain) + + + lotr_sp501 + The Lord Of The Rings (CPU 5.01, display L5.01, Spain) + + + lotr_sp6 + The Lord Of The Rings (CPU 6.00, display L6.00, Spain) + + + lotr_sp7 + The Lord Of The Rings (CPU 7.00, display L7.00, Spain) + + + lotr_sp8 + The Lord Of The Rings (CPU 8.00, display L8.00, Spain) + + + lotr_sp9 + The Lord Of The Rings (CPU 9.00, display L9.00, Spain) + + + lottof2 + Lotto Fun 2 + + + lottofun + Lotto Fun + + + lougcm + Louie's Gold - Mr. Cashman (20006911, NSW/ACT) + + + loveber3 + Love And Berry - 3rd-5th Collection (USA, Export, Ver 1.002) (MDA-C0042) + + + loveber3cn + Love And Berry - 3rd-5th Collection (China, Ver 1.001) (MDA-C0071) + + + lovebero + Love And Berry - 1st-2nd Collection (Export, Ver 1.003) + + + lovebery + Love And Berry - 1st-2nd Collection (Export, Ver 2.000) + + + lovehous + Mahjong Love House (Japan 901024) + + + loverboy + Lover Boy + + + lovestuk + Love Stuck (0152583, US) + + + lovewin + Love To Win (Russian) + + + lpadv + Logic Pro Adventure (Japan) + + + lrescue + Lunar Rescue + + + lrescueabl + Lunar Rescue (Artic bootleg) + + + lrescuem + Lunar Rescue (Model Racing bootleg, set 1) + + + lrescuem2 + Lunar Rescue (Model Racing bootleg, set 2) + + + lresort + Last Resort + + + lresortp + Last Resort (prototype) + + + lsasquad + Land Sea Air Squad / Riku Kai Kuu Saizensen + + + lsrcu_l2 + Laser Cue (L-2) + + + lsrquiz + Laser Quiz Italy + + + lsrquiz2i + Laser Quiz 2 Italy (v1.0) + + + lsrquizg + Laser Quiz Greece + + + lstduela + Last Duel (US set 2) + + + lstduelb + Last Duel (bootleg) + + + ltcasin2 + Little Casino II (v30.0) + + + ltcasin2a + Little Casino II (v18.1) + + + ltcasin2b + Little Casino II (v17.0) + + + ltcasino + Little Casino (set 1) + + + ltcasinoa + Little Casino (set 2) + + + lthyp + Long Teng Hu Yao Duizhan Jiaqiang Ban (S104CN) + + + ltorb + Jonas Indiana and the Lost Temple of RA (HB, ver. 20050717) + + + ltswords + Lightning Swords (World) + + + luckboom + Lucky Boom + + + luckboomh + Lucky Boom (Hard Times hardware) + + + luckfoun + Lucky Fountain (Konami Endeavour, Russia) + + + luckgrln + Lucky Girl (newer Z180-based hardware) + + + luckshel + Lucky Shell (Ukraine, V. 42.25) + + + luckshela + Lucky Shell (Ukraine, V. 42.10) + + + luckstrn + Lucky Star (newer Z180-based hardware) + + + lucky21 + Lucky 21 + + + lucky21d + Lucky 21-D + + + lucky25 + Lucky 25 + + + lucky37 + Lucky 37 + + + lucky74 + Lucky 74 (bootleg, set 1) + + + lucky74a + Lucky 74 (bootleg, set 3) + + + lucky74b + Lucky 74 (bootleg, set 2) + + + lucky75 + Lucky 75 + + + lucky7i + Lucky 7 (Impera, V04/91a, set 1) + + + lucky7x + Lucky 7 (Impera, V04/91a, set 2) + + + lucky8 + New Lucky 8 Lines (set 1, W-4) + + + lucky88 + Lucky 88 (10241411, NSW/ACT) + + + lucky88w + Lucky 88 (Wing) + + + lucky8a + New Lucky 8 Lines (set 2, W-4) + + + lucky8b + New Lucky 8 Lines (set 3, W-4, extended gfx) + + + lucky8c + New Lucky 8 Lines (set 4, W-4) + + + lucky8d + New Lucky 8 Lines (set 5, W-4, main 40%, d-up 60%) + + + lucky8e + New Lucky 8 Lines (set 6, W-4, main 40%, d-up 60%) + + + lucky8f + New Lucky 8 Lines (set 7, W-4, encrypted) + + + lucky8g + New Lucky 8 Lines (set 8, W-4) + + + lucky8h + New Lucky 8 Lines Super Turbo (Hack) + + + lucky8i + New Lucky 8 Lines (set 9, W-4, Eagle, licensed by Wing) + + + lucky8j + New Lucky 8 Lines Crown Turbo (Hack) + + + lucky8k + New Lucky 8 Lines (set 10, W-4, encrypted NEC D315-5136) + + + lucky8l + New Lucky 8 Lines (set 11, W-4) + + + lucky8m + New Lucky 8 Lines (set 12, W-4, encrypted) + + + lucky8n + New Lucky 8 Lines (set 13) + + + lucky8o + New Lucky 8 Lines (set 14, W-4, Yamate) + + + lucky8p + New Lucky 8 Lines (set 15, W-4, Cleco bootleg) + + + lucky_l1 + Lucky Seven (L-1) + + + luckybal + Lucky Ball 96 (Ver 4.01) + + + luckybala + Lucky Ball 96 (Ver 3.50 - 627) + + + luckybalb + Lucky Ball 96 (Ver 3.50 - 626) + + + luckybalc + Lucky Ball 96 (Ver 3.50 - 623) + + + luckybald + Lucky Ball 96 (Ver 3.50 - 616) + + + luckybale + Lucky Ball 96 (Ver 3.01) + + + luckybar + Lucky Bar (W-4 with mc68705 MCU) + + + luckyclo + Lucky Clover (0300109V, NSW/ACT) + + + luckycoin + Lucky Coin (Jun 24 2002) + + + luckycrs + Lucky Cross (V106SA) + + + luckygrl + Lucky Girl (Wing) + + + luckylad + Lucky Lady (Wing, encrypted) + + + luckypkr + Lucky Poker (bootleg/hack of Major Poker) + + + luckyplr + Lucky Player + + + luckyrlt + Lucky Roulette Plus (6-players, Spanish) + + + luckyseven + Lucky Seven + + + luckystr + Lucky Star + + + luckyvl + Lucky V Line + + + luckywld + Lucky & Wild + + + luckywldj + Lucky & Wild (Japan) + + + luctoday + Lucky Today + + + lufykzku + Otakara Itadaki Luffy Kaizoku-Dan! (Japan, v1.02) + + + luigibal + Luigi's Ball (10235411, NSW/ACT) + + + lunapark + Luna Park (set 1, dual program) + + + lunaparkb + Luna Park (set 2, dual program) + + + lunaparkc + Luna Park (set 3) + + + lunaprk + Luna Park (ver. 1.2) + + + lunarba1 + Lunar Battle (prototype, earlier) + + + lunarbat + Lunar Battle (prototype, later) + + + lunelle + Lunelle + + + lupin3 + Lupin III (set 1) + + + lupin3a + Lupin III (set 2) + + + lupinsho + Lupin The Third - The Shooting (Rev A) (GDS-0018A) + + + lupinshoo + Lupin The Third - The Shooting (GDS-0018) + + + luplup + Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 3.0 / 990128) + + + luplup10 + Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 1.05 / 981214) + + + luplup29 + Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 2.9 / 990108) + + + luptype + Lupin The Third - The Typing (Rev A) (GDS-0021A) + + + lvcards + Lovely Cards + + + lvcardsa + Lovely Cards (encrypted) + + + lvgirl94 + Las Vegas Girl (Girl '94) + + + lvpoker + Lovely Poker + + + lw3_200 + Lethal Weapon 3 (USA 2.00, display A2.04) + + + lw3_203 + Lethal Weapon 3 (USA 2.03, display A2.04) + + + lw3_204e + Lethal Weapon 3 (England 2.04, display A2.02) + + + lw3_205 + Lethal Weapon 3 (USA 2.05, display A2.05) + + + lw3_207 + Lethal Weapon 3 (USA 2.07, display A2.06) + + + lw3_207c + Lethal Weapon 3 (Canada 2.07, display A2.06) + + + lw3_208 + Lethal Weapon 3 (USA 2.08, display A2.06) + + + lwar_a81 + Laser War (8.1) + + + lwar_a83 + Laser War (8.3) + + + lwar_e90 + Laser War (9.0 Europe) + + + lwings + Legendary Wings (US, rev. C) + + + lwings2 + Legendary Wings (US set 2) + + + lwingsa + Legendary Wings (US) + + + lwingsb + Legendary Wings (bootleg) + + + lwingsj + Ares no Tsubasa (Japan, rev. B) + + + lwingsja + Ares no Tsubasa (Japan, rev. A) + + + lwingsjp + Ares no Tsubasa (Japan) + + + lzbal_l2 + Laser Ball (L-2) + + + lzbal_l2sp + Laser Ball (L-2, PROM sound) + + + lzbal_t2 + Laser Ball (T-2) + + + m1albsq + Albert Square (Maygay) v4.1 (M1A/B) + + + m1albsq1 + Albert Square (Maygay) v1.1 (M1A/B) + + + m1albsq1p + Albert Square (Maygay) v1.1 (Protocol) (M1A/B) + + + m1albsq2 + Albert Square (Maygay) v2.2 (M1A/B) + + + m1albsq3 + Albert Square (Maygay) v3.0 (M1A/B) + + + m1albsqp + Albert Square (Maygay) v4.1 (Protocol) (M1A/B) + + + m1alley + Alley Cat (Maygay) (M1A/B) + + + m1apollo + Apollo 9 (Maygay) vA.1 (Newer) (M1A/B) + + + m1apollo11 + Apollo 9 (Maygay) v11? (M1A/B) + + + m1apollo11b + Apollo 9 (Maygay) v11? (BwB Rebuild) (M1A/B) + + + m1apollo11p + Apollo 9 (Maygay) v11? (Protocol) (M1A/B) + + + m1apollo2 + Apollo 9 (Maygay) v2.1 (M1A/B) + + + m1apollo2p + Apollo 9 (Maygay) v2.1 (Protocol) (M1A/B) + + + m1apollo3 + Apollo 9 (Maygay) v3.1 (M1A/B) + + + m1apollo3p + Apollo 9 (Maygay) v3.1 (Protocol) (M1A/B) + + + m1apollo4 + Apollo 9 (Maygay) v4.1 (Newer) (M1A/B) + + + m1apollo4o + Apollo 9 (Maygay) v4.1 (Older, Token)(M1A/B) + + + m1apollo4p + Apollo 9 (Maygay) v4.1 (Newer) (Protocol) (M1A/B) + + + m1apollo5 + Apollo 9 (Maygay) v5.1 (M1A/B) + + + m1apollo5p + Apollo 9 (Maygay) v5.1 (Protocol) (M1A/B) + + + m1apollo7 + Apollo 9 (Maygay) v7.1 (M1A/B) + + + m1apollo7p + Apollo 9 (Maygay) v7.1 (Protocol) (M1A/B) + + + m1apollo8 + Apollo 9 (Maygay) v8.1 (M1A/B) + + + m1apollo8p + Apollo 9 (Maygay) v8.1 (Protocol) (M1A/B) + + + m1apollo9 + Apollo 9 (Maygay) v9.1 (M1A/B) + + + m1apollo9p + Apollo 9 (Maygay) v9.1 (Protocol) (M1A/B) + + + m1apolloa + Apollo 9 (Maygay) vA.1 (Older) (M1A/B) + + + m1apolloao + Apollo 9 (Maygay) vA.1 (Older, 15GBP) (M1A/B) + + + m1apolloap + Apollo 9 (Maygay) vA.1 (Older) (Protocol) (M1A/B) + + + m1apolloh + Apollo 9 (Maygay) vA.1 (Newer) (Hack?) (M1A/B) + + + m1apollop + Apollo 9 (Maygay) vA.1 (Newer) (Protocol) (M1A/B) + + + m1atunk + Random Runner (Avantime?) + + + m1bankbs + Bank Buster Club (Maygay) v2.9 (M1A/B) + + + m1bankbso + Bank Buster Club (Maygay) v2.8 (M1A/B) + + + m1bankbsp + Bank Buster Club (Maygay) v2.9 (Protocol) (M1A/B) + + + m1bankrl + Bank Roll (Maygay) v1.1 (M1A/B) + + + m1bankrl2p + Bank Roll (Maygay) v2.1 (Protocol) (M1A/B) + + + m1bankrlp + Bank Roll (Maygay) v1.1 (Protocol) (M1A/B) + + + m1bargn + Bar-gain (Maygay) v7.1 (M1A/B) + + + m1bargnc + Casino Bar-gain (Maygay) v5.1 (M1A/B) + + + m1bargncp + Casino Bar-gain (Maygay) v5.1 (Protocol)(M1A/B) + + + m1bargnp + Bar-gain (Maygay) v7.1 (Protocol) (M1A/B) + + + m1bghou + Big Ghoulies (Gemini) (M1A/B) (set 1) + + + m1bghoua + Big Ghoulies (Gemini) (M1A/B) (set 2) + + + m1bghoub + Big Ghoulies (Gemini) (M1A/B) (set 3) + + + m1bghouc + Big Ghoulies (Gemini) (M1A/B) (set 4) + + + m1bghoud + Big Ghoulies (Gemini) (M1A/B) (set 5) + + + m1bghoue + Big Ghoulies (Gemini) (M1A/B) (set 6) + + + m1bghouf + Big Ghoulies (Gemini) (M1A/B) (set 7) + + + m1bghoug + Big Ghoulies (Gemini) (M1A/B) (set 8) + + + m1bigdel + Big Deal (Maygay) (M1A/B) + + + m1bignit + Mike Reid's Big Night Out (Maygay) (M1A/B) (set 1) + + + m1bignita + Mike Reid's Big Night Out (Maygay) (M1A/B) (set 2) + + + m1bignitb + Mike Reid's Big Night Out (Maygay) (M1A/B) (set 3) + + + m1bignitc + Mike Reid's Big Night Out (Maygay) (M1A/B) (set 4) + + + m1blkhol + Black Hole (Dutch) (Maygay) (M1A/B) + + + m1bluemx + Blue Max (Maygay) v2.1 (M1A/B) + + + m1bluemxp + Blue Max (Maygay) v2.1 (Protocol) (M1A/B) + + + m1bondi + Bondi Beach (Maygay) v1.1 (Newer) (M1A/B) + + + m1bondi1 + Bondi Beach (Maygay) v1.1 (M1A/B) + + + m1bondi1p + Bondi Beach (Maygay) v1.1 (Protocol) (M1A/B) + + + m1bondi2 + Bondi Beach (Maygay) v2.1 (M1A/B) + + + m1bondi2p + Bondi Beach (Maygay) v2.1 (Protocol) (M1A/B) + + + m1bondi2po + Bondi Beach (Maygay) v2.1 (Older) (Protocol) (M1A/B) + + + m1bondi3 + Bondi Beach (Maygay) v3.1 (M1A/B) + + + m1bondi4 + Bondi Beach (Maygay) v4.1 (M1A/B) + + + m1bondi4p + Bondi Beach (Maygay) v4.1 (Protocol) (M1A/B) + + + m1bondip + Bondi Beach (Maygay) v1.1 (Newer) (Protocol) (M1A/B) + + + m1bountc + Bounty Hunter Club (Maygay) v1.3 (M1A/B) + + + m1bountcp + Bounty Hunter Club (Maygay) v1.3 (Protocol) (M1A/B) + + + m1calyps + Calypso (Maygay) (M1A/B) (set 1) + + + m1calypsa + Calypso (Maygay) (M1A/B) (set 2) + + + m1calypsb + Calypso (Maygay) (M1A/B) (set 3) + + + m1casclb + Casino Club (Maygay) v1.2 (M1A/B) + + + m1casclb1 + Casino Club (Maygay) v1.1 (M1A/B) + + + m1casclbp + Casino Club (Maygay) v1.2 (Protocol) (M1A/B) + + + m1casgcl + Casino Gambler Club (Maygay) v1.2 (M1A/B) + + + m1casgclp + Casino Gambler Club (Maygay) v1.2 (Protocol) (M1A/B) + + + m1cashc + Cash Classic (Maygay) (M1A/B) (set 1) + + + m1cashca + Cash Classic (Maygay) (M1A/B) (set 2) + + + m1cashln + Cash Lines (Maygay) (M1A/B) + + + m1casroy + Casino Royale Club (Maygay) v1.2 (M1A/B) + + + m1casroy1 + Casino Royale Club (Maygay) v1.1 (M1A/B) + + + m1casroyp + Casino Royale Club (Maygay) v1.2 (Protocol) (M1A/B) + + + m1chain + Chain Reaction (Maygay) (M1A/B) + + + m1cik + Cash Is King (Maygay) v11? (M1A/B) + + + m1cik11 + Cash Is King (Maygay) v1.1 (M1A/B) + + + m1cik11n + Cash Is King (Maygay) v1.1 (alternate) (M1A/B) + + + m1cik11np + Cash Is King (Maygay) v1.1 (alternate,Protocol) (M1A/B) + + + m1cik11p + Cash Is King (Maygay) v1.1 (Protocol) (M1A/B) + + + m1cik12 + Cash Is King (Maygay) v1.2 (M1A/B) + + + m1cik21 + Cash Is King (Maygay) v2.1 (M1A/B) + + + m1cik21p + Cash Is King (Maygay) v2.1 (Protocol) (M1A/B) + + + m1cik31 + Cash Is King (Maygay) v3.1 (M1A/B) + + + m1cik31p + Cash Is King (Maygay) v3.1 (Protocol) (M1A/B) + + + m1cik41 + Cash Is King (Maygay) v4.1 (M1A/B) + + + m1cik41p + Cash Is King (Maygay) v4.1 (Protocol) (M1A/B) + + + m1cik51 + Cash Is King (Maygay) v5.1 (M1A/B) + + + m1cik51o + Cash Is King (Maygay) v5.1 (Older) (M1A/B) + + + m1cik51p + Cash Is King (Maygay) v5.1 (Protocol) (M1A/B) + + + m1cikh + Cash Is King (Maygay) v11? (Hack?) (M1A/B) + + + m1cikp + Cash Is King (Maygay) v11? (Protocol) (M1A/B) + + + m1clbfvr + Club Fever (Maygay) v1.1 (M1A/B) + + + m1clbfvrp + Club Fever (Maygay) v1.1 (Protocol) (M1A/B) + + + m1cluecb + Cluedo Club (Maygay) v3.1 (M1A/B) + + + m1cluecb1 + Cluedo Club (Maygay) v1.1 (M1A/B) + + + m1cluecb1p + Cluedo Club (Maygay) v1.1 (Protocol) (M1A/B) + + + m1cluecb2 + Cluedo Club (Maygay) v2.1 (M1A/B) + + + m1cluecb2p + Cluedo Club (Maygay) v2.1 (Protocol) (M1A/B) + + + m1cluecbp + Cluedo Club (Maygay) v3.1 (Protocol) (M1A/B) + + + m1cluedo + Cluedo (Maygay) v6.1 (M1A/B) + + + m1cluedo1 + Cluedo (Maygay) v1.1 (M1A/B) + + + m1cluedo1h + Cluedo (Maygay) v1.1 (Hack?) (M1A/B) + + + m1cluedo1p + Cluedo (Maygay) v1.1 (Protocol) (M1A/B) + + + m1cluedo3 + Cluedo (Maygay) v3.1 (M1A/B) + + + m1cluedo3h + Cluedo (Maygay) v3.1 (Hack?) (M1A/B) + + + m1cluedo3p + Cluedo (Maygay) v3.1 (Protocol) (M1A/B) + + + m1cluedo4 + Cluedo (Maygay) v4.1 (M1A/B) + + + m1cluedo4p + Cluedo (Maygay) v4.1 (Protocol) (M1A/B) + + + m1cluedo5 + Cluedo (Maygay) v5.1 (M1A/B) + + + m1cluedo5p + Cluedo (Maygay) v5.1 (Protocol) (M1A/B) + + + m1cluedob1 + Cluedo (Maygay/BwB) v1.1 (M1A/B) + + + m1cluedob1h + Cluedo (Maygay/BwB) v1.1 (Hack?) (M1A/B) + + + m1cluedob1p + Cluedo (Maygay/BwB) v1.1 (Protocol) (M1A/B) + + + m1cluedob2 + Cluedo (Maygay/BwB) v2.1 (M1A/B) + + + m1cluedob2h + Cluedo (Maygay/BwB) v2.1 (Hack?) (M1A/B) + + + m1cluedob2p + Cluedo (Maygay/BwB) v2.1 (Protocol) (M1A/B) + + + m1cluedobi2 + Cluedo (Maygay/BwB) v2.1 (Isle of Man) (M1A/B) + + + m1cluedobi2p + Cluedo (Maygay/BwB) v2.1 (Isle of Man) (Protocol) (M1A/B) + + + m1cluedoi + Cluedo (Maygay) v7.2 (Isle of Man) (M1A/B) + + + m1cluedoip + Cluedo (Maygay) v7.2 (Isle of Man) (Protocol) (M1A/B) + + + m1cluedon + Cluedo (Maygay) v1.2 (Newer) (M1A/B) + + + m1cluedonp + Cluedo (Maygay) v1.2 (Newer) (Protocol) (M1A/B) + + + m1cluedop + Cluedo (Maygay) v6.1 (Protocol) (M1A/B) + + + m1cluesh + Super Cluedo Showcase (Maygay) v1.2 (M1A/B) + + + m1cluesho + Super Cluedo Showcase (Maygay) v1.2 (Older) (M1A/B) + + + m1clueshop + Super Cluedo Showcase (Maygay) v1.2 (Older) (Protocol) (M1A/B) + + + m1clueshp + Super Cluedo Showcase (Maygay) v1.2 (Protocol) (M1A/B) + + + m1cluess + Cluedo Super Sleuth (Maygay) v2.3 (M1A/B) + + + m1cluessa + Cluedo Super Sleuth (Maygay) v1.2 (Newer) (M1A/B) + + + m1cluessap + Cluedo Super Sleuth (Maygay) v1.2 (Newer) (Protocol) (M1A/B) + + + m1cluessb + Cluedo Super Sleuth (Maygay) v7.1 (Older) (M1A/B) + + + m1cluessbp + Cluedo Super Sleuth (Maygay) v7.1 (Older) (Protocol) (M1A/B) + + + m1cluessc + Cluedo Super Sleuth (Maygay) v6.1 (Older) (M1A/B) + + + m1cluesscp + Cluedo Super Sleuth (Maygay) v6.1 (Older) (Protocol) (M1A/B) + + + m1cluessd + Cluedo Super Sleuth (Maygay) v5.1 (Older) (M1A/B) + + + m1cluessdp + Cluedo Super Sleuth (Maygay) v5.1 (Older) (Protocol) (M1A/B) + + + m1cluesse + Cluedo Super Sleuth (Maygay) v2.1 (Older) (M1A/B) + + + m1cluessep + Cluedo Super Sleuth (Maygay) v2.1 (Older) (Protocol) (M1A/B) + + + m1cluessf + Cluedo Super Sleuth (Maygay) v1.1 (Older) (M1A/B) + + + m1cluessfp + Cluedo Super Sleuth (Maygay) v1.1 (Older) (Protocol) (M1A/B) + + + m1cluessg + Cluedo Super Sleuth (Maygay) v7.1 (15GBP Jackpot) (Older) (M1A/B) + + + m1cluessh + Cluedo Super Sleuth (Maygay) v2.3 (Newer) (Hack) (M1A/B) + + + m1cluessi + Cluedo Super Sleuth (Maygay) v2.1 (10GBP Jackpot) (Older) (M1A/B) + + + m1cluessj + Cluedo Super Sleuth (Maygay) v2.3 (5GBP Jackpot) (Older) (M1A/B) + + + m1cluessk + Cluedo Super Sleuth (Maygay) v1.2 (Older) (M1A/B) + + + m1cluessl + Cluedo Super Sleuth (Maygay) v4.1 (Older) (M1A/B) + + + m1cluesslp + Cluedo Super Sleuth (Maygay) v4.1 (Older) (Protocol) (M1A/B) + + + m1cluessm + Cluedo Super Sleuth (Maygay) v3.1 (Older) (M1A/B) + + + m1cluessmp + Cluedo Super Sleuth (Maygay) v3.1 (Older) (Protocol) (M1A/B) + + + m1cluessn + Cluedo Super Sleuth (Maygay) v1.1 (10GBP Jackpot) (Older) (M1A/B) + + + m1cluesso + Cluedo Super Sleuth (Maygay) v2.1 (Older, alternate) (M1A/B) + + + m1cluessop + Cluedo Super Sleuth (Maygay) v2.1 (Older, alternate) (Protocol) (M1A/B) + + + m1cluessp + Cluedo Super Sleuth (Maygay) v2.3 (Newer) (Protocol) (M1A/B) + + + m1cluessq + Cluedo Super Sleuth (Maygay) v5.1 (Older, alternate) (M1A/B) + + + m1cluessqp + Cluedo Super Sleuth (Maygay) v5.1 (Older, alternate) (Protocol) (M1A/B) + + + m1cluessr + Cluedo Super Sleuth (Maygay) v3.1 (Older, alternate) (M1A/B) + + + m1cluessrp + Cluedo Super Sleuth (Maygay) v3.1 (Older, alternate) (Protocol) (M1A/B) + + + m1cluesss + Cluedo Super Sleuth (Maygay) v4.1? (Older, alternate) (M1A/B) + + + m1cluesssp + Cluedo Super Sleuth (Maygay) v4.1? (Older, alternate) (Protocol) (M1A/B) + + + m1coderd + Code Red Club (Maygay) v2.1 (M1A/B) + + + m1coderdp + Code Red Club (Maygay) v2.1 (Protocol) (M1A/B) + + + m1coro + Coronation Street (Maygay) (M1A/B) + + + m1coro10h1 + Coronation Street (Maygay) v1.0 (Hack 1) (M1A/B) + + + m1coro10h2 + Coronation Street (Maygay) v1.0 (Hack 2) (M1A/B) + + + m1coro10h3 + Coronation Street (Maygay) v1.0 (Hack 3) (M1A/B) + + + m1coro11n + Coronation Street (Maygay) v1.1 (Newer) (M1A/B) + + + m1coro11np + Coronation Street (Maygay) v1.1 (Newer) (Protocol) (M1A/B) + + + m1coro12a + Coronation Street (Maygay) v1.2 (Newer, G?) (Alternate) (M1A/B) + + + m1coro12g + Coronation Street (Maygay) v1.2 (Newer, G?) (M1A/B) + + + m1coro12gp + Coronation Street (Maygay) v1.2 (Newer, G?) (Protocol) (M1A/B) + + + m1coro12n + Coronation Street (Maygay) v1.2 (Newer) (M1A/B) + + + m1coro12np + Coronation Street (Maygay) v1.2 (Newer) (Protocol) (M1A/B) + + + m1coro21n + Coronation Street (Maygay) v2.1 (Newer) (M1A/B) + + + m1coro21np + Coronation Street (Maygay) v2.1 (Newer) (Protocol) (M1A/B) + + + m1coro21v + Coronation Street (Maygay) v2.1 (Multivend) (M1A/B) + + + m1coro21vp + Coronation Street (Maygay) v2.1 (Multivend) (Protocol)(M1A/B) + + + m1coro22n + Coronation Street (Maygay) v2.2 (Newer) (M1A/B) + + + m1coro30h + Coronation Street (Maygay) v3.0 (Hack) (M1A/B) + + + m1coro31 + Coronation Street (Maygay) v3.1 (Older) (M1A/B) + + + m1coro31p + Coronation Street (Maygay) v3.1 (Older) (Protocol) (M1A/B) + + + m1coro32g + Coronation Street (Maygay) v3.2 (Newer, G?) (M1A/B) + + + m1coro32gh + Coronation Street (Maygay) v3.2 (Newer, G?) (Hack) (M1A/B) + + + m1coro32n + Coronation Street (Maygay) v3.2 (Newer) (M1A/B) + + + m1coro32np + Coronation Street (Maygay) v3.2 (Newer) (Protocol) (M1A/B) + + + m1coro81 + Coronation Street (Maygay) v8.1 (M1A/B) + + + m1coro81p + Coronation Street (Maygay) v8.1 (Protocol) (M1A/B) + + + m1corocb + Coronation Street Club (Maygay) v2.1 (M1A/B) + + + m1corocb1 + Coronation Street Club (Maygay) v1.1 (M1A/B) + + + m1corocb1p + Coronation Street Club (Maygay) v1.1 (Protocol)(M1A/B) + + + m1corocbp + Coronation Street Club (Maygay) v2.1 (Protocol) (M1A/B) + + + m1corop + Coronation Street (Maygay) (Protocol) (M1A/B) + + + m1cororr + Coronation Street - Rovers Return (Maygay) (set 1) (M1A/B) + + + m1cororra + Coronation Street - Rovers Return (Maygay) (set 1) (Alternate) (M1A/B) + + + m1cororrb + Coronation Street - Rovers Return (Maygay) (set 2) (M1A/B) + + + m1cororrb1 + Coronation Street - Rovers Return (Maygay) (set 2) (Alternate) (M1A/B) + + + m1cororrbh + Coronation Street - Rovers Return (Maygay) (set 2) (Hack) (M1A/B) + + + m1cororrbp + Coronation Street - Rovers Return (Maygay) (set 2) (Protocol) (M1A/B) + + + m1cororrc + Coronation Street - Rovers Return (Maygay) (set 3) (M1A/B) + + + m1cororrc1 + Coronation Street - Rovers Return (Maygay) (set 3) (Alternate 1) (M1A/B) + + + m1cororrc2 + Coronation Street - Rovers Return (Maygay) (set 3) (Alternate 2) (M1A/B) + + + m1cororrd + Coronation Street - Rovers Return (Maygay) (set 4) (M1A/B) + + + m1cororrdp + Coronation Street - Rovers Return (Maygay) (set 4) (Protocol) (M1A/B) + + + m1cororre + Coronation Street - Rovers Return (Maygay) (set 5) (M1A/B) + + + m1cororrf + Coronation Street - Rovers Return (Maygay) (set 6) (BW) (M1A/B) + + + m1cororrfp + Coronation Street - Rovers Return (Maygay) (set 6) (BW) (Protocol) (M1A/B) + + + m1cororrg + Coronation Street - Rovers Return (Maygay) (set 7) (M1A/B) + + + m1cororrgp + Coronation Street - Rovers Return (Maygay) (set 7) (Protocol) (M1A/B) + + + m1cororrh + Coronation Street - Rovers Return (Maygay) (set 8) (M1A/B) + + + m1cororri + Coronation Street - Rovers Return (Maygay) (set 9) (M1A/B) + + + m1cororrip + Coronation Street - Rovers Return (Maygay) (set 9) (Protocol) (M1A/B) + + + m1cororrj + Coronation Street - Rovers Return (Maygay) (set 10) (M1A/B) + + + m1cororrjp + Coronation Street - Rovers Return (Maygay) (set 10) (Protocol) (M1A/B) + + + m1cororrk + Coronation Street - Rovers Return (Maygay) (set 11) (M1A/B) + + + m1cororrl + Coronation Street - Rovers Return (Maygay) (set 12) (M1A/B) + + + m1cororrlp + Coronation Street - Rovers Return (Maygay) (set 12) (Protocol) (M1A/B) + + + m1cororrp + Coronation Street - Rovers Return (Maygay) (set 1) (Protocol) (M1A/B) + + + m1corosh + Coronation Street Showcase (Maygay) v1.1 (M1A/B) + + + m1coroshp + Coronation Street Showcase (Maygay) v1.1 (Protocol)(M1A/B) + + + m1criss + Criss Cross Club (Maygay) (Dutch) (M1A/B) + + + m1crzco + Crazy Cobra (Gemini) (M1A/B) (set 1) + + + m1crzcoa + Crazy Cobra (Gemini) (M1A/B) (set 2) + + + m1crzcob + Crazy Cobra (Gemini) (M1A/B) (set 3) + + + m1crzcoc + Crazy Cobra (Gemini) (M1A/B) (set 4) + + + m1crzcod + Crazy Cobra (Gemini) (M1A/B) (set 5) + + + m1crzcoe + Crazy Cobra (Gemini) (M1A/B) (set 6) + + + m1digdel + Diggers Delight (Global) (M1A/B) (set 1) + + + m1digdela + Diggers Delight (Global) (M1A/B) (set 2) + + + m1dkong + Donkey Kong (Maygay) v9.2 (M1A/B) + + + m1dkong11 + Donkey Kong (Maygay) v1.1 (M1A/B) + + + m1dkong11p + Donkey Kong (Maygay) v1.1 (M1A/B) (Protocol?) + + + m1dkong21 + Donkey Kong (Maygay) v2.1 (Older) (M1A/B) + + + m1dkong21n + Donkey Kong (Maygay) v2.1 (M1A/B) + + + m1dkong21p + Donkey Kong (Maygay) v2.1 (Older) (Protocol) (M1A/B) + + + m1dkong31 + Donkey Kong (Maygay) v3.1 (M1A/B) + + + m1dkong31p + Donkey Kong (Maygay) v3.1 (Protocol) (M1A/B) + + + m1dkong41 + Donkey Kong (Maygay) v4.1 (M1A/B) + + + m1dkong41p + Donkey Kong (Maygay) v4.1 (Protocol) (M1A/B) + + + m1dkong51 + Donkey Kong (Maygay) v5.1 (M1A/B) + + + m1dkong51p + Donkey Kong (Maygay) v5.1 (Protocol) (M1A/B) + + + m1dkong81 + Donkey Kong (Maygay) v8.1 (Older) (M1A/B) + + + m1dkong81n + Donkey Kong (Maygay) v8.1 (M1A/B) + + + m1dkong81na + Donkey Kong (Maygay) v8.1 (Alternate) (M1A/B) + + + m1dkong81np + Donkey Kong (Maygay) v8.1 (Protocol) (M1A/B) + + + m1dkong81p + Donkey Kong (Maygay) v8.1 (Older) (Protocol) (M1A/B) + + + m1dkong91 + Donkey Kong (Maygay) v9.1 (Older) (M1A/B) + + + m1dkong91a + Donkey Kong (Maygay) v9.1 (Older) (Alternate) (M1A/B) + + + m1dkong91h1 + Donkey Kong (Maygay) v9.1 (Older) (Hack 1) (M1A/B) + + + m1dkong91h2 + Donkey Kong (Maygay) v9.1 (Older) (Hack 2) (M1A/B) + + + m1dkong91n + Donkey Kong (Maygay) v9.1 (M1A/B) + + + m1dkong91na + Donkey Kong (Maygay) v9.1 (Alternate) (M1A/B) + + + m1dkong91np + Donkey Kong (Maygay) v9.1 (Protocol) (M1A/B) + + + m1dkong91p + Donkey Kong (Maygay) v9.1 (Older) (Protocol) (M1A/B) + + + m1dkonga + Donkey Kong (Maygay) v9.2 (Alternate) (M1A/B) + + + m1dkonga2 + Donkey Kong (Maygay) v?.? (M1A/B) + + + m1dkongp + Donkey Kong (Maygay) v9.2 (Protocol) (M1A/B) + + + m1dm4ev + Diamonds Are Forever Club (Maygay) v5.1 (M1A/B) + + + m1dm4ev11 + Diamonds Are Forever Club (Maygay) v1.1 (M1A/B) + + + m1dm4evp + Diamonds Are Forever Club (Maygay) v5.1 (Protocol) n(M1A/B) + + + m1dmnhrt + Diamond Hearts (Maygay) (M1A/B) + + + m1dxmono + Deluxe Monopoly (Maygay) v5.1 (M1A/B) + + + m1dxmono11 + Deluxe Monopoly (Maygay) v1.1 (M1A/B) + + + m1dxmono11m + Deluxe Monopoly (Maygay) v1.1 (Code M) (M1A/B) + + + m1dxmono11mb + Deluxe Monopoly (Maygay) v1.1 (Code M, Alternate) (M1A/B) + + + m1dxmono11o + Deluxe Monopoly (Maygay) v1.1 (Older) (M1A/B) + + + m1dxmono11p + Deluxe Monopoly (Maygay) v1.1 (Protocol) (M1A/B) + + + m1dxmono12 + Deluxe Monopoly (Maygay) v1.2 (M1A/B) + + + m1dxmono12a + Deluxe Monopoly (Maygay) v1.2 (Alternate) (M1A/B) + + + m1dxmono12n + Deluxe Monopoly (Maygay) v1.2 (Newer) (M1A/B) + + + m1dxmono12p + Deluxe Monopoly (Maygay) v1.2 (Protocol) (M1A/B) + + + m1dxmono21p + Deluxe Monopoly (Maygay) v2.1 (Protocol) (M1A/B) + + + m1dxmono30h + Deluxe Monopoly (Maygay) v3.0 (Hack) (M1A/B) + + + m1dxmono31b + Deluxe Monopoly (Maygay) v3.1 (BwB set) (M1A/B) + + + m1dxmono31h + Deluxe Monopoly (Maygay) v3.1 (Hack) (M1A/B) + + + m1dxmono31h2 + Deluxe Monopoly (Maygay) v3.1 (Alternate Hack) (M1A/B) + + + m1dxmono31p + Deluxe Monopoly (Maygay) v3.1 (Protocol) (M1A/B) + + + m1dxmono51 + Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B) + + + m1dxmono51o + Deluxe Monopoly (Maygay) v5.1 (Older) (M1A/B) (alt?) + + + m1dxmono51p + Deluxe Monopoly (Maygay) v5.1 (Older) (Protocol) (M1A/B) + + + m1dxmonop + Deluxe Monopoly (Maygay) v5.1 (Protocol) (M1A/B) + + + m1eastnd + Eastenders (Maygay) (M1A/B) (set 1) + + + m1eastnd0 + Eastenders (Maygay) (M1A/B) (set 28) + + + m1eastnd1 + Eastenders (Maygay) (M1A/B) (set 29) + + + m1eastnd2 + Eastenders (Maygay) (M1A/B) (set 30) + + + m1eastnd3 + Eastenders (Maygay) (M1A/B) (set 31) + + + m1eastnd4 + Eastenders (Maygay) (M1A/B) (set 32) + + + m1eastnd5 + Eastenders (Maygay) (M1A/B) (set 33) + + + m1eastnd6 + Eastenders (Maygay) (M1A/B) (set 34) + + + m1eastnd7 + Eastenders (Maygay) (M1A/B) (set 35) + + + m1eastnd8 + Eastenders (Maygay) (M1A/B) (set 36) + + + m1eastnd9 + Eastenders (Maygay) (M1A/B) (set 37) + + + m1eastnda + Eastenders (Maygay) (M1A/B) (set 2) + + + m1eastndaa + Eastenders (Maygay) (M1A/B) (set 38) + + + m1eastndab + Eastenders (Maygay) (M1A/B) (set 39) + + + m1eastndac + Eastenders (Maygay) (M1A/B) (set 40) + + + m1eastndad + Eastenders (Maygay) (M1A/B) (set 41) + + + m1eastndae + Eastenders (Maygay) (M1A/B) (set 42) + + + m1eastndaf + Eastenders (Maygay) (M1A/B) (set 43) + + + m1eastndb + Eastenders (Maygay) (M1A/B) (set 3) + + + m1eastndc + Eastenders (Maygay) (M1A/B) (set 4) + + + m1eastndd + Eastenders (Maygay) (M1A/B) (set 5) + + + m1eastnde + Eastenders (Maygay) (M1A/B) (set 6) + + + m1eastndf + Eastenders (Maygay) (M1A/B) (set 7) + + + m1eastndg + Eastenders (Maygay) (M1A/B) (set 8) + + + m1eastndh + Eastenders (Maygay) (M1A/B) (set 9) + + + m1eastndi + Eastenders (Maygay) (M1A/B) (set 10) + + + m1eastndj + Eastenders (Maygay) (M1A/B) (set 11) + + + m1eastndk + Eastenders (Maygay) (M1A/B) (set 12) + + + m1eastndl + Eastenders (Maygay) (M1A/B) (set 13) + + + m1eastndn + Eastenders (Maygay) (M1A/B) (set 15) + + + m1eastndp + Eastenders (Maygay) (M1A/B) (set 17) + + + m1eastndq + Eastenders (Maygay) (M1A/B) (set 18) + + + m1eastndr + Eastenders (Maygay) (M1A/B) (set 19) + + + m1eastnds + Eastenders (Maygay) (M1A/B) (set 20) + + + m1eastndt + Eastenders (Maygay) (M1A/B) (set 21) + + + m1eastndu + Eastenders (Maygay) (M1A/B) (set 22) + + + m1eastndv + Eastenders (Maygay) (M1A/B) (set 23) + + + m1eastndw + Eastenders (Maygay) (M1A/B) (set 24) + + + m1eastndx + Eastenders (Maygay) (M1A/B) (set 25) + + + m1eastndy + Eastenders (Maygay) (M1A/B) (set 26) + + + m1eastndz + Eastenders (Maygay) (M1A/B) (set 27) + + + m1eastqv + Eastenders - Queen Vic (Maygay) (M1A/B) (set 1) + + + m1eastqv0 + Eastenders - Queen Vic (Maygay) (M1A/B) (set 28) + + + m1eastqv1 + Eastenders - Queen Vic (Maygay) (M1A/B) (set 29) + + + m1eastqv2 + Eastenders - Queen Vic (Maygay) (M1A/B) (set 30) + + + m1eastqv3 + Eastenders - Queen Vic (Maygay) (M1A/B) (set 31) + + + m1eastqv5 + Eastenders - Queen Vic (Maygay) (M1A/B) (set 33) + + + m1eastqv6 + Eastenders - Queen Vic (Maygay) (M1A/B) (set 34) + + + m1eastqv7 + Eastenders - Queen Vic (Maygay) (M1A/B) (set 35) + + + m1eastqv8 + Eastenders - Queen Vic (Maygay) (M1A/B) (set 36) + + + m1eastqva + Eastenders - Queen Vic (Maygay) (M1A/B) (set 2) + + + m1eastqvaa + Eastenders - Queen Vic (Maygay) (M1A/B) (set 38) + + + m1eastqvb + Eastenders - Queen Vic (Maygay) (M1A/B) (set 3) + + + m1eastqvc + Eastenders - Queen Vic (Maygay) (M1A/B) (set 4) + + + m1eastqvd + Eastenders - Queen Vic (Maygay) (M1A/B) (set 5) + + + m1eastqvf + Eastenders - Queen Vic (Maygay) (M1A/B) (set 7) + + + m1eastqvg + Eastenders - Queen Vic (Maygay) (M1A/B) (set 8) + + + m1eastqvh + Eastenders - Queen Vic (Maygay) (M1A/B) (set 9) + + + m1eastqvi + Eastenders - Queen Vic (Maygay) (M1A/B) (set 10) + + + m1eastqvj + Eastenders - Queen Vic (Maygay) (M1A/B) (set 11) + + + m1eastqvk + Eastenders - Queen Vic (Maygay) (M1A/B) (set 12) + + + m1eastqvl + Eastenders - Queen Vic (Maygay) (M1A/B) (set 13) + + + m1eastqvm + Eastenders - Queen Vic (Maygay) (M1A/B) (set 14) + + + m1eastqvn + Eastenders - Queen Vic (Maygay) (M1A/B) (set 15) + + + m1eastqvo + Eastenders - Queen Vic (Maygay) (M1A/B) (set 16) + + + m1eastqvp + Eastenders - Queen Vic (Maygay) (M1A/B) (set 17) + + + m1eastqvq + Eastenders - Queen Vic (Maygay) (M1A/B) (set 18) + + + m1eastqvr + Eastenders - Queen Vic (Maygay) (M1A/B) (set 19) + + + m1eastqvs + Eastenders - Queen Vic (Maygay) (M1A/B) (set 20) + + + m1eastqvt + Eastenders - Queen Vic (Maygay) (M1A/B) (set 21) + + + m1eastqvu + Eastenders - Queen Vic (Maygay) (M1A/B) (set 22) + + + m1eastqvv + Eastenders - Queen Vic (Maygay) (M1A/B) (set 23) + + + m1eastqvw + Eastenders - Queen Vic (Maygay) (M1A/B) (set 24) + + + m1eastqvx + Eastenders - Queen Vic (Maygay) (M1A/B) (set 25) + + + m1eastqvy + Eastenders - Queen Vic (Maygay) (M1A/B) (set 26) + + + m1eastqvz + Eastenders - Queen Vic (Maygay) (M1A/B) (set 27) + + + m1expclb + Explorer Club (Maygay) (M1A/B) (set 2) + + + m1expclba + Explorer Club (Maygay) (M1A/B) (set 3) + + + m1fantfb + Fantasy Football (Maygay) (M1A/B) (set 1) + + + m1fantfba + Fantasy Football (Maygay) (M1A/B) (set 2) + + + m1fantfbb + Fantasy Football (Maygay) (M1A/B) (set 3) + + + m1fantfbc + Fantasy Football (Maygay) (M1A/B) (set 4) + + + m1fantfbd + Fantasy Football (Maygay) (M1A/B) (set 5) + + + m1fantfbf + Fantasy Football (Maygay) (M1A/B) (set 7) + + + m1fantfbg + Fantasy Football (Maygay) (M1A/B) (set 8) + + + m1fantfbh + Fantasy Football (Maygay) (M1A/B) (set 9) + + + m1fantfbj + Fantasy Football (Maygay) (M1A/B) (set 11) + + + m1fantfbk + Fantasy Football (Maygay) (M1A/B) (set 12) + + + m1fantfbl + Fantasy Football (Maygay) (M1A/B) (set 13) + + + m1fight + Fight Night (Maygay) (M1A/B) (set 1) + + + m1fighta + Fight Night (Maygay) (M1A/B) (set 2) + + + m1fightb + Fight Night (Maygay) (M1A/B) (set 3) + + + m1fightc + Fight Night (Maygay) (M1A/B) (set 4) + + + m1fightd + Fight Night (Maygay) (M1A/B) (set 5) + + + m1fighte + Fight Night (Maygay) (M1A/B) (set 6) + + + m1fightg + Fight Night (Maygay) (M1A/B) (set 8) + + + m1fighth + Fight Night (Maygay) (M1A/B) (set 9) + + + m1fighti + Fight Night (Maygay) (M1A/B) (set 10) + + + m1fightj + Fight Night (Maygay) (M1A/B) (set 11) + + + m1fightk + Fight Night (Maygay) (M1A/B) (set 12) + + + m1fightl + Fight Night (Maygay) (M1A/B) (set 13) + + + m1fightm + Fight Night (Maygay) (M1A/B) (set 14) + + + m1fightn + Fight Night (Maygay) (M1A/B) (set 15) + + + m1fighto + Fight Night (Maygay) (M1A/B) (set 16) + + + m1fightp + Fight Night (Maygay) (M1A/B) (set 17) + + + m1fightq + Fight Night (Maygay) (M1A/B) (set 18) + + + m1fightr + Fight Night (Maygay) (M1A/B) (set 19) + + + m1fights + Fight Night (Maygay) (M1A/B) (set 20) + + + m1fightt + Fight Night (Maygay) (M1A/B) (set 21) + + + m1fightu + Fight Night (Maygay) (M1A/B) (set 22) + + + m1fightv + Fight Night (Maygay) (M1A/B) (set 23) + + + m1fightw + Fight Night (Maygay) (M1A/B) (set 24) + + + m1fightx + Fight Night (Maygay) (M1A/B) (set 25) + + + m1fivest + Five Star (Dutch) (Maygay) (M1A/B) + + + m1frexpl + Fruit Explosion (Maygay) (M1A/B) (set 1) + + + m1frexpla + Fruit Explosion (Maygay) (M1A/B) (set 2) + + + m1frexplc + Fruit Explosion (Maygay) (M1A/B) (set 4) + + + m1frexpld + Fruit Explosion (Maygay) (M1A/B) (set 5) + + + m1frexple + Fruit Explosion (Maygay) (M1A/B) (set 6) + + + m1frexplg + Fruit Explosion (Maygay) (M1A/B) (set 8) + + + m1frexplh + Fruit Explosion (Maygay) (M1A/B) (set 9) + + + m1frexpli + Fruit Explosion (Maygay) (M1A/B) (set 10) + + + m1frexplj + Fruit Explosion (Maygay) (M1A/B) (set 11) + + + m1frexplk + Fruit Explosion (Maygay) (M1A/B) (set 12) + + + m1frexpll + Fruit Explosion (Maygay) (M1A/B) (set 13) + + + m1frexplm + Fruit Explosion (Maygay) (M1A/B) (set 14) + + + m1frexpln + Fruit Explosion (Maygay) (M1A/B) (set 15) + + + m1frexplo + Fruit Explosion (Maygay) (M1A/B) (set 16) + + + m1frexplp + Fruit Explosion (Maygay) (M1A/B) (set 17) + + + m1frexplq + Fruit Explosion (Maygay) (M1A/B) (set 18) + + + m1frexplr + Fruit Explosion (Maygay) (M1A/B) (set 19) + + + m1frexpls + Fruit Explosion (Maygay) (M1A/B) (set 20) + + + m1frexplt + Fruit Explosion (Maygay) (M1A/B) (set 21) + + + m1frexplu + Fruit Explosion (Maygay) (M1A/B) (set 22) + + + m1frexplv + Fruit Explosion (Maygay) (M1A/B) (set 23) + + + m1glad + Gladiators (Maygay) (M1A/B) (set 1) + + + m1glad0 + Gladiators (Maygay) (M1A/B) (set 28) + + + m1glad1 + Gladiators (Maygay) (M1A/B) (set 29) + + + m1glada + Gladiators (Maygay) (M1A/B) (set 2) + + + m1gladb + Gladiators (Maygay) (M1A/B) (set 3) + + + m1gladc + Gladiators (Maygay) (M1A/B) (set 4) + + + m1gladd + Gladiators (Maygay) (M1A/B) (set 5) + + + m1glade + Gladiators (Maygay) (M1A/B) (set 6) + + + m1gladf + Gladiators (Maygay) (M1A/B) (set 7) + + + m1gladg + Gladiators (Maygay) (M1A/B) (set 8) + + + m1gladh + Gladiators (Maygay) (M1A/B) (set 9) + + + m1gladj + Gladiators (Maygay) (M1A/B) (set 11) + + + m1gladk + Gladiators (Maygay) (M1A/B) (set 12) + + + m1gladl + Gladiators (Maygay) (M1A/B) (set 13) + + + m1gladm + Gladiators (Maygay) (M1A/B) (set 14) + + + m1gladn + Gladiators (Maygay) (M1A/B) (set 15) + + + m1glado + Gladiators (Maygay) (M1A/B) (set 16) + + + m1gladp + Gladiators (Maygay) (M1A/B) (set 17) + + + m1gladq + Gladiators (Maygay) (M1A/B) (set 18) + + + m1gladr + Gladiators (Maygay) (M1A/B) (set 19) + + + m1glads + Gladiators (Maygay) (M1A/B) (set 20) + + + m1gladt + Gladiators (Maygay) (M1A/B) (set 21) + + + m1gladu + Gladiators (Maygay) (M1A/B) (set 22) + + + m1gladv + Gladiators (Maygay) (M1A/B) (set 23) + + + m1gladw + Gladiators (Maygay) (M1A/B) (set 24) + + + m1gladx + Gladiators (Maygay) (M1A/B) (set 25) + + + m1glady + Gladiators (Maygay) (M1A/B) (set 26) + + + m1gladz + Gladiators (Maygay) (M1A/B) (set 27) + + + m1gold10 + Golden 10 (German) (Maygay) (M1A/B) + + + m1goldng + Golden Nugget Club (Maygay) (M1A/B) (set 1) + + + m1goldnga + Golden Nugget Club (Maygay) (M1A/B) (set 2) + + + m1goldngb + Golden Nugget Club (Maygay) (M1A/B) (set 3) + + + m1goldngc + Golden Nugget Club (Maygay) (M1A/B) (set 4) + + + m1goldngd + Golden Nugget Club (Maygay) (M1A/B) (set 5) + + + m1goldnge + Golden Nugget Club (Maygay) (M1A/B) (set 6) + + + m1goldsv + Gold & Silver (Maygay) (M1A/B) (set 1) + + + m1goldsva + Gold & Silver (Maygay) (M1A/B) (set 2) + + + m1gresc + The Great Escape (Maygay) (M1A/B) (set 1) + + + m1gresca + The Great Escape (Maygay) (M1A/B) (set 2) + + + m1grescb + The Great Escape (Maygay) (M1A/B) (set 3) + + + m1grescc + The Great Escape (Maygay) (M1A/B) (set 4) + + + m1grescd + The Great Escape (Maygay) (M1A/B) (set 5) + + + m1gresce + The Great Escape (Maygay) (M1A/B) (set 6) + + + m1grescf + The Great Escape (Maygay) (M1A/B) (set 7) + + + m1grescg + The Great Escape (Maygay) (M1A/B) (set 8) + + + m1gresch + The Great Escape (Maygay) (M1A/B) (set 9) + + + m1gresci + The Great Escape (Maygay) (M1A/B) (set 10) + + + m1grescj + The Great Escape (Maygay) (M1A/B) (set 11) + + + m1gresck + The Great Escape (Maygay) (M1A/B) (set 12) + + + m1grescl + The Great Escape (Maygay) (M1A/B) (set 13) + + + m1grescm + The Great Escape (Maygay) (M1A/B) (set 14) + + + m1grescn + The Great Escape (Maygay) (M1A/B) (set 15) + + + m1gresco + The Great Escape (Maygay) (M1A/B) (set 16) + + + m1grescp + The Great Escape (Maygay) (M1A/B) (set 17) + + + m1grescq + The Great Escape (Maygay) (M1A/B) (set 18) + + + m1gskill + Greek Skill (Hitech Amusement) + + + m1guvnor + The Guvnor (Maygay) (M1A/B) (set 1) + + + m1guvnora + The Guvnor (Maygay) (M1A/B) (set 2) + + + m1guvnorb + The Guvnor (Maygay) (M1A/B) (set 3) + + + m1guvnorc + The Guvnor (Maygay) (M1A/B) (set 4) + + + m1guvnord + The Guvnor (Maygay) (M1A/B) (set 5) + + + m1guvnore + The Guvnor (Maygay) (M1A/B) (set 6) + + + m1guvnorf + The Guvnor (Maygay) (M1A/B) (set 7) + + + m1guvnorg + The Guvnor (Maygay) (M1A/B) (set 8) + + + m1guvnorh + The Guvnor (Maygay) (M1A/B) (set 9) + + + m1guvnori + The Guvnor (Maygay) (M1A/B) (set 10) + + + m1guvnorj + The Guvnor (Maygay) (M1A/B) (set 11) + + + m1guvnork + The Guvnor (Maygay) (M1A/B) (set 12) + + + m1guvnorl + The Guvnor (Maygay) (M1A/B) (set 13) + + + m1guvnorm + The Guvnor (Maygay) (M1A/B) (set 14) + + + m1guvnorn + The Guvnor (Maygay) (M1A/B) (set 15) + + + m1guvnoro + The Guvnor (Maygay) (M1A/B) (set 16) + + + m1guvnorp + The Guvnor (Maygay) (M1A/B) (set 17) + + + m1guvnorq + The Guvnor (Maygay) (M1A/B) (set 18) + + + m1guvnorr + The Guvnor (Maygay) (M1A/B) (set 19) + + + m1guvnors + The Guvnor (Maygay) (M1A/B) (set 20) + + + m1guvnort + The Guvnor (Maygay) (M1A/B) (set 21) + + + m1hiloc + Hi Lo Casino (Global) (M1A/B) (set 1) + + + m1hiloca + Hi Lo Casino (Global) (M1A/B) (set 2) + + + m1hotpot + Hot Pots (Maygay) (M1A/B) (set 1) + + + m1hotpot0 + Hot Pots (Maygay) (M1A/B) (set 28) + + + m1hotpotd + Hot Pots (Maygay) (M1A/B) (set 5) + + + m1hotpote + Hot Pots (Maygay) (M1A/B) (set 6) + + + m1hotpoth + Hot Pots (Maygay) (M1A/B) (set 9) + + + m1hotpoti + Hot Pots (Maygay) (M1A/B) (set 10) + + + m1hotpotj + Hot Pots (Maygay) (M1A/B) (set 11) + + + m1hotpotk + Hot Pots (Maygay) (M1A/B) (set 12) + + + m1hotpotl + Hot Pots (Maygay) (M1A/B) (set 13) + + + m1hotpotm + Hot Pots (Maygay) (M1A/B) (set 14) + + + m1hotpotn + Hot Pots (Maygay) (M1A/B) (set 15) + + + m1hotpoto + Hot Pots (Maygay) (M1A/B) (set 16) + + + m1hotpotp + Hot Pots (Maygay) (M1A/B) (set 17) + + + m1hotpotq + Hot Pots (Maygay) (M1A/B) (set 18) + + + m1hotpotr + Hot Pots (Maygay) (M1A/B) (set 19) + + + m1hotpots + Hot Pots (Maygay) (M1A/B) (set 20) + + + m1hotpott + Hot Pots (Maygay) (M1A/B) (set 21) + + + m1hotpotu + Hot Pots (Maygay) (M1A/B) (set 22) + + + m1hotpotv + Hot Pots (Maygay) (M1A/B) (set 23) + + + m1hotpotw + Hot Pots (Maygay) (M1A/B) (set 24) + + + m1hotpotx + Hot Pots (Maygay) (M1A/B) (set 25) + + + m1hotpoty + Hot Pots (Maygay) (M1A/B) (set 26) + + + m1hotpotz + Hot Pots (Maygay) (M1A/B) (set 27) + + + m1htclb + Hi Tension Club (Maygay) (M1A/B) (set 1) + + + m1htclba + Hi Tension Club (Maygay) (M1A/B) (set 2) + + + m1imclb + Instant Millionaire Club (Maygay) (M1A/B) (set 1) + + + m1imclba + Instant Millionaire Club (Maygay) (M1A/B) (set 2) + + + m1imclbb + Instant Millionaire Club (Maygay) (M1A/B) (set 3) + + + m1infern + Inferno (Maygay) (M1A/B) (set 1) + + + m1inferna + Inferno (Maygay) (M1A/B) (set 2) + + + m1infernb + Inferno (Maygay) (M1A/B) (set 3) + + + m1infernc + Inferno (Maygay) (M1A/B) (set 4) + + + m1infernd + Inferno (Maygay) (M1A/B) (set 5) + + + m1inferne + Inferno (Maygay) (M1A/B) (set 6) + + + m1infernf + Inferno (Maygay) (M1A/B) (set 7) + + + m1inferng + Inferno (Maygay) (M1A/B) (set 8) + + + m1infernh + Inferno (Maygay) (M1A/B) (set 9) + + + m1inferni + Inferno (Maygay) (M1A/B) (set 10) + + + m1infernj + Inferno (Maygay) (M1A/B) (set 11) + + + m1infernk + Inferno (Maygay) (M1A/B) (set 12) + + + m1infernl + Inferno (Maygay) (M1A/B) (set 13) + + + m1inwin + Instant Win (Maygay) (M1A/B) (set 1) + + + m1inwina + Instant Win (Maygay) (M1A/B) (set 2) + + + m1inwinb + Instant Win (Maygay) (M1A/B) (set 3) + + + m1inwinc + Instant Win (Maygay) (M1A/B) (set 4) + + + m1inwinf + Instant Win (Maygay) (M1A/B) (set 7) + + + m1inwinh + Instant Win (Maygay) (M1A/B) (set 9) + + + m1inwini + Instant Win (Maygay) (M1A/B) (set 10) + + + m1inwinj + Instant Win (Maygay) (M1A/B) (set 11) + + + m1inwink + Instant Win (Maygay) (M1A/B) (set 12) + + + m1inwinl + Instant Win (Maygay) (M1A/B) (set 13) + + + m1inwinm + Instant Win (Maygay) (M1A/B) (set 14) + + + m1inwinn + Instant Win (Maygay) (M1A/B) (set 15) + + + m1inwino + Instant Win (Maygay) (M1A/B) (set 16) + + + m1inwinp + Instant Win (Maygay) (M1A/B) (set 17) + + + m1inwinq + Instant Win (Maygay) (M1A/B) (set 18) + + + m1inwinr + Instant Win (Maygay) (M1A/B) (set 19) + + + m1inwins + Instant Win (Maygay) (M1A/B) (set 20) + + + m1inwint + Instant Win (Maygay) (M1A/B) (set 21) + + + m1inwinu + Instant Win (Maygay) (M1A/B) (set 22) + + + m1inwinv + Instant Win (Maygay) (M1A/B) (set 23) + + + m1inwinw + Instant Win (Maygay) (M1A/B) (set 24) + + + m1inwinx + Instant Win (Maygay) (M1A/B) (set 25) + + + m1itjob + The Italian Job (Maygay) (M1A/B) (set 1) + + + m1itjobc + The Italian Job (Maygay) (M1A/B) (set 4) + + + m1itjobd + The Italian Job (Maygay) (M1A/B) (set 5) + + + m1itjobe + The Italian Job (Maygay) (M1A/B) (set 6) + + + m1itjobf + The Italian Job (Maygay) (M1A/B) (set 7) + + + m1itjobg + The Italian Job (Maygay) (M1A/B) (set 8) + + + m1itjobh + The Italian Job (Maygay) (M1A/B) (set 9) + + + m1itjobi + The Italian Job (Maygay) (M1A/B) (set 10) + + + m1itjobj + The Italian Job (Maygay) (M1A/B) (set 11) + + + m1itjobk + The Italian Job (Maygay) (M1A/B) (set 12) + + + m1itjobl + The Italian Job (Maygay) (M1A/B) (set 13) + + + m1itjobm + The Italian Job (Maygay) (M1A/B) (set 14) + + + m1itjobn + The Italian Job (Maygay) (M1A/B) (set 15) + + + m1itjobo + The Italian Job (Maygay) (M1A/B) (set 16) + + + m1itjobp + The Italian Job (Maygay) (M1A/B) (set 17) + + + m1itjobq + The Italian Job (Maygay) (M1A/B) (set 18) + + + m1itjobr + The Italian Job (Maygay) (M1A/B) (set 19) + + + m1itsko + It's A Knockout (Maygay) (M1A/B) (set 1) + + + m1itsko0 + It's A Knockout (Maygay) (M1A/B) (set 28) + + + m1itsko1 + It's A Knockout (Maygay) (M1A/B) (set 29) + + + m1itsko2 + It's A Knockout (Maygay) (M1A/B) (set 30) + + + m1itsko3 + It's A Knockout (Maygay) (M1A/B) (set 31) + + + m1itsko4 + It's A Knockout (Maygay) (M1A/B) (set 32) + + + m1itsko5 + It's A Knockout (Maygay) (M1A/B) (set 33) + + + m1itsko6 + It's A Knockout (Maygay) (M1A/B) (set 34) + + + m1itsko7 + It's A Knockout (Maygay) (M1A/B) (set 35) + + + m1itsko8 + It's A Knockout (Maygay) (M1A/B) (set 36) + + + m1itskoa + It's A Knockout (Maygay) (M1A/B) (set 2) + + + m1itskob + It's A Knockout (Maygay) (M1A/B) (set 3) + + + m1itskoc + It's A Knockout (Maygay) (M1A/B) (set 4) + + + m1itskod + It's A Knockout (Maygay) (M1A/B) (set 5) + + + m1itskoe + It's A Knockout (Maygay) (M1A/B) (set 6) + + + m1itskof + It's A Knockout (Maygay) (M1A/B) (set 7) + + + m1itskog + It's A Knockout (Maygay) (M1A/B) (set 8) + + + m1itskoh + It's A Knockout (Maygay) (M1A/B) (set 9) + + + m1itskoi + It's A Knockout (Maygay) (M1A/B) (set 10) + + + m1itskoj + It's A Knockout (Maygay) (M1A/B) (set 11) + + + m1itskok + It's A Knockout (Maygay) (M1A/B) (set 12) + + + m1itskol + It's A Knockout (Maygay) (M1A/B) (set 13) + + + m1itskom + It's A Knockout (Maygay) (M1A/B) (set 14) + + + m1itskon + It's A Knockout (Maygay) (M1A/B) (set 15) + + + m1itskoo + It's A Knockout (Maygay) (M1A/B) (set 16) + + + m1itskop + It's A Knockout (Maygay) (M1A/B) (set 17) + + + m1itskoq + It's A Knockout (Maygay) (M1A/B) (set 18) + + + m1itskor + It's A Knockout (Maygay) (M1A/B) (set 19) + + + m1itskos + It's A Knockout (Maygay) (M1A/B) (set 20) + + + m1itskot + It's A Knockout (Maygay) (M1A/B) (set 21) + + + m1itskou + It's A Knockout (Maygay) (M1A/B) (set 22) + + + m1itskov + It's A Knockout (Maygay) (M1A/B) (set 23) + + + m1itskow + It's A Knockout (Maygay) (M1A/B) (set 24) + + + m1itskox + It's A Knockout (Maygay) (M1A/B) (set 25) + + + m1itskoy + It's A Knockout (Maygay) (M1A/B) (set 26) + + + m1itskoz + It's A Knockout (Maygay) (M1A/B) (set 27) + + + m1jbond + James Bond (Maygay) (M1A/B) (set 1) + + + m1jbonda + James Bond (Maygay) (M1A/B) (set 2) + + + m1jbondb + James Bond (Maygay) (M1A/B) (set 3) + + + m1jbondc + James Bond (Maygay) (M1A/B) (set 4) + + + m1jbondd + James Bond (Maygay) (M1A/B) (set 5) + + + m1jbonde + James Bond (Maygay) (M1A/B) (set 6) + + + m1jbondf + James Bond (Maygay) (M1A/B) (set 7) + + + m1jbondg + James Bond (Maygay) (M1A/B) (set 8) + + + m1jbondh + James Bond (Maygay) (M1A/B) (set 9) + + + m1jbondi + James Bond (Maygay) (M1A/B) (set 10) + + + m1jbondj + James Bond (Maygay) (M1A/B) (set 11) + + + m1jbondk + James Bond (Maygay) (M1A/B) (set 12) + + + m1jbondl + James Bond (Maygay) (M1A/B) (set 13) + + + m1jbondm + James Bond (Maygay) (M1A/B) (set 14) + + + m1jbondn + James Bond (Maygay) (M1A/B) (set 15) + + + m1jbondo + James Bond (Maygay) (M1A/B) (set 16) + + + m1jbondp + James Bond (Maygay) (M1A/B) (set 17) + + + m1jbondq + James Bond (Maygay) (M1A/B) (set 18) + + + m1jdwins + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 1) + + + m1jdwinsa + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 2) + + + m1jdwinsb + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 3) + + + m1jdwinsc + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 4) + + + m1jdwinsd + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 5) + + + m1jdwinse + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 6) + + + m1jdwinsf + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 7) + + + m1jdwinsg + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 8) + + + m1jdwinsh + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 9) + + + m1jdwinsi + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 10) + + + m1jdwinsj + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 11) + + + m1jdwinsk + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 12) + + + m1jdwinsl + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 13) + + + m1jdwinsm + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 14) + + + m1jdwinsn + Jim Davison's Winning Streak (Maygay) (M1A/B) (set 15) + + + m1jpmult + Jackpot Multiplier (Maygay) (M1A/B) (set 1) + + + m1jpmulta + Jackpot Multiplier (Maygay) (M1A/B) (set 2) + + + m1jtjob + Just The Job (Global) (M1A/B) (set 1) + + + m1jtjoba + Just The Job (Global) (M1A/B) (set 2) + + + m1jtjobb + Just The Job (Global) (M1A/B) (set 3) + + + m1jtjobc + Just The Job (Global) (M1A/B) (set 4) + + + m1jtjobd + Just The Job (Global) (M1A/B) (set 5) + + + m1jtjobe + Just The Job (Global) (M1A/B) (set 6) + + + m1kingsw + King Of The Swingers (Global) (M1A/B) (set 1) + + + m1kingswa + King Of The Swingers (Global) (M1A/B) (set 2) + + + m1kingswb + King Of The Swingers (Global) (M1A/B) (set 3) + + + m1kingswc + King Of The Swingers (Global) (M1A/B) (set 4) + + + m1lca + Lights Camera Action (Global) (M1A/B) (set 1) + + + m1lcaa + Lights Camera Action (Global) (M1A/B) (set 2) + + + m1lcab + Lights Camera Action (Global) (M1A/B) (set 3) + + + m1lcac + Lights Camera Action (Global) (M1A/B) (set 4) + + + m1liveam + Living In America (Maygay) (M1A/B) (set 1) + + + m1liveama + Living In America (Maygay) (M1A/B) (set 2) + + + m1liveamb + Living In America (Maygay) (M1A/B) (set 3) + + + m1lotmil + Lottery Millionaire Club (Maygay) (M1A/B) (set 1) + + + m1lotmila + Lottery Millionaire Club (Maygay) (M1A/B) (set 2) + + + m1lotmilb + Lottery Millionaire Club (Maygay) (M1A/B) (set 3) + + + m1lotmilc + Lottery Millionaire Club (Maygay) (M1A/B) (set 4) + + + m1luckno + Lucky Numbers (Maygay) (M1A/B) (set 1) + + + m1lucknoa + Lucky Numbers (Maygay) (M1A/B) (set 2) + + + m1lucknob + Lucky Numbers (Maygay) (M1A/B) (set 3) + + + m1lucknoc + Lucky Numbers (Maygay) (M1A/B) (set 4) + + + m1lucknod + Lucky Numbers (Maygay) (M1A/B) (set 5) + + + m1lucknoe + Lucky Numbers (Maygay) (M1A/B) (set 6) + + + m1lucknof + Lucky Numbers (Maygay) (M1A/B) (set 7) + + + m1lucknog + Lucky Numbers (Maygay) (M1A/B) (set 8) + + + m1lucknoh + Lucky Numbers (Maygay) (M1A/B) (set 9) + + + m1lucknoi + Lucky Numbers (Maygay) (M1A/B) (set 10) + + + m1lucknoj + Lucky Numbers (Maygay) (M1A/B) (set 11) + + + m1lucknok + Lucky Numbers (Maygay) (M1A/B) (set 12) + + + m1lucknol + Lucky Numbers (Maygay) (M1A/B) (set 13) + + + m1lucknom + Lucky Numbers (Maygay) (M1A/B) (set 14) + + + m1lucknon + Lucky Numbers (Maygay) (M1A/B) (set 15) + + + m1lucknoo + Lucky Numbers (Maygay) (M1A/B) (set 16) + + + m1lucknop + Lucky Numbers (Maygay) (M1A/B) (set 17) + + + m1lucknoq + Lucky Numbers (Maygay) (M1A/B) (set 18) + + + m1lucknor + Lucky Numbers (Maygay) (M1A/B) (set 19) + + + m1lucknos + Lucky Numbers (Maygay) (M1A/B) (set 20) + + + m1luxor + Luxor Casino (Gemini) (M1A/B) (set 1) + + + m1luxora + Luxor Casino (Gemini) (M1A/B) (set 2) + + + m1luxorb + Luxor Casino (Gemini) (M1A/B) (set 3) + + + m1luxorc + Luxor Casino (Gemini) (M1A/B) (set 4) + + + m1magic + Magic Squares (Maygay) (M1A/B) (set 1) + + + m1magica + Magic Squares (Maygay) (M1A/B) (set 2) + + + m1magicb + Magic Squares (Maygay) (M1A/B) (set 3) + + + m1magicc + Magic Squares (Maygay) (M1A/B) (set 4) + + + m1manhat + Manhattan Skylines (Maygay) (M1A/B) + + + m1mb + Monkey Business (Global) (M1A/B) (set 1) + + + m1mba + Monkey Business (Global) (M1A/B) (set 2) + + + m1mbb + Monkey Business (Global) (M1A/B) (set 3) + + + m1mbc + Monkey Business (Global) (M1A/B) (set 4) + + + m1mbclb + Monkey Business Club (Global) (M1A/B) + + + m1monclb + Monopoly Club (Maygay) (M1A/B) (set 1) + + + m1monclba + Monopoly Club (Maygay) (M1A/B) (set 2) + + + m1monclbb + Monopoly Club (Maygay) (M1A/B) (set 3) + + + m1monclbc + Monopoly Club (Maygay) (M1A/B) (set 4) + + + m1monclbd + Monopoly Club (Maygay) (M1A/B) (set 5) + + + m1monclbe + Monopoly Club (Maygay) (M1A/B) (set 6) + + + m1monclbf + Monopoly Club (Maygay) (M1A/B) (set 7) + + + m1monclbg + Monopoly Club (Maygay) (M1A/B) (set 8) + + + m1monclbh + Monopoly Club (Maygay) (M1A/B) (set 9) + + + m1monclbi + Monopoly Club (Maygay) (M1A/B) (set 10) + + + m1monclbj + Monopoly Club (Maygay) (M1A/B) (set 11) + + + m1monclbk + Monopoly Club (Maygay) (M1A/B) (set 12) + + + m1monclbl + Monopoly Club (Maygay) (M1A/B) (set 13) + + + m1monclbm + Monopoly Club (Maygay) (M1A/B) (set 14) + + + m1moncls + Monopoly Classic (Maygay) (M1A/B) (set 1) + + + m1monclsa + Monopoly Classic (Maygay) (M1A/B) (set 2) + + + m1monclsb + Monopoly Classic (Maygay) (M1A/B) (set 3) + + + m1monclsc + Monopoly Classic (Maygay) (M1A/B) (set 4) + + + m1monclsd + Monopoly Classic (Maygay) (M1A/B) (set 5) + + + m1mongam + Money Game Club (Maygay) (M1A/B) (set 1) + + + m1mongama + Money Game Club (Maygay) (M1A/B) (set 2) + + + m1mongamb + Money Game Club (Maygay) (M1A/B) (set 3) + + + m1monmon + Money Money Money (Maygay) (M1A/B) (set 1) + + + m1monmona + Money Money Money (Maygay) (M1A/B) (set 2) + + + m1monmonb + Money Money Money (Maygay) (M1A/B) (set 3) + + + m1monmonc + Money Money Money (Maygay) (M1A/B) (set 4) + + + m1monmond + Money Money Money (Maygay) (M1A/B) (set 5) + + + m1monmone + Money Money Money (Maygay) (M1A/B) (set 6) + + + m1monmonf + Money Money Money (Maygay) (M1A/B) (set 7) + + + m1monmong + Money Money Money (Maygay) (M1A/B) (set 8) + + + m1monmonh + Money Money Money (Maygay) (M1A/B) (set 9) + + + m1monmoni + Money Money Money (Maygay) (M1A/B) (set 10) + + + m1monmonj + Money Money Money (Maygay) (M1A/B) (set 11) + + + m1monmonk + Money Money Money (Maygay) (M1A/B) (set 12) + + + m1monmonl + Money Money Money (Maygay) (M1A/B) (set 13) + + + m1monmonm + Money Money Money (Maygay) (M1A/B) (set 14) + + + m1monmonn + Money Money Money (Maygay) (M1A/B) (set 15) + + + m1monmono + Money Money Money (Maygay) (M1A/B) (set 16) + + + m1monmonp + Money Money Money (Maygay) (M1A/B) (set 17) + + + m1monmonq + Money Money Money (Maygay) (M1A/B) (set 18) + + + m1monmonr + Money Money Money (Maygay) (M1A/B) (set 19) + + + m1monmons + Money Money Money (Maygay) (M1A/B) (set 20) + + + m1monmont + Money Money Money (Maygay) (M1A/B) (set 21) + + + m1monmonu + Money Money Money (Maygay) (M1A/B) (set 22) + + + m1monmonv + Money Money Money (Maygay) (M1A/B) (set 23) + + + m1monmonw + Money Money Money (Maygay) (M1A/B) (set 24) + + + m1mono + Monopoly (Maygay) (M1A/B) (set 1) + + + m1mono0 + Monopoly (Maygay) (M1A/B) (set 28) + + + m1mono1 + Monopoly (Maygay) (M1A/B) (set 29) + + + m1mono2 + Monopoly (Maygay) (M1A/B) (set 30) + + + m1mono3 + Monopoly (Maygay) (M1A/B) (set 31) + + + m1mono4 + Monopoly (Maygay) (M1A/B) (set 32) + + + m1mono5 + Monopoly (Maygay) (M1A/B) (set 33) + + + m1mono6 + Monopoly (Maygay) (M1A/B) (set 34) + + + m1mono7 + Monopoly (Maygay) (M1A/B) (set 35) + + + m1mono8 + Monopoly (Maygay) (M1A/B) (set 36) + + + m1mono9 + Monopoly (Maygay) (M1A/B) (set 37) + + + m1monoa + Monopoly (Maygay) (M1A/B) (set 2) + + + m1monoaa + Monopoly (Maygay) (M1A/B) (set 38) + + + m1monoc + Monopoly (Maygay) (M1A/B) (set 4) + + + m1monod + Monopoly (Maygay) (M1A/B) (set 5) + + + m1monodt + Monopoly (Dutch) (Maygay) (M1A/B) + + + m1monoe + Monopoly (Maygay) (M1A/B) (set 6) + + + m1monof + Monopoly (Maygay) (M1A/B) (set 7) + + + m1monog + Monopoly (Maygay) (M1A/B) (set 8) + + + m1monoh + Monopoly (Maygay) (M1A/B) (set 9) + + + m1monoi + Monopoly (Maygay) (M1A/B) (set 10) + + + m1monok + Monopoly (Maygay) (M1A/B) (set 12) + + + m1monol + Monopoly (Maygay) (M1A/B) (set 13) + + + m1monom + Monopoly (Maygay) (M1A/B) (set 14) + + + m1monon + Monopoly (Maygay) (M1A/B) (set 15) + + + m1monoo + Monopoly (Maygay) (M1A/B) (set 16) + + + m1monop + Monopoly (Maygay) (M1A/B) (set 17) + + + m1monoq + Monopoly (Maygay) (M1A/B) (set 18) + + + m1monor + Monopoly (Maygay) (M1A/B) (set 19) + + + m1monos + Monopoly (Maygay) (M1A/B) (set 20) + + + m1monot + Monopoly (Maygay) (M1A/B) (set 21) + + + m1monou + Monopoly (Maygay) (M1A/B) (set 22) + + + m1monov + Monopoly (Maygay) (M1A/B) (set 23) + + + m1monow + Monopoly (Maygay) (M1A/B) (set 24) + + + m1monox + Monopoly (Maygay) (M1A/B) (set 25) + + + m1monoy + Monopoly (Maygay) (M1A/B) (set 26) + + + m1monoz + Monopoly (Maygay) (M1A/B) (set 27) + + + m1monstr + Monster Cash (Maygay) (M1A/B) (set 1) + + + m1monstra + Monster Cash (Maygay) (M1A/B) (set 2) + + + m1monstrb + Monster Cash (Maygay) (M1A/B) (set 3) + + + m1monstrc + Monster Cash (Maygay) (M1A/B) (set 4) + + + m1nhp + Noel's House Party (Maygay) (M1A/B) (set 1) + + + m1nhpa + Noel's House Party (Maygay) (M1A/B) (set 2) + + + m1nhpb + Noel's House Party (Maygay) (M1A/B) (set 3) + + + m1nhpc + Noel's House Party (Maygay) (M1A/B) (set 4) + + + m1nhpd + Noel's House Party (Maygay) (M1A/B) (set 5) + + + m1nhpe + Noel's House Party (Maygay) (M1A/B) (set 6) + + + m1nhpf + Noel's House Party (Maygay) (M1A/B) (set 7) + + + m1nhpg + Noel's House Party (Maygay) (M1A/B) (set 8) + + + m1nhph + Noel's House Party (Maygay) (M1A/B) (set 9) + + + m1nhpi + Noel's House Party (Maygay) (M1A/B) (set 10) + + + m1nhpj + Noel's House Party (Maygay) (M1A/B) (set 11) + + + m1nhpk + Noel's House Party (Maygay) (M1A/B) (set 12) + + + m1nhpl + Noel's House Party (Maygay) (M1A/B) (set 13) + + + m1nhpm + Noel's House Party (Maygay) (M1A/B) (set 14) + + + m1nudbnk + Nudge Banker (Maygay) (M1A/B) (set 1) + + + m1nudbnka + Nudge Banker (Maygay) (M1A/B) (set 2) + + + m1nudbnkb + Nudge Banker (Maygay) (M1A/B) (set 3) + + + m1nudbnkc + Nudge Banker (Maygay) (M1A/B) (set 4) + + + m1nudbnkd + Nudge Banker (Maygay) (M1A/B) (set 5) + + + m1nudbnke + Nudge Banker (Maygay) (M1A/B) (set 6) + + + m1nudbnkf + Nudge Banker (Maygay) (M1A/B) (set 7) + + + m1nudbnkg + Nudge Banker (Maygay) (M1A/B) (set 8) + + + m1nudbnkh + Nudge Banker (Maygay) (M1A/B) (set 9) + + + m1nudbnki + Nudge Banker (Maygay) (M1A/B) (set 10) + + + m1nudbnkj + Nudge Banker (Maygay) (M1A/B) (set 11) + + + m1nudbnkk + Nudge Banker (Maygay) (M1A/B) (set 12) + + + m1nudbnkl + Nudge Banker (Maygay) (M1A/B) (set 13) + + + m1nudbnkm + Nudge Banker (Maygay) (M1A/B) (set 14) + + + m1nudbnkn + Nudge Banker (Maygay) (M1A/B) (set 15) + + + m1nudbnko + Nudge Banker (Maygay) (M1A/B) (set 16) + + + m1nudbnkp + Nudge Banker (Maygay) (M1A/B) (set 17) + + + m1nudbnkq + Nudge Banker (Maygay) (M1A/B) (set 18) + + + m1nudbnkr + Nudge Banker (Maygay) (M1A/B) (set 19) + + + m1nudbnks + Nudge Banker (Maygay) (M1A/B) (set 20) + + + m1nudbnkt + Nudge Banker (Maygay) (M1A/B) (set 21) + + + m1nudbnku + Nudge Banker (Maygay) (M1A/B) (set 22) + + + m1nudbnkv + Nudge Banker (Maygay) (M1A/B) (set 23) + + + m1nudunl + Nudges Unlimited (Maygay) (M1A/B) (set 1) + + + m1nudunla + Nudges Unlimited (Maygay) (M1A/B) (set 2) + + + m1nudunlb + Nudges Unlimited (Maygay) (M1A/B) (set 3) + + + m1nudunlc + Nudges Unlimited (Maygay) (M1A/B) (set 4) + + + m1nudunld + Nudges Unlimited (Maygay) (M1A/B) (set 5) + + + m1nudunle + Nudges Unlimited (Maygay) (M1A/B) (set 6) + + + m1omega + Omega (Maygay) (M1A/B) (set 1) + + + m1omegaa + Omega (Maygay) (M1A/B) (set 2) + + + m1onbus + On The Buses (Maygay) (M1A/B) (set 1) + + + m1onbusa + On The Buses (Maygay) (M1A/B) (set 2) + + + m1onbusb + On The Buses (Maygay) (M1A/B) (set 3) + + + m1onbusc + On The Buses (Maygay) (M1A/B) (set 4) + + + m1onbusd + On The Buses (Maygay) (M1A/B) (set 5) + + + m1onbuse + On The Buses (Maygay) (M1A/B) (set 6) + + + m1onbusf + On The Buses (Maygay) (M1A/B) (set 7) + + + m1onbusg + On The Buses (Maygay) (M1A/B) (set 8) + + + m1onbush + On The Buses (Maygay) (M1A/B) (set 9) + + + m1onbusi + On The Buses (Maygay) (M1A/B) (set 10) + + + m1onbusj + On The Buses (Maygay) (M1A/B) (set 11) + + + m1onbusk + On The Buses (Maygay) (M1A/B) (set 12) + + + m1onbusl + On The Buses (Maygay) (M1A/B) (set 13) + + + m1onbusm + On The Buses (Maygay) (M1A/B) (set 14) + + + m1onbusn + On The Buses (Maygay) (M1A/B) (set 15) + + + m1onbuso + On The Buses (Maygay) (M1A/B) (set 16) + + + m1onbusp + On The Buses (Maygay) (M1A/B) (set 17) + + + m1ott + Over The Top (Maygay) (M1A/B) (set 1) + + + m1otta + Over The Top (Maygay) (M1A/B) (set 2) + + + m1piggy + Piggy Bank (Maygay) (M1A/B) (set 1) + + + m1piggya + Piggy Bank (Maygay) (M1A/B) (set 2) + + + m1piggyb + Piggy Bank (Maygay) (M1A/B) (set 3) + + + m1piggyc + Piggy Bank (Maygay) (M1A/B) (set 4) + + + m1pinkp + Pink Panther (Maygay) (M1A/B) (set 1) + + + m1pinkpa + Pink Panther (Maygay) (M1A/B) (set 2) + + + m1pinkpb + Pink Panther (Maygay) (M1A/B) (set 3) + + + m1pinkpc + Pink Panther (Maygay) (M1A/B) (set 4) + + + m1pinkpd + Pink Panther (Maygay) (M1A/B) (set 5) + + + m1pinkpe + Pink Panther (Maygay) (M1A/B) (set 6) + + + m1pinkpf + Pink Panther (Maygay) (M1A/B) (set 7) + + + m1pinkpg + Pink Panther (Maygay) (M1A/B) (set 8) + + + m1pinkph + Pink Panther (Maygay) (M1A/B) (set 9) + + + m1pinkpi + Pink Panther (Maygay) (M1A/B) (set 10) + + + m1pinkpj + Pink Panther (Maygay) (M1A/B) (set 11) + + + m1pinkpk + Pink Panther (Maygay) (M1A/B) (set 12) + + + m1pinkpl + Pink Panther (Maygay) (M1A/B) (set 13) + + + m1pinkpm + Pink Panther (Maygay) (M1A/B) (set 14) + + + m1pinkpn + Pink Panther (Maygay) (M1A/B) (set 15) + + + m1pinkpo + Pink Panther (Maygay) (M1A/B) (set 16) + + + m1pinkpp + Pink Panther (Maygay) (M1A/B) (set 17) + + + m1pinkpq + Pink Panther (Maygay) (M1A/B) (set 18) + + + m1pinkpr + Pink Panther (Maygay) (M1A/B) (set 19) + + + m1ppc + Pink Panther Club (Maygay) (M1A/B) (set 1) + + + m1ppca + Pink Panther Club (Maygay) (M1A/B) (set 2) + + + m1ppcb + Pink Panther Club (Maygay) (M1A/B) (set 3) + + + m1ppdt + Pink Panther (German) (Maygay) (M1A/B) + + + m1przclu + Prize Cluedo (Maygay) (M1A/B) (set 1) + + + m1przclua + Prize Cluedo (Maygay) (M1A/B) (set 2) + + + m1przclub + Prize Cluedo (Maygay) (M1A/B) (set 3) + + + m1przee + Prize Eastenders (Maygay) (M1A/B) (set 1) + + + m1przeea + Prize Eastenders (Maygay) (M1A/B) (set 2) + + + m1przeeb + Prize Eastenders (Maygay) (M1A/B) (set 3) + + + m1przeec + Prize Eastenders (Maygay) (M1A/B) (set 4) + + + m1races + A Day At The Races (Maygay) (M1A/B) (set 1) + + + m1racesa + A Day At The Races (Maygay) (M1A/B) (set 2) + + + m1racesb + A Day At The Races (Maygay) (M1A/B) (set 3) + + + m1racesc + A Day At The Races (Maygay) (M1A/B) (set 4) + + + m1reeldm + Reel Diamonds (Maygay) (M1A/B) (set 1) + + + m1reeldma + Reel Diamonds (Maygay) (M1A/B) (set 2) + + + m1reeldmb + Reel Diamonds (Maygay) (M1A/B) (set 3) + + + m1reeldmc + Reel Diamonds (Maygay) (M1A/B) (set 4) + + + m1reeldmd + Reel Diamonds (Maygay) (M1A/B) (set 5) + + + m1reeldme + Reel Diamonds (Maygay) (M1A/B) (set 6) + + + m1reeldmf + Reel Diamonds (Maygay) (M1A/B) (set 7) + + + m1reeldmg + Reel Diamonds (Maygay) (M1A/B) (set 8) + + + m1reeldmh + Reel Diamonds (Maygay) (M1A/B) (set 9) + + + m1reeldmi + Reel Diamonds (Maygay) (M1A/B) (set 10) + + + m1reeldmj + Reel Diamonds (Maygay) (M1A/B) (set 11) + + + m1reeldmk + Reel Diamonds (Maygay) (M1A/B) (set 12) + + + m1reeldml + Reel Diamonds (Maygay) (M1A/B) (set 13) + + + m1reeldmm + Reel Diamonds (Maygay) (M1A/B) (set 14) + + + m1reeldmn + Reel Diamonds (Maygay) (M1A/B) (set 15) + + + m1reeldmo + Reel Diamonds (Maygay) (M1A/B) (set 16) + + + m1retpp + Return Of The Pink Panther (Maygay) (M1A/B) (set 1) + + + m1retppa + Return Of The Pink Panther (Maygay) (M1A/B) (set 2) + + + m1retppb + Return Of The Pink Panther (Maygay) (M1A/B) (set 3) + + + m1retppc + Return Of The Pink Panther (Maygay) (M1A/B) (set 4) + + + m1retppd + Return Of The Pink Panther (Maygay) (M1A/B) (set 5) + + + m1search + Search Light (Maygay) (M1A/B) (set 1) + + + m1searcha + Search Light (Maygay) (M1A/B) (set 2) + + + m1searchb + Search Light (Maygay) (M1A/B) (set 3) + + + m1simps + The Simpsons (Maygay) (M1A/B) (set 1) + + + m1simpsa + The Simpsons (Maygay) (M1A/B) (set 2) + + + m1simpsb + The Simpsons (Maygay) (M1A/B) (set 3) + + + m1simpsc + The Simpsons (Maygay) (M1A/B) (set 4) + + + m1simpsd + The Simpsons (Maygay) (M1A/B) (set 5) + + + m1simpse + The Simpsons (Maygay) (M1A/B) (set 6) + + + m1simpsf + The Simpsons (Maygay) (M1A/B) (set 7) + + + m1simpsg + The Simpsons (Maygay) (M1A/B) (set 8) + + + m1simpsh + The Simpsons (Maygay) (M1A/B) (set 9) + + + m1sirich + Strike It Rich (Maygay) (M1A/B) (set 1) + + + m1siricha + Strike It Rich (Maygay) (M1A/B) (set 2) + + + m1sirichb + Strike It Rich (Maygay) (M1A/B) (set 3) + + + m1sirichc + Strike It Rich (Maygay) (M1A/B) (set 4) + + + m1sixspn + Six Spinner (Maygay) (M1A/B) + + + m1spid + Spiderman (Maygay) (M1A/B) (set 1) + + + m1spida + Spiderman (Maygay) (M1A/B) (set 2) + + + m1spidb + Spiderman (Maygay) (M1A/B) (set 3) + + + m1sprint + SPRINT (Maygay) (M1A/B) + + + m1sprnov + Super Nova (Dutch) (Maygay) (M1A/B) + + + m1sptlgt + Spotlight (Maygay) (M1A/B) (set 1) + + + m1sptlgta + Spotlight (Maygay) (M1A/B) (set 2) + + + m1sptlgtb + Spotlight (Maygay) (M1A/B) (set 3) + + + m1sptlgtc + Spotlight (Maygay) (M1A/B) (set 4) + + + m1sptlgtd + Spotlight (Maygay) (M1A/B) (set 5) + + + m1sptlgte + Spotlight (Maygay) (M1A/B) (set 6) + + + m1startr + Star Trekking (Mdm) (M1A/B) (set 1) + + + m1startra + Star Trekking (Mdm) (M1A/B) (set 2) + + + m1startrb + Star Trekking (Mdm) (M1A/B) (set 3) + + + m1startrc + Star Trekking (Mdm) (M1A/B) (set 4) + + + m1startrd + Star Trekking (Mdm) (M1A/B) (set 5) + + + m1startre + Star Trekking (Mdm) (M1A/B) (set 6) + + + m1startrf + Star Trekking (Mdm) (M1A/B) (set 7) + + + m1startrg + Star Trekking (Mdm) (M1A/B) (set 8) + + + m1startrh + Star Trekking (Mdm) (M1A/B) (set 9) + + + m1startri + Star Trekking (Mdm) (M1A/B) (set 10) + + + m1startrj + Star Trekking (Mdm) (M1A/B) (set 11) + + + m1startrk + Star Trekking (Mdm) (M1A/B) (set 12) + + + m1startrm + Star Trekking (Mdm) (M1A/B) (set 14) + + + m1startrn + Star Trekking (Mdm) (M1A/B) (set 15) + + + m1startro + Star Trekking (Mdm) (M1A/B) (set 16) + + + m1startrp + Star Trekking (Mdm) (M1A/B) (set 17) + + + m1startrq + Star Trekking (Mdm) (M1A/B) (set 18) + + + m1startrr + Star Trekking (Mdm) (M1A/B) (set 19) + + + m1sudnim + Sudden Impact (Maygay) (M1A/B) (set 1) + + + m1sudnima + Sudden Impact (Maygay) (M1A/B) (set 2) + + + m1sudnimb + Sudden Impact (Maygay) (M1A/B) (set 3) + + + m1sudnimc + Sudden Impact (Maygay) (M1A/B) (set 4) + + + m1suppot + Super Pots (Maygay) (M1A/B) (set 1) + + + m1suppot0 + Super Pots (Maygay) (M1A/B) (set 28) + + + m1suppota + Super Pots (Maygay) (M1A/B) (set 2) + + + m1suppotb + Super Pots (Maygay) (M1A/B) (set 3) + + + m1suppotc + Super Pots (Maygay) (M1A/B) (set 4) + + + m1suppotd + Super Pots (Maygay) (M1A/B) (set 5) + + + m1suppote + Super Pots (Maygay) (M1A/B) (set 6) + + + m1suppotf + Super Pots (Maygay) (M1A/B) (set 7) + + + m1suppotg + Super Pots (Maygay) (M1A/B) (set 8) + + + m1suppoti + Super Pots (Maygay) (M1A/B) (set 10) + + + m1suppotj + Super Pots (Maygay) (M1A/B) (set 11) + + + m1suppotk + Super Pots (Maygay) (M1A/B) (set 12) + + + m1suppotl + Super Pots (Maygay) (M1A/B) (set 13) + + + m1suppotm + Super Pots (Maygay) (M1A/B) (set 14) + + + m1suppotn + Super Pots (Maygay) (M1A/B) (set 15) + + + m1suppoto + Super Pots (Maygay) (M1A/B) (set 16) + + + m1suppotp + Super Pots (Maygay) (M1A/B) (set 17) + + + m1suppotq + Super Pots (Maygay) (M1A/B) (set 18) + + + m1suppotr + Super Pots (Maygay) (M1A/B) (set 19) + + + m1suppots + Super Pots (Maygay) (M1A/B) (set 20) + + + m1suppott + Super Pots (Maygay) (M1A/B) (set 21) + + + m1suppotu + Super Pots (Maygay) (M1A/B) (set 22) + + + m1suppotv + Super Pots (Maygay) (M1A/B) (set 23) + + + m1suppotw + Super Pots (Maygay) (M1A/B) (set 24) + + + m1suppotx + Super Pots (Maygay) (M1A/B) (set 25) + + + m1suppoty + Super Pots (Maygay) (M1A/B) (set 26) + + + m1suppotz + Super Pots (Maygay) (M1A/B) (set 27) + + + m1sycc + Stake Yer Claim Club (Global) (M1A/B) (set 1) + + + m1sycca + Stake Yer Claim Club (Global) (M1A/B) (set 2) + + + m1syccb + Stake Yer Claim Club (Global) (M1A/B) (set 3) + + + m1taknot + Take Note (Maygay) (M1A/B) + + + m1thatlf + That's Life (Maygay) (M1A/B) (set 1) + + + m1thatlfa + That's Life (Maygay) (M1A/B) (set 2) + + + m1thatlfb + That's Life (Maygay) (M1A/B) (set 3) + + + m1thatlfc + That's Life (Maygay) (M1A/B) (set 4) + + + m1thatlfd + That's Life (Maygay) (M1A/B) (set 5) + + + m1thrill + Thrills 'n' Spills (Global) (M1A/B) (set 1) + + + m1thrilla + Thrills 'n' Spills (Global) (M1A/B) (set 2) + + + m1thrillb + Thrills 'n' Spills (Global) (M1A/B) (set 3) + + + m1thrillc + Thrills 'n' Spills (Global) (M1A/B) (set 4) + + + m1topstr + Top Strike (Maygay - Bwb) (M1A/B) + + + m1topten + Top Tenner (Maygay) (M1A/B) (set 1) + + + m1toptena + Top Tenner (Maygay) (M1A/B) (set 2) + + + m1tpclb + Trivial Pursuit Club (Maygay) (M1A/B) (set 1) + + + m1tpclba + Trivial Pursuit Club (Maygay) (M1A/B) (set 2) + + + m1tpclbb + Trivial Pursuit Club (Maygay) (M1A/B) (set 3) + + + m1tpclbc + Trivial Pursuit Club (Maygay) (M1A/B) (set 4) + + + m1trivia + Trivial Pursuit (Maygay) (M1A/B) (set 1) + + + m1triviaa + Trivial Pursuit (Maygay) (M1A/B) (set 2) + + + m1triviab + Trivial Pursuit (Maygay) (M1A/B) (set 3) + + + m1triviac + Trivial Pursuit (Maygay) (M1A/B) (set 4) + + + m1triviad + Trivial Pursuit (Maygay) (M1A/B) (set 5) + + + m1triviae + Trivial Pursuit (Maygay) (M1A/B) (set 6) + + + m1triviaf + Trivial Pursuit (Maygay) (M1A/B) (set 7) + + + m1triviag + Trivial Pursuit (Maygay) (M1A/B) (set 8) + + + m1triviah + Trivial Pursuit (Maygay) (M1A/B) (set 9) + + + m1triviai + Trivial Pursuit (Maygay) (M1A/B) (set 10) + + + m1triviaj + Trivial Pursuit (Maygay) (M1A/B) (set 11) + + + m1triviak + Trivial Pursuit (Maygay) (M1A/B) (set 12) + + + m1trivial + Trivial Pursuit (Maygay) (M1A/B) (set 13) + + + m1trivian + Trivial Pursuit (Maygay) (M1A/B) (set 15) + + + m1triviap + Trivial Pursuit (Maygay) (M1A/B) (set 17) + + + m1triviaq + Trivial Pursuit (Maygay) (M1A/B) (set 18) + + + m1triviar + Trivial Pursuit (Maygay) (M1A/B) (set 19) + + + m1trivias + Trivial Pursuit (Maygay) (M1A/B) (set 20) + + + m1triviat + Trivial Pursuit (Maygay) (M1A/B) (set 21) + + + m1triviau + Trivial Pursuit (Maygay) (M1A/B) (set 22) + + + m1triviav + Trivial Pursuit (Maygay) (M1A/B) (set 23) + + + m1triviaw + Trivial Pursuit (Maygay) (M1A/B) (set 24) + + + m1triviax + Trivial Pursuit (Maygay) (M1A/B) (set 25) + + + m1triviay + Trivial Pursuit (Maygay) (M1A/B) (set 26) + + + m1triviaz + Trivial Pursuit (Maygay) (M1A/B) (set 27) + + + m1trtr + Trick Or Treat (Global) (M1A/B) (set 1) + + + m1trtra + Trick Or Treat (Global) (M1A/B) (set 2) + + + m1trtrcl + Trick Or Treat Club (Global) (M1A/B) + + + m1tstunt + Test Unit (Maygay) (M1A/B) + + + m1ttcash + Tick Tock Cash (Empire) (M1A/B) + + + m1ultchl + Ultimate Challenge (Maygay) (M1A/B) (set 1) + + + m1ultchla + Ultimate Challenge (Maygay) (M1A/B) (set 2) + + + m1ultchlb + Ultimate Challenge (Maygay) (M1A/B) (set 3) + + + m1ultchlc + Ultimate Challenge (Maygay) (M1A/B) (set 4) + + + m1undsie + Under Siege (Maygay) (M1A/B) (set 1) + + + m1undsiea + Under Siege (Maygay) (M1A/B) (set 2) + + + m1undsieb + Under Siege (Maygay) (M1A/B) (set 3) + + + m1undsiec + Under Siege (Maygay) (M1A/B) (set 4) + + + m1vegas + Vegas Gambler Club (Maygay) (M1A/B) (set 1) + + + m1vegasa + Vegas Gambler Club (Maygay) (M1A/B) (set 2) + + + m1vegasb + Vegas Gambler Club (Maygay) (M1A/B) (set 3) + + + m1vegcrw + Vegetable Crew (Global) (M1A/B) + + + m1wagon + Wagon Trail (Maygay) (M1A/B) (set 1) + + + m1wagona + Wagon Trail (Maygay) (M1A/B) (set 2) + + + m1wagonb + Wagon Trail (Maygay) (M1A/B) (set 3) + + + m1wagonc + Wagon Trail (Maygay) (M1A/B) (set 4) + + + m1winenc + John Francombe's Winners Enclosure (Maygay) (M1A/B) (set 1) + + + m1winenca + John Francombe's Winners Enclosure (Maygay) (M1A/B) (set 2) + + + m1winencb + John Francombe's Winners Enclosure (Maygay) (M1A/B) (set 3) + + + m1winencc + John Francombe's Winners Enclosure (Maygay) (M1A/B) (set 4) + + + m1wldzne + Wild Zone (Maygay) (M1A/B) (set 1) + + + m1wldznea + Wild Zone (Maygay) (M1A/B) (set 2) + + + m1wldzneb + Wild Zone (Maygay) (M1A/B) (set 3) + + + m1wldznec + Wild Zone (Maygay) (M1A/B) (set 4) + + + m1wldzned + Wild Zone (Maygay) (M1A/B) (set 5) + + + m1wldznee + Wild Zone (Maygay) (M1A/B) (set 6) + + + m1wldznef + Wild Zone (Maygay) (M1A/B) (set 7) + + + m1wldzneg + Wild Zone (Maygay) (M1A/B) (set 8) + + + m1wldzneh + Wild Zone (Maygay) (M1A/B) (set 9) + + + m1wldznei + Wild Zone (Maygay) (M1A/B) (set 10) + + + m1wldznej + Wild Zone (Maygay) (M1A/B) (set 11) + + + m1wldznek + Wild Zone (Maygay) (M1A/B) (set 12) + + + m1wldznel + Wild Zone (Maygay) (M1A/B) (set 13) + + + m1wldznem + Wild Zone (Maygay) (M1A/B) (set 14) + + + m1wldznen + Wild Zone (Maygay) (M1A/B) (set 15) + + + m1wldzneo + Wild Zone (Maygay) (M1A/B) (set 16) + + + m1wldznep + Wild Zone (Maygay) (M1A/B) (set 17) + + + m1wldzneq + Wild Zone (Maygay) (M1A/B) (set 18) + + + m1wldzner + Wild Zone (Maygay) (M1A/B) (set 19) + + + m1wldznes + Wild Zone (Maygay) (M1A/B) (set 20) + + + m1wotw + War Of The Worlds (Maygay) (M1A/B) (set 1) + + + m1wotwa + War Of The Worlds (Maygay) (M1A/B) (set 2) + + + m1wotwb + War Of The Worlds (Maygay) (M1A/B) (set 3) + + + m2comet + Comet Catcher (Leisure Games) (MPU2) (5p Stake, £1 Jackpot) + + + m2frpoly + Fruitopoly (VFS) (MPU2) (Hi Lights conversion, 10p Stake, £3 Jackpot) + + + m2hilite + Hi Lights (Barcrest) (MPU2) (10p Stake, £2 Jackpot) + + + m2jmt9 + JMT9 Test Program (Barcrest) (MPU1/2) + + + m2luckyl + Lucky Line (Leisure Games) (MPU2) (5p Stake, £2 Jackpot) + + + m2luckys + Lucky Strike (Associated Leisure) (MPU2) (5p Stake, £2 Jackpot) + + + m2rockon + Rock On (Barcrest) (MPU2) (10p Stake, £2 Jackpot) + + + m2splite + Spot Light (Barcrest) (MPU2) (revision 4, 10p Stake, £2 Jackpot) + + + m2splitea + Spot Light (Barcrest) (MPU2) (revision 7, 10p Stake, £2 Jackpot) + + + m2spliteb + Spot Light (Barcrest) (MPU2) (revision 9, 10p Stake, £2 Jackpot) + + + m2sstar + Super Star (Dutch) (Barcrest) (MPU2) + + + m2starl + Star Light (Dutch) (Barcrest) (MPU2) (revision 07) + + + m2svlite + Silver Lights (MPU2) (5p Stake, £1 Jackpot) + + + m2triple + Triple Chance (VFS) (MPU2) (Spot Light conversion, 2p Stake, £1.50 Jackpot) + + + m3001 + M3001 + + + m3004 + M3004 + + + m3acech + Ace Chase (BWB) (MPU3) + + + m3autort + Autoroute (Barcrest) (MPU3) + + + m3bankr + Banker (BWB) (MPU3) + + + m3big20j + Big 20 Joker (Barcrest) (MPU3) + + + m3biggam + The Big Game (Barcrest) (MPU3) + + + m3bigsht + Big Shot (Barcrest) (MPU3) + + + m3blkhle + Black Hole (Barcrest) (MPU3) + + + m3cabret + Cabaret (Barcrest) (MPU3, set 1) + + + m3cabreta + Cabaret (Barcrest) (MPU3, set 2) + + + m3cdash + Cash Dash (Pcp) (MPU3) + + + m3chase + Chase It (BWB) (MPU3) + + + m3circle + Special Circle Club (Barcrest) (MPU3, set 1) + + + m3circlea + Special Circle Club (Barcrest) (MPU3, set 2, bad) + + + m3circleb + Special Circle Club (Barcrest) (MPU3, set 3) + + + m3cjoker + Crazy Joker (Barcrest) (MPU3) + + + m3cskill + Circle Skill (Barcrest) (MPU3) + + + m3cunlim + Chances Unlimited (Barcrest) (MPU3) + + + m3fortun + Fortune Numbers (Barcrest) (MPU3, set 1) + + + m3fortuna + Fortune Numbers (Barcrest) (MPU3, set 2) + + + m3fortund + Fortune Numbers (Barcrest) (Dutch) (MPU3) + + + m3gaward + Golden Award (Barcrest) (MPU3) + + + m3gcrown + Golden Crowns (Mdm) (MPU3) + + + m3gmine + Gold Mine (BWB) (MPU3) + + + m3hprvpr + Hyper Viper (Barcrest) (MPU3) + + + m3lineup + Line Up (Barcrest) (MPU3) + + + m3llotto + Lucky Lotto (Barcrest) (MPU3) + + + m3loony + Loonybin (Pcp) (MPU3) + + + m3lstrik + Lucky Strike Club (Barcrest) (MPU3, set 1) + + + m3lstrika + Lucky Strike Club (Barcrest) (MPU3, set 2) + + + m3magrp + Magic Replay (Barcrest) (MPU3) + + + m3minmax + Mini Max (Associated Leisure) (MPU3) + + + m3mremon + More Money (VFS) (MPU3) + + + m3nnice + Naughty But Nice (Barcrest) (MPU3) + + + m3oddson + Odds On (Barcrest) (MPU3) + + + m3online + On Line (Pcp) (MPU3) + + + m3optunl + Options Unlimited (Barcrest) (MPU3) + + + m3oxo + Noughts 'n' Crosses (VFS) (MPU3) + + + m3ratrce + Rat Race (BWB) (MPU3) + + + m3razdaz + Razzle Dazzle (Barcrest) (MPU3, set 1) + + + m3razdaza + Razzle Dazzle (Barcrest) (MPU3, set 2) + + + m3razdazd + Razzle Dazzle (Barcrest) (Dutch) (MPU3) + + + m3replay + Instant Replay (Barcrest) (MPU3) + + + m3rockpl + Rock Pile (Pcp) (MPU3) + + + m3rolla + Rollamatic 5-Line Special (MPU3) + + + m3rollem + Roll 'Em (Pcp) (MPU3) + + + m3rxchng + Royal Exchange Club (Barcrest) (MPU3) + + + m3scoop + Scoop (Peter Simper, prototype?) (MPU3) + + + m3sdeal + Super Deal (Barcrest) (Dutch) (MPU3) + + + m3sexcu + Super Exchanges Unlimited (Barcrest) (MPU3) + + + m3slight + Strike A Light (Barcrest) (MPU3) + + + m3snaphp + Snap Happy (Pcp) (MPU3) + + + m3snappy + Snappy Viper (Barcrest) (MPU3) + + + m3spoof + Spoof (Pcp) (MPU3, set 1) + + + m3spoofa + Spoof (Pcp) (MPU3, set 2) + + + m3supadr + Super Adders & Ladders (Barcrest) (MPU3) + + + m3supasw + Supaswop (BWB) (MPU3) + + + m3suplin + Super Line Up (Barcrest) (MPU3, set 1) + + + m3suplina + Super Line Up (Barcrest) (MPU3, set 2) + + + m3supnud + Super Nudges Unlimited (Barcrest) (MPU3) + + + m3supser + Super Series (Barcrest) (MPU3) + + + m3supspo + Super Spoof (Pcp) (MPU3, set 1) + + + m3supspoa + Super Spoof (Pcp) (MPU3, set 2) + + + m3supwin + Super Win (BWB) (MPU3, set 1) (W.AG2) + + + m3supwina + Super Win (BWB) (MPU3, set 2) (S.W.2 1.0) + + + m3sweep + Sweep Stake Club (Barcrest) (MPU3, set 1) + + + m3sweepa + Sweep Stake Club (Barcrest) (MPU3, set 2) + + + m3tfair + Tuppenny Fair (Mdm) (MPU3) + + + m3tlktwn + Talk of the Town (MPU3?) + + + m3toplin + Top Line (Pcp) (MPU3) + + + m3topsht + Top Shot (Barcrest) (MPU3) + + + m3tst + MPU3 Unit Test (Program 5) (Barcrest) (MPU3) + + + m3wacky + Wacky Racer (Mdm) (MPU3) + + + m3wigwam + Wig Wam (Pcp) (MPU3) + + + m3winagn + Win-A-Gain (BWB) (MPU3, set 1) (W.A.G. 2.2) + + + m3winagnb + Win-A-Gain (BWB) (MPU3, set 2) (W.A.G. 5.1) + + + m3winstr + Winstrike (BWB) (MPU3, set 1) + + + m3winstra + Winstrike (BWB) (MPU3, set 2) + + + m3xchngg + Exchanges Galore (Barcrest) (MPU3) + + + m3xchngu + Exchanges Unlimited (Barcrest) (MPU3, set 1) + + + m3xchngua + Exchanges Unlimited (Barcrest) (MPU3, set 2) + + + m4 + M-4 + + + m4001 + M4001 (rev. A) + + + m4002 + M4002 + + + m421 + Twenty One (Barcrest) (Dutch) (MPU4) (DTO 2.0) + + + m421club + 21 Club (Barcrest) (Dutch) (MPU4) (DTW 2.7) + + + m42punlm + 2p Unlimited (Mdm) (MPU4) + + + m4aao + Against All Odds (Eurotek) (MPU4) + + + m4abeaut + American Beauty (Avantime?) (MPU4) (AB, set 1) + + + m4abeaut_1 + American Beauty (Avantime?) (MPU4) (AB, set 2) + + + m4abeaut_2 + American Beauty (Avantime?) (MPU4) (AB, set 3) + + + m4abeaut_3 + American Beauty (Avantime?) (MPU4) (AB, set 4) + + + m4abeaut_4 + American Beauty (Avantime?) (MPU4) (AB, set 5) + + + m4abeaut_5 + American Beauty (Avantime?) (MPU4) (AB, set 6) + + + m4abeaut_6 + American Beauty (Avantime?) (MPU4) (AB, set 7) + + + m4abeaut_7 + American Beauty (Avantime?) (MPU4) (AB, set 8) + + + m4abeaut_8 + American Beauty (Avantime?) (MPU4) (AB, set 9) + + + m4abeaut_9 + American Beauty (Avantime?) (MPU4) (AB, set 10) + + + m4abeaut_c1 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 1) + + + m4abeaut_c10 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 10) + + + m4abeaut_c11 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 11) + + + m4abeaut_c12 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 12) + + + m4abeaut_c13 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 13) + + + m4abeaut_c14 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 14) + + + m4abeaut_c15 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 15) + + + m4abeaut_c16 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 1) + + + m4abeaut_c17 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 2) + + + m4abeaut_c18 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 3) + + + m4abeaut_c19 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 4) + + + m4abeaut_c2 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 2) + + + m4abeaut_c20 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 5) + + + m4abeaut_c21 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 6) + + + m4abeaut_c22 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 7) + + + m4abeaut_c23 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 8) + + + m4abeaut_c24 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 9) + + + m4abeaut_c25 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 10) + + + m4abeaut_c26 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 11) + + + m4abeaut_c27 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 12) + + + m4abeaut_c28 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 13) + + + m4abeaut_c29 + American Beauty (Avantime?) (MPU4) (ABC2, Czech, set 14) + + + m4abeaut_c3 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 3) + + + m4abeaut_c30 + American Beauty (Avantime?) (MPU4) (M2C1, Czech, set 1) + + + m4abeaut_c31 + American Beauty (Avantime?) (MPU4) (M2C1, Czech, set 2) + + + m4abeaut_c4 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 4) + + + m4abeaut_c5 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 5) + + + m4abeaut_c6 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 6) + + + m4abeaut_c7 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 7) + + + m4abeaut_c8 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 8) + + + m4abeaut_c9 + American Beauty (Avantime?) (MPU4) (ABC1, Czech, set 9) + + + m4abeaut_i1 + American Beauty (Avantime?) (MPU4) (A2I0, Israel, set 1) + + + m4abeaut_i2 + American Beauty (Avantime?) (MPU4) (A2I0, Israel, set 2) + + + m4abeaut_k1 + American Beauty (Avantime?) (MPU4) (A2K0, set 1) + + + m4abeaut_k2 + American Beauty (Avantime?) (MPU4) (A2K0, set 2) + + + m4abeaut_l1 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 1) + + + m4abeaut_l10 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 10) + + + m4abeaut_l11 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 11) + + + m4abeaut_l12 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 12) + + + m4abeaut_l13 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 1) + + + m4abeaut_l14 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 2) + + + m4abeaut_l15 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 3) + + + m4abeaut_l16 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 4) + + + m4abeaut_l17 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 5) + + + m4abeaut_l18 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 6) + + + m4abeaut_l19 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 7) + + + m4abeaut_l2 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 2) + + + m4abeaut_l20 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 8) + + + m4abeaut_l21 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 9) + + + m4abeaut_l22 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 10) + + + m4abeaut_l23 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 11) + + + m4abeaut_l24 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 12) + + + m4abeaut_l25 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 13) + + + m4abeaut_l26 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 14) + + + m4abeaut_l27 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 15) + + + m4abeaut_l28 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 16) + + + m4abeaut_l29 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 17) + + + m4abeaut_l3 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 3) + + + m4abeaut_l30 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 18) + + + m4abeaut_l31 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 19) + + + m4abeaut_l32 + American Beauty (Avantime?) (MPU4) (A2L0, Latvia, set 20) + + + m4abeaut_l33 + American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 1) + + + m4abeaut_l34 + American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 2) + + + m4abeaut_l35 + American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 3) + + + m4abeaut_l36 + American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 4) + + + m4abeaut_l37 + American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 5) + + + m4abeaut_l38 + American Beauty (Avantime?) (MPU4) (A3L0, Latvia, set 6) + + + m4abeaut_l4 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 4) + + + m4abeaut_l5 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 5) + + + m4abeaut_l6 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 6) + + + m4abeaut_l7 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 7) + + + m4abeaut_l8 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 8) + + + m4abeaut_l9 + American Beauty (Avantime?) (MPU4) (ABL0, Latvia, set 9) + + + m4abeaut_m1 + American Beauty (Avantime?) (MPU4) (ABM1, Montenegro, set 1) + + + m4abeaut_m2 + American Beauty (Avantime?) (MPU4) (ABM1, Montenegro, set 2) + + + m4abeaut_m3 + American Beauty (Avantime?) (MPU4) (ABM2, Montenegro, set 1) + + + m4abeaut_m4 + American Beauty (Avantime?) (MPU4) (ABM2, Montenegro, set 2) + + + m4abeaut_pb1 + American Beauty (Avantime?) (MPU4) (AJL0, Project Bar, set 1) + + + m4abeaut_pb2 + American Beauty (Avantime?) (MPU4) (AJL0, Project Bar, set 2) + + + m4abeaut_r1 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 1) + + + m4abeaut_r10 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 10) + + + m4abeaut_r11 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 11) + + + m4abeaut_r12 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 12) + + + m4abeaut_r13 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 13) + + + m4abeaut_r14 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 14) + + + m4abeaut_r2 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 2) + + + m4abeaut_r3 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 3) + + + m4abeaut_r4 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 4) + + + m4abeaut_r5 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 5) + + + m4abeaut_r6 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 6) + + + m4abeaut_r7 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 7) + + + m4abeaut_r8 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 8) + + + m4abeaut_r9 + American Beauty (Avantime?) (MPU4) (ABR1, Russia, set 9) + + + m4abeaut_s1 + American Beauty (Avantime?) (MPU4) (ABS1, Slovakia, set 1) + + + m4abeaut_s2 + American Beauty (Avantime?) (MPU4) (ABS1, Slovakia, set 2) + + + m4abeaut_s3 + American Beauty (Avantime?) (MPU4) (ABS2, Slovakia, set 1) + + + m4abeaut_s4 + American Beauty (Avantime?) (MPU4) (ABS2, Slovakia, set 2) + + + m4abeaut_u1 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 1) + + + m4abeaut_u10 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 10) + + + m4abeaut_u11 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 11) + + + m4abeaut_u12 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 12) + + + m4abeaut_u13 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 13) + + + m4abeaut_u14 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 14) + + + m4abeaut_u15 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 15) + + + m4abeaut_u16 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 16) + + + m4abeaut_u17 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 17) + + + m4abeaut_u18 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 18) + + + m4abeaut_u19 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 19) + + + m4abeaut_u2 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 2) + + + m4abeaut_u20 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 20) + + + m4abeaut_u21 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 21) + + + m4abeaut_u22 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 22) + + + m4abeaut_u23 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 23) + + + m4abeaut_u24 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 24) + + + m4abeaut_u25 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 25) + + + m4abeaut_u26 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 26) + + + m4abeaut_u27 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 27) + + + m4abeaut_u28 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 28) + + + m4abeaut_u29 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 29) + + + m4abeaut_u3 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 3) + + + m4abeaut_u30 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 30) + + + m4abeaut_u31 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 31) + + + m4abeaut_u32 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 32) + + + m4abeaut_u33 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 33) + + + m4abeaut_u34 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 34) + + + m4abeaut_u35 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 35) + + + m4abeaut_u36 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 36) + + + m4abeaut_u37 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 37) + + + m4abeaut_u38 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 38) + + + m4abeaut_u39 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 39) + + + m4abeaut_u4 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 4) + + + m4abeaut_u40 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 40) + + + m4abeaut_u41 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 41) + + + m4abeaut_u42 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 42) + + + m4abeaut_u43 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 43) + + + m4abeaut_u44 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 44) + + + m4abeaut_u45 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 45) + + + m4abeaut_u46 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 46) + + + m4abeaut_u47 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 47) + + + m4abeaut_u48 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 48) + + + m4abeaut_u49 + American Beauty (Avantime?) (MPU4) (ABU2, Ukraine, set 1) + + + m4abeaut_u5 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 5) + + + m4abeaut_u50 + American Beauty (Avantime?) (MPU4) (ABU2, Ukraine, set 2) + + + m4abeaut_u51 + American Beauty (Avantime?) (MPU4) (ABU2, Ukraine, set 3) + + + m4abeaut_u52 + American Beauty (Avantime?) (MPU4) (ABU2, Ukraine, set 4) + + + m4abeaut_u53 + American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 1) + + + m4abeaut_u54 + American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 2) + + + m4abeaut_u55 + American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 3) + + + m4abeaut_u56 + American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 4) + + + m4abeaut_u57 + American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 5) + + + m4abeaut_u58 + American Beauty (Avantime?) (MPU4) (A2U2, Ukraine, set 6) + + + m4abeaut_u59 + American Beauty (Avantime?) (MPU4) (A2U3, Ukraine, set 1) + + + m4abeaut_u6 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 6) + + + m4abeaut_u60 + American Beauty (Avantime?) (MPU4) (A2U3, Ukraine, set 2) + + + m4abeaut_u61 + American Beauty (Avantime?) (MPU4) (A3U2, Ukraine, set 1) + + + m4abeaut_u62 + American Beauty (Avantime?) (MPU4) (A3U2, Ukraine, set 2) + + + m4abeaut_u63 + American Beauty (Avantime?) (MPU4) (A3U2, Ukraine, set 3) + + + m4abeaut_u64 + American Beauty (Avantime?) (MPU4) (A3U2, Ukraine, set 4) + + + m4abeaut_u7 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 7) + + + m4abeaut_u8 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 8) + + + m4abeaut_u9 + American Beauty (Avantime?) (MPU4) (ABU1, Ukraine, set 9) + + + m4abra + Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 1) + + + m4abra__a + Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 2) + + + m4abra__b + Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 3) + + + m4abra__c + Abracadabra (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 4) + + + m4acechs + Ace Chase (BWB) (MPU4) (AE5 2.0, set 1) + + + m4acechs__a + Ace Chase (BWB) (MPU4) (AE5 3.0, set 1) + + + m4acechs__b + Ace Chase (BWB) (MPU4) (AE5 2.0, set 2) + + + m4acechs__c + Ace Chase (BWB) (MPU4) (AE5 2.0, set 3) + + + m4acechs__d + Ace Chase (BWB) (MPU4) (AE5 2.0, set 4) + + + m4acechs__e + Ace Chase (BWB) (MPU4) (AE10 2.0, set 1) + + + m4acechs__f + Ace Chase (BWB) (MPU4) (AE10 3.0, set 1) + + + m4acechs__g + Ace Chase (BWB) (MPU4) (AE 1.0) + + + m4acechs__h + Ace Chase (BWB) (MPU4) (AE10 2.0, set 2) + + + m4acechs__i + Ace Chase (BWB) (MPU4) (AE10 2.0, set 3) + + + m4acechs__j + Ace Chase (BWB) (MPU4) (AE10 2.0, set 4) + + + m4acechs__k + Ace Chase (BWB) (MPU4) (AE20 3.0, set 1) + + + m4acechs__l + Ace Chase (BWB) (MPU4) (AE20 3.0, set 2) + + + m4acechs__m + Ace Chase (BWB) (MPU4) (AE20 3.0, set 3) + + + m4acechs__n + Ace Chase (BWB) (MPU4) (AE20 3.0, set 4) + + + m4acechs__o + Ace Chase (BWB) (MPU4) (AE20 3.0, set 5) + + + m4acechs__p + Ace Chase (BWB) (MPU4) (AE20 3.0, set 6) + + + m4acechs__q + Ace Chase (BWB) (MPU4) (AE5 2.0, set 5) + + + m4acechs__r + Ace Chase (BWB) (MPU4) (AE5 3.0, set 2) + + + m4acechs__s + Ace Chase (BWB) (MPU4) (AE10 2.0, set 5) + + + m4acechs__t + Ace Chase (BWB) (MPU4) (AE10 3.0, set 2) + + + m4acechs__u + Ace Chase (BWB) (MPU4) (AE20 3.0, set 7) + + + m4actbnk + Action Bank (Barcrest) (MPU4) (ACT 0.7) + + + m4actbnk__a + Action Bank (Barcrest) (MPU4) (ACT 0.7 B) + + + m4actbnk__b + Action Bank (Barcrest) (MPU4) (ACT 0.7 BD) + + + m4actbnk__c + Action Bank (Barcrest) (MPU4) (ACT 0.7 C) + + + m4actbnk__d + Action Bank (Barcrest) (MPU4) (ACT 0.7 D) + + + m4actbnk__e + Action Bank (Barcrest) (MPU4) (ACT 0.7 KD) + + + m4actbnk__f + Action Bank (Barcrest) (MPU4) (ACT 0.7 YD) + + + m4actbnk__g + Action Bank (Barcrest) (MPU4) (ACT 0.7 K) + + + m4actbnk__h + Action Bank (Barcrest) (MPU4) (ACT 0.7 Y) + + + m4actbnk__i + Action Bank (Barcrest) (MPU4) (ACT 0.7 AD) + + + m4actbnka + Action Bank (Barcrest) (Mod 2 type, AC3.0) (MPU4) + + + m4actbnkb + Action Bank (Barcrest) (Mod 2 type, ACT2.0) (MPU4) + + + m4actclb + Action Club (Barcrest) (MPU4) (ABV 1.9) + + + m4actclba + Action Club (Barcrest) (MPU4) (A2C 1.1) + + + m4actnot + Action Note (Barcrest) (MPU4) (AN 1.2) + + + m4actpak + Action Pack (Barcrest) (MPU4) (AP 0.4) + + + m4actpaka + Action Pack (Barcrest) (MPU4) (AP 0.5) + + + m4addr + Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, set 1) + + + m4addr10 + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, set 1) + + + m4addr10_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, set 2) + + + m4addr10c + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, set 1) + + + m4addr10c_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, set 2) + + + m4addr10d + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 D, set 1) + + + m4addr10d_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 D, set 2) + + + m4addr10yd + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 YD, set 1) + + + m4addr10yd_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 YD, set 2) + + + m4addr3 + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 1) + + + m4addr3_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 2) + + + m4addr3_b + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 3) + + + m4addr3_c + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 4) + + + m4addr3_d + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0, set 5) + + + m4addr3d + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 1) + + + m4addr3d_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 2) + + + m4addr3d_b + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 3) + + + m4addr3d_c + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 D, set 4) + + + m4addr3yd + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 1) + + + m4addr3yd_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 2) + + + m4addr3yd_b + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 3) + + + m4addr3yd_c + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 3.0 YD, set 4) + + + m4addr4 + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0, set 1) + + + m4addr4_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0, set 2) + + + m4addr4c + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 C, set 1) + + + m4addr4c_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 C, set 2) + + + m4addr4c_b + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 C, set 3) + + + m4addr4d + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 D, set 1) + + + m4addr4yd + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 4.0 YD, set 1) + + + m4addr5 + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0, set 1) + + + m4addr5_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0, set 2) + + + m4addr5c + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 C, set 1) + + + m4addr5c_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 C, set 2) + + + m4addr5d + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 D, set 1) + + + m4addr5d_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 D, set 2) + + + m4addr5yd + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 YD, set 1) + + + m4addr5yd_a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 5.0 YD, set 2) + + + m4addr6lc + Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 C) + + + m4addr6ld + Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 D) + + + m4addr6lk + Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 K) + + + m4addr6ly + Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 Y) + + + m4addr6lybd + Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 YBD) + + + m4addr6lyd + Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1 YD) + + + m4addr_h1 + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 1) + + + m4addr_h2 + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 2) + + + m4addrc + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 3) + + + m4addrc__a + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 6) + + + m4addrc__b + Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, hack, set 1) + + + m4addrc__c + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 4) + + + m4addrc__d + Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, set 2) + + + m4addrc__h + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, hack) + + + m4addrc__i + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 7) + + + m4addrc__j + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 8) + + + m4addrc__k + Classic Adders & Ladders (Barcrest) (MPU4) (A6L 0.1, hack, set 2) + + + m4addrc__l + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0, 1993) + + + m4addrc__m + Classic Adders & Ladders (BWB / Barcrest) (MPU4) (ADD 1.0 C, hack, set 5) + + + m4addrcc + Adders & Ladders Classic Club (Barcrest) (MPU4) (ADC 1.1) + + + m4addrcc__a + Adders & Ladders Classic Club (Barcrest) (MPU4) (ADC 1.1 F) + + + m4addrcc__b + Adders & Ladders Classic Club (Barcrest) (MPU4) (ADC 1.1 L) + + + m4addrcc__c + Adders & Ladders Classic Club (Barcrest) (MPU4) (ADC 1.1 D) + + + m4addrcc__d + Adders & Ladders Classic Club (Barcrest) (MPU4) (ADC 0.5) + + + m4addrd + Adders & Ladders (Barcrest) (Dutch) (MPU4) (DAL 1.2) + + + m4aladn + Aladdin's Cave (Crystal) (MPU4) (set 1) + + + m4aladna + Aladdin's Cave (Crystal) (MPU4) (set 2) + + + m4aladnb + Aladdin's Cave (Crystal) (MPU4) (set 3) + + + m4aladnc + Aladdin's Cave (Crystal) (MPU4) (set 4) + + + m4aladnd + Aladdin's Cave (Crystal) (MPU4) (set 5) + + + m4aladne + Aladdin's Cave (Crystal) (MPU4) (set 6) + + + m4aladnf + Aladdin's Cave (Crystal) (MPU4) (set 7) + + + m4aladng + Aladdin's Cave (Crystal) (MPU4) (set 8) + + + m4aladnh + Aladdin's Cave (Crystal) (MPU4) (set 9) + + + m4aladni + Aladdin's Cave (Crystal) (MPU4) (set 10) + + + m4aliz + AlizBaz (Qps) (German) (MPU4) + + + m4alladv + All Cash Advance (Barcrest) (MPU4) (C2B 6.0) + + + m4alpha + Alphabet (Barcrest) (MPU4) (A4B 1.0) + + + m4amalad + American Aladdin (Avantime?) (MPU4) (set 1) + + + m4amalad__a + American Aladdin (Avantime?) (MPU4) (set 2) + + + m4amalad__b + American Aladdin (Avantime?) (MPU4) (set 3) + + + m4amalad__c + American Aladdin (Avantime?) (MPU4) (set 4) + + + m4amalad__d + American Aladdin (Avantime?) (MPU4) (set 5) + + + m4amalad__e + American Aladdin (Avantime?) (MPU4) (set 6) + + + m4amalad__f + American Aladdin (Avantime?) (MPU4) (set 7) + + + m4amalad__g + American Aladdin (Avantime?) (MPU4) (set 8) + + + m4amalad__h + American Aladdin (Avantime?) (MPU4) (set 9) + + + m4amalad__i + American Aladdin (Avantime?) (MPU4) (set 10) + + + m4amalad__j + American Aladdin (Avantime?) (MPU4) (set 11) + + + m4amalad__k + American Aladdin (Avantime?) (MPU4) (set 12) + + + m4amalad__l + American Aladdin (Avantime?) (MPU4) (set 13) + + + m4amalad__m + American Aladdin (Avantime?) (MPU4) (set 14) + + + m4amalad__n + American Aladdin (Avantime?) (MPU4) (set 15) + + + m4ambass + Ambassador (Barcrest) (Dutch) (MPU4) (DAM 3.7) + + + m4amhiwy + American Highway (Barcrest) (Dutch) (MPU4) (DAH 2.0) + + + m4andybt + Andy's Big Time Club (Barcrest) (MPU4) (ABT 1.8) + + + m4andybt__a + Andy's Big Time Club (Barcrest) (MPU4) (ABT 1.8 F) + + + m4andybt__b + Andy's Big Time Club (Barcrest) (MPU4) (ABT 1.8 D) + + + m4andybt__c + Andy's Big Time Club (Barcrest) (MPU4) (ABT 1.5) + + + m4andycp + Andy Capp (BWB / Barcrest) (MPU4) (AC10) + + + m4andycp10_a + Andy Capp (BWB / Barcrest) (MPU4) (AC10, hack?) + + + m4andycp10c + Andy Capp (BWB / Barcrest) (MPU4) (AC10C) + + + m4andycp10c_a + Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 1) + + + m4andycp10c_b + Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 2) + + + m4andycp10c_c + Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 3) + + + m4andycp10c_d + Andy Capp (BWB / Barcrest) (MPU4) (AC10C, hack?, set 4) + + + m4andycp10d + Andy Capp (BWB / Barcrest) (MPU4) (AC10D) + + + m4andycp10k + Andy Capp (BWB / Barcrest) (MPU4) (AC10K) + + + m4andycp10yd + Andy Capp (BWB / Barcrest) (MPU4) (AC10YD) + + + m4andycp20 + Andy Capp (Barcrest) (MPU4) (hack?, set 1) + + + m4andycp20_a + Andy Capp (Barcrest) (MPU4) (hack?, set 2) + + + m4andycp20_b + Andy Capp (Barcrest) (MPU4) (hack?, set 3) + + + m4andycp8 + Andy Capp (Barcrest) (MPU4) (AN8) + + + m4andycp8ad + Andy Capp (Barcrest) (MPU4) (AN8 AD) + + + m4andycp8b + Andy Capp (Barcrest) (MPU4) (AN8 B) + + + m4andycp8c + Andy Capp (Barcrest) (MPU4) (AN8 C) + + + m4andycp8d + Andy Capp (Barcrest) (MPU4) (AN8 D) + + + m4andycp8k + Andy Capp (Barcrest) (MPU4) (AN8 K) + + + m4andycp8kd + Andy Capp (Barcrest) (MPU4) (AN8 KD) + + + m4andycp8y + Andy Capp (Barcrest) (MPU4) (AN8 Y) + + + m4andycp8yd + Andy Capp (Barcrest) (MPU4) (AN8 YD) + + + m4andycpac + Andy Capp (BWB / Barcrest) (MPU4) (AC5) + + + m4andycpac_a + Andy Capp (BWB / Barcrest) (MPU4) (AC5, hack?) + + + m4andycpacc + Andy Capp (BWB / Barcrest) (MPU4) (AC5 C) + + + m4andycpacc_a + Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 1) + + + m4andycpacc_b + Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 2) + + + m4andycpacc_c + Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 3) + + + m4andycpacc_d + Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 4) + + + m4andycpacc_e + Andy Capp (BWB / Barcrest) (MPU4) (AC5 C, hack?, set 5) + + + m4andycpaccsd + Andy Capp (BWB / Barcrest) (MPU4) (ACC5) + + + m4andycpacd + Andy Capp (BWB / Barcrest) (MPU4) (AC5 D) + + + m4andycpack + Andy Capp (BWB / Barcrest) (MPU4) (AC5 K) + + + m4andycpacyd + Andy Capp (BWB / Barcrest) (MPU4) (AC5 YD) + + + m4andycpc2 + Andy Capp (Barcrest) (MPU4) (C2T, set 1) + + + m4andycpc2_a + Andy Capp (Barcrest) (MPU4) (C2T, set 2) + + + m4andycpc2ad + Andy Capp (Barcrest) (MPU4) (C2T AD) + + + m4andycpc2b + Andy Capp (Barcrest) (MPU4) (C2T B) + + + m4andycpc2bd + Andy Capp (Barcrest) (MPU4) (C2T BD) + + + m4andycpc2d + Andy Capp (Barcrest) (MPU4) (C2T D) + + + m4andycpc2k + Andy Capp (Barcrest) (MPU4) (C2T K) + + + m4andycpc2kd + Andy Capp (Barcrest) (MPU4) (C2T KD) + + + m4andycpc2r + Andy Capp (Barcrest) (MPU4) (C2T R) + + + m4andycpc2rd + Andy Capp (Barcrest) (MPU4) (C2T RD) + + + m4andycpc2y + Andy Capp (Barcrest) (MPU4) (C2T Y) + + + m4andycpc2yd + Andy Capp (Barcrest) (MPU4) (C2T YD) + + + m4andycpc5 + Andy Capp (Barcrest) (MPU4) (C5T) + + + m4andycpc5ad + Andy Capp (Barcrest) (MPU4) (C5T AD) + + + m4andycpc5b + Andy Capp (Barcrest) (MPU4) (C5T B) + + + m4andycpc5bd + Andy Capp (Barcrest) (MPU4) (C5T BD) + + + m4andycpc5d + Andy Capp (Barcrest) (MPU4) (C5T D) + + + m4andycpc5k + Andy Capp (Barcrest) (MPU4) (C5T K) + + + m4andycpc5kd + Andy Capp (Barcrest) (MPU4) (C5T KD) + + + m4andycpc5y + Andy Capp (Barcrest) (MPU4) (C5T Y) + + + m4andycpc5yd + Andy Capp (Barcrest) (MPU4) (C5T YD) + + + m4andycpd + Andy Capp (Barcrest) (MPU4) (AND) + + + m4andycpdc + Andy Capp (Barcrest) (MPU4) (AND C) + + + m4andycpdd + Andy Capp (Barcrest) (MPU4) (AND D) + + + m4andycpdk + Andy Capp (Barcrest) (MPU4) (AND K) + + + m4andycpdut + Andy Capp (Barcrest) (Dutch) (MPU4) (DAC 1.3) + + + m4andycpdy + Andy Capp (Barcrest) (MPU4) (AND Y, set 1) + + + m4andycpdy_a + Andy Capp (Barcrest) (MPU4) (AND Y, set 2) + + + m4andycpdyd + Andy Capp (Barcrest) (MPU4) (AND YD) + + + m4andyfh + Andy's Full House (Barcrest) (MPU4) (AFH 0.1) + + + m4andyfh__0 + Andy's Full House (Barcrest) (MPU4) (AFT 0.3 R) + + + m4andyfh__1 + Andy's Full House (Barcrest) (MPU4) (AFT 0.3) + + + m4andyfh__2 + Andy's Full House (Barcrest) (MPU4) (AFT 0.3 Y) + + + m4andyfh__3 + Andy's Full House (Barcrest) (MPU4) (AFU 0.2 AD) + + + m4andyfh__4 + Andy's Full House (Barcrest) (MPU4) (AFU 0.2 B) + + + m4andyfh__5 + Andy's Full House (Barcrest) (MPU4) (AFU 0.2 BD) + + + m4andyfh__6 + Andy's Full House (Barcrest) (MPU4) (AFU 0.2 D) + + + m4andyfh__7 + Andy's Full House (Barcrest) (MPU4) (AFU 0.2 KD) + + + m4andyfh__8 + Andy's Full House (Barcrest) (MPU4) (AFU 0.2 RD) + + + m4andyfh__9 + Andy's Full House (Barcrest) (MPU4) (AFU 0.2 YD) + + + m4andyfh__a + Andy's Full House (Barcrest) (MPU4) (AF3 0.1 AD) + + + m4andyfh__a0 + Andy's Full House (Barcrest) (MPU4) (CAU 0.1 KD / CA4 0.1) + + + m4andyfh__a1 + Andy's Full House (Barcrest) (MPU4) (CAU 0.1 YD / CA4 0.1) + + + m4andyfh__a2 + Andy's Full House (Barcrest) (MPU4) (CAU 0.1 K / CA4 0.1) + + + m4andyfh__a3 + Andy's Full House (Barcrest) (MPU4) (CAU 0.1 / CA4 0.1) + + + m4andyfh__a4 + Andy's Full House (Barcrest) (MPU4) (CAU 0.1 Y / CA4 0.1) + + + m4andyfh__aa + Andy's Full House (Barcrest) (MPU4) (AFU 0.2 K) + + + m4andyfh__ab + Andy's Full House (Barcrest) (MPU4) (AFU 0.2 R) + + + m4andyfh__ac + Andy's Full House (Barcrest) (MPU4) (AFU 0.2) + + + m4andyfh__ad + Andy's Full House (Barcrest) (MPU4) (AFU 0.2 Y) + + + m4andyfh__ae + Andy's Full House (Barcrest) (MPU4) (CA4 0.8 AD) + + + m4andyfh__af + Andy's Full House (Barcrest) (MPU4) (CA4 0.8 B) + + + m4andyfh__ag + Andy's Full House (Barcrest) (MPU4) (CA4 0.8 BD) + + + m4andyfh__ah + Andy's Full House (Barcrest) (MPU4) (CA4 0.8 D) + + + m4andyfh__ai + Andy's Full House (Barcrest) (MPU4) (CA4 0.8 KD) + + + m4andyfh__aj + Andy's Full House (Barcrest) (MPU4) (CA4 0.8 YD) + + + m4andyfh__ak + Andy's Full House (Barcrest) (MPU4) (CA4 0.8 K) + + + m4andyfh__al + Andy's Full House (Barcrest) (MPU4) (CA4 0.8) + + + m4andyfh__am + Andy's Full House (Barcrest) (MPU4) (CA4 0.8 Y) + + + m4andyfh__an + Andy's Full House (Barcrest) (MPU4) (CAT 0.2 AD) + + + m4andyfh__ao + Andy's Full House (Barcrest) (MPU4) (CAT 0.2 B) + + + m4andyfh__ap + Andy's Full House (Barcrest) (MPU4) (CAT 0.2 BD) + + + m4andyfh__aq + Andy's Full House (Barcrest) (MPU4) (CAT 0.2 D) + + + m4andyfh__ar + Andy's Full House (Barcrest) (MPU4) (CAT 0.2 KD) + + + m4andyfh__as + Andy's Full House (Barcrest) (MPU4) (CAT 0.2 YD) + + + m4andyfh__at + Andy's Full House (Barcrest) (MPU4) (CAT 0.2 K) + + + m4andyfh__au + Andy's Full House (Barcrest) (MPU4) (CAT 0.2) + + + m4andyfh__av + Andy's Full House (Barcrest) (MPU4) (CAT 0.2 Y) + + + m4andyfh__aw + Andy's Full House (Barcrest) (MPU4) (CAU 0.1 AD / CA4 0.1) + + + m4andyfh__ax + Andy's Full House (Barcrest) (MPU4) (CAU 0.1 B / CA4 0.1) + + + m4andyfh__ay + Andy's Full House (Barcrest) (MPU4) (CAU 0.1 BD / CA4 0.1) + + + m4andyfh__az + Andy's Full House (Barcrest) (MPU4) (CAU 0.1 D / CA4 0.1) + + + m4andyfh__b + Andy's Full House (Barcrest) (MPU4) (AF3 0.1 B) + + + m4andyfh__c + Andy's Full House (Barcrest) (MPU4) (AF3 0.1 BD) + + + m4andyfh__d + Andy's Full House (Barcrest) (MPU4) (AF3 0.1 D) + + + m4andyfh__e + Andy's Full House (Barcrest) (MPU4) (AF3 0.1 KD) + + + m4andyfh__f + Andy's Full House (Barcrest) (MPU4) (AF3 0.1 YD) + + + m4andyfh__g + Andy's Full House (Barcrest) (MPU4) (AF3 0.1 K) + + + m4andyfh__h + Andy's Full House (Barcrest) (MPU4) (AF3 0.1) + + + m4andyfh__i + Andy's Full House (Barcrest) (MPU4) (AF3 0.1 Y) + + + m4andyfh__j + Andy's Full House (Barcrest) (MPU4) (AF8 0.1 B) + + + m4andyfh__k + Andy's Full House (Barcrest) (MPU4) (AF8 0.1 BD) + + + m4andyfh__l + Andy's Full House (Barcrest) (MPU4) (AF8 0.1 C) + + + m4andyfh__m + Andy's Full House (Barcrest) (MPU4) (AF8 0.1 K) + + + m4andyfh__n + Andy's Full House (Barcrest) (MPU4) (AF8 0.1) + + + m4andyfh__o + Andy's Full House (Barcrest) (MPU4) (AFH 0.1 B) + + + m4andyfh__p + Andy's Full House (Barcrest) (MPU4) (AFH 0.1 C) + + + m4andyfh__q + Andy's Full House (Barcrest) (MPU4) (AFH 0.1 D) + + + m4andyfh__r + Andy's Full House (Barcrest) (MPU4) (AFH 0.1 R) + + + m4andyfh__s + Andy's Full House (Barcrest) (MPU4) (AFT 0.3 AD) + + + m4andyfh__t + Andy's Full House (Barcrest) (MPU4) (AFT 0.3 B) + + + m4andyfh__u + Andy's Full House (Barcrest) (MPU4) (AFT 0.3 BD) + + + m4andyfh__v + Andy's Full House (Barcrest) (MPU4) (AFT 0.3 D) + + + m4andyfh__w + Andy's Full House (Barcrest) (MPU4) (AFT 0.3 KD) + + + m4andyfh__x + Andy's Full House (Barcrest) (MPU4) (AFT 0.3 RD) + + + m4andyfh__y + Andy's Full House (Barcrest) (MPU4) (AFT 0.3 YD) + + + m4andyfh__z + Andy's Full House (Barcrest) (MPU4) (AFT 0.3 K) + + + m4andyfl + Andy Loves Flo (BWB / Barcrest) (MPU4) (AL4 2.1 KS) + + + m4andyfl3 + Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1) + + + m4andyfl3ad + Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1 AD) + + + m4andyfl3b + Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1 B) + + + m4andyfl3bd + Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1 BD) + + + m4andyfl3d + Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1 D) + + + m4andyfl3k + Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1 K) + + + m4andyfl3kd + Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1 KD) + + + m4andyfl3y + Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1 Y) + + + m4andyfl3yd + Andy Loves Flo (Barcrest) (MPU4) (AL3 0.1 YD) + + + m4andyfl8 + Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1) + + + m4andyfl8ad + Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1 AD) + + + m4andyfl8b + Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1 B) + + + m4andyfl8bd + Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1 BD) + + + m4andyfl8bs + Andy Loves Flo (BWB / Barcrest) (MPU4) (AL_ 2.4 KS) + + + m4andyfl8c + Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1 C) + + + m4andyfl8d + Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1 D) + + + m4andyfl8k + Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1 K) + + + m4andyfl8kd + Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1 KD) + + + m4andyfl8y + Andy Loves Flo (Barcrest) (MPU4) (AL8 0.1 Y) + + + m4andyflf + Andy Loves Flo (Barcrest) (MPU4) (ALF 2.0) + + + m4andyflfb + Andy Loves Flo (Barcrest) (MPU4) (ALF 2.0 B) + + + m4andyflfc + Andy Loves Flo (Barcrest) (MPU4) (ALF 2.0 C) + + + m4andyflfk + Andy Loves Flo (Barcrest) (MPU4) (ALF 2.0 K) + + + m4andyflfr + Andy Loves Flo (Barcrest) (MPU4) (ALF 2.0 R) + + + m4andyflt + Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4) + + + m4andyfltad + Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4 AD) + + + m4andyfltb + Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4 B) + + + m4andyfltbd + Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4 BD) + + + m4andyfltd + Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4 D) + + + m4andyfltk + Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4 K) + + + m4andyfltkd + Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4 KD) + + + m4andyfltr + Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4 R) + + + m4andyfltrd + Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4 RD) + + + m4andyflty + Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4 Y) + + + m4andyfltyd + Andy Loves Flo (Barcrest) (MPU4) (ALT 0.4 YD) + + + m4andyflu + Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3) + + + m4andyfluad + Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3 AD) + + + m4andyflub + Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3 B) + + + m4andyflubd + Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3 BD) + + + m4andyflud + Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3 D) + + + m4andyfluk + Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3 K) + + + m4andyflukd + Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3 KD) + + + m4andyflur + Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3 R) + + + m4andyflurd + Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3 RD) + + + m4andyfluy + Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3 Y) + + + m4andyfluyd + Andy Loves Flo (Barcrest) (MPU4) (ALU 0.3 YD) + + + m4andyge + Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3, set 1) + + + m4andyge28 + Andy's Great Escape (Barcrest) (MPU4) (A28 0.1) + + + m4andyge28ad + Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 AD) + + + m4andyge28b + Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 B) + + + m4andyge28bd + Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 BD) + + + m4andyge28c + Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 C) + + + m4andyge28d + Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 D) + + + m4andyge28k + Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 K) + + + m4andyge28kd + Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 KD) + + + m4andyge28y + Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 Y) + + + m4andyge28yd + Andy's Great Escape (Barcrest) (MPU4) (A28 0.1 YD) + + + m4andyge2t + Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1) + + + m4andyge2tad + Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 AD) + + + m4andyge2tb + Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 B) + + + m4andyge2tbd + Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 BD) + + + m4andyge2td + Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 D) + + + m4andyge2tk + Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 K) + + + m4andyge2tkd + Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 KD) + + + m4andyge2ty + Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 Y) + + + m4andyge2tyd + Andy's Great Escape (Barcrest) (MPU4) (A2T 0.1 YD) + + + m4andyge5t + Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1) + + + m4andyge5tad + Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 AD) + + + m4andyge5tb + Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 B) + + + m4andyge5tbd + Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 BD) + + + m4andyge5td + Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 D) + + + m4andyge5tk + Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 K) + + + m4andyge5tkd + Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 KD) + + + m4andyge5ty + Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 Y) + + + m4andyge5tyd + Andy's Great Escape (Barcrest) (MPU4) (A5T 0.1 YD) + + + m4andyge_h1 + Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 3.0, hack?, set 1) + + + m4andyge_h2 + Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 3.0, hack?, set 2) + + + m4andyge_h3 + Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 0.3, hack?, set 1) + + + m4andyge_h4 + Andy's Great Escape (BWB / Barcrest) (MPU4) (8V1 0.3, hack?, set 2) + + + m4andyge_hx1 + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 1) + + + m4andyge_hx2 + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 2) + + + m4andyge_hx3 + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 3) + + + m4andyge_hx4 + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 CX, hack?, set 4) + + + m4andyge_hx5 + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 CX, hack?) + + + m4andygeg5 + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0) + + + m4andygeg5a + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 A) + + + m4andygeg5c + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 C) + + + m4andygeg5d + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 D) + + + m4andygeg5k + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 K) + + + m4andygeg5yd + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG5 3.0 YD) + + + m4andygeg_2 + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0) + + + m4andygeg_2c + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 C) + + + m4andygeg_2d + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 D) + + + m4andygeg_2k + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 K) + + + m4andygeg_2yd + Andy's Great Escape (BWB / Barcrest) (MPU4) (AG__2.0 YD) + + + m4andygegc2 + Andy's Great Escape (BWB / Barcrest) (MPU4) (AGC 2.0) + + + m4andygegc2d + Andy's Great Escape (BWB / Barcrest) (MPU4) (AGC 2.0 D) + + + m4andygen2_a + Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3, set 2) + + + m4andygen2c + Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 C) + + + m4andygen2d + Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 D) + + + m4andygen2k + Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 K) + + + m4andygen2y + Andy's Great Escape (Barcrest) (MPU4) (AN2 0.3 Y) + + + m4apach + Apache (Barcrest) (MPU4 w/ Plasma DMD?) + + + m4apachg + Apache Gold (Empire) (MPU4, set 1) + + + m4apachga + Apache Gold (Empire) (MPU4, set 2) + + + m4apachgb + Apache Gold (Empire) (MPU4, set 3) + + + m4apachgc + Apache Gold (Empire) (MPU4, set 4) + + + m4apachgd + Apache Gold (Empire) (MPU4, set 5) + + + m4apachge + Apache Gold (Empire) (MPU4, set 6) + + + m4apachgf + Apache Gold (Empire) (MPU4, set 7) + + + m4atlan + Atlantis (Barcrest) (Dutch) (MPU4) (DAT 1.4) + + + m4bagcsh + Bags Of Cash Club (Crystal) (MPU4) (set 1) + + + m4bagcsha + Bags Of Cash Club (Crystal) (MPU4) (set 2) + + + m4bagtel + Bagatelle (Barcrest) (MPU4) (BGT 0.5) + + + m4bagtel__0 + Bagatelle (Barcrest) (MPU4) (EL2 0.1 YD) + + + m4bagtel__1 + Bagatelle (Barcrest) (MPU4) (EL2 0.1 K) + + + m4bagtel__2 + Bagatelle (Barcrest) (MPU4) (EL2 0.1 R) + + + m4bagtel__3 + Bagatelle (Barcrest) (MPU4) (EL2 0.1) + + + m4bagtel__4 + Bagatelle (Barcrest) (MPU4) (EL2 0.1 Y) + + + m4bagtel__5 + Bagatelle (Barcrest) (MPU4) (EL3 1.0 AD) + + + m4bagtel__6 + Bagatelle (Barcrest) (MPU4) (EL3 1.0 B) + + + m4bagtel__7 + Bagatelle (Barcrest) (MPU4) (EL3 1.0 BD) + + + m4bagtel__8 + Bagatelle (Barcrest) (MPU4) (EL3 1.0 C) + + + m4bagtel__9 + Bagatelle (Barcrest) (MPU4) (EL3 1.0 D) + + + m4bagtel__a + Bagatelle (Barcrest) (MPU4) (BG2 0.1 C) + + + m4bagtel__aa + Bagatelle (Barcrest) (MPU4) (EL3 1.0 KD) + + + m4bagtel__ab + Bagatelle (Barcrest) (MPU4) (EL3 1.0 RD) + + + m4bagtel__ac + Bagatelle (Barcrest) (MPU4) (EL3 1.0 YD) + + + m4bagtel__ad + Bagatelle (Barcrest) (MPU4) (EL3 1.0 K) + + + m4bagtel__ae + Bagatelle (Barcrest) (MPU4) (EL3 1.0 R) + + + m4bagtel__af + Bagatelle (Barcrest) (MPU4) (EL3 1.0) + + + m4bagtel__ag + Bagatelle (Barcrest) (MPU4) (EL3 1.0 Y) + + + m4bagtel__b + Bagatelle (Barcrest) (MPU4) (BG2 0.1 YD) + + + m4bagtel__c + Bagatelle (Barcrest) (MPU4) (BG2 0.1) + + + m4bagtel__d + Bagatelle (Barcrest) (MPU4) (BGT 0.5 KD) + + + m4bagtel__e + Bagatelle (Barcrest) (MPU4) (BGT 0.5 K) + + + m4bagtel__f + Bagatelle (Barcrest) (MPU4) (BGT 0.5 R) + + + m4bagtel__g + Bagatelle (Barcrest) (MPU4) (BGT 0.5 Y) + + + m4bagtel__h + Bagatelle (Barcrest) (MPU4) (EL1 0.1 AD) + + + m4bagtel__i + Bagatelle (Barcrest) (MPU4) (EL1 0.1 B) + + + m4bagtel__j + Bagatelle (Barcrest) (MPU4) (EL1 0.1 BD) + + + m4bagtel__k + Bagatelle (Barcrest) (MPU4) (EL1 0.1 C) + + + m4bagtel__l + Bagatelle (Barcrest) (MPU4) (EL1 0.1 D) + + + m4bagtel__m + Bagatelle (Barcrest) (MPU4) (EL1 0.1 KD) + + + m4bagtel__n + Bagatelle (Barcrest) (MPU4) (EL1 0.1 RD) + + + m4bagtel__o + Bagatelle (Barcrest) (MPU4) (EL1 0.1 YD) + + + m4bagtel__p + Bagatelle (Barcrest) (MPU4) (EL1 0.1 K) + + + m4bagtel__q + Bagatelle (Barcrest) (MPU4) (EL1 0.1 R) + + + m4bagtel__r + Bagatelle (Barcrest) (MPU4) (EL1 0.1) + + + m4bagtel__s + Bagatelle (Barcrest) (MPU4) (EL1 0.1 Y) + + + m4bagtel__t + Bagatelle (Barcrest) (MPU4) (EL2 0.1 AD) + + + m4bagtel__u + Bagatelle (Barcrest) (MPU4) (EL2 0.1 B) + + + m4bagtel__v + Bagatelle (Barcrest) (MPU4) (EL2 0.1 BD) + + + m4bagtel__w + Bagatelle (Barcrest) (MPU4) (EL2 0.1 C) + + + m4bagtel__x + Bagatelle (Barcrest) (MPU4) (EL2 0.1 D) + + + m4bagtel__y + Bagatelle (Barcrest) (MPU4) (EL2 0.1 KD) + + + m4bagtel__z + Bagatelle (Barcrest) (MPU4) (EL2 0.1 RD) + + + m4bandgd + Bands Of Gold (Eurogames) (MPU4) + + + m4bangin + Bangin' Away (Global) (MPU4, set 1) + + + m4bangina + Bangin' Away (Global) (MPU4, set 2) + + + m4banginb + Bangin' Away (Global) (MPU4, set 3) + + + m4bangrs + Bangers 'n' Cash (Empire) (MPU4, set 1) + + + m4bangrsa + Bangers 'n' Cash (Empire) (MPU4, set 2) + + + m4bangrsb + Bangers 'n' Cash (Empire) (MPU4, set 3) + + + m4bankrd + Bank Raid (Empire) (MPU4, set 1) + + + m4bankrda + Bank Raid (Empire) (MPU4, set 2) + + + m4bankrdb + Bank Raid (Empire) (MPU4, set 3) + + + m4bankrdc + Bank Raid (Empire) (MPU4, set 4) + + + m4bankrdd + Bank Raid (Empire) (MPU4, set 5) + + + m4barcrz + Bar Crazy (unknown) (MPU4?) + + + m4bben + Big Ben (Avantime?) (MPU4) (set 1) + + + m4bben__a + Big Ben (Avantime?) (MPU4) (set 2) + + + m4bben__b + Big Ben (Avantime?) (MPU4) (set 3) + + + m4bben__c + Big Ben (Avantime?) (MPU4) (set 4) + + + m4bben__d + Big Ben (Avantime?) (MPU4) (set 5) + + + m4bben__e + Big Ben (Avantime?) (MPU4) (set 6) + + + m4bben__f + Big Ben (Avantime?) (MPU4) (set 7) + + + m4bben__g + Big Ben (Avantime?) (MPU4) (set 8) + + + m4bben__h + Big Ben (Avantime?) (MPU4) (set 9) + + + m4bben__i + Big Ben (Avantime?) (MPU4) (set 10) + + + m4bbox + Brain Box (Avantime?) (MPU4) (set 1) + + + m4bbox__a + Brain Box (Avantime?) (MPU4) (set 2) + + + m4bbox__b + Brain Box (Avantime?) (MPU4) (set 3) + + + m4bbox__c + Brain Box (Avantime?) (MPU4) (set 4) + + + m4bbox__d + Brain Box (Avantime?) (MPU4) (set 5) + + + m4bbox__e + Brain Box (Avantime?) (MPU4) (set 6) + + + m4bbox__f + Brain Box (Avantime?) (MPU4) (set 7) + + + m4bbox__g + Brain Box (Avantime?) (MPU4) (set 8) + + + m4bbox__h + Brain Box (Avantime?) (MPU4) (set 9) + + + m4bbox__i + Brain Box (Avantime?) (MPU4) (set 10) + + + m4bclimb + Bear Climber (MPU4?) + + + m4bdash + Boulder Dash (Barcrest) (MPU4) (BLS 0.1) + + + m4bdash__0 + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 K) + + + m4bdash__1 + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 R) + + + m4bdash__2 + Boulder Dash (Barcrest) (MPU4) (BLD 1.0) + + + m4bdash__3 + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 Y) + + + m4bdash__4 + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 AD) + + + m4bdash__5 + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 B) + + + m4bdash__6 + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 BD) + + + m4bdash__7 + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 C) + + + m4bdash__8 + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 D) + + + m4bdash__9 + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 DH) + + + m4bdash__a + Boulder Dash (Barcrest) (MPU4) (BLD 1.0, hack) + + + m4bdash__a0 + Boulder Dash (Barcrest) (MPU4) (BO_ 2.1 D) + + + m4bdash__a1 + Boulder Dash (Barcrest) (MPU4) (BO_ 2.0 K) + + + m4bdash__a2 + Boulder Dash (Barcrest) (MPU4) (BO_ 2.1 K) + + + m4bdash__a3 + Boulder Dash (Barcrest) (MPU4) (BO_ 2.0 B) + + + m4bdash__a4 + Boulder Dash (Barcrest) (MPU4) (BO_ 2.1 B) + + + m4bdash__aa + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 KD) + + + m4bdash__ab + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 RD) + + + m4bdash__ac + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 YD) + + + m4bdash__ad + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 H) + + + m4bdash__ae + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 K) + + + m4bdash__af + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 R) + + + m4bdash__ag + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 Y) + + + m4bdash__ah + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 AD) + + + m4bdash__ai + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 B) + + + m4bdash__aj + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 BD) + + + m4bdash__ak + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 C) + + + m4bdash__al + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 D) + + + m4bdash__am + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 DH) + + + m4bdash__an + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 KD) + + + m4bdash__ao + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 RD) + + + m4bdash__ap + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 YD) + + + m4bdash__aq + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 H) + + + m4bdash__ar + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 K) + + + m4bdash__as + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 R) + + + m4bdash__at + Boulder Dash (Barcrest) (MPU4) (BLS 0.2) + + + m4bdash__au + Boulder Dash (Barcrest) (MPU4) (BLS 0.2 Y) + + + m4bdash__av + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 C, hack) + + + m4bdash__aw + Boulder Dash (Barcrest) (MPU4) (BLS 0.1 C, hack) + + + m4bdash__ax + Boulder Dash (Barcrest) (MPU4) (BO_ 2.0) + + + m4bdash__ay + Boulder Dash (Barcrest) (MPU4) (BO_ 2.1) + + + m4bdash__az + Boulder Dash (Barcrest) (MPU4) (BO_ 2.0 D) + + + m4bdash__b + Boulder Dash (Barcrest) (MPU4) (BLD 0.6) + + + m4bdash__c + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 AD) + + + m4bdash__d + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 B) + + + m4bdash__e + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 BD) + + + m4bdash__f + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 C) + + + m4bdash__g + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 D) + + + m4bdash__h + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 DH) + + + m4bdash__i + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 KD) + + + m4bdash__j + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 RD) + + + m4bdash__k + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 YD) + + + m4bdash__l + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 H) + + + m4bdash__m + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 K) + + + m4bdash__n + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 R) + + + m4bdash__o + Boulder Dash (Barcrest) (MPU4) (BLD 0.7) + + + m4bdash__p + Boulder Dash (Barcrest) (MPU4) (BLD 0.7 Y) + + + m4bdash__q + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 AD) + + + m4bdash__r + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 B) + + + m4bdash__s + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 BD) + + + m4bdash__t + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 C) + + + m4bdash__u + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 D) + + + m4bdash__v + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 DH) + + + m4bdash__w + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 KD) + + + m4bdash__x + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 RD) + + + m4bdash__y + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 YD) + + + m4bdash__z + Boulder Dash (Barcrest) (MPU4) (BLD 1.0 H) + + + m4berser + Berserk (Barcrest) (MPU4) (BES 0.6) + + + m4berser__0 + Berserk (Barcrest) (MPU4) (BES 0.6 Y) + + + m4berser__1 + Berserk (Barcrest) (MPU4) (BE4 1.1 KS) + + + m4berser__a + Berserk (Barcrest) (MPU4) (BE3 0.1 AD) + + + m4berser__b + Berserk (Barcrest) (MPU4) (BE3 0.1 B) + + + m4berser__c + Berserk (Barcrest) (MPU4) (BE3 0.1 BD) + + + m4berser__d + Berserk (Barcrest) (MPU4) (BE3 0.1 D) + + + m4berser__e + Berserk (Barcrest) (MPU4) (BE3 0.1 KD) + + + m4berser__f + Berserk (Barcrest) (MPU4) (BE3 0.1 YD) + + + m4berser__g + Berserk (Barcrest) (MPU4) (BE3 0.1 K) + + + m4berser__h + Berserk (Barcrest) (MPU4) (BE3 0.1) + + + m4berser__i + Berserk (Barcrest) (MPU4) (BE3 0.1 Y) + + + m4berser__j + Berserk (Barcrest) (MPU4) (BE8 0.1 AD) + + + m4berser__k + Berserk (Barcrest) (MPU4) (BE8 0.1 B) + + + m4berser__l + Berserk (Barcrest) (MPU4) (BE8 0.1 CBD) + + + m4berser__m + Berserk (Barcrest) (MPU4) (BE8 0.1 BD) + + + m4berser__n + Berserk (Barcrest) (MPU4) (BE8 0.1 C) + + + m4berser__o + Berserk (Barcrest) (MPU4) (BE8 0.1 D) + + + m4berser__p + Berserk (Barcrest) (MPU4) (BE8 0.1 KD) + + + m4berser__q + Berserk (Barcrest) (MPU4) (BE8 0.1 YD) + + + m4berser__r + Berserk (Barcrest) (MPU4) (BE8 0.1 K) + + + m4berser__s + Berserk (Barcrest) (MPU4) (BE8 0.1) + + + m4berser__t + Berserk (Barcrest) (MPU4) (BE8 0.1 Y) + + + m4berser__u + Berserk (Barcrest) (MPU4) (BES 0.6 B) + + + m4berser__v + Berserk (Barcrest) (MPU4) (BES 0.6 C) + + + m4berser__w + Berserk (Barcrest) (MPU4) (BES 0.6 D) + + + m4berser__x + Berserk (Barcrest) (MPU4) (BES 0.6 KD) + + + m4berser__y + Berserk (Barcrest) (MPU4) (BES 0.6 YD) + + + m4berser__z + Berserk (Barcrest) (MPU4) (BES 0.6 K) + + + m4bigapl + The Big Apple (Mdm) (MPU4, set 1) + + + m4bigapla + The Big Apple (Mdm) (MPU4, set 2) + + + m4bigaplb + The Big Apple (Mdm) (MPU4, set 3) + + + m4bigaplc + The Big Apple (Mdm) (MPU4, set 4) + + + m4bigapld + The Big Apple (Mdm) (MPU4, set 5) + + + m4bigaple + The Big Apple (Mdm) (MPU4, set 6) + + + m4bigban + Big Bandit (Nova) (German) (MPU4) (BIG 0.4) + + + m4bigben + Big Ben (Coinworld) (MPU4, set 1) + + + m4bigbena + Big Ben (Coinworld) (MPU4, set 2) + + + m4bigbenb + Big Ben (Coinworld) (MPU4, set 3) + + + m4bigbend + Big Ben (Coinworld) (MPU4, set 4) + + + m4bigbene + Big Ben (Coinworld) (MPU4, set 5) + + + m4bigbn + Big Ben (Barcrest) (Dutch) (MPU4) (DBB 1.2) + + + m4bigchd + Big Chief (Barcrest) (Dutch) (MPU4) (BCH 1.5) + + + m4bigchf + Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 1) + + + m4bigchfa + Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 2) + + + m4bigchfb + Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 3) + + + m4bigchfc + Big Chief (Barcrest) (MPU4 w/ Plasma DMD) (set 4) + + + m4bigchs + Big Cheese (Empire) (MPU4, set 1) + + + m4bigchsa + Big Cheese (Empire) (MPU4, set 2) + + + m4bigchsb + Big Cheese (Empire) (MPU4, set 3) + + + m4bigmt + The Big Match (BWB) (MPU4) (set 1) + + + m4bigmt__a + The Big Match (BWB) (MPU4) (set 2) + + + m4bigmt__b + The Big Match (BWB) (MPU4) (set 3) + + + m4bigmt__c + The Big Match (BWB) (MPU4) (set 4) + + + m4bigmt__d + The Big Match (BWB) (MPU4) (set 5) + + + m4bigmt__f + The Big Match (BWB) (MPU4) (set 7) + + + m4bingbl + Bingo Belle (BWB) (MPU4) (set 1) + + + m4bingbl__a + Bingo Belle (BWB) (MPU4) (set 2) + + + m4bingbl__b + Bingo Belle (BWB) (MPU4) (set 3) + + + m4bingbl__c + Bingo Belle (BWB) (MPU4) (set 4) + + + m4bingbl__d + Bingo Belle (BWB) (MPU4) (set 5) + + + m4bingbl__e + Bingo Belle (BWB) (MPU4) (set 6) + + + m4bingbl__f + Bingo Belle (BWB) (MPU4) (set 7) + + + m4bingbl__g + Bingo Belle (BWB) (MPU4) (set 8) + + + m4bingbs + Bingo Belle Showcase (BWB) (MPU4) (set 1) + + + m4bingbs__a + Bingo Belle Showcase (BWB) (MPU4) (set 2) + + + m4bingbs__b + Bingo Belle Showcase (BWB) (MPU4) (set 3) + + + m4bingbs__c + Bingo Belle Showcase (BWB) (MPU4) (set 4) + + + m4bingbs__d + Bingo Belle Showcase (BWB) (MPU4) (set 5) + + + m4bingbs__e + Bingo Belle Showcase (BWB) (MPU4) (set 6) + + + m4bingbs__f + Bingo Belle Showcase (BWB) (MPU4) (set 7) + + + m4bingcl + Bingo Club (BWB) (MPU4) (set 1) + + + m4bingcl__a + Bingo Club (BWB) (MPU4) (set 2) + + + m4bingcl__b + Bingo Club (BWB) (MPU4) (set 3) + + + m4bj + Black Jack (Barcrest) (Dutch) (MPU4) (BJ 1.6) + + + m4bjac + Blackjack Club (Barcrest) (MPU4) (C2J 1.8) + + + m4bjaca + Blackjack Club (Barcrest) (MPU4) (C2J 2.1) + + + m4bjack + Black Jack (Barcrest) (MPU4) (B2J 2.2) + + + m4bjacka + Black Jack (Barcrest) (MPU4) (BLA 2.0) + + + m4bjc + Black Jack Club (Barcrest) (Dutch) (MPU4) (DBC 1.1) + + + m4bjsm + Blackjack Super Multi (Barcrest) (German) (MPU4) (SM H1.6) + + + m4bjsma + Blackjack Super Multi (Barcrest) (MPU4) (SM 1.6) + + + m4blflsh + Blue Flash (BWB) (MPU4) (TBF 0.3) + + + m4blflsha + Blue Flash (BWB) (MPU4) (BFL 0.3, set 1) + + + m4blflshb + Blue Flash (BWB) (MPU4) (BFL 0.3, set 2) + + + m4blflshc + Blue Flash (BWB) (MPU4) (BFL 0.3, set 3) + + + m4blflshd + Blue Flash (BWB) (MPU4) (BFL 0.3, set 4) + + + m4blflshe + Blue Flash (BWB) (MPU4) (BFL 0.3, set 5) + + + m4blkbul + Super Play (Czech) (Barcrest) (MPU4) (XSP 0.8) + + + m4blkcat + Black Cat (Barcrest) (Dutch) (MPU4) (DBL 1.4) + + + m4blkgd + Black Gold (Gemini) (MPU4) (set 1) + + + m4blkgda + Black Gold (Gemini) (MPU4) (set 2) + + + m4blkmgc + Black Magic (Avantime?) (MPU4) (Latvia, set 1) + + + m4blkmgc_1 + Black Magic (Avantime?) (MPU4) (Latvia, set 2) + + + m4blkmgc_u1 + Black Magic (Avantime?) (MPU4) (Ukraine, set 1) + + + m4blkmgc_u2 + Black Magic (Avantime?) (MPU4) (Ukraine, set 2) + + + m4blkmgc_u3 + Black Magic (Avantime?) (MPU4) (Ukraine, set 3) + + + m4blkmgc_u4 + Black Magic (Avantime?) (MPU4) (Ukraine, set 4) + + + m4blkmgc_u5 + Black Magic (Avantime?) (MPU4) (Ukraine, set 5) + + + m4blkmgc_u6 + Black Magic (Avantime?) (MPU4) (Ukraine, set 6) + + + m4blkwhd + Black & White (Barcrest) (Dutch) (MPU4) (DBW 1.1) + + + m4blsbys + Blues Boys (BWB) (MPU4) (set 1) + + + m4blsbys__0 + Blues Boys (BWB) (MPU4) (set 17) + + + m4blsbys__1 + Blues Boys (BWB) (MPU4) (set 18) + + + m4blsbys__2 + Blues Boys (BWB) (MPU4) (set 19) + + + m4blsbys__3 + Blues Boys (BWB) (MPU4) (set 20) + + + m4blsbys__4 + Blues Boys (BWB) (MPU4) (set 21) + + + m4blsbys__5 + Blues Boys (BWB) (MPU4) (set 22) + + + m4blsbys__6 + Blues Boys (BWB) (MPU4) (set 23) + + + m4blsbys__7 + Blues Boys (BWB) (MPU4) (set 24) + + + m4blsbys__8 + Blues Boys (BWB) (MPU4) (set 25) + + + m4blsbys__9 + Blues Boys (BWB) (MPU4) (set 37) + + + m4blsbys__a + Blues Boys (BWB) (MPU4) (set 2) + + + m4blsbys__aa + Blues Boys (BWB) (MPU4) (set 38) + + + m4blsbys__ab + Blues Boys (BWB) (MPU4) (set 39) + + + m4blsbys__ac + Blues Boys (BWB) (MPU4) (set 40) + + + m4blsbys__ad + Blues Boys (BWB) (MPU4) (set 41) + + + m4blsbys__b + Blues Boys (BWB) (MPU4) (set 3) + + + m4blsbys__c + Blues Boys (BWB) (MPU4) (set 4) + + + m4blsbys__d + Blues Boys (BWB) (MPU4) (set 5) + + + m4blsbys__e + Blues Boys (BWB) (MPU4) (set 6) + + + m4blsbys__f + Blues Boys (BWB) (MPU4) (set 7) + + + m4blsbys__g + Blues Boys (BWB) (MPU4) (set 26) + + + m4blsbys__h + Blues Boys (BWB) (MPU4) (set 27) + + + m4blsbys__i + Blues Boys (BWB) (MPU4) (set 28) + + + m4blsbys__j + Blues Boys (BWB) (MPU4) (set 29) + + + m4blsbys__k + Blues Boys (BWB) (MPU4) (set 30) + + + m4blsbys__l + Blues Boys (BWB) (MPU4) (set 31) + + + m4blsbys__m + Blues Boys (BWB) (MPU4) (set 32) + + + m4blsbys__n + Blues Boys (BWB) (MPU4) (set 33) + + + m4blsbys__o + Blues Boys (BWB) (MPU4) (set 34) + + + m4blsbys__p + Blues Boys (BWB) (MPU4) (set 35) + + + m4blsbys__q + Blues Boys (BWB) (MPU4) (set 36) + + + m4blsbys__r + Blues Boys (BWB) (MPU4) (set 8) + + + m4blsbys__s + Blues Boys (BWB) (MPU4) (set 9) + + + m4blsbys__t + Blues Boys (BWB) (MPU4) (set 10) + + + m4blsbys__u + Blues Boys (BWB) (MPU4) (set 11) + + + m4blsbys__v + Blues Boys (BWB) (MPU4) (set 12) + + + m4blsbys__w + Blues Boys (BWB) (MPU4) (set 13) + + + m4blsbys__x + Blues Boys (BWB) (MPU4) (set 14) + + + m4blsbys__y + Blues Boys (BWB) (MPU4) (set 15) + + + m4blsbys__z + Blues Boys (BWB) (MPU4) (set 16) + + + m4blstbk + Blast A Bank (MPU4) (BB 1.0) + + + m4bluedm + Blue Diamond (Barcrest) (Dutch) (MPU4) (DBD 1.0) + + + m4bluemn + Blue Moon (Barcrest) (MPU4) (BLU 2.3) + + + m4bluemna + Blue Moon (Barcrest) (MPU4) (BLU 2.1) + + + m4bluemnb + Blue Moon (Barcrest) (MPU4) (BLU 1.1) + + + m4bluesn + Blues Boys (Nova) (MPU4) + + + m4blztrl + Blazing Trails (Mdm) (MPU4, set 1) + + + m4blztrla + Blazing Trails (Mdm) (MPU4, set 2) + + + m4bnknot + Bank A Note (Barcrest) (MPU4) (BN 1.0) + + + m4bnkrol + Bank Roller Club (Barcrest) (MPU4) (CBR 0.5) + + + m4bnkrol__a + Bank Roller Club (Barcrest) (MPU4) (BR3 0.1 D) + + + m4bnkrol__b + Bank Roller Club (Barcrest) (MPU4) (BR3 0.1 F) + + + m4bnkrol__c + Bank Roller Club (Barcrest) (MPU4) (BR3 0.1) + + + m4bnkrol__d + Bank Roller Club (Barcrest) (MPU4) (CBR 0.5 D) + + + m4bnkrol__e + Bank Roller Club (Barcrest) (MPU4) (CBR 0.5 F) + + + m4bodymt + Body Match (Mdm) (MPU4) + + + m4boltbl + Bolt From The Blue (DJE) (MPU4, set 1) + + + m4boltbla + Bolt From The Blue (DJE) (MPU4, set 2) + + + m4boltblb + Bolt From The Blue (DJE) (MPU4, set 3) + + + m4boltblc + Bolt From The Blue (DJE) (MPU4, set 4) + + + m4bonzbn + Bingo Bonanza (unknown) (MPU4?) + + + m4booze + Booze Cruise (Extreme) (MPU4) + + + m4brdway + Broadway (Barcrest) (Dutch) (MPU4) (DBR 1.1) + + + m4brktak + Break & Take (Barcrest) (bootleg) (MPU4) + + + m4brnze + Bronze Voyage (BWB) (bootleg?) (MPU4) (BV5 2.1, set 1) + + + m4brnzea + Bronze Voyage (BWB) (bootleg?) (MPU4) (BV5 2.1, set 2) + + + m4brnzeb + Bronze Voyage (BWB) (bootleg?) (MPU4) (BV5 2.1, set 3) + + + m4brook + Turbo Play / Brooklyn (Barcrest) (MPU4) (PFT 1.8) + + + m4btclok + Beat The Clock (Barcrest) (bootleg) (MPU4) + + + m4buc + Buccaneer (Barcrest) (MPU4) (BUG 0.4) + + + m4buc__0 + Buccaneer (Barcrest) (MPU4) (BUG 0.5) + + + m4buc__1 + Buccaneer (Barcrest) (MPU4) (BUG 0.5 Y) + + + m4buc__2 + Buccaneer (Barcrest) (MPU4) (BUS 0.1 DA) + + + m4buc__3 + Buccaneer (Barcrest) (MPU4) (BUS 0.1 B) + + + m4buc__4 + Buccaneer (Barcrest) (MPU4) (BUS 0.1 DB) + + + m4buc__5 + Buccaneer (Barcrest) (MPU4) (BUS 0.1 D) + + + m4buc__6 + Buccaneer (Barcrest) (MPU4) (BUS 0.1 DH) + + + m4buc__7 + Buccaneer (Barcrest) (MPU4) (BUS 0.1 DK) + + + m4buc__8 + Buccaneer (Barcrest) (MPU4) (BUS 0.1 DR) + + + m4buc__9 + Buccaneer (Barcrest) (MPU4) (BUS 0.1 DY) + + + m4buc__a + Buccaneer (Barcrest) (MPU4) (BUG 0.4, hack) + + + m4buc__aa + Buccaneer (Barcrest) (MPU4) (BUS 0.1 H) + + + m4buc__ab + Buccaneer (Barcrest) (MPU4) (BUS 0.1 K) + + + m4buc__ac + Buccaneer (Barcrest) (MPU4) (BUS 0.1 R) + + + m4buc__ad + Buccaneer (Barcrest) (MPU4) (BUS 0.1) + + + m4buc__ae + Buccaneer (Barcrest) (MPU4) (BUS 0.1 Y) + + + m4buc__af + Buccaneer (Barcrest) (MPU4) (BUS 0.2 DA) + + + m4buc__ag + Buccaneer (Barcrest) (MPU4) (BUS 0.2 B) + + + m4buc__ah + Buccaneer (Barcrest) (MPU4) (BUS 0.2 DB) + + + m4buc__ai + Buccaneer (Barcrest) (MPU4) (BUS 0.2 D) + + + m4buc__aj + Buccaneer (Barcrest) (MPU4) (BUS 0.2 DH) + + + m4buc__ak + Buccaneer (Barcrest) (MPU4) (BUS 0.2 DK) + + + m4buc__al + Buccaneer (Barcrest) (MPU4) (BUS 0.2 DR) + + + m4buc__am + Buccaneer (Barcrest) (MPU4) (BUS 0.2 DY) + + + m4buc__an + Buccaneer (Barcrest) (MPU4) (BUS 0.2 H) + + + m4buc__ao + Buccaneer (Barcrest) (MPU4) (BUS 0.2 K) + + + m4buc__ap + Buccaneer (Barcrest) (MPU4) (BUS 0.2 R) + + + m4buc__aq + Buccaneer (Barcrest) (MPU4) (BUS 0.2) + + + m4buc__ar + Buccaneer (Barcrest) (MPU4) (BUS 0.2 Y) + + + m4buc__as + Buccaneer (Barcrest) (MPU4) (BR_ 1.0) + + + m4buc__at + Buccaneer (Barcrest) (MPU4) (BR_ 1.0 YD) + + + m4buc__au + Buccaneer (Barcrest) (MPU4) (BR_ 1.0 D) + + + m4buc__av + Buccaneer (Barcrest) (MPU4) (BR_ 1.0 Y) + + + m4buc__aw + Buccaneer (Barcrest) (MPU4) (BR_ 1.0 B) + + + m4buc__ax + Buccaneer (Barcrest) (MPU4) (BR_ 1.0 BAD) + + + m4buc__ay + Buccaneer (Barcrest) (MPU4) (BR_ 1.0 BR) + + + m4buc__az + Buccaneer (Barcrest) (MPU4) (BR_ 1.0 YDH) + + + m4buc__b + Buccaneer (Barcrest) (MPU4) (BUS 0.1, hack) + + + m4buc__c + Buccaneer (Barcrest) (MPU4) (BUG 0.4 DA) + + + m4buc__d + Buccaneer (Barcrest) (MPU4) (BUG 0.4 B) + + + m4buc__e + Buccaneer (Barcrest) (MPU4) (BUG 0.4 DB) + + + m4buc__f + Buccaneer (Barcrest) (MPU4) (BUG 0.4 D) + + + m4buc__g + Buccaneer (Barcrest) (MPU4) (BUG 0.4 DH) + + + m4buc__h + Buccaneer (Barcrest) (MPU4) (BUG 0.4 DK) + + + m4buc__i + Buccaneer (Barcrest) (MPU4) (BUG 0.4 DR) + + + m4buc__j + Buccaneer (Barcrest) (MPU4) (BUG 0.4 DY) + + + m4buc__k + Buccaneer (Barcrest) (MPU4) (BUG 0.4 H) + + + m4buc__l + Buccaneer (Barcrest) (MPU4) (BUG 0.4 K) + + + m4buc__m + Buccaneer (Barcrest) (MPU4) (BUG 0.4 R) + + + m4buc__n + Buccaneer (Barcrest) (MPU4) (BR_ 1.0 K) + + + m4buc__o + Buccaneer (Barcrest) (MPU4) (BUG 0.4 Y) + + + m4buc__p + Buccaneer (Barcrest) (MPU4) (BUG 0.5 DA) + + + m4buc__q + Buccaneer (Barcrest) (MPU4) (BUG 0.5 B) + + + m4buc__r + Buccaneer (Barcrest) (MPU4) (BUG 0.5 DB) + + + m4buc__s + Buccaneer (Barcrest) (MPU4) (BUG 0.5 D) + + + m4buc__t + Buccaneer (Barcrest) (MPU4) (BUG 0.5 DH) + + + m4buc__u + Buccaneer (Barcrest) (MPU4) (BUG 0.5 DK) + + + m4buc__v + Buccaneer (Barcrest) (MPU4) (BUG 0.5 DR) + + + m4buc__w + Buccaneer (Barcrest) (MPU4) (BUG 0.5 DY) + + + m4buc__x + Buccaneer (Barcrest) (MPU4) (BUG 0.5 H) + + + m4buc__y + Buccaneer (Barcrest) (MPU4) (BUG 0.5 K) + + + m4buc__z + Buccaneer (Barcrest) (MPU4) (BUG 0.5 R) + + + m4bucclb + Buccaneer Club (Crystal) (MPU4) (set 1) + + + m4bucclba + Buccaneer Club (Crystal) (MPU4) (set 2) + + + m4bucclbb + Buccaneer Club (Crystal) (MPU4) (set 3) + + + m4bucclbc + Buccaneer Club (Crystal) (MPU4) (set 4) + + + m4bucks + Bucks Fizz Club (Barcrest) (MPU4) (BUF 1.2, set 1) + + + m4bucksa + Bucks Fizz Club (Barcrest) (MPU4) (BUF 1.2, set 2) + + + m4bullio + Bullion Club (Crystal) (MPU4) (set 1) + + + m4bullioa + Bullion Club (Crystal) (MPU4) (set 2) + + + m4bulliob + Bullion Club (Crystal) (MPU4) (set 3) + + + m4c2 + Circus Circus 2 (Nova?) (MPU4) + + + m4c9 + Cloud Nine (Barcrest) (MPU4) (C92 1.1) + + + m4c999 + Cloud 999 (Barcrest) (MPU4) (CLN 4.0 V) + + + m4c999a + Cloud 999 (Barcrest) (bootleg) (MPU4) (CLN 3.6) + + + m4c999b + Cloud 999 (Barcrest) (bootleg) (MPU4) (CLN 3.0) + + + m4c999c + Cloud 999 (Barcrest) (bootleg) (MPU4) (OC9 0.3, set 1) + + + m4c999d + Cloud 999 (Barcrest) (bootleg) (MPU4) (OC9 0.3, set 2) + + + m4c999e + Cloud 999 (Barcrest) (MPU4) (SC9 1.0, hack?, set 3) + + + m4c999f + Cloud 999 (Barcrest) (MPU4) (SC9 1.0, hack?, set 4) + + + m4c999g + Cloud 999 (Barcrest) (MPU4) (SC9 5.0) + + + m4c999h + Cloud 999 (Barcrest) (MPU4) (SC9 5.0 D) + + + m4c999i + Cloud 999 (Barcrest) (MPU4) (SC9 1.0, hack?, set 1) + + + m4c999j + Cloud 999 (Barcrest) (MPU4) (SC9 1.0, hack?, set 2) + + + m4c9__0 + Cloud Nine (Barcrest) (MPU4) (CT2 0.2 B) + + + m4c9__1 + Cloud Nine (Barcrest) (MPU4) (CT2 0.2 BD) + + + m4c9__2 + Cloud Nine (Barcrest) (MPU4) (CT2 0.2 C) + + + m4c9__3 + Cloud Nine (Barcrest) (MPU4) (CT2 0.2 D) + + + m4c9__4 + Cloud Nine (Barcrest) (MPU4) (CT2 0.2 KD) + + + m4c9__5 + Cloud Nine (Barcrest) (MPU4) (CT2 0.2 RD) + + + m4c9__6 + Cloud Nine (Barcrest) (MPU4) (CT2 0.2 YD) + + + m4c9__7 + Cloud Nine (Barcrest) (MPU4) (CT2 0.2 K) + + + m4c9__8 + Cloud Nine (Barcrest) (MPU4) (CT2 0.2 R) + + + m4c9__9 + Cloud Nine (Barcrest) (MPU4) (CT2 0.2) + + + m4c9__a + Cloud Nine (Barcrest) (MPU4) (CT3 0.2) + + + m4c9__aa + Cloud Nine (Barcrest) (MPU4) (CT2 0.2 Y) + + + m4c9__ab + Cloud Nine (Barcrest) (MPU4) (CT3 0.2 AD) + + + m4c9__ac + Cloud Nine (Barcrest) (MPU4) (CT3 0.2 B) + + + m4c9__ad + Cloud Nine (Barcrest) (MPU4) (CT3 0.2 BD) + + + m4c9__ae + Cloud Nine (Barcrest) (MPU4) (CT3 0.2 C) + + + m4c9__af + Cloud Nine (Barcrest) (MPU4) (CT3 0.2 D) + + + m4c9__ag + Cloud Nine (Barcrest) (MPU4) (CT3 0.2 KD) + + + m4c9__ah + Cloud Nine (Barcrest) (MPU4) (CT3 0.2 RD + + + m4c9__ai + Cloud Nine (Barcrest) (MPU4) (CT3 0.2 YD) + + + m4c9__aj + Cloud Nine (Barcrest) (MPU4) (CT3 0.2 K) + + + m4c9__ak + Cloud Nine (Barcrest) (MPU4) (CT3 0.2 R) + + + m4c9__al + Cloud Nine (Barcrest) (MPU4) (CT3 0.2 Y) + + + m4c9__am + Cloud Nine (Barcrest) (MPU4) (CT5 0.2 AD) + + + m4c9__an + Cloud Nine (Barcrest) (MPU4) (CT5 0.2 B) + + + m4c9__ao + Cloud Nine (Barcrest) (MPU4) (CT5 0.2 BD) + + + m4c9__ap + Cloud Nine (Barcrest) (MPU4) (CT5 0.2 C) + + + m4c9__aq + Cloud Nine (Barcrest) (MPU4) (CT5 0.2 D) + + + m4c9__ar + Cloud Nine (Barcrest) (MPU4) (CT5 0.2 KD) + + + m4c9__as + Cloud Nine (Barcrest) (MPU4) (CT5 0.2 RD) + + + m4c9__at + Cloud Nine (Barcrest) (MPU4) (CT5 0.2 YD) + + + m4c9__au + Cloud Nine (Barcrest) (MPU4) (CT5 0.2 K) + + + m4c9__av + Cloud Nine (Barcrest) (MPU4) (CT5 0.2 R) + + + m4c9__aw + Cloud Nine (Barcrest) (MPU4) (CT5 0.2) + + + m4c9__ax + Cloud Nine (Barcrest) (MPU4) (CT5 0.2 Y) + + + m4c9__b + Cloud Nine (Barcrest) (MPU4) (C92 1.0 KD) + + + m4c9__c + Cloud Nine (Barcrest) (MPU4) (C95 1.0 AD) + + + m4c9__d + Cloud Nine (Barcrest) (MPU4) (C95 1.0 B) + + + m4c9__e + Cloud Nine (Barcrest) (MPU4) (C95 1.0 BD) + + + m4c9__f + Cloud Nine (Barcrest) (MPU4) (C95 1.0 D) + + + m4c9__g + Cloud Nine (Barcrest) (MPU4) (C95 1.0 KD) + + + m4c9__h + Cloud Nine (Barcrest) (MPU4) (C95 1.0 RD) + + + m4c9__i + Cloud Nine (Barcrest) (MPU4) (C95 1.0 YD) + + + m4c9__j + Cloud Nine (Barcrest) (MPU4) (C95 1.0 K) + + + m4c9__k + Cloud Nine (Barcrest) (MPU4) (C95 1.0 R) + + + m4c9__l + Cloud Nine (Barcrest) (MPU4) (C95 1.0) + + + m4c9__m + Cloud Nine (Barcrest) (MPU4) (C95 1.0 Y) + + + m4c9__o + Cloud Nine (Barcrest) (MPU4) (C92 1.1 AD) + + + m4c9__p + Cloud Nine (Barcrest) (MPU4) (C92 1.1 B) + + + m4c9__q + Cloud Nine (Barcrest) (MPU4) (C92 1.1 BD) + + + m4c9__r + Cloud Nine (Barcrest) (MPU4) (C92 1.1 C) + + + m4c9__s + Cloud Nine (Barcrest) (MPU4) (C92 1.1 D) + + + m4c9__t + Cloud Nine (Barcrest) (MPU4) (C92 1.1 KD) + + + m4c9__u + Cloud Nine (Barcrest) (MPU4) (C92 1.1 RD) + + + m4c9__v + Cloud Nine (Barcrest) (MPU4) (C92 1.1 YD) + + + m4c9__w + Cloud Nine (Barcrest) (MPU4) (C92 1.1 K) + + + m4c9__x + Cloud Nine (Barcrest) (MPU4) (C92 1.1 R) + + + m4c9__y + Cloud Nine (Barcrest) (MPU4) (C92 1.1 Y) + + + m4c9__z + Cloud Nine (Barcrest) (MPU4) (CT2 0.2 AD) + + + m4c9c + Cloud Nine Club (Barcrest) (MPU4) (CNC 2.1) + + + m4calama + Calamari Club (Barcrest) (MPU4) (CAC 0.3) + + + m4calama__a + Calamari Club (Barcrest) (MPU4) (CA3 0.1 D) + + + m4calama__b + Calamari Club (Barcrest) (MPU4) (CA3 0.1 F) + + + m4calama__c + Calamari Club (Barcrest) (MPU4) (CA3 0.1) + + + m4calama__d + Calamari Club (Barcrest) (MPU4) (CAC 0.3 D) + + + m4calama__e + Calamari Club (Barcrest) (MPU4) (CAC 0.3 F) + + + m4calama__f + Calamari Club (Barcrest) (MPU4) (BC3 0.2 F) + + + m4calama__g + Calamari Club (Barcrest) (MPU4) (BC3 0.2) + + + m4calama__h + Calamari Club (Barcrest) (MPU4) (BCA 0.2) + + + m4calama__i + Calamari Club (Barcrest) (MPU4) (BC3 0.2 D) + + + m4calama__j + Calamari Club (Barcrest) (MPU4) (BCA 0.4) + + + m4calicl + California Club (Barcrest) (MPU4) (CA2 1.0, set 1) + + + m4calicla + California Club (Barcrest) (MPU4) (CA2 1.0, set 2) + + + m4caliclb + California Club (Barcrest) (MPU4) (CA2 1.0, set 3) + + + m4caliclc + California Club (Barcrest) (MPU4) (CAL 2.0, set 1) + + + m4calicld + California Club (Barcrest) (MPU4) (CAL 2.0, set 2) + + + m4captb + Captain Bear (MPU4?) + + + m4cardcs + Card Cash (Barcrest) (MPU4) (CCS 1.9) + + + m4carou + Carousel Club (Crystal) (MPU4) (set 1) + + + m4caroua + Carousel Club (Crystal) (MPU4) (set 2) + + + m4caroub + Carousel Club (Crystal) (MPU4) (set 3) + + + m4carouc + Carousel Club (Crystal) (MPU4) (set 4) + + + m4cashat + Cash Attack (Barcrest) (MPU4) (CSA 1.2) + + + m4cashat__0 + Cash Attack (Barcrest) (MPU4) (CAA 2.3, hack, set 1) + + + m4cashat__1 + Cash Attack (Barcrest) (MPU4) (CAA 2.3, hack, set 2) + + + m4cashat__2 + Cash Attack (Barcrest) (MPU4) (CSA 1.2, hack) + + + m4cashat__3 + Cash Attack (Barcrest) (MPU4) (CSA 1.1 DA) + + + m4cashat__4 + Cash Attack (Barcrest) (MPU4) (CSA 1.1 B) + + + m4cashat__5 + Cash Attack (Barcrest) (MPU4) (CSA 1.1 DB) + + + m4cashat__6 + Cash Attack (Barcrest) (MPU4) (CSA 1.1 D) + + + m4cashat__7 + Cash Attack (Barcrest) (MPU4) (CSA 1.1 DH) + + + m4cashat__8 + Cash Attack (Barcrest) (MPU4) (CSA 1.1 DK) + + + m4cashat__9 + Cash Attack (Barcrest) (MPU4) (CSA 1.1 DR) + + + m4cashat__a + Cash Attack (Barcrest) (MPU4) (CAA 2.2 DA) + + + m4cashat__aa + Cash Attack (Barcrest) (MPU4) (CSA 1.1 DY) + + + m4cashat__ab + Cash Attack (Barcrest) (MPU4) (CSA 1.1 H) + + + m4cashat__ac + Cash Attack (Barcrest) (MPU4) (CSA 1.1 K) + + + m4cashat__ad + Cash Attack (Barcrest) (MPU4) (CSA 1.1 R) + + + m4cashat__ae + Cash Attack (Barcrest) (MPU4) (CSA 1.1) + + + m4cashat__af + Cash Attack (Barcrest) (MPU4) (CSA 1.1 Y) + + + m4cashat__ag + Cash Attack (Barcrest) (MPU4) (CSA 1.2 DA) + + + m4cashat__ah + Cash Attack (Barcrest) (MPU4) (CSA 1.2 B) + + + m4cashat__ai + Cash Attack (Barcrest) (MPU4) (CSA 1.2 DB) + + + m4cashat__aj + Cash Attack (Barcrest) (MPU4) (CSA 1.2 D) + + + m4cashat__ak + Cash Attack (Barcrest) (MPU4) (CSA 1.2 DH) + + + m4cashat__al + Cash Attack (Barcrest) (MPU4) (CSA 1.2 DK) + + + m4cashat__am + Cash Attack (Barcrest) (MPU4) (CSA 1.2 DR) + + + m4cashat__an + Cash Attack (Barcrest) (MPU4) (CSA 1.2 DY) + + + m4cashat__ao + Cash Attack (Barcrest) (MPU4) (CSA 1.2 H) + + + m4cashat__ap + Cash Attack (Barcrest) (MPU4) (CSA 1.2 K) + + + m4cashat__aq + Cash Attack (Barcrest) (MPU4) (CSA 1.2 R) + + + m4cashat__ar + Cash Attack (Barcrest) (MPU4) (CSA 1.2 Y) + + + m4cashat__b + Cash Attack (Barcrest) (MPU4) (CAA 2.2 B) + + + m4cashat__c + Cash Attack (Barcrest) (MPU4) (CAA 2.2 DB) + + + m4cashat__d + Cash Attack (Barcrest) (MPU4) (CAA 2.2 D) + + + m4cashat__e + Cash Attack (Barcrest) (MPU4) (CAA 2.2 DH) + + + m4cashat__f + Cash Attack (Barcrest) (MPU4) (CAA 2.2 DK) + + + m4cashat__g + Cash Attack (Barcrest) (MPU4) (CAA 2.2 DR) + + + m4cashat__h + Cash Attack (Barcrest) (MPU4) (CAA 2.2 DY) + + + m4cashat__i + Cash Attack (Barcrest) (MPU4) (CAA 2.2 H) + + + m4cashat__j + Cash Attack (Barcrest) (MPU4) (CAA 2.2 K) + + + m4cashat__k + Cash Attack (Barcrest) (MPU4) (CAA 2.2 R) + + + m4cashat__l + Cash Attack (Barcrest) (MPU4) (CAA 2.2) + + + m4cashat__m + Cash Attack (Barcrest) (MPU4) (CAA 2.2 Y) + + + m4cashat__n + Cash Attack (Barcrest) (MPU4) (CAA 2.3 DA) + + + m4cashat__o + Cash Attack (Barcrest) (MPU4) (CAA 2.3 B) + + + m4cashat__p + Cash Attack (Barcrest) (MPU4) (CAA 2.3 DB) + + + m4cashat__q + Cash Attack (Barcrest) (MPU4) (CAA 2.3 D) + + + m4cashat__r + Cash Attack (Barcrest) (MPU4) (CAA 2.3 DH) + + + m4cashat__s + Cash Attack (Barcrest) (MPU4) (CAA 2.3 DK) + + + m4cashat__t + Cash Attack (Barcrest) (MPU4) (CAA 2.3 DR) + + + m4cashat__u + Cash Attack (Barcrest) (MPU4) (CAA 2.3 DY) + + + m4cashat__v + Cash Attack (Barcrest) (MPU4) (CAA 2.3 H) + + + m4cashat__w + Cash Attack (Barcrest) (MPU4) (CAA 2.3 K) + + + m4cashat__x + Cash Attack (Barcrest) (MPU4) (CAA 2.3 R) + + + m4cashat__y + Cash Attack (Barcrest) (MPU4) (CAA 2.3) + + + m4cashat__z + Cash Attack (Barcrest) (MPU4) (CAA 2.3 Y) + + + m4cashcn + Cash Connect (Barcrest) (MPU4) (CCO 3.2) + + + m4cashco + Cash Counter (Barcrest) (MPU4) (C3 2.4) + + + m4cashcoa + Cash Counter (Barcrest) (MPU4) (C3 1.8) + + + m4cashcob + Cash Counter (Barcrest) (MPU4) (CO 0.5) + + + m4cashcoc + Cash Counter (Barcrest) (MPU4) (C3 3.1) + + + m4cashcod + Cash Connect (Barcrest) (MPU4) (C3 2.0) + + + m4cashln + Cash Lines (Barcrest) (MPU4) (CLS 0.4) + + + m4cashln__0 + Cash Lines (Barcrest) (MPU4) (CLI 1.2 R) + + + m4cashln__1 + Cash Lines (Barcrest) (MPU4) (CLI 1.2) + + + m4cashln__2 + Cash Lines (Barcrest) (MPU4) (CLI 1.2 Y) + + + m4cashln__3 + Cash Lines (Barcrest) (MPU4) (CLS 0.3 AD) + + + m4cashln__4 + Cash Lines (Barcrest) (MPU4) (CLS 0.3 B) + + + m4cashln__5 + Cash Lines (Barcrest) (MPU4) (CLS 0.3 BD) + + + m4cashln__6 + Cash Lines (Barcrest) (MPU4) (CLS 0.3 C) + + + m4cashln__7 + Cash Lines (Barcrest) (MPU4) (CLS 0.3 D) + + + m4cashln__8 + Cash Lines (Barcrest) (MPU4) (CLS 0.3 DH) + + + m4cashln__9 + Cash Lines (Barcrest) (MPU4) (CLS 0.3 KD) + + + m4cashln__a + Cash Lines (Barcrest) (MPU4) (CLI 1.1, hack) + + + m4cashln__a0 + Cash Lines (Barcrest) (MPU4) (NCC 1.0 RD) + + + m4cashln__a1 + Cash Lines (Barcrest) (MPU4) (NCC 1.0 YD) + + + m4cashln__a2 + Cash Lines (Barcrest) (MPU4) (NCC 1.0 H) + + + m4cashln__a3 + Cash Lines (Barcrest) (MPU4) (NCC 1.0 K) + + + m4cashln__a4 + Cash Lines (Barcrest) (MPU4) (NCC 1.0 R) + + + m4cashln__a5 + Cash Lines (Barcrest) (MPU4) (NCC 1.0) + + + m4cashln__a6 + Cash Lines (Barcrest) (MPU4) (NCC 1.0 Y) + + + m4cashln__a7 + Cash Lines (Barcrest) (MPU4) (NCL 1.1 AD) + + + m4cashln__a8 + Cash Lines (Barcrest) (MPU4) (NCL 1.1 B) + + + m4cashln__a9 + Cash Lines (Barcrest) (MPU4) (NCL 1.1 BD) + + + m4cashln__aa + Cash Lines (Barcrest) (MPU4) (CLS 0.3 RD) + + + m4cashln__ab + Cash Lines (Barcrest) (MPU4) (CLS 0.3 YD) + + + m4cashln__ac + Cash Lines (Barcrest) (MPU4) (CLS 0.3 H) + + + m4cashln__ad + Cash Lines (Barcrest) (MPU4) (CLS 0.3 K) + + + m4cashln__ae + Cash Lines (Barcrest) (MPU4) (CLS 0.3 R) + + + m4cashln__af + Cash Lines (Barcrest) (MPU4) (CLS 0.3) + + + m4cashln__ag + Cash Lines (Barcrest) (MPU4) (CLS 0.3 Y) + + + m4cashln__ah + Cash Lines (Barcrest) (MPU4) (CLS 0.4 AD) + + + m4cashln__ai + Cash Lines (Barcrest) (MPU4) (CLS 0.4 B) + + + m4cashln__aj + Cash Lines (Barcrest) (MPU4) (CLS 0.4 BD) + + + m4cashln__ak + Cash Lines (Barcrest) (MPU4) (CLS 0.4 C) + + + m4cashln__al + Cash Lines (Barcrest) (MPU4) (CLS 0.4 D) + + + m4cashln__am + Cash Lines (Barcrest) (MPU4) (CLS 0.4 DH) + + + m4cashln__an + Cash Lines (Barcrest) (MPU4) (CLS 0.4 KD) + + + m4cashln__ao + Cash Lines (Barcrest) (MPU4) (CLS 0.4 RD) + + + m4cashln__ap + Cash Lines (Barcrest) (MPU4) (CLS 0.4 YD) + + + m4cashln__aq + Cash Lines (Barcrest) (MPU4) (CLS 0.4 H) + + + m4cashln__ar + Cash Lines (Barcrest) (MPU4) (CLS 0.4 K) + + + m4cashln__as + Cash Lines (Barcrest) (MPU4) (CLS 0.4 R) + + + m4cashln__at + Cash Lines (Barcrest) (MPU4) (CLS 0.4 Y) + + + m4cashln__au + Cash Lines (Barcrest) (MPU4) (NCC 1.0 AD) + + + m4cashln__av + Cash Lines (Barcrest) (MPU4) (NCC 1.0 B) + + + m4cashln__aw + Cash Lines (Barcrest) (MPU4) (NCC 1.0 BD) + + + m4cashln__ax + Cash Lines (Barcrest) (MPU4) (NCC 1.0 D) + + + m4cashln__ay + Cash Lines (Barcrest) (MPU4) (NCC 1.0 DH) + + + m4cashln__az + Cash Lines (Barcrest) (MPU4) (NCC 1.0 KD) + + + m4cashln__b + Cash Lines (Barcrest) (MPU4) (CLS 0.3, hack) + + + m4cashln__ba + Cash Lines (Barcrest) (MPU4) (NCL 1.1 D) + + + m4cashln__bb + Cash Lines (Barcrest) (MPU4) (NCL 1.1 DH) + + + m4cashln__bc + Cash Lines (Barcrest) (MPU4) (NCL 1.1 KD) + + + m4cashln__bd + Cash Lines (Barcrest) (MPU4) (NCL 1.1 RD) + + + m4cashln__be + Cash Lines (Barcrest) (MPU4) (NCL 1.1 YD) + + + m4cashln__bf + Cash Lines (Barcrest) (MPU4) (NCL 1.1 H) + + + m4cashln__bg + Cash Lines (Barcrest) (MPU4) (NCL 1.1 K) + + + m4cashln__bh + Cash Lines (Barcrest) (MPU4) (NCL 1.1 R) + + + m4cashln__bi + Cash Lines (Barcrest) (MPU4) (NCL 1.1) + + + m4cashln__bj + Cash Lines (Barcrest) (MPU4) (NCL 1.1 Y) + + + m4cashln__c + Cash Lines (Barcrest) (MPU4) (CLI 1.0) + + + m4cashln__d + Cash Lines (Barcrest) (MPU4) (CLI 1.1 AD) + + + m4cashln__e + Cash Lines (Barcrest) (MPU4) (CLI 1.1 B) + + + m4cashln__f + Cash Lines (Barcrest) (MPU4) (CLI 1.1 BD) + + + m4cashln__g + Cash Lines (Barcrest) (MPU4) (CLI 1.1 D) + + + m4cashln__h + Cash Lines (Barcrest) (MPU4) (CLI 1.1 DH) + + + m4cashln__i + Cash Lines (Barcrest) (MPU4) (CLI 1.1 KD) + + + m4cashln__j + Cash Lines (Barcrest) (MPU4) (CLI 1.1 RD) + + + m4cashln__k + Cash Lines (Barcrest) (MPU4) (CLI 1.1 YD) + + + m4cashln__l + Cash Lines (Barcrest) (MPU4) (CLI 1.1 H) + + + m4cashln__m + Cash Lines (Barcrest) (MPU4) (CLI 1.1 K) + + + m4cashln__n + Cash Lines (Barcrest) (MPU4) (CLI 1.1 R) + + + m4cashln__o + Cash Lines (Barcrest) (MPU4) (CLI 1.1) + + + m4cashln__p + Cash Lines (Barcrest) (MPU4) (CLI 1.1 Y) + + + m4cashln__q + Cash Lines (Barcrest) (MPU4) (CLI 1.2 AD) + + + m4cashln__r + Cash Lines (Barcrest) (MPU4) (CLI 1.2 B) + + + m4cashln__s + Cash Lines (Barcrest) (MPU4) (CLI 1.2 BD) + + + m4cashln__t + Cash Lines (Barcrest) (MPU4) (CLI 1.2 D) + + + m4cashln__u + Cash Lines (Barcrest) (MPU4) (CLI 1.2 DH) + + + m4cashln__v + Cash Lines (Barcrest) (MPU4) (CLI 1.2 KD) + + + m4cashln__w + Cash Lines (Barcrest) (MPU4) (CLI 1.2 RD) + + + m4cashln__x + Cash Lines (Barcrest) (MPU4) (CLI 1.2 YD) + + + m4cashln__y + Cash Lines (Barcrest) (MPU4) (CLI 1.2 H) + + + m4cashln__z + Cash Lines (Barcrest) (MPU4) (CLI 1.2 K) + + + m4cashmn + Cash Machine (Barcrest) (MPU4) (CMA 0.7) + + + m4cashmn__0 + Cash Machine (Barcrest) (MPU4) (CMH 0.6 BD) + + + m4cashmn__1 + Cash Machine (Barcrest) (MPU4) (CMH 0.6 C) + + + m4cashmn__2 + Cash Machine (Barcrest) (MPU4) (CMH 0.6 D) + + + m4cashmn__3 + Cash Machine (Barcrest) (MPU4) (CMH 0.6 KD) + + + m4cashmn__4 + Cash Machine (Barcrest) (MPU4) (CMH 0.6 RD) + + + m4cashmn__5 + Cash Machine (Barcrest) (MPU4) (CMH 0.6 YD) + + + m4cashmn__6 + Cash Machine (Barcrest) (MPU4) (CMH 0.6 K) + + + m4cashmn__7 + Cash Machine (Barcrest) (MPU4) (CMH 0.6 R) + + + m4cashmn__8 + Cash Machine (Barcrest) (MPU4) (CMH 0.6) + + + m4cashmn__9 + Cash Machine (Barcrest) (MPU4) (CMH 0.6 Y) + + + m4cashmn__a + Cash Machine (Barcrest) (MPU4) (CMH 0.2) + + + m4cashmn__aa + Cash Machine (Barcrest) (MPU4) (CMH 0.7 AD) + + + m4cashmn__ab + Cash Machine (Barcrest) (MPU4) (CMH 0.7 B) + + + m4cashmn__ac + Cash Machine (Barcrest) (MPU4) (CMH 0.7 BD) + + + m4cashmn__ad + Cash Machine (Barcrest) (MPU4) (CMH 0.7 C) + + + m4cashmn__ae + Cash Machine (Barcrest) (MPU4) (CMH 0.7 D) + + + m4cashmn__af + Cash Machine (Barcrest) (MPU4) (CMH 0.7 KD) + + + m4cashmn__ag + Cash Machine (Barcrest) (MPU4) (CMH 0.7 RD) + + + m4cashmn__ah + Cash Machine (Barcrest) (MPU4) (CMH 0.7 YD) + + + m4cashmn__ai + Cash Machine (Barcrest) (MPU4) (CMH 0.7 K) + + + m4cashmn__aj + Cash Machine (Barcrest) (MPU4) (CMH 0.7 R) + + + m4cashmn__ak + Cash Machine (Barcrest) (MPU4) (CMH 0.7) + + + m4cashmn__al + Cash Machine (Barcrest) (MPU4) (CMH 0.7 Y) + + + m4cashmn__b + Cash Machine (Barcrest) (MPU4) (CMA 0.7 AD) + + + m4cashmn__c + Cash Machine (Barcrest) (MPU4) (CMA 0.7 B) + + + m4cashmn__d + Cash Machine (Barcrest) (MPU4) (CMA 0.7 BD) + + + m4cashmn__e + Cash Machine (Barcrest) (MPU4) (CMA 0.7 C) + + + m4cashmn__f + Cash Machine (Barcrest) (MPU4) (CMA 0.7 D) + + + m4cashmn__g + Cash Machine (Barcrest) (MPU4) (CMA 0.7 KD) + + + m4cashmn__h + Cash Machine (Barcrest) (MPU4) (CMA 0.7 RD) + + + m4cashmn__i + Cash Machine (Barcrest) (MPU4) (CMA 0.7 YD) + + + m4cashmn__j + Cash Machine (Barcrest) (MPU4) (CMA 0.7 K) + + + m4cashmn__k + Cash Machine (Barcrest) (MPU4) (CMA 0.7 R) + + + m4cashmn__l + Cash Machine (Barcrest) (MPU4) (CMA 0.7 Y) + + + m4cashmn__m + Cash Machine (Barcrest) (MPU4) (CMA 0.8 AD) + + + m4cashmn__n + Cash Machine (Barcrest) (MPU4) (CMA 0.8 B) + + + m4cashmn__o + Cash Machine (Barcrest) (MPU4) (CMA 0.8 BD) + + + m4cashmn__p + Cash Machine (Barcrest) (MPU4) (CMA 0.8 C) + + + m4cashmn__q + Cash Machine (Barcrest) (MPU4) (CMA 0.8 D) + + + m4cashmn__r + Cash Machine (Barcrest) (MPU4) (CMA 0.8 KD) + + + m4cashmn__s + Cash Machine (Barcrest) (MPU4) (CMA 0.8 RD) + + + m4cashmn__t + Cash Machine (Barcrest) (MPU4) (CMA 0.8 YD) + + + m4cashmn__u + Cash Machine (Barcrest) (MPU4) (CMA 0.8 K) + + + m4cashmn__v + Cash Machine (Barcrest) (MPU4) (CMA 0.8 R) + + + m4cashmn__w + Cash Machine (Barcrest) (MPU4) (CMA 0.8) + + + m4cashmn__x + Cash Machine (Barcrest) (MPU4) (CMA 0.8 Y) + + + m4cashmn__y + Cash Machine (Barcrest) (MPU4) (CMH 0.6 AD) + + + m4cashmn__z + Cash Machine (Barcrest) (MPU4) (CMH 0.6 B) + + + m4cashmn__za + Cash Machine (Barcrest) (MPU4) (CMH 0.6 Y, hack?) + + + m4cashmn__zb + Cash Machine (Barcrest) (MPU4) (CMA 0.7 C, hack?) + + + m4cashmx + Cash Matrix (Barcrest) (MPU4) (CM 1.7, set 1) + + + m4cashmxa + Cash Matrix (Barcrest) (MPU4) (CM 1.7, set 2) + + + m4cashzn + Cash Zone (Barcrest) (MPU4) (CAZ 1.2) + + + m4cashzna + Cash Zone (Barcrest) (MPU4) (CAZ 1.5) + + + m4casmul + Casino Multiplay (MPU4) + + + m4cbing + Cherry Bingo (Redpoint Systems) (MPU4) + + + m4ccc + Criss Cross Crazy (Coinworld) (MPU4?) + + + m4cclimb + Crazy Climber (Crystal) (MPU4) (set 1) + + + m4cclimba + Crazy Climber (Crystal) (MPU4) (set 2) + + + m4ccop + Cash Cops (MPU4?) (set 1) + + + m4ccopa + Cash Cops (MPU4?) (set 2) + + + m4ccopb + Cash Cops (MPU4?) (set 3) + + + m4celclb + Celebration Club (Barcrest) (MPU4) (CEL 1.5) + + + m4centpt + Centrepoint (Barcrest) (MPU4) (DU 1.3) + + + m4ceptr + Ceptor (Barcrest) (Dutch) (MPU4) (DCE 1.0) + + + m4cfinln + Cup Final (Nova) (MPU4) (set 1) + + + m4cfinln__a + Cup Final (Nova) (MPU4) (set 2) + + + m4chacec + Chase The Ace [Cards] (Empire) (MPU4, set 1) + + + m4chaceca + Chase The Ace [Cards] (Empire) (MPU4, set 2) + + + m4chacef + Chase The Ace [Fruits] (Empire) (MPU4, set 1) + + + m4chacefa + Chase The Ace [Fruits] (Empire) (MPU4, set 2) + + + m4chacefb + Chase The Ace [Fruits] (Empire) (MPU4, set 3) + + + m4chacefc + Chase The Ace [Fruits] (Empire) (MPU4, set 4) + + + m4chasei + Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 1) + + + m4chaseia + Chase Invaders (Barcrest) (MPU4) (8V1 0.1, hack, set 1) + + + m4chaseib + Chase Invaders (Barcrest) (MPU4) (8V1 0.1, hack, set 2) + + + m4chaseic + Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 2) + + + m4chaseid + Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 3) + + + m4chaseie + Chase Invaders (Barcrest) (MPU4) (CI2 0.1, set 4) + + + m4chaseig + Chase Invaders (Barcrest) (MPU4) (8V1 0.1, hack, set 3) + + + m4cheryo + Cherryo (Barcrest) (Dutch) (MPU4) (DCH 1.4) + + + m4cjdlx + Crown Jewels Deluxe (Barcrest) (German) (MPU4) (CJG 0.4) + + + m4clab + Cash Lab (Qps) (MPU4) (set 1) + + + m4clab__a + Cash Lab (Qps) (MPU4) (set 2) + + + m4clab__b + Cash Lab (Qps) (MPU4) (set 3) + + + m4clab__c + Cash Lab (Qps) (MPU4) (set 4) + + + m4clab__d + Cash Lab (Qps) (MPU4) (set 5) + + + m4clab__e + Cash Lab (Qps) (MPU4) (set 6) + + + m4clab__f + Cash Lab (Qps) (MPU4) (set 7) + + + m4clab__g + Cash Lab (Qps) (MPU4) (set 8) + + + m4clab__h + Cash Lab (Qps) (MPU4) (set 9) + + + m4clab__i + Cash Lab (Qps) (MPU4) (set 10) + + + m4clab__j + Cash Lab (Qps) (MPU4) (set 11) + + + m4class + First Class (Barcrest) (Dutch) (MPU4) (DFC 2.0, set 1) + + + m4classa + First Class (Barcrest) (Dutch) (MPU4) (DFC 2.0, set 2) + + + m4clbclm + Club Climber (Barcrest) (MPU4, C1C 3.3) + + + m4clbclma + Club Climber (Barcrest) (MPU4, CC 4.5) + + + m4clbcls + Club Classic (Barcrest) (MPU4) (CI 1.1) + + + m4clbcnt + Club Connect (Barcrest) (MPU4) (CON 1.2) + + + m4clbcnta + Club Connect (Barcrest) (MPU4) (CON 1.0) + + + m4clbcntb + Club Connect (Barcrest) (MPU4) (CON 1.1) + + + m4clbcntc + Club Connect (Barcrest) (MPU4) (CON 1.5, set 1) + + + m4clbcntd + Club Connect (Barcrest) (MPU4) (CON 1.5, set 2) + + + m4clbdbl + Club Double (Barcrest) (MPU4) (CD 1.6) + + + m4clbrpl + Club Replay (PCP) (MPU4) (01) + + + m4clbshf + Club Shuffle (Barcrest) (MPU4) (CSS 1.0) + + + m4clbveg + Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 1) + + + m4clbvega + Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 2) + + + m4clbvegb + Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 3) + + + m4clbvegc + Club Vegas (Barcrest) (MPU4) (CLA 2.4, set 4) + + + m4clbx + Club X (Barcrest) (MPU4) (CLX 1.2, set 1) + + + m4clbxa + Club X (Barcrest) (MPU4) (CLX 1.2, set 2) + + + m4clbxb + Club X (Barcrest) (MPU4) (CLX 1.2, set 3) + + + m4click + Clickity Click (Barcrest) (MPU4 w/ Plasma DMD) + + + m4clr + MPU4 Meter Clear ROM + + + m4cmont + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 1) + + + m4cmont_1 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 2) + + + m4cmont_10 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 11) + + + m4cmont_11 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 12) + + + m4cmont_12 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 13) + + + m4cmont_13 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 14) + + + m4cmont_2 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 3) + + + m4cmont_3 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 4) + + + m4cmont_4 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 5) + + + m4cmont_5 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 6) + + + m4cmont_6 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 7) + + + m4cmont_7 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 8) + + + m4cmont_8 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 9) + + + m4cmont_9 + Casino Monte Carlo (Avantime?) (MPU4) (Czech, set 10) + + + m4cmont_gt1 + Casino Monte Carlo (Avantime?) (MPU4) (GTR, set 1) + + + m4cmont_gt2 + Casino Monte Carlo (Avantime?) (MPU4) (GTR, set 2) + + + m4cmont_gt3 + Casino Monte Carlo (Avantime?) (MPU4) (GTR, set 3) + + + m4cmont_l1 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 1) + + + m4cmont_l10 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 10) + + + m4cmont_l11 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 11) + + + m4cmont_l12 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 12) + + + m4cmont_l13 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 13) + + + m4cmont_l14 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 14) + + + m4cmont_l15 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 15) + + + m4cmont_l16 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 16) + + + m4cmont_l2 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 2) + + + m4cmont_l3 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 3) + + + m4cmont_l4 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 4) + + + m4cmont_l5 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 5) + + + m4cmont_l6 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 6) + + + m4cmont_l7 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 7) + + + m4cmont_l8 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 8) + + + m4cmont_l9 + Casino Monte Carlo (Avantime?) (MPU4) (Latvia, set 9) + + + m4cmont_r1 + Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 1) + + + m4cmont_r2 + Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 2) + + + m4cmont_r3 + Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 3) + + + m4cmont_r4 + Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 4) + + + m4cmont_r5 + Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 5) + + + m4cmont_r6 + Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 6) + + + m4cmont_r7 + Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 7) + + + m4cmont_r8 + Casino Monte Carlo (Avantime?) (MPU4) (Russia, set 8) + + + m4cmont_u1 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 1) + + + m4cmont_u10 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 10) + + + m4cmont_u11 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 11) + + + m4cmont_u12 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 12) + + + m4cmont_u13 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 13) + + + m4cmont_u14 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 14) + + + m4cmont_u15 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 15) + + + m4cmont_u16 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 16) + + + m4cmont_u17 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 17) + + + m4cmont_u18 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 18) + + + m4cmont_u19 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 19) + + + m4cmont_u2 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 2) + + + m4cmont_u20 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 20) + + + m4cmont_u21 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 21) + + + m4cmont_u22 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 22) + + + m4cmont_u23 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 23) + + + m4cmont_u24 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 24) + + + m4cmont_u25 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 25) + + + m4cmont_u26 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 26) + + + m4cmont_u27 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 27) + + + m4cmont_u3 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 3) + + + m4cmont_u4 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 4) + + + m4cmont_u5 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 5) + + + m4cmont_u6 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 6) + + + m4cmont_u7 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 7) + + + m4cmont_u8 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 8) + + + m4cmont_u9 + Casino Monte Carlo (Avantime?) (MPU4) (Ukraine, set 9) + + + m4cojok + Carry On Joker (Barcrest) (MPU4) (COJ 2.1, set 1) + + + m4cojok__a + Carry On Joker (Barcrest) (MPU4) (COJ 2.1, set 2) + + + m4cojok__b + Carry On Joker (Barcrest) (MPU4) (COJ 2.1, set 3) + + + m4cojok__c + Carry On Joker (Barcrest) (MPU4) (COJ 2.1, set 4) + + + m4cojok__d + Carry On Joker (Barcrest) (MPU4) (COJ 2.1, set 5) + + + m4cojok__e + Carry On Joker (Barcrest) (MPU4) (COJ 2.1, set 6) + + + m4cojok__f + Carry On Joker (Barcrest) (MPU4) (COJ 2.1, set 7) + + + m4coloss + Colossus (Mdm) (MPU4, set 1) + + + m4colossa + Colossus (Mdm) (MPU4, set 2) + + + m4colossb + Colossus (Mdm) (MPU4, set 3) + + + m4colossc + Colossus (Mdm) (MPU4, set 4) + + + m4colossd + Colossus (Mdm) (MPU4, set 5) + + + m4colosse + Colossus (Mdm) (MPU4, set 6) + + + m4colossf + Colossus (Mdm) (MPU4, set 7) + + + m4colossg + Colossus (Mdm) (MPU4, set 8) + + + m4coney + Coney Island (Qps) (MPU4) + + + m4conn4 + Connect 4 + + + m4copcsh + Coppa Cash (MPU4) (FC 2.0) + + + m4coscas + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0) + + + m4coscas__a + Cosmic Casinos (Barcrest) (MPU4) (CC__6.0, hack) + + + m4coscas__b + Cosmic Casinos (Barcrest) (MPU4) (CC__7.0 Y) + + + m4coscas__c + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0, hack) + + + m4coscas__d + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 C) + + + m4coscas__e + Cosmic Casinos (Barcrest) (MPU4) (CC__7.0) + + + m4coscas__f + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 YD) + + + m4coscas__g + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 YCD) + + + m4coscas__h + Cosmic Casinos (Barcrest) (MPU4) (CC__7.0 YD) + + + m4coscas__i + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 D) + + + m4coscas__j + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 CD) + + + m4coscas__k + Cosmic Casinos (Barcrest) (MPU4) (CC__7.0 D) + + + m4coscas__l + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 Y) + + + m4coscas__m + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 YC) + + + m4coscas__n + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 K) + + + m4coscas__o + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 CK) + + + m4coscas__p + Cosmic Casinos (Barcrest) (MPU4) (CC__7.0 K) + + + m4coscas__q + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 B) + + + m4coscas__r + Cosmic Casinos (Barcrest) (MPU4) (CC__7.0 B) + + + m4coscas__s + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 BCAD) + + + m4coscas__t + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 BCR) + + + m4coscas__u + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 YDH) + + + m4coscas__v + Cosmic Casinos (Barcrest) (MPU4) (CC__3.0 YCDH) + + + m4cpfinl + Cup Final (BWB) (MPU4) (set 1) + + + m4cpfinl__a + Cup Final (BWB) (MPU4) (set 2) + + + m4cpfinl__b + Cup Final (BWB) (MPU4) (set 3) + + + m4cpfinl__c + Cup Final (BWB) (MPU4) (set 4) + + + m4cpfinl__d + Cup Final (BWB) (MPU4) (set 5) + + + m4cpfinl__e + Cup Final (BWB) (MPU4) (set 6) + + + m4cpfinl__f + Cup Final (BWB) (MPU4) (set 7) + + + m4cpfinl__g + Cup Final (BWB) (MPU4) (set 8) + + + m4cpfinl__h + Cup Final (BWB) (MPU4) (set 9) + + + m4cpfinl__i + Cup Final (BWB) (MPU4) (set 10) + + + m4cpfinl__j + Cup Final (BWB) (MPU4) (set 11) + + + m4cpfinl__k + Cup Final (BWB) (MPU4) (set 12) + + + m4cpycat + Copy Cat (Barcrest) (MPU4) (CO 1.1 YD) + + + m4cpycat__0 + Copy Cat (Barcrest) (MPU4) (CO 4.0 YD) + + + m4cpycat__1 + Copy Cat (Barcrest) (MPU4) (CO 2.4 D) + + + m4cpycat__2 + Copy Cat (Barcrest) (MPU4) (CO 4.0 D) + + + m4cpycat__3 + Copy Cat (Barcrest) (MPU4) (CO 4.0 Y) + + + m4cpycat__4 + Copy Cat (Barcrest) (MPU4) (CO 2.4 K) + + + m4cpycat__5 + Copy Cat (Barcrest) (MPU4) (CO 2.4 B) + + + m4cpycat__6 + Copy Cat (Barcrest) (MPU4) (CO 2.4 BD) + + + m4cpycat__7 + Copy Cat (Barcrest) (MPU4) (CO 2.4 BAD) + + + m4cpycat__8 + Copy Cat (Barcrest) (MPU4) (CO 2.4 BR) + + + m4cpycat__a + Copy Cat (Barcrest) (MPU4) (CO 1.1 D) + + + m4cpycat__b + Copy Cat (Barcrest) (MPU4) (CO 1.1 Y) + + + m4cpycat__c + Copy Cat (Barcrest) (MPU4) (CO 1.1 K) + + + m4cpycat__d + Copy Cat (Barcrest) (MPU4) (CO 1.1 B) + + + m4cpycat__e + Copy Cat (Barcrest) (MPU4) (CO 1.1 BAD) + + + m4cpycat__f + Copy Cat (Barcrest) (MPU4) (CO 4.1 BAD) + + + m4cpycat__g + Copy Cat (Barcrest) (MPU4) (CO 1.1 BR) + + + m4cpycat__h + Copy Cat (Barcrest) (MPU4) (CO 1.3 YD) + + + m4cpycat__i + Copy Cat (Barcrest) (MPU4) (CO 2.0 YD) + + + m4cpycat__j + Copy Cat (Barcrest) (MPU4) (CO 3.0 YD) + + + m4cpycat__k + Copy Cat (Barcrest) (MPU4) (CO 1.3 D) + + + m4cpycat__l + Copy Cat (Barcrest) (MPU4) (CO 2.0 D) + + + m4cpycat__m + Copy Cat (Barcrest) (MPU4) (CO 1.3 Y) + + + m4cpycat__n + Copy Cat (Barcrest) (MPU4) (CO 2.0 Y) + + + m4cpycat__o + Copy Cat (Barcrest) (MPU4) (CO 3.0 Y) + + + m4cpycat__p + Copy Cat (Barcrest) (MPU4) (CO 1.3 K) + + + m4cpycat__q + Copy Cat (Barcrest) (MPU4) (CO 2.0 K) + + + m4cpycat__r + Copy Cat (Barcrest) (MPU4) (CO 3.0 K) + + + m4cpycat__s + Copy Cat (Barcrest) (MPU4) (CO 1.3 B) + + + m4cpycat__t + Copy Cat (Barcrest) (MPU4) (CO 2.0 B) + + + m4cpycat__u + Copy Cat (Barcrest) (MPU4) (CO 1.3 BAD) + + + m4cpycat__v + Copy Cat (Barcrest) (MPU4) (CO 2.0 BAD) + + + m4cpycat__w + Copy Cat (Barcrest) (MPU4) (CO 3.0 BAD) + + + m4cpycat__x + Copy Cat (Barcrest) (MPU4) (CO 1.3 BR) + + + m4cpycat__y + Copy Cat (Barcrest) (MPU4) (CO 2.0 BR) + + + m4cpycat__z + Copy Cat (Barcrest) (MPU4) (CO 2.4 YD) + + + m4crdome + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2) + + + m4crdome__a + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2 C) + + + m4crdome__b + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2 AD) + + + m4crdome__c + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2 B) + + + m4crdome__d + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2 BD) + + + m4crdome__e + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2 D) + + + m4crdome__f + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2 KD) + + + m4crdome__g + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2 RD) + + + m4crdome__h + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2 YD) + + + m4crdome__i + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2 R) + + + m4crdome__j + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2 K) + + + m4crdome__k + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2 Y) + + + m4crdome__l + The Crystal Dome (Barcrest) (MPU4) (CD2 1.2, hack) + + + m4crdome__m + The Crystal Dome (Barcrest) (MPU4) (CD2 1.0 C) + + + m4crdome__n + The Crystal Dome (Barcrest) (MPU4) (CD2 0.2 C) + + + m4crfire + Crossfire (Empire) (MPU4, set 1) + + + m4crfirea + Crossfire (Empire) (MPU4, set 2) + + + m4crjwl + Crown Jewels Club (Barcrest) (MPU4) (CJC 1.5, set 1) + + + m4crjwl2 + Crown Jewels Mk II Club (Barcrest) (MPU4) (CJ2 1.4, set 1) + + + m4crjwl2a + Crown Jewels Mk II Club (Barcrest) (MPU4) (CJ2 1.4, set 2) + + + m4crjwl2b + Crown Jewels Mk II Club (Barcrest) (MPU4) (CJ2 1.4, set 3) + + + m4crjwla + Crown Jewels Club (Barcrest) (MPU4) (CJC 1.5, set 2) + + + m4crjwlb + Crown Jewels Club (Barcrest) (MPU4) (CJC 1.5, set 3) + + + m4crjwlc + Crown Jewels Club (Barcrest) (MPU4) (CJN 0.2) + + + m4crkpot + Crackpot 100 Club (Barcrest) (MPU4) (C1P 1.2) + + + m4crkpota + Crackpot 100 Club (Barcrest) (MPU4) (CP 3.8) + + + m4crkpotb + Crackpot 100 Club (Barcrest) (MPU4) (CP 3.1) + + + m4crmaze + The Crystal Maze (Barcrest) (MPU4) (CRM 3.0) + + + m4crmaze__c + The Crystal Maze (Barcrest) (MPU4) (CRM 2.3) + + + m4crmaze__d + The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 AD) + + + m4crmaze__e + The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 B) + + + m4crmaze__f + The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 BD) + + + m4crmaze__g + The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 C) + + + m4crmaze__h + The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 D) + + + m4crmaze__i + The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 KD) + + + m4crmaze__j + The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 YD) + + + m4crmaze__k + The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 K) + + + m4crmaze__l + The Crystal Maze (Barcrest) (MPU4) (CRM 3.0 Y) + + + m4crmaze__m + The Crystal Maze (Barcrest) (MPU4) (CRM 3.0, hack?) + + + m4crmaze__n + The Crystal Maze (BWB / Barcrest) (MPU4) (CRC 0.7, hack?) + + + m4crmaze__o + The Crystal Maze (BWB / Barcrest) (MPU4) (CR5 1.0, hack?) + + + m4crmaze__p + The Crystal Maze (BWB / Barcrest) (MPU4) (CRC 1.3, hack?) + + + m4crmaze__q + The Crystal Maze (BWB / Barcrest) (MPU4) (CR5 2.0, hack?, set 1) + + + m4crmaze__r + The Crystal Maze (BWB / Barcrest) (MPU4) (CR5 2.0, hack?, set 2) + + + m4crmaze__s + The Crystal Maze (BWB / Barcrest) (MPU4) (CR8 1.2, hack?) + + + m4crzbn + Crazy Bingo (Union) (MPU4) + + + m4crzcap + Crazy Capers (Empire) (MPU4, set 1) + + + m4crzcapa + Crazy Capers (Empire) (MPU4, set 2) + + + m4crzcapb + Crazy Capers (Empire) (MPU4, set 3) + + + m4crzcapc + Crazy Capers (Empire) (MPU4, set 4) + + + m4crzcav + Crazy Cavern (Nova) (MPU4) (GCV 0.5) + + + m4crzcl + Crazy Climber Club (Crystal) (MPU4) (set 1) + + + m4crzcla + Crazy Climber Club (Crystal) (MPU4) (set 2) + + + m4crzclb + Crazy Climber Club (Crystal) (MPU4) (set 3) + + + m4crzclc + Crazy Climber Club (Crystal) (MPU4) (set 4) + + + m4crzcld + Crazy Climber Club (Crystal) (MPU4) (set 5) + + + m4crzcsn + Crazy Casino (Nova) (German) (MPU4) (CRZ 0.3) + + + m4crzjk + Crazy Jokers (Nova?) (MPU4) + + + m4crzjwl + Crown Jewels (Barcrest) (German) (MPU4) (GCN 1.1) + + + m4crzjwla + Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 1) + + + m4crzjwlb + Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 4) + + + m4crzjwlc + Crown Jewels (Barcrest) (German) (MPU4) (GCN 0.9) + + + m4crzjwld + Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 1.1, set 2) + + + m4crzjwle + Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 1.1, set 1) + + + m4crzjwlf + Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 2) + + + m4crzjwlg + Crown Jewels (Barcrest) (bootleg) (German) (MPU4) (GCN 0.9, set 3) + + + m4cshenc + Cash Encounters (Barcrest) (MPU4) (CA_ 5.0 C) + + + m4cshenc__a + Cash Encounters (Barcrest) (MPU4) (CA_ 5.0 YCD) + + + m4cshenc__b + Cash Encounters (Barcrest) (MPU4) (CA_ 5.0 CD) + + + m4cshenc__c + Cash Encounters (Barcrest) (MPU4) (CA_ 5.0 CK) + + + m4cshenc__d + Cash Encounters (Barcrest) (MPU4) (CA_ 5.0 BC) + + + m4cshino + Cashino Deluxe (Pcp) (MPU4) + + + m4csoc + Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £10/£15 jackpot) (set 1) + + + m4csoc__a + Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £10/£15 jackpot) (set 2) + + + m4csoc__b + Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £10/£15 jackpot) (set 3) + + + m4csoc__c + Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1) + + + m4csoc__d + Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2) + + + m4csoc__e + Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 3) + + + m4csoc__f + Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 4) + + + m4csoc__g + Championship Soccer (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 1) + + + m4csoc__h + Championship Soccer (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 2) + + + m4csoc__i + Championship Soccer (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) + + + m4csoc__j + Championship Soccer (BWB) (MPU4) (5/10/20/25/30p stake / £8 jackpot, 20/25/30p stake / £15 jackpot) (hack) + + + m4cstrik + Cash Strike (Empire) (MPU4, set 1) + + + m4cstrika + Cash Strike (Empire) (MPU4, set 2) + + + m4cstrikb + Cash Strike (Empire) (MPU4, set 3) + + + m4cstrikc + Cash Strike (Empire) (MPU4, set 4) + + + m4ctn + Tuppenny Nudger Classic (Mdm?) (MPU4) + + + m4cwalk + Cake Walk (Union) (MPU4) + + + m4czne + Cash Zone (bootleg) (MPU4) (CAZ 1.5) + + + m4danced + Dancing Diamonds (BWB) (MPU4) (set 1) + + + m4danced__a + Dancing Diamonds (BWB) (MPU4) (set 2) + + + m4danced__b + Dancing Diamonds (BWB) (MPU4) (set 3) + + + m4danced__c + Dancing Diamonds (BWB) (MPU4) (set 4) + + + m4danced__d + Dancing Diamonds (BWB) (MPU4) (set 5) + + + m4danced__e + Dancing Diamonds (BWB) (MPU4) (set 6) + + + m4danced__f + Dancing Diamonds (BWB) (MPU4) (set 7) + + + m4danced__g + Dancing Diamonds (BWB) (MPU4) (set 8) + + + m4danced__h + Dancing Diamonds (BWB) (MPU4) (set 9) + + + m4danced__i + Dancing Diamonds (BWB) (MPU4) (set 10) + + + m4danced__j + Dancing Diamonds (BWB) (MPU4) (set 11) + + + m4danced__k + Dancing Diamonds (BWB) (MPU4) (set 12) + + + m4danced__l + Dancing Diamonds (BWB) (MPU4) (set 13) + + + m4danced__m + Dancing Diamonds (BWB) (MPU4) (set 14) + + + m4danced__n + Dancing Diamonds (BWB) (MPU4) (set 15) + + + m4danced__o + Dancing Diamonds (BWB) (MPU4) (set 16) + + + m4danced__p + Dancing Diamonds (BWB) (MPU4) (set 17) + + + m4danced__q + Dancing Diamonds (BWB) (MPU4) (set 18) + + + m4danced__r + Dancing Diamonds (BWB) (MPU4) (set 19) + + + m4danced__s + Dancing Diamonds (BWB) (MPU4) (set 20) + + + m4danced__t + Dancing Diamonds (BWB) (MPU4) (set 21) + + + m4danced__u + Dancing Diamonds (BWB) (MPU4) (set 22) + + + m4danced__v + Dancing Diamonds (BWB) (MPU4) (set 23) + + + m4danced__w + Dancing Diamonds (BWB) (MPU4) (set 24) + + + m4daytn + Daytona (BWB) (MPU4) (set 1) + + + m4daytn__a + Daytona (BWB) (MPU4) (set 2) + + + m4daytn__b + Daytona (BWB) (MPU4) (set 3) + + + m4daytn__c + Daytona (BWB) (MPU4) (set 4) + + + m4daytn__d + Daytona (BWB) (MPU4) (set 5) + + + m4daytn__e + Daytona (BWB) (MPU4) (set 6) + + + m4daytn__f + Daytona (BWB) (MPU4) (set 7) + + + m4daytn__g + Daytona (BWB) (MPU4) (set 8) + + + m4daytn__h + Daytona (BWB) (MPU4) (set 9) + + + m4daytn__i + Daytona (BWB) (MPU4) (set 10) + + + m4daytn__j + Daytona (BWB) (MPU4) (set 11) + + + m4daytn__k + Daytona (BWB) (MPU4) (set 12) + + + m4daytn__l + Daytona (BWB) (MPU4) (set 13) + + + m4daytn__m + Daytona (BWB) (MPU4) (set 14) + + + m4daytn__n + Daytona (BWB) (MPU4) (set 15) + + + m4dbl9 + Double 9's (Barcrest) (MPU4) (DU9 1.0) + + + m4dbl9a + Double 9's (Barcrest) (bootleg) (MPU4) (DU9 0.2) + + + m4dblchn + Double Chance (DJE) (MPU4) + + + m4dbldm + Double Diamond Club (Barcrest) (MPU4) (CDD 0.5) + + + m4dbldm__a + Double Diamond Club (Barcrest) (MPU4) (CDD 0.5 D) + + + m4dbldm__b + Double Diamond Club (Barcrest) (MPU4) (CDD 0.5 F) + + + m4dbldm__c + Double Diamond Club (Barcrest) (MPU4) (CDD 0.1 TD) + + + m4dblup + Double Up (Barcrest) (MPU4) (DU 1.5) + + + m4dcrls + Double Crazy Reels (Qps) (MPU4) (set 1) + + + m4dcrls__a + Double Crazy Reels (Qps) (MPU4) (set 2) + + + m4dcrls__b + Double Crazy Reels (Qps) (MPU4) (set 3) + + + m4dcrls__c + Double Crazy Reels (Qps) (MPU4) (set 4) + + + m4dcrls__d + Double Crazy Reels (Qps) (MPU4) (set 5) + + + m4dcrls__e + Double Crazy Reels (Qps) (MPU4) (set 6) + + + m4dcrls__f + Double Crazy Reels (Qps) (MPU4) (set 7) + + + m4dcrls__g + Double Crazy Reels (Qps) (MPU4) (set 8) + + + m4dcrls__h + Double Crazy Reels (Qps) (MPU4) (set 9) + + + m4dcrls__i + Double Crazy Reels (Qps) (MPU4) (set 10) + + + m4dcrls__j + Double Crazy Reels (Qps) (MPU4) (set 11) + + + m4dcrls__k + Double Crazy Reels (Qps) (MPU4) (set 12) + + + m4dcrls__l + Double Crazy Reels (Qps) (MPU4) (set 13) + + + m4dcrls__m + Double Crazy Reels (Qps) (MPU4) (set 14) + + + m4dcrls__n + Double Crazy Reels (Qps) (MPU4) (set 15) + + + m4dcrls__o + Double Crazy Reels (Qps) (MPU4) (set 16) + + + m4dcrls__p + Double Crazy Reels (Qps) (MPU4) (set 17) + + + m4dcrls__q + Double Crazy Reels (Qps) (MPU4) (set 18) + + + m4dcrls__r + Double Crazy Reels (Qps) (MPU4) (set 19) + + + m4ddb + Ding Dong Bells (Coinworld) (MPU4) (set 1) + + + m4ddba + Ding Dong Bells (Coinworld) (MPU4) (set 2) + + + m4denmen + Dennis The Menace (Barcrest) (MPU4) (DEN 1.2) + + + m4denmen_h1 + Dennis The Menace (Barcrest) (MPU4) (DMT 0.1, hack?) + + + m4denmen_h2 + Dennis The Menace (Barcrest) (MPU4) (V1 0.1, hack, set 1) + + + m4denmen_h3 + Dennis The Menace (Barcrest) (MPU4) (V1 0.1, hack, set 2) + + + m4denmend5 + Dennis The Menace (Barcrest) (MPU4) (DM5 0.1) + + + m4denmend5ad + Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 AD) + + + m4denmend5b + Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 B) + + + m4denmend5bd + Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 BD) + + + m4denmend5d + Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 D) + + + m4denmend5k + Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 K) + + + m4denmend5kd + Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 KD) + + + m4denmend5y + Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 Y) + + + m4denmend5yd + Dennis The Menace (Barcrest) (MPU4) (DM5 0.1 YD) + + + m4denmend8 + Dennis The Menace (Barcrest) (MPU4) (DM8 0.1) + + + m4denmend8c + Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 C) + + + m4denmend8d + Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 D) + + + m4denmend8k + Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 K) + + + m4denmend8y + Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 Y) + + + m4denmend8yd + Dennis The Menace (Barcrest) (MPU4) (DM8 0.1 YD) + + + m4denmendnb + Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 B) + + + m4denmendnc + Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 C) + + + m4denmendnd + Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 D) + + + m4denmendnk + Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 K) + + + m4denmendny + Dennis The Menace (Barcrest) (MPU4) (DEN 1.2 Y) + + + m4denmendt + Dennis The Menace (Barcrest) (MPU4) (DMT 0.1) + + + m4denmendtad + Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 AD) + + + m4denmendtb + Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 B) + + + m4denmendtbd + Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 BD) + + + m4denmendtd + Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 D) + + + m4denmendtk + Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 K) + + + m4denmendtkd + Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 KD) + + + m4denmendty + Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 Y) + + + m4denmendtyd + Dennis The Menace (Barcrest) (MPU4) (DMT 0.1 YD) + + + m4dnj + Double Nudge (Cotswold Microsystems) (MPU4) (set 1) + + + m4dnja + Double Nudge (Cotswold Microsystems) (MPU4) (set 2) + + + m4dnjb + Double Nudge (Cotswold Microsystems) (MPU4) (set 3) + + + m4drac + Dracula (Barcrest - Nova) (German) (MPU4) (DRA 2.1) + + + m4draca + Dracula (Barcrest - Nova) (German) (MPU4) (DRA 2.4) + + + m4dracb + Dracula (Barcrest - Nova) (German) (MPU4) (DRA 2.7) + + + m4dragon + Dragon (Nova) (MPU4) (DGL 0.1) + + + m4dtyfre + Duty Free (Barcrest) (MPU4) (DUT 0.4) + + + m4dtyfre_h1 + Duty Free (BWB / Barcrest) (MPU4) (DF4 4.1, hack?) + + + m4dtyfre_h2 + Duty Free (Barcrest) (MPU4) (DFT 0.1, hack?) + + + m4dtyfrebwb + Duty Free (BWB / Barcrest) (MPU4) (DF10 4.3, set 1) + + + m4dtyfrebwb_a + Duty Free (BWB / Barcrest) (MPU4) (DF10 4.3, set 2) + + + m4dtyfrebwb_b + Duty Free (BWB / Barcrest) (MPU4) (DF8 4.2) + + + m4dtyfrebwb_c + Duty Free (BWB / Barcrest) (MPU4) (DF8 2.2, set 1) + + + m4dtyfrebwb_d + Duty Free (BWB / Barcrest) (MPU4) (DF8 2.2, set 2) + + + m4dtyfrebwb_e + Duty Free (BWB / Barcrest) (MPU4) (DF4 4.1) + + + m4dtyfrebwb_f + Duty Free (BWB / Barcrest) (MPU4) (DF4 2.1) + + + m4dtyfrebwb_g + Duty Free (BWB / Barcrest) (MPU4) (DF4 1.1) + + + m4dtyfrebwb_h + Duty Free (BWB / Barcrest) (MPU4) (DFC 2.3) + + + m4dtyfref5 + Duty Free (Barcrest) (MPU4) (DF5 0.3) + + + m4dtyfref5ad + Duty Free (Barcrest) (MPU4) (DF5 0.3 AD) + + + m4dtyfref5b + Duty Free (Barcrest) (MPU4) (DF5 0.3 B) + + + m4dtyfref5bd + Duty Free (Barcrest) (MPU4) (DF5 0.3 BD) + + + m4dtyfref5d + Duty Free (Barcrest) (MPU4) (DF5 0.3 D) + + + m4dtyfref5k + Duty Free (Barcrest) (MPU4) (DF5 0.3 K) + + + m4dtyfref5kd + Duty Free (Barcrest) (MPU4) (DF5 0.3 KD) + + + m4dtyfref5r + Duty Free (Barcrest) (MPU4) (DF5 0.3 R) + + + m4dtyfref5rd + Duty Free (Barcrest) (MPU4) (DF5 0.3 RD) + + + m4dtyfref5y + Duty Free (Barcrest) (MPU4) (DF5 0.3 Y) + + + m4dtyfref5yd + Duty Free (Barcrest) (MPU4) (DF5 0.3 YD) + + + m4dtyfref8 + Duty Free (Barcrest) (MPU4) (DF8 0.1) + + + m4dtyfref8c + Duty Free (Barcrest) (MPU4) (DF8 0.1 C) + + + m4dtyfref8d + Duty Free (Barcrest) (MPU4) (DF8 0.1 D) + + + m4dtyfref8k + Duty Free (Barcrest) (MPU4) (DF8 0.1 K) + + + m4dtyfref8y + Duty Free (Barcrest) (MPU4) (DF8 0.1 Y) + + + m4dtyfref8yd + Duty Free (Barcrest) (MPU4) (DF8 0.1 YD) + + + m4dtyfreft + Duty Free (Barcrest) (MPU4) (DFT 0.1) + + + m4dtyfreftad + Duty Free (Barcrest) (MPU4) (DFT 0.1 AD) + + + m4dtyfreftb + Duty Free (Barcrest) (MPU4) (DFT 0.1 B) + + + m4dtyfreftbd + Duty Free (Barcrest) (MPU4) (DFT 0.1 BD) + + + m4dtyfreftd + Duty Free (Barcrest) (MPU4) (DFT 0.1 D) + + + m4dtyfreftk + Duty Free (Barcrest) (MPU4) (DFT 0.1 K) + + + m4dtyfreftkd + Duty Free (Barcrest) (MPU4) (DFT 0.1 KD) + + + m4dtyfrefty + Duty Free (Barcrest) (MPU4) (DFT 0.1 Y) + + + m4dtyfreftyd + Duty Free (Barcrest) (MPU4) (DFT 0.1 YD) + + + m4dtyfreutb + Duty Free (Barcrest) (MPU4) (DUT 0.4 B) + + + m4dtyfreutc + Duty Free (Barcrest) (MPU4) (DUT 0.4 C) + + + m4dtyfrexd + Duty Free (Barcrest) (MPU4) (XD5 0.2) + + + m4dtyfrexd_a + Duty Free (Barcrest) (MPU4) (XD5 0.1) + + + m4dtyfrexdad + Duty Free (Barcrest) (MPU4) (XD5 0.2 AD) + + + m4dtyfrexdb + Duty Free (Barcrest) (MPU4) (XD5 0.2 B) + + + m4dtyfrexdbd + Duty Free (Barcrest) (MPU4) (XD5 0.2 BD) + + + m4dtyfrexdc + Duty Free (Barcrest) (MPU4) (XD5 0.2 C) + + + m4dtyfrexdd + Duty Free (Barcrest) (MPU4) (XD5 0.2 D) + + + m4dtyfrexdk + Duty Free (Barcrest) (MPU4) (XD5 0.2 K) + + + m4dtyfrexdkd + Duty Free (Barcrest) (MPU4) (XD5 0.2 KD) + + + m4dtyfrexdr + Duty Free (Barcrest) (MPU4) (XD5 0.2 R) + + + m4dtyfrexdrd + Duty Free (Barcrest) (MPU4) (XD5 0.2 RD) + + + m4dtyfrexdy + Duty Free (Barcrest) (MPU4) (XD5 0.2 Y) + + + m4dtyfrexdyd + Duty Free (Barcrest) (MPU4) (XD5 0.2 YD) + + + m4dtyfrexf + Duty Free (Barcrest) (MPU4) (XFT 0.1) + + + m4dtyfrexfad + Duty Free (Barcrest) (MPU4) (XFT 0.1 AD) + + + m4dtyfrexfb + Duty Free (Barcrest) (MPU4) (XFT 0.1 B) + + + m4dtyfrexfbd + Duty Free (Barcrest) (MPU4) (XFT 0.1 BD) + + + m4dtyfrexfc + Duty Free (Barcrest) (MPU4) (XFT 0.1 C) + + + m4dtyfrexfd + Duty Free (Barcrest) (MPU4) (XFT 0.1 D) + + + m4dtyfrexfk + Duty Free (Barcrest) (MPU4) (XFT 0.1 K) + + + m4dtyfrexfkd + Duty Free (Barcrest) (MPU4) (XFT 0.1 KD) + + + m4dtyfrexfr + Duty Free (Barcrest) (MPU4) (XFT 0.1 R) + + + m4dtyfrexfrd + Duty Free (Barcrest) (MPU4) (XFT 0.1 RD) + + + m4dtyfrexfy + Duty Free (Barcrest) (MPU4) (XFT 0.1 Y) + + + m4dtyfrexfyd + Duty Free (Barcrest) (MPU4) (XFT 0.1 YD) + + + m4dz + Danger Zone (Crystal) (MPU4) + + + m4eaw + Everyone's A Winner (Barcrest) (MPU4) (ER4 0.2) + + + m4eaw51 + Everyone's A Winner (J.A. Brown) (MPU4) (EAW 5.1) + + + m4eaw__0 + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 D / ER4 0.1) + + + m4eaw__1 + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 KD / ER4 0.1) + + + m4eaw__2 + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 RD / ER4 0.1) + + + m4eaw__3 + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 YD / ER4 0.1) + + + m4eaw__4 + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 K / ER4 0.1) + + + m4eaw__5 + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 R / ER4 0.1) + + + m4eaw__6 + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 / ER4 0.1) + + + m4eaw__7 + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 Y / ER4 0.1) + + + m4eaw__8 + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 AD / ER4 0.1) + + + m4eaw__9 + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 B / ER4 0.1) + + + m4eaw__a + Everyone's A Winner (Barcrest) (MPU4) (CET 0.3 AD / ER4 0.3) + + + m4eaw__a0 + Everyone's A Winner (Barcrest) (MPU4) (ER4 0.2 YD) + + + m4eaw__a1 + Everyone's A Winner (Barcrest) (MPU4) (ER4 0.2 K) + + + m4eaw__a2 + Everyone's A Winner (Barcrest) (MPU4) (ER4 0.2 Y) + + + m4eaw__a3 + Everyone's A Winner (Barcrest) (MPU4) (ER8 0.1 AD) + + + m4eaw__a4 + Everyone's A Winner (Barcrest) (MPU4) (ER8 0.1 B) + + + m4eaw__a5 + Everyone's A Winner (Barcrest) (MPU4) (ER8 0.1 C) + + + m4eaw__a6 + Everyone's A Winner (Barcrest) (MPU4) (ER8 0.1 KD) + + + m4eaw__a7 + Everyone's A Winner (Barcrest) (MPU4) (ER8 0.1 YD) + + + m4eaw__a8 + Everyone's A Winner (Barcrest) (MPU4) (ER8 0.1 K) + + + m4eaw__a9 + Everyone's A Winner (Barcrest) (MPU4) (ER8 0.1) + + + m4eaw__aa + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 BD / ER4 0.1) + + + m4eaw__ab + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 C / ER4 0.1) + + + m4eaw__ac + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 D / ER4 0.1) + + + m4eaw__ad + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 KD / ER4 0.1) + + + m4eaw__ae + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 RD / ER4 0.1) + + + m4eaw__af + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 YD / ER4 0.1) + + + m4eaw__ag + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 K / ER4 0.1) + + + m4eaw__ah + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 R / ER4 0.1) + + + m4eaw__ai + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 / ER4 0.1) + + + m4eaw__aj + Everyone's A Winner (Barcrest) (MPU4) (EON 0.1 Y / ER4 0.1) + + + m4eaw__ak + Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1 AD) + + + m4eaw__al + Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1 B) + + + m4eaw__am + Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1 BD) + + + m4eaw__an + Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1 D) + + + m4eaw__ao + Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1 KD) + + + m4eaw__ap + Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1 RD) + + + m4eaw__aq + Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1 YD) + + + m4eaw__ar + Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1 K) + + + m4eaw__as + Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1 R) + + + m4eaw__at + Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1) + + + m4eaw__au + Everyone's A Winner (Barcrest) (MPU4) (ER2 0.1 Y) + + + m4eaw__av + Everyone's A Winner (Barcrest) (MPU4) (ER4 0.2 AD) + + + m4eaw__aw + Everyone's A Winner (Barcrest) (MPU4) (ER4 0.2 B) + + + m4eaw__ax + Everyone's A Winner (Barcrest) (MPU4) (ER4 0.2 BD) + + + m4eaw__ay + Everyone's A Winner (Barcrest) (MPU4) (ER4 0.2 D) + + + m4eaw__az + Everyone's A Winner (Barcrest) (MPU4) (ER4 0.2 KD) + + + m4eaw__b + Everyone's A Winner (Barcrest) (MPU4) (CET 0.3 B / ER4 0.3) + + + m4eaw__ba + Everyone's A Winner (Barcrest) (MPU4) (ER8 0.1 Y) + + + m4eaw__bb + Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2 AD) + + + m4eaw__bc + Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2 B) + + + m4eaw__bd + Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2 BD) + + + m4eaw__be + Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2 D) + + + m4eaw__bf + Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2 KD) + + + m4eaw__bg + Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2 RD) + + + m4eaw__bh + Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2 YD) + + + m4eaw__bi + Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2 K) + + + m4eaw__bj + Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2 R) + + + m4eaw__bk + Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2) + + + m4eaw__bl + Everyone's A Winner (Barcrest) (MPU4) (ERT 0.2 Y) + + + m4eaw__bm + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 AD / ER4 0.1) + + + m4eaw__bn + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 B / ER4 0.1) + + + m4eaw__bo + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 BD / ER4 0.1) + + + m4eaw__bp + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 C / ER4 0.1) + + + m4eaw__bq + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 D / ER4 0.1) + + + m4eaw__br + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 KD / ER4 0.1) + + + m4eaw__bs + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 RD / ER4 0.1) + + + m4eaw__bt + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 YD / ER4 0.1) + + + m4eaw__bu + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 K / ER4 0.1) + + + m4eaw__bv + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 R / ER4 0.1) + + + m4eaw__bw + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 / ER4 0.1) + + + m4eaw__bx + Everyone's A Winner (Barcrest) (MPU4) (EUN 0.1 Y / ER4 0.1) + + + m4eaw__c + Everyone's A Winner (Barcrest) (MPU4) (CET 0.3 BD / ER4 0.3) + + + m4eaw__d + Everyone's A Winner (Barcrest) (MPU4) (CET 0.3 D / ER4 0.3) + + + m4eaw__e + Everyone's A Winner (Barcrest) (MPU4) (CET 0.3 KD / ER4 0.3) + + + m4eaw__f + Everyone's A Winner (Barcrest) (MPU4) (CET 0.3 RD / ER4 0.3) + + + m4eaw__g + Everyone's A Winner (Barcrest) (MPU4) (CET 0.3 YD / ER4 0.3) + + + m4eaw__h + Everyone's A Winner (Barcrest) (MPU4) (CET 0.3 K / ER4 0.3) + + + m4eaw__i + Everyone's A Winner (Barcrest) (MPU4) (CET 0.3 R / ER4 0.3) + + + m4eaw__j + Everyone's A Winner (Barcrest) (MPU4) (CET 0.3 / ER4 0.3) + + + m4eaw__k + Everyone's A Winner (Barcrest) (MPU4) (CET 0.3 Y / ER4 0.3) + + + m4eaw__l + Everyone's A Winner (Barcrest) (MPU4) (CEU 0.2 AD / ER4 0.2) + + + m4eaw__m + Everyone's A Winner (Barcrest) (MPU4) (CEU 0.2 B / ER4 0.2) + + + m4eaw__n + Everyone's A Winner (Barcrest) (MPU4) (CEU 0.2 BD / ER4 0.2) + + + m4eaw__o + Everyone's A Winner (Barcrest) (MPU4) (CEU 0.2 D / ER4 0.2) + + + m4eaw__p + Everyone's A Winner (Barcrest) (MPU4) (CEU 0.2 KD / ER4 0.2) + + + m4eaw__q + Everyone's A Winner (Barcrest) (MPU4) (CEU 0.2 RD / ER4 0.2) + + + m4eaw__r + Everyone's A Winner (Barcrest) (MPU4) (CEU 0.2 YD / ER4 0.2) + + + m4eaw__s + Everyone's A Winner (Barcrest) (MPU4) (CEU 0.2 K / ER4 0.2) + + + m4eaw__t + Everyone's A Winner (Barcrest) (MPU4) (CEU 0.2 R/ ER4 0.2) + + + m4eaw__u + Everyone's A Winner (Barcrest) (MPU4) (CEU 0.2 / ER4 0.2) + + + m4eaw__v + Everyone's A Winner (Barcrest) (MPU4) (CEU 0.2 Y / ER4 0.2) + + + m4eaw__w + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 AD / ER4 0.1) + + + m4eaw__x + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 B / ER4 0.1) + + + m4eaw__y + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 BD / ER4 0.1) + + + m4eaw__z + Everyone's A Winner (Barcrest) (MPU4) (ENN 0.1 C / ER4 0.1) + + + m4eezee + Eezee Fruits (Union) (MPU4) + + + m4eighth + Eighth Wonder (Barcrest) (MPU4) (WON 2.2) + + + m4eightha + Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 1) + + + m4eighthb + Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 2) + + + m4eighthc + Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 3) + + + m4eighthd + Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 4, bad?) + + + m4eighthe + Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 5) + + + m4eighthf + Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 6) + + + m4eighthg + Eighth Wonder (Barcrest) (MPU4) (BEW 0.3, set 7) + + + m4elitc + Elite Club (Crystal) (MPU4) (set 1) + + + m4elitca + Elite Club (Crystal) (MPU4) (set 2) + + + m4elite + Elite (Barcrest) (MPU4 w/ Plasma DMD?) + + + m4esctbg + Escalera Tobogan (Spain) (MPU4) (ESC1, set 1) + + + m4esctbga + Escalera Tobogan (Spain) (MPU4) (ESC1, set 2) + + + m4esctbgb + Escalera Tobogan (Spain) (MPU4) (ESC1, set 3) + + + m4eureka + Eureka (Empire) (MPU4, set 1) + + + m4eurekaa + Eureka (Empire) (MPU4, set 2) + + + m4eurekab + Eureka (Empire) (MPU4, set 3) + + + m4ewshft + Each Way Shifter (Mdm) (MPU4) + + + m4excal + Excalibur (BWB) (MPU4) (set 1) + + + m4excal__a + Excalibur (BWB) (MPU4) (set 2) + + + m4excal__b + Excalibur (BWB) (MPU4) (set 3) + + + m4excal__c + Excalibur (BWB) (MPU4) (set 4) + + + m4excal__d + Excalibur (BWB) (MPU4) (set 5) + + + m4excal__e + Excalibur (BWB) (MPU4) (set 6) + + + m4excal__f + Excalibur (BWB) (MPU4) (set 7) + + + m4excal__g + Excalibur (BWB) (MPU4) (set 8) + + + m4excal__h + Excalibur (BWB) (MPU4) (set 9) + + + m4excal__i + Excalibur (BWB) (MPU4) (set 10) + + + m4excal__j + Excalibur (BWB) (MPU4) (set 11) + + + m4excaln + Excalibur (Nova) (MPU4) (set 1) + + + m4excaln__a + Excalibur (Nova) (MPU4) (set 2) + + + m4excam + Excalibur (Mdm) (MPU4, V1.4) + + + m4excamd + Excalibur (Mdm) (MPU4, V1.0D) + + + m4exgam + Extra Game (Fairplay - Barcrest) (MPU4) (CEG 2.0) + + + m4exlin + Extra Lines (Pcp) (MPU4) (set 1) + + + m4exlina + Extra Lines (Pcp) (MPU4) (set 2) + + + m4exotic + Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 1) + + + m4exotic__a + Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 2) + + + m4exotic__b + Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 3) + + + m4exotic__c + Exotic Fruits (BWB) (MPU4) (30p stake / £15 jackpot) (set 4) + + + m4exotic__d + Exotic Fruits (BWB) (MPU4) (20/25/30p stake / £15 jackpot) (set 1) + + + m4exotic__e + Exotic Fruits (BWB) (MPU4) (20/25/30p stake / £15 jackpot) (set 2) + + + m4exprs + Express (Barcrest) (Dutch) (MPU4) (DXP 2.0) + + + m4fairg + Fairground (Crystal) (MPU4) + + + m4fastfw + Fast Forward (Barcrest) (MPU4) (SFF 3.0, set 1) + + + m4fastfw__a + Fast Forward (Barcrest) (MPU4) (SFF 3.0, set 2) + + + m4fastfw__b + Fast Forward (Barcrest) (MPU4) (SFF 3.0, set 3) + + + m4fastfw__c + Fast Forward (Barcrest) (MPU4) (SFF 3.0, set 4) + + + m4fastfw__d + Fast Forward (Barcrest) (MPU4) (SFF 3.0, set 5) + + + m4fastfw__e + Fast Forward (Barcrest) (MPU4) (SFF 3.0, set 6) + + + m4fastfw__f + Fast Forward (Barcrest) (MPU4) (FFD 1.0, hack) + + + m4firebl + Fireball (Mdm) (MPU4, set 1) + + + m4firebla + Fireball (Mdm) (MPU4, set 2) + + + m4fireblb + Fireball (Mdm) (MPU4, set 3) + + + m4fireblc + Fireball (Mdm) (MPU4, set 4) + + + m4firebld + Fireball (Mdm) (MPU4, set 5) + + + m4firice + Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 1) + + + m4firice__a + Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 2) + + + m4firice__b + Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 3) + + + m4firice__c + Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 4) + + + m4firice__d + Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 5) + + + m4firice__e + Fire & Ice (BWB) (MPU4) (20p stake / £8 token jackpot) (set 6) + + + m4firice__f + Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 1) + + + m4firice__g + Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 2) + + + m4firice__h + Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 3) + + + m4firice__i + Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 4) + + + m4firice__j + Fire & Ice (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 5) + + + m4flash + Flash Cash (Barcrest) (MPU4, FC 1.0) + + + m4flshlt + Flashlite (BWB) (MPU4) (FLT 1.0, set 1) + + + m4flshlta + Flashlite (BWB) (MPU4) (BFL 0.5) + + + m4flshltb + Flashlite (BWB) (MPU4) (FLT 1.0, set 2) + + + m4flshltc + Flashlite (BWB) (MPU4) (FLT 1.0, set 3) + + + m4flshltd + Flashlite (BWB) (MPU4) (FLT 1.0, set 4) + + + m4flshlte + Flashlite (BWB) (MPU4) (FLT 1.0, set 5) + + + m4flshltf + Flashlite (BWB) (MPU4) (FLT 1.0, set 6) + + + m4flshltg + Flashlite (BWB) (MPU4) (FLT 1.0, set 7) + + + m4fortcb + Fortune Club (Barcrest) (MPU4) (CFO 1.2, set 1) + + + m4fortcba + Fortune Club (Barcrest) (MPU4) (CFO 1.2, set 2) + + + m4fortcbb + Fortune Club (Barcrest) (MPU4) (CFO 1.2, set 3) + + + m4fourmr + Four More (BWB) (MPU4) + + + m4frcrak + Fruit Cracker (Pcp) (MPU4) + + + m4frdrop + Fruit Drop (Union) (MPU4) + + + m4fright + Fright Night (Empire) (MPU4, v4.1X) + + + m4frighta + Fright Night (Empire) (MPU4, v4.1) + + + m4frightb + Fright Night (Empire) (MPU4, v4.1i) + + + m4frightc + Fright Night (Empire) (MPU4, v?.?, set 1) + + + m4frightd + Fright Night (Empire) (MPU4, v3.3) + + + m4frighte + Fright Night (Empire) (MPU4, v3.0) + + + m4frightf + Fright Night (Empire) (MPU4, v?.?, set 2) + + + m4frkstn + Frank 'n' Stein (Crystal) (MPU4, set 1) + + + m4frkstna + Frank 'n' Stein (Crystal) (MPU4, set 2) + + + m4frkstnb + Frank 'n' Stein (Crystal) (MPU4, set 3) + + + m4frkstnc + Frank 'n' Stein (Crystal) (MPU4, set 4) + + + m4frkstnd + Frank 'n' Stein (Crystal) (MPU4, set 5) + + + m4frkstne + Frank 'n' Stein (Crystal) (MPU4, set 6) + + + m4frkstnf + Frank 'n' Stein (Crystal) (MPU4, set 7) + + + m4frkstng + Frank 'n' Stein (Crystal) (MPU4, set 8) + + + m4frkstnh + Frank 'n' Stein (Crystal) (MPU4, set 9) + + + m4frmani + Fruit Mania (Crystal) (MPU4) (set 1) + + + m4frmania + Fruit Mania (Crystal) (MPU4) (set 2) + + + m4frmanib + Fruit Mania (Crystal) (MPU4) (set 3) + + + m4frmanic + Fruit Mania (Crystal) (MPU4) (set 4) + + + m4frmtx + Fruit Matrix (Avantime?) (MPU4) (set 1) + + + m4frmtx__a + Fruit Matrix (Avantime?) (MPU4) (set 2) + + + m4frmtx__b + Fruit Matrix (Avantime?) (MPU4) (set 3) + + + m4frmtx__c + Fruit Matrix (Avantime?) (MPU4) (set 4) + + + m4frmtx__d + Fruit Matrix (Avantime?) (MPU4) (set 5) + + + m4frmtx__e + Fruit Matrix (Avantime?) (MPU4) (set 6) + + + m4frmtx__f + Fruit Matrix (Avantime?) (MPU4) (set 7) + + + m4frnudg + Fruit & Nudge (Avantime?) (MPU4) (set 1) + + + m4frnudg__a + Fruit & Nudge (Avantime?) (MPU4) (set 2) + + + m4frnudg__b + Fruit & Nudge (Avantime?) (MPU4) (set 3) + + + m4frnudg__c + Fruit & Nudge (Avantime?) (MPU4) (set 4) + + + m4front + Final Frontier (Mdm) (MPU4) + + + m4frtfl + Fruit Full Club (Barcrest) (MPU4) (FFC 0.3) + + + m4frtfla + Fruit Full Club (Barcrest) (MPU4) (FFC 1.0) + + + m4frtflc + Fruit Full Club (Barcrest) (MPU4) (FFC 1.2) + + + m4frtgm + Fruit Game (Barcrest) (MPU4) (FRU 2.0) + + + m4frtlnk + Fruit Link Club (Barcrest) (MPU4) (FLC 1.8, set 1) + + + m4frtlnka + Fruit Link Club (Barcrest) (MPU4) (FLC 1.6, set 2) + + + m4frtprs + Fruit Preserve (Barcrest) (MPU4) (F4P 1.1, set 1) + + + m4frtprsa + Fruit Preserve (Barcrest) (MPU4) (F4P 1.1, set 2) + + + m4fsx + Fun Spot X (MPU4?) (set 1) + + + m4fsxa + Fun Spot X (MPU4?) (set 2) + + + m4fsxb + Fun Spot X (MPU4?) (set 3) + + + m4ftladn + Find the Lady (Nova) (MPU4) + + + m4funh + Fun House (unknown) (MPU4) + + + m4gambal + Gamball (Barcrest) (MPU4) (GBB 2.0) + + + m4gambal__a + Gamball (Barcrest) (MPU4) (GAB 2.0, set 1) + + + m4gambal__b + Gamball (Barcrest) (MPU4) (GAB 2.0, set 2) + + + m4gambal__c + Gamball (Barcrest) (MPU4) (GAB 2.0, set 3) + + + m4gamblr + The Gambler (Empire) (MPU4, set 1) + + + m4gamblra + The Gambler (Empire) (MPU4, set 2) + + + m4gamblrb + The Gambler (Empire) (MPU4, set 3) + + + m4gb006 + Games Bond 006 (Barcrest) (MPU4) (006 0.6) + + + m4gb006__a + Games Bond 006 (Barcrest) (MPU4) (006 0.6 D) + + + m4gb006__b + Games Bond 006 (Barcrest) (MPU4) (006 0.6 Y) + + + m4gb006__c + Games Bond 006 (Barcrest) (MPU4) (006 0.6 C) + + + m4gbust + Ghost Buster (Barcrest) (MPU4) (GB 5.0) + + + m4gbust__a + Ghost Buster (Barcrest) (MPU4) (GB 3.0, 1994, set 2) + + + m4gbust__b + Ghost Buster (Barcrest) (MPU4) (GB 3.0, 1994, set 1) + + + m4gbust__c + Ghost Buster (Barcrest) (MPU4) (GB 2.0, 1994) + + + m4gbust__d + Ghost Buster (Barcrest) (MPU4) (GB 4.0, set 1) + + + m4gbust__e + Ghost Buster (Barcrest) (MPU4) (GB 4.0, set 2) + + + m4gbust__f + Ghost Buster (Barcrest) (MPU4) (GB 2.0, set 1) + + + m4gbust__g + Ghost Buster (Barcrest) (MPU4) (GB 4.0 D) + + + m4gbust__h + Ghost Buster (Barcrest) (MPU4) (GB 2.0, set 4) + + + m4gbust__i + Ghost Buster (Barcrest) (MPU4) (GB 2.0, set 2) + + + m4gbust__j + Ghost Buster (Barcrest) (MPU4) (GB 3.0, set 1) + + + m4gbust__k + Ghost Buster (Barcrest) (MPU4) (GB 3.0 YD, set 1) + + + m4gbust__l + Ghost Buster (Barcrest) (MPU4) (GB 2.0 D, set 3) + + + m4gbust__m + Ghost Buster (Barcrest) (MPU4) (GB 2.0 D, set 1) + + + m4gbust__n + Ghost Buster (Barcrest) (MPU4) (GB 3.0 D, set 1) + + + m4gbust__o + Ghost Buster (Barcrest) (MPU4) (GB 2.0, set 3) + + + m4gbust__p + Ghost Buster (Barcrest) (MPU4) (GB 3.0, set 2) + + + m4gbust__q + Ghost Buster (Barcrest) (MPU4) (GB 2.0 YD, set 2) + + + m4gbust__r + Ghost Buster (Barcrest) (MPU4) (GB 2.0 YD, set 1) + + + m4gbust__s + Ghost Buster (Barcrest) (MPU4) (GB 3.0 YD, set 2) + + + m4gbust__t + Ghost Buster (Barcrest) (MPU4) (GB 2.0 D, set 4) + + + m4gbust__u + Ghost Buster (Barcrest) (MPU4) (GB 2.0 D, set 2) + + + m4gbust__v + Ghost Buster (Barcrest) (MPU4) (GB 3.0 D, set 2) + + + m4gbust__w + Ghost Buster (Barcrest) (MPU4) (GB 2.0, set 5) + + + m4gclue + Give Us A Clue (Barcrest) (MPU4) (C20 0.2) + + + m4gclue__a + Give Us A Clue (Barcrest) (MPU4) (C20 0.2 B) + + + m4gclue__b + Give Us A Clue (Barcrest) (MPU4) (C20 0.2 BD) + + + m4gclue__c + Give Us A Clue (Barcrest) (MPU4) (C20 0.2 C) + + + m4gclue__d + Give Us A Clue (Barcrest) (MPU4) (C20 0.2 D) + + + m4gclue__e + Give Us A Clue (Barcrest) (MPU4) (C20 0.2 KD) + + + m4gclue__f + Give Us A Clue (Barcrest) (MPU4) (C20 0.2 RD) + + + m4gclue__g + Give Us A Clue (Barcrest) (MPU4) (C20 0.2 YD) + + + m4gclue__h + Give Us A Clue (Barcrest) (MPU4) (C20 0.2 K) + + + m4gclue__i + Give Us A Clue (Barcrest) (MPU4) (C20 0.2 R) + + + m4gclue__j + Give Us A Clue (Barcrest) (MPU4) (C20 0.2 AD) + + + m4gclue__k + Give Us A Clue (Barcrest) (MPU4) (C20 0.2 Y) + + + m4gclue__l + Give Us A Clue (Barcrest) (MPU4) (C25 0.4 AD) + + + m4gclue__m + Give Us A Clue (Barcrest) (MPU4) (C25 0.4 B) + + + m4gclue__n + Give Us A Clue (Barcrest) (MPU4) (C25 0.4 BD) + + + m4gclue__o + Give Us A Clue (Barcrest) (MPU4) (C25 0.4 C) + + + m4gclue__p + Give Us A Clue (Barcrest) (MPU4) (C25 0.4 D) + + + m4gclue__q + Give Us A Clue (Barcrest) (MPU4) (C25 0.4 KD) + + + m4gclue__r + Give Us A Clue (Barcrest) (MPU4) (C25 0.4 RD) + + + m4gclue__s + Give Us A Clue (Barcrest) (MPU4) (C25 0.4 YD) + + + m4gclue__t + Give Us A Clue (Barcrest) (MPU4) (C25 0.4 K) + + + m4gclue__u + Give Us A Clue (Barcrest) (MPU4) (C25 0.4 R) + + + m4gclue__v + Give Us A Clue (Barcrest) (MPU4) (C25 0.4) + + + m4gclue__w + Give Us A Clue (Barcrest) (MPU4) (C25 0.4 Y) + + + m4giant + Giant (Barcrest) (Dutch) (MPU4) (DGI 2.1) + + + m4gldgat + Golden Gate (Barcrest) (Dutch) (MPU4) (DGG 2.2) + + + m4gldjok + Golden Joker (Barcrest) (Dutch) (MPU4) (DGJ 1.2) + + + m4gldstr + Gold Strike (Barcrest) (MPU4) (G4S 2.0) + + + m4gnsmk + Gun Smoke (Barcrest) (Dutch) (MPU4) (DGU 1.6) + + + m4gobana + Go Bananas (Union) (MPU4, set 1) + + + m4gobanaa + Go Bananas (Union) (MPU4, set 2) + + + m4gobanab + Go Bananas (Union) (MPU4, set 3) + + + m4gobanac + Go Bananas (Union) (MPU4, set 4) + + + m4gobanad + Go Bananas (Union) (MPU4, set 5) + + + m4goldfc + Gold Fever (Crystal) (MPU4) (set 1) + + + m4goldfca + Gold Fever (Crystal) (MPU4) (set 2) + + + m4goldfcb + Gold Fever (Crystal) (MPU4) (set 3) + + + m4goldfv + Gold Fever (Empire) (MPU4) + + + m4goldnn + Golden Years (Nova) (German) (MPU4) (TGY 0.1) + + + m4goldxc + Gold Exchange Club (Crystal) (MPU4) (set 1) + + + m4goldxca + Gold Exchange Club (Crystal) (MPU4) (set 2) + + + m4goldxcb + Gold Exchange Club (Crystal) (MPU4) (set 3) + + + m4goldxcc + Gold Exchange Club (Crystal) (MPU4) (set 4) + + + m4goldxcd + Gold Exchange Club (Crystal) (MPU4) (set 5) + + + m4goldxce + Gold Exchange Club (Crystal) (MPU4) (set 6) + + + m4goodtm + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0) + + + m4goodtm__0 + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 Y) + + + m4goodtm__1 + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.1) + + + m4goodtm__2 + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0, hack) + + + m4goodtm__3 + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1, hack) + + + m4goodtm__4 + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 AD) + + + m4goodtm__5 + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 B) + + + m4goodtm__6 + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 BD) + + + m4goodtm__7 + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 DH) + + + m4goodtm__8 + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 KD) + + + m4goodtm__9 + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 RD) + + + m4goodtm__a + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 AD) + + + m4goodtm__a0 + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 RD) + + + m4goodtm__a1 + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 YD) + + + m4goodtm__a2 + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 H) + + + m4goodtm__a3 + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 K) + + + m4goodtm__a4 + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 R) + + + m4goodtm__a5 + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0) + + + m4goodtm__a6 + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 Y) + + + m4goodtm__aa + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 YD) + + + m4goodtm__ab + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 H) + + + m4goodtm__ac + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 K) + + + m4goodtm__ad + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 R) + + + m4goodtm__ae + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 D) + + + m4goodtm__af + Let The Good Times Roll (Barcrest) (MPU4) (GTR 2.0 Y) + + + m4goodtm__ag + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 AD) + + + m4goodtm__ah + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 B) + + + m4goodtm__ai + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 BD) + + + m4goodtm__aj + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 D) + + + m4goodtm__ak + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 DH) + + + m4goodtm__al + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 KD) + + + m4goodtm__am + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 RD) + + + m4goodtm__an + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 YD) + + + m4goodtm__ao + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 H) + + + m4goodtm__ap + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 K) + + + m4goodtm__aq + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 R) + + + m4goodtm__ar + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1) + + + m4goodtm__as + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.1 Y) + + + m4goodtm__at + Let The Good Times Roll (Barcrest) (MPU4) (GTS 0.2) + + + m4goodtm__au + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 AD) + + + m4goodtm__av + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 B) + + + m4goodtm__aw + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 BD) + + + m4goodtm__ax + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 D) + + + m4goodtm__ay + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 DH) + + + m4goodtm__az + Let The Good Times Roll (Barcrest) (MPU4) (GTS 1.0 KD) + + + m4goodtm__b + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 B) + + + m4goodtm__c + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 BD) + + + m4goodtm__d + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 D) + + + m4goodtm__e + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 DH) + + + m4goodtm__f + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 KD) + + + m4goodtm__g + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 RD) + + + m4goodtm__h + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 YD) + + + m4goodtm__i + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 H) + + + m4goodtm__j + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 K) + + + m4goodtm__k + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 R) + + + m4goodtm__l + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1) + + + m4goodtm__m + Let The Good Times Roll (Barcrest) (MPU4) (GTA 0.1 Y) + + + m4goodtm__n + Let The Good Times Roll (Barcrest) (MPU4) (GTK 0.2 K) + + + m4goodtm__o + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 AD) + + + m4goodtm__p + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 B) + + + m4goodtm__q + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 BD) + + + m4goodtm__r + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 D) + + + m4goodtm__s + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 DH) + + + m4goodtm__t + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 KD) + + + m4goodtm__u + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 RD) + + + m4goodtm__v + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 YD) + + + m4goodtm__w + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 H) + + + m4goodtm__x + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 K) + + + m4goodtm__y + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0 R) + + + m4goodtm__z + Let The Good Times Roll (Barcrest) (MPU4) (GTR 1.0) + + + m4graff + Graffiti (Barcrest) (MPU4) (GRA 2.0X) + + + m4graff__a + Graffiti (Barcrest) (MPU4) (GRA 2.1X) + + + m4graff__b + Graffiti (Barcrest) (MPU4) (GRA 2.1CX) + + + m4graffd + Grafitti (Barcrest) (Dutch) (MPU4) (DGR 1.3) + + + m4grands + Grandstand Club (Barcrest) (MPU4) (G2D 4.0) + + + m4grandsa + Grandstand Club (Barcrest) (MPU4) (GD 1.1) + + + m4grbbnk + Grab The Bank (Barcrest) (MPU4) (G4B 2.0) + + + m4grbbnka + Grab The Bank (Barcrest) (MPU4) (G4B 2.1) + + + m4grbbnkb + Grab The Bank (Barcrest) (MPU4) (G4B 1.0) + + + m4gtrain + Ghost Train (Empire) (MPU4, set 1) + + + m4gtraina + Ghost Train (Empire) (MPU4, set 2) + + + m4gtrainb + Ghost Train (Empire) (MPU4, set 3) + + + m4gtrainc + Ghost Train (Empire) (MPU4, set 4) + + + m4gvibes + Good Vibrations (Union - Empire) (MPU4, set 1) + + + m4gvibesa + Good Vibrations (Union - Empire) (MPU4, set 2) + + + m4hapfrt + Happy Fruits (Coinworld) (MPU4) (set 1) + + + m4hapfrta + Happy Fruits (Coinworld) (MPU4) (set 2) + + + m4hapfrtb + Happy Fruits (Coinworld) (MPU4) (set 3) + + + m4harle + Harlequin (BWB) (MPU4) (set 1) + + + m4harle__a + Harlequin (BWB) (MPU4) (set 2) + + + m4harle__b + Harlequin (BWB) (MPU4) (set 3) + + + m4harle__c + Harlequin (BWB) (MPU4) (set 4) + + + m4harle__d + Harlequin (BWB) (MPU4) (set 5) + + + m4harle__e + Harlequin (BWB) (MPU4) (set 6) + + + m4harle__f + Harlequin (BWB) (MPU4) (set 7) + + + m4harle__g + Harlequin (BWB) (MPU4) (set 8) + + + m4harle__h + Harlequin (BWB) (MPU4) (set 9) + + + m4harle__i + Harlequin (BWB) (MPU4) (set 10) + + + m4harle__j + Harlequin (BWB) (MPU4) (set 11) + + + m4harle__k + Harlequin (BWB) (MPU4) (set 12) + + + m4harle__l + Harlequin (BWB) (MPU4) (set 13) + + + m4harle__m + Harlequin (BWB) (MPU4) (set 14) + + + m4harle__n + Harlequin (BWB) (MPU4) (set 15) + + + m4harle__o + Harlequin (BWB) (MPU4) (set 16) + + + m4harle__p + Harlequin (BWB) (MPU4) (set 17) + + + m4harle__q + Harlequin (BWB) (MPU4) (set 18) + + + m4harle__r + Harlequin (BWB) (MPU4) (set 19) + + + m4harle__s + Harlequin (BWB) (MPU4) (set 20) + + + m4harle__t + Harlequin (BWB) (MPU4) (set 21) + + + m4harle__u + Harlequin (BWB) (MPU4) (set 22) + + + m4harle__v + Harlequin (BWB) (MPU4) (set 23) + + + m4harle__w + Harlequin (BWB) (MPU4) (set 24) + + + m4harle__x + Harlequin (BWB) (MPU4) (set 25) + + + m4haunt + Haunted House (Empire) (MPU4, set 1) + + + m4haunta + Haunted House (Empire) (MPU4, set 2) + + + m4hauntb + Haunted House (Empire) (MPU4, set 3) + + + m4hauntc + Haunted House (Empire) (MPU4, set 4) + + + m4hauntd + Haunted House (Empire) (MPU4, set 5) + + + m4hijinx + Hi Jinx (Barcrest) (MPU4) (JNX 1.0) + + + m4hijinx__0 + Hi Jinx (Barcrest) (MPU4) (JNS 0.3) + + + m4hijinx__1 + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 Y) + + + m4hijinx__2 + Hi Jinx (Barcrest) (MPU4) (JNX 0.5 D) + + + m4hijinx__3 + Hi Jinx (Barcrest) (MPU4) (JNX 0.5 DH) + + + m4hijinx__4 + Hi Jinx (Barcrest) (MPU4) (JNX 0.5 DY) + + + m4hijinx__5 + Hi Jinx (Barcrest) (MPU4) (JNX 0.5 H) + + + m4hijinx__6 + Hi Jinx (Barcrest) (MPU4) (JNX 0.5 Y) + + + m4hijinx__7 + Hi Jinx (Barcrest) (MPU4) (JNX 1.0 D) + + + m4hijinx__8 + Hi Jinx (Barcrest) (MPU4) (JNX 1.0 DH) + + + m4hijinx__9 + Hi Jinx (Barcrest) (MPU4) (JNX 1.0 DY) + + + m4hijinx__a + Hi Jinx (Barcrest) (MPU4) (JNX 0.5, hack) + + + m4hijinx__aa + Hi Jinx (Barcrest) (MPU4) (JNX 1.0 H) + + + m4hijinx__ab + Hi Jinx (Barcrest) (MPU4) (JNX 1.0 Y) + + + m4hijinx__b + Hi Jinx (Barcrest) (MPU4) (JNS 0.2, hack) + + + m4hijinx__c + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 DA) + + + m4hijinx__d + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 B) + + + m4hijinx__e + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 DB) + + + m4hijinx__f + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 D) + + + m4hijinx__g + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 DH) + + + m4hijinx__h + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 DK) + + + m4hijinx__i + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 DR) + + + m4hijinx__j + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 DY) + + + m4hijinx__k + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 H) + + + m4hijinx__l + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 K) + + + m4hijinx__m + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 R) + + + m4hijinx__n + Hi Jinx (Barcrest) (MPU4) (JNS 0.2) + + + m4hijinx__o + Hi Jinx (Barcrest) (MPU4) (JNS 0.2 Y) + + + m4hijinx__p + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 DA) + + + m4hijinx__q + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 B) + + + m4hijinx__r + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 DB) + + + m4hijinx__s + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 D) + + + m4hijinx__t + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 DH) + + + m4hijinx__u + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 DK) + + + m4hijinx__v + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 DR) + + + m4hijinx__w + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 DY) + + + m4hijinx__x + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 H) + + + m4hijinx__y + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 K) + + + m4hijinx__z + Hi Jinx (Barcrest) (MPU4) (JNS 0.3 R) + + + m4hilonv + Hi Lo Casino (Nova) (German) (MPU4) (HNC 0.2) + + + m4hirise + High Rise (Barcrest) (MPU4) (HII 0.3) + + + m4hirisea + High Rise (Barcrest) (MPU4) (HIR 3.1, set 1) + + + m4hiriseb + High Rise (Barcrest) (MPU4) (HIR 1.5, bootleg?) + + + m4hirisec + High Rise (Barcrest) (MPU4) (HIR 3.1, set 2) + + + m4hirised + High Rise (Barcrest) (MPU4) (HIR 3.1, set 3) + + + m4hirisee + High Rise (Barcrest) (MPU4) (HIR 3.0) + + + m4hirol + Hi Roller Club (Crystal) (MPU4) (set 1) + + + m4hirola + Hi Roller Club (Crystal) (MPU4) (set 2) + + + m4hiroll + High Roller (Barcrest) (Dutch) (MPU4) (HR 3.0) + + + m4hisprt + High Spirits (Empire) (MPU4, set 1) + + + m4hisprta + High Spirits (Empire) (MPU4, set 2) + + + m4hisprtb + High Spirits (Empire) (MPU4, set 3) + + + m4hisprtc + High Spirits (Empire) (MPU4, set 4) + + + m4hisprtd + High Spirits (Empire) (MPU4, set 5) + + + m4hisprte + High Spirits (Empire) (MPU4, set 6) + + + m4hittop + Hit The Top (Barcrest) (MPU4) (HI4 0.3) + + + m4hittop__0 + Hit The Top (Barcrest) (MPU4) (HIT 0.4 R) + + + m4hittop__1 + Hit The Top (Barcrest) (MPU4) (HIT 0.4) + + + m4hittop__2 + Hit The Top (Barcrest) (MPU4) (HIT 0.4 Y) + + + m4hittop__3 + Hit The Top (Barcrest) (MPU4) (HT2 0.1 AD) + + + m4hittop__4 + Hit The Top (Barcrest) (MPU4) (HT2 0.1 B) + + + m4hittop__5 + Hit The Top (Barcrest) (MPU4) (HT2 0.1 BD) + + + m4hittop__6 + Hit The Top (Barcrest) (MPU4) (HT2 0.1 D) + + + m4hittop__7 + Hit The Top (Barcrest) (MPU4) (HT2 0.1 KD) + + + m4hittop__8 + Hit The Top (Barcrest) (MPU4) (HT2 0.1 RD) + + + m4hittop__9 + Hit The Top (Barcrest) (MPU4) (HT2 0.1 YD) + + + m4hittop__a + Hit The Top (Barcrest) (MPU4) (CHU 0.1 AD) + + + m4hittop__aa + Hit The Top (Barcrest) (MPU4) (HT2 0.1 K) + + + m4hittop__ab + Hit The Top (Barcrest) (MPU4) (HT2 0.1 R) + + + m4hittop__ac + Hit The Top (Barcrest) (MPU4) (HT2 0.1) + + + m4hittop__ad + Hit The Top (Barcrest) (MPU4) (HT2 0.1 Y) + + + m4hittop__ae + Hit The Top (Barcrest) (MPU4) (HT5 0.1 AD) + + + m4hittop__af + Hit The Top (Barcrest) (MPU4) (HT5 0.1 B) + + + m4hittop__ag + Hit The Top (Barcrest) (MPU4) (HT5 0.1 BD) + + + m4hittop__ah + Hit The Top (Barcrest) (MPU4) (HT5 0.1 D) + + + m4hittop__ai + Hit The Top (Barcrest) (MPU4) (HT5 0.1 KD) + + + m4hittop__aj + Hit The Top (Barcrest) (MPU4) (HT5 0.1 RD) + + + m4hittop__ak + Hit The Top (Barcrest) (MPU4) (HT5 0.1 YD) + + + m4hittop__al + Hit The Top (Barcrest) (MPU4) (HT5 0.1 K) + + + m4hittop__am + Hit The Top (Barcrest) (MPU4) (HT5 0.1 R) + + + m4hittop__an + Hit The Top (Barcrest) (MPU4) (HT5 0.1) + + + m4hittop__ao + Hit The Top (Barcrest) (MPU4) (HT5 0.1 Y) + + + m4hittop__ap + Hit The Top (Barcrest) (MPU4) (HTT 0.5 AD) + + + m4hittop__aq + Hit The Top (Barcrest) (MPU4) (HTT 0.5 B) + + + m4hittop__ar + Hit The Top (Barcrest) (MPU4) (HTT 0.5 BD) + + + m4hittop__as + Hit The Top (Barcrest) (MPU4) (HTT 0.5 D) + + + m4hittop__at + Hit The Top (Barcrest) (MPU4) (HTT 0.5 KD) + + + m4hittop__au + Hit The Top (Barcrest) (MPU4) (HTT 0.5 YD) + + + m4hittop__av + Hit The Top (Barcrest) (MPU4) (HTT 0.5 K) + + + m4hittop__aw + Hit The Top (Barcrest) (MPU4) (HTT 0.5) + + + m4hittop__ax + Hit The Top (Barcrest) (MPU4) (HTT 0.5 Y) + + + m4hittop__b + Hit The Top (Barcrest) (MPU4) (CHU 0.1 B) + + + m4hittop__c + Hit The Top (Barcrest) (MPU4) (CHU 0.1 BD) + + + m4hittop__d + Hit The Top (Barcrest) (MPU4) (CHU 0.1 D) + + + m4hittop__e + Hit The Top (Barcrest) (MPU4) (CHU 0.1 KD) + + + m4hittop__f + Hit The Top (Barcrest) (MPU4) (CHU 0.1 YD) + + + m4hittop__g + Hit The Top (Barcrest) (MPU4) (CHU 0.1 K) + + + m4hittop__h + Hit The Top (Barcrest) (MPU4) (CHU 0.1 R) + + + m4hittop__i + Hit The Top (Barcrest) (MPU4) (CHU 0.1) + + + m4hittop__j + Hit The Top (Barcrest) (MPU4) (CHU 0.1 Y) + + + m4hittop__k + Hit The Top (Barcrest) (MPU4) (HI4 0.3 AD) + + + m4hittop__l + Hit The Top (Barcrest) (MPU4) (HI4 0.3 AB + + + m4hittop__m + Hit The Top (Barcrest) (MPU4) (HI4 0.3 BD) + + + m4hittop__n + Hit The Top (Barcrest) (MPU4) (HI4 0.3 D) + + + m4hittop__o + Hit The Top (Barcrest) (MPU4) (HI4 0.3 KD) + + + m4hittop__p + Hit The Top (Barcrest) (MPU4) (HI4 0.3 YD) + + + m4hittop__q + Hit The Top (Barcrest) (MPU4) (HI4 0.3 K) + + + m4hittop__r + Hit The Top (Barcrest) (MPU4) (HI4 0.3 Y) + + + m4hittop__s + Hit The Top (Barcrest) (MPU4) (HIT 0.4 AD) + + + m4hittop__t + Hit The Top (Barcrest) (MPU4) (HIT 0.4 B) + + + m4hittop__u + Hit The Top (Barcrest) (MPU4) (HIT 0.4 BD) + + + m4hittop__v + Hit The Top (Barcrest) (MPU4) (HIT 0.4 D) + + + m4hittop__w + Hit The Top (Barcrest) (MPU4) (HIT 0.4 KD) + + + m4hittop__x + Hit The Top (Barcrest) (MPU4) (HIT 0.4 RD) + + + m4hittop__y + Hit The Top (Barcrest) (MPU4) (HIT 0.4 YD) + + + m4hittop__z + Hit The Top (Barcrest) (MPU4) (HIT 0.4 K) + + + m4hittp2 + Hit The Top (Barcrest) (MPU4, Mod 2 type, H4T 2.0, set 1) + + + m4hittp2a + Hit The Top (Barcrest) (MPU4, Mod 2 type, H4T 2.0, set 2) + + + m4holdon + Hold On (Barcrest) (Dutch) (MPU4) (DHO 2.5) + + + m4holdtm + Hold Timer (Barcrest) (Dutch) (MPU4) (DHT 1.0) + + + m4holywd + Hollywood (bootleg) (MPU4) (HOL 1.0) + + + m4hotcsh + Hot Cash (Empire) (MPU4, set 1) + + + m4hotcsha + Hot Cash (Empire) (MPU4, set 2) + + + m4hotcshb + Hot Cash (Empire) (MPU4, set 3) + + + m4hotcshc + Hot Cash (Empire) (MPU4, set 4) + + + m4hotrod + Hot Rod (Barcrest) (MPU4) (ROD 0.4K) + + + m4hotrod__a + Hot Rod (Barcrest) (MPU4) (HRC_1.0C) + + + m4hotrod__b + Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 1) + + + m4hotrod__c + Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 2) + + + m4hotrod__d + Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 3) + + + m4hotrod__e + Hot Rod (Barcrest) (MPU4) (ROD 0.4C, hack?, set 1) + + + m4hotrod__f + Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 4) + + + m4hotrod__g + Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 5) + + + m4hotrod__h + Hot Rod (Barcrest) (MPU4) (ROD 0.4C) + + + m4hotrod__i + Hot Rod (Barcrest) (MPU4) (ROD 0.4YD) + + + m4hotrod__j + Hot Rod (Barcrest) (MPU4) (ROD 0.4) + + + m4hotrod__k + Hot Rod (Barcrest) (MPU4) (HR__1.0, set 1) + + + m4hotrod__l + Hot Rod (Barcrest) (MPU4) (HR__1.0D, set 1) + + + m4hotrod__m + Hot Rod (Barcrest) (MPU4) (HR__1.0, set 2) + + + m4hotrod__n + Hot Rod (Barcrest) (MPU4) (HR__1.0D, set 2) + + + m4hotrod__o + Hot Rod (Barcrest) (MPU4) (HR__1.0C, set 1) + + + m4hotrod__p + Hot Rod (Barcrest) (MPU4) (HR__1.0C, set 2) + + + m4hotrod__q + Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 6) + + + m4hotrod__r + Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 7) + + + m4hotrod__s + Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 8) + + + m4hotrod__t + Hot Rod (Barcrest) (MPU4) (HR__1.0, hack, set 9) + + + m4hotrod__u + Hot Rod (Barcrest) (MPU4) (ROD 0.4C, hack?, set 2) + + + m4hotrod__v + Hot Rod (Barcrest) (MPU4) (ROD 0.4, hack?, set 3) + + + m4hpyjok + Happy Joker (Barcrest) (Dutch) (MPU4) (DHJ 1.2) + + + m4hslo + Hot Slot (bootleg) (MPU4) (HOT 3.0) + + + m4hstr + Happy Streak (Coinworld) (MPU4) (set 1) + + + m4hstra + Happy Streak (Coinworld) (MPU4) (set 2) + + + m4hstrb + Happy Streak (Coinworld) (MPU4) (set 3) + + + m4hstrcs + Casino Happy Streak (Coinworld) (MPU4) (set 1) + + + m4hstrcsa + Casino Happy Streak (Coinworld) (MPU4) (set 2) + + + m4hstrcsb + Casino Happy Streak (Coinworld) (MPU4) (set 3) + + + m4hstrcsc + Casino Happy Streak (Coinworld) (MPU4) (set 4) + + + m4hstrcsd + Casino Happy Streak (Coinworld) (MPU4) (set 5) + + + m4hvhel + Heaven & Hell (BWB) (MPU4) (20p stake / £8 token jackpot, set 1) + + + m4hvhel__a + Heaven & Hell (BWB) (MPU4) (20p stake / £8 token jackpot, set 2) + + + m4hvhel__b + Heaven & Hell (BWB) (MPU4) (20p stake / £8 token jackpot, set 3) + + + m4hvhel__c + Heaven & Hell (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) + + + m4hvhel__d + Heaven & Hell (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1) + + + m4hvhel__e + Heaven & Hell (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2) + + + m4hvhel__f + Heaven & Hell (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 3) + + + m4hvhel__g + Heaven & Hell (BWB) (MPU4) (5/10p stake / £5 jackpot, set 1) + + + m4hvhel__h + Heaven & Hell (BWB) (MPU4) (5/10p stake / £5 jackpot, set 2) + + + m4hypclb + Hyper Viper Club (Barcrest) (MPU4) (HPC 0.5) + + + m4hypclb__a + Hyper Viper Club (Barcrest) (MPU4) (HPC 0.5 F) + + + m4hypclb__b + Hyper Viper Club (Barcrest) (MPU4) (HPC 0.5 FD) + + + m4hypclb__c + Hyper Viper Club (Barcrest) (MPU4) (HPC 0.5 D) + + + m4indycr + Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 1) + + + m4indycr__a + Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 2) + + + m4indycr__b + Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 3) + + + m4indycr__c + Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 4) + + + m4indycr__d + Indy Cars (BWB) (MPU4) (20/25/30p stake / £5/£15 jackpot) (set 5) + + + m4indycr__e + Indy Cars (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1) + + + m4indycr__f + Indy Cars (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2) + + + m4intcep + Interceptor (Barcrest) (MPU4) (INT 3.0) + + + m4intcepa + Interceptor (Barcrest) (MPU4) (INT 3.0X) + + + m4intcepb + Interceptor (Barcrest) (MPU4) (INT 1.1) + + + m4jakjok + Jackpot Jokers (BWB) (MPU4) (ver. 6) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) + + + m4jakjok__a + Jackpot Jokers (BWB) (MPU4) (ver. 3) (20/25/30p stake / £5/£15 jackpot) + + + m4jakjok__b + Jackpot Jokers (BWB) (MPU4) (ver. 6) (20/25/30p stake / £5/£15 jackpot) + + + m4jakjok__c + Jackpot Jokers (BWB) (MPU4) (ver. 7) (5/10p stake / £5 jackpot) + + + m4jakjoka + Jackpot Jokers (BWB) (MPU4) (ver. 2) (20/25/30p stake / £5/£15 jackpot) + + + m4jflash + Jumping Jack Flash (BWB) (MPU4) (set 1) + + + m4jflash__a + Jumping Jack Flash (BWB) (MPU4) (set 2) + + + m4jflash__b + Jumping Jack Flash (BWB) (MPU4) (set 3) + + + m4jflash__c + Jumping Jack Flash (BWB) (MPU4) (set 4) + + + m4jflash__d + Jumping Jack Flash (BWB) (MPU4) (set 5) + + + m4jflash__e + Jumping Jack Flash (BWB) (MPU4) (set 6) + + + m4jflash__f + Jumping Jack Flash (BWB) (MPU4) (set 7) + + + m4jflash__g + Jumping Jack Flash (BWB) (MPU4) (set 8) + + + m4jflash__h + Jumping Jack Flash (BWB) (MPU4) (set 9) + + + m4jflash__i + Jumping Jack Flash (BWB) (MPU4) (set 10) + + + m4jiggin + Jiggin' In The Riggin' (Global) (MPU4) (set 1) + + + m4jiggina + Jiggin' In The Riggin' (Global) (MPU4) (set 2) + + + m4jjc + Jumping Jack Cash (Pcp) (MPU4) (set 1) + + + m4jjca + Jumping Jack Cash (Pcp) (MPU4) (set 2) + + + m4jne + The Jackpot's Not Enough (Empire) (MPU4) + + + m4jok2k + Joker 2000 (Avantime?) (MPU4) (set 1) + + + m4jok2k__a + Joker 2000 (Avantime?) (MPU4) (set 2) + + + m4jok2k__b + Joker 2000 (Avantime?) (MPU4) (set 3) + + + m4jok300 + Jokers Millenium 300 (Barcrest) (German) (MPU4) (DJO 0.1, set 1) + + + m4jok300a + Jokers Millenium 300 (Barcrest) (German) (MPU4) (DJO 0.1, set 2) + + + m4jolgem + Jolly Gems (Barcrest) (MPU4) (GEM 0.7) + + + m4jolgem__0 + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 DH) + + + m4jolgem__1 + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 DK) + + + m4jolgem__2 + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 DR) + + + m4jolgem__3 + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 DY) + + + m4jolgem__4 + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 H) + + + m4jolgem__5 + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 K) + + + m4jolgem__6 + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 R) + + + m4jolgem__7 + Jolly Gems (Barcrest) (MPU4) (GMS 0.4) + + + m4jolgem__8 + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 Y) + + + m4jolgem__9 + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 DA) + + + m4jolgem__a + Jolly Gems (Barcrest) (MPU4) (GEM 0.5) + + + m4jolgem__aa + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 B) + + + m4jolgem__ab + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 DB) + + + m4jolgem__ac + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 D) + + + m4jolgem__ad + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 DH) + + + m4jolgem__ae + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 DK) + + + m4jolgem__af + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 DR) + + + m4jolgem__ag + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 DY) + + + m4jolgem__ah + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 H) + + + m4jolgem__ai + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 K) + + + m4jolgem__aj + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 R) + + + m4jolgem__ak + Jolly Gems (Barcrest) (MPU4) (GMS 0.5) + + + m4jolgem__al + Jolly Gems (Barcrest) (MPU4) (GMS 0.5 Y) + + + m4jolgem__am + Jolly Gems (Barcrest) (MPU4) (GEM 0.6, hack) + + + m4jolgem__an + Jolly Gems (Barcrest) (MPU4) (GMS 0.4, hack) + + + m4jolgem__ao + Jolly Gems (Barcrest) (MPU4) (GMS 0.3 K) + + + m4jolgem__ap + Jolly Gems (Barcrest) (MPU4) (JGS 1.0 CK) + + + m4jolgem__b + Jolly Gems (Barcrest) (MPU4) (GEM 0.6 DA) + + + m4jolgem__c + Jolly Gems (Barcrest) (MPU4) (GEM 0.6 B) + + + m4jolgem__d + Jolly Gems (Barcrest) (MPU4) (GEM 0.6 DB) + + + m4jolgem__e + Jolly Gems (Barcrest) (MPU4) (GEM 0.6 D) + + + m4jolgem__f + Jolly Gems (Barcrest) (MPU4) (GEM 0.6 DH) + + + m4jolgem__g + Jolly Gems (Barcrest) (MPU4) (GEM 0.6 DR) + + + m4jolgem__h + Jolly Gems (Barcrest) (MPU4) (GEM 0.6 DY) + + + m4jolgem__i + Jolly Gems (Barcrest) (MPU4) (GEM 0.6 H) + + + m4jolgem__j + Jolly Gems (Barcrest) (MPU4) (GEM 0.6 R) + + + m4jolgem__k + Jolly Gems (Barcrest) (MPU4) (GEM 0.6) + + + m4jolgem__l + Jolly Gems (Barcrest) (MPU4) (GEM 0.6 Y) + + + m4jolgem__m + Jolly Gems (Barcrest) (MPU4) (GEM 0.7 DA) + + + m4jolgem__n + Jolly Gems (Barcrest) (MPU4) (GEM 0.7 B) + + + m4jolgem__o + Jolly Gems (Barcrest) (MPU4) (GEM 0.7 DB) + + + m4jolgem__p + Jolly Gems (Barcrest) (MPU4) (GEM 0.7 D) + + + m4jolgem__q + Jolly Gems (Barcrest) (MPU4) (GEM 0.7 DH) + + + m4jolgem__r + Jolly Gems (Barcrest) (MPU4) (GEM 0.7 DR) + + + m4jolgem__s + Jolly Gems (Barcrest) (MPU4) (GEM 0.7 DY) + + + m4jolgem__t + Jolly Gems (Barcrest) (MPU4) (GEM 0.7 H) + + + m4jolgem__u + Jolly Gems (Barcrest) (MPU4) (GEM 0.7 R) + + + m4jolgem__v + Jolly Gems (Barcrest) (MPU4) (GEM 0.7 Y) + + + m4jolgem__w + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 DA) + + + m4jolgem__x + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 B) + + + m4jolgem__y + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 DB) + + + m4jolgem__z + Jolly Gems (Barcrest) (MPU4) (GMS 0.4 D) + + + m4joljok + Jolly Joker (Barcrest) (MPU4) (JOJ 1.6) + + + m4joljokd + Jolly Joker (Barcrest) (Dutch) (MPU4) (DJJ 1.5) + + + m4joljokh + Jolly Joker (Barcrest) (Hungarian) (MPU4) (HJJ 1.4) + + + m4joltav + Jolly Taverner (Barcrest) (MPU4) (TAV 1.3) + + + m4joltava + Jolly Taverner (Barcrest) (MPU4) (JT__ 2.0, set 1) + + + m4joltavb + Jolly Taverner (Barcrest) (MPU4) (JT__ 2.0, set 2) + + + m4jp777 + Jackpot 777 (Cotswold Microsystems) (MPU4) + + + m4jpgem + Jackpot Gems (Barcrest) (MPU4) (CG4 0.7) + + + m4jpgem__0 + Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 YD / CG4 0.2) + + + m4jpgem__1 + Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 K / CG4 0.2) + + + m4jpgem__2 + Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 R / CG4 0.2) + + + m4jpgem__3 + Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 / CG4 0.2) + + + m4jpgem__4 + Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 Y / CG4 0.2) + + + m4jpgem__5 + Jackpot Gems (Barcrest) (MPU4) (JAG 0.4 B) + + + m4jpgem__6 + Jackpot Gems (Barcrest) (MPU4) (JAG 0.4 D) + + + m4jpgem__7 + Jackpot Gems (Barcrest) (MPU4) (JAG 0.4 KD) + + + m4jpgem__8 + Jackpot Gems (Barcrest) (MPU4) (JAG 0.4 YD) + + + m4jpgem__9 + Jackpot Gems (Barcrest) (MPU4) (JAG 0.4) + + + m4jpgem__a + Jackpot Gems (Barcrest) (MPU4) (CG4 0.7 B) + + + m4jpgem__a0 + Jackpot Gems (Barcrest) (MPU4) (JGT 0.3 R) + + + m4jpgem__a1 + Jackpot Gems (Barcrest) (MPU4) (JGT 0.3) + + + m4jpgem__a2 + Jackpot Gems (Barcrest) (MPU4) (JGT 0.3 Y) + + + m4jpgem__a3 + Jackpot Gems (Barcrest) (MPU4) (JGU 0.2 AD) + + + m4jpgem__a4 + Jackpot Gems (Barcrest) (MPU4) (JGU 0.2 B) + + + m4jpgem__a5 + Jackpot Gems (Barcrest) (MPU4) (JGU 0.2 BD) + + + m4jpgem__a6 + Jackpot Gems (Barcrest) (MPU4) (JGU 0.2 D) + + + m4jpgem__a7 + Jackpot Gems (Barcrest) (MPU4) (JGU 0.2 KD) + + + m4jpgem__a8 + Jackpot Gems (Barcrest) (MPU4) (JGU 0.2 RD) + + + m4jpgem__a9 + Jackpot Gems (Barcrest) (MPU4) (JGU 0.2 YD) + + + m4jpgem__aa + Jackpot Gems (Barcrest) (MPU4) (JAG 0.4 Y) + + + m4jpgem__ab + Jackpot Gems (Barcrest) (MPU4) (JG3 0.1 AD) + + + m4jpgem__ac + Jackpot Gems (Barcrest) (MPU4) (JG3 0.1 B) + + + m4jpgem__ad + Jackpot Gems (Barcrest) (MPU4) (JG3 0.1 BD) + + + m4jpgem__ae + Jackpot Gems (Barcrest) (MPU4) (JG3 0.1 D) + + + m4jpgem__af + Jackpot Gems (Barcrest) (MPU4) (JG3 0.1 KD) + + + m4jpgem__ag + Jackpot Gems (Barcrest) (MPU4) (JG3 0.1 YD) + + + m4jpgem__ah + Jackpot Gems (Barcrest) (MPU4) (JG3 0.1 K) + + + m4jpgem__ai + Jackpot Gems (Barcrest) (MPU4) (JG3 0.1) + + + m4jpgem__aj + Jackpot Gems (Barcrest) (MPU4) (JG3 0.1 Y) + + + m4jpgem__ak + Jackpot Gems (Barcrest) (MPU4) (JG8 0.1 B) + + + m4jpgem__al + Jackpot Gems (Barcrest) (MPU4) (JG8 0.1 C) + + + m4jpgem__am + Jackpot Gems (Barcrest) (MPU4) (JG8 0.1 D) + + + m4jpgem__an + Jackpot Gems (Barcrest) (MPU4) (JG8 0.1 BD) + + + m4jpgem__ao + Jackpot Gems (Barcrest) (MPU4) (JG8 0.1 KD) + + + m4jpgem__ap + Jackpot Gems (Barcrest) (MPU4) (JG8 0.1 YD) + + + m4jpgem__aq + Jackpot Gems (Barcrest) (MPU4) (JG8 0.1 K) + + + m4jpgem__ar + Jackpot Gems (Barcrest) (MPU4) (JG8 0.1) + + + m4jpgem__as + Jackpot Gems (Barcrest) (MPU4) (JGT 0.3 AD) + + + m4jpgem__at + Jackpot Gems (Barcrest) (MPU4) (JGT 0.3 B) + + + m4jpgem__au + Jackpot Gems (Barcrest) (MPU4) (JGT 0.3 BD) + + + m4jpgem__av + Jackpot Gems (Barcrest) (MPU4) (JGT 0.3 D) + + + m4jpgem__aw + Jackpot Gems (Barcrest) (MPU4) (JGT 0.3 KD) + + + m4jpgem__ax + Jackpot Gems (Barcrest) (MPU4) (JGT 0.3 RD) + + + m4jpgem__ay + Jackpot Gems (Barcrest) (MPU4) (JGT 0.3 YD) + + + m4jpgem__az + Jackpot Gems (Barcrest) (MPU4) (JGT 0.3 K) + + + m4jpgem__b + Jackpot Gems (Barcrest) (MPU4) (CG4 0.7 BD) + + + m4jpgem__ba + Jackpot Gems (Barcrest) (MPU4) (JGU 0.2 K) + + + m4jpgem__bb + Jackpot Gems (Barcrest) (MPU4) (JGU 0.2 R) + + + m4jpgem__bc + Jackpot Gems (Barcrest) (MPU4) (JGU 0.2) + + + m4jpgem__bd + Jackpot Gems (Barcrest) (MPU4) (JGU 0.2 Y) + + + m4jpgem__be + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 AD / CG4 0.1) + + + m4jpgem__bf + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 B / CG4 0.1) + + + m4jpgem__bg + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 BD / CG4 0.1) + + + m4jpgem__bh + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 C / CG4 0.1) + + + m4jpgem__bi + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 D / CG4 0.1) + + + m4jpgem__bj + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 KD / CG4 0.1) + + + m4jpgem__bk + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 RD / CG4 0.1) + + + m4jpgem__bl + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 YD / CG4 0.1) + + + m4jpgem__bm + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 K / CG4 0.1) + + + m4jpgem__bn + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 R / CG4 0.1) + + + m4jpgem__bo + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 / CG4 0.1) + + + m4jpgem__bp + Jackpot Gems (Barcrest) (MPU4) (RRH 0.1 Y / CG4 0.1) + + + m4jpgem__c + Jackpot Gems (Barcrest) (MPU4) (CG4 0.7 D) + + + m4jpgem__d + Jackpot Gems (Barcrest) (MPU4) (CG4 0.7 KD) + + + m4jpgem__e + Jackpot Gems (Barcrest) (MPU4) (CG4 0.7 YD) + + + m4jpgem__f + Jackpot Gems (Barcrest) (MPU4) (CG4 0.7 K) + + + m4jpgem__g + Jackpot Gems (Barcrest) (MPU4) (CG4 0.7 AD) + + + m4jpgem__h + Jackpot Gems (Barcrest) (MPU4) (CG4 0.7 Y) + + + m4jpgem__i + Jackpot Gems (Barcrest) (MPU4) (CGT 0.3 AD / CG4 0.3) + + + m4jpgem__j + Jackpot Gems (Barcrest) (MPU4) (CGT 0.3 B / CG4 0.3) + + + m4jpgem__k + Jackpot Gems (Barcrest) (MPU4) (CGT 0.3 BD / CG4 0.3) + + + m4jpgem__l + Jackpot Gems (Barcrest) (MPU4) (CGT 0.3 D / CG4 0.3) + + + m4jpgem__m + Jackpot Gems (Barcrest) (MPU4) (CGT 0.3 KD / CG4 0.3) + + + m4jpgem__n + Jackpot Gems (Barcrest) (MPU4) (CGT 0.3 RD / CG4 0.3) + + + m4jpgem__o + Jackpot Gems (Barcrest) (MPU4) (CGT 0.3 YD / CG4 0.3) + + + m4jpgem__p + Jackpot Gems (Barcrest) (MPU4) (CGT 0.3 K / CG4 0.3) + + + m4jpgem__q + Jackpot Gems (Barcrest) (MPU4) (CGT 0.3 R / CG4 0.3) + + + m4jpgem__r + Jackpot Gems (Barcrest) (MPU4) (CGT 0.3 / CG4 0.3) + + + m4jpgem__s + Jackpot Gems (Barcrest) (MPU4) (CGT 0.3 Y / CG4 0.3) + + + m4jpgem__t + Jackpot Gems (Barcrest) (MPU4) (CGT 0.1 / CG4 0.1) + + + m4jpgem__u + Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 AD / CG4 0.2) + + + m4jpgem__v + Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 B / CG4 0.2) + + + m4jpgem__w + Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 BD / CG4 0.2) + + + m4jpgem__x + Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 D / CG4 0.2) + + + m4jpgem__y + Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 KD / CG4 0.2) + + + m4jpgem__z + Jackpot Gems (Barcrest) (MPU4) (CGU 0.2 RD / CG4 0.2) + + + m4jpgemc + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 / CG4 0.1) + + + m4jpgemc__a + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 B / CG4 0.1) + + + m4jpgemc__b + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 BD / CG4 0.1) + + + m4jpgemc__c + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 C / CG4 0.1) + + + m4jpgemc__d + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 D / CG4 0.1) + + + m4jpgemc__e + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 KD / CG4 0.1) + + + m4jpgemc__f + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 RD / CG4 0.1) + + + m4jpgemc__g + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 YD / CG4 0.1) + + + m4jpgemc__h + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 K / CG4 0.1) + + + m4jpgemc__i + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 R / CG4 0.1) + + + m4jpgemc__j + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 AD / CG4 0.1) + + + m4jpgemc__k + Jackpot Gems Classic (Barcrest) (MPU4) (GTC 0.1 Y / CG4 0.1) + + + m4jpgemc__l + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 AD / CG4 0.1) + + + m4jpgemc__m + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 B / CG4 0.1) + + + m4jpgemc__n + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 BD / CG4 0.1) + + + m4jpgemc__o + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 C / CG4 0.1) + + + m4jpgemc__p + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 D / CG4 0.1) + + + m4jpgemc__q + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 KD / CG4 0.1) + + + m4jpgemc__r + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 RD / CG4 0.1) + + + m4jpgemc__s + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 YD / CG4 0.1) + + + m4jpgemc__t + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 K / CG4 0.1) + + + m4jpgemc__u + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 R / CG4 0.1) + + + m4jpgemc__v + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 / CG4 0.1) + + + m4jpgemc__w + Jackpot Gems Classic (Barcrest) (MPU4) (HGE 0.1 Y / CG4 0.1) + + + m4jpjmp + Jackpot Jump (Barcrest) (MPU4) (VJC 2.0) + + + m4jpjmpa + Jackpot Jump (Barcrest) (MPU4) (VJC 1.3) + + + m4jungj + Jungle Japes (MPU4?) (set 1) + + + m4jungja + Jungle Japes (MPU4?) (set 2) + + + m4jungjb + Jungle Japes (MPU4?) (set 3) + + + m4jungjc + Jungle Japes (MPU4?) (set 4) + + + m4jungjk + Jungle Jackpots (Qps) (MPU4) (set 1) + + + m4jungjk__a + Jungle Jackpots (Qps) (MPU4) (set 2) + + + m4jungjk__b + Jungle Jackpots (Qps) (MPU4) (set 3) + + + m4jungjk__c + Jungle Jackpots (Qps) (MPU4) (set 4) + + + m4jungjk__d + Jungle Jackpots (Qps) (MPU4) (set 5) + + + m4jungjk__e + Jungle Jackpots (Qps) (MPU4) (set 6) + + + m4jwlcwn + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0) + + + m4jwlcwn__0 + Jewel In the Crown (Barcrest) (MPU4) (CJH 0.8) + + + m4jwlcwn__1 + Jewel In the Crown (Barcrest) (MPU4) (JC8 4.4) + + + m4jwlcwn__2 + Jewel In the Crown (Barcrest) (MPU4) (JCC 3.3) + + + m4jwlcwn__3 + Jewel In the Crown (Barcrest) (MPU4) (JC4 3.1 K) + + + m4jwlcwn__4 + Jewel In the Crown (Barcrest) (MPU4) (JC5 1.9 K) + + + m4jwlcwn__5 + Jewel In the Crown (Barcrest) (MPU4) (JC8 4.2 K) + + + m4jwlcwn__6 + Jewel In the Crown (Barcrest) (MPU4) (JCC 3.7) + + + m4jwlcwn__a + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 AD) + + + m4jwlcwn__b + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 B) + + + m4jwlcwn__c + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 BD) + + + m4jwlcwn__d + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 C) + + + m4jwlcwn__e + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 D) + + + m4jwlcwn__f + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 KD) + + + m4jwlcwn__g + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 RD) + + + m4jwlcwn__h + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 YD) + + + m4jwlcwn__i + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 K) + + + m4jwlcwn__j + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 R) + + + m4jwlcwn__k + Jewel In the Crown (Barcrest) (MPU4) (CJE 0.8 Y) + + + m4jwlcwn__l + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 Y) + + + m4jwlcwn__m + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 AD) + + + m4jwlcwn__n + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 B) + + + m4jwlcwn__o + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 BD) + + + m4jwlcwn__p + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 C) + + + m4jwlcwn__q + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 D) + + + m4jwlcwn__r + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 KD) + + + m4jwlcwn__s + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 RD) + + + m4jwlcwn__t + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 YD) + + + m4jwlcwn__u + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 K) + + + m4jwlcwn__v + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 R) + + + m4jwlcwn__w + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0) + + + m4jwlcwn__x + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 Y) + + + m4jwlcwn__y + Jewel In the Crown (Barcrest) (MPU4) (CJH 1.0 C, hack) + + + m4jwlcwn__z + Jewel In the Crown (Barcrest) (MPU4) (CJE 1.0 C, hack) + + + m4kingg + King George (Avantime?) (MPU4) (set 1) + + + m4kingg__a + King George (Avantime?) (MPU4) (set 2) + + + m4kingq + Kings & Queens (Barcrest) (MPU4) (EE4 2.1 K/ EE 2.1) + + + m4kingq__a + Kings & Queens (Barcrest) (MPU4) (EE8 2.2 K / EE 2.2) + + + m4kingq__b + Kings & Queens (Barcrest) (MPU4) (EE 2.0 K / EE_ 2.0) + + + m4kingq__c + Kings & Queens (Barcrest) (MPU4) (EE 1.0 K / EE 1.0) + + + m4kingq__d + Kings & Queens (Barcrest) (MPU4) (EE 2.0 B / EE_ 2.0) + + + m4kingq__e + Kings & Queens (Barcrest) (MPU4) (EE 1.0 B / EE 1.0) + + + m4kingq__f + Kings & Queens (Barcrest) (MPU4) (EE 2.0 BD / EE_ 2.0) + + + m4kingq__g + Kings & Queens (Barcrest) (MPU4) (EE 1.0 BD / EE 1.0) + + + m4kingq__h + Kings & Queens (Barcrest) (MPU4) (EE 2.0 BA / EE_ 2.0) + + + m4kingq__i + Kings & Queens (Barcrest) (MPU4) (EE 2.0 R / EE_ 2.0) + + + m4kingq__j + Kings & Queens (Barcrest) (MPU4) (EE 1.0 CB / EE 1.0) + + + m4kingq__k + Kings & Queens (Barcrest) (MPU4) (EE 2.0 YD / EE_ 2.0) + + + m4kingq__l + Kings & Queens (Barcrest) (MPU4) (EE' 2.0 K / EE_ 2.0) + + + m4kingq__m + Kings & Queens (Barcrest) (MPU4) (EE' 2.0 B / EE_ 2.0) + + + m4kingq__n + Kings & Queens (Barcrest) (MPU4) (EE' 2.0 BD / EE_ 2.0) + + + m4kingq__o + Kings & Queens (Barcrest) (MPU4) (EE' 2.0 AD / EE_ 2.0) + + + m4kingq__p + Kings & Queens (Barcrest) (MPU4) (EE' 2.0 BR / EE_ 2.0) + + + m4kingq__r + Kings & Queens (Barcrest) (MPU4) (EE' 2.0 YD / EE_ 2.0) + + + m4kingq__s + Kings & Queens (Barcrest) (MPU4) (EE 2.0 C / EE_ 2.0) + + + m4kingq__t + Kings & Queens (Barcrest) (MPU4) (EE2 1.0 / EE2 1.0) + + + m4kingqc + Kings & Queens Classic (Barcrest) (MPU4) (CN4 / CN4 6.0 YD) + + + m4kingqc__0 + Kings & Queens Classic (Barcrest) (MPU4) (CNT, CN4 1.0 YD) + + + m4kingqc__1 + Kings & Queens Classic (Barcrest) (MPU4) (CN 1.4 D) + + + m4kingqc__2 + Kings & Queens Classic (Barcrest) (MPU4) (CN 1.4 K) + + + m4kingqc__3 + Kings & Queens Classic (Barcrest) (MPU4) (CN 1.4 B) + + + m4kingqc__4 + Kings & Queens Classic (Barcrest) (MPU4) (CN 1.4 AD) + + + m4kingqc__5 + Kings & Queens Classic (Barcrest) (MPU4) (CN 1.4 BR) + + + m4kingqc__a + Kings & Queens Classic (Barcrest) (MPU4) (CN / CN 3.0 YD) + + + m4kingqc__b + Kings & Queens Classic (Barcrest) (MPU4) (CN / CN 3.0 D) + + + m4kingqc__c + Kings & Queens Classic (Barcrest) (MPU4) (CN / CN 2.0 K) + + + m4kingqc__d + Kings & Queens Classic (Barcrest) (MPU4) (CN / CN 3.0 K) + + + m4kingqc__e + Kings & Queens Classic (Barcrest) (MPU4) (CN4 5.0 K) + + + m4kingqc__f + Kings & Queens Classic (Barcrest) (MPU4) (CN / CN 2.0 B) + + + m4kingqc__g + Kings & Queens Classic (Barcrest) (MPU4) (CN / CN 3.0 B) + + + m4kingqc__h + Kings & Queens Classic (Barcrest) (MPU4) (CN4 5.0 B) + + + m4kingqc__i + Kings & Queens Classic (Barcrest) (MPU4) (CN4 / CN4 6.0 BA) + + + m4kingqc__j + Kings & Queens Classic (Barcrest) (MPU4) (CN / CN 3.0 BA) + + + m4kingqc__k + Kings & Queens Classic (Barcrest) (MPU4) (CN4 5.0 BA) + + + m4kingqc__l + Kings & Queens Classic (Barcrest) (MPU4) (CN / CN 2.0 R) + + + m4kingqc__m + Kings & Queens Classic (Barcrest) (MPU4) (CN / CN 3.0 BR) + + + m4kingqc__n + Kings & Queens Classic (Barcrest) (MPU4) (CN4 5.0 BR) + + + m4kingqc__q + Kings & Queens Classic (Barcrest) (MPU4) (CN4 5.0 YD) + + + m4kingqc__r + Kings & Queens Classic (Barcrest) (MPU4) (CNT, CN4 2.0 YD) + + + m4kingqc__s + Kings & Queens Classic (Barcrest) (MPU4) (CNT, CN4 2.0 D) + + + m4kingqc__t + Kings & Queens Classic (Barcrest) (MPU4) (CNT, CN4 2.0 Y) + + + m4kingqc__u + Kings & Queens Classic (Barcrest) (MPU4) (CNT, CN4 2.0 K) + + + m4kingqc__v + Kings & Queens Classic (Barcrest) (MPU4) (CNT, CN4 2.0 B) + + + m4kingqc__w + Kings & Queens Classic (Barcrest) (MPU4) (CNT, CN4 2.0 BD) + + + m4kingqc__x + Kings & Queens Classic (Barcrest) (MPU4) (CNT, CN4 2.0 AD) + + + m4kingqc__y + Kings & Queens Classic (Barcrest) (MPU4) (CNT, CN4 2.0 BR) + + + m4kingqc__z + Kings & Queens Classic (Barcrest) (MPU4) (CNT, CN4 1.0) + + + m4kingqn + Kings & Queens Club (Crystal) (MPU4) (set 1) + + + m4kingqna + Kings & Queens Club (Crystal) (MPU4) (set 2) + + + m4kqclub + Kings & Queens Club (Newby) (MPU4) + + + m4lazy + Lazy Bones (BWB) (MPU4) (LBD 1.0) + + + m4lazya + Lazy Bones (BWB) (MPU4) (LBD 1.2, set 1) + + + m4lazyb + Lazy Bones (BWB) (MPU4) (LBD 1.2, set 2) + + + m4libty + Liberty (Barcrest) (Dutch) (MPU4) (DLI 1.0) + + + m4lineup + Line Up (BWB) (MPU4) (set 1) + + + m4lineupa + Line Up (BWB) (MPU4) (set 2) + + + m4ln7 + Lucky Number 7 (BWB) (MPU4) (set 1) + + + m4ln7__a + Lucky Number 7 (BWB) (MPU4) (set 2) + + + m4ln7__b + Lucky Number 7 (BWB) (MPU4) (set 3) + + + m4ln7__c + Lucky Number 7 (BWB) (MPU4) (set 4) + + + m4ln7__d + Lucky Number 7 (BWB) (MPU4) (set 5) + + + m4loadmn + Loads A Money (Barcrest) (MPU4) (LA 1.0) + + + m4loadmna + Loads A Money (Barcrest) (MPU4) (LA 1.1, set 1) + + + m4loadmnb + Loads A Money (Barcrest) (MPU4) (LA 1.1, set 2) + + + m4looplt + Loop The Loot (Qps) (MPU4) (set 1) + + + m4looplt__a + Loop The Loot (Qps) (MPU4) (set 2) + + + m4looplt__b + Loop The Loot (Qps) (MPU4) (set 3) + + + m4looplt__c + Loop The Loot (Qps) (MPU4) (set 4) + + + m4looplt__d + Loop The Loot (Qps) (MPU4) (set 5) + + + m4looplt__e + Loop The Loot (Qps) (MPU4) (set 6) + + + m4looplt__f + Loop The Loot (Qps) (MPU4) (set 7) + + + m4looplt__g + Loop The Loot (Qps) (MPU4) (set 8) + + + m4looplt__h + Loop The Loot (Qps) (MPU4) (set 9) + + + m4looplt__i + Loop The Loot (Qps) (MPU4) (set 10) + + + m4looplt__j + Loop The Loot (Qps) (MPU4) (set 11) + + + m4looplt__k + Loop The Loot (Qps) (MPU4) (set 12) + + + m4looplt__l + Loop The Loot (Qps) (MPU4) (set 13) + + + m4looplt__m + Loop The Loot (Qps) (MPU4) (set 14) + + + m4lotclb + Lottery Club (Crystal) (MPU4) (set 1) + + + m4lotclba + Lottery Club (Crystal) (MPU4) (set 2) + + + m4lotty + Lotty Time (Union) (MPU4) + + + m4luck7 + Lucky 7 (Barcrest) (Dutch) (MPU4) + + + m4luckdv + Lucky Devil (Barcrest) (Czech) (MPU4) (CLD 3.0) + + + m4luckdvd + Lucky Devil (Barcrest) (Dutch) (MPU4) (DLD 1.3) + + + m4lucklv + Lucky Las Vegas (Barcrest) (MPU4) (LLV 0.2) + + + m4lucklv__0 + Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3 K) + + + m4lucklv__1 + Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3 R) + + + m4lucklv__2 + Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3) + + + m4lucklv__3 + Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3 Y) + + + m4lucklv__4 + Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1 AD) + + + m4lucklv__5 + Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1 B) + + + m4lucklv__6 + Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1 BD) + + + m4lucklv__7 + Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1 D) + + + m4lucklv__8 + Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1 KD) + + + m4lucklv__9 + Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1 RD) + + + m4lucklv__a + Lucky Las Vegas (Barcrest) (MPU4) (LL3 0.1 AD) + + + m4lucklv__aa + Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1 YD) + + + m4lucklv__ab + Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1 K) + + + m4lucklv__ac + Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1 R) + + + m4lucklv__ad + Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1) + + + m4lucklv__ae + Lucky Las Vegas (Barcrest) (MPU4) (LLU 0.1 Y) + + + m4lucklv__af + Lucky Las Vegas (Barcrest) (MPU4) (LLV 0.2 B) + + + m4lucklv__ag + Lucky Las Vegas (Barcrest) (MPU4) (LLV 0.2 C) + + + m4lucklv__ah + Lucky Las Vegas (Barcrest) (MPU4) (LLV 0.2 D) + + + m4lucklv__ai + Lucky Las Vegas (Barcrest) (MPU4) (LLV 0.2 R) + + + m4lucklv__b + Lucky Las Vegas (Barcrest) (MPU4) (LL3 0.1 B) + + + m4lucklv__c + Lucky Las Vegas (Barcrest) (MPU4) (LL3 0.1 BD) + + + m4lucklv__d + Lucky Las Vegas (Barcrest) (MPU4) (LL3 0.1 D) + + + m4lucklv__e + Lucky Las Vegas (Barcrest) (MPU4) (LL3 0.1 KD) + + + m4lucklv__f + Lucky Las Vegas (Barcrest) (MPU4) (LL3 0.1 YD) + + + m4lucklv__g + Lucky Las Vegas (Barcrest) (MPU4) (LL3 0.1 K) + + + m4lucklv__h + Lucky Las Vegas (Barcrest) (MPU4) (LL3 0.1) + + + m4lucklv__i + Lucky Las Vegas (Barcrest) (MPU4) (LL3 0.1 Y) + + + m4lucklv__j + Lucky Las Vegas (Barcrest) (MPU4) (LL8 0.1 AD) + + + m4lucklv__k + Lucky Las Vegas (Barcrest) (MPU4) (LL8 0.1 B) + + + m4lucklv__l + Lucky Las Vegas (Barcrest) (MPU4) (LL8 0.1 BD) + + + m4lucklv__m + Lucky Las Vegas (Barcrest) (MPU4) (LL8 0.1 C) + + + m4lucklv__n + Lucky Las Vegas (Barcrest) (MPU4) (LL8 0.1 D) + + + m4lucklv__o + Lucky Las Vegas (Barcrest) (MPU4) (LL8 0.1 KD) + + + m4lucklv__p + Lucky Las Vegas (Barcrest) (MPU4) (LL8 0.1 YD) + + + m4lucklv__q + Lucky Las Vegas (Barcrest) (MPU4) (LL8 0.1 K) + + + m4lucklv__r + Lucky Las Vegas (Barcrest) (MPU4) (LL8 0.1) + + + m4lucklv__s + Lucky Las Vegas (Barcrest) (MPU4) (LL8 0.1 Y) + + + m4lucklv__t + Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3 AD) + + + m4lucklv__u + Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3 B) + + + m4lucklv__v + Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3 BD) + + + m4lucklv__w + Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3 D) + + + m4lucklv__x + Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3 KD) + + + m4lucklv__y + Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3 RD) + + + m4lucklv__z + Lucky Las Vegas (Barcrest) (MPU4) (LLT 0.3 YD) + + + m4lucksc + Lucky Strike Club (Barcrest) (MPU4) (CLU 1.4) + + + m4lucksc__a + Lucky Strike Club (Barcrest) (MPU4) (CLU 1.4 F) + + + m4lucksc__b + Lucky Strike Club (Barcrest) (MPU4) (CLU 1.4 D) + + + m4lucksc__c + Lucky Strike Club (Barcrest) (MPU4) (GLS 0.6 D) + + + m4lucksc__d + Lucky Strike Club (Barcrest) (MPU4) (GLS 0.6 F) + + + m4lucksc__e + Lucky Strike Club (Barcrest) (MPU4) (GLS 0.6) + + + m4lucksc__f + Lucky Strike Club (Barcrest) (MPU4) (GS3 0.1 D) + + + m4lucksc__g + Lucky Strike Club (Barcrest) (MPU4) (GS3 0.1 F) + + + m4lucksc__h + Lucky Strike Club (Barcrest) (MPU4) (GS3 0.1) + + + m4lucksc__i + Lucky Strike Club (Barcrest) (MPU4) (LS3 0.1 D) + + + m4lucksc__j + Lucky Strike Club (Barcrest) (MPU4) (LS3 0.1 F) + + + m4lucksc__k + Lucky Strike Club (Barcrest) (MPU4) (LS3 0.1) + + + m4lucksc__l + Lucky Strike Club (Barcrest) (MPU4) (LSC 1.0) + + + m4luckst + Lucky Strike (Barcrest) (MPU4) (LSS 0.6) + + + m4luckst__0 + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 K) + + + m4luckst__1 + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 R) + + + m4luckst__2 + Lucky Strike (Barcrest) (MPU4) (LSS 0.7) + + + m4luckst__3 + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 Y) + + + m4luckst__4 + Lucky Strike (Barcrest) (MPU4) (LST 0.9 AD) + + + m4luckst__5 + Lucky Strike (Barcrest) (MPU4) (LST 0.9 B) + + + m4luckst__6 + Lucky Strike (Barcrest) (MPU4) (LST 0.9 BD) + + + m4luckst__7 + Lucky Strike (Barcrest) (MPU4) (LST 0.9 D) + + + m4luckst__8 + Lucky Strike (Barcrest) (MPU4) (LST 0.9 DH) + + + m4luckst__9 + Lucky Strike (Barcrest) (MPU4) (LST 0.9 KD) + + + m4luckst__a + Lucky Strike (Barcrest) (MPU4) (LST 0.9, hack) + + + m4luckst__aa + Lucky Strike (Barcrest) (MPU4) (LST 0.9 RD) + + + m4luckst__ab + Lucky Strike (Barcrest) (MPU4) (LST 0.9 YD) + + + m4luckst__ac + Lucky Strike (Barcrest) (MPU4) (LST 0.9 H) + + + m4luckst__ad + Lucky Strike (Barcrest) (MPU4) (LST 0.9 K) + + + m4luckst__ae + Lucky Strike (Barcrest) (MPU4) (LST 0.9 R) + + + m4luckst__af + Lucky Strike (Barcrest) (MPU4) (LST 0.9) + + + m4luckst__ag + Lucky Strike (Barcrest) (MPU4) (LST 0.9 Y) + + + m4luckst__ah + Lucky Strike (Barcrest) (MPU4) (LST 1.0 AD) + + + m4luckst__ai + Lucky Strike (Barcrest) (MPU4) (LST 1.0 B) + + + m4luckst__aj + Lucky Strike (Barcrest) (MPU4) (LST 1.0 BD) + + + m4luckst__ak + Lucky Strike (Barcrest) (MPU4) (LST 1.0 D) + + + m4luckst__al + Lucky Strike (Barcrest) (MPU4) (LST 1.0 DH) + + + m4luckst__am + Lucky Strike (Barcrest) (MPU4) (LST 1.0 KD) + + + m4luckst__an + Lucky Strike (Barcrest) (MPU4) (LST 1.0 RD) + + + m4luckst__ao + Lucky Strike (Barcrest) (MPU4) (LST 1.0 YD) + + + m4luckst__ap + Lucky Strike (Barcrest) (MPU4) (LST 1.0 H) + + + m4luckst__aq + Lucky Strike (Barcrest) (MPU4) (LST 1.0 K) + + + m4luckst__ar + Lucky Strike (Barcrest) (MPU4) (LST 1.0 R) + + + m4luckst__as + Lucky Strike (Barcrest) (MPU4) (LST 1.0) + + + m4luckst__at + Lucky Strike (Barcrest) (MPU4) (LST 1.0 Y) + + + m4luckst__au + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 C, hack, set 1) + + + m4luckst__av + Lucky Strike (Barcrest) (MPU4) (LSS 1.0 K, hack) + + + m4luckst__aw + Lucky Strike (Barcrest) (MPU4) (LSS 1.0 K) + + + m4luckst__b + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 C, hack, set 2) + + + m4luckst__c + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 AD) + + + m4luckst__d + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 B) + + + m4luckst__e + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 BD) + + + m4luckst__f + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 C) + + + m4luckst__g + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 D) + + + m4luckst__h + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 DH) + + + m4luckst__i + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 KD) + + + m4luckst__j + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 RD) + + + m4luckst__k + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 YD) + + + m4luckst__l + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 H) + + + m4luckst__m + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 K) + + + m4luckst__n + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 R) + + + m4luckst__p + Lucky Strike (Barcrest) (MPU4) (LSS 0.6 Y) + + + m4luckst__q + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 AD) + + + m4luckst__r + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 B) + + + m4luckst__s + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 BD) + + + m4luckst__t + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 C) + + + m4luckst__u + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 D) + + + m4luckst__v + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 DH) + + + m4luckst__w + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 KD) + + + m4luckst__x + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 RD) + + + m4luckst__y + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 YD) + + + m4luckst__z + Lucky Strike (Barcrest) (MPU4) (LSS 0.7 H) + + + m4luckwb + Lucky Wild Boar (MPU4) (set 1) + + + m4luckwba + Lucky Wild Boar (MPU4) (set 2) + + + m4luckwbb + Lucky Wild Boar (MPU4) (set 3) + + + m4luckwbc + Lucky Wild Boar (MPU4) (set 4) + + + m4luckwbd + Lucky Wild Boar (MPU4) (set 5, unprotected) + + + m4luckwbe + Lucky Wild Boar (MPU4) (set 6) + + + m4luckwbf + Lucky Wild Boar (MPU4) (set 7) + + + m4luxor + Luxor (Barcrest) (MPU4) (LUX 0.6) + + + m4luxor__a + Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 1) + + + m4luxor__b + Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 1) + + + m4luxor__c + Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 2) + + + m4luxor__d + Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 2) + + + m4luxor__e + Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 3) + + + m4luxor__f + Luxor (Barcrest) (MPU4) (LUX 0.6 C) + + + m4luxor__g + Luxor (Barcrest) (MPU4) (LUX 0.6 D) + + + m4luxor__h + Luxor (Barcrest) (MPU4) (LUX 0.6 K) + + + m4luxor__i + Luxor (Barcrest) (MPU4) (LUX 0.6 Y) + + + m4luxor__j + Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 1) + + + m4luxor__k + Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 4) + + + m4luxor__l + Luxor (Barcrest) (MPU4) (LX5 1.0, hack, set 5) + + + m4luxor__m + Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 2) + + + m4luxor__n + Luxor (Barcrest) (MPU4) (LX101.0, hack?, set 3) + + + m4luxor__o + Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 3) + + + m4luxor__p + Luxor (Barcrest) (MPU4) (V1 0.6, hack, set 4) + + + m4luxor__q + Luxor (Barcrest) (MPU4) (LX5 1.0 K) + + + m4luxor__r + Luxor (Barcrest) (MPU4) (LX5 1.0) + + + m4luxor__s + Luxor (Barcrest) (MPU4) (LX5 1.0 YD) + + + m4luxor__t + Luxor (Barcrest) (MPU4) (LX5 1.0 D) + + + m4luxor__u + Luxor (Barcrest) (MPU4) (LX101.0 K) + + + m4luxor__v + Luxor (Barcrest) (MPU4) (LX101.0) + + + m4luxor__w + Luxor (Barcrest) (MPU4) (LX101.0 YD) + + + m4luxor__x + Luxor (Barcrest) (MPU4) (LX101.0 D) + + + m4luxor__y + Luxor (Barcrest) (MPU4) (LX5 1.0 CK) + + + m4luxor__z + Luxor (Barcrest) (MPU4) (LX101.0 CK) + + + m4lvlcl + Lucky Las Vegas Classic (Barcrest) (MPU4) (LLU 0.1) + + + m4lvlcl__a + Lucky Las Vegas Classic (Barcrest) (MPU4) (LLU 3.0) + + + m4lvlcl__b + Lucky Las Vegas Classic (Barcrest) (MPU4) (LLU 3.0 D) + + + m4lvlcl__c + Lucky Las Vegas Classic (Barcrest) (MPU4) (LLU 3.0 K) + + + m4lvlcl__d + Lucky Las Vegas Classic (Barcrest) (MPU4) (LLU 3.0 B) + + + m4lvlcl__e + Lucky Las Vegas Classic (Barcrest) (MPU4) (LLU 0.1 AD) + + + m4lvlcl__f + Lucky Las Vegas Classic (Barcrest) (MPU4) (LLU 3.0 AD) + + + m4madhse + Mad House (Barcrest) (MPU4) (MH5 0.2) + + + m4madhse__0 + Mad House (Barcrest) (MPU4) (MHT 0.2) + + + m4madhse__a + Mad House (Barcrest) (MPU4) (MAD 0.5 C) + + + m4madhse__b + Mad House (Barcrest) (MPU4) (MHT 0.2 Y) + + + m4madhse__c + Mad House (Barcrest) (MPU4) (MAD 0.5) + + + m4madhse__d + Mad House (Barcrest) (MPU4) (MD8 0.1 C) + + + m4madhse__e + Mad House (Barcrest) (MPU4) (MD8 0.1 D) + + + m4madhse__f + Mad House (Barcrest) (MPU4) (MD8 0.1 YD) + + + m4madhse__g + Mad House (Barcrest) (MPU4) (MD8 0.1 K) + + + m4madhse__h + Mad House (Barcrest) (MPU4) (MD8 0.1) + + + m4madhse__i + Mad House (Barcrest) (MPU4) (MD8 0.1 Y) + + + m4madhse__j + Mad House (Barcrest) (MPU4) (MH5 0.2 AD) + + + m4madhse__k + Mad House (Barcrest) (MPU4) (MH5 0.2 B) + + + m4madhse__l + Mad House (Barcrest) (MPU4) (MH5 0.2 BD) + + + m4madhse__m + Mad House (Barcrest) (MPU4) (MH5 0.2 D) + + + m4madhse__n + Mad House (Barcrest) (MPU4) (MH5 0.2 KD) + + + m4madhse__o + Mad House (Barcrest) (MPU4) (MH5 0.2 RD) + + + m4madhse__p + Mad House (Barcrest) (MPU4) (MH5 0.2 YD) + + + m4madhse__q + Mad House (Barcrest) (MPU4) (MH5 0.2 K) + + + m4madhse__r + Mad House (Barcrest) (MPU4) (MH5 0.2 R) + + + m4madhse__s + Mad House (Barcrest) (MPU4) (MH5 0.2 Y) + + + m4madhse__t + Mad House (Barcrest) (MPU4) (MHT 0.2 AD) + + + m4madhse__u + Mad House (Barcrest) (MPU4) (MHT 0.2 B) + + + m4madhse__v + Mad House (Barcrest) (MPU4) (MHT 0.2 BD) + + + m4madhse__w + Mad House (Barcrest) (MPU4) (MHT 0.2 D) + + + m4madhse__x + Mad House (Barcrest) (MPU4) (MHT 0.2 KD) + + + m4madhse__y + Mad House (Barcrest) (MPU4) (MHT 0.2 YD) + + + m4madhse__z + Mad House (Barcrest) (MPU4) (MHT 0.2 K) + + + m4madmnc + Mad Money Classic (BWB) (MPU4) (set 1) + + + m4madmnc__a + Mad Money Classic (BWB) (MPU4) (set 2) + + + m4madmnc__b + Mad Money Classic (BWB) (MPU4) (set 3) + + + m4madmnc__c + Mad Money Classic (BWB) (MPU4) (set 4) + + + m4madmnc__d + Mad Money Classic (BWB) (MPU4) (set 5) + + + m4madmnc__e + Mad Money Classic (BWB) (MPU4) (set 6) + + + m4madmnc__f + Mad Money Classic (BWB) (MPU4) (set 7) + + + m4madmnc__g + Mad Money Classic (BWB) (MPU4) (set 8) + + + m4madmnc__h + Mad Money Classic (BWB) (MPU4) (set 9) + + + m4madmnc__i + Mad Money Classic (BWB) (MPU4) (set 10) + + + m4madmnc__j + Mad Money Classic (BWB) (MPU4) (set 11) + + + m4madmnc__k + Mad Money Classic (BWB) (MPU4) (set 12) + + + m4madmnc__l + Mad Money Classic (BWB) (MPU4) (set 13) + + + m4madmnc__m + Mad Money Classic (BWB) (MPU4) (set 14) + + + m4madmnc__n + Mad Money Classic (BWB) (MPU4) (set 15) + + + m4madmnc__o + Mad Money Classic (BWB) (MPU4) (set 16) + + + m4madmnc__p + Mad Money Classic (BWB) (MPU4) (set 17) + + + m4madmnc__q + Mad Money Classic (BWB) (MPU4) (set 18) + + + m4madmnc__r + Mad Money Classic (BWB) (MPU4) (set 19) + + + m4madmnc__s + Mad Money Classic (BWB) (MPU4) (set 20) + + + m4madmnc__t + Mad Money Classic (BWB) (MPU4) (set 21) + + + m4madmnc__u + Mad Money Classic (BWB) (MPU4) (set 22) + + + m4madmnc__v + Mad Money Classic (BWB) (MPU4) (set 23) + + + m4madmnc__w + Mad Money Classic (BWB) (MPU4) (set 24) + + + m4madmon + Mad Money (BWB) (MPU4) (set 1) + + + m4madmon__a + Mad Money (BWB) (MPU4) (set 2) + + + m4madmon__b + Mad Money (BWB) (MPU4) (set 3) + + + m4madmon__c + Mad Money (BWB) (MPU4) (set 4) + + + m4madmon__d + Mad Money (BWB) (MPU4) (set 5) + + + m4madmon__e + Mad Money (BWB) (MPU4) (set 6) + + + m4madmon__f + Mad Money (BWB) (MPU4) (set 7) + + + m4madmon__g + Mad Money (BWB) (MPU4) (set 8) + + + m4madmon__h + Mad Money (BWB) (MPU4) (set 9) + + + m4madmon__i + Mad Money (BWB) (MPU4) (set 10) + + + m4madmon__j + Mad Money (BWB) (MPU4) (set 11) + + + m4madmon__k + Mad Money (BWB) (MPU4) (set 12) + + + m4mag7s + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2) + + + m4mag7s__0 + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 Y) + + + m4mag7s__1 + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5, hack) + + + m4mag7s__2 + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2, hack) + + + m4mag7s__3 + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6, hack) + + + m4mag7s__4 + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 AD) + + + m4mag7s__5 + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 B) + + + m4mag7s__6 + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 BD) + + + m4mag7s__7 + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 C) + + + m4mag7s__8 + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 D) + + + m4mag7s__9 + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 DH) + + + m4mag7s__a + Magnificent 7s (Barcrest) (MPU4) (MA7 1.4) + + + m4mag7s__aa + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 KD) + + + m4mag7s__ab + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 RD) + + + m4mag7s__ac + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 YD) + + + m4mag7s__ad + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 H) + + + m4mag7s__ae + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 K) + + + m4mag7s__af + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 R) + + + m4mag7s__ag + Magnificent 7s (Barcrest) (MPU4) (MAS 1.2 Y) + + + m4mag7s__ah + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 AD) + + + m4mag7s__ai + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 B) + + + m4mag7s__aj + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 BD) + + + m4mag7s__ak + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 C) + + + m4mag7s__al + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 D) + + + m4mag7s__am + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 DH) + + + m4mag7s__an + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 KD) + + + m4mag7s__ao + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 RD) + + + m4mag7s__ap + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 YD) + + + m4mag7s__aq + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 H) + + + m4mag7s__ar + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 K) + + + m4mag7s__as + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 R) + + + m4mag7s__at + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3) + + + m4mag7s__au + Magnificent 7s (Barcrest) (MPU4) (MAS 1.3 Y) + + + m4mag7s__av + Magnificent 7s (Barcrest) (MPU4) (MAS 1.0, bad?) + + + m4mag7s__aw + Magnificent 7s (Barcrest) (MPU4) (M7 2.0 CD) + + + m4mag7s__ax + Magnificent 7s (Barcrest) (MPU4) (M7 2.0 CK) + + + m4mag7s__b + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 AD) + + + m4mag7s__c + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 B) + + + m4mag7s__d + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 BD) + + + m4mag7s__e + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 D) + + + m4mag7s__f + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 DH) + + + m4mag7s__g + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 KD) + + + m4mag7s__h + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 RD) + + + m4mag7s__i + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 YD) + + + m4mag7s__j + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 H) + + + m4mag7s__k + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 K) + + + m4mag7s__l + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 R) + + + m4mag7s__m + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5) + + + m4mag7s__n + Magnificent 7s (Barcrest) (MPU4) (MA7 1.5 Y) + + + m4mag7s__o + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 AD) + + + m4mag7s__p + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 B) + + + m4mag7s__q + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 BD) + + + m4mag7s__r + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 D) + + + m4mag7s__s + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 DH) + + + m4mag7s__t + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 KD) + + + m4mag7s__u + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 RD) + + + m4mag7s__v + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 YD) + + + m4mag7s__w + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 H) + + + m4mag7s__x + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 K) + + + m4mag7s__y + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6 R) + + + m4mag7s__z + Magnificent 7s (Barcrest) (MPU4) (MA7 1.6) + + + m4magdrg + Magic Dragon (Barcrest) (MPU4) (DMD1.0) + + + m4magi7 + Magic 7's (Crystal) (MPU4) (set 1) + + + m4magi7a + Magic 7's (Crystal) (MPU4) (set 2) + + + m4maglin + Magic Liner (Barcrest) (Dutch) (MPU4) (DMA 2.1) + + + m4magrep + Magic Replay (Barcrest) (Dutch) (MPU4) (DMR 1.3) + + + m4magtbo + Star Play / Magic Turbo (Barcrest) (MPU4) (XST 0.4) + + + m4makmnt + Make A Mint (Barcrest) (MPU4) (MAM 0.3) + + + m4makmnt__0 + Make A Mint (Barcrest) (MPU4) (MMG 0.4 B) + + + m4makmnt__1 + Make A Mint (Barcrest) (MPU4) (MMG 0.4 BD) + + + m4makmnt__2 + Make A Mint (Barcrest) (MPU4) (MMG 0.4 C) + + + m4makmnt__3 + Make A Mint (Barcrest) (MPU4) (MMG 0.4 D) + + + m4makmnt__4 + Make A Mint (Barcrest) (MPU4) (MMG 0.4 KD) + + + m4makmnt__5 + Make A Mint (Barcrest) (MPU4) (MMG 0.4 RD) + + + m4makmnt__6 + Make A Mint (Barcrest) (MPU4) (MMG 0.4 YD) + + + m4makmnt__7 + Make A Mint (Barcrest) (MPU4) (MMG 0.4 K) + + + m4makmnt__8 + Make A Mint (Barcrest) (MPU4) (MMG 0.4 R) + + + m4makmnt__9 + Make A Mint (Barcrest) (MPU4) (MMG 0.4) + + + m4makmnt__a + Make A Mint (Barcrest) (MPU4) (MAM 0.4 AD) + + + m4makmnt__aa + Make A Mint (Barcrest) (MPU4) (MMG 0.4 Y) + + + m4makmnt__ab + Make A Mint (Barcrest) (MPU4) (MMG 0.5 AD) + + + m4makmnt__ac + Make A Mint (Barcrest) (MPU4) (MMG 0.5 B) + + + m4makmnt__ad + Make A Mint (Barcrest) (MPU4) (MMG 0.5 BD) + + + m4makmnt__ae + Make A Mint (Barcrest) (MPU4) (MMG 0.5 C) + + + m4makmnt__af + Make A Mint (Barcrest) (MPU4) (MMG 0.5 D) + + + m4makmnt__ag + Make A Mint (Barcrest) (MPU4) (MMG 0.5 KD) + + + m4makmnt__ah + Make A Mint (Barcrest) (MPU4) (MMG 0.5 RD) + + + m4makmnt__ai + Make A Mint (Barcrest) (MPU4) (MMG 0.5 YD) + + + m4makmnt__aj + Make A Mint (Barcrest) (MPU4) (MMG 0.5 K) + + + m4makmnt__ak + Make A Mint (Barcrest) (MPU4) (MMG 0.5 R) + + + m4makmnt__al + Make A Mint (Barcrest) (MPU4) (MMG 0.5) + + + m4makmnt__am + Make A Mint (Barcrest) (MPU4) (MMG 0.5 Y) + + + m4makmnt__an + Make A Mint (Barcrest) (MPU4) (MA_ 3.1) + + + m4makmnt__ao + Make A Mint (Barcrest) (MPU4) (MA_ 3.0) + + + m4makmnt__ap + Make A Mint (Barcrest) (MPU4) (MA_ 3.1 D) + + + m4makmnt__aq + Make A Mint (Barcrest) (MPU4) (MA_ 3.0 D) + + + m4makmnt__ar + Make A Mint (Barcrest) (MPU4) (MA_ 3.1 K) + + + m4makmnt__as + Make A Mint (Barcrest) (MPU4) (MA_ 3.0 K) + + + m4makmnt__b + Make A Mint (Barcrest) (MPU4) (MAM 0.4 B) + + + m4makmnt__c + Make A Mint (Barcrest) (MPU4) (MAM 0.4 BD) + + + m4makmnt__d + Make A Mint (Barcrest) (MPU4) (MAM 0.4 C) + + + m4makmnt__e + Make A Mint (Barcrest) (MPU4) (MAM 0.4 D) + + + m4makmnt__f + Make A Mint (Barcrest) (MPU4) (MAM 0.4 KD) + + + m4makmnt__g + Make A Mint (Barcrest) (MPU4) (MAM 0.4 RD) + + + m4makmnt__h + Make A Mint (Barcrest) (MPU4) (MAM 0.4 YD) + + + m4makmnt__i + Make A Mint (Barcrest) (MPU4) (MAM 0.4 K) + + + m4makmnt__j + Make A Mint (Barcrest) (MPU4) (MAM 0.4 R) + + + m4makmnt__k + Make A Mint (Barcrest) (MPU4) (MAM 0.4) + + + m4makmnt__l + Make A Mint (Barcrest) (MPU4) (MAM 0.4 Y) + + + m4makmnt__m + Make A Mint (Barcrest) (MPU4) (MMG 0.4, hack) + + + m4makmnt__n + Make A Mint (Barcrest) (MPU4) (MAM 0.3 C, hack) + + + m4makmnt__o + Make A Mint (Barcrest) (MPU4) (MAM 0.3 AD) + + + m4makmnt__p + Make A Mint (Barcrest) (MPU4) (MAM 0.3 B) + + + m4makmnt__q + Make A Mint (Barcrest) (MPU4) (MAM 0.3 BD) + + + m4makmnt__r + Make A Mint (Barcrest) (MPU4) (MAM 0.3 C) + + + m4makmnt__s + Make A Mint (Barcrest) (MPU4) (MAM 0.3 D) + + + m4makmnt__t + Make A Mint (Barcrest) (MPU4) (MAM 0.3 KD) + + + m4makmnt__u + Make A Mint (Barcrest) (MPU4) (MAM 0.3 YD) + + + m4makmnt__v + Make A Mint (Barcrest) (MPU4) (MAM 0.3 K) + + + m4makmnt__w + Make A Mint (Barcrest) (MPU4) (MAM 0.3 R) + + + m4makmnt__x + Make A Mint (Barcrest) (MPU4) (MAM 0.3 Y) + + + m4makmnt__y + Make A Mint (Barcrest) (MPU4) (MMG 0.2) + + + m4makmnt__z + Make A Mint (Barcrest) (MPU4) (MMG 0.4 AD) + + + m4matdr + Matador (Eurogames) (MPU4) + + + m4maxmze + Maximize (Union) (MPU4, set 1) + + + m4maxmzea + Maximize (Union) (MPU4, set 2) + + + m4maxmzeb + Maximize (Union) (MPU4, set 3) + + + m4maxmzec + Maximize (Union) (MPU4, set 4) + + + m4maxmzed + Maximize (Union) (MPU4, set 5) + + + m4mayhem + Mayhem (Mdm) (MPU4, set 1) + + + m4mayhema + Mayhem (Mdm) (MPU4, set 2) + + + m4mbel + Millennium Bells (Avantime?) (MPU4) (set 1) + + + m4mbel__0 + Millennium Bells (Avantime?) (MPU4) (set 28) + + + m4mbel__1 + Millennium Bells (Avantime?) (MPU4) (set 29) + + + m4mbel__2 + Millennium Bells (Avantime?) (MPU4) (set 30) + + + m4mbel__3 + Millennium Bells (Avantime?) (MPU4) (set 31) + + + m4mbel__4 + Millennium Bells (Avantime?) (MPU4) (set 32) + + + m4mbel__5 + Millennium Bells (Avantime?) (MPU4) (set 33) + + + m4mbel__6 + Millennium Bells (Avantime?) (MPU4) (set 34) + + + m4mbel__7 + Millennium Bells (Avantime?) (MPU4) (set 35) + + + m4mbel__8 + Millennium Bells (Avantime?) (MPU4) (set 36) + + + m4mbel__9 + Millennium Bells (Avantime?) (MPU4) (set 37) + + + m4mbel__a + Millennium Bells (Avantime?) (MPU4) (set 2) + + + m4mbel__a0 + Millennium Bells (Avantime?) (MPU4) (set 64) + + + m4mbel__aa + Millennium Bells (Avantime?) (MPU4) (set 38) + + + m4mbel__ab + Millennium Bells (Avantime?) (MPU4) (set 39) + + + m4mbel__ac + Millennium Bells (Avantime?) (MPU4) (set 40) + + + m4mbel__ad + Millennium Bells (Avantime?) (MPU4) (set 41) + + + m4mbel__ae + Millennium Bells (Avantime?) (MPU4) (set 42) + + + m4mbel__af + Millennium Bells (Avantime?) (MPU4) (set 43) + + + m4mbel__ag + Millennium Bells (Avantime?) (MPU4) (set 44) + + + m4mbel__ah + Millennium Bells (Avantime?) (MPU4) (set 45) + + + m4mbel__ai + Millennium Bells (Avantime?) (MPU4) (set 46) + + + m4mbel__aj + Millennium Bells (Avantime?) (MPU4) (set 47) + + + m4mbel__ak + Millennium Bells (Avantime?) (MPU4) (set 48) + + + m4mbel__al + Millennium Bells (Avantime?) (MPU4) (set 49) + + + m4mbel__am + Millennium Bells (Avantime?) (MPU4) (set 50) + + + m4mbel__an + Millennium Bells (Avantime?) (MPU4) (set 51) + + + m4mbel__ao + Millennium Bells (Avantime?) (MPU4) (set 52) + + + m4mbel__ap + Millennium Bells (Avantime?) (MPU4) (set 53) + + + m4mbel__aq + Millennium Bells (Avantime?) (MPU4) (set 54) + + + m4mbel__ar + Millennium Bells (Avantime?) (MPU4) (set 55) + + + m4mbel__as + Millennium Bells (Avantime?) (MPU4) (set 56) + + + m4mbel__at + Millennium Bells (Avantime?) (MPU4) (set 57) + + + m4mbel__au + Millennium Bells (Avantime?) (MPU4) (set 58) + + + m4mbel__av + Millennium Bells (Avantime?) (MPU4) (set 59) + + + m4mbel__aw + Millennium Bells (Avantime?) (MPU4) (set 60) + + + m4mbel__ax + Millennium Bells (Avantime?) (MPU4) (set 61) + + + m4mbel__ay + Millennium Bells (Avantime?) (MPU4) (set 62) + + + m4mbel__az + Millennium Bells (Avantime?) (MPU4) (set 63) + + + m4mbel__b + Millennium Bells (Avantime?) (MPU4) (set 3) + + + m4mbel__c + Millennium Bells (Avantime?) (MPU4) (set 4) + + + m4mbel__d + Millennium Bells (Avantime?) (MPU4) (set 5) + + + m4mbel__e + Millennium Bells (Avantime?) (MPU4) (set 6) + + + m4mbel__f + Millennium Bells (Avantime?) (MPU4) (set 7) + + + m4mbel__g + Millennium Bells (Avantime?) (MPU4) (set 8) + + + m4mbel__h + Millennium Bells (Avantime?) (MPU4) (set 9) + + + m4mbel__i + Millennium Bells (Avantime?) (MPU4) (set 10) + + + m4mbel__j + Millennium Bells (Avantime?) (MPU4) (set 11) + + + m4mbel__k + Millennium Bells (Avantime?) (MPU4) (set 12) + + + m4mbel__m + Millennium Bells (Avantime?) (MPU4) (set 14) + + + m4mbel__n + Millennium Bells (Avantime?) (MPU4) (set 15) + + + m4mbel__o + Millennium Bells (Avantime?) (MPU4) (set 16) + + + m4mbel__p + Millennium Bells (Avantime?) (MPU4) (set 17) + + + m4mbel__q + Millennium Bells (Avantime?) (MPU4) (set 18) + + + m4mbel__r + Millennium Bells (Avantime?) (MPU4) (set 19) + + + m4mbel__s + Millennium Bells (Avantime?) (MPU4) (set 20) + + + m4mbel__t + Millennium Bells (Avantime?) (MPU4) (set 21) + + + m4mbel__u + Millennium Bells (Avantime?) (MPU4) (set 22) + + + m4mbel__v + Millennium Bells (Avantime?) (MPU4) (set 23) + + + m4mbel__w + Millennium Bells (Avantime?) (MPU4) (set 24) + + + m4mbel__x + Millennium Bells (Avantime?) (MPU4) (set 25) + + + m4mbel__y + Millennium Bells (Avantime?) (MPU4) (set 26) + + + m4mbel__z + Millennium Bells (Avantime?) (MPU4) (set 27) + + + m4mecca + Mecca Money (Union) (MPU4) + + + m4megbks + Mega Bucks (Barcrest) (MPU4) (BUC 4.1X) + + + m4megbksa + Mega Bucks (Barcrest) (MPU4) (BUC 4.1CX) + + + m4megbksb + Mega Bucks (Barcrest) (MPU4) (BUC 4.1XD) + + + m4megbksc + Mega Bucks (Barcrest) (MPU4) (BUC 3.1) + + + m4meglnk + Megalink (Barcrest) (Dutch) (MPU4) (DML 2.0) + + + m4mgpn + Monaco Grand Prix (Nova) (German) (MPU4) (MGP 1.4) + + + m4milclb + Millionaire's Club (Barcrest) (MPU4) (MI2 1.0, set 1) + + + m4milclba + Millionaire's Club (Barcrest) (MPU4) (MI2 1.0, set 2) + + + m4milclbb + Millionaire's Club (Barcrest) (MPU4) (MI2 1.0, set 3) + + + m4milclbc + Millionaire's Club (Barcrest) (MPU4) (MIL 5.0, set 1) + + + m4milclbd + Millionaire's Club (Barcrest) (MPU4) (MIL 5.0, set 2) + + + m4milrou + Millennium Roulette (Avantime?) (MPU4) (set 1) + + + m4milrou__a + Millennium Roulette (Avantime?) (MPU4) (set 2) + + + m4mirage + Mirage (Barcrest) (MPU4) (RAG 4.1) + + + m4mjp + Mega Jackpot (Avantime?) (MPU4) (set 1) + + + m4mjp__a + Mega Jackpot (Avantime?) (MPU4) (set 2) + + + m4mjp__b + Mega Jackpot (Avantime?) (MPU4) (set 3) + + + m4mjp__c + Mega Jackpot (Avantime?) (MPU4) (set 4) + + + m4mjp__d + Mega Jackpot (Avantime?) (MPU4) (set 5) + + + m4mjp__e + Mega Jackpot (Avantime?) (MPU4) (set 6) + + + m4mjp__f + Mega Jackpot (Avantime?) (MPU4) (set 7) + + + m4mjp__g + Mega Jackpot (Avantime?) (MPU4) (set 8) + + + m4mmm + Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 1) + + + m4mmm__a + Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 2) + + + m4mmm__b + Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 3) + + + m4mmm__c + Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 4) + + + m4mmm__d + Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 5) + + + m4mmm__e + Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 6) + + + m4mmm__f + Money Mummy Money (BWB) (MPU4) (20/25/30p stake / £10/£15 jackpot) (set 7) + + + m4moneym + Money Maker (Barcrest) (MPU4) (MMK 1.6) + + + m4monspn + Money Spinner (Empire) (MPU4, set 1) + + + m4monspna + Money Spinner (Empire) (MPU4, set 2) + + + m4monspnb + Money Spinner (Empire) (MPU4, set 3) + + + m4monte + Monte Carlo (NM8 0.1 B) (Barcrest) (MPU4) + + + m4monte__a + Monte Carlo (NM8 0.1 AD) (Barcrest) (MPU4) + + + m4monte__b + Monte Carlo (NM8 0.1 BD) (Barcrest) (MPU4) + + + m4monte__c + Monte Carlo (NM8 0.1 C) (Barcrest) (MPU4) + + + m4monte__d + Monte Carlo (NM8 0.1 D) (Barcrest) (MPU4) + + + m4monte__e + Monte Carlo (NM8 0.1 KD) (Barcrest) (MPU4) + + + m4monte__f + Monte Carlo (NM8 0.1 YD) (Barcrest) (MPU4) + + + m4monte__g + Monte Carlo (NM8 0.1 K) (Barcrest) (MPU4) + + + m4monte__h + Monte Carlo (NM8 0.1) (Barcrest) (MPU4) + + + m4monte__i + Monte Carlo (NM8 0.1 Y) (Barcrest) (MPU4) + + + m4monte__j + Monte Carlo (NMN 0.1 C) (Barcrest) (MPU4) + + + m4monte__k + Monte Carlo (NMN 0.1 D) (Barcrest) (MPU4) + + + m4monte__l + Monte Carlo (NMN 0.1 K) (Barcrest) (MPU4) + + + m4monte__m + Monte Carlo (NMN 0.1) (Barcrest) (MPU4) + + + m4monteza + Monte Carlo (MX052.0 K) (BWB) (MPU4) + + + m4montezb + Monte Carlo (MX102.0 K) (BWB) (MPU4) + + + m4montezc + Monte Carlo (MC 2.0 C) (BWB) (MPU4) + + + m4montezd + Monte Carlo (MC 2.0 K) (BWB) (MPU4) + + + m4monteze + Monte Carlo (MC 2.0 YD) (BWB) (MPU4) + + + m4montezf + Monte Carlo (MC_ 3.0 C) (BWB) (MPU4) + + + m4montezg + Monte Carlo (MC_ 3.0 YD) (BWB) (MPU4) + + + m4montezh + Monte Carlo (MC_ 3.0 K) (BWB) (MPU4) + + + m4montezi + Monte Carlo (MX052.0 C) (BWB) (MPU4) + + + m4montezj + Monte Carlo (MX102.0 C) (BWB) (MPU4) + + + m4montrl + Money Trail (Crystal) (MPU4) (set 1) + + + m4montrla + Money Trail (Crystal) (MPU4) (set 2) + + + m4montrlb + Money Trail (Crystal) (MPU4) (set 3) + + + m4montrlc + Money Trail (Crystal) (MPU4) (set 4) + + + m4montrld + Money Trail (Crystal) (MPU4) (set 5) + + + m4multcl + Multiplay Club (Barcrest) (MPU4, MP 2.8) + + + m4multwy + Multiway (Barcrest) (Dutch) (MPU4) (DMU 1.7) + + + m4mystiq + Mystique Club (Crystal) (MPU4) (set 1) + + + m4mystiqa + Mystique Club (Crystal) (MPU4) (set 2) + + + m4mystiqb + Mystique Club (Crystal) (MPU4) (set 3) + + + m4mystiqc + Mystique Club (Crystal) (MPU4) (set 4) + + + m4ndup + Nudge Double Up Deluxe (Crystal) (MPU4) (set 1) + + + m4ndupa + Nudge Double Up Deluxe (Crystal) (MPU4) (set 2) + + + m4ndupb + Nudge Double Up Deluxe (Crystal) (MPU4) (set 3) + + + m4ndupc + Nudge Double Up Deluxe (Crystal) (MPU4) (set 4) + + + m4nhtt + New Hit the Top (Barcrest) (MPU4) (NHT 0.1) + + + m4nhtt__a + New Hit the Top (Barcrest) (MPU4) (NHT 0.1 AD) + + + m4nhtt__b + New Hit the Top (Barcrest) (MPU4) (NHT 0.1 BD) + + + m4nhtt__c + New Hit the Top (Barcrest) (MPU4) (NHT 0.1 D) + + + m4nhtt__d + New Hit the Top (Barcrest) (MPU4) (NHT 0.1 KD) + + + m4nhtt__e + New Hit the Top (Barcrest) (MPU4) (NHT 0.1 RD) + + + m4nhtt__f + New Hit the Top (Barcrest) (MPU4) (NHT 0.1 YD) + + + m4nhtt__g + New Hit the Top (Barcrest) (MPU4) (NHT 0.1 K) + + + m4nhtt__h + New Hit the Top (Barcrest) (MPU4) (NHT 0.1 R) + + + m4nhtt__i + New Hit the Top (Barcrest) (MPU4) (NHT 0.1 B) + + + m4nhtt__j + New Hit the Top (Barcrest) (MPU4) (NHT 0.1 Y) + + + m4nick + Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 1) + + + m4nicka + Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 2) + + + m4nickb + Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 3) + + + m4nickc + Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 4) + + + m4nickd + Nickelodeon (Barcrest) (MPU4) (NIL 4.1, set 5) + + + m4nicke + Nickelodeon (Barcrest) (bootleg) (MPU4) (NIL 2.5) + + + m4nifty + Nifty Fifty (Barcrest) (MPU4) (NF 2.0) + + + m4niftya + Nifty Fifty (Barcrest) (MPU4) (NF 2.1, set 1) + + + m4niftyb + Nifty Fifty (Barcrest) (MPU4) (NF 2.1, set 2) + + + m4nile + Nile Jewels (Barcrest) (German) (MPU4) (GJN 0.8) + + + m4nnww + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN5 0.2 / NN4 0.2) + + + m4nnww2 + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 X) + + + m4nnww2__a + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 XAD) + + + m4nnww2__b + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 BX) + + + m4nnww2__c + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 BXD) + + + m4nnww2__d + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 XD) + + + m4nnww2__e + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 KXD) + + + m4nnww2__f + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 YXD) + + + m4nnww2__g + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 KX) + + + m4nnww2__h + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 RX) + + + m4nnww2__hx1 + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 3.4, hack, set 1) + + + m4nnww2__hx2 + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 3.4, hack, set 2) + + + m4nnww2__hx3 + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 5.0, hack, set 1) + + + m4nnww2__hx4 + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 5.0, hack, set 2) + + + m4nnww2__hx5 + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 5.0, hack, set 3) + + + m4nnww2__i + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 RD) + + + m4nnww2__j + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NN3 0.1 YX) + + + m4nnww2__k + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 5.2) + + + m4nnww2__l + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 5.2 X) + + + m4nnww2__m + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 5.2 BX) + + + m4nnww2__n + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 5.2 CX) + + + m4nnww2__o + Nudge Nudge Wink Wink (Barcrest) (MPU4, Mod2 type) (NNU 4.0 X) + + + m4nnww__9 + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN4 0.2 AD) + + + m4nnww__a + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.1 / NN4 0.1) + + + m4nnww__aa + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN4 0.2 B) + + + m4nnww__ab + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN4 0.2 BD) + + + m4nnww__ac + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN4 0.2 D) + + + m4nnww__ad + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN4 0.2 KD) + + + m4nnww__ae + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN4 0.2 YD) + + + m4nnww__af + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN4 0.2 K) + + + m4nnww__ag + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN4 0.2) + + + m4nnww__ah + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN4 0.2 Y) + + + m4nnww__ai + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN5 0.2 AD / NN4 0.2) + + + m4nnww__aj + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN5 0.2 B / NN4 0.2) + + + m4nnww__ak + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN5 0.2 D / NN4 0.2) + + + m4nnww__al + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN5 0.2 KD / NN4 0.2) + + + m4nnww__am + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN5 0.2 RD / NN4 0.2) + + + m4nnww__an + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN5 0.2 YD / NN4 0.2) + + + m4nnww__ao + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN5 0.2 K / NN4 0.2) + + + m4nnww__ap + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN5 0.2 R / NN4 0.2) + + + m4nnww__aq + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN5 0.2 BD / NN4 0.2) + + + m4nnww__ar + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (NN5 0.2 Y / NN4 0.2) + + + m4nnww__ax + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.1 B / NN4 0.1) + + + m4nnww__ay + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.1) + + + m4nnww__b + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 AD / NN4 0.1) + + + m4nnww__c + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 B / NN4 0.1) + + + m4nnww__d + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 BD / NN4 0.1) + + + m4nnww__e + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 C / NN4 0.1) + + + m4nnww__f + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 D / NN4 0.1) + + + m4nnww__g + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 KD / NN4 0.1) + + + m4nnww__h + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 RD / NN4 0.1) + + + m4nnww__i + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 YD / NN4 0.1) + + + m4nnww__j + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 AK / NN4 0.1) + + + m4nnww__k + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 R / NN4 0.1) + + + m4nnww__l + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 / NN4 0.1) + + + m4nnww__m + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN1 0.1 Y / NN4 0.1) + + + m4nnww__n + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNU 0.2 AD / NN4 0.2) + + + m4nnww__o + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNU 0.2 B / NN4 0.2) + + + m4nnww__p + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNU 0.2 BD / NN4 0.2) + + + m4nnww__q + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNU 0.2 D / NN4 0.2) + + + m4nnww__r + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNU 0.2 KD / NN4 0.2) + + + m4nnww__s + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNU 0.2 RD / NN4 0.2) + + + m4nnww__t + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNU 0.2 YD / NN4 0.2) + + + m4nnww__u + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNU 0.2 K / NN4 0.2) + + + m4nnww__v + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNU 0.2 R / NN4 0.2) + + + m4nnww__w + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNU 0.2 / NN4 0.2) + + + m4nnww__x + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNU 0.2 Y / NN4 0.2) + + + m4nnwwc + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 / NN4 0.2) + + + m4nnwwc__0 + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 BD / NN4 0.2) + + + m4nnwwc__1 + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 D / NN4 0.2) + + + m4nnwwc__2 + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 KD / NN4 0.2) + + + m4nnwwc__3 + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 RD / NN4 0.2) + + + m4nnwwc__4 + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 YD / NN4 0.2) + + + m4nnwwc__5 + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 K / NN4 0.2) + + + m4nnwwc__6 + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 R / NN4 0.2) + + + m4nnwwc__7 + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 C / NN4 0.2) + + + m4nnwwc__8 + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 Y / NN4 0.2) + + + m4nnwwc__9 + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.1 / NN4 0.1) + + + m4nnwwc__a + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 AD / NN4 0.2) + + + m4nnwwc__aa + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNN 2.0) + + + m4nnwwc__ab + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNN 2.0 D) + + + m4nnwwc__ac + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNN 2.0 K) + + + m4nnwwc__ad + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CNN 2.0 B) + + + m4nnwwc__b + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 B / NN4 0.2) + + + m4nnwwc__c + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 BD / NN4 0.2) + + + m4nnwwc__d + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 C / NN4 0.2) + + + m4nnwwc__e + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 D / NN4 0.2) + + + m4nnwwc__f + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 KD / NN4 0.2) + + + m4nnwwc__g + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 RD / NN4 0.2) + + + m4nnwwc__h + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 YD / NN4 0.2) + + + m4nnwwc__i + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 K / NN4 0.2) + + + m4nnwwc__j + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 R / NN4 0.2) + + + m4nnwwc__k + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 / NN4 0.2) + + + m4nnwwc__l + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CF3 0.2 Y / NN4 0.2) + + + m4nnwwc__m + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 AD / NN4 0.2) + + + m4nnwwc__n + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 B / NN4 0.2) + + + m4nnwwc__o + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 BD / NN4 0.2) + + + m4nnwwc__p + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 C / NN4 0.2) + + + m4nnwwc__q + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 D / NN4 0.2) + + + m4nnwwc__r + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 KD / NN4 0.2) + + + m4nnwwc__s + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 RD / NN4 0.2) + + + m4nnwwc__t + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 YD / NN4 0.2) + + + m4nnwwc__u + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 K / NN4 0.2) + + + m4nnwwc__v + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 R / NN4 0.2) + + + m4nnwwc__w + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 / NN4 0.2) + + + m4nnwwc__x + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CH3 0.2 / NN4 0.2) + + + m4nnwwc__y + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 AD / NN4 0.2) + + + m4nnwwc__z + Nudge Nudge Wink Wink Classic (Barcrest) (MPU4) (CN3 0.2 B / NN4 0.2) + + + m4nod + Nod And A Wink (Eurotech) (MPU4) + + + m4nspot + Night Spot Club (Barcrest) (MPU4) (NS2 2.2, set 1) + + + m4nspota + Night Spot Club (Barcrest) (MPU4) (NS2 2.2, set 2) + + + m4nspotb + Night Spot Club (Barcrest) (MPU4) (NIT 1.1) + + + m4nud2p + 2p Nudger (Mdm?) (MPU4) + + + m4nudbnk + Nudge Banker (Barcrest) (MPU4) (SBN 2.0X) + + + m4nudbnk__a + Nudge Banker (Barcrest) (MPU4) (NBN 1.0CX) + + + m4nudbnk__b + Nudge Banker (Barcrest) (MPU4) (NBN 1.0X) + + + m4nudbnk__c + Nudge Banker (Barcrest) (MPU4) (SBN 1.1) + + + m4nudbnk__d + Nudge Banker (Barcrest) (MPU4) (SBN 1.1X) + + + m4nudbon + Nudge Bonanza (Mdm) (MPU4, set 1) + + + m4nudbona + Nudge Bonanza (Mdm) (MPU4, set 2) + + + m4nudgem + Nudge Gems (Mdm) (MPU4) + + + m4nudgwc + Nudge-A-Win (Concept Games Ltd) (MPU4) (set 1) + + + m4nudgwc__a + Nudge-A-Win (Concept Games Ltd) (MPU4) (set 2) + + + m4nudgwc__b + Nudge-A-Win (Concept Games Ltd) (MPU4) (set 3) + + + m4nudgwc__c + Nudge-A-Win (Concept Games Ltd) (MPU4) (set 4) + + + m4nudgwc__d + Nudge-A-Win (Concept Games Ltd) (MPU4) (set 5) + + + m4nudgwc__e + Nudge-A-Win (Concept Games Ltd) (MPU4) (set 6) + + + m4nudgwc__f + Nudge-A-Win (Concept Games Ltd) (MPU4) (set 7) + + + m4nudgwc__g + Nudge-A-Win (Concept Games Ltd) (MPU4) (set 8) + + + m4nudgwc__h + Nudge-A-Win (Concept Games Ltd) (MPU4) (set 9) + + + m4nudqst + Nudge Quest (Barcrest) (MPU4) (NQ 2.0) + + + m4nudshf + Nudge Shuffle (Barcrest) (MPU4) (NUS 3.1) (set 1) + + + m4nudshfa + Nudge Shuffle (Barcrest) (MPU4) (NUS 3.0) + + + m4nudshfb + Nudge Shuffle (Barcrest) (MPU4) (NUS 3.1) (set 2) + + + m4nudshfc + Nudge Shuffle (Barcrest) (MPU4) (NUS 3.1) (set 3) + + + m4nudup + Nudge Up (Barcrest) (Dutch) (MPU4) (DNU 2.5) + + + m4nudwin + Nudge & Win (Crystal) (MPU4) (set 1) + + + m4nudwina + Nudge & Win (Crystal) (MPU4) (set 2) + + + m4num1 + Number One (Barcrest) (Dutch) (MPU4) (DNO 1.7) + + + m4oadrac + Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.0, set 1) + + + m4oadrac__a + Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.1) + + + m4oadrac__b + Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.0 D) + + + m4oadrac__c + Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.1 D) + + + m4oadrac__d + Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.0 K) + + + m4oadrac__e + Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.1 K) + + + m4oadrac__f + Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.0 B) + + + m4oadrac__g + Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.1 B) + + + m4oadrac__h + Ooh Aah Dracula (Barcrest) (MPU4) (DR_ 2.0, set 2) + + + m4octo + Octopus (Nova) (German) (MPU4) (OCT 0.3) + + + m4oldtmr + Old Timer (Barcrest) (Dutch) (MPU4) (DOT 1.1) + + + m4olygn + Olympic Gold (German) (Nova) (MPU4) (set 1) + + + m4olygn__a + Olympic Gold (German) (Nova) (MPU4) (set 2) + + + m4omega + Omega (Barcrest) (Dutch) (MPU4) (DOM 2.3) + + + m4ordmnd + Oriental Diamonds (Barcrest) (German) (MPU4) (RAB 0.1) + + + m4orland + Orlando Magic (BWB) (MPU4) (set 1) + + + m4orland__a + Orlando Magic (BWB) (MPU4) (set 2) + + + m4orland__b + Orlando Magic (BWB) (MPU4) (set 3) + + + m4orland__c + Orlando Magic (BWB) (MPU4) (set 4) + + + m4orland__d + Orlando Magic (BWB) (MPU4) (set 5) + + + m4orland__e + Orlando Magic (BWB) (MPU4) (set 6) + + + m4orland__f + Orlando Magic (BWB) (MPU4) (set 7) + + + m4orland__g + Orlando Magic (BWB) (MPU4) (set 8) + + + m4orland__h + Orlando Magic (BWB) (MPU4) (set 9) + + + m4overmn + Over The Moon (Barcrest) (MPU4) (OTT 0.2) + + + m4overmn__0 + Over The Moon (Barcrest) (MPU4) (OTU 0.1 BD) + + + m4overmn__1 + Over The Moon (Barcrest) (MPU4) (OTU 0.1 D) + + + m4overmn__2 + Over The Moon (Barcrest) (MPU4) (OTU 0.1 KD) + + + m4overmn__3 + Over The Moon (Barcrest) (MPU4) (OTU 0.1 RD) + + + m4overmn__4 + Over The Moon (Barcrest) (MPU4) (OTU 0.1 YD) + + + m4overmn__5 + Over The Moon (Barcrest) (MPU4) (OTU 0.1 K) + + + m4overmn__6 + Over The Moon (Barcrest) (MPU4) (OTU 0.1 R) + + + m4overmn__7 + Over The Moon (Barcrest) (MPU4) (OTU 0.1) + + + m4overmn__8 + Over The Moon (Barcrest) (MPU4) (OTU 0.1 Y) + + + m4overmn__a + Over The Moon (Barcrest) (MPU4) (OT8 0.1 B) + + + m4overmn__b + Over The Moon (Barcrest) (MPU4) (OT8 0.1 C) + + + m4overmn__c + Over The Moon (Barcrest) (MPU4) (OT8 0.1 KD) + + + m4overmn__d + Over The Moon (Barcrest) (MPU4) (OT8 0.1 YD) + + + m4overmn__e + Over The Moon (Barcrest) (MPU4) (OT8 0.1 K) + + + m4overmn__f + Over The Moon (Barcrest) (MPU4) (OT8 0.1) + + + m4overmn__g + Over The Moon (Barcrest) (MPU4) (OT8 0.1 Y) + + + m4overmn__h + Over The Moon (Barcrest) (MPU4) (OTN 0.5 B) + + + m4overmn__i + Over The Moon (Barcrest) (MPU4) (OTN 0.5 C) + + + m4overmn__j + Over The Moon (Barcrest) (MPU4) (OTN 0.5 D) + + + m4overmn__k + Over The Moon (Barcrest) (MPU4) (OTN 0.5 YD) + + + m4overmn__l + Over The Moon (Barcrest) (MPU4) (OTN 0.5 K) + + + m4overmn__m + Over The Moon (Barcrest) (MPU4) (OTN 0.5) + + + m4overmn__n + Over The Moon (Barcrest) (MPU4) (OTN 0.5 Y) + + + m4overmn__o + Over The Moon (Barcrest) (MPU4) (OTT 0.2 AD) + + + m4overmn__p + Over The Moon (Barcrest) (MPU4) (OTT 0.2 B) + + + m4overmn__q + Over The Moon (Barcrest) (MPU4) (OTT 0.2 BD) + + + m4overmn__r + Over The Moon (Barcrest) (MPU4) (OTT 0.2 D) + + + m4overmn__s + Over The Moon (Barcrest) (MPU4) (OTT 0.2 KD) + + + m4overmn__t + Over The Moon (Barcrest) (MPU4) (OTT 0.2 RD) + + + m4overmn__u + Over The Moon (Barcrest) (MPU4) (OTT 0.2 YD) + + + m4overmn__v + Over The Moon (Barcrest) (MPU4) (OTT 0.2 K) + + + m4overmn__w + Over The Moon (Barcrest) (MPU4) (OTT 0.2 R) + + + m4overmn__x + Over The Moon (Barcrest) (MPU4) (OTT 0.2 Y) + + + m4overmn__y + Over The Moon (Barcrest) (MPU4) (OTU 0.1 AD) + + + m4overmn__z + Over The Moon (Barcrest) (MPU4) (OTU 0.1 B) + + + m4paracl + Paradise Club (Crystal) (MPU4) (set 1) + + + m4paracla + Paradise Club (Crystal) (MPU4) (set 2) + + + m4pbnudg + Pinball Nudger (Empire) (MPU4, set 1) + + + m4pbnudga + Pinball Nudger (Empire) (MPU4, set 2) + + + m4pbnudgb + Pinball Nudger (Empire) (MPU4, set 3) + + + m4pick + Pick A Fruit (Dutch) (MPU4) + + + m4pitfal + Pitfall (Empire) (MPU4, set 1) + + + m4pitfala + Pitfall (Empire) (MPU4, set 2) + + + m4pitfalb + Pitfall (Empire) (MPU4, set 3) + + + m4pitfalc + Pitfall (Empire) (MPU4, set 4) + + + m4placbt + Place Your Bets (Barcrest) (MPU4) (PYB 0.7) + + + m4placbt__0 + Place Your Bets (Barcrest) (MPU4) (PYH 0.4) + + + m4placbt__1 + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 AD) + + + m4placbt__2 + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 B) + + + m4placbt__3 + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 BD) + + + m4placbt__4 + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 C) + + + m4placbt__5 + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 D) + + + m4placbt__6 + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 KD) + + + m4placbt__7 + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 RD) + + + m4placbt__8 + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 YD) + + + m4placbt__9 + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 K) + + + m4placbt__a + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 AD) + + + m4placbt__aa + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 R) + + + m4placbt__ab + Place Your Bets (Barcrest) (MPU4) (PYH 0.5) + + + m4placbt__ac + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 Y) + + + m4placbt__ad + Place Your Bets (Barcrest) (MPU4) (PYH 0.6 AD) + + + m4placbt__ae + Place Your Bets (Barcrest) (MPU4) (PYH 0.6 B) + + + m4placbt__af + Place Your Bets (Barcrest) (MPU4) (PYH 0.6 BD) + + + m4placbt__ag + Place Your Bets (Barcrest) (MPU4) (PYH 0.6 C) + + + m4placbt__ah + Place Your Bets (Barcrest) (MPU4) (PYH 0.6 D) + + + m4placbt__ai + Place Your Bets (Barcrest) (MPU4) (PYH 0.6 KD) + + + m4placbt__aj + Place Your Bets (Barcrest) (MPU4) (PYH 0.6 RD) + + + m4placbt__ak + Place Your Bets (Barcrest) (MPU4) (PYH 0.6 YD) + + + m4placbt__al + Place Your Bets (Barcrest) (MPU4) (PYH 0.6 K) + + + m4placbt__am + Place Your Bets (Barcrest) (MPU4) (PYH 0.6 R) + + + m4placbt__an + Place Your Bets (Barcrest) (MPU4) (PYH 0.6) + + + m4placbt__ao + Place Your Bets (Barcrest) (MPU4) (PYH 0.6 Y) + + + m4placbt__b + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 B) + + + m4placbt__c + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 BD) + + + m4placbt__d + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 C) + + + m4placbt__e + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 D) + + + m4placbt__f + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 KD) + + + m4placbt__g + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 RD) + + + m4placbt__h + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 YD) + + + m4placbt__i + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 K) + + + m4placbt__j + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 R) + + + m4placbt__k + Place Your Bets (Barcrest) (MPU4) (PYB 0.6) + + + m4placbt__l + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 Y) + + + m4placbt__m + Place Your Bets (Barcrest) (MPU4) (PYB 0.7 AD) + + + m4placbt__n + Place Your Bets (Barcrest) (MPU4) (PYB 0.7 B) + + + m4placbt__o + Place Your Bets (Barcrest) (MPU4) (PYB 0.7 BD) + + + m4placbt__p + Place Your Bets (Barcrest) (MPU4) (PYB 0.7 C) + + + m4placbt__q + Place Your Bets (Barcrest) (MPU4) (PYB 0.7 D) + + + m4placbt__r + Place Your Bets (Barcrest) (MPU4) (PYB 0.7 KD) + + + m4placbt__s + Place Your Bets (Barcrest) (MPU4) (PYB 0.7 RD) + + + m4placbt__t + Place Your Bets (Barcrest) (MPU4) (PYB 0.7 YD) + + + m4placbt__u + Place Your Bets (Barcrest) (MPU4) (PYB 0.7 K) + + + m4placbt__v + Place Your Bets (Barcrest) (MPU4) (PYB 0.7 R) + + + m4placbt__w + Place Your Bets (Barcrest) (MPU4) (PYB 0.7 Y) + + + m4placbt__x + Place Your Bets (Barcrest) (MPU4) (PYH 0.1) + + + m4placbt__y + Place Your Bets (Barcrest) (MPU4) (PYH 0.5 Y, hack) + + + m4placbt__z + Place Your Bets (Barcrest) (MPU4) (PYB 0.6 C, hack) + + + m4pont + Pontoon Club (Barcrest) (MPU4) (PON 3.0) + + + m4ponta + Pontoon Club (Barcrest) (MPU4) (PON 4.0) + + + m4potblk + Pot Black (Barcrest) (MPU4) (PBG 1.6) + + + m4potblk__0 + Pot Black (Barcrest) (MPU4) (PBG 1.6 R) + + + m4potblk__1 + Pot Black (Barcrest) (MPU4) (PBG 1.6 Y) + + + m4potblk__2 + Pot Black (Barcrest) (MPU4) (PBS 0.4 AD) + + + m4potblk__3 + Pot Black (Barcrest) (MPU4) (PBS 0.4 B) + + + m4potblk__4 + Pot Black (Barcrest) (MPU4) (PBS 0.4 BD) + + + m4potblk__5 + Pot Black (Barcrest) (MPU4) (PBS 0.4 C) + + + m4potblk__6 + Pot Black (Barcrest) (MPU4) (PBS 0.4 DH) + + + m4potblk__7 + Pot Black (Barcrest) (MPU4) (PBS 0.4 KD) + + + m4potblk__8 + Pot Black (Barcrest) (MPU4) (PBS 0.4 RD) + + + m4potblk__9 + Pot Black (Barcrest) (MPU4) (PBS 0.4 YD) + + + m4potblk__a + Pot Black (Barcrest) (MPU4) (PBG 1.5 Y, hack) + + + m4potblk__aa + Pot Black (Barcrest) (MPU4) (PBS 0.4 H) + + + m4potblk__ab + Pot Black (Barcrest) (MPU4) (PBS 0.4 K) + + + m4potblk__ac + Pot Black (Barcrest) (MPU4) (PBS 0.4 R) + + + m4potblk__ad + Pot Black (Barcrest) (MPU4) (PBS 0.4) + + + m4potblk__ae + Pot Black (Barcrest) (MPU4) (PBS 0.4 Y) + + + m4potblk__af + Pot Black (Barcrest) (MPU4) (PBS 0.6 AD) + + + m4potblk__ag + Pot Black (Barcrest) (MPU4) (PBS 0.6 B) + + + m4potblk__ah + Pot Black (Barcrest) (MPU4) (PBS 0.6 BD) + + + m4potblk__ai + Pot Black (Barcrest) (MPU4) (PBS 0.6 C) + + + m4potblk__aj + Pot Black (Barcrest) (MPU4) (PBS 0.6 D) + + + m4potblk__ak + Pot Black (Barcrest) (MPU4) (PBS 0.6 DH) + + + m4potblk__al + Pot Black (Barcrest) (MPU4) (PBS 0.6 KD) + + + m4potblk__am + Pot Black (Barcrest) (MPU4) (PBS 0.6 RD) + + + m4potblk__an + Pot Black (Barcrest) (MPU4) (PBS 0.6 YD) + + + m4potblk__ao + Pot Black (Barcrest) (MPU4) (PBS 0.6 H) + + + m4potblk__ap + Pot Black (Barcrest) (MPU4) (PBS 0.6 K) + + + m4potblk__aq + Pot Black (Barcrest) (MPU4) (PBS 0.6 R) + + + m4potblk__ar + Pot Black (Barcrest) (MPU4) (PBS 0.6) + + + m4potblk__as + Pot Black (Barcrest) (MPU4) (PBS 0.6 Y) + + + m4potblk__at + Pot Black (BWB) (MPU4) (PO 1.2) + + + m4potblk__au + Pot Black (BWB) (MPU4) (PO 1.1) + + + m4potblk__av + Pot Black (BWB) (MPU4) (PO 1.2 D) + + + m4potblk__aw + Pot Black (BWB) (MPU4) (PO 1.1 D) + + + m4potblk__ax + Pot Black (BWB) (MPU4) (PO 1.1 K) + + + m4potblk__b + Pot Black (Barcrest) (MPU4) (PBS 0.4 C, hack) + + + m4potblk__c + Pot Black (Barcrest) (MPU4) (PBG 1.4) + + + m4potblk__d + Pot Black (Barcrest) (MPU4) (PBG 1.5 AD) + + + m4potblk__e + Pot Black (Barcrest) (MPU4) (PBG 1.5 B) + + + m4potblk__f + Pot Black (Barcrest) (MPU4) (PBG 1.5 BD) + + + m4potblk__g + Pot Black (Barcrest) (MPU4) (PBG 1.5 D) + + + m4potblk__h + Pot Black (Barcrest) (MPU4) (PBG 1.5 DH) + + + m4potblk__i + Pot Black (Barcrest) (MPU4) (PBG 1.5 KD) + + + m4potblk__j + Pot Black (Barcrest) (MPU4) (PBG 1.5 RD) + + + m4potblk__k + Pot Black (Barcrest) (MPU4) (PBG 1.5 YD) + + + m4potblk__l + Pot Black (Barcrest) (MPU4) (PBG 1.5 H) + + + m4potblk__m + Pot Black (Barcrest) (MPU4) (PBG 1.5 K) + + + m4potblk__n + Pot Black (Barcrest) (MPU4) (PBG 1.5 R) + + + m4potblk__o + Pot Black (Barcrest) (MPU4) (PBG 1.5) + + + m4potblk__p + Pot Black (Barcrest) (MPU4) (PBG 1.5 Y) + + + m4potblk__q + Pot Black (Barcrest) (MPU4) (PBG 1.6 AD) + + + m4potblk__r + Pot Black (Barcrest) (MPU4) (PBG 1.6 B) + + + m4potblk__s + Pot Black (Barcrest) (MPU4) (PBG 1.6 BD) + + + m4potblk__t + Pot Black (Barcrest) (MPU4) (PBG 1.6 D) + + + m4potblk__u + Pot Black (Barcrest) (MPU4) (PBG 1.6 DH) + + + m4potblk__v + Pot Black (Barcrest) (MPU4) (PBG 1.6 KD) + + + m4potblk__w + Pot Black (Barcrest) (MPU4) (PBG 1.6 RD) + + + m4potblk__x + Pot Black (Barcrest) (MPU4) (PBG 1.6 YD) + + + m4potblk__y + Pot Black (Barcrest) (MPU4) (PBG 1.6 H) + + + m4potblk__z + Pot Black (Barcrest) (MPU4) (PBG 1.6 K) + + + m4potlck + Pot Luck 100 Club (Barcrest) (MPU4) (P1L 2.2) + + + m4potlcka + Pot Luck 100 Club (Barcrest) (MPU4) (PL 2.7) + + + m4prem + Premier (Barcrest) (Dutch) (MPU4) (DPM 1.4) + + + m4przdty + Prize Duty Free (Barcrest) (MPU4) (PDU 0.2) + + + m4przdty__a + Prize Duty Free (Barcrest) (MPU4) (PD8 0.2 AD) + + + m4przdty__b + Prize Duty Free (Barcrest) (MPU4) (PD8 0.2 B) + + + m4przdty__c + Prize Duty Free (Barcrest) (MPU4) (PD8 0.2 BD) + + + m4przdty__d + Prize Duty Free (Barcrest) (MPU4) (PD8 0.2 D) + + + m4przdty__e + Prize Duty Free (Barcrest) (MPU4) (PD8 0.2 DJ) + + + m4przdty__f + Prize Duty Free (Barcrest) (MPU4) (PD8 0.2 KD) + + + m4przdty__g + Prize Duty Free (Barcrest) (MPU4) (PD8 0.2 YD) + + + m4przdty__h + Prize Duty Free (Barcrest) (MPU4) (PD8 0.2 J) + + + m4przdty__i + Prize Duty Free (Barcrest) (MPU4) (PD8 0.2 K) + + + m4przdty__j + Prize Duty Free (Barcrest) (MPU4) (PD8 0.2) + + + m4przdty__k + Prize Duty Free (Barcrest) (MPU4) (PD8 0.2 Y) + + + m4przdty__l + Prize Duty Free (Barcrest) (MPU4) (PDU 0.2 B) + + + m4przdty__m + Prize Duty Free (Barcrest) (MPU4) (PDU 0.2 D) + + + m4przdty__n + Prize Duty Free (Barcrest) (MPU4) (PDU 0.2 YD) + + + m4przdty__o + Prize Duty Free (Barcrest) (MPU4) (PDU 0.2 K) + + + m4przdty__p + Prize Duty Free (Barcrest) (MPU4) (PDU 0.2 Y) + + + m4przfrt + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3) + + + m4przfrt__a + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 AD) + + + m4przfrt__b + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 B) + + + m4przfrt__c + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 BD) + + + m4przfrt__d + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 D) + + + m4przfrt__e + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 KD) + + + m4przfrt__f + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 RD) + + + m4przfrt__g + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 YD) + + + m4przfrt__h + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 K) + + + m4przfrt__i + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 R) + + + m4przfrt__j + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 Y) + + + m4przfrt__k + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 I) + + + m4przfrt__l + Prize Fruit & Loot (Barcrest) (MPU4) (PFR 0.3 O) + + + m4przhr + Prize High Roller (Barcrest) (MPU4) (PRL 0.3) + + + m4przhr__a + Prize High Roller (Barcrest) (MPU4) (PR3 0.1 AD) + + + m4przhr__b + Prize High Roller (Barcrest) (MPU4) (PR3 0.1 B) + + + m4przhr__c + Prize High Roller (Barcrest) (MPU4) (PR3 0.1 BD) + + + m4przhr__d + Prize High Roller (Barcrest) (MPU4) (PR3 0.1 D) + + + m4przhr__e + Prize High Roller (Barcrest) (MPU4) (PR3 0.1 KD) + + + m4przhr__f + Prize High Roller (Barcrest) (MPU4) (PR3 0.1 YD) + + + m4przhr__g + Prize High Roller (Barcrest) (MPU4) (PR3 0.1 K) + + + m4przhr__h + Prize High Roller (Barcrest) (MPU4) (PR3 0.1) + + + m4przhr__i + Prize High Roller (Barcrest) (MPU4) (PR3 0.1 Y) + + + m4przhr__j + Prize High Roller (Barcrest) (MPU4) (PRL 0.3 B) + + + m4przhr__k + Prize High Roller (Barcrest) (MPU4) (PRL 0.3 BD) + + + m4przhr__l + Prize High Roller (Barcrest) (MPU4) (PRL 0.3 D) + + + m4przhr__m + Prize High Roller (Barcrest) (MPU4) (PRL 0.3 KD) + + + m4przhr__n + Prize High Roller (Barcrest) (MPU4) (PRL 0.3 YD) + + + m4przhr__o + Prize High Roller (Barcrest) (MPU4) (PRL 0.3 K) + + + m4przhr__p + Prize High Roller (Barcrest) (MPU4) (PRL 0.3 Y) + + + m4przlux + Prize Luxor (Barcrest) (MPU4) (PLX 0.2) + + + m4przlux__a + Prize Luxor (Barcrest) (MPU4) (PLX 0.2 AD) + + + m4przlux__b + Prize Luxor (Barcrest) (MPU4) (PLX 0.2 B) + + + m4przlux__c + Prize Luxor (Barcrest) (MPU4) (PLX 0.2 D) + + + m4przlux__d + Prize Luxor (Barcrest) (MPU4) (PLX 0.2 YD) + + + m4przlux__e + Prize Luxor (Barcrest) (MPU4) (PLX 0.2 K) + + + m4przlux__f + Prize Luxor (Barcrest) (MPU4) (PLX 0.2 Y) + + + m4przmc + Prize Monte Carlo (MSS 1.6 B) (Barcrest) (MPU4) + + + m4przmc__a + Prize Monte Carlo (MSS 1.6 AD) (Barcrest) (MPU4) + + + m4przmc__b + Prize Monte Carlo (MSS 1.6 D) (Barcrest) (MPU4) + + + m4przmc__c + Prize Monte Carlo (MSS 1.6 YD) (Barcrest) (MPU4) + + + m4przmc__d + Prize Monte Carlo (MSS 1.6 K) (Barcrest) (MPU4) + + + m4przmc__e + Prize Monte Carlo (MSS 1.6) (Barcrest) (MPU4) + + + m4przmc__f + Prize Monte Carlo (MSS 1.6 Y) (Barcrest) (MPU4) + + + m4przmc__g + Prize Monte Carlo (MSS 1.6 C) (Barcrest) (MPU4) + + + m4przmc__h + Prize Monte Carlo (MC 53.0 K) (Barcrest) (MPU4) + + + m4przmc__i + Prize Monte Carlo (MC 53.0) (Barcrest) (MPU4) + + + m4przmc__j + Prize Monte Carlo (MC 53.0 YD) (Barcrest) (MPU4) + + + m4przmc__k + Prize Monte Carlo (MC 53.0 D) (Barcrest) (MPU4) + + + m4przmc__l + Prize Monte Carlo (MC103.0 K) (Barcrest) (MPU4) + + + m4przmc__m + Prize Monte Carlo (MC103.0) (Barcrest) (MPU4) + + + m4przmc__n + Prize Monte Carlo (MC103.0 YD) (Barcrest) (MPU4) + + + m4przmc__o + Prize Monte Carlo (MC103.0 D) (Barcrest) (MPU4) + + + m4przmc__p + Prize Monte Carlo (MT054.0 K) (Barcrest) (MPU4) + + + m4przmc__q + Prize Monte Carlo (MT054.0 C) (Barcrest) (MPU4) + + + m4przmc__r + Prize Monte Carlo (MT104.0 K) (Barcrest) (MPU4) + + + m4przmc__s + Prize Monte Carlo (MT104.0 C) (Barcrest) (MPU4) + + + m4przmns + Prize Money Showcase (Barcrest) (MPU4) (SPM 0.2) + + + m4przmns__a + Prize Money Showcase (Barcrest) (MPU4) (SM8 0.1 AD) + + + m4przmns__b + Prize Money Showcase (Barcrest) (MPU4) (SM8 0.1 B) + + + m4przmns__c + Prize Money Showcase (Barcrest) (MPU4) (SM8 0.1 BD) + + + m4przmns__d + Prize Money Showcase (Barcrest) (MPU4) (SM8 0.1 D) + + + m4przmns__e + Prize Money Showcase (Barcrest) (MPU4) (SM8 0.1 KD) + + + m4przmns__f + Prize Money Showcase (Barcrest) (MPU4) (SM8 0.1 YD) + + + m4przmns__g + Prize Money Showcase (Barcrest) (MPU4) (SM8 0.1 K) + + + m4przmns__h + Prize Money Showcase (Barcrest) (MPU4) (SM8 0.1) + + + m4przmns__i + Prize Money Showcase (Barcrest) (MPU4) (SM8 0.1 Y) + + + m4przmns__j + Prize Money Showcase (Barcrest) (MPU4) (SPM 0.2 B) + + + m4przmns__k + Prize Money Showcase (Barcrest) (MPU4) (SPM 0.2 D) + + + m4przmns__l + Prize Money Showcase (Barcrest) (MPU4) (SPM 0.2 YD) + + + m4przmns__m + Prize Money Showcase (Barcrest) (MPU4) (SPM 0.2 K) + + + m4przmns__n + Prize Money Showcase (Barcrest) (MPU4) (SPM 0.2 Y) + + + m4przmon + Prize Money (Barcrest) (MPU4) (FP8 0.1) + + + m4przmon__a + Prize Money (Barcrest) (MPU4) (FP8 0.1 B) + + + m4przmon__b + Prize Money (Barcrest) (MPU4) (FP8 0.1 BD) + + + m4przmon__c + Prize Money (Barcrest) (MPU4) (FP8 0.1 D) + + + m4przmon__d + Prize Money (Barcrest) (MPU4) (FP8 0.1 DJ) + + + m4przmon__e + Prize Money (Barcrest) (MPU4) (FP8 0.1 KD) + + + m4przmon__f + Prize Money (Barcrest) (MPU4) (FP8 0.1 YD) + + + m4przmon__g + Prize Money (Barcrest) (MPU4) (FP8 0.1 J) + + + m4przmon__h + Prize Money (Barcrest) (MPU4) (FP8 0.1 K) + + + m4przmon__i + Prize Money (Barcrest) (MPU4) (FP8 0.1 AD) + + + m4przmon__j + Prize Money (Barcrest) (MPU4) (FP8 0.1 Y) + + + m4przmon__k + Prize Money (Barcrest) (MPU4) (FPM 0.3 B) + + + m4przmon__l + Prize Money (Barcrest) (MPU4) (FPM 0.3 D) + + + m4przmon__m + Prize Money (Barcrest) (MPU4) (FPM 0.3 YD) + + + m4przmon__n + Prize Money (Barcrest) (MPU4) (FPM 0.3 K) + + + m4przmon__o + Prize Money (Barcrest) (MPU4) (FPM 0.3) + + + m4przmon__p + Prize Money (Barcrest) (MPU4) (FPM 0.3 Y) + + + m4przrf + Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1) + + + m4przrf__a + Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1 B) + + + m4przrf__b + Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1 BD) + + + m4przrf__c + Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1 D) + + + m4przrf__d + Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1 DJ) + + + m4przrf__e + Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1 KD) + + + m4przrf__f + Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1 YD) + + + m4przrf__g + Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1 J) + + + m4przrf__h + Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1 K) + + + m4przrf__i + Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1 AD) + + + m4przrf__j + Prize Rich & Famous (Barcrest) (MPU4) (PR8 0.1 Y) + + + m4przrfm + Prize Run For Your Money (Barcrest) (MPU4) (PRU 0.2) + + + m4przrfm__a + Prize Run For Your Money (Barcrest) (MPU4) (PRU 0.2 D) + + + m4przrfm__b + Prize Run For Your Money (Barcrest) (MPU4) (PRU 0.2 YD) + + + m4przrfm__c + Prize Run For Your Money (Barcrest) (MPU4) (PRU 0.2 K) + + + m4przrfm__d + Prize Run For Your Money (Barcrest) (MPU4) (PRU 0.2 B) + + + m4przrfm__e + Prize Run For Your Money (Barcrest) (MPU4) (PRU 0.2 Y) + + + m4przrfm__f + Prize Run For Your Money (Barcrest) (MPU4) (RM8 0.1 B) + + + m4przrfm__g + Prize Run For Your Money (Barcrest) (MPU4) (RM8 0.1 BD) + + + m4przrfm__h + Prize Run For Your Money (Barcrest) (MPU4) (RM8 0.1 D) + + + m4przrfm__i + Prize Run For Your Money (Barcrest) (MPU4) (RM8 0.1 DJ) + + + m4przrfm__j + Prize Run For Your Money (Barcrest) (MPU4) (RM8 0.1 KD) + + + m4przrfm__k + Prize Run For Your Money (Barcrest) (MPU4) (RM8 0.1 YD) + + + m4przrfm__l + Prize Run For Your Money (Barcrest) (MPU4) (RM8 0.1 J) + + + m4przrfm__m + Prize Run For Your Money (Barcrest) (MPU4) (RM8 0.1 K) + + + m4przrfm__n + Prize Run For Your Money (Barcrest) (MPU4) (RM8 0.1) + + + m4przrfm__o + Prize Run For Your Money (Barcrest) (MPU4) (RM8 0.1 Y) + + + m4przsss + Prize Spend Spend Spend (Barcrest) (MPU4) (set 1) + + + m4przsss__0 + Prize Spend Spend Spend (Barcrest) (MPU4) (SSP 0.5 Y) + + + m4przsss__1 + Prize Spend Spend Spend (Barcrest) (MPU4) (SSP 0.5 C) + + + m4przsss__a + Prize Spend Spend Spend (Barcrest) (MPU4) (set 2) + + + m4przsss__b + Prize Spend Spend Spend (Barcrest) (MPU4) (set 3) + + + m4przsss__c + Prize Spend Spend Spend (Barcrest) (MPU4) (set 4) + + + m4przsss__d + Prize Spend Spend Spend (Barcrest) (MPU4) (set 5) + + + m4przsss__e + Prize Spend Spend Spend (Barcrest) (MPU4) (set 6) + + + m4przsss__f + Prize Spend Spend Spend (Barcrest) (MPU4) (set 7) + + + m4przsss__g + Prize Spend Spend Spend (Barcrest) (MPU4) (set 8) + + + m4przsss__h + Prize Spend Spend Spend (Barcrest) (MPU4) (set 9) + + + m4przsss__i + Prize Spend Spend Spend (Barcrest) (MPU4) (set 10) + + + m4przsss__j + Prize Spend Spend Spend (Barcrest) (MPU4) (set 11) + + + m4przsss__k + Prize Spend Spend Spend (Barcrest) (MPU4) (set 12) + + + m4przsss__l + Prize Spend Spend Spend (Barcrest) (MPU4) (set 13) + + + m4przsss__m + Prize Spend Spend Spend (Barcrest) (MPU4) (set 14) + + + m4przsss__n + Prize Spend Spend Spend (Barcrest) (MPU4) (set 15) + + + m4przsss__o + Prize Spend Spend Spend (Barcrest) (MPU4) (set 16) + + + m4przsss__p + Prize Spend Spend Spend (Barcrest) (MPU4) (set 17) + + + m4przsss__q + Prize Spend Spend Spend (Barcrest) (MPU4) (set 18) + + + m4przsss__r + Prize Spend Spend Spend (Barcrest) (MPU4) (set 19) + + + m4przsss__s + Prize Spend Spend Spend (Barcrest) (MPU4) (set 20) + + + m4przsss__t + Prize Spend Spend Spend (Barcrest) (MPU4) (SSP 0.5 B) + + + m4przsss__u + Prize Spend Spend Spend (Barcrest) (MPU4) (SSP 0.5 D) + + + m4przsss__v + Prize Spend Spend Spend (Barcrest) (MPU4) (SSP 0.5 BD) + + + m4przsss__w + Prize Spend Spend Spend (Barcrest) (MPU4) (SSP 0.5 YD) + + + m4przsss__x + Prize Spend Spend Spend (Barcrest) (MPU4) (SSP 0.5 R) + + + m4przsss__y + Prize Spend Spend Spend (Barcrest) (MPU4) (SSP 0.5 RD) + + + m4przsss__z + Prize Spend Spend Spend (Barcrest) (MPU4) (SSP 0.5) + + + m4przve + Prize Viva Espana (Barcrest) (MPU4) (PES 0.4) + + + m4przve__a + Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 AD) + + + m4przve__b + Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 B) + + + m4przve__c + Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 BD) + + + m4przve__d + Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 D) + + + m4przve__e + Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 DJ) + + + m4przve__f + Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 KD) + + + m4przve__g + Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 YD) + + + m4przve__h + Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 J) + + + m4przve__i + Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 K) + + + m4przve__j + Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1) + + + m4przve__k + Prize Viva Espana (Barcrest) (MPU4) (PE8 0.1 Y) + + + m4przve__l + Prize Viva Espana (Barcrest) (MPU4) (PES 0.4 B) + + + m4przve__m + Prize Viva Espana (Barcrest) (MPU4) (PES 0.4 D) + + + m4przve__n + Prize Viva Espana (Barcrest) (MPU4) (PES 0.4 YD) + + + m4przve__o + Prize Viva Espana (Barcrest) (MPU4) (PES 0.4 K) + + + m4przve__p + Prize Viva Espana (Barcrest) (MPU4) (PES 0.4 Y) + + + m4przwo + Prize What's On (Barcrest) (MPU4) (PWO 0.5) + + + m4przwo__a + Prize What's On (Barcrest) (MPU4) (PWO 0.5 B) + + + m4przwo__b + Prize What's On (Barcrest) (MPU4) (PWO 0.5 D) + + + m4przwo__c + Prize What's On (Barcrest) (MPU4) (PWO 0.5 YD) + + + m4przwo__d + Prize What's On (Barcrest) (MPU4) (PWO 0.5 K) + + + m4przwo__e + Prize What's On (Barcrest) (MPU4) (PWO 0.5 C) + + + m4przwo__f + Prize What's On (Barcrest) (MPU4) (PWO 0.5 Y) + + + m4przwta + Prize Winner Takes All (Barcrest) (MPU4) (PWN 0.4) + + + m4przwta__a + Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2 AD) + + + m4przwta__b + Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2 B) + + + m4przwta__c + Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2 BD) + + + m4przwta__d + Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2 D) + + + m4przwta__e + Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2 DJ) + + + m4przwta__f + Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2 KD) + + + m4przwta__g + Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2 YD) + + + m4przwta__h + Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2 J) + + + m4przwta__i + Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2 K) + + + m4przwta__j + Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2) + + + m4przwta__k + Prize Winner Takes All (Barcrest) (MPU4) (PW8 0.2 Y) + + + m4przwta__l + Prize Winner Takes All (Barcrest) (MPU4) (PWN 0.4 A) + + + m4przwta__m + Prize Winner Takes All (Barcrest) (MPU4) (PWN 0.4 B) + + + m4przwta__n + Prize Winner Takes All (Barcrest) (MPU4) (PWN 0.4 YD) + + + m4przwta__o + Prize Winner Takes All (Barcrest) (MPU4) (PWN 0.4 K) + + + m4przwta__p + Prize Winner Takes All (Barcrest) (MPU4) (PWN 0.4 R) + + + m4ptblkc + Pot Black (BWB) (MPU4) (PO 1.2 K) + + + m4pulwnc + Pull-A-Win (Concept Games Ltd) (MPU4) (set 1) + + + m4pulwnc__0 + Pull-A-Win (Concept Games Ltd) (MPU4) (set 28) + + + m4pulwnc__1 + Pull-A-Win (Concept Games Ltd) (MPU4) (set 29) + + + m4pulwnc__2 + Pull-A-Win (Concept Games Ltd) (MPU4) (set 30) + + + m4pulwnc__3 + Pull-A-Win (Concept Games Ltd) (MPU4) (set 31) + + + m4pulwnc__4 + Pull-A-Win (Concept Games Ltd) (MPU4) (set 32) + + + m4pulwnc__a + Pull-A-Win (Concept Games Ltd) (MPU4) (set 2) + + + m4pulwnc__b + Pull-A-Win (Concept Games Ltd) (MPU4) (set 3) + + + m4pulwnc__c + Pull-A-Win (Concept Games Ltd) (MPU4) (set 4) + + + m4pulwnc__d + Pull-A-Win (Concept Games Ltd) (MPU4) (set 5) + + + m4pulwnc__e + Pull-A-Win (Concept Games Ltd) (MPU4) (set 6) + + + m4pulwnc__f + Pull-A-Win (Concept Games Ltd) (MPU4) (set 7) + + + m4pulwnc__g + Pull-A-Win (Concept Games Ltd) (MPU4) (set 8) + + + m4pulwnc__h + Pull-A-Win (Concept Games Ltd) (MPU4) (set 9) + + + m4pulwnc__i + Pull-A-Win (Concept Games Ltd) (MPU4) (set 10) + + + m4pulwnc__j + Pull-A-Win (Concept Games Ltd) (MPU4) (set 11) + + + m4pulwnc__k + Pull-A-Win (Concept Games Ltd) (MPU4) (set 12) + + + m4pulwnc__l + Pull-A-Win (Concept Games Ltd) (MPU4) (set 13) + + + m4pulwnc__m + Pull-A-Win (Concept Games Ltd) (MPU4) (set 14) + + + m4pulwnc__n + Pull-A-Win (Concept Games Ltd) (MPU4) (set 15) + + + m4pulwnc__o + Pull-A-Win (Concept Games Ltd) (MPU4) (set 16) + + + m4pulwnc__p + Pull-A-Win (Concept Games Ltd) (MPU4) (set 17) + + + m4pulwnc__q + Pull-A-Win (Concept Games Ltd) (MPU4) (set 18) + + + m4pulwnc__r + Pull-A-Win (Concept Games Ltd) (MPU4) (set 19) + + + m4pulwnc__s + Pull-A-Win (Concept Games Ltd) (MPU4) (set 20) + + + m4pulwnc__t + Pull-A-Win (Concept Games Ltd) (MPU4) (set 21) + + + m4pulwnc__u + Pull-A-Win (Concept Games Ltd) (MPU4) (set 22) + + + m4pulwnc__v + Pull-A-Win (Concept Games Ltd) (MPU4) (set 23) + + + m4pulwnc__w + Pull-A-Win (Concept Games Ltd) (MPU4) (set 24) + + + m4pulwnc__x + Pull-A-Win (Concept Games Ltd) (MPU4) (set 25) + + + m4pulwnc__y + Pull-A-Win (Concept Games Ltd) (MPU4) (set 26) + + + m4pulwnc__z + Pull-A-Win (Concept Games Ltd) (MPU4) (set 27) + + + m4purmad + Pure Madness (Union) + + + m4pzbing + Prize Bingo (BWB) (MPU4) (set 1) + + + m4pzbing__a + Prize Bingo (BWB) (MPU4) (set 2) + + + m4pzbing__b + Prize Bingo (BWB) (MPU4) (set 3) + + + m4pzbing__c + Prize Bingo (BWB) (MPU4) (set 4) + + + m4pzbing__d + Prize Bingo (BWB) (MPU4) (set 5) + + + m4pzbing__e + Prize Bingo (BWB) (MPU4) (set 6) + + + m4quidin + Quids In (BWB) (MPU4) (set 1) + + + m4quidin__a + Quids In (BWB) (MPU4) (set 2) + + + m4quidin__b + Quids In (BWB) (MPU4) (set 3) + + + m4quidis + Quids In Showcase (BWB) (MPU4) (set 1) + + + m4quidis__a + Quids In Showcase (BWB) (MPU4) (set 2) + + + m4quidis__b + Quids In Showcase (BWB) (MPU4) (set 3) + + + m4quidis__c + Quids In Showcase (BWB) (MPU4) (set 4) + + + m4quidis__d + Quids In Showcase (BWB) (MPU4) (set 5) + + + m4r2r + Reel 2 Reel (Barcrest) (MPU4) (RR 3.0) + + + m4ra + Red Alert (Barcrest) (MPU4) (R2T 3.3, set 1) + + + m4ra__a + Red Alert (Barcrest) (MPU4) (R2T 3.3, set 2) + + + m4ra__b + Red Alert (Barcrest) (MPU4) (R2T 3.3, set 3) + + + m4ra__c + Red Alert (Barcrest) (MPU4) (R2T 3.3, set 4) + + + m4ra__d + Red Alert (Barcrest) (MPU4) (R2T 3.3, set 5) + + + m4ra__e + Red Alert (Barcrest) (MPU4) (R2T 3.3, set 6) + + + m4ra__f + Red Alert (Barcrest) (MPU4) (R2T 3.3, set 7) + + + m4ra__g + Red Alert (Barcrest) (MPU4) (RA3 0.2, set 1) + + + m4ra__h + Red Alert (Barcrest) (MPU4) (RA3 0.2, set 2) + + + m4ra__i + Red Alert (Barcrest) (MPU4) (RA3 0.2, set 3) + + + m4ra__j + Red Alert (Barcrest) (MPU4) (RA3 0.2, set 4) + + + m4ra__k + Red Alert (Barcrest) (MPU4) (RA3 0.2, set 5) + + + m4ra__l + Red Alert (Barcrest) (MPU4) (RA3 0.2, set 6) + + + m4ra__m + Red Alert (Barcrest) (MPU4) (RA3 0.2, set 7) + + + m4ra__n + Red Alert (Barcrest) (MPU4) (RA3 0.2, set 8) + + + m4ra__o + Red Alert (Barcrest) (MPU4) (RA3 0.2, set 9) + + + m4ra__p + Red Alert (Barcrest) (MPU4) (RAH 3.3) + + + m4ra__q + Red Alert (Barcrest) (bootleg) (MPU4) (R2T 3.1) + + + m4rackem + Rack Em Up (BWB) (MPU4) (ver. 3) (20/25/30p stake / £5/£15 jackpot) + + + m4rackem__a + Rack Em Up (BWB) (MPU4) (ver. 2) (20/25/30p stake / £5/£15 jackpot) (set 1) + + + m4rackem__b + Rack Em Up (BWB) (MPU4) (ver. 2) (20/25/30p stake / £5/£15 jackpot) (set 2) + + + m4rackem__c + Rack Em Up (BWB) (MPU4) (ver. 2) (20/25/30p stake / £5/£15 jackpot) (set 3) + + + m4rackem__d + Rack Em Up (BWB) (MPU4) (ver. 2) (20/25/30p stake / £5/£15 jackpot) (set 4) + + + m4rags + Rags To Riches Club (Crystal) (MPU4) (set 1) + + + m4ragsa + Rags To Riches Club (Crystal) (MPU4) (set 2) + + + m4ragsb + Rags To Riches Club (Crystal) (MPU4) (set 3) + + + m4ragsc + Rags To Riches Club (Crystal) (MPU4) (set 4) + + + m4randr + Random Roulette (Barcrest) (Dutch) (MPU4) (DRR 2.2) + + + m4rbgold + Rainbow Gold (BWB) (MPU4) (set 1) + + + m4rbgold__a + Rainbow Gold (BWB) (MPU4) (set 2) + + + m4rbgold__b + Rainbow Gold (BWB) (MPU4) (set 3) + + + m4rbgold__c + Rainbow Gold (BWB) (MPU4) (set 4) + + + m4rbgold__d + Rainbow Gold (BWB) (MPU4) (set 5) + + + m4rbgold__e + Rainbow Gold (BWB) (MPU4) (set 6) + + + m4rbgold__f + Rainbow Gold (BWB) (MPU4) (set 7) + + + m4rbgold__g + Rainbow Gold (BWB) (MPU4) (set 8) + + + m4rbgold__h + Rainbow Gold (BWB) (MPU4) (set 9) + + + m4rbgold__i + Rainbow Gold (BWB) (MPU4) (set 10) + + + m4rbgold__j + Rainbow Gold (BWB) (MPU4) (set 11) + + + m4rbgold__k + Rainbow Gold (BWB) (MPU4) (set 12) + + + m4rbgold__l + Rainbow Gold (BWB) (MPU4) (set 13) + + + m4rbgold__m + Rainbow Gold (BWB) (MPU4) (set 14) + + + m4rbgold__n + Rainbow Gold (BWB) (MPU4) (set 15) + + + m4rbgold__o + Rainbow Gold (BWB) (MPU4) (set 16) + + + m4rbgold__p + Rainbow Gold (BWB) (MPU4) (set 17) + + + m4rbgold__q + Rainbow Gold (BWB) (MPU4) (set 18) + + + m4rckrol + Rock 'n' Roll (Union - Empire) (MPU4, set 1) + + + m4rckrola + Rock 'n' Roll (Union - Empire) (MPU4, set 2) + + + m4rckrolb + Rock 'n' Roll (Union - Empire) (MPU4, set 3) + + + m4rdeal + Reel Deal (Qps) (MPU4) (set 1) + + + m4rdeal__a + Reel Deal (Qps) (MPU4) (set 2) + + + m4rdeal__b + Reel Deal (Qps) (MPU4) (set 3) + + + m4rdeal__c + Reel Deal (Qps) (MPU4) (set 4) + + + m4rdeal__d + Reel Deal (Qps) (MPU4) (set 5) + + + m4rdeal__e + Reel Deal (Qps) (MPU4) (set 6) + + + m4rdeal__f + Reel Deal (Qps) (MPU4) (set 7) + + + m4rdeal__g + Reel Deal (Qps) (MPU4) (set 8) + + + m4rdeal__h + Reel Deal (Qps) (MPU4) (set 9) + + + m4rdeal__i + Reel Deal (Qps) (MPU4) (set 10) + + + m4rdht + Red Heat (Barcrest) (Dutch) (MPU4) (DRH 1.2) + + + m4ready + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8) + + + m4ready__0 + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2 B) + + + m4ready__1 + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2 BD) + + + m4ready__2 + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2 C) + + + m4ready__3 + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2 D) + + + m4ready__4 + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2 KD) + + + m4ready__5 + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2 RD) + + + m4ready__6 + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2 YD) + + + m4ready__7 + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2 K) + + + m4ready__8 + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2 R) + + + m4ready__9 + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2) + + + m4ready__a + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1 AD) + + + m4ready__a0 + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0 RD) + + + m4ready__a1 + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0 YD) + + + m4ready__a2 + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0 K) + + + m4ready__a3 + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0 R) + + + m4ready__a4 + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0) + + + m4ready__a5 + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0 Y) + + + m4ready__aa + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2 Y) + + + m4ready__ab + Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2 AD) + + + m4ready__ac + Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2 B) + + + m4ready__ad + Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2 BD) + + + m4ready__ae + Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2 C) + + + m4ready__af + Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2 D) + + + m4ready__ag + Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2 KD) + + + m4ready__ah + Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2 YD) + + + m4ready__ai + Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2 K) + + + m4ready__aj + Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2 R) + + + m4ready__ak + Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2) + + + m4ready__al + Ready Steady Go (Barcrest) (type 2) (MPU4) (PPL 0.2 Y) + + + m4ready__am + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8 AD) + + + m4ready__an + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8 BD) + + + m4ready__ao + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8 D) + + + m4ready__ap + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8 KD) + + + m4ready__aq + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8 YD) + + + m4ready__ar + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8 K) + + + m4ready__as + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8 B) + + + m4ready__at + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGO 0.8 Y) + + + m4ready__au + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0 AD) + + + m4ready__av + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0 B) + + + m4ready__aw + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0 BD) + + + m4ready__ax + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0 C) + + + m4ready__ay + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0 D) + + + m4ready__az + Ready Steady Go (Barcrest) (type 2) (MPU4) (RGT 1.0 KD) + + + m4ready__b + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1 B) + + + m4ready__c + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1 BD) + + + m4ready__d + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1 C) + + + m4ready__e + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1 D) + + + m4ready__f + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1 KD) + + + m4ready__g + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1 RD) + + + m4ready__h + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1 YD) + + + m4ready__i + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1 K) + + + m4ready__j + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1 R) + + + m4ready__k + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1) + + + m4ready__l + Ready Steady Go (Barcrest) (type 2) (MPU4) (CGO 1.1 Y) + + + m4ready__m + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2 AD) + + + m4ready__n + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2 B) + + + m4ready__o + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2 BD) + + + m4ready__p + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2 C) + + + m4ready__q + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2 D) + + + m4ready__r + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2 KD) + + + m4ready__s + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2 RD) + + + m4ready__t + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2 YD) + + + m4ready__u + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2 K) + + + m4ready__v + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2 R) + + + m4ready__w + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2) + + + m4ready__x + Ready Steady Go (Barcrest) (type 2) (MPU4) (DRR 0.2 Y) + + + m4ready__y + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.1) + + + m4ready__z + Ready Steady Go (Barcrest) (type 2) (MPU4) (HJJ 0.2 AD) + + + m4redunk + unknown Barcrest MPU4 'RED 0.4' (MPU4) (bootleg) + + + m4reelpk + Reel Poker (Barcrest) (MPU4) (R2P 3.0) + + + m4revolv + Revolva (Union) (MPU4) + + + m4rfym + Run For Your Money (Barcrest) (MPU4) (RUN 0.5) + + + m4rfym__0 + Run For Your Money (Barcrest) (MPU4) (APR 0.1 YD) + + + m4rfym__1 + Run For Your Money (Barcrest) (MPU4) (APR 0.1 K) + + + m4rfym__2 + Run For Your Money (Barcrest) (MPU4) (APR 0.1) + + + m4rfym__3 + Run For Your Money (Barcrest) (MPU4) (APR 0.1 Y) + + + m4rfym__4 + Run For Your Money (Barcrest) (MPU4) (V1 8 0.1 C, hack, set 1) + + + m4rfym__5 + Run For Your Money (Barcrest) (MPU4) (V1 8 0.1 C, hack, set 2) + + + m4rfym__6 + Run For Your Money (Barcrest) (MPU4) (RUC 1.3 K5, hack, set 1) + + + m4rfym__7 + Run For Your Money (Barcrest) (MPU4) (RU4 1.1 K5, hack, set 2) + + + m4rfym__8 + Run For Your Money (Barcrest) (MPU4) (RU5 0.1 AD) + + + m4rfym__9 + Run For Your Money (Barcrest) (MPU4) (RU5 0.1 B) + + + m4rfym__a + Run For Your Money (Barcrest) (MPU4) (AP1 0.1 AD) + + + m4rfym__a0 + Run For Your Money (Barcrest) (MPU4) (RUT 0.1) + + + m4rfym__a1 + Run For Your Money (Barcrest) (MPU4) (RUT 0.1 Y) + + + m4rfym__a2 + Run For Your Money (Barcrest) (MPU4) (V1 8 0.1 C, hack, set 3) + + + m4rfym__a3 + Run For Your Money (Barcrest) (MPU4) (RUC 1.3 K5, hack, set 2) + + + m4rfym__a4 + Run For Your Money (Barcrest) (MPU4) (RU4 1.1 K5, hack, set 1) + + + m4rfym__a5 + Run For Your Money (Barcrest) (MPU4) (RU8 1.2 K5, hack) + + + m4rfym__aa + Run For Your Money (Barcrest) (MPU4) (RU5 0.1 BD) + + + m4rfym__ab + Run For Your Money (Barcrest) (MPU4) (RU5 0.1 D) + + + m4rfym__ac + Run For Your Money (Barcrest) (MPU4) (RU5 0.1 KD) + + + m4rfym__ad + Run For Your Money (Barcrest) (MPU4) (RU5 0.1 YD) + + + m4rfym__ae + Run For Your Money (Barcrest) (MPU4) (RU5 0.1 K) + + + m4rfym__af + Run For Your Money (Barcrest) (MPU4) (RU5 0.1) + + + m4rfym__ag + Run For Your Money (Barcrest) (MPU4) (RU5 0.1 Y) + + + m4rfym__ah + Run For Your Money (Barcrest) (MPU4) (RU8 0.1 C) + + + m4rfym__ai + Run For Your Money (Barcrest) (MPU4) (RU8 0.1 D) + + + m4rfym__aj + Run For Your Money (Barcrest) (MPU4) (RU8 0.1 KD) + + + m4rfym__ak + Run For Your Money (Barcrest) (MPU4) (RU8 0.1 YD) + + + m4rfym__al + Run For Your Money (Barcrest) (MPU4) (RU8 0.1 K) + + + m4rfym__am + Run For Your Money (Barcrest) (MPU4) (RU8 0.1) + + + m4rfym__an + Run For Your Money (Barcrest) (MPU4) (RU8 0.1 Y) + + + m4rfym__ao + Run For Your Money (Barcrest) (MPU4) (RUN 0.5 C) + + + m4rfym__ap + Run For Your Money (Barcrest) (MPU4) (RUN 0.5 YD) + + + m4rfym__aq + Run For Your Money (Barcrest) (MPU4) (RUN 0.5 K) + + + m4rfym__ar + Run For Your Money (Barcrest) (MPU4) (RUN 0.5 D) + + + m4rfym__as + Run For Your Money (Barcrest) (MPU4) (RUN 0.5 Y) + + + m4rfym__at + Run For Your Money (Barcrest) (MPU4) (RUT 0.1 AD) + + + m4rfym__au + Run For Your Money (Barcrest) (MPU4) (RUT 0.1 B) + + + m4rfym__av + Run For Your Money (Barcrest) (MPU4) (RUT 0.1 BD) + + + m4rfym__aw + Run For Your Money (Barcrest) (MPU4) (RUT 0.1 D) + + + m4rfym__ax + Run For Your Money (Barcrest) (MPU4) (RUT 0.1 KD) + + + m4rfym__ay + Run For Your Money (Barcrest) (MPU4) (RUT 0.1 YD) + + + m4rfym__az + Run For Your Money (Barcrest) (MPU4) (RUT 0.1 K) + + + m4rfym__b + Run For Your Money (Barcrest) (MPU4) (AP1 0.1 B) + + + m4rfym__c + Run For Your Money (Barcrest) (MPU4) (AP1 0.1 BD) + + + m4rfym__d + Run For Your Money (Barcrest) (MPU4) (AP1 0.1 D) + + + m4rfym__e + Run For Your Money (Barcrest) (MPU4) (AP1 0.1 KD) + + + m4rfym__f + Run For Your Money (Barcrest) (MPU4) (AP1 0.1 YD) + + + m4rfym__g + Run For Your Money (Barcrest) (MPU4) (AP1 0.1 K) + + + m4rfym__h + Run For Your Money (Barcrest) (MPU4) (AP1 0.1) + + + m4rfym__i + Run For Your Money (Barcrest) (MPU4) (AP1 0.1 Y) + + + m4rfym__j + Run For Your Money (Barcrest) (MPU4) (AP5 0.2 AD) + + + m4rfym__k + Run For Your Money (Barcrest) (MPU4) (AP5 0.2 B) + + + m4rfym__l + Run For Your Money (Barcrest) (MPU4) (AP5 0.2 BD) + + + m4rfym__m + Run For Your Money (Barcrest) (MPU4) (AP5 0.2 D) + + + m4rfym__n + Run For Your Money (Barcrest) (MPU4) (AP5 0.2 KD) + + + m4rfym__o + Run For Your Money (Barcrest) (MPU4) (AP5 0.2 RD) + + + m4rfym__p + Run For Your Money (Barcrest) (MPU4) (AP5 0.2 YD) + + + m4rfym__q + Run For Your Money (Barcrest) (MPU4) (AP5 0.2 K) + + + m4rfym__r + Run For Your Money (Barcrest) (MPU4) (AP5 0.2 R) + + + m4rfym__s + Run For Your Money (Barcrest) (MPU4) (AP5 0.2) + + + m4rfym__t + Run For Your Money (Barcrest) (MPU4) (AP5 0.2 Y) + + + m4rfym__u + Run For Your Money (Barcrest) (MPU4) (APR 0.1 AD) + + + m4rfym__v + Run For Your Money (Barcrest) (MPU4) (APR 0.1 B) + + + m4rfym__w + Run For Your Money (Barcrest) (MPU4) (APR 0.1 BD) + + + m4rfym__x + Run For Your Money (Barcrest) (MPU4) (APR 0.1 C) + + + m4rfym__y + Run For Your Money (Barcrest) (MPU4) (APR 0.1 D) + + + m4rfym__z + Run For Your Money (Barcrest) (MPU4) (APR 0.1 KD) + + + m4rhfev + Red Hot Fever (BWB) (MPU4) (ver. 7) (20/25/30p stake / £5/£10/£15 jackpot) (set 1) + + + m4rhfev__a + Red Hot Fever (BWB) (MPU4) (ver. 7) (20/25/30p stake / £5/£10/£15 jackpot) (set 2) + + + m4rhfev__b + Red Hot Fever (BWB) (MPU4) (ver. 7) (20/25/30p stake / £5/£10/£15 jackpot) (set 3) + + + m4rhfev__c + Red Hot Fever (BWB) (MPU4) (ver. 1) (5/10p stake / £5/£8 jackpot) (set 1) + + + m4rhfev__d + Red Hot Fever (BWB) (MPU4) (ver. 1) (5/10p stake / £5/£8 jackpot) (set 2) + + + m4rhfevc + Red Hot Fever (Concept Games Ltd) (MPU4) (set 1) + + + m4rhfevc__a + Red Hot Fever (Concept Games Ltd) (MPU4) (set 2) + + + m4rhfevc__b + Red Hot Fever (Concept Games Ltd) (MPU4) (set 3) + + + m4rhfevc__c + Red Hot Fever (Concept Games Ltd) (MPU4) (set 4) + + + m4rhfevc__d + Red Hot Fever (Concept Games Ltd) (MPU4) (set 5) + + + m4rhfevc__e + Red Hot Fever (Concept Games Ltd) (MPU4) (set 6) + + + m4rhfevc__f + Red Hot Fever (Concept Games Ltd) (MPU4) (set 7) + + + m4rhfevc__g + Red Hot Fever (Concept Games Ltd) (MPU4) (set 8) + + + m4rhfevc__h + Red Hot Fever (Concept Games Ltd) (MPU4) (set 9) + + + m4rhfevc__i + Red Hot Fever (Concept Games Ltd) (MPU4) (set 10) + + + m4rhfevc__j + Red Hot Fever (Concept Games Ltd) (MPU4) (set 11) + + + m4rhfevc__k + Red Hot Fever (Concept Games Ltd) (MPU4) (set 12) + + + m4rhfevc__l + Red Hot Fever (Concept Games Ltd) (MPU4) (set 13) + + + m4rhfevc__m + Red Hot Fever (Concept Games Ltd) (MPU4) (set 14) + + + m4rhfevc__n + Red Hot Fever (Concept Games Ltd) (MPU4) (set 15) + + + m4rhfevc__o + Red Hot Fever (Concept Games Ltd) (MPU4) (set 16) + + + m4rhfevc__p + Red Hot Fever (Concept Games Ltd) (MPU4) (set 17) + + + m4rhfevc__q + Red Hot Fever (Concept Games Ltd) (MPU4) (set 18) + + + m4rhfevc__r + Red Hot Fever (Concept Games Ltd) (MPU4) (set 19) + + + m4rhfevc__s + Red Hot Fever (Concept Games Ltd) (MPU4) (set 20) + + + m4rhfevc__t + Red Hot Fever (Concept Games Ltd) (MPU4) (set 21) + + + m4rhfevc__u + Red Hot Fever (Concept Games Ltd) (MPU4) (set 22) + + + m4rhfevc__v + Red Hot Fever (Concept Games Ltd) (MPU4) (set 23) + + + m4rhfevc__w + Red Hot Fever (Concept Games Ltd) (MPU4) (set 24) + + + m4rhfevc__x + Red Hot Fever (Concept Games Ltd) (MPU4) (set 25) + + + m4rhfevc__y + Red Hot Fever (Concept Games Ltd) (MPU4) (set 26) + + + m4rhnote + Red Hot Notes (Qps) (MPU4) (set 1) + + + m4rhnote__a + Red Hot Notes (Qps) (MPU4) (set 2) + + + m4rhnote__b + Red Hot Notes (Qps) (MPU4) (set 3) + + + m4rhnote__c + Red Hot Notes (Qps) (MPU4) (set 4) + + + m4rhnote__d + Red Hot Notes (Qps) (MPU4) (set 5) + + + m4rhnote__e + Red Hot Notes (Qps) (MPU4) (set 6) + + + m4rhnote__f + Red Hot Notes (Qps) (MPU4) (set 7) + + + m4rhnote__g + Red Hot Notes (Qps) (MPU4) (set 8) + + + m4rhnote__h + Red Hot Notes (Qps) (MPU4) (set 9) + + + m4rhnote__i + Red Hot Notes (Qps) (MPU4) (set 10) + + + m4rhnote__j + Red Hot Notes (Qps) (MPU4) (set 11) + + + m4rhnote__k + Red Hot Notes (Qps) (MPU4) (set 12) + + + m4rhnote__l + Red Hot Notes (Qps) (MPU4) (set 13) + + + m4rhnote__m + Red Hot Notes (Qps) (MPU4) (set 14) + + + m4rhnote__n + Red Hot Notes (Qps) (MPU4) (set 15) + + + m4rhnote__o + Red Hot Notes (Qps) (MPU4) (set 16) + + + m4rhnote__p + Red Hot Notes (Qps) (MPU4) (set 17) + + + m4rhnote__q + Red Hot Notes (Qps) (MPU4) (set 18) + + + m4rhnote__r + Red Hot Notes (Qps) (MPU4) (set 19) + + + m4rhnote__s + Red Hot Notes (Qps) (MPU4) (set 20) + + + m4rhnote__t + Red Hot Notes (Qps) (MPU4) (set 21) + + + m4rhnote__u + Red Hot Notes (Qps) (MPU4) (set 22) + + + m4rhnote__v + Red Hot Notes (Qps) (MPU4) (set 23) + + + m4rhnote__w + Red Hot Notes (Qps) (MPU4) (set 24) + + + m4rhnote__x + Red Hot Notes (Qps) (MPU4) (set 25) + + + m4rhnote__y + Red Hot Notes (Qps) (MPU4) (set 26) + + + m4rhog + Road Hog (Barcrest) (MPU4) (RR6 1.2) + + + m4rhog2 + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6) + + + m4rhog2__a + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 AD) + + + m4rhog2__b + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 B) + + + m4rhog2__c + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 BD) + + + m4rhog2__d + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 D) + + + m4rhog2__e + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 DH) + + + m4rhog2__f + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 KD) + + + m4rhog2__g + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 RD) + + + m4rhog2__h + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 YD) + + + m4rhog2__i + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 H) + + + m4rhog2__j + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 K) + + + m4rhog2__k + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 R) + + + m4rhog2__l + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 C) + + + m4rhog2__m + Road Hog 2 - I'm Back (Barcrest) (MPU4) (2RH 0.6 Y) + + + m4rhog_h1 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 1) + + + m4rhog_h10 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 3) + + + m4rhog_h11 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 4) + + + m4rhog_h12 + Road Hog (Barcrest) (MPU4) (RR6 1.2?, hack?) + + + m4rhog_h13 + Road Hog (Barcrest) (MPU4) (RR6 1.2, hack?) + + + m4rhog_h14 + Road Hog (Barcrest) (MPU4) (RR6 1.2C, hack?, set 1) + + + m4rhog_h15 + Road Hog (Barcrest) (MPU4) (RR6 1.2C, hack?, set 2) + + + m4rhog_h2 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 2) + + + m4rhog_h3 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 3) + + + m4rhog_h4 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 4) + + + m4rhog_h5 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 5) + + + m4rhog_h6 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 6) + + + m4rhog_h7 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0, hack?, set 7) + + + m4rhog_h8 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 1) + + + m4rhog_h9 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0, hack?, set 2) + + + m4rhog_roc + Road Hog (BWB / Barcrest) (MPU4) (ROC 2.0, bad) + + + m4rhogc + Road Hog Club (Barcrest) (MPU4) (RHC 0.5) + + + m4rhogc__a + Road Hog Club (Barcrest) (MPU4) (RHC 0.5 F) + + + m4rhogc__b + Road Hog Club (Barcrest) (MPU4) (RHC 0.5 D) + + + m4rhogr1 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0) + + + m4rhogr1c + Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 C) + + + m4rhogr1d + Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 D) + + + m4rhogr1k + Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 K, set 1) + + + m4rhogr1k_a + Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 K, set 2, wrong version number?) + + + m4rhogr1y + Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 Y) + + + m4rhogr1yd + Road Hog (BWB / Barcrest) (MPU4) (RO_ 1.0 YD) + + + m4rhogr2 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0) + + + m4rhogr2c + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 C) + + + m4rhogr2d + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 D) + + + m4rhogr2k + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 K) + + + m4rhogr2y + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 Y) + + + m4rhogr2yd + Road Hog (BWB / Barcrest) (MPU4) (RO_ 2.0 YD) + + + m4rhogr3 + Road Hog (BWB / Barcrest) (MPU4) (RO_ 3.0) + + + m4rhogr6ad + Road Hog (Barcrest) (MPU4) (RR6 1.2 AD) + + + m4rhogr6b + Road Hog (Barcrest) (MPU4) (RR6 1.2 B) + + + m4rhogr6c + Road Hog (Barcrest) (MPU4) (RR6 1.2 C) + + + m4rhogr6d + Road Hog (Barcrest) (MPU4) (RR6 1.2 D) + + + m4rhogr6k + Road Hog (Barcrest) (MPU4) (RR6 1.2 K) + + + m4rhogr6y + Road Hog (Barcrest) (MPU4) (RR6 1.2 Y) + + + m4rhogr6y_a + Road Hog (Barcrest) (MPU4) (RR6 1.1 Y) + + + m4rhogr6yd + Road Hog (Barcrest) (MPU4) (RR6 1.2 YD) + + + m4rhr + Red Hot Roll (Barcrest) (MPU4) (CR4 0.9) + + + m4rhr__0 + Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 DY) + + + m4rhr__1 + Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 K) + + + m4rhr__2 + Red Hot Roll (Barcrest) (MPU4) (CRU 0.1) + + + m4rhr__3 + Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 Y) + + + m4rhr__4 + Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 K) + + + m4rhr__5 + Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 R) + + + m4rhr__6 + Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 C, hack, set 1) + + + m4rhr__7 + Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 C, hack, set 2) + + + m4rhr__8 + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 C, hack) + + + m4rhr__a + Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 AD) + + + m4rhr__a0 + Red Hot Roll (Barcrest) (MPU4) (RHU 0.2) + + + m4rhr__a1 + Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 Y) + + + m4rhr__a2 + Red Hot Roll (Barcrest) (MPU4) (RHR 5.0, set 1) + + + m4rhr__a3 + Red Hot Roll (Barcrest) (MPU4) (RHR 2.0 D) + + + m4rhr__a4 + Red Hot Roll (Barcrest) (MPU4) (RH8 0.1 C) + + + m4rhr__aa + Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 B) + + + m4rhr__ab + Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 BD) + + + m4rhr__ac + Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 C) + + + m4rhr__ad + Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 D) + + + m4rhr__ae + Red Hot Roll (Barcrest) (MPU4) (RHR 0.3 K) + + + m4rhr__af + Red Hot Roll (Barcrest) (MPU4) (RHR 0.3) + + + m4rhr__ag + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 AD) + + + m4rhr__ah + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 B) + + + m4rhr__ai + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 BD) + + + m4rhr__aj + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 D) + + + m4rhr__ak + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 KD) + + + m4rhr__al + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 RD) + + + m4rhr__am + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 YD) + + + m4rhr__an + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 K) + + + m4rhr__ao + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 R) + + + m4rhr__ap + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3) + + + m4rhr__aq + Red Hot Roll (Barcrest) (MPU4) (RHT 0.3 Y) + + + m4rhr__ar + Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 AD) + + + m4rhr__as + Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 B) + + + m4rhr__at + Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 BD) + + + m4rhr__au + Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 D) + + + m4rhr__av + Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 KD) + + + m4rhr__aw + Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 RD) + + + m4rhr__ax + Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 YD) + + + m4rhr__ay + Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 K) + + + m4rhr__az + Red Hot Roll (Barcrest) (MPU4) (RHU 0.2 R) + + + m4rhr__b + Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 B) + + + m4rhr__c + Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 BD) + + + m4rhr__d + Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 D) + + + m4rhr__e + Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 KD) + + + m4rhr__f + Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 YD) + + + m4rhr__g + Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 K) + + + m4rhr__h + Red Hot Roll (Barcrest) (MPU4) (CR4 0.9 Y) + + + m4rhr__i + Red Hot Roll (Barcrest) (MPU4) (HHN 0.2 KD / CR4 0.2) + + + m4rhr__j + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 AD / CR4 0.3) + + + m4rhr__k + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 B / CR4 0.3) + + + m4rhr__l + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 BD / CR4 0.3) + + + m4rhr__m + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 C / CR4 0.3) + + + m4rhr__n + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 D / CR4 0.3) + + + m4rhr__o + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 KD / CR4 0.3) + + + m4rhr__p + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 RD / CR4 0.3) + + + m4rhr__q + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 YD / CR4 0.3) + + + m4rhr__r + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 K / CR4 0.3) + + + m4rhr__s + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 R / CR4 0.3) + + + m4rhr__t + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 / CR4 0.3) + + + m4rhr__u + Red Hot Roll (Barcrest) (MPU4) (CRT 0.3 Y / CR4 0.3) + + + m4rhr__v + Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 AD) + + + m4rhr__w + Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 B) + + + m4rhr__x + Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 BD) + + + m4rhr__y + Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 D) + + + m4rhr__z + Red Hot Roll (Barcrest) (MPU4) (CRU 0.1 DK) + + + m4rhrc + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 / CRU 0.3) + + + m4rhrc__0 + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 AC/ CR4 0.3) + + + m4rhrc__1 + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 D / CR4 0.3) + + + m4rhrc__2 + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 KD / CR4 0.3) + + + m4rhrc__3 + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 RD / CR4 0.3) + + + m4rhrc__4 + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 YD / CR4 0.3) + + + m4rhrc__5 + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 K / CR4 0.3) + + + m4rhrc__6 + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 R / CR4 0.3) + + + m4rhrc__7 + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 / CR4 0.3) + + + m4rhrc__8 + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 Y / CR4 0.3) + + + m4rhrc__9 + Red Hot Roll (Barcrest) (MPU4) (CLD 0.2C) + + + m4rhrc__a + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 B / CRU 0.3) + + + m4rhrc__aa + Red Hot Roll (Barcrest) (MPU4) (RHR 5.0, set 2) + + + m4rhrc__b + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 BD / CRU 0.3) + + + m4rhrc__c + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 C / CRU 0.3) + + + m4rhrc__d + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 D / CRU 0.3) + + + m4rhrc__e + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 KD / CRU 0.3) + + + m4rhrc__f + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 RD / CRU 0.3) + + + m4rhrc__g + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 YD / CRU 0.3) + + + m4rhrc__h + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 K / CRU 0.3) + + + m4rhrc__i + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 R / CRU 0.3) + + + m4rhrc__j + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 AD / CRU 0.3) + + + m4rhrc__k + Red Hot Roll (Barcrest) (MPU4) (CLD 0.3 Y / CRU 0.3) + + + m4rhrc__l + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 AD / CR4 0.3) + + + m4rhrc__m + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 B / CR4 0.3) + + + m4rhrc__n + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 BD / CR4 0.3) + + + m4rhrc__o + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 C / CR4 0.3) + + + m4rhrc__p + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 D / CR4 0.3) + + + m4rhrc__q + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 KD / CR4 0.3) + + + m4rhrc__r + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 RD / CR4 0.3) + + + m4rhrc__s + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 YD / CR4 0.3) + + + m4rhrc__t + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 K / CR4 0.3) + + + m4rhrc__u + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 R / CR4 0.3) + + + m4rhrc__v + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 / CR4 0.3) + + + m4rhrc__w + Red Hot Roll (Barcrest) (MPU4) (HHN 0.3 Y / CR4 0.3) + + + m4rhrc__x + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 AD / CR4 0.3) + + + m4rhrc__y + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 B / CR4 0.3) + + + m4rhrc__z + Red Hot Roll (Barcrest) (MPU4) (RRD 0.3 BD / CR4 0.3) + + + m4rhrcl + Red Hot Roll Club (Barcrest) (MPU4) (RH2 1.1) + + + m4rhrcl__a + Red Hot Roll Club (Barcrest) (MPU4) (RH2 1.1 D) + + + m4rhrcl__b + Red Hot Roll Club (Barcrest) (MPU4) (RH2 1.1 F) + + + m4rhrcl__c + Red Hot Roll Club (Barcrest) (MPU4) (RH2 1.0) + + + m4rhrock + Red Hot Rocks (Qps) (MPU4) (set 1) + + + m4rhrock__a + Red Hot Rocks (Qps) (MPU4) (set 2) + + + m4rhs + Rocky Horror Show (Barcrest) (MPU4) (RH__4.0) + + + m4rhs__a + Rocky Horror Show (Barcrest) (MPU4) (RH__6.0) + + + m4rhs__b + Rocky Horror Show (Barcrest) (MPU4) (RH__4.0 YD) + + + m4rhs__c + Rocky Horror Show (Barcrest) (MPU4) (RH__6.0 YD) + + + m4rhs__d + Rocky Horror Show (Barcrest) (MPU4) (RH__4.0 D) + + + m4rhs__e + Rocky Horror Show (Barcrest) (MPU4) (RH__4.0 Y) + + + m4rhs__f + Rocky Horror Show (Barcrest) (MPU4) (RH__4.0 K) + + + m4rhs__g + Rocky Horror Show (Barcrest) (MPU4) (RH__6.0 K) + + + m4rhs__h + Rocky Horror Show (Barcrest) (MPU4) (RH__4.0 YKD) + + + m4rhs__i + Rocky Horror Show (Barcrest) (MPU4) (RH__4.0 KD) + + + m4rhs__j + Rocky Horror Show (Barcrest) (MPU4) (RH__4.0 YK) + + + m4rhs__k + Rocky Horror Show (Barcrest) (MPU4) (RH__2.0, hack) + + + m4rhs__l + Rocky Horror Show (Barcrest) (MPU4) (RH__3.0 YC, hack) + + + m4rhwhl + Red Hot Wheels (Qps) (MPU4) (set 1) + + + m4rhwhl__a + Red Hot Wheels (Qps) (MPU4) (set 2) + + + m4rhwhl__b + Red Hot Wheels (Qps) (MPU4) (set 3) + + + m4rhwhl__c + Red Hot Wheels (Qps) (MPU4) (set 4) + + + m4richfm + Rich & Famous (Barcrest) (MPU4) (RFT 0.2) + + + m4richfm__0 + Rich & Famous (Barcrest) (MPU4) (RFC 1.3 K5) + + + m4richfm__1 + Rich & Famous (Barcrest) (MPU4) (RF4 1.1 K5) + + + m4richfm__2 + Rich & Famous (Barcrest) (MPU4) (RF8 1.2 K5) + + + m4richfm__3 + Rich & Famous (Barcrest) (MPU4) (RF4 1.1 K5, hack) + + + m4richfm__a + Rich & Famous (Barcrest) (MPU4) (RAF 0.3 C) + + + m4richfm__b + Rich & Famous (Barcrest) (MPU4) (RAF 0.3 D) + + + m4richfm__c + Rich & Famous (Barcrest) (MPU4) (RAF 0.3) + + + m4richfm__d + Rich & Famous (Barcrest) (MPU4) (RAF 0.3 Y) + + + m4richfm__e + Rich & Famous (Barcrest) (MPU4) (bad) + + + m4richfm__f + Rich & Famous (Barcrest) (MPU4) (RF5 0.2 AD) + + + m4richfm__g + Rich & Famous (Barcrest) (MPU4) (RF5 0.2 B) + + + m4richfm__h + Rich & Famous (Barcrest) (MPU4) (RF5 0.2 BD) + + + m4richfm__i + Rich & Famous (Barcrest) (MPU4) (RF5 0.2 D) + + + m4richfm__j + Rich & Famous (Barcrest) (MPU4) (RF5 0.2 KD) + + + m4richfm__k + Rich & Famous (Barcrest) (MPU4) (RF5 0.2 YD) + + + m4richfm__l + Rich & Famous (Barcrest) (MPU4) (RF5 0.2 K) + + + m4richfm__m + Rich & Famous (Barcrest) (MPU4) (RF5 0.2) + + + m4richfm__n + Rich & Famous (Barcrest) (MPU4) (RF5 0.2 Y) + + + m4richfm__o + Rich & Famous (Barcrest) (MPU4) (RF8 0.1 B) + + + m4richfm__p + Rich & Famous (Barcrest) (MPU4) (RF8 0.1 C) + + + m4richfm__q + Rich & Famous (Barcrest) (MPU4) (RFT 0.2 P, hack, set 1) + + + m4richfm__r + Rich & Famous (Barcrest) (MPU4) (RFT 0.2 AD) + + + m4richfm__s + Rich & Famous (Barcrest) (MPU4) (RFT 0.2 B) + + + m4richfm__t + Rich & Famous (Barcrest) (MPU4) (RFT 0.2 BD) + + + m4richfm__u + Rich & Famous (Barcrest) (MPU4) (RFT 0.2 D) + + + m4richfm__v + Rich & Famous (Barcrest) (MPU4) (RFT 0.2 KD) + + + m4richfm__w + Rich & Famous (Barcrest) (MPU4) (RFT 0.2 YD) + + + m4richfm__x + Rich & Famous (Barcrest) (MPU4) (RFT 0.2 K) + + + m4richfm__y + Rich & Famous (Barcrest) (MPU4) (RFT 0.2 Y) + + + m4richfm__z + Rich & Famous (Barcrest) (MPU4) (RFT 0.2 P, hack, set 2) + + + m4ringfr + Ring Of Fire (Barcrest) (German) (MPU4) (ROF 0.3) + + + m4riocr + Rio Grande (Crystal) (MPU4) (set 1) + + + m4riocra + Rio Grande (Crystal) (MPU4) (set 2) + + + m4riotrp + Rio Tropico (Barcrest) (Dutch) (MPU4) (DRT 1.0) + + + m4rlpick + Reel Picks (Crystal) (MPU4) (set 1) + + + m4rlpicka + Reel Picks (Crystal) (MPU4) (set 2) + + + m4rlpickb + Reel Picks (Crystal) (MPU4) (set 3) + + + m4rlpickc + Reel Picks (Crystal) (MPU4) (set 4) + + + m4rltst + MPU4 Reel Test (3.0) + + + m4rmtp + Reel Magic Turbo Play (Avantime?) (MPU4) (set 1) + + + m4rmtp__a + Reel Magic Turbo Play (Avantime?) (MPU4) (set 2) + + + m4rmtp__b + Reel Magic Turbo Play (Avantime?) (MPU4) (set 3) + + + m4rmtp__c + Reel Magic Turbo Play (Avantime?) (MPU4) (set 4) + + + m4rmtp__d + Reel Magic Turbo Play (Avantime?) (MPU4) (set 5) + + + m4rmtp__e + Reel Magic Turbo Play (Avantime?) (MPU4) (set 6) + + + m4rmtp__f + Reel Magic Turbo Play (Avantime?) (MPU4) (set 7) + + + m4rmtp__g + Reel Magic Turbo Play (Avantime?) (MPU4) (set 8) + + + m4rmtpd + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 1) + + + m4rmtpd__0 + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 28) + + + m4rmtpd__1 + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 29) + + + m4rmtpd__2 + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 30) + + + m4rmtpd__3 + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 31) + + + m4rmtpd__4 + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 32) + + + m4rmtpd__5 + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 33) + + + m4rmtpd__6 + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 34) + + + m4rmtpd__7 + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 35) + + + m4rmtpd__8 + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 36) + + + m4rmtpd__9 + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 37) + + + m4rmtpd__a + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 2) + + + m4rmtpd__aa + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 38) + + + m4rmtpd__ab + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 39) + + + m4rmtpd__ac + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 40) + + + m4rmtpd__ad + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 41) + + + m4rmtpd__ae + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 42) + + + m4rmtpd__af + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 43) + + + m4rmtpd__ag + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 44) + + + m4rmtpd__ah + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 45) + + + m4rmtpd__ai + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 46) + + + m4rmtpd__aj + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 47) + + + m4rmtpd__ak + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 48) + + + m4rmtpd__al + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 49) + + + m4rmtpd__am + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 50) + + + m4rmtpd__b + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 3) + + + m4rmtpd__c + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 4) + + + m4rmtpd__d + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 5) + + + m4rmtpd__e + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 6) + + + m4rmtpd__f + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 7) + + + m4rmtpd__g + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 8) + + + m4rmtpd__h + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 9) + + + m4rmtpd__i + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 10) + + + m4rmtpd__j + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 11) + + + m4rmtpd__k + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 12) + + + m4rmtpd__l + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 13) + + + m4rmtpd__m + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 14) + + + m4rmtpd__n + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 15) + + + m4rmtpd__o + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 16) + + + m4rmtpd__p + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 17) + + + m4rmtpd__q + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 18) + + + m4rmtpd__r + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 19) + + + m4rmtpd__s + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 20) + + + m4rmtpd__t + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 21) + + + m4rmtpd__u + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 22) + + + m4rmtpd__v + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 23) + + + m4rmtpd__w + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 24) + + + m4rmtpd__x + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 25) + + + m4rmtpd__y + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 26) + + + m4rmtpd__z + Reel Magic Turbo Play Deluxe (Avantime?) (MPU4) (set 27) + + + m4roadrn + Road Runner (Barcrest) (Dutch) (MPU4) (DRO 1.9) + + + m4robo + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 1) + + + m4robo__0 + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 14) + + + m4robo__1 + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 2) + + + m4robo__2 + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 3) + + + m4robo__3 + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 4) + + + m4robo__4 + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 5) + + + m4robo__5 + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 6) + + + m4robo__6 + Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 1) + + + m4robo__7 + Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 2) + + + m4robo__8 + Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 3) + + + m4robo__9 + Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 4) + + + m4robo__a + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 7) + + + m4robo__aa + Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 5) + + + m4robo__ab + Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 6) + + + m4robo__b + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 8) + + + m4robo__c + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 9) + + + m4robo__d + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 10) + + + m4robo__e + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 11) + + + m4robo__f + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 12) + + + m4robo__g + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 13) + + + m4robo__h + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 14) + + + m4robo__i + Robotica / Dream Machine (Avantime?) (MPU4) (Latvia, set 15) + + + m4robo__j + Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 7) + + + m4robo__k + Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 8) + + + m4robo__l + Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 9) + + + m4robo__m + Robotica / Dream Machine (Avantime?) (MPU4) (Russia, set 10) + + + m4robo__n + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 1) + + + m4robo__o + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 2) + + + m4robo__p + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 3) + + + m4robo__q + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 4) + + + m4robo__r + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 5) + + + m4robo__s + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 6) + + + m4robo__t + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 7) + + + m4robo__u + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 8) + + + m4robo__v + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 9) + + + m4robo__w + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 10) + + + m4robo__x + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 11) + + + m4robo__y + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 12) + + + m4robo__z + Robotica / Dream Machine (Avantime?) (MPU4) (Ukraine, set 13) + + + m4rockmn + Rocket Money (Barcrest) (MPU4) (ROK 0.6) + + + m4rockmn__a + Rocket Money (Barcrest) (MPU4) (ROK 0.6 AD) + + + m4rockmn__b + Rocket Money (Barcrest) (MPU4) (ROK 0.6 B) + + + m4rockmn__c + Rocket Money (Barcrest) (MPU4) (ROK 0.6 BD) + + + m4rockmn__d + Rocket Money (Barcrest) (MPU4) (ROK 0.6 D) + + + m4rockmn__e + Rocket Money (Barcrest) (MPU4) (ROK 0.6 KD) + + + m4rockmn__f + Rocket Money (Barcrest) (MPU4) (ROK 0.6 RD) + + + m4rockmn__g + Rocket Money (Barcrest) (MPU4) (ROK 0.6 YD) + + + m4rockmn__h + Rocket Money (Barcrest) (MPU4) (ROK 0.6 K) + + + m4rockmn__i + Rocket Money (Barcrest) (MPU4) (ROK 0.6 R) + + + m4rockmn__j + Rocket Money (Barcrest) (MPU4) (ROK 0.6 C) + + + m4rockmn__k + Rocket Money (Barcrest) (MPU4) (ROK 0.6 Y) + + + m4rotex + Rotex (Union) (MPU4) + + + m4royjwl + Royal Jewels (Barcrest) (German) (MPU4) (GRJ 1.4) + + + m4rsg + Ready Steady Go (Barcrest) (MPU4, Mod 2 type) (RSG 1.2) + + + m4rsga + Ready Steady Go (Barcrest) (MPU4, Mod 2 type) (R4G 1.0) + + + m4runawy + Runaway Trail (Barcrest) (MPU4) (R4T 1.1) + + + m4runawyb + Runaway Trail (Barcrest) (MPU4) (R4T 1.3) + + + m4rwb + Red White & Blue (Barcrest) (Dutch) (MPU4) (DRW 1.4) + + + m4safar + Safari Club (Mdm) (MPU4) + + + m4salsa + Salsa (Barcrest) (Dutch) (MPU4) (DSA 1.5) + + + m4samu + Samurai (Barcrest) (Dutch) (MPU4) (DSM 1.0) + + + m4sayno + Say No More (Barcrest) (MPU4) (SNM 2.0) + + + m4sayno__a + Say No More (Barcrest) (MPU4) (SNM 0.5, hack, set 1) + + + m4sayno__b + Say No More (Barcrest) (MPU4) (SNM 0.5, hack, set 2) + + + m4sayno__c + Say No More (Barcrest) (MPU4) (SNM 0.4, hack) + + + m4sayno__d + Say No More (Barcrest) (MPU4) (SNM 2.0 X) + + + m4sb5 + Sunset Boulevard (Barcrest) (MPU4) (BSB 0.3) + + + m4sbx + Super Bear X (MPU4?) (set 1) + + + m4sbxa + Super Bear X (MPU4?) (set 2) + + + m4sbxb + Super Bear X (MPU4?) (set 3) + + + m4sbxc + Super Bear X (MPU4?) (set 4) + + + m4sbxd + Super Bear X (MPU4?) (set 5) + + + m4sbxe + Super Bear X (MPU4?) (set 6) + + + m4screw + Screwin' Around (Global) (MPU4, v0.8) + + + m4screwa + Screwin' Around (Global) (MPU4, v0.7) + + + m4screwb + Screwin' Around (Global) (MPU4, v0.5) + + + m4screwp + Screwin' Around (Global) (MPU4, v0.8) (Protocol) + + + m4sctagt + Secret Agent (Nova) (German) (MPU4) (GSE 3.0) + + + m4sdquid + Sundance Quid (Qps) (MPU4) (set 1) + + + m4sdquid__a + Sundance Quid (Qps) (MPU4) (set 2) + + + m4sdquid__b + Sundance Quid (Qps) (MPU4) (set 3) + + + m4sdquid__c + Sundance Quid (Qps) (MPU4) (set 4) + + + m4sdquid__d + Sundance Quid (Qps) (MPU4) (set 5) + + + m4sdquid__e + Sundance Quid (Qps) (MPU4) (set 6) + + + m4sdquid__f + Sundance Quid (Qps) (MPU4) (set 7) + + + m4sdquid__g + Sundance Quid (Qps) (MPU4) (set 8) + + + m4sdquid__h + Sundance Quid (Qps) (MPU4) (set 9) + + + m4sdquid__i + Sundance Quid (Qps) (MPU4) (set 10) + + + m4sdquid__j + Sundance Quid (Qps) (MPU4) (set 11) + + + m4sdquid__k + Sundance Quid (Qps) (MPU4) (set 12) + + + m4select + Select (Union) (MPU4) + + + m4sgrab + Smash 'n' Grab (Barcrest) (MPU4) (SAG 1.0, set 1) + + + m4sgraba + Smash 'n' Grab (Barcrest) (MPU4) (SAG 1.0, set 2) + + + m4sgrabb + Smash 'n' Grab (Barcrest) (MPU4) (SAG 3.4) + + + m4shkwav + Shockwave (Qps) (MPU4) (set 1) + + + m4shkwav__a + Shockwave (Qps) (MPU4) (set 2) + + + m4shkwav__b + Shockwave (Qps) (MPU4) (set 3) + + + m4shkwav__c + Shockwave (Qps) (MPU4) (set 4) + + + m4shkwav__d + Shockwave (Qps) (MPU4) (set 5) + + + m4shkwav__e + Shockwave (Qps) (MPU4) (set 6) + + + m4shkwav__f + Shockwave (Qps) (MPU4) (set 7) + + + m4shkwav__g + Shockwave (Qps) (MPU4) (set 8) + + + m4shocm + Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1) + + + m4shocm__a + Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1 AD) + + + m4shocm__b + Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1 B) + + + m4shocm__c + Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1 BD) + + + m4shocm__d + Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1 D) + + + m4shocm__e + Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1 DJ) + + + m4shocm__f + Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1 KD) + + + m4shocm__g + Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1 YD) + + + m4shocm__h + Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1 J) + + + m4shocm__i + Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1 Y) + + + m4shocm__j + Showcase Crystal Maze (Barcrest) (MPU4) (SCM 0.1 K) + + + m4shodf + Showcase Duty Free (Barcrest) (MPU4) (SDF 0.2) + + + m4shodf__a + Showcase Duty Free (Barcrest) (MPU4) (SD8 0.1 B) + + + m4shodf__b + Showcase Duty Free (Barcrest) (MPU4) (SD8 0.1 D) + + + m4shodf__c + Showcase Duty Free (Barcrest) (MPU4) (SD8 0.1 KD) + + + m4shodf__d + Showcase Duty Free (Barcrest) (MPU4) (SD8 0.1 YD) + + + m4shodf__e + Showcase Duty Free (Barcrest) (MPU4) (SD8 0.1 K) + + + m4shodf__f + Showcase Duty Free (Barcrest) (MPU4) (SD8 0.1) + + + m4shodf__g + Showcase Duty Free (Barcrest) (MPU4) (SD8 0.1 Y) + + + m4shodf__h + Showcase Duty Free (Barcrest) (MPU4) (SDF 0.2 B) + + + m4shodf__i + Showcase Duty Free (Barcrest) (MPU4) (SDF 0.2 D) + + + m4shodf__j + Showcase Duty Free (Barcrest) (MPU4) (SDF 0.2 YD) + + + m4shodf__k + Showcase Duty Free (Barcrest) (MPU4) (SDF 0.2 K) + + + m4shodf__l + Showcase Duty Free (Barcrest) (MPU4) (SDF 0.2 Y) + + + m4shoknr + Shock 'n' Roll (Qps) (MPU4) (set 1) + + + m4shoknr__a + Shock 'n' Roll (Qps) (MPU4) (set 2) + + + m4shoknr__b + Shock 'n' Roll (Qps) (MPU4) (set 3) + + + m4shoknr__c + Shock 'n' Roll (Qps) (MPU4) (set 4) + + + m4showtm + Show Timer (Barcrest) (Dutch) (MPU4) (DSH 1.3) + + + m4shv + Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, set 1) + + + m4shv__0 + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 1) + + + m4shv__1 + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 2) + + + m4shv__10 + Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 1) + + + m4shv__11 + Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 2) + + + m4shv__12 + Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, hack, set 3) + + + m4shv__2 + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 3) + + + m4shv__3 + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 4) + + + m4shv__4 + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 5) + + + m4shv__5 + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, hack, set 1) + + + m4shv__6 + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 6) + + + m4shv__7 + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 7) + + + m4shv__8 + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0 C, hack, set 8) + + + m4shv__9 + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, hack, set 2) + + + m4shv__a + Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 C) + + + m4shv__b + Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 D) + + + m4shv__c + Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 K) + + + m4shv__d + Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3 Y) + + + m4shv__e + Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.3, set 2) + + + m4shv__f + Super Hyper Viper (Barcrest) (MPU4) (H6Y 0.2 Y) + + + m4shv__g + Super Hyper Viper (Barcrest) (MPU4) (HVC 1.0 C) + + + m4shv__h + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 1) + + + m4shv__i + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 2) + + + m4shv__j + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 3) + + + m4shv__k + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 4) + + + m4shv__l + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 5) + + + m4shv__m + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 6) + + + m4shv__n + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 7) + + + m4shv__o + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 8) + + + m4shv__p + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, set 9) + + + m4shv__q + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, C) + + + m4shv__r + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, C, bad?) + + + m4shv__s + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 1) + + + m4shv__t + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 2) + + + m4shv__u + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 3) + + + m4shv__v + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 4) + + + m4shv__w + Super Hyper Viper (Barcrest) (MPU4) (HVP 3.0, 1994, set 5) + + + m4shv__x + Super Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 1) + + + m4shv__y + Super Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 2) + + + m4shv__z + Super Hyper Viper (Barcrest) (MPU4) (HVP 4.0, set 3) + + + m4silnud + Silver Nudger (Mdm?) (MPU4) + + + m4silshd + Silver Shadow (Barcrest) (MPU4) + + + m4silshda + Silver Shadow (Barcrest) (MPU4) (SH 2.0, set 1) + + + m4silshdb + Silver Shadow (Barcrest) (MPU4) (SH 2.0, set 2) + + + m4sinbd + Sinbad (BWB) (MPU4) (set 1) + + + m4sinbd__a + Sinbad (BWB) (MPU4) (set 2) + + + m4sinbd__b + Sinbad (BWB) (MPU4) (set 3) + + + m4sinbd__c + Sinbad (BWB) (MPU4) (set 4) + + + m4sinbd__d + Sinbad (BWB) (MPU4) (set 5) + + + m4sinbd__e + Sinbad (BWB) (MPU4) (set 6) + + + m4sinbd__f + Sinbad (BWB) (MPU4) (set 7) + + + m4sinbd__g + Sinbad (BWB) (MPU4) (set 8) + + + m4sinbd__h + Sinbad (BWB) (MPU4) (set 9) + + + m4sinbd__i + Sinbad (BWB) (MPU4) (set 10) + + + m4sinbd__j + Sinbad (BWB) (MPU4) (set 11) + + + m4sinbd__k + Sinbad (BWB) (MPU4) (set 12) + + + m4sinbd__l + Sinbad (BWB) (MPU4) (set 13) + + + m4sinbd__m + Sinbad (BWB) (MPU4) (set 14) + + + m4sinbd__n + Sinbad (BWB) (MPU4) (set 15) + + + m4sinbd__o + Sinbad (BWB) (MPU4) (set 16) + + + m4sinbd__p + Sinbad (BWB) (MPU4) (set 17) + + + m4sinbd__q + Sinbad (BWB) (MPU4) (set 18) + + + m4sinbd__r + Sinbad (BWB) (MPU4) (set 19) + + + m4sinbd__s + Sinbad (BWB) (MPU4) (set 20) + + + m4sinbd__t + Sinbad (BWB) (MPU4) (set 21) + + + m4sinbd__u + Sinbad (BWB) (MPU4) (set 22) + + + m4sinbd__v + Sinbad (BWB) (MPU4) (set 23) + + + m4sinbd__w + Sinbad (BWB) (MPU4) (set 24) + + + m4sinbd__x + Sinbad (BWB) (MPU4) (set 25) + + + m4sinbdn + Sinbad (Nova) (MPU4) (set 1) + + + m4sinbdn__a + Sinbad (Nova) (MPU4) (set 2) + + + m4sinbdn__b + Sinbad (Nova) (MPU4) (set 3) + + + m4sinbdn__c + Sinbad (Nova) (MPU4) (set 4) + + + m4sinbdn__d + Sinbad (Nova) (MPU4) (set 5) + + + m4sinbdn__e + Sinbad (Nova) (MPU4) (set 6) + + + m4sinbdn__f + Sinbad (Nova) (MPU4) (set 7) + + + m4sky + Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake / £8 token/£10/£15 jackpot) + + + m4sky__a + Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 1) + + + m4sky__b + Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 2) + + + m4sky__c + Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 3) + + + m4sky__d + Sky Sports Super Soccer (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 4) + + + m4smshgb + Smash 'n' Grab (Mdm) (MPU4, set 1) + + + m4smshgba + Smash 'n' Grab (Mdm) (MPU4, set 2) + + + m4smshgbb + Smash 'n' Grab (Mdm) (MPU4, set 3) + + + m4smshgbc + Smash 'n' Grab (Mdm) (MPU4, set 4) + + + m4snklad + Snakes & Ladders (Mdm) (MPU4) + + + m4snookr + Snooker (Eurocoin) (MPU4) + + + m4snowbl + Snowball Bingo (Mdm) (MPU4) + + + m4solsil + Solid Silver Club (Barcrest) (MPU4) (SOS 2.2) + + + m4solsila + Solid Silver Club (Barcrest) (MPU4) (SOS 2.1) + + + m4souls + Soul Sister (BWB) (MPU4) (set 1) + + + m4souls__a + Soul Sister (BWB) (MPU4) (set 2) + + + m4souls__b + Soul Sister (BWB) (MPU4) (set 3) + + + m4souls__c + Soul Sister (BWB) (MPU4) (set 4) + + + m4souls__d + Soul Sister (BWB) (MPU4) (set 5) + + + m4souls__e + Soul Sister (BWB) (MPU4) (set 6) + + + m4souls__f + Soul Sister (BWB) (MPU4) (set 7) + + + m4specu + Speculator Club (BWB) (MPU4) + + + m4spinbt + Spin The Bottle (BWB) (MPU4) (set 1) + + + m4spinbt__a + Spin The Bottle (BWB) (MPU4) (set 2) + + + m4spinbt__b + Spin The Bottle (BWB) (MPU4) (set 3) + + + m4spinbt__c + Spin The Bottle (BWB) (MPU4) (set 4) + + + m4spinbt__d + Spin The Bottle (BWB) (MPU4) (set 5) + + + m4spinbt__e + Spin The Bottle (BWB) (MPU4) (set 6) + + + m4spinbt__f + Spin The Bottle (BWB) (MPU4) (set 7) + + + m4spinbt__g + Spin The Bottle (BWB) (MPU4) (set 8) + + + m4spnwin + Spin A Win (Cotswold Microsystems) (MPU4) (set 1) + + + m4spnwina + Spin A Win (Cotswold Microsystems) (MPU4) (set 2) + + + m4spnwnc + Spin-A-Win (Concept Games Ltd) (MPU4) (set 1) + + + m4spnwnc__a + Spin-A-Win (Concept Games Ltd) (MPU4) (set 2) + + + m4spnwnc__b + Spin-A-Win (Concept Games Ltd) (MPU4) (set 3) + + + m4spotln + Spotlight (Nova) (German) (MPU4) (GSP 0.1) + + + m4spton + Spot On (Pcp) (MPU4) + + + m4squid + Squids In (Barcrest) (MPU4) (SQ_ 2.0 C) + + + m4squid__a + Squids In (Barcrest) (MPU4) (SQ_ 2.0 CD) + + + m4squid__b + Squids In (Barcrest) (MPU4) (SQ_ 2.0 CK) + + + m4squid__c + Squids In (Barcrest) (MPU4) (SQ_ 2.0 BC) + + + m4ssclas + Super Streak Classic (Barcrest) (MPU4) (CSS 6.0) + + + m4ssclas__a + Super Streak Classic (Barcrest) (MPU4) (CSS 2.0 D) + + + m4ssclas__b + Super Streak Classic (Barcrest) (MPU4) (CSS 6.0 D) + + + m4ssclas__c + Super Streak Classic (Barcrest) (MPU4) (CSS 6.0 K) + + + m4ssclas__d + Super Streak Classic (Barcrest) (MPU4) (CSS 5.0 B) + + + m4ssclas__e + Super Streak Classic (Barcrest) (MPU4) (CSS 6.0 B) + + + m4sss + Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 1) + + + m4sss__b + Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 2) + + + m4sss__c + Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 3) + + + m4sss__d + Spend Spend Spend (BWB) (MPU4) (SP5 1.0, set 4) + + + m4sss__e + Spend Spend Spend (BWB) (MPU4) (SP101.0, set 1) + + + m4sss__f + Spend Spend Spend (BWB) (MPU4) (SP101.0, set 2) + + + m4sss__g + Spend Spend Spend (BWB) (MPU4) (SP101.0, set 3) + + + m4sss__h + Spend Spend Spend (BWB) (MPU4) (SP101.0, set 4) + + + m4sss__i + Spend Spend Spend (BWB) (MPU4) (SX5 2.0, set 1) + + + m4sss__j + Spend Spend Spend (BWB) (MPU4) (SX102.0, set 1) + + + m4sss__k + Spend Spend Spend (BWB) (MPU4) (SX5 2.0, set 2) + + + m4sss__l + Spend Spend Spend (BWB) (MPU4) (SX102.0, set 2) + + + m4sstrek + Super Streak (bootleg) (MPU4) (SS2 1.0) + + + m4stakeu + Stake Up Club (Barcrest) (MPU4) (SU 4.4) + + + m4stakeua + Stake Up Club (Barcrest) (MPU4) (SU 4.8) + + + m4stakex + Stake X (Leisurama) (MPU4, set 1) + + + m4stakexa + Stake X (Leisurama) (MPU4, set 2) + + + m4stand2 + Stand To Deliver (DJE) (MPU4) + + + m4starbr + Stars And Bars (Barcrest) (Dutch) (MPU4) (DSB 2.8) + + + m4stards + Stardust (Barcrest) (Dutch) (MPU4) (DSD 1.3) + + + m4starst + Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 1) + + + m4starst__a + Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 2) + + + m4starst__b + Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 3) + + + m4starst__c + Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 4) + + + m4starst__d + Stars & Stripes (BWB) (MPU4) (20p stake / £8 token jackpot) (set 5) + + + m4starst__e + Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 1) + + + m4starst__f + Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 2) + + + m4starst__g + Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 3) + + + m4starst__h + Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 4) + + + m4starst__i + Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 5) + + + m4starst__j + Stars & Stripes (BWB) (MPU4) (20/25/30p stake £10/£15 jackpot) (set 6) + + + m4stc + Super Streak (Barcrest) (MPU4) (STC 0.1) + + + m4steptm + Step Timer (Barcrest) (Dutch) (MPU4) (DST 1.1) + + + m4stopcl + Stop the Clock (Barcrest) (MPU4) (SC 2.5) + + + m4sunclb + Sun Club (BWB) (MPU4) (SUC 0.2, set 1) + + + m4sunclba + Sun Club (BWB) (MPU4) (SUC 0.2, set 2) + + + m4sunday + Sunday Sport (Pcp) (MPU4) + + + m4sunscl + Sunset Club (BWB) (MPU4) (SSC 3.0, set 1) + + + m4sunscla + Sunset Club (BWB) (MPU4) (SSC 3.0, set 2) + + + m4sunsclb + Sunset Club (BWB) (MPU4) (SSC 3.0, set 3) + + + m4sunset + Sunset Boulevard (Barcrest) (MPU4) (BSB 0.4) + + + m4sunseta + Sunset Boulevard (Barcrest) (MPU4) (B25 1.2, set 1) + + + m4sunsetb + Sunset Boulevard (Barcrest) (MPU4) (B25 1.2, set 2) + + + m4sunsetc + Sunset Boulevard (Barcrest) (bootleg) (MPU4) (OSB 0.2) + + + m4sunsetd + Sunset Boulevard (Barcrest) (MPU4) (SBU 2.0) + + + m4sunsete + Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.1) + + + m4sunsetf + Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 1) + + + m4sunsetg + Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 2) + + + m4sunseth + Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 3, bad) + + + m4sunseti + Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 4) + + + m4sunsetj + Sunset Boulevard (Barcrest) (MPU4) (BS__ 1.0, set 5) + + + m4sunsetk + Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.1) + + + m4sunsetl + Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 1) + + + m4sunsetm + Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 2) + + + m4sunsetn + Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 3) + + + m4sunseto + Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 4) + + + m4sunsetp + Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 5) + + + m4sunsetq + Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 6) + + + m4sunsetr + Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 7) + + + m4sunsets + Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 8) + + + m4sunsett + Sunset Boulevard (Barcrest) (MPU4) (SB__ 1.0, set 9) + + + m4supbf + Super Bucks Fizz Club (Barcrest) (MPU4) (SBF 2.0, set 1) + + + m4supbfa + Super Bucks Fizz Club (Barcrest) (MPU4) (SBF 2.0, set 2) + + + m4supbjc + Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 1) + + + m4supbjca + Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 2) + + + m4supbjcb + Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 3) + + + m4supbjcc + Super Blackjack Club (Barcrest) (MPU4) (SBJ 3.1, set 4) + + + m4supbjcd + Super Blackjack Club (Barcrest) (MPU4) (SBJ 2.0) + + + m4supfru + Supafruits (Union) (MPU4, set 1) + + + m4supfrua + Supafruits (Union) (MPU4, set 2) + + + m4supjst + Super Jester (Pcp) (MPU4) (set 1) + + + m4supjsta + Super Jester (Pcp) (MPU4) (set 2) + + + m4supjstb + Super Jester (Pcp) (MPU4) (set 3) + + + m4supjstc + Super Jester (Pcp) (MPU4) (set 4) + + + m4supjstd + Super Jester (Pcp) (MPU4) (set 5) + + + m4supjste + Super Jester (Pcp) (MPU4) (set 6) + + + m4supleg + Super League (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 1) + + + m4supleg__a + Super League (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 2) + + + m4supleg__b + Super League (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 1) + + + m4supleg__c + Super League (BWB) (MPU4) (5/10p stake / £5 jackpot) (set 2) + + + m4supleg__d + Super League (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) + + + m4suplegw + Super League (BWB) (MPU4) (5/10/20/25/30p stake / £5 jackpot, 20/25/30p stake / £15 jackpot) (set 3) + + + m4supscr + Super Soccer (ver. 6) (BWB) (MPU4) (set 1) + + + m4supscr__a + Super Soccer (ver. 6) (BWB) (MPU4) (set 2) + + + m4supscr__b + Super Soccer (ver. 6) (BWB) (MPU4) (set 3) + + + m4supscr__c + Super Soccer (ver. 6) (BWB) (MPU4) (set 4) + + + m4supscr__d + Super Soccer (ver. 6) (BWB) (MPU4) (set 5) + + + m4supscr__e + Super Soccer (ver. 6) (BWB) (MPU4) (set 6) + + + m4supscr__f + Super Soccer (ver. 6) (BWB) (MPU4) (set 7) + + + m4supscr__g + Super Soccer (ver. 6) (BWB) (MPU4) (set 8) + + + m4supscr__h + Super Soccer (ver. 6) (BWB) (MPU4) (set 9) + + + m4supscr__i + Super Soccer (ver. 6) (BWB) (MPU4) (set 10) + + + m4supscr__j + Super Soccer (ver. 6) (BWB) (MPU4) (set 11) + + + m4supscr__k + Super Soccer (ver. 6) (BWB) (MPU4) (set 12) + + + m4supscr__l + Super Soccer (ver. 6) (BWB) (MPU4) (set 13) + + + m4supscr__m + Super Soccer (ver. 6) (BWB) (MPU4) (set 14) + + + m4supscr__n + Super Soccer (ver. 3) (BWB) (MPU4) + + + m4supsl + Supa Silva (Barcrest) (MPU4) (SS2V 1.0) + + + m4supslt + Supa Slot (Barcrest) (MPU4) (S4S 1.0) + + + m4supst + Super Streak (Barcrest) (MPU4) (CS4 0.7, set 1) + + + m4supst__0 + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 7) + + + m4supst__1 + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 8) + + + m4supst__2 + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 9) + + + m4supst__3 + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 10) + + + m4supst__4 + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 11) + + + m4supst__5 + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 12) + + + m4supst__6 + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 1) + + + m4supst__7 + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 2) + + + m4supst__8 + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 3) + + + m4supst__9 + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 4) + + + m4supst__a + Super Streak (Barcrest) (MPU4) (CS4 0.7, set 2) + + + m4supst__a0 + Super Streak (Barcrest) (MPU4) (SPS 0.8, set 1) + + + m4supst__a1 + Super Streak (Barcrest) (MPU4) (SPS 0.8, set 2) + + + m4supst__a2 + Super Streak (Barcrest) (MPU4) (SPS 0.8, set 3) + + + m4supst__a3 + Super Streak (Barcrest) (MPU4) (SPS 0.8, set 4) + + + m4supst__a4 + Super Streak (Barcrest) (MPU4) (SPS 0.8, set 5) + + + m4supst__a5 + Super Streak (Barcrest) (MPU4) (SPS 0.8, set 6) + + + m4supst__a6 + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 1) + + + m4supst__a7 + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 2) + + + m4supst__a8 + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 3) + + + m4supst__a9 + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 4) + + + m4supst__aa + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 5) + + + m4supst__ab + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 6) + + + m4supst__ac + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 7) + + + m4supst__ad + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 8) + + + m4supst__ae + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 9) + + + m4supst__af + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 10) + + + m4supst__ag + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 11) + + + m4supst__ah + Super Streak (Barcrest) (MPU4) (CS4 0.3 / CSU 0.3, set 12) + + + m4supst__ai + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 1) + + + m4supst__aj + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 2) + + + m4supst__ak + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 3) + + + m4supst__al + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 4) + + + m4supst__am + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 5) + + + m4supst__an + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 6) + + + m4supst__ao + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 7) + + + m4supst__ap + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 8) + + + m4supst__aq + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 9) + + + m4supst__ar + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 10) + + + m4supst__as + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 11) + + + m4supst__at + Super Streak (Barcrest) (MPU4) (CS4 0.2 / EEH 0.2, set 12) + + + m4supst__au + Super Streak (Barcrest) (MPU4) (SP8 0.1, set 1) + + + m4supst__av + Super Streak (Barcrest) (MPU4) (SP8 0.1, set 2) + + + m4supst__aw + Super Streak (Barcrest) (MPU4) (SP8 0.1, set 3) + + + m4supst__ax + Super Streak (Barcrest) (MPU4) (SP8 0.1, set 4) + + + m4supst__ay + Super Streak (Barcrest) (MPU4) (SP8 0.1, set 5) + + + m4supst__az + Super Streak (Barcrest) (MPU4) (SP8 0.1, set 6) + + + m4supst__b + Super Streak (Barcrest) (MPU4) (CS4 0.7, set 3) + + + m4supst__b0 + Super Streak (Barcrest) (MPU4) (STU 0.1, set 8) + + + m4supst__b1 + Super Streak (Barcrest) (MPU4) (STU 0.1, set 9) + + + m4supst__b2 + Super Streak (Barcrest) (MPU4) (STU 0.1, set 10) + + + m4supst__b3 + Super Streak (Barcrest) (MPU4) (STU 0.1, set 11) + + + m4supst__b4 + Super Streak (Barcrest) (MPU4) (STT 0.2K) + + + m4supst__b5 + Super Streak (Barcrest) (MPU4) (STT 0.3, hack) + + + m4supst__b6 + Super Streak (Barcrest) (MPU4) (hack) + + + m4supst__b7 + Super Streak (Barcrest) (MPU4) (SS2 1.0, hack?) + + + m4supst__ba + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 5) + + + m4supst__bb + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 6) + + + m4supst__bc + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 7) + + + m4supst__bd + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 8) + + + m4supst__be + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 9) + + + m4supst__bf + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 10) + + + m4supst__bg + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 11) + + + m4supst__bh + Super Streak (Barcrest) (MPU4) (CS4 0.2 / STC 0.2, set 12) + + + m4supst__bi + Super Streak (Barcrest) (MPU4) (STT 0.3, set 1) + + + m4supst__bj + Super Streak (Barcrest) (MPU4) (STT 0.3, set 2) + + + m4supst__bk + Super Streak (Barcrest) (MPU4) (STT 0.3, set 3) + + + m4supst__bl + Super Streak (Barcrest) (MPU4) (STT 0.3, set 4) + + + m4supst__bm + Super Streak (Barcrest) (MPU4) (STT 0.3, set 5) + + + m4supst__bn + Super Streak (Barcrest) (MPU4) (STT 0.3, set 6) + + + m4supst__bo + Super Streak (Barcrest) (MPU4) (STT 0.3, set 7) + + + m4supst__bp + Super Streak (Barcrest) (MPU4) (STT 0.3, set 8) + + + m4supst__bq + Super Streak (Barcrest) (MPU4) (STT 0.3, set 9) + + + m4supst__br + Super Streak (Barcrest) (MPU4) (STT 0.3, set 10) + + + m4supst__bs + Super Streak (Barcrest) (MPU4) (STT 0.3, set 11) + + + m4supst__bt + Super Streak (Barcrest) (MPU4) (STU 0.1, set 1) + + + m4supst__bu + Super Streak (Barcrest) (MPU4) (STU 0.1, set 2) + + + m4supst__bv + Super Streak (Barcrest) (MPU4) (STU 0.1, set 3) + + + m4supst__bw + Super Streak (Barcrest) (MPU4) (STU 0.1, set 4) + + + m4supst__bx + Super Streak (Barcrest) (MPU4) (STU 0.1, set 5) + + + m4supst__by + Super Streak (Barcrest) (MPU4) (STU 0.1, set 6) + + + m4supst__bz + Super Streak (Barcrest) (MPU4) (STU 0.1, set 7) + + + m4supst__c + Super Streak (Barcrest) (MPU4) (CS4 0.7, set 4) + + + m4supst__d + Super Streak (Barcrest) (MPU4) (CS4 0.7, set 5) + + + m4supst__e + Super Streak (Barcrest) (MPU4) (CS4 0.7, set 6) + + + m4supst__f + Super Streak (Barcrest) (MPU4) (CS4 0.7, set 7) + + + m4supst__g + Super Streak (Barcrest) (MPU4) (CS4 0.7, set 8) + + + m4supst__h + Super Streak (Barcrest) (MPU4) (CS4 0.7, set 9) + + + m4supst__i + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 1) + + + m4supst__j + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 2) + + + m4supst__k + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 3) + + + m4supst__l + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 4) + + + m4supst__m + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 5) + + + m4supst__n + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 6) + + + m4supst__o + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 7) + + + m4supst__p + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 8) + + + m4supst__q + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 9) + + + m4supst__r + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 10) + + + m4supst__s + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 11) + + + m4supst__t + Super Streak (Barcrest) (MPU4) (CS4 0.2 / CSP 0.2, set 12) + + + m4supst__u + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 1) + + + m4supst__v + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 2) + + + m4supst__w + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 3) + + + m4supst__x + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 4) + + + m4supst__y + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 5) + + + m4supst__z + Super Streak (Barcrest) (MPU4) (CS4 0.4 / CST 0.4, set 6) + + + m4suptrn + Supatron (Barcrest) (MPU4) (DSU 2.1) + + + m4suptub + Super Tubes (Barcrest) (MPU4) (S4T 1.0, set 1) + + + m4suptuba + Super Tubes (Barcrest) (MPU4) (S4T 1.0, set 2) + + + m4suptwo + Super Two (Barcrest) (MPU4) (SUT 1.2) + + + m4sure + Sure Thing (BWB) (MPU4) (set 1) + + + m4sure__a + Sure Thing (BWB) (MPU4) (set 2) + + + m4sure__b + Sure Thing (BWB) (MPU4) (set 3) + + + m4sure__c + Sure Thing (BWB) (MPU4) (set 4) + + + m4surf + Super Surfin' (Gemini) (MPU4) (set 1) + + + m4surfa + Super Surfin' (Gemini) (MPU4) (set 2) + + + m4surfb + Super Surfin' (Gemini) (MPU4) (set 3) + + + m4swpnot + Swap-A-Note (Barcrest) (MPU4) (SN 3.3) + + + m4swpnota + Swap-A-Note (Barcrest) (MPU4) (SN 3.2) + + + m4swpnotb + Swap-A-Note (Barcrest) (MPU4) (SN 3.5) + + + m4t266 + Take Two (Barcrest) (MPU4) (TTO 1.1) (set 2) + + + m4taj + Taj Mahal (Barcrest) (Dutch) (MPU4) (DTM 1.0) + + + m4take2 + Take Two (Barcrest) (MPU4) (TTO 1.2) + + + m4take2a + Take Two (Barcrest) (MPU4) (TTO 1.1) (set 1) + + + m4take5 + Top Tenner ('Take 5' bootleg) (MPU4) (TES 2.0) + + + m4takepk + Take Your Pick (Barcrest) (MPU4) (TAP 0.6) + + + m4takepk__0 + Take Your Pick (Barcrest) (MPU4) (TA8 2.2, hack, set 2) + + + m4takepk__1 + Take Your Pick (Barcrest) (MPU4) (TAC 2.3 K) + + + m4takepk__a + Take Your Pick (Barcrest) (MPU4) (TAP 0.6 AD) + + + m4takepk__b + Take Your Pick (Barcrest) (MPU4) (TAP 0.6 B) + + + m4takepk__c + Take Your Pick (Barcrest) (MPU4) (TAP 0.6 BD) + + + m4takepk__d + Take Your Pick (Barcrest) (MPU4) (TAP 0.6 BC) + + + m4takepk__e + Take Your Pick (Barcrest) (MPU4) (TAP 0.6 D) + + + m4takepk__f + Take Your Pick (Barcrest) (MPU4) (TAP 0.6 KD) + + + m4takepk__g + Take Your Pick (Barcrest) (MPU4) (TAP 0.6 YD) + + + m4takepk__h + Take Your Pick (Barcrest) (MPU4) (TAP 0.6 K) + + + m4takepk__i + Take Your Pick (Barcrest) (MPU4) (TAP 0.6 R) + + + m4takepk__j + Take Your Pick (Barcrest) (MPU4) (TAP 0.6 Y) + + + m4takepk__k + Take Your Pick (Barcrest) (MPU4) (TPH 0.7 AD) + + + m4takepk__l + Take Your Pick (Barcrest) (MPU4) (TPH 0.7 B) + + + m4takepk__m + Take Your Pick (Barcrest) (MPU4) (TPH 0.7 BD) + + + m4takepk__n + Take Your Pick (Barcrest) (MPU4) (TPH 0.7 D) + + + m4takepk__o + Take Your Pick (Barcrest) (MPU4) (TPH 0.7 KD) + + + m4takepk__p + Take Your Pick (Barcrest) (MPU4) (TPH 0.7 YD) + + + m4takepk__q + Take Your Pick (Barcrest) (MPU4) (TPH 0.7 K) + + + m4takepk__r + Take Your Pick (Barcrest) (MPU4) (TPH 0.7) + + + m4takepk__s + Take Your Pick (Barcrest) (MPU4) (TPH 0.7 Y) + + + m4takepk__t + Take Your Pick (Barcrest) (MPU4) (TPH 0.7, hack) + + + m4takepk__u + Take Your Pick (Barcrest) (MPU4) (MAM 0.3 C, hack) + + + m4takepk__v + Take Your Pick (Barcrest) (MPU4) (TAC 2.3, hack, set 1) + + + m4takepk__w + Take Your Pick (Barcrest) (MPU4) (TAC 2.3, hack, set 2) + + + m4takepk__x + Take Your Pick (Barcrest) (MPU4) (TA4 2.1, hack, set 1) + + + m4takepk__y + Take Your Pick (Barcrest) (MPU4) (TA4 2.1, hack, set 2) + + + m4takepk__z + Take Your Pick (Barcrest) (MPU4) (TA8 2.2, hack, set 1) + + + m4tbplay + Turbo Play (Barcrest) (Dutch) (MPU4) (DTP 1.3) + + + m4tbplaya + Turbo Play (Barcrest) (MPU4) (CTP 0.4) + + + m4tbplayb + Turbo Play (Barcrest) (MPU4) (ZTP 0.7) + + + m4tbplayc + Turbo Play (Barcrest) (bootleg) (MPU4) (CTP 0.4) + + + m4tbplayd + Turbo Play (Barcrest) (bootleg) (MPU4) (ZTP 0.7) + + + m4tbreel + Turbo Reel (Barcrest) (Dutch) (MPU4) (DTR 3.1) + + + m4tbrldx + Turbo Reel Deluxe (Barcrest) (Dutch) (MPU4) (DTU 3.0) + + + m4techno + Techno Reel (Barcrest) (Dutch) (MPU4) (DTE 1.3, set 1) + + + m4technoa + Techno Reel (Barcrest) (Dutch) (MPU4) (DTE 1.3, set 2, hack?) + + + m4tenten + 10 X 10 (Barcrest) (MPU4) (T20 0.2) + + + m4tenten__0 + 10 X 10 (Barcrest) (MPU4) (T25 0.4 RD) + + + m4tenten__1 + 10 X 10 (Barcrest) (MPU4) (T25 0.4 DY) + + + m4tenten__2 + 10 X 10 (Barcrest) (MPU4) (T25 0.4 K) + + + m4tenten__3 + 10 X 10 (Barcrest) (MPU4) (T25 0.4 R) + + + m4tenten__4 + 10 X 10 (Barcrest) (MPU4) (T25 0.4) + + + m4tenten__5 + 10 X 10 (Barcrest) (MPU4) (T25 0.4 Y) + + + m4tenten__6 + 10 X 10 (Barcrest) (MPU4) (T2T 0.1 AD) + + + m4tenten__7 + 10 X 10 (Barcrest) (MPU4) (T2T 0.1 B) + + + m4tenten__8 + 10 X 10 (Barcrest) (MPU4) (T2T 0.1 BD) + + + m4tenten__9 + 10 X 10 (Barcrest) (MPU4) (T2T 0.1 D) + + + m4tenten__a + 10 X 10 (Barcrest) (MPU4) (N25 0.3 AD) + + + m4tenten__a0 + 10 X 10 (Barcrest) (MPU4) (TST 0.1 R) + + + m4tenten__a1 + 10 X 10 (Barcrest) (MPU4) (TST 0.1) + + + m4tenten__a2 + 10 X 10 (Barcrest) (MPU4) (TST 0.1 Y) + + + m4tenten__aa + 10 X 10 (Barcrest) (MPU4) (T2T 0.1 KD) + + + m4tenten__ab + 10 X 10 (Barcrest) (MPU4) (T2T 0.1 RD) + + + m4tenten__ac + 10 X 10 (Barcrest) (MPU4) (T2T 0.1 DY) + + + m4tenten__ad + 10 X 10 (Barcrest) (MPU4) (T2T 0.1 K) + + + m4tenten__ae + 10 X 10 (Barcrest) (MPU4) (T2T 0.1 R) + + + m4tenten__af + 10 X 10 (Barcrest) (MPU4) (T2T 0.1) + + + m4tenten__ag + 10 X 10 (Barcrest) (MPU4) (T2T 0.1 Y) + + + m4tenten__ah + 10 X 10 (Barcrest) (MPU4) (T3T 0.1 AD) + + + m4tenten__ai + 10 X 10 (Barcrest) (MPU4) (T3T 0.1 B) + + + m4tenten__aj + 10 X 10 (Barcrest) (MPU4) (T3T 0.1 BD) + + + m4tenten__ak + 10 X 10 (Barcrest) (MPU4) (T3T 0.1 D) + + + m4tenten__al + 10 X 10 (Barcrest) (MPU4) (T3T 0.1 KD) + + + m4tenten__am + 10 X 10 (Barcrest) (MPU4) (T3T 0.1 RD) + + + m4tenten__an + 10 X 10 (Barcrest) (MPU4) (T3T 0.1 DY) + + + m4tenten__ao + 10 X 10 (Barcrest) (MPU4) (T3T 0.1 K) + + + m4tenten__ap + 10 X 10 (Barcrest) (MPU4) (T3T 0.1 R) + + + m4tenten__aq + 10 X 10 (Barcrest) (MPU4) (T3T 0.1) + + + m4tenten__ar + 10 X 10 (Barcrest) (MPU4) (T3T 0.1 Y) + + + m4tenten__as + 10 X 10 (Barcrest) (MPU4) (TST 0.1 AD) + + + m4tenten__at + 10 X 10 (Barcrest) (MPU4) (TST 0.1 B) + + + m4tenten__au + 10 X 10 (Barcrest) (MPU4) (TST 0.1 BD) + + + m4tenten__av + 10 X 10 (Barcrest) (MPU4) (TST 0.1 D) + + + m4tenten__aw + 10 X 10 (Barcrest) (MPU4) (TST 0.1 KD) + + + m4tenten__ax + 10 X 10 (Barcrest) (MPU4) (TST 0.1 RD) + + + m4tenten__ay + 10 X 10 (Barcrest) (MPU4) (TST 0.1 DY) + + + m4tenten__az + 10 X 10 (Barcrest) (MPU4) (TST 0.1 K) + + + m4tenten__b + 10 X 10 (Barcrest) (MPU4) (N25 0.3 B) + + + m4tenten__c + 10 X 10 (Barcrest) (MPU4) (N25 0.3 BD) + + + m4tenten__d + 10 X 10 (Barcrest) (MPU4) (N25 0.3 D) + + + m4tenten__e + 10 X 10 (Barcrest) (MPU4) (N25 0.3 KD) + + + m4tenten__f + 10 X 10 (Barcrest) (MPU4) (N25 0.3 RD) + + + m4tenten__g + 10 X 10 (Barcrest) (MPU4) (N25 0.3 DY) + + + m4tenten__h + 10 X 10 (Barcrest) (MPU4) (N25 0.3 K) + + + m4tenten__i + 10 X 10 (Barcrest) (MPU4) (N25 0.3 R) + + + m4tenten__j + 10 X 10 (Barcrest) (MPU4) (N25 0.3) + + + m4tenten__k + 10 X 10 (Barcrest) (MPU4) (N25 0.3 Y) + + + m4tenten__l + 10 X 10 (Barcrest) (MPU4) (T20 0.2 AD) + + + m4tenten__m + 10 X 10 (Barcrest) (MPU4) (T20 0.2 B) + + + m4tenten__n + 10 X 10 (Barcrest) (MPU4) (T20 0.2 BD) + + + m4tenten__o + 10 X 10 (Barcrest) (MPU4) (T20 0.2 D) + + + m4tenten__p + 10 X 10 (Barcrest) (MPU4) (T20 0.2 KD) + + + m4tenten__q + 10 X 10 (Barcrest) (MPU4) (T20 0.2 RD) + + + m4tenten__r + 10 X 10 (Barcrest) (MPU4) (T20 0.2 DY) + + + m4tenten__s + 10 X 10 (Barcrest) (MPU4) (T20 0.2 K) + + + m4tenten__t + 10 X 10 (Barcrest) (MPU4) (T20 0.2 R) + + + m4tenten__u + 10 X 10 (Barcrest) (MPU4) (T20 0.2 Y) + + + m4tenten__v + 10 X 10 (Barcrest) (MPU4) (T25 0.4 AD) + + + m4tenten__w + 10 X 10 (Barcrest) (MPU4) (T25 0.4 B) + + + m4tenten__x + 10 X 10 (Barcrest) (MPU4) (T25 0.4 BD) + + + m4tenten__y + 10 X 10 (Barcrest) (MPU4) (T25 0.4 D) + + + m4tenten__z + 10 X 10 (Barcrest) (MPU4) (T25 0.4 KD) + + + m4thehit + The Hit (Barcrest) (MPU4) (DTH 1.7) + + + m4themob + The Mob (Mdm) (MPU4, set 1) + + + m4themoba + The Mob (Mdm) (MPU4, set 2) + + + m4themobb + The Mob (Mdm) (MPU4, set 3) + + + m4thestr + The Streak (Barcrest) (MPU4) (TS 3.0 K) + + + m4thestr__a + The Streak (Barcrest) (MPU4) (TS 3.0 YD) + + + m4thestr__b + The Streak (Barcrest) (MPU4) (TST 3.0 YD / TS 3.0, set 1) + + + m4thestr__c + The Streak (Barcrest) (MPU4) (TS 3.0 D) + + + m4thestr__d + The Streak (Barcrest) (MPU4) (TST 3.0 D / TS 3.0, set 1) + + + m4thestr__e + The Streak (Barcrest) (MPU4) (TST 2.0 BAD / TS 2.0) + + + m4thestr__f + The Streak (Barcrest) (MPU4) (TST 3.0 K / TS 3.0, set 1) + + + m4thestr__g + The Streak (Barcrest) (MPU4) (TS 3.0 B) + + + m4thestr__h + The Streak (Barcrest) (MPU4) (TST 3.0 B / TS 3.0, set 1) + + + m4thestr__i + The Streak (Barcrest) (MPU4) (TS 3.0 AD) + + + m4thestr__j + The Streak (Barcrest) (MPU4) (TST 3.0 AD / TS 3.0, set 1) + + + m4thestr__k + The Streak (Barcrest) (MPU4) (TS 3.0 BR) + + + m4thestr__l + The Streak (Barcrest) (MPU4) (TST 3.0 BR / TS 3.0, set 1) + + + m4thestr__m + The Streak (Barcrest) (MPU4) (TST 3.0 YD / TS 3.0, set 2) + + + m4thestr__n + The Streak (Barcrest) (MPU4) (TST 3.0 D / TS 3.0, set 2) + + + m4thestr__o + The Streak (Barcrest) (MPU4) (TST 3.0 Y / TS 3.0) + + + m4thestr__p + The Streak (Barcrest) (MPU4) (TST 3.0 K / TS 3.0, set 2) + + + m4thestr__q + The Streak (Barcrest) (MPU4) (TST 3.0 B / TS 3.0, set 2) + + + m4thestr__r + The Streak (Barcrest) (MPU4) (TST 3.0 AD / TS 3.0, set 2) + + + m4thestr__s + The Streak (Barcrest) (MPU4) (TST 3.0 BR / TS 3.0, set 2) + + + m4thestr__t + The Streak (Barcrest) (MPU4) (TS 1.4 K) + + + m4thestr__u + The Streak (Barcrest) (MPU4) (TS 1.4 B) + + + m4thestr__v + The Streak (Barcrest) (MPU4) (TS 1.4 BAD) + + + m4thestr__w + The Streak (Barcrest) (MPU4) (TS 1.3 D) + + + m4thestr__x + The Streak (Barcrest) (MPU4) (TS 1.3 K) + + + m4thestr__y + The Streak (Barcrest) (MPU4) (TS 1.3 B) + + + m4tic + Tic Tac Toe (Barcrest) (MPU4) (TT_ 2.0) + + + m4tic__a + Tic Tac Toe (Barcrest) (MPU4) (TT 1.0 K) + + + m4tic__b + Tic Tac Toe (Barcrest) (MPU4) (TT_ 2.0 B) + + + m4tic__c + Tic Tac Toe (Barcrest) (MPU4) (TT 1.0 B) + + + m4tic__d + Tic Tac Toe (Barcrest) (MPU4) (TT_ 2.0 BD) + + + m4tic__e + Tic Tac Toe (Barcrest) (MPU4) (TT 1.0 BD) + + + m4tic__f + Tic Tac Toe (Barcrest) (MPU4) (TT_ 2.0 BA) + + + m4tic__g + Tic Tac Toe (Barcrest) (MPU4) (TT_ 2.0 BR) + + + m4tic__h + Tic Tac Toe (Barcrest) (MPU4) (TT_ 2.0 K) + + + m4tic__i + Tic Tac Toe (Barcrest) (MPU4) (TT 1.0 CB) + + + m4tic__j + Tic Tac Toe (Barcrest) (MPU4) (TT_ 2.0 YD) + + + m4tic__k + Tic Tac Toe (Barcrest) (MPU4) (TT_ 2.0 Y) + + + m4tic__l + Tic Tac Toe (Barcrest) (MPU4) (TT_ 3.0 K) + + + m4tic__m + Tic Tac Toe (Barcrest) (MPU4) (TT_ 3.0 B) + + + m4tic__n + Tic Tac Toe (Barcrest) (MPU4) (TT_ 3.0 BD) + + + m4tic__o + Tic Tac Toe (Barcrest) (MPU4) (TT_ 3.0 AD) + + + m4tic__p + Tic Tac Toe (Barcrest) (MPU4) (TT_ 3.0 BR) + + + m4tic__r + Tic Tac Toe (Barcrest) (MPU4) (TT_ 3.0 YD) + + + m4tic__s + Tic Tac Toe (Barcrest) (MPU4) (TT_ 2.0 C) + + + m4ticcla + Tic Tac Toe Classic (Barcrest) (MPU4) (CT4 7.0 YD) + + + m4ticcla__0 + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.4 BR) + + + m4ticcla__a + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 4.0 YD) + + + m4ticcla__b + Tic Tac Toe Classic (Barcrest) (MPU4) (CT4 7.0 D) + + + m4ticcla__c + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 4.0 D) + + + m4ticcla__d + Tic Tac Toe Classic (Barcrest) (MPU4) (CT4 7.0 K) + + + m4ticcla__e + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 4.0 K) + + + m4ticcla__f + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 4.0 B) + + + m4ticcla__g + Tic Tac Toe Classic (Barcrest) (MPU4) (CT4 7.0 BAD) + + + m4ticcla__h + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 4.0 BAD) + + + m4ticcla__i + Tic Tac Toe Classic (Barcrest) (MPU4) (CT4 7.0 BR) + + + m4ticcla__j + Tic Tac Toe Classic (Barcrest) (MPU4) (CTT 3.0 YD / CT4 3.0) + + + m4ticcla__k + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.3 D) + + + m4ticcla__l + Tic Tac Toe Classic (Barcrest) (MPU4) (CTT 3.0 D / CT4 3.0) + + + m4ticcla__m + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.3 Y) + + + m4ticcla__n + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.3 K) + + + m4ticcla__o + Tic Tac Toe Classic (Barcrest) (MPU4) (CTT 3.0 K / CT4 3.0) + + + m4ticcla__p + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.3 B) + + + m4ticcla__q + Tic Tac Toe Classic (Barcrest) (MPU4) (CTT 3.0 B / CT4 3.0) + + + m4ticcla__r + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.3 BAD) + + + m4ticcla__s + Tic Tac Toe Classic (Barcrest) (MPU4) (CTT 3.0 BAD / CT4 3.0) + + + m4ticcla__t + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.3 BR) + + + m4ticcla__u + Tic Tac Toe Classic (Barcrest) (MPU4) (CTT 3.0 BR / CT4 3.0) + + + m4ticcla__v + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.4 D) + + + m4ticcla__w + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.4 K) + + + m4ticcla__x + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.4 B) + + + m4ticcla__y + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.4 BD) + + + m4ticcla__z + Tic Tac Toe Classic (Barcrest) (MPU4) (CT 2.4 BAD) + + + m4ticglc + Tic Tac Toe Gold (Barcrest) (MPU4) (TG 3.3 K) + + + m4ticglc__a + Tic Tac Toe Gold (Barcrest) (MPU4) (TG 4.4 D) + + + m4ticglc__b + Tic Tac Toe Gold (Barcrest) (MPU4) (TG 4.4 K) + + + m4ticglc__c + Tic Tac Toe Gold (Barcrest) (MPU4) (TG 4.4 B) + + + m4ticglc__d + Tic Tac Toe Gold (Barcrest) (MPU4) (TG 4.4 BAD) + + + m4tiktak + Tic Tak Cash (Barcrest) (MPU4) (TC 1.1) + + + m4toma + Tomahawk (Barcrest) (Dutch) (MPU4) (DTK 2.3) + + + m4toot + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3) + + + m4toot__0 + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5 C) + + + m4toot__1 + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5 D) + + + m4toot__2 + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5 KD) + + + m4toot__3 + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5 RD) + + + m4toot__4 + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5 YD) + + + m4toot__5 + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5 K) + + + m4toot__6 + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5 R) + + + m4toot__7 + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5) + + + m4toot__8 + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5 Y) + + + m4toot__9 + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6 AD) + + + m4toot__a + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 AD) + + + m4toot__aa + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6 B) + + + m4toot__ab + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6 BD) + + + m4toot__ac + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6 C) + + + m4toot__ad + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6 D) + + + m4toot__ae + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6 KD) + + + m4toot__af + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6 RD) + + + m4toot__ag + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6 YD) + + + m4toot__ah + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6 K) + + + m4toot__ai + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6 R) + + + m4toot__aj + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6) + + + m4toot__ak + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.6 Y) + + + m4toot__al + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.1) + + + m4toot__b + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 B) + + + m4toot__c + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 BD) + + + m4toot__d + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 D) + + + m4toot__e + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 KD) + + + m4toot__f + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 RD) + + + m4toot__g + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 YD) + + + m4toot__h + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 K) + + + m4toot__i + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 R) + + + m4toot__j + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 C) + + + m4toot__k + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 Y) + + + m4toot__l + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4 AD) + + + m4toot__m + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4 B) + + + m4toot__n + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4 BD) + + + m4toot__o + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4 C) + + + m4toot__p + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4 D) + + + m4toot__q + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4 KD) + + + m4toot__r + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4 RD) + + + m4toot__s + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4 YD) + + + m4toot__t + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4 K) + + + m4toot__u + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4 R) + + + m4toot__v + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4) + + + m4toot__w + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.4 Y) + + + m4toot__x + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5 AD) + + + m4toot__y + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5 B) + + + m4toot__z + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.5 BD) + + + m4toot__za + Ten Out Of Ten (Barcrest) (MPU4) (TOC 0.3 Y, hack?) + + + m4toot__zb + Ten Out Of Ten (Barcrest) (MPU4) (TOT 0.4 Y, hack?) + + + m4topact + Top Action (Barcrest) (Dutch) (MPU4) (TA 2.2, set 1) + + + m4topacta + Top Action (Barcrest) (Dutch) (MPU4) (TA 2.2, set 2) + + + m4topdk + Top Deck (Barcrest) (Dutch) (MPU4) (DT 2.6) + + + m4topdog + Top Dog (Barcrest) (MPU4) (TD4 7.1 YD / TD 7.1) + + + m4topdog__a + Top Dog (Barcrest) (MPU4) (TDT 7.1 YD / TD 7.1) + + + m4topdog__b + Top Dog (Barcrest) (MPU4) (TD4 7.1 D / TD 7.1) + + + m4topdog__c + Top Dog (Barcrest) (MPU4) (TDT 7.1 D / TD 7.1) + + + m4topdog__d + Top Dog (Barcrest) (MPU4) (TD4 7.1 Y / TD 7.1) + + + m4topdog__e + Top Dog (Barcrest) (MPU4) (TDT 7.1 Y / TD 7.1) + + + m4topdog__f + Top Dog (Barcrest) (MPU4) (TD4 7.1 K / TD 7.1) + + + m4topdog__g + Top Dog (Barcrest) (MPU4) (TDT 7.1 K / TD 7.1) + + + m4topdog__h + Top Dog (Barcrest) (MPU4) (TD4 7.1 B / TD 7.1) + + + m4topdog__i + Top Dog (Barcrest) (MPU4) (TDT 7.1 B / TD 7.1) + + + m4topdog__j + Top Dog (Barcrest) (MPU4) (TD4 7.1 BAD / TD 7.1) + + + m4topdog__k + Top Dog (Barcrest) (MPU4) (TDT 7.1 BAD / TD 7.1) + + + m4topdog__l + Top Dog (Barcrest) (MPU4) (TD4 7.1 BR / TD 7.1) + + + m4topdog__m + Top Dog (Barcrest) (MPU4) (TDT 7.1 BR / TD 7.1) + + + m4topdog__n + Top Dog (Barcrest) (MPU4) (TDT 8.3 YD / TD 8.3) + + + m4topdog__o + Top Dog (Barcrest) (MPU4) (TDT 8.3 D / TD 8.3) + + + m4topdog__p + Top Dog (Barcrest) (MPU4) (TDT 8.3 Y / TD 8.3) + + + m4topdog__q + Top Dog (Barcrest) (MPU4) (TDT 8.3 K / TD 8.3) + + + m4topdog__r + Top Dog (Barcrest) (MPU4) (TDT 8.3 B / TD 8.3) + + + m4topdog__s + Top Dog (Barcrest) (MPU4) (TDT 8.3 BAD / TD 8.3) + + + m4topdog__t + Top Dog (Barcrest) (MPU4) (TDP 2.0 BAD / TD 2.0) + + + m4topdog__u + Top Dog (Barcrest) (MPU4) (TDT 8.3 BR / TD 8.3) + + + m4topdog__v + Top Dog (Barcrest) (MPU4) (TD 1.4 K) + + + m4topdog__w + Top Dog (Barcrest) (MPU4) (TD 1.4 B) + + + m4topdog__x + Top Dog (Barcrest) (MPU4) (TD 1.4 BD) + + + m4topdog__y + Top Dog (Barcrest) (MPU4) (TD 1.4 BAD) + + + m4topdog__z + Top Dog (Barcrest) (MPU4) (TD 1.4 BR) + + + m4topgr + Top Gear (Barcrest) (MPU4) (TG4 1.1) + + + m4toplot + Top The Lot (Barcrest) (MPU4, T4L 1.0) + + + m4toprn + Top Run (Dutch) (MPU4) + + + m4topst + Top Stop (Barcrest) (MPU4) (TSP 0.5) + + + m4toptak + Top Take (Barcrest) (MPU4) (TTK 1.1) + + + m4topten + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4) + + + m4topten__0 + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 YD) + + + m4topten__1 + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 H) + + + m4topten__2 + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 K) + + + m4topten__3 + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 R) + + + m4topten__4 + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2) + + + m4topten__5 + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 Y) + + + m4topten__6 + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 AD) + + + m4topten__7 + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 B) + + + m4topten__8 + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 BD) + + + m4topten__9 + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 C) + + + m4topten__a + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0, hack?) + + + m4topten__aa + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 D) + + + m4topten__ab + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 DH) + + + m4topten__ac + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 KD) + + + m4topten__ad + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 RD) + + + m4topten__ae + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 YD) + + + m4topten__af + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 H) + + + m4topten__ag + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 K) + + + m4topten__ah + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 R) + + + m4topten__ai + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2) + + + m4topten__aj + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2 Y) + + + m4topten__ak + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 AD) + + + m4topten__al + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 B) + + + m4topten__am + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 BD) + + + m4topten__an + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 C) + + + m4topten__ao + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 D) + + + m4topten__ap + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 DH) + + + m4topten__aq + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 KD) + + + m4topten__ar + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 RD) + + + m4topten__as + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 YD) + + + m4topten__at + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 H) + + + m4topten__au + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 K) + + + m4topten__av + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 R) + + + m4topten__aw + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.4 Y) + + + m4topten__ax + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.1) + + + m4topten__b + Top Tenner (Barcrest) (type 1) (MPU4) (TTS 0.2, hack?) + + + m4topten__e + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 AD) + + + m4topten__f + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 B) + + + m4topten__g + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 BD) + + + m4topten__h + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 C) + + + m4topten__i + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 D) + + + m4topten__j + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 DH) + + + m4topten__k + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 KD) + + + m4topten__l + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 RD) + + + m4topten__m + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 YD) + + + m4topten__n + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 H) + + + m4topten__o + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 K) + + + m4topten__p + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 R) + + + m4topten__q + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0) + + + m4topten__r + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.0 Y) + + + m4topten__s + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 AD) + + + m4topten__t + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 B) + + + m4topten__u + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 BD) + + + m4topten__v + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 C) + + + m4topten__w + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 D) + + + m4topten__x + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 DH) + + + m4topten__y + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 KD) + + + m4topten__z + Top Tenner (Barcrest) (type 1) (MPU4) (TTH 1.2 RD) + + + m4toptena + Top Tenner (Barcrest) (MPU4, Mod 2 type, TP 2.7) + + + m4toptim + Top Timer (Barcrest) (Dutch) (MPU4) (DTT 1.8, set 1) + + + m4toptima + Top Timer (Barcrest) (Dutch) (MPU4) (DTT 1.8, set 2) + + + m4tornad + Tornado (Qps) (MPU4) (set 1) + + + m4tornad__a + Tornado (Qps) (MPU4) (set 2) + + + m4tornad__b + Tornado (Qps) (MPU4) (set 3) + + + m4tornad__c + Tornado (Qps) (MPU4) (set 4) + + + m4tornad__d + Tornado (Qps) (MPU4) (set 5) + + + m4tornad__e + Tornado (Qps) (MPU4) (set 6) + + + m4tornad__f + Tornado (Qps) (MPU4) (set 7) + + + m4tornad__g + Tornado (Qps) (MPU4) (set 8) + + + m4treel + Turbo Reels (unknown) (MPU4?) (set 1) + + + m4treela + Turbo Reels (unknown) (MPU4?) (set 2) + + + m4trex + T-Rex (BWB) (MPU4) (set 1) + + + m4trex__a + T-Rex (BWB) (MPU4) (set 2) + + + m4trex__b + T-Rex (BWB) (MPU4) (set 3) + + + m4trex__c + T-Rex (BWB) (MPU4) (set 4) + + + m4trex__d + T-Rex (BWB) (MPU4) (set 5) + + + m4trex__e + T-Rex (BWB) (MPU4) (set 6) + + + m4trex__f + T-Rex (BWB) (MPU4) (set 7) + + + m4trex__g + T-Rex (BWB) (MPU4) (set 8) + + + m4trex__h + T-Rex (BWB) (MPU4) (set 9) + + + m4trex__i + T-Rex (BWB) (MPU4) (set 10) + + + m4trex__j + T-Rex (BWB) (MPU4) (set 11) + + + m4trex__k + T-Rex (BWB) (MPU4) (set 12) + + + m4trex__l + T-Rex (BWB) (MPU4) (set 13) + + + m4trg + Turbo Reel Gambler (Avantime?) (MPU4) (set 1) + + + m4trg__0 + Turbo Reel Gambler (Avantime?) (MPU4) (set 28) + + + m4trg__1 + Turbo Reel Gambler (Avantime?) (MPU4) (set 29) + + + m4trg__2 + Turbo Reel Gambler (Avantime?) (MPU4) (set 30) + + + m4trg__3 + Turbo Reel Gambler (Avantime?) (MPU4) (set 31) + + + m4trg__4 + Turbo Reel Gambler (Avantime?) (MPU4) (set 32) + + + m4trg__a + Turbo Reel Gambler (Avantime?) (MPU4) (set 2) + + + m4trg__b + Turbo Reel Gambler (Avantime?) (MPU4) (set 3) + + + m4trg__c + Turbo Reel Gambler (Avantime?) (MPU4) (set 4) + + + m4trg__d + Turbo Reel Gambler (Avantime?) (MPU4) (set 5) + + + m4trg__e + Turbo Reel Gambler (Avantime?) (MPU4) (set 6) + + + m4trg__f + Turbo Reel Gambler (Avantime?) (MPU4) (set 7) + + + m4trg__g + Turbo Reel Gambler (Avantime?) (MPU4) (set 8) + + + m4trg__h + Turbo Reel Gambler (Avantime?) (MPU4) (set 9) + + + m4trg__i + Turbo Reel Gambler (Avantime?) (MPU4) (set 10) + + + m4trg__j + Turbo Reel Gambler (Avantime?) (MPU4) (set 11) + + + m4trg__k + Turbo Reel Gambler (Avantime?) (MPU4) (set 12) + + + m4trg__l + Turbo Reel Gambler (Avantime?) (MPU4) (set 13) + + + m4trg__m + Turbo Reel Gambler (Avantime?) (MPU4) (set 14) + + + m4trg__n + Turbo Reel Gambler (Avantime?) (MPU4) (set 15) + + + m4trg__o + Turbo Reel Gambler (Avantime?) (MPU4) (set 16) + + + m4trg__p + Turbo Reel Gambler (Avantime?) (MPU4) (set 17) + + + m4trg__q + Turbo Reel Gambler (Avantime?) (MPU4) (set 18) + + + m4trg__r + Turbo Reel Gambler (Avantime?) (MPU4) (set 19) + + + m4trg__s + Turbo Reel Gambler (Avantime?) (MPU4) (set 20) + + + m4trg__t + Turbo Reel Gambler (Avantime?) (MPU4) (set 21) + + + m4trg__u + Turbo Reel Gambler (Avantime?) (MPU4) (set 22) + + + m4trg__v + Turbo Reel Gambler (Avantime?) (MPU4) (set 23) + + + m4trg__w + Turbo Reel Gambler (Avantime?) (MPU4) (set 24) + + + m4trg__x + Turbo Reel Gambler (Avantime?) (MPU4) (set 25) + + + m4trg__y + Turbo Reel Gambler (Avantime?) (MPU4) (set 26) + + + m4trg__z + Turbo Reel Gambler (Avantime?) (MPU4) (set 27) + + + m4tribnk + Triple Bank (Barcrest) (Dutch) (MPU4) (DTB 1.2) + + + m4tricol + Tricolor (Barcrest) (Dutch) (MPU4) (DTC 2.5) + + + m4trimad + Triple Madness (Union) (MPU4) + + + m4tropcl + Tropicana Club (Barcrest) (MPU4) (TRO 2.0, set 1) + + + m4tropcla + Tropicana Club (Barcrest) (MPU4) (TR2 1.1, set 1) + + + m4tropclb + Tropicana Club (Barcrest) (MPU4) (TR2 1.1, set 2) + + + m4tropclc + Tropicana Club (Barcrest) (MPU4) (TR2 1.1, set 3) + + + m4tropcld + Tropicana Club (Barcrest) (MPU4) (TRO 2.0, set 2) + + + m4tst + MPU4 Unit Test (Program 4) + + + m4tst2 + MPU4 Unit Test (Program 2) + + + m4ttak + Tic Tac Take (Barcrest) (MPU4) (TIC 2.0) + + + m4ttdia + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4) + + + m4ttdia__a + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 AD) + + + m4ttdia__b + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 B) + + + m4ttdia__c + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 BD) + + + m4ttdia__d + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 C) + + + m4ttdia__e + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 D) + + + m4ttdia__f + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 DH) + + + m4ttdia__g + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 KD) + + + m4ttdia__h + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 RD) + + + m4ttdia__i + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 YD) + + + m4ttdia__j + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 H) + + + m4ttdia__k + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 K) + + + m4ttdia__l + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 R) + + + m4ttdia__m + Ten Ten Do It Again (Barcrest) (MPU4) (TDA 0.4 Y) + + + m4ttrail + Treasure Trail (Empire) (MPU4, set 1) + + + m4ttraila + Treasure Trail (Empire) (MPU4, set 2) + + + m4ttrailb + Treasure Trail (Empire) (MPU4, set 3) + + + m4tupen + Tuppenny Cracker (unprotected bootleg) (MPU4) + + + m4tutbwb + Tutti Fruity (BWB) (MPU4) (set 1) + + + m4tutbwb_a + Tutti Fruity (BWB) (MPU4) (set 2) + + + m4tutbwb_b + Tutti Fruity (BWB) (MPU4) (set 3) + + + m4tutbwb_c + Tutti Fruity (BWB) (MPU4) (set 4) + + + m4tutbwb_d + Tutti Fruity (BWB) (MPU4) (set 5) + + + m4tutbwb_e + Tutti Fruity (BWB) (MPU4) (set 6) + + + m4tutbwb_f + Tutti Fruity (BWB) (MPU4) (set 7) + + + m4tutbwb_g + Tutti Fruity (BWB) (MPU4) (set 8) + + + m4tutbwb_h + Tutti Fruity (BWB) (MPU4) (set 9) + + + m4tutbwb_i + Tutti Fruity (BWB) (MPU4) (set 10) + + + m4tutbwb_j + Tutti Fruity (BWB) (MPU4) (set 11) + + + m4tutcl + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1) + + + m4tutcl__a + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 B) + + + m4tutcl__b + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 BD) + + + m4tutcl__c + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 C) + + + m4tutcl__d + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 D) + + + m4tutcl__e + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 KD) + + + m4tutcl__f + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 RD) + + + m4tutcl__g + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 YD) + + + m4tutcl__h + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 K) + + + m4tutcl__i + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 R) + + + m4tutcl__j + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 AD) + + + m4tutcl__k + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 Y) + + + m4tutfrt + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 / TF4 0.4) + + + m4tutfrt__0 + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 D) + + + m4tutfrt__1 + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 KD) + + + m4tutfrt__2 + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 RD) + + + m4tutfrt__3 + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 YD) + + + m4tutfrt__4 + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 K) + + + m4tutfrt__5 + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 R) + + + m4tutfrt__6 + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1) + + + m4tutfrt__7 + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 Y) + + + m4tutfrt__8 + Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 AD) + + + m4tutfrt__9 + Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 B) + + + m4tutfrt__a + Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 AD) + + + m4tutfrt__aa + Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 BD) + + + m4tutfrt__ab + Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 D) + + + m4tutfrt__ac + Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 KD) + + + m4tutfrt__ad + Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 YD) + + + m4tutfrt__ae + Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 K) + + + m4tutfrt__af + Tutti Fruity (Barcrest) (MPU4) (TF4 0.2) + + + m4tutfrt__ag + Tutti Fruity (Barcrest) (MPU4) (TF4 0.2 Y) + + + m4tutfrt__ai + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 AD / TF4 0.4) + + + m4tutfrt__aj + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 B / TF4 0.4) + + + m4tutfrt__ak + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 BD / TF4 0.4) + + + m4tutfrt__al + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 C / TF4 0.4) + + + m4tutfrt__am + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 D / TF4 0.4) + + + m4tutfrt__an + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 KD / TF4 0.4) + + + m4tutfrt__ao + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 RD / TF4 0.4) + + + m4tutfrt__ap + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 YD / TF4 0.4) + + + m4tutfrt__aq + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 K / TF4 0.4) + + + m4tutfrt__ar + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 R / TF4 0.4) + + + m4tutfrt__as + Tutti Fruity (Barcrest) (MPU4) (TFT 0.4 Y / TF4 0.4) + + + m4tutfrt__at + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 B, hack, set 1) + + + m4tutfrt__au + Tutti Fruity (Barcrest) (MPU4) (F2U 0.1 B, hack, set 2) + + + m4tutfrt__b + Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 B) + + + m4tutfrt__c + Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 BD) + + + m4tutfrt__d + Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 D) + + + m4tutfrt__e + Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 KD) + + + m4tutfrt__f + Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 YD) + + + m4tutfrt__g + Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 K) + + + m4tutfrt__h + Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 R) + + + m4tutfrt__i + Tutti Fruity (Barcrest) (MPU4) (CTU 0.1) + + + m4tutfrt__j + Tutti Fruity (Barcrest) (MPU4) (CTU 0.1 Y) + + + m4tutfrt__k + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 AD) + + + m4tutfrt__l + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 B) + + + m4tutfrt__m + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 BD) + + + m4tutfrt__n + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 C) + + + m4tutfrt__o + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 D) + + + m4tutfrt__p + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 KD) + + + m4tutfrt__q + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 RD) + + + m4tutfrt__r + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 YD) + + + m4tutfrt__s + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 K) + + + m4tutfrt__t + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 R) + + + m4tutfrt__u + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1) + + + m4tutfrt__v + Tutti Fruity (Barcrest) (MPU4) (F1U 0.1 Y) + + + m4tutfrt__w + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 AD) + + + m4tutfrt__x + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 B) + + + m4tutfrt__y + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 BD) + + + m4tutfrt__z + Tutti Fruity (Barcrest) (MPU4) (F3U 0.1 C) + + + m4twilgt + Twilight (Barcrest) (Dutch) (MPU4) (DTL 2.2) + + + m4twintm + Twin Timer (Barcrest) (MPU4) (D2T 1.1) + + + m4twist + Twist Again (J.A. Brown) (MPU4) (TA 9.6, set 1) + + + m4twista + Twist Again (J.A. Brown) (MPU4) (TA 9.6, set 2) + + + m4twistb + Twist Again (J.A. Brown) (MPU4) (TA 9.6, set 3) + + + m4twstcl + Twister Club (Crystal) (MPU4) (set 1) + + + m4twstcla + Twister Club (Crystal) (MPU4) (set 2) + + + m4twstclb + Twister Club (Crystal) (MPU4) (set 3) + + + m4twstr + Twister (Crystal) (MPU4) (set 1) + + + m4twstra + Twister (Crystal) (MPU4) (set 2) + + + m4twstrb + Twister (Crystal) (MPU4) (set 3) + + + m4twstrc + Twister (Crystal) (MPU4) (set 4) + + + m4twstrd + Twister (Crystal) (MPU4) (set 5) + + + m4tylb + Thank Your Lucky Bars (Crystal) (MPU4) (set 1) + + + m4tylba + Thank Your Lucky Bars (Crystal) (MPU4) (set 2) + + + m4typcl + Take Your Pick Club (Barcrest) (MPU4) (CTP 1.2) + + + m4typcl__a + Take Your Pick Club (Barcrest) (MPU4) (CTP 1.3 D) + + + m4typcl__b + Take Your Pick Club (Barcrest) (MPU4) (CTP 1.3 F) + + + m4typcl__c + Take Your Pick Club (Barcrest) (MPU4) (CTP 1.3) + + + m4typcl__d + Take Your Pick Club (Barcrest) (MPU4) (NTP 0.2) + + + m4unibox + Unibox (Union) (MPU4, set 1) + + + m4uniboxa + Unibox (Union) (MPU4, set 2) + + + m4unique + Unique (Union) (MPU4, set 1) + + + m4uniquep + Unique (Union) (MPU4, set 2) + + + m4univ + Universe (Barcrest) (Dutch) (MPU4) (DUN 2.0) + + + m4unkjok + Jolly Joker (Barcrest) (MPU4) (bootleg) (JJ1 0.1, set 1) + + + m4unkjoka + Jolly Joker (Barcrest) (MPU4) (bootleg) (JJ1 0.1. set 2) + + + m4unkjokb + Jolly Taverner (Barcrest) (bootleg) (MPU4) (TAV 1.1, set 1) + + + m4unkjokc + Jolly Taverner (Barcrest) (bootleg) (MPU4) (TAV 1.1, set 2) + + + m4uuaw + Up Up and Away (Barcrest) (MPU4) (UPS 2.1) + + + m4uuaw__0 + Up Up and Away (Barcrest) (MPU4) (UPS 2.2) + + + m4uuaw__1 + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 Y) + + + m4uuaw__2 + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 DA) + + + m4uuaw__3 + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 B) + + + m4uuaw__4 + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 DB) + + + m4uuaw__5 + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 D) + + + m4uuaw__6 + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 DH) + + + m4uuaw__7 + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 DK) + + + m4uuaw__8 + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 DR) + + + m4uuaw__9 + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 DY) + + + m4uuaw__a + Up Up and Away (Barcrest) (MPU4) (UUA 2.0, hack) + + + m4uuaw__aa + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 K) + + + m4uuaw__ab + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 R) + + + m4uuaw__ac + Up Up and Away (Barcrest) (MPU4) (UUA 2.1) + + + m4uuaw__ad + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 Y) + + + m4uuaw__ae + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 DA) + + + m4uuaw__af + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 B) + + + m4uuaw__ag + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 DB) + + + m4uuaw__ah + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 D) + + + m4uuaw__ai + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 DH) + + + m4uuaw__aj + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 DK) + + + m4uuaw__ak + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 DR) + + + m4uuaw__al + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 DY) + + + m4uuaw__am + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 H) + + + m4uuaw__an + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 K) + + + m4uuaw__ao + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 R) + + + m4uuaw__ap + Up Up and Away (Barcrest) (MPU4) (UUA 2.2) + + + m4uuaw__aq + Up Up and Away (Barcrest) (MPU4) (UUA 2.2 Y) + + + m4uuaw__b + Up Up and Away (Barcrest) (MPU4) (UPS 2.0, hack) + + + m4uuaw__c + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 DA) + + + m4uuaw__d + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 B) + + + m4uuaw__e + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 DB) + + + m4uuaw__f + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 D) + + + m4uuaw__g + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 DH) + + + m4uuaw__h + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 DK) + + + m4uuaw__i + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 DR) + + + m4uuaw__j + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 DY) + + + m4uuaw__k + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 H) + + + m4uuaw__l + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 K) + + + m4uuaw__m + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 R) + + + m4uuaw__n + Up Up and Away (Barcrest) (MPU4) (UUA 2.1 H) + + + m4uuaw__o + Up Up and Away (Barcrest) (MPU4) (UPS 2.1 Y) + + + m4uuaw__p + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 DA) + + + m4uuaw__q + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 B) + + + m4uuaw__r + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 DB) + + + m4uuaw__s + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 D) + + + m4uuaw__t + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 DH) + + + m4uuaw__u + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 DK) + + + m4uuaw__v + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 DR) + + + m4uuaw__w + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 DY) + + + m4uuaw__x + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 H) + + + m4uuaw__y + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 K) + + + m4uuaw__z + Up Up and Away (Barcrest) (MPU4) (UPS 2.2 R) + + + m4vdexpr + Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 1) + + + m4vdexpr__a + Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 2) + + + m4vdexpr__b + Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 3) + + + m4vdexpr__c + Voodoo Express (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 4) + + + m4vdexpr__d + Voodoo Express (BWB) (MPU4) (5/10p stake / £5/£8 jackpot) + + + m4vegast + Las Vegas Strip (Barcrest) (MPU4) (UVS 0.3) + + + m4vegast__0 + Las Vegas Strip (Barcrest) (bootleg) (MPU4) (VSG 0.4) + + + m4vegast__1 + Las Vegas Strip (Barcrest) (bootleg) (MPU4) (UVS 0.3) + + + m4vegast__a + Las Vegas Strip (Barcrest) (MPU4) (UVS 0.3 B) + + + m4vegast__b + Las Vegas Strip (Barcrest) (MPU4) (UVS 0.3 BD) + + + m4vegast__c + Las Vegas Strip (Barcrest) (MPU4) (UVS 0.3 C) + + + m4vegast__d + Las Vegas Strip (Barcrest) (MPU4) (UVS 0.3 D) + + + m4vegast__e + Las Vegas Strip (Barcrest) (MPU4) (UVS 0.3 KD) + + + m4vegast__f + Las Vegas Strip (Barcrest) (MPU4) (UVS 0.3 YD) + + + m4vegast__g + Las Vegas Strip (Barcrest) (MPU4) (UVS 0.3 K) + + + m4vegast__h + Las Vegas Strip (Barcrest) (MPU4) (UVS 0.3 AD) + + + m4vegast__i + Las Vegas Strip (Barcrest) (MPU4) (UVS 0.3 Y) + + + m4vegast__j + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4 AD) + + + m4vegast__k + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4 B) + + + m4vegast__l + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4 BD) + + + m4vegast__m + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4 C) + + + m4vegast__n + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4 D) + + + m4vegast__o + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4 KD) + + + m4vegast__p + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4 RD) + + + m4vegast__q + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4 YD) + + + m4vegast__r + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4 K) + + + m4vegast__s + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4 R) + + + m4vegast__t + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4) + + + m4vegast__u + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.4 Y) + + + m4vegast__x + Las Vegas Strip (Barcrest) (MPU4) (VSG 0.3) + + + m4vegastg + Vegas Strip (Barcrest) (German) (MPU4) + + + m4vfm + Value For Money (Global) (MPU4) + + + m4vivaes + Viva Espana (Barcrest) (MPU4) (EP8 0.1) + + + m4vivaes__0 + Viva Espana (Barcrest) (MPU4) (VE105.0, set 3) + + + m4vivaes__1 + Viva Espana (Barcrest) (MPU4) (8V1 0.3, hack, set 1) + + + m4vivaes__2 + Viva Espana (Barcrest) (MPU4) (VET 0.2AD) + + + m4vivaes__3 + Viva Espana (Barcrest) (MPU4) (VET 0.2B) + + + m4vivaes__4 + Viva Espana (Barcrest) (MPU4) (VET 0.2BD) + + + m4vivaes__5 + Viva Espana (Barcrest) (MPU4) (VET 0.2D) + + + m4vivaes__6 + Viva Espana (Barcrest) (MPU4) (VET 0.2KD) + + + m4vivaes__7 + Viva Espana (Barcrest) (MPU4) (VET 0.2YD) + + + m4vivaes__8 + Viva Espana (Barcrest) (MPU4) (VET 0.2K) + + + m4vivaes__9 + Viva Espana (Barcrest) (MPU4) (VET 0.2) + + + m4vivaes__a + Viva Espana (Barcrest) (MPU4) (EP8 0.1AD) + + + m4vivaes__aa + Viva Espana (Barcrest) (MPU4) (VET 0.2Y) + + + m4vivaes__ac + Viva Espana (Barcrest) (MPU4) (VE5 3.0) + + + m4vivaes__ad + Viva Espana (Barcrest) (MPU4) (VE105.0, set 4) + + + m4vivaes__ae + Viva Espana (Barcrest) (MPU4) (VE5 4.0C, set 1) + + + m4vivaes__af + Viva Espana (Barcrest) (MPU4) (VE104.0) + + + m4vivaes__ag + Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 3) + + + m4vivaes__ah + Viva Espana (Barcrest) (MPU4) (VE5 6.0) + + + m4vivaes__ai + Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 1) + + + m4vivaes__aj + Viva Espana (Barcrest) (MPU4) (VE5 6.0C, set 2) + + + m4vivaes__ak + Viva Espana (Barcrest) (MPU4) (VE5 4.0C, set 2) + + + m4vivaes__al + Viva Espana (Barcrest) (MPU4) (VE105.0, set 2) + + + m4vivaes__am + Viva Espana (Barcrest) (MPU4) (VE105.0, set 1) + + + m4vivaes__an + Viva Espana (Barcrest) (MPU4) (8V1 0.3, hack, set 2) + + + m4vivaes__ao + Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 2) + + + m4vivaes__ap + Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 3) + + + m4vivaes__aq + Viva Espana (Barcrest) (MPU4) (ESP 0.2) + + + m4vivaes__b + Viva Espana (Barcrest) (MPU4) (EP8 0.1B) + + + m4vivaes__c + Viva Espana (Barcrest) (MPU4) (EP8 0.1BD) + + + m4vivaes__d + Viva Espana (Barcrest) (MPU4) (EP8 0.1C) + + + m4vivaes__e + Viva Espana (Barcrest) (MPU4) (EP8 0.1D) + + + m4vivaes__f + Viva Espana (Barcrest) (MPU4) (EP8 0.1KD) + + + m4vivaes__g + Viva Espana (Barcrest) (MPU4) (EP8 0.1YD) + + + m4vivaes__h + Viva Espana (Barcrest) (MPU4) (EP8 0.1K) + + + m4vivaes__i + Viva Espana (Barcrest) (MPU4) (EP8 0.1Y) + + + m4vivaes__j + Viva Espana (Barcrest) (MPU4) (VE5 6.0, hack) + + + m4vivaes__k + Viva Espana (Barcrest) (MPU4) (ESP 0.3C) + + + m4vivaes__l + Viva Espana (Barcrest) (MPU4) (ESP 0.3D) + + + m4vivaes__m + Viva Espana (Barcrest) (MPU4) (ESP 0.3YD) + + + m4vivaes__n + Viva Espana (Barcrest) (MPU4) (ESP 0.3K) + + + m4vivaes__o + Viva Espana (Barcrest) (MPU4) (ESP 0.3) + + + m4vivaes__p + Viva Espana (Barcrest) (MPU4) (ESP 0.3Y) + + + m4vivaes__q + Viva Espana (Barcrest) (MPU4) (VE5 0.2AD) + + + m4vivaes__r + Viva Espana (Barcrest) (MPU4) (VE5 0.2B) + + + m4vivaes__s + Viva Espana (Barcrest) (MPU4) (VE5 0.2BD) + + + m4vivaes__t + Viva Espana (Barcrest) (MPU4) (VE5 0.2D) + + + m4vivaes__u + Viva Espana (Barcrest) (MPU4) (VE5 0.2KD) + + + m4vivaes__v + Viva Espana (Barcrest) (MPU4) (VE5 0.2YD) + + + m4vivaes__w + Viva Espana (Barcrest) (MPU4) (VE5 0.2K) + + + m4vivaes__x + Viva Espana (Barcrest) (MPU4) (VE5 0.2) + + + m4vivaes__y + Viva Espana (Barcrest) (MPU4) (VE5 0.2Y) + + + m4vivaes__z + Viva Espana (Barcrest) (MPU4) (VE5 5.0, set 1) + + + m4vivalv + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 7) + + + m4vivalv__0 + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 2) + + + m4vivalv__1 + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 3) + + + m4vivalv__2 + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 4) + + + m4vivalv__3 + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 5) + + + m4vivalv__4 + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 6) + + + m4vivalv__5 + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 7) + + + m4vivalv__6 + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack ? , set 8) + + + m4vivalv__a + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 1) + + + m4vivalv__b + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 2) + + + m4vivalv__c + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 3) + + + m4vivalv__d + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 4) + + + m4vivalv__e + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 5) + + + m4vivalv__f + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 6) + + + m4vivalv__g + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.1, set 8) + + + m4vivalv__h + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0) + + + m4vivalv__i + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 1) + + + m4vivalv__j + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 2) + + + m4vivalv__k + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 3) + + + m4vivalv__l + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 4) + + + m4vivalv__m + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 5) + + + m4vivalv__n + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 6) + + + m4vivalv__o + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 7) + + + m4vivalv__p + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 8) + + + m4vivalv__q + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 9) + + + m4vivalv__r + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 10) + + + m4vivalv__s + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 11) + + + m4vivalv__t + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, set 12) + + + m4vivalv__u + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 1) + + + m4vivalv__v + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 2) + + + m4vivalv__w + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 3) + + + m4vivalv__x + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 4) + + + m4vivalv__y + Viva Las Vegas (Barcrest) (MPU4) (VLV 1.0, hack?, set 5) + + + m4vivalv__z + Viva Las Vegas (BWB) (MPU4) (VL_ 2.0, hack?, set 1) + + + m4vivalvd + Viva Las Vegas (Barcrest) (Dutch) (MPU4) (DLV 1.1) + + + m4vivan + Viva Las Vegas (Nova) (German) (MPU4) (GLV 1.2) + + + m4vivess + Viva Espana Showcase (Barcrest) (MPU4) (SE8 0.1) + + + m4vivess__a + Viva Espana Showcase (Barcrest) (MPU4) (SE8 0.1 AD) + + + m4vivess__b + Viva Espana Showcase (Barcrest) (MPU4) (SE8 0.1 B) + + + m4vivess__c + Viva Espana Showcase (Barcrest) (MPU4) (SE8 0.1 BD) + + + m4vivess__d + Viva Espana Showcase (Barcrest) (MPU4) (SE8 0.1 D) + + + m4vivess__f + Viva Espana Showcase (Barcrest) (MPU4) (SE8 0.1 KD) + + + m4vivess__g + Viva Espana Showcase (Barcrest) (MPU4) (SE8 0.1 YD) + + + m4vivess__i + Viva Espana Showcase (Barcrest) (MPU4) (SE8 0.1 K) + + + m4vivess__j + Viva Espana Showcase (Barcrest) (MPU4) (SE8 0.1 Y) + + + m4vivess__k + Viva Espana Showcase (Barcrest) (MPU4) (SES 0.2 B) + + + m4vivess__l + Viva Espana Showcase (Barcrest) (MPU4) (SES 0.2 D) + + + m4vivess__m + Viva Espana Showcase (Barcrest) (MPU4) (SES 0.2 YD) + + + m4vivess__n + Viva Espana Showcase (Barcrest) (MPU4) (SES 0.2 K) + + + m4vivess__o + Viva Espana Showcase (Barcrest) (MPU4) (SES 0.2) + + + m4vivess__p + Viva Espana Showcase (Barcrest) (MPU4) (SES 0.2 Y) + + + m4viz + Viz (Barcrest) (MPU4) (VIZ 0.6) + + + m4viz__a + Viz (Barcrest) (MPU4) (8V1 0.6 C, hack, set 2) + + + m4viz__b + Viz (Barcrest) (MPU4) (VIZ 0.2 T) + + + m4viz__c + Viz (Barcrest) (MPU4) (8V1 1.0 C, hack, set 3) + + + m4viz__d + Viz (Barcrest) (MPU4) (VIZ 0.6 B) + + + m4viz__e + Viz (Barcrest) (MPU4) (VIZ 0.6 C) + + + m4viz__f + Viz (Barcrest) (MPU4) (VIZ 0.6 D) + + + m4viz__g + Viz (Barcrest) (MPU4) (VIZ 0.6 DK) + + + m4viz__h + Viz (Barcrest) (MPU4) (VIZ 0.6 DY) + + + m4viz__i + Viz (Barcrest) (MPU4) (VIZ 0.6 K) + + + m4viz__j + Viz (Barcrest) (MPU4) (8V1 0.6 C, hack, set 1) + + + m4viz__k + Viz (Barcrest) (MPU4) (VIZ 0.6 Y) + + + m4viz__l + Viz (Barcrest) (MPU4) (VIZ 0.3 Y) + + + m4viz__m + Viz (Barcrest) (MPU4) (VZ__1.0 K, set 1) + + + m4viz__n + Viz (Barcrest) (MPU4) (VZ__1.0, set 1) + + + m4viz__o + Viz (Barcrest) (MPU4) (VZ__1.0 DY, set 1) + + + m4viz__p + Viz (Barcrest) (MPU4) (VZ__1.0 D, set 1) + + + m4viz__q + Viz (Barcrest) (MPU4) (VZ__1.0 K, set 2) + + + m4viz__r + Viz (Barcrest) (MPU4) (VZ__1.0, set 2) + + + m4viz__s + Viz (Barcrest) (MPU4) (VZ__1.0 DY, set 2) + + + m4viz__t + Viz (Barcrest) (MPU4) (VZ__1.0 D, set 2) + + + m4viz__u + Viz (Barcrest) (MPU4) (VZ__1.0 C, set 1) + + + m4viz__v + Viz (Barcrest) (MPU4) (VZ__1.0 C, set 2) + + + m4viz__w + Viz (Barcrest) (MPU4) (8V1 0.6, hack) + + + m4volcan + Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 1) + + + m4volcan__a + Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 2) + + + m4volcan__b + Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 3) + + + m4volcan__c + Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 4) + + + m4volcan__d + Volcano (BWB) (MPU4) (20/25/30p stake / £5/£10/£15 jackpot) (set 5) + + + m4volcan__e + Volcano (BWB) (MPU4) (5/10p stake / £5/£8 jackpot) (set 1) + + + m4volcan__f + Volcano (BWB) (MPU4) (5/10p stake / £5/£8 jackpot) (set 2) + + + m4volcan__g + Volcano (BWB) (MPU4) (5/10p stake / £5/£8 jackpot) (set 3) + + + m4voodoo + Voodoo 1000 (Barcrest) (Dutch) (MPU4) (DDO 3.2) + + + m4wayin + Super Way In (Barcrest) (MPU4) (WS 1.0) + + + m4wayina + Way In Mk 2 (Barcrest) (bootleg) (MPU4) + + + m4wcnov + World Cup (Nova) (MPU4) + + + m4wife + Money Or Yer Wife (Gemini) (MPU4) + + + m4wildms + Wild Mystery (Barcrest) (Dutch) (MPU4) (DWM 1.8) + + + m4wildtm + Wild Timer (Barcrest) (Dutch) (MPU4) (DWT 1.3) + + + m4wnud + unknown MPU4 'W Nudge' (J.A. Brown) (MPU4) + + + m4wta + Winner Takes All (Barcrest) (MPU4) (WIN 0.6) + + + m4wta__0 + Winner Takes All (Barcrest) (MPU4) (WNT 0.1 D) + + + m4wta__1 + Winner Takes All (Barcrest) (MPU4) (WNT 0.1 KD) + + + m4wta__2 + Winner Takes All (Barcrest) (MPU4) (WNT 0.1 YD) + + + m4wta__3 + Winner Takes All (Barcrest) (MPU4) (WNT 0.1 K) + + + m4wta__4 + Winner Takes All (Barcrest) (MPU4) (WNT 0.1) + + + m4wta__5 + Winner Takes All (Barcrest) (MPU4) (WNT 0.1 Y) + + + m4wta__6 + Winner Takes All (Barcrest) (MPU4) (V1 0.1, hack) + + + m4wta__7 + Winner Takes All (Barcrest) (MPU4) (WNC 1.3 5, hack, set 1) + + + m4wta__8 + Winner Takes All (Barcrest) (MPU4) (WN8 2.2 5, hack, set 1) + + + m4wta__9 + Winner Takes All (Barcrest) (MPU4) (WN4 1.1 K5) + + + m4wta__aa + Winner Takes All (Barcrest) (MPU4) (WIN 0.6 K) + + + m4wta__ab + Winner Takes All (Barcrest) (MPU4) (WN4 1.1 5) + + + m4wta__ac + Winner Takes All (Barcrest) (MPU4) (WN5 3.0 5) + + + m4wta__ad + Winner Takes All (Barcrest) (MPU4) (WNC 1.3 5, hack, set 2) + + + m4wta__ae + Winner Takes All (Barcrest) (MPU4) (WN4 1.1 K5, hack?) + + + m4wta__af + Winner Takes All (Barcrest) (MPU4) (WN4 1.1, hack, set 2) + + + m4wta__ag + Winner Takes All (Barcrest) (MPU4) (WN8 2.2 5, hack, set 2) + + + m4wta__b + Winner Takes All (Barcrest) (MPU4) (WIN 0.6 YD) + + + m4wta__d + Winner Takes All (Barcrest) (MPU4) (WN4 1.1, hack, set 1) + + + m4wta__e + Winner Takes All (Barcrest) (MPU4) (WIN 0.6 Y) + + + m4wta__f + Winner Takes All (Barcrest) (MPU4) (WN5 0.1 AD) + + + m4wta__g + Winner Takes All (Barcrest) (MPU4) (WN5 0.1 B) + + + m4wta__h + Winner Takes All (Barcrest) (MPU4) (WN5 0.1 BD) + + + m4wta__i + Winner Takes All (Barcrest) (MPU4) (WN5 0.1 D) + + + m4wta__j + Winner Takes All (Barcrest) (MPU4) (WN5 0.1 KD) + + + m4wta__k + Winner Takes All (Barcrest) (MPU4) (WN5 0.1 YD) + + + m4wta__l + Winner Takes All (Barcrest) (MPU4) (WN5 0.1 K) + + + m4wta__m + Winner Takes All (Barcrest) (MPU4) (WN5 0.1) + + + m4wta__n + Winner Takes All (Barcrest) (MPU4) (WN5 0.1 Y) + + + m4wta__o + Winner Takes All (Barcrest) (MPU4) (WN8 0.1 B) + + + m4wta__p + Winner Takes All (Barcrest) (MPU4) (WN8 0.1 C) + + + m4wta__q + Winner Takes All (Barcrest) (MPU4) (WN8 0.1 D) + + + m4wta__r + Winner Takes All (Barcrest) (MPU4) (WN8 0.1 KD) + + + m4wta__s + Winner Takes All (Barcrest) (MPU4) (WN8 0.1 YD) + + + m4wta__t + Winner Takes All (Barcrest) (MPU4) (WN8 0.1 K) + + + m4wta__u + Winner Takes All (Barcrest) (MPU4) (WN8 0.1) + + + m4wta__v + Winner Takes All (Barcrest) (MPU4) (WN8 0.1 Y) + + + m4wta__w + Winner Takes All (Barcrest) (MPU4) (WNT 0.1, hack) + + + m4wta__x + Winner Takes All (Barcrest) (MPU4) (WNT 0.1 AD) + + + m4wta__y + Winner Takes All (Barcrest) (MPU4) (WNT 0.1 B) + + + m4wta__z + Winner Takes All (Barcrest) (MPU4) (WNT 0.1 BD) + + + m4wwc + Wacky Weekend Club (Global) (MPU4) (set 1) + + + m4wwca + Wacky Weekend Club (Global) (MPU4) (set 2) + + + m4wwcb + Wacky Weekend Club (Global) (MPU4) (set 3) + + + m4xch + X-change (BWB) (MPU4) (25p stake / £10 jackpot) + + + m4xch__a + X-change (BWB) (MPU4) (25p stake / £8 jackpot) (set 1) + + + m4xch__b + X-change (BWB) (MPU4) (25p stake / £8 jackpot) (set 2) + + + m4xch__c + X-change (BWB) (MPU4) (25p stake / £15 jackpot) (set 1) + + + m4xch__d + X-change (BWB) (MPU4) (25p stake / £15 jackpot) (set 2) + + + m4xch__e + X-change (BWB) (MPU4) (25p stake / £15 jackpot) (set 3) + + + m4xch__f + X-change (BWB) (MPU4) (30p stake / £15 jackpot) (set 1) + + + m4xch__g + X-change (BWB) (MPU4) (30p stake / £15 jackpot) (set 2) + + + m4xch__h + X-change (BWB) (MPU4) (20/25/30p stake / £15 jackpot) + + + m4xch__i + X-change (BWB) (MPU4) (10/20/25/30p stake / £5/£8/£10 jackpot, 20/25/30p stake / £15 jackpot) (set 1) + + + m4xch__j + X-change (BWB) (MPU4) (10/20/25/30p stake / £5/£8/£10 jackpot, 20/25/30p stake / £15 jackpot) (set 2) + + + m4xch__k + X-change (BWB) (MPU4) (unknown set, bad?) + + + m4xs + X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 1) + + + m4xs__a + X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 2) + + + m4xs__b + X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 3) + + + m4xs__c + X-s (BWB) (MPU4) (25p stake / £15 jackpot) (set 4) + + + m4xs__d + X-s (BWB) (MPU4) (30p stake / £15 jackpot) (set 1) + + + m4xs__e + X-s (BWB) (MPU4) (30p stake / £15 jackpot) (set 2) + + + m4xs__f + X-s (BWB) (MPU4) (20/25/30p stake / £15 jackpot) + + + m4xtrm + X-treme (BWB) (MPU4) (20/25/30p stake / £8/£15 jackpot) + + + m4xtrm__a + X-treme (BWB) (MPU4) (30p stake / £15 jackpot) + + + m4xtrm__b + X-treme (BWB) (MPU4) (25p stake / £15 jackpot) + + + m4zill + Zillionare's Challenge (Pure Leisure) (MPU4) (set 1) + + + m4zilla + Zillionare's Challenge (Pure Leisure) (MPU4) (set 2) + + + m5001 + M5001 (rev. A) + + + m55050 + Fifty Fifty (Bwb) (MPU5) + + + m5aceclb + Ace Of Clubs (Empire) (MPU5, set 1) + + + m5aceclba + Ace Of Clubs (Empire) (MPU5, set 2) + + + m5aceclbb + Ace Of Clubs (Empire) (MPU5, set 3) + + + m5addams + Addams Family (Barcrest) (MPU5) (v0.5, set 1) + + + m5addamsa + Addams Family (Barcrest) (MPU5) (v0.5, set 2) + + + m5addamsb + Addams Family (Barcrest) (MPU5) (v0.5, set 3) + + + m5addamsc + Addams Family (Barcrest) (MPU5) (v0.5, set 4) + + + m5addamsd + Addams Family (Barcrest) (MPU5) (v0.5, set 5) + + + m5addamse + Addams Family (Barcrest) (MPU5) (v0.5, set 6) + + + m5addamsf + Addams Family (Barcrest) (MPU5) (v0.5, set 7) + + + m5addamsg + Addams Family (Barcrest) (MPU5) (v0.5, set 8) + + + m5addamsh + Addams Family (Barcrest) (MPU5) (v0.2, set 1) + + + m5addamsi + Addams Family (Barcrest) (MPU5) (v0.2, set 2) + + + m5addamsj + Addams Family (Barcrest) (MPU5) (v0.2, set 3) + + + m5addamsk + Addams Family (Barcrest) (MPU5) (v0.3, set 1) + + + m5addamsl + Addams Family (Barcrest) (MPU5) (v0.3, set 2) + + + m5addamsm + Addams Family (Barcrest) (MPU5) (v0.3, set 3) + + + m5addamsn + Addams Family (Barcrest) (MPU5) (v0.3, set 4) + + + m5addamso + Addams Family (Barcrest) (MPU5) (v0.3, set 5) + + + m5addamsp + Addams Family (Barcrest) (MPU5) (v0.3, set 6) + + + m5addamsq + Addams Family (Barcrest) (MPU5) (v0.3, set 7) + + + m5addamsr + Addams Family (Barcrest) (MPU5) (v0.3, set 8) + + + m5addamss + Addams Family (Barcrest) (MPU5) (v0.3, set 9) + + + m5addlad + Adders & Ladders (Barcrest) (MPU5, v0.6, set 1) + + + m5addlada + Adders & Ladders (Barcrest) (MPU5, v0.6, set 2) + + + m5addladb + Adders & Ladders (Barcrest) (MPU5, v0.6, set 3) + + + m5addladc + Adders & Ladders (Barcrest) (MPU5, v0.6, set 4) + + + m5addladd + Adders & Ladders (Barcrest) (MPU5, v0.6, set 5) + + + m5addlade + Adders & Ladders (Barcrest) (MPU5, v0.6, set 6) + + + m5addladf + Adders & Ladders (Barcrest) (MPU5, v0.6, set 7) + + + m5addladg + Adders & Ladders (Barcrest) (MPU5, v0.6, set 8) + + + m5addladh + Adders & Ladders (Barcrest) (MPU5, v0.6, set 9) + + + m5addladi + Adders & Ladders (Barcrest) (MPU5, v0.6, set 10) + + + m5addladj + Adders & Ladders (Barcrest) (MPU5, v0.1, set 1) + + + m5addladk + Adders & Ladders (Barcrest) (MPU5, v0.1, set 2) + + + m5addladl + Adders & Ladders (Barcrest) (MPU5, v0.1, set 3) + + + m5addladm + Adders & Ladders (Barcrest) (MPU5, v0.1, set 4) + + + m5addladn + Adders & Ladders (Barcrest) (MPU5, v0.1, set 5) + + + m5addlado + Adders & Ladders (Barcrest) (MPU5, v0.1, set 6) + + + m5addladp + Adders & Ladders (Barcrest) (MPU5, v0.1, set 7) + + + m5addladq + Adders & Ladders (Barcrest) (MPU5, v0.4, set 1) + + + m5addladr + Adders & Ladders (Barcrest) (MPU5, v0.4, set 2) + + + m5addlads + Adders & Ladders (Barcrest) (MPU5, v?.?) + + + m5all41 + All 4 One (Vivid) (MPU5, set 1) + + + m5all41a + All 4 One (Vivid) (MPU5, set 2) + + + m5all41b + All 4 One (Vivid) (MPU5, set 3) + + + m5all41c + All 4 One (Vivid) (MPU5, set 4) + + + m5all41d + All 4 One (Vivid) (MPU5, set 5) + + + m5all41e + All 4 One (Vivid) (MPU5, set 6) + + + m5all41f + All 4 One (Vivid) (MPU5, set 7) + + + m5all41g + All 4 One (Vivid) (MPU5, set 8) + + + m5all41h + All 4 One (Vivid) (MPU5, set 9) + + + m5all41i + All 4 One (Vivid) (MPU5, set 10) + + + m5all41j + All 4 One (Vivid) (MPU5, set 11) + + + m5all41k + All 4 One (Vivid) (MPU5, set 12) + + + m5all41l + All 4 One (Vivid) (MPU5, set 13) + + + m5all41low + All 4 One (Lowen) (MPU5) + + + m5all41m + All 4 One (Vivid) (MPU5, set 14) + + + m5arab + Arabian Nights (Barcrest) (MPU5) (set 1) + + + m5arab03 + Arabian Nights (Barcrest) (MPU5) (set 2) + + + m5ashock + Aftershock (Barcrest - Red Gaming) (MPU5, v1.2) + + + m5ashocka + Aftershock (Barcrest - Red Gaming) (MPU5, v1.3) + + + m5atlan + Atlantic (Vivid) (MPU5, v1.4) + + + m5atlana + Atlantic (Vivid) (MPU5, v1.2) + + + m5austin + Austin Powers (Barcrest) (MPU5) (set 1) + + + m5austin10 + Austin Powers (Barcrest) (MPU5) (set 2) + + + m5austin11 + Austin Powers (Barcrest) (MPU5) (set 3) + + + m5bankrl + The Bank Roll (Barcrest) (MPU5) + + + m5barkng + Barking Mad (Barcrest) (MPU5) + + + m5barmy + Barmy Army (Barcrest) (MPU5) + + + m5barxdx + Bar X Deluxe (Empire) (MPU5) + + + m5baxe + Battle Axe (Barcrest) (MPU5) (set 1) + + + m5baxe04 + Battle Axe (Barcrest) (MPU5) (set 2) + + + m5bbank + Break The Bank (Barcrest - Red Gaming) (MPU5) (set 1) + + + m5bbank13 + Break The Bank (Barcrest - Red Gaming) (MPU5) (set 2) + + + m5bbro + Big Brother (Barcrest) (MPU5) (set 1) + + + m5bbro02 + Big Brother (Barcrest) (MPU5) (set 2) + + + m5bbrocl + Big Brother Club (Barcrest) (MPU5) + + + m5beans + Full Of Beans (Barcrest) (MPU5) (set 1) + + + m5beansa + Full Of Beans (Barcrest) (MPU5) (set 2) + + + m5bigchs + The Big Cheese (Barcrest) (MPU5) (set 1) + + + m5bigchs05 + The Big Cheese (Barcrest) (MPU5) (set 2) + + + m5biggam + The Big Game (Barcrest) (MPU5) (set 1) + + + m5biggam11 + The Big Game (Barcrest) (MPU5) (set 2) + + + m5bigsht + Big Shot (Barcrest - Red Gaming) (MPU5) (set 1) + + + m5bigsht04 + Big Shot (Barcrest - Red Gaming) (MPU5) (set 2) + + + m5bigsht11 + Big Shot (Barcrest - Red Gaming) (MPU5) (set 3) + + + m5bigsht13 + Big Shot (Barcrest - Red Gaming) (MPU5) (set 4) + + + m5bigshta + Big Shot (Barcrest - Red Gaming) (MPU5) (set 5) + + + m5bling + Bling King Crazy (Barcrest) (MPU5) + + + m5blkwht + Black & White (Barcrest) (MPU5) (set 1) + + + m5blkwht01 + Black & White (Barcrest) (MPU5) (set 3) + + + m5blkwht11 + Black & White (Barcrest) (MPU5) (set 2) + + + m5bnkrs + Bonkers (Barcrest - Red Gaming) (MPU5) + + + m5bnzclb + Bonanza Club (Empire) (MPU5) (set 1) + + + m5bnzclb11 + Bonanza Club (Empire) (MPU5) (set 2) + + + m5btlbnk + Bottle Bank (Vivid) (MPU5) + + + m5bttf + Back To The Features (Vivid) (MPU5) (set 1) + + + m5bttfa + Back To The Features (Vivid) (MPU5) (set 2) + + + m5bukroo + Buckaroo (Empire) (MPU5) + + + m5bwaves + Brain Waves (Barcrest) (MPU5) (set 1) + + + m5bwaves07 + Brain Waves (Barcrest) (MPU5) (set 2) + + + m5caesc + Caesar's Cash (Vivid) (MPU5) + + + m5carclb + Caribbean Club (Barcrest) (MPU5) + + + m5card + Card Shark (Vivid) (MPU5) + + + m5carou + Carousel (Empire) (MPU5) + + + m5carpet + Magic Carpet (Bwb) (MPU5) (set 1) + + + m5carpet12 + Magic Carpet (Bwb) (MPU5) (set 2) + + + m5carwsh + Car Wash (Bwb) (MPU5) (set 1) + + + m5carwsh10 + Car Wash (Bwb) (MPU5) (set 2) + + + m5casfev + Casino Fever (Red Gaming) (MPU5) (set 1) + + + m5casfev12 + Casino Fever (Red Gaming) (MPU5) (set 2) + + + m5cashar + Cash Arena (Barcrest) (MPU5) (set 1) + + + m5cashar04 + Cash Arena (Barcrest) (MPU5) (set 2) + + + m5cashat + Cash Attack (Barcrest) (MPU5) + + + m5cashln + Cash Lines (Barcrest) (MPU5) + + + m5cashrn + Cash Run (Barcrest) (MPU5) (set 1) + + + m5cashrn01 + Cash Run (Barcrest) (MPU5) (set 2) + + + m5cashrn02 + Cash Run (Barcrest) (MPU5) (set 3) + + + m5cashrn04 + Cash Run (Barcrest) (MPU5) (set 4) + + + m5casroc + Casino Royale Club (Empire) (MPU5) + + + m5cbrun + Cannonball Run (Empire) (MPU5) + + + m5cbw + Ca$h Bang Wallop (Barcrest) (MPU5) (set 1) + + + m5cbwa + Ca$h Bang Wallop (Barcrest) (MPU5) (set 2) + + + m5centcl + Centurion Club (Empire) (MPU5) (set 1) + + + m5centcl20 + Centurion Club (Empire) (MPU5) (set 2) + + + m5centcl21 + Centurion Club (Empire) (MPU5) (set 3) + + + m5centcl21a + Centurion Club (Empire) (MPU5) (set 4) + + + m5centcla + Centurion Club (Empire) (MPU5) (set 5) + + + m5circlb + Circus Club (Bwb) (MPU5) (set 1) + + + m5circlb00 + Circus Club (Bwb) (MPU5) (set 2) + + + m5circlb15 + Circus Club (Bwb) (MPU5) (set 3) + + + m5circlb33 + Circus Club (Bwb) (MPU5) (set 4) + + + m5circus + Circus (Bwb) (MPU5) (set 1) + + + m5circus0a + Circus (Bwb) (MPU5) (set 2) + + + m5circus0b + Circus (Bwb) (MPU5) (set 3) + + + m5circus11 + Circus (Bwb) (MPU5) (set 6) + + + m5circus20 + Circus (Bwb) (MPU5) (set 4) + + + m5circus21 + Circus (Bwb) (MPU5) (set 5) + + + m5clbtro + Club Tropicana (Empire) (MPU5) (set 1) + + + m5clbtro24 + Club Tropicana (Empire) (MPU5) (set 2) + + + m5clbtro25 + Club Tropicana (Empire) (MPU5) (set 3) + + + m5clifhn + Cliffhanger (Vivid) (MPU5) + + + m5clown + Clown In Around (Bwb) (MPU5) (set 1) + + + m5clown11 + Clown In Around (Bwb) (MPU5) (set 2) + + + m5clown13 + Clown In Around (Bwb) (MPU5) (set 3) + + + m5clr + MPU 5 Ram & Meter Clear (Barcrest) (MPU5) + + + m5clubsn + Club Sandwich (Bwb) (MPU5) (set 1) + + + m5clubsn11 + Club Sandwich (Bwb) (MPU5) (set 2) + + + m5clubsn14 + Club Sandwich (Bwb) (MPU5) (set 3) + + + m5clubsn16 + Club Sandwich (Bwb) (MPU5) (set 4) + + + m5cmass + Critical Mass (Barcrest - Red Gaming) (MPU5) + + + m5cnct4 + Connect 4 (Vivid) (MPU5) (set 1) + + + m5cnct415 + Connect 4 (Vivid) (MPU5) (set 2) + + + m5cnct420 + Connect 4 (Vivid) (MPU5) (set 3) + + + m5cockdd + Cock A Doodle Dough! (Empire) (MPU5) (set 1) + + + m5cockdd05 + Cock A Doodle Dough! (Empire) (MPU5) (set 2) + + + m5codft + The Codfather (Barcrest) (MPU5) (set 1) + + + m5codft02 + The Codfather (Barcrest) (MPU5) (set 2) + + + m5coloss + Colossus Club (Empire) (MPU5) + + + m5cos + Costa Del Cash Casino (Barcrest) (MPU5) + + + m5cosclb + Costa Del Cash Club (Barcrest) (MPU5) + + + m5costa + Costa Del Cash (Barcrest) (MPU5) + + + m5cpcash + Captain Cash (Barcrest) (MPU5) + + + m5croclb + Crocodile Rock Club (Empire) (MPU5) + + + m5crocrk + Crocodile Rock (Empire) (MPU5) (set 1) + + + m5crocrk10 + Crocodile Rock (Empire) (MPU5) (set 2) + + + m5crsfir + Crossfire (Empire) (MPU5) + + + m5crzkni + Crazy Crazy Knights (Barcrest) (MPU5) (set 1) + + + m5crzkni03 + Crazy Crazy Knights (Barcrest) (MPU5) (set 2) + + + m5cshkcb + Card Shark Club (Vivid) (MPU5) (set 1) + + + m5cshkcb12 + Card Shark Club (Vivid) (MPU5) (set 2) + + + m5cshkcb13 + Card Shark Club (Vivid) (MPU5) (set 3) + + + m5cshstx + Cash Stax (Bwb) (MPU5) + + + m5cworan + Clockwork Oranges (Empire) (MPU5) (set 1) + + + m5cworan12 + Clockwork Oranges (Empire) (MPU5) (set 2) + + + m5dblfun + Double Fun (Lowen) (MPU5) + + + m5dblqts + Double Or Quits (Bwb) (MPU5) (set 1) + + + m5dblqts1b + Double Or Quits (Bwb) (MPU5) (set 4) + + + m5dblqtsa + Double Or Quits (Bwb) (MPU5) (set 2) + + + m5dblqtsb + Double Or Quits (Bwb) (MPU5) (set 3) + + + m5dbubl + Double Bubble (Barcrest - Red Gaming) (MPU5) + + + m5devil + Devil Of A Deal (Vivid) (MPU5) + + + m5dick + Dick Turnip (Bwb) (MPU5) (set 1) + + + m5dick10 + Dick Turnip (Bwb) (MPU5) (set 2) + + + m5dmnf + Diamonds Are Forever (Empire) (MPU5) (set 1) + + + m5dmnf10 + Diamonds Are Forever (Empire) (MPU5) (set 2) + + + m5dmnfcl + Diamonds Are Forever Club (Empire) (MPU5) (set 1) + + + m5dmnfcl04 + Diamonds Are Forever Club (Empire) (MPU5) (set 2) + + + m5dmnstr + Demon Streak (Barcrest - Red Gaming) (MPU5, set 1) + + + m5dmnstra + Demon Streak (Barcrest - Red Gaming) (MPU5, set 2) + + + m5donna + Donna Kebab (Bwb) (MPU5, set 1) + + + m5donnaa + Donna Kebab (Bwb) (MPU5, set 3) + + + m5donnad + Donna Kebab (Bwb) (MPU5, set 1, Datapak) + + + m5doshpk + Do$h 'n' Pecks (Barcrest) (MPU5) (set 1) + + + m5doshpk05 + Do$h 'n' Pecks (Barcrest) (MPU5) (set 2) + + + m5draclb + Ooh Aah Dracula Club (Barcrest) (MPU5) (set 1) + + + m5draclb01 + Ooh Aah Dracula Club (Barcrest) (MPU5) (set 3) + + + m5draclb07 + Ooh Aah Dracula Club (Barcrest) (MPU5) (set 2) + + + m5dragnd + Dragon Drop (Barcrest - Red Gaming) (MPU5, set 1) + + + m5dragnda + Dragon Drop (Barcrest - Red Gaming) (MPU5, set 2) + + + m5eggold + Egyptian Gold (Bwb) (MPU5) + + + m5egr + Elvis Gold Rush (Barcrest) (MPU5, set 1) + + + m5egra + Elvis Gold Rush (Barcrest) (MPU5, set 2) + + + m5egss + Elvis Gold Super Streak (Barcrest) (MPU5, set 1) + + + m5egssa + Elvis Gold Super Streak (Barcrest) (MPU5, set 2) + + + m5elband + El Bandido Club (Vivid) (MPU5) + + + m5elim + Eliminator (Barcrest) (MPU5) (set 1) + + + m5elim03 + Eliminator (Barcrest) (MPU5) (set 2) + + + m5elim04 + Eliminator (Barcrest) (MPU5) (set 3) + + + m5evgrhr + Elvis Gold Red Hot Roll (Barcrest) (MPU5, set 1) + + + m5evgrhra + Elvis Gold Red Hot Roll (Barcrest) (MPU5, set 2) + + + m5ewn + Each Way Nudge (Barcrest) (MPU5) (set 1) + + + m5ewn08 + Each Way Nudge (Barcrest) (MPU5) (set 2) + + + m5extrm + Extreme (Empire) (MPU5) + + + m5extrmm + Extreme Madness (Empire) (MPU5) (set 1) + + + m5extrmm04a + Extreme Madness (Empire) (MPU5) (set 2) + + + m5extrmm04b + Extreme Madness (Empire) (MPU5) (set 3) + + + m5extrmm10 + Extreme Madness (Empire) (MPU5) (set 4) + + + m5fair + Fairground Attraction (Vivid) (MPU5) + + + m5fatcat + Fat Cat (Empire) (MPU5) + + + m5fewmor + A Few Dollars More (Empire) (MPU5) (v0.2, set 1) + + + m5fewmora + A Few Dollars More (Empire) (MPU5) (v0.2, set 2) + + + m5fewmorb + A Few Dollars More (Empire) (MPU5) (v0.3, set 1) + + + m5fewmorc + A Few Dollars More (Empire) (MPU5) (v0.3, set 2) + + + m5fiddle + On The Fiddle (Barcrest) (MPU5) (set 1) + + + m5fiddle03 + On The Fiddle (Barcrest) (MPU5) (set 2) + + + m5fire + All Fired Up (Barcrest) (MPU5) + + + m5firebl + Fireball (Barcrest) (MPU5) + + + m5fishcl + Fish Full Of Dollars Club (Empire) (MPU5) + + + m5fishdl + Fish Full Of Dollars (Empire) (MPU5) (set 1) + + + m5fishdl10 + Fish Full Of Dollars (Empire) (MPU5) (set 2) + + + m5flipcr + Flippin Crazy (Barcrest) (MPU5) + + + m5fmonty + The Full Monty (Empire) (MPU5) (set 1) + + + m5fmonty04a + The Full Monty (Empire) (MPU5) (set 2) + + + m5fmonty04b + The Full Monty (Empire) (MPU5) (set 3) + + + m5fmonty04c + The Full Monty (Empire) (MPU5) (set 4) + + + m5fmount + Full Mountie (Empire) (MPU5) + + + m5fnfair + Funfair (Barcrest - Red Gaming) (MPU5) + + + m5fnfaird + Funfair (Barcrest - Red Gaming) (MPU5) (Datapak) + + + m5fortby + Fort Boyard (Barcrest) (MPU5) (set 1) + + + m5fortby01 + Fort Boyard (Barcrest) (MPU5) (set 2) + + + m5frnzy + Frenzy (Barcrest) (MPU5) (set 1) + + + m5frnzya + Frenzy (Barcrest) (MPU5) (set 2) + + + m5funsun + Fun In The Sun (Barcrest) (MPU5) (set 1) + + + m5funsun03 + Fun In The Sun (Barcrest) (MPU5) (set 2) + + + m5fusir + Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 1) + + + m5fusir11 + Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 2) + + + m5fusir12 + Fruits U Sir (Barcrest - Red Gaming) (MPU5) (set 3) + + + m5gdrag + Golden Dragon (Barcrest) (MPU5) + + + m5gdrgcl + Golden Dragon Club (Barcrest) (MPU5) (set 1) + + + m5gdrgcl05 + Golden Dragon Club (Barcrest) (MPU5) (set 2) + + + m5ggems + Giant Gems (Vivid) (MPU5) (set 1) + + + m5ggems20 + Giant Gems (Vivid) (MPU5) (set 2) + + + m5gimmie + Gimmie Gimmie Gimmie (Barcrest) (MPU5) + + + m5gkeys + Golden Keys (Barcrest) (MPU5) + + + m5goape + Going Ape (Bwb) (MPU5) + + + m5gophcl + Gopher Gold Club (Empire) (MPU5) + + + m5gophr + Gopher Gold (Empire) (MPU5) + + + m5gpclub + Get Plastered Club (Bwb) (MPU5) + + + m5groll + Golden Roll (Vivid) (MPU5) + + + m5grush + Gold Rush (Barcrest) (MPU5) (set 1) + + + m5grush01 + Gold Rush (Barcrest) (MPU5) (set 6) + + + m5grush02 + Gold Rush (Barcrest) (MPU5) (set 5) + + + m5grush03 + Gold Rush (Barcrest) (MPU5) (set 4) + + + m5grush04 + Gold Rush (Barcrest) (MPU5) (set 3) + + + m5grush10 + Gold Rush (Barcrest) (MPU5) (set 2) + + + m5grush5 + Gold Rush Five Liner (Barcrest) (MPU5) (set 1) + + + m5grush504 + Gold Rush Five Liner (Barcrest) (MPU5) (set 2) + + + m5gruss + Gold Rush Sit Down (Barcrest) (MPU5) + + + m5grusst + Gold Rush Stampede (Barcrest) (MPU5) (set 1) + + + m5grusst03 + Gold Rush Stampede (Barcrest) (MPU5) (set 3) + + + m5grusst04 + Gold Rush Stampede (Barcrest) (MPU5) (set 2) + + + m5gsstrk + Gold Super Streak (Barcrest) (MPU5) (set 1) + + + m5gsstrk07 + Gold Super Streak (Barcrest) (MPU5) (set 2) + + + m5gstrik + Gold Strike (Barcrest) (MPU5) (set 1) + + + m5gstrik01 + Gold Strike (Barcrest) (MPU5) (set 4) + + + m5gstrik01a + Gold Strike (Barcrest) (MPU5) (set 5) + + + m5gstrik02 + Gold Strike (Barcrest) (MPU5) (set 3) + + + m5gstrik11 + Gold Strike (Barcrest) (MPU5) (set 2) + + + m5gstrika + Gold Strike (Barcrest) (MPU5) (set 6) + + + m5gstriks + Gold Strike (Barcrest) (MPU5) (V1.00, Spanish, Bilso S.A.) + + + m5hellrz + Hellraiser (Barcrest) (MPU5) + + + m5hgl + Happy Go Lucky (Bwb) (MPU5) (set 1) + + + m5hgl14 + Happy Go Lucky (Bwb) (MPU5) (set 3) + + + m5hgl16 + Happy Go Lucky (Bwb) (MPU5) (set 2) + + + m5hiclau + High Claudius (Vivid) (MPU5) + + + m5hifly + High Flyer (Barcrest) (MPU5) (set 1) + + + m5hifly03 + High Flyer (Barcrest) (MPU5) (set 2) + + + m5hifly04 + High Flyer (Barcrest) (MPU5) (set 3) + + + m5hilok + Hi Lo Karate (Vivid) (MPU5) + + + m5hisprt + High Spirits (Empire) (MPU5) + + + m5hlsumo + Hi Lo Sumo (Barcrest) (MPU5) + + + m5hocscl + Hocus Pocus Club (Empire) (MPU5) + + + m5hocus + Hocus Pocus (Empire) (MPU5) (set 1) + + + m5hocus10 + Hocus Pocus (Empire) (MPU5) (set 2) + + + m5holy + The Holy Grail (Barcrest) (MPU5) (set 1) + + + m5holy10 + The Holy Grail (Barcrest) (MPU5) (set 2) + + + m5honmon + Honey Money (Vivid) (MPU5) (set 1) + + + m5honmona + Honey Money (Vivid) (MPU5) (set 2) + + + m5hopidl + Hop Idol (Vivid) (MPU5) + + + m5horn + Horn Of Plenty (Barcrest / Whitbread) (MPU5) + + + m5hotrk + Hot Rocks (Barcrest) (MPU5) + + + m5hotsht + Hot Shots (Empire) (MPU5) (set 1) + + + m5hotsht07a + Hot Shots (Empire) (MPU5) (set 2) + + + m5hotsht08 + Hot Shots (Empire) (MPU5) (set 3) + + + m5hotsht08a + Hot Shots (Empire) (MPU5) (set 4) + + + m5hotsht10 + Hot Shots (Empire) (MPU5) (set 5) + + + m5hotsht10a + Hot Shots (Empire) (MPU5) (set 6) + + + m5hotslt + Hot Slot (Barcrest) (MPU5) + + + m5hotstf + Hot Stuff (Barcrest) (MPU5) + + + m5hula + Hula Moolah (Empire) (MPU5) (set 1) + + + m5hula10 + Hula Moolah (Empire) (MPU5) (set 2) + + + m5hulacl + Hula Moolah Club (Empire) (MPU5) + + + m5hypalx + Hypalinx (Barcrest - Red Gaming) (MPU5) + + + m5hypno + Hypnotic (Vivid) (MPU5) + + + m5hypvip + Hyper Viper (Barcrest) (MPU5) + + + m5invad + Invaders (Barcrest - Red Gaming) (MPU5) + + + m5jackbx + Jack In The Box (Empire) (MPU5) (set 1) + + + m5jackbx03 + Jack In The Box (Empire) (MPU5) (set 2) + + + m5jackp2 + Jackpoteers 2 (Barcrest) (MPU5) (set 1) + + + m5jackp2a + Jackpoteers 2 (Barcrest) (MPU5) (set 2) + + + m5jackpt + Jackpoteers (Barcrest) (MPU5) (set 1) + + + m5jackpt07 + Jackpoteers (Barcrest) (MPU5) (set 2) + + + m5jakjok + Jackpot Jokers (Lowen) (MPU5) + + + m5jcptgn + Jackpot Genie (Barcrest - Red Gaming) (MPU5) + + + m5jcy + Juicy Fruits (Empire) (MPU5) + + + m5jlstrk + Jewel Strike (Barcrest - Red Gaming) (MPU5) + + + m5jlyjwl + Jolly Jewels (Barcrest) (MPU5) (set 1) + + + m5jlyjwl01 + Jolly Jewels (Barcrest) (MPU5) (set 2) + + + m5jlyjwl02 + Jolly Jewels (Barcrest) (MPU5) (set 3) + + + m5jlyrog + Jolly Roger (Barcrest) (MPU5) (set 1) + + + m5jlyroga + Jolly Roger (Barcrest) (MPU5) (set 2) + + + m5jmpgem + Jumping Gems (Empire) (MPU5) (set 1) + + + m5jmpgem01 + Jumping Gems (Empire) (MPU5) (set 2) + + + m5jmpgem03 + Jumping Gems (Empire) (MPU5) (set 3) + + + m5jmpgmc + Jumping Gems Club (Empire) (MPU5) + + + m5jmpjok + Jumpin Jokers (Vivid) (MPU5) (set 1) + + + m5jmpjok11 + Jumpin Jokers (Vivid) (MPU5) (set 2) + + + m5jmpjoka + Jumpin Jokers (Vivid) (MPU5) (set 3) + + + m5jmpjokb + Jumpin Jokers (Vivid) (MPU5) (set 4) + + + m5jokpak + Joker In The Pack (Bwb) (MPU5) + + + m5kaleid + Kaleidoscope Club (Empire) (MPU5) + + + m5kcclb + King Cobra Club (Empire) (MPU5) (set 1) + + + m5kcclb24 + King Cobra Club (Empire) (MPU5) (set 2) + + + m5kingko + King KO (Barcrest) (MPU5) (set 1) + + + m5kingko04 + King KO (Barcrest) (MPU5) (set 2) + + + m5kingko05 + King KO (Barcrest) (MPU5) (set 3) + + + m5kingqc + Kings & Queens Club (Empire) (MPU5) (set 1) + + + m5kingqc06 + Kings & Queens Club (Empire) (MPU5) (set 2) + + + m5kingqc07 + Kings & Queens Club (Empire) (MPU5) (set 3) + + + m5kingqc08 + Kings & Queens Club (Empire) (MPU5) (set 4) + + + m5kkebab + King Kebab (Barcrest) (MPU5) (set 1) + + + m5kkebab10 + King Kebab (Barcrest) (MPU5) (set 2) + + + m5kkebaba + King Kebab (Barcrest) (MPU5) (set 3) + + + m5korma + Korma Chameleon (Empire) (MPU5) (set 1) + + + m5korma12 + Korma Chameleon (Empire) (MPU5) (set 2) + + + m5kormcl + Korma Chameleon Club (Empire) (MPU5) + + + m5lock + Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 1) + + + m5lock12 + Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 3) + + + m5lock13 + Lock 'n' Load (Barcrest - Red Gaming) (MPU5) (set 2) + + + m5lockcl + Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 1) + + + m5lockcl14 + Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 3) + + + m5lockcl15 + Lock 'n' Load Club (Barcrest - Red Gaming) (MPU5) (set 2) + + + m5loony + Loony Juice (Vivid) (MPU5) + + + m5loot + Loot 'n' Khamun (Vivid) (MPU5, set 1) + + + m5loota + Loot 'n' Khamun (Vivid) (MPU5, set 2) + + + m5lotta + Lotta Luck (Barcrest) (MPU5) + + + m5lvwire + Live Wire (Bwb) (MPU5) (set 1) + + + m5lvwirea + Live Wire (Bwb) (MPU5) (set 2) + + + m5mag7s + Magnificent 7s (Vivid) (MPU5, set 1) + + + m5mag7sa + Magnificent 7s (Vivid) (MPU5, set 2) + + + m5mag7sb + Magnificent 7s (Vivid) (MPU5, set 3) + + + m5mag7sc + Magnificent 7s (Vivid) (MPU5, set 4) + + + m5mag7sd + Magnificent 7s (Vivid) (MPU5, set 5) + + + m5mag7se + Magnificent 7s (Vivid) (MPU5, set 6) + + + m5martns + Money Mad Martians (Barcrest) (MPU5) (set 1) + + + m5martns07 + Money Mad Martians (Barcrest) (MPU5) (set 2) + + + m5mega + Mega Zone (Barcrest) (MPU5) + + + m5minesw + Minesweeper (Bwb) (MPU5) + + + m5mmak + Money Maker (Barcrest) (MPU5) (set 1) + + + m5mmak06 + Money Maker (Barcrest) (MPU5) (set 2) + + + m5monjok + Monedin Joker (Spanish) (Barcrest) (MPU5) (set 1) + + + m5monjoka + Monedin Joker (Spanish) (Barcrest) (MPU5) (set 2) + + + m5monmst + Money Monster (Empire) (MPU5) (set 1) + + + m5monmsta + Money Monster (Empire) (MPU5) (set 2) + + + m5monty + Monty Python (Barcrest) (MPU5) + + + m5mpfc + Monty Python's Flying Circus (Barcrest) (MPU5) + + + m5mpfccl + Monty Python's Flying Circus Club (Barcrest) (MPU5) + + + m5mprio + Monty Python Rio (Barcrest) (MPU5) + + + m5msf + Manic Streak Features (Vivid) (MPU5, set 1) + + + m5msfa + Manic Streak Features (Vivid) (MPU5, set 2) + + + m5neptun + Neptunes Treasure (Barcrest) (MPU5) + + + m5nitro + Nitro (Barcrest - Red Gaming) (MPU5) + + + m5nnww + Nudge Nudge Wink Wink (Barcrest) (MPU5) + + + m5nnwwgl + Nudge Nudge Wink Wink Gold (Barcrest) (MPU5) + + + m5oohaah + Ooh Aah Dracula (Barcrest) (MPU5) (set 1) + + + m5oohaah01 + Ooh Aah Dracula (Barcrest) (MPU5) (set 2) + + + m5oohrio + Ooh Ahh Dracula Rio (Barcrest) (MPU5) + + + m5openbx + Open The Box (Barcrest) (MPU5) (set 1) + + + m5openbx01 + Open The Box (Barcrest) (MPU5) (set 4) + + + m5openbx05 + Open The Box (Barcrest) (MPU5) (set 3) + + + m5openbx06 + Open The Box (Barcrest) (MPU5) (set 2) + + + m5overld + Overload (Barcrest) (MPU5) (set 1) + + + m5overld02 + Overload (Barcrest) (MPU5) (set 2) + + + m5overld10 + Overload (Barcrest) (MPU5) (set 3) + + + m5overld11 + Overload (Barcrest) (MPU5) (set 4) + + + m5paint + Paint The Town Red (Barcrest - Red Gaming) (MPU5) + + + m5peepsh + Peep Show (Barcrest) (MPU5) + + + m5piefac + Pie Factory (Vivid) (MPU5) (set 1) + + + m5piefac12 + Pie Factory (Vivid) (MPU5) (set 3) + + + m5piefac23 + Pie Factory (Vivid) (MPU5) (set 2) + + + m5piefaca + Pie Factory (Vivid) (MPU5) (set 4) + + + m5piefc2 + Pie Factory 2 (Vivid) (MPU5) (set 1) + + + m5piefc2a + Pie Factory 2 (Vivid) (MPU5) (set 2) + + + m5piefc2b + Pie Factory 2 (Vivid) (MPU5) (set 3) + + + m5piefcr + Pie Factory Rio (Vivid) (MPU5) + + + m5ppussy + Pink Pussy (Mdm) (MPU5) + + + m5psy2 + Psycho Cash Beast 2 (Barcrest) (MPU5) + + + m5psyccl + Psycho Cash Beast Club (Barcrest) (MPU5) (set 1) + + + m5psyccl01 + Psycho Cash Beast Club (Barcrest) (MPU5) (set 2) + + + m5psyccla + Psycho Cash Beast Club (Bwb) (MPU5) (set 1) + + + m5psyccla02 + Psycho Cash Beast Club (Bwb) (MPU5) (set 3) + + + m5psyccla24 + Psycho Cash Beast Club (Bwb) (MPU5) (set 2) + + + m5psycho + Psycho Cash Beast (Barcrest) (MPU5) (set 1) + + + m5psycho06 + Psycho Cash Beast (Barcrest) (MPU5) (set 2) + + + m5psychoa + Psycho Cash Beast (Bwb) (MPU5) (set 1) + + + m5psychoa21 + Psycho Cash Beast (Bwb) (MPU5) (set 2) + + + m5ptyani + Party Animal (Barcrest) (MPU5) (set 1) + + + m5ptyani01 + Party Animal (Barcrest) (MPU5) (set 2) + + + m5qdraw + Quick On The Draw (Vivid) (MPU5) (set 1) + + + m5qdraw12 + Quick On The Draw (Vivid) (MPU5) (set 2) + + + m5qdraw14 + Quick On The Draw (Vivid) (MPU5) (set 3) + + + m5qdraw15 + Quick On The Draw (Vivid) (MPU5) (set 4) + + + m5qdrawa + Quick On The Draw (Vivid) (MPU5) (set 5) + + + m5qdrawb + Quick On The Draw (Vivid) (MPU5) (set 6) + + + m5qshot + Quack Shot (Barcrest) (MPU5) (set 1) + + + m5qshot04 + Quack Shot (Barcrest) (MPU5) (set 2) + + + m5quake + Quake (Barcrest - Red Gaming) (MPU5) + + + m5rainrn + Rainbow Runner (Barcrest - Red Gaming) (MPU5, set 1) + + + m5rainrna + Rainbow Runner (Barcrest - Red Gaming) (MPU5, set 2) + + + m5rampg + Rampage (Barcrest - Red Gaming) (MPU5) (set 1) + + + m5rampg11 + Rampage (Barcrest - Red Gaming) (MPU5) (set 2) + + + m5rampg12 + Rampage (Barcrest - Red Gaming) (MPU5) (set 3) + + + m5ramrcl + Ram Raid Club (Empire) (MPU5) + + + m5ramrd + Ram Raid (Empire) (MPU5) + + + m5ratpk + Rat Pack (Vivid) (MPU5) (set 1) + + + m5ratpka + Rat Pack (Vivid) (MPU5) (set 2) + + + m5rawin + Reel A Win (Vivid / Whitbread) (MPU5) + + + m5razdz + Razzle Dazzle Club (Barcrest) (MPU5) (set 1) + + + m5razdz10 + Razzle Dazzle Club (Barcrest) (MPU5) (set 2) + + + m5razdz11 + Razzle Dazzle Club (Barcrest) (MPU5) (set 3) + + + m5rcx + Royal Exchange Club (Barcrest) (MPU5) (set 1) + + + m5rcxa + Royal Exchange Club (Barcrest) (MPU5) (set 2) + + + m5rdwarf + Red Dwarf (Barcrest - Red Gaming) (MPU5) + + + m5redbal + Random Red Ball (Vivid) (MPU5) + + + m5redrck + Ready To Rock (Barcrest) (MPU5) (set 1) + + + m5redrck10 + Ready To Rock (Barcrest) (MPU5) (set 2) + + + m5redrcka + Ready To Rock (Barcrest) (MPU5) (set 3) + + + m5redx + Red X (Barcrest - Red Gaming) (MPU5) (set 1) + + + m5redx12 + Red X (Barcrest - Red Gaming) (MPU5) (set 2) + + + m5reelth + Reel Thunder (Bwb) (MPU5) + + + m5reelwn + Reel A Win (Bwb) (MPU5) (set 1) + + + m5reelwn24 + Reel A Win (Bwb) (MPU5) (set 2) + + + m5resfrg + Reservoir Frogs (Empire) (MPU5) + + + m5revo + Revolution (Barcrest) (MPU5) (set 1) + + + m5revo13 + Revolution (Barcrest) (MPU5) (set 2) + + + m5revoa + Revolution (Barcrest) (MPU5) (set 3) + + + m5rfymc + Run For Your Money Club (Barcrest) (MPU5) (set 1) + + + m5rfymc06 + Run For Your Money Club (Barcrest) (MPU5) (set 2) + + + m5rgclb + Rio Grande Club (Barcrest) (MPU5) (set 1) + + + m5rgclb01 + Rio Grande Club (Barcrest) (MPU5) (set 7) + + + m5rgclb01a + Rio Grande Club (Barcrest) (MPU5) (set 8) + + + m5rgclb03 + Rio Grande Club (Barcrest) (MPU5) (set 6) + + + m5rgclb11 + Rio Grande Club (Barcrest) (MPU5) (set 2) + + + m5rgclb12 + Rio Grande Club (Barcrest) (MPU5) (set 3) + + + m5rgclb20 + Rio Grande Club (Barcrest) (MPU5) (set 4) + + + m5rgclb21 + Rio Grande Club (Barcrest) (MPU5) (set 5) + + + m5rhkni + Red Hot Knights (Barcrest) (MPU5) + + + m5rhrg + Red Hot Roll Gold (Barcrest) (MPU5) (set 1) + + + m5rhrga + Red Hot Roll Gold (Barcrest) (MPU5) (set 2) + + + m5rhrgt + Red Hot Roll Triple (Barcrest) (MPU5) (set 1) + + + m5rhrgt02 + Red Hot Roll Triple (Barcrest) (MPU5) (set 3) + + + m5rhrgt12 + Red Hot Roll Triple (Barcrest) (MPU5) (set 2) + + + m5ritj + Rumble In The Jungle (Barcrest) (MPU5) + + + m5rlup + Roll Up (Bwb) (MPU5) + + + m5rollup + Roll Up Roll Up (Vivid) (MPU5) + + + m5rollx + Roll X (Empire) (MPU5) (set 1) + + + m5rollx12 + Roll X (Empire) (MPU5) (set 2) + + + m5ronr + Reel Or No Reel (Empire) (MPU5) (set 1) + + + m5ronr05 + Reel Or No Reel (Empire) (MPU5) (set 2) + + + m5ronr07 + Reel Or No Reel (Empire) (MPU5) (set 3) + + + m5roof + Raise The Roof (Barcrest) (MPU5) (set 1) + + + m5roofa + Raise The Roof (Barcrest) (MPU5) (set 2) + + + m5round + Round & Round (Bwb) (MPU5) + + + m5roundl + Round & Round (Lowen) (MPU5) + + + m5rthh + Return To The Haunted House (Empire) (MPU5) + + + m5rub + Rubies & Diamonds (Barcrest) (MPU5) + + + m5rwb + Red White & Blue (Barcrest) (MPU5) + + + m5rwbbwb + Red White & Blue (Bwb) (MPU5) (set 1) + + + m5rwbbwb15 + Red White & Blue (Bwb) (MPU5) (set 4) + + + m5rwbbwb24 + Red White & Blue (Bwb) (MPU5) (set 2) + + + m5rwbbwb25 + Red White & Blue (Bwb) (MPU5) (set 3) + + + m5sblz + Snail Blazer (Barcrest - Red Gaming) (MPU5) + + + m5scfinl + Super Cup Final (Lowen) (MPU5) + + + m5scharg + Super Charged (Barcrest) (MPU5) (set 1) + + + m5scharg05 + Super Charged (Barcrest) (MPU5) (set 2) + + + m5scharg06 + Super Charged (Barcrest) (MPU5) (set 3) + + + m5scharga + Super Charged (Barcrest) (MPU5) (set 4) + + + m5sec7 + Secret 7s (Bwb) (MPU5) (set 1) + + + m5sec7a + Secret 7s (Bwb) (MPU5) (set 2) + + + m5seven + Seven Deadly Spins (Barcrest) (MPU5) + + + m5shark + Shark Raving Mad (Vivid) (MPU5) (set 1) + + + m5sharka + Shark Raving Mad (Vivid) (MPU5) (set 2) + + + m5sheik + Sheik Yer Money (Barcrest) (MPU5) + + + m5showtm + Showtime (Barcrest) (MPU5) + + + m5sil7 + Silver 7s (Bwb) (MPU5) (set 1) + + + m5sil7a + Silver 7s (Bwb) (MPU5) (set 2) + + + m5silver + Silver Screen (Barcrest) (MPU5) (set 1) + + + m5silver03 + Silver Screen (Barcrest) (MPU5) (set 3) + + + m5silver06 + Silver Screen (Barcrest) (MPU5) (set 2) + + + m5sixsht + Six Shooter (Vivid) (MPU5) (v1.1, set 1) + + + m5sixshta + Six Shooter (Vivid) (MPU5) (v1.1, set 2) + + + m5sixshtb + Six Shooter (Vivid) (MPU5) (v2.0, set 1) + + + m5sixshtc + Six Shooter (Vivid) (MPU5) (v2.0, set 2) + + + m5sixshtd + Six Shooter (Vivid) (MPU5) (v2.0, set 3) + + + m5sixshte + Six Shooter (Vivid) (MPU5) (v2.0, set 4) + + + m5sixshtf + Six Shooter (Vivid) (MPU5) (v2.0, set 5) + + + m5sixshtg + Six Shooter (Vivid) (MPU5) (v2.0, set 6) + + + m5sixshth + Six Shooter (Vivid) (MPU5) (v2.0, set 7) + + + m5sixshti + Six Shooter (Vivid) (MPU5) (v2.1, set 1) + + + m5sixshtj + Six Shooter (Vivid) (MPU5) (v2.1, set 2) + + + m5sixshtk + Six Shooter (Vivid) (MPU5) (v2.1, set 3) + + + m5sixshtl + Six Shooter (Vivid) (MPU5) (v2.1, set 4) + + + m5sixshtm + Six Shooter (Vivid) (MPU5) (v2.1, set 5) + + + m5sixshtn + Six Shooter (Vivid) (MPU5) (v2.1, set 6) + + + m5skulcl + Skullduggery Club (Empire) (MPU5) (set 1) + + + m5skulcl20 + Skullduggery Club (Empire) (MPU5) (set 2) + + + m5skulcl23 + Skullduggery Club (Empire) (MPU5) (set 3) + + + m5slide + Slider (Barcrest - Red Gaming) (MPU5) + + + m5smobik + Smokey Bikin (Bwb) (MPU5) (set 1) + + + m5smobik12 + Smokey Bikin (Bwb) (MPU5) (set 2) + + + m5sondr + Son Of Dracula (Barcrest) (MPU5) (set 1) + + + m5sondr05 + Son Of Dracula (Barcrest) (MPU5) (set 2) + + + m5sondra + Son Of Dracula (Barcrest) (MPU5) (15GBP Jackpot) + + + m5spddmn + Speed Demon (Vivid) (MPU5) + + + m5speccl + Spectrum Club (Vivid) (MPU5) + + + m5spicer + The Spice Is Right (Barcrest) (MPU5) (set 1) + + + m5spicer06 + The Spice Is Right (Barcrest) (MPU5) (set 2) + + + m5spiker + Spiker The Biker (Barcrest) (MPU5) (set 1) + + + m5spiker02 + Spiker The Biker (Barcrest) (MPU5) (set 2) + + + m5spikera + Spiker The Biker (Barcrest) (MPU5) (set 3) + + + m5spins + Spinsation (Barcrest) (MPU5) + + + m5squids + Squids In (Barcrest) (MPU5) (set 1) + + + m5squids04a + Squids In (Barcrest) (MPU5) (set 2) + + + m5squids05 + Squids In (Barcrest) (MPU5) (set 3) + + + m5squids06 + Squids In (Barcrest) (MPU5) (set 4) + + + m5sstrk + Super Streak (Barcrest) (MPU5) (set 1) + + + m5sstrk02a + Super Streak (Barcrest) (MPU5) (set 2) + + + m5starcl + Stars & Stripes Club (Vivid) (MPU5) + + + m5stars + Stars & Stripes (Vivid) (MPU5) (set 1) + + + m5stars10 + Stars & Stripes (Vivid) (MPU5) (set 8) + + + m5stars10a + Stars & Stripes (Vivid) (MPU5) (set 9) + + + m5stars13a + Stars & Stripes (Vivid) (MPU5) (set 2) + + + m5stars20 + Stars & Stripes (Vivid) (MPU5) (set 7) + + + m5stars22 + Stars & Stripes (Vivid) (MPU5) (set 6) + + + m5stars25 + Stars & Stripes (Vivid) (MPU5) (set 5) + + + m5stars25a + Stars & Stripes (Vivid) (MPU5) (set 4) + + + m5stars26 + Stars & Stripes (Vivid) (MPU5) (set 3) + + + m5startr + Stars & Stripes Triple (Vivid) (MPU5) + + + m5stax + Stax Of Cash (Barcrest) (MPU5) + + + m5supnov + Supernova (Barcrest) (MPU5) (set 1) + + + m5supnova + Supernova (Barcrest) (MPU5) (set 2) + + + m5supro + Super Roulette (Vivid) (MPU5) (set 1) + + + m5suproa + Super Roulette (Vivid) (MPU5) (set 2) + + + m5supstr + Super Star (Barcrest) (MPU5) (set 1) + + + m5supstra + Super Star (Barcrest) (MPU5) (set 2) + + + m5tball + Thunderball (Empire) (MPU5) + + + m5tbird + Thunderbird (Barcrest) (MPU5) + + + m5tempcl + Temple Of Treasure Club (Barcrest) (MPU5) + + + m5tempp + Temple Of Pleasure (Vivid) (MPU5) + + + m5tempt + Temple Of Treasure (Barcrest) (MPU5) (set 1) + + + m5tempt05 + Temple Of Treasure (Barcrest) (MPU5) (set 2) + + + m5tempt2 + Temple Of Treasure 2 (Barcrest) (MPU5) (set 1) + + + m5tempt203 + Temple Of Treasure 2 (Barcrest) (MPU5) (set 2) + + + m5tempt2a + Temple Of Treasure 2 (Barcrest) (MPU5) (set 3) + + + m5tempta + Temple Of Treasure (Barcrest) (MPU5) (set 3) + + + m5temptb + Temple Of Treasure (Barcrest) (MPU5) (set 4) + + + m5thtsmg + That's Magic (Barcrest - Red Gaming) (MPU5) + + + m5tictac + Tic Tac Tut (Vivid) (MPU5) + + + m5tictacbwb + Tic Tac Tut (Bwb) (MPU5) (set 1) + + + m5tictacbwb16 + Tic Tac Tut (Bwb) (MPU5) (set 2) + + + m5tomb + Tomb Raiders (Empire) (MPU5) + + + m5topdog + Top Dog (Barcrest) (MPU5) (set 1) + + + m5topdog04 + Top Dog (Barcrest) (MPU5) (set 2) + + + m5topdoga + Top Dog (Barcrest) (MPU5) (set 3) + + + m5topdol + Top Dollar (Barcrest - Red Gaming) (MPU5) (set 1) + + + m5topdola + Top Dollar (Barcrest - Red Gaming) (MPU5) (set 2) + + + m5trail + Trailblazer Club (Barcrest) (MPU5) + + + m5trclb + Tomb Raiders Club (Empire) (MPU5) + + + m5tsar + Tsar Wars (Empire) (MPU5) + + + m5tst + MPU 5 Test Rom (Barcrest) (MPU5) + + + m5ttop + Treble Top (Empire) (MPU5) (set 1) + + + m5ttop04 + Treble Top (Empire) (MPU5) (set 2) + + + m5ttop10 + Treble Top (Empire) (MPU5) (set 3) + + + m5ttopcl + Treble Top Club (Empire) (MPU5) + + + m5ttwo + Take Two (Barcrest) (MPU5) + + + m5ultimo + Ultimo (Barcrest) (MPU5) (set 1) + + + m5ultimo03a + Ultimo (Barcrest) (MPU5) (set 2) + + + m5ultimo04 + Ultimo (Barcrest) (MPU5) (set 3) + + + m5upover + Up & Over (Barcrest) (MPU5) (set 1) + + + m5upover15 + Up & Over (Barcrest) (MPU5) (set 2) + + + m5vampup + Vamp It Up (Barcrest) (MPU5) + + + m5vertcl + Vertigo Club (Empire) (MPU5) + + + m5vertgo + Vertigo (Empire) (MPU5) + + + m5whdres + Who Dares Spins (MPU5) + + + m5winway + Winning Ways (MPU5) + + + m5wking + Wild King (Barcrest) (MPU5) (set 1) + + + m5wking05 + Wild King (Barcrest) (MPU5) (set 2) + + + m5wonga + A Fish Called Wonga (Empire) (MPU5) + + + m5wthing + Wild Thing Club (Empire) (MPU5) (set 1) + + + m5wthing11 + Wild Thing Club (Empire) (MPU5) (set 2) + + + m5wthing20 + Wild Thing Club (Empire) (MPU5) (set 3) + + + m5xchn + Exchanges Unlimited (Barcrest) (MPU5) + + + m5xena + Xena Warrior Princess (Bwb) (MPU5) + + + m5xfact + X Factor (Empire) (MPU5) (set 1) + + + m5xfact02 + X Factor (Empire) (MPU5) (set 2) + + + m5xfact04 + X Factor (Empire) (MPU5) (set 3) + + + m5xfact11 + X Factor (Empire) (MPU5) (set 4) + + + m5zigzag + Zig Zag (Barcrest - Red Gaming) (MPU5) + + + m660 + Mission 660 (US) + + + m660b + Mission 660 (bootleg) + + + m660j + Mission 660 (Japan) + + + m79amb + M-79 Ambush + + + m_bappl2 + Big Apple (Leisure Games) (MPU1) (5p Stake, £2 Jackpot) + + + m_bapple + Big Apple (Leisure Games) (MPU1) (5p Stake, £1 Jackpot) + + + m_gndgit + Golden Nudge It (Barcrest) (MPU1) (5p Stake, £1 Jackpot) + + + m_lndg + Lucky Nudge (Leisure Games) (MPU1) (5p Stake, £1 Jackpot) + + + m_mpac + Mr. and Mrs. PacMan (set 1) + + + m_mpacb + Mr. and Mrs. PacMan (set 2) + + + m_mtchit + Match It (Barcrest) (MPU1) (5p Stake, £1 Jackpot) + + + m_mtchup + Match Up (Barcrest) (MPU1) (10p Stake, £2 Jackpot) + + + m_tppokr + Top Poker (Dutch, Game Card 95-750-899) + + + ma6710 + Multi-Action 6710-13 + + + ma6710a + Multi-Action 6710-21 + + + ma6711 + Multi-Action 6711-14-R0A + + + ma7551p + Multi-Action 7551-21-R2P + + + ma7551t + Multi-Action 7551-20-R3T + + + ma7556 + Multi-Action 7556-00-R2 + + + ma7558r0 + Multi-Action 7558-01-R0 + + + ma7558r4 + Multi-Action 7558-01-R4 + + + ma8340 + Multi-Action 8340-01-R1 + + + ma8350 + Multi-Action 8350-00-R1 + + + ma9800 + Multi-Action 9800-20-R0 + + + mac_1808 + unknown game (MAC #1808) + + + mac_zois + machinaZOIS Virtual Training Center + + + macattck + Mac Attack + + + mace + Mace: The Dark Age (boot ROM 1.0ce, HDD 1.0b) + + + macea + Mace: The Dark Age (HDD 1.0a) + + + macgalxy + MAC's Galaxy (yellow version, M.6) + + + macgalxyb + MAC's Galaxy (blue version, M.042) + + + mach2 + Mach 2 (set 1) + + + mach2a + Mach 2 (set 2) + + + mach3 + M.A.C.H. 3 (set 1) + + + mach3a + M.A.C.H. 3 (set 2) + + + mach3b + M.A.C.H. 3 (set 3) + + + mach9 + Mach-9 (bootleg of Vulgus) + + + macha + Monoshiri Quiz Oshaberi Macha (Japan) + + + machbrkr + Mach Breakers (World, MB2) + + + machbrkrj + Mach Breakers - Numan Athletics 2 (Japan, MB1) + + + machomou + Macho Mouse + + + machridj + Vs. Mach Rider (Japan, Fighting Course Version) + + + machridr + Vs. Mach Rider (Endurance Course Version) + + + macjungl + MAC Jungle + + + macjungn + MAC Jungle (New version) + + + macross + Super Spacefortress Macross / Chou-Jikuu Yousai Macross + + + macross2 + Super Spacefortress Macross II / Chou-Jikuu Yousai Macross II + + + macross2g + Super Spacefortress Macross II / Chou-Jikuu Yousai Macross II (Gamest review build) + + + macross2k + Macross II (Korea) + + + macrossp + Macross Plus + + + madalien + Mad Alien (set 1) + + + madaliena + Mad Alien (set 2) + + + madalienb + Mad Alien (set 2, alt gfx) + + + madball + Mad Ball (V2.0) + + + madballn + Mad Ball (V2.0, with nudity) + + + madcrash + Mad Crasher + + + madcrush + Mad Crusher (Japan) + + + maddog + Mad Dog McCree (v2.03 board rev.B) + + + maddog2 + Mad Dog II: The Lost Gold (v2.04) + + + maddog2_100 + Mad Dog II: The Lost Gold (v1.00) + + + maddog2_110 + Mad Dog II: The Lost Gold (v1.10) + + + maddog2_202 + Mad Dog II: The Lost Gold (v2.02) + + + maddog_202 + Mad Dog McCree (v2.02 board rev.B) + + + maddoga + Mad Dog McCree (v1C board rev.A) + + + maddonna + Mad Donna (Tuning, set 1) + + + maddonnab + Mad Donna (Tuning, set 2) + + + maddonnb + Mad Donna (set 2) + + + madgear + Mad Gear (US) + + + madgearj + Mad Gear (Japan) + + + madmoney2 + Mad Money 2 + + + madmotor + Mad Motor (prototype, set 1) + + + madmotora + Mad Motor (prototype, set 2) + + + madrace + Mad Race + + + madshark + Mad Shark + + + madsharkbl + Mad Shark (bootleg) + + + madzoo + Mad Zoo (version U450C) + + + mag10 + Magic 10 Nevada (bootleg of Pool 10) + + + mag_boob + Booby Kids (Magnet System) + + + mag_burn + The Burning Cavern (31/03/87) + + + mag_day + A Day In Space (31/03/87) + + + mag_drac + Dracula's Castle (Magnet System) + + + mag_exzi + Exzisus (EX 1.0, Magnet System) + + + mag_pdak + Paris Dakar (31/03/87, Spanish) + + + mag_time + Time Scanner (TS 2.0, Magnet System) + + + mag_war + War Mission (WM 04/06/87) + + + mag_wara + War Mission (WM 09/04/87) + + + mag_xain + Xain'd Sleena (SC 3.0, Magnet System) + + + magdrop + Magical Drop (Japan, Version 1.1, 1995.06.21) + + + magdrop2 + Magical Drop II + + + magdrop3 + Magical Drop III + + + magdrop3bh + Magical Drop III (Secret Character Hack) + + + magdrop3te + Magical Drop III Tournament Edition + + + magdropp + Magical Drop Plus 1 (Japan, Version 2.1, 1995.09.12) + + + magerror + Magical Error wo Sagase + + + magforst + Magic Forest (0151139, US) + + + magibomb + Magic Bomb (Ver. L3.5S) + + + magibomba + Magic Bomb (Ver. BR4.4, 04/19/02S) + + + magibombb + Magic Bomb (Ver. AB4.5A, 07/10/02S) + + + magibombc + Magic Bomb (Ver. AB4.2, 11/10/01) + + + magibombd + Magic Bomb (Ver. AA.72.D, 14/11/05) + + + magibombe + Magic Bomb (Ver. A3.1) + + + magibombf + Magic Bomb (Ver. NB4.5, 06/14/02S) + + + magibombg + Magic Bomb (Ver. NB6.1, 26/04/04) + + + magibombh + Magic Bomb (Ver. A4.0A) + + + magibombi + Magic Bomb (Ver. A3.6A) + + + magibombj + Magic Bomb (Ver. AA.72.C, 25/05/05) + + + magibombk + Magic Bomb (Ver. A3.0) + + + magibombl + Magic Bomb (Ver. AB4.3A, 10/30/01S) + + + magibombm + Magic Bomb (Ver. AB5.3, 20/06/03) + + + magibombn + Magic Bomb (Ver. EB4.0, 05/04/01) + + + magic + Magic + + + magic10 + Magic's 10 (ver. 16.55) + + + magic102 + Magic's 10 2 (ver. 1.1) + + + magic102a + Magic's 10 2 (ver. BETA3) + + + magic10a + Magic's 10 (ver. 16.54) + + + magic10b + Magic's 10 (ver. 16.45) + + + magic10c + Magic's 10 (ver. 16.15) + + + magicard + Magic Card (v2.01) + + + magicbal + Magicball Fighting (Korea) + + + magicbom + Magic Bomb (Version 1) + + + magicbub + Magic Bubble + + + magicbuba + Magic Bubble (Adult version, YS1302 PCB, set 1) + + + magicbubb + Magic Bubble (Adult version, YS1302 PCB, set 2) + + + magicbubc + Magic Bubble (Adult version, YS-0211 PCB) + + + magicfly + Magic Fly + + + magician + The Magician (20210111, NSW/ACT) + + + magicle + Magic Lotto Export (5.03) + + + magicpop + Magical Poppins + + + magicrd1 + Magic Card (v1.10 14.09.94) + + + magicrd1a + Magic Card (v1.5 17.12.93, set 1) + + + magicrd1b + Magic Card (v1.5 17.12.93, set 2) + + + magicrd1c + Magic Card (v1.2 200/93, set 1) + + + magicrd1d + Magic Card (v1.2 200/93, set 2) + + + magicrd2 + Magic Card II (Bulgarian) + + + magicrd2a + Magic Card II (Nov, Yugoslavian) + + + magicrd2b + Magic Card II (green TAB or Impera board) + + + magicrd2c + Magic Card II (blue TAB board, encrypted) + + + magicrde + Magic Card Export 94 (v2.11a, set 1) + + + magicrdea + Magic Card Export 94 (v2.11a, set 2) + + + magicrdeb + Magic Card Export 94 (V2.11a, set 3) + + + magicrdec + Magic Card Export 94 (v2.09a) + + + magicrdj + Magic Card III Jackpot (V4.01 6/98) + + + magicrdja + Magic Card III Jackpot (V4.01 7/98) + + + magicstk + Magic Sticks + + + magictch + Magic Touch (v. 28.05) + + + magictcha + Magic Touch (v. 24.03) + + + magictg + Magic the Gathering: Armageddon (set 1) + + + magictga + Magic the Gathering: Armageddon (set 2) + + + magimask + Magic Mask (AHG1549, US) + + + magimaska + Magic Mask (AHG1548, US) + + + magimaskb + Magic Mask (DHG1309, US) + + + magimaskc + Magic Mask (AHG1207, US) + + + magipur + Magic Purple + + + magix + Magix / Rock + + + magixb + Magix / Rock (no copyright message) + + + magjack + Magical Jack (VA 4.00) + + + magjacka + Magical Jack (VA 3.30) + + + magjackb + Magical Jack (VA 3.11) + + + magjackc + Magical Jack (VA 2.0) + + + magjackp + Magical Jack Plus (VA 6.03) + + + magjackpa + Magical Jack Plus (VA 6.01) + + + magjoker + Magic Joker (v1.25.10.2000) + + + magkengo + Magical Kengo 2005 (Ver. 1.2) + + + magkengou + Magical Kengo 2005 (Ver. USA 1.10) + + + maglord + Magician Lord (NGM-005) + + + maglordh + Magician Lord (NGH-005) + + + magmax + Mag Max (set 1) + + + magmaxa + Mag Max (set 2) + + + magmerm + Magic Mermaid (0251331, US) + + + magodds + Magical Odds (set 1) + + + magoddsa + Magical Odds (set 2) + + + magoddsb + Magical Odds (set 3) + + + magoddsc + Magical Odds (set 4, custom encrypted CPU block) + + + magoddsd + Magical Odds (set 5, custom encrypted CPU block) + + + magreel + Magic Reels + + + magslot + Magic Slot (normal 1.0C) + + + magspeed + Magical Speed + + + magspot + Magical Spot + + + magspot2 + Magical Spot II + + + magtcha5 + Magic Touch (0300455V, NSW/ACT) + + + magtcha5a + Magic Touch (0200455V, NSW/ACT) + + + magtouch + Magical Touch + + + magtruck + Magical Truck Adventure (Export) + + + maguila + Up Maguila (bootleg of Donkey Kong Jr.) + + + magworm + Magic Worm (bootleg of Centipede, set 1) + + + magworma + Magic Worm (bootleg of Centipede, set 2) + + + magzun + Magical Zunou Power (J 961031 V1.000) + + + mahjngoh + Mahjong Oh (V2.06J 1999/11/23 08:52:22) + + + mahmajn + Tokoro San no MahMahjan (Japan, ROM Based) + + + mahmajn2 + Tokoro San no MahMahjan 2 (Japan, ROM Based) + + + mahoudai + Mahou Daisakusen (Japan) + + + mahretsu + Mahjong Kyo Retsuden (NGM-004 ~ NGH-004) + + + maiko + Maikobana (Japan 900802) + + + mainev2p + The Main Event (2 Players ver. X) + + + mainevt + The Main Event (4 Players ver. Y) + + + mainevt2p + The Main Event (2 Players ver. X) + + + mainevto + The Main Event (4 Players ver. F) + + + mainline + Mainline Double Joker Poker + + + mainsnk + Main Event (1984) + + + majest12 + Majestic Twelve - The Space Invaders Part IV (Japan) + + + majest12j + Majestic Twelve - The Space Invaders Part IV (Japan) + + + majest12u + Majestic Twelve - The Space Invaders Part IV (US, revised code, Rev 1) + + + majest12ua + Majestic Twelve - The Space Invaders Part IV (US, revised code) + + + majest12ub + Majestic Twelve - The Space Invaders Part IV (US, earlier code base) + + + majorpkr + Major Poker (set 1, v2.0) + + + majorpkra + Major Poker (set 2, Micro Manufacturing intro) + + + majorpkrb + Major Poker (set 3, Micro Manufacturing intro) + + + majorpkrc + Major Poker (set 4, Micro Manufacturing intro) + + + majrjh + Mahjong Raijinhai (Ver. D105) + + + majrjhdx + Mahjong Raijinhai DX (Ver. D105) + + + majs101b + Mahjong Studio 101 (Japan) + + + majtitl2 + Major Title 2 (World, set 1) + + + majtitl2a + Major Title 2 (World, set 1, alt sound CPU) + + + majtitl2b + Major Title 2 (World, set 2) + + + majtitl2j + Major Title 2 (Japan) + + + majtitle + Major Title (World) + + + majtitlej + Major Title (Japan) + + + majuu + Majuu no Ohkoku + + + majxtal7 + Mahjong X-Tal 7 - Crystal Mahjong / Mahjong Diamond 7 (Japan) + + + makaiden + Makai Densetsu (Japan) + + + makaijan + Makaijan (Japan) + + + makaimuc + Makai-Mura (Japan Revision C) + + + makaimug + Makai-Mura (Japan Revision G) + + + makaimur + Makaimura (Japan) + + + makaimurb + Makaimura (Japan revision B) + + + makaimurbbl + Makaimura (Japan revision B bootleg) + + + makaimurc + Makaimura (Japan revision C) + + + makaimurg + Makaimura (Japan revision G) + + + maketrax + Make Trax (US set 1) + + + maketrxb + Make Trax (US set 2) + + + makyosen + Makyou Senshi (Japan) + + + maldaiza + Maldaliza + + + maletmad + Mallet Madness (v2.1) + + + malzak + Malzak + + + malzak2 + Malzak II + + + mamboagg + Mambo A Go-Go (GQA40 VER. JAB) + + + mamboagga + Mambo A Go-Go (GQA40 VER. JRB, Rental) + + + mammothm + Mammoth Money (0100425V, NSW/ACT) + + + mamonoro + Mamoru-kun wa Norowarete Shimatta! (Japan) + + + mandinga + Mandinga (Artemi bootleg of Amidar) + + + mandingac + Mandanga (bootleg of Mandinga on Galaxian hardware, set 2) + + + mandingaeg + Mandinga (Electrogame S.A. bootleg of Amidar) + + + mandingarf + Mandanga (bootleg of Mandinga on Galaxian hardware, set 1) + + + mandinka + Mandinka (bootleg of Amidar) + + + mangchi + Mang-Chi + + + manhatan + Manhattan 24 Bunsyo (Japan) + + + maniach + Mania Challenge (set 1) + + + maniach2 + Mania Challenge (set 2) + + + maniacsp + Maniac Square (ver 1.0, checksum b602, prototype) + + + maniacsq + Maniac Square (protected, Version 1.0, Checksum DEEE) + + + maniacsqa + Maniac Square (protected, Version 1.0, Checksum CF2D) + + + maniacsqs + Maniac Square (unprotected, Version 1.0, Checksum 66B1, 960419/1 PCB) + + + maniacsqu + Maniac Square (unprotected, Version 1.0, Checksum BB73) + + + manicpnc + Manic Panic Ghosts! (USA, Export) + + + manohman + Mann, oh-Mann + + + manpuku + Manpuku Suizokukan + + + manxtt + Manx TT Superbike - DX/Twin (Revision D) + + + manxttc + Manx TT Superbike - DX/Twin (Revision C) + + + manxttdx + Manx TT Superbike - DX + + + manybloc + Many Block + + + mappy + Mappy (US) + + + mappyj + Mappy (Japan) + + + maquinati + La Máquina del Tiempo + + + marble + Marble Madness (set 1) + + + marble2 + Marble Madness (set 2) + + + marble3 + Marble Madness (set 3) + + + marble4 + Marble Madness (set 4) + + + marble5 + Marble Madness (set 5 - LSI Cartridge) + + + marblmd2 + Marble Madness II (prototype) + + + marineb + Marine Boy + + + marinedt + Marine Date + + + mariner + Mariner + + + mario + Mario Bros. (US, Revision G) + + + mariobl + Mario Bros. (bootleg on Ambush Hardware, set 1) + + + mariobla + Mario Bros. (bootleg on Ambush Hardware, set 2) + + + marioe + Mario Bros. (US, Revision E) + + + mariof + Mario Bros. (US, Revision F) + + + marioj + Mario Bros. (Japan, Revision C) + + + mariojjl + Super Mario Fushigi no JanJanLand (Ver.1.00C, 2006/08/29) + + + mariorou + Mario Roulette + + + marioun + Super Mario World - Mario Undoukai + + + markham + Markham + + + marmagic + Margarita Magic (01J00101, NSW/ACT) + + + marmagicu + Margarita Magic (EHG1559, US) + + + marmagicua + Margarita Magic (EHG1558, US) + + + marmatcp + Martial Masters - Community Patch (Hack) + + + marmatsc + Martial Masters - Secret Characters (Hack) + + + marqueen + Martian Queen + + + mars + Mars + + + marsarf + Mars (bootleg) + + + marsp + Mars - God of War + + + marspf + Mars - God of War (French speech) + + + marspp + Mars - God of War (Prototype) + + + marstv + Mars TV (Japan) + + + martmast + Martial Masters / Xing Yi Quan (ver. 104, 102, 102US) + + + martmast102c + Martial Masters / Xing Yi Quan (ver. 102, 101, 101CN) + + + martmast103c + Martial Masters / Xing Yi Quan (ver. 103, 102, 101CN) + + + martmast104c + Martial Masters / Xing Yi Quan (ver. 104, 102, 101CN) + + + maruchan + Maru-Chan de Goo! (J 971216 V1.000) + + + marukin + Super Marukin-Ban (Japan 911128) + + + marukina + Super Marukin-Ban (Japan 901017) + + + marukodq + Chibi Maruko-chan: Maruko Deluxe Quiz + + + marvice + Marbella Vice + + + marvice100hz + Marbella Vice (100Hz display) + + + marvins + Marvin's Maze + + + marvland + Marvel Land (Japan) + + + marvlandup + Marvel Land (US, prototype) + + + marvlanj + Marvel Land (Japan) + + + marywu + unknown Labeled 'WU- MARY-1A' Music by: SunKiss Chen + + + masao + Masao + + + maski + Maski Show (Ukraine V. 43.10) + + + maskia + Maski Show (Ukraine V. 43.07) + + + maskib + Maski Show (Ukraine V. 42.11) + + + maskic + Maski Show (Ukraine V. 42.05) + + + masmario + Super Mario Fushigi no Korokoro Party (center) + + + masmario2 + Super Mario Fushigi no Korokoro Party 2 + + + masmarios + Super Mario Fushigi no Korokoro Party (satellite) + + + mastbond + Master Bond (bootleg of Secret Agent) + + + mastboy + Master Boy (Spanish, rev A) + + + mastboya + Master Boy (Spanish, rev A, hack?) + + + mastboyi + Master Boy (Italian, rev A, set 1) + + + mastboyia + Master Boy (Italian, rev A, set 2) + + + mastboyiv2 + Master Boy Version II (Italian, rev A) + + + mastboyo + Master Boy (1987, Z80 hardware, Covielsa, set 1) + + + mastboyoa + Master Boy (1987, Z80 hardware, Covielsa, set 2) + + + mastboyob + Master Boy (1987, Z80 hardware, Ichi-Funtel, set 1) + + + mastboyoc + Master Boy (1987, Z80 hardware, Ichi-Funtel, set 2) + + + mastcrane + Master Crane (set 1) + + + mastcranea + Master Crane (set 2) + + + mastcraneb + Master Crane (set 3) + + + masterw + Master of Weapon (World) + + + masterwj + Master of Weapon (Japan) + + + masterwu + Master of Weapon (US) + + + mastfury + Master's Fury + + + mastkin + The Masters of Kin + + + mastninj + Master Ninja (bootleg of Shadow Warriors / Ninja Gaiden) + + + mastrglf + Master's Golf + + + matahari + Mata Hari + + + match98 + Match '98 (ver. 1.33) + + + matchem + Match'em Up (6221-51, U5-1) + + + matchemg + Match'em Up (6221-55, U5-1, German) + + + matchit + Match It + + + matchit2 + Match It II + + + matchitb + Match It (bootleg) + + + matmania + Mat Mania + + + matrim + Matrimelee / Shin Gouketsuji Ichizoku Toukon (NGM-2660 ~ NGH-2660) + + + matrimbh + Matrimelee ~ Shin Gouketsuji Ichizoku Toukon (Hack, Enable Hidden Characters V2) + + + matrimbl + Matrimelee / Shin Gouketsuji Ichizoku Toukon (bootleg) + + + matrix + Matrix + + + mausuke + Mausuke no Ojama the World (J 960314 V1.000) + + + mav_100 + Maverick, The Movie (1.00) + + + mav_200 + Maverick, The Movie (2.00) + + + mav_400 + Maverick, The Movie (Display Rev. 4.00) + + + mav_401 + Maverick, The Movie (4.02, Display Rev. 4.01) + + + mav_402 + Maverick, The Movie (4.04, Display Rev. 4.02) + + + maverik + Maverik + + + mawasunda + Mawasunda!! (V2.08J 2000/02/01 11:02:54) + + + maxf_102 + Maximum Force v1.02 + + + maxf_ng + Maximum Force (No Gore version) + + + maxforce + Maximum Force v1.05 + + + maxidbl + Maxi Double Poker (Ver. 1.10) + + + maxideal + Maxi-Dealer + + + maxidpkr + Maxi Double Poker (version 1.8) + + + maxrpm + Max RPM (ver 2) + + + maxspeed + Maximum Speed + + + maya + Maya (set 1) + + + mayaa + Maya (set 2) + + + mayab + Maya (set 3) + + + mayac + Maya (set 4, clean) + + + mayday + Mayday (set 1) + + + maydaya + Mayday (set 2) + + + maydayb + Mayday (set 3) + + + mayhem + Mayhem 2002 + + + mayjin3 + Mayjinsen 3 + + + mayjinsn + Mayjinsen + + + mayjisn2 + Mayjinsen 2 + + + mayumi + Kiki-Ippatsu Mayumi-chan + + + mazan + Mazan: Flash of the Blade (World, MAZ2 Ver.A) + + + mazanj + Mazan: Flash of the Blade (Japan, MAZ1 Ver.A) + + + mazanu + Mazan: Flash of the Blade (US, MAZ3 Ver.A) + + + maze + Amazing Maze + + + mazebl + Maze (Trog rev LA4 3/11/91 bootleg) + + + mazeinv + Maze Invaders (prototype) + + + mazerbla + Mazer Blazer (set 1) + + + mazerblaa + Mazer Blazer (set 2) + + + mazinger + Mazinger Z (World) + + + mazingerj + Mazinger Z (Japan) + + + mb_10 + Monster Bash (1.0) + + + mb_106 + Monster Bash (1.06) + + + mb_106b + Monster Bash (1.06b) + + + mbaa + Melty Blood Actress Again Version A (Japan, Rev A) + + + mbaao + Melty Blood Actress Again (Japan) + + + mblkjack + Black Jack (Mirco) + + + mbomberj + Muscle Bomber: The Body Explosion (Japan 930713) + + + mbombrd + Muscle Bomber Duo: Ultimate Team Battle (World 931206) + + + mbombrdj + Muscle Bomber Duo: Heat Up Warriors (Japan 931206) + + + mbossy + Mike Bossy + + + mbrush + Magic Brush (bootleg of Crush Roller) + + + mbs2euro + Mega Bonus Star II (Euro, Millennium Edition) + + + mbutrfly + Magical Butterfly (version U350C, protected) + + + mcard_h8 + Magic Card (H8, English) + + + mcastle + Magic Castle + + + mcastlef + Magic Castle (French speech) + + + mcastleg + Magic Castle (German speech) + + + mcastlei + Magic Castle (Italian speech) + + + mcatadv + Magical Cat Adventure + + + mcatadvj + Magical Cat Adventure (Japan) + + + mchampdx + Multi Champ Deluxe (ver. 0106, 06/01/2000) + + + mchampdxa + Multi Champ Deluxe (ver. 1126, 26/11/1999) + + + mchampdxb + Multi Champ Deluxe (ver. 1114, 14/11/1999) + + + mcheonru + Ma Cheon Ru (Korea) + + + mchilli + More Chilli (20248711, NSW/ACT) + + + mchilliq + More Chilli (20289311, Queensland) + + + mcircus + Merry Circus (Version 1.0.2) + + + mcitylov + City Love (Japan 860904, medal) + + + mclass + Magic Class (Ver 2.2) + + + mcnpshnt + Mahjong Campus Hunting (Japan) + + + mcolors + Magic Colors (ver. 1.7a) + + + mcolorsa + Magic Colors (ver. 1.6) + + + mcombat + Missile Combat (Videotron bootleg, set 1) + + + mcombata + Missile Combat (Videotron bootleg, set 2) + + + mcombats + Missile Combat (Sidam bootleg) + + + mcontest + Miss Mahjong Contest (Japan) + + + mcwars + Macro-Cosm Wars (bootleg of Galaxian) + + + md23do + Mad Dog II: The Lost Gold (3DO hardware) + + + mdchoice + Dealer's Choice (E4A1) + + + mdhorse + Derby Quiz My Dream Horse (Japan, MDH1/VER.A2) + + + mdntmrdr + Midnight Marauders (Gun game) + + + mdrawpkr + Draw Poker - Joker's Wild (Standard) + + + mdrawpkra + Draw Poker - Joker's Wild (02-11) + + + mdrink + Magic Drink (Ver 1.2) + + + mead4in1 + Meadows 4 in 1 + + + mechatt + Mechanized Attack (World) + + + mechattj + Mechanized Attack (Japan) + + + mechattu + Mechanized Attack (US) + + + mechattu1 + Mechanized Attack (US, Version 1, Single Player) + + + medalnt + Medal no Tatsujin Doki! Ooatari-Darake no Sugoroku Matsuri (MTL1 SPR0B) + + + medalnt2 + Medal no Tatsujin 2 Atsumare! Go! Go! Sugoroku Sentai Don Ranger Five (MTA1 STMPR0A) + + + medalnta + Medal no Tatsujin Doki! Ooatari-Darake no Sugoroku Matsuri (MTL1 SPR0A) + + + medlanes + Meadows Lanes + + + medusa + Medusa + + + megaaton + Meg-Aaton + + + megaatona + Meg-Aaton (alternate set) + + + megab + Mega Blast (World) + + + megabj + Mega Blast (Japan) + + + megablst + Mega Blast (World) + + + megablstj + Mega Blast (Japan) + + + megablstu + Mega Blast (US) + + + megacard + Mega Card (Ver.0210, encrypted) + + + megacarda + Mega Card (Ver.0053, encrypted) + + + megadble + Mega Double Poker (Ver. 1.63 Espagnol) + + + megadblj + Mega Double Poker Jackpot (Ver. 1.26) + + + megadon + Megadon + + + megadpkr + Mega Double Poker (conversion kit, version 2.3 MD) + + + megadpkrb + Mega Double Poker (conversion kit, version 2.1 MD) + + + megaforc + Mega Force (World) + + + megaforcu + Mega Force (US) + + + megakat + Mega Katok 2 + + + megaline + Mega Lines + + + megaman + Mega Man: The Power Battle (CPS1, USA 951006) + + + megaman2 + Mega Man 2: The Power Fighters (USA 960708) + + + megaman2a + Mega Man 2: The Power Fighters (Asia 960708) + + + megaman2h + Mega Man 2: The Power Fighters (Hispanic 960712) + + + megamana + Mega Man: The Power Battle (CPS1, Asia 951006) + + + megamn2d + Mega Man 2: The Power Fighters (USA 960708 Phoenix Edition) (bootleg) + + + megaphx + Mega Phoenix + + + megastrp + Mega Double Strip (Ver. 1.10b) + + + megat + Pit Boss Megatouch (9234-20-01 R0A) + + + megat2 + Pit Boss Megatouch II (9255-10-01 R0G, Standard version) + + + megat2a + Pit Boss Megatouch II (9255-10-01 R0E, Standard version) + + + megat2b + Pit Boss Megatouch II (9255-10-01 R0D, Standard version) + + + megat2ca + Pit Boss Megatouch II (9255-10-06 R0G, California version) + + + megat2caa + Pit Boss Megatouch II (9255-10-06 R0E, California version) + + + megat2mn + Pit Boss Megatouch II (9255-10-02 R0G, Minnesota version) + + + megat3 + Megatouch III (9255-20-01 R0N, Standard version) + + + megat3a + Megatouch III (9255-20-01 R0K, Standard version) + + + megat3b + Megatouch III (9255-20-01 R0F, Standard version) + + + megat3c + Megatouch III (9255-20-01 R0B, Standard version) + + + megat3ca + Megatouch III (9255-20-06 R0N, California version) + + + megat3caa + Megatouch III (9255-20-06 R0D, California version) + + + megat3d + Megatouch III (9255-20-01 R0A, Standard version) + + + megat3nj + Megatouch III (9255-20-07 R0G, New Jersey version) + + + megat3te + Megatouch III Tournament Edition (9255-30-01 R0E, Standard version) + + + megat3tg + Megatouch III Turnier Edition (9255-30-50 R0F, Bi-Lingual GER/ENG version) + + + megat4 + Megatouch IV (9255-40-01 R0E, Standard version) + + + megat4a + Megatouch IV (9255-40-01 R0D, Standard version) + + + megat4b + Megatouch IV (9255-40-01 R0B, Standard version) + + + megat4c + Megatouch IV (9255-40-01 R0A, Standard version) + + + megat4d + Megatouch IV (9255-40-01 R0, Standard version) + + + megat4s + Super Megatouch IV (9255-41-01 R0G, Standard version) + + + megat4sa + Super Megatouch IV (9255-41-01 R0E, Standard version) + + + megat4sb + Super Megatouch IV (9255-41-01 R0C, Standard version) + + + megat4smn + Super Megatouch IV (9255-41-02 R0C, Minnesota version) + + + megat4snj + Super Megatouch IV (9255-41-07 R0G, New Jersey version) + + + megat4st + Super Megatouch IV Tournament Edition (9255-51-01 R0B, Standard version) + + + megat4stg + Super Megatouch IV Turnier Version (9255-51-50 R0A, Bi-Lingual GER/ENG version) + + + megat4te + Megatouch IV Tournament Edition (9255-50-01 R0D, Standard version) + + + megat4tea + Megatouch IV Tournament Edition (9255-50-01 R0A, Standard version) + + + megat5 + Megatouch 5 (9255-60-01 R0I, Standard version) + + + megat5a + Megatouch 5 (9255-60-01 R0C, Standard version) + + + megat5g + Megatouch 5 (9255-60-50 R0G, Bi-Lingual GER/ENG version) + + + megat5nj + Megatouch 5 (9255-60-07 R0N, New Jersey version) + + + megat5t + Megatouch 5 Tournament Edition (9255-70-01 R0C, Standard version) + + + megat5tg + Megatouch 5 Turnier Version (9255-70-50 R0D, Bi-Lingual GER/ENG version) + + + megat6 + Megatouch 6 (9255-80-01 R0A, Standard version) + + + megat7e + Megatouch 7 Encore Edition (9255-90-01 R00, Standard version) + + + megatack + Megatack (set 1) + + + megatacka + Megatack (set 2) + + + megaznik + Mega Zone (Kosuka) + + + megazone + Mega Zone (version L) + + + megazonea + Mega Zone (unknown version 1) + + + megazoneb + Mega Zone (unknown version 2) + + + megazoneh + Mega Zone (version H) + + + megazonei + Mega Zone (version I) + + + megazonej + Mega Zone (version J) + + + megrescu + Megumi Rescue + + + meijinsn + Meijinsen (set 1) + + + meijinsna + Meijinsen (set 2) + + + meikyuh + Meikyuu Hunter G (Japan) + + + meikyuhbl + Meikyuu Hunter G (Japan, bootleg) + + + meltyb + Melty Blood Act Cadenza Version B2 (Japan) (GDL-0039A) + + + meltybld + Melty Blood Act Cadenza Ver. A (Japan) (GDL-0028C) + + + meltyblo + Melty Blood Act Cadenza (Japan) (GDL-0028) + + + meltybo + Melty Blood Act Cadenza Version B (Japan) (GDL-0039) + + + memlane + Memory Lane + + + menghong + Meng Hong Lou + + + meosism + Meosis Magic (Japan) + + + mephistp + Mephisto (Stargame) (rev. 1.2) + + + mephistp1 + Mephisto (Stargame) (rev. 1.1) + + + mephistpn + Mephisto (Stargame) (newer?) + + + mercenario + Mercenario (bootleg of Commando) + + + mercs + Mercs (World 900302) + + + mercsc + Senjo no Ookami II (hack, Chinese Translation) + + + mercsj + Senjou no Ookami II (Japan 900302) + + + mercsu + Mercs (USA 900608) + + + mercsua + Mercs (US 900608) + + + mercsur1 + Mercs (USA 900302) + + + meritjp + Merit Joker Poker (9131-09) + + + merlinmm + Merlins Money Maze + + + mermaid + Mermaid + + + merryjn + Merry Joiner + + + metabee + Metabee Shot + + + metafox + Meta Fox + + + metalb + Metal Black (World) + + + metalba + Metal Black (World, single PCB) + + + metalbj + Metal Black (Japan) + + + metalman + Metal Man + + + metalmx + Metal Maniax (prototype) + + + metamrph + Metamorphic Force (ver EAA) + + + metamrpha + Metamorphic Force (ver AAA) + + + metamrphe + Metamorphic Force (ver EAA - alternate) + + + metamrphj + Metamorphic Force (ver JAA) + + + metamrphu + Metamorphic Force (ver UAA) + + + metamrpj + Metamorphic Force (Japan ver JAA) + + + meteor + Meteoroids + + + meteora + Meteor (Alca bootleg of Moon Cresta) + + + meteorbl + Meteor (bootleg of Asteroids) + + + meteorho + Meteor (Hoei bootleg of Asteroids) + + + meteorite + Meteorite (Proel bootleg of Asteroids) + + + meteorp + Meteor (Bug fix release) + + + meteorpo + Meteor (First release) + + + meteors + Meteors + + + meteort + Meteor (Taito) + + + meteorts + Meteorites (VGG bootleg of Asteroids) + + + metestrm + Meteor Storm (0152162, US) + + + metlclsh + Metal Clash (Japan) + + + metlfrzr + Metal Freezer (Japan) + + + metlhawk + Metal Hawk (Rev C) + + + metlhawkj + Metal Hawk (Japan, Rev F) + + + metlsavr + Metal Saver + + + metmqstr + Metamoqester (World) + + + metrocra + Metro-Cross (set 2) + + + metrocrs + Metro-Cross (set 1) + + + metrocrsa + Metro-Cross (set 2) + + + mexico + Mexico 86 (German speech) + + + mexico86 + Mexico 86 (bootleg of Kick and Run, set 1) + + + mexico86a + Mexico 86 (bootleg of Kick and Run, set 2) + + + mexicoi + Mexico 86 (Italian speech) + + + mf_achas + Astro Chase (Max-A-Flex) + + + mf_bdash + Boulder Dash (Max-A-Flex) + + + mf_brist + Bristles (Max-A-Flex) + + + mf_flip + Flip & Flop (Max-A-Flex) + + + mfightc + Mahjong Fight Club (ver JAD) + + + mfightcc + Mahjong Fight Club (ver JAC) + + + mfish + Multi Fish (021120) + + + mfish_10 + Multi Fish (031117) + + + mfish_11 + Multi Fish (031124) + + + mfish_12 + Multi Fish (040308) + + + mfish_12a + Multi Fish (bootleg, 040308, banking address hack) + + + mfish_13 + Multi Fish (040316) + + + mfish_2 + Multi Fish (021121) + + + mfish_3 + Multi Fish (021124) + + + mfish_3a + Multi Fish (bootleg, 021124, banking address hack) + + + mfish_4 + Multi Fish (021219) + + + mfish_5 + Multi Fish (021227) + + + mfish_6 + Multi Fish (030124) + + + mfish_7 + Multi Fish (030511) + + + mfish_8 + Multi Fish (030522) + + + mfish_9 + Multi Fish (031026) + + + mfjump + Monster Farm Jump (Japan) + + + mfunclub + Mahjong Fun Club - Idol Saizensen (Japan) + + + mg_alad + Aladdin's Cave (Maygay M2, SW7-536 SW7-465) + + + mg_alada + Aladdin's Cave (Maygay M2, SW8-323 SW8-299) + + + mg_aladb + Aladdin's Cave (Maygay M2, SW8-322 SW8-298) + + + mg_aladc + Aladdin's Cave (Maygay M2, SW8-298 SW8-144) + + + mg_bb + Big Break (Maygay M2, SW6-618 SW6-601) + + + mg_bba + Big Break (Maygay M2, SW6-656 SW6-635) + + + mg_bbb + Big Break (Maygay M2, SW6-657 SW6-636) + + + mg_ewg + Each Way Gambler (Maygay M2, SA6_127 SA6_113) + + + mg_ewga + Each Way Gambler (Maygay M2, SA6_128 SA6_114) + + + mg_ewgb + Each Way Gambler (Maygay M2, SA6_129 SA6_115) + + + mg_ewgc + Each Way Gambler (Maygay M2, SA6_130 SA6_115) + + + mg_ewgd + Each Way Gambler (Maygay M2, SA6_281 NONE) + + + mg_ewge + Each Way Gambler (Maygay M2, SA6_282 NONE) + + + mg_ewgf + Each Way Gambler (Maygay M2, SA6_283 NONE) + + + mg_ewgg + Each Way Gambler (Maygay M2, SA6_284 NONE) + + + mg_gbr + Guinness Book Of Records (Maygay M2, SW7-235 SW7-240) + + + mg_gbra + Guinness Book Of Records (Maygay M2, SW8-146 SW7-360) + + + mg_gbrb + Guinness Book Of Records (Maygay M2, SW8-147 SW7-361) + + + mg_jv + Jack & Vera (Maygay M2, set 1) + + + mg_jva + Jack & Vera (Maygay M2, set 2) + + + mg_jvb + Jack & Vera (Maygay M2, set 3) + + + mg_jvc + Jack & Vera (Maygay M2, set 4) + + + mg_kf + Krypton Factor (Maygay M2, set 1) + + + mg_kfa + Krypton Factor (Maygay M2, set 2) + + + mg_lug + London Underground (Maygay M2, SW8-232 SW8-154) + + + mg_luga + London Underground (Maygay M2, SW8-233 SW8-155) + + + mg_pbw + Pinball Wizard (Maygay M2, SW8-098 SW8148) + + + mg_pbwa + Pinball Wizard (Maygay M2, SW8-099 SW8149) + + + mg_pbwb + Pinball Wizard (Maygay M2, SW8-098 SW8-096) + + + mg_risk + Risk (Maygay M2, SW7-614 SW7-461) + + + mg_riska + Risk (Maygay M2, SW9-025 SW9-023) + + + mg_riskb + Risk (Maygay M2, SW9-024 SW9-026) + + + mg_scl + Super Clue (Maygay M2, SW8-152 SW8-130) + + + mg_scla + Super Clue (Maygay M2, SW8-153 SW8-131) + + + mgakuen + Mahjong Gakuen + + + mgakuen2 + Mahjong Gakuen 2 Gakuen-chou no Fukushuu + + + mgames + Match Games + + + mgarden + Magic Garden (AHG1211-03, US) + + + mgardena + Magic Garden (AHG1211-99, US) + + + mgavegas + Vegas 1 (Ver 2.3 dual coin pulse, shorter) + + + mgavegas133 + Vegas 1 (Ver 1.33 single coin pulse) + + + mgavegas21 + Vegas 1 (Ver 2.1 dual coin pulse, longer) + + + mgcldate + Magical Date / Magical Date - Dokidoki Kokuhaku Daisakusen (Ver 2.02J) + + + mgcldtea + Magical Date (JAPAN) set 2 + + + mgcldtex + Magical Date EX / Magical Date - Sotsugyou Kokuhaku Daisakusen (Ver 2.01J) + + + mgcrystj + Magical Crystals (Japan) + + + mgcrystl + Magical Crystals (World, 92/01/10) + + + mgcrystlj + Magical Crystals (Japan, 92/01/13) + + + mgcrystlo + Magical Crystals (World, 91/12/10) + + + mgcs + Manguan Caishen (China, V103CS) + + + mgcs2h + Manguan Caishen 2 (link version, host) + + + mgcs2l + Manguan Caishen 2 (link version, extension, S110CN) + + + mgcs3 + Manguan Caishen 3 (V101CN) + + + mgcsa + Manguan Caishen (China, V106CS) + + + mgdh + Manguan Daheng (Taiwan, V125T1) + + + mgdha + Manguan Daheng (Taiwan, V123T1) + + + mghammer + Medal Get Hammer (V100JP) + + + mgion + Gionbana (Japan 890207, medal) + + + mgmen89 + Mahjong G-MEN'89 (Japan 890425) + + + mgnumber + Magic Number + + + mgolf + Mini Golf (Atari, prototype) + + + mgprem11 + Magic Premium (v1.1) + + + mgzz + Manguan Zhizun (V101CN) + + + mgzz100cn + Manguan Zhizun (V100CN) + + + mhavoc + Major Havoc (rev 3) + + + mhavoc2 + Major Havoc (rev 2) + + + mhavocp + Major Havoc (prototype) + + + mhavocrv + Major Havoc - Return to Vax + + + mhgaiden + Mahjong Hourouki Gaiden (Japan) + + + mhhonban + Mahjong Housoukyoku Honbanchuu (Japan) + + + mia + M.I.A. - Missing in Action (version T) + + + mia2 + M.I.A. - Missing in Action (version S) + + + miaction + Missing In Action + + + miaj + M.I.A.: Missing in Action (Japan, version R) + + + michigan + Michigan (Bingo) + + + michkit1 + Michigan Bingo Kit 1 Generation (Bingo) + + + michkitb + Michigan Kit Bingo Stake 6/10 (Bingo) + + + michnew + Michigan Bingo New (Bingo) + + + michstake + Michigan Bingo Stake 6/10 (Bingo) + + + micon2 + Micon-Kit Part II + + + micrombc + Microman Battle Charge (J 990326 V1.000) + + + midearth + Middle Earth + + + mideartha + Middle Earth (alternate) + + + midnrun + Midnight Run: Road Fighter 2 (EAA, Euro v1.11) + + + midnruna + Midnight Run: Road Fighter 2 (AAA, Asia v1.10, older sound program) + + + midnruna2 + Midnight Run: Road Fighter 2 (AAA, Asia v1.10, newer sound program) + + + midnrunj + Midnight Run: Road Fighter 2 (JAD, Japan v1.10) + + + midres + Midnight Resistance (World, set 1) + + + midres2 + Midnight Resistance (World, set 2) + + + midresb + Midnight Resistance (bootleg with 68705) + + + midresbj + Midnight Resistance (Joystick bootleg) + + + midresj + Midnight Resistance (Japan) + + + midresu + Midnight Resistance (US) + + + miexchng + Money Puzzle Exchanger / Money Idol Exchanger + + + mightguy + Mighty Guy + + + mightybj + Vs. Mighty Bomb Jack (Japan) + + + mikie + Mikie + + + mikiehs + Mikie (High School Graffiti) + + + mikiej + Shinnyuushain Tooru-kun + + + mikiek + Shin-ip Sawon - Seok Dol-i + + + mil4000 + Millennium Nuovo 4000 (Version 2.0) + + + mil4000a + Millennium Nuovo 4000 (Version 1.8) + + + mil4000b + Millennium Nuovo 4000 (Version 1.5) + + + mil4000c + Millennium Nuovo 4000 (Version 1.6) + + + milkin + Milkin' It (10251911, NSW/ACT) + + + millipdd + Millipede Dux (hack) + + + milliped + Millipede + + + milln_l3 + Millionaire (L-3) + + + millpac + Millpac (bootleg of Centipede) + + + millsun + Millennium Sun + + + mimonkey + Mighty Monkey + + + mimonkeyug + Mighty Monkey (U.Games bootleg) + + + mimonsco + Mighty Monkey (bootleg on Super Cobra hardware) + + + mimonscr + Mighty Monkey (bootleg on Scramble hardware) + + + mimonscra + Mighty Monkey (Kaina Games, bootleg on Scramble hardware) + + + minasan + Minasan no Okagesamadesu! Dai Sugoroku Taikai (MOM-001 ~ MOH-001) + + + minefld + Minefield + + + minefldfe + Minefield (The Logicshop, bootleg) + + + minemine + Mine, Mine, Mine (0400115V, NSW/ACT) + + + minemineu + Mine, Mine, Mine (VHG0416-99, US) + + + minemineua + Mine, Mine, Mine (NHG0416-02, US) + + + minemineub + Mine, Mine, Mine (NHG0416-99, US) + + + mineswpr + Minesweeper + + + mineswpr4 + Minesweeper (4-Player) + + + minferno + Inferno (Meadows) + + + miniazard + Mini Azar D + + + miniboy7 + Mini-Boy 7 (set 1) + + + miniboy7a + Mini-Boy 7 (set 2) + + + minidart + Minidart + + + minigol2 + Mini Golf (set 2) + + + minigolf + Mini Golf (set 1) + + + minigolfa + Mini Golf (11/25/85) + + + minigolfb + Mini Golf (10/8/85) + + + miniguay + Mini Guay VD + + + minihockey + Mini Hockey + + + minimony + Mini Money + + + minimonya + Mini Money (set 2, v1.5?) + + + minimonyb + Mini Money (set 3, v1.4?) + + + minisupf + Mini Super Fruits + + + minivadr + Mini Vaders + + + minnadk + Minna de Kitaeru Zenno Training (Ver. 1.50) + + + mir7hg + Miracle Seven - Heaven's Gate (Japan, v1.0.2) + + + mirage + Mirage Youjuu Mahjongden (Japan) + + + mirax + Mirax (set 1) + + + miraxa + Mirax (set 2) + + + miraxb + Mirax (set 3) + + + mirco21 + 21 (Mirco) + + + mirderby + Miracle Derby (Japan) + + + mirninja + Mirai Ninja (Japan, set 1) + + + mirninjaa + Mirai Ninja (Japan, set 2) + + + mirworld + Mirage World (satellite) + + + misdraw + Michigan Super Draw (2131-16, U5-2) + + + misncrft + Mission Craft (version 2.7) + + + misncrfta + Mission Craft (version 2.4) + + + missamer + Miss Americana + + + missb2 + Miss Bubble II + + + missile + Missile Command (rev 3, A035467-02/04 PCBs) + + + missile1 + Missile Command (rev 1, A035467-02 PCBs) + + + missile1a + Missile Command (rev 1, A035467-01 PCBs) + + + missile2 + Missile Command (rev 2, A035467-02/04 PCBs) + + + missile2a + Missile Command (rev 2, A035467-01/03 PCBs) + + + missilea + Missile Command (rev 3, A035467-01/03 PCBs) + + + missilebl + Missile Attack (U.Games bootleg of Missile Command) + + + missilem + Missile Command Multigame + + + missilex + Missile-X + + + missmw96 + Miss Mister World '96 (Nude) + + + missw02 + Miss World 2002 + + + missw02d + Miss World 2002 (Daigom license) + + + missw96 + Miss World '96 (Nude) (C-3000A PCB, set 1) + + + missw96a + Miss World '96 (Nude) (C-3000A PCB, set 2) + + + missw96b + Miss World '96 (Nude) (C-3000A PCB, set 3) + + + missw96c + Miss World '96 (Nude) (C-3000B PCB) + + + miteshin + Mite Shinzeyou + + + mizubaku + Mizubaku Daibouken (Japan) + + + mj1 + Sega Yonin Uchi Mahjong MJ Network Taisen Ver. (Update Disc Ver.3.000, Japan) (CDP-10002F) + + + mj1a + Sega Yonin Uchi Mahjong MJ (Update Disc Ver.1.007, Japan) (CDP-10002A) + + + mj1b + Sega Yonin Uchi Mahjong MJ (Update Disc Ver.1.008, Japan) (CDP-10002B) + + + mj1c + Sega Yonin Uchi Mahjong MJ (Update Disc Ver.1.011, Japan) (CDP-10002C) + + + mj1d + Sega Yonin Uchi Mahjong MJ Network Taisen Ver. (Update Disc Ver.2.000, Japan) (CDP-10002D) + + + mj1e + Sega Yonin Uchi Mahjong MJ Network Taisen Ver. (Update Disc Ver.2.002, Japan) (CDP-10002E) + + + mj2 + Sega Network Taisen Mahjong MJ 2 (Rev G) (GDX-0006G) + + + mj2c + Sega Network Taisen Mahjong MJ 2 (Rev C) (GDX-0006C) + + + mj2f + Sega Network Taisen Mahjong MJ 2 (Rev F) (GDX-0006F) + + + mj3 + Sega Network Taisen Mahjong MJ 3 (Rev F) (GDX-0017F) + + + mj3c + Sega Network Taisen Mahjong MJ 3 (Rev C) (GDX-0017C) + + + mj3d + Sega Network Taisen Mahjong MJ 3 (Rev D) (GDX-0017D) + + + mj3evo + Sega Network Taisen Mahjong MJ 3 Evolution (Rev B) (GDX-0021B) + + + mj3evoa + Sega Network Taisen Mahjong MJ 3 Evolution (Rev A) (GDX-0021A) + + + mj3evoup + Sega Network Taisen Mahjong MJ 3 Evolution Firmware Update (GDX-0023) + + + mj3up + Sega Network Taisen Mahjong MJ 3 Firmware Update (GDX-0019) + + + mj4simai + Wakakusamonogatari Mahjong Yonshimai (Japan) + + + mj_130 + Michael Jordan (1.30, display A1.03) + + + mjanbari + Medal Mahjong Janjan Baribari (Japan) + + + mjangels + Mahjong Angels - Comic Theater Vol.2 (Japan) + + + mjapinky + Almond Pinky (Japan) + + + mjcamera + Mahjong Camera Kozou (Japan 881109, newer hardware) + + + mjcameram + Mahjong Camera Kozou (Japan 890509, medal) + + + mjcamerao + Mahjong Camera Kozou (Japan 881109, older hardware) + + + mjchuuka + Maque Zhonghua Ernu (Taiwan) + + + mjclinic + Mahjong Clinic (Japan, set 1) + + + mjclinica + Mahjong Clinic (Japan, set 2) + + + mjclub + Mahjong Club (Japan) + + + mjcomv1 + Mahjong Comic Gekijou Vol.1 (Japan) + + + mjdchuka + Maque Da Zhonghua Quan (Taiwan, D111) + + + mjdejav2 + Mahjong Shinkirou Deja Vu 2 (Japan) + + + mjdejavu + Mahjong Shinkirou Deja Vu (Japan) + + + mjderngr + Mahjong Derringer (Japan) + + + mjdialq2 + Mahjong Dial Q2 (Japan set 1) + + + mjdialq2a + Mahjong Dial Q2 (Japan set 2) + + + mjdiplob + Mahjong Diplomat (Japan) + + + mjegolf + Mahjong Erotica Golf (Japan) + + + mjelct3 + Mahjong Electron Base (parts 2 & 3, Japan set 1) + + + mjelct3a + Mahjong Electron Base (parts 2 & 3, Japan set 2) + + + mjelctrb + Mahjong Electron Base (parts 2 & 4, Japan bootleg) + + + mjelctrn + Mahjong Electron Base (parts 2 & 4, Japan) + + + mjembase + Mahjong Electromagnetic Base (Japan) + + + mjflove + Mahjong Fantasic Love (Japan) + + + mjfocus + Mahjong Focus (Japan 890313) + + + mjfocusm + Mahjong Focus (Japan 890510, medal) + + + mjfriday + Mahjong Friday (Japan) + + + mjgaiden + Mahjong Gaiden (Japan 870803) + + + mjgalpri + Mahjong Gal-pri - World Gal-con Grandprix (Japan) + + + mjgnight + Mahjong Gorgeous Night (Japan, TSM003-01) + + + mjgottsu + Mahjong Gottsu ee-kanji (Japan) + + + mjgottub + Medal Mahjong Gottsu ee-kanji (Japan) + + + mjgtaste + Mahjong G-Taste + + + mjhokite + Mahjong Hourouki Okite (Japan) + + + mjifb + Mahjong If...? + + + mjifb2 + Mahjong If...? (2921) + + + mjifb3 + Mahjong If...? (2931) + + + mjikaga + Mahjong Ikaga Desu ka (Japan) + + + mjjoship + Mahjong Joshi Pro-wres -Give up 5 byou mae- (Japan) + + + mjkinjas + Mahjong Kinjirareta Asobi (Japan) + + + mjkjidai + Mahjong Kyou Jidai (Japan) + + + mjkoiura + Mahjong Koi Uranai (Japan set 1) + + + mjkojink + Mahjong Kojinkyouju (Private Teacher) (Japan) + + + mjlaman + Mahjong La Man (Japan) + + + mjleague + Major League + + + mjlstory + Mahjong Jikken Love Story (Japan) + + + mjmaglmp + Mahou no Lamp (v. JAA02) + + + mjmania + Mahjong Mania - Kairakukan e Youkoso (Japan) + + + mjmyorn2 + Mahjong The Mysterious Orient Part 2 ~ Exotic Dream ~ (Japan, v1.00) + + + mjmyornt + Mahjong The Mysterious Orient (Japan, v1.00) + + + mjmyorntr + Mahjong The Mysterious Orient Returns (Japan, v1.00) + + + mjmyster + Mahjong The Mysterious World (Japan, set 1) + + + mjmyuniv + Mahjong The Mysterious Universe (Japan, D85) + + + mjmywrld + Mahjong The Mysterious World (Japan, set 2) + + + mjnanpaa + Mahjong Nanpa Story (Japan 890712) + + + mjnanpas + Mahjong Nanpa Story (Japan 890713) + + + mjnanpau + Mahjong Nanpa Story (Ura) (Japan 890805) + + + mjnatsu + Mahjong Natsu Monogatari (Japan) + + + mjnquesb + Mahjong Quest (No Nudity) + + + mjnquest + Mahjong Quest (Japan) + + + mjnquestb + Mahjong Quest (Japan, No Nudity) + + + mjprivat + Mahjong Private (Japan) + + + mjreach + Mahjong Reach (Ver. 1.00) + + + mjreach1 + Mahjong Reach Ippatsu (Japan) + + + mjreachbl + Mahjong Reach (Ver. 1.00, bootleg) + + + mjreachp2 + Mahjong Reach Part II (Ver. D88) + + + mjschuka + Mahjong Super Dai Chuuka Ken (Japan, D115) + + + mjsenka + Mahjong Senka (Japan) + + + mjsenpu + Mahjong Senpu (Japan) + + + mjsikakb + Mahjong Shikaku (Japan 880722) + + + mjsikakc + Mahjong Shikaku (Japan 880806) + + + mjsikakd + Mahjong Shikaku (Japan 880802) + + + mjsikaku + Mahjong Shikaku (Japan 880908) + + + mjsister + Mahjong Sisters (Japan) + + + mjsiyoub + Mahjong Shiyou (Japan) + + + mjtenho + Mahjong Tenho (Japan, P016B-000) + + + mjtensin + Mahjong Tensinhai (Japan) + + + mjuraden + Mahjong Uranai Densetsu (Japan) + + + mjvegas + Mahjong Vegas (Japan) + + + mjvegasa + Mahjong Vegas (Japan, unprotected) + + + mjxy2 + Majiang Xueyuan 2 - Mahjong School (V108TW) + + + mjyarou + Mahjong Yarou (Japan, set 1) + + + mjyarou2 + Mahjong Yarou (Japan, set 2) + + + mjyougo + Mahjong-yougo no Kisotairyoku (Japan) + + + mjyuugi + Mahjong Yuugi (Japan set 1) + + + mjyuugia + Mahjong Yuugi (Japan set 2) + + + mjzoomin + Mahjong Channel Zoom In (Japan) + + + mk + Mortal Kombat (rev 5.0 T-Unit 03/19/93) + + + mk2 + Mortal Kombat II (rev L3.1) + + + mk2chal + Mortal Kombat II Challenger (hack) + + + mk2p + Mortal Kombat II Plus (Beta 2, Hack) + + + mk2r11 + Mortal Kombat II (rev L1.1) + + + mk2r14 + Mortal Kombat II (rev L1.4) + + + mk2r20 + Mortal Kombat II (rev L2.0) + + + mk2r21 + Mortal Kombat II (rev L2.1) + + + mk2r30 + Mortal Kombat II (rev L3.0) + + + mk2r31e + Mortal Kombat II (rev L3.1, European) + + + mk2r32 + Mortal Kombat II (rev L3.2 (European)) + + + mk2r32e + Mortal Kombat II (rev L3.2, European) + + + mk2r42 + Mortal Kombat II (rev L4.2, hack) + + + mk2r91 + Mortal Kombat II (rev L9.1, hack) + + + mk2ute + Mortal Kombat II Ultimate Tournament Edition (hack, V5.0.053) + + + mk3 + Mortal Kombat 3 (rev 2.1) + + + mk3mdb + Mortal Kombat 3 (scrambled bootleg of Mega Drive version) + + + mk3p40 + Mortal Kombat 3 (rev 1 chip label p4.0) + + + mk3r10 + Mortal Kombat 3 (rev 1.0) + + + mk3r20 + Mortal Kombat 3 (rev 2.0) + + + mk3snes + Mortal Kombat 3 (SNES bootleg with timer) + + + mk4 + Mortal Kombat 4 (version 3.0) + + + mk4a + Mortal Kombat 4 (version 2.1) + + + mk4b + Mortal Kombat 4 (version 1.0) + + + mkartag2 + Mario Kart Arcade GP 2 (Japan, MK21 Ver.A) + + + mkartag2a + Mario Kart Arcade GP 2 (Japan, MK21 Ver.A, alt dump) + + + mkartagp + Mario Kart Arcade GP (Japan, MKA1 Ver.A1) + + + mkartagpc + Mario Kart Arcade GP (Japan, MKA1 Ver.C, update) + + + mkeibaou + Mahjong Keibaou (Japan) + + + mkla1 + Mortal Kombat (rev 1.0 08/09/92) + + + mkla2 + Mortal Kombat (rev 2.0 08/18/92) + + + mkla3 + Mortal Kombat (rev 3.0 08/31/92) + + + mkla3bl + Mortal Kombat (Victor bootleg of rev 3.0 08/31/92) + + + mkla4 + Mortal Kombat (rev 4.0 09/28/92) + + + mknifty + Mortal Kombat (Nifty Kombo, hack) + + + mknifty666 + Mortal Kombat (Nifty Kombo 666, hack) + + + mkoiuraa + Mahjong Koi Uranai (Japan set 2) + + + mkprot4 + Mortal Kombat (prototype, rev 4.0 07/14/92) + + + mkprot8 + Mortal Kombat (prototype, rev 8.0 07/21/92) + + + mkprot9 + Mortal Kombat (prototype, rev 9.0 07/28/92) + + + mkr4 + Mortal Kombat (rev 4.0 T-Unit 02/11/93) + + + mkrep + Mortal Kombat (Reptile Man hack) + + + mktturbo + Mortal Kombat (Turbo Ninja T-Unit 03/19/93, hack) + + + mkyawdim + Mortal Kombat (Yawdim bootleg, set 1) + + + mkyawdim2 + Mortal Kombat (Yawdim bootleg, set 2) + + + mkyawdim3 + Mortal Kombat (Yawdim bootleg, set 3) + + + mkyawdim4 + Mortal Kombat (Yawdim bootleg, set 4) + + + mkyawdim5 + Mortal Kombat (Yawdim bootleg, set 5) + + + mkyturbo + Mortal Kombat (Turbo 3.1 09/09/93, hack) + + + mkyturboe + Mortal Kombat (Turbo 3.0 08/31/92, hack) + + + mladyhtr + Mahjong The Lady Hunter (Japan 900509) + + + mlander + Moon Lander (bootleg of Lunar Rescue) + + + mlanding + Midnight Landing (Germany) + + + mlandingj + Midnight Landing (Japan, rev 3) + + + mltiwars + Multi Wars (bootleg of UniWar S) + + + mltpoints + Multi Points (V1.0, CAA) + + + mm_05 + Medieval Madness (0.50) + + + mm_10 + Medieval Madness (1.0) + + + mm_109 + Medieval Madness (1.09) + + + mm_109b + Medieval Madness (1.09B) + + + mm_109c + Medieval Madness (1.09C Profanity) + + + mm_10u + Medieval Madness (1.0 Ultrapin) + + + mmagic + Monkey Magic + + + mmaiko + Maikobana (Japan 900911, medal) + + + mmancp2u + Mega Man: The Power Battle (CPS2, USA 951006, SAMPLE Version) + + + mmancp2ur1 + Mega Man: The Power Battle (CPS2, USA 950926, SAMPLE Version) + + + mmancp2ur2 + Mega Man: The Power Battle (CPS2, USA 950925, SAMPLE Version) + + + mmaruchan + Chibi Maruko-chan ~Minna de Sugoroku Asobi~ no Maki (Ver.1.00B, 2005/06/22) + + + mmaruchana + Chibi Maruko-chan ~Minna de Sugoroku Asobi~ no Maki (Ver.1.00A, 2004/04/20) + + + mmatrix + Mars Matrix: Hyper Solid Shooting (USA 000412) + + + mmatrixa + Mars Matrix: Hyper Solid Shooting (Asia 000412) + + + mmatrixd + Mars Matrix: Hyper Solid Shooting (USA 000412 Phoenix Edition) (bootleg) + + + mmatrixj + Mars Matrix: Hyper Solid Shooting (Japan 000412) + + + mmaulers + Monster Maulers (ver EAA) + + + mmaze + Marchen Maze (Japan) + + + mmaze2 + Marchen Maze (Japan, hack?) + + + mmcamera + Mahjong Camera Kozou [BET] (Japan 890509) + + + mmehyou + Medal Mahjong Circuit no Mehyou (Japan) + + + mmhammer + Mogu Mogu Hammer (Japan, ver 1.01) + + + mmm_ldip + Lucky Dip (Maygay) + + + mmmaster + Master + + + mmmbanc + Medal Mahjong Moukari Bancho (2007/06/05 MASTER VER.) + + + mmonkey + Minky Monkey + + + mmonkeyj + Minky Monkey (Japan) + + + mmpanic + Monkey Mole Panic (USA) + + + mmpork + Muchi Muchi Pork! (2007/ 4/17 MASTER VER.) + + + mmsikaku + Mahjong Shikaku (Japan 880929, medal) + + + mnchmobl + Munch Mobile (US) + + + mnfb_c27 + Monday Night Football (2.7, 50cts) + + + mnfb_c29 + Monday Night Football (2.9, 50cts) + + + mnight + Mutant Night + + + mnightj + Mutant Night (Japan) + + + mnrockman + Medal Network: Rockman EXE + + + mntecrlo + Monte Carlo (Pinball) + + + mntecrlo2 + Monte Carlo (Pinball, rev. 2) + + + mntecrloa + Monte Carlo (Pinball, alternate set) + + + mntecrlof + Monte Carlo (Pinball, French) + + + mntecrlog + Monte Carlo (Pinball, German) + + + mnumber + Mystery Number + + + mnumitg + Magic Number (Italian gambling game, Ver 1.5) + + + mnytree + Money Tree (10001211, NSW/ACT) + + + mnytreea + Money Tree (10122211, ASP) + + + mocapb + Mocap Boxing (ver AAB) + + + mocapbj + Mocap Boxing (ver JAA) + + + mocapglf + Mocap Golf (ver EAA:B) + + + moegonta + Moeyo Gonta!! (Japan) + + + moeru + Moeru Casinyo (Japan) (GDL-0013) + + + mofflott + Maze of Flott (Japan) + + + mogitate + Mahjong Mogitate (Japan) + + + moguchan + Mogu Chan (bootleg?) + + + mogura + Mogura Desse (Japan) + + + mohicans + Mohican Sun (Konami Endeavour, Russia) + + + mok + The Maze of the Kings (GDS-0022) + + + mole + Mole Attack + + + momoko + Momoko 120% (Japanese text) + + + momokob + Momoko 120% (bootleg) + + + momokoe + Momoko 120% (English text) + + + momotaro + Mahjong Momotarou (Japan, T027-RB-01) + + + monacogp + Monaco GP (set 1) + + + monacogpa + Monaco GP (set 2) + + + moneybnk + Money In The Bank (NSW, Australia) + + + moneymac + Money Machine (Version 1.7E Dual) + + + moneymacd1 + Money Machine (Version 1.7R) + + + moneymacd2 + Money Machine (Version 1.7LT) + + + moneymacv1 + Money Machine (Version 1.7R Dual) + + + moneymacv2 + Money Machine (Version 1.7LT Dual) + + + mongolnw + Mongolfier New (Italian) + + + monkelf + Monky Elf (Korean bootleg of Avenging Spirit) + + + monkeyba + Monkey Ball (GDS-0008) + + + monkeyd + Monkey Donkey + + + monkeyjmp + Monkey Jump + + + monkeyl + Monkey Land (Ver. AA.21.A) + + + monkeyla + Monkey Land (Ver. AA.13.B) + + + monkeylb + Monkey Land (Ver. AA.21.B) + + + monkeylc + Monkey Land (Ver. AA.21.C) + + + monkeyld + Monkey Land (Ver. A1.2) + + + monmouse + Money Mouse (0400469V, NSW/ACT) + + + monmousea + Money Mouse (0300469V, NSW/ACT) + + + mononew + Monopoly (CPU 3.20, display A3.01, ARM7 sound board) + + + monop233 + Monopoly (CPU 2.33, display A2.03) + + + monop251 + Monopoly (CPU 2.51, display A2.06) + + + monop301 + Monopoly (CPU 3.01, display A3.01) + + + monop303 + Monopoly (CPU 3.03, display A3.01) + + + monoplcl + Monopoly Classic (JPM) (Version 5) (SYSTEM5 VIDEO) + + + monoplcld + Monopoly Classic (JPM) (Version 5, Protocol) (SYSTEM5 VIDEO) + + + monopldx + Monopoly Deluxe (JPM) (Version 6) (SYSTEM5 VIDEO) + + + monopldx1 + Monopoly Deluxe (JPM) (Version 1) (SYSTEM5 VIDEO) + + + monopldxd + Monopoly Deluxe (JPM) (Version 6, Protocol) (SYSTEM5 VIDEO) + + + monopolf + Monopoly (CPU 3.20, display F3.01, France) + + + monopolg + Monopoly (CPU 3.20, display G3.01, Germany) + + + monopoli + Monopoly (CPU 3.20, display I3.01, Italy) + + + monopoll + Monopoly (CPU 3.20, display L3.01, Spain) + + + monopolp + Monopoly (CPU 3.20, display A3.01) + + + monopoly + Monopoly (JPM) (Version 4H) (SYSTEM5 VIDEO) + + + monopoly3 + Monopoly (JPM) (Version 3) (SYSTEM5 VIDEO) + + + monopoly4 + Monopoly (JPM) (Version 4) (SYSTEM5 VIDEO) + + + monopolyd + Monopoly (JPM) (Version 4H, Protocol) (SYSTEM5 VIDEO) + + + monopred + Monopoly (coin dropper, CPU 4.01, display 4.00) + + + monrobwl + Stars & Strikes (Bowler) + + + monshow + The Monster Show (Konami Endeavour, Russia) + + + monspdr + Money Spider (Ace) + + + monsterb + Monster Bash + + + monsterb2 + Monster Bash (2 board version) + + + monsterz + Monster Zero (set 1) + + + monsterza + Monster Zero (set 2) + + + montana + Montana Bingo Stake 6/10 (Bingo) + + + montecar + Monte Carlo + + + montree + Money Tree (0201397V, New Zealand) + + + monymony + Money Money (set 1) + + + monymony2 + Money Money (set 2) + + + monzagp + Monza GP (set 1) + + + monzagpa + Monza GP (set 2) + + + moo + Wild West C.O.W.-Boys of Moo Mesa (World version EA) + + + moobl + Wild West C.O.W.-Boys of Moo Mesa (bootleg version AA) + + + moomesa + Wild West C.O.W.-Boys of Moo Mesa (ver EAB) + + + moomesaaab + Wild West C.O.W.-Boys of Moo Mesa (ver AAB) + + + moomesabl + Wild West C.O.W.-Boys of Moo Mesa (bootleg) + + + moomesauab + Wild West C.O.W.-Boys of Moo Mesa (ver UAB) + + + moomesauac + Wild West C.O.W.-Boys of Moo Mesa (ver UAC) + + + moonal2 + Moon Alien Part 2 + + + moonal2b + Moon Alien Part 2 (older version) + + + moonaln + Moon Alien + + + moonbase + Moon Base Zeta (set 1) + + + moonbasea + Moon Base Zeta (set 2) + + + mooncmw + Moon War (bootleg of Moon Cresta) + + + mooncptc + Moon Cresta (Petaco S.A. Spanish bootleg) + + + mooncrecm + Moon Cresta (Centromatic Spanish bootleg) + + + mooncreg + Moon Cresta (Electrogame S.A. Spanish bootleg, set 1) + + + mooncreg2 + Moon Cresta (Electrogame S.A. Spanish bootleg, set 2) + + + mooncrgx + Moon Cresta (bootleg on Galaxian hardware) + + + mooncrs2 + Moon Cresta (bootleg set 2) + + + mooncrs3 + Moon Cresta (bootleg set 3) + + + mooncrs4 + Moon Crest (bootleg of Moon Cresta) + + + mooncrs5 + Moon Cresta (bootleg set 4) + + + mooncrsa + Moon Cresta (Nichibutsu, old rev) + + + mooncrsb + Moon Cresta (bootleg set 1) + + + mooncrsg + Moon Cresta (Gremlin) + + + mooncrsl + Cresta Mundo (Spanish bootleg of Moon Cresta) + + + mooncrst + Moon Cresta (Nichibutsu) + + + mooncrstg + Moon Cresta (Gremlin) + + + mooncrsto + Moon Cresta (Nichibutsu, old rev) + + + mooncrstso + Moon Cresta (SegaSA / Sonic) + + + mooncrstu + Moon Cresta (Nichibutsu USA, encrypted) + + + mooncrstuk + Moon Cresta (Nichibutsu UK) + + + mooncrstuku + Moon Cresta (Nichibutsu UK, unencrypted) + + + mooncrstuu + Moon Cresta (Nichibutsu USA, unencrypted) + + + mooncrsu + Moon Cresta (Nichibutsu, unencrypted) + + + moonfire + Moon Fire - Jackpot Carnival (30164211, Queensland) + + + moonlght + Moon Light (v.0629, low program) + + + moonlghta + Moon Light (v.0629, high program) + + + moonlghtb + Moon Light (v.02L0A, low program) + + + moonlghtc + Moon Light (v.02L0A, high program, alt gfx) + + + moonqsr + Moon Quasar + + + moonwalk + Michael Jackson's Moonwalker (Set 1) + + + moonwalt + Moonlight Waltz (10227611, NSW/ACT) + + + moonwar + Moonwar + + + moonwara + Moonwar (older) + + + moonwarp + Moon War (prototype on Frenzy hardware) + + + moonwlka + Michael Jackson's Moonwalker (Set 2) + + + moonwlkb + Michael Jackson's Moonwalker (bootleg) + + + mooua + Wild West C.O.W.-Boys of Moo Mesa (US version UA) + + + moremore + More More + + + moremorp + More More Plus + + + mortalr + Mortal Race + + + mosaic + Mosaic + + + mosaica + Mosaic (Fuuki) + + + mosaicf2 + Mosaic (F2 System) + + + mosdraw + Montana Super Draw (4436-05, U5-0) + + + moshougi + Shougi no Tatsujin - Master of Shougi + + + mosyougi + Syougi No Tatsujin - Master of Syougi + + + motofren + Moto Frenzy + + + motofrenft + Moto Frenzy (Field Test Version) + + + motofrenmd + Moto Frenzy (Mini Deluxe) + + + motofrenmf + Moto Frenzy (Mini Deluxe Field Test Version) + + + motogonki + Motogonki + + + motogp + MotoGP (MGP1004-NA-B) + + + motorace + MotoRace USA + + + motoraid + Motor Raid - Twin + + + motoraiddx + Motor Raid - Twin/DX + + + motos + Motos + + + mototour + MotoTour / Zippy Race (Tecfri license) + + + mototoura + MotoTour / Zippy Race (Assa version of Tecfri license) + + + motoxgo + Motocross Go! (US, MG3 Ver. A) + + + motoxgov1a + Motocross Go! (Japan, MG1 Ver. A, set 1) + + + motoxgov1a2 + Motocross Go! (Japan, MG1 Ver. A, set 2) + + + motoxgov2a + Motocross Go! (World, MG2 Ver. A, set 1) + + + motoxgov2a2 + Motocross Go! (World, MG2 Ver. A, set 2) + + + motrdome + MotorDome (rev. D) + + + motrdomeb + MotorDome (rev. B) + + + motrdomeg + MotorDome (German rev. B) + + + motrshow + Motor Show (set 1) + + + motrshowa + Motor Show (set 2) + + + motrshowb + Motor Show (set 3) + + + mouja + Mouja (Japan) + + + mouncrst + Moune Creste (Jeutel French bootleg of Moon Cresta) + + + mountmon + Mountain Money (0100294V, NSW/ACT) + + + mountmona + Mountain Money (0100289V, NSW/ACT) + + + mountmonce + Mountain Money - Cash Express (AHG1629, US) + + + mountmonu + Mountain Money (BHG1465, US) + + + mountmonua + Mountain Money (BHG1464, US) + + + mouseatk + Mouse Attack + + + mouser + Mouser + + + mouserc + Mouser (Cosmos) + + + mousn_l1 + Mousin' Around! (LA-1) + + + mousn_l4 + Mousin' Around! (LA-4) + + + mousn_lu + Mousin' Around! (LU-1) + + + mousn_lx + Mousin' Around! (LX-1) + + + moviecrd + Movie Card + + + movmastr + Movie Masters + + + mp_bio + Bio-hazard Battle (Mega Play) + + + mp_col3 + Columns III (Mega Play) + + + mp_gaxe2 + Golden Axe II (Mega Play) (Rev B) + + + mp_gaxe2a + Golden Axe II (Mega Play) + + + mp_gslam + Grand Slam (Mega Play) + + + mp_gunhe + Gunstar Heroes (Mega Play) + + + mp_mazin + Mazin Wars / Mazin Saga (Mega Play) + + + mp_shnb3 + Shinobi III (Mega Play) + + + mp_soni2 + Sonic The Hedgehog 2 (Mega Play) + + + mp_sonic + Sonic The Hedgehog (Mega Play) + + + mp_sor2 + Streets of Rage II (Mega Play) + + + mp_twc + Tecmo World Cup + + + mp_twcup + Tecmo World Cup (Mega Play) + + + mpang + Mighty! Pang (Europe 001010) + + + mpanga + Mighty! Pang (Asia 001010) + + + mpangj + Mighty! Pang (Japan 001011) + + + mpangjd + Mighty! Pang (Japan 001011 Phoenix Edition) (bootleg) + + + mpangr1 + Mighty! Pang (Europe 000925) + + + mpangu + Mighty! Pang (USA 001010) + + + mpatrol + Moon Patrol + + + mpatrolw + Moon Patrol (Williams) + + + mpchoice + Player's Choice (M4C1) + + + mpchoicea + Player's Choice (M3C1) + + + mplanets + Mad Planets + + + mplanetsuk + Mad Planets (UK) + + + mplanuk + Mad Planets (UK) + + + mpoker2 + Major Poker 2 (set 1) + + + mpoker2a + Major Poker 2 (set 2) + + + mpoker2b + Major Poker 2 (set 3) + + + mpumpkin + Magical Pumpkin: Puroland de Daibouken (Japan 960712) + + + mquake + Moonquake + + + mranger + Moon Ranger (bootleg of Moon Patrol) + + + mrblack + Mr. Black (set 1) + + + mrblack1 + Mr. Black (set 2) + + + mrblkz80 + Mr. Black (Z-80 CPU) + + + mrdig + Mr. Dig + + + mrdo + Mr. Do! + + + mrdobl + Mr. Do! (bootleg) + + + mrdofabr + Mr. Do! (Fabremar bootleg) + + + mrdofix + Mr. Do! (bugfixed) + + + mrdot + Mr. Do! (Taito) + + + mrdoy + Mr. Do! (prototype) + + + mrdrillr + Mr. Driller (US, DRI3/VER.A2) + + + mrdrillrja2 + Mr. Driller (Japan, DRI1/VER.A2) + + + mrdrilr2 + Mr. Driller 2 (World, DR22 Ver.A) + + + mrdrilr2j + Mr. Driller 2 (Japan, DR21 Ver.A) + + + mrdrilr2u + Mr. Driller 2 (US, DR23 Ver.A) + + + mrdrilrg + Mr. Driller G (Japan, DRG1 Ver.A) + + + mrdu + Mr. Du! + + + mrflea + The Amazing Adventures of Mr. F. Lea + + + mrgoemon + Mr. Goemon (Japan) + + + mrheli + Mr. HELI no Daibouken (Japan) + + + mrjong + Mr. Jong (Japan) + + + mrkicker + Mr. Kicker (F-E1-16-010 PCB) + + + mrkickera + Mr. Kicker (SEMICOM-003b PCB) + + + mrkougar + Mr. Kougar + + + mrkougar2 + Mr. Kougar (earlier) + + + mrkougb + Mr. Kougar (German bootleg) + + + mrkougb2 + Mr. Kougar (bootleg) + + + mrkougr2 + Mr. Kougar (earlier) + + + mrlo + Mr. Lo! + + + mrokumei + Mahjong Rokumeikan (Japan) + + + mroundup + The Round Up + + + mrsdyna + Mrs. Dynamite + + + mrtlbeat + Martial Beat (G*B47 VER. JBA) + + + mrtlbeata + Martial Beat (G*B47 VER. JAB) + + + mrtnt + Mr. TNT + + + mrviking + Mister Viking (315-5041) + + + mrvikingj + Mister Viking (315-5041, Japan) + + + mrvikngj + Mister Viking (Japan) + + + mrwoo + Mr Woo (0252599, US) + + + ms14 + Multistar 14 + + + ms21v2 + Metal Slug 2 - Super Vehicle-001/II (1v2 Mode, Hack) + + + ms3 + Multistar 3 + + + ms31v2 + Metal Slug 3 (1v2 Mode, Hack) + + + ms3dbpls + Metal Slug 3 (Double Enemy, Hack) + + + ms41v2 + Metal Slug 4 (1v2 Mode, Hack) + + + ms4plus + Metal Slug 4 Plus (bootleg) + + + ms5 + Multistar 5 + + + ms51v2 + Metal Slug 5 (1v2 Mode, Hack) + + + ms5esr + Metal Slug 5 (Double Enemy, Hack) + + + ms5pcb + Metal Slug 5 (JAMMA PCB) + + + ms5plus + Metal Slug 5 Plus (bootleg) + + + ms5plush + Metal Slug 5 (Plus, Hack) + + + ms5sgf + Metal Slug 5 (Remake FC2, Hack) + + + ms72c + Multistar 7 2c + + + msbamby + Miss Bamby + + + msbingo + Miss Bingo + + + mschamp + Ms. Pacman Champion Edition / Zola-Puc Gal + + + mschamps + Ms. Pacman Champion Edition / Super Zola-Puc Gal + + + mscoutm + Mahjong Scout Man (Japan) + + + msdisco + Miss Disco (Bingo) + + + msgogo + Mouse Shooter GoGo + + + msgunda1 + Mobile Suit Gundam (Japan) + + + msgundam + Mobile Suit Gundam + + + msgundam1 + Mobile Suit Gundam (Japan) + + + msgundamb + Mobile Suit Gundam (bootleg) + + + msh + Marvel Super Heroes (Europe 951024) + + + msha + Marvel Super Heroes (Asia 951024) + + + mshb + Marvel Super Heroes (Brazil 951117) + + + mshbh + Marvel Super Heroes (Boss Hack) + + + mshbr1 + Marvel Super Heroes (Brazil 951024) + + + msheartb + Ms. Pac-Man Heart Burn + + + mshh + Marvel Super Heroes (Hispanic 951117) + + + mshj + Marvel Super Heroes (Japan 951117) + + + mshjr1 + Marvel Super Heroes (Japan 951024) + + + mshu + Marvel Super Heroes (USA 951024) + + + mshud + Marvel Super Heroes (USA 951024 Phoenix Edition) (bootleg) + + + mshuttle + Moon Shuttle (US? set 1) + + + mshuttle2 + Moon Shuttle (US? set 2) + + + mshuttlea + Moon Shuttle (US, version A) + + + mshuttlej + Moon Shuttle (Japan set 1) + + + mshuttlej2 + Moon Shuttle (Japan set 2) + + + mshuttlj + Moon Shuttle (Japan) + + + mshvsf + Marvel Super Heroes Vs. Street Fighter (Europe 970625) + + + mshvsfa + Marvel Super Heroes Vs. Street Fighter (Asia 970625) + + + mshvsfa1 + Marvel Super Heroes Vs. Street Fighter (Asia 970620) + + + mshvsfb + Marvel Super Heroes Vs. Street Fighter (Brazil 970827) + + + mshvsfb1 + Marvel Super Heroes Vs. Street Fighter (Brazil 970625) + + + mshvsfbh + Marvel Super Heroes Vs. Street Fighter (Boss Hack) + + + mshvsfcph + Marvel Super Heroes Vs. Street Fighter (Coop, Hack) + + + mshvsfem + Marvel Super Heroes Vs. Street Fighter (Easy Moves, Hack) + + + mshvsfh + Marvel Super Heroes Vs. Street Fighter (Hispanic 970625) + + + mshvsfj + Marvel Super Heroes Vs. Street Fighter (Japan 970707) + + + mshvsfj1 + Marvel Super Heroes Vs. Street Fighter (Japan 970702) + + + mshvsfj2 + Marvel Super Heroes Vs. Street Fighter (Japan 970625) + + + mshvsfu + Marvel Super Heroes Vs. Street Fighter (USA 970827) + + + mshvsfu1 + Marvel Super Heroes Vs. Street Fighter (USA 970625) + + + mshvsfu1d + Marvel Super Heroes Vs. Street Fighter (USA 970625 Phoenix Edition) (bootleg) + + + msisaac + Metal Soldier Isaac II + + + msjiken + Mahjong Satsujin Jiken (Japan 881017) + + + mskitty + Miss Kitty (10216611, NSW/ACT) + + + mslider + Monster Slider (Japan) + + + mslug + Metal Slug - Super Vehicle-001 + + + mslug1v2 + Metal Slug - Super Vehicle-001 (1v2 Mode, Hack) + + + mslug2 + Metal Slug 2 - Super Vehicle-001/II (NGM-2410 ~ NGH-2410) + + + mslug2ct + Metal Slug 2 - Super Vehicle-001/II (Survival, Hack) + + + mslug2dd + Metal Slug 2 - Super Vehicle-001/II (Starlight, Hack) + + + mslug2dg + Metal Slug 2 - Super Vehicle-001/II (Multifunction, Hack) + + + mslug2eg + Metal Slug 2 - Super Vehicle-001/II (Extraction Green Turbo, Hack) + + + mslug2fm + Metal Slug 2 - Super Vehicle-001/II (Friendly Fire FC2, Hack) + + + mslug2p + Metal Slug 2 - Super Vehicle-001/II (Weapon Storage, Hack) + + + mslug2r + Metal Slug 2 - Super Vehicle-001/II (Enemy Remix, Hack) + + + mslug2t + Metal Slug 2 Turbo (NGM-9410) (hack) + + + mslug2unity + Metal Slug 2 - Super Vehicle-001/II Unity (Added Timer Ver. 2021-01-22) + + + mslug3 + Metal Slug 3 (NGM-2560) + + + mslug3a + Metal Slug 3 (NGM-2560, earlier) + + + mslug3b6 + Metal Slug 6 (bootleg of Metal Slug 3) + + + mslug3c + Metal Slug 3 (Enemy Remix, Hack) + + + mslug3cq + Metal Slug 3 (Legend, Hack) + + + mslug3cqi + Metal Slug 3 (Legend with Infinite Firepower, Hack) + + + mslug3cqt + Metal Slug 3 (Legend TD, Hack) + + + mslug3cqz + Metal Slug 3 (Legendary Journey, Hack) + + + mslug3dd + Metal Slug 3 (Starlight, Hack) + + + mslug3eb + Metal Slug 3 (Blue, Hack) + + + mslug3fd + Metal Slug 3 (Fully Decrypted) + + + mslug3g + Metal Slug 3 (Multifunction, Hack) + + + mslug3gw + Metal Slug 3 (Onimusha Samanosuke, Hack) + + + mslug3h + Metal Slug 3 (NGH-2560) + + + mslug3i + Metal Slug 3 (Firepower Enhance, Hack) + + + mslug3ki + Metal Slug 3 (Komorebi, Hack) + + + mslug3lw + Metal Slug 3 (Last Bullet Remix, Hack) + + + mslug3n + Metal Slug 3 (not encrypted) + + + mslug3ps + Metal Slug 3 (Pigeon Slug, Hack) + + + mslug3sc + Metal Slug 3 (Survival, Hack) + + + mslug3sd + Metal Slug 3 (Shop, Hack) + + + mslug3se + Metal Slug 3 (Special, Hack) + + + mslug3unity + Metal Slug 3 Unity (Added Timer Ver. 2021-02-13) + + + mslug3v + Metal Slug 3 (Enhanced Violence, Hack) + + + mslug3x + Metal Slug 3X - Complete Collection (Hack) + + + mslug3zh + Metal Slug 3 (Vehicle Summon, Hack) + + + mslug4 + Metal Slug 4 (NGM-2630) + + + mslug4a + Metal Slug 4 (20th Anniversary, Hack) + + + mslug4ar + Metal Slug 4 (Random Ammunition, Hack) + + + mslug4c + Metal Slug 4 (Enemy Remix, Hack) + + + mslug4dd + Metal Slug 4 (Starlight, Hack) + + + mslug4dg + Metal Slug 4 (Multifunction, Hack) + + + mslug4fd + Metal Slug 4 (Fully Decrypted) + + + mslug4h + Metal Slug 4 (NGH-2630) + + + mslug4ki + Metal Slug 4 (Komorebi, Hack) + + + mslug4lq + Metal Slug 4 (Last Bullet Remix - Without body armor, Hack) + + + mslug4lw + Metal Slug 4 (Last Bullet Remix, Hack) + + + mslug4q + Metal Slug 4 (The Longest Battle, Hack) + + + mslug4unity + Metal Slug 4 Unity (Added Timer Ver. 2021-01-30) + + + mslug4zj + Metal Slug 4 (Final, Hack) + + + mslug5 + Metal Slug 5 (NGM-2680) + + + mslug5ae + Metal Slug 5 (20th Anniversary, Hack) + + + mslug5b + Metal Slug 5 (bootleg) + + + mslug5b2 + Metal Slug 5 (bootleg, set 2) + + + mslug5bs + Metal Slug 5 (Boss Battles, Hack) + + + mslug5c + Metal Slug 5 (Enemy Remix, Hack) + + + mslug5cq + Metal Slug 5 (Legend, Hack) + + + mslug5db + Metal Slug 5 (Enemy Enhance, Hack) + + + mslug5dd + Metal Slug 5 (Starlight, Hack) + + + mslug5dg + Metal Slug 5 (Multifunction, Hack) + + + mslug5es + Metal Slug 5 (The Longest Battle, Hack) + + + mslug5ex + Metal Slug 5 (Extend v1.2, Hack) + + + mslug5f + Metal Slug 5 (Fierce Battle, Hack) + + + mslug5fd + Metal Slug 5 (Fully Decrypted) + + + mslug5h + Metal Slug 5 (NGH-2680) + + + mslug5ki + Metal Slug 5 (Komorebi, Hack) + + + mslug5mg + Metal Slug 5 (Devil Enemy Remix, Hack) + + + mslug5nd + Metal Slug 5 (Not Encrypted) + + + mslug5sc + Metal Slug 5 (Survival, Hack) + + + mslug5sg + Metal Slug 5 (Stone Turtle, Hack) + + + mslug5unity + Metal Slug 5 Unity (Added Timer Ver. 2021-04-23) + + + mslug5w + Metal Slug 5 (New Battle, Hack) + + + mslug5x + Metal Slug 5 (X, Hack) + + + mslug5zh + Metal Slug 5 (Vehicle Summon, Hack) + + + mslug6 + Metal Slug 6 + + + mslugdg + Metal Slug - Super Vehicle-001 (Multifunction, Hack) + + + mslugfc1 + Metal Slug - Super Vehicle-001 (Random Item, Hack) + + + mslugfc2 + Metal Slug - Super Vehicle-001 (Random Item & Powerful Enemy Defense, Hack) + + + mslugfs + Metal Slug - Super Vehicle-001 (Firepower Showdown, Hack) + + + mslugqy + Metal Slug - Super Vehicle-001 (Origins, Hack) + + + mslugunity + Metal Slug Unity (Added Timer Ver. 2021-02-05) + + + mslugx + Metal Slug X - Super Vehicle-001 (NGM-2500 ~ NGH-2500) + + + mslugx2r + Metal Slug X - Super Vehicle-001 (2R, Hack) + + + mslugxc1 + Metal Slug X - Super Vehicle-001 (Multi Vehicle, Hack) + + + mslugxc2 + Metal Slug X - Super Vehicle-001 (Enemy Remix, Hack) + + + mslugxcq + Metal Slug X - Super Vehicle-001 (Legend, Hack) + + + mslugxcqi + Metal Slug X - Super Vehicle-001 (Legend with Infinite Firepower, Hack) + + + mslugxdd + Metal Slug X - Super Vehicle-001 (Starlight, Hack) + + + mslugxdg + Metal Slug X - Super Vehicle-001 (Multifunction, Hack) + + + mslugxeb + Metal Slug X - Super Vehicle-001 (Blue, Hack) + + + mslugxif + Metal Slug X - Super Vehicle-001 (Infinite Firepower, Hack) + + + mslugxlb + Metal Slug X - Super Vehicle-001 (Extreme Space, Hack) + + + mslugxsc + Metal Slug X - Super Vehicle-001 (Survival, Hack) + + + mslugxsv + Metal Slug X - Super Vehicle-001 (Unbounded, Hack) + + + mslugxunity + Metal Slug X - Super Vehicle-001 Unity (Added Timer Ver. 2021-01-23) + + + mslugxxr + Metal Slug X - Super Vehicle-001 (Warriors, Hack) + + + mspacii + Ms. Pac-Man II (Orca bootleg, set 1) + + + mspacii2 + Ms. Pac-Man II (Orca bootleg, set 2) + + + mspackpls + Miss Packman Plus + + + mspacmab + Ms. Pac-Man (bootleg, set 1) + + + mspacmab2 + Ms. Pac-Man (bootleg, set 2) + + + mspacmab3 + Ms. Pac-Man (bootleg, set 3) + + + mspacmab4 + Ms. Pac-Man (bootleg, set 4) + + + mspacman + Ms. Pac-Man + + + mspacmanbcc + Come-Cocos (Ms. Pac-Man) ('Made in Greece' Tecnausa bootleg) + + + mspacmanbco + Come-Cocos (Ms. Pac-Man) (Cocamatic bootleg) + + + mspacmanbg + Ms. Pac-Man ('Made in Greece' bootleg, set 1) + + + mspacmanbg2 + Ms. Pac-Man ('Made in Greece' bootleg, set 2) + + + mspacmanbgc + Ms. Pac-Man ('Made in Greece' Enavi bootleg) + + + mspacmanbgd + Miss Pukman ('Made in Greece' Datamat bootleg) + + + mspacmanbgf + Mr Pac-Turbo ('Made in Greece' Fermin bootleg) + + + mspacmanbhe + Come-Cocos (Ms. Pac-Man) ('Made in Greece' Herle SA bootleg) + + + mspacmanbi + Ms. Pac-Man (Impeuropex bootleg) + + + mspacmanblt + Come-Cocos (Ms. Pac-Man) ('Made in Greece' Triunvi bootleg, set 1) + + + mspacmanblt2 + Come-Cocos (Ms. Pac-Man) ('Made in Greece' Triunvi bootleg, set 2) + + + mspacmancr + Ms. Pac-Man (bootleg on Crush Roller Hardware) + + + mspacmane + Ms. Pac-Man (Elmac bootleg, earlier) + + + mspacmane2 + Ms. Pac-Man (Elmac bootleg, later) + + + mspacmanhnc + Super Ms. Pac-Man (turbo hack, NVC284/NVC285 hardware) + + + mspacmanlai + Ms. Pac-Man (Leisure and Allied bootleg) + + + mspacmap + Ms. Pac-Man (Patched) + + + mspacmat + Ms. Pac Attack + + + mspacmbe + Ms. Pac-Man (bootleg, encrypted) + + + mspacmbmc + Ms. Pac-Man (Marti Colls bootleg) + + + mspacmbn + Ms. Pac-Man (Novatronic bootleg) + + + mspacmnf + Ms. Pac-Man (speedup hack) + + + mspacpls + Ms. Pac-Man Plus + + + mspactwin + Ms Pac Man Twin (Argentina, set 1) + + + mspactwina + Ms Pac Man Twin (Argentina, set 2) + + + mspuzzle + Miss Puzzle + + + mspuzzlea + Miss Puzzle (Nudes, less explicit) + + + mspuzzleb + Miss Puzzle (Nudes, more explicit) + + + mspuzzleg + Miss Puzzle (Clone of Gumbo) + + + msqyfc1 + Metal Slug - Super Vehicle-001 (Origins Item Random, Hack) + + + mstadium + Main Stadium (Japan) + + + mstworld + Monsters World (bootleg of Super Pang) + + + mstworld2 + Monsters World 2 (bootleg of Super Pang) + + + msupstar + Superstar (4435-81, U5-1) + + + msword + Magic Sword: Heroic Fantasy (World 900725) + + + mswordj + Magic Sword: Heroic Fantasy (Japan 900623) + + + mswordr1 + Magic Sword: Heroic Fantasy (World 900623) + + + mswordu + Magic Sword: Heroic Fantasy (USA 900725) + + + msx1v2 + Metal Slug X - Super Vehicle-001 (1v2 Mode, Hack) + + + msx2r1v2 + Metal Slug X - Super Vehicle-001 (2R 1v2 Mode, Hack) + + + msx2reb + Metal Slug X - Super Vehicle-001 (2R Blue, Hack) + + + msxsrf + Metal Slug X - Super Vehicle-001 (AzStar Soda Remix FC2, Hack) + + + mt_aftrb + After Burner (Mega-Tech, SMS based) + + + mt_arrow + Arrow Flash (Mega-Tech) + + + mt_astrm + Alien Storm (Mega-Tech) + + + mt_astro + Astro Warrior (Mega-Tech, SMS based) + + + mt_asyn + Alien Syndrome (Mega-Tech, SMS based) + + + mt_bbros + Bonanza Bros. (Mega-Tech) + + + mt_beast + Altered Beast (Mega-Tech) + + + mt_calga + California Games (Mega-Tech) + + + mt_cols + Columns (Mega-Tech) + + + mt_crack + Crack Down (Mega-Tech) + + + mt_eswat + Cyber Police ESWAT: Enhanced Special Weapons and Tactics (Mega-Tech) + + + mt_fshrk + Fire Shark (Mega-Tech) + + + mt_fwrld + Forgotten Worlds (Mega-Tech) + + + mt_fz + Fantasy Zone (Mega-Tech, SMS based) + + + mt_gaxe + Golden Axe (Mega-Tech) + + + mt_gaxe2 + Golden Axe II (Mega-Tech) + + + mt_gfoot + Great Football (Mega-Tech, SMS based) + + + mt_ggolf + Great Golf (Mega-Tech, SMS based) + + + mt_gng + Ghouls'n Ghosts (Mega-Tech) + + + mt_gsocr + Great Soccer (Mega-Tech, SMS based) + + + mt_kcham + Kid Chameleon (Mega-Tech) + + + mt_lastb + Last Battle (Mega-Tech) + + + mt_mlh + Mario Lemieux Hockey (Mega-Tech) + + + mt_mwalk + Michael Jackson's Moonwalker (Mega-Tech) + + + mt_mystd + Mystic Defender (Mega-Tech) + + + mt_orun + Out Run (Mega-Tech, SMS based) + + + mt_parlg + Parlour Games (Mega-Tech, SMS based) + + + mt_revsh + The Revenge of Shinobi (Mega-Tech) + + + mt_shado + Shadow Dancer (Mega-Tech) + + + mt_shang + Super Hang-On (Mega-Tech) + + + mt_shar2 + Space Harrier II (Mega-Tech) + + + mt_shnbi + Shinobi (Mega-Tech, SMS based) + + + mt_smgp + Super Monaco GP (Mega-Tech) + + + mt_soni2 + Sonic The Hedgehog 2 (Mega-Tech) + + + mt_sonia + Sonic The Hedgehog (Mega-Tech, set 2) + + + mt_sonic + Sonic The Hedgehog (Mega-Tech, set 1) + + + mt_spman + Spider-Man vs The Kingpin (Mega-Tech) + + + mt_srage + Streets of Rage (Mega-Tech) + + + mt_srbb + Super Real Basketball (Mega-Tech) + + + mt_stbld + Super Thunder Blade (Mega-Tech) + + + mt_stf + Joe Montana II: Sports Talk Football (Mega-Tech) + + + mt_tetri + Tetris (Mega-Tech) + + + mt_tfor2 + Thunder Force II MD (Mega-Tech) + + + mt_tgolf + Arnold Palmer Tournament Golf (Mega-Tech) + + + mt_tlbba + Tommy Lasorda Baseball (Mega-Tech) + + + mt_tout + Turbo Outrun (Mega-Tech) + + + mt_wcsoc + World Championship Soccer (Mega-Tech) + + + mt_wwar + Wrestle War (Mega-Tech) + + + mtburn + Money To Burn (English) + + + mtburnr + Money To Burn (Russian) + + + mtchxl5k + MegaTouch XL Super 5000 (Version R5I) + + + mtchxl5ko + MegaTouch XL Super 5000 (Version R5B) + + + mtchxl5ko2 + MegaTouch XL Super 5000 (Version R5E) + + + mtchxl6k + MegaTouch XL 6000 (Version r07) + + + mtchxl6ko + MegaTouch XL 6000 (Version r02) + + + mtchxl6ko4 + MegaTouch XL 6000 (Version r04) + + + mtchxlgld + MegaTouch XL Gold (Version r01) + + + mtchxlgldo + MegaTouch XL Gold (Version r00) + + + mtchxlti + MegaTouch XL Titanium (Version r0?, cracked) + + + mtetrisc + Magical Tetris Challenge (981009 Japan) + + + mtjpoker + Merit Touch Joker Poker (9132-00) + + + mtlchamp + Martial Champion (ver EAB) + + + mtlchamp1 + Martial Champion (ver EAA) + + + mtlchampa + Martial Champion (ver AAA) + + + mtlchampj + Martial Champion (ver JAA) + + + mtlchampu + Martial Champion (ver UAE) + + + mtlchampu1 + Martial Champion (ver UAD) + + + mtlchmpj + Martial Champion (Japan ver JAA) + + + mtouchxl + MegaTouch XL (Version R1, prototype?) + + + mtrain + Magic Train (Ver. 1.4) + + + mtraina + Magic Train (Ver. 1.31) + + + mtrainnv + Magic Train (Clear NVRAM ROM?) + + + mtrap + Mouse Trap (version 5) + + + mtrap2 + Mouse Trap (version 2) + + + mtrap3 + Mouse Trap (version 3) + + + mtrap4 + Mouse Trap (version 4) + + + mtrap4g + Mouse Trap (German, version 4) + + + mtrapb + Mouse Trap (bootleg) + + + mtrapb2 + Mouse Trap (version 4, bootleg) + + + mtwinbee + Magical Twin Bee (ver EAA) + + + mtwins + Mega Twins (World 900619) + + + mtwinsb + Twins (bootleg of Mega Twins) + + + mugsmash + Mug Smashers + + + multchmp + Multi Champ (World, ver. 2.5) + + + multchmpa + Multi Champ (World, older) + + + multchmpk + Multi Champ (Korea, older) + + + multgmxl + Multi GAME XL + + + multi96 + Multi Game '96 (Italy) + + + multibaby + Multi Baby + + + multidrw + Multidraw - Free Games (0200956V, NSW/ACT) + + + multigam + Multi Game (set 1) + + + multigm2 + Multi Game 2 + + + multigm3 + Multi Game III + + + multigmb + Multi Game (set 2) + + + multigmt + Multi Game (Tung Sheng Electronics) + + + multiped + Multipede (Centipede/Millipede multigame kit) + + + multiwin + Multi Win (Ver.0167, encrypted) + + + multiwina + Multi Win (Ver.0091, encrypted) + + + multiwinb + Multi Win (EPM7032, encrypted) + + + multy + Multy + + + mundial + Mundial 90 + + + munsters + The Munsters + + + murogem + Muroge Monaco (set 1) + + + murogema + Muroge Monaco (set 2) + + + murogemb + Muroge Monaco (set 3) + + + murogmbl + Muroge Monaco (bootleg?) + + + musclem + Muscle Master + + + musclhit + Muscle Ranking Kinniku Banzuke Spray Hitter + + + mushi2eo + Mushiking The King Of Beetles - Mushiking II / III / III+ (Ver. 1.001) (World) + + + mushi2k4 + Mushiking The King Of Beetles 2004 Second (Japan) + + + mushi2k5 + Mushiking The King Of Beetles 2005 First (Japan) + + + mushi2k61 + Mushiking The King Of Beetles 2006 First (Japan) + + + mushi2k62 + Mushiking The King Of Beetles 2006 Second (Japan) + + + mushik2e + Mushiking The King Of Beetles - Mushiking II / III / III+ (Ver. 2.001) (World) + + + mushik2k + Mushiking The King Of Beetles - Mushiking II / III / III+ (Ver. 1.000-) (Korea) + + + mushik4e + Mushiking The King Of Beetles - Mushiking IV / V / VI (World) + + + mushik4t + Mushiking The King Of Beetles - Mushiking IV / V / VI (Taiwan) + + + mushikc + Mushiking The King Of Beetle (2K3 2ND Ver. 1.000-, China) + + + mushike + Mushiking The King Of Beetle (2K3 2ND Ver. 1.003-, World) + + + mushikeo + Mushiking The King Of Beetle (2K3 2ND Ver. 1.002-, World) + + + mushikep + Mushiking The King Of Beetle (MUSHIUSA '04 1ST, Prototype) + + + mushikk + Mushiking The King Of Beetle (2K3 2ND Ver. 1.000-, Korea) + + + mushisam + Mushihime-Sama (2004/10/12.MASTER VER.) + + + mushisama + Mushihime-Sama (2004/10/12 MASTER VER.) + + + mushisamb + Mushihime-Sama (2004/10/12 MASTER VER) + + + mushitam + Puzzle! Mushihime-Tama (2005/09/09.MASTER VER) + + + mushitama + Puzzle! Mushihime-Tama (2005/09/09 MASTER VER) + + + mushmagi + Mushroom Magic (Russia) (Atronic) + + + musicbal + Music Ball + + + musicsrt + Music Sort (ver. 2.02) + + + musobana + Musoubana (Japan) + + + mustache + Mustache Boy (Japan) + + + mustachei + Mustache Boy (Italy) + + + mustang + US AAF Mustang (25th May. 1990) + + + mustangb + US AAF Mustang (bootleg, set 1) + + + mustangb2 + US AAF Mustang (TAB Austria bootleg) + + + mustangb3 + US AAF Mustang (Lettering bootleg) + + + mustangs + US AAF Mustang (25th May. 1990 / Seoul Trading) + + + mutacion + Mutacion (Explomatic Spanish bootleg of Moon Cresta) + + + mutantf + Mutant Fighter (World ver EM-5) + + + mutantf1 + Heroes (World ver EM-1) + + + mutantf2 + Mutant Fighter (World ver EM-2) + + + mutantf3 + Mutant Fighter (World ver EM-3) + + + mutantf4 + Mutant Fighter (World ver EM-4) + + + mutantfa + Mutant Fighter (World Rev 3, EM-4) + + + mutantwarr + Mutant Warrior (Datsu bootleg of Altered Beast) + + + mutnat + Mutation Nation (NGM-014 ~ NGH-014) + + + mv1bon + Believe It Or Not (Maygay, MV1 Video) + + + mv1cpc + Caesar's Palace Club (Maygay, MV1 Video, set 1) + + + mv1cpca + Caesar's Palace Club (Maygay, MV1 Video, set 2) + + + mv1cpcb + Caesar's Palace Club (Maygay, MV1 Video, set 3) + + + mv1cwq + Crossword Quiz (Maygay, MV1 Video, set 1) + + + mv1cwqa + Crossword Quiz (Maygay, MV1 Video, set 2) + + + mv1guac + Give Us A Clue (Maygay, MV1 Video, set 1) + + + mv1guaca + Give Us A Clue (Maygay, MV1 Video, set 2) + + + mv1sfx + Special Effects (Maygay, MV1 Video, set 1) + + + mv1sfx2 + Special Effects V2 (Maygay, MV1 Video) + + + mv1sfxa + Special Effects (Maygay, MV1 Video, set 2) + + + mv1wc + World Cup (Maygay, MV1 Video) + + + mv4in1 + Mini Vegas 4in1 + + + mvp + MVP (set 2, US) (FD1094 317-0143) + + + mvpd + MVP (set 2, US) (bootleg of FD1094 317-0143 set) + + + mvpj + MVP (set 1, Japan) (FD1094 317-0142) + + + mvpjd + MVP (set 1, Japan) (bootleg of FD1094 317-0142 set) + + + mvsc + Marvel Vs. Capcom: Clash of Super Heroes (Europe 980123) + + + mvsc2 + Marvel Vs. Capcom 2: New Age of Heroes (Export, Korea, Rev A) + + + mvsc2u + Marvel Vs. Capcom 2: New Age of Heroes (USA, Rev A) + + + mvsca + Marvel Vs. Capcom: Clash of Super Heroes (Asia 980123) + + + mvscar1 + Marvel Vs. Capcom: Clash of Super Heroes (Asia 980112) + + + mvscb + Marvel Vs. Capcom: Clash of Super Heroes (Brazil 980123) + + + mvscbh + Marvel Vs. Capcom: Clash of Super Heroes (Boss Hack) + + + mvscem + Marvel Vs. Capcom: Clash of Super Heroes (Easy Moves, Hack) + + + mvsch + Marvel Vs. Capcom: Clash of Super Heroes (Hispanic 980123) + + + mvscj + Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123) + + + mvscjr1 + Marvel Vs. Capcom: Clash of Super Heroes (Japan 980112) + + + mvscjsing + Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123) (Single PCB) + + + mvscr1 + Marvel Vs. Capcom: Clash of Super Heroes (Europe 980112) + + + mvscu + Marvel Vs. Capcom: Clash of Super Heroes (USA 980123) + + + mvscud + Marvel Vs. Capcom: Clash of Super Heroes (USA 980123 Phoenix Edition) (bootleg) + + + mvscur1 + Marvel Vs. Capcom: Clash of Super Heroes (USA 971222) + + + mvstemp + MVS-TEMP 'SubSystem Ver1.4' (Nazca development board) + + + mwalk + Michael Jackson's Moonwalker (World) (FD1094/8751 317-0159) + + + mwalkbl + Michael Jackson's Moonwalker (bootleg) + + + mwalkbl2 + Michael Jackson's Moonwalker (bootleg) + + + mwalkd + Michael Jackson's Moonwalker (World) (bootleg of FD1094/8751 317-0159 set) + + + mwalkj + Michael Jackson's Moonwalker (Japan) (FD1094/8751 317-0157) + + + mwalkjd + Michael Jackson's Moonwalker (Japan) (bootleg of FD1094/8751 317-0157 set) + + + mwalku + Michael Jackson's Moonwalker (US) (FD1094/8751 317-0158) + + + mwalkud + Michael Jackson's Moonwalker (US) (bootleg of FD1094/8751 317-0158 set) + + + mwarr + Mighty Warriors (24/1) + + + mwskins + Skins Game (1.06) + + + mwskinsa + Skins Game (1.06, alt) + + + mwskinso + Skins Game (1.04) + + + mwskinst + Skins Game Tournament Edition + + + mx5000 + MX5000 + + + mxsqy + Mingxing San Que Yi (China, V201CN) + + + myangel + Kosodate Quiz My Angel (Japan) + + + myangel2 + Kosodate Quiz My Angel 2 (Japan) + + + myangel3 + Kosodate Quiz My Angel 3 (Japan, KQT1/VER.A) + + + myfairld + Virtual Mahjong 2 - My Fair Lady (J 980608 V1.000) + + + myhero + My Hero (US, not encrypted) + + + myherobl + My Hero (bootleg, 315-5132 encryption) + + + myherok + Cheongchun Ilbeonji (Korea) + + + myqbert + Mello Yello Q*bert + + + mystarr + Mystic Arrow (0151009, US) + + + mystcast + Mystery Castle (R02) + + + mystcasta + Mystery Castle (R03) + + + mysteria + Mysterian (prototype) + + + mysteycm + Mystic Eyes - Mr. Cashman (10008111, NSW/ACT) + + + mysteycmu + Mystic Eyes - Mr. Cashman (0251024, US) + + + mystgard + Mystic Garden (0100275V, NSW/ACT) + + + mystic + Mystic + + + mysticm + Mystic Marathon + + + mysticmp + Mystic Marathon (prototype) + + + mysticri + Mystic Riders (World) + + + mysticrib + Mystic Riders (bootleg?) + + + mystjag + Mystic Jaguar + + + mystjb + Mystery J & B (V1.3G) + + + mystmerm + Mystic Mermaid (1J008711, NSW/ACT) + + + myststar + Mystic Star + + + myststno + Mysterious Stones - Dr. Kick in Adventure + + + mystston + Mysterious Stones - Dr. John's Adventure + + + myststono + Mysterious Stones - Dr. Kick in Adventure + + + myststonoi + Mysterious Stones - Dr. Kick in Adventure (Itisa PCB) + + + mystwarr + Mystic Warriors (ver EAA) + + + mystwarra + Mystic Warriors (ver AAB) + + + mystwarraa + Mystic Warriors (ver AAA) + + + mystwarrj + Mystic Warriors (ver JAA) + + + mystwarru + Mystic Warriors (ver UAA) + + + mystwaru + Mystic Warriors (US ver UAA) + + + nagano98 + Nagano Winter Olympics '98 (GX720 EAA) + + + naganoj + Hyper Olympic in Nagano (GX720 JAA) + + + nam1975 + NAM-1975 (NGM-001 ~ NGH-001) + + + namcostr + Namco Stars + + + nameclub + Name Club (J 960315 V1.000) + + + namenayo + Namennayo (Japan) + + + nametune + Name That Tune (Bally, 3/31/86) + + + nametunea + Name That Tune (Bally, 3/23/86) + + + naname + Naname de Magic! (Japan) + + + narc + Narc (rev 7.00) + + + narc1 + Narc (rev 1.80) + + + narc2 + Narc (rev 2.00) + + + narc3 + Narc (rev 3.20) + + + narc4 + Narc (rev 4.00) + + + narc6 + Narc (rev 6.00) + + + nascar + Nascar (CPU 4.50, display A4.00) + + + nascar_301 + Nascar (CPU 3.01, display A3.01) + + + nascar_340 + Nascar (CPU 3.40, display A3.03) + + + nascar_350 + Nascar (CPU 3.50, display A3.03) + + + nascar_352 + Nascar (CPU 3.52, display A3.03) + + + nascar_400 + Nascar (CPU 4.00, display A4.00) + + + nascarl + Nascar (CPU 4.50, display L4.00, Spain) + + + nascarl_301 + Nascar (CPU 3.01, display L3.01, Spain) + + + nascarl_340 + Nascar (CPU 3.40, display L3.03, Spain) + + + nascarl_350 + Nascar (CPU 3.50, display L3.03, Spain) + + + nascarl_352 + Nascar (CPU 3.52, display L3.03, Spain) + + + nascarl_400 + Nascar (CPU 4.00, display L4.00, Spain) + + + nastar + Nastar (World) + + + nastarw + Nastar Warrior (US) + + + natodef + NATO Defense + + + natodefa + NATO Defense (alternate mazes) + + + natsuiro + Natsuiro Mahjong (Japan) + + + naughtya + Naughty Boy (bootleg) + + + naughtyb + Naughty Boy + + + naughtyba + Naughty Boy (bootleg, set 1) + + + naughtybb + Naughty Boy (bootleg, set 2) + + + naughtybc + Naughty Boy (Cinematronics) + + + naughtyc + Naughty Boy (Cinematronics) + + + nautilus + Nautilus + + + navalone + Navarone + + + navarone + Navarone + + + nba_500 + NBA v5.00 + + + nba_600 + NBA v6.00 + + + nba_700 + NBA v7.00 + + + nba_801 + NBA v8.01 + + + nba_802 + NBA v8.02 + + + nbaatw + NBA All The Way (ver EAB) + + + nbaatwa + NBA All The Way (ver EAA) + + + nbaf_11 + NBA Fastbreak (1.1) + + + nbaf_115 + NBA Fastbreak (1.15) + + + nbaf_11a + NBA Fastbreak (1.1 - S2.0) + + + nbaf_11s + NBA Fastbreak (1.1 - S0.4) + + + nbaf_21 + NBA Fastbreak (2.1) + + + nbaf_22 + NBA Fastbreak (2.2) + + + nbaf_23 + NBA Fastbreak (2.3) + + + nbaf_31 + NBA Fastbreak (3.1 - S3.0) + + + nbaf_31a + NBA Fastbreak (3.1 - S1.0) + + + nbagold + SportStation: NBA Showtime NBA on NBC Gold Edition (ver 3.0, Feb 18 2000) / NFL Blitz 2000 Gold Edition + + + nbahangt + NBA Hangtime (ver L1.3 10/10/96) + + + nbahangtl11 + NBA Hangtime (ver L1.1 4/16/96) + + + nbahangtl12 + NBA Hangtime (ver L1.2 8/29/96) + + + nbahangtm11 + NBA Hangtime (ver M1.1 4/16/96) + + + nbahangtm12 + NBA Hangtime (ver M1.2 8/29/96) + + + nbahangtm13 + NBA Hangtime (ver M1.3 10/10/96) + + + nbajam + NBA Jam (rev 3.01 4/07/93) + + + nbajamex + NBA Jam Extreme (ver. 1.10I) + + + nbajamexa + NBA Jam Extreme (ver. 1.04) + + + nbajamp1 + NBA Jam (proto v 1.01 1/23/93) + + + nbajamp2 + NBA Jam (proto v 2.00 1/24/93) + + + nbajamr1 + NBA Jam (rev 1.00 2/1/93) + + + nbajamr2 + NBA Jam (rev 2.00 2/10/93) + + + nbajamre + NBA Jam Rewind (Hack, v1.1) + + + nbajamt1 + NBA Jam TE (rev 1.0 01-17-94) + + + nbajamt2 + NBA Jam TE (rev 2.0 01-28-94) + + + nbajamt3 + NBA Jam TE (rev 3.0 03-04-94) + + + nbajamte + NBA Jam Tournament Edition (rev 4.0 3/23/94) + + + nbajamte1 + NBA Jam Tournament Edition (rev 1.00 1/17/94) + + + nbajamte2 + NBA Jam Tournament Edition (rev 2.1 2/06/94) + + + nbajamte2a + NBA Jam Tournament Edition (rev 2.0 1/28/94) + + + nbajamte3 + NBA Jam Tournament Edition (rev 3.0 3/04/94) + + + nbajamte3a + NBA Jam Tournament Edition (rev 3.0 2/26/94) + + + nbajamte4 + NBA Jam Tournament Edition (rev 4.0 3/03/94) + + + nbajamten + NBA Jam Tournament Edition (Nani Edition, rev 5.2 8/11/95, prototype) + + + nbajamtep2 + NBA Jam Tournament Edition (proto 2.00 12/17/93) + + + nbajamtr + NBA Jam TE Rewind ver 1.1 + + + nbamac + NBA MAC + + + nbamht + NBA Maximum Hangtime (ver L1.03 06/09/97) + + + nbamht1 + NBA Maximum Hangtime (rev 1.0 11/08/96) + + + nbamhtl10 + NBA Maximum Hangtime (ver L1.0 11/08/96) + + + nbamhtm10 + NBA Maximum Hangtime (ver M1.0 11/08/96) + + + nbamhtp + NBA Maximum Hangtime (ver L0.9 10/30/96) + + + nbanfl + SportStation: NBA Showtime NBA on NBC (ver 2.1, Sep 22 1999) / NFL Blitz 2000 Gold Edition (ver 1.5, Sep 22 1999) + + + nbapbp + NBA Play By Play (ver UAB) + + + nbapbpa + NBA Play By Play (ver AAB) + + + nbapbpaa + NBA Play By Play (ver AAA) + + + nbapbpj + NBA Play By Play (ver JAB) + + + nbapbpja + NBA Play By Play (ver JAA) + + + nbapbpua + NBA Play By Play (ver UAA) + + + nbashowt + NBA Showtime NBA on NBC (ver 2.0, Apr 25 1999) + + + nbbat1v2 + Ninja Baseball Batman (1v2, Hack) + + + nbbat1v4 + Ninja Baseball Batman (1v4, Hack) + + + nbbat1v8 + Ninja Baseball Batman (1v8, Hack) + + + nbbatman + Ninja Baseball Bat Man (World) + + + nbbatman2bl + Ninja Baseball Bat Man II (bootleg) + + + nbbatmano + Ninja Baseball Batman (One Key Edition, Hack) + + + nbbatmanu + Ninja Baseball Bat Man (US) + + + nbbatmbh + Ninja Baseball Batman (Transform, Hack) + + + nbbatmx2 + Ninja Baseball Batman (X2, Hack) + + + nblktiger + Neo Black Tiger (HB, Demo) + + + nc96 + New Cherry '96 Special Edition (v3.63, C1 PCB) + + + nc96a + New Cherry '96 Special Edition (v3.62, C1 PCB) + + + nc96b + New Cherry '96 Special Edition (v3.61, C1 PCB) + + + nc96c + New Cherry '96 Special Edition (v3.54, D PCB) + + + nc96d + New Cherry '96 Special Edition (v3.53, D PCB) + + + nc96e + New Cherry '96 Special Edition (v3.40, D PCB) + + + nc96f + New Cherry '96 Special Edition (v3.62, DK PCB) + + + nc96g + New Cherry '96 (v3.1, B PCB) + + + nc96h + New Cherry '96 (v3.1C, G PCB) + + + nc96i + New Cherry '96 Special Edition (v3.55, C1 PCB) + + + nc96j + New Cherry '96 Special Edition (v3.61, DK PCB) + + + nc96k + New Cherry '96 Special Edition (v3.51, D PCB) + + + nc96l + New Cherry '96 (v3.0, A PCB) + + + nc96txt + New Cherry '96 Special Edition (v1.32 Texas XT, C2 PCB) + + + ncarrera + New Carrera - Version 2000 + + + ncb3 + Cherry Bonus III (ver.1.40, set 1) + + + ncentury + New Century (Spanish bootleg of Scramble) + + + nclubdis + Name Club Disney (J 980614 V1.000) + + + nclubv2 + Name Club Ver.2 (J 960315 V1.000) + + + nclubv3 + Name Club Ver.3 (J 970723 V1.000) + + + nclubv4 + Name Club Ver.4 (J 971202 V1.000) + + + ncombat + Ninja Combat (NGM-009) + + + ncombath + Ninja Combat (NGH-009) + + + ncommand + Ninja Commando + + + ncv1 + Namco Classic Collection Vol.1 + + + ncv1j + Namco Classic Collection Vol.1 (Japan, v1.00) + + + ncv1j2 + Namco Classic Collection Vol.1 (Japan, v1.03) + + + ncv2 + Namco Classic Collection Vol.2 + + + ncv2j + Namco Classic Collection Vol.2 (Japan) + + + nd8lines + New Draw 8 Lines (Version 2.1) + + + ndcfboxa + Naomi DIMM Firmware Update for CF-BOX (4.01) (GDS-0042A) + + + ndongmul + New DongmulDongmul + + + ndongmul2 + New DongmulDongmul 2 (V1.2N) + + + ndxron10 + Royal on Ten (hack of Noraut Deluxe Poker) + + + nebulbee + Nebulous Bee + + + nebulray + Nebulas Ray (World, NR2) + + + nebulrayj + Nebulas Ray (Japan, NR1) + + + nebulrayp + Nebulas Ray (prototype) + + + nebulryj + Nebulas Ray (Japan) + + + neckneck + Neck-n-Neck (v1.2) + + + nekkyoku + Rettou Juudan Nekkyoku Janshi - Higashi Nippon Hen (Japan) + + + nemesis + Nemesis (ROM version) + + + nemesisp + Nemesis + + + nemesisuk + Nemesis (World?, ROM version) + + + nemesuk + Nemesis (World[Q]) + + + nemo + Nemo (World 901130) + + + nemoj + Nemo (Japan 901120, 88622B-3 ROM board) + + + nemoja + Nemo (Japan 901120, 89625B-1 ROM board) + + + nemor1 + Nemo (World 901109) + + + neo2048 + Neo 2048 (HB) + + + neo2500 + Neo 2500 Demo + + + neo3ddmo + NeoGeo 3D! (HB, Demo) + + + neobattl + SD Gundam Neo Battling (Japan) + + + neobombe + Neo Bomberman + + + neocdz + Neo Geo CDZ system + + + neocstlv + Neo CastleVania (HB, Demo) + + + neocup98 + Neo-Geo Cup '98 - The Road to the Victory + + + neodemo + Chaos Demo (Neo Geo) + + + neodrift + Neo Drift Out - New Technology + + + neogalag + Galaga Demo (HB, set 1) + + + neogalaga + Galaga Demo (HB, set 2) + + + neomania + Neo Mania (Portugal) + + + neomrdo + Neo Mr. Do! + + + neonopon + Neo No Panepon (HB, beta) + + + neopang + Neo Pang (HB) + + + neopong + Neo Pong (HB, v1.1) + + + neoponga + Neo Pong (HB, v1.0) + + + neoprimo + Primo (HB, Demo) + + + neoprint + Neo Print (Japan) (T2d) + + + neotet + NeoGeo 2-Player Tetris (HB) + + + neothndr + Neo Thunder (HB) + + + neotris + NeoTRIS (HB, Free Beta 2, ver. 202009) + + + neoww2 + WW2 - Arcade Development Project (HB, Demo) + + + neptunp2 + Neptune's Pearls 2 + + + neraidou + Neraidoula + + + nerdwild + Nerds Gone Wild (10197311, NSW/ACT) + + + neruton + Mahjong Neruton Haikujiradan (Japan, Rev. B?) + + + nerutona + Mahjong Neruton Haikujiradan (Japan, Rev. A?) + + + netchu02b + Netchuu Pro Yakyuu 2002 (NPY1 Ver. B) + + + netchu02c + Netchuu Pro Yakyuu 2002 (NPY1 Ver. C) + + + netmerc + Sega NetMerc + + + nettoqc + Nettoh Quiz Champion (Japan) + + + netwars + Net Wars + + + nevada + VLC Nevada + + + nevadafw + Nevada (French, encrypted) + + + new2001 + New 2001 (Italy, Ver. 200N) + + + newapunk + New Atomic Punk - Global Quest (US) + + + newcanasta + New Canasta + + + newdixie + New Dixieland (Bingo) + + + newfant + New Fantasia (1995 copyright) + + + newfanta + New Fantasia (1994 copyright) + + + newhilop + New Hi-Low Poker + + + newhunter + New HUNTer + + + newhunterb + New HUNTer (bootleg, set 1) + + + newhunterc + New HUNTer (bootleg, set 2) + + + newhunterd + New HUNTer (bootleg, set 3) + + + newmcard + New Magic Card + + + newpuc2 + Newpuc2 (set 1) + + + newpuc2b + Newpuc2 (set 2) + + + newpuckx + New Puck-X + + + news + News (set 1) + + + newsa + News (set 2) + + + newsin7 + New Sinbad 7 (set 1) + + + newsin7a + New Sinbad 7 (set 2) + + + newtangl + New Tropical Angel + + + newtiger + New Tiger + + + newufo + New UFO Catcher (standard) + + + newufo_nfl + New UFO Catcher (Team NFL) + + + newufo_sonic + New UFO Catcher (Sonic The Hedgehog) + + + newufo_xmas + New UFO Catcher (Christmas season ROM kit) + + + newwave + New Wave + + + newxpang + New Cross Pang (set 1) + + + newxpanga + New Cross Pang (set 2) + + + nextfase + Next Fase (bootleg of Phoenix) + + + nf_08x + No Fear: Dangerous Sports (0.8X) + + + nf_10f + No Fear: Dangerous Sports (1.0F) + + + nf_20 + No Fear: Dangerous Sports (2.0) + + + nf_22 + No Fear: Dangerous Sports (2.2) + + + nf_23 + No Fear: Dangerous Sports (2.3) + + + nf_23f + No Fear: Dangerous Sports (2.3F) + + + nf_23x + No Fear: Dangerous Sports (2.3X) + + + nfb96 + New Fruit Bonus '96 Special Edition (v3.63, C1 PCB) + + + nfb96a + New Fruit Bonus '96 Special Edition (v3.62, C1 PCB) + + + nfb96b + New Fruit Bonus '96 Special Edition (v3.54, D PCB) + + + nfb96c + New Fruit Bonus '96 Special Edition (v3.62, DK PCB) + + + nfb96d + New Fruit Bonus '96 (v3.1, A PCB, set 1) + + + nfb96e + New Fruit Bonus '96 Special Edition (v3.61a, C1 PCB) + + + nfb96f + New Fruit Bonus '96 Special Edition (v3.61a, DK PCB) + + + nfb96g + New Fruit Bonus '96 Special Edition (v3.61, DK PCB) + + + nfb96h + New Fruit Bonus '96 Special Edition (v3.60, DK PCB) + + + nfb96i + New Fruit Bonus '96 Special Edition (v3.53, D PCB) + + + nfb96j + New Fruit Bonus '96 Special Edition (v3.40, D PCB) + + + nfb96k + New Fruit Bonus '96 Special Edition (v97-3.3c, D PCB) + + + nfb96l + New Fruit Bonus '96 (v97-3.1c, B PCB) + + + nfb96m + New Fruit Bonus '96 (v3.1, A PCB, set 2) + + + nfb96se + New Fruit Bonus '96 Special Edition (bootleg set 1, v97-3.3c Portuguese) + + + nfb96sea + New Fruit Bonus '96 Special Edition (bootleg set 2, v97-3.3c English) + + + nfb96seb + New Fruit Bonus '96 Special Edition (bootleg set 3, v97-3.3c Portuguese) + + + nfb96sec + New Fruit Bonus '96 Special Edition (bootleg set 4, v97-3.3c English) + + + nfb96txt + New Fruit Bonus '96 Special Edition (v1.22 Texas XT, C2 PCB) + + + nfl + NFL (CPU 1.01, display A1.02) + + + nflclsfb + NFL Classic Football (US, NCF3 Ver.A.) + + + nflfoot + NFL Football + + + nfm + Fruit Bonus 2002 (Ming-Yang Electronic / TSK, vFB02-07A) + + + nfma + Fruit Bonus 2002 (Ming-Yang Electronic / TSK, vFB02-01A) + + + nfs + Need for Speed - 4 Cab Link (2 Discs) (v1.0.1 Rev B) + + + nfsgt + Need for Speed GT (Hard Drive+2 Discs) (v1.1.0 Rev C) + + + nfsug + Need For Speed: Underground Install (2 Discs) (v1.1) + + + ngalsumr + Night Gal Summer (Japan 850702 NGS 0-01) + + + ngbc + NeoGeo Battle Coliseum + + + ngbcj + NeoGeo Battle Coliseum (Japan) + + + ngcdtdd0 + NeoGeo/CD Jump & Run Techdemo Dez 2020 (HB, ver. 20201212) + + + ngdup23a + Naomi DIMM Firmware Updater (2.13) (GDS-0023A) + + + ngdup23c + Naomi DIMM Firmware Updater (2.17) (GDS-0023C) + + + ngdup23e + Naomi DIMM Firmware Updater (3.17) (GDS-0023E) + + + ngem2k + NGEM2K (HB, beta 2006-01-18) + + + ngfrog + Neo Frog Feast (HB) + + + ngftdemo + NGF Transparency (HB, Demo) + + + ngg_10 + No Good Gofers (1.0) + + + ngg_13 + No Good Gofers (1.3) + + + ngg_p06 + No Good Gofers (p0.6) + + + ngmontst + Monitor Test Patterns Tool (v1.3) + + + ngndshkr + Nitro Ground Shaker + + + ngold + Jack Potten's Poker (NGold, set 1) + + + ngolda + Jack Potten's Poker (NGold, set 2) + + + ngoldb + Jack Potten's Poker (NGold, set 3) + + + ngpgal + Nekketsu Grand-Prix Gal (Japan) + + + ngtbunny + Night Bunny (Japan 840601 MRN 2-10) + + + ngtfever + Night Fever + + + nhidctch + New Hidden Catch (World) / New Tul Lin Gu Lim Chat Ki '98 (Korea) (pcb ver 3.02) + + + nhomerun + NEW Moero!! Pro Yakyuu Homerun Kyousou + + + nibbler + Nibbler (rev 9, set 1) + + + nibbler6 + Nibbler (rev 6) + + + nibbler7 + Nibbler (rev 7) + + + nibbler8 + Nibbler (rev 8) + + + nibblera + Nibbler (rev 9, set 2) + + + nibblero + Nibbler (rev 8, Olympia) + + + nibblerp + Nibbler (rev 6, Pioneer Balloon conversion) + + + nicetsuk + Tsukkomi Yousei Gips Nice Tsukkomi (NTK1 Ver.A) + + + nichisel + DVD Select (Japan) + + + nightgal + Night Gal (Japan 840920 AG 1-00) + + + nightlov + Night Love (Japan 860705) + + + nightmare + Night Mare (Spain) + + + nightr20 + Night Rider (rev. 20) + + + nightrai + Night Raid (V2.03J 2001/02/26 17:00) + + + nightrdr + Night Rider (rev. 21) + + + nightstr + Night Striker (World) + + + nightstrj + Night Striker (Japan) + + + nightstru + Night Striker (US) + + + ninclown + Ninja Clowns (27 oct 91) + + + nineball + Nine Ball + + + ninja + Ninja (315-5102) + + + ninjak + The Ninja Kids (World) + + + ninjak2a + Ninja-Kid II (set 2) + + + ninjak2b + Ninja-Kid II (set 3) + + + ninjakd2 + Ninja-Kid II / NinjaKun Ashura no Shou (set 1) + + + ninjakd2a + Ninja-Kid II / NinjaKun Ashura no Shou (set 2, bootleg?) + + + ninjakd2b + Ninja-Kid II / NinjaKun Ashura no Shou (set 3, bootleg?) + + + ninjakd2c + Ninja-Kid II / NinjaKun Ashura no Shou (set 4) + + + ninjakj + The Ninja Kids (Japan) + + + ninjaku + The Ninja Kids (US) + + + ninjakun + Ninjakun Majou no Bouken + + + ninjamas + Ninja Master's - Haoh-ninpo-cho + + + ninjamasha + Ninja Master's - Haoh-ninpo-cho (Plus) + + + ninjaslt + Ninja Assault (World, NJA2 Ver.A) + + + ninjaslta + Ninja Assault (Asia, NJA4 Ver.A) + + + ninjasltj + Ninja Assault (Japan, NJA1 Ver.A) + + + ninjasltu + Ninja Assault (US, NJA3 Ver.A) + + + ninjaw + The Ninja Warriors (World, later version) + + + ninjaw1 + The Ninja Warriors (World, earlier version) + + + ninjawj + The Ninja Warriors (Japan) + + + ninjawu + The Ninja Warriors (US, Romstar license) + + + ninjemak + Ninja Emaki (US) + + + ninjemat + Ninja Emaki (Tecfri license) + + + nitd + Nightmare in the Dark + + + nitdbl + Nightmare in the Dark (bootleg) + + + nitedrvr + Night Driver + + + nitrobal + Nitro Ball (World, set 1) + + + nitrobala + Nitro Ball (World, set 2) + + + nitrobalb + Nitro Ball (World, set 3) + + + niyanpai + Niyanpai (Japan) + + + nkdodge + Nekketsu Koukou Dodgeball Bu (Japan) + + + nkdodgeb + Nekketsu Koukou Dodgeball Bu (Japan, bootleg) + + + nkishusp + Mahjong Nenrikishu SP (Japan, V250J) + + + nkoulit + Gkoulit (encrypted GFX) + + + nmaster + Oni - The Ninja Master (Japan) + + + nmg5 + Multi 5 / New Multi Game 5 (set 1) + + + nmg5a + Multi 5 / New Multi Game 5 (set 2, censored) + + + nmg5e + Multi 5 / New Multi Game 5 (set 3, earlier) + + + nmondop + New Mondo Plus (V0.6I) + + + nmouse + Naughty Mouse (set 1) + + + nmouseb + Naughty Mouse (set 2) + + + nmoves + Night Moves + + + nmsengen + Nekketsu Mahjong Sengen! AFTER 5 (Japan) + + + nndmseal + Nandemo Seal Iinkai (ver 1.3) + + + nndmseal11 + Nandemo Seal Iinkai (ver 1.1) + + + nndmseala + Nandemo Seal Iinkai (Astro Boy ver. 1.0?) + + + nndmsealb + Nandemo Seal Iinkai (Astro Boy ver. 1.1) + + + nndmsealc + Nandemo Seal Iinkai (alternate ver 1.0) + + + noahsark + Noah's Ark + + + nob + Noboranka (Japan) + + + nobb + Noboranka (Japan, bootleg) + + + noboranb + Noboranka (Japan) + + + nomnlnd + Sengoku no Jieitai + + + nomnlndg + No Man's Land (Gottlieb) + + + noraut3a + Noraut Jacks Plus / Joker Poker (V3.010a) + + + noraut3b + Noraut Jacks Plus / Joker Poker (V3.011a) + + + norautdx + Noraut Deluxe Poker (console) + + + norautjo + Noraut Joker Poker (original) + + + norautjp + Noraut Joker Poker (alt) + + + norautp + Noraut Poker + + + norautpl + Noraut Joker Poker (Prologic HW) + + + norautpn + Noraut Deluxe Poker (bootleg) + + + norautra + Noraut Red Hot Joker Poker (alt HW) + + + norautrh + Noraut Red Hot Joker Poker + + + norautu + Noraut Poker (NTX10A) + + + norautua + Noraut Joker Poker (console, set 1) + + + norautub + Noraut Joker Poker (console, set 2) + + + nost + Nostradamus + + + nostj + Nostradamus (Japan) + + + nostk + Nostradamus (Korea) + + + nostromo + Nostromo + + + notechan + Note Chance + + + nouryoku + Nouryoku Koujou Iinkai + + + nouryokup + Nouryoku Koujou Iinkai (prototype) + + + nov2001u + Nova 2001 (US) + + + nova2001 + Nova 2001 (Japan) + + + nova2001h + Nova 2001 (Japan, hack?) + + + nova2001u + Nova 2001 (US) + + + noved + Nove Diamante (bootleg) + + + novoplay + Novo Play Multi Card / Club Card + + + novoplaya + Novo Play Club Card (V6.2H) + + + novoplayb + Novo Play Club Card (V3.3H) + + + npcartv1 + Neo Print V1 (World) (E1a) + + + npcramen + Neo Print - Chicken Ramen (Japan) + + + npeurver + Neo Print - European Version (World) (T4i 2.00) + + + npfpit + Neo Print - Fuyu Pri Iitoko-dori (Japan) (T4i 3.07) + + + npft + Neo Print - Fairy Tales (World) (T4i 3.07) + + + npmillen + Neo Print - Millennium Multi Shot Edition (World) (T4i 3.07) + + + npotogib + Neo Print - Otogibanashi (Japan) (T4i 3.00) + + + nppopeye + Neo Print - Popeye (Japan) (T4i 3.04) + + + nprinces + Ninja Princess (315-5051, 64k Ver. bootleg?) + + + nprincesb + Ninja Princess (315-5051?, 128k Ver. bootleg?) + + + nprinceso + Ninja Princess (315-5098, 128k Ver.) + + + nprincesu + Ninja Princess (64k Ver. not encrypted) + + + nprincsb + Ninja Princess (128k Ver. bootleg[Q]) + + + nprincso + Ninja Princess (128k Ver.) + + + nprincsu + Ninja Princess (64k Ver. not encrypted) + + + nprobowl + New Pro Bowl + + + nprsp + NeopriSP Retro Collection (Japan) + + + npscv1 + Neo Print - Senyou Cassette Ver. 1 (Japan) + + + npskv + Neo Print - Suizokukan Version (Japan) (T4i 2.00) + + + npsprg98 + Neo Print - Spring '98 (T4i 3.07) + + + npsprgv4 + Neo Print - Spring Ver. 4 (Japan) (T4f 1.00) + + + npssr2 + Neo Print Special: Sekai Ryokou 2 (Japan) + + + npusagif + Neo Print - Usagi Frame (Japan) (T4i 3.07) + + + nrallyx + New Rally X + + + nrallyxb + New Rally X (bootleg?) + + + nratechu + Neratte Chu + + + ns8lines + New Lucky 8 Lines / New Super 8 Lines (W-4) + + + ns8linesa + New Lucky 8 Lines / New Super 8 Lines (W-4, Lucky97 HW) + + + ns8linew + New Lucky 8 Lines / New Super 8 Lines (F-5, Witch Bonus) + + + ns8linewa + New Lucky 8 Lines / New Super 8 Lines (W-4, Witch Bonus) + + + ns8linewb + New Lucky 8 Lines / New Super 8 Lines (F-5, Witch Bonus, Yamate, 1985) + + + ns8linewc + New Lucky 8 Lines / New Super 8 Lines (W-4, Witch Bonus, Yamate, 1988, set 1) + + + ns8linewd + New Lucky 8 Lines / New Super 8 Lines (W-4, Witch Bonus, Yamate, 1988, set 2) + + + nslasher + Night Slashers (Korea Rev 1.3, DE-0397-0 PCB) + + + nslasherj + Night Slashers (Japan Rev 1.2, DE-0397-0 PCB) + + + nslashers + Night Slashers (Over Sea Rev 1.2, DE-0397-0 PCB) + + + nslasheru + Night Slashers (US Rev 1.2, DE-0395-1 PCB) + + + nsmb + Neo Super Mario Bros (HB, Demo v0.01) + + + nsmpoker + NSM Poker (TMS9995) + + + nspirit + Ninja Spirit (World) + + + nspiritj + Saigo no Nindou (Japan) + + + nss_actr + Act Raiser (Nintendo Super System) + + + nss_adam + The Addams Family (Nintendo Super System) + + + nss_aten + David Crane's Amazing Tennis (Nintendo Super System) + + + nss_con3 + Contra 3: The Alien Wars (Nintendo Super System) + + + nss_fzer + F-Zero (Nintendo Super System) + + + nss_lwep + Lethal Weapon (Nintendo Super System) + + + nss_ncaa + NCAA Basketball (Nintendo Super System) + + + nss_rob3 + Robocop 3 (Nintendo Super System) + + + nss_skin + Skins Game (Nintendo Super System) + + + nss_smas + Super Mario All-Stars (Nintendo Super System) + + + nss_smw + Super Mario World (Nintendo Super System) + + + nss_ssoc + Super Soccer (Nintendo Super System) + + + nss_sten + Super Tennis (Nintendo Super System) + + + nstocker + Night Stocker (10/6/86) + + + nstockera + Night Stocker (8/27/86) + + + nstrphnx + New Star's Phoenix (Italian speech) + + + nstrphnxf + New Star's Phoenix (French speech) + + + nsub + N-Sub (upright) + + + nsubc + N-Sub (cocktail) + + + nsupertr3 + New Super Triv III + + + ntcash + NtCash (set 1) + + + ntcasha + NtCash (set 2) + + + ntopstar + Mahjong Nerae! Top Star (Japan) + + + ntvmys + Nittere Shiki! Mirai Yosou Studio / NTV Future Forecast Studio (Japan, Rev A) + + + nudgeit + Nudge-It + + + nugent + Nugent + + + numanath + Numan Athletics (World) + + + numanathj + Numan Athletics (Japan) + + + numanatj + Numan Athletics (Japan) + + + number1 + Number One + + + number10 + Number Dieci (Poker) + + + numbr10l + Number Dieci (Lattine) + + + numcrash + Number Crash + + + nunchaku + Nunchackun + + + nuretemi + Nurete Mitaino... - Net Idol Hen (Japan) + + + nvs_machrider + Vs. Mach Rider (Endurance Course Version) + + + nvs_machridera + Vs. Mach Rider (Fighting Course Version, set MR4-1 A) + + + nvs_mightybj + Vs. Mighty Bomb Jack (Japan) + + + nvs_platoon + Vs. Platoon + + + nwarr + Night Warriors: Darkstalkers' Revenge (Europe 950316) + + + nwarra + Night Warriors: Darkstalkers' Revenge (Asia 950302) + + + nwarrb + Night Warriors: Darkstalkers' Revenge (Brazil 950403) + + + nwarrh + Night Warriors: Darkstalkers' Revenge (Hispanic 950403) + + + nwarru + Night Warriors: Darkstalkers' Revenge (USA 950406) + + + nwarrud + Night Warriors: Darkstalkers' Revenge (USA 950406 Phoenix Edition) (bootleg) + + + nyanpani + Nyan Nyan Panic (Japan) + + + nycaptor + N.Y. Captor (rev 2) + + + nyjoker + New York Joker + + + nyny + New York! New York! + + + nynyg + New York! New York! (Gottlieb) + + + nzeroteam + New Zero Team (V33 SYSTEM TYPE_B hardware) + + + nzeroteama + New Zero Team (V33 SYSTEM TYPE_B hardware, Zhongguo Shantou Yihuang license) + + + nzeroteamb + New Zero Team (V33 SYSTEM TYPE_B hardware, Haoyunlai Trading Company license) + + + nzteamp + New Zero Team (Plus, Hack) + + + obaoba + Oba-Oba (set 1) + + + obaoba1 + Oba-Oba (set 2) + + + obaobao + Oba-Oba (old hardware) + + + oceanhun + The Ocean Hunter (Japan, Revision A) + + + oceanhuna + The Ocean Hunter (Japan) + + + oceanpar + Ocean Paradise (V105US) + + + oceanpar101us + Ocean Paradise (V101US) + + + ochaken + Ocha-Ken Hot Medal + + + octopussy + Octopussy + + + odeontw + Odeon Twister (v1.4) + + + odeontw2 + Odeon Twister 2 (v202.19) + + + odin + Odin + + + odin_dlx + Odin De Luxe + + + odinp + Odin (prototype) + + + odisea + Odisea Paris-Dakar + + + odyssey + Odyssey + + + oedfight + Oedo Fight (Japan, Bloodshed version) + + + oedfighta + Oedo Fight (Japan, Bloodless version) + + + offensiv + Offensive (Spanish bootleg of Scramble) + + + officeye + Office Yeo In Cheon Ha (version 1.2) + + + offroad + Ironman Ivan Stewart's Super Off-Road (rev 4) + + + offroad3 + Ironman Ivan Stewart's Super Off-Road (rev 3) + + + offroadc + Off Road Challenge (v1.63) + + + offroadc0 + Off Road Challenge (v1.00) + + + offroadc1 + Off Road Challenge (v1.10) + + + offroadc3 + Off Road Challenge (v1.30) + + + offroadc4 + Off Road Challenge (v1.40) + + + offroadc5 + Off Road Challenge (v1.50) + + + offroadt + Ironman Ivan Stewart's Super Off-Road Track-Pak (rev 4?) + + + offroadt2p + Ironman Ivan Stewart's Super Off-Road Track-Pak (rev 4, 2 players) + + + offrthnd + Offroad Thunder + + + offtwalc + Off the Wall (2-player cocktail) + + + offtwall + Off the Wall (2/3-player upright) + + + offtwallc + Off the Wall (2-player cocktail) + + + ogonsiro + Ougon no Shiro (Japan) + + + ohbakyuun + Oh! Bakyuuun (Japan, OB1/VER.A) + + + ohmygod + Oh My God! (Japan) + + + ohpaipee + Oh! Paipee (Japan 890227) + + + oigas + Oigas (bootleg) + + + oinori + Oinori-daimyoujin Matsuri + + + oisipuzl + Oishii Puzzle Ha Irimasenka + + + ojanko2 + Ojanko Yakata 2bankan (Japan) + + + ojankoc + Ojanko Club (Japan, Program Ver. 1.3, set 1) + + + ojankoca + Ojanko Club (Japan, Program Ver. 1.2) + + + ojankocb + Ojanko Club (Japan, Program Ver. 1.3, set 2) + + + ojankohs + Ojanko High School (Japan) + + + ojankoy + Ojanko Yakata (Japan) + + + ojousan + Ojousan (Japan 871204) + + + ojousanm + Ojousan (Japan 870108, medal) + + + olds + Oriental Legend Super / Xiyou Shi E Zhuan Super (ver. 101, Korean Board) + + + olds100 + Oriental Legend Special / Xiyou Shi E Zhuan Super (ver. 100, set 1) + + + olds100a + Oriental Legend Special / Xiyou Shi E Zhuan Super (ver. 100, set 2) + + + olds103t + Xiyou Shi E Zhuan Super (ver. 103, China, Tencent) (unprotected) + + + oldsdsgl + Oriental Legend Special - Da Sheng Gui Lai (Hack) + + + oldsmx + Xiyou Shi E Zhuan Super - Meng Xun Ling Shan (Hack) + + + oldsplus + Oriental Legend 2 (Korea) / Xiyou Shi E Zhuan Qunmoluanwu (World, China, Japan, Hong Kong, Taiwan) (ver. 205) [Oriental Ex] + + + oldsplus203 + Oriental Legend 2 (Korea) / Xiyou Shi E Zhuan Qunmoluanwu (World, China, Japan, Hong Kong, Taiwan) (ver. 203) [Oriental Ex] + + + oldsplusnr + Xiyou Shi E Zhuan Xin Qunmo Luanwu (Hack) + + + oldsplusok + Oriental Legend 2 (One Key Edition, Hack) + + + olibochu + Oli-Boo-Chu (USA) + + + olibug + Oli Bug (bootleg of Jump Bug) + + + oligam + Olympian Games (Russia) + + + olihockey + Olimpic Hockey (EM Bubble Hockey, set 1) + + + olihockeya + Olimpic Hockey (EM Bubble Hockey, set 2) + + + ollie + Ollie King (GDX-0007) + + + olmandingc + Olivmandingo (Spanish bootleg of Mandinga on Galaxian hardware, set 2) + + + olmandingo + Olivmandingo (Spanish bootleg of Mandinga on Galaxian hardware, set 1) + + + olym65bj + Black jack (Olympic Games, v5.04, upgrade kit for Wild Card) + + + olym65wc + Wild Card (Olympic Games, v2.0) + + + olymp + Olympus (Z Games, version 10) + + + olympic + Olympic Games + + + olympic5 + Olympic 5 (V112US) + + + olympic5107us + Olympic 5 (V107US) + + + olympus + Olympus (Juegos Populares) + + + olysoc92 + Olympic Soccer '92 (set 1) + + + olysoc92a + Olympic Soccer '92 (set 2) + + + olysoc92b + Olympic Soccer '92 (set 3) + + + omatsuri + Shimura Ken no Bakatono-sama Ooedomatsuri + + + omega + Omega + + + omegaa + Omega (earlier) + + + omegab + Omega (bootleg?) + + + omegaf + Omega Fighter + + + omegafs + Omega Fighter Special + + + omegrace + Omega Race (set 1) + + + omegrace2 + Omega Race (set 2) + + + omegrace3 + Omega Race (set 3, 7/27) + + + omni + Omni + + + omni_l1 + Omni (Shuffle) (L-1) + + + omotesnd + Omotesandou (Japan 890215) + + + one4all + One For All (0101503V, New Zealand) + + + oneshot + One Shot One Kill + + + onetwo + One + Two + + + onetwoe + One + Two (earlier) + + + onlinertp + Onliner Touch Party + + + onna34ra + Onna Sansirou - Typhoon Gal (bootleg) + + + onna34ro + Onna Sanshirou - Typhoon Gal (rev 1) + + + onna34roa + Onna Sanshirou - Typhoon Gal (bootleg) + + + ooparts + OOPArts (prototype, joystick hack) + + + op5cards + Open 5 Cards + + + opaopa + Opa Opa (MC-8123, 317-0042) + + + opaopan + Opa Opa (Rev A, unprotected) + + + opengolf + Konami's Open Golf Championship (ver EAE) + + + opengolf2 + Konami's Open Golf Championship (ver EAD) + + + openice + 2 On 2 Open Ice Challenge (rev 1.21) + + + openicea + 2 On 2 Open Ice Challenge (rev 1.2A) + + + openmj + Open Mahjong (Japan) + + + opsesam + Open Sesame (0351309, US) + + + opthund + Operation: Thunder + + + optiger + Operation Tiger (Ver 2.14 O) + + + optigera + Operation Tiger (Ver 2.10 O) + + + optigerj + Operation Tiger (Ver 2.09 J) + + + optigersm + Operation Tiger Second Mission (Ver 2.02 J) + + + opwolf + Operation Wolf (World, rev 2, set 1) + + + opwolf3 + Operation Wolf 3 (World) + + + opwolf3j + Operation Wolf 3 (Japan) + + + opwolf3u + Operation Wolf 3 (US) + + + opwolfa + Operation Wolf (World, rev 2, set 2) + + + opwolfb + Operation Bear (bootleg of Operation Wolf) + + + opwolfj + Operation Wolf (Japan, rev 2) + + + opwolfjsc + Operation Wolf (Japan, SC) + + + opwolfp + Operation Wolf (Japan, prototype) + + + opwolfu + Operation Wolf (US, rev 2) + + + orangec + Orange Club - Maruhi Kagai Jugyou (Japan 880213) + + + orangeci + Orange Club - Maru-hi Ippatsu Kaihou (Japan 880221) + + + orbatak + Orbatak (prototype) + + + orbeaut + Oriental Beauty (10213511, NSW/ACT) + + + orbit + Orbit + + + orbit1 + Orbit 1 + + + orbite + Orbite (prototype) + + + orbitor1 + Orbitor 1 + + + orbitron + Orbitron + + + orbs + Orbs (10/7/94 prototype?) + + + orchidms + Orchid Mist (0200849V, NSW/ACT) + + + orchidmsa + Orchid Mist (0100849V, NSW/ACT) + + + orchidmsnz + Orchid Mist (0101241V, New Zealand) + + + ordyne + Ordyne (World) + + + ordynej + Ordyne (Japan) + + + ordyneje + Ordyne (Japan, English Version) + + + orius + Orius (ver UAA) + + + orleg2 + Oriental Legend 2 (V104, Oversea) + + + orleg2_101 + Oriental Legend 2 (V101, Oversea) + + + orleg2_101cn + Xiyou Shi E Zhuan 2 (V101, China) + + + orleg2_101jp + Saiyuu Shakuyakuden 2 (V101, Japan) + + + orleg2_103 + Oriental Legend 2 (V103, Oversea) + + + orleg2_103cn + Xiyou Shi E Zhuan 2 (V103, China) + + + orleg2_103jp + Saiyuu Shakuyakuden 2 (V103, Japan) + + + orleg2_104cn + Xiyou Shi E Zhuan 2 (V104, China) + + + orleg2_104jp + Saiyuu Shakuyakuden 2 (V104, Japan) + + + orlegend + Oriental Legend / Xiyou Shi E Zhuan (ver. 126) + + + orlegend105k + Oriental Legend / Xiyou Shi E Zhuan (ver. 105, Korean Board) + + + orlegend105t + Oriental Legend / Xiyou Shi E Zhuan (ver. 105, Taiwanese Board) + + + orlegend111c + Oriental Legend / Xiyou Shi E Zhuan (ver. 111, Chinese Board) + + + orlegend111k + Oriental Legend / Xiyou Shi E Zhuan (ver. 111, Korean Board) + + + orlegend111t + Oriental Legend / Xiyou Shi E Zhuan (ver. 111, Taiwanese Board) + + + orlegendc + Oriental Legend / Xiyou Shi E Zhuan (ver. 112, Chinese Board) + + + orlegendca + Oriental Legend / Xiyou Shi E Zhuan (ver. ???, Chinese Board) + + + orlegende + Oriental Legend / Xiyou Shi E Zhuan (ver. 112) + + + orlegendea + Oriental Legend / Xiyou Shi E Zhuan (ver. 112, set 2) + + + orlegndc + Oriental Legend - Xi Yo Gi Shi Re Zuang (ver. 112, Chinese Board) + + + orlegnde + Oriental Legend - Xi Yo Gi Shi Re Zuang (ver. 112) + + + orunners + OutRunners (World) + + + orunnersj + OutRunners (Japan) + + + orunnersu + OutRunners (US) + + + oscar + Psycho-Nics Oscar (World revision 0) + + + oscara5 + Oscar (0200348V, NSW/ACT) + + + oscara5a + Oscar (0100348V, NSW/ACT) + + + oscarbl + Psycho-Nics Oscar (World revision 0, bootleg) + + + oscarj + Psycho-Nics Oscar (Japan revision 2) + + + oscarj0 + Psycho-Nics Oscar (Japan revision 0) + + + oscarj1 + Psycho-Nics Oscar (Japan revision 1) + + + oscarj2 + Psycho-Nics Oscar (Japan revision 2) + + + oscaru + Psycho-Nics Oscar (US) + + + osman + Osman (World) + + + otatidai + Disco Mahjong Otachidai no Okite (Japan) + + + otchart + Off The Charts (Russian) + + + otenamhf + Otenami Haiken Final (V2.07JC 2005/04/20 15:36) + + + otenamih + Otenami Haiken (V2.04J 1999/02/01 18:00:00) + + + otenki + Otenki Kororin (V2.01J 2001/07/02 10:00) + + + othello + Othello (version 3.0) + + + othellos + Othello Shiyouyo (J 980423 V1.002) + + + othldrby + Othello Derby (Japan) + + + othunder + Operation Thunderbolt (World, rev 1) + + + othunderj + Operation Thunderbolt (Japan) + + + othunderjsc + Operation Thunderbolt (Japan, SC) + + + othundero + Operation Thunderbolt (World) + + + othunderu + Operation Thunderbolt (US, rev 1) + + + othunderua + Operation Thunderbolt (US) + + + othundu + Operation Thunderbolt (US) + + + otomedius + Otomedius (ver GGG:J:A:A:2008041801) + + + otonano + Otona no Mahjong (Japan 880628) + + + otrigger + OutTrigger + + + ottopz + Otto Project PZ (hack) + + + otwalls + Off the Wall (Sente) (10/16/84) + + + ougonhai + Mahjong Ougon no Pai (Japan) + + + ougonhaib1 + Mahjong Ougon no Pai (Japan bootleg set 1, medal) + + + ougonhaib2 + Mahjong Ougon no Pai (Japan bootleg set 2, medal) + + + ougonhaib3 + Mahjong Ougon no Pai (Japan bootleg set 3, medal) + + + outbackj + Outback Jack (20195211, NSW/ACT) + + + outfxesj + Outfoxies (Japan) + + + outfxies + The Outfoxies (World, OU2) + + + outfxiesa + The Outfoxies (Korea?) + + + outfxiesj + The Outfoxies (Japan, OU1) + + + outfxiesja + The Outfoxies (Japan, OU1, alternate GFX ROMs) + + + outlaw + Outlaw + + + outline + Outline + + + outr2 + OutRun 2 (Rev A) (GDX-0004A) + + + outr2sdx + OutRun 2 SP SDX + + + outr2st + OutRun 2 Special Tours (Rev A) (GDX-0014A) + + + outr2stj + OutRun 2 Special Tours (Japan, Rev A) (GDX-0011A) + + + outr2stjo + OutRun 2 Special Tours (Japan) (GDX-0011) + + + outr2sto + OutRun 2 Special Tours (GDX-0014) + + + outrun + Out Run (sitdown/upright, Rev B) + + + outruna + Out Run (set 2) + + + outrunb + Out Run (bootleg) + + + outrundx + Out Run (deluxe sitdown) + + + outrundxa + Out Run (deluxe sitdown earlier version) + + + outrundxeh + Out Run (deluxe sitdown) (Enhanced Edition v2.0.3) + + + outrundxeha + Out Run (deluxe sitdown) (Enhanced Edition v1.0.3) + + + outrundxj + Out Run (Japan, deluxe sitdown) (FD1089A 317-0019) + + + outruneh + Out Run (sitdown/upright, Rev B) (Enhanced Edition v2.0.3) + + + outruneha + Out Run (sitdown/upright, Rev B) (Enhanced Edition v1.1.0) + + + outrunehb + Out Run (sitdown/upright, Rev B) (Enhanced Edition v2.0.2) + + + outrunra + Out Run (sitdown/upright, Rev A) + + + outzone + Out Zone + + + outzonea + Out Zone (old set) + + + outzoneb + Out Zone (older set) + + + outzonec + Out Zone (oldest set) + + + outzonecv + Out Zone (Zero Wing TP-015 PCB conversion) + + + outzoneh + Out Zone (harder) + + + overdriv + Over Drive (set 1) + + + overdriva + Over Drive (set 2) + + + overdrivb + Over Drive (set 3) + + + overrev + Over Rev (Model 2C, Revision A) + + + overrevb + Over Rev (Model 2B, Revision B) + + + overrevba + Over Rev (Model 2B, Revision A) + + + overtop + Over Top + + + owlcap + Owl Capone (10008711, NSW/ACT, Show Program) + + + oygt + Omatsuri Yasan: Ganso Takoyaki + + + oyks + Omatsuri Yasan: Kingyo Sukui + + + ozmawar2 + Ozma Wars (set 2) + + + ozmawars + Ozma Wars (set 1) + + + ozmawars2 + Ozma Wars (set 2) + + + ozmawarsmr + Ozma Wars (Model Racing bootleg) + + + ozon1 + Ozon I + + + p47 + P-47: The Phantom Fighter (World) + + + p47a + P-47: The Freedom Fighter (World) + + + p47aces + P-47 Aces (ver 1.1) + + + p47acesa + P-47 Aces (ver 1.0) + + + p47bl + P-47: The Freedom Fighter (World, bootleg) + + + p47j + P-47: The Freedom Fighter (Japan) + + + p47je + P-47: The Freedom Fighter (Japan, Export) + + + p911 + The Keisatsukan: Shinjuku 24-ji (ver AAE) + + + p9112 + Police 911 2 (VER. UAA:B) + + + p911ac + The Keisatsukan: Shinjuku 24-ji (ver AAC) + + + p911ed + Police 24/7 (ver EAD) + + + p911j + The Keisatsukan: Shinjuku 24-ji (ver JAE) + + + p911k + The Keisatsukan: Shinjuku 24-ji (ver KAE) + + + p911kc + The Keisatsukan: Shinjuku 24-ji (ver KAC) + + + p911ud + Police 911 (ver UAD) + + + pac90 + Pac-Man (bootleg on World Cup '90 hardware) + + + pacapp + Paca Paca Passion (Japan, PPP1/VER.A2) + + + pacapp2 + Paca Paca Passion 2 (Japan, PKS1/VER.A) + + + pacappsp + Paca Paca Passion Special (Japan, PSP1/VER.A) + + + paccarn + Pac-Carnival + + + paceight + Pac-Eight + + + pacgal + Pac-Gal (set 1) + + + pacgal2 + Pac-Gal (set 2) + + + pacheart + Pac-Man (Hearts) + + + pachifev + Pachifever + + + pachiten + Medal Mahjong Pachi-Slot Tengoku (Japan) + + + packbang + Pack'n Bang Bang + + + packbangp + Pack'n Bang Bang (prototype) + + + packetman + Packetman (bootleg) + + + packysts + Packy's Treasure Slot (Japan, main ver. 1.3, video ver. 1.1) + + + pacland + Pac-Land (World) + + + pacland2 + Pac-Land (set 2) + + + pacland3 + Pac-Land (set 3) + + + paclandj + Pac-Land (Japan new) + + + paclandjo + Pac-Land (Japan old) + + + paclandjo2 + Pac-Land (Japan older) + + + paclandm + Pac-Land (Midway) + + + paclandm2 + Pac-Land (Bally-Midway) + + + paclandp + Pac-Land (United Amusements PC Engine) + + + pacman + Pac-Man (Midway) + + + pacmanbl + Pac-Man (bootleg on Galaxian hardware, set 1) + + + pacmanbla + Pac-Man (bootleg on Galaxian hardware, set 2) + + + pacmanblb + Pac-Man (bootleg on Moon Alien 'AL-10A1' hardware) + + + pacmanblc + Pac-Man (Calfesa, Spanish bootleg on Galaxian hardware) + + + pacmanblci + Pac-Man (Cirsa, Spanish bootleg on Galaxian hardware) + + + pacmanblv + Pac-Man (Video Dens, Spanish bootleg on Galaxian hardware, set 1) + + + pacmanblva + Pac-Man (Video Dens, Spanish bootleg on Galaxian hardware, set 2) + + + pacmanf + Pac-Man (Midway, speedup hack) + + + pacmanfm + Pac Man (FAMARE S.A. bootleg of Puck Man) + + + pacmania + Pac-Mania + + + pacmaniaj + Pac-Mania (Japan) + + + pacmaniao + Pac-Mania (111187 sound program) + + + pacmanij + Pac-Mania (Japan) + + + pacmanjpm + Pac-Man (JPM bootleg) + + + pacmanmr + Pac-Man (Model Racing bootleg) + + + pacmanp + Pac-Man (Patched) + + + pacmanpe + Come Come (Petaco SA bootleg of Puck Man) + + + pacmanso + Pac-Man (SegaSA / Sonic) + + + pacmansp + Puck Man (Spanish, 'Made in Greece' bootleg) + + + pacmanug + Pac Man (U.Games bootleg of Puck Man) + + + pacmanvg + Pac-Man (Video Game SA bootleg) + + + pacmball + Pacman BALL (PMB2 Ver.A.) + + + pacminer + Pac Manic Miner Man + + + pacmod + Pac-Man (Midway, harder) + + + pacnchmp + Pac-Man & Chomp Chomp + + + pacnpal + Pac & Pal + + + pacnpal2 + Pac & Pal (older) + + + pacominv + Pacom Invader (set 1) + + + pacominva + Pacom Invader (set 2) + + + pacplus + Pac-Man Plus + + + pacslot + Pac-Slot + + + pacuman + Pacu-Man (Spanish bootleg of Puck Man) + + + paddle2 + Paddle 2 (bootleg on Block hardware) + + + paddlema + Paddle Mania + + + painter + Painter (hack of Crush Roller) + + + paintlad + Painted Lady (Splash) (Ver. 1.3 US) + + + paintrlr + Paint Roller (bootleg of Crush Roller) + + + pairlove + Pairs Love + + + pairs + Pairs (V1.2, 09/30/94) + + + pairsa + Pairs (V1, 09/07/94) + + + pairsh8 + Pairs (Italian gambling game) + + + pairsnb + Pairs (Nichibutsu) (Japan 890822) + + + pairsred + Pairs Redemption (V1.0, 10/25/94) + + + pairsten + Pairs (System Ten) (Japan 890826) + + + pajaroes + Pajaro del Espacio (Spanish bootleg of UniWar S) + + + palamed + Palamedes (US) + + + palamedj + Palamedes (Japan) + + + pandart + Panther Darts + + + pandoras + Pandora's Palace + + + pandpays + Panda Pays - Mr. Cashman (0151109, US) + + + pang + Pang (World) + + + pang3 + Pang! 3 (Europe 950601) + + + pang3b + Pang! 3 (bootleg, set 1) + + + pang3b2 + Pang! 3 (bootleg, set 2) + + + pang3b3 + Pang! 3 (bootleg, set 3) + + + pang3b4 + Pang! 3 (bootleg, set 4) + + + pang3b5 + Pang! 3 (bootleg, set 5) + + + pang3b6 + Pang! 3 (bootleg, set 6) + + + pang3b7 + Pang! 3 (bootleg, set 7) + + + pang3j + Pang! 3: Kaitou Tachi no Karei na Gogo (Japan 950511) + + + pang3r1 + Pang! 3 (Europe 950511) + + + pang3r1a + Pang! 3 (Europe 950511, alt) + + + pangb + Pang (bootleg, set 1) + + + pangb2 + Pang (bootleg, set 4) + + + pangba + Pang (bootleg, set 3) + + + pangbb + Pang (bootleg, set 5) + + + pangbc + Pang (bootleg, set 7) + + + pangbold + Pang (bootleg, set 2) + + + pangbold2 + Pang (bootleg, set 5) + + + pangbold3 + Pang (bootleg, set 6) + + + pangbp + Pang (bootleg, set 6) + + + pangofun + Pango Fun (Italy) + + + pangpang + Pang Pang + + + pangpomm + Pang Poms (Mitchell) + + + pangpoms + Pang Pom's + + + pangpomsm + Pang Pom's (Mitchell) + + + pangpomsn + Pang Pom's (Nova) + + + panic + Space Panic (version E) + + + panic2 + Space Panic (set 2) + + + panic3 + Space Panic (set 3) + + + panic4 + Space Panic (set 4) + + + panicbom + Panic Bomber + + + panicger + Space Panic (German) + + + panich + Space Panic (harder) + + + panicprk + Panic Park (World, PNP2 Ver. A) + + + panicprkj + Panic Park (Japan, PNP1 Ver. B, set 1) + + + panicprkj2 + Panic Park (Japan, PNP1 Ver. B, set 2) + + + panicr + Panic Road (Japan) + + + panicrg + Panic Road (Germany) + + + panicstr + Panic Street (Japan) + + + panikuru + Panikuru Panekuru (Japan, PPA1 Ver.A) + + + panther + Panther (bootleg?) + + + panthera + Panthera + + + pantmag + Panther Magic (0101046V, NSW/ACT) + + + pantmaga + Panther Magic (0100716V, NSW/ACT) + + + panzer + Panzer (bootleg of Spectar) + + + paperboy + Paperboy (rev 3) + + + paperboyp + Paperboy (prototype) + + + paperboyr1 + Paperboy (rev 1) + + + paperboyr2 + Paperboy (rev 2) + + + paperbr1 + Paperboy (rev 1) + + + paperbr2 + Paperboy (rev 2) + + + papillon + Papillon + + + paprazzi + Paparazzi + + + para2dx + Paradise 2 Deluxe + + + paradar + Paradar + + + paradice + Paradice (Dutch, Game Card 95-750-615) + + + paradise + Paradise (set 1) + + + paradisea + Paradise (set 2) + + + paradisee + Paradise (Escape) + + + paradlx + Paradise Deluxe + + + paragon + Paragon + + + paranoia + Paranoia (Arcade PC Engine, bootleg?) + + + parentj + Parent Jack (Japan) + + + parislgt + Paris Lights (30002611, NSW/ACT) + + + parislgta + Paris Lights (10139011, ASP) + + + parislgtu + Paris Lights - Jackpot Carnival (0251031, US) + + + parodisj + Parodius DA! (Japan) + + + parodius + Parodius Da!: Shinwa kara Owarai e (World, set 1) + + + parodiusa + Parodius Da!: Shinwa kara Owarai e (Asia) + + + parodiuse + Parodius Da!: Shinwa kara Owarai e (World, set 2) + + + parodiusj + Parodius Da!: Shinwa kara Owarai e (Japan) + + + parrot3 + Parrot Poker III (Version 2.6E Dual) + + + parrot3b1 + Parrot Poker III (Version 2.6R, set 1) + + + parrot3d1 + Parrot Poker III (Version 2.6R, set 2) + + + parrot3o + Parrot Poker III (Version 2.4) + + + parrot3v1 + Parrot Poker III (Version 2.6R Dual) + + + party + Party + + + partygrs + Party Gras (AHG1567, US) + + + partygrsa + Party Gras (BHG1284, US) + + + partygrsb + Party Gras (AHG1568, US) + + + pasha2 + Pasha Pasha 2 + + + pass + Pass + + + passht4b + Passing Shot (4 Players) (bootleg) + + + passsht + Passing Shot (World, 2 Players) (FD1094 317-0080) + + + passsht16a + Passing Shot (Japan, 4 Players, System 16A) (FD1094 317-0071) + + + passshta + Passing Shot (World, 4 Players) (FD1094 317-0074) + + + passshtad + Passing Shot (World, 4 Players) (bootleg of FD1094 317-0074 set) + + + passshtb + Passing Shot (2 Players) (bootleg) + + + passshtd + Passing Shot (World, 2 Players) (bootleg of FD1094 317-0080 set) + + + passshtj + Passing Shot (Japan, 4 Players) (FD1094 317-0070) + + + passshtjd + Passing Shot (Japan, 4 Players) (bootleg of FD1094 317-0070 set) + + + pastelg + Pastel Gal (Japan 851224) + + + pastelgl + Pastel Gal (Japan 851224) + + + pastelis + Pastel Island (Japan, prototype) + + + patapata + Pata Pata Panic + + + patimono + Mahjong Pachinko Monogatari (Japan) + + + patocar + Hashire Patrol Car (J 990326 V1.000) + + + pb_l1 + Pin-Bot (L-1) + + + pb_l2 + Pin-Bot (L-2) + + + pb_l3 + Pin-Bot (L-3) + + + pb_l5 + Pin-Bot (L-5) + + + pb_p4 + Pin-Bot (P-4) + + + pbactio2 + Pinball Action (set 2) + + + pbaction + Pinball Action (set 1) + + + pbaction2 + Pinball Action (set 2, encrypted) + + + pbaction3 + Pinball Action (set 3, encrypted) + + + pbaction4 + Pinball Action (set 4, encrypted) + + + pbactiont + Pinball Action (Tecfri license) + + + pballoon + Pioneer Balloon + + + pballoonr + Pioneer Balloon (Rock-Ola license) + + + pbancho + Gyakuten!! Puzzle Bancho (Japan, set 1) + + + pbanchoa + Gyakuten!! Puzzle Bancho (Japan, set 2) + + + pbchmp95 + Pinball Champ '95 + + + pbillian + Prebillian + + + pbillianb + Prebillian (bootleg) + + + pbillrd + Perfect Billiard + + + pbillrdbl + Perfect Billiard (bootleg) + + + pbillrds + Perfect Billiard (MC-8123, 317-0030) + + + pbillrdsa + Perfect Billiard (MC-8123, 317-5008) + + + pblbeach + Pebble Beach - The Great Shot (JUE 950913 V0.990) + + + pbobbl2j + Puzzle Bobble 2 (Japan) + + + pbobbl2n + Puzzle Bobble 2 / Bust-A-Move Again (Neo-Geo) + + + pbobbl2u + Bust-A-Move Again (US) + + + pbobbl2x + Puzzle Bobble 2X (Japan) + + + pbobbl3j + Puzzle Bobble 3 (Japan) + + + pbobbl3u + Puzzle Bobble 3 (US) + + + pbobbl4j + Puzzle Bobble 4 (Japan) + + + pbobbl4u + Puzzle Bobble 4 (US) + + + pbobble + Puzzle Bobble (Japan, B-System) + + + pbobble2 + Puzzle Bobble 2 (Ver 2.3O 1995/07/31) + + + pbobble2j + Puzzle Bobble 2 (Ver 2.2J 1995/07/20) + + + pbobble2o + Puzzle Bobble 2 (Ver 2.2O 1995/07/20) + + + pbobble2u + Bust-A-Move Again (Ver 2.3A 1995/07/31) + + + pbobble2x + Puzzle Bobble 2X (Ver 2.2J 1995/11/11) + + + pbobble3 + Puzzle Bobble 3 (Ver 2.1O 1996/09/27) + + + pbobble3j + Puzzle Bobble 3 (Ver 2.1J 1996/09/27) + + + pbobble3rc + Puzzle Bobble 3 Recarbonated + + + pbobble3u + Puzzle Bobble 3 (Ver 2.1A 1996/09/27) + + + pbobble4 + Puzzle Bobble 4 (Ver 2.04O 1997/12/19) + + + pbobble4j + Puzzle Bobble 4 (Ver 2.04J 1997/12/19) + + + pbobble4u + Puzzle Bobble 4 (Ver 2.04A 1997/12/19) + + + pbobblen + Puzzle Bobble / Bust-A-Move (Neo-Geo, NGM-083) + + + pbobblenb + Puzzle Bobble / Bust-A-Move (Neo-Geo, bootleg) + + + pbobblna + Puzzle Bobble / Bust-A-Move (Neo-Geo) (set 2) + + + pbss330 + Pit Boss Superstar III 30 (9233-00-01 R0B, Standard version) + + + pbss330a + Pit Boss Superstar III 30 (9233-00-01 R0, Standard version) + + + pbss330ca + Pit Boss Superstar III 30 (9233-00-06 R0A, California version) + + + pbst30 + Pit Boss Supertouch 30 (9234-10-01 R0) + + + pbst30a + Pit Boss Supertouch 30 (9234-00-01 R0A) + + + pc644vz + Player's Choice (PC644VZ) Standard Draw Poker + + + pc679cy + Player's Choice (PC679CY) Standard Draw Poker + + + pc714vz + Player's Choice (PC714VZ) Standard Draw Poker + + + pc716vy + Player's Choice (PC716VY) Standard Draw Poker + + + pc718vy + Player's Choice (PC718VY) Standard Draw Poker + + + pc_1942 + 1942 (PlayChoice-10) + + + pc_bball + Baseball (PlayChoice-10) + + + pc_bfght + Balloon Fight (PlayChoice-10) + + + pc_bload + Bases Loaded (Prototype, PlayChoice-10) + + + pc_bstar + Baseball Stars: Be a Champ! (PlayChoice-10) + + + pc_cntra + Contra (PlayChoice-10) + + + pc_cshwk + Captain Sky Hawk (PlayChoice-10) + + + pc_cvnia + Castlevania (PlayChoice-10) + + + pc_dbldr + Double Dribble (PlayChoice-10) + + + pc_ddrgn + Double Dragon (PlayChoice-10) + + + pc_drmro + Dr. Mario (PlayChoice-10) + + + pc_duckh + Duck Hunt (PlayChoice-10) + + + pc_ebike + Excitebike (PlayChoice-10) + + + pc_ftqst + Uncle Fester's Quest: The Addams Family (PlayChoice-10) + + + pc_gntlt + Gauntlet (PlayChoice-10) + + + pc_golf + Golf (PlayChoice-10) + + + pc_goons + The Goonies (PlayChoice-10) + + + pc_grdue + Gradius (PlayChoice-10, older) + + + pc_grdus + Gradius (PlayChoice-10) + + + pc_hgaly + Hogan's Alley (PlayChoice-10) + + + pc_kngfu + Kung Fu (PlayChoice-10) + + + pc_mario + Mario Bros. (PlayChoice-10) + + + pc_miket + Mike Tyson's Punch-Out!! (PlayChoice-10) + + + pc_mman3 + Mega Man III (PlayChoice-10) + + + pc_moglf + Mario's Open Golf (PlayChoice-10) + + + pc_mtoid + Metroid (PlayChoice-10) + + + pc_ngai2 + Ninja Gaiden Episode II: The Dark Sword of Chaos (PlayChoice-10) + + + pc_ngai3 + Ninja Gaiden Episode III: The Ancient Ship of Doom (PlayChoice-10) + + + pc_ngaid + Ninja Gaiden (PlayChoice-10) + + + pc_pinbt + PinBot (PlayChoice-10) + + + pc_pwbld + Power Blade (PlayChoice-10) + + + pc_pwrst + Pro Wrestling (PlayChoice-10) + + + pc_radr2 + Rad Racer II (PlayChoice-10) + + + pc_radrc + Rad Racer (PlayChoice-10) + + + pc_rcpam + R.C. Pro-Am (PlayChoice-10) + + + pc_rkats + Rockin' Kats (PlayChoice-10) + + + pc_rnatk + Rush'n Attack (PlayChoice-10) + + + pc_rrngr + Chip'n Dale: Rescue Rangers (PlayChoice-10) + + + pc_rygar + Rygar (PlayChoice-10) + + + pc_sjetm + Solar Jetman (PlayChoice-10) + + + pc_smb + Super Mario Bros. (PlayChoice-10) + + + pc_smb2 + Super Mario Bros. 2 (PlayChoice-10) + + + pc_smb3 + Super Mario Bros. 3 (PlayChoice-10) + + + pc_suprc + Super C (PlayChoice-10) + + + pc_tbowl + Tecmo Bowl (PlayChoice-10) + + + pc_tenis + Tennis (PlayChoice-10) + + + pc_tkfld + Track & Field (PlayChoice-10) + + + pc_tmnt + Teenage Mutant Ninja Turtles (PlayChoice-10) + + + pc_tmnt2 + Teenage Mutant Ninja Turtles II: The Arcade Game (PlayChoice-10) + + + pc_trjan + Trojan (PlayChoice-10) + + + pc_ttoon + Tiny Toon Adventures (prototype) (PlayChoice-10) + + + pc_vball + Volley Ball (PlayChoice-10) + + + pc_virus + Virus (Dr. Mario prototype, PlayChoice-10) + + + pc_wcup + Nintendo World Cup (PlayChoice-10) + + + pc_wgnmn + Wild Gunman (PlayChoice-10) + + + pc_ynoid + Yo! Noid (PlayChoice-10) + + + pcbydem + Player's Choice - By Demand (10223111, NSW/ACT) + + + pcfavor + Player's Choice - Favourites (20177311, NSW/ACT) + + + pcgold + Player's Choice - Gold Edition (30291411, New Zealand) + + + pckobe99 + Print Club 2 Kobe Luminaire '99 (Print Club Custom 3) (J 991203 V1.000) + + + pcktgal + Pocket Gal (Japan) + + + pcktgal2 + Pocket Gal 2 (English) + + + pcktgal2j + Pocket Gal 2 (Japanese) + + + pcktgalb + Pocket Gal (Yada East bootleg) + + + pcktgalba + Pocket Gal / unknown card game + + + pclb2elk + Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000) + + + pclove + Print Club LoveLove (J 970421 V1.000) + + + pclove2 + Print Club LoveLove Ver 2 (J 970825 V1.000) + + + pclub + Print Club (World) + + + pclub2 + Print Club 2 (U 970921 V1.000) + + + pclub26w + Print Club 2 Vol. 6 Winter (J 961210 V1.000) + + + pclub26wa + Print Club 2 Vol. 6 Winter (J 970121 V1.200) + + + pclub27s + Print Club 2 Vol. 7 Spring (J 970313 V1.100) + + + pclub2fc + Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100) + + + pclub2kc + Print Club Kome Kome Club (J 970203 V1.000) + + + pclub2pe + Print Club 2 Pepsiman (J 970618 V1.100) + + + pclub2pf + Print Club 2 Puffy (J V1.100) + + + pclub2v3 + Print Club 2 Vol. 3 (U 990310 V1.000) + + + pclub2wb + Print Club 2 Warner Bros (J 970228 V1.000) + + + pclubj + Print Club (Japan Vol.1) + + + pclubjv2 + Print Club (Japan Vol.2) + + + pclubjv3 + Print Club (Japan Vol.3) + + + pclubjv4 + Print Club (Japan Vol.4) + + + pclubjv5 + Print Club (Japan Vol.5) + + + pclubol + Print Club Olive (J 980717 V1.000) + + + pclubor + Print Club Goukakenran (J 991104 V1.000) + + + pclubpok + Print Club Pokemon B (U 991126 V1.000) + + + pclubyo + Print Club Yoshimoto V1 (J 970208 V1.000) + + + pclubyo2 + Print Club Yoshimoto V2 (J 970422 V1.100) + + + pclubys + Puzzle Club (Yun Sung, set 1) + + + pclubysa + Puzzle Club (Yun Sung, set 2) + + + pcmostw + Player's Choice - Most Wanted (20234911, NSW/ACT) + + + pcnfrk + Percussion Freaks (GQ881 VER. EAB) + + + pcnfrk10m + Percussion Freaks 10th Mix (G*D40 VER. AAA) + + + pcnfrk2m + Percussion Freaks 2nd Mix (GE912 VER. AAA) + + + pcnfrk2mk + Percussion Freaks 2nd Mix (GE912 VER. KAA) + + + pcnfrk3m + Percussion Freaks 3rd Mix (G*A23 VER. AAA) + + + pcnfrk3mk + Percussion Freaks 3rd Mix (G*A23 VER. KAA) + + + pcnfrk4m + Percussion Freaks 4th Mix (G*A25 VER. AAA) + + + pcnfrk4mk + Percussion Freaks 4th Mix (G*A25 VER. KAA) + + + pcnfrk5m + Percussion Freaks 5th Mix (G*B05 VER. AAA) + + + pcnfrk5mk + Percussion Freaks 5th Mix (G*B05 VER. KAA) + + + pcnfrk6m + Percussion Freaks 6th Mix (G*B16 VER. AAA) + + + pcnfrk7m + Percussion Freaks 7th Mix (G*C07 VER. AAA) + + + pcnfrk8m + Percussion Freaks 8th Mix (G*C38 VER. AAA) + + + pcnfrk9m + Percussion Freaks 9th Mix (G*D09 VER. AAA) + + + pcnfrka + Percussion Freaks (GQ881 VER. AAB) + + + pcnfrkk + Percussion Freaks (GQ881 VER. KAB) + + + pcockmag + Peacock Magic (1J008811, NSW/ACT) + + + pcockmaga + Peacock Magic (10134311, ASP) + + + pcockmagu + Peacock Magic (0151352, US) + + + pcorig + Player's Choice - Original (30143011, NSW/ACT) + + + pcplat + Player's Choice - Platinum (20282111, New Zealand) + + + pcpooh2 + Print Club Winnie-the-Pooh Vol. 2 (J 971218 V1.000) + + + pcpooh3 + Print Club Winnie-the-Pooh Vol. 3 (J 980406 V1.000) + + + pcramclr + Player's Choice RAM Clear + + + pdrift + Power Drift (World, Rev A) + + + pdrifta + Power Drift (World) + + + pdrifte + Power Drift (World, Earlier) + + + pdriftj + Power Drift (Japan) + + + pdriftl + Power Drift - Link Version (Japan, Rev A) + + + peaflut + Peacock Flutter (02J00011, NSW/ACT) + + + peafluta + Peacock Flutter (01J00011, NSW/ACT) + + + pebe0013 + Player's Edge Plus (BE0013) Blackjack + + + pebe0014 + Player's Edge Plus (BE0014) Blackjack + + + pebe0014a + Player's Edge Plus (BE0014) Blackjack (International English/Spanish) + + + pecmen + Mr. & Mrs. Pec-Men + + + peekaboo + Peek-a-Boo! (Japan, ver. 1.1) + + + peekaboou + Peek-a-Boo! (North America, ver 1.0) + + + peepshow + Nozokimeguri Mahjong Peep Show (Japan 890404) + + + peggle + Peggle (Joystick, v1.0) + + + pegglet + Peggle (Trackball, v1.0) + + + peip0028 + Player's Edge Plus (IP0028) Joker Poker - French + + + peip0029 + Player's Edge Plus (IP0029) Joker Poker - French + + + peip0031 + Player's Edge Plus (IP0031) Standard Draw Poker - French + + + peip0041 + Player's Edge Plus (IP0041) Double Deuces Wild Poker - French + + + peip0051 + Player's Edge Plus (IP0051) Joker Poker - French + + + peip0058 + Player's Edge Plus (IP0058) Standard Draw Poker - French + + + peip0062 + Player's Edge Plus (IP0062) Joker Poker - French + + + peip0074 + Player's Edge Plus (IP0074) Joker Poker - French + + + peip0079 + Player's Edge Plus (IP0079) Standard Draw Poker - French + + + peip0101 + Player's Edge Plus (IP0101) Joker Poker - French + + + peip0103 + Player's Edge Plus (IP0103) Joker Poker - French + + + peip0105 + Player's Edge Plus (IP0105) Joker Poker - French + + + peip0108 + Player's Edge Plus (IP0108) Standard Draw Poker - French + + + peip0111 + Player's Edge Plus (IP0111) Joker Poker - French + + + peip0112 + Player's Edge Plus (IP0112) Standard Draw Poker - French + + + peip0114 + Player's Edge Plus (IP0114) Standard Draw Poker - French + + + peip0115 + Player's Edge Plus (IP0115) Joker Poker - French + + + peip0116 + Player's Edge Plus (IP0116) Standard Draw Poker - French + + + peip0118 + Player's Edge Plus (IP0118) Standard Draw Poker - French + + + peip0120 + Player's Edge Plus (IP0120) Standard Draw Poker - French + + + peivc006 + Player's Edge Plus (IVC006) Clear EEPROM Chip + + + peke0004 + Player's Edge Plus (KE0004) Keno (set 1) + + + peke0004a + Player's Edge Plus (KE0004) Keno (set 2) + + + peke0004b + Player's Edge Plus (KE0004) Keno (set 3) + + + peke0017 + Player's Edge Plus (KE0017) Keno (set 1) + + + peke0017a + Player's Edge Plus (KE0017) Keno (set 2) + + + peke0026 + Player's Edge Plus (KE0026) Keno + + + peke1001 + Player's Edge Plus (KE1001) Keno + + + peke1006 + Player's Edge Plus (KE1006) Keno + + + peke1012 + Player's Edge Plus (KE1012) Keno (set 1) + + + peke1012a + Player's Edge Plus (KE1012) Keno (set 2) + + + peke1012b + Player's Edge Plus (KE1012) Keno (set 3) + + + peke1013 + Player's Edge Plus (KE1013) Keno (set 1) + + + peke1013a + Player's Edge Plus (KE1013) Keno (set 2) + + + pekoc766 + Player's Edge Plus (PP0766 A5W-A6F) Standard Draw Poker + + + pekoc801 + Player's Edge Plus (PP0801 A5W-A6F) 10's or Better + + + pekoc802 + Player's Edge Plus (PP0802 A5W-A6F) Standard Draw Poker + + + pekoc803 + Player's Edge Plus (PP0803 A5W-A6F) Joker Poker + + + pekoc803a + Player's Edge Plus (PP0803 A50-A6N) Joker Poker + + + pekoc804 + Player's Edge Plus (PP0804 A5W-A6F) Bonus Poker Deluxe + + + pekoc806 + Player's Edge Plus (PP0806 A5W-A6F) Standard Draw Poker + + + pekoc818 + Player's Edge Plus (PP0818 A5W-A6F) Joker Poker (Aces or Better) + + + pekoc819 + Player's Edge Plus (PP0819 A5W-A6F) Bonus Poker Deluxe + + + pekoc822 + Player's Edge Plus (PP0822 A5W-A6F) Standard Draw Poker + + + pekoc825 + Player's Edge Plus (PP0825 A59-A7C) White Hot Aces + + + pelipete + Pelican Pete (10177511, NSW/ACT) + + + pelipetea + Pelican Pete (10196211, ASP) + + + pelipetejc + Pelican Pete - Jackpot Carnival (10226711, Queensland) + + + pelipeteu + Pelican Pete (0252555, US) + + + pemg0025 + Montana Choice (MG0025) Multi-Game + + + pemg0026 + Montana Choice (MG0026) Multi-Game + + + pemg0182 + Montana Choice (MG0182) Multi-Game + + + pemg0183 + Montana Choice (MG0183) Multi-Game + + + pemg0213 + Player's Choice (MG0213) Multi-Game + + + pemg0225 + Montana Choice (MG0225) Multi-Game + + + pemg0252 + Player's Choice (MG0252) Multi-Game + + + penalty + Penalty (Bingo) + + + penbros + Penguin Brothers (Japan) + + + penfan + Penfan Girls - Step1. Mild Mind (set 1) + + + penfana + Penfan Girls - Step1. Mild Mind (set 2) + + + pengadvb + Penguin Adventure (bootleg of MSX version, encrypted) + + + pengadvb2 + Penguin Adventure (bootleg of MSX version, not encrypted) + + + pengo + Pengo (World, not encrypted, rev A) + + + pengoa + Pengo (World, 315-5010 type, set 1) + + + pengob + Pengo (World, 315-5010 type, set 2) + + + pengoc + Pengo (World, 315-5010 type, set 3) + + + pengoj + Pengo (Japan, not encrypted) + + + pengoja + Pengo (Japan, 315-5010 type, rev C) + + + pengojb + Pengo (Japan, 315-5007 type, rev A) + + + pengojbl + Pengo (Japan, bootleg) + + + pengojpm + Pengo (bootleg on Pac-Man hardware, set 1) + + + pengomc1 + Pengo (Marti Colls bootleg on Pac-Man hardware, set 1) + + + pengomc2 + Pengo (Marti Colls bootleg on Pac-Man hardware, set 2) + + + pengopac + Pengo (bootleg on Pac-Man hardware, set 2) + + + pengpay + Penguin Pays (0200460V, NSW/ACT) + + + pengpaya + Penguin Pays (0200357V, NSW/ACT) + + + pengpayb + Penguin Pays (0200359V, NSW/ACT) + + + pengpayc + Penguin Pays (0200113V, NSW/ACT) + + + pengpayce + Penguin Pays - Cash Express (AHG1544, US) + + + pengpaycea + Penguin Pays - Cash Express (AHG1295, US) + + + pengpayd + Penguin Pays (0300113V, NSW/ACT) + + + pengpaydx + Penguin Pays Deluxe (AHG1198, US) + + + pengpayu + Penguin Pays (OHG0417-03, US) + + + pengpayua + Penguin Pays (OHG0417-02, US) + + + pengpayub + Penguin Pays (BHI0417-03, US) + + + pengprty + Penguin Party + + + pengpuck + Penguin Pays - Penguin Pucks (EHG1257, US) + + + pengpyce + Penguin Pays - Cash Express (0151120, US) + + + penky + Penky + + + penkyi + Penky (Italian) + + + pennyar + Penny Arcade (0251169, US) + + + penpir + Penguin Pirate (0100674V, NSW/ACT) + + + penpir2 + Penguin Pirate II (0100869V, ASP) + + + penpira + Penguin Pirate (0200578V, NSW/ACT) + + + penta + Penta (bootleg) + + + pentacup + Pentacup (rev. 1) + + + pentacup2 + Pentacup (rev. 2) + + + pentacups + Pentacup (rev. S) + + + pentacupt + Pentacup (rev. T) + + + pepk0719 + Player's Edge (PK0719-PC092) Standard Draw Poker (El Cortez) + + + pepk0719a + Player's Edge (PK0719-PC041) Standard Draw Poker + + + pepk0719b + Player's Edge (PK0719-PC011) Standard Draw Poker + + + pepk0756 + Player's Edge (PK0756-PC092) Standard Draw Poker + + + pepk0756a + Player's Edge (PK0756-PC084) Standard Draw Poker (El Cortez) + + + pepk0756b + Player's Edge (PK0756-PC041) Standard Draw Poker + + + pepk0756c + Player's Edge (PK0756-PC011) Standard Draw Poker + + + pepk0756d + Player's Edge (PK0756-PC001) Standard Draw Poker + + + pepk0757 + Player's Edge (PK0757-PC074) Two Pair or Better + + + pepk0758 + Player's Edge (PK0758-PC041) Standard Draw Poker + + + pepk0769 + Player's Edge (PK0769-PC092) Standard Draw Poker + + + pepk0773 + Player's Edge (PK0773-PC041) Standard Draw Poker + + + pepk0785 + Player's Edge (PK0785-PC041) Tens or Better + + + pepk0788 + Player's Edge (PK0788-PC041) Tens or Better + + + pepk0810 + Player's Edge (PK0810-PC041) Joker Poker + + + pepk0810a + Player's Edge (PK0810-PC011) Joker Poker + + + pepk0811 + Player's Edge (PK0811-PC041) Joker Poker + + + pepk0823 + Player's Edge (PK0823-PC009) Standard Draw Poker + + + pepk0832 + Player's Edge (PK0832-PC041) Joker Poker + + + pepk0846 + Player's Edge (PK0846-PC098) Standard Draw Poker + + + pepk0849 + Player's Edge (PK0849-PC041) Joker Poker (Two Pair or Better) + + + pepk0856 + Player's Edge (PK0856-PC092) Joker Poker + + + pepk0856a + Player's Edge (PK0856-PC011) Joker Poker + + + pepk0858 + Player's Edge (PK0858-PC075) Deuces Wild Poker + + + pepk0873 + Player's Edge (PK0873-PC093) Deuces Wild Poker + + + pepk0873a + Player's Edge (PK0873-PC046) Deuces Wild Poker + + + pepk0885 + Player's Edge (PK0885-PC056) Deuces Wild Poker (El Cortez) + + + pepk0930 + Player's Edge (PK0930-PC093) Deuces Wild Poker + + + pepk0930a + Player's Edge (PK0930-PC075) Deuces Wild Poker + + + pepk1002 + Player's Edge (PK1002-PC082) Jake's Jacks Bonus Poker + + + pepk1004 + Player's Edge (PK1004-PC075) Deuces Wild Poker + + + pepk1013 + Player's Edge (PK1013-PC087) Tens or Better + + + pepk1015 + Player's Edge (PK1015-PC088) 4 of a Kind Bonus Poker + + + pepk1017 + Player's Edge (PK1017-PC041) Standard Draw Poker + + + pepk1020 + Player's Edge (PK1020-PC078) 4 of a Kind Bonus Poker + + + pepk1024 + Player's Edge (PK1024-PC095) Aces and Faces Bonus Poker + + + pepk1030 + Player's Edge (PK1030-PC088) 4 of a Kind Bonus Poker + + + pepk1031 + Player's Edge (PK1031-PC088) 4 of a Kind Bonus Poker + + + pepk1069 + Player's Edge (PK1069-PC088) Double Bonus Poker + + + pepp0001 + Player's Edge Plus (PP0001) Standard Draw Poker + + + pepp0002 + Player's Edge Plus (PP0002) Standard Draw Poker + + + pepp0002a + Player's Edge Plus (PP0002) Standard Draw Poker (International) + + + pepp0005 + Player's Edge Plus (PP0005) Standard Draw Poker + + + pepp0006 + Player's Edge Plus (PP0006) Standard Draw Poker + + + pepp0008 + Player's Edge Plus (PP0008) Standard Draw Poker (set 1) + + + pepp0008a + Player's Edge Plus (PP0008) Standard Draw Poker (set 2, El Cortez) + + + pepp0008b + Player's Edge Plus (PP0008) Standard Draw Poker (set 3) + + + pepp0009 + Player's Edge Plus (PP0009) Standard Draw Poker + + + pepp0010 + Player's Edge Plus (PP0010) Standard Draw Poker + + + pepp0014 + Player's Edge Plus (PP0014) Standard Draw Poker (International) + + + pepp0014a + Player's Edge Plus (PP0014) Standard Draw Poker + + + pepp0021 + Player's Edge Plus (PP0021) Standard Draw Poker + + + pepp0023 + Player's Edge Plus (PP0023) 10's or Better + + + pepp0038 + Player's Edge Plus (PP0038) Standard Draw Poker + + + pepp0040 + Player's Edge Plus (PP0040) Standard Draw Poker (set 1) + + + pepp0040a + Player's Edge Plus (PP0040) Standard Draw Poker (set 2) + + + pepp0040b + Player's Edge Plus (PP0040) Standard Draw Poker (International) + + + pepp0041 + Player's Edge Plus (PP0041) Standard Draw Poker + + + pepp0042 + Player's Edge Plus (PP0042) 10's or Better (set 1) + + + pepp0042a + Player's Edge Plus (PP0042) 10's or Better (set 2) + + + pepp0042b + Player's Edge Plus (PP0042) 10's or Better (set 3) + + + pepp0043 + Player's Edge Plus (PP0043) 10's or Better + + + pepp0043a + Player's Edge Plus (PP0043) 10's or Better (International, set 1) + + + pepp0043b + Player's Edge Plus (PP0043) 10's or Better (International, set 2) + + + pepp0045 + Player's Edge Plus (PP0045) 10's or Better (set 1) + + + pepp0045a + Player's Edge Plus (PP0045) 10's or Better (set 2, Gambler Downtown Reno) + + + pepp0045b + Player's Edge Plus (PP0045) 10's or Better (set 3, Par-A-Dice Riverboat Casino) + + + pepp0045c + Player's Edge Plus (PP0045) 10's or Better (set 4, Annie Oakley's Central City) + + + pepp0045d + Player's Edge Plus (PP0045) 10's or Better (set 5, Las Vegas Rio) + + + pepp0045e + Player's Edge Plus (PP0045) 10's or Better (set 6, Circus Circus) + + + pepp0045f + Player's Edge Plus (PP0045) 10's or Better (set 7, Old Reno Casino) + + + pepp0045g + Player's Edge Plus (PP0045) 10's or Better (set 8, Harrah's) + + + pepp0046 + Player's Edge Plus (PP0046) 10's or Better (set 1) + + + pepp0046a + Player's Edge Plus (PP0046) 10's or Better (International, set 1) + + + pepp0046b + Player's Edge Plus (PP0046) 10's or Better (International, set 2) + + + pepp0046c + Player's Edge Plus (PP0046) 10's or Better (set 2) + + + pepp0048 + Player's Edge Plus (PP0048) Joker Poker (set 1) + + + pepp0048a + Player's Edge Plus (PP0048) Joker Poker (set 2) + + + pepp0048b + Player's Edge Plus (PP0048) Joker Poker (set 3) + + + pepp0048c + Player's Edge Plus (PP0048) Joker Poker (set 4) + + + pepp0050 + Player's Edge Plus (PP0050) Joker Poker (set 1) + + + pepp0050a + Player's Edge Plus (PP0050) Joker Poker (set 2) + + + pepp0050b + Player's Edge Plus (PP0050) Joker Poker (set 3) + + + pepp0050c + Player's Edge Plus (PP0050) Joker Poker (set 4) + + + pepp0050d + Player's Edge Plus (PP0050) Joker Poker (set 5, El Cortez) + + + pepp0051 + Player's Edge Plus (PP0051) Joker Poker + + + pepp0052 + Player's Edge Plus (PP0052) Joker Poker (Aces or Better) + + + pepp0053 + Player's Edge Plus (PP0053) Joker Poker (Aces or Better) + + + pepp0054 + Player's Edge Plus (PP0054) Deuces Wild Poker (El Cortez) + + + pepp0055 + Player's Edge Plus (PP0055) Deuces Wild Poker (set 1) + + + pepp0055a + Player's Edge Plus (PP0055) Deuces Wild Poker (set 2, Skyline Casino) + + + pepp0055b + Player's Edge Plus (PP0055) Deuces Wild Poker (set 3, Casino Rouge) + + + pepp0055c + Player's Edge Plus (PP0055) Deuces Wild Poker (set 4) + + + pepp0055d + Player's Edge Plus (PP0055) Deuces Wild Poker (set 5) + + + pepp0057 + Player's Edge Plus (PP0057) Deuces Wild Poker (set 1) + + + pepp0057a + Player's Edge Plus (PP0057) Deuces Wild Poker (set 2) + + + pepp0057b + Player's Edge Plus (PP0057) Deuces Wild Poker (set 3, El Cortez) + + + pepp0057c + Player's Edge Plus (PP0057) Deuces Wild Poker (set 4) + + + pepp0057d + Player's Edge Plus (PP0057) Deuces Wild Poker (set 5) + + + pepp0059 + Player's Edge Plus (PP0059) Two Pair or Better (set 1) + + + pepp0059a + Player's Edge Plus (PP0059) Two Pair or Better (set 2) + + + pepp0060 + Player's Edge Plus (PP0060) Standard Draw Poker (set 1) + + + pepp0060a + Player's Edge Plus (PP0060) Standard Draw Poker (set 2) + + + pepp0060b + Player's Edge Plus (PP0060) Standard Draw Poker (set 3) + + + pepp0060c + Player's Edge Plus (PP0060) Standard Draw Poker (set 4) + + + pepp0063 + Player's Edge Plus (PP0063) 10's or Better + + + pepp0064 + Player's Edge Plus (PP0064) Joker Poker + + + pepp0065 + Player's Edge Plus (PP0065) Joker Poker (Aces or Better) + + + pepp0078 + Player's Edge Plus (PP0078) Standard Draw Poker + + + pepp0079 + Player's Edge Plus (PP0079) Standard Draw Poker + + + pepp0083 + Player's Edge Plus (PP0083) 10's or Better (set 1) + + + pepp0083a + Player's Edge Plus (PP0083) 10's or Better (set 2) + + + pepp0085 + Player's Edge Plus (PP0085) Joker Poker (Two Pair or Better) + + + pepp0089 + Player's Edge Plus (PP0089) Standard Draw Poker + + + pepp0094 + Player's Edge Plus (PP0094) Standard Draw Poker (set 1) + + + pepp0094a + Player's Edge Plus (PP0094) Standard Draw Poker (set 2) + + + pepp0102 + Player's Edge Plus (PP0102) Standard Draw Poker + + + pepp0103 + Player's Edge Plus (PP0103) Deuces Wild Poker (set 1) + + + pepp0103a + Player's Edge Plus (PP0103) Deuces Wild Poker (set 2) + + + pepp0103b + Player's Edge Plus (PP0103) Deuces Wild Poker (set 3) + + + pepp0103c + Player's Edge Plus (PP0103) Deuces Wild Poker (set 4) + + + pepp0104 + Player's Edge Plus (PP0104) Standard Draw Poker (set 1) + + + pepp0104a + Player's Edge Plus (PP0104) Standard Draw Poker (set 2, Fitzgeralds) + + + pepp0116 + Player's Edge Plus (PP0116) Standard Draw Poker + + + pepp0116a + Player's Edge Plus (PP0116) Standard Draw Poker (Mirage) + + + pepp0117 + Player's Edge Plus (PP0117) Standard Draw Poker + + + pepp0118 + Player's Edge Plus (PP0118) Standard Draw Poker + + + pepp0120 + Player's Edge Plus (PP0120) Wild Sevens Poker + + + pepp0122 + Player's Edge Plus (PP0122) Deuces Wild Poker + + + pepp0123 + Player's Edge Plus (PP0123) Deuces Wild Poker + + + pepp0125 + Player's Edge Plus (PP0125) Deuces Wild Poker (set 1) + + + pepp0125a + Player's Edge Plus (PP0125) Deuces Wild Poker (set 2) + + + pepp0126 + Player's Edge Plus (PP0126) Deuces Wild Poker (set 1) + + + pepp0126a + Player's Edge Plus (PP0126) Deuces Wild Poker (set 2) + + + pepp0126b + Player's Edge Plus (PP0126) Deuces Wild Poker (set 3) + + + pepp0127 + Player's Edge Plus (PP0127) Deuces Joker Wild Poker (set 1) + + + pepp0127a + Player's Edge Plus (PP0127) Deuces Joker Wild Poker (set 2) + + + pepp0127b + Player's Edge Plus (PP0127) Deuces Joker Wild Poker (International) + + + pepp0129 + Player's Edge Plus (PP0129) Joker Poker (Two Pair or Better) + + + pepp0130 + Player's Edge Plus (PP0130) Aces and Faces Bonus Poker (Grand Casino) + + + pepp0132 + Player's Edge Plus (PP0132) Standard Draw Poker + + + pepp0143 + Player's Edge Plus (PP0143) Deuces Joker Wild Poker + + + pepp0150 + Player's Edge Plus (PP0150) Standard Draw Poker + + + pepp0158 + Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 1) + + + pepp0158a + Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 2, Skyline Casino) + + + pepp0158b + Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 3) + + + pepp0158c + Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 4) + + + pepp0158d + Player's Edge Plus (PP0158) 4 of a Kind Bonus Poker (set 5) + + + pepp0159 + Player's Edge Plus (PP0159) Standard Draw Poker (International) + + + pepp0171 + Player's Edge Plus (PP0171) Joker Poker + + + pepp0171a + Player's Edge Plus (PP0171) Joker Poker (International) + + + pepp0178 + Player's Edge Plus (PP0178) 4 of a Kind Bonus Poker (Operator selectable special 4 of a Kind) + + + pepp0181 + Player's Edge Plus (PP0181) Standard Draw Poker + + + pepp0188 + Player's Edge Plus (PP0188) Standard Draw Poker (set 1) + + + pepp0188a + Player's Edge Plus (PP0188) Standard Draw Poker (set 2) + + + pepp0188b + Player's Edge Plus (PP0188) Standard Draw Poker (set 3) + + + pepp0189 + Player's Edge Plus (PP0189) Standard Draw Poker + + + pepp0190 + Player's Edge Plus (PP0190) Deuces Wild Poker (set 1) + + + pepp0190a + Player's Edge Plus (PP0190) Deuces Wild Poker (set 2) + + + pepp0190b + Player's Edge Plus (PP0190) Deuces Wild Poker (set 3) + + + pepp0190c + Player's Edge Plus (PP0190) Deuces Wild Poker (International) + + + pepp0195 + Player's Edge Plus (PP0195) 4 of a Kind Bonus Poker + + + pepp0197 + Player's Edge Plus (PP0197) Standard Draw Poker (set 1) + + + pepp0197a + Player's Edge Plus (PP0197) Standard Draw Poker (set 2) + + + pepp0197b + Player's Edge Plus (PP0197) Standard Draw Poker (set 3) + + + pepp0197c + Player's Edge Plus (PP0197) Standard Draw Poker (set 4) + + + pepp0197d + Player's Edge Plus (PP0197) Standard Draw Poker (set 5) + + + pepp0197e + Player's Edge Plus (PP0197) Standard Draw Poker (Cruise) + + + pepp0197f + Player's Edge Plus (PP0197) Standard Draw Poker (International) + + + pepp0203 + Player's Edge Plus (PP0203) 4 of a Kind Bonus Poker (set 1) + + + pepp0203a + Player's Edge Plus (PP0203) 4 of a Kind Bonus Poker (set 2) + + + pepp0203b + Player's Edge Plus (PP0203) 4 of a Kind Bonus Poker (set 3) + + + pepp0203c + Player's Edge Plus (PP0203) 4 of a Kind Bonus Poker (set 4) + + + pepp0203d + Player's Edge Plus (PP0203) 4 of a Kind Bonus Poker (International) + + + pepp0203e + Player's Edge Plus (PP0203) 4 of a Kind Bonus Poker (set 5) + + + pepp0218 + Player's Edge Plus (PP0218) 4 of a Kind Bonus Poker + + + pepp0219 + Player's Edge Plus (PP0219) Standard Draw Poker + + + pepp0221 + Player's Edge Plus (PP0221) Standard Draw Poker (set 1) + + + pepp0221a + Player's Edge Plus (PP0221) Standard Draw Poker (set 2) + + + pepp0221b + Player's Edge Plus (PP0221) Standard Draw Poker (set 3) + + + pepp0223 + Player's Edge Plus (PP0223) Deuces Joker Wild Poker + + + pepp0224 + Player's Edge Plus (PP0224) Deuces Wild Poker (set 1) + + + pepp0224a + Player's Edge Plus (PP0224) Deuces Wild Poker (set 2) + + + pepp0230 + Player's Edge Plus (PP0230) Standard Draw Poker + + + pepp0231 + Player's Edge Plus (PP0231) Deuces Joker Wild Poker + + + pepp0232 + Player's Edge Plus (PP0232) Patriot Poker + + + pepp0242 + Player's Edge Plus (PP0242) Deuces Wild Poker + + + pepp0242a + Player's Edge Plus (PP0242) Deuces Wild Poker (International English/Spanish) + + + pepp0249 + Player's Edge Plus (PP0249) Deuces Wild Poker + + + pepp0250 + Player's Edge Plus (PP0250) Double Down Stud Poker (set 1) + + + pepp0250a + Player's Edge Plus (PP0250) Double Down Stud Poker (set 2) + + + pepp0265 + Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 1) + + + pepp0265a + Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 2) + + + pepp0265b + Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (set 3) + + + pepp0265c + Player's Edge Plus (PP0265) 4 of a Kind Bonus Poker (International) + + + pepp0274 + Player's Edge Plus (PP0274) Standard Draw Poker + + + pepp0288 + Player's Edge Plus (PP0288) Standard Draw Poker (Spanish) + + + pepp0290 + Player's Edge Plus (PP0290) Deuces Wild Poker (set 1) + + + pepp0290a + Player's Edge Plus (PP0290) Deuces Wild Poker (set 2) + + + pepp0291 + Player's Edge Plus (PP0291) Deuces Wild Poker (set 1) + + + pepp0291a + Player's Edge Plus (PP0291) Deuces Wild Poker (set 2) + + + pepp0294 + Player's Edge Plus (PP0294) Aces and Faces Bonus Joker Poker + + + pepp0295 + Player's Edge Plus (PP0295) Super Deuces Wild Poker + + + pepp0401 + Player's Edge Plus (PP0401) 4 of a Kind Bonus Poker + + + pepp0409 + Player's Edge Plus (PP0409) 4 of a Kind Bonus Poker + + + pepp0410 + Player's Edge Plus (PP0410) 4 of a Kind Bonus Poker (set 1) + + + pepp0410a + Player's Edge Plus (PP0410) 4 of a Kind Bonus Poker (set 2) + + + pepp0417 + Player's Edge Plus (PP0417) Deuces Wild Poker (set 1) + + + pepp0417a + Player's Edge Plus (PP0417) Deuces Wild Poker (set 2) + + + pepp0418 + Player's Edge Plus (PP0418) Deuces Wild Poker (set 1) + + + pepp0418a + Player's Edge Plus (PP0418) Deuces Wild Poker (set 2) + + + pepp0419 + Player's Edge Plus (PP0419) Standard Draw Poker (set 1) + + + pepp0419a + Player's Edge Plus (PP0419) Standard Draw Poker (Old Chicago Casino) + + + pepp0419b + Player's Edge Plus (PP0419) Standard Draw Poker (set 2) + + + pepp0420 + Player's Edge Plus (PP0420) Standard Draw Poker (set 1) + + + pepp0420a + Player's Edge Plus (PP0420) Standard Draw Poker (set 2) + + + pepp0423 + Player's Edge Plus (PP0423) Standard Draw Poker (set 1) + + + pepp0423a + Player's Edge Plus (PP0423) Standard Draw Poker (set 2) + + + pepp0423b + Player's Edge Plus (PP0423) Standard Draw Poker (set 3) + + + pepp0423c + Player's Edge Plus (PP0423) Standard Draw Poker (set 4) + + + pepp0425 + Player's Edge Plus (PP0425) Joker Poker + + + pepp0426 + Player's Edge Plus (PP0426) Joker Poker + + + pepp0428 + Player's Edge Plus (PP0428) Joker Poker + + + pepp0429 + Player's Edge Plus (PP0429) Joker Poker (Aces or Better, set 1) + + + pepp0429a + Player's Edge Plus (PP0429) Joker Poker (Aces or Better, set 2) + + + pepp0430 + Player's Edge Plus (PP0430) Deuces Joker Wild Poker (set 1) + + + pepp0430a + Player's Edge Plus (PP0430) Deuces Joker Wild Poker (set 2) + + + pepp0431 + Player's Edge Plus (PP0431) Deuces Joker Wild Poker (International) + + + pepp0434 + Player's Edge Plus (PP0434) Bonus Poker Deluxe (set 1) + + + pepp0434a + Player's Edge Plus (PP0434) Bonus Poker Deluxe (set 2) + + + pepp0445 + Player's Edge Plus (PP0445) Aces and Faces Bonus Joker Poker + + + pepp0447 + Player's Edge Plus (PP0447) Standard Draw Poker (set 1) + + + pepp0447a + Player's Edge Plus (PP0447) Standard Draw Poker (set 2) + + + pepp0447b + Player's Edge Plus (PP0447) Standard Draw Poker (set 3) + + + pepp0449 + Player's Edge Plus (PP0449) Standard Draw Poker + + + pepp0449a + Player's Edge Plus (PP0449) Standard Draw Poker (International English/Spanish) + + + pepp0450 + Player's Edge Plus (PP0450) Loose Deuce Deuces Wild! Poker + + + pepp0451 + Player's Edge Plus (PP0451) Bonus Poker Deluxe + + + pepp0452 + Player's Edge Plus (PP0452) Double Deuces Wild Poker (set 1) + + + pepp0452a + Player's Edge Plus (PP0452) Double Deuces Wild Poker (set 2) + + + pepp0453 + Player's Edge Plus (PP0453) Joker Poker + + + pepp0454 + Player's Edge Plus (PP0454) Bonus Poker Deluxe (set 1) + + + pepp0454a + Player's Edge Plus (PP0454) Bonus Poker Deluxe (set 2) + + + pepp0455 + Player's Edge Plus (PP0455) Joker Poker + + + pepp0458 + Player's Edge Plus (PP0458) Joker Poker (Aces or Better) + + + pepp0459 + Player's Edge Plus (PP0459) Joker Poker (set 1) + + + pepp0459a + Player's Edge Plus (PP0459) Joker Poker (set 2) + + + pepp0467 + Player's Edge Plus (PP0467) 4 of a Kind Bonus Poker + + + pepp0469 + Player's Edge Plus (PP0469) Deuces Wild Poker + + + pepp0472 + Player's Edge Plus (PP0472) Deuces Wild Poker + + + pepp0488 + Player's Edge Plus (PP0488) Standard Draw Poker (Arizona Charlie's) + + + pepp0508 + Player's Edge Plus (PP0508) Loose Deuce Deuces Wild! Poker (set 1) + + + pepp0508a + Player's Edge Plus (PP0508) Loose Deuce Deuces Wild! Poker (set 2) + + + pepp0509 + Player's Edge Plus (PP0509) Standard Draw Poker + + + pepp0510 + Player's Edge Plus (PP0510) Standard Draw Poker + + + pepp0514 + Player's Edge Plus (PP0514) Double Bonus Poker (set 1) + + + pepp0514a + Player's Edge Plus (PP0514) Double Bonus Poker (set 2) + + + pepp0514b + Player's Edge Plus (PP0514) Double Bonus Poker (set 3) + + + pepp0515 + Player's Edge Plus (PP0515) Double Bonus Poker (set 1) + + + pepp0515a + Player's Edge Plus (PP0515) Double Bonus Poker (set 2) + + + pepp0515b + Player's Edge Plus (PP0515) Double Bonus Poker (set 3) + + + pepp0515c + Player's Edge Plus (PP0515) Double Bonus Poker (set 4) + + + pepp0516 + Player's Edge Plus (PP0516) Double Bonus Poker (set 1) + + + pepp0516a + Player's Edge Plus (PP0516) Double Bonus Poker (set 2) + + + pepp0516b + Player's Edge Plus (PP0516) Double Bonus Poker (set 3) + + + pepp0516c + Player's Edge Plus (PP0516) Double Bonus Poker (International) + + + pepp0526 + Player's Edge Plus (PP0526) Deuces Wild Poker + + + pepp0531 + Player's Edge Plus (PP0531) Joker Poker + + + pepp0536 + Player's Edge Plus (PP0536) Joker Poker + + + pepp0538 + Player's Edge Plus (PP0538) Double Bonus Poker + + + pepp0540 + Player's Edge Plus (PP0540) Double Bonus Poker (set 1) + + + pepp0540a + Player's Edge Plus (PP0540) Double Bonus Poker (set 2) + + + pepp0540b + Player's Edge Plus (PP0540) Double Bonus Poker (set 3) + + + pepp0542 + Player's Edge Plus (PP0542) One Eyed Jacks Wild Poker (CG2243) + + + pepp0542a + Player's Edge Plus (PP0542) One Eyed Jacks Wild Poker (CG2020) + + + pepp0542b + Player's Edge Plus (PP0542) One Eyed Jacks Wild Poker (CG1199) + + + pepp0550 + Player's Edge Plus (PP0550) Joker Poker (Two Pair or Better, set 1) + + + pepp0550a + Player's Edge Plus (PP0550) Joker Poker (Two Pair or Better, set 2) + + + pepp0550b + Player's Edge Plus (PP0550) Joker Poker (Two Pair or Better, set 3) + + + pepp0555 + Player's Edge Plus (PP0555) Standard Draw Poker + + + pepp0559 + Player's Edge Plus (PP0559) Joker Poker (Aces or Better) + + + pepp0562 + Player's Edge Plus (PP0562) 10's or Better + + + pepp0568 + Player's Edge Plus (PP0568) Joker Poker + + + pepp0585 + Player's Edge Plus (PP0585) Standard Draw Poker + + + pepp0587 + Player's Edge Plus (PP0587) Standard Draw Poker + + + pepp0596 + Player's Edge Plus (PP0596) Spades Sequential Royal Double Bonus Poker + + + pepp0598 + Player's Edge Plus (PP0598) Hearts Sequential Royal Double Bonus Poker + + + pepp0711 + Player's Edge Plus (PP0711) Bonus Poker Deluxe + + + pepp0713 + Player's Edge Plus (PP0713) Bonus Poker Deluxe + + + pepp0725 + Player's Edge Plus (PP0725) Double Bonus Poker (set 1) + + + pepp0725a + Player's Edge Plus (PP0725) Double Bonus Poker (set 2) + + + pepp0726 + Player's Edge Plus (PP0726) Double Bonus Poker + + + pepp0728 + Player's Edge Plus (PP0728) Double Bonus Poker + + + pepp0729 + Player's Edge Plus (PP0729) Double Bonus Poker + + + pepp0733 + Player's Edge Plus (PP0733) Double Aces and Faces Bonus Poker (Grand Casino) + + + pepp0750 + Player's Edge Plus (PP0750) Standard Draw Poker (set 1) + + + pepp0750a + Player's Edge Plus (PP0750) Standard Draw Poker (set 2) + + + pepp0757 + Player's Edge Plus (PP0757) Double Down Stud Joker Poker + + + pepp0760 + Player's Edge Plus (PP0760) Double Down Stud Poker + + + pepp0763 + Player's Edge Plus (PP0763) 4 of a Kind Bonus Poker + + + pepp0764 + Player's Edge Plus (PP0764) 4 of a Kind Bonus Poker + + + pepp0775 + Player's Edge Plus (PP0775) Royal Deuces Poker?? + + + pepp0777 + Player's Edge Plus (PP0777) Royal Deuces Poker?? + + + pepp0797 + Player's Edge Plus (PP0797) One Eyed Jacks Wild Poker + + + pepp0812 + Player's Edge Plus (PP0812) Deuces Joker Wild Poker + + + pepp0816 + Player's Edge Plus (PP0816) Treasure Chest Poker + + + pepper2 + Pepper II (version 8) + + + pepper27 + Pepper II (version 7) + + + peps0014 + Player's Edge Plus (PS0014) Super Joker Slots + + + peps0015 + Player's Edge Plus (PS0015) Super Joker Slots + + + peps0021 + Player's Edge Plus (PS0021) Red White & Blue Slots + + + peps0022 + Player's Edge Plus (PS0022) Red White & Blue Slots + + + peps0040 + Player's Edge Plus (PS0040) Jackpot Jungle Slots + + + peps0041 + Player's Edge Plus (PS0041) Jackpot Jungle Slots + + + peps0042 + Player's Edge Plus (PS0042) Double Diamond Slots + + + peps0043 + Player's Edge Plus (PS0043) Double Diamond Slots + + + peps0044 + Player's Edge Plus (PS0044) Red White & Blue Slots + + + peps0045 + Player's Edge Plus (PS0045) Red White & Blue Slots + + + peps0047 + Player's Edge Plus (PS0047) Wild Cherry Slots + + + peps0048 + Player's Edge Plus (PS0048) Double Jackpot Slots + + + peps0070 + Player's Edge Plus (PS0070) Hurricane Slots + + + peps0086 + Player's Edge Plus (PS0086) Earth Quake Slots + + + peps0090 + Player's Edge Plus (PS0090) Gold, Silver & Bronze Slots + + + peps0092 + Player's Edge Plus (PS0092) Wild Cherry Slots + + + peps0205 + Player's Edge Plus (PS0205) Red White & Blue Slots + + + peps0206 + Player's Edge Plus (PS0206) Red White & Blue Slots + + + peps0207 + Player's Edge Plus (PS0207) Red White & Blue Slots + + + peps0239 + Player's Edge Plus (PS0239) Jackpot Jewels Slots + + + peps0267 + Player's Edge Plus (PS0267) Spin Til You Win Slots + + + peps0271 + Player's Edge Plus (PS0271) Spin Til You Win Slots + + + peps0275 + Player's Edge Plus (PS0275) 4th of July Slots (set 1) + + + peps0275a + Player's Edge Plus (PS0275) 4th of July Slots (set 2) + + + peps0278 + Player's Edge Plus (PS0278) 4th of July Slots + + + peps0280 + Player's Edge Plus (PS0280) 4th of July Slots (set 1) + + + peps0280a + Player's Edge Plus (PS0280) 4th of July Slots (set 2) + + + peps0291 + Player's Edge Plus (PS0291) Haywire Slots + + + peps0296 + Player's Edge Plus (PS0296) Haywire Slots + + + peps0298 + Player's Edge Plus (PS0298) Double Diamond Slots + + + peps0308 + Player's Edge Plus (PS0308) Double Jackpot Slots + + + peps0358 + Player's Edge Plus (PS0358) Wild Star Red White & Blue Slots + + + peps0364 + Player's Edge Plus (PS0364) Wild Star Red White & Blue Slots + + + peps0366 + Player's Edge Plus (PS0366) Double Diamond Deluxe Slots + + + peps0372 + Player's Edge Plus (PS0372) Double Diamond Deluxe Slots + + + peps0373 + Player's Edge Plus (PS0373) Double Diamond Deluxe Slots + + + peps0425 + Player's Edge Plus (PS0425) Sizzling Sevens Slots + + + peps0426 + Player's Edge Plus (PS0426) Sizzling Sevens Slots + + + peps0470 + Player's Edge Plus (PS0470) Triple Diamond Slots + + + peps0581 + Player's Edge Plus (PS0581) Red White & Blue Slots + + + peps0615 + Player's Edge Plus (PS0615) Chaos Slots + + + peps0623 + Player's Edge Plus (PS0623) Black Cherry Slots + + + peps0628 + Player's Edge Plus (PS0628) Double Black Jack Slots + + + peps0629 + Player's Edge Plus (PS0629) Double Hot Peppers Slots + + + peps0631 + Player's Edge Plus (PS0631) Wild Star Red White & Blue Slots + + + peps0708 + Player's Edge Plus (PS0708) Double Cherry Bar Slots + + + peps0716 + Player's Edge Plus (PS0716) River Gambler Slots + + + peps0722 + Player's Edge Plus (PS0722) River Gambler Slots + + + pepsiman + PEPSI Man + + + percuss + The Percussor + + + perestro + Perestroika Girls + + + perestrof + Perestroika Girls (Fuuki license) + + + perfect + Perfect Game (Russian) + + + perfrman + Performan (Japan) + + + perfrmanu + Performan (US) + + + perfrmau + Performan (US) + + + perlacrb + La Perla del Caribe (V1.0, Catalonia) + + + pesadelo + Pesadelo (bootleg of Konami Knightmare) + + + peset001 + Player's Edge Plus (SET001) Set Chip + + + peset004 + Player's Edge Plus (SET004) Set Chip + + + peset012 + Player's Edge Plus (SET012) Set Chip + + + peset022 + Player's Edge Plus (SET022) Set Chip + + + peset033 + Player's Edge Plus (SET033) Set Chip + + + peset038 + Player's Edge Plus (SET038) Set Chip + + + peset100 + Player's Edge Plus (SET100) Set Chip + + + peset117 + Player's Edge Plus (SET117) Set Chip + + + pesta + Pro Evolution Soccer The Arcade (ver EAA) + + + pestplce + Pest Place + + + petaco + Petaco + + + petaco2 + Petaco 2 + + + petacon + Petaco (new hardware, set 1) + + + petacona + Petaco (new hardware, set 2) + + + peterpak + Peter Pack Rat + + + petshop + Pet Shop (0100731V, NSW/ACT) + + + petshopa + Pet Shop (0100679V, NSW/ACT) + + + pettanp + Pettan Pyuu (Japan) + + + pex0002p + Player's Edge Plus (X000002P+XP000038) Standard Draw Poker + + + pex0002pa + Player's Edge Plus (X000002P+XP000006) Standard Draw Poker + + + pex0006k + Player's Edge Plus (X000006K+XK000001) Keno + + + pex0006p + Player's Edge Plus (X000006P+XP000038) Standard Draw Poker + + + pex0013k + Player's Edge Plus (X000013K+XK000011) Keno + + + pex0013ka + Player's Edge Plus (X000013K+XK000012) Keno + + + pex0014p + Player's Edge Plus (X000014P+XP000055) Standard Draw Poker + + + pex0040p + Player's Edge Plus (X000040P+XP000038) Standard Draw Poker + + + pex0042p + Player's Edge Plus (X000042P+XP000038) 10's or Better + + + pex0045p + Player's Edge Plus (X000045P+XP000038) 10's or Better + + + pex0046p + Player's Edge Plus (X000046P+XP000038) 10's or Better + + + pex0053p + Player's Edge Plus (X000053P+XP000038) Joker Poker (Aces or Better) + + + pex0054p + Player's Edge Plus (X000054P+XP000038) Deuces Wild Poker + + + pex0055p + Player's Edge Plus (X000055P+XP000019) Deuces Wild Poker + + + pex0055pa + Player's Edge Plus (X000055P+XP000022) Deuces Wild Poker + + + pex0055pb + Player's Edge Plus (X000055P+XP000023) Deuces Wild Poker + + + pex0055pc + Player's Edge Plus (X000055P+XP000028) Deuces Wild Poker + + + pex0055pd + Player's Edge Plus (X000055P+XP000035) Deuces Wild Poker + + + pex0055pe + Player's Edge Plus (X000055P+XP000038) Deuces Wild Poker + + + pex0055pf + Player's Edge Plus (X000055P+XP000040) Deuces Wild Poker + + + pex0055pg + Player's Edge Plus (X000055P+XP000048) Deuces Wild Poker + + + pex0055ph + Player's Edge Plus (X000055P+XP000055) Deuces Wild Poker + + + pex0055pi + Player's Edge Plus (X000055P+XP000063) Deuces Wild Poker + + + pex0055pj + Player's Edge Plus (X000055P+XP000075) Deuces Wild Poker + + + pex0055pk + Player's Edge Plus (X000055P+XP000079) Deuces Wild Poker + + + pex0055pl + Player's Edge Plus (X000055P+XP000094) Deuces Wild Poker + + + pex0055pm + Player's Edge Plus (X000055P+XP000095) Deuces Wild Poker + + + pex0055pn + Player's Edge Plus (X000055P+XP000098) Deuces Wild Poker + + + pex0055po + Player's Edge Plus (X000055P+XP000102) Deuces Wild Poker + + + pex0055pp + Player's Edge Plus (X000055P+XP000104) Deuces Wild Poker + + + pex0055pq + Player's Edge Plus (X000055P+XP000109) Deuces Wild Poker + + + pex0055pr + Player's Edge Plus (X000055P+XP000126) Deuces Wild Poker + + + pex0055ps + Player's Edge Plus (X000055P+XP000132) Deuces Wild Poker + + + pex0055pt + Player's Edge Plus (X000055P+XP000137) Deuces Wild Poker + + + pex0057p + Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker + + + pex0057pa + Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (The Orleans) + + + pex0057pb + Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (The Fun Ships) + + + pex0057pc + Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (Horseshoe) + + + pex0057pd + Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (The Wild Wild West Casino) + + + pex0057pe + Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (Sunset Station Hotel-Casino) + + + pex0057pf + Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (Stratosphere Players Club) + + + pex0057pg + Player's Edge Plus (X000057P+XP000038) Deuces Wild Poker (MGM Grand Casino) + + + pex0060p + Player's Edge Plus (X000060P+XP000038) Standard Draw Poker + + + pex0124p + Player's Edge Plus (X000124P+XP000038) Deuces Wild Poker + + + pex0126p + Player's Edge Plus (X000126P+XP000038) Deuces Wild Poker + + + pex0127p + Player's Edge Plus (X000127P+XP000038) Deuces Joker Wild Poker + + + pex0150p + Player's Edge Plus (X000150P+XP000038) Standard Draw Poker + + + pex0158p + Player's Edge Plus (X000158P+XP000038) 4 of a Kind Bonus Poker + + + pex0171p + Player's Edge Plus (X000171P+XP000038) Joker Poker + + + pex0188p + Player's Edge Plus (X000188P+XP000038) Standard Draw Poker + + + pex0190p + Player's Edge Plus (X000190P+XP000038) Deuces Wild Poker + + + pex0197p + Player's Edge Plus (X000197P+XP000038) Standard Draw Poker + + + pex0203p + Player's Edge Plus (X000203P+XP000038) 4 of a Kind Bonus Poker + + + pex0224p + Player's Edge Plus (X000224P+XP000038) Deuces Wild Poker + + + pex0225p + Player's Edge Plus (X000225P+XP000079) Deuces Joker Wild Poker + + + pex0242p + Player's Edge Plus (X000242P+XP000038) Deuces Wild Poker + + + pex0265p + Player's Edge Plus (X000265P+XP000038) 4 of a Kind Bonus Poker + + + pex0291p + Player's Edge Plus (X000291P+XP000038) Deuces Wild Poker + + + pex0403p + Player's Edge Plus (X000403P+XP000013) 4 of a Kind Bonus Poker + + + pex0417p + Player's Edge Plus (X000417P+XP000038) Deuces Wild Poker + + + pex0426p + Player's Edge Plus (X000426P+XP000038) Joker Poker + + + pex0430p + Player's Edge Plus (X000430P+XP000079) Deuces Joker Wild Poker + + + pex0434p + Player's Edge Plus (X000434P+XP000038) Bonus Poker Deluxe + + + pex0444p + Player's Edge Plus (X000444P+XP000038) Standard Draw Poker + + + pex0447p + Player's Edge Plus (X000447P+XP000038) Standard Draw Poker + + + pex0449p + Player's Edge Plus (X000449P+XP000038) Standard Draw Poker + + + pex0451p + Player's Edge Plus (X000451P+XP000038) Bonus Poker Deluxe + + + pex0452p + Player's Edge Plus (X000452P+XP000038) Double Deuces Wild Poker + + + pex0454p + Player's Edge Plus (X000454P+XP000038) Bonus Poker Deluxe + + + pex0455p + Player's Edge Plus (X000455P+XP000038) Joker Poker + + + pex0458p + Player's Edge Plus (X000458P+XP000038) Joker Poker (Aces or Better) + + + pex0459p + Player's Edge Plus (X000459P+XP000038) Joker Poker + + + pex0459pa + Player's Edge Plus (X000459P+XP000155) Joker Poker + + + pex0489p + Player's Edge Plus (X000489P+XP000038) Double Down Stud Deuces Wild Poker + + + pex0508p + Player's Edge Plus (X000508P+XP000038) Loose Deuce Deuces Wild! Poker + + + pex0514p + Player's Edge Plus (X000514P+XP000038) Double Bonus Poker + + + pex0515p + Player's Edge Plus (X000515P+XP000038) Double Bonus Poker + + + pex0516p + Player's Edge Plus (X000516P+XP000038) Double Bonus Poker + + + pex0536p + Player's Edge Plus (X000536P+XP000038) Joker Poker + + + pex0537p + Player's Edge Plus (X000537P+XP000038) Standard Draw Poker + + + pex0550p + Player's Edge Plus (X000550P+XP000119) Joker Poker (Two Pair or Better) + + + pex0556p + Player's Edge Plus (X000556P+XP000038) Deuces Joker Wild Poker + + + pex0557p + Player's Edge Plus (X000557P+XP000119) Standard Draw Poker + + + pex0568p + Player's Edge Plus (X000568P+XP000038) Joker Poker + + + pex0578p + Player's Edge Plus (X000578P+XP000038) Standard Draw Poker + + + pex0581p + Player's Edge Plus (X000581P+XP000038) 4 of a Kind Bonus Poker + + + pex0588p + Player's Edge Plus (X000588P+XP000038) Joker Poker + + + pex0725p + Player's Edge Plus (X000725P+XP000038) Double Bonus Poker + + + pex0726p + Player's Edge Plus (X000726P+XP000038) Double Bonus Poker + + + pex0727p + Player's Edge Plus (X000727P+XP000038) Double Bonus Poker + + + pex0763p + Player's Edge Plus (X000763P+XP000038) 4 of a Kind Bonus Poker + + + pex0764p + Player's Edge Plus (X000764P+XP000038) 4 of a Kind Bonus Poker + + + pex0827s + Player's Edge Plus (X000827S+XS000002) Red, White & Blue Slots + + + pex0838s + Player's Edge Plus (X000838S+XS000002) Five Times Pay Slots + + + pex0841s + Player's Edge Plus (X000841S+XS000002) Five Times Pay Slots + + + pex0846s + Player's Edge Plus (X000846S+XS000006) Wild Star Red White & Blue Slots + + + pex0998s + Player's Edge Plus (X000998S+XS000006) Triple Triple Diamond Slots + + + pex1087s + Player's Edge Plus (X001087S+XS000006) Double Double Diamond Slots + + + pex2001p + Player's Edge Plus (X002001P+XP000038) Double Double Bonus Poker + + + pex2002p + Player's Edge Plus (X002002P+XP000038) Double Double Bonus Poker + + + pex2004p + Player's Edge Plus (X002004P+XP000038) Double Double Bonus Poker + + + pex2010p + Player's Edge Plus (X002010P+XP000038) Nevada Bonus Poker + + + pex2016p + Player's Edge Plus (X002016P+XP000038) Full House Bonus Poker + + + pex2017p + Player's Edge Plus (X002017P+XP000038) Full House Bonus Poker + + + pex2018p + Player's Edge Plus (X002018P+XP000038) Full House Bonus Poker + + + pex2021p + Player's Edge Plus (X002021P+XP000038) Lucky Deal Poker + + + pex2024p + Player's Edge Plus (X002024P+XP000119) Double Bonus Poker + + + pex2025p + Player's Edge Plus (X002025P+XP000019) Deuces Wild Bonus Poker + + + pex2026p + Player's Edge Plus (X002026P+XP000019) Deuces Wild Bonus Poker + + + pex2027p + Player's Edge Plus (X002027P+XP000019) Deuces Wild Bonus Poker + + + pex2028p + Player's Edge Plus (X002028P+XP000019) Deuces Wild Bonus Poker + + + pex2029p + Player's Edge Plus (X002029P+XP000019) Deuces Wild Bonus Poker + + + pex2031p + Player's Edge Plus (X002031P+XP000038) Lucky Deal Poker + + + pex2033p + Player's Edge Plus (X002033P+XP000038) White Hot Aces Poker + + + pex2034p + Player's Edge Plus (X002034P+XP000038) White Hot Aces Poker + + + pex2035p + Player's Edge Plus (X002035P+XP000038) White Hot Aces Poker + + + pex2036p + Player's Edge Plus (X002036P+XP000038) White Hot Aces Poker + + + pex2037p + Player's Edge Plus (X002037P+XP000038) Nevada Bonus Poker + + + pex2038p + Player's Edge Plus (X002038P+XP000038) Nevada Bonus Poker + + + pex2039p + Player's Edge Plus (X002039P+XP000038) Nevada Bonus Poker + + + pex2040p + Player's Edge Plus (X002040P+XP000038) Nevada Bonus Poker + + + pex2042p + Player's Edge Plus (X002042P+XP000038) Triple Bonus Poker + + + pex2043p + Player's Edge Plus (X002043P+XP000038) Triple Bonus Poker + + + pex2044p + Player's Edge Plus (X002044P+XP000038) Triple Bonus Poker + + + pex2045p + Player's Edge Plus (X002045P+XP000038) Triple Bonus Poker + + + pex2046p + Player's Edge Plus (X002046P+XP000038) Ace$ Bonus Poker + + + pex2066p + Player's Edge Plus (X002066P+XP000038) Double Double Bonus Poker + + + pex2067p + Player's Edge Plus (X002067P+XP000038) Double Double Bonus Poker + + + pex2068p + Player's Edge Plus (X002068P+XP000038) Double Double Bonus Poker + + + pex2069p + Player's Edge Plus (X002069P+XP000038) Double Double Bonus Poker + + + pex2070p + Player's Edge Plus (X002070P+XP000038) Double Double Bonus Poker + + + pex2111p + Player's Edge Plus (X002111P+XP000038) 4 of a Kind Bonus Poker (with Seq Royal Flush) + + + pex2121p + Player's Edge Plus (X002121P+XP000038) Standard Draw Poker + + + pex2121pa + Player's Edge Plus (X002121P+XP000037) Standard Draw Poker + + + pex2127p + Player's Edge Plus (X002127P+XP000043) Double Bonus Poker featuring 'Your Property' Royals + + + pex2133p + Player's Edge Plus (X002133P+XP000043) Faces 'n' Deuces Double Bonus Poker + + + pex2134p + Player's Edge Plus (X002134P+XP000043) Faces 'n' Deuces Double Bonus Poker + + + pex2143p + Player's Edge Plus (X002143P+XP000043) Joker's Revenge Poker + + + pex2149p + Player's Edge Plus (X002149P+XP000038) Triple Bonus Poker + + + pex2150p + Player's Edge Plus (X002150P+XP000038) Triple Bonus Poker + + + pex2152p + Player's Edge Plus (X002152P+XP000043) Blackjack Poker + + + pex2172p + Player's Edge Plus (X002172P+XP000038) Ace$ Bonus Poker + + + pex2172pa + Player's Edge Plus (X002172P+XP000038) Ace$ Bonus Poker (The Fun Ships) + + + pex2173p + Player's Edge Plus (X002173P+XP000038) Ace$ Bonus Poker + + + pex2178p + Player's Edge Plus (X002178P+XP000119) Double Bonus Poker + + + pex2179p + Player's Edge Plus (X002179P+XP000119) Double Bonus Poker + + + pex2180p + Player's Edge Plus (X002180P+XP000119) Double Bonus Poker + + + pex2211p + Player's Edge Plus (X002211P+XP000043) Double Double Bonus with 3 Jacks Poker + + + pex2236p + Player's Edge Plus (X002236P+XP000043) Double Double Bonus with 3 Aces Poker + + + pex2240p + Player's Edge Plus (X002240P+XP000038) Joker Poker (Two Pair or Better) + + + pex2241p + Player's Edge Plus (X002241P+XP000079) 4 of a Kind Bonus Poker + + + pex2244p + Player's Edge Plus (X002244P+XP000079) Double Bonus Poker + + + pex2245p + Player's Edge Plus (X002245P+XP000055) Standard Draw Poker + + + pex2245pa + Player's Edge Plus (X002245P+XP000079) Standard Draw Poker + + + pex2247p + Player's Edge Plus (X002247P+XP000038) Standard Draw Poker + + + pex2250p + Player's Edge Plus (X002250P+XP000050) Shockwave Poker + + + pex2251p + Player's Edge Plus (X002251P+XP000050) Shockwave Poker + + + pex2252p + Player's Edge Plus (X002252P+XP000050) Shockwave Poker + + + pex2270p + Player's Edge Plus (X002270P+XP000053) Jackpot Poker + + + pex2272p + Player's Edge Plus (X002272P+XP000055) Black Jack Bonus Poker + + + pex2275p + Player's Edge Plus (X002275P+XP000055) Black Jack Bonus Poker + + + pex2276p + Player's Edge Plus (X002276P+XP000055) Black Jack Bonus Poker + + + pex2278p + Player's Edge Plus (X002278P+XP000038) Joker Poker (Two Pair or Better) + + + pex2279p + Player's Edge Plus (X002279P+XP000057) Ace$ Bonus + + + pex2283p + Player's Edge Plus (X002283P+XP000057) Barbaric Decues Wild Poker + + + pex2284p + Player's Edge Plus (X002284P+XP000057) Barbaric Decues Wild Poker + + + pex2287p + Player's Edge Plus (X002287P+XP000057) No Faces Pay the Aces Poker + + + pex2297p + Player's Edge Plus (X002297P+XP000053) Jackpot Poker + + + pex2297pa + Player's Edge Plus (X002297P+XP000112) Jackpot Poker + + + pex2302p + Player's Edge Plus (X002302P+XP000038) Bonus Poker Deluxe + + + pex2303p + Player's Edge Plus (X002303P+XP000038) White Hot Aces Poker + + + pex2306p + Player's Edge Plus (X002306P+XP000038) Triple Double Bonus Poker + + + pex2307p + Player's Edge Plus (X002307P+XP000038) Triple Double Bonus Poker + + + pex2308p + Player's Edge Plus (X002308P+XP000038) Triple Double Bonus Poker + + + pex2309p + Player's Edge Plus (X002309P+XP000038) Triple Double Bonus Poker + + + pex2310p + Player's Edge Plus (X002310P+XP000038) Triple Double Bonus Poker + + + pex2312p + Player's Edge Plus (X002312P+XP000038) Triple Bonus Poker Plus + + + pex2314p + Player's Edge Plus (X002314P+XP000038) Triple Bonus Poker Plus + + + pex2315p + Player's Edge Plus (X002315P+XP000038) Triple Bonus Poker Plus + + + pex2374p + Player's Edge Plus (X002374P+XP000038) Super Aces Poker + + + pex2376p + Player's Edge Plus (X002376P+XP000038) Super Double Bonus Poker + + + pex2377p + Player's Edge Plus (X002377P+XP000038) Super Double Bonus Poker + + + pex2386p + Player's Edge Plus (X002386P+XP000038) 4 of a Kind Bonus Poker + + + pex2412p + Player's Edge Plus (X002412P+XP000096) Standard Draw with 5 decks (Two Pair or Better) + + + pex2419p + Player's Edge Plus (X002419P+XP000064) Deuces Wild Bonus Poker - French + + + pex2420p + Player's Edge Plus (X002420P+XP000064) Deuces Wild Bonus Poker - French + + + pex2421p + Player's Edge Plus (X002421P+XP000064) Deuces Wild Bonus Poker - French + + + pex2440p + Player's Edge Plus (X002440P+XP000053) Deuces Wild Poker + + + pex2461p + Player's Edge Plus (X002461P+XP000055) Joker Poker (Two Pair or Better) + + + pex2474p + Player's Edge Plus (X002474P+XP000038) Double Double Bonus Plus + + + pex2478p + Player's Edge Plus (X002478P+XP000154) Joker Poker - French + + + pex2479p + Player's Edge Plus (X002479P+XP000154) Joker Poker - French + + + pex2480p + Player's Edge Plus (X002480P+XP000154) Joker Poker (Aces or Better) - French + + + pex2485p + Player's Edge Plus (X002485P+XP000154) Standard Draw Poker - French + + + pexm001p + Player's Edge Plus (XM00001P+XMP00003) Multi-Poker + + + pexm002p + Player's Edge Plus (XM00002P+XMP00006) Multi-Poker + + + pexm002pa + Player's Edge Plus (XM00002P+XMP00006) Multi-Poker (MGM Grand Detroit Casino) + + + pexm003p + Player's Edge Plus (XM00003P+XMP00024) Multi-Poker + + + pexm004p + Player's Edge Plus (XM00004P+XMP00002) Multi-Poker + + + pexm005p + Player's Edge Plus (XM00005P+XMP00004) Multi-Poker + + + pexm006p + Player's Edge Plus (XM00006P+XMP00020) Multi-Poker + + + pexm006pa + Player's Edge Plus (XM00006P+XMP00002) Multi-Poker (The Orleans) + + + pexm007p + Player's Edge Plus (XM00007P+XMP00006) Multi-Poker + + + pexm008p + Player's Edge Plus (XM00008P+XMP00006) Multi-Poker + + + pexm009p + Player's Edge Plus (XM00009P+XMP00002) Multi-Poker + + + pexm013p + Player's Edge Plus (XM00013P+XMP00025) Multi-Poker + + + pexmp011 + Player's Edge Plus (XMP00011) 5-in-1 Wingboard (CG2298) + + + pexmp013 + Player's Edge Plus (XMP00013) 5-in-1 Wingboard (CG2346) - Spanish + + + pexmp014 + Player's Edge Plus (XMP00014) 5-in-1 Wingboard (CG2352) - International + + + pexmp017 + Player's Edge Plus (XMP00017) 5-in-1 Wingboard (CG2298) + + + pexmp017a + Player's Edge Plus (XMP00017) 5-in-1 Wingboard (CG2426) + + + pexmp022 + Player's Edge Plus (XMP00022) 5-in-1 Wingboard (CG2346) - Spanish + + + pexmp026 + Player's Edge Plus (XMP00026) 5-in-1 Wingboard (CG2346) - Spanish + + + pexmp030 + Player's Edge Plus (XMP00030) 5-in-1 Wingboard (CG2451) + + + pf2012 + Psychic Force 2012 (Ver 2.04J) + + + pfevr_l2 + Pennant Fever (L-2) + + + pfevr_p3 + Pennant Fever (P-3) + + + pfghtj + Pocket Fighter (Japan 970904) + + + pgalvip + Pocket Gals V.I.P (set 1) + + + pgalvipa + Pocket Gals V.I.P (set 2) + + + pgear + Powered Gear: Strategic Variant Armor Equipment (Japan 941024) + + + pgearr1 + Powered Gear: Strategic Variant Armor Equipment (Japan 940916) + + + pgemeni + P-GeMeni (060123) + + + pgm3in1 + Shan Liang San He Yi (Flash 3-in-1) (V102 08/23/04 13:03:26) + + + pgm3in1c100 + Shan Liang San He Yi (Flash 3-in-1) (V100 07/13/04 12:09:20) + + + pgmdemo + Chaos (PGM Demo) + + + pgmfrog + Frog Feast (PGM) + + + pgoal + Pleasure Goal / Futsal - 5 on 5 Mini Soccer (NGM-219) + + + ph_04 + Phantom Haus (0.4) + + + phantasm + Phantasm (Japan) + + + phantom + Phantom (bootleg of Spectar) + + + phantom2 + Phantom II + + + phantoma + Phantomas (bootleg of Spectar) + + + phantomp + Phantom Pays (4VXFC5431, New Zealand) + + + phantpay + Phantom Pays (0500005V, NSW/ACT) + + + phantpyc + Phantom Pays Classic (0101003V, NSW/ACT) + + + pharfor + Pharaoh's Fortune (40000921, NSW/ACT) + + + pharo_l2 + Pharaoh (L-2) + + + pharrier + Planet Harriers (Rev A) + + + phelios + Phelios + + + pheliosj + Phelios (Japan) + + + phklad + Klad / Labyrinth (Photon System) + + + phnix_l1 + Phoenix (L-1) + + + phntmshp + Phantom Ship + + + phoenix + Phoenix (Amstar, set 1) + + + phoenix2 + Phoenix (Amstar, set 2) + + + phoenix3 + Phoenix (T.P.N. bootleg) + + + phoenixa + Phoenix (Centuri, set 1) + + + phoenixass + Phoenix (Assa, Spanish bootleg) + + + phoenixb + Phoenix (Centuri, set 2) + + + phoenixbl + Phoenix (bootleg) + + + phoenixc + Phoenix (Irecsa / G.G.I. Corporation) + + + phoenixc2 + Phoenix (G.G.I. Corporation, set 1) + + + phoenixc3 + Phoenix (G.G.I. Corporation, set 2) + + + phoenixc4 + Phoenix (G.G.I. Corporation, set 3) + + + phoenixdal + Phoenix (D&L bootleg) + + + phoenixgu + Phoenix (G. Universal Video bootleg) + + + phoenixha + Phoenix (Hellomat Automaten bootleg) + + + phoenixi + Phoenix (IDI bootleg) + + + phoenixj + Phoenix (Taito Japan) + + + phoenixs + Phoenix (Sonic, Spanish bootleg) + + + phoenixt + Phoenix (Taito) + + + phoenxp2 + Phoenix Part 2 + + + photof + Photo Finish (bootleg?) + + + photoply2k + Photo Play 2000 (v2.01) + + + photoply2k1it + Photo Play 2001 (Italy) + + + photoply2k1mtnl + Photo Play Masters 2001 (Netherlands) + + + photoply2k1nl + Photo Play 2001 (Netherlands) + + + photoply2k1sp + Photo Play 2001 (Spanish) + + + photoply2k2be + Photo Play 2002 (Belgium) + + + photoply2k4 + Photo Play 2004 + + + photoply2knl + Photo Play 2000 (Netherlands) + + + photoply2ksp + Photo Play 2000 (Spain) + + + photoply98sp + Photo Play 1998 (Spain) + + + photoply99nl + Photo Play 1999 (Netherlands) + + + photoply99sp + Photo Play 1999 (Spain) + + + photopsxsp + Photo Play Spirit Xtreme (Spanish) + + + photopsxusp + Photo Play Spirit Xtreme (update, Spanish) + + + photoy2k + Photo Y2K / Chaoji Bi Yi Bi / Dajia Lai Zhao Cha / Real and Fake (ver. 105) + + + photoy2k102j + Photo Y2K / Chaoji Bi Yi Bi / Dajia Lai Zhao Cha / Real and Fake (ver. 102, Japanese Board) + + + photoy2k103j + Photo Y2K / Chaoji Bi Yi Bi / Dajia Lai Zhao Cha / Real and Fake (ver. 103, Japanese Board) + + + photoy2k104 + Photo Y2K / Chaoji Bi Yi Bi / Dajia Lai Zhao Cha / Real and Fake (ver. 104) + + + phozon + Phozon (Japan) + + + phozons + Phozon (Sidam) + + + phpython + Python (Photon System) + + + phrcraze + Phraze Craze (6221-40, U5-3A, Expanded Questions) + + + phrcrazea + Phraze Craze (6221-40, U5-3, Expanded Questions) + + + phrcrazeb + Phraze Craze (6221-40, U5-0A) + + + phrcrazec + Phraze Craze (6221-40, U5-0) + + + phrcrazev + Phraze Craze (6221-45, U5-2, Vertical) + + + phtetris + Tetris (Photon System) + + + phxfant + Phoenix Fantasy (20197511, NSW/ACT) + + + piccolop + Piccolo Poker 100 + + + pickin + Pickin' + + + pickwin + Pick 'n Win (Version 2.9E Dual) + + + pickwinb1 + Pick 'n Win (Version 2.9R, set 1) + + + pickwinbt + Pick 'n Win (Version 2.8T, set 1) + + + pickwind1 + Pick 'n Win (Version 2.9R, set 2) + + + pickwindt + Pick 'n Win (Version 2.8T, set 2) + + + pickwino + Pick 'n Win (Version 2.6) + + + pickwino2 + Pick 'n Win (Version 2.5T) + + + pickwinv1 + Pick 'n Win (Version 2.9R Dual) + + + pickwinvt + Pick 'n Win (Version 2.8T, Dual) + + + piggypas + Piggy Pass (version 04.40) + + + pignewt + Pig Newton (version C) + + + pignewta + Pig Newton (version A) + + + pigout + Pig Out: Dine Like a Swine! (rev 2?) + + + pigouta + Pig Out: Dine Like a Swine! (rev 1) + + + pigskin + Pigskin 621AD (rev 1.1K 8/01/90) + + + pigskina + Pigskin 621AD (rev 2.0 7/06/90) + + + pigskinb + Pigskin 621AD (rev 1.1 6/05/90) + + + pikkaric + Pikkari Chance + + + pimbal + Pimbal (Pinball 3000) + + + pinball + Pinball + + + pinbo + Pinbo (set 1) + + + pinboa + Pinbo (set 2) + + + pinbos + Pinbo (bootleg) + + + pinchamp + Pinball Champ + + + pinchamp7 + Pinball Champ (7 digits) + + + pinchamp7f + Pinball Champ (7 digits French speech) + + + pinchamp7g + Pinball Champ (7 digits German speech) + + + pinchamp7i + Pinball Champ (7 digits Italian speech) + + + pinchampf + Pinball Champ (French speech) + + + pinchampg + Pinball Champ (German speech) + + + pinchampi + Pinball Champ (Italian speech) + + + pinclown + Clown (Inder) + + + pingpong + Konami's Ping-Pong + + + pingu + Pingu's Ice Block (Ver.1.00 2006/01/27) + + + pinguinos + Pinguinos (Spanish bootleg on Pac-Man hardware) + + + pinkiri8 + Pinkiri 8 + + + pinkswts + Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER....) + + + pinkswtsa + Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER...) + + + pinkswtsb + Pink Sweets: Ibara Sorekara (2006/04/06 MASTER VER.) + + + pinkswtssc + Pink Sweets: Suicide Club (2017/10/31 SUICIDECLUB VER., bootleg) + + + pinkswtsx + Pink Sweets: Ibara Sorekara (2006/xx/xx MASTER VER.) + + + pinmoonl + Moon Light (Inder) + + + pinpool + Pinball Pool + + + pinups + Pin Ups (Ver 1.0 Rev A) + + + pipedrm + Pipe Dream (World) + + + pipedrmj + Pipe Dream (Japan) + + + pipedrmt + Pipe Dream (Taiwan) + + + pipedrmu + Pipe Dream (US) + + + pipeline + Pipeline + + + pipibibi + Pipi and Bibis - Whoopee!! (bootleg [Q]) + + + pipibibs + Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 1) + + + pipibibsa + Pipi & Bibis / Whoopee!! (Z80 sound cpu, set 2) + + + pipibibsbl + Pipi & Bibis / Whoopee!! (Ryouta Kikaku bootleg, encrypted) + + + pipibibsbl2 + Pipi & Bibis / Whoopee!! (bootleg, decrypted) + + + pipibibsbl3 + Pipi & Bibis / Whoopee!! (Ryouta Kikaku bootleg, decrypted) + + + pipibibsp + Pipi & Bibis / Whoopee!! (prototype) + + + pir2001 + Pirate 2001 (Version 2.5E Dual) + + + pir2001b1 + Pirate 2001 (Version 2.5R, set 1) + + + pir2001bx + Pirate 2001 (Version 2.40XT, set 1) + + + pir2001d1 + Pirate 2001 (Version 2.5R, set 2) + + + pir2001dx + Pirate 2001 (Version 2.40XT, set 2) + + + pir2001o + Pirate 2001 (Version 2.3N) + + + pir2001o2 + Pirate 2001 (Version 2.3) + + + pir2001o3 + Pirate 2001 (Version 2.20XT) + + + pir2001v1 + Pirate 2001 (Version 2.5R Dual) + + + pir2001vx + Pirate 2001 (Version 2.40XT Dual) + + + pir2002 + Pirate 2002 (Version 2.0E Dual) + + + pir2002b1 + Pirate 2002 (Version 2.0R, set 1) + + + pir2002bx + Pirate 2002 (Version 1.90XT, set 1) + + + pir2002d1 + Pirate 2002 (Version 2.0R, set 2) + + + pir2002dx + Pirate 2002 (Version 1.90XT, set 2) + + + pir2002o + Pirate 2002 (Version 1.8N) + + + pir2002o2 + Pirate 2002 (Version 1.8) + + + pir2002o3 + Pirate 2002 (Version 1.70XT) + + + pir2002v1 + Pirate 2002 (Version 2.0R Dual) + + + pir2002vx + Pirate 2002 (Version 1.90XT Dual) + + + piranha + Piranha + + + piranhah + Piranha (hack) + + + piranhao + Piranha (older) + + + pirata6 + Pirates (10001511, NSW/ACT) + + + pirata6a + Pirates (10122311, ASP) + + + pirate + Pirate (051229 World) + + + pirate2 + Pirate 2 (061005 World) + + + pirate2_10 + Pirate 2 (110311 Entertainment B) + + + pirate2_11 + Pirate 2 (140526 Entertainment B) + + + pirate2_12 + Pirate 2 (110411 Entertainment C) + + + pirate2_2 + Pirate 2 (070126 Russia) + + + pirate2_2a + Pirate 2 (bootleg, 070126, banking address hack) + + + pirate2_3 + Pirate 2 (090528 Lottery) + + + pirate2_4 + Pirate 2 (090730 Entertainment) + + + pirate2_5 + Pirate 2 (100406 Entertainment X) + + + pirate2_6 + Pirate 2 (101209 Entertainment N) + + + pirate2_7 + Pirate 2 (110111 Entertainment A) + + + pirate2_8 + Pirate 2 (110124 Entertainment A) + + + pirate2_9 + Pirate 2 (110204 Entertainment A) + + + pirate2a + Pirate 2 (bootleg, 061005, banking address hack set 1) + + + pirate2b + Pirate 2 (bootleg, 061005, banking address hack set 2) + + + pirate2c + Pirate 2 (bootleg, 061005, banking address hack, changed version text set 1) + + + pirate2d + Pirate 2 (bootleg, 061005, banking address hack, changed version text set 2) + + + pirate2e + Pirate 2 (bootleg, 061005, banking address hack, changed version text set 3) + + + pirate2f + Pirate 2 (bootleg, 061005, VIDEO GAME-1 PR01) + + + pirate2g + Pirate 2 (bootleg, 061005, LOTTOGAME (I)) + + + pirate2h + Pirate 2 (bootleg, 061005, LOTOS PR01) + + + pirate_2 + Pirate (060210 World) + + + pirate_3 + Pirate (060803 World) + + + pirate_4 + Pirate (070412 Russia) + + + pirate_5 + Pirate (090803 Entertainment) + + + pirates + Pirates (set 1) + + + piratesb + Pirates (set 2) + + + piratesh + Pirate Ship (ver UAA) + + + piratetr + Pirate Treasure + + + pirati + Pirati + + + piratpet + Pirate Pete + + + pirpok2 + Pirate Poker II (Version 2.4E Dual) + + + pirpok2b1 + Pirate Poker II (Version 2.2R, set 1) + + + pirpok2d1 + Pirate Poker II (Version 2.2R, set 2) + + + pirpok2o + Pirate Poker II (Version 2.0) + + + pirpok2v1 + Pirate Poker II (Version 2.2R Dual) + + + pisces + Pisces + + + piscesb + Pisces (bootleg) + + + pistoldm + Pistol Daimyo no Bouken (Japan) + + + pitapat + Pitapat Puzzle (set 1) + + + pitapata + Pitapat Puzzle (set 2) + + + pitboss + The Pit Boss (2214-07, U5-0A) + + + pitboss03 + The Pit Boss (2214-03, U5-0C) + + + pitboss03a + The Pit Boss (2214-03, U5-1C) + + + pitboss03b + The Pit Boss (M4A4) + + + pitboss04 + The Pit Boss (2214-04) + + + pitboss2 + Pit Boss II (9221-01C) + + + pitbossa + The Pit Boss (2214-07, U5-0) + + + pitbossm + Pit Boss Megastar (9244-00-01 R0B) + + + pitbossm4 + The Pit Boss (M4A1) + + + pitbossma + Pit Boss Megastar (9244-00-01 R0) + + + pitbossmb + Pit Boss Megastar (9243-00-01 R0) + + + pitbossps + The Pit Boss (PSB1) + + + pitbosss + Pit Boss Superstar (9221-10-00B) + + + pitbosssa + Pit Boss Superstar (9221-10-00A) + + + pitbosssc + Pit Boss Superstar (9221-12-01, California version) + + + pitbosssm + Pit Boss Superstar (9221-12-02, Minnesota version) + + + pitchhit + Pitch Hitter - Baseball Challenge + + + pitfall2 + Pitfall II (315-5093) + + + pitfall2a + Pitfall II (315-5093, Flicky Conversion) + + + pitfall2u + Pitfall II (not encrypted) + + + pitfallu + Pitfall II (not encrypted) + + + pitfigh3 + Pit Fighter (rev 3) + + + pitfighb + Pit Fighter (bootleg) + + + pitfighj + Pit Fighter (Japan, 2 players) + + + pitfight + Pit Fighter (rev 9) + + + pitfight1p2 + Pit Fighter (rev 1, 2 players) + + + pitfight2 + Pit Fighter (rev 2) + + + pitfight3 + Pit Fighter (rev 3) + + + pitfight4 + Pit Fighter (rev 4) + + + pitfight5 + Pit Fighter (rev 5) + + + pitfight6 + Pit Fighter (rev 6) + + + pitfight7 + Pit Fighter (rev 7) + + + pitfightb + Pit Fighter (bootleg) + + + pitfightj + Pit Fighter (Japan rev 3, 2 players) + + + pitnrun + Pit & Run - F-1 Race (rev 1) + + + pitnruna + Pit & Run - F-1 Race + + + pitnrunb + Pit & Run - F-1 Race (location test?) + + + pjustic + Project Justice / Moero! Justice Gakuen (Rev B) + + + pjustica + Project Justice / Moero! Justice Gakuen (Rev A) + + + pkboram + PK - New Exciting Poker! + + + pkgnsh + Pachinko Gindama Shoubu (Japan) + + + pkgnshdx + Pachinko Gindama Shoubu DX (Japan) + + + pkii_dm + unknown poker game PKII/DM + + + pkladiel + Poker Ladies (Leprechaun) + + + pkladies + Poker Ladies + + + pkladiesbl + Poker Ladies (Censored bootleg, encrypted) + + + pkladiesbl2 + Poker Ladies (Censored bootleg, not encrypted) + + + pkladiesblu + Poker Ladies (Uncensored bootleg, encrypted) + + + pkladiesl + Poker Ladies (Leprechaun ver. 510) + + + pkladiesla + Poker Ladies (Leprechaun ver. 401) + + + pkrboram + PK Rainbow (v 1.5) + + + pkrdewin + Poker De Win + + + pkrmast + Poker Master (ED-1993 set 1) + + + pkrmasta + Poker Master (ED-1993 set 2) + + + pkrno_l1 + Pokerino (L-1) + + + pkscram + PK Scramble + + + pkspirit + Poker Spirit + + + pktet346 + PK Tetris (v346I) + + + pktgaldj + Pocket Gal Deluxe (Japan v3.00) + + + pktgaldx + Pocket Gal Deluxe (Europe v3.00) + + + pktgaldxa + Pocket Gal Deluxe (Asia v3.00) + + + pktgaldxb + Pocket Gal Deluxe (Europe v3.00, bootleg) + + + pktgaldxj + Pocket Gal Deluxe (Japan v3.00) + + + pkunwar + Penguin-Kun Wars (US) + + + pkunwarj + Penguin-Kun Wars (Japan, set 1) + + + pkunwarja + Penguin-Kun Wars (Japan, set 2) + + + pl6_kfp + Kung Fu Pounda + + + pl6_lgk + Let's Get Kraken + + + platoon + Vs. Platoon + + + play2000 + Play 2000 (Super Slot & Gran Tesoro) (v7.0i) (Italy) + + + play2000_40i + Play 2000 (Super Slot & Gran Tesoro) (v4.0i) (Italy) + + + play2000_50i + Play 2000 (Super Slot & Gran Tesoro) (v5.0i) (Italy) + + + play_a24 + Playboy 35th Anniversary (2.4) + + + playball + PlayBall! (prototype) + + + playboy + Playboy + + + playboyf + Playboy (CPU 5.00, display F5.00, France) + + + playboyf_203 + Playboy (CPU 2.03, display F2.01, France) + + + playboyf_300 + Playboy (CPU 3.00, display F3.00, France) + + + playboyf_302 + Playboy (CPU 3.02, display F3.00, France) + + + playboyf_303 + Playboy (CPU 3.03, display F3.00, France) + + + playboyf_401 + Playboy (CPU 4.01, display F4.00, France) + + + playboyg + Playboy (CPU 5.00, display G5.00, Germany) + + + playboyg_203 + Playboy (CPU 2.03, display G2.01, Germany) + + + playboyg_300 + Playboy (CPU 3.00, display G3.00, Germany) + + + playboyg_302 + Playboy (CPU 3.02, display G3.00, Germany) + + + playboyg_303 + Playboy (CPU 3.03, display G3.00, Germany) + + + playboyg_401 + Playboy (CPU 4.01, display G4.00, Germany) + + + playboyi + Playboy (CPU 5.00, display I5.00, Italy) + + + playboyi_203 + Playboy (CPU 2.03, display I2.01, Italy) + + + playboyi_300 + Playboy (CPU 3.00, display I3.00, Italy) + + + playboyi_302 + Playboy (CPU 3.02, display I3.00, Italy) + + + playboyi_303 + Playboy (CPU 3.03, display I3.00, Italy) + + + playboyi_401 + Playboy (CPU 4.01, display I4.00, Italy) + + + playboyl + Playboy (CPU 5.00, display L5.00, Spain) + + + playboyl_203 + Playboy (CPU 2.03, display L2.01, Spain) + + + playboyl_300 + Playboy (CPU 3.00, display L3.00, Spain) + + + playboyl_302 + Playboy (CPU 3.02, display L3.00, Spain) + + + playboyl_303 + Playboy (CPU 3.03, display L3.00, Spain) + + + playboyl_401 + Playboy (CPU 4.01, display L4.00, Spain) + + + playboys + Playboy (CPU 5.00, display A5.00) + + + playboys_203 + Playboy (CPU 2.03, display A2.01) + + + playboys_300 + Playboy (CPU 3.00, display A3.00) + + + playboys_302 + Playboy (CPU 3.02, display A3.00) + + + playboys_303 + Playboy (CPU 3.03, display A3.00) + + + playboys_401 + Playboy (CPU 4.01, display A4.00) + + + playnew + Playboy (CPU 5.00, display A5.00, ARM7 sound board) + + + plctr13b + Police Trainer (Rev 1.3B) + + + pldoraemon + Doraemon (Power Link) + + + plegends + Gogetsuji Legends (US, Ver. 95.06.20) + + + plegendsj + Gouketsuji Gaiden - Saikyou Densetsu (Japan, Ver. 95.06.20) + + + plegendsjq + Gouketsuji Gaiden - Saikyou Densetsu (Infinite Energy, Hack) + + + pleiadbl + Pleiads (bootleg set 1) + + + pleiadce + Pleiads (Centuri) + + + pleiads + Pleiads (Tehkan) + + + pleiadsb2 + Pleiads (bootleg set 2) + + + pleiadsgmp + Pleiads (GMP Games) + + + pleiadsi + Pleiads (Irecsa, set 1) + + + pleiadsia + Pleiads (Irecsa, set 2) + + + pleiadsn + Pleiads (Niemer S.A.) + + + pleiadss + Pleiads (Famaresa, Spanish bootleg) + + + plgirls + Play Girls + + + plgirls2 + Play Girls 2 + + + plgirls2b + Play Girls 2 (bootleg) + + + plotting + Plotting (World set 1) + + + plottinga + Plotting (World set 2, protected) + + + plottingb + Plotting (World set 3, earliest version) + + + plottingu + Plotting (US) + + + plpittashi + Love Pi Chan (Power Link) + + + plsmaswd + Plasma Sword: Nightmare of Bilstein (USA 980316) + + + plsmaswda + Plasma Sword: Nightmare of Bilstein (Asia 980316) + + + plsonic4 + Play Sonic 4 + + + pltkids + Pilot Kids (Model 2B, Revision A) + + + pltkidsa + Pilot Kids (Model 2A) + + + plumppop + Plump Pop (Japan) + + + plusalph + Plus Alpha + + + plutus + Plutus (V100) + + + plycntrchtr + PlayCenter Champions Tournament (v9.3, 'Epox' hardware) + + + plycntrchtrc + PlayCenter Champions Tournament (v9.3, 'Celeron' hardware) + + + plycntrchtrk + PlayCenter Champions Tournament (v9.3, 'K6' hardware) + + + plycntre3 + Playcenter Evolution III (v14.0, 'Epox' hardware) + + + plygonet + Polygonet Commanders (ver UAA) + + + pma + PMA Poker + + + pmonster + Gamushara Battle! Puchi Monster (Japan 990519) + + + pmpoker + PlayMan Poker (German) + + + pmv112 + Pinball Magic + + + pmv112r + Pinball Magic (Redemption) + + + pnc + Pac'n'Chase (Hack) + + + pnchmn + Punch Mania: Hokuto no Ken (GQ918 VER. JAB) + + + pnchmn2 + Punch Mania 2: Hokuto no Ken (GQA09 JAA) + + + pnchmna + Punch Mania: Hokuto no Ken (GQ918 VER. JAB ALT CD) + + + pnickj + Pnickies (Japan 940608) + + + pnkpnthr + Pink Panther + + + pntnpuzl + Paint 'N Puzzle + + + pnyaa + Pochi and Nyaa (Ver 2.02) + + + pnyaaa + Pochi and Nyaa (Ver 2.00) + + + pocketrc + Pocket Racer (Japan, PKR1/VER.B) + + + poitto + Poitto! (revision D) + + + poittoc + Poitto! (revision C) + + + poizone + Poizone + + + pokasuka + Pokasuka Ghost! (Japan) + + + pokechmp + Poke Champ (set 1) + + + pokechmpa + Poke Champ (set 2) + + + poker21 + Poker & 21 + + + poker41 + Four In One Poker + + + poker52 + Poker 52 (Ver. 1.2) + + + poker72 + Poker Monarch (v2.50) + + + poker91 + Poker 91 + + + pokerdub + unknown French poker game + + + pokeresp + Poker (Electro-Sport) + + + pokeri + Poker (Impera, V11/90b) + + + pokeriwc + Poker UCMC/IWC (ver 162.03) + + + pokermon + Mundial/Mondial (Italian/French) + + + pokeroul + Poker Roulette (Version 8.22) + + + pokerout + Potten's Poker stealth with Breakout front game + + + pokersis + Good Luck! poker (Sisteme France) + + + pokio + Pokio (Dutch, Game Card 95-750-278) + + + pokiwc162 + Poker UCMC/IWC (ver 162.03 20-6-91) + + + poknight + Poker Night (HB) + + + pokoachu + PokoaPoka Onsen de CHU - Bijin 3 Shimai ni Kiotsukete! (Japan) + + + pokonl97 + Poker Only '97 (Talking ver. 3.3) + + + pokonyan + Pokonyan! Balloon (Japan 940322) + + + pokrdice + Poker Dice (V1.7) + + + pokrwild + Poker's Wild (V117) + + + polar + Polar Explorer + + + polaris + Polaris (latest version) + + + polarisa + Polaris (second revision) + + + polarisb + Polaris (first revision) + + + polarisbr + Polaris (Brazil) + + + polariso + Polaris (original version) + + + polepos + Pole Position (World) + + + polepos2 + Pole Position II (Japan) + + + polepos2a + Pole Position II (Atari) + + + polepos2b + Pole Position II (bootleg) + + + polepos2bi + Gran Premio F1 (Italian bootleg of Pole Position II) + + + polepos2bs + Gran Premio F1 (Spanish bootleg of Pole Position II) + + + poleposa1 + Pole Position (Atari version 1) + + + poleposa1n + Pole Position (Atari version 1 on Namco PCB) + + + poleposa2 + Pole Position (Atari version 2) + + + poleposj + Pole Position (Japan) + + + poleposn + Pole Position (Sonic) + + + polic_g4 + Police Force (LG-4) Germany + + + polic_l2 + Police Force (LA-2) + + + polic_l3 + Police Force (LA-3) + + + polic_l4 + Police Force (LA-4) + + + policet2 + Police Trainer 2 + + + policeto + Police Trainer (Rev 1.1) + + + policetr + Police Trainer (Rev 1.3B, Rev 0.3 PCB) + + + policetr10 + Police Trainer (Rev 1.0) + + + policetr11 + Police Trainer (Rev 1.1) + + + policetr13 + Police Trainer (Rev 1.3) + + + policetr13a + Police Trainer (Rev 1.3B Newer, Rev 0.5B PCB) + + + policetr13b + Police Trainer (Rev 1.3B, Rev 0.5B PCB) + + + pollux + Pollux (set 1) + + + polluxa + Pollux (set 2) + + + polluxa2 + Pollux (set 3) + + + polluxn + Pollux (Japan, NTC license, distributed by Atlus) + + + polynetw + Poly-Net Warriors (ver JAA) + + + polyplay + Poly-Play (ZRE) + + + polyplay2 + Poly-Play (ZRE-PP) + + + polyplay2c + Poly-Play (ZRE-PP - Czech) + + + polystar + Tobe! Polystars (ver JAA) + + + pomp_l1 + Pompeii (Shuffle) (L-1) + + + pompeia6 + Pompeii (10002211, NSW/ACT) + + + pompeia6a + Pompeii (10122411, ASP) + + + pompeia6u + Pompeii (0151158, US) + + + pompeia6ua + Pompeii (0251010, US) + + + pompingw + Pomping World (Japan) + + + ponchin + Mahjong Pon Chin Kan (Japan set 1) + + + ponchina + Mahjong Pon Chin Kan (Japan set 2) + + + pong + Pong (Rev E) + + + pongboo2 + Pong Boo! 2 (Ver. 1.31) + + + pongd + Pong Doubles + + + ponpoko + Ponpoko + + + ponpokov + Ponpoko (Venture Line) + + + pontoon + Pontoon (FD1094 317-0153) + + + pontoona + Pontoon (FD1094 317-?) + + + ponttehk + Pontoon (Tehkan) + + + pool10 + Pool 10 (Italian, set 1) + + + pool10b + Pool 10 (Italian, set 2) + + + pool10c + Pool 10 (Italian, set 3) + + + pool10d + Pool 10 (Italian, set 4) + + + pool10e + Pool 10 (Italian, Dino 4 hardware, encrypted) + + + pool10f + Pool 10 (Italian, set 5) + + + pool10g + Pool 10 (Italian, set 6) + + + pool10h + Pool 10 (Italian, set 7) + + + pool10i + Pool 10 (Italian, set 8) + + + pool10j + Pool 10 (Italian, set 9) + + + pool10k + Pool 10 (Italian, set 10) + + + pool_l5 + Pool Sharks (LA-5) + + + pool_l6 + Pool Sharks (LA-6) + + + pool_l7 + Pool Sharks (LA-7) + + + pool_le2 + Pool Sharks (LE-2) + + + pool_p7 + Pool Sharks (PA-7) + + + poolcham + Pool Champion + + + poolchami + Pool Champion (Italian speech) + + + poolshrk + Poolshark + + + poosho + Poosho Poosho + + + pootan + Pootan + + + pooyan + Pooyan + + + pooyans + Pooyan (Stern Electronics) + + + pop_hh + Popper (bootleg of Hard Head) + + + pop_la4 + Popeye Saves The Earth (LA-4) + + + pop_lx5 + Popeye Saves The Earth (LX-5) + + + pop_pa3 + Popeye Saves The Earth (PA-3) + + + popbingo + Pop Bingo + + + popbounc + Pop 'n Bounce / Gapporin + + + popeye + Popeye (revision D) + + + popeyeb2 + Popeye (bootleg set 2) + + + popeyeb3 + Popeye (bootleg set 3) + + + popeyebl + Popeye (bootleg set 1) + + + popeyef + Popeye (revision F) + + + popeyehs + Popeye (Braze High Score Kit P1.00D) + + + popeyej + Popeye (Japan) + + + popeyejo + Popeye (Japan, Older) + + + popeyeman + Popeye-Man + + + popeyeu + Popeye (revision D not protected) + + + popflama + Pop Flamer (not protected) + + + popflamb + Pop Flamer (hack[Q]) + + + popflame + Pop Flamer (protected) + + + popflamea + Pop Flamer (not protected) + + + popflameb + Pop Flamer (hack?) + + + popflamen + Pop Flamer (bootleg on Naughty Boy PCB) + + + popn1 + Pop'n Music 1 (ver TA-A, HDD 1.01) + + + popn1a + Pop'n Music 1 (ver AA-A, HDD 1.00) + + + popn1j + Pop'n Music 1 (ver JA-A, HDD 1.00) + + + popn1k + Pop'n Music 1 (ver KA-A, HDD 1.01) + + + popn2 + Pop'n Music 2 (ver JA-A) + + + popn3 + Pop'n Music 3 (ver JA-A) + + + popn4 + Pop'n Music 4 + + + popn5 + Pop'n Music 5 + + + popn6 + Pop'n Music 6 + + + popn7 + Pop'n Music 7 + + + popn8 + Pop'n Music 8 + + + popn9 + Pop'n Music 9 (ver JAB) + + + popnanm + Pop'n Music Animelo + + + popnanm2 + Pop'n Music Animelo 2 (JAC) + + + popnanm2a + Pop'n Music Animelo 2 (JAC, license expired) + + + popnanm2ja + Pop'n Music Animelo 2 (JAA) + + + popnanm2jaa + Pop'n Music Animelo 2 (JAA, license expired) + + + popnanma + Pop'n Music Animelo (license expired) + + + popnmt + Pop'n Music Mickey Tunes + + + popnmt2 + Pop'n Music Mickey Tunes! + + + popnpop + Pop'n Pop (Ver 2.07O 1998/02/09) + + + popnpopj + Pop'n Pop (Ver 2.07J 1998/02/09) + + + popnpopu + Pop'n Pop (Ver 2.07A 1998/02/09) + + + popnrun + Pop'n Run - The Videogame (set 1) + + + popnruna + Pop'n Run - The Videogame (set 2) + + + popnstex + Pop'n Stage EX (ver JB-A) + + + popobear + PoPo Bear + + + popper + Popper + + + popshot + Pop Shot (prototype) + + + popspops + Pop's Pop's + + + porky + Porky + + + porter + Port Man (bootleg on Moon Cresta hardware) + + + portera + El Estivador (Spanish bootleg of Port Man on Galaxian hardware) + + + portman + Port Man + + + portmanj + Port Man (Japan) + + + portrait + Portraits (set 1) + + + portraita + Portraits (set 2) + + + potc_110af + Pirates of the Caribbean v1.10 (English,French) + + + potc_110ai + Pirates of the Caribbean v1.10 (English,Italian) + + + potc_110gf + Pirates of the Caribbean v1.10 (German,French) + + + potc_111as + Pirates of the Caribbean v1.11 (English,Spanish) + + + potc_113af + Pirates of the Caribbean v1.13 (English,French) + + + potc_113ai + Pirates of the Caribbean v1.13 (English,Italian) + + + potc_113as + Pirates of the Caribbean v1.13 (English,Spanish) + + + potc_113gf + Pirates of the Caribbean v1.13 (German,French) + + + potc_115af + Pirates of the Caribbean v1.15 (English,French) + + + potc_115ai + Pirates of the Caribbean v1.15 (English,Italian) + + + potc_115as + Pirates of the Caribbean v1.15 (English,Spanish) + + + potc_115gf + Pirates of the Caribbean v1.15 (German,French) + + + potc_300af + Pirates of the Caribbean v3.00 (English,French) + + + potc_300ai + Pirates of the Caribbean v3.00 (English,Italian) + + + potc_300as + Pirates of the Caribbean v3.00 (English,Spanish) + + + potc_300gf + Pirates of the Caribbean v3.00 (German,French) + + + potc_400af + Pirates of the Caribbean v4.00 (English,French) + + + potc_400ai + Pirates of the Caribbean v4.00 (English,Italian) + + + potc_400as + Pirates of the Caribbean v4.00 (English,Spanish) + + + potc_400gf + Pirates of the Caribbean v4.00 (German,French) + + + potc_600 + Pirates of the Caribbean v6.00 (English,French) + + + potc_600ai + Pirates of the Caribbean v6.00 (English,Italian) + + + potc_600as + Pirates of the Caribbean v6.00 (English,Spanish) + + + potc_600gf + Pirates of the Caribbean v6.00 (German,French) + + + potgame + Pot Game (Italian) + + + potgoldu + Pot O' Gold (U.S. Games, v400x?) + + + potgoldu580 + Pot O' Gold (U.S. Games, v580F) + + + potnpkra + Jack Potten's Poker (set 2) + + + potnpkrb + Jack Potten's Poker (set 3) + + + potnpkrc + Jack Potten's Poker (set 4) + + + potnpkrd + Jack Potten's Poker (set 5) + + + potnpkre + Jack Potten's Poker (set 6) + + + potnpkrf + Jack Potten's Poker (set 7, Royale GFX) + + + potnpkrg + Jack Potten's Poker (set 8, Australian) + + + potnpkrh + Jack Potten's Poker (set 9, 'just 4 fun') + + + potnpkri + Jack Potten's Poker (set 10, ICP-1 PCB) + + + potnpkrj + Jack Potten's Poker (set 11, German, W.W.) + + + potnpkrk + Jack Potten's Poker (set 12, no Double-Up) + + + potnpkrl + Jack Potten's Poker (set 13, ICP-1 PCB) + + + potnpkrm + Jack Potten's Poker (set 14, ICP-1 PCB) + + + potnpkrn + Jack Potten's Poker (set 15, w/fever, ICP-1 PCB) + + + potnpkro + Jack Potten's Poker (set 16, ICP-1 PCB) + + + potnpkrp + Jack Potten's Poker (set 17, ICP-1 PCB) + + + poto_a29 + The Phantom of the Opera (2.9) + + + poto_a31 + The Phantom of the Opera (3.1) + + + poto_a32 + The Phantom of the Opera (3.2) + + + potogold + Pot of Gold + + + potopoto + Poto Poto (Japan, Rev A) + + + pottnpkr + Jack Potten's Poker (set 1) + + + poundfor + Pound for Pound (World) + + + poundforj + Pound for Pound (Japan) + + + poundforu + Pound for Pound (US) + + + poundfou + Pound for Pound (US) + + + pow + P.O.W. - Prisoners of War (US version 1) + + + powa + P.O.W. - Prisoners of War (US version 1, mask ROM sprites) + + + powbl + P.O.W. - Prisoners of War (bootleg of US version 1) + + + powerbal + Power Balls + + + powerbals + Power Balls (Super Slam conversion) + + + powercrd + Power Card (Ver 0263, encrypted) + + + powerdrv + Power Drive + + + powerina + Power Instinct (USA bootleg) (set 2) + + + powerins + Power Instinct (USA) + + + powerinsa + Power Instinct (USA, bootleg set 1) + + + powerinsb + Power Instinct (USA, bootleg set 2) + + + powerinsc + Power Instinct (USA, bootleg set 3) + + + powerinsj + Gouketsuji Ichizoku (Japan) + + + powerinspj + Gouketsuji Ichizoku (Japan, prototype) + + + powerinspu + Power Instinct (USA, prototype) + + + powernbr + Power Instinct (Brasil, v1.0, Hack) + + + powj + Datsugoku - Prisoners of War (Japan) + + + powrplay + Power Play + + + powsled + Power Sled (Slave, Revision A) + + + powsledm + Power Sled (Main, hack of Relay) + + + powsledr + Power Sled (Relay, Revision A) + + + powyak96 + Jikkyou Powerful Pro Yakyuu '96 (GV017 Japan 1.03) + + + powyakex + Jikkyou Pawafuru Puro Yakyu EX (GX802 VER. JAB) + + + pp100 + Pool Player (1.0) + + + ppan + Peter Pan (bootleg of Hook) + + + ppcar + Pang Pang Car + + + ppchamp + Pasha Pasha Champ Mini Game Festival (Korea, set 1) + + + ppchampa + Pasha Pasha Champ Mini Game Festival (Korea, set 2) + + + ppd + ParaParaDancing + + + ppj + Pyon Pyon Jump (V1.40, Japan) + + + ppking + Ping-Pong King + + + ppmast93 + Ping Pong Masters '93 + + + ppp + ParaParaParadise + + + ppp11 + ParaParaParadise v1.1 + + + ppp1mp + ParaParaParadise 1st Mix Plus + + + ppp2nd + ParaParaParadise 2nd Mix (JAA) + + + ppp2nda + ParaParaParadise 2nd Mix (AAA) + + + pprobe + Planet Probe (prototype?) + + + ppsatan + Poka Poka Satan (Japan) + + + ppspeed + Speed Up (Spanish bootleg of Pole Position) + + + pr_5xcsh + 5x Cash (Project) (PROCONN) + + + pr_7hvn + 777 Heaven (Project) (PROCONN) + + + pr_7hvna + 777 Heaven (Project) (10GBP Jackpot) (PROCONN) + + + pr_7hvnb + 777 Heaven (Project) (20p 6GBP Jackpot Version 114) (PROCONN) + + + pr_7hvnc + 777 Heaven (Project) (10p 3GBP Jackpot Version 380) (PROCONN) + + + pr_7hvnd + 777 Heaven (Project) (5p 3GBP Jackpot Version 105) (PROCONN) + + + pr_7hvne + 777 Heaven (Project) (set 6) (PROCONN) + + + pr_7hvnf + 777 Heaven (Project) (set 7) (PROCONN) + + + pr_7hvng + 777 Heaven (Project) (set 8) (PROCONN) + + + pr_7hvnh + 777 Heaven (Project) (set 9) (PROCONN) + + + pr_7hvni + 777 Heaven (Project) (set 10) (PROCONN) + + + pr_7hvnj + 777 Heaven (Project) (set 11) (PROCONN) + + + pr_7hvnk + 777 Heaven (Project) (set 12) (PROCONN) + + + pr_7hvnl + 777 Heaven (Project) (set 13) (PROCONN) + + + pr_7hvnm + 777 Heaven (Project) (set 14) (PROCONN) + + + pr_7hvnn + 777 Heaven (Project) (set 15) (PROCONN) + + + pr_7hvno + 777 Heaven (Project) (set 16) (PROCONN) + + + pr_7hvnp + 777 Heaven (Project) (set 17) (PROCONN) + + + pr_7hvnq + 777 Heaven (Project) (set 18) (PROCONN) + + + pr_7hvnr + 777 Heaven (Project) (set 19) (PROCONN) + + + pr_7hvns + 777 Heaven (Project) (set 20) (PROCONN) + + + pr_7hvnt + 777 Heaven (Project) (set 21) (PROCONN) + + + pr_7hvnu + 777 Heaven (Project) (set 22) (PROCONN) + + + pr_alwy9 + Always Nine (Pcp) (set 1) (PROCONN) + + + pr_alwy9a + Always Nine (Pcp) (set 2) (PROCONN) + + + pr_barbl + Bars & Bells (Project) (PROCONN) + + + pr_batls + Battleships (Project) (set 1) (PROCONN) + + + pr_batlsa + Battleships (Project) (set 2) (PROCONN) + + + pr_batlsb + Battleships (Project) (set 3) (PROCONN) + + + pr_bears + Bear Streak (set 1) (Coinworld) + + + pr_bearsa + Bear Streak (set 2) (Coinworld) + + + pr_bearsb + Bear Streak (set 3) (Coinworld) + + + pr_bearx + Bear X (Version 2.3) (Coinworld) + + + pr_bearxa + Bear X (Version 2.2) (Coinworld) + + + pr_bearxb + Bear X (Version 1.3) (Coinworld) + + + pr_bearxc + Bear X (20p set 1) (Coinworld) + + + pr_bearxd + Bear X (20p set 2) (Coinworld) + + + pr_bearxe + Bear X (10p set 1) (Coinworld) + + + pr_bearxf + Bear X (10p set 2) (Coinworld) + + + pr_bearxg + Bear X (10p set 3) (Coinworld) + + + pr_bearxh + Bear X (10p set 4?) (Coinworld) + + + pr_bearxi + Bear X (10p set 5) (Coinworld) + + + pr_bearxj + Bear X (code 813) (Coinworld) + + + pr_bearxk + Bear X (8GBP Token?) (Coinworld) + + + pr_bearxl + Bear X (Version 41) (Coinworld) + + + pr_bearxlp + Bear X (Version 41, Protocol) (Coinworld) + + + pr_bearxm + Bear X (Version 31) (Coinworld) + + + pr_bigdp + Big Dipper (Project) (set 1) (PROCONN) + + + pr_bigdpa + Big Dipper (Project) (set 2) (PROCONN) + + + pr_btwar + Beat The Warden (Project) (set 1) (PROCONN) + + + pr_btwara + Beat The Warden (Project) (set 2) (PROCONN) + + + pr_btwarb + Beat The Warden (Project) (set 3) (PROCONN) + + + pr_bulbn + Bully's Big Night (Project) (PROCONN) + + + pr_bulbna + Bully's Big Night (Project) (set 1) (PROCONN) + + + pr_bulbnb + Bully's Big Night (Project) (set 2) (PROCONN) + + + pr_buljp + Bully's Jackpot (Project) (set 1) (PROCONN) + + + pr_buljpa + Bully's Jackpot (Project) (set 2) (PROCONN) + + + pr_bulls + Bullseye (Project) (set 1) (PROCONN) + + + pr_bullsa + Bullseye (Project) (set 2) (PROCONN) + + + pr_bullsb + Bullseye (Project) (set 3) (PROCONN) + + + pr_cas7 + Casino Jackpot 7s (Project) (PROCONN) + + + pr_cashb + Cash Back (Project) (PROCONN) + + + pr_chico + Chico the Bandit (Project) (set 1) (PROCONN) + + + pr_chicoa + Chico the Bandit (Project) (set 2) (PROCONN) + + + pr_chicob + Chico the Bandit (Project) (set 3) (PROCONN) + + + pr_coolm + Cool Million (Project) (set 1) (PROCONN) + + + pr_coolma + Cool Million (Project) (set 2) (PROCONN) + + + pr_coolmb + Cool Million (Project) (set 3) (PROCONN) + + + pr_coyot + Crazy Coyote (Pcp) (10p) (PROCONN) + + + pr_coyota + Crazy Coyote (Pcp) (20p) (PROCONN) + + + pr_crz77 + Crazy 777s (Project) (PROCONN) + + + pr_crzbr + Crazy Bars (Project) (PROCONN) + + + pr_crzpy + Crazy Pays (Project) (PROCONN) + + + pr_dblup + Double Up (Project) (PROCONN) + + + pr_fire + Fircecracker (Project) (PROCONN) + + + pr_flshc + Flash The Cash (Project) (PROCONN) + + + pr_fspot + Fun Spot (Version 4.1) (Coinworld) + + + pr_fspota + Fun Spot (Version 3.1) (Coinworld) + + + pr_fspotb + Fun Spot (Version 2.1, set 1) (Coinworld) + + + pr_fspotc + Fun Spot (Version 2.1, 20p stake, 82%) (Coinworld) + + + pr_fspotd + Fun Spot (Version 2.1, 7 button) (Coinworld) + + + pr_fspote + Fun Spot (Version 1.1, set 1) (Coinworld) + + + pr_fspotf + Fun Spot (Version 1.1, 20p stake, 82%) (Coinworld) + + + pr_fspotg + Fun Spot (Version 1.1, 6 button) (Coinworld) + + + pr_ftwhl + Fortune Wheel (Project) (PROCONN) + + + pr_funrn + Fun On The Run (Project) (PROCONN) + + + pr_gdft + Good Fortune (Project) (PROCONN) + + + pr_gldng + Golden Nugget (Project) (PROCONN) + + + pr_gldnl + Golden Nile (Project) (PROCONN) + + + pr_gnuc + Golden Nugget (Version 2.2) (Coinworld) + + + pr_gnuca + Golden Nugget (Version 1.2) (Coinworld) + + + pr_gogld + Go For Gold (Project) (PROCONN) + + + pr_happy + Happy Days (Project) (PROCONN) + + + pr_heato + The Heat Is On (Project) (PROCONN) + + + pr_hiclm + Hi Climber (Project) (PROCONN) + + + pr_hit6 + Hit The Six (Project) (set 1) (PROCONN) + + + pr_hit6a + Hit The Six (Project) (set 2) (PROCONN) + + + pr_hit6b + Hit The Six (Project) (set 3) (PROCONN) + + + pr_hotcs + Hot Cash (Project) (PROCONN) + + + pr_hotsp + Hot Spots (Project) (PROCONN) + + + pr_jkpt7 + Jackpot 7's (Project) (PROCONN) + + + pr_jkrwd + Jokers Wild (Project) (PROCONN) + + + pr_jumpj + Jumping Jacks (Project) (set 1) (PROCONN) + + + pr_jumpja + Jumping Jacks (Project) (set 2) (PROCONN) + + + pr_lday + 'L' Of A Day (Project) (Cash set) (PROCONN) + + + pr_ldaya + 'L' Of A Day (Project) (Token set) (PROCONN) + + + pr_magln + Magic Lines (Version 2.1) (Coinworld) + + + pr_maglna + Magic Lines (Version 1.1) (Coinworld) + + + pr_medl + Medalist (Project) (PROCONN) + + + pr_megmn + Mega Money (Project) (PROCONN) + + + pr_nifty + Nifty Fifty (Project) (PROCONN) + + + pr_nudxs + Nudge XS (Project) (PROCONN) + + + pr_qksht + Quickshot (Maygay) (PROCONN) + + + pr_rags + Rags To Riches (Project) (PROCONN) + + + pr_reflx + Reflex (Project) (PROCONN) + + + pr_roadr + Road Riot (Project) (PROCONN) + + + pr_roll + The Roll (Project) (PROCONN) + + + pr_sevab + Seven's Above (Project) (PROCONN) + + + pr_sevml + Sevens & Melons (Project) (PROCONN) + + + pr_sptb + Simply the Best (Pcp) (PROCONN?) + + + pr_supbr + Super Bars (PCP) (PROCONN) + + + pr_swop + Swop It (Ace) + + + pr_theme + Theme Park (Project) (PROCONN) + + + pr_trktp + Trick or Treat (Protocol?) (Project) (PROCONN) + + + pr_trktr + Trick or Treat (Project) (PROCONN) + + + pr_trpx + Triple X (Project) (PROCONN) + + + pr_ttrai + Treasure Trail (Project) (PROCONN) + + + pr_upnun + Up & Under (Project) (PROCONN) + + + pr_walls + Wall Street (Project) (PROCONN) + + + pr_whlft + Wheel Of Fortune (Project) (PROCONN) + + + pr_wldkn + Wild Kings (Project) (PROCONN) + + + pr_wnstk + Winning Streak (Version 1.1) (Coinworld) + + + prc28su + Print Club 2 Vol. 8 '97 Summer (J 970616 V1.100) + + + prc297wi + Print Club 2 '97 Winter Ver (J 971017 V1.100, set 1) + + + prc297wia + Print Club 2 '97 Winter Ver (J 971017 V1.100, set 2) + + + prc298au + Print Club 2 '98 Autumn Ver (J 980827 V1.000) + + + prc298sp + Print Club 2 '98 Spring Ver (J 971017 V1.100) + + + prc298su + Print Club 2 '98 Summer Ver (J 980603 V1.100) + + + prc29au + Print Club 2 Vol. 9 Autumn (J V1.100) + + + prc2ksu + Print Club 2 2000 Summer (J 000509 V1.000) + + + prdgp03 + Pride GP 2003 (PR21 Ver. A) + + + prehisle + Prehistoric Isle in 1930 (World) + + + prehislea + Prehistoric Isle in 1930 (World, set 2) + + + prehisleb + Prehistoric Isle in 1930 (World, bootleg) + + + prehislek + Wonsido 1930's (Korea) + + + prehisleu + Prehistoric Isle in 1930 (US) + + + prehislu + Prehistoric Isle in 1930 (US) + + + preisle2 + Prehistoric Isle 2 + + + prideaf + Pride of Africa (10208511, NSW/ACT) + + + prikura + Princess Clara Daisakusen (J 960910 V1.000) + + + primella + Primella (Japan, NTC license) + + + primevah + Primeval Hunt + + + primglex + Prime Goal EX (Japan, PG1/VER.A) + + + primrag2 + Primal Rage II (Test Version 0.36a) + + + primraga + Primal Rage (version 2.0) + + + primrage + Primal Rage (version 2.3, Jan 1995) + + + primrage20 + Primal Rage (version 2.0) + + + primrageo + Primal Rage (version 2.3, Dec 1994) + + + princess + Cosmic Princess + + + prmrsocj + Premier Soccer (Japan ver. JAB) + + + prmrsocr + Premier Soccer (ver EAB) + + + prmrsocrj + Premier Soccer (ver JAB) + + + prmtmfgo + Prime Time Fighter (US old version) + + + prmtmfgt + Prime Time Fighter (Ver 2.1A 1993/05/21) (New Version) + + + prmtmfgto + Prime Time Fighter (Ver 2.1A 1993/05/21) (Old Version) + + + probowl2 + Pro Bowl 2 + + + profpac + Professor Pac-Man + + + progear + Progear (USA 010117) + + + progeara + Progear (Asia 010117) + + + progearj + Progear no Arashi (Japan 010117) + + + progearjbl + Progear no Arashi (Japan 010117) (decrypted bootleg) + + + progearjd + Progear no Arashi (Japan 010117 Phoenix Edition) (bootleg) + + + progearud + Progear (USA 010117 Phoenix Edition) (bootleg) + + + progolf + 18 Holes Pro Golf (set 1) + + + progolfa + 18 Holes Pro Golf (set 2) + + + progress + Progress + + + promutrv + Progressive Music Trivia (Question set 1) + + + promutrva + Progressive Music Trivia (Question set 2) + + + promutrvb + Progressive Music Trivia (Question set 3) + + + promutrvc + Progressive Music Trivia (Question set 4) + + + proneon + Project Neon - Caravan Edition (HB, pre-alpha v0.4.19) + + + propcycl + Prop Cycle (World, PR2 Ver.A) + + + propcyclj + Prop Cycle (Japan, PR1 Ver.A) + + + prophecy + Prophecy (20173411, NSW/ACT) + + + prosoccr + Pro Soccer + + + prosport + Pro Sports - Bowling, Tennis, and Golf + + + prosporta + Pro Sports - Bowling, Tennis, and Golf (USA) + + + protenn + Pro Tennis (Japan) + + + protennb + Tennis (bootleg of Pro Tennis) + + + prtyanim + Party Animal + + + prtyanimg + Party Animal (German) + + + prtytime + Party Time: Gonta the Diver II / Ganbare! Gonta!! 2 (World Release) + + + przfight + Prize Fight (0100299V, NSW/ACT) + + + przonegd + Prize Zone Gold (USA, v2.01) + + + psailor1 + Bishoujo Janshi Pretty Sailor 18-kin (Japan) + + + psailor2 + Bishoujo Janshi Pretty Sailor 2 (Japan) + + + psattack + P's Attack + + + psmash3 + Power Smash 3 / Virtua Tennis 3 (Export) + + + psoldier + Perfect Soldiers (Japan) + + + pspikes + Power Spikes (World) + + + pspikes2 + Power Spikes II (NGM-068) + + + pspikesb + Power Spikes (bootleg) + + + pspikesba + Power Spikes (Italian bootleg) + + + pspikesc + Power Spikes (China, bootleg) + + + pspikesk + Power Spikes (Korea) + + + pspikesm + Power Spikes (Modular System) + + + pspikesu + Power Spikes (US) + + + psrockmn + Panic Shot Rockman + + + pss61 + Super Mario Kart / Super Mario Collection / Star Fox (Super Famicom Box) + + + pss62 + New Super 3D Golf Simulation - Waialae no Kiseki / Super Mahjong 2 (Super Famicom Box) + + + pss63 + Super Donkey Kong / Super Tetris 2 + Bombliss (Super Famicom Box) + + + pss64 + Super Donkey Kong / Super Bomberman 2 (Super Famicom Box) + + + pstadium + Mahjong Panic Stadium (Japan) + + + pstlpkr + Pistol Poker (R02) + + + pstlpkr1 + Pistol Poker (R01) + + + pstone + Power Stone + + + pstone2 + Power Stone 2 + + + pstone2b + Power Stone 2 (bootleg) + + + psurge + Power Surge + + + psychic5 + Psychic 5 (World) + + + psychic5j + Psychic 5 (Japan) + + + psychos + Psycho Soldier (US) + + + psychosj + Psycho Soldier (Japan) + + + psyforce + Psychic Force (Ver 2.4O) + + + psyforcej + Psychic Force (Ver 2.4J) + + + psyforcex + Psychic Force EX (Ver 2.0J) + + + psyvar2 + Psyvariar 2 - The Will To Fabricate (Japan) (GDL-0024) + + + psyvaria + Psyvariar -Medium Unit- (V2.02O 2000/02/22 13:00) + + + psyvarij + Psyvariar -Medium Unit- (V2.04J 2000/02/15 11:00) + + + psyvarrv + Psyvariar -Revision- (V2.04J 2000/08/11 22:00) + + + ptblank + Point Blank (World, GN2 Rev B, set 1) + + + ptblank2 + Point Blank 2 (World, GNB5/VER.A) + + + ptblank2a + Point Blank 2 (World, GNB2/VER.A) + + + ptblank2b + Point Blank 2 (World, GNB2/VER.A alt) + + + ptblank2c + Point Blank 2 (World, unknown version) + + + ptblank2ua + Point Blank 2 (US, GNB3/VER.A) + + + ptblank3 + Point Blank 3 (World, GNN2 Ver.A) + + + ptblanka + Point Blank (World, GN2 Rev B, set 2) + + + ptrain + Panda Train (Novamatic 1.7) + + + ptraina + Panda Train (Ver. 1.3) + + + ptrmj + PT Reach Mahjong (Japan) + + + pturn + Parallel Turn + + + pubball + Power Up Baseball (prototype) + + + pubtimed + Pub Time Darts + + + pubtimed2ch + Pub Time Darts II Plus 2 with Solo Challenger (Mar 24, 1992) + + + puchicar + Puchi Carat (Ver 2.02O 1997/10/29) + + + puchicarj + Puchi Carat (Ver 2.02J 1997/10/29) + + + puchicaru + Puchi Carat (Ver 2.04A 1997/11/08) + + + puckman + Puck Man (Japan, set 1) + + + puckmana + Puck Man (Alca bootleg) + + + puckmanb + Puck Man (bootleg, set 1) + + + puckmanb3 + Puck Man (bootleg, set 3) + + + puckmanf + Puck Man (speedup hack) + + + puckmanh + Puck Man (bootleg, set 2) + + + puckmod + Puck Man (Japan, set 2) + + + puckpepl + Puck People + + + puckpkmn + Puckman Pockimon Genie 2000 + + + puckpkmnb + Puckman Pockimon Genie 2000 (bootleg) + + + pulirula + PuLiRuLa (World, dual PCB) + + + pulirulaa + PuLiRuLa (World, single PCB) + + + pulirulaj + PuLiRuLa (Japan) + + + pulirulj + PuLiRuLa (Japan) + + + pulltabs + Pull Tabs + + + pullttrig + Pull The Trigger + + + pulsar + Pulsar + + + pulstar + Pulstar + + + pumpipx2 + Pump it Up The PREX 2 (Premiere 2/2003) + + + pumpipx2p + Pump it Up EXTRA + Plus (Premiere 2/2003) + + + pumpipx3 + Pump it Up The PREX 3: The International 4th Dance Floor (X3.2MK3) + + + pumpipx3a + Pump it Up The PREX 3: The International 4th Dance Floor (INT X3.1MK3) + + + pumpipx3b + Pump it Up The PREX 3: The International 4th Dance Floor (Korea X3.1MK3) + + + pumpit1 + Pump It Up: The 1st Dance Floor (ver 0.53.1999.9.31) + + + pumpit2 + Pump it Up: The 2nd Dance Floor (Feb 28 2000) + + + pumpit2a + Pump it Up: The 2nd Dance Floor (Dec 27 1999) + + + pumpit3 + Pump it Up The O.B.G: The 3rd Dance Floor (v3.04 - Jun 02 2000) + + + pumpit3a + Pump it Up The O.B.G: The 3rd Dance Floor (v3.03 - May 07 2000) + + + pumpit8 + Pump it Up The Rebirth: The 8th Dance Floor (Rebirth/2002) + + + pumpitc + Pump it Up: The Collection (R5/v3.43 - Nov 14 2000) + + + pumpite + Pump it Up Extra (Mar 21 2001) + + + pumpitea + Pump it Up Extra (Mar 08 2001) + + + pumpito + Pump it Up The O.B.G: The Season Evolution Dance Floor (R4/v3.25 - Aug 27 2000) + + + pumpitp2 + Pump it Up The Premiere 2: The International 2nd Dance Floor (Premiere 2/2002) + + + pumpitp3 + Pump it Up The Premiere 3: The International 3rd Dance Floor (Premiere 3/2003 - 28th Mar 2003) + + + pumpitp3a + Pump it Up The Premiere 3: The International 3rd Dance Floor (Premiere 3/2003 - 17th Mar 2003) + + + pumpitpc + Pump it Up: The Perfect Collection (R5/v3.52 - Dec 18 2000) + + + pumpitpr + Pump it Up The Premiere: The International Dance Floor (R6/v4.01 - Feb 22 2001) + + + pumpitpru + Pump it Up The Premiere: The International Dance Floor (R6/v4.01 - Feb 22 2001 USA) + + + pumpitpx + Pump it Up The PREX: The International Dance Floor (REV2 / 101) + + + punchita + Punch-Out!! (Italian bootleg) + + + punchkid + Punching Kid (Japan) + + + punchout + Punch-Out!! (Rev B) + + + punchouta + Punch-Out!! (Rev A) + + + punchoutj + Punch-Out!! (Japan) + + + punchy + Punchy The Clown (R02) + + + punchy3 + Punchy The Clown (R03) + + + punipic + The Punisher (bootleg with PIC16C57, set 1) + + + punipic2 + The Punisher (bootleg with PIC16C57, set 2) + + + punipic3 + The Punisher (bootleg with PIC16C57, set 3) + + + punishbs + The Punisher (1vs2 Match, Hack) + + + punishdw + The Punisher (Warriors, Hack) + + + punisher + The Punisher (World 930422) + + + punisherb + The Punisher (bootleg) + + + punisherbz + Biaofeng Zhanjing (Chinese bootleg of The Punisher) + + + punisherh + The Punisher (Hispanic 930422) + + + punisherj + The Punisher (Japan 930422) + + + punisheru + The Punisher (USA 930422) + + + punishfw + The Punisher (Framework 2020, Hack) + + + punishhr + The Punisher (1vs2 Invincible, Hack) + + + punishly + The Punisher (1vs2 Flame, Hack) + + + punishpf + The Punisher (1vs2 Perfect, Hack) + + + punishrj + The Punisher (Japan 930422) + + + punishru + The Punisher (US 930422) + + + punk + Punk! + + + punkshot + Punk Shot (US 4 Players) + + + punkshot2 + Punk Shot (US 2 Players) + + + punkshot2a + Punk Shot (Asia 2 Players, hacked?) + + + punkshot2e + Punk Shot (World 2 Players) + + + punkshotj + Punk Shot (Japan 2 Players) + + + punksht2 + Punk Shot (US 2 Players) + + + punkshtj + Punk Shot (Japan 2 Players) + + + punkywil + Punky Willy + + + pururun + Pururun (set 1) + + + pururuna + Pururun (set 2) + + + pushman + Pushman (Korea, set 1) + + + pushmana + Pushman (Korea, set 2) + + + pushmans + Pushman (American Sammy license) + + + pushmant + Pushman (Top Tronic license) + + + pushover + Push-Over (Summit Coin) + + + puyo + Puyo Puyo (World) + + + puyobl + Puyo Puyo (World, bootleg) + + + puyoda + Puyo Puyo Da! (Japan) + + + puyofev + Puyo Pop Fever (World) (GDS-0034) + + + puyofevj + Puyo Puyo Fever (Japan) (GDS-0031) + + + puyofevp + Puyo Puyo Fever (prototype ver 0.01) + + + puyoj + Puyo Puyo (Japan, Rev B) + + + puyoja + Puyo Puyo (Japan, Rev A) + + + puyomedal + Puyo Puyo! The Medal Edition + + + puyopuy2 + Puyo Puyo 2 (Japan) + + + puyopuya + Puyo Puyo (Japan) (Rev A) + + + puyopuyb + Puyo Puyo (English) (bootleg) + + + puyopuyo + Puyo Puyo (Japan) + + + puyosun + Puyo Puyo Sun (J 961115 V0.001) + + + puzlbang + Puzzle Bang Bang (Korea, version 2.9 / 990108) + + + puzlbanga + Puzzle Bang Bang (Korea, version 2.8 / 990106) + + + puzlclub + Puzzle Club (Japan prototype) + + + puzldama + Taisen Puzzle-dama (ver JAA) + + + puzloopj + Puzz Loop (Japan) + + + puzloopu + Puzz Loop (USA) + + + puzlstar + Puzzle Star / Mohuan Xingzuo (ver. 100MG, 09/30/99 build) + + + puzlstara + Puzzle Star / Mohuan Xingzuo (ver. 100MG, 09/20/99 build) + + + puzzball + Puzz Ball (Japan, PZB1 Ver.C) + + + puzzballa + Puzz Ball (Japan, PZB1 Ver.A) + + + puzzldpr + Puzzle De Pon! R! + + + puzzledp + Puzzle De Pon! + + + puzzlekg + Puzzle King (Dance & Puzzle) + + + puzzleme + Puzzle Me! + + + puzzlet + Puzzlet (Japan) + + + puzzli + Puzzli (revision B) + + + puzzli2 + Puzzli 2 / Pao Pao Yu (ver. 100) + + + puzzli2s + Puzzli 2 Super / Pao Pao Yu Super (ver. 200) + + + puzzlia + Puzzli (revision A) + + + puzzloop + Puzz Loop (Europe, v0.94) + + + puzzloopa + Puzz Loop (Asia) + + + puzzloope + Puzz Loop (Europe, v0.93) + + + puzzloopj + Puzz Loop (Japan) + + + puzzloopk + Puzz Loop (Korea) + + + puzzloopu + Puzz Loop (USA) + + + puzzlove + PuzzLove + + + puzzlovek + PuzzLove (Korea) + + + puzznic + Puzznic (World) + + + puzznicb + Puzznic (bootleg, set 1) + + + puzznicba + Puzznic (bootleg, set 2) + + + puzznici + Puzznic (Italian bootleg) + + + puzznicj + Puzznic (Japan) + + + puzznicu + Puzznic (US) + + + pwball + Power Ball (prototype) + + + pwerplay + Power Play (Pinball) + + + pwheelsj + Power Wheels (Japan, Rev 2, Linkable) + + + pwrchanc + Powerful Chance + + + pwrflip + Power Flipper Pinball Shooting (v1.33) + + + pwrgoal + Taito Power Goal (Ver 2.5O 1994/11/03) + + + pwrinst2 + Power Instinct 2 (US, Ver. 94.04.08, set 1) + + + pwrinst2a + Power Instinct 2 (US, Ver. 94.04.08, set 2) + + + pwrinst2j + Gouketsuji Ichizoku 2 (Japan, Ver. 94.04.08) + + + pwrinst2k + Power instinct 2 (Korea, ver. 94/04/08) + + + pwrkick + Power Kick (Japan) + + + pwrshovl + Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J) + + + pwrshovla + Power Shovel ni Norou!! - Power Shovel Simulator (v2.07J, alt) + + + pwsuper + Player's World - Super (0154019, US) + + + py2k2 + Photo Y2K 2 / Chaoji Bi Yi Bi 2 / Dajia Lai Zhao Cha 2 / Real and Fake 2 Photo Y2K (M101XX 05/25/01 11:02:54) + + + py2k2100 + Photo Y2K 2 / Chaoji Bi Yi Bi 2 / Dajia Lai Zhao Cha 2 / Real and Fake 2 Photo Y2K (ver. 100, Japanese Board) + + + pyenaget + Pye-nage Taikai + + + pyramid + Pyramid (Dutch, Game Card 95-750-898) + + + pyros + Pyros (US) + + + pyutakun + Pyuuta-kun (Japan) + + + pz_f4 + The Party Zone (F-4) + + + pz_l1 + The Party Zone (L-1) + + + pz_l2 + The Party Zone (L-2) + + + pz_l3 + The Party Zone (L-3) + + + pzlbowl + Puzzle De Bowling (Japan) + + + pzlbreak + Puzzle Break (set 1) + + + pzlbreaka + Puzzle Break (set 2) + + + pzlestar + Puzzle Star (Sang Ho Soft) + + + pzletime + Puzzle Time (prototype) + + + pzloop2 + Puzz Loop 2 (Europe 010302) + + + pzloop2j + Puzz Loop 2 (Japan 010226) + + + pzloop2jd + Puzz Loop 2 (Japan 010226 Phoenix Edition) (bootleg) + + + pzloop2jr1 + Puzz Loop 2 (Japan 010205) + + + qad + Quiz & Dragons: Capcom Quiz Game (USA 920701) + + + qadj + Quiz and Dragons (Japan 940921) + + + qadjr + Quiz & Dragons: Capcom Quiz Game (Japan Resale Ver. 940921) + + + qb3 + QB-3 (prototype) + + + qbeebing + Queen Bee Bingo + + + qbert + Q*bert (US set 1) + + + qberta + Q*bert (US set 2) + + + qbertj + Q*bert (Japan) + + + qbertjp + Q*bert (Japan) + + + qbertqub + Q*bert's Qubes + + + qberttst + Q*bert (early test version) + + + qbquest + Q*Bert's Quest + + + qbtrktst + Q*bert Board Input Test Rom + + + qc + Quarter Horse Classic + + + qcash + Queens of Cash (0100706V, NSW/ACT) + + + qcrayon + Quiz Crayon Shinchan (Japan) + + + qcrayon2 + Crayon Shinchan Orato Asobo (Japan) + + + qczl + Qing Cheng Zhi Lian + + + qdrmfgp + Quiz Do Re Mi Fa Grand Prix (Japan) + + + qdrmfgp2 + Quiz Do Re Mi Fa Grand Prix 2 - Shin-Kyoku Nyuukadayo (Japan) + + + qgakumon + Quiz Gakumon no Susume (Japan ver. JA1 Type H) + + + qgh + Quiz Ghost Hunter (Japan, ROM Based) + + + qgundam + Quiz Mobile Suit Gundam: Monsenshi (QG1 Ver. A) + + + qhzb + Que Huang Zheng Ba (V100CN) + + + qiwang + Qi Wang + + + qix + Qix (Rev 2) + + + qix2 + Qix II (Tournament) + + + qixa + Qix (set 2, smaller roms) + + + qixb + Qix (set 2, larger roms) + + + qixo + Qix (set 3, earlier) + + + qjinsei + Quiz Jinsei Gekijoh (Japan) + + + qlgs + Que Long Gaoshou (S501CN) + + + qmegamis + Quiz Aa! Megami-sama ~Tatakau Tsubasa to Tomoni~ (Japan) + + + qmhayaku + Quiz-Mahjong Hayaku Yatteyo! (Japan) + + + qncrash + Quick & Crash (Japan, V2.200) + + + qncrasha + Quick & Crash (US) + + + qndream + Quiz Nanairo Dreams: Nijiirochou no Kiseki (Japan 960826) + + + qnile + Queen of the Nile (0300439V, NSW/ACT) + + + qnilea + Queen of the Nile (0200439V, NSW/ACT) + + + qnilea6 + Queen of the Nile (3J011111, NSW/ACT) + + + qnilea6a + Queen of the Nile (10204311, ASP) + + + qnilea6b + Queen of the Nile (10192311, ASP) + + + qnileb + Queen of the Nile (0100439V, NSW/ACT) + + + qnilebr + Queen of the Nile (0101707V, Brazil) + + + qnilec + Queen of the Nile (0300440V, NSW/ACT) + + + qnilece + Queen of the Nile - Cash Express (AHG1609, US) + + + qnilecea + Queen of the Nile - Cash Express (AHG1525, US) + + + qnileceb + Queen of the Nile - Cash Express (AHG1608, US) + + + qniled + Queen of the Nile (0101139V, NSW/ACT) + + + qnilefl + Queen of the Nile - Fast Lane (0101670V, Queensland) + + + qnilejc + Queen of the Nile Special Edition - Jackpot Carnival (20123911, NSW/ACT) + + + qnilejcsp + Queen of the Nile Special Edition - Jackpot Carnival (20123911, NSW/ACT, Show Program) + + + qnilemax + Queen of the Nile - Maximillions (0401072V, NSW/ACT) + + + qnilemt2 + Queen of the Nile - Money Train II (10203811, Queensland) + + + qnilenl + Queen of the Nile (0301059V, Holland) + + + qnilenz + Queen of the Nile (0300785V, New Zealand) + + + qnilepe + Queen of the Nile (04J00784, Peru) + + + qnileq + Queen of the Nile (0201200V, Queensland) + + + qnilese + Queen of the Nile Special Edition (20102811, NSW/ACT) + + + qnilesea + Queen of the Nile Special Edition (10102811, NSW/ACT) + + + qnileseb + Queen of the Nile Special Edition (10127411, ASP) + + + qnileu + Queen of the Nile (GHG4091-02, US) + + + qnileua + Queen of the Nile (GHG4091-03, US) + + + qntoond + Quintoon (Dutch, Game Card 95-750-243) + + + qntoondo + Quintoon (Dutch, Game Card 95-750-136) + + + qofd3 + Quest of D Oukoku no Syugosya Ver. 3.02 (CDV-10026D) + + + qofdtbk + Quest of D The Battle Kingdom (CDV-10035B) + + + qos + A Question of Sport (set 1, 39-960-107) + + + qosa + A Question of Sport (set 2, 39-960-099) + + + qosb + A Question of Sport (set 3, 39-960-089) + + + qrouka + Quiz Rouka Ni Tattenasai (Japan, ROM Based) + + + qsangoku + Quiz Sangokushi (Japan) + + + qsheba + Queen of Sheba (10133721, NSW/ACT) + + + qshebaa + Queen of Sheba (30146921, ASP) + + + qsww + Quiz Syukudai wo Wasuremashita (Japan, Floppy Based, FD1094 317-0058-08b) + + + qtbird + Q.T. Bird (0500009V, NSW/ACT) + + + qtheater + Quiz Theater - 3tsu no Monogatari (Ver 2.3J 1994/11/10) + + + qtono1 + Quiz Tonosama no Yabou (Japan) + + + qtono2 + Quiz Tonosama no Yabou 2 Zenkoku-ban (Japan 950123) + + + qtono2j + Quiz Tonosama no Yabou 2: Zenkoku-ban (Japan 950123) + + + qtorimon + Quiz Torimonochou (Japan) + + + quaak + Quaak (bootleg of Frogger) + + + quake + Quake Arcade Tournament (Release Beta 2) + + + quantum + Quantum (rev 2) + + + quantum1 + Quantum (rev 1) + + + quantump + Quantum (prototype) + + + quaquiz2 + Quadro Quiz II + + + quarterb + Quarterback (rev 5) + + + quarterba + Quarterback (rev 2) + + + quarterbc + Quarterback (rev 1, cocktail) + + + quarterh + Quarter Horse (set 1, Pioneer PR-8210) + + + quarterha + Quarter Horse (set 2, Pioneer PR-8210) + + + quarterhb + Quarter Horse (set 3, Pioneer LD-V2000) + + + quartet + Quartet (Rev A, 8751 315-5194) + + + quartet2 + Quartet 2 (8751 317-0010) + + + quartet2a + Quartet 2 (unprotected) + + + quarteta + Quartet (8751 315-5194) + + + quartetj + Quartet (8751 315-5194) + + + quarth + Quarth (Japan) + + + quartrba + Quarterback (set 2) + + + quartt2j + Quartet 2 (unprotected) + + + quasar + Quasar (set 1) + + + quasara + Quasar (set 2) + + + queen + Queen? + + + queenbee + Queen Bee (Ver. 114) + + + queenbeeb + Queen Bee (Brazil, Ver. 202) + + + queenbeei + Queen Bee (Israel, Ver. 100) + + + queenbeesa + Queen Bee (SA-101-HARD) + + + queenotg + Queen of the Games + + + quester + Quester (Japan) + + + questers + Quester Special Edition (Japan) + + + questofd + Quest of D (CDV-10005C) + + + quickjac + Quick Jack + + + quickp5 + Quick Pick 5 + + + quicksil + Quicksilver + + + quingo + Quingo Export (5.00) + + + quintond + Quintoon (UK, Game Card 95-751-206, Datapak) + + + quintono + Quintoon (UK, Game Card 95-750-203) + + + quintoon + Quintoon (UK, Game Card 95-750-206) + + + quiz + Quiz (Revision 2) + + + quiz18k + Miyasu Nonki no Quiz 18-Kin + + + quiz211 + Quiz (Revision 2.11) + + + quiz365 + Quiz 365 (Japan) + + + quiz365t + Quiz 365 (Hong Kong & Taiwan) + + + quizard + Quizard (v1.8, German, i8751 DE 11 D3) + + + quizard2 + Quizard 2 (v2.3, German, i8751 DN 122 D3) + + + quizard2_22 + Quizard 2 (v2.2, German, i8751 DN 122 D3) + + + quizard3 + Quizard 3 (v3.4, German, i8751 DE 132 D3) + + + quizard3_32 + Quizard 3 (v3.2, German, i8751 DE 132 D3) + + + quizard3a + Quizard 3 (v3.4, German, i8751 DE 132 A1) + + + quizard4 + Quizard 4 Rainbow (v4.2, German, i8751 DE 142 D3) + + + quizard4_40 + Quizard 4 Rainbow (v4.0, German, i8751 DE 142 D3) + + + quizard4_41 + Quizard 4 Rainbow (v4.1, German, i8751 DE 142 D3) + + + quizard4cz + Quizard 4 Rainbow (v4.2, Czech, i8751 TS142 CZ1) + + + quizard_10 + Quizard (v1.0, German, i8751 DE 11 D3) + + + quizard_12 + Quizard (v1.2, German, i8751 DE 11 D3) + + + quizard_17 + Quizard (v1.7, German, i8751 DE 11 D3) + + + quizardff + Quizard Fun and Fascination (French Edition V1 - 01/96) + + + quizardi + Quizard (v1.8, Italian, i8751 IT 11 I2) + + + quizardi_12 + Quizard (v1.2, Italian, i8751 IT 11 I2) + + + quizardi_17 + Quizard (v1.7, Italian, i8751 IT 11 I2) + + + quizchq + Quiz Channel Question (Japan, Ver 1.00) + + + quizchqk + Quiz Channel Question (Korea, Ver 1.10) + + + quizchql + Quiz Channel Question (Taiwan?, Ver 1.23) + + + quizdai2 + Quiz Meitantei Neo & Geo - Quiz Daisousa Sen part 2 (NGM-042 ~ NGH-042) + + + quizdais + Quiz Daisousa Sen - The Last Count Down (NGM-023 ~ NGH-023) + + + quizdaisk + Quiz Salibtamjeong - The Last Count Down (Korean localized Quiz Daisousa Sen) + + + quizdna + Quiz DNA no Hanran (Japan) + + + quizf1 + Quiz F1 1-2 Finish (Japan) + + + quizhq + Quiz H.Q. (Japan) + + + quizhuhu + Moriguchi Hiroko no Quiz de Hyuu!Hyuu! (Ver 2.2J 1995/05/25) + + + quizkof + Quiz King of Fighters (SAM-080 ~ SAH-080) + + + quizkofk + Quiz King of Fighters (Korea) + + + quizmeku + Quiz Mekurumeku Story (Japan, ROM Based) + + + quizmoon + Quiz Bishoujo Senshi Sailor Moon - Chiryoku Tairyoku Toki no Un + + + quizmstr + Quizmaster (German) + + + quizo + Quiz Olympic (set 1) + + + quizoa + Quiz Olympic (set 2) + + + quizpani + Quiz Panicuru Fantasy + + + quizpun + Quiz Punch + + + quizpun2 + Quiz Punch II + + + quizqgd + Quiz Keitai Q mode (GDL-0017) + + + quizshow + Quiz Show + + + quiztou + Nettou! Gekitou! Quiztou!! (Japan) + + + quiztvqq + Quiz TV Gassyuukoku Q&Q (Japan) + + + quizvadr + Quizvaders (39-360-078) + + + quizvid + Video Quiz + + + qwak + Qwak (prototype) + + + qwakttl + Qwak!/Quack + + + qzchikyu + Quiz Chikyu Bouei Gun (Japan) + + + qzkklgy2 + Quiz Kokology 2 + + + qzkklogy + Quiz Kokology + + + qzquest + Quiz Quest - Hime to Yuusha no Monogatari (Japan) + + + qzshowby + Quiz Sekai wa SHOW by shobai (Japan) + + + r2dtank + R2D Tank + + + r2dx_v33 + Raiden II New / Raiden DX (newer V33 PCB) (Raiden DX EEPROM) + + + r2dx_v33_r2 + Raiden II New / Raiden DX (newer V33 PCB) (Raiden II EEPROM) + + + r_alaska + Alaska + + + r_antar + Antar (Recel) + + + r_blackm4 + Black Magic 4 + + + r_blackmag + Black Magic + + + r_cavalier + Cavalier + + + r_crzyrace + Crazy Race + + + r_fairfght + Fair Fight + + + r_flipper + The Flipper Game + + + r_hotcold + Hot & Cold + + + r_mrdoom + Mr. Doom + + + r_mrevil + Mr. Evil + + + r_pokrplus + Poker Plus + + + r_quijote + Don Quijote + + + r_screech + Screech + + + r_spcgame7 + Space Game (Bingo 6+1) + + + r_swash + SwashBuckler + + + r_torneo + Torneo + + + raaspec + Spectrum I+ + + + rab_103s + Adventures of Rocky and Bullwinkle and Friends (USA 1.03, display S1.03) + + + rab_130 + Adventures of Rocky and Bullwinkle and Friends (USA 1.30, display A1.30) + + + rab_320 + Adventures of Rocky and Bullwinkle and Friends (USA 3.20, display A3.00) + + + rabbit + Rabbit (Asia 3/6) + + + rabbita + Rabbit (Asia 1/28?) + + + rabbitj + Rabbit (Japan 3/6?) + + + rabbitjt + Rabbit (Japan 1/28, location test) + + + rabbitpk + Rabbit Poker (Arizona Poker v1.1?) + + + rabiolep + Rabio Lepus (Japan) + + + raccoon + Raccoon World + + + racedcb4 + Race Drivin' (compact, British, rev 4) + + + racedcg4 + Race Drivin' (compact, German, rev 4) + + + racedrb1 + Race Drivin' (cockpit, British, rev 1) + + + racedrb4 + Race Drivin' (cockpit, British, rev 4) + + + racedrc1 + Race Drivin' (compact, rev 1) + + + racedrc2 + Race Drivin' (compact, rev 2) + + + racedrc4 + Race Drivin' (compact, rev 4) + + + racedrcb + Race Drivin' (compact, British, rev 5) + + + racedrcg + Race Drivin' (compact, German, rev 5) + + + racedrg1 + Race Drivin' (cockpit, German, rev 2) + + + racedrg4 + Race Drivin' (cockpit, German, rev 4) + + + racedriv + Race Drivin' (cockpit, rev 5) + + + racedriv1 + Race Drivin' (cockpit, rev 1) + + + racedriv2 + Race Drivin' (cockpit, rev 2) + + + racedriv3 + Race Drivin' (cockpit, rev 3) + + + racedriv4 + Race Drivin' (cockpit, rev 4) + + + racedrivb + Race Drivin' (cockpit, British, rev 5) + + + racedrivb1 + Race Drivin' (cockpit, British, rev 1) + + + racedrivb4 + Race Drivin' (cockpit, British, rev 4) + + + racedrivc + Race Drivin' (compact, rev 5) + + + racedrivc1 + Race Drivin' (compact, rev 1) + + + racedrivc2 + Race Drivin' (compact, rev 2) + + + racedrivc4 + Race Drivin' (compact, rev 4) + + + racedrivcb + Race Drivin' (compact, British, rev 5) + + + racedrivcb4 + Race Drivin' (compact, British, rev 4) + + + racedrivcg + Race Drivin' (compact, German, rev 5) + + + racedrivcg4 + Race Drivin' (compact, German, rev 4) + + + racedrivcp + Race Drivin' (compact, prototype) + + + racedrivg + Race Drivin' (cockpit, German, rev 5) + + + racedrivg1 + Race Drivin' (cockpit, German, rev 2) + + + racedrivg4 + Race Drivin' (cockpit, German, rev 4) + + + racedrivpan + Race Drivin' Panorama (prototype, rev 2.1) + + + racedrv1 + Race Drivin' (cockpit, rev 1) + + + racedrv2 + Race Drivin' (cockpit, rev 2) + + + racedrv3 + Race Drivin' (cockpit, rev 3) + + + racedrv4 + Race Drivin' (cockpit, rev 4) + + + racedrvb + Race Drivin' (cockpit, British, rev 5) + + + racedrvc + Race Drivin' (compact, rev 5) + + + racedrvg + Race Drivin' (cockpit, German, rev 5) + + + raceon + Race On! (World, RO2 Ver. A) + + + raceonj + Race On! (Japan, RO1 Ver. B) + + + rachero + Racing Hero (FD1094 317-0144) + + + racherod + Racing Hero (bootleg of FD1094 317-0144 set) + + + racinfrc + Racin' Force (ver EAC) + + + racinfrcu + Racin' Force (ver UAB) + + + racingb + Racing Beat (World) + + + racingbj + Racing Beat (Japan) + + + racingj + Racing Jam (GQ676UAC) + + + racingj2 + Racing Jam: Chapter II (GQ888UAA) + + + racingj2a + Racing Jam: Chapter II (GQ888AAA) + + + racingj2e + Racing Jam: Chapter II (GQ888EAA) + + + racingj2j + Racing Jam: Chapter II (GQ888JAA) + + + racingj2m + Racing Jam: Chapter II (GM888UAA) + + + racingj2ma + Racing Jam: Chapter II (GM888AAA) + + + racingj2me + Racing Jam: Chapter II (GM888EAA) + + + racingj2mj + Racing Jam: Chapter II (GM888JAA) + + + racingj2n + Racing Jam: Chapter II (GN888UAA) + + + racingj2na + Racing Jam: Chapter II (GN888AAA) + + + racingj2ne + Racing Jam: Chapter II (GN888EAA) + + + racingj2nj + Racing Jam: Chapter II (GN888JAA) + + + racingja + Racing Jam (GQ676AAC) + + + racingje + Racing Jam (GQ676EAC) + + + racingjj + Racing Jam (GQ676JAC) + + + racingjm + Racing Jam (GM676UAC) + + + racingjma + Racing Jam (GM676AAC) + + + racingjme + Racing Jam (GM676EAC) + + + racingjmj + Racing Jam (GM676JAC) + + + racingjn + Racing Jam (GN676UAC) + + + racingjna + Racing Jam (GN676AAC) + + + racingjne + Racing Jam (GN676EAC) + + + racingjnj + Racing Jam (GN676JAC) + + + racjamdx + Racing Jam DX + + + rackempp + Rack 'em Up! (Pinball) + + + rackemup + Rack 'em Up (version L) + + + racknrol + Rack + Roll + + + racoon + Racoon World + + + radarscp + Radar Scope (TRS02, rev. D) + + + radarscp1 + Radar Scope (TRS01) + + + radarscpc + Radar Scope (TRS02?, rev. C) + + + radarzn1 + Radar Zone (Rev.1) + + + radarznt + Radar Zone (Tuni) + + + radarzon + Radar Zone + + + radarzon1 + Radar Zone (Rev.1) + + + radarzont + Radar Zone (Tuni) + + + radcl_g1 + Radical! (G-1) + + + radcl_l1 + Radical! (L-1) + + + radcl_p3 + Radical! (P-3) + + + radendur + Radical Enduro (early prototype) + + + radikalb + Radikal Bikers (version 2.02) + + + radikalba + Radikal Bikers (version 2.02, Atari license) + + + radikaldrt + Radikal Darts (Diana Version 7.29.25) + + + radirgy + Radirgy (Japan, Rev A) (GDL-0032A) + + + radirgyn + Radirgy Noa (Japan) + + + radirgyo + Radirgy (Japan) (GDL-0032) + + + radm + Rad Mobile (World) + + + radmu + Rad Mobile (US) + + + radr + Rad Rally (World) + + + radrad + Radical Radial (US) + + + radradj + Radical Radial (Japan) + + + radrj + Rad Rally (Japan) + + + radru + Rad Rally (US) + + + raflesia + Rafflesia (315-5162) + + + raflesiau + Rafflesia (not encrypted) + + + ragnagrd + Ragnagard / Shin-Oh-Ken + + + ragtime + The Great Ragtime Show (Japan v1.5, 92.12.07) + + + ragtimea + The Great Ragtime Show (Japan v1.3, 92.11.26) + + + raiden + Raiden (World set 1) + + + raiden2 + Raiden II (US, set 1) + + + raiden2au + Raiden II (Australia) + + + raiden2dx + Raiden II (harder, Raiden DX hardware, Korea) + + + raiden2e + Raiden II (easier, Korea) + + + raiden2ea + Raiden II (easier, Japan) + + + raiden2eg + Raiden II (easier, Germany) + + + raiden2es + Raiden II (Spain) + + + raiden2eu + Raiden II (easier, US set 2) + + + raiden2eua + Raiden II (easier, US set 1) + + + raiden2eub + Raiden II (easier, US set 3) + + + raiden2eup + Raiden II (easier, US, prototype? 11-16) + + + raiden2f + Raiden II (France) + + + raiden2g + Raiden II (Germany) + + + raiden2gb + Raiden II (Great Britain) + + + raiden2hk + Raiden II (Hong Kong) + + + raiden2i + Raiden II (Italy) + + + raiden2j + Raiden II (Japan) + + + raiden2k + Raiden II (harder, Korea) + + + raiden2nl + Raiden II (Holland) + + + raiden2sw + Raiden II (Switzerland) + + + raiden2u + Raiden II (US, set 2) + + + raiden3 + Raiden III (v2.01J) + + + raiden4 + Raiden IV (v1.00J) + + + raidena + Raiden (Alternate Hardware) + + + raidenb + Raiden (World set 2, newer hardware) + + + raidendx + Raiden DX (UK) + + + raidendxa1 + Raiden DX (Hong Kong, set 1) + + + raidendxa2 + Raiden DX (Hong Kong, set 2) + + + raidendxch + Raiden DX (China) + + + raidendxg + Raiden DX (Germany) + + + raidendxj + Raiden DX (Japan, set 1) + + + raidendxja + Raiden DX (Japan, set 2) + + + raidendxk + Raiden DX (Korea) + + + raidendxnl + Raiden DX (Holland) + + + raidendxpt + Raiden DX (Portugal) + + + raidendxu + Raiden DX (US) + + + raidenj + Raiden (Japan) + + + raidenk + Raiden (Korea) + + + raidenkb + Raiden (Korea, bootleg) + + + raidenm + Raiden (Modular System) + + + raident + Raiden (Taiwan) + + + raidenu + Raiden (US set 1) + + + raidenua + Raiden (US set 2, SEI8904 hardware) + + + raidenub + Raiden (US set 3, newer hardware) + + + raiders + Raiders + + + raiders5 + Raiders5 + + + raiders5t + Raiders5 (Japan, set 1) + + + raiders5ta + Raiders5 (Japan, set 2, bootleg?) + + + raidersr3 + Raiders (Rev.3) + + + raidrs5t + Raiders5 (Japan) + + + raiga + Raiga - Strato Fighter (Japan) + + + raimais + Raimais (World, rev 1) + + + raimaisj + Raimais (Japan, rev 1) + + + raimaisjo + Raimais (Japan) + + + raimfire + Ready...Aim...Fire! + + + rainbow + Rainbow Islands (new version) + + + rainbowe + Rainbow Islands (Extra) + + + rainbowo + Rainbow Islands (old version) + + + rainwarr + Rainbow Warriors (0101132V, NSW/ACT) + + + rainwarrce + Rainbow Warriors - Cash Express (0101332V, NSW/ACT) + + + raizpin + Raizin Ping Pong (V2.01O) + + + raizpinj + Raizin Ping Pong (V2.01J) + + + rally + Rally + + + rallybik + Rally Bike (Europe, US) / Dash Yarou (Japan) + + + rallych + Rally Chase (Neo CD conversion) + + + rallypnt2 + Rally Point 2 + + + rallys + Rallys (bootleg of Spectar, set 1) + + + rallysa + Rallys (bootleg of Spectar, set 2) + + + rallyx + Rally X (32k Ver.?) + + + rallyxa + Rally X + + + rallyxeg + Rally X (Video Game bootleg) + + + rallyxm + Rally X (Midway) + + + rallyxmr + Rally X (Model Racing bootleg) + + + rambo + Rambo (Export) + + + rambo3 + Rambo III (Europe) + + + rambo3a + Rambo III (US) + + + rambo3ae + Rambo III (Europe set 2) + + + rambo3p + Rambo III (Europe, Proto?) + + + rambo3u + Rambo III (US) + + + rampage + Rampage (Rev 3, 8/27/86) + + + rampage2 + Rampage (Rev 2, 8/4/86) + + + rampart + Rampart (Trackball) + + + rampart2p + Rampart (Joystick, bigger ROMs) + + + rampart2pa + Rampart (Joystick, smaller ROMs) + + + rampartj + Rampart (Japan, Joystick) + + + ramprt2p + Rampart (Joystick) + + + ramstar + unknown Ram Star multi-game (version 80.1) + + + rangrmsn + Ranger Mission + + + rapfire5 + Rapid Fire 5 (Konami Endeavour, NSW) + + + raphero + Rapid Hero (NMK) + + + rapheroa + Rapid Hero (Media Trading) + + + rapidfip + Rapid Fire + + + rapidfir + Rapid Fire (v1.1, Build 239) + + + rapidfira + Rapid Fire (v1.1, Build 238) + + + rapidfire + Rapid Fire (v1.0, Build 236) + + + rapidrvr + Rapid River (US, RD3 Ver. C) + + + rapidrvrp + Rapid River (prototype) + + + rapidrvrv2c + Rapid River (World, RD2 Ver. C) + + + raprichs + Rapid Riches (10194211, NSW/ACT) + + + rasce + Ra's Scepter (Russia) + + + rascot + Royal Ascot (Japan, terminal?) + + + rascot2 + Royal Ascot II + + + rastan + Rastan (World Rev 1) + + + rastana + Rastan (World) + + + rastanb + Rastan (World, earlier code base) + + + rastanu + Rastan (US Rev 1) + + + rastanu2 + Rastan (US set 2) + + + rastanua + Rastan (US) + + + rastanub + Rastan (US, earlier code base) + + + rastsag2 + Rastan Saga 2 (Japan) + + + rastsaga + Rastan Saga (Japan Rev 1) + + + rastsagaa + Rastan Saga (Japan Rev 1, earlier code base) + + + rastsagaabl + Rastan Saga (bootleg, Japan Rev 1, earlier code base) + + + rastsagab + Rastan Saga (Japan, earlier code base) + + + rastsagabr + Rastan Saga (Portuguese-BR Translation v1.11, Hack) + + + ratrc_l1 + Rat Race (L-1) + + + raven + Raven + + + ravena + Raven (alternate set) + + + raveng + Raven (German) + + + raverace + Rave Racer (World, RV2 Ver.B) + + + raveracej + Rave Racer (Japan, RV1 Ver.B) + + + raveraceja + Rave Racer (Japan, RV1) + + + raveracw + Rave Racer (Rev. RV2, World) + + + raycris + Ray Crisis (V2.03O 1998/11/15 15:43) + + + raycrisj + Ray Crisis (V2.03J 1998/11/15 15:43) + + + rayforce + Ray Force (Ver 2.3A 1994/01/20) + + + rayforcej + Ray Force (Ver 2.3J 1994/01/20) + + + rayforcj + Rayforce (Japan) + + + raystorm + Ray Storm (Ver 2.06A) + + + raystormg + Ray Storm (VER 2.60G) + + + raystormj + Ray Storm (Ver 2.05J) + + + raystormo + Ray Storm (Ver 2.05O) + + + raystormu + Ray Storm (Ver 2.05A) + + + razmataz + Razzmatazz + + + rbff1 + Real Bout Fatal Fury / Real Bout Garou Densetsu (NGM-095 ~ NGH-095) + + + rbff1a + Real Bout Fatal Fury / Real Bout Garou Densetsu (bug fix revision) + + + rbff1k + Real Bout Fatal Fury / Real Bout Garou Densetsu (Korean release) + + + rbff1ka + Real Bout Fatal Fury / Real Bout Garou Densetsu (Korean release, bug fix revision) + + + rbff2 + Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - The Newcomers (NGM-2400) + + + rbff2a + Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - The Newcomers (set 2) + + + rbff2bs + Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - The Newcomers (Secret Character, Hack) + + + rbff2h + Real Bout Fatal Fury 2 - The Newcomers / Real Bout Garou Densetsu 2 - The Newcomers (NGH-2400) + + + rbff2k + Real Bout Fatal Fury 2 - The Newcomers (Korean release) + + + rbffspbs + Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Boss, Hack) + + + rbffspec + Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special + + + rbffspeck + Real Bout Fatal Fury Special / Real Bout Garou Densetsu Special (Korean release) + + + rbibb + Vs. Atari R.B.I. Baseball (set 1) + + + rbibba + Vs. Atari R.B.I. Baseball (set 2) + + + rbisland + Rainbow Islands (rev 1) + + + rbislande + Rainbow Islands - Extra Version + + + rbislando + Rainbow Islands + + + rblaster + Road Blaster (Data East LD) + + + rbmk + Shizhan Majiang Wang (Version 8.8) + + + rbowlorama + Rockin' Bowl-O-Rama (v2.1.1) + + + rbspm + Shizhan Ding Huang Maque (Version 4.1) + + + rbtapper + Tapper (Root Beer) + + + rcasino + Royal Casino (D-2608208A1-2) + + + rcasino1 + Royal Casino (D-2608208A1-1, Larger Board) + + + rcasino2 + Royal Casino (D-2608208A1-1, Smaller Board, set 2) + + + rcasinoo + Royal Casino (D-2608208A1-1, Smaller Board, set 1) + + + rcdego + RC De Go (V2.03J 1999/05/22 19:29) + + + rcdino4 + Royal Card (Italian, Dino 4 hardware, encrypted) + + + rchase + Rail Chase (World) + + + rchase2 + Rail Chase 2 (Revision A) + + + rchasej + Rail Chase (Japan) + + + rchasejb + Rail Chase (Japan, Rev B) + + + rcirulet + Ruleta RCI (6-players, Spanish) + + + rclimb + Rock Climber (040815 World) + + + rclimb_10 + Rock Climber (110111 Entertainment A) + + + rclimb_11 + Rock Climber (110124 Entertainment A) + + + rclimb_12 + Rock Climber (110204 Entertainment A) + + + rclimb_13 + Rock Climber (110311 Entertainment B) + + + rclimb_14 + Rock Climber (110411 Entertainment C) + + + rclimb_2 + Rock Climber (040823 World) + + + rclimb_3 + Rock Climber (040827 World) + + + rclimb_3a + Rock Climber (bootleg, 040827, backdoor) + + + rclimb_3b + Rock Climber (bootleg, 040827, new service menu) + + + rclimb_3c + Rock Climber (bootleg, 040827, VIDEO GAME-1 SK01) + + + rclimb_3d + Rock Climber (bootleg, 040827, LOTTOGAME (I)) + + + rclimb_3e + Rock Climber (bootleg, 040827, LOTOS SK01) + + + rclimb_4 + Rock Climber (070322 Russia) + + + rclimb_5 + Rock Climber (070621 Russia) + + + rclimb_7 + Rock Climber (090716 Entertainment) + + + rclimb_8 + Rock Climber (100331 Entertainment X) + + + rclimb_9 + Rock Climber (101209 Entertainment N) + + + rcorsair + Red Corsair + + + rctnew + RollerCoaster Tycoon (CPU 7.02, display A7.01, ARM7 sound board) + + + rctycn + RollerCoaster Tycoon (CPU 7.02, display A7.01) + + + rctycn_400 + RollerCoaster Tycoon (CPU 4.00, display A4.00) + + + rctycn_600 + RollerCoaster Tycoon (CPU 6.00, display A6.00) + + + rctycn_701 + RollerCoaster Tycoon (CPU 7.01, display A7.01) + + + rctycnf + RollerCoaster Tycoon (CPU 7.02, display F7.01, France) + + + rctycnf_400 + RollerCoaster Tycoon (CPU 4.00, display F4.00, France) + + + rctycnf_600 + RollerCoaster Tycoon (CPU 6.00, display F6.00, France) + + + rctycnf_701 + RollerCoaster Tycoon (CPU 7.01, display F7.00, France) + + + rctycng + RollerCoaster Tycoon (CPU 7.02, display G7.01, Germany) + + + rctycng_400 + RollerCoaster Tycoon (CPU 4.00, display G4.00, Germany) + + + rctycng_701 + RollerCoaster Tycoon (CPU 7.01, display G7.00, Germany) + + + rctycni + RollerCoaster Tycoon (CPU 7.02, display I7.01, Italy) + + + rctycni_400 + RollerCoaster Tycoon (CPU 4.00, display I4.00, Italy) + + + rctycni_600 + RollerCoaster Tycoon (CPU 6.00, display I6.00, Italy) + + + rctycni_701 + RollerCoaster Tycoon (CPU 7.01, display I7.00, Italy) + + + rctycnl + RollerCoaster Tycoon (CPU 7.02, display L7.01, Spain) + + + rctycnl_400 + RollerCoaster Tycoon (CPU 4.00, display L4.00, Spain) + + + rctycnl_600 + RollerCoaster Tycoon (CPU 6.00, display L6.00, Spain) + + + rctycnl_701 + RollerCoaster Tycoon (CPU 7.01, display L7.00, Spain) + + + rdaction + Rad Action / NinjaKun Ashura no Shou + + + rdft + Raiden Fighters (Germany) + + + rdft2 + Raiden Fighters 2 - Operation Hell Dive (Germany) + + + rdft22kc + Raiden Fighters 2 - Operation Hell Dive 2000 (China, SYS386I) + + + rdft2a + Raiden Fighters 2 - Operation Hell Dive (Hong Kong) + + + rdft2aa + Raiden Fighters 2 - Operation Hell Dive (Korea) + + + rdft2it + Raiden Fighters 2 - Operation Hell Dive (Italy) + + + rdft2j + Raiden Fighters 2 - Operation Hell Dive (Japan set 1) + + + rdft2ja + Raiden Fighters 2 - Operation Hell Dive (Japan set 2) + + + rdft2jb + Raiden Fighters 2 - Operation Hell Dive (Japan set 3) + + + rdft2jc + Raiden Fighters 2 - Operation Hell Dive (Japan set 4) + + + rdft2s + Raiden Fighters 2 - Operation Hell Dive (Switzerland) + + + rdft2t + Raiden Fighters 2 - Operation Hell Dive (Taiwan) + + + rdft2u + Raiden Fighters 2 - Operation Hell Dive (US) + + + rdft2us + Raiden Fighters 2 - Operation Hell Dive (US, single board) + + + rdfta + Raiden Fighters (Austria) + + + rdftadi + Raiden Fighters (Korea, SUB4 cart) + + + rdftadia + Raiden Fighters (Korea, SUB2 cart) + + + rdftam + Raiden Fighters (Hong Kong) + + + rdftau + Raiden Fighters (Australia) + + + rdftauge + Raiden Fighters (Evaluation Software For Show, Germany) + + + rdftgb + Raiden Fighters (Great Britain) + + + rdftgr + Raiden Fighters (Greece) + + + rdftit + Raiden Fighters (Italy) + + + rdftj + Raiden Fighters (Japan, earlier) + + + rdftja + Raiden Fighters (Japan, earliest) + + + rdftjb + Raiden Fighters (Japan, newer) + + + rdfts + Raiden Fighters (Taiwan, single board) + + + rdftu + Raiden Fighters (US, earlier) + + + rdftua + Raiden Fighters (US, newer) + + + rdkng_l1 + Road Kings (L-1) + + + rdkng_l2 + Road Kings (L-2) + + + rdkng_l3 + Road Kings (L-3) + + + rdkng_l4 + Road Kings (L-4) + + + re800ea + Ruleta RE-800 (earlier, no attract) + + + re800v1 + Ruleta RE-800 (v1.0, set 1) + + + re800v1a + Ruleta RE-800 (v1.0, set 2) + + + re800v3 + Ruleta RE-800 (v3.0) + + + re900 + Ruleta RE-900 + + + reactor + Reactor + + + reaktor + Reaktor (Track & Field conversion) + + + real + Real + + + realbrk + Billiard Academy Real Break (Europe) + + + realbrkj + Billiard Academy Real Break (Japan) + + + realbrkk + Billiard Academy Real Break (Korea) + + + realbrko + Billiard Academy Real Break (Europe, older) + + + realbrod + The Real Broadway (9131-20-00 R0C) + + + realbroda + The Real Broadway (9131-20-00 R0A) + + + realpunc + Real Puncher (World, v2.12O) + + + realpuncj + Real Puncher (Japan, v2.12J) + + + rebound + Rebound (Rev B) + + + rebus + Rebus + + + recalh + Recalhorn (Ver 1.42J 1994/5/11, prototype) + + + record + Record (Version 1) + + + recordbr + Recordbreaker (World) + + + redalert + Red Alert + + + redbara6 + Red Baron (10119911, NSW/ACT) + + + redbarfl + Red Baron - Fast Lane (10160711, Queensland) + + + redbarjc + Red Baron - Jackpot Carnival (10160911, Queensland) + + + redbarnp + Red Baron (Pinball) + + + redbaron + Red Baron (revised hardware) + + + redbarona + Red Baron + + + redbird + Red Bird (bootleg of Space Firebird) + + + redclash + Red Clash + + + redclashs + Red Clash (Suntronics) + + + redclasht + Red Clash (Tehkan, set 1) + + + redclashta + Red Clash (Tehkan, set 2) + + + redclask + Red Clash (Kaneko) + + + redearth + Red Earth (Europe 961121) + + + redearthn + Red Earth (Asia 961121, NO CD) + + + redearthnr1 + Red Earth (Asia 961023, NO CD) + + + redearthr1 + Red Earth (Europe 961023) + + + redfoxwp2 + Hong Hu Zhanji II (China, set 1) + + + redfoxwp2a + Hong Hu Zhanji II (China, set 2) + + + redhawk + Red Hawk (USA, Canada & South America) + + + redhawkb + Red Hawk (horizontal, bootleg) + + + redhawke + Red Hawk (Excellent Co., Ltd) + + + redhawkg + Red Hawk (horizontal, Greece) + + + redhawki + Red Hawk (horizontal, Italy) + + + redhawkk + Red Hawk (Korea) + + + redhawks + Red Hawk (horizontal, Spain, set 1) + + + redhawksa + Red Hawk (horizontal, Spain, set 2) + + + redlin2p + Redline Racer (2 players) + + + redline + Red Line (v808, encrypted) + + + redrobin + Red Robin + + + redufo + Defend the Terra Attack on the Red UFO + + + redufob + Defend the Terra Attack on the Red UFO (bootleg, set 1) + + + redufob2 + Defend the Terra Attack on the Red UFO (bootleg, set 2) + + + redufob3 + Defend the Terra Attack on the Red UFO (bootleg, set 3) + + + reelemin + Reel 'Em In (English) + + + reeleminr + Reel 'Em In (Russian) + + + reelfun + Reel Fun (Version 7.03) + + + reelfun0 + Reel Fun (Version 7.00) + + + reelfun1 + Reel Fun (Version 7.01) + + + reelmtp + Reel Magic Turbo Play + + + reelpwr + Reel Power (0100400V, NSW/ACT) + + + reelquak + Reel'N Quake! (Version 1.05) + + + reelrkfl + Reelin-n-Rockin - Fast Lane (10298611, Queensland) + + + reelrock + Reelin-n-Rockin (0100779V, NSW/ACT) + + + reelrockq + Reelin-n-Rockin (0101460V, Queensland) + + + reflexcrd + Reflex Cards (English, serial protected) + + + regulus + Regulus (315-5033, Rev A.) + + + reguluso + Regulus (315-5033) + + + regulusu + Regulus (not encrypted) + + + reikaids + Reikai Doushi - Chinese Exorcist (Japan) + + + relief + Relief Pitcher (Rev D, 07 Jun 1992 / 28 May 1992) + + + relief2 + Relief Pitcher (Rev C, 26 Apr 1992 / 08 Apr 1992) + + + relief3 + Relief Pitcher (Rev B, 10 Apr 1992 / 08 Apr 1992) + + + renaiclb + Mahjong Ren-ai Club (Japan) + + + renaimj + Renai Mahjong Idol Gakuen (Japan) + + + rendfgtr + Renda Fighter (Japan, main ver. 2.02, video ver. 2.03) + + + renegade + Renegade (US) + + + renegadeb + Renegade (US bootleg) + + + renju + Renju Kizoku - Kira Kira Gomoku Narabe + + + repulse + Repulse + + + resclunar + Rescate Lunar (Spanish bootleg of Lunar Rescue) + + + rescraid + Rescue Raider (5/11/87) (non-cartridge) + + + rescraida + Rescue Raider (stand-alone) + + + rescrdsa + Rescue Raider (Stand-Alone) + + + rescu911 + Rescue 911 (rev.1) + + + rescue + Rescue + + + rescueb + Tuono Blu (bootleg of Rescue) + + + rescuefe + Rescue (Free Enterprise Games, bootleg) + + + resdnt + Resident (040415 World) + + + resdnt_10 + Resident (100331 Entertainment X) + + + resdnt_11 + Resident (101209 Entertainment N) + + + resdnt_12 + Resident (110111 Entertainment A) + + + resdnt_13 + Resident (110124 Entertainment A) + + + resdnt_14 + Resident (110204 Entertainment A) + + + resdnt_15 + Resident (110311 Entertainment A) + + + resdnt_16 + Resident (140526 Entertainment A) + + + resdnt_17 + Resident (110411 Entertainment A) + + + resdnt_2 + Resident (040513 World) + + + resdnt_2a + Resident (bootleg, 040513, backdoor) + + + resdnt_2b + Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 1) + + + resdnt_2c + Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 2) + + + resdnt_2d + Resident (bootleg, 040513, VIDEO GAME-1 SE01 set 3) + + + resdnt_2e + Resident (bootleg, 040513, LOTTOGAME (I)) + + + resdnt_2f + Resident (bootleg, 040513, LOTO PROGRAM V-RS2) + + + resdnt_2g + Resident (bootleg, 040513, LOTOS SE01) + + + resdnt_3 + Resident (070222 Russia) + + + resdnt_5 + Resident (090722 Entertainment) + + + resdnt_6 + Resident (100311 World) + + + resdnt_8 + Resident (100311 Entertainment) + + + resdnt_9 + Resident (100316 Russia) + + + retofin1 + Return of the Invaders (bootleg set 1) + + + retofin2 + Return of the Invaders (bootleg set 2) + + + retofinv + Return of the Invaders + + + retofinvb + Return of the Invaders (bootleg, with MCU) + + + retofinvb1 + Return of the Invaders (bootleg, without MCU, set 1) + + + retofinvb2 + Return of the Invaders (bootleg, without MCU, set 2) + + + retofinvb3 + Return of the Invaders (bootleg, without MCU, set 3) + + + retofinvbv + Return of the Invaders (Video Dens bootleg, without MCU) + + + retrsam + Return of the Samurai (0400549V, NSW/ACT) + + + retrsama + Return of the Samurai (0200549V, NSW/ACT) + + + retrsamb + Return of the Samurai (0200506V, NSW/ACT) + + + retsama6 + Return of the Samurai (10117211, NSW/ACT) + + + revenger + Revenger '84 (older) + + + revlatns + Revelations + + + revngr84 + Revenger '84 (newer) + + + revx + Revolution X (rev 1.0 6/16/94) + + + revxp5 + Revolution X (prototype, rev 5.0 5/23/94) + + + rezon + Rezon + + + rezono + Rezon (earlier) + + + rf2 + Konami RF2 - Red Fighter + + + rf51w14cg + unknown Recreativos Franco slot machine (model RF51W14-CG) + + + rfjailbrk + Jail Break (Recreativos Franco slot machine) + + + rfjet + Raiden Fighters Jet (Germany) + + + rfjet2kc + Raiden Fighters Jet 2000 (China, SYS386I) + + + rfjeta + Raiden Fighters Jet (Korea) + + + rfjetj + Raiden Fighters Jet (Japan) + + + rfjets + Raiden Fighters Jet (US, single board) + + + rfjetsa + Raiden Fighters Jet (US, single board, test version?) + + + rfjett + Raiden Fighters Jet (Taiwan) + + + rfjetu + Raiden Fighters Jet (US) + + + rflshdlx + Royal Flush Deluxe + + + rfmpb + Pinball 2000: Revenge From Mars (rev. 1) + + + rfmpbr2 + Pinball 2000: Revenge From Mars (rev. 2) + + + rfsantafeg + Santa Fe Golden + + + rfsantafem + Santa Fe Mine (set 1) + + + rfsantafema + Santa Fe Mine (set 2) + + + rgum + Royal Gum (Italy) + + + rhnation + Rhythm Nation (v01.00.04, boot v3.1.5) + + + rhunting + Robot Hunting (bootleg of Death Race) + + + rhytngk + Rhythm Tengoku (Japan) + + + ribbit + Ribbit! + + + ribbitj + Ribbit! (Japan) + + + ribrac + Ribbit Racin (Lazer-Tron) + + + ridefgtj + Riding Fight (Japan) + + + ridefgtu + Riding Fight (US) + + + ridersrf + Rider's Surf + + + ridger2j + Ridge Racer 2 (Rev. RRS1, Japan) + + + ridgera2 + Ridge Racer 2 (World, RRS2) + + + ridgera28 + Ridge Racer 2 (World, RRS8) + + + ridgera2j + Ridge Racer 2 (Japan, RRS1 Ver.B) + + + ridgera2ja + Ridge Racer 2 (Japan, RRS1) + + + ridgerac + Ridge Racer (World, RR2 Ver.B) + + + ridgeraca + Ridge Racer (World, RR2) + + + ridgeracb + Ridge Racer (US, RR3 Ver.B) + + + ridgeracc + Ridge Racer (US, RR3) + + + ridgeracf + Ridge Racer Full Scale (World, RRF2) + + + ridgeracj + Ridge Racer (Japan, RR1) + + + ridgeraj + Ridge Racer (Rev. RR1, Japan) + + + ridhero + Riding Hero (NGM-006 ~ NGH-006) + + + ridheroh + Riding Hero (set 2) + + + ridingf + Riding Fight (Ver 1.0O) + + + ridingfj + Riding Fight (Ver 1.0J) + + + ridingfu + Riding Fight (Ver 1.0A) + + + ridleofp + Riddle of Pythagoras (Japan) + + + rimrck12 + Rim Rockin' Basketball (V1.2) + + + rimrck16 + Rim Rockin' Basketball (V1.6) + + + rimrck20 + Rim Rockin' Basketball (V2.0) + + + rimrockn + Rim Rockin' Basketball (V2.2) + + + rimrockn12 + Rim Rockin' Basketball (V1.2) + + + rimrockn12b + Rim Rockin' Basketball (V1.2, bootleg) + + + rimrockn15 + Rim Rockin' Basketball (V1.5) + + + rimrockn16 + Rim Rockin' Basketball (V1.6) + + + rimrockn20 + Rim Rockin' Basketball (V2.0) + + + ringball + Ring & Ball (Ver. 2.6) + + + ringdest + Ring of Destruction: Slammasters II (Europe 940902) + + + ringdesta + Ring of Destruction: Slammasters II (Asia 940831) + + + ringdestb + Ring of Destruction: Slammasters II (Brazil 940902) + + + ringdesth + Ring of Destruction: Slammasters II (Hispanic 940902) + + + ringdstd + Ring of Destruction: Slammasters II (Europe 940902 Phoenix Edition) (bootleg) + + + ringfgt + Ring Fighter (rev 1) + + + ringfgt2 + Ring Fighter (set 2) + + + ringfgta + Ring Fighter + + + ringkin2 + Ring King (US set 2) + + + ringkin3 + Ring King (US set 3) + + + ringking + Ring King (US set 1) + + + ringking2 + Ring King (US set 2) + + + ringking3 + Ring King (US set 3) + + + ringkingw + Ring King (US, Woodplace Inc.) + + + ringohja + Ring no Ohja (Japan 2 Players ver. N) + + + ringout + Ring Out 4x4 (Rev A) + + + ringouto + Ring Out 4x4 + + + ringrage + Ring Rage (Ver 2.3O 1992/08/09) + + + ringragej + Ring Rage (Ver 2.3J 1992/08/09) + + + ringrageu + Ring Rage (Ver 2.3A 1992/08/09) + + + ringragj + Ring Rage (Japan) + + + ringragu + Ring Rage (US) + + + rio + Rio + + + riot + Riot (NMK) + + + riotcity + Riot City (Japan) + + + riotw + Riot (Woong Bi) + + + rip300 + Ripley's Believe It or Not! (CPU 3.00, display A3.00) + + + rip301 + Ripley's Believe It or Not! (CPU 3.01, display A3.20) + + + rip302 + Ripley's Believe It or Not! (CPU 3.02, display A3.20) + + + rip310 + Ripley's Believe It or Not! (CPU 3.10, display A3.20) + + + ripcord + Rip Cord + + + ripf300 + Ripley's Believe It or Not! (CPU 3.00, display F3.00, France) + + + ripf301 + Ripley's Believe It or Not! (CPU 3.01, display F3.01, France) + + + ripf302 + Ripley's Believe It or Not! (CPU 3.02, display F3.01, France) + + + ripf310 + Ripley's Believe It or Not! (CPU 3.10, display F3.01, France) + + + ripg300 + Ripley's Believe It or Not! (CPU 3.00, display G3.00, Germany) + + + ripg301 + Ripley's Believe It or Not! (CPU 3.01, display G3.00, Germany) + + + ripg302 + Ripley's Believe It or Not! (CPU 3.02, display G3.00, Germany) + + + ripg310 + Ripley's Believe It or Not! (CPU 3.10, display G3.00, Germany) + + + ripi300 + Ripley's Believe It or Not! (CPU 3.00, display I3.00, Italy) + + + ripi301 + Ripley's Believe It or Not! (CPU 3.01, display I3.00, Italy) + + + ripi302 + Ripley's Believe It or Not! (CPU 3.02, display I3.00, Italy) + + + ripi310 + Ripley's Believe It or Not! (CPU 3.10, display I3.00, Italy) + + + ripl300 + Ripley's Believe It or Not! (CPU 3.00, display L3.00, Spain) + + + ripl301 + Ripley's Believe It or Not! (CPU 3.01, display L3.01, Spain) + + + ripl302 + Ripley's Believe It or Not! (CPU 3.02, display L3.01, Spain) + + + ripl310 + Ripley's Believe It or Not! (CPU 3.10, display L3.01, Spain) + + + ripleys + Ripley's Believe It or Not! (CPU 3.20, display A3.20) + + + ripleysf + Ripley's Believe It or Not! (CPU 3.20, display F3.01, France) + + + ripleysg + Ripley's Believe It or Not! (CPU 3.20, display G3.00, Germany) + + + ripleysi + Ripley's Believe It or Not! (CPU 3.20, display I3.00, Italy) + + + ripleysl + Ripley's Believe It or Not! (CPU 3.20, display L3.01, Spain) + + + ripoff + Rip Off + + + ripribit + Ripper Ribbit (Version 3.5) + + + ripribita + Ripper Ribbit (Version 2.8.4) + + + riskchal + Risky Challenge + + + rittam + R&T (Rod-Land prototype) + + + riviera + Riviera Hi-Score (2131-08, U5-4A) + + + rivieraa + Riviera Hi-Score (2131-08, U5-4) + + + rivierab + Riviera Hi-Score (2131-08, U5-2D) + + + rjammer + Roller Jammer + + + rkjanoh2 + Royal King Jang Oh 2 (v4.00 1984 Jun 10th) + + + rltennis + Reality Tennis (set 1) + + + rltennisa + Reality Tennis (set 2) + + + rmancp2j + Rockman: The Power Battle (CPS2, Japan 950922) + + + rmgoldyh + Real Mahjong Gold Yumehai / Super Real Mahjong GOLD part.2 (Japan) + + + rmhaihai + Real Mahjong Haihai (Japan, newer) + + + rmhaihai2 + Real Mahjong Haihai (Japan, older) + + + rmhaihaibl + Real Mahjong Haihai (Japan, bootleg) + + + rmhaihib + Real Mahjong Haihai (Japan, medal) + + + rmhaijin + Real Mahjong Haihai Jinji Idou Hen (Japan) + + + rmhaisei + Real Mahjong Haihai Seichouhen (Japan) + + + rmontecarlo + Rally Montecarlo + + + rmpgwt + Rampage: World Tour (rev 1.3) + + + rmpgwt11 + Rampage: World Tour (rev 1.1) + + + rndrndqs + Round and Round (Rev 6) (Quick $ilver) + + + roadblc1 + Road Blasters (cockpit, rev 1) + + + roadblcg + Road Blasters (cockpit, German, rev 1) + + + roadblg1 + Road Blasters (upright, German, rev 1) + + + roadblg2 + Road Blasters (upright, German, rev 2) + + + roadbls1 + Road Blasters (upright, rev 1) + + + roadbls2 + Road Blasters (upright, rev 2) + + + roadbls3 + Road Blasters (upright, rev 3) + + + roadblsc + Road Blasters (cockpit, rev 2) + + + roadblsg + Road Blasters (upright, German, rev 3) + + + roadblst + Road Blasters (upright, rev 4) + + + roadblst1 + Road Blasters (upright, rev 1) + + + roadblst2 + Road Blasters (upright, rev 2) + + + roadblst3 + Road Blasters (upright, rev 3) + + + roadblstc + Road Blasters (cockpit, rev 2) + + + roadblstc1 + Road Blasters (cockpit, rev 1) + + + roadblstcg + Road Blasters (cockpit, German, rev 1) + + + roadblstg + Road Blasters (upright, German, rev 3) + + + roadblstg1 + Road Blasters (upright, German, rev 1) + + + roadblstg2 + Road Blasters (upright, German, rev 2) + + + roadblstgu + Road Blasters (upright, German, rev ?) + + + roadburn + Road Burners (ver 1.04) + + + roadburn1 + Road Burners (ver 1.0) + + + roadedge + Roads Edge / Round Trip RV (rev.B) + + + roadf + Road Fighter (set 1) + + + roadf2 + Road Fighter (set 2) + + + roadf3 + Road Fighter (set 3, conversion hack on Hyper Sports PCB) + + + roadfh + Road Fighter (bootleg GX330 conversion) + + + roadfu + Road Fighter (set 3, unencrypted) + + + roadriot + Road Riot 4WD (04 Dec 1991, conversion kit) + + + roadriota + Road Riot 4WD (13 Nov 1991, conversion kit) + + + roadriotb + Road Riot 4WD (04 Jun 1991, dedicated twin) + + + roadrun1 + Road Runner (rev 1) + + + roadrun2 + Road Runner (rev 1+) + + + roadrunm + Road Runner (Midway) + + + roadrunn + Road Runner (rev 2) + + + roadrunn1 + Road Runner (rev 1) + + + roadrunn2 + Road Runner (rev 1+) + + + roadrunr + Road Runner + + + roadstar + Road Star + + + roadtrip + Road Trip (0152539, US) + + + robadv + Robin's Adventure (Version 1.7E Dual) + + + robadv2 + Robin's Adventure 2 (Version 1.7E Dual) + + + robadv2c1 + Robin's Adventure 2 (Version 1.7R, set 1) + + + robadv2c2 + Robin's Adventure 2 (Version 1.7LT, set 1) + + + robadv2c3 + Robin's Adventure 2 (Version 1.7SH, set 1) + + + robadv2d1 + Robin's Adventure 2 (Version 1.7R, set 2) + + + robadv2d2 + Robin's Adventure 2 (Version 1.7LT, set 2) + + + robadv2d3 + Robin's Adventure 2 (Version 1.7SH, set 2) + + + robadv2o + Robin's Adventure 2 (Version 1.5SH) + + + robadv2o2 + Robin's Adventure 2 (Version 1.5) + + + robadv2v1 + Robin's Adventure 2 (Version 1.7R Dual) + + + robadv2v2 + Robin's Adventure 2 (Version 1.7LT Dual) + + + robadv2v3 + Robin's Adventure 2 (Version 1.7SH Dual) + + + robadvc1 + Robin's Adventure (Version 1.7R, set 1) + + + robadvd1 + Robin's Adventure (Version 1.7R, set 2) + + + robadvo + Robin's Adventure (Version 1.5) + + + robadvv1 + Robin's Adventure (Version 1.7R Dual) + + + robby + The Adventures of Robby Roto! + + + robo_a29 + Robocop (2.9) + + + robo_a30 + Robocop (3.0) + + + robo_a34 + Robocop (3.4) + + + roboarmy + Robo Army + + + roboarmya + Robo Army (NGM-032 ~ NGH-032) + + + robocop + Robocop (World, revision 4) + + + robocop2 + Robocop 2 (Euro/Asia v0.10) + + + robocop2j + Robocop 2 (Japan v0.11) + + + robocop2u + Robocop 2 (US v0.10) + + + robocop2ua + Robocop 2 (US v0.05) + + + robocopb + Robocop (World bootleg) + + + robocopb2 + Robocop (Red Corporation World bootleg) + + + robocopi + Robocop (FMV Demo) + + + robocopj + Robocop (Japan) + + + robocopu + Robocop (US, revision 1) + + + robocopu0 + Robocop (US, revision 0) + + + robocopw + Robocop (World, revision 3) + + + robocp2j + Robocop 2 (Japan) + + + robocp2u + Robocop 2 (US) + + + robocpu0 + Robocop (US revision 0) + + + robokid + Atomic Robo-kid (World, Type-2) + + + robokidj + Atomic Robo-kid (Japan, Type-2, set 1) + + + robokidj2 + Atomic Robo-kid (Japan, Type-2, set 2) + + + robokidj3 + Atomic Robo-kid (Japan) + + + robot + Robot (Zaccaria) + + + robotbwl + Robot Bowl + + + robotf + Robot (Zaccaria, French speech) + + + robotg + Robot (Zaccaria, German speech) + + + roboti + Robot (Zaccaria, Italian speech) + + + robotron + Robotron: 2084 (Solid Blue label) + + + robotron12 + Robotron: 2084 (2012 'wave 201 start' hack) + + + robotron87 + Robotron: 2084 (1987 'shot-in-the-corner' bugfix) + + + robotrontd + Robotron: 2084 (2015 'tie-die V2' hack) + + + robotronun + Robotron: 2084 (Unidesa license) + + + robotronyo + Robotron: 2084 (Yellow/Orange label) + + + robotryo + Robotron (Yellow-Orange label) + + + robowars + Robo-War + + + robowarsf + Robo-War (French) + + + robowres + Robo Wres 2001 + + + robowresb + Robo Wres 2001 (bootleg) + + + rock + Rock + + + rock2500 + Rock 2500 + + + rock_enc + Rock Encore + + + rock_encg + Rock Encore (German) + + + rockclim + Rock Climber + + + rockduck + Rock Duck (prototype?) + + + rockg + Rock (German) + + + rockman2j + Rockman 2: The Power Fighters (Japan 960708) + + + rockmanbc + Rockman EXE Battle Chip Stadium Ver.3.00 + + + rockmanj + Rockman: The Power Battle (CPS1, Japan 950922) + + + rockmanmdl + Rockman EXE The Medal Operation + + + rockn + Rock'n Tread (Japan) + + + rockn2 + Rock'n Tread 2 (Japan) + + + rockn3 + Rock'n 3 (Japan) + + + rockn4 + Rock'n 4 (Japan, prototype) + + + rockna + Rock'n Tread (Japan, alternate) + + + rocknms + Rock'n MegaSession (Japan) + + + rockrage + Rock'n Rage (World) + + + rockragea + Rock'n Rage (prototype?) + + + rockragej + Koi no Hotrock (Japan) + + + rockragj + Koi no Hotrock (Japan) + + + rockroll + Rock 'n' Roll + + + rocktcnvy + Rocket Convoy + + + rocktris + Rock Tris + + + rocktrv2 + MTV Rock-N-Roll Trivia (Part 2) + + + rocky + Rocky + + + rockyf + Rocky (French speech) + + + rocnrope + Roc'n Rope + + + rocnropek + Roc'n Rope (Kosuka) + + + rocnropk + Roc'n Rope (Kosuka) + + + rodent + Rodent Exterminator + + + rodeokng + Rodeo King (Japan, ver 1.00) + + + rodland + Rod-Land (World, set 1) + + + rodlanda + Rod-Land (World, set 2) + + + rodlandj + Rod-Land (Japan) + + + rodlandjb + Rod-Land (Japan bootleg with unencrypted program) + + + rodlandjb2 + Rod-Land (Japan bootleg with unencrypted program and GFX) + + + rodlndjb + Rod-Land (Japan bootleg) + + + rohga + Rohga Armor Force (Asia/Europe v5.0) + + + rohga1 + Rohga Armor Force (Asia/Europe v3.0 set 1) + + + rohga2 + Rohga Armor Force (Asia/Europe v3.0 set 2) + + + rohgah + Rohga Armor Force (Hong Kong v3.0) + + + rohgau + Rohga Armor Force (US v1.0) + + + roishtar + The Return of Ishtar + + + rolcrush + Rolling Crush (version 1.07.E - 1999/02/11, Trust license) + + + rolcrusha + Rolling Crush (version 1.03.E - 1999/01/29) + + + roldfrga + The Return of Lady Frog (set 2) + + + roldfrog + The Return of Lady Frog (set 1) + + + roldfroga + The Return of Lady Frog (set 2) + + + roldisco + Roller Disco + + + roljokr1 + Rolling Joker + + + roljokr2 + Rolling Joker (v23.11.91) + + + roljokr3 + Rolling Joker (v.99.7) + + + rolla + unknown 'Rolla' slot machine + + + rollace + Roller Aces (set 1) + + + rollace2 + Roller Aces (set 2) + + + rollerg + Rollergames (US) + + + rollergj + Rollergames (Japan) + + + rollext + ROLLing eX.tre.me (US) + + + rollfr + Roll Fruit (030821) + + + rollfr_2 + Roll Fruit (040318) + + + rollfr_3 + Roll Fruit (080327) + + + rollfr_4 + Roll Fruit (080331) + + + rollfr_5 + Roll Fruit (100924) + + + rolling + Rolling + + + rollingc + Rolling Crash / Moon Base + + + rollr_d2 + Rollergames (AD-2) Prototype + + + rollr_e1 + Rollergames (PU-1) + + + rollr_ex + Rollergames (EXPERIMENTAL) + + + rollr_f2 + Rollergames (LF-2) French + + + rollr_f3 + Rollergames (LF-3) French + + + rollr_g3 + Rollergames (LG-3) Germany + + + rollr_l1 + Rollergames (LA-1) + + + rollr_l2 + Rollergames (LA-2) + + + rollr_l3 + Rollergames (LU-3) Europe + + + rollr_p2 + Rollergames (PA-2 / PA-1 Sound) + + + rollston + Rolling Stones + + + romanl + Roman Legions (Konami Endeavour, Russia) + + + rompers + Rompers (Japan, new version (Rev B)) + + + romperso + Rompers (Japan, old version) + + + ron2 + Futari Mahjong Ron II + + + rongrong + Puzzle Game Rong Rong (Europe) + + + rongrongg + Puzzle Game Rong Rong (Germany) + + + rongrongj + Puzzle Game Rong Rong (Japan) + + + ronjan + Ron Jan (set 1) + + + ronjana + Ron Jan (set 2) + + + ronjans + Ron Jan Super (set 1) + + + ronjansa + Ron Jan Super (set 2) + + + ronjansb + Ron Jan Super (set 3) + + + ropeman + Ropeman (bootleg of Roc'n Rope) + + + rota_101 + Rotation VIII (v. 1.01) + + + rota_115 + Rotation VIII (v. 1.15) + + + rotaryf + Rotary Fighter + + + rotation + Rotation VIII (v. 1.17) + + + rotd + Rage of the Dragons (NGM-2640?) + + + rotdbr + Rage of the Dragons (Portuguese edition v2.0, Hack) + + + rotdh + Rage of the Dragons (NGH-2640?) + + + rotr + Rise of the Robots (prototype) + + + rotra + Rise of the Robots (prototype, older) + + + roughrac + Rough Racer (Japan, Floppy Based, FD1094 317-0058-06b) + + + rougien + Rougien + + + roul + Super Lucky Roulette + + + roundup + Round-Up + + + roundup5 + Round Up 5 - Super Delta Force + + + route16 + Route 16 (Sun Electronics, set 1) + + + route16a + Route 16 (Centuri license, set 1) + + + route16b + Route 16 (Centuri license, set 2) + + + route16bl + Route 16 (bootleg) + + + route16c + Route 16 (Centuri license, set 3, bootleg?) + + + route16d + Route 16 (Sun Electronics, set 2) + + + routex + Route X (bootleg, set 1) + + + routexa + Route X (bootleg, set 2) + + + royal + Royal (Pool 10 hack) + + + royalcdfr + Royal Card (French) + + + royalcrd + Royal Card (German, set 1) + + + royalcrd_msx + Royal Card (stealth with MSX multigame) + + + royalcrd_nes + Royal Card (stealth with NES multigame, set 1) + + + royalcrd_nesa + Royal Card (stealth with NES multigame, set 2) + + + royalcrda + Royal Card (German, set 2) + + + royalcrdb + Royal Card (German/Polish, set 3) + + + royalcrdc + Royal Card (German, set 4) + + + royalcrdd + Royal Card (German, set 5) + + + royalcrde + Royal Card (German, set 6) + + + royalcrdf + Royal Card (Evona, Polish, encrypted) + + + royalcrdg + Royal Card (German, set 7, CMC C1030 HW) + + + royalcrdh + Royal Card (German, set 8) + + + royalcrdp + Royal Card v2.0 Professional + + + royalcrdt + Royal Card (TAB original) + + + royale + Royale (set 1) + + + royalea + Royale (set 2) + + + royaljp + Royal Card / Royal Jackpot (with a third draw)(encrypted) + + + royalmah + Royal Mahjong (Falcon bootleg, v1.01) + + + royalmj + Royal Mahjong (Japan, v1.13) + + + royalngt + Royal Night (Japan 840220 RN 2-00) + + + royalpk2 + Royal Poker 2 (Network version 3.12) + + + royalqn + Royal Queen (Japan 841010 RQ 0-07) + + + royclark + Roy Clark - The Entertainer + + + roylcrdn + Royal Card (Nichibutsu HW) + + + roylcrdna + Royal Card Part-Two (Nichibutsu HW, Ver. 1.02) + + + roypok96 + Royal Poker '96 (set 1, v97-3.5) + + + roypok96a + Royal Poker '96 (set 2, v98-3.6) + + + roypok96b + Royal Poker '96 (set 3, v98-3.6?) + + + roypok96c + Royal Poker '96 (set 4, C3 board) + + + rpanic + Rolling Panic (v2.33) + + + rpatrol + River Patrol (Japan) + + + rpatrolb + River Patrol (bootleg) + + + rpatroln + River Patrol (Japan, unprotected) + + + rpunch + Rabbit Punch (US) + + + rranger + Rough Ranger (v2.0) + + + rrangerb + Rough Ranger (v2.0, bootleg) + + + rriders + Ring Riders (Software version v2.2) + + + rrreveng + Road Riot's Revenge (prototype, Sep 06, 1994) + + + rrrevenga + Road Riot's Revenge (prototype, Jan 27, 1994, set 1) + + + rrrevengb + Road Riot's Revenge (prototype, Jan 27, 1994, set 2) + + + rrrevenp + Road Riot's Revenge (prototype alt) + + + rrvac + Ridge Racer V Arcade Battle (RRV3 Ver. A) + + + rrvac1 + Ridge Racer V Arcade Battle (RRV1 Ver. A) + + + rrvac2 + Ridge Racer V Arcade Battle (RRV2 Ver. A) + + + rs_l6 + Red and Ted's Road Show (L-6) + + + rs_la4 + Red and Ted's Road Show (La-4) + + + rs_la5 + Red and Ted's Road Show (La-5) + + + rs_lx2 + Red and Ted's Road Show (Lx-2) + + + rs_lx3 + Red and Ted's Road Show (Lx-3) + + + rs_lx4 + Red and Ted's Road Show (Lx-4) + + + rs_lx5 + Red and Ted's Road Show (Lx-5) + + + rs_pa2 + Red and Ted's Road Show (PA-2 prototype) + + + rsgun + Radiant Silvergun (JUET 980523 V1.000) + + + rshark + R-Shark + + + rthun2 + Rolling Thunder 2 + + + rthun2j + Rolling Thunder 2 (Japan) + + + rthunder + Rolling Thunder (rev 3) + + + rthunder0 + Rolling Thunder (oldest) + + + rthunder1 + Rolling Thunder (rev 1) + + + rthunder2 + Rolling Thunder (rev 2) + + + rthundera + Rolling Thunder (rev 3, hack) + + + rthundro + Rolling Thunder (old version) + + + rtriv + Romar Triv + + + rtype + R-Type (World) + + + rtype2 + R-Type II (World) + + + rtype2j + R-Type II (Japan) + + + rtype2jc + R-Type II (Japan, revision C) + + + rtype2m82b + R-Type II (Japan, bootleg M82 conversion) + + + rtypeb + R-Type (World bootleg) + + + rtypej + R-Type (Japan) + + + rtypejp + R-Type (Japan prototype) + + + rtypelej + R-Type Leo (Japan rev. D) + + + rtypeleo + R-Type Leo (World) + + + rtypeleoj + R-Type Leo (Japan) + + + rtypem82b + R-Type (Japan, bootleg M82 conversion) + + + rtypepj + R-Type (Japan prototype) + + + rtypeu + R-Type (US) + + + rubymag + Ruby Magic (10125711, NSW/ACT) + + + rubymaga + Ruby Magic (10148811, ASP) + + + rugby + Rugby? (four roses hardware) + + + rugrats + Rug Rats + + + rulechab + Super Ball (Version EC-3.50 N165) + + + rulechan + Super Ball (Version EC-3.50 N322) + + + ruletamag + Ruleta Mágica + + + rumba + Rumba Lumber (rev 1) + + + rumblef + The Rumble Fish + + + rumblef2 + The Rumble Fish 2 + + + rumblefp + The Rumble Fish (prototype) + + + rumblf2p + The Rumble Fish 2 (prototype) + + + rumbreel + Rumble Reels (20288611, NSW/ACT) + + + runark + Runark (Japan) + + + runaway + Runaway (Atari, prototype) + + + runaways + Runaway (Sun Electronics, Japan) + + + rundeep + Run Deep + + + rungun + Run and Gun (ver EAA 1993 10.8) + + + rungun2 + Run and Gun 2 (ver UAA) + + + runguna + Run and Gun (ver EAA 1993 10.4) + + + rungunad + Run and Gun (ver EAA 1993 10.4) (dual screen with demux adapter) + + + rungunb + Run and Gun (ver EAA 1993 9.10, prototype?) + + + rungunbd + Run and Gun (ver EAA 1993 9.10, prototype?) (dual screen with demux adapter) + + + rungund + Run and Gun (ver EAA 1993 10.8) (dual screen with demux adapter) + + + rungunu + Run and Gun (US ver. UAB) + + + rungunuaad + Run and Gun (ver UAB 1993 9.10, dedicated twin cabinet) + + + rungunuabd + Run and Gun (ver UAB 1993 10.12, dedicated twin cabinet) + + + rungunuba + Run and Gun (ver UBA 1993 10.8) + + + rungunubad + Run and Gun (ver UBA 1993 10.8) (dual screen with demux adapter) + + + runpuppy + Run Run Puppy + + + runrun + Run Run (Do! Run Run bootleg) + + + ruprup + Roll Up! Roll Up!! (10115911, NSW/ACT) + + + rush + Rush (1.0) + + + rushatck + Rush'n Attack (US) + + + rushbets + Rushing Beat Shura (SNES bootleg) + + + rushcrsh + Rush & Crash (Japan) + + + rushhero + Rushing Heroes (ver UAB) + + + rushrst + Rushin Rooster (0100534V, NSW/ACT) + + + rvrbt_l3 + Riverboat Gambler (L-3) + + + rvrbt_p7 + Riverboat Gambler (PA-7) + + + rvschool + Rival Schools: United By Fate (Europe 971117) + + + rvschoola + Rival Schools: United By Fate (Asia 971117) + + + rvschoolu + Rival Schools: United By Fate (USA 971117) + + + rygar + Rygar (US set 1) + + + rygar2 + Rygar (US set 2) + + + rygar3 + Rygar (US set 3 Old Version) + + + rygarb + Rygar (US, bootleg) + + + rygarj + Argus no Senshi (Japan set 1) + + + rygarj2 + Argus no Senshi (Japan set 2) + + + ryorioh + Gourmet Battle Quiz Ryohrioh CooKing (Japan) + + + ryouran + VS Mahjong Otome Ryouran (revision 2) + + + ryourano + VS Mahjong Otome Ryouran (revision 1) + + + ryujin + Ryu Jin (Japan, ET910000B PCB) + + + ryujina + Ryu Jin (Japan, ET910000A PCB) + + + ryukendn + Ninja Ryukenden (Japan, set 1) + + + ryukendna + Ninja Ryukenden (Japan, set 2) + + + ryukobou + Mahjong Ryukobou (Japan, V030J) + + + ryukyu + RyuKyu (Rev A, Japan) (FD1094 317-5023A) + + + ryukyua + RyuKyu (Japan) (FD1094 317-5023) + + + ryukyud + RyuKyu (Japan) (bootleg of FD1094 317-5023 set) + + + ryuuha + Ryuuha (Japan 871027) + + + s1945 + Strikers 1945 (World) + + + s1945a + Strikers 1945 (Japan / World) + + + s1945bl + Strikers 1945 (Hong Kong, bootleg) + + + s1945ii + Strikers 1945 II + + + s1945iii + Strikers 1945 III (World) / Strikers 1999 (Japan) + + + s1945iiibl + Strikers 1945 III (World) / Strikers 1999 (Japan) (bootleg, set 1) + + + s1945iiibla + Strikers 1945 III (World) / Strikers 1999 (Japan) (bootleg, set 2) + + + s1945j + Strikers 1945 (Japan) + + + s1945jn + Strikers 1945 (Japan, unprotected) + + + s1945k + Strikers 1945 (Korea) + + + s1945n + Strikers 1945 (World, unprotected) + + + s1945nj + Strikers 1945 (Japan, unprotected) + + + s1945p + Strikers 1945 Plus + + + s80btest + System 80B Test + + + s80tst + System 80 Test + + + s8waysfc + Super 8 Ways FC (DB98103-011, Fruit combination) + + + sabotenb + Saboten Bombers (set 1) + + + sabotenba + Saboten Bombers (set 2) + + + sabotnba + Saboten Bombers (set 2) + + + sackids + Soreyuke Anpanman Crayon Kids (J 001026 V1.000) + + + sadari + Sadari (Japan, NTC license) + + + safari + Safari (set 1) + + + safaria + Safari (set 2, bootleg?) + + + safarir + Safari Rally (World) + + + safarirj + Safari Rally (Japan) + + + safemon + Safe Money (Konami Endeavour, Russia) + + + safemonn + Safe Money (Konami Endeavour, NSW) + + + sagaia + Sagaia (dual screen) (World) + + + sahalove + Sahara Love (France) + + + sailmnee + Bishoujo Senshi Sailor Moon (Enhanced Edition v5 Final, Hack) + + + sailmnhy + Bishoujo Senshi Sailor Moon (Black Moon, Hack) + + + sailmnkf + Bishoujo Senshi Sailor Moon (Korea-France, Hack) + + + sailmnsl + Bishoujo Senshi Sailor Moon (10-Lo, Hack) + + + sailmnxy + Bishoujo Senshi Sailor Moon (New Moon, Hack) + + + sailmnyg + Pretty Soldier Sailor Moon (Moonlight, Hack) + + + sailmnyh + Bishoujo Senshi Sailor Moon (Optimised, Hack) + + + sailmnyy + Bishoujo Senshi Sailor Moon (Serena Tsukino, Hack) + + + sailormn + Pretty Soldier Sailor Moon (Version 95/03/22B, Europe) + + + sailormnffj + Pretty Soldier Sailor Moon (Fighting For Justice, Hack) + + + sailormnh + Bishoujo Senshi Sailor Moon (Version 95/03/22B, Hong Kong) + + + sailormnj + Bishoujo Senshi Sailor Moon (Version 95/03/22B, Japan) + + + sailormnk + Pretty Soldier Sailor Moon (Version 95/03/22B, Korea) + + + sailormnn + Pretty Soldier Sailor Moon (Version 95/03/22, Europe) + + + sailormnnh + Bishoujo Senshi Sailor Moon (Version 95/03/22, Hong Kong) + + + sailormnnj + Bishoujo Senshi Sailor Moon (Version 95/03/22, Japan) + + + sailormnnk + Pretty Soldier Sailor Moon (Version 95/03/22, Korea) + + + sailormnnt + Bishoujo Senshi Sailor Moon (Version 95/03/22, Taiwan) + + + sailormnnu + Pretty Soldier Sailor Moon (Version 95/03/22, USA) + + + sailormno + Pretty Soldier Sailor Moon (Version 95/03/21, Europe) + + + sailormnoh + Bishoujo Senshi Sailor Moon (Version 95/03/21, Hong Kong) + + + sailormnoj + Bishoujo Senshi Sailor Moon (Version 95/03/21, Japan) + + + sailormnok + Pretty Soldier Sailor Moon (Version 95/03/21, Korea) + + + sailormnot + Bishoujo Senshi Sailor Moon (Version 95/03/21, Taiwan) + + + sailormnou + Pretty Soldier Sailor Moon (Version 95/03/21, USA) + + + sailormnrot + Pretty Soldier Sailor Moon (Reign of Terror, Hack) + + + sailormnt + Bishoujo Senshi Sailor Moon (Version 95/03/22B, Taiwan) + + + sailormnu + Pretty Soldier Sailor Moon (Version 95/03/22B, USA) + + + sailormo + Pretty Soldier Sailor Moon (95-03-22) + + + sailorwa + Mahjong Sailor Wars (Japan set 2) + + + sailorwr + Mahjong Sailor Wars-R (Japan) + + + sailorws + Mahjong Sailor Wars (Japan set 1) + + + saiyugb1 + Sai Yu Gou Ma Roku (Japan bootleg 1) + + + saiyugb2 + Sai Yu Gou Ma Roku (Japan bootleg 2) + + + saiyugou + Sai Yu Gou Ma Roku (Japan) + + + saiyugoub1 + Sai Yu Gou Ma Roku (Japan bootleg 1) + + + saiyugoub2 + Sai Yu Gou Ma Roku (Japan bootleg 2) + + + saiyukip + Slot Poker Saiyuki (Japan) + + + saklove + Ying Hua Lian 2.0 (China, Ver. 1.02) + + + saladue + Sala Due (Version 3.04) + + + saladuea + Sala Due (Version 1.04) + + + salamand + Salamander (version D) + + + salamandj + Salamander (version J) + + + salamandt + Salamander (Tecfri license) + + + salamanj + Salamander (version J) + + + salarymc + Salary Man Champ - Tatakau Salary Man (GCA18 VER. JAA) + + + salmankt + Net@Select: Salaryman Kintaro + + + salmndr2 + Salamander 2 (ver JAA) + + + salmndr2a + Salamander 2 (ver AAB) + + + saloon + Saloon (French, encrypted) + + + samba + Samba De Amigo (Rev B) + + + samba2k + Samba de Amigo ver. 2000 (Japan) + + + sambaa + Samba De Amigo (Rev A) + + + sambap + Samba De Amigo (USA, prototype) + + + samesam2 + Same! Same! Same! (2P Ver.) + + + samesame + Same! Same! Same! (Japan, 1P set) + + + samesame2 + Same! Same! Same! (Japan, 2P set) + + + samesamecn + Jiao! Jiao! Jiao! (China, 2P set) + + + samesamenh + Same! Same! Same! (Japan, 1P set, NEW VER! hack) + + + sams64 + Samurai Shodown 64 / Samurai Spirits / Paewang Jeonseol 64 + + + sams64_2 + Samurai Shodown 64: Warriors Rage / Samurai Spirits 2: Asura Zanmaden + + + samsh2jq + Samurai Shodown II / Shin Samurai Spirits - Haohmaru Jigokuhen (Infinite Power, Hack) + + + samsh2sp + Samurai Shodown II / Shin Samurai Spirits - Haohmaru Jigokuhen (Special 2017, Hack) + + + samsh3bs + Samurai Shodown III / Samurai Spirits - Zankurou Musouken (Boss, Hack) + + + samsh4bs + Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (Boss, Hack) + + + samsh4sp + Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (Special 2017, Hack) + + + samsh5bs + Samurai Shodown V / Samurai Spirits Zero (Boss, Hack) + + + samsh5fd + Samurai Shodown V / Samurai Spirits Zero (Fully Decrypted) + + + samsh5fe + Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-272) (NGH-272) (Final Edition, location test version) + + + samsh5pf + Samurai Shodown V Perfect / Samurai Spirits Zero Perfect (bootleg, hack) + + + samsh5sp + Samurai Shodown V Special / Samurai Spirits Zero Special (NGM-2720) + + + samsh5sph + Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720, 2nd release, less censored) + + + samsh5spho + Samurai Shodown V Special / Samurai Spirits Zero Special (NGH-2720, 1st release, censored) + + + samsho + Samurai Shodown / Samurai Spirits (NGM-045) + + + samsho2 + Samurai Shodown II / Shin Samurai Spirits - Haohmaru Jigokuhen (NGM-063 ~ NGH-063) + + + samsho2k + Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II, set 1) + + + samsho2ka + Saulabi Spirits / Jin Saulabi Tu Hon (Korean release of Samurai Shodown II, set 2) + + + samsho2pe + Samurai Shodown II / Shin Samurai Spirits - Haohmaru Jigokuhen (Perfect V. 2.4, Hack) + + + samsho2t + Samurai Shodown II / Shin Samurai Spirits - Haohmaru Jigokuhen (Optimized, Hack) + + + samsho3 + Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGM-087) + + + samsho3h + Samurai Shodown III / Samurai Spirits - Zankurou Musouken (NGH-087) + + + samsho4 + Samurai Shodown IV - Amakusa's Revenge / Samurai Spirits - Amakusa Kourin (NGM-222 ~ NGH-222) + + + samsho4k + Paewang Jeonseol / Legend of a Warrior (Korean censored Samurai Shodown IV) + + + samsho5 + Samurai Shodown V / Samurai Spirits Zero (NGM-2700, set 1) + + + samsho5a + Samurai Shodown V / Samurai Spirits Zero (NGM-2700, set 2) + + + samsho5b + Samurai Shodown V / Samurai Spirits Zero (bootleg) + + + samsho5h + Samurai Shodown V / Samurai Spirits Zero (NGH-2700) + + + samsho5x + Samurai Shodown V / Samurai Spirits Zero (hack of XBOX version) + + + samshoa + Samurai Shodown / Samurai Spirits (NGM-045, alt board) + + + samshobs + Samurai Shodown / Samurai Spirits (Boss, Hack) + + + samshoh + Samurai Shodown / Samurai Spirits (NGH-045) + + + samspsen + Samurai Spirits Sen (v1.00) + + + samsptk + Samurai Spirits Tenkaichi Kenkakuden + + + samurai + Samurai (World) + + + samuraia + Samurai Aces (World) + + + samuraij + Samurai (Japan) + + + sandor + Puzzle & Action: Sando-R (J 951114 V1.000) + + + sandscrp + Sand Scorpion + + + sandscrpa + Sand Scorpion (Earlier) + + + sandscrpb + Kuai Da Shizi Huangdi (China?, Revised Hardware) + + + sanjeon + DaeJeon! SanJeon SuJeon (AJTUE 990412 V1.000) + + + sanma + Sanma - San-nin Uchi Mahjong (Japan, version 2.60) + + + sanremmg + unknown San Remo / Elsy Multigame + + + santaball + SantaBall - Christmas Tennis Game (HB) + + + santacl + Santa Claus (IN.001.07.A) + + + santam + Santa Maria (Russia) (Atronic) + + + sarge + Sarge + + + sarukani + Saru-Kani-Hamu-Zou (Japan) + + + sasissu + Taisen Tanto-R Sashissu!! (J 980216 V1.000) + + + sassisu + Taisen Tanto-R Sashissu!! + + + sasuke + Sasuke vs. Commander + + + satansat + Satan of Saturn (set 1) + + + satansata + Satan of Saturn (set 2) + + + satansatind + Satan of Saturn (Inder S.A., bootleg) + + + sathena + Super Athena (bootleg) + + + satoyama + Satoyama Grand Prix + + + satsf3d + Saturn: Space Fighter 3D + + + saturn + Saturn + + + saturn2 + Saturn 2 + + + saturnzi + Saturn + + + sauro + Sauro (set 1) + + + sauroa + Sauro (set 2) + + + saurob + Sauro (set 3) + + + saurobl + Sauro (bootleg) + + + sauroc + Sauro (set 4, easier) + + + saurop + Sauro (Philko license) + + + saurorr + Sauro (Recreativos Real S.A. license) + + + savagere + Savage Reign / Fu'un Mokushiroku - Kakutou Sousei + + + savagereb + Savage Reign / Fu'un Mokushiroku - Kakutou Sousei (Boss Hack) + + + savagerp + Savage Reign / Fu'un Mokushiroku - Kakutou Sousei (Plus, Hack) + + + savanna + Savanna (bootleg of Jungler) + + + savgbees + Savage Bees + + + savquest + Savage Quest + + + sb2003 + Super Bubble 2003 (World, Ver 1.0) + + + sb2003a + Super Bubble 2003 (Asia, Ver 1.0) + + + sbagman + Super Bagman (version 5) + + + sbagman2 + Super Bagman (version 3?) + + + sbagmani + Super Bagman (Itisa, Spain) + + + sbagmans + Super Bagman (Stern Electronics) + + + sball2k1 + Super Ball 2001 (Italy version 5.23) + + + sbasebal + Super Champion Baseball (US) + + + sbasebalj + Super Champion Baseball (Japan) + + + sbasketb + Super Basketball (version I, encrypted) + + + sbaskete + Super Basketball (version E, encrypted) + + + sbasketg + Super Basketball (version G, encrypted) + + + sbasketh + Super Basketball (version H, unprotected) + + + sbasketo + Super Basketball (version E) + + + sbasketu + Super Basketball (not encrypted) + + + sbbros + Super Buster Bros. (USA 901001) + + + sbdk + Super Bike (DK conversion) + + + sbhoei + Space Battle (Hoei, set 1) + + + sbhoeia + Space Battle (Hoei, set 2) + + + sbishi + Super Bishi Bashi Champ (ver JAA, 2 Players) + + + sbishik + Super Bishi Bashi Champ (ver KAB, 3 Players) + + + sbishika + Super Bishi Bashi Champ (ver KAA, 3 Players) + + + sblast2b + Sonic Blast Man II Special Turbo (SNES bootleg) + + + sblazerp + Star Blazer (Pioneer LDV1000) + + + sbm + Sonic Blast Man (US) + + + sbmj + Sonic Blast Man (Japan) + + + sbmjb + Sonic Blast Man's Janken Battle (Japan, main ver. 1.1, video ver. 1.0) + + + sboblbob + Super Bobble Bobble + + + sboblbobl + Super Bobble Bobble (bootleg, set 1) + + + sboblbobla + Super Bobble Bobble (bootleg, set 2) + + + sboblboblb + Super Bobble Bobble (bootleg, set 3) + + + sboblboblc + Super Bubble Bobble (bootleg) + + + sboblbobld + Super Bobble Bobble (bootleg, set 4) + + + sboblboble + Super Bobble Bobble (bootleg, set 5) + + + sboblboblf + Super Bobble Bobble (bootleg, set 6) + + + sbomber + Space Bomber (ver. B) + + + sbombera + Space Bomber + + + sbomberb + Space Bomber (ver. B) + + + sbowling + Strike Bowling + + + sbp + Super Bubble Pop + + + sbrkout + Super Breakout (rev 04) + + + sbrkout3 + Super Breakout (rev 03) + + + sbrkoutc + Super Breakout (Canyon and Vertical Breakout, prototype) + + + sbrkoutct + Super Breakout (Cocktail, prototype) + + + sbsgomo + Space Battle Ship Gomorrah + + + sbubsm + Super Bubble Bobble (Sun Mixing, Mega Drive clone hardware) + + + sbugger + Space Bugger (set 1) + + + sbuggera + Space Bugger (set 2) + + + sbuk2 + Super Bucks II (0400501V, NSW/ACT) + + + sbuk2a + Super Bucks II (0300006V, NSW/ACT) + + + sbuk3 + Super Bucks III (0200711V, NSW/ACT) + + + sbuk3a + Super Bucks III (0100711V, NSW/ACT) + + + sbuk5 + Super Bucks V (20203611, NSW/ACT) + + + sburners + Street Burners + + + sbxc + Sengoku Basara X Cross + + + sc1actv8 + Active 8 (Dutch) (Bellfruit) (Scorpion 1) + + + sc1armad + Armada (Dutch) (Bellfruit) (Scorpion 1) + + + sc1barcd + Barcode (Bellfruit) (set 1) (Scorpion 1) + + + sc1barcda + Barcode (Bellfruit) (set 2) (Scorpion 1) + + + sc1bartk + Bar Trek (Bellfruit) (Scorpion 1) + + + sc1bigmt + The Big Match (Dutch) (Bellfruit) (Scorpion 1) + + + sc1boncl + Bonanza Club (unknown) (Scorpion 1) + + + sc1btbc + Beat The Bank Club (unknown) (Scorpion 1?) + + + sc1btclk + Beat The Clock (Mdm) (set 1) (Scorpion 2/3?) + + + sc1btclka + Beat The Clock (Mdm) (set 2) (Scorpion 2/3?) + + + sc1btclkb + Beat The Clock (Mdm) (set 3) (Scorpion 2/3?) + + + sc1calyp + Calypso (Dutch) (Bellfruit) (Scorpion 1) + + + sc1carro + Carrousel (Dutch) (Bellfruit) (Scorpion 1) + + + sc1ccoin + Cash Coin (Dutch) (Bellfruit) (Scorpion 1) + + + sc1ccroc + Crazy Crocs (Mdm) (set 1) (Scorpion 2/3?) + + + sc1ccroca + Crazy Crocs (Mdm) (set 2) (Scorpion 2/3?) + + + sc1ccrocb + Crazy Crocs (Mdm) (set 3) (Scorpion 2/3?) + + + sc1ccrocc + Crazy Crocs (Mdm) (set 4) (Scorpion 2/3?) + + + sc1cdm + Club Diamond (Crystal) (set 1) (Scorpion 1) + + + sc1cdmp + Club Diamond (Crystal) (set 1, Protocol) (Scorpion 1) + + + sc1cexpd + Cash Explosion (Dutch) (Bellfruit) (Scorpion 1) + + + sc1cexpl + Cash Explosion (Bellfruit) (set 1) (Scorpion 1) + + + sc1cexpla + Cash Explosion (Bellfruit) (set 2) (Scorpion 1) + + + sc1cexplb + Cash Explosion (Bellfruit) (set 3) (Scorpion 1) + + + sc1chain + Chain Reaction (Bellfruit) (set 1) (Scorpion 1) + + + sc1chainp + Chain Reaction (Bellfruit) (set 1, Protocol) (Scorpion 1) + + + sc1china + China Town Club (Bellfruit) (set 2) (Scorpion 1) + + + sc1chinaa + China Town Club (Bellfruit) (set 1) (Scorpion 1) + + + sc1chinaap + China Town Club (Bellfruit) (set 1, Protocol) (Scorpion 1) + + + sc1chinab + China Town Club (Bellfruit) (set 3) (Scorpion 1) + + + sc1chinabp + China Town Club (Bellfruit) (set 3, Protocol) (Scorpion 1) + + + sc1chinap + China Town Club (Bellfruit) (set 2, Protocol) (Scorpion 1) + + + sc1chqfl + Chequered Flag (Global) + + + sc1cl2k + Club 2000 (Dutch) (Bellfruit) (Scorpion 1) + + + sc1cl2k1 + Club 2001 (Dutch (Bellfruit) (Scorpion 1) + + + sc1cl65 + Club 65 Special (Bellfruit) (set 1) (Scorpion 1) + + + sc1cl65a + Club 65 Special (Bellfruit) (set 5) (Scorpion 1) + + + sc1cl65ap + Club 65 Special (Bellfruit) (set 5, Protocol) (Scorpion 1) + + + sc1cl65b + Club 65 Special (Bellfruit) (set 4) (Scorpion 1) + + + sc1cl65bp + Club 65 Special (Bellfruit) (set 4, Protocol) (Scorpion 1) + + + sc1cl65c + Club 65 Special (Bellfruit) (set 3) (Scorpion 1) + + + sc1cl65cp + Club 65 Special (Bellfruit) (set 3, Protocol) (Scorpion 1) + + + sc1cl65d + Club 65 Special (Bellfruit) (set 2) (Scorpion 1) + + + sc1cl65dp + Club 65 Special (Bellfruit) (set 2, Protocol) (Scorpion 1) + + + sc1class + Classic (Dutch) (Bellfruit) (Scorpion 1) + + + sc1clatt + Club Attraction (UK, Game Card 39-370-196) + + + sc1clatta + Club Attraction (set 2) + + + sc1clb3 + Club 3000 (Dutch) (Bellfruit) (Scorpion 1) + + + sc1clbdm + Club Diamond (Dutch) (Bellfruit) (Scorpion 1) + + + sc1clbdy + Club Dynamite (Global) (set 1) + + + sc1clbdya + Club Dynamite (Global) (set 2) + + + sc1clbrn + Club Runner (Dutch) (unknown) (Scorpion 1) + + + sc1clbsp + Club Spinner (Dutch) (unknown) (Scorpion 1) + + + sc1clbtm + Club Temptation (Bellfruit) (set 1) (Scorpion 1) + + + sc1clbtma + Club Temptation (Bellfruit) (set 2) (Scorpion 1) + + + sc1clbw + Club Wise (Bellfruit) (set 2) (Scorpion 1) + + + sc1clbwa + Club Wise (Bellfruit) (set 1) (Scorpion 1) + + + sc1clbxp + Club Explosion (Bellfruit) (Scorpion 1) (set 1) + + + sc1clbxpa + Club Explosion (Bellfruit) (Scorpion 1) (set 2) + + + sc1clins + Cash Lines (Bellfruit) (Scorpion 1) (set 1) + + + sc1clinsa + Cash Lines (Bellfruit) (Scorpion 1) (set 2) + + + sc1clinsb + Cash Lines (Bellfruit) (Scorpion 1) (set 3) + + + sc1clinsc + Cash Lines (Bellfruit) (Scorpion 1) (set 4) + + + sc1clinsd + Cash Lines (Bellfruit) (Scorpion 1) (set 5) + + + sc1clinse + Cash Lines (Bellfruit) (Scorpion 1) (set 6) + + + sc1clown + Clown Around (Dutch) (Bellfruit) (Scorpion 1) + + + sc1copdd + Cops 'n' Robbers Deluxe (Dutch) (Bellfruit) (Scorpion 1) + + + sc1copdx + Cops 'n' Robbers (Bellfruit) (set 3) (Scorpion 1) + + + sc1cops + Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 1) + + + sc1copsa + Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 1) + + + sc1count + Count Cash Club (Bellfruit) (set 2) (Scorpion 1) + + + sc1counta + Count Cash Club (Bellfruit) (set 1) (Scorpion 1) + + + sc1countap + Count Cash Club (Bellfruit) (set 1, Protocol) (Scorpion 1) + + + sc1countp + Count Cash Club (Bellfruit) (set 2, Protocol) (Scorpion 1) + + + sc1crocr + Croc And Roll (Mdm) (Scorpion 2/3?) + + + sc1crzyc + Crazy Cash (Global) (set 1) + + + sc1crzyca + Crazy Cash (Global) (set 2) + + + sc1cscl + Cash Classic (Global) (set 1) + + + sc1cscla + Cash Classic (Global) (set 2) + + + sc1cshat + Cash Attraction (Bellfruit) (set 5, Protocol) (Scorpion 1) + + + sc1cshata + Cash Attraction (Bellfruit) (set 1) (Scorpion 1) + + + sc1cshatb + Cash Attraction (Bellfruit) (set 5) (Scorpion 1) + + + sc1cshatc + Cash Attraction (Bellfruit) (set 2) (Scorpion 1) + + + sc1cshatf + Cash Attraction (Bellfruit) (set 2, Protocol) (Scorpion 1) + + + sc1cshatg + Cash Attraction (Bellfruit) (set 4, Protocol) (Scorpion 1) + + + sc1cshath + Cash Attraction (Bellfruit) (set 3, Protocol) (Scorpion 1) + + + sc1cshati + Cash Attraction (Bellfruit) (set 1, Protocol) (Scorpion 1) + + + sc1cshcd + Cash Card (Dutch) (Bellfruit) (Scorpion 1) + + + sc1cshcda + Cash Card (Bellfruit) (set 1) (Scorpion 1) + + + sc1cshcdb + Cash Card (Bellfruit) (set 2) (Scorpion 1) + + + sc1cshin + Cashino (Dutch) (Bellfruit) (Scorpion 1) + + + sc1cshwz + Cash Wise (Bellfruit) (set 2) (Scorpion 1) + + + sc1cshwza + Cash Wise (Bellfruit) (set 1) (Scorpion 1) + + + sc1cshwzb + Cash Wise (Bellfruit) (set 3) (Scorpion 1) + + + sc1cshwzc + Cash Wise (Bellfruit) (set 2, Protocol) (Scorpion 1) + + + sc1cshwzd + Cash Wise (Bellfruit) (set 4, Protocol) (Scorpion 1) + + + sc1cshwze + Cash Wise (Bellfruit) (set 1, Protocol) (Scorpion 1) + + + sc1cshwzf + Cash Wise (Bellfruit) (set 3, Protocol) (Scorpion 1) + + + sc1cshwzg + Cash Wise (Bellfruit) (set 4) (Scorpion 1) + + + sc1cwcl + Clockwise (Bellfruit) (Scorpion 1) + + + sc1czbrk + Crazy Break (Dutch) (unknown) (Scorpion 1) + + + sc1dago + Dagobert's Vault (Dutch) (Elam) (Scorpion 1) + + + sc1days + All In A Days Work (Global) (set 1) + + + sc1daysa + All In A Days Work (Global) (set 2) + + + sc1dblch + Double Chance (Bellfruit) (set 1) (Scorpion 1) + + + sc1dblcha + Double Chance (Bellfruit) (set 2, bad) (Scorpion 1) + + + sc1dblchb + Double Chance (Bellfruit) (set 3) (Scorpion 1) + + + sc1dip + Diplomat (Eurocoin) (Scorpion 1) + + + sc1disc + Discovey (Dutch) (Bellfruit) (Scorpion 1) + + + sc1dream + Dream Machine (Dutch) (Bellfruit) (Scorpion 1) + + + sc1driv + Driving School (Global) (set 1) + + + sc1driva + Driving School (Global) (set 2) + + + sc1drivb + Driving School (Global) (set 3) + + + sc1drivc + Driving School (Global) (set 4) + + + sc1druby + Diamonds & Rubys (Bellfruit) (Scorpion ?) (set 1) + + + sc1drubya + Diamonds & Rubys (Bellfruit) (Scorpion ?) (set 2) + + + sc1energ + Energy (Dutch) (unknown) (Scorpion 1) + + + sc1final + Final Touch (Dutch) (unknown) (Scorpion 1) + + + sc1flash + Flash (Dutch) (Bellfruit) (Scorpion 1) + + + sc1frpus + Fruit Pursuit (Bellfruit) (set 1) (Scorpion 1?) + + + sc1frpusa + Fruit Pursuit (Bellfruit) (set 2) (Scorpion 1?) + + + sc1frtln + Fruit Lines (Dutch) (Bellfruit) (set 2) (Scorpion 1) + + + sc1fruit + Fruit Lines (Dutch) (Bellfruit) (set 1) (Scorpion 1) + + + sc1funh + Fun House Club (Bellfruit) (set 1) (Scorpion 1) + + + sc1funha + Fun House Club (Bellfruit) (set 2) (Scorpion 1) + + + sc1funhp + Fun House Club (Bellfruit) (set 1, Protocol, bad) (Scorpion 1) + + + sc1goldw + Golden Winner (Bellfruit) (Scorpion ?) + + + sc1gprix + Grand Prix (Dutch) (Bellfruit) (Scorpion 1) + + + sc1gslam + Grand Slam (Dutch) (Bellfruit) (Scorpion 1) + + + sc1gtime + Good Times (Dutch) (Bellfruit) (Scorpion 1) + + + sc1happy + Happy Hour (Dutch) (Bellfruit) (Scorpion 1) + + + sc1hfcc + Hi Flyer Club (Crystal) (set 1) (Scorpion 1) + + + sc1hfccp + Hi Flyer Club (Crystal) (set 1, Protocol) (Scorpion 1) + + + sc1hipt + High Point (Bellfruit) (Scorpion 1) (set 1) + + + sc1hipta + High Point (Bellfruit) (Scorpion 1) (set 2) + + + sc1impc + Impact (Dutch) (Bellfruit) (Scorpion 1) + + + sc1kings + Kings Club (Dutch) (Bellfruit) (Scorpion 1) + + + sc1lamb + Lambada (Eurocoin) (Scorpion 1) + + + sc1linx + Linx (Bellfruit) (set 1) (Scorpion 1) + + + sc1linxa + Linx (Bellfruit) (set 2) (Scorpion 1) + + + sc1linxp + Linx (Bellfruit) (set 3, Protocol) (Scorpion 1) + + + sc1lotus + Lotus SE (Dutch) (set 1) + + + sc1lotusa + Lotus SE (Dutch) (set 2) + + + sc1ltdv + Little Devil (Pcp) + + + sc1magc + Magic Circle (Dutch) (Bellfruit) (Scorpion 1) + + + sc1manha + Manhattan (Dutch) (Bellfruit) (Scorpion 1) + + + sc1mast + Master Club (Dutch) (Bellfruit) (Scorpion 1) + + + sc1mist + Mistral (Dutch) (Bellfruit) (Scorpion 1) + + + sc1moonl + Moon Lite (Bwb) + + + sc1ofs56 + Only Fools and Horses (Bellfruit) (Scorpion 1?) + + + sc1olym + Olympia (Dutch) (Bellfruit) (Scorpion 1) + + + sc1orac + Oracle (Dutch) (Bellfruit) (Scorpion 1) + + + sc1pwrl + Power Lines (Bellfruit) (set 1) (Scorpion 1) + + + sc1quat + Quatro (Dutch) (Bellfruit) (Scorpion 1) + + + sc1rain + Rainbow (Dutch) (Bellfruit) (Scorpion 1) + + + sc1re + Reel Cash (Dutch) (Bellfruit) (Scorpion 1) + + + sc1reply + Replay (Eurocoin) (Scorpion 1) + + + sc1rese + Reel Cash SE (Dutch) (Bellfruit) (Scorpion 1) + + + sc1revo + Revolution (Dutch) (Bellfruit) (Scorpion 1) + + + sc1rose + Rose 'n' Crown (Dutch) (Bellfruit) (Scorpion 1) + + + sc1roul + Roulette (Dutch, Game Card 39-360-129?) + + + sc1s1000 + Super 1000 (Deltasoft) + + + sc1sant + Santana (Dutch) (Bellfruit) (Scorpion 1) + + + sc1sat + Satellite (Dutch) (Bellfruit) (Scorpion 1) + + + sc1satse + Satellite SE (Dutch) (Bellfruit) (Scorpion 1) + + + sc1scunk + unknown Scorpion 1 'Super ?' (Bellfruit) (Scorpion 1) + + + sc1shan + Shanghai (Dutch) (Bellfruit) (Scorpion 1) + + + sc1sir + Strike It Rich (Bellfruit) (set 1) (Scorpion 1) + + + sc1sira + Strike It Rich (Bellfruit) (set 3, bad) (Scorpion 1) + + + sc1sirb + Strike It Rich (Bellfruit) (set 2) (Scorpion 1) + + + sc1sirc + Strike It Rich (Bellfruit) (set 4, bad) (Scorpion 1) + + + sc1smoke + Smokey Vs The Bandit (Mdm) (set 1) (Scorpion 2/3?) + + + sc1smokea + Smokey Vs The Bandit (Mdm) (set 2) (Scorpion 2/3?) + + + sc1spct + Spectre (Bellfruit) (set 1) (Scorpion 1) + + + sc1spcta + Spectre (Bellfruit) (set 2) (Scorpion 1) + + + sc1spit + Spitfire (Dutch) (Elam) (Scorpion 1) + + + sc1ster + Sterling (Dutch) (Bellfruit) (Scorpion 1) + + + sc1str4 + Strike 4 (Dutch) (Bellfruit) (Scorpion 1) (set 1) + + + sc1str4a + Strike 4 (Dutch) (Bellfruit) (Scorpion 1) (set 2) + + + sc1strk + Strike (Dutch) (Bellfruit) (Scorpion 1) + + + sc1supfl + Super Flush (Dutch) (Bellfruit) (Scorpion 1) + + + sc1sups + Superstar (Dutch) (unknown) (Scorpion 1) + + + sc1t1k + Top 1000 (Dutch) (Eurocoin) (Scorpion 1) + + + sc1tiara + Tiara (Dutch) (Bellfruit) (Scorpion 1) + + + sc1torn + Tornado (Dutch) (Bellfruit) (set 1) (Scorpion 1) + + + sc1torna + Tornado (Dutch) (Bellfruit) (set 2) (Scorpion 1) + + + sc1tri + Tri Star (Bellfruit) (set 1) (Scorpion 1) + + + sc1tria + Tri Star (Bellfruit) (set 2) (Scorpion 1) + + + sc1triap + Tri Star (Bellfruit) (set 2, Protocol) (Scorpion 1) + + + sc1trib + Tri Star (Bellfruit) (set 3) (Scorpion 1) + + + sc1tribp + Tri Star (Bellfruit) (set 3, Protocol) (Scorpion 1) + + + sc1twice + Twice As Nice (Associated Leisure) (Scorpion 1) + + + sc1typ + Typhoon Club (Bellfruit) (set 1) (Scorpion 1) + + + sc1typp + Typhoon Club (Bellfruit) (set 1, Protocol) (Scorpion 1) + + + sc1ult + Ultimate (Dutch) (Bellfruit) (Scorpion 1) + + + sc1vent + Ventura (Dutch) (Bellfruit) (Scorpion 1) + + + sc1vict + Victory (Dutch) (Bellfruit) (Scorpion 1) + + + sc1voy + Voyager (Dutch) (Elam) (set 1) (Scorpion 1) + + + sc1voya + Voyager (Dutch) (Elam) (set 2) (Scorpion 1) + + + sc1vsd + Vegas Super Deal (Global) + + + sc1winfl + Winfalls (Dutch) (Bellfruit) (Scorpion 1) + + + sc1winst + Winning Streak (Bellfruit) (set 1) (Scorpion 1) + + + sc1winsta + Winning Streak (Bellfruit) (set 2) (Scorpion 1) + + + sc1winstp + Winning Streak (Bellfruit) (set 1, Protocol) (Scorpion 1) + + + sc1wof + Wheel Of Fortune (Global) (set 1) + + + sc1wofa + Wheel Of Fortune (Global) (set 2) + + + sc1wofb + Wheel Of Fortune (Global) (set 3) + + + sc1wthn + Wild Thing (Eurocoin) (Scorpion 1) + + + sc1wud + What's Up Dr (Scorpion 1?) + + + sc1zep + Zeppelin (Dutch) (Elam) (Scorpion 1) + + + sc2bar7 + Bar 7 (Concept) (set 1) + + + sc2bar7a + Bar 7 (Concept) (set 2) + + + sc2bar7b + Bar 7 (Concept) (set 3) + + + sc2bar7c + Bar 7 (Concept) (set 4) + + + sc2bar7d + Bar 7 (Concept) (set 5) + + + sc2bar7e + Bar 7 (Concept) (set 6) + + + sc2bar7f + Bar 7 (Concept) (set 7) + + + sc2bar7g + Bar 7 (Concept) (set 8) + + + sc2bar7h + Bar 7 (Concept) (set 9) + + + sc2bar7i + Bar 7 (Concept) (set 10) + + + sc2bar7j + Bar 7 (Concept) (set 11) + + + sc2bar7k + Bar 7 (Concept) (set 12) + + + sc2bbar7 + Big Bar 7 (Concept) (set 1) + + + sc2bbar7a + Big Bar 7 (Concept) (set 2) + + + sc2bbar7b + Big Bar 7 (Concept) (set 3) + + + sc2bbar7c + Big Bar 7 (Concept) (set 4) + + + sc2bbar7d + Big Bar 7 (Concept) (set 5) + + + sc2bbar7e + Big Bar 7 (Concept) (set 6) + + + sc2bbar7f + Big Bar 7 (Concept) (set 7) + + + sc2bbar7g + Big Bar 7 (Concept) (set 8) + + + sc2bbar7h + Big Bar 7 (Concept) (set 9) + + + sc2bbar7i + Big Bar 7 (Concept) (set 10) + + + sc2bbar7j + Big Bar 7 (Concept) (set 11) + + + sc2bbar7k + Big Bar 7 (Concept) (set 12) + + + sc2bbar7l + Big Bar 7 (Concept) (set 13) + + + sc2bbar7m + Big Bar 7 (Concept) (set 14) + + + sc2bbar7n + Big Bar 7 (Concept) (set 15) + + + sc2bbar7o + Big Bar 7 (Concept) (set 16) + + + sc2bbar7p + Big Bar 7 (Concept) (set 17) + + + sc2brkfs + The Big Breakfast (set 2) (Scorpion 2/3) + + + sc2brkfs1 + The Big Breakfast (set 1 UK, Single Site) (Scorpion 2/3) + + + sc2brkfs1p + The Big Breakfast (set 1 UK, Single Site, Protocol) (Scorpion 2/3) + + + sc2brkfs2 + The Big Breakfast (set 4 UK, Arcade, 8GBP Jackpot) (Scorpion 2/3) + + + sc2brkfs3 + The Big Breakfast (set 3) (Scorpion 2/3) + + + sc2brkfs3p + The Big Breakfast (set 4 UK, Arcade, 8GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2brkfs4 + The Big Breakfast (set 5 UK, Arcade, 10GBP Jackpot) (Scorpion 2/3) + + + sc2brkfs4p + The Big Breakfast (set 5 UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2brkfs5 + The Big Breakfast (set 6 UK, Arcade, 10GBP Jackpot) (Scorpion 2/3) + + + sc2brkfs5p + The Big Breakfast (set 6 UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2brkfs6 + The Big Breakfast (set 3, Protocol) (Scorpion 2/3) + + + sc2brkfsm + The Big Breakfast Casino (Scorpion 2/3) + + + sc2brkfsm1 + The Big Breakfast Casino (Mazooma, set 1) (Scorpion 2/3) + + + sc2brkfsm2 + The Big Breakfast Casino (Mazooma, set 2) (Scorpion 2/3) + + + sc2brkfsp + The Big Breakfast (set 2, Protocol) (Scorpion 2/3) + + + sc2call + It's Your Call (Global) (v2.7) (Scorpion 2/3) + + + sc2callc + It's Your Call (Club?) (Global) (v1.6) (Scorpion 2/3) + + + sc2callcp + It's Your Call (Club?) (Global) (v1.6 Protocol) (Scorpion 2/3) + + + sc2callp + It's Your Call (Global) (v2.7 Protocol) (Scorpion 2/3) + + + sc2casr + Casino Royale (Bellfruit) (set 5, UK, 10GBP Jackpot, 3rd Triennial) (Scorpion 2/3) + + + sc2casr1 + Casino Royale (Bellfruit) (set 4, UK, 3rd Triennial) (Scorpion 2/3) + + + sc2casr1p + Casino Royale (Bellfruit) (set 4, UK, 3rd Triennial, Protocol) (Scorpion 2/3) + + + sc2casr2 + Casino Royale (Bellfruit) (set 3, UK) (Scorpion 2/3) + + + sc2casr2p + Casino Royale (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3) + + + sc2casr3 + Casino Royale (Bellfruit) (set 1, UK, 8GBP Jackpot) (Scorpion 2/3) + + + sc2casr3p + Casino Royale (Bellfruit) (set 1, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2casr4 + Casino Royale (Bellfruit) (set 2, UK) (Scorpion 2/3) + + + sc2casr4p + Casino Royale (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3) + + + sc2casrp + Casino Royale (Bellfruit) (set 5, UK, 10GBP Jackpot, 3rd Triennial, Protocol) (Scorpion 2/3) + + + sc2catms + Cat & Mouse (Bellfruit) (set 4, Deluxe) (Scorpion 2/3) + + + sc2catms1 + Cat & Mouse (Bellfruit) (set 10) (Scorpion 2/3) + + + sc2catms1p + Cat & Mouse (Bellfruit) (set 10, Protocol) (Scorpion 2/3) + + + sc2catms2 + Cat & Mouse (Bellfruit) (set 9) (Scorpion 2/3) + + + sc2catms2p + Cat & Mouse (Bellfruit) (set 9, Protocol) (Scorpion 2/3) + + + sc2catms3 + Cat & Mouse (Bellfruit) (set 1) (Scorpion 2/3) + + + sc2cb7 + Super Bar 7 Casino (Bellfruit) (set 3, UK) (Scorpion 2/3) + + + sc2cb71 + Super Bar 7 Casino (Bellfruit) (set 1, UK, All Cash) (Scorpion 2/3) + + + sc2cb72 + Super Bar 7 Casino (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2cb72p + Super Bar 7 Casino (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2cb7p + Super Bar 7 Casino (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3) + + + sc2cexpl + Cash Explosion (Bellfruit) (set 2, Protocol) (Scorpion 2) + + + sc2cexpla + Cash Explosion (Bellfruit) (set 1, Protocol) (Scorpion 2) + + + sc2cexplb + Cash Explosion (Bellfruit) (set 3, Protocol) (Scorpion 2) + + + sc2cexplc + Cash Explosion (Bellfruit) (set 2) (Scorpion 2) + + + sc2cexpld + Cash Explosion (Bellfruit) (set 1) (Scorpion 2) + + + sc2cexple + Cash Explosion (Bellfruit) (set 3) (Scorpion 2) + + + sc2cgc + Carrot Gold Club (Bellfruit) (Protocol) (Scorpion 2/3) + + + sc2cgcas + Club Grand Casino (Bellfruit) (set 1) (Scorpion 2/3) + + + sc2cgcas1 + Club Grand Casino (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2cgcas1p + Club Grand Casino (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2cgcasp + Club Grand Casino (Bellfruit) (set 1, Protocol) (Scorpion 2/3) + + + sc2cmbt + Cat & Mouse & Bonzo Too (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2cmbtp + Cat & Mouse & Bonzo Too (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2cnile + Cash On The Nile Club (Bellfruit) (set 2 UK, 150GBP Jackpot) (Scorpion 2/3) + + + sc2cnile1 + Cash On The Nile Club (Bellfruit) (set 1 UK, 150GBP Jackpot) (Scorpion 2/3) + + + sc2cnile2 + Cash On The Nile Club (Bellfruit) (set 3 UK, 200GBP Jackpot) (Scorpion 2/3) + + + sc2cnile2p + Cash On The Nile Club (Bellfruit) (set 3 UK, 200GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2cnilep + Cash On The Nile Club (Bellfruit) (set 2 UK, 150GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2copcl + Cops 'n' Robbers Club (Bellfruit) (set 9, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2copcl1 + Cops 'n' Robbers Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2copcl10 + Cops 'n' Robbers Club (Bellfruit) (set 6, UK) (Scorpion 2/3) + + + sc2copcl11 + Cops 'n' Robbers Club (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2copcl11p + Cops 'n' Robbers Club (Bellfruit) (set 11, UK, Protocol) (Scorpion 2/3) + + + sc2copcl12 + Cops 'n' Robbers Club (Bellfruit) (set 10, UK, Protocol) (Scorpion 2/3) + + + sc2copcl1p + Cops 'n' Robbers Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2copcl2 + Cops 'n' Robbers Club (Bellfruit) (set 10, UK) (Scorpion 2/3) + + + sc2copcl3 + Cops 'n' Robbers Club (Bellfruit) (set 12, UK) (Scorpion 2/3) + + + sc2copcl3p + Cops 'n' Robbers Club (Bellfruit) (set 12, UK, Protocol) (Scorpion 2/3) + + + sc2copcl4 + Cops 'n' Robbers Club (Bellfruit) (set 3, UK) (Scorpion 2/3) + + + sc2copcl5 + Cops 'n' Robbers Club (Bellfruit) (set 11, UK) (Scorpion 2/3) + + + sc2copcl6 + Cops 'n' Robbers Club (Bellfruit) (set 4, UK) (Scorpion 2/3) + + + sc2copcl6p + Cops 'n' Robbers Club (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3) + + + sc2copcl7 + Cops 'n' Robbers Club (Bellfruit) (set 5, UK) (Scorpion 2/3) + + + sc2copcl8 + Cops 'n' Robbers Club (Bellfruit) (set 8, UK) (Scorpion 2/3) + + + sc2copcl8p + Cops 'n' Robbers Club (Bellfruit) (set 8, UK, Protocol) (Scorpion 2/3) + + + sc2copcl9 + Cops 'n' Robbers Club (Bellfruit) (set 7, UK) (Scorpion 2/3) + + + sc2copcl9p + Cops 'n' Robbers Club (Bellfruit) (set 7, UK, Protocol) (Scorpion 2/3) + + + sc2copclp + Cops 'n' Robbers Club (Bellfruit) (set 9, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2copdc + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 7, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2copdc1 + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 3, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2copdc1p + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 3, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2copdc2 + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 4, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2copdc2p + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 4, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2copdc3 + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 5, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2copdc3p + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 5, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2copdc4 + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 6, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2copdc4p + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 6, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2copdc5 + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 1, UK, 200GBP Jackpot) (Scorpion 2/3) + + + sc2copdc5p + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 1, UK, 200GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2copdc6 + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2copdcp + Cops 'n' Robbers Club Deluxe (Bellfruit) (set 7, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2cops + Cops 'n' Robbers (Bellfruit) (set 6) (Scorpion 2/3) + + + sc2cops1p + Cops 'n' Robbers (Bellfruit) (set 6, Protocol) (Scorpion 2/3) + + + sc2cops2 + Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3) + + + sc2cops3 + Cops 'n' Robbers (Bellfruit) (set 3) (Scorpion 2/3) + + + sc2cops3p + Cops 'n' Robbers (Bellfruit) (set 3, Protocol) (Scorpion 2/3) + + + sc2cops4 + Cops 'n' Robbers (Bellfruit) (set 5) (Scorpion 2/3) + + + sc2cops5 + Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3) + + + sc2copsc + Casino Cops 'n' Robbers (Bellfruit) (set 1) (Scorpion 2/3) + + + sc2copsc1 + Casino Cops 'n' Robbers (Bellfruit) (set 2) (Scorpion 2/3) + + + sc2copsc1p + Casino Cops 'n' Robbers (Bellfruit) (set 2, Protocol) (Scorpion 2/3) + + + sc2copsc1pa + Casino Cops 'n' Robbers (Bellfruit) (set 2, Protocol) (Scorpion 2/3) (alt matrix rom) + + + sc2copscp + Casino Cops 'n' Robbers (Bellfruit) (set 1, Protocol) (Scorpion 2/3) + + + sc2copsp + Cops 'n' Robbers (Bellfruit) (set 4, Protocol) (Scorpion 2/3) + + + sc2cpe + Club Public Enemy No.1 (set 5, UK) (Scorpion 2/3) + + + sc2cpe1 + Club Public Enemy No.1 (set 4, UK) (Scorpion 2/3) + + + sc2cpe1p + Club Public Enemy No.1 (set 4, UK, Protocol) (Scorpion 2/3) + + + sc2cpe2 + Club Public Enemy No.1 (set 3, UK) (Scorpion 2/3) + + + sc2cpe2p + Club Public Enemy No.1 (set 3, UK, Protocol) (Scorpion 2/3) + + + sc2cpe3 + Club Public Enemy No.1 (set 1, UK) (Scorpion 2/3) + + + sc2cpe3p + Club Public Enemy No.1 (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2cpe4 + Club Public Enemy No.1 (set 2, UK) (Scorpion 2/3) + + + sc2cpe4p + Club Public Enemy No.1 (set 2, UK, Protocol) (Scorpion 2/3) + + + sc2cpep + Club Public Enemy No.1 (set 5, UK, Protocol) (Scorpion 2/3) + + + sc2cpg + Pharaoh's Gold Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2cpg1 + Pharaoh's Gold Club (Bellfruit) (set 3, UK, p65) (Scorpion 2/3) + + + sc2cpg1p + Pharaoh's Gold Club (Bellfruit) (set 3, UK, p65, Protocol) (Scorpion 2/3) + + + sc2cpg2 + Pharaoh's Gold Club (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2cpg2p + Pharaoh's Gold Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2cpgp + Pharaoh's Gold Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2cshcl + Cashino Club (Bellfruit) (set 2) (Scorpion 2/3) + + + sc2cshcl1 + Cashino Club (Bellfruit) (set 1) (Scorpion 2/3) + + + sc2cshcl1p + Cashino Club (Bellfruit) (set 1, Protocol) (Scorpion 2/3) + + + sc2cshclp + Cashino Club (Bellfruit) (set 2, Protocol) (Scorpion 2/3) + + + sc2ctms2 + Cat & Mouse (Bellfruit) (set 2) (Scorpion 2/3) + + + sc2ctms21 + Cat & Mouse (Bellfruit) (set 7) (Scorpion 2/3) + + + sc2ctms21p + Cat & Mouse (Bellfruit) (set 7, Protocol) (Scorpion 2/3) + + + sc2ctms22 + Cat & Mouse (Bellfruit) (set 6) (Scorpion 2/3) + + + sc2ctms22p + Cat & Mouse (Bellfruit) (set 6, Protocol) (Scorpion 2/3) + + + sc2ctms23 + Cat & Mouse (Bellfruit) (set 5) (Scorpion 2/3) + + + sc2ctms23p + Cat & Mouse (Bellfruit) (set 5, Protocol) (Scorpion 2/3) + + + sc2ctms24p + Cat & Mouse (Bellfruit) (set 8, Protocol) (Scorpion 2/3) + + + sc2ctms25 + Cat & Mouse (Bellfruit) (set 3) (Scorpion 2/3) + + + sc2cvega + Cash Vegas (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2cvega1 + Cash Vegas (Bellfruit) (set 4, UK, 10GBP Jackpot, 3rd Triennial) (Scorpion 2/3) + + + sc2cvega1p + Cash Vegas (Bellfruit) (set 4, UK, 10GBP Jackpot, 3rd Triennial, Protocol) (Scorpion 2/3) + + + sc2cvega2 + Cash Vegas (Bellfruit) (set 3, UK, 8GBP Jackpot) (Scorpion 2/3) + + + sc2cvega2p + Cash Vegas (Bellfruit) (set 3, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2cvega3 + Cash Vegas (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2cvega3p + Cash Vegas (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2cvega4p + Cash Vegas (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2dbl + Double Diamond (Bellfruit) (set 2, UK) (Scorpion 2/3) + + + sc2dbl1 + Double Diamond (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2dbl1p + Double Diamond (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2dblp + Double Diamond (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3) + + + sc2dels + Del's Millions (Bellfruit) (set 9, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2dels1 + Del's Millions (Bellfruit) (set 10, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2dels10 + Del's Millions (Bellfruit) (set 11, UK, ??GBP Jackpot) (Scorpion 2/3) + + + sc2dels11 + Del's Millions (Bellfruit) (set 12, UK, ??GBP Jackpot) (Scorpion 2/3) + + + sc2dels1p + Del's Millions (Bellfruit) (set 10, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2dels2 + Del's Millions (Bellfruit) (set 7, UK, 8GBP Jackpot) (Scorpion 2/3) + + + sc2dels2p + Del's Millions (Bellfruit) (set 7, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2dels3 + Del's Millions (Bellfruit) (set 3, UK, 8GBP Jackpot) (Scorpion 2/3) + + + sc2dels3p + Del's Millions (Bellfruit) (set 3, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2dels4 + Del's Millions (Bellfruit) (set 6, UK) (Scorpion 2/3) + + + sc2dels4p + Del's Millions (Bellfruit) (set 6, UK, Protocol) (Scorpion 2/3) + + + sc2dels5 + Del's Millions (Bellfruit) (set 5, UK) (Scorpion 2/3) + + + sc2dels6 + Del's Millions (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2dels7 + Del's Millions (Bellfruit) (set 2, UK) (Scorpion 2/3) + + + sc2dels8 + Del's Millions (Bellfruit) (set 8, UK) (Scorpion 2/3) + + + sc2dels9 + Del's Millions (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3) + + + sc2delsd + Del's Millions (Bellfruit) (set 4, Deluxe) (Scorpion 2/3) + + + sc2delsm + Del's Millions (Bellfruit/Mazooma) (DMVMAZ11_N) (Scorpion 2/3) + + + sc2delsm1 + Del's Millions (Bellfruit/Mazooma) (DMVMAZ13_N) (Scorpion 2/3) + + + sc2delsm1p + Del's Millions (Bellfruit/Mazooma) (DMVMAZ14_N) (Scorpion 2/3) + + + sc2delsm2 + Del's Millions (Bellfruit/Mazooma) (DMVMAZ11_P) (Scorpion 2/3) + + + sc2delsm2p + Del's Millions (Bellfruit/Mazooma) (DMVMAZ12_P) (Scorpion 2/3) + + + sc2delsm3 + Del's Millions (Bellfruit/Mazooma) (DMVMAZ13_P) (Scorpion 2/3) + + + sc2delsm3p + Del's Millions (Bellfruit/Mazooma) (DMVMAZ14_P) (Scorpion 2/3) + + + sc2delsmp + Del's Millions (Bellfruit/Mazooma) (DMVMAZ12_N) (Scorpion 2/3) + + + sc2delsp + Del's Millions (Bellfruit) (set 9, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2dick + Spotted Dick (Global) (v3.1) (Scorpion 2/3) + + + sc2dick1 + Spotted Dick (Global) (v2.2) (Scorpion 2/3) + + + sc2dick2 + Spotted Dick (Global) (v1.5) (Scorpion 2/3) + + + sc2dick2e + Spotted Dick (Global) (v?.? Euro) (Scorpion 2/3) + + + sc2dick2eu + Spotted Dick (Global) (v?.? Euro unencrypted) (Scorpion 2/3) + + + sc2dick2p + Spotted Dick (Global) (v1.5 Protocol ) (Scorpion 2/3) + + + sc2dickp + Spotted Dick (Global) (v3.1 Protocol) (Scorpion 2/3) + + + sc2downt + Down Town (Bellfruit) (set 7, UK) (Scorpion 2/3) + + + sc2downt1 + Down Town (Bellfruit) (set 4, UK, 16RM motor) (Scorpion 2/3) + + + sc2downt1p + Down Town (Bellfruit) (set 4, UK, 16RM motor, Protocol) (Scorpion 2/3) + + + sc2downt2 + Down Town (Bellfruit) (set 6, UK) (Scorpion 2/3) + + + sc2downt2p + Down Town (Bellfruit) (set 7, UK, Protocol) (Scorpion 2/3) + + + sc2downt3 + Down Town (Bellfruit) (set 11, UK, 15RM motor) (Scorpion 2/3) + + + sc2downt3a + Down Town (Bellfruit) (set 8, UK) (Scorpion 2/3) + + + sc2downt3ap + Down Town (Bellfruit) (set 8, UK, Protocol) (Scorpion 2/3) + + + sc2downt3p + Down Town (Bellfruit) (set 11, UK, 15RM motor, Protocol) (Scorpion 2/3) + + + sc2downt4 + Down Town (Bellfruit) (set 10, UK, 15RM motor) (Scorpion 2/3) + + + sc2downt4a + Down Town (Bellfruit) (set 9, UK) (Scorpion 2/3) + + + sc2downt4ap + Down Town (Bellfruit) (set 9, UK, Protocol) (Scorpion 2/3) + + + sc2downt4p + Down Town (Bellfruit) (set 10, UK, 15RM motor, Protocol) (Scorpion 2/3) + + + sc2downt5 + Down Town (Bellfruit) (set 5, UK) (Scorpion 2/3) + + + sc2downt6 + Down Town (Bellfruit) (set 1, UK, 16RM motor) (Scorpion 2/3) + + + sc2downt7 + Down Town (Bellfruit) (set 2, Irish, 16RM motor) (Scorpion 2/3) + + + sc2downt8a + Down Town (Bellfruit) (set 3, UK, 16RM motor) (Scorpion 2/3) + + + sc2downt8ap + Down Town (Bellfruit) (set 3, UK, 16RM motor, Protocol) (Scorpion 2/3) + + + sc2downtp + Down Town (Bellfruit) (set 6, UK, Protocol) (Scorpion 2/3) + + + sc2drwho + Dr.Who The Timelord (set 1, UK, Single Site) (Scorpion 2/3) + + + sc2drwho1 + Dr.Who The Timelord (set 2, UK, Arcade) (Scorpion 2/3) + + + sc2drwho1p + Dr.Who The Timelord (set 2, UK, Arcade, Protocol) (Scorpion 2/3) + + + sc2drwho2 + Dr.Who The Timelord (set 3, UK, no Jackpot spin) (Scorpion 2/3) + + + sc2drwho2p + Dr.Who The Timelord (set 3, UK, no Jackpot spin, Protocol) (Scorpion 2/3) + + + sc2drwho3 + Dr.Who The Timelord (set 4, UK, Arcade) (Scorpion 2/3) + + + sc2drwho3p + Dr.Who The Timelord (set 4, UK, Arcade, Protocol) (Scorpion 2/3) + + + sc2drwho4 + Dr.Who The Timelord (set 5, UK) (Scorpion 2/3) + + + sc2drwho4p + Dr.Who The Timelord (set 5, UK, Protocol) (Scorpion 2/3) + + + sc2drwho5 + Dr.Who The Timelord (set 6, UK, Arcade, 8GBP Jackpot) (Scorpion 2/3) + + + sc2drwho5p + Dr.Who The Timelord (set 6, UK, Arcade, 8GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2drwho6 + Dr.Who The Timelord (set 7, UK, Arcade) (Scorpion 2/3) + + + sc2drwho6p + Dr.Who The Timelord (set 7, UK, Arcade, Protocol) (Scorpion 2/3) + + + sc2drwho7 + Dr.Who The Timelord (set 8, UK, Arcade, 10GBP Jackpot) (Scorpion 2/3) + + + sc2drwho7p + Dr.Who The Timelord (set 8, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2drwhodx + Dr.Who The Timelord Deluxe (set 1) (Scorpion 2/3) + + + sc2drwhodx1 + Dr.Who The Timelord Deluxe (set 2) (Scorpion 2/3) + + + sc2drwhomz + Dr.Who The Timelord (Mazooma) (Scorpion 2/3) + + + sc2drwhomzp + Dr.Who The Timelord (Mazooma, Protocol) (Scorpion 2/3) + + + sc2drwhop + Dr.Who The Timelord (set 1, UK, Single Site Protocol) (Scorpion 2/3) + + + sc2drwhou + Dr.Who The Timelord (set 1, UK, Single Site) (Scorpion 2/3) (not encrypted) + + + sc2easy + Easy Money (Bellfruit) (set 1) (Scorpion 2/3) + + + sc2easy1 + Easy Money (Bellfruit) (set 3) (Scorpion 2/3) + + + sc2easy1p + Easy Money (Bellfruit) (set 3, Protocol) (Scorpion 2/3) + + + sc2easy2 + Easy Money (Bellfruit) (set 2) (Scorpion 2/3) + + + sc2easy2p + Easy Money (Bellfruit) (set 2, Protocol) (Scorpion 2/3) + + + sc2easyp + Easy Money (Bellfruit) (set 1, Protocol) (Scorpion 2/3) + + + sc2eggs + Eggs On Legs Tour (Bellfruit) (set 2, UK, Arcade, 10GBP Jackpot) (Scorpion 2/3) + + + sc2eggs1 + Eggs On Legs Tour (Bellfruit) (set 1, UK, Arcade, 10GBP Jackpot?) (Scorpion 2/3) + + + sc2eggs1p + Eggs On Legs Tour (Bellfruit) (set 1, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2eggsp + Eggs On Legs Tour (Bellfruit) (set 2, UK, Arcade, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2flaca + Flash Cash (Bellfruit) (set 3, UK, 10GBP Jackpot, 3rd Triennial) (Scorpion 2/3) + + + sc2flaca1 + Flash Cash (Bellfruit) (set 1, UK, 10GBP Jackpot, 2nd Triennial) (Scorpion 2/3) + + + sc2flaca1p + Flash Cash (Bellfruit) (set 1, UK, 10GBP Jackpot, 2nd Triennial, Protocol) (Scorpion 2/3) + + + sc2flaca2 + Flash Cash (Bellfruit) (set 2, UK, 10GBP Jackpot, 2nd Triennial) (Scorpion 2/3) + + + sc2flaca2p + Flash Cash (Bellfruit) (set 2, UK, 10GBP Jackpot, 2nd Triennial, Protocol) (Scorpion 2/3) + + + sc2flacap + Flash Cash (Bellfruit) (set 3, UK, 10GBP Jackpot, 3rd Triennial, Protocol) (Scorpion 2/3) + + + sc2flutr + Flutter (Concept) + + + sc2focus + Focus (Dutch, Game Card 95-750-347) (Scorpion 2/3) + + + sc2foot + Football Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2foot1 + Football Club (Bellfruit) (set 3, UK, 100GBP Jackpot) (Scorpion 2/3) + + + sc2foot1p + Football Club (Bellfruit) (set 3, UK, 100GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2foot2 + Football Club (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2foot2p + Football Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2footp + Football Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2gcclb + Golden Casino Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2gcclb1 + Golden Casino Club (Bellfruit) (set 3, UK, 100GBP Jackpot) (Scorpion 2/3) + + + sc2gcclb1p + Golden Casino Club (Bellfruit) (set 3, UK, 100GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2gcclb2 + Golden Casino Club (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2gcclb2p + Golden Casino Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2gcclbp + Golden Casino Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2goldr + Gold Reserve (Mdm) (v1.3) (Scorpion 2/3) + + + sc2goldr1 + Gold Reserve (Mdm) (set 2) (Scorpion 2/3) + + + sc2goldrp + Gold Reserve (Mdm) (v1.3 Protocol) (Scorpion 2/3) + + + sc2groul + Golden Roulette (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2groulp + Golden Roulette (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3) + + + sc2gsclb + The Game Show Club (Bellfruit) (set 4, UK, Arcade, p65) (Scorpion 2/3) + + + sc2gsclb1 + The Game Show Club (Bellfruit) (set 7, UK, Arcade, 250GBP Jackpot, p65) (Scorpion 2/3) + + + sc2gsclb1p + The Game Show Club (Bellfruit) (set 7, UK, Arcade, 250GBP Jackpot, p65, Protocol) (Scorpion 2/3) + + + sc2gsclb2 + The Game Show Club (Bellfruit) (set 3, UK, Arcade) (Scorpion 2/3) + + + sc2gsclb2p + The Game Show Club (Bellfruit) (set 3, UK, Arcade, Protocol) (Scorpion 2/3) + + + sc2gsclb3 + The Game Show Club (Bellfruit) (set 5, UK, Arcade) (Scorpion 2/3) + + + sc2gsclb3p + The Game Show Club (Bellfruit) (set 5, UK, Arcade, Protocol) (Scorpion 2/3) + + + sc2gsclb4 + The Game Show Club (Bellfruit) (set 6, UK, Arcade) (Scorpion 2/3) + + + sc2gsclb4p + The Game Show Club (Bellfruit) (set 6, UK, Arcade, Protocol) (Scorpion 2/3) + + + sc2gsclb5 + The Game Show Club (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2gsclb6 + The Game Show Club (Bellfruit) (set 8, UK) (Scorpion 2/3) + + + sc2gsclb6p + The Game Show Club (Bellfruit) (set 8, UK, Protocol) (Scorpion 2/3) + + + sc2gsclb7 + The Game Show Club (Bellfruit) (set 2, UK) (Scorpion 2/3) + + + sc2gsclbp + The Game Show Club (Bellfruit) (set 4, UK, Arcade, p65, Protocol) (Scorpion 2/3) + + + sc2gslam + Club Grand Slam (UK, set 2) (Scorpion 2/3) + + + sc2gslam1 + Club Grand Slam (UK, set 1) (Scorpion 2/3) + + + sc2gslam1p + Club Grand Slam (UK, set 1, Protocol) (Scorpion 2/3) + + + sc2gslamp + Club Grand Slam (UK, set 2, Protocol) (Scorpion 2/3) + + + sc2gtr + The Great Train Robbery (Bellfruit) (Scorpion 2/3) + + + sc2heypr + Hey Presto (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2heyprp + Hey Presto (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2hifly + High Flyer (Mdm) (v4.1) (Scorpion 2/3) + + + sc2hifly2 + High Flyer (Mdm) (v3.1) (Scorpion 2/3) + + + sc2hifly3 + High Flyer (Mdm) (v2.1) (Scorpion 2/3) + + + sc2hifly4 + High Flyer (Mdm) (v?.?) (Scorpion 2/3) + + + sc2hypr + Hyperactive (Bellfruit) (set 1, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2hypr1 + Hyperactive (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2hypr1p + Hyperactive (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2hyprp + Hyperactive (Bellfruit) (set 1, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2in1 + Super Card 2 in 1 (English version 03.23) + + + sc2inst + Instant Jackpot (Bellfruit) (set 6, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2inst1 + Instant Jackpot (Bellfruit) (set 7, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2inst1p + Instant Jackpot (Bellfruit) (set 7, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2inst2 + Instant Jackpot (Bellfruit) (set 4, UK) (Scorpion 2/3) + + + sc2inst2p + Instant Jackpot (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3) + + + sc2inst3 + Instant Jackpot (Bellfruit) (set 5, UK, 8GBP Jackpot) (Scorpion 2/3) + + + sc2inst3p + Instant Jackpot (Bellfruit) (set 5, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2inst4 + Instant Jackpot (Bellfruit) (set 3, UK) (Scorpion 2/3) + + + sc2inst4p + Instant Jackpot (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3) + + + sc2inst5 + Instant Jackpot (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2inst6 + Instant Jackpot (Bellfruit) (set 2, UK) (Scorpion 2/3) + + + sc2instp + Instant Jackpot (Bellfruit) (set 6, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2kcclb + King Cash Club (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2kcclb1 + King Cash Club (Bellfruit) (set 2, UK) (Scorpion 2/3) + + + sc2kcclb1p + King Cash Club (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3) + + + sc2kcclbp + King Cash Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2luvv + Luvvly Jubbly (set 3, UK, Multisite 10GBP/25p) (Scorpion 2/3) + + + sc2luvv1 + Luvvly Jubbly (set 3, UK, Multisite 10GBP/20p) (Scorpion 2/3) + + + sc2luvv1p + Luvvly Jubbly (set 3, UK, Multisite 10GBP/20p, Protocol) (Scorpion 2/3) + + + sc2luvv2 + Luvvly Jubbly (set 2, UK, Multisite) (Scorpion 2/3) + + + sc2luvv2p + Luvvly Jubbly (set 2, UK, Multisite, Protocol) (Scorpion 2/3) + + + sc2luvv4 + Luvvly Jubbly (set 4, UK, Multisite 4GBP/5p) (Scorpion 2/3) + + + sc2luvv4p + Luvvly Jubbly (set 4, UK, Multisite 4GBP/5p, Protocol) (Scorpion 2/3) + + + sc2luvv6p + Luvvly Jubbly (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2luvvp + Luvvly Jubbly (set 3, UK, Multisite 10GBP/25p, Protocol) (Scorpion 2/3) + + + sc2maina + Main Attraction (Bellfruit) (Scorpion 2/3) + + + sc2majes + Majestic Bells (Bellfruit) (set 1) (set 1) + + + sc2majesp + Majestic Bells (Bellfruit) (set 1, Protocol) (set 2) + + + sc2mam + Make A Million (Bellfruit) (set 4, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2mam1 + Make A Million (Bellfruit) (set 5, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2mam1p + Make A Million (Bellfruit) (set 5, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2mam2 + Make A Million (Bellfruit) (set 3, UK, 8GBP Jackpot) (Scorpion 2/3) + + + sc2mam2p + Make A Million (Bellfruit) (set 3, UK, 8GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2mam3 + Make A Million (Bellfruit) (set 2, UK) (Scorpion 2/3) + + + sc2mam3a + Make A Million (Bellfruit) (set 2, UK, alt) (Scorpion 2/3) + + + sc2mam3p + Make A Million (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3) + + + sc2mam4 + Make A Million (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2mam4p + Make A Million (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2mamcl + Make A Million Club (Bellfruit) (set 3, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2mamcl1 + Make A Million Club (Bellfruit) (set 4, UK) (Scorpion 2/3) + + + sc2mamcl1p + Make A Million Club (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3) + + + sc2mamcl2 + Make A Million Club (Bellfruit) (set 2, UK) (Scorpion 2/3) + + + sc2mamcl2p + Make A Million Club (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3) + + + sc2mamcl3 + Make A Million Club (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2mamclp + Make A Million Club (Bellfruit) (set 3, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2mamp + Make A Million (Bellfruit) (set 4, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2motd + Match Of The Day (Bellfruit) (set 9, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2motd1 + Match Of The Day (Bellfruit) (set 7, UK, 10GBP Jackpot, 1st Triennial) (Scorpion 2/3) + + + sc2motd1p + Match Of The Day (Bellfruit) (set 7, UK, 10GBP Jackpot, 1st Triennial, Protocol) (Scorpion 2/3) + + + sc2motd2 + Match Of The Day (Bellfruit) (set 8, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2motd2p + Match Of The Day (Bellfruit) (set 8, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2motd3 + Match Of The Day (Bellfruit) (set 6, UK) (Scorpion 2/3) + + + sc2motd3p + Match Of The Day (Bellfruit) (set 6, UK, Protocol) (Scorpion 2/3) + + + sc2motd4 + Match Of The Day (Bellfruit) (set 3, UK, Arcade) (Scorpion 2/3) + + + sc2motd4p + Match Of The Day (Bellfruit) (set 3, UK, Arcade, Protocol) (Scorpion 2/3) + + + sc2motd5 + Match Of The Day (Bellfruit) (set 2, UK, Single Site) (Scorpion 2/3) + + + sc2motd5p + Match Of The Day (Bellfruit) (set 2, UK, Single Site, Protocol) (Scorpion 2/3) + + + sc2motd6 + Match Of The Day (Bellfruit) (set 4, Irish, 8GBP Jackpot) (Scorpion 2/3) + + + sc2motd6p + Match Of The Day (Bellfruit) (set 4, Irish, 8GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2motd7 + Match Of The Day (Bellfruit) (set 5, UK) (Scorpion 2/3) + + + sc2motd8p + Match Of The Day (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3) + + + sc2motd9 + Match Of The Day (Bellfruit) (set 1, Irish) (Scorpion 2/3) + + + sc2motdp + Match Of The Day (Bellfruit) (set 9, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2ofool + Only Fools & Horses (Bellfruit) (set 3) (Scorpion 2/3) + + + sc2ofool1 + Only Fools & Horses (Bellfruit) (set 1) (Scorpion 2/3) + + + sc2ofool2 + Only Fools & Horses (Bellfruit) (set 4) (Scorpion 2/3) + + + sc2ofool3 + Only Fools & Horses (Bellfruit) (set 2) (Scorpion 2/3) + + + sc2ofool4 + Only Fools & Horses (Bellfruit) (set 5) (Scorpion 2/3) + + + sc2olgld + Olympic Gold (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2olgld1 + Olympic Gold (Bellfruit) (set 2, UK, 10GBP Jackpot) (Scorpion 2/3) + + + sc2olgld1p + Olympic Gold (Bellfruit) (set 2, UK, 10GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc2olgldp + Olympic Gold (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2payr + Pay Roll Casino (Bellfruit/Mazooma) (Scorpion 2/3) + + + sc2pe1g + Public Enemy No.1 (Bellfruit) [German] (Scorpion 2/3) + + + sc2pick + Pick Of The Bunch (Global) (v2.3) (Scorpion 2/3) + + + sc2pickc + Pick Of The Bunch (Club?) (Global) (v1.9) (Scorpion 2/3) + + + sc2pickcp + Pick Of The Bunch (Club?) (Global) (v1.9 Protocol) (Scorpion 2/3) + + + sc2pickp + Pick Of The Bunch (Global) (v2.3 Protocol) (Scorpion 2/3) + + + sc2prem + Premier Club Manager (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2prem1 + Premier Club Manager (Bellfruit) (set 3, UK) (Scorpion 2/3) + + + sc2prem1p + Premier Club Manager (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3) + + + sc2prem2 + Premier Club Manager (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2prom + Along The Prom (Bellfruit) (Scorpion 2/3) + + + sc2ptytm + Party Time (Bellfruit) (set 2) (Scorpion 2/3) + + + sc2ptytm1 + Party Time (Bellfruit) (set 1) (Scorpion 2/3) + + + sc2ptytmp + Party Time (Bellfruit) (set 2, Protocol) (Scorpion 2/3) + + + sc2relgm + Reel Gems (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2relgm1p + Reel Gems (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3) + + + sc2relgmp + Reel Gems (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2rock + How Big's Your Rock? (Global) (v1.5) (Scorpion 2/3) + + + sc2rock1 + How Big's Your Rock? (Global) (v1.4) (Scorpion 2/3) + + + sc2rock1p + How Big's Your Rock? (Global) (v1.4 Protocol) (Scorpion 2/3) + + + sc2rocke + How Big's Your Rock? (Global) (v?.? Euro) (Scorpion 2/3) + + + sc2rockp + How Big's Your Rock? (Global) (v1.5 Protocol) (Scorpion 2/3) + + + sc2scc + Safe Cracker Club (Mdm) (v4.4) (Scorpion 2/3) + + + sc2scshx + Super Cash X (Concept) + + + sc2scshxcas + Super Casino Cash X (Concept) + + + sc2scshxgman + Super Cash X (Concept) (Gamesman Hardware) + + + sc2scshxstar + Super Cash X (Concept) (Starpoint Hardware) + + + sc2sghst + Super Ghost (Concept) + + + sc2showt + Showtime Spectacular (Bellfruit) (set 4, UK) (Scorpion 2/3) + + + sc2showt1 + Showtime Spectacular (Bellfruit) (set 5, UK) (Scorpion 2/3) + + + sc2showt1p + Showtime Spectacular (Bellfruit) (set 5, UK, Protocol) (Scorpion 2/3) + + + sc2showt2 + Showtime Spectacular (Bellfruit) (set 3, UK) (Scorpion 2/3) + + + sc2showt2p + Showtime Spectacular (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3) + + + sc2showt3 + Showtime Spectacular (Bellfruit) (set 2, UK) (Scorpion 2/3) + + + sc2showt3p + Showtime Spectacular (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3) + + + sc2showt4 + Showtime Spectacular (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2showt4p + Showtime Spectacular (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2showtp + Showtime Spectacular (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3) + + + sc2smnud + Super Multi Nudger (Concept) + + + sc2sstar + Super Star (Bellfruit) (set 2, UK, 3rd Triennial) (Scorpion 2/3) + + + sc2sstar1 + Super Star (Bellfruit) (set 1, UK, 2nd Triennial) (Scorpion 2/3) + + + sc2sstar1p + Super Star (Bellfruit) (set 1, UK, 2nd Triennial, Protocol) (Scorpion 2/3) + + + sc2sstar2 + Super Star (Bellfruit) (set 4, UK, 2nd Triennial) (Scorpion 2/3) + + + sc2sstar2p + Super Star (Bellfruit) (set 4, UK, 2nd Triennial, Protocol) (Scorpion 2/3) + + + sc2sstar3 + Super Star (Bellfruit) (set 3, UK, 2nd Triennial) (Scorpion 2/3) + + + sc2sstar3p + Super Star (Bellfruit) (set 3, UK, 2nd Triennial, Protocol) (Scorpion 2/3) + + + sc2sstarp + Super Star (Bellfruit) (set 2, UK, 3rd Triennial, Protocol) (Scorpion 2/3) + + + sc2suprz + Surprise Surprize (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2suprz1 + Surprise Surprize (Bellfruit) (set 2, UK) (Scorpion 2/3) + + + sc2suprz1p + Surprise Surprize (Bellfruit) (set 2, UK, Protocol) (Scorpion 2/3) + + + sc2suprz2 + Surprise Surprize (Bellfruit) (set 4, UK) (Scorpion 2/3) + + + sc2suprz2p + Surprise Surprize (Bellfruit) (set 4, UK, Protocol) (Scorpion 2/3) + + + sc2suprz3 + Surprise Surprize (Bellfruit) (set 3, UK) (Scorpion 2/3) + + + sc2suprzp + Surprise Surprize (Bellfruit) (set 1, UK, Protocol)(Scorpion 2/3) + + + sc2topwk + Top Wack (Bellfruit) (set 1, UK, 10GBP Jackpot, 1st Triennial) (Scorpion 2/3) + + + sc2topwkp + Top Wack (Bellfruit) (set 1, UK, 10GBP Jackpot, 1st Triennial, Protocol) (Scorpion 2/3) + + + sc2town + Round The Town (Bellfruit) (set 6) (Scorpion 2/3) + + + sc2town1 + Round The Town (Bellfruit) (set 4) (Scorpion 2/3) + + + sc2town1a + Round The Town (Bellfruit) (set 4, alt) (Scorpion 2/3) + + + sc2town1p + Round The Town (Bellfruit) (set 4, Protocol) (Scorpion 2/3) + + + sc2town2 + Round The Town (Bellfruit) (set 2) (Scorpion 2/3) + + + sc2town3 + Round The Town (Bellfruit) (set 3) (Scorpion 2/3) + + + sc2town3p + Round The Town (Bellfruit) (set 3, Protocol) (Scorpion 2/3) + + + sc2town4 + Round The Town (Bellfruit) (set 1) (Scorpion 2/3) + + + sc2town5 + Round The Town (Bellfruit) (set 5) (Scorpion 2/3) + + + sc2townp + Round The Town (Bellfruit) (set 6, Protocol) (Scorpion 2/3) + + + sc2wembl + Match Of The Day - Road To Wembley (Bellfruit) (set 8, UK, 10GBP Jackpot, 15RM motor) (Scorpion 2/3) + + + sc2wembl1 + Match Of The Day - Road To Wembley (Bellfruit) (set 6, UK, 15RM motor) (Scorpion 2/3) + + + sc2wembl10 + Match Of The Day - Road To Wembley (Bellfruit) (set 5, Irish, 8GBP Jackpot, 16RM motor) (Scorpion 2/3) + + + sc2wembl1p + Match Of The Day - Road To Wembley (Bellfruit) (set 6, UK, 15RM motor, Protocol) (Scorpion 2/3) + + + sc2wembl2 + Match Of The Day - Road To Wembley (Bellfruit) (set 7, UK) (Scorpion 2/3) + + + sc2wembl2p + Match Of The Day - Road To Wembley (Bellfruit) (set 7, UK, Protocol) (Scorpion 2/3) + + + sc2wembl4p + Match Of The Day - Road To Wembley (Bellfruit) (set 3, UK, Protocol) (Scorpion 2/3) + + + sc2wembl5a + Match Of The Day - Road To Wembley (Bellfruit) (set 2, UK, 16RM motor) (Scorpion 2/3) + + + sc2wembl5ap + Match Of The Day - Road To Wembley (Bellfruit) (set 2, UK, 16RM motor, Protocol) (Scorpion 2/3) + + + sc2wembl6ap + Match Of The Day - Road To Wembley (Bellfruit) (set 4, Arcade, 16RM motor, Protocol) (Scorpion 2/3) + + + sc2wembl7a + Match Of The Day - Road To Wembley (Bellfruit) (set 1, UK, 8GBP Jackpot, 16RM motor) (Scorpion 2/3) + + + sc2wembl7ap + Match Of The Day - Road To Wembley (Bellfruit) (set 5, Irish, 8GBP Jackpot, 16RM motor, Protocol) (Scorpion 2/3) + + + sc2wembl8 + Match Of The Day - Road To Wembley (Bellfruit) (set 3, UK) (Scorpion 2/3) + + + sc2wembl9 + Match Of The Day - Road To Wembley (Bellfruit) (set 4, Arcade, 16RM motor) (Scorpion 2/3) + + + sc2wemblm + Match Of The Day - Road To Wembley (Bellfruit/Mazooma) (Scorpion 2/3) + + + sc2wemblp + Match Of The Day - Road To Wembley (Bellfruit) (set 8, UK, 10GBP Jackpot, 15RM motor, Protocol) (Scorpion 2/3) + + + sc2winst + Winning Streak (Bellfruit) (set 1) (Scorpion 2) + + + sc2winstb + Winning Streak (Bellfruit) (set 3) (Scorpion 2) + + + sc2winstbp + Winning Streak (Bellfruit) (set 3, Protocol) (Scorpion 2) + + + sc2winstd + Winning Streak (Bellfruit) (set 2) (Scorpion 2) + + + sc2winstdp + Winning Streak (Bellfruit) (set 2, Protocol) (Scorpion 2) + + + sc2winste + Winning Streak (Bellfruit) (set 4) (Scorpion 2) + + + sc2winstep + Winning Streak (Bellfruit) (set 4, Protocol) (Scorpion 2) + + + sc2winstf + Winning Streak (Bellfruit) (set 6) (Scorpion 2) + + + sc2winstfp + Winning Streak (Bellfruit) (set 6, Protocol) (Scorpion 2) + + + sc2winstg + Winning Streak (Bellfruit) (set 5) (Scorpion 2) + + + sc2winstp + Winning Streak (Bellfruit) (set 1, Protocol) (Scorpion 2) + + + sc2wwcl + Wild West Club (Bellfruit) (set 2, UK, 250GBP Jackpot) (Scorpion 2/3) + + + sc2wwcl1 + Wild West Club (Bellfruit) (set 1, UK) (Scorpion 2/3) + + + sc2wwcl1p + Wild West Club (Bellfruit) (set 1, UK, Protocol) (Scorpion 2/3) + + + sc2wwclp + Wild West Club (Bellfruit) (set 2, UK, 250GBP Jackpot, Protocol) (Scorpion 2/3) + + + sc4a40 + Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 1) + + + sc4a40a + Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 2) + + + sc4a40b + Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 3) + + + sc4a40c + Around The Board In 40 Days (Mazooma) (Scorpion 4) (set 4) + + + sc4a40cl + Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 1) + + + sc4a40cla + Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 2) + + + sc4a40clb + Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 3) + + + sc4a40clc + Around The Board In 40 Days Club (Mazooma) (Scorpion 4) (set 4) + + + sc4abra + Abracadabra (Qps) (Scorpion 4) (set 1, 041) + + + sc4abraa + Abracadabra (Qps) (Scorpion 4) (set 2, 041) + + + sc4abrab + Abracadabra (Qps) (Scorpion 4) (set 3, 044) + + + sc4abrac + Abracadabra (Qps) (Scorpion 4) (set 4, 044) + + + sc4abrad + Abracadabra (Qps) (Scorpion 4) (set 5, 014) + + + sc4abrae + Abracadabra (Qps) (Scorpion 4) (set 6, 014) + + + sc4acesh + Aces High (Mazooma) (Scorpion 4) (set 1) + + + sc4acesha + Aces High (Mazooma) (Scorpion 4) (set 2) + + + sc4aceshb + Aces High (Mazooma) (Scorpion 4) (set 3) + + + sc4aceshc + Aces High (Mazooma) (Scorpion 4) (set 4) + + + sc4adjb + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 1) + + + sc4adjba + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 2) + + + sc4adjbb + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 3) + + + sc4adjbc + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 4) + + + sc4adjbd + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 5) + + + sc4adjbe + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 6) + + + sc4adjbf + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 7) + + + sc4adjbg + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 8) + + + sc4adjbh + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 9) + + + sc4adjbi + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 4) (set 10) + + + sc4adren + Adrenalin (Mazooma) (Scorpion 4) (set 1) + + + sc4adrena + Adrenalin (Mazooma) (Scorpion 4) (set 2) + + + sc4adrenb + Adrenalin (Mazooma) (Scorpion 4) (set 3) + + + sc4adrenc + Adrenalin (Mazooma) (Scorpion 4) (set 4) + + + sc4adsnt + Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 1) + + + sc4adsnta + Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 4) (set 2) + + + sc4adwta + Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 1) + + + sc4adwtaa + Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 4) (set 2) + + + sc4alad + Aladdin's Cave (Mazooma) (Scorpion 4) (set 1) + + + sc4alada + Aladdin's Cave (Mazooma) (Scorpion 4) (set 2) + + + sc4aztec + Aztec Casino (Dutch) (Bellfruit) (Scorpion 4) + + + sc4azteca + Aztec (Dutch) (Bellfruit) (Scorpion 4) + + + sc4bankb + Bankety Bank (Qps) (Scorpion 4) (set 1) + + + sc4bankba + Bankety Bank (Qps) (Scorpion 4) (set 2) + + + sc4bantm + Bantam Of The Opera (Mazooma) (Scorpion 4) (set 1) + + + sc4bantma + Bantam Of The Opera (Mazooma) (Scorpion 4) (set 2) + + + sc4bantmb + Bantam Of The Opera (Mazooma) (Scorpion 4) (set 3) + + + sc4bantmc + Bantam Of The Opera (Mazooma) (Scorpion 4) (set 4) + + + sc4bar7 + Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 1) + + + sc4bar7a + Bar 7's (PR1433) (Bellfruit) (Scorpion 4) (set 2) + + + sc4bar7b + Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 1) + + + sc4bar7c + Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 2) + + + sc4bar7d + Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 3) + + + sc4bar7e + Bar 7's (PR1438) (Bellfruit) (Scorpion 4) (Top Box?, set 4) + + + sc4batl + Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 1) + + + sc4batla + Battleships & Cruisers (Bellfruit) (Scorpion 4) (set 2) + + + sc4bb + Bankety Bank (Qps) (Scorpion 4) (set 3) + + + sc4bba + Bankety Bank (Qps) (Scorpion 4) (set 4) + + + sc4bbclb + Bankety Bank Club (V1.0) (Qps) (Scorpion 4) + + + sc4bbclba + Bankety Bank Club (V1.1) (Qps) (Scorpion 4) + + + sc4bbclbb + Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 1) + + + sc4bbclbc + Bankety Bank Club (V411) (Qps) (Scorpion 4) (set 2) + + + sc4bblas + Big Blaster (Mazooma) (Scorpion 4) (set 1) + + + sc4bblasa + Big Blaster (Mazooma) (Scorpion 4) (set 2) + + + sc4bblasb + Big Blaster (Mazooma) (Scorpion 4) (set 3) + + + sc4bblasc + Big Blaster (Mazooma) (Scorpion 4) (set 4) + + + sc4bblasd + Big Blaster (Mazooma) (Scorpion 4) (set 5) + + + sc4bblase + Big Blaster (Mazooma) (Scorpion 4) (set 6) + + + sc4bblasf + Big Blaster (Mazooma) (Scorpion 4) (set 7) + + + sc4bbust + Blockbuster (Mazooma) (Scorpion 4) + + + sc4bed + Bedazzled (Mazooma) (Scorpion 4) (set 1) + + + sc4beda + Bedazzled (Mazooma) (Scorpion 4) (set 2) + + + sc4bedb + Bedazzled (Mazooma) (Scorpion 4) (set 3) + + + sc4bedc + Bedazzled (Mazooma) (Scorpion 4) (set 4) + + + sc4bedcl + Bedazzled Club (Mazooma) (Scorpion 4) (set 1) + + + sc4bedcla + Bedazzled Club (Mazooma) (Scorpion 4) (set 2) + + + sc4bedclb + Bedazzled Club (Mazooma) (Scorpion 4) (set 3) + + + sc4bedclc + Bedazzled Club (Mazooma) (Scorpion 4) (set 4) + + + sc4bedcld + Bedazzled Club (Mazooma) (Scorpion 4) (set 5) + + + sc4bedd + Bedazzled (Mazooma) (Scorpion 4) (set 5) + + + sc4bede + Bedazzled (Mazooma) (Scorpion 4) (set 6) + + + sc4bgold + Black Gold (Nova) (Scorpion 4) (set 1) + + + sc4bgolda + Black Gold (Nova) (Scorpion 4) (set 2) + + + sc4bigdl + Big Deal (Qps) (Scorpion 4) (set 1) + + + sc4bigdla + Big Deal (Qps) (Scorpion 4) (set 2) + + + sc4bingb + Bingo Belle (Mazooma) (Scorpion 4) (set 1) + + + sc4bingba + Bingo Belle (Mazooma) (Scorpion 4) (set 2) + + + sc4blast + Blast Off (011) (Qps) (Scorpion 4) (set 1) + + + sc4blasta + Blast Off (041) (Qps) (Scorpion 4) (set 1) + + + sc4blastb + Blast Off (011) (Qps) (Scorpion 4) (set 2) + + + sc4blastc + Blast Off (041) (Qps) (Scorpion 4) (set 2) + + + sc4blastd + Blast Off (042) (Qps) (Scorpion 4) (set 1) + + + sc4blaste + Blast Off (042) (Qps) (Scorpion 4) (set 2) + + + sc4blokq + Blockbuster (Qps) (Scorpion 4) (set 1) + + + sc4blokqa + Blockbuster (Qps) (Scorpion 4) (set 2) + + + sc4blokqb + Blockbuster (Qps) (Scorpion 4) (set 3) + + + sc4blokqc + Blockbuster (Qps) (Scorpion 4) (set 4) + + + sc4blokqd + Blockbuster (Qps) (Scorpion 4) (set 5) + + + sc4blokqe + Blockbuster (Qps) (Scorpion 4) (set 6) + + + sc4blue + Blue Rinse (Mazooma) (Scorpion 4) (set 1) + + + sc4bluea + Blue Rinse (Mazooma) (Scorpion 4) (set 2) + + + sc4blueb + Blue Rinse (Mazooma) (Scorpion 4) (set 3) + + + sc4bluec + Blue Rinse (Mazooma) (Scorpion 4) (set 4) + + + sc4blued + Blue Rinse (Mazooma) (Scorpion 4) (set 5) + + + sc4bluee + Blue Rinse (Mazooma) (Scorpion 4) (set 6) + + + sc4bob + Bobby Dazzler (Mazooma) (Scorpion 4) (set 1) + + + sc4boba + Bobby Dazzler (Mazooma) (Scorpion 4) (set 2) + + + sc4bobb + Bobby Dazzler (Mazooma) (Scorpion 4) (set 3) + + + sc4bobc + Bobby Dazzler (Mazooma) (Scorpion 4) (set 4) + + + sc4bobcl + Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 1) + + + sc4bobcla + Bobby Dazzler Club (Mazooma) (Scorpion 4) (set 2) + + + sc4bobd + Bobby Dazzler (Mazooma) (Scorpion 4) (set 5) + + + sc4bobe + Bobby Dazzler (Mazooma) (Scorpion 4) (set 6) + + + sc4bobf + Bobby Dazzler (Mazooma) (Scorpion 4) (set 7) + + + sc4bobg + Bobby Dazzler (Mazooma) (Scorpion 4) (set 8) + + + sc4bobh + Bobby Dazzler (Mazooma) (Scorpion 4) (set 9) + + + sc4bobi + Bobby Dazzler (Mazooma) (Scorpion 4) (set 10) + + + sc4bonbx + Bar X (Mazooma) (Scorpion 4) (set 1) + + + sc4bonbxa + Bar X (Mazooma) (Scorpion 4) (set 6) + + + sc4bonbxb + Bar X (Mazooma) (Scorpion 4) (set 7) + + + sc4bonbxc + Bar X (Mazooma) (Scorpion 4) (set 2) + + + sc4bonbxd + Bar X (Mazooma) (Scorpion 4) (set 3) + + + sc4bonbxe + Bar X (Mazooma) (Scorpion 4) (set 4) + + + sc4bonbxf + Bar X (Mazooma) (Scorpion 4) (set 5) + + + sc4bonbxg + Bar X (Mazooma) (Scorpion 4) (set 8) + + + sc4bonbxh + Bar X (Mazooma) (Scorpion 4) (set 9) + + + sc4bonbxi + Bar X (Mazooma) (Scorpion 4) (set 10) + + + sc4bonbxj + Bar X (Mazooma) (Scorpion 4) (set 11) + + + sc4bonbxk + Bar X (Mazooma) (Scorpion 4) (set 12) + + + sc4bonbxl + Bar X (Mazooma) (Scorpion 4) (set 13) + + + sc4boomb + Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 1) + + + sc4boomba + Monopoly Boom Or Bust (Bellfruit) (Scorpion 4) (set 2) + + + sc4botn + Back Of The Net (Qps) (Scorpion 4) (set 1, 011) + + + sc4botna + Back Of The Net (Qps) (Scorpion 4) (set 2, 011) + + + sc4bpb + Bully's Prize Board (Bellfruit) (Scorpion 4) (set 1) + + + sc4bpba + Bully's Prize Board (Bellfruit) (Scorpion 4) (set 3) + + + sc4bpbb + Bully's Prize Board (Bellfruit) (Scorpion 4) (set 4) + + + sc4bpbc + Bully's Prize Board (Bellfruit) (Scorpion 4) (set 2) + + + sc4bpbd + Bully's Prize Board (Bellfruit) (Scorpion 4) (set 5) + + + sc4bpbe + Bully's Prize Board (Bellfruit) (Scorpion 4) (set 6) + + + sc4brix + Brix (German) (Nova) (Scorpion 4) (set 1) + + + sc4brixa + Brix (German) (Nova) (Scorpion 4) (set 2) + + + sc4brixb + Brix (German) (Nova) (Scorpion 4) (set 3) + + + sc4brkfs + The Big Breakfast (BFM) (Scorpion 4) (set 1) + + + sc4brkfsa + The Big Breakfast (BFM) (Scorpion 4) (set 2) + + + sc4brkfsb + The Big Breakfast (BFM) (Scorpion 4) (set 3) + + + sc4brkfsc + The Big Breakfast (BFM) (Scorpion 4) (set 4) + + + sc4brksp + Break The Spell (Mazooma) (Scorpion 4) (set 1) + + + sc4brkspa + Break The Spell (Mazooma) (Scorpion 4) (set 2) + + + sc4broll + Bank Roll (Mazooma) (Scorpion 4) (set 1) + + + sc4brolla + Bank Roll (Mazooma) (Scorpion 4) (set 2) + + + sc4brollb + Bank Roll (Mazooma) (Scorpion 4) (set 3) + + + sc4brollc + Bank Roll (Mazooma) (Scorpion 4) (set 4) + + + sc4bsp + Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 1) + + + sc4bspa + Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 2) + + + sc4bspb + Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 3) + + + sc4bspc + Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 4) + + + sc4bspd + Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 5) + + + sc4bspe + Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 1) + + + sc4bspf + Bully's Star Prize (PR3042) (Bellfruit) (Scorpion 4) (set 2) + + + sc4bspg + Bully's Star Prize (PR3040) (Bellfruit) (Scorpion 4) (set 6) + + + sc4bugs + Bugs Money (Bellfruit) (Scorpion 4) (set 1) + + + sc4bugsa + Bugs Money (Bellfruit) (Scorpion 4) (set 2) + + + sc4bugsb + Bugs Money (Bellfruit) (Scorpion 4) (set 3) + + + sc4bugsc + Bugs Money (Bellfruit) (Scorpion 4) (set 4) + + + sc4bulcl + Bullseye Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4bulcla + Bullseye Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4bulclb + Bullseye Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4bulclc + Bullseye Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4bulcld + Bullseye Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4bulcle + Bullseye Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4bulclf + Bullseye Club (Bellfruit) (Scorpion 4) (set 7) + + + sc4bulclg + Bullseye Club (Bellfruit) (Scorpion 4) (set 8) + + + sc4bulclh + Bullseye Club (Bellfruit) (Scorpion 4) (set 9) + + + sc4bulcli + Bullseye Club (Bellfruit) (Scorpion 4) (set 10) + + + sc4bulcs + Bullseye Classic (Bellfruit) (Scorpion 4) (set 1) + + + sc4bulcsa + Bullseye Classic (Bellfruit) (Scorpion 4) (set 2) + + + sc4bulcsb + Bullseye Classic (Bellfruit) (Scorpion 4) (set 3) + + + sc4bulcsc + Bullseye Classic (Bellfruit) (Scorpion 4) (set 4) + + + sc4bull + Bullseye (Bellfruit) (Scorpion 4) (set 1) + + + sc4bulla + Bullseye (Bellfruit) (Scorpion 4) (set 2) + + + sc4bullb + Bullseye (Bellfruit) (Scorpion 4) (set 3) + + + sc4bullc + Bullseye (Bellfruit) (Scorpion 4) (set 4) + + + sc4butch + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 1) + + + sc4butcha + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 2) + + + sc4butchb + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 3) + + + sc4butchc + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 4) + + + sc4butchd + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 5) + + + sc4butche + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 6) + + + sc4butchf + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 7) + + + sc4butchg + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 4) (set 8) + + + sc4bwow + Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 1) + + + sc4bwowa + Wheel Of Wealth (Bellfruit) (PR1726) (Scorpion 4) (WHEL013, set 2) + + + sc4cabin + Cabin Fever (Mazooma) (Scorpion 4) (set 1) + + + sc4cabina + Cabin Fever (Mazooma) (Scorpion 4) (set 2) + + + sc4cabinb + Cabin Fever (Mazooma) (Scorpion 4) (set 3) + + + sc4cabinc + Cabin Fever (Mazooma) (Scorpion 4) (set 4) + + + sc4cabind + Cabin Fever (Mazooma) (Scorpion 4) (set 5) + + + sc4cabine + Cabin Fever (Mazooma) (Scorpion 4) (set 6) + + + sc4cabinf + Cabin Fever (Mazooma) (Scorpion 4) (set 7) + + + sc4cabing + Cabin Fever (Mazooma) (Scorpion 4) (set 8) + + + sc4cabinh + Cabin Fever (Mazooma) (Scorpion 4) (set 9) + + + sc4cabini + Cabin Fever (Mazooma) (Scorpion 4) (set 10) + + + sc4cabinj + Cabin Fever (Mazooma) (Scorpion 4) (set 11) + + + sc4cabink + Cabin Fever (Mazooma) (Scorpion 4) (set 12) + + + sc4cabinl + Cabin Fever (Mazooma) (Scorpion 4) (set 13) + + + sc4cabinm + Cabin Fever (Mazooma) (Scorpion 4) (set 14) + + + sc4cad + Cash Adder (V1.0) (Qps) (Scorpion 4) (set 1) + + + sc4cada + Cash Adder (V1.0) (Qps) (Scorpion 4) (set 2) + + + sc4cadb + Cash Adder (V011) (Qps) (Scorpion 4) (set 1) + + + sc4cadc + Cash Adder (V041) (Qps) (Scorpion 4) (set 1) + + + sc4cadcl + Cash Adder Club (411) (Qps) (Scorpion 4) (set 1) + + + sc4cadcla + Cash Adder Club (411) (Qps) (Scorpion 4) (set 2) + + + sc4cadd + Cash Adder (V012) (Qps) (Scorpion 4) (set 1) + + + sc4cade + Cash Adder (V042) (Qps) (Scorpion 4) (set 1) + + + sc4cadf + Cash Adder (V1.0) (Qps) (Scorpion 4) (set 3) + + + sc4cadg + Cash Adder (V1.0) (Qps) (Scorpion 4) (set 4) + + + sc4cadh + Cash Adder (V011) (Qps) (Scorpion 4) (set 2) + + + sc4cadi + Cash Adder (V041) (Qps) (Scorpion 4) (set 2) + + + sc4cadj + Cash Adder (V012) (Qps) (Scorpion 4) (set 2) + + + sc4cadk + Cash Adder (V042) (Qps) (Scorpion 4) (set 2) + + + sc4cadl + Cash Adder (V013) (Qps) (Scorpion 4) (set 1) + + + sc4cadm + Cash Adder (V013) (Qps) (Scorpion 4) (set 2) + + + sc4cadn + Cash Adder (V014) (Qps) (Scorpion 4) (set 1) + + + sc4cado + Cash Adder (V043) (Qps) (Scorpion 4) (set 1) + + + sc4cadp + Cash Adder (V014) (Qps) (Scorpion 4) (set 2) + + + sc4cadq + Cash Adder (V043) (Qps) (Scorpion 4) (set 2) + + + sc4canca + Can Can Cash Casino (Mazooma) (Scorpion 4) (set 1) + + + sc4cancaa + Can Can Cash Casino (Mazooma) (Scorpion 4) (set 2) + + + sc4cancab + Can Can Cash Casino (Mazooma) (Scorpion 4) (set 3) + + + sc4cancac + Can Can Cash Casino (Mazooma) (Scorpion 4) (set 4) + + + sc4captn + Captain Cash (Qps) (Scorpion 4) (set 1) + + + sc4captna + Captain Cash (Qps) (Scorpion 4) (set 4) + + + sc4captnb + Captain Cash (Qps) (Scorpion 4) (set 2) + + + sc4captnc + Captain Cash (Qps) (Scorpion 4) (set 3) + + + sc4captnd + Captain Cash (Qps) (Scorpion 4) (set 5) + + + sc4captne + Captain Cash (Qps) (Scorpion 4) (set 6) + + + sc4captnf + Captain Cash (Qps) (Scorpion 4) (set 7) + + + sc4cari + Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 1) + + + sc4caria + Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 2) + + + sc4carib + Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 3) + + + sc4caric + Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 4) + + + sc4carid + Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 5) + + + sc4carie + Caribbean Cash (PR2326) (Mazooma) (Scorpion 4) (set 6) + + + sc4cariq + Caribbean Cash (Qps) (Scorpion 4) (set 1) + + + sc4cariqa + Caribbean Cash (Qps) (Scorpion 4) (set 2) + + + sc4cariqb + Caribbean Cash (Qps) (Scorpion 4) (set 3) + + + sc4cariqc + Caribbean Cash (Qps) (Scorpion 4) (set 4) + + + sc4cariqd + Caribbean Cash (Qps) (Scorpion 4) (set 5) + + + sc4cariqe + Caribbean Cash (Qps) (Scorpion 4) (set 6) + + + sc4cariqf + Caribbean Cash (Qps) (Scorpion 4) (set 7) + + + sc4cariqg + Caribbean Cash (Qps) (Scorpion 4) (set 8) + + + sc4carry + Carry On Winning (Bellfruit) (Scorpion 4) (set 1) + + + sc4carrya + Carry On Winning (Bellfruit) (Scorpion 4) (set 2) + + + sc4cashg + Cashanova (German) (Mazooma / Nova) (Scorpion 4) + + + sc4cashm + Cashanova (Mazooma) (Scorpion 4) (set 1) + + + sc4cashma + Cashanova (Mazooma) (Scorpion 4) (set 2) + + + sc4cashmb + Cashanova (Mazooma) (Scorpion 4) (set 3) + + + sc4cashmc + Cashanova (Mazooma) (Scorpion 4) (set 4) + + + sc4cashmd + Cashanova (Mazooma) (Scorpion 4) (set 5) + + + sc4cashme + Cashanova (Mazooma) (Scorpion 4) (set 6) + + + sc4cashn + Cashanova (Dutch) (Mazooma / Eurocoin) (Scorpion 4) + + + sc4casry + Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 1) + + + sc4casrya + Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 1) + + + sc4casryb + Casino Royale (PR2073) (Czech) (Mazooma) (Scorpion 4) (set 2) + + + sc4casryc + Casino Royale (PR2062) (Mazooma) (Scorpion 4) (set 2) + + + sc4casryd + Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 1) + + + sc4casrye + Casino Royale (PR2075) (Mazooma) (Scorpion 4) (set 2) + + + sc4casxt + Casino Xtravaganza (Mazooma) (Scorpion 4) (set 1) + + + sc4casxta + Casino Xtravaganza (Mazooma) (Scorpion 4) (set 2) + + + sc4casxtb + Casino Xtravaganza (Mazooma) (Scorpion 4) (set 3) + + + sc4casxtc + Casino Xtravaganza (Mazooma) (Scorpion 4) (set 4) + + + sc4casxtd + Casino Xtravaganza (Mazooma) (Scorpion 4) (set 5) + + + sc4casxte + Casino Xtravaganza (Mazooma) (Scorpion 4) (set 6) + + + sc4cbaz + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4cbaza + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4cbazb + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4cbazc + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4cbazd + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4cbaze + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4cbazf + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 7) + + + sc4cbazg + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 8) + + + sc4cbazh + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 9) + + + sc4cbazi + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 10) + + + sc4cbazj + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 11) + + + sc4cbazk + Cash Bazaar Club (Bellfruit) (Scorpion 4) (set 12) + + + sc4cblas + Cash Blast (Voodoo Games) (Scorpion 4) (set 1) + + + sc4cblasa + Cash Blast (Voodoo Games) (Scorpion 4) (set 2) + + + sc4cburn + Cash 'n' Burn (Qps) (Scorpion 4) (set 1) + + + sc4cburna + Cash 'n' Burn (Qps) (Scorpion 4) (set 2) + + + sc4ccc + Criss Cross Crazy (Dutch) (Bellfruit) (Scorpion 4) + + + sc4cccsh + Criss Cross Cash (Mazooma) (Scorpion 4) (set 1) + + + sc4cccsha + Criss Cross Cash (Mazooma) (Scorpion 4) (set 2) + + + sc4cccshb + Criss Cross Cash (Mazooma) (Scorpion 4) (set 3) + + + sc4cccshc + Criss Cross Cash (Mazooma) (Scorpion 4) (set 4) + + + sc4cccshd + Criss Cross Cash (Mazooma) (Scorpion 4) (set 5) + + + sc4cccshe + Criss Cross Cash (Mazooma) (Scorpion 4) (set 6) + + + sc4cckey + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 1) + + + sc4cckeya + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 2) + + + sc4cckeyb + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 3) + + + sc4cckeyc + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 4) + + + sc4cckeyd + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 5) + + + sc4cckeye + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 6) + + + sc4cckeyf + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 7) + + + sc4cckeyg + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 8) + + + sc4cckeyh + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 9) + + + sc4cckeyi + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 11) + + + sc4cckeyj + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 10) + + + sc4cckeyk + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 12) + + + sc4cckeyl + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 13) + + + sc4cckeym + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 14) + + + sc4cckeyn + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 15) + + + sc4cckeyo + Casino Crazy Fruits Gold (Bellfruit) (Scorpion 4) (set 16) + + + sc4cclas + Club Class (Bellfruit) (Scorpion 4) (set 1) + + + sc4cclas0 + Club Class (Bellfruit) (Scorpion 4) (set 24) + + + sc4cclas1 + Club Class (Bellfruit) (Scorpion 4) (set 25) + + + sc4cclas2 + Club Class (Bellfruit) (Scorpion 4) (set 26) + + + sc4cclas3 + Club Class (Bellfruit) (Scorpion 4) (set 27) + + + sc4cclas4 + Club Class (Bellfruit) (Scorpion 4) (set 28) + + + sc4cclasa + Club Class (Bellfruit) (Scorpion 4) (set 2) + + + sc4cclasb + Club Class (Bellfruit) (Scorpion 4) (set 3) + + + sc4cclasc + Club Class (Bellfruit) (Scorpion 4) (set 4) + + + sc4cclasd + Club Class (Bellfruit) (Scorpion 4) (set 5) + + + sc4cclase + Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 1) + + + sc4cclasf + Club Class (Bellfruit) (Scorpion 4) (set 6) + + + sc4cclasg + Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 2) + + + sc4cclash + Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 3) + + + sc4cclasi + Club Class (Bellfruit) (Scorpion 4) (set 7) + + + sc4cclasj + Club Class (Bellfruit) (Scorpion 4) (set 8) + + + sc4cclask + Club Class (Bellfruit) (Scorpion 4) (set 9) + + + sc4cclasl + Club Class (Bellfruit) (Scorpion 4) (set 10) + + + sc4cclasm + Club Class (Bellfruit) (Scorpion 4) (set 11) + + + sc4cclasn + Club Class (Bellfruit) (Scorpion 4) (set 12) + + + sc4cclaso + Club Class (Bellfruit) (Scorpion 4) (set 13) + + + sc4cclasp + Club Class (65% Ferry) (Bellfruit) (Scorpion 4) (set 4) + + + sc4cclasq + Club Class (Bellfruit) (Scorpion 4) (set 14) + + + sc4cclasr + Club Class (Bellfruit) (Scorpion 4) (set 15) + + + sc4cclass + Club Class (Bellfruit) (Scorpion 4) (set 16) + + + sc4cclast + Club Class (Bellfruit) (Scorpion 4) (set 17) + + + sc4cclasu + Club Class (Bellfruit) (Scorpion 4) (set 18) + + + sc4cclasv + Club Class (Bellfruit) (Scorpion 4) (set 19) + + + sc4cclasw + Club Class (Bellfruit) (Scorpion 4) (set 20) + + + sc4cclasx + Club Class (Bellfruit) (Scorpion 4) (set 21) + + + sc4cclasy + Club Class (Bellfruit) (Scorpion 4) (set 22) + + + sc4cclasz + Club Class (Bellfruit) (Scorpion 4) (set 23) + + + sc4cclim + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 1) + + + sc4cclima + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 2) + + + sc4cclimb + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 3) + + + sc4cclimc + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 4) + + + sc4cclimd + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 5) + + + sc4cclime + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 13) + + + sc4cclimf + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 14) + + + sc4cclimg + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 15) + + + sc4cclimh + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 6) + + + sc4cclimi + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 7) + + + sc4cclimj + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 16) + + + sc4cclimk + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 17) + + + sc4ccliml + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 18) + + + sc4cclimm + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 8) + + + sc4cclimn + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 9) + + + sc4cclimo + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 10) + + + sc4cclimp + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 11) + + + sc4cclimq + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 19) + + + sc4cclimr + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 20) + + + sc4cclims + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 12) + + + sc4cclimt + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 21) + + + sc4cclimu + Casino Crazy Climber (Bellfruit) (Scorpion 4) (set 22) + + + sc4ccogs + Clever Cogs (Qps) (Scorpion 4) + + + sc4cconx + Cash Connexion (Mazooma) (Scorpion 4) (set 1) + + + sc4cconxa + Cash Connexion (Mazooma) (Scorpion 4) (set 2) + + + sc4cconxb + Cash Connexion (Mazooma) (Scorpion 4) (set 3) + + + sc4cconxc + Cash Connexion (Mazooma) (Scorpion 4) (set 4) + + + sc4cconxd + Cash Connexion (Mazooma) (Scorpion 4) (set 5) + + + sc4ccrus + Cash Crusaders (Mazooma) (Scorpion 4) (set 1) + + + sc4ccrusa + Cash Crusaders (Mazooma) (Scorpion 4) (set 2) + + + sc4ccrusb + Cash Crusaders (Mazooma) (Scorpion 4) (set 3) + + + sc4celeb + I'm A Celebrity (Bellfruit) (Scorpion 4) (set 1) + + + sc4celeba + I'm A Celebrity (Bellfruit) (Scorpion 4) (set 2) + + + sc4celebb + I'm A Celebrity (Bellfruit) (Scorpion 4) (set 3) + + + sc4celebc + I'm A Celebrity (Bellfruit) (Scorpion 4) (set 4) + + + sc4celebd + I'm A Celebrity (Bellfruit) (Scorpion 4) (set 5) + + + sc4cerup + Cash Eruption (Mazooma) (Scorpion 4) + + + sc4cexpl + Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 1) + + + sc4cexpla + Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 2) + + + sc4cexplb + Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 3) + + + sc4cexplc + Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 4) + + + sc4cexpld + Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 1) + + + sc4cexple + Cash Explosion (PR2120) (Mazooma) (Scorpion 4) (set 2) + + + sc4cexplf + Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 5) + + + sc4cexplg + Cash Explosion (PR2076) (Mazooma) (Scorpion 4) (set 6) + + + sc4cfcas + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 1) + + + sc4cfcas0 + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 18) + + + sc4cfcas1 + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 19) + + + sc4cfcas2 + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 20) + + + sc4cfcas3 + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 9) + + + sc4cfcas4 + Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 1) + + + sc4cfcas5 + Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 2) + + + sc4cfcas6 + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 21) + + + sc4cfcas7 + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 22) + + + sc4cfcas8 + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 23) + + + sc4cfcas9 + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 10) + + + sc4cfcasa + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 2) + + + sc4cfcasaa + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 24) + + + sc4cfcasab + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 11) + + + sc4cfcasac + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 12) + + + sc4cfcasad + Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 3) + + + sc4cfcasae + Casino Crazy Fruits (CCFR) (Bellfruit) (Scorpion 4) (set 4) + + + sc4cfcasaf + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 25) + + + sc4cfcasag + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 26) + + + sc4cfcasah + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 27) + + + sc4cfcasai + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 28) + + + sc4cfcasaj + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 29) + + + sc4cfcasak + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 30) + + + sc4cfcasal + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 31) + + + sc4cfcasam + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 32) + + + sc4cfcasb + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 3) + + + sc4cfcasc + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 5) + + + sc4cfcasd + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 6) + + + sc4cfcase + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 4) + + + sc4cfcasf + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 5) + + + sc4cfcasg + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 7) + + + sc4cfcash + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 8) + + + sc4cfcasi + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 1) + + + sc4cfcasj + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 2) + + + sc4cfcask + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 6) + + + sc4cfcasl + Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 2) + + + sc4cfcasm + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 7) + + + sc4cfcasn + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 3) + + + sc4cfcaso + Casino Crazy Fruits (ZYFR) (Bellfruit) (Scorpion 4) (set 4) + + + sc4cfcasp + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 8) + + + sc4cfcasq + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 9) + + + sc4cfcasr + Casino Crazy Fruits (ZYPF) (Bellfruit) (Scorpion 4) (set 1) + + + sc4cfcass + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 10) + + + sc4cfcast + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 11) + + + sc4cfcasu + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 12) + + + sc4cfcasv + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 13) + + + sc4cfcasw + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 14) + + + sc4cfcasx + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 15) + + + sc4cfcasy + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 16) + + + sc4cfcasz + Casino Crazy Fruits (Bellfruit) (Scorpion 4) (set 17) + + + sc4cfcla + Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 1) + + + sc4cfclab + Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 2) + + + sc4cfclac + Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 3) + + + sc4cfclad + Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 4) + + + sc4cfclae + Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 5) + + + sc4cfclaf + Crazy Fruits Classic (Bellfruit) (Scorpion 4) (set 6) + + + sc4cfclb + Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4cfclba + Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4cfclbb + Crazy Fruits Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4cfdu + Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 1) + + + sc4cfdua + Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 2) + + + sc4cfdub + Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 3) + + + sc4cfduc + Crazy Fruits Down Under (Bellfruit) (Scorpion 4) (set 4) + + + sc4cfgcl + Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4cfgcla + Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4cfgclb + Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4cfgclc + Crazy Fruits Gold Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4cfqps + Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 1) + + + sc4cfqpsa + Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 4) + + + sc4cfqpsb + Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 2) + + + sc4cfqpsc + Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 1) + + + sc4cfqpsd + Crazy Fruits (PR6813, CRFR) (Qps) (Scorpion 4) (set 3) + + + sc4cfqpse + Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 2) + + + sc4cfqpsf + Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 3) + + + sc4cfqpsg + Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 4) + + + sc4cfqpsh + Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 5) + + + sc4cfqpsi + Crazy Fruits V1.0 (PR2521, ECRZ) (Qps) (Scorpion 4) (set 6) + + + sc4cfqpsj + Crazy Fruits SP98 (PR4613) (Qps) (Scorpion 4) + + + sc4cfqpsk + Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 1) + + + sc4cfqpsl + Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 1) + + + sc4cfqpsm + Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 1) + + + sc4cfqpsn + Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 2) + + + sc4cfqpso + Crazy Fruits SP98 (PR4613) (BFM / Whitbread) (Scorpion 4) (set 2) + + + sc4cfqpsp + Crazy Fruits SP98 (PR4613) (BFM) (Scorpion 4) (set 3) + + + sc4chain + Chain Reaction (Bellfruit) (Scorpion 4) (set 1) + + + sc4chaina + Chain Reaction (Bellfruit) (Scorpion 4) (set 2) + + + sc4chainb + Chain Reaction (Bellfruit) (Scorpion 4) (set 3) + + + sc4chainc + Chain Reaction (Bellfruit) (Scorpion 4) (set 4) + + + sc4chand + Cash In Hand (Bellfruit) (Scorpion 4) (set 1) + + + sc4chanda + Cash In Hand (Bellfruit) (Scorpion 4) (set 2) + + + sc4chandb + Cash In Hand (Bellfruit) (Scorpion 4) (set 3) + + + sc4chandc + Cash In Hand (Bellfruit) (Scorpion 4) (set 4) + + + sc4chavi + Chav It (Bellfruit) (Scorpion 4) (set 1) + + + sc4chavia + Chav It (Bellfruit) (Scorpion 4) (set 2) + + + sc4chavib + Chav It (Bellfruit) (Scorpion 4) (set 3) + + + sc4chavic + Chav It (Bellfruit) (Scorpion 4) (set 4) + + + sc4chavid + Chav It (Bellfruit) (Scorpion 4) (set 5) + + + sc4chavie + Chav It (Bellfruit) (Scorpion 4) (set 6) + + + sc4chavif + Chav It (Bellfruit) (Scorpion 4) (set 7) + + + sc4chavig + Chav It (Bellfruit) (Scorpion 4) (set 8) + + + sc4chavy + Chavy Chase (Mazooma) (Scorpion 4) (set 1) + + + sc4chavya + Chavy Chase (Mazooma) (Scorpion 4) (set 2) + + + sc4chavyb + Chavy Chase (Mazooma) (Scorpion 4) (set 3) + + + sc4chavyc + Chavy Chase (Mazooma) (Scorpion 4) (set 4) + + + sc4chavyd + Chavy Chase (Mazooma) (Scorpion 4) (set 5) + + + sc4chavye + Chavy Chase (Mazooma) (Scorpion 4) (set 6) + + + sc4chavyf + Chavy Chase (Mazooma) (Scorpion 4) (set 7) + + + sc4chavyg + Chavy Chase (Mazooma) (Scorpion 4) (set 8) + + + sc4chick + Chickendales (Mazooma) (Scorpion 4) + + + sc4chub + Chubby Does Vegas (Mazooma) (Scorpion 4) (set 1) + + + sc4chuba + Chubby Does Vegas (Mazooma) (Scorpion 4) (set 2) + + + sc4chubb + Chubby Does Vegas (Mazooma) (Scorpion 4) (set 3) + + + sc4cinv + Cash Invaders (Bellfruit) (Scorpion 4) (set 1) + + + sc4cinva + Cash Invaders (Bellfruit) (Scorpion 4) (set 2) + + + sc4cinvb + Cash Invaders (Bellfruit) (Scorpion 4) (set 3) + + + sc4cinvc + Cash Invaders (Bellfruit) (Scorpion 4) (set 4) + + + sc4cinvd + Cash Invaders (Bellfruit) (Scorpion 4) (set 5) + + + sc4cinve + Cash Invaders (Bellfruit) (Scorpion 4) (set 6) + + + sc4cinvf + Cash Invaders (Bellfruit) (Scorpion 4) (set 7) + + + sc4cinvg + Cash Invaders (Bellfruit) (Scorpion 4) (set 8) + + + sc4cinvh + Cash Invaders (Bellfruit) (Scorpion 4) (set 9) + + + sc4cinvi + Cash Invaders (Bellfruit) (Scorpion 4) (set 10) + + + sc4cj + Cool Jewels (Bellfruit) (Scorpion 4) (set 1) + + + sc4cja + Cool Jewels (Bellfruit) (Scorpion 4) (set 2) + + + sc4cjb + Cool Jewels (Bellfruit) (Scorpion 4) (set 3) + + + sc4cjc + Cool Jewels (Bellfruit) (Scorpion 4) (set 4) + + + sc4cjcl + Cool Jewels Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4cjcla + Cool Jewels Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4cjclb + Cool Jewels Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4cjclc + Cool Jewels Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4cjcld + Cool Jewels Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4cjcle + Cool Jewels Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4cjclf + Cool Jewels Club (Bellfruit) (Scorpion 4) (set 7) + + + sc4cjd + Cool Jewels (Bellfruit) (Scorpion 4) (set 5) + + + sc4ckx + Casino King X (Mazooma) (Scorpion 4) (Top Box, set 1) + + + sc4ckxa + Casino King X (Mazooma) (Scorpion 4) (Base, set 1) + + + sc4ckxb + Casino King X (Mazooma) (Scorpion 4) (Base, set 2) + + + sc4ckxc + Casino King X (Mazooma) (Scorpion 4) (Base, set 3) + + + sc4ckxd + Casino King X (Mazooma) (Scorpion 4) (Top Box, set 2) + + + sc4ckxe + Casino King X (Mazooma) (Scorpion 4) (Base, set 4) + + + sc4ckxf + Casino King X (Mazooma) (Scorpion 4) (Base, set 5) + + + sc4ckxg + Casino King X (Mazooma) (Scorpion 4) (Base, set 6) + + + sc4cla7 + Classic 7s (Mazooma) (Scorpion 4) (set 1) + + + sc4cla7a + Classic 7s (Mazooma) (Scorpion 4) (set 2) + + + sc4cla7b + Classic 7s (Mazooma) (Scorpion 4) (set 3) + + + sc4cla7c + Classic 7s (Mazooma) (Scorpion 4) (set 4) + + + sc4clash + Cash On The Lash (Mazooma) (Scorpion 4) (set 1) + + + sc4clasha + Cash On The Lash (Mazooma) (Scorpion 4) (set 2) + + + sc4clashb + Cash On The Lash (Mazooma) (Scorpion 4) (set 3) + + + sc4clashc + Cash On The Lash (Mazooma) (Scorpion 4) (set 4) + + + sc4clashd + Cash On The Lash (Mazooma) (Scorpion 4) (set 5) + + + sc4clashe + Cash On The Lash (Mazooma) (Scorpion 4) (set 6) + + + sc4clashf + Cash On The Lash (Mazooma) (Scorpion 4) (set 7) + + + sc4clashg + Cash On The Lash (Mazooma) (Scorpion 4) (set 8) + + + sc4clbmn + Club Moneybags (Bellfruit) (Scorpion 4) (set 1) + + + sc4clbmna + Club Moneybags (Bellfruit) (Scorpion 4) (set 2) + + + sc4clbmnb + Club Moneybags (Bellfruit) (Scorpion 4) (set 3) + + + sc4clbmnc + Club Moneybags (Bellfruit) (Scorpion 4) (set 4) + + + sc4clbtm + Club Temptation (Bellfruit) (Scorpion 4) (set 1) + + + sc4clbtma + Club Temptation (Bellfruit) (Scorpion 4) (set 2) + + + sc4clbtmb + Club Temptation (Bellfruit) (Scorpion 4) (set 3) + + + sc4clbtmc + Club Temptation (Bellfruit) (Scorpion 4) (set 4) + + + sc4clbtmd + Club Temptation (Bellfruit) (Scorpion 4) (set 5) + + + sc4clbtme + Club Temptation (Bellfruit) (Scorpion 4) (set 6) + + + sc4clclo + Club Clouseau (QPS) (Scorpion 4) + + + sc4clown + Clown Around (Bellfruit) (Scorpion 4) (set 1) + + + sc4clowna + Clown Around (Bellfruit) (Scorpion 4) (set 2) + + + sc4clownb + Clown Around (Bellfruit) (Scorpion 4) (set 3) + + + sc4clownc + Clown Around (Bellfruit) (Scorpion 4) (set 4) + + + sc4clownd + Clown Around (Bellfruit) (Scorpion 4) (set 5) + + + sc4clowne + Clown Around (Bellfruit) (Scorpion 4) (set 6) + + + sc4clownf + Clown Around (Bellfruit) (Scorpion 4) (set 7) + + + sc4clowng + Clown Around (Bellfruit) (Scorpion 4) (set 8) + + + sc4clucl + Cluedo Club (Mazooma) (Scorpion 4) (set 1) + + + sc4clucla + Cluedo Club (Mazooma) (Scorpion 4) (set 2) + + + sc4clue + Cluedo (Mazooma) (Scorpion 4) (set 1) + + + sc4cluea + Cluedo (Mazooma) (Scorpion 4) (set 2) + + + sc4clueb + Cluedo (Mazooma) (Scorpion 4) (set 3) + + + sc4cluec + Cluedo (Mazooma) (Scorpion 4) (set 4) + + + sc4clued + Cluedo (Mazooma) (Scorpion 4) (set 5) + + + sc4cluee + Cluedo (Mazooma) (Scorpion 4) (set 6) + + + sc4cluef + Cluedo (Mazooma) (Scorpion 4) (set 7) + + + sc4clueg + Cluedo (Mazooma) (Scorpion 4) (set 8) + + + sc4cmani + Colour Mania (Bellfruit) (Scorpion 4) (set 1) + + + sc4cmania + Colour Mania (Bellfruit) (Scorpion 4) (set 2) + + + sc4cmon + Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 1) + + + sc4cmona + Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 2) + + + sc4cmonb + Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 3) + + + sc4cmonc + Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 4) + + + sc4cmond + Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 5) + + + sc4cmone + Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 6) + + + sc4cmonf + Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 7) + + + sc4cmong + Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 8) + + + sc4cmonh + Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 9) + + + sc4cmoni + Casino Monopoly (PR2133) (Mazooma) (Scorpion 4) (set 10) + + + sc4cmous + Cash & Mouse (V041) (Qps) (Scorpion 4) (set 1) + + + sc4cmousa + Cash & Mouse (V011) (Qps) (Scorpion 4) (set 1) + + + sc4cmousb + Cash & Mouse (V041) (Qps) (Scorpion 4) (set 2) + + + sc4cmousc + Cash & Mouse (V011) (Qps) (Scorpion 4) (set 2) + + + sc4cnfr + Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 1) + + + sc4cnfra + Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 2) + + + sc4cnfrb + Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 3) + + + sc4cnfrc + Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 1) + + + sc4cnfrd + Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 2) + + + sc4cnfre + Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 4) + + + sc4cnfrf + Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 5) + + + sc4cnfrg + Cash 'n' Fruit (Bellfruit) (Scorpion 4) (set 6) + + + sc4cnfrh + Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 3) + + + sc4cnfri + Cash 'n' Fruit S+P98 (Bellfruit) (Scorpion 4) (set 4) + + + sc4colos + Colossus (Dutch) (Bellfruit) (Scorpion 4) + + + sc4copsr + Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 1) + + + sc4copsra + Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 2) + + + sc4copsrb + Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 3) + + + sc4copsrc + Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 4) + + + sc4copsrd + Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 5) + + + sc4copsre + Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 6) + + + sc4copsrf + Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 7) + + + sc4copsrg + Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 8) + + + sc4copsrh + Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 9) + + + sc4copsri + Cops 'n' Robbers (Bellfruit) (Scorpion 4) (set 10) + + + sc4corcl + Coronation Street Club (Mazooma) (Scorpion 4) (set 1) + + + sc4corcla + Coronation Street Club (Mazooma) (Scorpion 4) (set 2) + + + sc4coro + Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 1) + + + sc4coroa + Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 2) + + + sc4coroc + Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 1) + + + sc4corod + Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 1) + + + sc4corof + Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 3) + + + sc4corog + Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 4) + + + sc4coroh + Coronation Street Triple (Arcade Version 012) (PR2249) (Mazooma) (Scorpion 4) (set 2) + + + sc4coroi + Coronation Street Triple (PR2249) (Mazooma) (Scorpion 4) (set 2) + + + sc4coroj + Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 5) + + + sc4corok + Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 6) + + + sc4corol + Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 7) + + + sc4corom + Coronation Street (PR2252) (Mazooma) (Scorpion 4) (set 8) + + + sc4coron + Coronation Street Triple (Bingo Version ?1) (PR2?4?) (Mazooma) (Scorpion 4) + + + sc4corotb + Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 1) + + + sc4corotba + Coronation Street Triple Top Box (PR2526, CSTB) (Mazooma) (Scorpion 4) (Top Box, set 2) + + + sc4count + Countdown (Bellfruit) (Scorpion 4) (set 1) + + + sc4counta + Countdown (Bellfruit) (Scorpion 4) (set 2) + + + sc4cr + Cash Raker (Qps) (Scorpion 4) (set 1) + + + sc4cra + Cash Raker (Qps) (Scorpion 4) (set 2) + + + sc4crb + Cash Raker (Qps) (Scorpion 4) (set 3) + + + sc4crc + Cash Raker (V2.1) (Qps) (Scorpion 4) (set 1) + + + sc4crcc + Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 1) + + + sc4crcca + Cops 'n' Robbers Club Classic (Bellfruit) (Scorpion 4) (set 2) + + + sc4crccb + Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 1) + + + sc4crccc + Cops 'n' Robbers Club Classic (65%) (Bellfruit) (Scorpion 4) (set 2) + + + sc4crcl + Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 1) + + + sc4crcla + Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 1) + + + sc4crclb + Cash Raker Club (V1.0) (Qps) (Scorpion 4) (set 2) + + + sc4crclc + Cash Raker Club (V1.1) (Qps) (Scorpion 4) (set 2) + + + sc4crcld + Cash Raker Club (V1.3) (Qps) (Scorpion 4) + + + sc4crcle + Cash Raker Club (411) (Qps) (Scorpion 4) (set 1) + + + sc4crclf + Cash Raker Club (411) (Qps) (Scorpion 4) (set 2) + + + sc4crcp + Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 1) + + + sc4crcpa + Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 2) + + + sc4crcpc + Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 3) + + + sc4crcpd + Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 4) + + + sc4crcpe + Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 5) + + + sc4crcpf + Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 6) + + + sc4crcpg + Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 7) + + + sc4crcph + Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 8) + + + sc4crcpi + Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 9) + + + sc4crcpj + Cops 'n' Robbers Club Platinum (Bellfruit) (Scorpion 4) (set 10) + + + sc4crd + Cash Raker (V2.2) (Qps) (Scorpion 4) (set 1) + + + sc4cre + Cash Raker (V2.1) (Qps) (Scorpion 4) (set 2) + + + sc4crf + Cash Raker (V2.2) (Qps) (Scorpion 4) (set 2) + + + sc4crgc + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4crgca + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4crgcb + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4crgcc + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4crgcd + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4crgce + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4crgcf + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 7) + + + sc4crgcg + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 8) + + + sc4crgch + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 9) + + + sc4crgci + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 10) + + + sc4crgcj + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 11) + + + sc4crgck + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 12) + + + sc4crgcl + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 13) + + + sc4crgcm + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 14) + + + sc4crgcn + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 19) + + + sc4crgco + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 15) + + + sc4crgcp + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 20) + + + sc4crgcq + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 16) + + + sc4crgcr + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 21) + + + sc4crgcs + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 23) + + + sc4crgct + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 17) + + + sc4crgcu + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 22) + + + sc4crgcv + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 24) + + + sc4crgcw + Cops 'n' Robbers Gold Club (Bellfruit) (Scorpion 4) (set 18) + + + sc4crnjw + Crown Jewels (Bellfruit) (Scorpion 4) (set 1) + + + sc4crnjwa + Crown Jewels (Bellfruit) (Scorpion 4) (set 2) + + + sc4crsc + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 1) + + + sc4crsca + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 2) + + + sc4crscb + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 3) + + + sc4crscc + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 4) + + + sc4crscd + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 5) + + + sc4crsce + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 6) + + + sc4crscf + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 7) + + + sc4crscg + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 4) (set 8) + + + sc4crzcs + Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 1) + + + sc4crzcsa + Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 2) + + + sc4crzcsb + Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 3) + + + sc4crzcsc + Crazy Casino SP98 (Bellfruit) (Scorpion 4) (set 4) + + + sc4crzgn + Crazy Gang (Bellfruit) (Scorpion 4) (set 1, Top Box) + + + sc4crzgn0 + Crazy Gang (Bellfruit) (Scorpion 4) (set 18) + + + sc4crzgn1 + Crazy Gang (Bellfruit) (Scorpion 4) (set 19) + + + sc4crzgn2 + Crazy Gang (Bellfruit) (Scorpion 4) (set 20) + + + sc4crzgn3 + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 7) + + + sc4crzgn4 + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 8) + + + sc4crzgn5 + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 9) + + + sc4crzgn6 + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 10) + + + sc4crzgn7 + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 11) + + + sc4crzgn8 + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 12) + + + sc4crzgna + Crazy Gang (Bellfruit) (Scorpion 4) (set 1) + + + sc4crzgnb + Crazy Gang (Bellfruit) (Scorpion 4) (set 2, Top Box) + + + sc4crzgnc + Crazy Gang (Bellfruit) (Scorpion 4) (set 2) + + + sc4crzgnd + Crazy Gang (Bellfruit) (Scorpion 4) (set 3) + + + sc4crzgne + Crazy Gang (Bellfruit) (Scorpion 4) (set 4) + + + sc4crzgnf + Crazy Gang (Bellfruit) (Scorpion 4) (set 5) + + + sc4crzgng + Crazy Gang (Bellfruit) (Scorpion 4) (set 3, Top Box) + + + sc4crzgnh + Crazy Gang (Bellfruit) (Scorpion 4) (set 6) + + + sc4crzgni + Crazy Gang (Bellfruit) (Scorpion 4) (set 7) + + + sc4crzgnj + Crazy Gang (Bellfruit) (Scorpion 4) (set 4, Top Box) + + + sc4crzgnk + Crazy Gang (Bellfruit) (Scorpion 4) (set 8) + + + sc4crzgnl + Crazy Gang (Bellfruit) (Scorpion 4) (set 9) + + + sc4crzgnm + Crazy Gang (Bellfruit) (Scorpion 4) (set 10) + + + sc4crzgnn + Crazy Gang (Bellfruit) (Scorpion 4) (set 11) + + + sc4crzgno + Crazy Gang (Bellfruit) (Scorpion 4) (set 12) + + + sc4crzgnp + Crazy Gang (Bellfruit) (Scorpion 4) (set 13) + + + sc4crzgnq + Crazy Gang (Bellfruit) (Scorpion 4) (set 14) + + + sc4crzgnr + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 1) + + + sc4crzgns + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 2) + + + sc4crzgnt + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 3) + + + sc4crzgnu + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 4) + + + sc4crzgnv + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 5) + + + sc4crzgnw + Crazy Gang Arcade (Bellfruit) (Scorpion 4) (set 6) + + + sc4crzgnx + Crazy Gang (Bellfruit) (Scorpion 4) (set 15) + + + sc4crzgny + Crazy Gang (Bellfruit) (Scorpion 4) (set 16) + + + sc4crzgnz + Crazy Gang (Bellfruit) (Scorpion 4) (set 17) + + + sc4crzky + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 1) + + + sc4crzkya + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 2) + + + sc4crzkyb + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 3) + + + sc4crzkyc + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 4) + + + sc4crzkyd + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 5) + + + sc4crzkye + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 6) + + + sc4crzkyf + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 7) + + + sc4crzkyg + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 8) + + + sc4crzkyh + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 9) + + + sc4crzkyi + Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 1) + + + sc4crzkyj + Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 2) + + + sc4crzkyk + Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 3) + + + sc4crzkyl + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 10) + + + sc4crzkym + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 11) + + + sc4crzkyn + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 12) + + + sc4crzkyo + Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 4) + + + sc4crzkyp + Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 5) + + + sc4crzkyq + Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 6) + + + sc4crzkyr + Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 7) + + + sc4crzkys + Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 8) + + + sc4crzkyt + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 13) + + + sc4crzkyu + Casino Crazy Keys (Bellfruit) (Scorpion 4) (set 14) + + + sc4crzkyv + Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 9) + + + sc4crzkyw + Casino Crazy Keys Arcade (Bellfruit) (Scorpion 4) (set 10) + + + sc4crzwl + Crazy World (Mazooma) (Scorpion 4) (set 1) + + + sc4crzwla + Crazy World (Mazooma) (Scorpion 4) (set 2) + + + sc4crzwlb + Crazy World (Mazooma) (Scorpion 4) (set 3) + + + sc4crzwlc + Crazy World (Mazooma) (Scorpion 4) (set 4) + + + sc4crzwld + Crazy World (Mazooma) (Scorpion 4) (set 5) + + + sc4crzwle + Crazy World (Mazooma) (Scorpion 4) (set 6) + + + sc4crzwlf + Crazy World (Mazooma) (Scorpion 4) (set 7) + + + sc4crzwlg + Crazy World (Mazooma) (Scorpion 4) (set 8) + + + sc4ctl + Cop The Lot (Bellfruit) (Scorpion 4) (set 1) + + + sc4ctla + Cop The Lot (Bellfruit) (Scorpion 4) (set 2) + + + sc4ctlb + Cop The Lot (Bellfruit) (Scorpion 4) (set 3) + + + sc4ctlc + Cop The Lot (Bellfruit) (Scorpion 4) (set 4) + + + sc4ctlcl + Cop The Lot Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4ctlcla + Cop The Lot Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4ctlclb + Cop The Lot Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4ctlclc + Cop The Lot Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4ctld + Cop The Lot (Bellfruit) (Scorpion 4) (set 5) + + + sc4ctle + Cop The Lot (Bellfruit) (Scorpion 4) (set 6) + + + sc4cvani + Cashvania (Qps) (Scorpion 4) (set 1) + + + sc4cvania + Cashvania (Qps) (Scorpion 4) (set 2) + + + sc4cvanib + Cashvania (Qps) (Scorpion 4) (set 3) + + + sc4cvanic + Cashvania (Qps) (Scorpion 4) (set 4) + + + sc4cvanid + Cashvania (Qps) (Scorpion 4) (set 5) + + + sc4cvanie + Cashvania (Qps) (Scorpion 4) (set 6) + + + sc4cvanif + Cashvania (Qps) (Scorpion 4) (set 7) + + + sc4cvanig + Cashvania (Qps) (Scorpion 4) (set 8) + + + sc4cvanih + Cashvania (Qps) (Scorpion 4) (set 9) + + + sc4cvanii + Cashvania (Qps) (Scorpion 4) (set 10) + + + sc4cvclb + Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 1) + + + sc4cvclba + Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 2) + + + sc4cvclbb + Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 1) + + + sc4cvclbc + Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 3) + + + sc4cvclbd + Cashvania Club (V1.0) (Qps) (Scorpion 4) (set 4) + + + sc4cvclbe + Cashvania Club (V2.0) (Qps) (Scorpion 4) (set 2) + + + sc4cvclbf + Cashvania Club (V411) (Qps) (Scorpion 4) (set 1) + + + sc4cvclbg + Cashvania Club (V411) (Qps) (Scorpion 4) (set 2) + + + sc4cyc + Count Yer Cash (Mazooma) (Scorpion 4) (set 1) + + + sc4cyca + Count Yer Cash (Mazooma) (Scorpion 4) (set 2) + + + sc4cycb + Count Yer Cash (Mazooma) (Scorpion 4) (set 3) + + + sc4cycc + Count Yer Cash (Mazooma) (Scorpion 4) (set 4) + + + sc4cyccl + Count Yer Cash Club (Mazooma) (Scorpion 4) (set 1) + + + sc4cyccla + Count Yer Cash Club (Mazooma) (Scorpion 4) (set 2) + + + sc4cycclb + Count Yer Cash Club (Mazooma) (Scorpion 4) (set 3) + + + sc4cycclc + Count Yer Cash Club (Mazooma) (Scorpion 4) (set 4) + + + sc4cycd + Count Yer Cash (Mazooma) (Scorpion 4) (set 5) + + + sc4czfr + Crazy Fruits (Germany?) (PR6982, GCRF, 1.02) (Bellfruit) (Scorpion 4) + + + sc4czfra + Crazy Fruits (Dutch) (PR1212, CRAZ) (Bellfruit) (Scorpion 4) + + + sc4czfrb + Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 1) + + + sc4czfrc + Crazy Fruits (PR6813, CCAS) (Qps) (Scorpion 4) (set 2) + + + sc4czfrd + Crazy Fruits (Germany?) (PR6982, GCRF) (Bellfruit) (Scorpion 4) + + + sc4czfre + Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 2) + + + sc4czfrf + Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 1) + + + sc4czfrg + Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 3) + + + sc4czfrh + Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 4) + + + sc4czfri + Crazy Fruits (PR6813, CRFR) (BFM + Whitbread) (Scorpion 4) (set 2) + + + sc4czfrj + Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 5) + + + sc4czfrk + Crazy Fruits (PR6813, CRFR) (BFM) (Scorpion 4) (set 6) + + + sc4darw + Dough & Arrow (Qps) (Scorpion 4) (set 1) + + + sc4darwa + Dough & Arrow (Qps) (Scorpion 4) (set 2) + + + sc4darwb + Dough & Arrow (Qps) (Scorpion 4) (set 3) + + + sc4darwc + Dough & Arrow (Qps) (Scorpion 4) (set 4) + + + sc4daylt + Daylight Robbery (Bellfruit) (Scorpion 4) (set 1) + + + sc4daylta + Daylight Robbery (Bellfruit) (Scorpion 4) (set 2) + + + sc4dayltb + Daylight Robbery (Bellfruit) (Scorpion 4) (set 3) + + + sc4dayltc + Daylight Robbery (Bellfruit) (Scorpion 4) (set 4) + + + sc4dayltd + Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 1) + + + sc4daylte + Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 2) + + + sc4dayltf + Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 3) + + + sc4dayltg + Daylight Robbery (Bellfruit) (Scorpion 4) (set 5) + + + sc4daylth + Daylight Robbery (Bellfruit) (Scorpion 4) (set 6) + + + sc4daylti + Daylight Robbery (Bellfruit) (Scorpion 4) (set 7) + + + sc4dayltj + Daylight Robbery (Bellfruit) (Scorpion 4) (set 8) + + + sc4dayltk + Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 4) + + + sc4dayltl + Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 5) + + + sc4dayltm + Daylight Robbery SP98 (Bellfruit) (Scorpion 4) (set 6) + + + sc4db + Gold Fever (Mazooma) (Scorpion 4) (set 4) + + + sc4dbldm + Double Diamond (Qps) (Scorpion 4) + + + sc4dblfr + Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 1) + + + sc4dblfra + Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 2) + + + sc4dblfrb + Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 3) + + + sc4dblfrc + Double Frenzy (PR7060) (Qps) (Scorpion 4) (set 4) + + + sc4dblfrd + Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 1) + + + sc4dblfre + Double Frenzy (PR2276) (212) (Qps) (Scorpion 4) (set 2) + + + sc4dcrls + Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 1) + + + sc4dcrlsa + Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 1) + + + sc4dcrlsb + Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 1) + + + sc4dcrlsc + Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 1) + + + sc4dcrlsd + Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 1) + + + sc4dcrlse + Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 1) + + + sc4dcrlsf + Double Crazy Reels (021) (Mazooma) (Scorpion 4) (set 2) + + + sc4dcrlsg + Double Crazy Reels (031) (Mazooma) (Scorpion 4) (set 2) + + + sc4dcrlsh + Double Crazy Reels (022) (Mazooma) (Scorpion 4) (set 2) + + + sc4dcrlsi + Double Crazy Reels (032) (Mazooma) (Scorpion 4) (set 2) + + + sc4dcrlsj + Double Crazy Reels (023) (Mazooma) (Scorpion 4) (set 2) + + + sc4dcrlsk + Double Crazy Reels (033) (Mazooma) (Scorpion 4) (set 2) + + + sc4ddosh + Doctor Dosh (Bellfruit) (Scorpion 4) (set 1) + + + sc4ddosha + Doctor Dosh (Bellfruit) (Scorpion 4) (set 2) + + + sc4ddoshb + Doctor Dosh (Bellfruit) (Scorpion 4) (set 3) + + + sc4ddoshc + Doctor Dosh (Bellfruit) (Scorpion 4) (set 4) + + + sc4ddoshd + Doctor Dosh (Bellfruit) (Scorpion 4) (set 5) + + + sc4ddoshe + Doctor Dosh (Bellfruit) (Scorpion 4) (set 6) + + + sc4ddoshf + Doctor Dosh (Bellfruit) (Scorpion 4) (set 11) + + + sc4ddoshg + Doctor Dosh (Bellfruit) (Scorpion 4) (set 12) + + + sc4ddoshh + Doctor Dosh (Bellfruit) (Scorpion 4) (set 13) + + + sc4ddoshi + Doctor Dosh (Bellfruit) (Scorpion 4) (set 14) + + + sc4ddoshj + Doctor Dosh (Bellfruit) (Scorpion 4) (set 15) + + + sc4ddoshk + Doctor Dosh (Bellfruit) (Scorpion 4) (set 16) + + + sc4ddoshl + Doctor Dosh (Bellfruit) (Scorpion 4) (set 7) + + + sc4ddoshm + Doctor Dosh (Bellfruit) (Scorpion 4) (set 8) + + + sc4ddoshn + Doctor Dosh (Bellfruit) (Scorpion 4) (set 9) + + + sc4ddosho + Doctor Dosh (Bellfruit) (Scorpion 4) (set 10) + + + sc4deepi + Deep Impact (Mazooma) (Scorpion 4) (set 1) + + + sc4deepia + Deep Impact (Mazooma) (Scorpion 4) (set 2) + + + sc4deepib + Deep Impact (Mazooma) (Scorpion 4) (set 3) + + + sc4deepid + Deep Impact (Mazooma) (Scorpion 4) (set 4) + + + sc4derby + Demolition Derby (Bellfruit) (Scorpion 4) (set 1) + + + sc4derbya + Demolition Derby (Bellfruit) (Scorpion 4) (set 2) + + + sc4derbyb + Demolition Derby (Bellfruit) (Scorpion 4) (set 3) + + + sc4derbyc + Demolition Derby (Bellfruit) (Scorpion 4) (set 4) + + + sc4derbyd + Demolition Derby (Bellfruit) (Scorpion 4) (set 5) + + + sc4derbye + Demolition Derby (Bellfruit) (Scorpion 4) (set 6) + + + sc4dhh + Dough Ho Ho (Bellfruit) (Scorpion 4) (set 1) + + + sc4dhha + Dough Ho Ho (Bellfruit) (Scorpion 4) (set 2) + + + sc4dhhb + Dough Ho Ho (Bellfruit) (Scorpion 4) (set 3) + + + sc4dhhc + Dough Ho Ho (Bellfruit) (Scorpion 4) (set 4) + + + sc4dhhd + Dough Ho Ho (Bellfruit) (Scorpion 4) (set 5) + + + sc4dhhe + Dough Ho Ho (Bellfruit) (Scorpion 4) (set 6) + + + sc4disco + Disco Inferno (Mazooma) (Scorpion 4) (set 1) + + + sc4discoa + Disco Inferno (Mazooma) (Scorpion 4) (set 3) + + + sc4discob + Disco Inferno (Mazooma) (Scorpion 4) (set 2) + + + sc4discoc + Disco Inferno (Mazooma) (Scorpion 4) (set 4) + + + sc4discod + Disco Inferno (Mazooma) (Scorpion 4) (set 5) + + + sc4dmine + Diamond Mine (Bellfruit) (Scorpion 4) (set 1) + + + sc4dminea + Diamond Mine (Bellfruit) (Scorpion 4) (set 2) + + + sc4dmineb + Diamond Mine (Bellfruit) (Scorpion 4) (set 3) + + + sc4dminec + Diamond Mine (Bellfruit) (Scorpion 4) (set 4) + + + sc4dmined + Diamond Mine (Bellfruit) (Scorpion 4) (set 5) + + + sc4dminee + Diamond Mine (Bellfruit) (Scorpion 4) (set 6) + + + sc4dnd + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 1) + + + sc4dnda + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 2) + + + sc4dndb + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL016, set 2) + + + sc4dndbb + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 1) + + + sc4dndbba + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 1) + + + sc4dndbbb + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE471, set 2) + + + sc4dndbbc + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE472, set 2) + + + sc4dndbbd + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 1) + + + sc4dndbbe + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 1) + + + sc4dndbbf + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 1) + + + sc4dndbbg + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE473, set 2) + + + sc4dndbbh + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE571, set 2) + + + sc4dndbbi + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 4) (CRBE572, set 2) + + + sc4dndbc + Deal or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 1) + + + sc4dndbca + Deal or No Deal Box Clever (Bellfruit) (Scorpion 4) (BOXR571, set 2) + + + sc4dndbd + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 1) + + + sc4dndbda + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA471, set 2) + + + sc4dndbdb + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 1) + + + sc4dndbdc + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 1) + + + sc4dndbdd + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA472, set 2) + + + sc4dndbde + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 4) (BGDA571, set 2) + + + sc4dndbe + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 1) + + + sc4dndbeb + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 1) + + + sc4dndbec + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK012, set 2) + + + sc4dndbed + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK422, set 2) + + + sc4dndbee + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 1) + + + sc4dndbef + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 1) + + + sc4dndbeg + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 1) + + + sc4dndbeh + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 1) + + + sc4dndbei + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK423, set 2) + + + sc4dndbej + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK425, set 2) + + + sc4dndbek + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK013, set 2) + + + sc4dndbel + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK014, set 2) + + + sc4dndbem + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 1) + + + sc4dndben + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 4) (DBTK426, set 2) + + + sc4dndbr + Deal or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 1) + + + sc4dndbra + Deal or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 1) + + + sc4dndbrb + Deal or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD471, set 2) + + + sc4dndbrc + Deal or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD472, set 2) + + + sc4dndbrd + Deal or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 1) + + + sc4dndbre + Deal or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 1) + + + sc4dndbrf + Deal or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD475, set 2) + + + sc4dndbrg + Deal or No Deal The Big Reds (Bellfruit) (Scorpion 4) (BIGD571, set 2) + + + sc4dndc + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL422, set 1) + + + sc4dndcc + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 1) + + + sc4dndcca + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR474) + + + sc4dndccb + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR471, set 2) + + + sc4dndccc + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 1) + + + sc4dndccd + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 1) + + + sc4dndcce + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR475, set 2) + + + sc4dndccf + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 4) (CRZR571, set 2) + + + sc4dndcl + Deal or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 1) + + + sc4dndcla + Deal or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 1) + + + sc4dndclb + Deal or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 1) + + + sc4dndclc + Deal or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 1) + + + sc4dndcld + Deal or No Deal Club (Bellfruit) (Scorpion 4) (DNDL313, set 2) + + + sc4dndcle + Deal or No Deal Club (Bellfruit) (Scorpion 4) (DNDL212, set 2) + + + sc4dndclf + Deal or No Deal Club (Bellfruit) (Scorpion 4) (DNDL391, set 2) + + + sc4dndclg + Deal or No Deal Club (Bellfruit) (Scorpion 4) (DNDL181, set 2) + + + sc4dndcs + Deal or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 1) + + + sc4dndcsa + Deal or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 1) + + + sc4dndcsb + Deal or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD211, set 2) + + + sc4dndcsc + Deal or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD212, set 2) + + + sc4dndcsd + Deal or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 1) + + + sc4dndcse + Deal or No Deal Classic (Bellfruit) (Scorpion 4) (CLDD215, set 2) + + + sc4dndcw + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 1) + + + sc4dndcwa + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 1) + + + sc4dndcwb + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH271, set 2) + + + sc4dndcwc + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 4) (CWOH272, set 2) + + + sc4dndd + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 1) + + + sc4dnddd + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 1) + + + sc4dnddda + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 1) + + + sc4dndddb + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 1) + + + sc4dndddc + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 1) + + + sc4dndddd + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 4) (DDNO471, set 2) + + + sc4dnddde + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 4) (DDNO571, set 2) + + + sc4dndddf + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 4) (DDNO572, set 2) + + + sc4dndddg + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 4) (DDNO573, set 2) + + + sc4dnddf + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 1) + + + sc4dnddfa + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC471, set 2) + + + sc4dnddfb + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 1) + + + sc4dnddfc + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 1) + + + sc4dnddfd + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC475, set 2) + + + sc4dnddfe + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 4) (TDFC571, set 2) + + + sc4dnddw + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 1) + + + sc4dnddwa + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 1) + + + sc4dnddwb + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN471, set 2) + + + sc4dnddwc + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN473, set 2) + + + sc4dnddwd + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 1) + + + sc4dnddwe + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 1) + + + sc4dnddwf + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN475, set 2) + + + sc4dnddwg + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 4) (DOFN572, set 2) + + + sc4dnde + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 1) + + + sc4dndf + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 1) + + + sc4dndg + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL402, set 2) + + + sc4dndh + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL017, set 2) + + + sc4dndhf + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 1) + + + sc4dndhfa + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA473, set 2) + + + sc4dndhfb + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 1) + + + sc4dndhfc + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 1) + + + sc4dndhfd + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA477, set 2) + + + sc4dndhfe + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA571, set 2) + + + sc4dndhff + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 1) + + + sc4dndhfg + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 1) + + + sc4dndhfh + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA471, set 2) + + + sc4dndhfi + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA472, set 2) + + + sc4dndhfj + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA476) + + + sc4dndhfk + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 1, bad?) + + + sc4dndhfl + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 4) (DNHA572, set 2, bad?) + + + sc4dndi + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL018, set 2) + + + sc4dndj + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 1) + + + sc4dndk + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 1) + + + sc4dndl + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL406, set 2) + + + sc4dndlp + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 1) + + + sc4dndlpa + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 1) + + + sc4dndlpb + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 1) + + + sc4dndlpc + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 4) (LPDN571, set 2) + + + sc4dndlpd + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 4) (LPDN572, set 2) + + + sc4dndlpe + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 4) (LPDN573, set 2) + + + sc4dndm + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL428, set 2) + + + sc4dndn + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 1) + + + sc4dndo + Deal or No Deal (Bellfruit) (Scorpion 4) (DONL424, set 2) + + + sc4dndpg + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 1) + + + sc4dndpga + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG571, set 1) + + + sc4dndpgb + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG572, set 1) + + + sc4dndpgc + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPBG471, set 2) + + + sc4dndpgd + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB571, set 2) + + + sc4dndpge + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 4) (TPGB572, set 2) + + + sc4dndra + Deal or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 1) + + + sc4dndraa + Deal or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT471, set 2) + + + sc4dndrab + Deal or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 1) + + + sc4dndrac + Deal or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 1) + + + sc4dndrad + Deal or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT474, set 2) + + + sc4dndrae + Deal or No Deal Red Alert (Bellfruit) (Scorpion 4) (REDT572, set 2) + + + sc4dndtp + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 1) + + + sc4dndtpa + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 1) + + + sc4dndtpb + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 1) + + + sc4dndtpc + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 1, bad) + + + sc4dndtpd + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 1) + + + sc4dndtpe + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV411, set 2) + + + sc4dndtpf + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV412, set 2) + + + sc4dndtpg + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV413, set 2) + + + sc4dndtph + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV414, set 2, bad) + + + sc4dndtpi + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV415, set 2) + + + sc4dndtpj + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 1) + + + sc4dndtpk + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV41A, set 2) + + + sc4dndtpl + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 1) + + + sc4dndtpm + Deal or No Deal The Power 5 (Bellfruit) (Scorpion 4) (TPRV416, set 2) + + + sc4dndtr + Deal or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 1) + + + sc4dndtra + Deal or No Deal Think Red (Bellfruit) (Scorpion 4) (THRE571, set 2) + + + sc4dndwb + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 1) + + + sc4dndwba + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 1) + + + sc4dndwbb + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX412, set 2) + + + sc4dndwbc + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX414, set 2) + + + sc4dndwbd + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 1) + + + sc4dndwbe + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX415, set 2) + + + sc4dndwbf + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 1) + + + sc4dndwbg + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 4) (WIYX419, set 2) + + + sc4dndww + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 1) + + + sc4dndwwa + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 1) + + + sc4dndwwb + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH411, set 2) + + + sc4dndwwc + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 1) + + + sc4dndwwd + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH415, set 2) + + + sc4dndwwe + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 4) (TWOH412, set 2) + + + sc4dndys + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 1) + + + sc4dndysa + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 1) + + + sc4dndysb + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO571, set 2) + + + sc4dndysc + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 4) (DOBO474, set 2) + + + sc4dough + Dough Selecta (Bellfruit) (Scorpion 4) (set 1) + + + sc4dougha + Dough Selecta (Bellfruit) (Scorpion 4) (set 2) + + + sc4druby + Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 1) + + + sc4drubya + Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 2) + + + sc4drubyb + Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 3) + + + sc4drubyc + Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 4) + + + sc4drubyd + Diamonds & Rubies (Bellfruit) (Scorpion 4) (Top Box?, set 5) + + + sc4duckq + Ducks Of Hazzard (Qps) (Scorpion 4) (set 1) + + + sc4duckqa + Ducks Of Hazzard (Qps) (Scorpion 4) (set 2) + + + sc4ducks + Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 1) + + + sc4ducksa + Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 2) + + + sc4ducksb + Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 3) + + + sc4ducksc + Ducks Of Hazzard (Mazooma) (Scorpion 4) (set 4) + + + sc4dyna + Dynamite (Bellfruit) (Scorpion 4) (set 1) + + + sc4dynaa + Dynamite (Bellfruit) (Scorpion 4) (set 2) + + + sc4eascs + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 1) + + + sc4eascsa + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 2) + + + sc4eascsb + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 3) + + + sc4eascsc + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 4) + + + sc4eascsd + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 5) + + + sc4eascse + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 6) + + + sc4eascsf + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 7) + + + sc4eascsg + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 8) + + + sc4eascsh + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 9) + + + sc4eascsi + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 10) + + + sc4eascsj + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 11) + + + sc4eascsk + Casino Easy Streak (Bellfruit) (Scorpion 4) (set 12) + + + sc4easy + Easy Streak (Bellfruit) (Scorpion 4) (set 1) + + + sc4easya + Easy Streak (Bellfruit) (Scorpion 4) (set 2) + + + sc4easyb + Easy Streak (Bellfruit) (Scorpion 4) (set 3) + + + sc4easyc + Easy Streak (Bellfruit) (Scorpion 4) (set 4) + + + sc4easyd + Easy Streak (Bellfruit) (Scorpion 4) (set 5) + + + sc4easye + Easy Streak (Bellfruit) (Scorpion 4) (set 6) + + + sc4easyf + Easy Streak (Bellfruit) (Scorpion 4) (set 11) + + + sc4emmer + Emmerdale (Mazooma) (Scorpion 4) (set 1) + + + sc4emmera + Emmerdale (Mazooma) (Scorpion 4) (set 2) + + + sc4emmerb + Emmerdale (Mazooma) (Scorpion 4) (set 3) + + + sc4emmerc + Emmerdale (Mazooma) (Scorpion 4) (set 4) + + + sc4evol + Evolution (Qps) (Scorpion 4) (set 1) + + + sc4evola + Evolution (Qps) (Scorpion 4) (set 2) + + + sc4evolb + Evolution (Qps) (Scorpion 4) (set 3) + + + sc4evolc + Evolution (Qps) (Scorpion 4) (set 4) + + + sc4evold + Evolution (Qps) (Scorpion 4) (set 5) + + + sc4evole + Evolution (Qps) (Scorpion 4) (set 6) + + + sc4evolf + Evolution (Qps) (Scorpion 4) (set 7) + + + sc4evolg + Evolution (Qps) (Scorpion 4) (set 8) + + + sc4fastf + Fast 'n' Furious (Mazooma) (Scorpion 4) (set 1) + + + sc4fastfa + Fast 'n' Furious (Mazooma) (Scorpion 4) (set 2) + + + sc4fastfb + Fast 'n' Furious (Mazooma) (Scorpion 4) (set 3) + + + sc4fastfc + Fast 'n' Furious (Mazooma) (Scorpion 4) (set 4) + + + sc4fbcrz + Football Crazy (Bellfruit) (Scorpion 4) (set 1) + + + sc4fbcrza + Football Crazy (Bellfruit) (Scorpion 4) (set 2) + + + sc4fbcrzb + Football Crazy (Bellfruit) (Scorpion 4) (set 3) + + + sc4fbcrzc + Football Crazy (Bellfruit) (Scorpion 4) (set 4) + + + sc4fbcrzd + Football Crazy (Bellfruit) (Scorpion 4) (set 5) + + + sc4fbcrze + Football Crazy (Bellfruit) (Scorpion 4) (set 6) + + + sc4fbcrzf + Football Crazy (Bellfruit) (Scorpion 4) (set 7) + + + sc4fbcrzg + Football Crazy (Bellfruit) (Scorpion 4) (set 8) + + + sc4fbcrzh + Football Crazy (Bellfruit) (Scorpion 4) (set 9) + + + sc4fbcrzi + Football Crazy (Bellfruit) (Scorpion 4) (set 10) + + + sc4fbspn + Fat Boy Spin (Bellfruit) (Scorpion 4) (set 1) + + + sc4fbspna + Fat Boy Spin (Bellfruit) (Scorpion 4) (set 2) + + + sc4fbspnb + Fat Boy Spin (Bellfruit) (Scorpion 4) (set 3) + + + sc4fbspnc + Fat Boy Spin (Bellfruit) (Scorpion 4) (set 4) + + + sc4fcc + Firecracker Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4fcca + Firecracker Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4fccb + Firecracker Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4fccc + Firecracker Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4fd7th + Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 1) + + + sc4fd7tha + Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 2) + + + sc4fd7thb + Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 3) + + + sc4fd7thc + Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 1) + + + sc4fd7thd + Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 2) + + + sc4fd7the + Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 4) + + + sc4fd7thf + Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 5) + + + sc4fd7thg + Frankie Dettori's 7th Heaven (Bellfruit) (Scorpion 4) (set 6) + + + sc4fd7thh + Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 3) + + + sc4fd7thi + Frankie Dettori's 7th Heaven SP98 (Bellfruit) (Scorpion 4) (set 4) + + + sc4fevdt + Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 1) + + + sc4fevdta + Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 2) + + + sc4fevdtb + Fever (PR1202) (Dutch) (Bellfruit) (Scorpion 4) (set 3) + + + sc4fever + Fever (PR1007) (Bellfruit) (Scorpion 4) (set 1) + + + sc4fevera + Fever (PR1007) (Bellfruit) (Scorpion 4) (set 2) + + + sc4feverb + Fever (PR1007) (Bellfruit) (Scorpion 4) (set 3) + + + sc4feverc + Fever (PR1007) (Bellfruit) (Scorpion 4) (set 4) + + + sc4feverd + Fever (PR1007) (Bellfruit) (Scorpion 4) (set 5) + + + sc4fevere + Fever (PR1007) (Bellfruit) (Scorpion 4) (set 6) + + + sc4feverf + Fever (PR1007) (Bellfruit) (Scorpion 4) (set 7) + + + sc4feverg + Fever (PR1007) (Bellfruit) (Scorpion 4) (set 8) + + + sc4feverh + Fever (PR1007) (Bellfruit) (Scorpion 4) (set 9) + + + sc4feverk + Fever (PR1007) (Bellfruit) (Scorpion 4) (set 10) + + + sc4fevnx + Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 1) + + + sc4fevnxa + Fever The Next (Dutch) (Bellfruit) (Scorpion 4) (set 2) + + + sc4ffru + Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 1) + + + sc4ffrua + Fast Fruit (Qps) (Scorpion 4) (set 1) + + + sc4ffrub + Fast Fruit (Qps / Mazooma) (Scorpion 4) (set 2) + + + sc4ffruc + Fast Fruit (Qps) (Scorpion 4) (set 2) + + + sc4ffrud + Fast Fruit (Qps) (Scorpion 4) (set 3) + + + sc4ffrue + Fast Fruit (Qps) (Scorpion 4) (set 4) + + + sc4fguy + Family Guy (Bellfruit) (Scorpion 4) (set 1) + + + sc4fguya + Family Guy (Bellfruit) (Scorpion 4) (set 2) + + + sc4fguyb + Family Guy (Bellfruit) (Scorpion 4) (set 3) + + + sc4fguyc + Family Guy (Bellfruit) (Scorpion 4) (set 4) + + + sc4fguyd + Family Guy (Bellfruit) (Scorpion 4) (set 5) + + + sc4fguye + Family Guy (Bellfruit) (Scorpion 4) (set 6) + + + sc4fire + Firepower (Mazooma) (Scorpion 4) (set 1) + + + sc4firea + Firepower (Mazooma) (Scorpion 4) (set 2) + + + sc4fmj + Full Metal Jackpot (Mazooma) (Scorpion 4) (set 1) + + + sc4fmja + Full Metal Jackpot (Mazooma) (Scorpion 4) (set 2) + + + sc4fmjb + Full Metal Jackpot (Mazooma) (Scorpion 4) (set 3) + + + sc4fmjc + Full Metal Jackpot (Mazooma) (Scorpion 4) (set 4) + + + sc4fpitc + Fever Pitch (Bellfruit) (Scorpion 4) (set 1) + + + sc4fpitca + Fever Pitch (Bellfruit) (Scorpion 4) (set 2) + + + sc4fpitcb + Fever Pitch (Bellfruit) (Scorpion 4) (set 3) + + + sc4fpitcc + Fever Pitch (Bellfruit) (Scorpion 4) (set 11) + + + sc4fpitcd + Fever Pitch (Bellfruit) (Scorpion 4) (set 4) + + + sc4fpitce + Fever Pitch (Bellfruit) (Scorpion 4) (set 5) + + + sc4fpitcf + Fever Pitch (Bellfruit) (Scorpion 4) (set 6) + + + sc4fpitcg + Fever Pitch (Bellfruit) (Scorpion 4) (set 12) + + + sc4fpitch + Fever Pitch (Bellfruit) (Scorpion 4) (set 7) + + + sc4fpitci + Fever Pitch (Bellfruit) (Scorpion 4) (set 8) + + + sc4fpitcj + Fever Pitch (Bellfruit) (Scorpion 4) (set 9) + + + sc4fpitck + Fever Pitch (Bellfruit) (Scorpion 4) (set 10) + + + sc4frboo + Frooty Booty (Bellfruit) (Scorpion 4) (set 1) + + + sc4frbooa + Frooty Booty (Bellfruit) (Scorpion 4) (set 2) + + + sc4frboob + Frooty Booty (Bellfruit) (Scorpion 4) (set 3) + + + sc4frbooc + Frooty Booty (Bellfruit) (Scorpion 4) (set 4) + + + sc4frenz + Fruit Frenzy (Bellfruit) (Scorpion 4) (set 1) + + + sc4frenza + Fruit Frenzy (Bellfruit) (Scorpion 4) (set 2) + + + sc4frenzb + Fruit Frenzy (Bellfruit) (Scorpion 4) (set 3) + + + sc4frenzc + Fruit Frenzy (Bellfruit) (Scorpion 4) (set 4) + + + sc4frenzd + Fruit Frenzy (Bellfruit) (Scorpion 4) (set 5) + + + sc4frenze + Fruit Frenzy (Bellfruit) (Scorpion 4) (set 6) + + + sc4frsu + Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 1) + + + sc4frsua + Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 2) + + + sc4frsub + Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 3) + + + sc4frsuc + Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 4) + + + sc4frsud + Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 5) + + + sc4frsue + Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 6) + + + sc4frsuf + Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 7) + + + sc4frsug + Casino Fruits 'n' Suits (Bellfruit) (Scorpion 4) (set 8) + + + sc4ftopi + Fruitopia (Qps) (Scorpion 4) (set 1) + + + sc4ftopia + Fruitopia (Qps) (Scorpion 4) (set 2) + + + sc4ftopib + Fruitopia (Qps) (Scorpion 4) (set 3) + + + sc4ftopic + Fruitopia (Qps) (Scorpion 4) (set 4) + + + sc4ftopid + Fruitopia (V2.1) (Qps) (Scorpion 4) (set 1) + + + sc4ftopie + Fruitopia (V2.2) (Qps) (Scorpion 4) (set 1) + + + sc4ftopif + Fruitopia (V1.1) (Qps) (Scorpion 4) (set 1) + + + sc4ftopig + Fruitopia (V2.1) (Qps) (Scorpion 4) (set 2) + + + sc4ftopih + Fruitopia (V2.2) (Qps) (Scorpion 4) (set 2) + + + sc4ftopii + Fruitopia (V1.1) (Qps) (Scorpion 4) (set 2) + + + sc4fullt + Full Throttle (011) (Qps) (Scorpion 4) (set 1) + + + sc4fullta + Full Throttle (041) (Qps) (Scorpion 4) (set 1) + + + sc4fulltb + Full Throttle (011) (Qps) (Scorpion 4) (set 2) + + + sc4fulltc + Full Throttle (041) (Qps) (Scorpion 4) (set 2) + + + sc4fulltd + Full Throttle (012) (Qps) (Scorpion 4) (set 1) + + + sc4fullte + Full Throttle (042) (Qps) (Scorpion 4) (set 1) + + + sc4fulltf + Full Throttle (013) (Qps) (Scorpion 4) (set 1) + + + sc4fulltg + Full Throttle (012) (Qps) (Scorpion 4) (set 2) + + + sc4fullth + Full Throttle (042) (Qps) (Scorpion 4) (set 2) + + + sc4fullti + Full Throttle (013) (Qps) (Scorpion 4) (set 2) + + + sc4fwp + Five Ways Pays (Mazooma) (Scorpion 4) (set 1) + + + sc4fwpa + Five Ways Pays (Mazooma) (Scorpion 4) (set 2) + + + sc4fwpb + Five Ways Pays (Mazooma) (Scorpion 4) (set 3) + + + sc4fwpc + Five Ways Pays (Mazooma) (Scorpion 4) (set 4) + + + sc4fwpcs + Five Ways Pays (Mazooma) (Scorpion 4) (set 5) + + + sc4fwpcsa + Five Ways Pays (Mazooma) (Scorpion 4) (set 6) + + + sc4fwpcsb + Five Ways Pays (Mazooma) (Scorpion 4) (set 7) + + + sc4gag + Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 1) + + + sc4gaga + Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 1) + + + sc4gagb + Grab A Granny (PR7019, GRAB) (Mazooma) (Scorpion 4) (set 2) + + + sc4gagc + Grab A Granny (PR7019, GRAN) (Mazooma) (Scorpion 4) (set 2) + + + sc4gamcs + The Game Casino (Dutch) (Bellfruit) (Scorpion 4) + + + sc4game + The Game (Dutch) (Bellfruit) (Scorpion 4) + + + sc4gball + Golden Balls (Bellfruit) (Scorpion 4) (set 1) + + + sc4gballa + Golden Balls (Bellfruit) (Scorpion 4) (set 2) + + + sc4gballb + Golden Balls (Bellfruit) (Scorpion 4) (set 3) + + + sc4gballc + Golden Balls (Bellfruit) (Scorpion 4) (set 4) + + + sc4gbcas + Casino Golden Balls (Bellfruit) (Scorpion 4) (set 1) + + + sc4gbcasa + Casino Golden Balls (Bellfruit) (Scorpion 4) (set 2) + + + sc4gbcasb + Casino Golden Balls (Bellfruit) (Scorpion 4) (set 3) + + + sc4gbcasc + Casino Golden Balls (Bellfruit) (Scorpion 4) (set 4) + + + sc4gcb + Grand Blaster Cash (Mazooma) (Scorpion 4) (set 1) + + + sc4gcba + Grand Blaster Cash (Mazooma) (Scorpion 4) (set 2) + + + sc4gcbb + Grand Blaster Cash (Mazooma) (Scorpion 4) (set 3) + + + sc4gcbc + Grand Blaster Cash (Mazooma) (Scorpion 4) (set 4) + + + sc4gcbd + Grand Blaster Cash (Mazooma) (Scorpion 4) (set 5) + + + sc4gcbe + Grand Blaster Cash (Mazooma) (Scorpion 4) (set 6) + + + sc4gcbf + Grand Blaster Cash (Mazooma) (Scorpion 4) (set 7) + + + sc4gcbg + Grand Blaster Cash (Mazooma) (Scorpion 4) (set 8) + + + sc4gcbh + Grand Blaster Cash (Mazooma) (Scorpion 4) (set 9) + + + sc4gcbi + Grand Blaster Cash (Mazooma) (Scorpion 4) (set 10) + + + sc4gcbj + Grand Blaster Cash (Mazooma) (Scorpion 4) (set 11) + + + sc4gcclb + Grandslam Casino (Bellfruit) (Scorpion 4) (set 1) + + + sc4gcclba + Grandslam Casino (Bellfruit) (Scorpion 4) (set 2) + + + sc4gcclbb + Grandslam Casino (Bellfruit) (Scorpion 4) (set 3) + + + sc4gcclbc + Grandslam Casino (Bellfruit) (Scorpion 4) (set 4) + + + sc4gcclbd + Grandslam Casino (Bellfruit) (Scorpion 4) (set 5) + + + sc4gcclbe + Grandslam Casino (Bellfruit) (Scorpion 4) (set 6) + + + sc4gcclbf + Grandslam Casino (Bellfruit) (Scorpion 4) (set 7) + + + sc4gcclbg + Grandslam Casino (Bellfruit) (Scorpion 4) (set 8) + + + sc4gcclbh + Grandslam Casino (Bellfruit) (Scorpion 4) (set 9) + + + sc4gcclbi + Grandslam Casino (Bellfruit) (Scorpion 4) (set 10) + + + sc4gcclbj + Grandslam Casino (Bellfruit) (Scorpion 4) (set 11) + + + sc4gcclbk + Grandslam Casino (Bellfruit) (Scorpion 4) (set 12) + + + sc4gcclbl + Grandslam Casino (Bellfruit) (Scorpion 4) (set 13) + + + sc4gcclbm + Grandslam Casino (Bellfruit) (Scorpion 4) (set 14) + + + sc4gcclbn + Grandslam Casino (Bellfruit) (Scorpion 4) (set 15) + + + sc4gcclbo + Grandslam Casino (Bellfruit) (Scorpion 4) (set 17) + + + sc4gcclbp + Grandslam Casino (Bellfruit) (Scorpion 4) (set 16) + + + sc4gcclbq + Grandslam Casino (Bellfruit) (Scorpion 4) (set 18) + + + sc4gd + Gold Digger (Bellfruit) (Scorpion 4) (set 1) + + + sc4gda + Gold Digger (Bellfruit) (Scorpion 4) (set 2) + + + sc4gdb + Gold Digger (Bellfruit) (Scorpion 4) (set 3) + + + sc4gdc + Gold Digger (Bellfruit) (Scorpion 4) (set 4) + + + sc4gdclb + Gold Digger Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4gdclba + Gold Digger Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4gdclbb + Gold Digger Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4gdclbc + Gold Digger Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4gdclbd + Gold Digger Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4gdclbe + Gold Digger Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4gdclbf + Gold Digger Club (Bellfruit) (Scorpion 4) (set 7) + + + sc4gdclbg + Gold Digger Club (Bellfruit) (Scorpion 4) (set 8) + + + sc4gdclbh + Gold Digger Club (Bellfruit) (Scorpion 4) (set 9) + + + sc4gdclbi + Gold Digger Club (Bellfruit) (Scorpion 4) (set 10) + + + sc4gdclbj + Gold Digger Club (Bellfruit) (Scorpion 4) (set 11) + + + sc4gdclbk + Gold Digger Club (Bellfruit) (Scorpion 4) (set 12) + + + sc4gdd + Gold Digger (Bellfruit) (Scorpion 4) (set 5) + + + sc4gde + Gold Digger (Bellfruit) (Scorpion 4) (set 6) + + + sc4gdf + Gold Digger (Bellfruit) (Scorpion 4) (set 7) + + + sc4gdg + Gold Digger (Bellfruit) (Scorpion 4) (set 8) + + + sc4gdmz + Golden X (Mazooma) (PR2056) (Scorpion 4) (set 3) + + + sc4gdmza + Golden X (Mazooma) (PR2056) (Scorpion 4) (set 4) + + + sc4gfev + Gold Fever (Mazooma) (Scorpion 4) (set 1) + + + sc4gfeva + Gold Fever (Mazooma) (Scorpion 4) (set 2) + + + sc4gfevb + Gold Fever (Mazooma) (Scorpion 4) (set 3) + + + sc4ggame + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 1) + + + sc4ggame0 + Golden X (Mazooma) (PR2056) (Scorpion 4) (set 2) + + + sc4ggame1 + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 7) + + + sc4ggame2 + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 8) + + + sc4ggame3 + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 6) + + + sc4ggame4 + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 7) + + + sc4ggame5 + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 8) + + + sc4ggame6 + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 9) + + + sc4ggame7 + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 1) + + + sc4ggame8 + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 2) + + + sc4ggame9 + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 3) + + + sc4ggamea + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 1) + + + sc4ggameaa + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 4) + + + sc4ggameab + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 5) + + + sc4ggameac + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 6) + + + sc4ggamead + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 7) + + + sc4ggameae + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 35GBP, set 8) + + + sc4ggameb + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 2) + + + sc4ggamec + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 3) + + + sc4ggamed + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 4) + + + sc4ggamef + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 1) + + + sc4ggameg + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 2) + + + sc4ggamei + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 2) + + + sc4ggamej + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 3) + + + sc4ggamek + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 4) + + + sc4ggamel + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 1) + + + sc4ggamem + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 2) + + + sc4ggamen + Golden X (Mazooma) (PR2056) (Scorpion 4) (set 1) + + + sc4ggamep + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 3) + + + sc4ggameq + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 4) + + + sc4ggamer + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (GLDX, 25GBP, set 5) + + + sc4ggames + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 5) + + + sc4ggamet + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 6) + + + sc4ggameu + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 25GBP, set 7) + + + sc4ggamev + Golden X (Mazooma) (PR2056) (Scorpion 4) (GLDX, 30GBP, set 5) + + + sc4ggamew + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 3) + + + sc4ggamex + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 4) + + + sc4ggamey + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 5) + + + sc4ggamez + Golden X (Mazooma) (PR2056, newer?) (Scorpion 4) (set 6) + + + sc4ggcas + Golden X (Mazooma) (Scorpion 4) (GLDX, set 9) + + + sc4ggcasa + Golden X (Mazooma) (Scorpion 4) (GLDX, set 10) + + + sc4ggcasb + Golden X (Mazooma) (Scorpion 4) (GLDX, set 11) + + + sc4ggcasc + Golden X (Mazooma) (Scorpion 4) (GLDX, set 12) + + + sc4ggcl + Golden Grid Club (V1.0) (Qps) (Scorpion 4) + + + sc4ggcla + Golden Grid Club (V411) (Qps) (Scorpion 4) (set 1) + + + sc4ggclb + Golden Grid Club (V411) (Qps) (Scorpion 4) (set 2) + + + sc4ggclc + Golden Grid Club (V412) (Qps) (Scorpion 4) (set 1) + + + sc4ggcld + Golden Grid Club (V412) (Qps) (Scorpion 4) (set 2) + + + sc4ggdlx + Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 1) + + + sc4ggdlxa + Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 3) + + + sc4ggdlxb + Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 4) + + + sc4ggdlxc + Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 2) + + + sc4ggdlxd + Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 5) + + + sc4ggdlxe + Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 6) + + + sc4ggdlxf + Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 7) + + + sc4ggdlxg + Golden Game Deluxe (Mazooma) (PR2201) (Scorpion 4) (GGDX, set 8) + + + sc4ggg + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 1) + + + sc4gggb + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 2) + + + sc4gggc + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 3) + + + sc4gggd + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 4) + + + sc4ggge + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 5) + + + sc4gggf + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 6) + + + sc4gggg + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 13) + + + sc4gggh + Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 1) + + + sc4gggi + Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 2) + + + sc4gggk + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 7) + + + sc4gggl + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 8) + + + sc4gggm + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 9) + + + sc4gggn + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 10) + + + sc4gggo + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 11) + + + sc4gggp + Grand Golden Game (Mazooma) (PR2056) (Scorpion 4) (GGGB, 35GBP, set 12) + + + sc4gggq + Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 3) + + + sc4gggr + Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 4) + + + sc4gggs + Grand Golden Game (Mazooma) (PR2353) (Scorpion 4) (GGGB, 35GBP, set 5) + + + sc4gggtb + Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 1) + + + sc4gggtba + Grand Golden Game (Mazooma) (PR2056, GGGT) (Scorpion 4) (Top Box, set 2) + + + sc4ggrid + Golden Grid (V1.0) (Qps) (Scorpion 4) (set 1) + + + sc4ggrida + Golden Grid (V1.0) (Qps) (Scorpion 4) (set 2) + + + sc4ggridb + Golden Grid (V1.1) (Qps) (Scorpion 4) (set 1) + + + sc4ggridc + Golden Grid (V1.1) (Qps) (Scorpion 4) (set 2) + + + sc4ggridd + Golden Grid (V1.3) (Qps) (Scorpion 4) + + + sc4ggride + Golden Grid (V1.0) (Qps) (Scorpion 4) (set 3) + + + sc4ggridf + Golden Grid (V1.0) (Qps) (Scorpion 4) (set 4) + + + sc4ggridg + Golden Grid (V1.1) (Qps) (Scorpion 4) (set 3) + + + sc4ggridh + Golden Grid (V1.1) (Qps) (Scorpion 4) (set 4) + + + sc4ggridi + Golden Grid (V011) (Scorpion 4) (set 1) + + + sc4ggridj + Golden Grid (V041) (Qps) (Scorpion 4) (set 1) + + + sc4ggridk + Golden Grid (V011) (Scorpion 4) (set 2) + + + sc4ggridl + Golden Grid (V041) (Qps) (Scorpion 4) (set 2) + + + sc4ggridm + Golden Grid (V012) (Qps) (Scorpion 4) (set 1) + + + sc4ggridn + Golden Grid (V012) (Qps) (Scorpion 4) (set 2) + + + sc4ggtb + Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 1) + + + sc4ggtba + Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 2) + + + sc4ggtbb + Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 3) + + + sc4ghost + Golden Ghost (Mazooma) (Scorpion 4) (set 1) + + + sc4ghosta + Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 1) + + + sc4ghostb + Golden Ghost (Mazooma) (Scorpion 4) (set 2) + + + sc4ghostc + Golden Ghost (Mazooma) (Scorpion 4) (set 3) + + + sc4ghostd + Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 2) + + + sc4ghoste + Golden Ghost (Mazooma) (Scorpion 4) (set 4) + + + sc4ghostf + Golden Ghost (Mazooma) (Scorpion 4) (set 5) + + + sc4ghostg + Golden Ghost (Mazooma) (Scorpion 4) (set 6) + + + sc4ghosth + Golden Ghost (Mazooma) (Scorpion 4) (Top Box, set 3) + + + sc4glad + Gladiator (Mazooma) (Scorpion 4) (set 1) + + + sc4glada + Gladiator (Mazooma) (Scorpion 4) (set 2) + + + sc4gladb + Gladiator (Mazooma) (Scorpion 4) (set 3) + + + sc4gladc + Gladiator (Mazooma) (Scorpion 4) (set 4) + + + sc4gladd + Gladiator (Mazooma) (Scorpion 4) (set 5) + + + sc4glade + Gladiator (Mazooma) (Scorpion 4) (set 6) + + + sc4gladf + Gladiator (Mazooma) (Scorpion 4) (set 7) + + + sc4gladg + Gladiator (Mazooma) (Scorpion 4) (set 8) + + + sc4gldcl + Gladiator Club (Mazooma) (Scorpion 4) (set 1) + + + sc4gldcla + Gladiator Club (Mazooma) (Scorpion 4) (set 2) + + + sc4gnc + Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 1) + + + sc4gnca + Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 2) + + + sc4gncb + Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 3) + + + sc4gncc + Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 4) + + + sc4gncd + Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 5) + + + sc4gnce + Golden Game Club (Mazooma) (Scorpion 4) (GLDC, set 6) + + + sc4gocas + Casino Golden Oldie (Mazooma) (Scorpion 4) (set 5) + + + sc4gocasa + Casino Golden Oldie (Mazooma) (Scorpion 4) (set 6) + + + sc4goldo + Casino Golden Oldie (Mazooma) (Scorpion 4) (set 1) + + + sc4goldoa + Casino Golden Oldie (Mazooma) (Scorpion 4) (set 2) + + + sc4goldob + Casino Golden Oldie (Mazooma) (Scorpion 4) (set 3) + + + sc4goldoc + Casino Golden Oldie (Mazooma) (Scorpion 4) (set 4) + + + sc4goldw + Golden Winner (Bellfruit) (Scorpion 4) (set 1) + + + sc4goldwa + Golden Winner (Bellfruit) (Scorpion 4) (set 2) + + + sc4goldwb + Golden Winner (Bellfruit) (Scorpion 4) (set 3) + + + sc4goldwc + Golden Winner (Bellfruit) (Scorpion 4) (set 4) + + + sc4goldwd + Golden Winner (Bellfruit) (Scorpion 4) (set 5) + + + sc4goldwe + Golden Winner (Bellfruit) (Scorpion 4) (set 6) + + + sc4goldwf + Golden Winner (Bellfruit) (Scorpion 4) (set 7) + + + sc4goldwg + Golden Winner (Bellfruit) (Scorpion 4) (set 8) + + + sc4goud + Goudkoorts (Dutch) (Bellfruit) (Scorpion 4) + + + sc4greed + Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 1) + + + sc4greeda + Greedy Gonzalez (Bellfruit) (Scorpion 4) (set 2) + + + sc4gshot + Golden Shot (Qps) (Scorpion 4) (set 1) + + + sc4gshota + Golden Shot Arcade (Qps) (Scorpion 4) (set 1) + + + sc4gshotb + Golden Shot (Qps) (Scorpion 4) (set 2) + + + sc4gshotc + Golden Shot Arcade (Qps) (Scorpion 4) (set 2) + + + sc4gslam + Grandslam Club (BFM) (Scorpion 4) (set 1) + + + sc4gslama + Grandslam Club (BFM) (Scorpion 4) (set 2) + + + sc4gslamb + Grandslam Club (BFM) (Scorpion 4) (set 3) + + + sc4gslamc + Grandslam Club (BFM) (Scorpion 4) (set 4) + + + sc4gslamd + Grandslam Club (BFM) (Scorpion 4) (set 5) + + + sc4gslame + Grandslam Club (BFM) (Scorpion 4) (set 6) + + + sc4gslamf + Grandslam Club (BFM) (Scorpion 4) (set 7) + + + sc4gunp + Gunpowder Slot (Bellfruit) (Scorpion 4) (set 1) + + + sc4gunpa + Gunpowder Slot (Bellfruit) (Scorpion 4) (set 2) + + + sc4gunpb + Gunpowder Slot (Bellfruit) (Scorpion 4) (set 3) + + + sc4gunpc + Gunpowder Slot (Bellfruit) (Scorpion 4) (set 4) + + + sc4gunpd + Gunpowder Slot (Bellfruit) (Scorpion 4) (set 5) + + + sc4gunpe + Gunpowder Slot (Bellfruit) (Scorpion 4) (set 6) + + + sc4gunpf + Gunpowder Slot (Bellfruit) (Scorpion 4) (set 7) + + + sc4gunpg + Gunpowder Slot (Bellfruit) (Scorpion 4) (set 8) + + + sc4gx + Bar X (Mazooma) (Scorpion 4) (BARX, set 1) + + + sc4gx3 + Golden X (Mazooma) (Scorpion 4) (GLDX, set 1) + + + sc4gx3a + Golden X (Mazooma) (Scorpion 4) (GLDX, set 2) + + + sc4gx3b + Golden X (Mazooma) (Scorpion 4) (GLDX, set 3) + + + sc4gx3c + Golden X (Mazooma) (Scorpion 4) (GLDX, set 4) + + + sc4gx3d + Golden X (Mazooma) (Scorpion 4) (GLDX, set 5) + + + sc4gx3e + Golden X (Mazooma) (Scorpion 4) (GLDX, set 6) + + + sc4gx3f + Golden X (Mazooma) (Scorpion 4) (GLDX, set 7) + + + sc4gx3g + Golden X (Mazooma) (Scorpion 4) (GLDX, set 8) + + + sc4gxa + Bar X (Mazooma) (Scorpion 4) (BARX, set 8) + + + sc4gxb + Bar X (Mazooma) (Scorpion 4) (BARX, set 9) + + + sc4gxcasa + Bar X (Mazooma) (Scorpion 4) (BARX, set 2) + + + sc4gxcasb + Bar X (Mazooma) (Scorpion 4) (BARX, set 3) + + + sc4gxcasc + Bar X (Mazooma) (Scorpion 4) (BARX, set 4) + + + sc4gxcasd + Bar X (Mazooma) (Scorpion 4) (BARX, set 5) + + + sc4gxcase + Bar X (Mazooma) (Scorpion 4) (BARX, set 6) + + + sc4gxcasf + Bar X (Mazooma) (Scorpion 4) (BARX, set 7) + + + sc4h6cl + Hot Six Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4h6cla + Hot Six Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4h6clb + Hot Six Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4h6clc + Hot Six Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4hapnt + Happy Notes (Bellfruit) (Scorpion 4) (set 1) + + + sc4hapnta + Happy Notes (Bellfruit) (Scorpion 4) (set 2) + + + sc4hapntb + Happy Notes (Bellfruit) (Scorpion 4) (set 3) + + + sc4hapntc + Happy Notes (Bellfruit) (Scorpion 4) (set 4) + + + sc4hapntd + Happy Notes (Bellfruit) (Scorpion 4) (set 5) + + + sc4hapnte + Happy Notes (Bellfruit) (Scorpion 4) (set 6) + + + sc4hdd + Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 1) + + + sc4hdda + Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 1) + + + sc4hddb + Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 2) + + + sc4hddc + Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 2) + + + sc4hddd + Hickory Dickory Dosh (PR7016) (Mazooma) (Scorpion 4) (set 3) + + + sc4hdde + Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 3) + + + sc4hddf + Hickory Dickory Dosh (PR7045) (Mazooma) (Scorpion 4) (set 4) + + + sc4heatw + Heatwave (Dutch) (Bellfruit) (Scorpion 4) + + + sc4hellb + Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 1) + + + sc4hellbb + Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 2) + + + sc4hellbc + Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 3) + + + sc4hellbd + Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 4) + + + sc4hellbe + Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 5) + + + sc4hellbf + Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 6) + + + sc4hellbg + Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 7) + + + sc4hellbh + Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 8) + + + sc4hellbi + Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 9) + + + sc4hellbj + Hells Bells (PR1419) (Bellfruit) (Scorpion 4) (set 10) + + + sc4helld + Hells Bells (PR1201) (Dutch) (Bellfruit) (Scorpion 4) + + + sc4helrd + Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 1) + + + sc4helrs + Hellraiser (Dutch) (Bellfruit) (Scorpion 4) (set 2) + + + sc4hf + Happy Fruits (Bellfruit) (Scorpion 4) (set 1) + + + sc4hfa + Happy Fruits (Bellfruit) (Scorpion 4) (set 2) + + + sc4hfb + Happy Fruits (Bellfruit) (Scorpion 4) (set 3) + + + sc4hfc + Happy Fruits (Bellfruit) (Scorpion 4) (set 4) + + + sc4hfcl + Happy Fruits Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4hfcla + Happy Fruits Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4hfd + Happy Fruits (Bellfruit) (Scorpion 4) (set 5) + + + sc4hfe + Happy Fruits (Bellfruit) (Scorpion 4) (set 6) + + + sc4hff + Happy Fruits (Bellfruit) (Scorpion 4) (set 7) + + + sc4hfg + Happy Fruits (Bellfruit) (Scorpion 4) (set 8) + + + sc4hi5 + High 5 (Bellfruit) (Scorpion 4) (set 1) + + + sc4hi5a + High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 1) + + + sc4hi5b + High 5 (Bellfruit) (Scorpion 4) (set 2) + + + sc4hi5c + High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 2) + + + sc4hi5d + High 5 (Bellfruit) (Scorpion 4) (set 3) + + + sc4hi5e + High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 3) + + + sc4hi5f + High 5 (Bellfruit) (Scorpion 4) (set 4) + + + sc4hi5g + High 5 (Bellfruit / Whitbread) (Scorpion 4) (set 4) + + + sc4hill + Hill Billionaire (Bellfruit) (Scorpion 4) (set 1) + + + sc4hilla + Hill Billionaire (Bellfruit) (Scorpion 4) (set 2) + + + sc4hilo + Hilowatha (Bellfruit) (Scorpion 4) (set 1) + + + sc4hiloa + Hilowatha (Bellfruit) (Scorpion 4) (set 2) + + + sc4hilob + Hilowatha (Bellfruit) (Scorpion 4) (set 3) + + + sc4hiloc + Hilowatha (Bellfruit) (Scorpion 4) (set 4) + + + sc4hilod + Hilowatha (Bellfruit) (Scorpion 4) (set 5) + + + sc4hiloe + Hilowatha (Bellfruit) (Scorpion 4) (set 6) + + + sc4hilof + Hilowatha (Bellfruit) (Scorpion 4) (set 7) + + + sc4hilog + Hilowatha (Bellfruit) (Scorpion 4) (set 8) + + + sc4hiloh + Hilowatha (Bellfruit) (Scorpion 4) (set 9) + + + sc4hiloi + Hilowatha (Bellfruit) (Scorpion 4) (set 10) + + + sc4hiloj + Hilowatha (Bellfruit) (Scorpion 4) (set 11) + + + sc4hilok + Hilowatha (Bellfruit) (Scorpion 4) (set 12) + + + sc4himi + High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 1) + + + sc4himia + High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 1) + + + sc4himib + High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 1) + + + sc4himic + High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 2) + + + sc4himid + High 'n' Mighty (PR2067) (Mazooma) (Scorpion 4) (set 2) + + + sc4himie + High 'n' Mighty (PR2119) (Mazooma) (Scorpion 4) (set 2) + + + sc4himif + High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 3) + + + sc4himig + High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 4) + + + sc4himih + High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 5) + + + sc4himii + High 'n' Mighty (PR2999) (Mazooma) (Scorpion 4) (set 6) + + + sc4hiss + Hissing Quid (Qps) (Scorpion 4) (set 1) + + + sc4hissa + Hissing Quid (Qps) (Scorpion 4) (set 2) + + + sc4hissb + Hissing Quid (Qps) (Scorpion 4) (set 3) + + + sc4hissc + Hissing Quid (Qps) (Scorpion 4) (set 4) + + + sc4hissd + Hissing Quid (Qps) (Scorpion 4) (set 5) + + + sc4hisse + Hissing Quid (Qps) (Scorpion 4) (set 6) + + + sc4hissf + Hissing Quid (Qps) (Scorpion 4) (set 7) + + + sc4hissg + Hissing Quid (Qps) (Scorpion 4) (set 8) + + + sc4hitsh + Hit Shot (Bellfruit) (Scorpion 4) (set 1) + + + sc4hitsha + Hit Shot (Bellfruit) (Scorpion 4) (set 2) + + + sc4hitshb + Hit Shot (Bellfruit) (Scorpion 4) (set 3) + + + sc4hitshc + Hit Shot (Bellfruit) (Scorpion 4) (set 4) + + + sc4hitshd + Hit Shot (Bellfruit) (Scorpion 4) (set 5) + + + sc4hitshe + Hit Shot (Bellfruit) (Scorpion 4) (set 6) + + + sc4hntcs + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 1) + + + sc4hntcsa + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 2) + + + sc4hntcsb + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 3) + + + sc4hntcsc + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 4) + + + sc4hntcsd + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 5) + + + sc4hntcse + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 6) + + + sc4hntcsf + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 7) + + + sc4hntcsg + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 8) + + + sc4hntcsh + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 9) + + + sc4hntcsi + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 10) + + + sc4hntcsj + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 11) + + + sc4hntcsk + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 12) + + + sc4hntcsl + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 13) + + + sc4hntcsm + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 14) + + + sc4hntcsn + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 15) + + + sc4hntcso + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 16) + + + sc4hntcsp + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 17) + + + sc4hntcsq + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 18) + + + sc4hntcsr + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 19) + + + sc4hntcss + Happy Notes Casino (Bellfruit) (Scorpion 4) (set 20) + + + sc4holyw + Hollywood (Bellfruit) (Scorpion 4) (set 1) + + + sc4holywa + Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 1) + + + sc4holywb + Hollywood (Bellfruit) (Scorpion 4) (set 2) + + + sc4holywc + Hollywood (Bellfruit / Whitbread) (Scorpion 4) (set 2) + + + sc4hotdg + Hot Dog (Bellfruit) (Scorpion 4) (set 1) + + + sc4hotdga + Hot Dog (Bellfruit) (Scorpion 4) (set 2) + + + sc4hotdgb + Hot Dog (Bellfruit) (Scorpion 4) (set 3) + + + sc4hotdgc + Hot Dog (Bellfruit) (Scorpion 4) (set 4) + + + sc4hotpr + Hot Property (Bellfruit) (Scorpion 4) (set 1) + + + sc4hotpra + Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 1) + + + sc4hotprb + Hot Property (Bellfruit) (Scorpion 4) (set 2) + + + sc4hotprc + Hot Property (Bellfruit) (Scorpion 4) (Whitbread, set 2) + + + sc4hotprd + Hot Property (Bellfruit) (Scorpion 4) (set 3) + + + sc4hotpre + Hot Property (Bellfruit) (Scorpion 4) (set 4) + + + sc4hotrd + Hot Rod (Bellfruit) (Scorpion 4) (set 1) + + + sc4hotrda + Hot Rod (Bellfruit) (Scorpion 4) (set 2) + + + sc4hotsh + Hot Shot (Bellfruit) (Scorpion 4) (set 1) + + + sc4hotsha + Hot Shot (Bellfruit) (Scorpion 4) (set 2) + + + sc4hotwd + Hot Wad (Bellfruit) (Scorpion 4) (set 1) + + + sc4hotwda + Hot Wad (Bellfruit) (Scorpion 4) (set 2) + + + sc4hotwdb + Hot Wad (Bellfruit) (Scorpion 4) (set 3) + + + sc4hotwdc + Hot Wad (Bellfruit) (Scorpion 4) (set 4) + + + sc4hotwdd + Hot Wad (Bellfruit) (Scorpion 4) (set 5) + + + sc4hotwde + Hot Wad (Bellfruit) (Scorpion 4) (set 6) + + + sc4hrolr + High Roller (Bellfruit) (Scorpion 4) + + + sc4hyde + Hyde & Streak (Mazooma) (Scorpion 4) (set 1) + + + sc4hydea + Hyde & Streak (Mazooma) (Scorpion 4) (set 2) + + + sc4hydeb + Hyde & Streak (Mazooma) (Scorpion 4) (set 3) + + + sc4hydec + Hyde & Streak (Mazooma) (Scorpion 4) (set 4) + + + sc4hyper + Hyperactive (Mazooma) (Scorpion 4) (set 1) + + + sc4hypera + Hyperactive (Mazooma) (Scorpion 4) (set 2) + + + sc4ibiza + Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 1) + + + sc4ibizaa + Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 2) + + + sc4ibizab + Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 3) + + + sc4ibizac + Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 4) + + + sc4ibizad + Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 5) + + + sc4ibizae + Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 6) + + + sc4ibizaf + Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 7) + + + sc4ibizag + Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 8) + + + sc4ibizah + Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 9) + + + sc4ibizai + Red Hot Ibiza (Bellfruit) (Scorpion 4) (set 10) + + + sc4ijclb + Italian Job Club (Mazooma) (Scorpion 4) + + + sc4ijob + Italian Job (Mazooma) (Scorpion 4) (set 1) + + + sc4ijoba + Italian Job (Mazooma) (Scorpion 4) (set 2) + + + sc4ijobb + Italian Job (Mazooma) (Scorpion 4) (set 3) + + + sc4ijobc + Italian Job (Mazooma) (Scorpion 4) (set 4) + + + sc4ijobd + Italian Job (Mazooma) (Scorpion 4) (set 5) + + + sc4ijobe + Italian Job (Mazooma) (Scorpion 4) (set 6) + + + sc4ijobf + Italian Job (Mazooma) (Scorpion 4) (set 7) + + + sc4ijobg + Italian Job (Mazooma) (Scorpion 4) (set 8) + + + sc4ijobh + Italian Job (Mazooma) (Scorpion 4) (set 9) + + + sc4ijobi + Italian Job (Mazooma) (Scorpion 4) (set 10) + + + sc4ijobj + Italian Job (Mazooma) (Scorpion 4) (set 11) + + + sc4ijobk + Italian Job (Mazooma) (Scorpion 4) (set 12) + + + sc4ijobl + Italian Job (Mazooma) (Scorpion 4) (set 13) + + + sc4ijobm + Italian Job (Mazooma) (Scorpion 4) (set 14) + + + sc4inspn + Inner Spin (Mazooma) (Scorpion 4) (set 1) + + + sc4inspna + Inner Spin (Mazooma) (Scorpion 4) (set 2) + + + sc4ivply + 4 Play (Dutch) (Bellfruit) (Scorpion 4) + + + sc4jack + Jack The Kipper (Mazooma) (Scorpion 4) (set 1) + + + sc4jacka + Jack The Kipper (Mazooma) (Scorpion 4) (set 2) + + + sc4jackb + Jack The Kipper (Mazooma) (Scorpion 4) (set 3) + + + sc4jackc + Jack The Kipper (Mazooma) (Scorpion 4) (set 4) + + + sc4jackd + Jack The Kipper (Mazooma) (Scorpion 4) (set 5) + + + sc4jacke + Jack The Kipper (Mazooma) (Scorpion 4) (set 6) + + + sc4jackf + Jack The Kipper (Mazooma) (Scorpion 4) (set 7) + + + sc4jackg + Jack The Kipper (Mazooma) (Scorpion 4) (set 8) + + + sc4jbuck + Jungle Bucks (Bellfruit) (Scorpion 4) (set 1) + + + sc4jbucka + Jungle Bucks (Bellfruit) (Scorpion 4) (set 2) + + + sc4jbuckb + Jungle Bucks (Bellfruit) (Scorpion 4) (set 3) + + + sc4jbuckc + Jungle Bucks (Bellfruit) (Scorpion 4) (set 4) + + + sc4jbuckd + Jungle Bucks (Bellfruit) (Scorpion 4) (set 5) + + + sc4jiggn + Jiggery Pockery (German) (Nova) (Scorpion 4) + + + sc4jiggr + Jiggery Pokery (Mazooma) (Scorpion 4) (set 1) + + + sc4jiggra + Jiggery Pokery (Mazooma) (Scorpion 4) (set 2) + + + sc4jiggrb + Jiggery Pokery (Mazooma) (Scorpion 4) (set 3) + + + sc4jiggrc + Jiggery Pokery (Mazooma) (Scorpion 4) (set 4) + + + sc4jive + Jive Money (PR2096) (Mazooma) (Scorpion 4) + + + sc4jivea + Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 1) + + + sc4jiveb + Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 2) + + + sc4jivec + Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 3) + + + sc4jived + Jive Money (PR2160) (Mazooma) (Scorpion 4) (set 4) + + + sc4jjc + Jumping Jack Cash (Mazooma) (Scorpion 4) (set 1) + + + sc4jjca + Jumping Jack Cash (Mazooma) (Scorpion 4) (set 2) + + + sc4jjcb + Jumping Jack Cash (Mazooma) (Scorpion 4) (set 3) + + + sc4jjcc + Jumping Jack Cash (Mazooma) (Scorpion 4) (set 4) + + + sc4jjcd + Jumping Jack Cash (Mazooma) (Scorpion 4) (set 5) + + + sc4jjce + Jumping Jack Cash (Mazooma) (Scorpion 4) (set 6) + + + sc4jjcf + Jumping Jack Cash (Mazooma) (Scorpion 4) (set 7) + + + sc4jjcg + Jumping Jack Cash (Mazooma) (Scorpion 4) (set 8) + + + sc4jjch + Jumping Jack Cash (Mazooma) (Scorpion 4) (set 9) + + + sc4jjci + Jumping Jack Cash (Mazooma) (Scorpion 4) (set 10) + + + sc4jjf + Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 1) + + + sc4jjfa + Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 2) + + + sc4jjfb + Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 3) + + + sc4jjfc + Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 1) + + + sc4jjfd + Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 2) + + + sc4jjfe + Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 3) + + + sc4jjff + Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 4) + + + sc4jjfg + Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 4) + + + sc4jjfh + Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 5) + + + sc4jjfi + Jumping Jack Flash (PR6807) (Bellfruit) (Scorpion 4) (set 6) + + + sc4jjfj + Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 5) + + + sc4jjfk + Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 6) + + + sc4jjfl + Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 7) + + + sc4jjfm + Jumping Jack Flash SP98 (PR4607) (Bellfruit) (Scorpion 4) (set 8) + + + sc4jjok + Jackpot Jokers (Bellfruit) (Scorpion 4) (set 1) + + + sc4jjoka + Jackpot Jokers (Bellfruit) (Scorpion 4) (set 2) + + + sc4jjucl + Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4jjucla + Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 1) + + + sc4jjuclb + Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4jjuclc + Jackpot Junction Club (Ferry) (Bellfruit) (Scorpion 4) (set 2) + + + sc4jjucld + Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4jjucle + Jackpot Junction Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4jjunc + Jackpot Junction (Bellfruit) (Scorpion 4) (set 1) + + + sc4jjunca + Jackpot Junction (Bellfruit) (Scorpion 4) (set 2) + + + sc4jjuncb + Jackpot Junction (Bellfruit) (Scorpion 4) (set 3) + + + sc4jjuncc + Jackpot Junction (Bellfruit) (Scorpion 4) (set 4) + + + sc4jjuncd + Jackpot Junction (Bellfruit) (Scorpion 4) (set 5) + + + sc4jjunce + Jackpot Junction (Bellfruit) (Scorpion 4) (set 6) + + + sc4jjuncf + Jackpot Junction (Bellfruit) (Scorpion 4) (set 7) + + + sc4jjuncg + Jackpot Junction (Bellfruit) (Scorpion 4) (set 8) + + + sc4jjunch + Jackpot Junction (Bellfruit) (Scorpion 4) (set 9) + + + sc4jjunci + Jackpot Junction (Bellfruit) (Scorpion 4) (set 10) + + + sc4jolly + Jolly Jousting (Qps) (Scorpion 4) (set 1) + + + sc4jollya + Jolly Jousting (Qps) (Scorpion 4) (set 2) + + + sc4juicy + Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 1) + + + sc4juicya + Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 1) + + + sc4juicyb + Juicy Jackpots Club (PR1136) (65% Ferry) (Bellfruit) (Scorpion 4) (set 2) + + + sc4juicyc + Juicy Jackpots Club (PR1123) (Bellfruit) (Scorpion 4) (set 2) + + + sc4juicyd + Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 1) + + + sc4juicye + Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 2) + + + sc4juicyf + Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 3) + + + sc4juicyg + Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (set 4) + + + sc4juicyi + Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 1) + + + sc4juicyj + Juicy Jackpots Club (PR1136) (Bellfruit) (Scorpion 4) (311 Club, set 2) + + + sc4kalei + Kaleidoscope (011) (Qps) (Scorpion 4) (set 1) + + + sc4kaleia + Kaleidoscope (041) (Qps) (Scorpion 4) (set 2) + + + sc4kaleib + Kaleidoscope (011) (Qps) (Scorpion 4) (set 3) + + + sc4kaleic + Kaleidoscope (041) (Qps) (Scorpion 4) (set 4) + + + sc4kaleid + Kaleidoscope (051) (Qps) (Scorpion 4) (set 1) + + + sc4kaleie + Kaleidoscope (051) (Qps) (Scorpion 4) (set 2) + + + sc4kkong + King Kong Cash (Mazooma) (Scorpion 4) (set 1) + + + sc4kkonga + King Kong Cash (Mazooma) (Scorpion 4) (set 2) + + + sc4kkongb + King Kong Cash (Mazooma) (Scorpion 4) (set 3) + + + sc4kkongc + King Kong Cash (Mazooma) (Scorpion 4) (set 4) + + + sc4kkongd + King Kong Cash (Mazooma) (Scorpion 4) (set 5) + + + sc4kkonge + King Kong Cash (Mazooma) (Scorpion 4) (set 6) + + + sc4kkongf + King Kong Cash (Mazooma) (Scorpion 4) (set 7) + + + sc4kkongg + King Kong Cash (Mazooma) (Scorpion 4) (set 8) + + + sc4kkongh + King Kong Cash (Mazooma) (Scorpion 4) (set 9) + + + sc4kkongi + King Kong Cash (Mazooma) (Scorpion 4) (set 10) + + + sc4kkongj + King Kong Cash (Mazooma) (Scorpion 4) (set 11) + + + sc4knok + Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 1) + + + sc4knoka + Knockout (PR7061, KOUT) (Mazooma) (Scorpion 4) (set 2) + + + sc4knokb + Knock Out (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 1) + + + sc4knokc + Knock Out (PR2057, PKOT) (Mazooma) (Scorpion 4) (set 2) + + + sc4lasv + Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 1) + + + sc4lasva + Las Vegas (Dutch) (Bellfruit) (Scorpion 4) (set 2) + + + sc4ldcas + Line Dancer Casino (Mazooma) (Scorpion 4) (set 1) + + + sc4ldcasa + Line Dancer Casino (Mazooma) (Scorpion 4) (set 2) + + + sc4ldcasb + Line Dancer Casino (Mazooma) (Scorpion 4) (set 3) + + + sc4ldcasc + Line Dancer Casino (Mazooma) (Scorpion 4) (set 4) + + + sc4ldcasd + Line Dancer Casino (Mazooma) (Scorpion 4) (set 5) + + + sc4ldcase + Line Dancer Casino (Mazooma) (Scorpion 4) (set 6) + + + sc4ldvcl + Little Devil Club (Mazooma) (Scorpion 4) + + + sc4ldvl + Little Devil (Mazooma) (Scorpion 4) (set 1) + + + sc4ldvla + Little Devil (Mazooma) (Scorpion 4) (set 2) + + + sc4ldvlb + Little Devil (Mazooma) (Scorpion 4) (set 3) + + + sc4ldvlc + Little Devil (Mazooma) (Scorpion 4) (set 4) + + + sc4leg + Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 1) + + + sc4lega + Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 2) + + + sc4legb + Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 3) + + + sc4legc + Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 4) + + + sc4legcb + Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4legcba + Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4legcbb + Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4legcbc + Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4legcbd + Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4legcbe + Who Wants To Be A Legionnaire Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4legd + Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 5) + + + sc4lege + Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 6) + + + sc4legf + Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 7) + + + sc4legg + Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 8) + + + sc4legh + Who Wants To Be A Legionnaire (Bellfruit) (Scorpion 4) (set 9) + + + sc4lined + Line Dancer (Mazooma) (Scorpion 4) (set 1) + + + sc4lineda + Line Dancer (Mazooma) (Scorpion 4) (set 2) + + + sc4linedb + Line Dancer (Mazooma) (Scorpion 4) (set 3) + + + sc4linedc + Line Dancer (Mazooma) (Scorpion 4) (set 4) + + + sc4linedd + Line Dancer Arcade (Mazooma) (Scorpion 4) (set 1) + + + sc4linede + Line Dancer Arcade (Mazooma) (Scorpion 4) (set 2) + + + sc4linedf + Line Dancer Arcade (Mazooma) (Scorpion 4) (set 3) + + + sc4linedg + Line Dancer Arcade (Mazooma) (Scorpion 4) (set 4) + + + sc4linedh + Line Dancer Arcade (Mazooma) (Scorpion 4) (set 5) + + + sc4linedi + Line Dancer Arcade (Mazooma) (Scorpion 4) (set 6) + + + sc4lions + Three Lions (Mazooma) (Scorpion 4) (set 1) + + + sc4lionsa + Three Lions (Mazooma) (Scorpion 4) (set 2) + + + sc4lionsb + Three Lions (Mazooma) (Scorpion 4) (set 3) + + + sc4lionsc + Three Lions (Mazooma) (Scorpion 4) (set 4) + + + sc4lionsd + Three Lions (Mazooma) (Scorpion 4) (set 5) + + + sc4lionse + Three Lions (Mazooma) (Scorpion 4) (set 6) + + + sc4lionsf + Three Lions (Mazooma) (Scorpion 4) (set 7) + + + sc4lir + Let It Roll (Bellfruit) (Scorpion 4) (set 1) + + + sc4lira + Let It Roll (Bellfruit) (Scorpion 4) (set 2) + + + sc4lirb + Let It Roll (Bellfruit) (Scorpion 4) (set 3) + + + sc4lirc + Let It Roll (Bellfruit) (Scorpion 4) (set 4) + + + sc4lird + Let It Roll (Bellfruit) (Scorpion 4) (set 5) + + + sc4lire + Let It Roll (Bellfruit) (Scorpion 4) (set 6) + + + sc4lirf + Let It Roll (Bellfruit) (Scorpion 4) (set 7) + + + sc4lirg + Let It Roll (Bellfruit) (Scorpion 4) (set 8) + + + sc4lirh + Let It Roll (Bellfruit) (Scorpion 4) (set 9) + + + sc4liri + Let It Roll (Bellfruit) (Scorpion 4) (set 10) + + + sc4lkbcl + Lock Buster Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4lkbcla + Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 1) + + + sc4lkbclb + Lock Buster Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4lkbclc + Lock Buster Club (Euro) (Bellfruit) (Scorpion 4) (set 2) + + + sc4lkbcld + Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 1) + + + sc4lkbcle + Lock Buster Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4lkbclf + Lock Buster Club (Ferry) (Bellfruit) (Scorpion 4) (set 2) + + + sc4lkbclg + Lock Buster Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4lkbclh + Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 1) + + + sc4lkbcli + Lock Buster Club (Bellfruit) (Scorpion 4) (311 Club, set 2) + + + sc4lockb + Lock Buster (Bellfruit) (Scorpion 4) (set 1) + + + sc4lockba + Lock Buster (Bellfruit) (Scorpion 4) (set 2) + + + sc4lockbb + Lock Buster (Bellfruit) (Scorpion 4) (set 3) + + + sc4lockbc + Lock Buster (Bellfruit) (Scorpion 4) (set 4) + + + sc4lockbd + Lock Buster (Bellfruit) (Scorpion 4) (set 5) + + + sc4lockbe + Lock Buster (Bellfruit) (Scorpion 4) (set 6) + + + sc4lockbf + Lock Buster (Bellfruit) (Scorpion 4) (set 7) + + + sc4lockbg + Lock Buster (Bellfruit) (Scorpion 4) (set 8) + + + sc4lotr2 + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 1) + + + sc4lotr2a + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 2) + + + sc4lotr2b + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 3) + + + sc4lotr2c + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 4) + + + sc4lotr2d + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 5) + + + sc4lotr2e + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 6) + + + sc4lotr2f + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 11) + + + sc4lotr2g + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 12) + + + sc4lotr2h + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 13) + + + sc4lotr2i + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 14) + + + sc4lotr2j + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 7) + + + sc4lotr2k + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 8) + + + sc4lotr2l + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 9) + + + sc4lotr2m + Lord Of The Rings - The Two Towers (Bellfruit) (Scorpion 4) (set 10) + + + sc4lotrf + Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 1) + + + sc4lotrfa + Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 2) + + + sc4lotrfb + Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 3) + + + sc4lotrfc + Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 4) + + + sc4lotrfd + Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 5) + + + sc4lotrfe + Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 6) + + + sc4lotrff + Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 7) + + + sc4lotrfg + Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 8) + + + sc4lotrr + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 1) + + + sc4lotrra + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 2) + + + sc4lotrrb + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 3) + + + sc4lotrrc + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 4) + + + sc4lotrrd + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 5) + + + sc4lotrre + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 4) (set 6) + + + sc4lotrt + Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 9) + + + sc4lotrta + Lord Of The Rings - The Fellowship Of The Ring (Bellfruit) (Scorpion 4) (set 10) + + + sc4ltr2c + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4ltr2ca + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4ltr2cb + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4ltr2cc + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4ltr2cd + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4ltr2ce + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4ltr2cf + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 7) + + + sc4ltr2cg + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 8) + + + sc4ltr2ch + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 9) + + + sc4ltr2ci + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 10) + + + sc4ltr2cj + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 11) + + + sc4ltr2ck + Lord Of The Rings - The Two Towers Club (Bellfruit) (Scorpion 4) (set 12) + + + sc4luck7 + Lucky 7s (Mazooma) (Scorpion 4) (Top Box) + + + sc4luck7a + Lucky 7s (Mazooma) (Scorpion 4) (set 1) + + + sc4luck7b + Lucky 7s (Mazooma) (Scorpion 4) (set 2) + + + sc4luck7c + Lucky 7s (Mazooma) (Scorpion 4) (set 3) + + + sc4luck7d + Lucky 7s (Mazooma) (Scorpion 4) (set 4) + + + sc4luckb + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 1) + + + sc4luckb0 + Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 6) + + + sc4luckb1 + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 23) + + + sc4luckb2 + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 24) + + + sc4luckb3 + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 25) + + + sc4luckb4 + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 26) + + + sc4luckba + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 2) + + + sc4luckbb + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 3) + + + sc4luckbc + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 4) + + + sc4luckbd + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 5) + + + sc4luckbe + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 6) + + + sc4luckbf + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 7) + + + sc4luckbg + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 8) + + + sc4luckbh + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 9) + + + sc4luckbi + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 10) + + + sc4luckbj + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 11) + + + sc4luckbk + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 12) + + + sc4luckbl + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 13) + + + sc4luckbm + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 14) + + + sc4luckbn + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 15) + + + sc4luckbo + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 16) + + + sc4luckbp + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 17) + + + sc4luckbq + Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 1) + + + sc4luckbr + Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 2) + + + sc4luckbs + Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 3) + + + sc4luckbt + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 18) + + + sc4luckbu + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 19) + + + sc4luckbv + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 20) + + + sc4luckbw + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 21) + + + sc4luckbx + Lucky Balls Casino (Bellfruit) (Scorpion 4) (set 22) + + + sc4luckby + Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 4) + + + sc4luckbz + Lucky Balls Casino Arcade (Bellfruit) (Scorpion 4) (set 5) + + + sc4m2m + Money To Money (Mazooma) (Scorpion 4) (set 1) + + + sc4m2ma + Money To Money (Mazooma) (Scorpion 4) (set 2) + + + sc4magci + Magic Circle (011) (Qps) (Scorpion 4) (set 1) + + + sc4magcia + Magic Circle (021) (Qps) (Scorpion 4) (set 1) + + + sc4magcib + Magic Circle (031) (Qps) (Scorpion 4) (set 1) + + + sc4magcic + Magic Circle (012) (Qps) (Scorpion 4) (set 1) + + + sc4magcid + Magic Circle (012) (Qps) (Scorpion 4) (set 3) + + + sc4magcie + Magic Circle (022) (Qps) (Scorpion 4) (set 1) + + + sc4magcif + Magic Circle (032) (Qps) (Scorpion 4) (set 1) + + + sc4magcig + Magic Circle (013) (Qps) (Scorpion 4) (set 1) + + + sc4magcih + Magic Circle (014) (Qps) (Scorpion 4) (set 1) + + + sc4magcii + Magic Circle (024) (Qps) (Scorpion 4) (set 1) + + + sc4magcij + Magic Circle (034) (Qps) (Scorpion 4) (set 1) + + + sc4magcik + Magic Circle (011) (Qps) (Scorpion 4) (set 2) + + + sc4magcil + Magic Circle (021) (Qps) (Scorpion 4) (set 2) + + + sc4magcim + Magic Circle (031) (Qps) (Scorpion 4) (set 2) + + + sc4magcin + Magic Circle (012) (Qps) (Scorpion 4) (set 2) + + + sc4magcio + Magic Circle (012) (Qps) (Scorpion 4) (set 4) + + + sc4magcip + Magic Circle (022) (Qps) (Scorpion 4) (set 2) + + + sc4magciq + Magic Circle (032) (Qps) (Scorpion 4) (set 2) + + + sc4magcir + Magic Circle (013) (Qps) (Scorpion 4) (set 2) + + + sc4magcis + Magic Circle (014) (Qps) (Scorpion 4) (set 2) + + + sc4magcit + Magic Circle (024) (Qps) (Scorpion 4) (set 2) + + + sc4magciu + Magic Circle (034) (Qps) (Scorpion 4) (set 2) + + + sc4magic + Magic Poundabout (Qps) (Scorpion 4) (set 1) + + + sc4magica + Magic Poundabout (Qps) (Scorpion 4) (set 2) + + + sc4magicb + Magic Poundabout (Qps) (Scorpion 4) (set 3) + + + sc4magicc + Magic Poundabout (Qps) (Scorpion 4) (set 4) + + + sc4manic + Manic Miner (Bellfruit) (Scorpion 4) (set 1) + + + sc4manica + Manic Miner (Bellfruit) (Scorpion 4) (set 2) + + + sc4manicb + Manic Miner (Bellfruit) (Scorpion 4) (set 5) + + + sc4manicc + Manic Miner (Bellfruit) (Scorpion 4) (set 6) + + + sc4manicd + Manic Miner (Bellfruit) (Scorpion 4) (set 7) + + + sc4manice + Manic Miner (Bellfruit) (Scorpion 4) (set 8) + + + sc4manicf + Manic Miner (Bellfruit) (Scorpion 4) (set 9) + + + sc4manicg + Manic Miner (Bellfruit) (Scorpion 4) (set 10) + + + sc4maxcc + Maximus Cash Club (Mazooma) (Scorpion 4) (set 1) + + + sc4maxcca + Maximus Cash Club (Mazooma) (Scorpion 4) (set 2) + + + sc4maxccb + Maximus Cash Club (Mazooma) (Scorpion 4) (set 3) + + + sc4maxccc + Maximus Cash Club (Mazooma) (Scorpion 4) (set 4) + + + sc4maxim + Maximus Cash (Mazooma) (Scorpion 4) (set 1) + + + sc4maxima + Maximus Cash (Mazooma) (Scorpion 4) (set 2) + + + sc4maximb + Maximus Cash (Mazooma) (Scorpion 4) (set 3) + + + sc4maximc + Maximus Cash (Mazooma) (Scorpion 4) (set 4) + + + sc4maximd + Maximus Cash (Mazooma) (Scorpion 4) (set 5) + + + sc4maxime + Maximus Cash (Mazooma) (Scorpion 4) (set 6) + + + sc4maximf + Maximus Cash (Mazooma) (Scorpion 4) (set 7) + + + sc4maximg + Maximus Cash (Mazooma) (Scorpion 4) (set 8) + + + sc4mbags + Money Bags (Bellfruit) (Scorpion 4) (set 1) + + + sc4mbagsa + Money Bags (Bellfruit) (Scorpion 4) (set 2) + + + sc4mbagsb + Money Bags (Bellfruit) (Scorpion 4) (set 3) + + + sc4mbagsc + Money Bags (Bellfruit) (Scorpion 4) (set 4) + + + sc4mcas + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 1) + + + sc4mcas0 + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 15) + + + sc4mcas1 + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 16) + + + sc4mcas2 + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 17) + + + sc4mcas3 + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 18) + + + sc4mcas4 + Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 3) + + + sc4mcask + Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 1) + + + sc4mcasm + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 2) + + + sc4mcasn + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 3) + + + sc4mcaso + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 4) + + + sc4mcasp + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 5) + + + sc4mcasq + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 6) + + + sc4mcasr + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 7) + + + sc4mcass + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 8) + + + sc4mcast + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 9) + + + sc4mcasu + Monopoly Casino (PR2056) (Mazooma) (Scorpion 4) (GMTB, Top Box, set 2) + + + sc4mcasv + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 10) + + + sc4mcasw + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 11) + + + sc4mcasx + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 12) + + + sc4mcasy + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 13) + + + sc4mcasz + Monopoly Casino (PR2354) (Mazooma) (Scorpion 4) (GMBU, set 14) + + + sc4mclb + Monopoly Club (Mazooma) (Scorpion 4) (set 1) + + + sc4mclba + Monopoly Club (Mazooma) (Scorpion 4) (set 2) + + + sc4mclbb + Monopoly Club (Mazooma) (Scorpion 4) (set 3) + + + sc4mclbc + Monopoly Club (Mazooma) (Scorpion 4) (set 4) + + + sc4mclbd + Monopoly Club (Mazooma) (Scorpion 4) (set 5) + + + sc4mclbe + Monopoly Club (Mazooma) (Scorpion 4) (set 6) + + + sc4mdm + Monopoly Double Money (Bellfruit) (Scorpion 4) (set 1) + + + sc4mdma + Monopoly Double Money (Bellfruit) (Scorpion 4) (set 2) + + + sc4mgr + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 1) + + + sc4mgra + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 2) + + + sc4mgrb + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 5) + + + sc4mgrc + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 6) + + + sc4mgrd + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 7) + + + sc4mgre + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 8) + + + sc4mgrf + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 9) + + + sc4mgrg + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 10) + + + sc4mgrh + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 3) + + + sc4mgri + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 4) + + + sc4mgrj + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 11) + + + sc4mgrk + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 12) + + + sc4mgrl + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 13) + + + sc4mgrm + Money Go Round Casino (Bellfruit) (Scorpion 4) (set 14) + + + sc4mhn + Monopoly Here & Now (Mazooma) (Scorpion 4) (set 1) + + + sc4mhna + Monopoly Here & Now (Mazooma) (Scorpion 4) (set 2) + + + sc4mhp + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 1) + + + sc4mhpa + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 2) + + + sc4mhpb + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 3) + + + sc4mhpc + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 4) + + + sc4mhpd + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 5) + + + sc4mhpe + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 6) + + + sc4mhpf + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 7) + + + sc4mhpg + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 8) + + + sc4mhph + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 9) + + + sc4mhpi + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 10) + + + sc4mhpj + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 11) + + + sc4mhpk + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 12) + + + sc4mhpl + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 13) + + + sc4mhpm + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 14) + + + sc4mhpn + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 15) + + + sc4mhpo + Monopoly Hot Property (Bellfruit) (Scorpion 4) (set 16) + + + sc4milja + Miljonairs Arcade (Dutch) (Bellfruit) (Scorpion 4) + + + sc4miljo + Miljonairs (Dutch) (Bellfruit) (Scorpion 4) (set 1) + + + sc4milro + Millionaires Row (Scorpion 4?) + + + sc4mmad + Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 1) + + + sc4mmada + Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 2) + + + sc4mmadb + Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 3) + + + sc4mmadc + Money Madness (PR2533) (Mazooma) (Scorpion 4) (set 4) + + + sc4mmadd + Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 5) + + + sc4mmade + Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 6) + + + sc4mmadf + Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 7) + + + sc4mmadg + Money Madness (PR0000) (Mazooma) (Scorpion 4) (set 8) + + + sc4mmb + Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 1) + + + sc4mmba + Monopoly Money Bags (Bellfruit) (Scorpion 4) (set 2) + + + sc4mmm + Mental Money Monsters (Mazooma) (Scorpion 4) (set 1) + + + sc4mmma + Mental Money Monsters (Mazooma) (Scorpion 4) (set 2) + + + sc4mmmb + Mental Money Monsters (Mazooma) (Scorpion 4) (set 3) + + + sc4mmmc + Mental Money Monsters (Mazooma) (Scorpion 4) (set 4) + + + sc4mmmd + Mental Money Monsters (Mazooma) (Scorpion 4) (set 5) + + + sc4mmme + Mental Money Monsters (Mazooma) (Scorpion 4) (set 6) + + + sc4mmmf + Mental Money Monsters (Mazooma) (Scorpion 4) (set 7) + + + sc4mmmg + Mental Money Monsters (Mazooma) (Scorpion 4) (set 8) + + + sc4mondx + Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 1) + + + sc4mondxa + Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 2) + + + sc4mondxb + Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 3) + + + sc4mondxc + Monopoly Deluxe (PR2202, MPDX 1.0) (Mazooma) (Scorpion 4) (set 4) + + + sc4mondxd + Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 1) + + + sc4mondxe + Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 3) + + + sc4mondxf + Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 4) + + + sc4mondxg + Monopoly Deluxe (PR2202, MPDX 1.1) (Mazooma) (Scorpion 4) (set 2) + + + sc4mono5 + Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 1) + + + sc4mono5a + Monopoly 5 (PR7089, MONF) (Mazooma) (Scorpion 4) (set 2) + + + sc4monoa + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 1) + + + sc4monoaa + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 2) + + + sc4monoab + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 3) + + + sc4monoac + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 4) + + + sc4monoad + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 5) + + + sc4monoae + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 6) + + + sc4monoaf + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 7) + + + sc4monoag + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 8) + + + sc4monoah + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 9) + + + sc4monoai + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 10) + + + sc4monoaj + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 11) + + + sc4monoak + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 12) + + + sc4monoal + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 13) + + + sc4monoam + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 14) + + + sc4monoan + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 15) + + + sc4monoao + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 16) + + + sc4monoap + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 17) + + + sc4monoaq + Monopoly Triple (PR2122, MOTR) (Mazooma) (Scorpion 4) (set 18) + + + sc4monob + Monopoly (Bellfruit) (Scorpion 4) (set 1) + + + sc4monoba + Monopoly (Bellfruit) (Scorpion 4) (set 2) + + + sc4monobb + Monopoly (Bellfruit) (Scorpion 4) (set 3) + + + sc4monobc + Monopoly (Bellfruit) (Scorpion 4) (set 4) + + + sc4monobd + Monopoly (Bellfruit) (Scorpion 4) (set 5) + + + sc4monobe + Monopoly (Bellfruit) (Scorpion 4) (set 6) + + + sc4monobf + Monopoly (Bellfruit) (Scorpion 4) (set 7) + + + sc4monobg + Monopoly (Bellfruit) (Scorpion 4) (set 8) + + + sc4monobh + Monopoly (Bellfruit) (Scorpion 4) (set 9) + + + sc4monobi + Monopoly (Bellfruit) (Scorpion 4) (set 10) + + + sc4monobj + Monopoly (Bellfruit) (Scorpion 4) (set 11) + + + sc4monobk + Monopoly (Bellfruit) (Scorpion 4) (set 12) + + + sc4monobl + Monopoly (Bellfruit) (Scorpion 4) (set 13) + + + sc4monobm + Monopoly (Bellfruit) (Scorpion 4) (set 14) + + + sc4monod + Monopoly (Mazooma) [German] (Scorpion 4) (set 1) + + + sc4monoda + Monopoly (Mazooma) [German] (Scorpion 4) (set 2) + + + sc4monodb + Monopoly (Mazooma) [German] (Scorpion 4) (set 3) + + + sc4monog + Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 5) + + + sc4monoga + Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 6) + + + sc4monop + Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 1) + + + sc4monopa + Monopoly Triple (PR2056, TBOX) (Mazooma) (Scorpion 4) (Top Box, set 2) + + + sc4monot + Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 1) + + + sc4monota + Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 2) + + + sc4monotb + Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 3) + + + sc4monotc + Monopoly TTT (PR2133) (Mazooma) (Scorpion 4) (set 4) + + + sc4monsp + Money Spinner (Dutch) (Bellfruit) (Scorpion 4) + + + sc4mont + Montego Pay (Qps) (Scorpion 4) (set 1) + + + sc4monta + Montego Pay (Qps) (Scorpion 4) (set 2) + + + sc4montb + Montego Pay (Qps) (Scorpion 4) (set 3) + + + sc4montc + Montego Pay (Qps) (Scorpion 4) (set 4) + + + sc4montd + Montego Pay (Qps) (Scorpion 4) (set 5) + + + sc4monte + Montego Pay (Qps) (Scorpion 4) (set 6) + + + sc4montf + Montego Pay (Qps) (Scorpion 4) (set 7) + + + sc4montg + Montego Pay (Qps) (Scorpion 4) (set 8) + + + sc4month + Montego Pay (Qps) (Scorpion 4) (set 9) + + + sc4monti + Montego Pay (Qps) (Scorpion 4) (set 10) + + + sc4motor + Motorway Mania (Bellfruit) (Scorpion 4) (set 1) + + + sc4motora + Motorway Mania (Bellfruit) (Scorpion 4) (set 2) + + + sc4motorb + Motorway Mania (Bellfruit) (Scorpion 4) (set 3) + + + sc4motorc + Motorway Mania (Bellfruit) (Scorpion 4) (set 4) + + + sc4motord + Motorway Mania (Bellfruit) (Scorpion 4) (set 5) + + + sc4motore + Motorway Mania (Bellfruit) (Scorpion 4) (set 6) + + + sc4motorf + Motorway Mania (Bellfruit) (Scorpion 4) (set 7) + + + sc4motorg + Motorway Mania (Bellfruit) (Scorpion 4) (set 8) + + + sc4motorh + Motorway Mania (Bellfruit) (Scorpion 4) (set 9) + + + sc4mou + Move On Up (Qps) (Scorpion 4) (set 1) + + + sc4moua + Move On Up (Qps) (Scorpion 4) (set 2) + + + sc4moub + Move On Up (Qps) (Scorpion 4) (set 3) + + + sc4mowow + Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 1) + + + sc4mowowa + Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 2) + + + sc4mowowb + Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 3) + + + sc4mowowc + Monopoly Wheel Of Wealth (Mazooma) (PR2118) (Scorpion 4) (set 4) + + + sc4mr2r + Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 1) + + + sc4mr2ra + Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 2) + + + sc4mr2rb + Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 3) + + + sc4mr2rc + Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 4) + + + sc4mr2rd + Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 5) + + + sc4mr2re + Monopoly Road To Riches (Mazooma) (Scorpion 4) (set 6) + + + sc4mrh + Monopoly Red Hot (Mazooma) (Scorpion 4) (set 1) + + + sc4mrha + Monopoly Red Hot (Mazooma) (Scorpion 4) (set 2) + + + sc4mrhb + Monopoly Red Hot (Mazooma) (Scorpion 4) (set 3) + + + sc4mrhc + Monopoly Red Hot (Mazooma) (Scorpion 4) (set 4) + + + sc4mrhd + Monopoly Red Hot (Mazooma) (Scorpion 4) (set 5) + + + sc4mrhe + Monopoly Red Hot (Mazooma) (Scorpion 4) (set 6) + + + sc4msclb + Money Spinner Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4msclba + Money Spinner Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4msclbb + Money Spinner Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4msclbc + Money Spinner Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4msclbd + Money Spinner Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4msclbe + Money Spinner Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4msclbf + Money Spinner Club (Bellfruit) (Scorpion 4) (set 7) + + + sc4msclbg + Money Spinner Club (Bellfruit) (Scorpion 4) (set 8) + + + sc4mspid + Casino Money Spider (Bellfruit) (Scorpion 4) (set 1) + + + sc4mspida + Casino Money Spider (Bellfruit) (Scorpion 4) (set 2) + + + sc4mspidb + Casino Money Spider (Bellfruit) (Scorpion 4) (set 3) + + + sc4mspidc + Casino Money Spider (Bellfruit) (Scorpion 4) (set 4) + + + sc4mspidd + Casino Money Spider (Bellfruit) (Scorpion 4) (set 5) + + + sc4mspide + Casino Money Spider (Bellfruit) (Scorpion 4) (set 6) + + + sc4mspidf + Casino Money Spider (Bellfruit) (Scorpion 4) (set 7) + + + sc4mspidg + Casino Money Spider (Bellfruit) (Scorpion 4) (set 8) + + + sc4mspidh + Casino Money Spider (Bellfruit) (Scorpion 4) (set 13) + + + sc4mspidi + Casino Money Spider (Bellfruit) (Scorpion 4) (set 14) + + + sc4mspidj + Casino Money Spider (Bellfruit) (Scorpion 4) (set 9) + + + sc4mspidk + Casino Money Spider (Bellfruit) (Scorpion 4) (set 10) + + + sc4mspidl + Casino Money Spider (Bellfruit) (Scorpion 4) (set 11) + + + sc4mspidm + Casino Money Spider (Bellfruit) (Scorpion 4) (set 12) + + + sc4mtb + Money To Burn (Bellfruit) (Scorpion 4) (set 1) + + + sc4mtba + Money To Burn (Bellfruit) (Scorpion 4) (set 2) + + + sc4mtbb + Money To Burn (Bellfruit) (Scorpion 4) (set 3) + + + sc4mtbc + Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 1) + + + sc4mtbcl + Money To Burn Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4mtbcla + Money To Burn Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4mtbclb + Money To Burn Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4mtbclc + Money To Burn Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4mtbcld + Money To Burn Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4mtbcle + Money To Burn Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4mtbclf + Money To Burn Club (Bellfruit) (Scorpion 4) (set 7) + + + sc4mtbclg + Money To Burn Club (Bellfruit) (Scorpion 4) (set 8) + + + sc4mtbclh + Money To Burn Club (Bellfruit) (Scorpion 4) (set 9) + + + sc4mtbcli + Money To Burn Club (Bellfruit) (Scorpion 4) (set 10) + + + sc4mtbclj + Money To Burn Club (Bellfruit) (Scorpion 4) (set 11) + + + sc4mtbclk + Money To Burn Club (Bellfruit) (Scorpion 4) (set 12) + + + sc4mtbcll + Money To Burn Club (Bellfruit) (Scorpion 4) (set 13) + + + sc4mtbclm + Money To Burn Club (Bellfruit) (Scorpion 4) (set 14) + + + sc4mtbcln + Money To Burn Club (Bellfruit) (Scorpion 4) (set 15) + + + sc4mtbclo + Money To Burn Club (Bellfruit) (Scorpion 4) (set 16) + + + sc4mtbd + Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 2) + + + sc4mtbe + Money To Burn (Bellfruit) (Scorpion 4) (set 4) + + + sc4mtbf + Money To Burn (Bellfruit) (Scorpion 4) (set 5) + + + sc4mtbg + Money To Burn (Bellfruit) (Scorpion 4) (set 6) + + + sc4mtbh + Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 3) + + + sc4mtbi + Money To Burn SP98 (Bellfruit) (Scorpion 4) (set 4) + + + sc4mtbj + Money To Burn (Bellfruit) (Scorpion 4) (set 7) + + + sc4mwwtb + Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 1) + + + sc4mwwtba + Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 2) + + + sc4mwwtbb + Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 3) + + + sc4mwwtbc + Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 4) + + + sc4mwwtbd + Monopoly Wheel Of Wealth (Mazooma) (PR2389, Top Box) (Scorpion 4) (set 5) + + + sc4nmare + A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 1) + + + sc4nmarea + A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 2) + + + sc4nmareb + A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 3) + + + sc4nmarec + A Nightmare On Elm Street (Bellfruit) (Scorpion 4) (set 4) + + + sc4nmtj + Never Mind The Jackpots (Mazooma) (Scorpion 4) (011) + + + sc4nmtja + Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 1) + + + sc4nmtjb + Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 1) + + + sc4nmtjc + Never Mind The Jackpots (Mazooma) (Scorpion 4) (014, set 2) + + + sc4nmtjd + Never Mind The Jackpots (Mazooma) (Scorpion 4) (044, set 2) + + + sc4nudit + Nudge It (Mazooma) (Scorpion 4) (set 1) + + + sc4nudita + Nudge It (Mazooma) (Scorpion 4) (set 2) + + + sc4nuditb + Nudge It (Mazooma) (Scorpion 4) (set 3) + + + sc4nunsm + Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 1) + + + sc4nunsmb + Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 2) + + + sc4nunsmc + Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 3) + + + sc4nunsmd + Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 4) + + + sc4nunsme + Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 5) + + + sc4nunsmf + Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 6) + + + sc4nunsmg + Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 7) + + + sc4nunsmh + Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 8) + + + sc4nunsmi + Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 9) + + + sc4nunsmj + Nuns 'n' Roses (Mazooma) (Scorpion 4) (set 10) + + + sc4onup + On The Up (Mazooma) (Scorpion 4) (set 1) + + + sc4onupa + On The Up (Mazooma) (Scorpion 4) (set 2) + + + sc4opses + Open Sesame (Bellfruit) (Scorpion 4) (set 1) + + + sc4opsesa + Open Sesame (Bellfruit) (Scorpion 4) (set 2) + + + sc4outlw + Outlaw (Bellfruit) (Scorpion 4) (set 1) + + + sc4outlwa + Outlaw (Bellfruit) (Scorpion 4) (set 2) + + + sc4outlwb + Outlaw (Bellfruit) (Scorpion 4) (set 3) + + + sc4outlwc + Outlaw (Bellfruit) (Scorpion 4) (set 4) + + + sc4oyf + Off Your Face (Bellfruit) (Scorpion 4) (set 1) + + + sc4oyfa + Off Your Face (Bellfruit) (Scorpion 4) (set 2) + + + sc4paccl + Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 1) + + + sc4paccla + Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 2) + + + sc4pacclb + Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 3) + + + sc4pacclc + Pac Man Club (PR2018, CPAC) (Mazooma) (Scorpion 4) (set 4) + + + sc4paccs + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 1) + + + sc4paccsa + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 2) + + + sc4paccsb + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 3) + + + sc4paccsc + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 4) + + + sc4paccsd + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 5) + + + sc4paccse + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 6) + + + sc4paccsf + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 7) + + + sc4paccsg + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 8) + + + sc4paccsh + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 12) + + + sc4paccsi + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 13) + + + sc4paccsj + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 9) + + + sc4paccsk + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 10) + + + sc4paccsl + Pac Man Casino (PR7049, PACL) (Mazooma) (Scorpion 4) (set 11) + + + sc4pacmn + Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 1) + + + sc4pacmna + Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 2) + + + sc4pacmnb + Pac Man (PR7026, PMAN) (Mazooma) (Scorpion 4) (set 3) + + + sc4pacpl + Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 1) + + + sc4pacpla + Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 2) + + + sc4pacplb + Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 3) + + + sc4pacplc + Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 4) + + + sc4pacpld + Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 5) + + + sc4pacple + Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 6) + + + sc4pacplf + Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 7) + + + sc4pacplg + Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 8) + + + sc4pacplh + Pac Man Plus (PR7058, PACP) (Mazooma) (Scorpion 4) (set 9) + + + sc4pacqp + Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 1) + + + sc4pacqpa + Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 2) + + + sc4pacqpb + Pac Man (PR7072, QPAC) (QPS) (Scorpion 4) (set 3) + + + sc4party + Party Time (German) (PR7151, GPTM) (Nova) (Scorpion 4) + + + sc4paytm + Pay Time (Dutch) (Bellfruit) (Scorpion 4) + + + sc4pen1 + Public Enemy No1 (Bellfruit) (Scorpion 4) (set 1) + + + sc4pen1a + Public Enemy No1 (Bellfruit) (Scorpion 4) (set 2) + + + sc4pen1b + Public Enemy No1 (Bellfruit) (Scorpion 4) (set 3) + + + sc4pen1c + Public Enemy No1 (Bellfruit) (Scorpion 4) (set 4) + + + sc4pen1d + Public Enemy No1 (Bellfruit) (Scorpion 4) (set 5) + + + sc4pglcl + Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4pglcla + Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4pglclb + Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4pglclc + Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4pglcld + Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4pglcle + Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4pglclf + Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 7) + + + sc4pglclg + Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 8) + + + sc4pglclh + Pharaoh's Gold Club (Bellfruit) (Scorpion 4) (set 9) + + + sc4pglcs + Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 1) + + + sc4pglcsa + Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 2) + + + sc4pglcsb + Pharaoh's Gold Casino (Dutch) (Bellfruit) (Scorpion 4) (set 3) + + + sc4pgold + Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 1) + + + sc4pgolda + Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 2) + + + sc4pgoldb + Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 3) + + + sc4pgoldc + Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 4) + + + sc4pgoldd + Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 5) + + + sc4pgoldf + Pharaoh's Gold (Bellfruit) (Scorpion 4) (set 6) + + + sc4pipe + Piping Hot (Mazooma) (Scorpion 4) (set 1) + + + sc4pipea + Piping Hot (Mazooma) (Scorpion 4) (set 2) + + + sc4pir + The Prize Is Right (Bellfruit) (Scorpion 4) (set 1) + + + sc4pira + The Prize Is Right (Bellfruit) (Scorpion 4) (set 2) + + + sc4pirb + The Prize Is Right (Bellfruit) (Scorpion 4) (set 3) + + + sc4pirc + The Prize Is Right (Bellfruit) (Scorpion 4) (set 4) + + + sc4pird + The Prize Is Right (Bellfruit) (Scorpion 4) (set 5) + + + sc4pire + The Prize Is Right (Bellfruit) (Scorpion 4) (set 6) + + + sc4pirf + The Prize Is Right (Bellfruit) (Scorpion 4) (set 7) + + + sc4pirg + The Prize Is Right (Bellfruit) (Scorpion 4) (set 8) + + + sc4plumb + Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 1) + + + sc4plumba + Plumb Crazy Club (413) (Qps) (Scorpion 4) (set 2) + + + sc4plumbb + Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 1) + + + sc4plumbc + Plumb Crazy Club (411) (Qps) (Scorpion 4) (set 2) + + + sc4plumbd + Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 1) + + + sc4plumbe + Plumb Crazy Club (412) (Qps) (Scorpion 4) (set 2) + + + sc4pmani + Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 1) + + + sc4pmania + Pac Mania (PR2031, ANIA) (Mazooma) (Scorpion 4) (set 2) + + + sc4po8 + Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 1) + + + sc4po8a + Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 1) + + + sc4po8b + Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 2) + + + sc4po8c + Pieces Of Eight (011) (Qps) (Scorpion 4) (set 1) + + + sc4po8d + Pieces Of Eight (041) (Qps) (Scorpion 4) (set 1) + + + sc4po8e + Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 2) + + + sc4po8f + Pieces Of Eight (V1.0) (Qps) (Scorpion 4) (set 3) + + + sc4po8g + Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 3) + + + sc4po8h + Pieces Of Eight (V1.1) (Qps) (Scorpion 4) (set 4) + + + sc4po8i + Pieces Of Eight (012) (Qps) (Scorpion 4) (set 1) + + + sc4po8j + Pieces Of Eight (042) (Qps) (Scorpion 4) (set 1) + + + sc4po8k + Pieces Of Eight (012) (Qps) (Scorpion 4) (set 2) + + + sc4po8l + Pieces Of Eight (042) (Qps) (Scorpion 4) (set 2) + + + sc4po8m + Pieces Of Eight (011) (Qps) (Scorpion 4) (set 2) + + + sc4po8n + Pieces Of Eight (041) (Qps) (Scorpion 4) (set 2) + + + sc4pog + Pots Of Gold (Bellfruit) (Scorpion 4) (set 1) + + + sc4poga + Pots Of Gold (Bellfruit) (Scorpion 4) (set 2) + + + sc4pogb + Pots Of Gold (Bellfruit) (Scorpion 4) (set 3) + + + sc4pogbl + Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4pogbla + Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4pogblb + Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4pogblc + Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4pogbld + Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4pogble + Pots Of Gold Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4pogc + Pots Of Gold (Bellfruit) (Scorpion 4) (set 4) + + + sc4pogd + Pots Of Gold (Bellfruit) (Scorpion 4) (set 5) + + + sc4poge + Pots Of Gold (Bellfruit) (Scorpion 4) (set 6) + + + sc4pogf + Pots Of Gold (Bellfruit) (Scorpion 4) (set 7) + + + sc4pogg + Pots Of Gold (Bellfruit) (Scorpion 4) (set 8) + + + sc4pogh + Pots Of Gold (Bellfruit) (Scorpion 4) (set 9) + + + sc4pogi + Pots Of Gold (Bellfruit) (Scorpion 4) (set 10) + + + sc4polem + Pole Position (Mazooma) (Scorpion 4) (set 1) + + + sc4polema + Pole Position (Mazooma) (Scorpion 4) (set 2) + + + sc4polemb + Pole Position (Mazooma) (Scorpion 4) (set 3) + + + sc4polemc + Pole Position (Mazooma) (Scorpion 4) (set 4) + + + sc4polemd + Pole Position (Mazooma) (Scorpion 4) (set 5) + + + sc4polen + Pole Position (German) (PR7012, GPOS) (Nova) (Scorpion 4) + + + sc4polic + Police Squid (V1.0) (Qps) (Scorpion 4) (set 1) + + + sc4polica + Police Squid (V2.0) (Qps) (Scorpion 4) (set 1) + + + sc4policb + Police Squid (V1.0) (Qps) (Scorpion 4) (set 2) + + + sc4policc + Police Squid (V2.0) (Qps) (Scorpion 4) (set 2) + + + sc4pony + Pony Express (Bellfruit) (Scorpion 4) (set 1) + + + sc4ponya + Pony Express (Bellfruit) (Scorpion 4) (set 2) + + + sc4ponyb + Pony Express (Bellfruit) (Scorpion 4) (set 3) + + + sc4ponyc + Pony Express (Bellfruit) (Scorpion 4) (set 4) + + + sc4ponyd + Pony Express (Bellfruit) (Scorpion 4) (set 5) + + + sc4ponye + Pony Express (Bellfruit) (Scorpion 4) (set 6) + + + sc4popey + Popeye (Mazooma) (Scorpion 4) (set 1) + + + sc4popeya + Popeye (Mazooma) (Scorpion 4) (set 2) + + + sc4popeyb + Popeye (Mazooma) (Scorpion 4) (set 3) + + + sc4popeyc + Popeye (Mazooma) (Scorpion 4) (set 4) + + + sc4popeyd + Popeye (Mazooma) (Scorpion 4) (set 5) + + + sc4popeye + Popeye (Mazooma) (Scorpion 4) (set 6) + + + sc4potp + Pick Of The Pack (Bellfruit) (Scorpion 4) (set 1) + + + sc4potpa + Pick Of The Pack (Bellfruit) (Scorpion 4) (set 2) + + + sc4potsh + Pot Shot (Qps) (Scorpion 4) (set 1) + + + sc4potsha + Pot Shot (Qps) (Scorpion 4) (set 2) + + + sc4pp + Pink Panther (Mazooma) (Scorpion 4) (set 1) + + + sc4ppa + Pink Panther (Mazooma) (Scorpion 4) (set 2) + + + sc4ppb + Pink Panther (Mazooma) (Scorpion 4) (set 3) + + + sc4ppc + Pink Panther (Mazooma) (Scorpion 4) (set 4) + + + sc4ppclb + Pink Panther Club (411) (Qps) (Scorpion 4) (set 1) + + + sc4ppclba + Pink Panther Club (412) (Qps) (Scorpion 4) (set 1) + + + sc4ppclbb + Pink Panther Club (411) (Qps) (Scorpion 4) (set 2) + + + sc4ppclbc + Pink Panther Club (412) (Qps) (Scorpion 4) (set 2) + + + sc4ppcr + Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 1) + + + sc4ppcra + Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 2) + + + sc4ppcrb + Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 3) + + + sc4ppcrd + Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 4) + + + sc4ppcre + Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 5) + + + sc4ppcrf + Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 6) + + + sc4ppcrg + Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 7) + + + sc4ppcrh + Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 8) + + + sc4ppcri + Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 9) + + + sc4ppcrj + Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 4) (set 10) + + + sc4ppcrtb + Pink Panther Clouseau's Revenge Top Box (Mazooma) (Scorpion 4) + + + sc4ppctc + Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 1) + + + sc4ppctca + Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 2) + + + sc4ppctcb + Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 3) + + + sc4ppctcc + Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 4) + + + sc4ppctcd + Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 5) + + + sc4ppctce + Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 6) + + + sc4ppctcf + Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 7) + + + sc4ppctcg + Pink Panther Crack The Code (Bellfruit) (Scorpion 4) (set 8) + + + sc4ppd + Pink Panther (Mazooma) (Scorpion 4) (set 5) + + + sc4ppdym + Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 1) + + + sc4ppdymb + Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 2) + + + sc4ppdymc + Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 3) + + + sc4ppdymd + Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 4) + + + sc4ppdymf + Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 5) + + + sc4ppdymg + Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 6) + + + sc4ppdymh + Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 7) + + + sc4ppdymi + Pink Panther Double Your Money (Mazooma) (Scorpion 4) (set 8) + + + sc4ppdymtb + Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 1) + + + sc4ppdymtba + Pink Panther Double Your Money Top Box (Mazooma) (Scorpion 4) (set 2) + + + sc4ppsag + Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 1) + + + sc4ppsaga + Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 2) + + + sc4ppsagb + Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 3) + + + sc4ppsagc + Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 4) + + + sc4ppsagd + Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 5) + + + sc4ppsage + Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 6) + + + sc4ppsagf + Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 7) + + + sc4ppsagg + Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 8) + + + sc4ppsagh + Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 9) + + + sc4ppsagi + Pink Panther Strikes Again (Mazooma) (Scorpion 4) (set 10) + + + sc4pstat + Paystation (V2.0) (Qps) (Scorpion 4) (set 1) + + + sc4pstata + Paystation (V2.1) (Qps) (Scorpion 4) (set 1) + + + sc4pstatb + Paystation (V2.0) (Qps) (Scorpion 4) (set 2) + + + sc4pstatc + Paystation (V2.1) (Qps) (Scorpion 4) (set 2) + + + sc4pstatd + Paystation (V2.2) (Qps) (Scorpion 4) + + + sc4pstate + Paystation (V2.3) (Qps) (Scorpion 4) + + + sc4pstatf + Paystation (V011) (Qps) (Scorpion 4) (set 1) + + + sc4pstatg + Paystation (V041) (Qps) (Scorpion 4) (set 1) + + + sc4pstath + Paystation (V4.0) (Qps) (Scorpion 4) (set 1) + + + sc4pstati + Paystation (V011) (Qps) (Scorpion 4) (set 2) + + + sc4pstatj + Paystation (V041) (Qps) (Scorpion 4) (set 2) + + + sc4pstatm + Paystation (V4.0) (Qps) (Scorpion 4) (set 2) + + + sc4pstatn + Paystation (V012) (Qps) (Scorpion 4) (set 1) + + + sc4pstato + Paystation (V042) (Qps) (Scorpion 4) (set 1) + + + sc4pstatp + Paystation (V012) (Qps) (Scorpion 4) (set 2) + + + sc4pstatq + Paystation (V042) (Qps) (Scorpion 4) (set 2) + + + sc4pwcrz + Power Crazy (Bellfruit) (Scorpion 4) (set 1) + + + sc4pwcrza + Power Crazy (Bellfruit) (Scorpion 4) (set 2) + + + sc4pwcrzb + Power Crazy (Bellfruit) (Scorpion 4) (set 3) + + + sc4pwcrzc + Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 1) + + + sc4pwcrzd + Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 2) + + + sc4pwcrze + Power Crazy (Bellfruit) (Scorpion 4) (set 4) + + + sc4pwcrzf + Power Crazy (Bellfruit) (Scorpion 4) (set 5) + + + sc4pwcrzg + Power Crazy (Bellfruit) (Scorpion 4) (set 6) + + + sc4pwcrzh + Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 3) + + + sc4pwcrzi + Power Crazy SP98 (Bellfruit) (Scorpion 4) (set 4) + + + sc4pwrbl + Powerball (Bellfruit) (Scorpion 4) (set 1) + + + sc4pwrbla + Powerball (Bellfruit) (Scorpion 4) (set 2) + + + sc4pwrbq + Power Ball (Qps) (Scorpion 4) (set 1) + + + sc4pwrbqa + Power Ball (Qps) (Scorpion 4) (set 2) + + + sc4pwrpl + Power Play (Mazooma) (Scorpion 4) (set 1) + + + sc4pwrpla + Power Play (Mazooma) (Scorpion 4) (set 2) + + + sc4pwrplb + Power Play (Mazooma) (Scorpion 4) (set 3) + + + sc4pwrplc + Power Play (Mazooma) (Scorpion 4) (set 4) + + + sc4pwrsg + Power Surge (Qps) (Scorpion 4) (set 1) + + + sc4pwrsga + Power Surge (Qps) (Scorpion 4) (set 2) + + + sc4pwrsgb + Power Surge (Qps) (Scorpion 4) (set 3) + + + sc4pwrsgc + Power Surge (Qps) (Scorpion 4) (set 4) + + + sc4qmodo + Quazzi Mo' Dough (Qps) (Scorpion 4) (set 1) + + + sc4qmodoa + Quazzi Mo' Dough (Qps) (Scorpion 4) (set 2) + + + sc4qmodob + Quazzi Mo' Dough (Qps) (Scorpion 4) (set 3) + + + sc4qmodoc + Quazzi Mo' Dough (Qps) (Scorpion 4) (set 4) + + + sc4qmodod + Quazzi Mo' Dough (Qps) (Scorpion 4) (set 5) + + + sc4quart + Quaterback (Mazooma) (Scorpion 4) (set 1) + + + sc4quarta + Quaterback (Mazooma) (Scorpion 4) (set 2) + + + sc4quartb + Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 1) + + + sc4quartc + Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 1) + + + sc4quartd + Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 2) + + + sc4quarte + Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 2) + + + sc4quartf + Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 3) + + + sc4quartg + Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 4) + + + sc4quarth + Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 5) + + + sc4quarti + Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 3) + + + sc4quartj + Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 6) + + + sc4quartk + Quaterback (PR2072) (Italian) (Mazooma) (Scorpion 4) (set 4) + + + sc4quartl + Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 7) + + + sc4quartm + Quaterback (PR2064) (German) (Mazooma) (Scorpion 4) (set 8) + + + sc4quidr + Quid Rock (Qps) (Scorpion 4) (set 1) + + + sc4quidra + Quid Rock (Qps) (Scorpion 4) (set 2) + + + sc4quidrb + Quid Rock (Qps) (Scorpion 4) (set 3) + + + sc4quidrc + Quid Rock (Qps) (Scorpion 4) (set 4) + + + sc4quidv + Quid Vicious (Mazooma) (Scorpion 4) (set 1) + + + sc4quidva + Quid Vicious (Mazooma) (Scorpion 4) (set 2) + + + sc4quidvb + Quid Vicious (Mazooma) (Scorpion 4) (set 3) + + + sc4quidvc + Quid Vicious (Mazooma) (Scorpion 4) (set 4) + + + sc4r2r + Reel To Reel (Mazooma) (Scorpion 4) (set 1) + + + sc4r2ra + Reel To Reel (Mazooma) (Scorpion 4) (set 2) + + + sc4r2rb + Reel To Reel (Mazooma) (Scorpion 4) (set 3) + + + sc4r2rc + Reel To Reel (Mazooma) (Scorpion 4) (set 4) + + + sc4r66 + Route 66 (Mazooma) (Scorpion 4) + + + sc4rbank + Royle Banker (Bellfruit) (Scorpion 4) (set 1) + + + sc4rbanka + Royle Banker (Bellfruit) (Scorpion 4) (set 2) + + + sc4rbankb + Royle Banker (Bellfruit) (Scorpion 4) (set 3) + + + sc4rbankc + Royle Banker (Bellfruit) (Scorpion 4) (set 4) + + + sc4rdrag + Red Dragon (011) (Qps) (Scorpion 4) (set 1) + + + sc4rdraga + Red Dragon (011) (Qps) (Scorpion 4) (set 2) + + + sc4rdragc + Red Dragon (021) (Qps) (Scorpion 4) (set 1) + + + sc4rdragf + Red Dragon (021) (Qps) (Scorpion 4) (set 2) + + + sc4rdrcl + Red Dragon Club (411) (Qps) (Scorpion 4) (set 1) + + + sc4rdrcla + Red Dragon Club (412) (Qps) (Scorpion 4) + + + sc4rdrclb + Red Dragon Club (411) (Qps) (Scorpion 4) (set 2) + + + sc4redad + Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 1) + + + sc4redada + Red Alert (Dutch) (Bellfruit) (Scorpion 4) (set 2) + + + sc4redsq + Red Square (Mazooma) (Scorpion 4) (set 1) + + + sc4redsqa + Red Square (Mazooma) (Scorpion 4) (set 2) + + + sc4redsqb + Red Square (Mazooma) (Scorpion 4) (set 3) + + + sc4redsqc + Red Square (Mazooma) (Scorpion 4) (set 4) + + + sc4relcz + Reely Crazy (Bellfruit) (Scorpion 4) (set 1) + + + sc4relcza + Reely Crazy (Bellfruit) (Scorpion 4) (set 2) + + + sc4relczb + Reely Crazy (Bellfruit) (Scorpion 4) (set 3) + + + sc4relczc + Reely Crazy (Bellfruit) (Scorpion 4) (set 4) + + + sc4revo + Revolver (Mazooma) (Scorpion 4) (set 1) + + + sc4revoa + Revolver (Mazooma) (Scorpion 4) (set 2) + + + sc4revob + Revolver (Mazooma) (Scorpion 4) (set 3) + + + sc4revoc + Revolver (Mazooma) (Scorpion 4) (set 4) + + + sc4revod + Revolver (Mazooma) (Scorpion 4) (set 5) + + + sc4revoe + Revolver (Mazooma) (Scorpion 4) (set 6) + + + sc4rhx + Red Hot X (Mazooma) (Scorpion 4) (set 1) + + + sc4rhxa + Red Hot X (Mazooma) (Scorpion 4) (set 2) + + + sc4rhxb + Red Hot X (Mazooma) (Scorpion 4) (set 9) + + + sc4rhxc + Red Hot X (Mazooma) (Scorpion 4) (set 10) + + + sc4rhxcl + Red Hot X Club (Mazooma) (Scorpion 4) (set 1) + + + sc4rhxcla + Red Hot X Club (Mazooma) (Scorpion 4) (set 2) + + + sc4rhxclb + Red Hot X Club (Mazooma) (Scorpion 4) (set 3) + + + sc4rhxclc + Red Hot X Club (Mazooma) (Scorpion 4) (set 4) + + + sc4rhxcs + Red Hot X Casino (Mazooma) (Scorpion 4) (set 1) + + + sc4rhxcsa + Red Hot X Casino (Mazooma) (Scorpion 4) (set 2) + + + sc4rhxcsb + Red Hot X Casino (Mazooma) (Scorpion 4) (set 3) + + + sc4rhxcsc + Red Hot X Casino (Mazooma) (Scorpion 4) (set 4) + + + sc4rhxcsd + Red Hot X Casino (Mazooma) (Scorpion 4) (set 5) + + + sc4rhxcse + Red Hot X Casino (Mazooma) (Scorpion 4) (set 6) + + + sc4rhxd + Red Hot X (Mazooma) (Scorpion 4) (set 3) + + + sc4rhxe + Red Hot X (Mazooma) (Scorpion 4) (set 4) + + + sc4rhxf + Red Hot X (Mazooma) (Scorpion 4) (set 11) + + + sc4rhxg + Red Hot X (Mazooma) (Scorpion 4) (set 12) + + + sc4rhxh + Red Hot X (Mazooma) (Scorpion 4) (set 13) + + + sc4rhxi + Red Hot X (Mazooma) (Scorpion 4) (set 14) + + + sc4rhxj + Red Hot X (Mazooma) (Scorpion 4) (set 5) + + + sc4rhxk + Red Hot X (Mazooma) (Scorpion 4) (set 6) + + + sc4rhxl + Red Hot X (Mazooma) (Scorpion 4) (set 7) + + + sc4rhxm + Red Hot X (Mazooma) (Scorpion 4) (set 8) + + + sc4rhxn + Red Hot X (Mazooma) (Scorpion 4) (set 15) + + + sc4rhxo + Red Hot X (Mazooma) (Scorpion 4) (set 16) + + + sc4rhxp + Red Hot X (Mazooma) (Scorpion 4) (set 17) + + + sc4rhxq + Red Hot X (Mazooma) (Scorpion 4) (set 18) + + + sc4rhxr + Red Hot X (Mazooma) (Scorpion 4) (set 19) + + + sc4rhxs + Red Hot X (Mazooma) (Scorpion 4) (set 20) + + + sc4rhxt + Red Hot X (Mazooma) (Scorpion 4) (set 21) + + + sc4rhxu + Red Hot X (Mazooma) (Scorpion 4) (set 22) + + + sc4rhxv + Red Hot X (Mazooma) (Scorpion 4) (set 23) + + + sc4rhxw + Red Hot X (Mazooma) (Scorpion 4) (set 24) + + + sc4rich + Rich Geezer (Bellfruit) (Scorpion 4) (set 1) + + + sc4richa + Rich Geezer (Bellfruit) (Scorpion 4) (set 2) + + + sc4richb + Rich Geezer (Bellfruit) (Scorpion 4) (set 3) + + + sc4richc + Rich Geezer (Bellfruit) (Scorpion 4) (set 4) + + + sc4richd + Rich Geezer (Bellfruit) (Scorpion 4) (set 5) + + + sc4riche + Rich Geezer (Bellfruit) (Scorpion 4) (set 6) + + + sc4richf + Rich Geezer (Bellfruit) (Scorpion 4) (set 7) + + + sc4richg + Rich Geezer (Bellfruit) (Scorpion 4) (set 8) + + + sc4richh + Rich Geezer (Bellfruit) (Scorpion 4) (set 9) + + + sc4richi + Rich Geezer (Bellfruit) (Scorpion 4) (set 10) + + + sc4richj + Rich Geezer (Bellfruit) (Scorpion 4) (set 11) + + + sc4richk + Rich Geezer (Bellfruit) (Scorpion 4) (set 12) + + + sc4richl + Rich Geezer (Bellfruit) (Scorpion 4) (set 13) + + + sc4rio + Rio Grande (Dutch) (Bellfruit) (Scorpion 4) + + + sc4rmo + Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 1) + + + sc4rmoa + Roll Me Over Casino (Bellfruit) (Scorpion 4) (set 2) + + + sc4rogds + Rogan Dosh (Qps) (Scorpion 4) (set 1) + + + sc4rogdsa + Rogan Dosh (Qps) (Scorpion 4) (set 2) + + + sc4rogdsb + Rogan Dosh (Qps) (Scorpion 4) (set 3) + + + sc4rogdsc + Rogan Dosh (Qps) (Scorpion 4) (set 4) + + + sc4rogdsd + Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 1) + + + sc4rogdse + Rogan Dosh (v1.6) (Qps) (Scorpion 4) + + + sc4rogdsf + Rogan Dosh (v2.0) (Qps) (Scorpion 4) (set 2) + + + sc4rogdsg + Rogan Dosh (v2.1) (Qps) (Scorpion 4) + + + sc4roksc + Rocket Science (V1.1) (Qps) (Scorpion 4) (set 1) + + + sc4roksca + Rocket Science (011) (Qps) (Scorpion 4) (set 1) + + + sc4rokscb + Rocket Science (V1.1) (Qps) (Scorpion 4) (set 2) + + + sc4rokscc + Rocket Science (011) (Qps) (Scorpion 4) (set 2) + + + sc4rollo + Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 1) + + + sc4rolloa + Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 2) + + + sc4rollob + Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 1) + + + sc4rolloc + Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 3) + + + sc4rollod + Rollover Jackpot (PR7002) (Mazooma) (Scorpion 4) (set 4) + + + sc4rolloe + Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 2) + + + sc4rollof + Rollover Jackpot (PR7032) (Mazooma) (Scorpion 4) (set 3) + + + sc4rosts + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 1) + + + sc4rostsa + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 2) + + + sc4rostsb + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 3) + + + sc4rostsc + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 4) + + + sc4rostsd + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 5) + + + sc4rostse + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 6) + + + sc4rostsf + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 7) + + + sc4rostsg + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 4) (set 8) + + + sc4rotc + Return Of The Count (Mazooma) (Scorpion 4) (set 1) + + + sc4rotca + Return Of The Count (Mazooma) (Scorpion 4) (set 2) + + + sc4rotcb + Return Of The Count (Mazooma) (Scorpion 4) (set 3) + + + sc4rotcc + Return Of The Count (Mazooma) (Scorpion 4) (set 4) + + + sc4rotcd + Return Of The Count (Mazooma) (Scorpion 4) (set 5) + + + sc4rovrt + Rovers Return (Mazooma) (Scorpion 4) (set 1) + + + sc4rovrta + Rovers Return (Mazooma) (Scorpion 4) (set 2) + + + sc4rovrtb + Rovers Return (Mazooma) (Scorpion 4) (set 3) + + + sc4rovrtc + Rovers Return (Mazooma) (Scorpion 4) (set 4) + + + sc4rovrtd + Rovers Return (Mazooma) (Scorpion 4) (set 5) + + + sc4rovrte + Rovers Return (Mazooma) (Scorpion 4) (set 6) + + + sc4royle + Royle Family (Bellfruit) (Scorpion 4) (set 1) + + + sc4roylea + Royle Family (Bellfruit) (Scorpion 4) (set 2) + + + sc4royleb + Royle Family (Bellfruit) (Scorpion 4) (set 3) + + + sc4roylec + Royle Family (Bellfruit) (Scorpion 4) (set 4) + + + sc4royled + Royle Family (Bellfruit) (Scorpion 4) (set 5) + + + sc4roylee + Royle Family (Bellfruit) (Scorpion 4) (set 6) + + + sc4roylef + Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 1) + + + sc4royleg + Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 2) + + + sc4royleh + Royle Family (Bellfruit) (Scorpion 4) (set 7) + + + sc4roylei + Royle Family (Bellfruit) (Scorpion 4) (set 8) + + + sc4roylej + Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 3) + + + sc4roylek + Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 4) + + + sc4roylel + Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 5) + + + sc4roylem + Royle Family (REV 2) (Bellfruit) (Scorpion 4) (set 6) + + + sc4rt + Rolling Thunder (Mazooma) (Scorpion 4) (set 1) + + + sc4rta + Rolling Thunder (Mazooma) (Scorpion 4) (set 2) + + + sc4rtb + Rolling Thunder (Mazooma) (Scorpion 4) (set 3) + + + sc4rtc + Rolling Thunder (Mazooma) (Scorpion 4) (set 4) + + + sc4rtclb + Rolling Thunder Club (Mazooma) (Scorpion 4) (set 1) + + + sc4rtclba + Rolling Thunder Club (Mazooma) (Scorpion 4) (set 2) + + + sc4rtd + Rolling Thunder (Mazooma) (Scorpion 4) (set 5) + + + sc4rttt + Rise To The Top (Mazooma) (Scorpion 4) (set 1) + + + sc4rttta + Rise To The Top (Mazooma) (Scorpion 4) (set 2) + + + sc4rtttb + Rise To The Top (Mazooma) (Scorpion 4) (set 3) + + + sc4rtttc + Rise To The Top (Mazooma) (Scorpion 4) (set 4) + + + sc4rtttd + Rise To The Top (Mazooma) (Scorpion 4) (set 5) + + + sc4rttte + Rise To The Top (Mazooma) (Scorpion 4) (set 6) + + + sc4rvl + Revolution (Dutch) (Bellfruit) (Scorpion 4) + + + sc4rvlnx + Revolution The Next (Dutch) (Bellfruit) (Scorpion 4) + + + sc4s16 + Section 16 (Mazooma) (Scorpion 4) (set 1) + + + sc4s16a + Section 16 (Mazooma) (Scorpion 4) (set 2) + + + sc4s2k + Sinbad 2000 (German) (Nova) (Scorpion 4) + + + sc4s6c + Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 1) + + + sc4s6ca + Super 6 Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4s6cb + Super 6 Club (65% Fixed) (Bellfruit) (Scorpion 4) (set 2) + + + sc4s6cc + Super 6 Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4s6cd + Super 6 Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4s6ce + Super 6 Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4s6cf + Super 6 Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4sace + Space Ace (Qps) (Scorpion 4) (set 1) + + + sc4sacea + Space Ace (Qps) (Scorpion 4) (set 2) + + + sc4sahed + Streaks Ahead (Qps) (Scorpion 4) (set 1) + + + sc4saheda + Streaks Ahead (Qps) (Scorpion 4) (set 2) + + + sc4sahedb + Streaks Ahead (Qps) (Scorpion 4) (set 3) + + + sc4sbust + Space Buster (Qps) (Scorpion 4) (set 1) + + + sc4sbusta + Space Buster (Qps) (Scorpion 4) (set 2) + + + sc4sdr + Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 1) + + + sc4sdra + Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 1) + + + sc4sdrb + Super Diamonds & Rubies (PR6921) (Bellfruit) (Scorpion 4) (set 2) + + + sc4sdrc + Super Diamonds & Rubies SP98 (PR6921) (Bellfruit) (Scorpion 4) (set 2) + + + sc4sf + Street Fighter (Mazooma) (Scorpion 4) (set 1) + + + sc4sfa + Street Fighter (Mazooma) (Scorpion 4) (set 2) + + + sc4sfb + Street Fighter (Mazooma) (Scorpion 4) (set 3) + + + sc4sfc + Street Fighter (Mazooma) (Scorpion 4) (set 4) + + + sc4sfd + Street Fighter (Mazooma) (Scorpion 4) (set 5) + + + sc4showt + Showtime (Bellfruit) (Scorpion 4) (set 1) + + + sc4showta + Showtime (Bellfruit) (Scorpion 4) (set 2) + + + sc4showtb + Showtime (Bellfruit) (Scorpion 4) (set 3) + + + sc4showtc + Showtime (Bellfruit) (Scorpion 4) (set 4) + + + sc4showtd + Showtime (Bellfruit) (Scorpion 4) (set 5) + + + sc4showte + Showtime (Bellfruit) (Scorpion 4) (set 6) + + + sc4showtf + Showtime (Bellfruit) (Scorpion 4) (set 7) + + + sc4sidsp + Side Splitter (Mazooma) (Scorpion 4) (set 1) + + + sc4sidspa + Side Splitter (Mazooma) (Scorpion 4) (set 2) + + + sc4sidspb + Side Splitter (Mazooma) (Scorpion 4) (set 3) + + + sc4sidspc + Side Splitter (Mazooma) (Scorpion 4) (set 4) + + + sc4sirpz + Sir Prize (PR2004, SIRV) (Mazooma) (Scorpion 4) + + + sc4sirpza + Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 1) + + + sc4sirpzb + Sir Prize (PR7079, SIRP) (Mazooma) (Scorpion 4) (set 2) + + + sc4slad + Snakes & Ladders (Bellfruit) (Scorpion 4) (set 1) + + + sc4slada + Snakes & Ladders (Bellfruit) (Scorpion 4) (set 2) + + + sc4sladb + Snakes & Ladders (Bellfruit) (Scorpion 4) (set 3) + + + sc4sladc + Snakes & Ladders (Bellfruit) (Scorpion 4) (set 4) + + + sc4sladd + Snakes & Ladders (Bellfruit) (Scorpion 4) (set 5) + + + sc4slade + Snakes & Ladders (Bellfruit) (Scorpion 4) (set 6) + + + sc4sladf + Snakes & Ladders (Bellfruit) (Scorpion 4) (set 7) + + + sc4sladg + Snakes & Ladders (Bellfruit) (Scorpion 4) (set 8) + + + sc4sladh + Snakes & Ladders (Bellfruit) (Scorpion 4) (set 9) + + + sc4slc + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4slca + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 8) + + + sc4slcb + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4slcc + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4slcd + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 9) + + + sc4slce + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4slcf + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 10) + + + sc4slcg + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 11) + + + sc4slch + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 12) + + + sc4slci + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4slcj + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 13) + + + sc4slck + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 14) + + + sc4slcl + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 15) + + + sc4slcm + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4slcn + Snakes & Ladders Club (Bellfruit) (Scorpion 4) (set 7) + + + sc4slih + Some Like It Hot (Mazooma) (Scorpion 4) (set 1) + + + sc4sliha + Some Like It Hot (Mazooma) (Scorpion 4) (set 2) + + + sc4slihb + Some Like It Hot (Mazooma) (Scorpion 4) (set 3) + + + sc4slihc + Some Like It Hot (Mazooma) (Scorpion 4) (set 4) + + + sc4slihd + Some Like It Hot (Mazooma) (Scorpion 4) (set 5) + + + sc4slihe + Some Like It Hot (Mazooma) (Scorpion 4) (set 6) + + + sc4smk7 + Smoking 7's (Bellfruit) (Scorpion 4) + + + sc4solgl + Solid Gold (Bellfruit) (Scorpion 4) (set 1) + + + sc4solgla + Solid Gold (Bellfruit) (Scorpion 4) (set 2) + + + sc4solglb + Solid Gold (Bellfruit) (Scorpion 4) (set 3) + + + sc4solglc + Solid Gold (Bellfruit) (Scorpion 4) (set 4) + + + sc4spark + South Park (BFM) (Scorpion 4) (set 1) + + + sc4sparka + South Park (BFM) (Scorpion 4) (set 2) + + + sc4sparkb + South Park (BFM) (Scorpion 4) (set 3) + + + sc4sparkc + South Park (BFM) (Scorpion 4) (set 4) + + + sc4sparkd + South Park (BFM) (Scorpion 4) (set 5) + + + sc4sparke + South Park (BFM) (Scorpion 4) (set 6) + + + sc4spice + Spice It Up (Bellfruit) (Scorpion 4) (set 1) + + + sc4spicea + Spice It Up (Bellfruit) (Scorpion 4) (set 2) + + + sc4spiceb + Spice It Up (Bellfruit) (Scorpion 4) (set 3) + + + sc4spicec + Spice It Up (Bellfruit) (Scorpion 4) (set 4) + + + sc4splgb + Splash & Grab (Mazooma) (Scorpion 4) (set 1) + + + sc4splgba + Splash & Grab (Mazooma) (Scorpion 4) (set 2) + + + sc4spred + Spread Your Bet (Mazooma) (Scorpion 4) + + + sc4sprng + Highly Sprung (Mazooma) (Scorpion 4) + + + sc4srr + Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 1) + + + sc4srra + Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 2) + + + sc4srrb + Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 3) + + + sc4srrc + Snake Rattle 'n' Roll (Bellfruit) (Scorpion 4) (set 4) + + + sc4srrca + Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 5) + + + sc4srrcaa + Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 6) + + + sc4srrcab + Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 7) + + + sc4srrcac + Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 8) + + + sc4srrcad + Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 9) + + + sc4srrcae + Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 10) + + + sc4srrmz + Shake Rattle Roll (Mazooma) (Scorpion 4) (Top Box) + + + sc4srrmza + Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 1) + + + sc4srrmzb + Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 2) + + + sc4srrmzc + Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 3) + + + sc4srrmzd + Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 1) + + + sc4srrmze + Shake Rattle Roll Casino (Mazooma) (Scorpion 4) (set 4) + + + sc4srrmzf + Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 2) + + + sc4srrmzg + Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 3) + + + sc4srrmzh + Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 4) + + + sc4srrmzi + Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 5) + + + sc4srrmzj + Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 6) + + + sc4srrmzk + Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 7) + + + sc4srrmzl + Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 8) + + + sc4srrmzm + Shake Rattle Roll Arcade (Mazooma) (Scorpion 4) (set 9) + + + sc4sslam + Super Slam (Bellfruit) (Scorpion 4) (set 1) + + + sc4sslama + Super Slam (Bellfruit) (Scorpion 4) (set 2) + + + sc4sstep + Super Step (Qps) (Scorpion 4) (set 1) + + + sc4sstepa + Super Step (Qps) (Scorpion 4) (set 2) + + + sc4sstepb + Super Step (Qps / 21 Casino) (Scorpion 4) + + + sc4stag + Stag Night (Bellfruit) (Scorpion 4) (set 1) + + + sc4staga + Stag Night (Bellfruit) (Scorpion 4) (set 2) + + + sc4starp + Starprize (Bellfruit) (Scorpion 4) (set 1) + + + sc4starpa + Starprize (Bellfruit) (Scorpion 4) (set 2) + + + sc4starpb + Starprize (Bellfruit) (Scorpion 4) (set 3) + + + sc4starpc + Starprize (Bellfruit) (Scorpion 4) (set 4) + + + sc4starpd + Starprize (Bellfruit) (Scorpion 4) (set 5) + + + sc4starpe + Starprize (Bellfruit) (Scorpion 4) (set 6) + + + sc4starpf + Starprize (Bellfruit) (Scorpion 4) (set 7) + + + sc4starpg + Starprize (Bellfruit) (Scorpion 4) (set 8) + + + sc4starph + Starprize (Bellfruit) (Scorpion 4) (set 9) + + + sc4starpi + Starprize (Bellfruit) (Scorpion 4) (set 10) + + + sc4starpj + Starprize (Bellfruit) (Scorpion 4) (set 11) + + + sc4starpk + Starprize (Bellfruit) (Scorpion 4) (set 12) + + + sc4stirc + Stir Crazy (Mazooma) (Scorpion 4) (set 1) + + + sc4stirca + Stir Crazy (Mazooma) (Scorpion 4) (set 2) + + + sc4stircb + Stir Crazy (Mazooma) (Scorpion 4) (set 3) + + + sc4stircc + Stir Crazy (Mazooma) (Scorpion 4) (set 4) + + + sc4stircd + Stir Crazy (Mazooma) (Scorpion 4) (set 5) + + + sc4stirce + Stir Crazy (Mazooma) (Scorpion 4) (set 6) + + + sc4stircf + Stir Crazy (Mazooma) (Scorpion 4) (set 7) + + + sc4stircg + Stir Crazy (Mazooma) (Scorpion 4) (set 8) + + + sc4stirch + Stir Crazy (Mazooma) (Scorpion 4) (set 9) + + + sc4stirci + Stir Crazy (Mazooma) (Scorpion 4) (set 10) + + + sc4stircj + Stir Crazy (Mazooma) (Scorpion 4) (set 11) + + + sc4stl + The Sky's The Limit (Bellfruit) (Scorpion 4) (set 1) + + + sc4stla + The Sky's The Limit (Bellfruit) (Scorpion 4) (set 2) + + + sc4stlb + The Sky's The Limit (Bellfruit) (Scorpion 4) (set 3) + + + sc4stlc + The Sky's The Limit (Bellfruit) (Scorpion 4) (set 4) + + + sc4stld + The Sky's The Limit (Bellfruit) (Scorpion 4) (set 5) + + + sc4stle + The Sky's The Limit (Bellfruit) (Scorpion 4) (set 6) + + + sc4stlf + The Sky's The Limit (Bellfruit) (Scorpion 4) (set 7) + + + sc4stlg + The Sky's The Limit (Bellfruit) (Scorpion 4) (set 8) + + + sc4strbr + Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 1) + + + sc4strbra + Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 1) + + + sc4strbrb + Stars 'n' Bars (PR1219) (Dutch) (Bellfruit) (Scorpion 4) (set 2) + + + sc4strbrc + Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 2) + + + sc4strbrd + Stars 'n' Bars Arcade (PR1263) (Dutch) (Bellfruit) (Scorpion 4) (set 3) + + + sc4strk + The Streak (Mazooma) (Scorpion 4) (set 1) + + + sc4strka + The Streak (Mazooma) (Scorpion 4) (set 2) + + + sc4strkb + The Streak (Mazooma) (Scorpion 4) (set 3) + + + sc4strkc + The Streak (Mazooma) (Scorpion 4) (set 4) + + + sc4strkd + The Streak (Mazooma) (Scorpion 4) (set 5) + + + sc4strke + The Streak (Mazooma) (Scorpion 4) (set 6) + + + sc4strkf + The Streak (Mazooma) (Scorpion 4) (set 7) + + + sc4strkg + The Streak (Mazooma) (Scorpion 4) (set 8) + + + sc4strkh + The Streak (Mazooma) (Scorpion 4) (set 9) + + + sc4strki + The Streak (Mazooma) (Scorpion 4) (set 10) + + + sc4strkj + The Streak (Mazooma) (Scorpion 4) (set 11) + + + sc4strkk + The Streak (Mazooma) (Scorpion 4) (set 12) + + + sc4strx + Strike X (Bellfruit) (Scorpion 4) (set 1) + + + sc4strxa + Strike X (Bellfruit) (Scorpion 4) (set 2) + + + sc4strxb + Strike X (Bellfruit) (Scorpion 4) (set 3) + + + sc4strxc + Strike X (Bellfruit) (Scorpion 4) (set 4) + + + sc4sumit + Summit Up (Mazooma) (Scorpion 4) (set 1) + + + sc4sumita + Summit Up (Mazooma) (Scorpion 4) (set 2) + + + sc4sumitb + Summit Up (Mazooma) (Scorpion 4) (set 3) + + + sc4sumitc + Summit Up (Mazooma) (Scorpion 4) (set 4) + + + sc4supst + Super Streax (Mazooma) (Scorpion 4) (set 1) + + + sc4supsta + Super Streax (Mazooma) (Scorpion 4) (set 2) + + + sc4sus + Suits U Sir (Qps) (Scorpion 4) (set 1) + + + sc4susc + Suits U Sir (Qps) (Scorpion 4) (set 2) + + + sc4suscl + Suits U Sir Club (Qps) (Scorpion 4) (set 1) + + + sc4suscla + Suits U Sir Club (Qps) (Scorpion 4) (set 4) + + + sc4susclb + Suits U Sir Club (Qps) (Scorpion 4) (set 2) + + + sc4susclc + Suits U Sir Club (Qps) (Scorpion 4) (set 3) + + + sc4susf + Suits U Sir (Qps) (Scorpion 4) (set 3) + + + sc4susg + Suits U Sir (Qps) (Scorpion 4) (set 4) + + + sc4sush + Suits U Sir (Qps) (Scorpion 4) (set 5) + + + sc4susi + Suits U Sir (Qps) (Scorpion 4) (set 6) + + + sc4susj + Suits U Sir (Qps) (Scorpion 4) (set 7) + + + sc4susk + Suits U Sir (Qps) (Scorpion 4) (set 8) + + + sc4swbak + Switch Back (Mazooma) (Scorpion 4) (set 1) + + + sc4swbaka + Switch Back (Mazooma) (Scorpion 4) (set 2) + + + sc4swbakb + Switch Back (Mazooma) (Scorpion 4) (set 3) + + + sc4swbakc + Switch Back (Mazooma) (Scorpion 4) (set 4) + + + sc4swywm + Spin When Your Winning (Mazooma) (Scorpion 4) (set 1) + + + sc4swywma + Spin When Your Winning (Mazooma) (Scorpion 4) (set 2) + + + sc4swywmb + Spin When Your Winning (Mazooma) (Scorpion 4) (set 3) + + + sc4swywmc + Spin When Your Winning (Mazooma) (Scorpion 4) (set 4) + + + sc4swywmd + Spin When Your Winning (Mazooma) (Scorpion 4) (set 5) + + + sc4swywme + Spin When Your Winning (Mazooma) (Scorpion 4) (set 6) + + + sc4swywmf + Spin When Your Winning (Mazooma) (Scorpion 4) (set 7) + + + sc4swywmg + Spin When Your Winning (Mazooma) (Scorpion 4) (set 8) + + + sc4taekw + Tae Kwon Dough (Qps) (Scorpion 4) (set 1) + + + sc4taekwa + Tae Kwon Dough (Qps) (Scorpion 4) (set 2) + + + sc4taekwb + Tae Kwon Dough (Qps) (Scorpion 4) (set 3) + + + sc4taekwc + Tae Kwon Dough (Qps) (Scorpion 4) (set 8) + + + sc4taekwd + Tae Kwon Dough (Qps) (Scorpion 4) (set 9) + + + sc4taekwe + Tae Kwon Dough (Qps) (Scorpion 4) (set 10) + + + sc4taekwf + Tae Kwon Dough (Qps) (Scorpion 4) (set 11) + + + sc4taekwg + Tae Kwon Dough (Qps) (Scorpion 4) (set 4) + + + sc4taekwh + Tae Kwon Dough (Qps) (Scorpion 4) (set 5) + + + sc4taekwi + Tae Kwon Dough (Qps) (Scorpion 4) (set 6) + + + sc4taekwj + Tae Kwon Dough (Qps) (Scorpion 4) (set 7) + + + sc4takcl + Take Note Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4takcla + Take Note Club 500 (Bellfruit) (Scorpion 4) + + + sc4takclb + Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 1) + + + sc4takclc + Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 2) + + + sc4takcld + Take Note Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4takcle + Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 3) + + + sc4takclf + Take Note Club (Ferry) (Bellfruit) (Scorpion 4) (set 4) + + + sc4takclg + Take Note Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4takclh + Take Note Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4takcli + Take Note Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4takclj + Take Note Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4taknt + Take Note (Bellfruit) (Scorpion 4) (set 1) + + + sc4taknta + Take Note (Bellfruit) (Scorpion 4) (set 2) + + + sc4tbana + Top Banana (Bellfruit) (Scorpion 4) (set 1) + + + sc4tbanaa + Top Banana (Bellfruit) (Scorpion 4) (set 2) + + + sc4tbox + Golden X (Mazooma) (PR2056, TBOX) (Scorpion 4) (Top Box, set 4) + + + sc4tempt + Temptation (Bellfruit) (Scorpion 4) (set 1) + + + sc4tempta + Temptation (Bellfruit) (Scorpion 4) (set 2) + + + sc4temptb + Temptation (Bellfruit) (Scorpion 4) (set 3) + + + sc4temptc + Temptation (Bellfruit) (Scorpion 4) (set 4) + + + sc4temptd + Temptation (Bellfruit) (Scorpion 4) (set 5) + + + sc4tempte + Temptation (Bellfruit) (Scorpion 4) (set 6) + + + sc4temptf + Temptation (Bellfruit) (Scorpion 4) (set 7) + + + sc4temptg + Temptation (Bellfruit) (Scorpion 4) (set 8) + + + sc4tetri + Tetris (Mazooma) (Scorpion 4) (set 1) + + + sc4tetria + Tetris (Mazooma) (Scorpion 4) (set 2) + + + sc4tetrib + Tetris (Mazooma) (Scorpion 4) (set 3) + + + sc4tetric + Tetris (Mazooma) (Scorpion 4) (set 4) + + + sc4tetrid + Tetris (Mazooma) (Scorpion 4) (set 5) + + + sc4tetrie + Tetris (Mazooma) (Scorpion 4) (set 6) + + + sc4tetrif + Tetris (Mazooma) (Scorpion 4) (set 7) + + + sc4tetrig + Tetris (Mazooma) (Scorpion 4) (set 8) + + + sc4tetrih + Tetris (Mazooma) (Scorpion 4) (set 9) + + + sc4tetrii + Tetris (Mazooma) (Scorpion 4) (set 10) + + + sc4tetrij + Tetris (Mazooma) (Scorpion 4) (set 11) + + + sc4tetrik + Tetris (Mazooma) (Scorpion 4) (set 12) + + + sc4tfclb + Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4tfclba + Tutti Frutti Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4tgear + Top Gears (Mazooma) (Scorpion 4) (set 1) + + + sc4tgeara + Top Gears (Mazooma) (Scorpion 4) (set 2) + + + sc4tgearb + Top Gears (Mazooma) (Scorpion 4) (set 3) + + + sc4tgearc + Top Gears (Mazooma) (Scorpion 4) (set 4) + + + sc4tgeard + Top Gears (Mazooma) (Scorpion 4) (set 5) + + + sc4tgeare + Top Gears (Mazooma) (Scorpion 4) (set 6) + + + sc4tgearf + Top Gears (Mazooma) (Scorpion 4) (set 7) + + + sc4tgearg + Top Gears (Mazooma) (Scorpion 4) (set 8) + + + sc4tic2 + Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 1) + + + sc4tic2a + Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 2) + + + sc4tic2b + Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 3) + + + sc4tic2c + Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 4) + + + sc4tic2d + Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 5) + + + sc4tic2e + Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 6) + + + sc4tic2f + Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 7) + + + sc4tic2g + Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 8) + + + sc4tic2h + Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 4) + + + sc4tic2i + Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 1) + + + sc4tic2j + Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 2) + + + sc4tic2k + Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 3) + + + sc4tic2l + Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 5) + + + sc4tic2m + Tic Tac Two Casino Arcade (Mazooma) (Scorpion 4) (set 6) + + + sc4tic2n + Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 9) + + + sc4tic2o + Tic Tac Two Casino (Mazooma) (Scorpion 4) (set 10) + + + sc4ticlb + Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 1) + + + sc4ticlba + Treasure Island Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4ticlbb + Treasure Island Club (Fixed 65%) (Bellfruit) (Scorpion 4) (set 2) + + + sc4ticlbc + Treasure Island Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4ticlbd + Treasure Island Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4tload + Top Loader (Mazooma) (Scorpion 4) + + + sc4tpsht + Top Of The Shots (Mazooma) (Scorpion 4) (set 1) + + + sc4tpshta + Top Of The Shots (Mazooma) (Scorpion 4) (set 2) + + + sc4tpshtb + Top Of The Shots (Mazooma) (Scorpion 4) (set 3) + + + sc4tpshtc + Top Of The Shots (Mazooma) (Scorpion 4) (set 4) + + + sc4tpshtd + Top Of The Shots (Mazooma) (Scorpion 4) (set 5) + + + sc4tpshte + Top Of The Shots (Mazooma) (Scorpion 4) (set 6) + + + sc4tpshtf + Top Of The Shots (Mazooma) (Scorpion 4) (set 7) + + + sc4tpshtg + Top Of The Shots (Mazooma) (Scorpion 4) (set 8) + + + sc4trail + Trailblazer (Mazooma) (Scorpion 4) (set 1) + + + sc4traila + Trailblazer (Mazooma) (Scorpion 4) (set 2) + + + sc4trailb + Trailblazer (Mazooma) (Scorpion 4) (set 3) + + + sc4trailc + Trailblazer (Mazooma) (Scorpion 4) (set 4) + + + sc4tri7 + Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 1) + + + sc4tri7a + Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 2) + + + sc4tri7b + Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 1) + + + sc4tri7c + Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 2) + + + sc4tri7d + Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 3) + + + sc4tri7e + Triple 7's Arcade (Bellfruit) (Scorpion 4) (set 4) + + + sc4tri7f + Triple 7's (Bellfruit) (Scorpion 4) (set 1) + + + sc4tri7g + Triple 7's (Bellfruit) (Scorpion 4) (set 2) + + + sc4tri7h + Triple 7's (Bellfruit) (Scorpion 4) (set 3) + + + sc4tri7i + Triple 7's (Bellfruit) (Scorpion 4) (set 4) + + + sc4tri7j + Triple 7's (Bellfruit) (Scorpion 4) (set 5) + + + sc4tri7k + Triple 7's (Bellfruit) (Scorpion 4) (set 6) + + + sc4tri7l + Triple 7's (Bellfruit) (Scorpion 4) (set 7) + + + sc4tri7m + Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 3) + + + sc4tri7n + Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 4) + + + sc4tri7o + Triple 7's (Bellfruit) (Scorpion 4) (set 8) + + + sc4tri7p + Triple 7's (Bellfruit) (Scorpion 4) (set 9) + + + sc4tri7q + Triple 7's (Bellfruit) (Scorpion 4) (set 10) + + + sc4tri7r + Triple 7's (Bellfruit) (Scorpion 4) (set 11) + + + sc4tri7s + Triple 7's (Bellfruit) (Scorpion 4) (set 12) + + + sc4tri7t + Triple 7's (Bellfruit) (Scorpion 4) (set 13) + + + sc4tri7u + Triple 7's (Bellfruit) (Scorpion 4) (set 14) + + + sc4tri7v + Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 5) + + + sc4tri7w + Triple 7's (Bellfruit) (Scorpion 4) (Top Box, set 6) + + + sc4tridn + The Trident (Mazooma) (Scorpion 4) (set 1) + + + sc4tridna + The Trident (Mazooma) (Scorpion 4) (set 2) + + + sc4trist + Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 1) + + + sc4trista + Triple Streak (PR2188) (Mazooma) (Scorpion 4) (Top Box, set 2) + + + sc4tristb + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 1) + + + sc4tristc + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 2) + + + sc4tristd + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 3) + + + sc4triste + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 4) + + + sc4tristf + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 5) + + + sc4tristg + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 6) + + + sc4tristh + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 7) + + + sc4tristi + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 8) + + + sc4tristj + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 9) + + + sc4tristk + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 10) + + + sc4tristl + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 11) + + + sc4tristm + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 12) + + + sc4tristn + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 13) + + + sc4tristo + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 14) + + + sc4tristp + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 15) + + + sc4tristq + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 16) + + + sc4tristr + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 17) + + + sc4trists + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 18) + + + sc4tristt + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 19) + + + sc4tristu + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 20) + + + sc4tristv + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 21) + + + sc4tristw + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 22) + + + sc4tristx + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 23) + + + sc4tristy + Triple Streak (PR2167) (Mazooma) (Scorpion 4) (set 24) + + + sc4tst + Scorpion 4 Test Rig (Bellfruit) (Scorpion ?) + + + sc4ttomb + Treasure Tomb (Bellfruit) (Scorpion 4) (set 1) + + + sc4ttomba + Treasure Tomb (Bellfruit) (Scorpion 4) (set 2) + + + sc4ttombb + Treasure Tomb (Bellfruit) (Scorpion 4) (set 3) + + + sc4ttombc + Treasure Tomb (Bellfruit) (Scorpion 4) (set 4) + + + sc4ttp + Take The Piste (Mazooma) (Scorpion 4) (set 1) + + + sc4ttpa + Take The Piste (Mazooma) (Scorpion 4) (set 2) + + + sc4ttpb + Take The Piste (Mazooma) (Scorpion 4) (set 3) + + + sc4ttpc + Take The Piste (Mazooma) (Scorpion 4) (set 4) + + + sc4ttpd + Take The Piste (Mazooma) (Scorpion 4) (set 5) + + + sc4ttpe + Take The Piste (Mazooma) (Scorpion 4) (set 6) + + + sc4ttpf + Take The Piste (Mazooma) (Scorpion 4) (set 7) + + + sc4ttpie + Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 1) + + + sc4ttpiea + Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 1) + + + sc4ttpieb + Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 2) + + + sc4ttpiec + Take The Piece (Bellfruit) (PR1714) (Scorpion 4) (set 2) + + + sc4ttpied + Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 3) + + + sc4ttpiee + Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 4) + + + sc4ttpief + Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 5) + + + sc4ttpieg + Take The Piece (Bellfruit) (PR1734) (Scorpion 4) (set 6) + + + sc4tub + Tubular Bells (Bellfruit) (Scorpion 4) (set 1) + + + sc4tuba + Tubular Bells (Bellfruit) (Scorpion 4) (set 2) + + + sc4tubb + Tubular Bells (Bellfruit) (Scorpion 4) (set 3) + + + sc4tubc + Tubular Bells (Bellfruit) (Scorpion 4) (set 4) + + + sc4twilt + Twilight (Dutch) (Bellfruit) (Scorpion 4) + + + sc4typ + Take Your Pick (Bellfruit) (Scorpion 4) (set 1) + + + sc4typa + Take Your Pick (Bellfruit) (Scorpion 4) (set 2) + + + sc4typb + Take Your Pick (Bellfruit) (Scorpion 4) (set 3) + + + sc4typc + Take Your Pick (Bellfruit) (Scorpion 4) (set 4) + + + sc4ufg + Up For Grabs (Mazooma) (Scorpion 4) (set 1) + + + sc4ufga + Up For Grabs (Mazooma) (Scorpion 4) (set 2) + + + sc4ufi + Up For It (Bellfruit) (Scorpion 4) (set 1) + + + sc4ufia + Up For It (Bellfruit) (Scorpion 4) (set 2) + + + sc4ufib + Up For It (Bellfruit) (Scorpion 4) (set 3) + + + sc4ufic + Up For It (Bellfruit) (Scorpion 4) (set 4) + + + sc4ufid + Up For It (Bellfruit) (Scorpion 4) (set 5) + + + sc4ufie + Up For It (Bellfruit) (Scorpion 4) (set 6) + + + sc4valnv + Valhalla (German) (PR7025, GVAL) (Nova) (Scorpion 4) + + + sc4valqp + Valhalla (Dutch) (Qps) (Scorpion 4) + + + sc4vivam + Viva Mexico (Bellfruit) (Scorpion 4) (set 1) + + + sc4vivama + Viva Mexico (Bellfruit) (Scorpion 4) (set 2) + + + sc4vivamb + Viva Mexico (Bellfruit) (Scorpion 4) (set 3) + + + sc4vivamc + Viva Mexico (Bellfruit) (Scorpion 4) (set 4) + + + sc4vivcs + Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 1) + + + sc4vivcsa + Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 2) + + + sc4vivcsb + Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 3) + + + sc4vivcsc + Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 4) + + + sc4vivcsd + Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 5) + + + sc4vivcse + Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 6) + + + sc4vivcsf + Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 7) + + + sc4vivcsg + Casino Viva Mexico (Bellfruit) (Scorpion 4) (set 8) + + + sc4vmclb + Viva Mexico Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4vmclba + Viva Mexico Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4vmclbb + Viva Mexico Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4vmnv + Viva Mexico (Nova) (Scorpion 4) (set 1) + + + sc4vmnva + Viva Mexico (Nova) (Scorpion 4) (set 2) + + + sc4vrgcl + Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 1) + + + sc4vrgcla + Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 2) + + + sc4vrgclb + Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 3) + + + sc4vrgclc + Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 4) + + + sc4vrgcld + Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 5) + + + sc4vrgcle + Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 6) + + + sc4vrgclf + Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 7) + + + sc4vrgclg + Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 8) + + + sc4vrgclh + Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 9) + + + sc4vrgcli + Very Rich Geezer Club (Bellfruit) (Scorpion 4) (set 10) + + + sc4wadzl + Wadzilla (Mazooma) (Scorpion 4) (set 1) + + + sc4wadzla + Wadzilla (Mazooma) (Scorpion 4) (set 2) + + + sc4wag + WIN-10-Gain (German) (Nova) (Scorpion 4) + + + sc4waw + Wet & Wild (Mazooma) (Scorpion 4) (set 1) + + + sc4wawa + Wet & Wild (Mazooma) (Scorpion 4) (set 2) + + + sc4wawb + Wet & Wild (Mazooma) (Scorpion 4) (set 3) + + + sc4wawc + Wet & Wild (Mazooma) (Scorpion 4) (set 4) + + + sc4wawd + Wet & Wild (Mazooma) (Scorpion 4) (set 5) + + + sc4wawe + Wet & Wild (Mazooma) (Scorpion 4) (set 6) + + + sc4wawf + Wet & Wild (Mazooma) (Scorpion 4) (set 7) + + + sc4wdw + Who Dares Wins (Bellfruit) (Scorpion 4) (set 1) + + + sc4wdwa + Who Dares Wins (Bellfruit) (Scorpion 4) (set 2) + + + sc4wdwb + Who Dares Wins (Bellfruit) (Scorpion 4) (set 3) + + + sc4wdwc + Who Dares Wins (Bellfruit) (Scorpion 4) (set 4) + + + sc4wdwd + Who Dares Wins (Bellfruit) (Scorpion 4) (set 5) + + + sc4wdwe + Who Dares Wins (Bellfruit) (Scorpion 4) (set 6) + + + sc4wdwf + Who Dares Wins (Bellfruit) (Scorpion 4) (set 7) + + + sc4wdwg + Who Dares Wins (Bellfruit) (Scorpion 4) (set 8) + + + sc4wdwh + Who Dares Wins (Bellfruit) (Scorpion 4) (set 9) + + + sc4wdwi + Who Dares Wins (Bellfruit) (Scorpion 4) (set 10) + + + sc4wdwj + Who Dares Wins (Bellfruit) (Scorpion 4) (set 11) + + + sc4wernr + Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 1) + + + sc4winsp + Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 1) + + + sc4winsp0 + Winning Spin Top Box (PR2526, WSPT) (Qps) (Scorpion 4) (set 2) + + + sc4winspa + Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 1) + + + sc4winspb + Winning Spin (V021) (Qps) (Scorpion 4) (set 1) + + + sc4winspc + Winning Spin (V031) (Qps) (Scorpion 4) (set 1) + + + sc4winspd + Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 1) + + + sc4winspe + Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 1) + + + sc4winspf + Winning Spin (V022) (Qps) (Scorpion 4) (set 1) + + + sc4winspg + Winning Spin (V032) (Qps) (Scorpion 4) (set 1) + + + sc4winsph + Winning Spin (Bingo V011) (Qps) (Scorpion 4) (set 2) + + + sc4winspi + Winning Spin (V021) (Qps) (Scorpion 4) (set 2) + + + sc4winspj + Winning Spin (V031) (Qps) (Scorpion 4) (set 2) + + + sc4winspk + Winning Spin (Arcade V011) (Qps) (Scorpion 4) (set 2) + + + sc4winspl + Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 2) + + + sc4winspm + Winning Spin (V022) (Qps) (Scorpion 4) (set 2) + + + sc4winspn + Winning Spin (V032) (Qps) (Scorpion 4) (set 2) + + + sc4winspo + Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 1) + + + sc4winspp + Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 1) + + + sc4winspq + Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 3) + + + sc4winspr + Winning Spin (V022) (Qps) (Scorpion 4) (set 3) + + + sc4winsps + Winning Spin (V032) (Qps) (Scorpion 4) (set 3) + + + sc4winspt + Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 1) + + + sc4winspu + Winning Spin (Arcade V061) (Qps) (Scorpion 4) (set 2) + + + sc4winspv + Winning Spin (Arcade V062) (Qps) (Scorpion 4) (set 2) + + + sc4winspw + Winning Spin (Bingo V012) (Qps) (Scorpion 4) (set 4) + + + sc4winspx + Winning Spin (V022) (Qps) (Scorpion 4) (set 4) + + + sc4winspy + Winning Spin (V032) (Qps) (Scorpion 4) (set 4) + + + sc4winspz + Winning Spin (Arcade V012) (Qps) (Scorpion 4) (set 2) + + + sc4winxp + Win X-plosion (Dutch) (Bellfruit) (Scorpion 4) + + + sc4wldbn + Wild Bunch (Bellfruit) (Scorpion 4) (set 1) + + + sc4wldbna + Wild Bunch (Bellfruit) (Scorpion 4) (set 2) + + + sc4wldbnb + Wild Bunch (Bellfruit) (Scorpion 4) (set 3) + + + sc4wldbnc + Wild Bunch (Bellfruit) (Scorpion 4) (set 4) + + + sc4wldbnd + Wild Bunch (Bellfruit) (Scorpion 4) (set 5) + + + sc4wldbne + Wild Bunch (Bellfruit) (Scorpion 4) (set 6) + + + sc4wldbnf + Wild Bunch (Bellfruit) (Scorpion 4) (set 7) + + + sc4wldbng + Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 1) + + + sc4wldbnh + Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 2) + + + sc4wldbni + Wild Bunch (Bellfruit) (Scorpion 4) (set 8) + + + sc4wldbnj + Wild Bunch (Bellfruit) (Scorpion 4) (set 9) + + + sc4wldbnk + Wild Bunch (Bellfruit) (Scorpion 4) (set 10) + + + sc4wldbnl + Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 3) + + + sc4wldbnm + Wild Bunch Casino (Bellfruit) (Scorpion 4) (set 4) + + + sc4wldbnn + Wild Bunch (Bellfruit) (Scorpion 4) (set 11) + + + sc4wldbno + Wild Bunch (Bellfruit) (Scorpion 4) (set 12) + + + sc4wldbnp + Wild Bunch (Bellfruit) (Scorpion 4) (set 13) + + + sc4wldbnq + Wild Bunch (Bellfruit) (Scorpion 4) (set 14) + + + sc4wldjk + Wild Jackpots (Mazooma) (Scorpion 4) (set 1) + + + sc4wldjka + Wild Jackpots (Mazooma) (Scorpion 4) (set 2) + + + sc4wldjkb + Wild Jackpots (Mazooma) (Scorpion 4) (set 3) + + + sc4wldjkc + Wild Jackpots (Mazooma) (Scorpion 4) (set 4) + + + sc4wldjkd + Wild Jackpots (Mazooma) (Scorpion 4) (set 5) + + + sc4wldjke + Wild Jackpots (Mazooma) (Scorpion 4) (set 6) + + + sc4wldjkf + Wild Jackpots (Mazooma) (Scorpion 4) (set 7) + + + sc4wldjkg + Wild Jackpots (Mazooma) (Scorpion 4) (set 8) + + + sc4wondw + Wonder Wheel (Bellfruit) (Scorpion 4) (set 1) + + + sc4wondwa + Wonder Wheel (Bellfruit) (Scorpion 4) (set 2) + + + sc4wrnlt + Werner (German) (PR7027, GWER) (Nova) (Scorpion 4) (set 2) + + + sc4wspin + Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 1) + + + sc4wspinb + Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 1) + + + sc4wspinc + Win Spinner Arcade (011) (Qps) (Scorpion 4) (set 2) + + + sc4wspind + Win Spinner SP Arcade (011) (Qps) (Scorpion 4) (set 2) + + + sc4wtc + Wild Thing Casino (Mazooma) (Scorpion 4) (set 1) + + + sc4wtca + Wild Thing Casino (Mazooma) (Scorpion 4) (set 2) + + + sc4wtcb + Wild Thing Casino (Mazooma) (Scorpion 4) (set 3) + + + sc4wtcc + Wild Thing Casino (Mazooma) (Scorpion 4) (set 4) + + + sc4wtcd + Wild Thing Casino (Mazooma) (Scorpion 4) (set 5) + + + sc4wtce + Wild Thing Casino (Mazooma) (Scorpion 4) (set 6) + + + sc4wtcf + Wild Thing Casino (Mazooma) (Scorpion 4) (set 7) + + + sc4wthng + Wild Thing (Bellfruit) (Scorpion 4) (set 1) + + + sc4wthnga + Wild Thing (Bellfruit) (Scorpion 4) (set 2) + + + sc4wthngb + Wild Thing (Bellfruit) (Scorpion 4) (set 3) + + + sc4wthngc + Wild Thing (Bellfruit) (Scorpion 4) (set 4) + + + sc4wthnm + Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 1) + + + sc4wthnma + Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 2) + + + sc4wthnmb + Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 3) + + + sc4wthnmc + Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 4) + + + sc4wthnmd + Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 5) + + + sc4wthnme + Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 6) + + + sc4wthnmf + Wild Thing Casino Arcade (Mazooma) (Scorpion 4) (set 7) + + + sc4wwys + Win When Your Spinning (Bellfruit) (Scorpion 4) (set 1) + + + sc4wwysa + Win When Your Spinning (Bellfruit) (Scorpion 4) (set 2) + + + sc4xcash + Xtra Cash Casino (Dutch) (Bellfruit) (Scorpion 4) + + + sc4xmark + X Marks The Spot (Bellfruit) (Scorpion 4) (set 1) + + + sc4xmarka + X Marks The Spot (Bellfruit) (Scorpion 4) (set 2) + + + sc4ziggy + Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 1) + + + sc4ziggya + Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 2) + + + sc4ziggyb + Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 3) + + + sc4ziggyc + Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 4) + + + sc4ziggyd + Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 5) + + + sc4ziggye + Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 6) + + + sc4ziggyf + Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 7) + + + sc4ziggyg + Gettin Ziggy With It (Mazooma) (Scorpion 4) (set 8) + + + sc5_3414 + Bullseye Hot Arrows (Scorpion 5) + + + sc5_3434 + Monopoly Takeover (Scorpion 5) + + + sc5_3435 + Monopoly Street Party (Scorpion 5) + + + sc5_3437 + Red Hot Silly Peppers Community Party (Scorpion 5) + + + sc5_3438 + Juicy Gems Community Party (Scorpion 5) + + + sc5_3450 + Deal or no Deal Let's Play (Scorpion 5) + + + sc5_3451 + Deal or no Deal Gold (Scorpion 5) + + + sc5_3508 + Club DOND Red Mist (Scorpion 5) + + + sc5_3510 + Deal or no Deal Red Hot (Scorpion 5) + + + sc5_3511 + Deal or no Deal Spank the Banker (Scorpion 5) + + + sc5_3512 + Monopoly Gold (Bellfruit) (Scorpion 5) + + + sc5_3513 + Deal or no Deal Right Deal Right Time (Scorpion 5) + + + sc5_3514 + Deal or no Deal Rapid Round (Scorpion 5) + + + sc5_3515 + 777 Heaven (Scorpion 5) + + + sc5_3516 + Cash Ahoy (Scorpion 5) + + + sc5_3517 + Deal or no Deal East and West Wing (Scorpion 5) + + + sc5_3518 + Deal or no Deal Bank On It (Scorpion 5) + + + sc5_3519 + Deal or no Deal Eliminator (Scorpion 5) + + + sc5_3520 + Cops 'n' Robbers Street Wise (Scorpion 5) + + + sc5_3524 + Cluedo Prime Suspect (Scorpion 5) + + + sc5_3525 + Happy Hour (Scorpion 5) + + + sc5_3530 + Club Cash Ahoy (Scorpion 5) + + + sc5_3551 + Deal or no Deal Seal the Deal (Scorpion 5) + + + sc5_3552 + Snakes and Ladders (Scorpion 5) + + + sc5_3553 + Deal or no Deal Go All the Way (Scorpion 5) + + + sc5_3555 + Family Guy The Drunken Clam (Scorpion 5) + + + sc5_3557 + Deal or no Deal Live (Scorpion 5) + + + sc5_z057 + Quidsia (Scorpion 5) + + + sc5_z058 + Wok 'n' Roll (Scorpion 5) + + + sc5_z059 + Aladdin (Scorpion 5) + + + sc5_z060 + Hard Dk (Scorpion 5) + + + sc5a40 + Around The Board In 40 Days (Mazooma) (Scorpion 5) (set 1) + + + sc5a40a + Around The Board In 40 Days (Mazooma) (Scorpion 5) (set 2) + + + sc5adga + Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 1) + + + sc5adgaa + Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 2) + + + sc5adgab + Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 3) + + + sc5adgac + Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 4) + + + sc5adgad + Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 5) + + + sc5adgae + Ant & Dec's Grab The Ads (Bellfruit) (Scorpion 5) (set 6) + + + sc5adgtc + Ant & Dec's Grab The Cash (Bellfruit) (Scorpion 5) (set 1) + + + sc5adgtca + Ant & Dec's Grab The Cash (Bellfruit) (Scorpion 5) (set 2) + + + sc5adjb + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 1) + + + sc5adjba + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 2) + + + sc5adjbb + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 3) + + + sc5adjbc + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 4) + + + sc5adjbd + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 5) + + + sc5adjbe + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 6) + + + sc5adjbf + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 7) + + + sc5adjbg + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 8) + + + sc5adjbh + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 9) + + + sc5adjbi + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 10) + + + sc5adjbj + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 11) + + + sc5adjbk + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 12) + + + sc5adjbl + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 13) + + + sc5adjbm + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 14) + + + sc5adjbn + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 15) + + + sc5adjbo + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 16) + + + sc5adjbp + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 17) + + + sc5adjbq + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 18) + + + sc5adjbr + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 19) + + + sc5adjbs + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 20) + + + sc5adjbt + Ant & Dec's Jiggy Bank (Bellfruit) (Scorpion 5) (set 21) + + + sc5adsnt + Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 5) (set 1) + + + sc5adsnta + Ant & Dec's Saturday Night Takeaway (Bellfruit) (Scorpion 5) (set 2) + + + sc5adwta + Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 5) (set 1) + + + sc5adwtaa + Ant & Dec's Saturday Night Takeaway Win The Ads (Bellfruit) (Scorpion 5) (set 2) + + + sc5bantm + Bantam Of The Opera (Mazooma) (Scorpion 5) (set 1) + + + sc5bantma + Bantam Of The Opera (Mazooma) (Scorpion 5) (set 2) + + + sc5bar7 + Bar 7's (Bellfruit) (Scorpion 5) (set 1) + + + sc5bar7a + Bar 7's (Bellfruit) (Scorpion 5) (set 2) + + + sc5bar7b + Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 1) + + + sc5bar7c + Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 2) + + + sc5bar7d + Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 3) + + + sc5bar7e + Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 4) + + + sc5bar7f + Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 5) + + + sc5bar7g + Bar 7's Bingo (Bellfruit) (Scorpion 5) (set 6) + + + sc5batl + Battleships & Cruisers (Bellfruit) (Scorpion 5) (set 1) + + + sc5batla + Battleships & Cruisers (Bellfruit) (Scorpion 5) (set 2) + + + sc5bjob + Bank Job (Bellfruit) (Scorpion 5) (set 1) + + + sc5bjoba + Bank Job (Bellfruit) (Scorpion 5) (set 2) + + + sc5bjobb + Bank Job (Bellfruit) (Scorpion 5) (set 3) + + + sc5bjobc + Bank Job (Bellfruit) (Scorpion 5) (set 4) + + + sc5bjobd + Bank Job (Bellfruit) (Scorpion 5) (set 5) + + + sc5bjobe + Bank Job (Bellfruit) (Scorpion 5) (set 6) + + + sc5bjobf + Bank Job (Bellfruit) (Scorpion 5) (set 7) + + + sc5bjobg + Bank Job (Bellfruit) (Scorpion 5) (set 8) + + + sc5bjobh + Bank Job (Bellfruit) (Scorpion 5) (set 9) + + + sc5bjobi + Bank Job (Bellfruit) (Scorpion 5) (set 10) + + + sc5bkngx + Bar King X (Mazooma) (Scorpion 5) (set 1) + + + sc5bkngxa + Bar King X (Mazooma) (Scorpion 5) (set 2) + + + sc5bob + Bobby Dazzler (Mazooma) (Scorpion 5) (set 1) + + + sc5boba + Bobby Dazzler (Mazooma) (Scorpion 5) (set 2) + + + sc5bobb + Bobby Dazzler (Mazooma) (Scorpion 5) (set 3) + + + sc5bobc + Bobby Dazzler (Mazooma) (Scorpion 5) (set 4) + + + sc5bpb + Bully's Prize Board (Bellfruit) (Scorpion 5) (set 1) + + + sc5bpba + Bully's Prize Board (Bellfruit) (Scorpion 5) (set 5) + + + sc5bpbb + Bully's Prize Board (Bellfruit) (Scorpion 5) (set 2) + + + sc5bpbc + Bully's Prize Board (Bellfruit) (Scorpion 5) (set 6) + + + sc5bpbd + Bully's Prize Board (Bellfruit) (Scorpion 5) (set 3) + + + sc5bpbe + Bully's Prize Board (Bellfruit) (Scorpion 5) (set 4) + + + sc5bpbf + Bully's Prize Board (Bellfruit) (Scorpion 5) (set 7) + + + sc5bpbg + Bully's Prize Board (Bellfruit) (Scorpion 5) (set 8) + + + sc5bpfpb + Bullseye Pounds For Points (Bellfruit) (Scorpion 5) (set 1) + + + sc5bpfpba + Bullseye Pounds For Points (Bellfruit) (Scorpion 5) (set 2) + + + sc5bsp + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 1) + + + sc5bspa + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 2) + + + sc5bspb + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 3) + + + sc5bspc + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 4) + + + sc5bspd + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 5) + + + sc5bspe + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 6) + + + sc5bspf + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 7) + + + sc5bspg + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 8) + + + sc5bsph + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 9) + + + sc5bspi + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 10) + + + sc5bspj + Bully's Star Prize (PR3012) (Bellfruit) (Scorpion 5) (set 1) + + + sc5bspk + Bully's Star Prize (PR3012) (Bellfruit) (Scorpion 5) (set 2) + + + sc5bspl + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 13) + + + sc5bspm + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 14) + + + sc5bspn + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 15) + + + sc5bspo + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 16) + + + sc5bspp + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 17) + + + sc5bspq + Bully's Star Prize (PR3010) (Bellfruit) (Scorpion 5) (set 18) + + + sc5btiab + Bullseye Three In A Bed (Bellfruit) (Scorpion 5) + + + sc5btrip + Bullseye Triple (Bellfruit) (Scorpion 5) (set 1) + + + sc5btripa + Bullseye Triple (Bellfruit) (Scorpion 5) (set 2) + + + sc5btripb + Bullseye Triple (Bellfruit) (Scorpion 5) (set 3) + + + sc5btripc + Bullseye Triple (Bellfruit) (Scorpion 5) (set 4) + + + sc5bucc + Buccaneers (Bellfruit) (Scorpion 5) (set 1) + + + sc5bucca + Buccaneers (Bellfruit) (Scorpion 5) (set 2) + + + sc5buccb + Buccaneers (Bellfruit) (Scorpion 5) (set 3) + + + sc5buccc + Buccaneers (Bellfruit) (Scorpion 5) (set 4) + + + sc5buccd + Buccaneers (Bellfruit) (Scorpion 5) (set 5) + + + sc5bucce + Buccaneers (Bellfruit) (Scorpion 5) (set 6) + + + sc5bull + Bullseye (Bellfruit) (Scorpion 5) (set 1) + + + sc5bull5 + Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 1) + + + sc5bull5a + Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 2) + + + sc5bull5b + Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 3) + + + sc5bull5c + Bullseye 5 Reels (Bellfruit) (Scorpion 5) (set 4) + + + sc5bulla + Bullseye (Bellfruit) (Scorpion 5) (set 2) + + + sc5bullb + Bullseye (Bellfruit) (Scorpion 5) (set 3) + + + sc5bullc + Bullseye (Bellfruit) (Scorpion 5) (set 4) + + + sc5bunny + Bunny Money (Mazooma) (Scorpion 5) (set 1) + + + sc5bunnya + Bunny Money (Mazooma) (Scorpion 5) (set 2) + + + sc5butch + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 1) + + + sc5butcha + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 2) + + + sc5butchb + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 3) + + + sc5butchc + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 4) + + + sc5butchd + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 5) + + + sc5butche + Butch Cashidy & The Sundance Quid (Bellfruit) (Scorpion 5) (set 6) + + + sc5cabin + Cabin Fever (Mazooma) (Scorpion 5) (set 1) + + + sc5cabina + Cabin Fever (Mazooma) (Scorpion 5) (set 2) + + + sc5cabinb + Cabin Fever (Mazooma) (Scorpion 5) (set 3) + + + sc5cabinc + Cabin Fever (Mazooma) (Scorpion 5) (set 4) + + + sc5cari + Caribbean Cash (Qps) (Scorpion 5) (set 1) + + + sc5caria + Caribbean Cash (Qps) (Scorpion 5) (set 2) + + + sc5carib + Caribbean Cash (Qps) (Scorpion 5) (set 3) + + + sc5caric + Caribbean Cash (Qps) (Scorpion 5) (set 4) + + + sc5carid + Caribbean Cash (Qps) (Scorpion 5) (set 5) + + + sc5carie + Caribbean Cash (Qps) (Scorpion 5) (set 6) + + + sc5carif + Caribbean Cash (Qps) (Scorpion 5) (set 7) + + + sc5carig + Caribbean Cash (Qps) (Scorpion 5) (set 8) + + + sc5casxt + Casino Xtravaganza (Mazooma) (Scorpion 5) (set 1) + + + sc5casxta + Casino Xtravaganza (Mazooma) (Scorpion 5) (set 2) + + + sc5cbar7 + Classic Bar 7 (Mazooma) (Scorpion 5) (set 1) + + + sc5cbar7a + Classic Bar 7 (Mazooma) (Scorpion 5) (set 2) + + + sc5cblas + Cash Blast (Bellfruit) (Scorpion 5) (set 1) + + + sc5cblasa + Cash Blast (Bellfruit) (Scorpion 5) (set 2) + + + sc5cbrun + Cannonball Run (Bellfruit) (Scorpion 5) (set 1) + + + sc5cbruna + Cannonball Run (Bellfruit) (Scorpion 5) (set 2) + + + sc5celeb + I'm A Celebrity (Bellfruit) (Scorpion 5) (set 1) + + + sc5celeba + I'm A Celebrity (Bellfruit) (Scorpion 5) (set 2) + + + sc5celebb + I'm A Celebrity (Bellfruit) (Scorpion 5) (set 3) + + + sc5celebc + I'm A Celebrity (Bellfruit) (Scorpion 5) (set 4) + + + sc5celebd + I'm A Celebrity (Bellfruit) (Scorpion 5) (set 5) + + + sc5cfact + Cash Factor (Bellfruit) (Scorpion 5) (set 1) + + + sc5cfacta + Cash Factor (Bellfruit) (Scorpion 5) (set 2) + + + sc5cfcp + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 1) + + + sc5cfcpa + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 2) + + + sc5cfcpb + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 3) + + + sc5cfcpc + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 4) + + + sc5cfcpd + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 5) + + + sc5cfcpe + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 6) + + + sc5cfcpf + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 7) + + + sc5cfcpg + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 8) + + + sc5cfcph + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 9) + + + sc5cfcpi + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 10) + + + sc5cfcpj + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 11) + + + sc5cfcpk + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 12) + + + sc5cfcpl + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 13) + + + sc5cfcpm + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 14) + + + sc5cfcpn + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 15) + + + sc5cfcpo + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 16) + + + sc5cfcpp + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 17) + + + sc5cfcpq + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 18) + + + sc5cfcpr + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 19) + + + sc5cfcps + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 20) + + + sc5cfcpt + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 21) + + + sc5cfcpu + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 22) + + + sc5cfcpv + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 23) + + + sc5cfcpw + Crazy Fruits Community Party (Bellfruit) (Scorpion 5) (set 24) + + + sc5cfnc + Crazy Fruit & Nutcase (Bellfruit) (Scorpion 5) (set 1) + + + sc5cfnca + Crazy Fruit & Nutcase (Bellfruit) (Scorpion 5) (set 2) + + + sc5cfpt + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 1) + + + sc5cfpta + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 2) + + + sc5cfptb + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 3) + + + sc5cfptc + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 4) + + + sc5cfptd + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 5) + + + sc5cfpte + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 6) + + + sc5cfptf + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 7) + + + sc5cfptg + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 8) + + + sc5cfpth + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 9) + + + sc5cfpti + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 10) + + + sc5cfptj + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 11) + + + sc5cfptk + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 12) + + + sc5cfptl + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 13) + + + sc5cfptm + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 14) + + + sc5cfptn + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 15) + + + sc5cfpto + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 16) + + + sc5cfptp + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 17) + + + sc5cfptq + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 18) + + + sc5cfptr + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 19) + + + sc5cfpts + Crazy Fruits Casino Party Time (Bellfruit) (Scorpion 5) (set 20) + + + sc5chain + Chain Reaction (Bellfruit) (Scorpion 5) (set 1) + + + sc5chaina + Chain Reaction (Bellfruit) (Scorpion 5) (set 2) + + + sc5chainb + Chain Reaction (Bellfruit) (Scorpion 5) (set 3) + + + sc5chainc + Chain Reaction (Bellfruit) (Scorpion 5) (set 4) + + + sc5chaind + Chain Reaction (Bellfruit) (Scorpion 5) (set 5) + + + sc5chaine + Chain Reaction (Bellfruit) (Scorpion 5) (set 6) + + + sc5chavi + Chav It (Bellfruit) (Scorpion 5) (set 1) + + + sc5chavia + Chav It (Bellfruit) (Scorpion 5) (set 2) + + + sc5chavib + Chav It (Bellfruit) (Scorpion 5) (set 3) + + + sc5chavic + Chav It (Bellfruit) (Scorpion 5) (set 4) + + + sc5chavid + Chav It (Bellfruit) (Scorpion 5) (set 5) + + + sc5chavie + Chav It (Bellfruit) (Scorpion 5) (set 6) + + + sc5chavy + Chavy Chase (Mazooma) (Scorpion 5) (set 1) + + + sc5chavya + Chavy Chase (Mazooma) (Scorpion 5) (set 2) + + + sc5chavyb + Chavy Chase (Mazooma) (Scorpion 5) (set 3) + + + sc5chavyc + Chavy Chase (Mazooma) (Scorpion 5) (set 4) + + + sc5chopc + Chop 'n' Change (Mazooma) (Scorpion 5) (set 1) + + + sc5chopca + Chop 'n' Change (Mazooma) (Scorpion 5) (set 2) + + + sc5cj + Cool Jewels (Bellfruit) (Scorpion 5) (set 1) + + + sc5cja + Cool Jewels (Bellfruit) (Scorpion 5) (set 2) + + + sc5cjb + Cool Jewels (Bellfruit) (Scorpion 5) (set 3) + + + sc5cjc + Cool Jewels (Bellfruit) (Scorpion 5) (set 4) + + + sc5cjd + Cool Jewels (Bellfruit) (Scorpion 5) (set 5) + + + sc5cje + Cool Jewels (Bellfruit) (Scorpion 5) (set 6) + + + sc5cjqps + Crown Jewels (Z055) (QPS) (Scorpion 5) (set 1) + + + sc5cjqpsa + Crown Jewels (Z055) (QPS) (Scorpion 5) (set 2) + + + sc5cjqpsb + Crown Jewels (Z055) (QPS) (Scorpion 5) (set 3) + + + sc5cjqpsc + Crown Jewels (Z055) (QPS) (Scorpion 5) (set 4) + + + sc5cknig + Crazy Knights (Bellfruit) (Scorpion 5) (set 1) + + + sc5ckniga + Crazy Knights (Bellfruit) (Scorpion 5) (set 2) + + + sc5cknigb + Crazy Knights (Bellfruit) (Scorpion 5) (set 3) + + + sc5cknigc + Crazy Knights (Bellfruit) (Scorpion 5) (set 4) + + + sc5clcas + Cluedo Casino (Mazooma) (Scorpion 5) (set 1) + + + sc5clcasa + Cluedo Casino (Mazooma) (Scorpion 5) (set 2) + + + sc5clnot + Cluedo Notorious (Bellfruit) (Scorpion 5) (set 1) + + + sc5clnota + Cluedo Notorious (Bellfruit) (Scorpion 5) (set 2) + + + sc5clnotb + Cluedo Notorious (Bellfruit) (Scorpion 5) (set 3) + + + sc5clnotc + Cluedo Notorious (Bellfruit) (Scorpion 5) (set 4) + + + sc5clnotd + Cluedo Notorious (Bellfruit) (Scorpion 5) (set 5) + + + sc5clnote + Cluedo Notorious (Bellfruit) (Scorpion 5) (set 6) + + + sc5clnotf + Cluedo Notorious (Bellfruit) (Scorpion 5) (set 7) + + + sc5clnotg + Cluedo Notorious (Bellfruit) (Scorpion 5) (set 8) + + + sc5clown + Clown Around (Bellfruit) (Scorpion 5) (set 1) + + + sc5clowna + Clown Around (Bellfruit) (Scorpion 5) (set 2) + + + sc5clownb + Clown Around (Bellfruit) (Scorpion 5) (set 3) + + + sc5clownc + Clown Around (Bellfruit) (Scorpion 5) (set 4) + + + sc5clownd + Clown Around (Bellfruit) (Scorpion 5) (set 5) + + + sc5clowne + Clown Around (Bellfruit) (Scorpion 5) (set 6) + + + sc5clu70 + Cluedo 70 (Qps) (Scorpion 5) (set 1) + + + sc5clu70a + Cluedo 70 (Qps) (Scorpion 5) (set 2) + + + sc5clue + Cluedo (Mazooma) (Scorpion 5) (set 1) + + + sc5cluea + Cluedo (Mazooma) (Scorpion 5) (set 2) + + + sc5clueb + Cluedo (Mazooma) (Scorpion 5) (set 3) + + + sc5cluec + Cluedo (Mazooma) (Scorpion 5) (set 4) + + + sc5clus + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 1) + + + sc5clusa + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 2) + + + sc5clusb + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 3) + + + sc5clusc + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 4) + + + sc5clusd + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 5) + + + sc5cluse + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 6) + + + sc5clusf + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 7) + + + sc5clusg + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 8) + + + sc5clush + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 9) + + + sc5clusi + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 10) + + + sc5clusj + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 11) + + + sc5clusk + Cluedo The Usual Suspects (Mazooma) (Scorpion 5) (set 12) + + + sc5cmani + Colour Mania (Bellfruit) (Scorpion 5) (set 1) + + + sc5cmania + Colour Mania (Bellfruit) (Scorpion 5) (set 2) + + + sc5cmanib + Colour Mania (Bellfruit) (Scorpion 5) (set 3) + + + sc5cmanic + Colour Mania (Bellfruit) (Scorpion 5) (set 4) + + + sc5cmcob + Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 1) + + + sc5cmcoba + Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 2) + + + sc5cmcobb + Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 3) + + + sc5cmcobc + Monte Carlo Or Bust Club (Qps) (Scorpion 5) (set 4) + + + sc5colmo + Colour Of Money (Bellfruit) (Scorpion 5) (set 1) + + + sc5colmoa + Colour Of Money (Bellfruit) (Scorpion 5) (set 2) + + + sc5colmob + Colour Of Money (Bellfruit) (Scorpion 5) (set 3) + + + sc5colmoc + Colour Of Money (Bellfruit) (Scorpion 5) (set 4) + + + sc5copsr + Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 1) + + + sc5copsra + Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 2) + + + sc5copsrb + Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 3) + + + sc5copsrc + Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 4) + + + sc5copsrd + Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 5) + + + sc5copsre + Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 6) + + + sc5copsrf + Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 7) + + + sc5copsrg + Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 8) + + + sc5copsrh + Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 9) + + + sc5copsri + Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 10) + + + sc5coro + Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 1) + + + sc5coro0 + Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 4) + + + sc5coro1 + Coronation Street Triple Bingo (V013) (Mazooma) (Scorpion 5) (set 2) + + + sc5coroa + Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 1) + + + sc5corob + Coronation Street Triple Arcade (V061) (Mazooma) (Scorpion 5) (set 1) + + + sc5coroc + Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 1) + + + sc5corod + Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 2) + + + sc5coroe + Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 1) + + + sc5corof + Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 2) + + + sc5corog + Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 3) + + + sc5coroh + Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 4) + + + sc5coroi + Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 3) + + + sc5coroj + Coronation Street Triple Arcade (V063) (Mazooma) (Scorpion 5) (set 1) + + + sc5corok + Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 2) + + + sc5corol + Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 3) + + + sc5corom + Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 2) + + + sc5coron + Coronation Street Triple Arcade (V061) (Mazooma) (Scorpion 5) (set 2) + + + sc5coroo + Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 4) + + + sc5corop + Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 5) + + + sc5coroq + Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 5) + + + sc5coror + Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 6) + + + sc5coros + Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 7) + + + sc5corot + Coronation Street Single (PR2252) (Mazooma) (Scorpion 5) (set 8) + + + sc5corou + Coronation Street Triple Bingo (V012) (Mazooma) (Scorpion 5) (set 6) + + + sc5corov + Coronation Street Triple Arcade (V063) (Mazooma) (Scorpion 5) (set 2) + + + sc5corow + Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 4) + + + sc5corox + Coronation Street Triple (PR2249) (Mazooma) (Scorpion 5) (set 5) + + + sc5coroy + Coronation Street (PR2252) (Mazooma) (Scorpion 5) (set 3) + + + sc5coroz + Coronation Street Triple Bingo (V013) (Mazooma) (Scorpion 5) (set 1) + + + sc5corst + Coronation Street (Bellfruit) (Scorpion 5) (set 1) + + + sc5corsta + Coronation Street (Bellfruit) (Scorpion 5) (set 2) + + + sc5corstb + Coronation Street (Bellfruit) (Scorpion 5) (set 3) + + + sc5corstc + Coronation Street (Bellfruit) (Scorpion 5) (set 4) + + + sc5count + Countdown (Bellfruit) (Scorpion 5) (set 1) + + + sc5counta + Countdown (Bellfruit) (Scorpion 5) (set 2) + + + sc5cpays + Crazy Pays (Bellfruit) (Scorpion 5) (set 1) + + + sc5cpaysa + Crazy Pays (Bellfruit) (Scorpion 5) (set 2) + + + sc5cpen1 + Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 1) + + + sc5cpen1a + Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 2) + + + sc5cpen1b + Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 3) + + + sc5cpen1c + Public Enemy No1 Club (Bellfruit) (Scorpion 5) (set 4) + + + sc5craid + Cash Raider (Mazooma) (Scorpion 5) (set 1) + + + sc5craida + Cash Raider (Mazooma) (Scorpion 5) (set 2) + + + sc5crcpt + Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 1) + + + sc5crcpta + Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 2) + + + sc5crcptb + Cops 'n' Robbers Community Party (Bellfruit) (Scorpion 5) (set 3) + + + sc5crnjw + Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 1) + + + sc5crnjwa + Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 2) + + + sc5crnjwb + Crown Jewels (PR1608) (Bellfruit) (Scorpion 5) (set 3) + + + sc5crotr + Cops 'n' Robbers On The Run (Bellfruit) (Scorpion 5) (set 1) + + + sc5crotra + Cops 'n' Robbers On The Run (Bellfruit) (Scorpion 5) (set 2) + + + sc5crsc + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 1) + + + sc5crsca + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 2) + + + sc5crscb + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 3) + + + sc5crscc + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 4) + + + sc5crscd + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 5) + + + sc5crsce + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 6) + + + sc5crscf + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 7) + + + sc5crscg + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 8) + + + sc5crsch + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 9) + + + sc5crsci + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 10) + + + sc5crscj + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 11) + + + sc5crsck + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 12) + + + sc5crscl + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 13) + + + sc5crscm + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 14) + + + sc5crscn + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 15) + + + sc5crsco + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 16) + + + sc5crscp + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 17) + + + sc5crscq + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 18) + + + sc5crscr + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 19) + + + sc5crscs + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 20) + + + sc5crsct + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 21) + + + sc5crscu + Cops 'n' Robbers Safe Cracker (Bellfruit) (Scorpion 5) (set 22) + + + sc5crsgc + Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 1) + + + sc5crsgca + Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 2) + + + sc5crsgcb + Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 3) + + + sc5crsgcc + Cops 'n' Robbers Smash 'n' Grab Club (Bellfruit) (Scorpion 5) (set 4) + + + sc5crsgr + Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 1) + + + sc5crsgra + Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 2) + + + sc5crsgrb + Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 3) + + + sc5crsgrc + Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 4) + + + sc5crsgrd + Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 5) + + + sc5crsgre + Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 6) + + + sc5crsgrf + Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 7) + + + sc5crsgrg + Cops 'n' Robbers Smash 'n' Grab (Bellfruit) (Scorpion 5) (set 8) + + + sc5ctit + Cash Of The Titans (Bellfruit) (Scorpion 5) (set 1) + + + sc5ctita + Cash Of The Titans (Bellfruit) (Scorpion 5) (set 2) + + + sc5ctl + Cop The Lot (Bellfruit) (Scorpion 5) (set 1) + + + sc5ctla + Cop The Lot (Bellfruit) (Scorpion 5) (set 2) + + + sc5ctlb + Cop The Lot (Bellfruit) (Scorpion 5) (set 3) + + + sc5ctlc + Cop The Lot (Bellfruit) (Scorpion 5) (set 4) + + + sc5cvega + Cash Vegas (Bellfruit) (Scorpion 5) (set 1) + + + sc5cvegaa + Cash Vegas (Bellfruit) (Scorpion 5) (set 2) + + + sc5czfr + Fruit Crazy Triple / Crazy Keys (QPS) (Scorpion 5) + + + sc5ddbbc + Deal or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 1) + + + sc5ddbbca + Deal or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 2) + + + sc5ddbbcb + Deal or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 3) + + + sc5ddbbcc + Deal or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 4) + + + sc5ddbbcd + Deal or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 5) + + + sc5ddbbce + Deal or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 6) + + + sc5ddbbcf + Deal or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 7) + + + sc5ddbbcg + Deal or No Deal Beat The Banker Casino (Bellfruit) (Scorpion 5) (set 8) + + + sc5ddosh + Doctor Dosh (Bellfruit) (Scorpion 5) (set 1) + + + sc5ddosha + Doctor Dosh (Bellfruit) (Scorpion 5) (set 2) + + + sc5ddply + Deal or No Deal Player's Choice (Bellfruit) (Scorpion 5) (set 1) + + + sc5ddplya + Deal or No Deal Player's Choice (Bellfruit) (Scorpion 5) (set 2) + + + sc5ddptg + Deal or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 1) + + + sc5ddptga + Deal or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 2) + + + sc5ddptgb + Deal or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 3) + + + sc5ddptgc + Deal or No Deal Play The Game (Bellfruit) (Scorpion 5) (set 4) + + + sc5devil + Devil Of A Deal (Mazooma) (Scorpion 5) (set 1) + + + sc5devila + Devil Of A Deal (Mazooma) (Scorpion 5) (set 2) + + + sc5devilb + Devil Of A Deal (Mazooma) (Scorpion 5) (set 3) + + + sc5devilc + Devil Of A Deal (Mazooma) (Scorpion 5) (set 4) + + + sc5dhh + Dough Ho Ho (Bellfruit) (Scorpion 5) (set 1) + + + sc5dhha + Dough Ho Ho (Bellfruit) (Scorpion 5) (set 2) + + + sc5dhhb + Dough Ho Ho (Bellfruit) (Scorpion 5) (set 3) + + + sc5dhhc + Dough Ho Ho (Bellfruit) (Scorpion 5) (set 4) + + + sc5dhhd + Dough Ho Ho (Bellfruit) (Scorpion 5) (set 5) + + + sc5dhhe + Dough Ho Ho (Bellfruit) (Scorpion 5) (set 6) + + + sc5dhhf + Dough Ho Ho (Bellfruit) (Scorpion 5) (set 7) + + + sc5dhhg + Dough Ho Ho (Bellfruit) (Scorpion 5) (set 8) + + + sc5dmine + Diamond Mine (Bellfruit) (Scorpion 5) (set 1) + + + sc5dminea + Diamond Mine (Bellfruit) (Scorpion 5) (set 2) + + + sc5dmineb + Diamond Mine (Bellfruit) (Scorpion 5) (set 3) + + + sc5dminec + Diamond Mine (Bellfruit) (Scorpion 5) (set 4) + + + sc5dmined + Diamond Mine (Bellfruit) (Scorpion 5) (set 5) + + + sc5dminee + Diamond Mine (Bellfruit) (Scorpion 5) (set 6) + + + sc5dminef + Diamond Mine (Bellfruit) (Scorpion 5) (set 7) + + + sc5dmineg + Diamond Mine (Bellfruit) (Scorpion 5) (set 8) + + + sc5dmineh + Diamond Mine (Bellfruit) (Scorpion 5) (set 9) + + + sc5dminei + Diamond Mine (Bellfruit) (Scorpion 5) (set 10) + + + sc5dminej + Diamond Mine (Bellfruit) (Scorpion 5) (set 11) + + + sc5dminek + Diamond Mine (Bellfruit) (Scorpion 5) (set 12) + + + sc5dminel + Diamond Mine (Bellfruit) (Scorpion 5) (set 13) + + + sc5dnd + Deal or No Deal (Bellfruit) (Scorpion 5) (set 1) + + + sc5dnda + Deal or No Deal (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndb + Deal or No Deal (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndbb + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndbba + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndbbb + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndbbc + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndbbd + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndbbe + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndbbf + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndbbg + Deal or No Deal Break The Bank (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndbc + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndbca + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndbcb + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndbcc + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndbcd + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndbce + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndbcf + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndbcg + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndbch + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndbci + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndbcj + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndbck + Deal or No Deal Box Clever (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndbd + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndbda + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndbdb + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndbdc + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndbdd + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndbde + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndbdf + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndbdg + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndbdh + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndbdi + Deal or No Deal The Big Deal (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndbe + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndbea + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndbeb + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndbec + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndbed + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndbee + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndbef + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndbeg + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndbeh + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndbei + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndbej + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndbek + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndbel + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndbem + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndben + Deal or No Deal Beat The Banker (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndbl + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndbla + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndblb + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndblc + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndbld + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndble + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndblf + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndblg + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndblh + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndbli + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndblj + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndblk + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndbll + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndblm + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndbln + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndblo + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 16) + + + sc5dndblp + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 17) + + + sc5dndblq + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 18) + + + sc5dndblr + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 19) + + + sc5dndbls + Deal or No Deal Beat The Banker Club (Bellfruit) (Scorpion 5) (set 20) + + + sc5dndbo + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndboa + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndbob + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndboc + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndbod + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndboe + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndbof + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndbog + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndboh + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndboi + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndboj + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndbok + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndbol + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndbom + Deal or No Deal Banker's Bonus (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndbq + Deal or No Deal Beat The Banker (Qps) (Scorpion 5) (set 1) + + + sc5dndbqa + Deal or No Deal Beat The Banker (Qps) (Scorpion 5) (set 2) + + + sc5dndbqb + Deal or No Deal Beat The Banker (Qps) (Scorpion 5) (set 3) + + + sc5dndbqc + Deal or No Deal Beat The Banker (Qps) (Scorpion 5) (set 4) + + + sc5dndbqd + Deal or No Deal Beat The Banker (Qps) (Scorpion 5) (set 5) + + + sc5dndbqe + Deal or No Deal Beat The Banker (Qps) (Scorpion 5) (set 6) + + + sc5dndbr + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndbra + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndbrb + Deal or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndbrc + Deal or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndbrd + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndbre + Deal or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndbrf + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndbrg + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndbrh + Deal or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndbri + Deal or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndbrj + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndbrk + Deal or No Deal The Big Reds (PR3018) (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndbrl + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndbrm + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndbrn + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndbro + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndbrp + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndbrq + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndbrr + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndbrs + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndbrt + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndbru + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 16) + + + sc5dndbrv + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 17) + + + sc5dndbrw + Deal or No Deal The Big Reds (PR3011) (Bellfruit) (Scorpion 5) (set 18) + + + sc5dndc + Deal or No Deal (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndc2 + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndc2a + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndc2b + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndc2c + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndc2d + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndc2e + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndc2f + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndc2g + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndc2h + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndc2i + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndc2j + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndc2k + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndc2l + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndc2m + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndc2n + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndc2o + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 16) + + + sc5dndc2p + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 17) + + + sc5dndc2q + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 18) + + + sc5dndc2r + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 19) + + + sc5dndc2s + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 20) + + + sc5dndc2t + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 21) + + + sc5dndc2u + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 22) + + + sc5dndc2v + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 23) + + + sc5dndc2w + Deal or No Deal Casino (PR1964) (Bellfruit) (Scorpion 5) (set 24) + + + sc5dndc3 + Deal or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndc3a + Deal or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndc3b + Deal or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndc3c + Deal or No Deal Casino (PR1965) (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndca + Deal or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndcaa + Deal or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndcab + Deal or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndcac + Deal or No Deal The Crazy Chair Arcade (PR3250) (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndcad + Deal or No Deal The Crazy Chair Arcade (PR3362) (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndcae + Deal or No Deal The Crazy Chair Arcade (PR3362) (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndcb + Deal or No Deal Club Beat The Banker (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndcba + Deal or No Deal Club Beat The Banker (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndcc + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndcca + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndccb + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndccc + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndccd + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndcce + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndccf + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndccg + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndcch + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndcci + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndccj + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndcck + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndccl + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndccm + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndccn + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndcco + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 16) + + + sc5dndccp + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 17) + + + sc5dndccq + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 18) + + + sc5dndccr + Deal or No Deal The Crazy Chair (Bellfruit) (Scorpion 5) (set 19) + + + sc5dndcl + Deal or No Deal Club (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndcla + Deal or No Deal Club (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndcr + Deal or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndcra + Deal or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndcrb + Deal or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndcrc + Deal or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndcrd + Deal or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndcre + Deal or No Deal Cops 'n' Robbers (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndcs + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndcsa + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndcsb + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndcsc + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndcsd + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndcse + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndcsf + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndcsg + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndcsh + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndcsi + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndcsj + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndcsk + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndcsl + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndcsm + Deal or No Deal Casino (PR1954) (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndd + Deal or No Deal (Bellfruit) (Scorpion 5) (set 5) + + + sc5dnddd + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 5) (set 1) + + + sc5dnddda + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndddb + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndddc + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndddd + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 5) (set 5) + + + sc5dnddde + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndddf + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndddg + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndddh + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndddi + Deal or No Deal Double Deal or No Deal (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndde + Deal or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 1) + + + sc5dnddea + Deal or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 2) + + + sc5dnddeb + Deal or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 3) + + + sc5dnddec + Deal or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndded + Deal or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 5) + + + sc5dnddee + Deal or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 6) + + + sc5dnddef + Deal or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 7) + + + sc5dnddeg + Deal or No Deal Desert Island Deal (Bellfruit) (Scorpion 5) (set 8) + + + sc5dnddf + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 1) + + + sc5dnddfa + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 2) + + + sc5dnddfb + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 3) + + + sc5dnddfc + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 4) + + + sc5dnddfd + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 5) + + + sc5dnddfe + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 6) + + + sc5dnddff + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 7) + + + sc5dnddfg + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 8) + + + sc5dnddfh + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 9) + + + sc5dnddfi + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 10) + + + sc5dnddfj + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 11) + + + sc5dnddfk + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 12) + + + sc5dnddfl + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 13) + + + sc5dnddfm + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 14) + + + sc5dnddfn + Deal or No Deal The Dream Factory (Bellfruit) (Scorpion 5) (set 15) + + + sc5dnddi + Deal or No Deal Diamond (Bellfruit) (Scorpion 5) (set 1) + + + sc5dnddia + Deal or No Deal Diamond (Bellfruit) (Scorpion 5) (set 2) + + + sc5dnddib + Deal or No Deal Diamond (Bellfruit) (Scorpion 5) (set 3) + + + sc5dnddic + Deal or No Deal Diamond (Bellfruit) (Scorpion 5) (set 4) + + + sc5dnddo + Deal or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 1) + + + sc5dnddoa + Deal or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 2) + + + sc5dnddob + Deal or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 3) + + + sc5dnddoc + Deal or No Deal Dream Offer (Bellfruit) (Scorpion 5) (set 4) + + + sc5dnddt + Deal or No Deal Double Take (Bellfruit) (Scorpion 5) (set 1) + + + sc5dnddta + Deal or No Deal Double Take (Bellfruit) (Scorpion 5) (set 2) + + + sc5dnddtb + Deal or No Deal Double Take (Bellfruit) (Scorpion 5) (set 3) + + + sc5dnddtc + Deal or No Deal Double Take (Bellfruit) (Scorpion 5) (set 4) + + + sc5dnddtd + Deal or No Deal Double Take (Bellfruit) (Scorpion 5) (set 5) + + + sc5dnddte + Deal or No Deal Double Take (Bellfruit) (Scorpion 5) (set 6) + + + sc5dnddtf + Deal or No Deal Double Take (Bellfruit) (Scorpion 5) (set 7) + + + sc5dnddw + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 1) + + + sc5dnddwa + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 2) + + + sc5dnddwb + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 3) + + + sc5dnddwc + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 4) + + + sc5dnddwd + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 5) + + + sc5dnddwe + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 6) + + + sc5dnddwf + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 7) + + + sc5dnddwg + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 8) + + + sc5dnddwh + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 9) + + + sc5dnddwi + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 10) + + + sc5dnddwj + Deal or No Deal The Deal Wheel (Bellfruit) (Scorpion 5) (set 11) + + + sc5dnde + Deal or No Deal (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndf + Deal or No Deal (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndfl + Deal or No Deal Feeling Lucky (PR3432) (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndfla + Deal or No Deal Feeling Lucky (PR3432) (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndflb + Deal or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndflc + Deal or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndfld + Deal or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndfle + Deal or No Deal Feeling Lucky (PR3309) (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndg + Deal or No Deal (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndgl + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndgla + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndglb + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndglc + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndgld + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndgle + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndglf + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndglg + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndglh + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndgli + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndglj + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndglk + Deal or No Deal Gold (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndgo + Deal or No Deal Game On (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndgoa + Deal or No Deal Game On (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndh + Deal or No Deal (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndhf + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndhfa + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndhfb + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndhfc + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndhfd + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndhfe + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndhff + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndhfg + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndhfh + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndhfi + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndhfj + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndhfk + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndhfl + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndhfm + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndhfn + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndhfo + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 16) + + + sc5dndhfp + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 17) + + + sc5dndhfq + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 18) + + + sc5dndhfr + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 19) + + + sc5dndhfs + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 20) + + + sc5dndhft + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 21) + + + sc5dndhfu + Deal or No Deal Hall Of Fame (Bellfruit) (Scorpion 5) (set 22) + + + sc5dndi + Deal or No Deal (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndj + Deal or No Deal (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndk + Deal or No Deal (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndl + Deal or No Deal (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndld + Deal or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndlda + Deal or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndldb + Deal or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndldc + Deal or No Deal Live The Dream (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndlp + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndlpa + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndlpb + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndlpc + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndlpd + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndlpe + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndlpf + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndlpg + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndlph + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndlpi + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndlpj + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndlpk + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndlpl + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndlpm + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndlpn + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndlpo + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 16) + + + sc5dndlpp + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 17) + + + sc5dndlpq + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 18) + + + sc5dndlpr + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 19) + + + sc5dndlps + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 20) + + + sc5dndlpt + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 21) + + + sc5dndlpu + Deal or No Deal Let's Play Deal or No Deal (Bellfruit) (Scorpion 5) (set 22) + + + sc5dndm + Deal or No Deal (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndmb + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndmba + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndmbb + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndmbc + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndmbd + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndmbe + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndmbf + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndmbg + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndmbh + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndmbi + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndmbj + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndmbk + Deal or No Deal Make Or Break (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndmd + Deal or No Deal Mega Deal or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndmda + Deal or No Deal Mega Deal or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndmdb + Deal or No Deal Mega Deal or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndmdc + Deal or No Deal Mega Deal or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndmdd + Deal or No Deal Mega Deal or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndmde + Deal or No Deal Mega Deal or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndmdf + Deal or No Deal Mega Deal or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndmdg + Deal or No Deal Mega Deal or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndmdh + Deal or No Deal Mega Deal or No Deal (PR3496) (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndmdi + Deal or No Deal Mega Deal or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndmdj + Deal or No Deal Mega Deal or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndmdk + Deal or No Deal Mega Deal or No Deal (PR3411) (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndn + Deal or No Deal (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndo + Deal or No Deal (Bellfruit) (Scorpion 5) (set 16) + + + sc5dndp + Deal or No Deal (Bellfruit) (Scorpion 5) (set 17) + + + sc5dndpa + Deal or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndpaa + Deal or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndpab + Deal or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndpac + Deal or No Deal Play It Again (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndpc + Deal or No Deal The Players Choice (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndpca + Deal or No Deal The Players Choice (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndpd + Deal or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndpda + Deal or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndpdb + Deal or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndpdc + Deal or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndpdd + Deal or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndpde + Deal or No Deal The Perfect Deal (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndpg + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndpga + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndpgb + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndpgc + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndpgd + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndpge + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndpgf + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndpgg + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndpgh + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndpgi + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndpgj + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndpgk + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndpgl + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndpgm + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndpgn + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndpgo + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 16) + + + sc5dndpgp + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 17) + + + sc5dndpgq + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 18) + + + sc5dndpgr + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 19) + + + sc5dndpgs + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 20) + + + sc5dndpgt + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 21) + + + sc5dndpgu + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 22) + + + sc5dndpgv + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 23) + + + sc5dndpgw + Deal or No Deal The Perfect Game (Bellfruit) (Scorpion 5) (set 24) + + + sc5dndpl + Deal or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndpla + Deal or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndplb + Deal or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndplc + Deal or No Deal The Perfect Game Classic (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndq + Deal or No Deal (Bellfruit) (Scorpion 5) (set 18) + + + sc5dndr + Deal or No Deal (Bellfruit) (Scorpion 5) (set 19) + + + sc5dndra + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndraa + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndrab + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndrac + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndrad + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndrae + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndraf + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndrag + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndrah + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndrai + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndraj + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndrak + Deal or No Deal Red Alert (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndrr + Deal or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndrra + Deal or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndrrb + Deal or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndrrc + Deal or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndrrd + Deal or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndrre + Deal or No Deal Road To Riches (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndrt + Deal or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndrta + Deal or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndrtb + Deal or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndrtc + Deal or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndrtd + Deal or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndrte + Deal or No Deal The Banker Rings Twice (Bellfruit) (Scorpion 5) (set 6) + + + sc5dnds + Deal or No Deal (Bellfruit) (Scorpion 5) (set 20) + + + sc5dndsi + Deal or No Deal Simply Deal or No Deal (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndsia + Deal or No Deal Simply Deal or No Deal (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndsib + Deal or No Deal Simply Deal or No Deal (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndsic + Deal or No Deal Simply Deal or No Deal (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndsid + Deal or No Deal Simply Deal or No Deal (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndt + Deal or No Deal (Bellfruit) (Scorpion 5) (set 21) + + + sc5dndtb + Deal or No Deal Think Big (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndtba + Deal or No Deal Think Big (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndtp + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndtpa + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndtpb + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndtpc + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndtpd + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndtpe + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndtpf + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndtpg + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndtph + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndtpi + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndtpj + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndtpk + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndtpl + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndtpm + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndtpn + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndtpo + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 16) + + + sc5dndtpp + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 17) + + + sc5dndtpq + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 18) + + + sc5dndtpr + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 19) + + + sc5dndtps + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 20) + + + sc5dndtpt + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 21) + + + sc5dndtpu + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 22) + + + sc5dndtpv + Deal or No Deal The Power (Bellfruit) (Scorpion 5) (set 23) + + + sc5dndtr + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndtra + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndtrb + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndtrc + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndtrd + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndtre + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndtrf + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndtrg + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndtrh + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndtri + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndtrj + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndtrk + Deal or No Deal Think Red (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndwb + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndwba + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndwbb + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndwbc + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndwbd + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndwbe + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndwbf + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndwbg + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndwbh + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndwbi + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndwbj + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndwbk + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndwbl + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndwbm + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndwbn + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndwbo + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 16) + + + sc5dndwbp + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 17) + + + sc5dndwbq + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 18) + + + sc5dndwbr + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 19) + + + sc5dndwbs + Deal or No Deal What's In Your Box (Bellfruit) (Scorpion 5) (set 20) + + + sc5dndwc + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndwca + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndwcb + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndwcc + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndwcd + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndwce + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndwcf + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndwcg + Deal or No Deal The Walk Of Wealth Classic (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndwi + Deal or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndwia + Deal or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndwib + Deal or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndwic + Deal or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndwid + Deal or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndwie + Deal or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndwif + Deal or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndwig + Deal or No Deal What's In Your Box Casino (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndww + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndwwa + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndwwb + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndwwc + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndwwd + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndwwe + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndwwf + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndwwg + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndwwh + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 9) + + + sc5dndwwi + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 10) + + + sc5dndwwj + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 11) + + + sc5dndwwk + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 12) + + + sc5dndwwl + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 13) + + + sc5dndwwm + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 14) + + + sc5dndwwn + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 15) + + + sc5dndwwo + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 16) + + + sc5dndwwp + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 17) + + + sc5dndwwq + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 18) + + + sc5dndwwr + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 19) + + + sc5dndwws + Deal or No Deal The Walk Of Wealth (Bellfruit) (Scorpion 5) (set 20) + + + sc5dndys + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 1) + + + sc5dndysa + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 2) + + + sc5dndysb + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 3) + + + sc5dndysc + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 4) + + + sc5dndysd + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 5) + + + sc5dndyse + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 6) + + + sc5dndysf + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 7) + + + sc5dndysg + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 8) + + + sc5dndysh + Deal or No Deal It's Your Show (Bellfruit) (Scorpion 5) (set 9) + + + sc5dough + Dough Selecta (Bellfruit) (Scorpion 5) (set 1) + + + sc5dougha + Dough Selecta (Bellfruit) (Scorpion 5) (set 2) + + + sc5dracp + Drac Pack (Bellfruit) (Scorpion 5) (set 1) + + + sc5dracpa + Drac Pack (Bellfruit) (Scorpion 5) (set 2) + + + sc5ducks + Ducks Of Hazzard (Mazooma) (Scorpion 5) + + + sc5emmer + Emmerdale (Mazooma) (Scorpion 5) (set 1) + + + sc5emmera + Emmerdale (Mazooma) (Scorpion 5) (set 2) + + + sc5fast + Fast Cash (Qps) (Scorpion 5) + + + sc5fbspn + Fat Boy Spin (Bellfruit) (Scorpion 5) (set 1) + + + sc5fbspna + Fat Boy Spin (Bellfruit) (Scorpion 5) (set 2) + + + sc5fdice + Fire 'n' Dice (Bellfruit) (Scorpion 5) (set 1) + + + sc5fdicea + Fire 'n' Dice (Bellfruit) (Scorpion 5) (set 2) + + + sc5fgbh + Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 1) + + + sc5fgbha + Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 2) + + + sc5fgbhb + Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 3) + + + sc5fgbhc + Family Guy Booze Hound (Bellfruit) (Scorpion 5) (set 4) + + + sc5fggp + Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 1) + + + sc5fggpa + Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 2) + + + sc5fggpb + Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 3) + + + sc5fggpc + Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 4) + + + sc5fggpd + Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 5) + + + sc5fggpe + Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 6) + + + sc5fggpf + Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 7) + + + sc5fggpg + Family Guy Griffin Plumbing (Bellfruit) (Scorpion 5) (set 8) + + + sc5fguy + Family Guy (Bellfruit) (Scorpion 5) (set 1) + + + sc5fguya + Family Guy (Bellfruit) (Scorpion 5) (set 2) + + + sc5fguyb + Family Guy (Bellfruit) (Scorpion 5) (set 3) + + + sc5fguyc + Family Guy (Bellfruit) (Scorpion 5) (set 4) + + + sc5fguyd + Family Guy (Bellfruit) (Scorpion 5) (set 5) + + + sc5fguye + Family Guy (Bellfruit) (Scorpion 5) (set 6) + + + sc5fguyf + Family Guy (Bellfruit) (Scorpion 5) (set 7) + + + sc5fguyg + Family Guy (Bellfruit) (Scorpion 5) (set 8) + + + sc5fires + Firestarter (Bellfruit) (Scorpion 5) (set 1) + + + sc5firesa + Firestarter (Bellfruit) (Scorpion 5) (set 2) + + + sc5firesb + Firestarter (Bellfruit) (Scorpion 5) (set 3) + + + sc5firesc + Firestarter (Bellfruit) (Scorpion 5) (set 4) + + + sc5floop + Fruit Loops (Mazooma) (Scorpion 5) (set 1) + + + sc5floopa + Fruit Loops (Mazooma) (Scorpion 5) (set 2) + + + sc5fmj + Full Metal Jackpot (Mazooma) (Scorpion 5) (set 1) + + + sc5fmja + Full Metal Jackpot (Mazooma) (Scorpion 5) (set 2) + + + sc5fnclb + Fight Night Club (Bellfruit) (Scorpion 5) (set 1) + + + sc5fnclba + Fight Night Club (Bellfruit) (Scorpion 5) (set 2) + + + sc5fnclbb + Fight Night Club (Bellfruit) (Scorpion 5) (set 3) + + + sc5fnclbc + Fight Night Club (Bellfruit) (Scorpion 5) (set 4) + + + sc5fnclbd + Fight Night Club (Bellfruit) (Scorpion 5) (set 5) + + + sc5fnclbe + Fight Night Club (Bellfruit) (Scorpion 5) (set 6) + + + sc5frcrz + Fruit Crazy (Mazooma) (Scorpion 5) (set 1) + + + sc5frcrza + Fruit Crazy (Mazooma) (Scorpion 5) (set 2) + + + sc5ftcas + Flash The Cash (Mazooma) (Scorpion 5) (set 1) + + + sc5ftcasa + Flash The Cash (Mazooma) (Scorpion 5) (set 2) + + + sc5gball + Golden Balls (Bellfruit) (Scorpion 5) (set 1) + + + sc5gballa + Golden Balls (Bellfruit) (Scorpion 5) (set 2) + + + sc5gballb + Golden Balls (Bellfruit) (Scorpion 5) (set 3) + + + sc5gballc + Golden Balls (Bellfruit) (Scorpion 5) (set 4) + + + sc5gd + Gold Digger (Bellfruit) (Scorpion 5) (set 1) + + + sc5gda + Gold Digger (Bellfruit) (Scorpion 5) (set 2) + + + sc5gdclb + Gold Digger Club (Bellfruit) (Scorpion 5) (set 1) + + + sc5gdclba + Gold Digger Club (Bellfruit) (Scorpion 5) (set 2) + + + sc5gdclbb + Gold Digger Club (Bellfruit) (Scorpion 5) (set 3) + + + sc5gdclbc + Gold Digger Club (Bellfruit) (Scorpion 5) (set 4) + + + sc5gdclbd + Gold Digger Club (Bellfruit) (Scorpion 5) (set 5) + + + sc5gdclbe + Gold Digger Club (Bellfruit) (Scorpion 5) (set 6) + + + sc5gdclbf + Gold Digger Club (Bellfruit) (Scorpion 5) (set 7) + + + sc5gdclbg + Gold Digger Club (Bellfruit) (Scorpion 5) (set 8) + + + sc5gdclbh + Gold Digger (PR3509) (Bellfruit) (Scorpion 5) (set 1) + + + sc5gdclbi + Gold Digger (PR3509) (Bellfruit) (Scorpion 5) (set 2) + + + sc5gdclbj + Gold Digger Club (PR3429) (Bellfruit) (Scorpion 5) (set 1) + + + sc5gdclbk + Gold Digger Club (PR3429) (Bellfruit) (Scorpion 5) (set 2) + + + sc5gdmz + Gold Diggers (Mazooma) (Scorpion 5) (set 1) + + + sc5gdmza + Gold Diggers (Mazooma) (Scorpion 5) (set 2) + + + sc5ggame + Golden Game (Mazooma) (Scorpion 5) (set 1) + + + sc5ggamea + Golden Game (Mazooma) (Scorpion 5) (set 2) + + + sc5ggameb + Golden Game (Mazooma) (Scorpion 5) (set 3) + + + sc5ggamec + Golden Game (Mazooma) (Scorpion 5) (set 4) + + + sc5ggamed + Golden Game (Mazooma) (Scorpion 5) (set 5) + + + sc5ggg + Grand Golden Game (Mazooma) (Scorpion 5) (set 1) + + + sc5ggga + Grand Golden Game (Mazooma) (Scorpion 5) (set 3) + + + sc5gggb + Grand Golden Game (Mazooma) (Scorpion 5) (set 2) + + + sc5gggc + Grand Golden Game (Mazooma) (Scorpion 5) (set 4) + + + sc5glad + Gladiator (Mazooma) (Scorpion 5) (set 1) + + + sc5glada + Gladiator (Mazooma) (Scorpion 5) (set 2) + + + sc5gladb + Gladiator (Mazooma) (Scorpion 5) (set 3) + + + sc5gladc + Gladiator (Mazooma) (Scorpion 5) (set 4) + + + sc5gldfv + Gold Fever (Bellfruit) (Scorpion 5) (set 1) + + + sc5gldfva + Gold Fever (Bellfruit) (Scorpion 5) (set 2) + + + sc5gldfvb + Gold Fever (Bellfruit) (Scorpion 5) (set 3) + + + sc5gldfvc + Gold Fever (Bellfruit) (Scorpion 5) (set 4) + + + sc5gldfvd + Gold Fever (Bellfruit) (Scorpion 5) (set 5) + + + sc5gldfve + Gold Fever (Bellfruit) (Scorpion 5) (set 6) + + + sc5gldfvf + Gold Fever (Bellfruit) (Scorpion 5) (set 7) + + + sc5gldfvg + Gold Fever (Bellfruit) (Scorpion 5) (set 8) + + + sc5gldgo + Golden Goals (Bellfruit) (Scorpion 5) (set 1) + + + sc5gldgoa + Golden Goals (Bellfruit) (Scorpion 5) (set 2) + + + sc5gldsp + Golden Spinner (PR2203) (Mazooma) (Scorpion 5) + + + sc5gldspa + Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 1) + + + sc5gldspb + Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 2) + + + sc5gldspc + Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 3) + + + sc5gldspd + Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 1) + + + sc5gldspe + Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 4) + + + sc5gldspf + Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 2) + + + sc5gldspg + Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 5) + + + sc5gldsph + Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 3) + + + sc5gldspi + Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 6) + + + sc5gldspj + Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 7) + + + sc5gldspk + Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 8) + + + sc5gldspl + Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 9) + + + sc5gldspm + Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 10) + + + sc5gldspn + Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 4) + + + sc5gldspo + Golden Spinner Bingo (011) (PR2546) (Mazooma) (Scorpion 5) (set 11) + + + sc5gldspp + Golden Spinner Arcade (061) (PR2546) (Mazooma) (Scorpion 5) (set 5) + + + sc5gmclb + Grand Master Cash (Bellfruit) (Scorpion 5) (set 1) + + + sc5gmclba + Grand Master Cash (Bellfruit) (Scorpion 5) (set 2) + + + sc5gmclbb + Grand Master Cash (Bellfruit) (Scorpion 5) (set 3) + + + sc5gmclbc + Grand Master Cash (Bellfruit) (Scorpion 5) (set 4) + + + sc5grq + Get Rich Quick (Bellfruit) (Scorpion 5) (set 1) + + + sc5grqa + Get Rich Quick (Bellfruit) (Scorpion 5) (set 2) + + + sc5grqb + Get Rich Quick (Bellfruit) (Scorpion 5) (set 3) + + + sc5grqc + Get Rich Quick (Bellfruit) (Scorpion 5) (set 4) + + + sc5gunp + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 1) + + + sc5gunpa + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 2) + + + sc5gunpb + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 3) + + + sc5gunpc + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 4) + + + sc5gunpd + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 5) + + + sc5gunpe + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 6) + + + sc5gunpf + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 7) + + + sc5gunpg + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 8) + + + sc5gunph + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 9) + + + sc5gunpi + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 10) + + + sc5gunpj + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 11) + + + sc5gunpk + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 12) + + + sc5gunpl + Gunpowder Slot (Bellfruit) (Scorpion 5) (set 13) + + + sc5hapnt + Happy Notes (Bellfruit) (Scorpion 5) (set 1) + + + sc5hapnta + Happy Notes (Bellfruit) (Scorpion 5) (set 2) + + + sc5hapntb + Happy Notes (Bellfruit) (Scorpion 5) (set 3) + + + sc5hapntc + Happy Notes (Bellfruit) (Scorpion 5) (set 4) + + + sc5hapntd + Happy Notes (Bellfruit) (Scorpion 5) (set 5) + + + sc5hapnte + Happy Notes (Bellfruit) (Scorpion 5) (set 6) + + + sc5hapntf + Happy Notes (Bellfruit) (Scorpion 5) (set 7) + + + sc5hapntg + Happy Notes (Bellfruit) (Scorpion 5) (set 8) + + + sc5hellb + Hells Bells (Bellfruit) (Scorpion 5) (set 1) + + + sc5hellba + Hells Bells (Bellfruit) (Scorpion 5) (set 2) + + + sc5hill + Hill Billionaire (Bellfruit) (Scorpion 5) (set 1) + + + sc5hilla + Hill Billionaire (Bellfruit) (Scorpion 5) (set 2) + + + sc5hillb + Hill Billionaire (Bellfruit) (Scorpion 5) (set 3) + + + sc5hirol + High Roller (Mazooma) (Scorpion 5) (set 1) + + + sc5hirola + High Roller (Mazooma) (Scorpion 5) (set 2) + + + sc5hirolb + High Roller (Mazooma) (Scorpion 5) (set 3) + + + sc5hirolc + High Roller (Mazooma) (Scorpion 5) (set 4) + + + sc5hirold + High Roller (Mazooma) (Scorpion 5) (set 5) + + + sc5hirole + High Roller (Mazooma) (Scorpion 5) (set 6) + + + sc5hiss + Hissing Quid (Qps) (Scorpion 5) (set 1) + + + sc5hissa + Hissing Quid (Qps) (Scorpion 5) (set 2) + + + sc5hissb + Hissing Quid (Qps) (Scorpion 5) (set 3) + + + sc5hissc + Hissing Quid (Qps) (Scorpion 5) (set 4) + + + sc5hog + Road Hog (PR3208) (Bellfruit) (Scorpion 5) (set 3) + + + sc5hoga + Road Hog (PR3208) (Bellfruit) (Scorpion 5) (set 4) + + + sc5hotdg + Hot Dog (Bellfruit) (Scorpion 5) (set 1) + + + sc5hotdga + Hot Dog (Bellfruit) (Scorpion 5) (set 2) + + + sc5hotdgb + Hot Dog (Bellfruit) (Scorpion 5) (set 3) + + + sc5hotdgc + Hot Dog (Bellfruit) (Scorpion 5) (set 4) + + + sc5hotdgd + Hot Dog (Bellfruit) (Scorpion 5) (set 5) + + + sc5hotdge + Hot Dog (Bellfruit) (Scorpion 5) (set 6) + + + sc5hotrd + Hot Rod (Bellfruit) (Scorpion 5) (set 1) + + + sc5hotrda + Hot Rod (Bellfruit) (Scorpion 5) (set 2) + + + sc5hotsh + Hot Shot (Bellfruit) (Scorpion 5) (set 1) + + + sc5hotsha + Hot Shot (Bellfruit) (Scorpion 5) (set 2) + + + sc5hotshb + Hot Shot (Bellfruit) (Scorpion 5) (set 3) + + + sc5hotshc + Hot Shot (Bellfruit) (Scorpion 5) (set 4) + + + sc5hotshd + Hot Shot (Bellfruit) (Scorpion 5) (set 5) + + + sc5hotshe + Hot Shot (Bellfruit) (Scorpion 5) (set 6) + + + sc5hotshf + Hot Shot (Bellfruit) (Scorpion 5) (set 7) + + + sc5hotshg + Hot Shot (Bellfruit) (Scorpion 5) (set 8) + + + sc5hotshh + Hot Shot (Bellfruit) (Scorpion 5) (set 9) + + + sc5hotshi + Hot Shot (Bellfruit) (Scorpion 5) (set 10) + + + sc5hotshj + Hot Shot (Bellfruit) (Scorpion 5) (set 11) + + + sc5hotshk + Hot Shot (Bellfruit) (Scorpion 5) (set 12) + + + sc5hotshl + Hot Shot (Bellfruit) (Scorpion 5) (set 13) + + + sc5hotshm + Hot Shot (Bellfruit) (Scorpion 5) (set 14) + + + sc5hotshn + Hot Shot (Bellfruit) (Scorpion 5) (set 15) + + + sc5hotsho + Hot Shot (Bellfruit) (Scorpion 5) (set 16) + + + sc5hotshp + Hot Shot (Bellfruit) (Scorpion 5) (set 17) + + + sc5hotshq + Hot Shot (Bellfruit) (Scorpion 5) (set 18) + + + sc5hotwd + Hot Wad (Bellfruit) (Scorpion 5) (set 1) + + + sc5hotwda + Hot Wad (Bellfruit) (Scorpion 5) (set 2) + + + sc5hotwdb + Hot Wad (Bellfruit) (Scorpion 5) (set 3) + + + sc5hotwdc + Hot Wad (Bellfruit) (Scorpion 5) (set 4) + + + sc5hotwdd + Hot Wad (Bellfruit) (Scorpion 5) (set 5) + + + sc5hotwde + Hot Wad (Bellfruit) (Scorpion 5) (set 6) + + + sc5hotwdf + Hot Wad (Bellfruit) (Scorpion 5) (set 7) + + + sc5hotwdg + Hot Wad (Bellfruit) (Scorpion 5) (set 8) + + + sc5hulk + The Hulk (Bellfruit) (Scorpion 5) (set 1) + + + sc5hulka + The Hulk (Bellfruit) (Scorpion 5) (set 2) + + + sc5hulkb + The Hulk (Bellfruit) (Scorpion 5) (set 3) + + + sc5hulkc + The Hulk (Bellfruit) (Scorpion 5) (set 4) + + + sc5hulkd + The Hulk (Bellfruit) (Scorpion 5) (set 5) + + + sc5hulke + The Hulk (Bellfruit) (Scorpion 5) (set 6) + + + sc5hulkf + The Hulk (Bellfruit) (Scorpion 5) (set 7) + + + sc5hulkg + The Hulk (Bellfruit) (Scorpion 5) (set 8) + + + sc5hulkh + The Hulk (Bellfruit) (Scorpion 5) (set 9) + + + sc5hulki + The Hulk (Bellfruit) (Scorpion 5) (set 10) + + + sc5iab + It's A Bullseye (Mazooma) (Scorpion 5) (set 1) + + + sc5iaba + It's A Bullseye (Mazooma) (Scorpion 5) (set 2) + + + sc5ijbdo + Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 1) + + + sc5ijbdoa + Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 2) + + + sc5ijbdob + Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 3) + + + sc5ijbdoc + Italian Job - Blow The Doors Off (Qps) (Scorpion 5) (set 4) + + + sc5ijob + Italian Job (Mazooma) (Scorpion 5) (set 1) + + + sc5ijoba + Italian Job (Mazooma) (Scorpion 5) (set 2) + + + sc5ijobb + Italian Job (Mazooma) (Scorpion 5) (set 3) + + + sc5ijobc + Italian Job (Mazooma) (Scorpion 5) (set 4) + + + sc5ijobd + Italian Job (Mazooma) (Scorpion 5) (set 5) + + + sc5ijobe + Italian Job (Mazooma) (Scorpion 5) (set 6) + + + sc5ijobf + Italian Job (Mazooma) (Scorpion 5) (set 7) + + + sc5ijobg + Italian Job (Mazooma) (Scorpion 5) (set 8) + + + sc5ijobh + Italian Job (Mazooma) (Scorpion 5) (set 9) + + + sc5ijobi + Italian Job (Mazooma) (Scorpion 5) (set 10) + + + sc5inspn + Inner Spin (Mazooma) (Scorpion 5) (set 1) + + + sc5inspna + Inner Spin (Mazooma) (Scorpion 5) (set 2) + + + sc5jjok + Jackpot Jokers (Bellfruit) (Scorpion 5) (set 1) + + + sc5jjoka + Jackpot Jokers (Bellfruit) (Scorpion 5) (set 2) + + + sc5kingx + King X (PR2077) (Mazooma) (Scorpion 5) (set 1) + + + sc5kingxa + King X (PR2077) (Mazooma) (Scorpion 5) (set 2) + + + sc5kingxb + King X Triple (PR2279) (Mazooma) (Scorpion 5) (set 1) + + + sc5kingxc + King X 3P (PR2336) (Mazooma) (Scorpion 5) (set 1) + + + sc5kingxd + King X Triple (PR2279) (Mazooma) (Scorpion 5) (set 2) + + + sc5kingxe + King X 3P (PR2336) (Mazooma) (Scorpion 5) (set 2) + + + sc5ldvl + Little Devil (Mazooma) (Scorpion 5) (set 1) + + + sc5ldvla + Little Devil (Mazooma) (Scorpion 5) (set 2) + + + sc5ldvlb + Little Devil (Mazooma) (Scorpion 5) (set 3) + + + sc5ldvlc + Little Devil (Mazooma) (Scorpion 5) (set 4) + + + sc5ldvld + Little Devil (Mazooma) (Scorpion 5) (set 5) + + + sc5ldvle + Little Devil (Mazooma) (Scorpion 5) (set 6) + + + sc5lotrr + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 1) + + + sc5lotrra + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 2) + + + sc5lotrrb + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 3) + + + sc5lotrrc + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 4) + + + sc5lotrrd + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 5) + + + sc5lotrre + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 6) + + + sc5lotrrf + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 7) + + + sc5lotrrg + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 8) + + + sc5lotrrh + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 9) + + + sc5lotrri + Lord Of The Rings - Return Of The King (Bellfruit) (Scorpion 5) (set 10) + + + sc5manic + Manic Miner (Bellfruit) (Scorpion 5) (set 1) + + + sc5manica + Manic Miner (Bellfruit) (Scorpion 5) (set 2) + + + sc5manicb + Manic Miner (Bellfruit) (Scorpion 5) (set 3) + + + sc5manicc + Manic Miner (Bellfruit) (Scorpion 5) (set 4) + + + sc5manicd + Manic Miner (Bellfruit) (Scorpion 5) (set 5) + + + sc5manice + Manic Miner (Bellfruit) (Scorpion 5) (set 6) + + + sc5manicf + Manic Miner (Bellfruit) (Scorpion 5) (set 7) + + + sc5manicg + Manic Miner (Bellfruit) (Scorpion 5) (set 8) + + + sc5manich + Manic Miner (Bellfruit) (Scorpion 5) (set 9) + + + sc5manici + Manic Miner (Bellfruit) (Scorpion 5) (set 10) + + + sc5manicj + Manic Miner (Bellfruit) (Scorpion 5) (set 11) + + + sc5manick + Manic Miner (Bellfruit) (Scorpion 5) (set 12) + + + sc5manicl + Manic Miner (Bellfruit) (Scorpion 5) (set 13) + + + sc5manicm + Manic Miner (Bellfruit) (Scorpion 5) (set 14) + + + sc5manicn + Manic Miner (Bellfruit) (Scorpion 5) (set 15) + + + sc5manico + Manic Miner (Bellfruit) (Scorpion 5) (set 16) + + + sc5manicp + Manic Miner (Bellfruit) (Scorpion 5) (set 17) + + + sc5manicq + Manic Miner (Bellfruit) (Scorpion 5) (set 18) + + + sc5manicr + Manic Miner (Bellfruit) (Scorpion 5) (set 19) + + + sc5manics + Manic Miner (Bellfruit) (Scorpion 5) (set 20) + + + sc5manict + Manic Miner (Bellfruit) (Scorpion 5) (set 21) + + + sc5manicu + Manic Miner (Bellfruit) (Scorpion 5) (set 22) + + + sc5manicv + Manic Miner (Bellfruit) (Scorpion 5) (set 23) + + + sc5manicw + Manic Miner (Bellfruit) (Scorpion 5) (set 24) + + + sc5manicx + Manic Miner (Bellfruit) (Scorpion 5) (set 25) + + + sc5manicy + Manic Miner (Bellfruit) (Scorpion 5) (set 26) + + + sc5mcas + Monopoly Casino (Mazooma) (Scorpion 5) (set 1) + + + sc5mcasa + Monopoly Casino (Mazooma) (Scorpion 5) (set 3) + + + sc5mcasb + Monopoly Casino (Mazooma) (Scorpion 5) (set 2) + + + sc5mcasc + Monopoly Casino (Mazooma) (Scorpion 5) (set 4) + + + sc5mdm + Monopoly Double Money (Bellfruit) (Scorpion 5) (set 1) + + + sc5mdma + Monopoly Double Money (Bellfruit) (Scorpion 5) (set 2) + + + sc5mdmb + Monopoly Double Money (Bellfruit) (Scorpion 5) (set 3) + + + sc5mdmc + Monopoly Double Money (Bellfruit) (Scorpion 5) (set 4) + + + sc5mhn + Monopoly Here & Now (Mazooma) (Scorpion 5) (set 1) + + + sc5mhna + Monopoly Here & Now (Mazooma) (Scorpion 5) (set 2) + + + sc5mhnb + Monopoly Here & Now (Mazooma) (Scorpion 5) (set 3) + + + sc5mhnc + Monopoly Here & Now (Mazooma) (Scorpion 5) (set 4) + + + sc5mhnd + Monopoly Here & Now (Mazooma) (Scorpion 5) (set 5) + + + sc5mhne + Monopoly Here & Now (Mazooma) (Scorpion 5) (set 6) + + + sc5mhp + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 1) + + + sc5mhpa + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 2) + + + sc5mhpb + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 3) + + + sc5mhpc + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 4) + + + sc5mhpd + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 5) + + + sc5mhpe + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 6) + + + sc5mhpf + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 7) + + + sc5mhpg + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 8) + + + sc5mhph + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 9) + + + sc5mhpi + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 10) + + + sc5mhpj + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 11) + + + sc5mhpk + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 12) + + + sc5mhpl + Monopoly Hot Property (Bellfruit) (Scorpion 5) (set 13) + + + sc5mmad + Money Madness (Mazooma) (Scorpion 5) (set 1) + + + sc5mmada + Money Madness (Mazooma) (Scorpion 5) (set 2) + + + sc5mmadb + Money Madness (Mazooma) (Scorpion 5) (set 3) + + + sc5mmadc + Money Madness (Mazooma) (Scorpion 5) (set 4) + + + sc5mmb + Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 1) + + + sc5mmba + Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 2) + + + sc5mmbb + Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 3) + + + sc5mmbc + Monopoly Money Bags (PR3413) (Bellfruit) (Scorpion 5) (set 4) + + + sc5mmbd + Monopoly Money Bags (PR1911) (Bellfruit) (Scorpion 5) (set 1) + + + sc5mmbe + Monopoly Money Bags (PR1911) (Bellfruit) (Scorpion 5) (set 2) + + + sc5mmm + Mental Money Monsters (Mazooma) (Scorpion 5) (set 1) + + + sc5mmma + Mental Money Monsters (Mazooma) (Scorpion 5) (set 2) + + + sc5mmmb + Mental Money Monsters (Mazooma) (Scorpion 5) (set 3) + + + sc5mmmc + Mental Money Monsters (Mazooma) (Scorpion 5) (set 4) + + + sc5mobob + Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 1) + + + sc5moboba + Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 2) + + + sc5mobobb + Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 1) + + + sc5mobobc + Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 2) + + + sc5mobobd + Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 3) + + + sc5mobobe + Monopoly Boom Or Bust Classic (Bellfruit) (Scorpion 5) (set 4) + + + sc5mobobf + Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 3) + + + sc5mobobg + Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 4) + + + sc5mobobh + Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 5) + + + sc5mobobi + Monopoly Boom Or Bust (Bellfruit) (Scorpion 5) (set 6) + + + sc5mogta + Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 1) + + + sc5mogtaa + Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 2) + + + sc5mogtab + Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 3) + + + sc5mogtac + Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 4) + + + sc5mogtad + Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 5) + + + sc5mogtae + Monopoly Go To Auction (Bellfruit) (Scorpion 5) (set 6) + + + sc5mombc + Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 1) + + + sc5mombca + Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 2) + + + sc5mombcb + Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 3) + + + sc5mombcc + Monopoly Money Bags Club (PR1945) (BFM) (Scorpion 5) (set 4) + + + sc5momil + Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 1) + + + sc5momila + Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 2) + + + sc5momilb + Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 3) + + + sc5momilc + Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 4) + + + sc5momild + Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 5) + + + sc5momile + Monopoly Millionaire (Bellfruit) (Scorpion 5) (set 6) + + + sc5moms + Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 1) + + + sc5momsa + Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 2) + + + sc5momsb + Money Spinner (PR2395) (Qps) (Scorpion 5) (set 1) + + + sc5momsc + Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 3) + + + sc5momsd + Monopoly Money Spinner (PR2496) (Qps) (Scorpion 5) (set 4) + + + sc5momse + Money Spinner (PR2395) (Qps) (Scorpion 5) (set 2) + + + sc5monky + Monkey Business / Toss The Monkey (Mazooma) (Scorpion 5) (set 1) + + + sc5monkya + Monkey Business / Toss The Monkey (Mazooma) (Scorpion 5) (set 2) + + + sc5monop + Monopoly (Mazooma) (Scorpion 5) + + + sc5monsp + Money Spinner (Bellfruit) (Scorpion 5) (set 1) + + + sc5monspa + Money Spinner (Bellfruit) (Scorpion 5) (set 2) + + + sc5monwa + Monopoly Win Again (Qps) (Scorpion 5) (set 1) + + + sc5monwaa + Monopoly Win Again (Qps) (Scorpion 5) (set 2) + + + sc5mopl + Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 1) + + + sc5mopla + Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 2) + + + sc5moplb + Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 3) + + + sc5moplc + Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 4) + + + sc5mopld + Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 5) + + + sc5mople + Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 6) + + + sc5moplf + Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 7) + + + sc5moplg + Monopoly Property Ladder (Bellfruit) (Scorpion 5) (set 8) + + + sc5mor2r + Monopoly Road To Riches (Qps) (Scorpion 5) (set 1) + + + sc5mor2ra + Monopoly Road To Riches (Qps) (Scorpion 5) (set 2) + + + sc5mowow + Monopoly Wheel Of Wealth (Mazooma) (Scorpion 5) (set 1) + + + sc5mowowb + Monopoly Wheel Of Wealth (Mazooma) (Scorpion 5) (set 2) + + + sc5mr2r + Monopoly Road To Riches (PR2329) (Mazooma) (Scorpion 5) (set 1) + + + sc5mr2ra + Monopoly Road To Riches (PR2329) (Mazooma) (Scorpion 5) (set 2) + + + sc5mr2rb + Monopoly Road To Riches Club (PR2457) (Mazooma) (Scorpion 5) + + + sc5mrh + Monopoly Red Hot (Mazooma) (Scorpion 5) (set 1) + + + sc5mrha + Monopoly Red Hot (Mazooma) (Scorpion 5) (set 2) + + + sc5mrrcl + Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 1) + + + sc5mrrcla + Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 2) + + + sc5mrrclb + Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 3) + + + sc5mrrclc + Monopoly Road To Riches Club (Mazooma) (Scorpion 5) (set 4) + + + sc5mww + Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 1) + + + sc5mwwa + Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 2) + + + sc5mwwb + Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 3) + + + sc5mwwc + Monopoly Wonders Of The World (Mazooma) (Scorpion 5) (set 4) + + + sc5newcm + The Colour Of Money New (Bellfruit) (Scorpion 5) (set 1) + + + sc5newcma + The Colour Of Money New (Bellfruit) (Scorpion 5) (set 2) + + + sc5newcmb + The Colour Of Money New (Bellfruit) (Scorpion 5) (set 3) + + + sc5newcmc + The Colour Of Money New (Bellfruit) (Scorpion 5) (set 4) + + + sc5newcmd + The Colour Of Money New (Bellfruit) (Scorpion 5) (set 5) + + + sc5newcme + The Colour Of Money New (Bellfruit) (Scorpion 5) (set 6) + + + sc5nmare + A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 1) + + + sc5nmarea + A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 2) + + + sc5nmareb + A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 3) + + + sc5nmarec + A Nightmare On Elm Street (Bellfruit) (Scorpion 5) (set 4) + + + sc5nunsb + Nuns 'n' Roses (Bellfruit) (Scorpion 5) + + + sc5nunsm + Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 1) + + + sc5nunsma + Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 2) + + + sc5nunsmb + Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 3) + + + sc5nunsmc + Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 4) + + + sc5nunsmd + Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 5) + + + sc5nunsme + Nuns 'n' Roses (Mazooma) (Scorpion 5) (set 6) + + + sc5parot + Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 1) + + + sc5parota + Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 2) + + + sc5parotb + Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 3) + + + sc5parotc + Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 4) + + + sc5parotd + Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 5) + + + sc5parote + Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 6) + + + sc5parotf + Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 7) + + + sc5parotg + Parrots Of The Caribbean (Bellfruit) (Scorpion 5) (set 8) + + + sc5pilep + Pile On The Pounds (Qps) (Scorpion 5) (set 1) + + + sc5pilepa + Pile On The Pounds (Qps) (Scorpion 5) (set 2) + + + sc5pilepb + Pile On The Pounds (Qps) (Scorpion 5) (set 3) + + + sc5pilepc + Pile On The Pounds (Qps) (Scorpion 5) (set 4) + + + sc5pircl + The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 1) + + + sc5pircla + The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 2) + + + sc5pirclb + The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 3) + + + sc5pirclc + The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 4) + + + sc5pircld + The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 5) + + + sc5pircle + The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 6) + + + sc5pirclf + The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 7) + + + sc5pirclg + The Prize Is Right Club (Bellfruit) (Scorpion 5) (set 8) + + + sc5plays + 28 Plays Later (Qps) (Scorpion 5) (set 1) + + + sc5playsa + 28 Plays Later (Qps) (Scorpion 5) (set 2) + + + sc5pog + Pots Of Gold (Bellfruit) (Scorpion 5) (set 1) + + + sc5poga + Pots Of Gold (Bellfruit) (Scorpion 5) (set 2) + + + sc5pogb + Pots Of Gold (Bellfruit) (Scorpion 5) (set 3) + + + sc5pogc + Pots Of Gold (Bellfruit) (Scorpion 5) (set 4) + + + sc5pogd + Pots Of Gold (Bellfruit) (Scorpion 5) (set 5) + + + sc5poge + Pots Of Gold (Bellfruit) (Scorpion 5) (set 6) + + + sc5pogf + Pots Of Gold (Bellfruit) (Scorpion 5) (set 7) + + + sc5pogg + Pots Of Gold (Bellfruit) (Scorpion 5) (set 8) + + + sc5pompa + Up Pompay (Bellfruit) (Scorpion 5) (set 1) + + + sc5pompaa + Up Pompay (Bellfruit) (Scorpion 5) (set 2) + + + sc5pompab + Up Pompay (Bellfruit) (Scorpion 5) (set 3) + + + sc5pony + Pony Express (Bellfruit) (Scorpion 5) (set 1) + + + sc5ponya + Pony Express (Bellfruit) (Scorpion 5) (set 2) + + + sc5ponyb + Pony Express (Bellfruit) (Scorpion 5) (set 3) + + + sc5ponyc + Pony Express (Bellfruit) (Scorpion 5) (set 4) + + + sc5ponyd + Pony Express (Bellfruit) (Scorpion 5) (set 5) + + + sc5ponye + Pony Express (Bellfruit) (Scorpion 5) (set 6) + + + sc5popey + Popeye (Mazooma) (Scorpion 5) (set 1) + + + sc5popeya + Popeye (Mazooma) (Scorpion 5) (set 2) + + + sc5popeyb + Popeye (Mazooma) (Scorpion 5) (set 3) + + + sc5popeyc + Popeye (Mazooma) (Scorpion 5) (set 4) + + + sc5popeyd + Popeye (Mazooma) (Scorpion 5) (set 5) + + + sc5popeye + Popeye (Mazooma) (Scorpion 5) (set 6) + + + sc5popeyf + Popeye (Mazooma) (Scorpion 5) (set 7) + + + sc5popeyg + Popeye (Mazooma) (Scorpion 5) (set 8) + + + sc5potog + Pot Of Gold (QPS) (Scorpion 5) (set 1) + + + sc5potoga + Pot Of Gold (QPS) (Scorpion 5) (set 2) + + + sc5potogb + Pot Of Gold (QPS) (Scorpion 5) (set 3) + + + sc5potogc + Pot Of Gold (QPS) (Scorpion 5) (set 4) + + + sc5potogd + Pot Of Gold (QPS) (Scorpion 5) (set 5) + + + sc5potoge + Pot Of Gold (QPS) (Scorpion 5) (set 6) + + + sc5potogf + Pot Of Gold (QPS) (Scorpion 5) (set 7) + + + sc5potogg + Pot Of Gold (QPS) (Scorpion 5) (set 8) + + + sc5potogh + Pot Of Gold (QPS) (Scorpion 5) (set 9) + + + sc5potogi + Pot Of Gold (QPS) (Scorpion 5) (set 10) + + + sc5potp + Pick Of The Pack (Bellfruit) (Scorpion 5) (set 1) + + + sc5potpa + Pick Of The Pack (Bellfruit) (Scorpion 5) (set 2) + + + sc5potsm + Pots Of Luck (Mazooma) (Scorpion 5) (set 1) + + + sc5potsma + Pots Of Luck (Mazooma) (Scorpion 5) (set 2) + + + sc5pp + Pink Panther (Mazooma) (Scorpion 5) (set 1) + + + sc5ppa + Pink Panther (Mazooma) (Scorpion 5) (set 2) + + + sc5ppb + Pink Panther (Mazooma) (Scorpion 5) (set 3) + + + sc5ppc + Pink Panther (Mazooma) (Scorpion 5) (set 4) + + + sc5ppcr + Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 1) + + + sc5ppcra + Pink Panther Clouseau's Revenge (Mazooma) (Scorpion 5) + + + sc5ppcrb + Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 2) + + + sc5ppcrc + Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 3) + + + sc5ppcrd + Pink Panther Clouseau's Revenge (Mazooma / QPS) (Scorpion 5) (set 4) + + + sc5ppctc + Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 1) + + + sc5ppctca + Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 2) + + + sc5ppctcb + Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 3) + + + sc5ppctcc + Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 4) + + + sc5ppctcd + Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 5) + + + sc5ppctce + Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 6) + + + sc5ppctcf + Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 7) + + + sc5ppctcg + Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 8) + + + sc5ppctch + Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 9) + + + sc5ppctci + Pink Panther Crack The Code (Bellfruit) (Scorpion 5) (set 10) + + + sc5ppd + Pink Panther (Mazooma) (Scorpion 5) (set 5) + + + sc5ppdym + Pink Panther Double Your Money (Mazooma / QPS) (Scorpion 5) (set 1) + + + sc5ppdyma + Pink Panther Double Your Money (Mazooma / QPS) (Scorpion 5) (set 2) + + + sc5ppe + Pink Panther (Mazooma) (Scorpion 5) (set 6) + + + sc5ppf + Pink Panther (Mazooma) (Scorpion 5) (set 7) + + + sc5ppg + Pink Panther (Mazooma) (Scorpion 5) (set 8) + + + sc5ppsag + Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 1) + + + sc5ppsaga + Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 2) + + + sc5ppsagb + Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 3) + + + sc5ppsagc + Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 4) + + + sc5ppsagd + Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 5) + + + sc5ppsage + Pink Panther Strikes Again (Mazooma) (Scorpion 5) (set 6) + + + sc5pwrbl + Powerball (Bellfruit) (Scorpion 5) (set 1) + + + sc5pwrbla + Powerball (Bellfruit) (Scorpion 5) (set 2) + + + sc5pwrpl + Power Play (Mazooma) (Scorpion 5) (set 1) + + + sc5pwrpla + Power Play (Mazooma) (Scorpion 5) (set 2) + + + sc5qual + Quality Streak (Bellfruit) (Scorpion 5) (set 1) + + + sc5quala + Quality Streak (Bellfruit) (Scorpion 5) (set 2) + + + sc5qualb + Quality Streak (Bellfruit) (Scorpion 5) (set 3) + + + sc5qualc + Quality Streak (Bellfruit) (Scorpion 5) (set 4) + + + sc5quald + Quality Streak (Bellfruit) (Scorpion 5) (set 5) + + + sc5quale + Quality Streak (Bellfruit) (Scorpion 5) (set 6) + + + sc5qualf + Quality Streak (Bellfruit) (Scorpion 5) (set 7) + + + sc5qualg + Quality Streak (Bellfruit) (Scorpion 5) (set 8) + + + sc5qualh + Quality Streak (Bellfruit) (Scorpion 5) (set 9) + + + sc5quali + Quality Streak (Bellfruit) (Scorpion 5) (set 10) + + + sc5qualj + Quality Streak (Bellfruit) (Scorpion 5) (set 11) + + + sc5qualk + Quality Streak (Bellfruit) (Scorpion 5) (set 12) + + + sc5quall + Quality Streak (Bellfruit) (Scorpion 5) (set 13) + + + sc5qualm + Quality Streak (Bellfruit) (Scorpion 5) (set 14) + + + sc5quidv + Quid Vicious (Mazooma) (Scorpion 5) (set 1) + + + sc5quidva + Quid Vicious (Mazooma) (Scorpion 5) (set 2) + + + sc5quidvb + Quid Vicious (Mazooma) (Scorpion 5) (set 3) + + + sc5quidvc + Quid Vicious (Mazooma) (Scorpion 5) (set 4) + + + sc5quidvd + Quid Vicious (Mazooma) (Scorpion 5) (set 5) + + + sc5quidve + Quid Vicious (Mazooma) (Scorpion 5) (set 6) + + + sc5quidvf + Quid Vicious (Mazooma) (Scorpion 5) (set 7) + + + sc5quidvg + Quid Vicious (Mazooma) (Scorpion 5) (set 8) + + + sc5rainb + Over The Rainbow (Bellfruit) (Scorpion 5) (set 1) + + + sc5rainba + Over The Rainbow (Bellfruit) (Scorpion 5) (set 2) + + + sc5rainbb + Over The Rainbow (Bellfruit) (Scorpion 5) (set 3) + + + sc5rainbc + Over The Rainbow (Bellfruit) (Scorpion 5) (set 4) + + + sc5rainbd + Over The Rainbow (Bellfruit) (Scorpion 5) (set 5) + + + sc5rainbe + Over The Rainbow (Bellfruit) (Scorpion 5) (set 6) + + + sc5redsq + Red Square (Mazooma) (Scorpion 5) (set 1) + + + sc5redsqa + Red Square (Mazooma) (Scorpion 5) (set 2) + + + sc5rhclb + Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 1) + + + sc5rhclba + Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 2) + + + sc5rhclbb + Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 3) + + + sc5rhclbc + Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 4) + + + sc5rhclbd + Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 5) + + + sc5rhclbe + Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 6) + + + sc5rhclbf + Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 7) + + + sc5rhclbg + Road Hog Club (PR3248) (Bellfruit) (Scorpion 5) (set 8) + + + sc5rhr + Red Hot Reels (Qps) (Scorpion 5) (set 1) + + + sc5rhra + Red Hot Reels (Qps) (Scorpion 5) (set 2) + + + sc5rhrb + Red Hot Reels (Qps) (Scorpion 5) (set 3) + + + sc5rhrc + Red Hot Reels (Qps) (Scorpion 5) (set 4) + + + sc5rhrd + Red Hot Reels (Qps) (Scorpion 5) (set 5) + + + sc5rhre + Red Hot Reels (Qps) (Scorpion 5) (set 6) + + + sc5rhx + Red Hot X (Mazooma) (Scorpion 5) (set 1) + + + sc5rhxa + Red Hot X (Mazooma) (Scorpion 5) (set 2) + + + sc5rhxb + Red Hot X (Mazooma) (Scorpion 5) (set 3) + + + sc5rhxc + Red Hot X (Mazooma) (Scorpion 5) (set 4) + + + sc5rhxcs + Red Hot X Casino (Mazooma) (Scorpion 5) (set 1) + + + sc5rhxcsa + Red Hot X Casino (Mazooma) (Scorpion 5) (set 2) + + + sc5rhxd + Red Hot X (Mazooma) (Scorpion 5) (set 5) + + + sc5rhxe + Red Hot X (Mazooma) (Scorpion 5) (set 6) + + + sc5rhxf + Red Hot X (Mazooma) (Scorpion 5) (set 7) + + + sc5rosts + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 1) + + + sc5rostsa + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 2) + + + sc5rostsb + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 3) + + + sc5rostsc + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 4) + + + sc5rostsd + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 5) + + + sc5rostse + Ronnie O'Sullivan's Tournament Snooker (Bellfruit) (Scorpion 5) (set 6) + + + sc5rovrt + Rovers Return (Mazooma) (Scorpion 5) (set 1) + + + sc5rovrta + Rovers Return (Mazooma) (Scorpion 5) (set 2) + + + sc5rovrtb + Rovers Return (Mazooma) (Scorpion 5) (set 3) + + + sc5rovrtc + Rovers Return (Mazooma) (Scorpion 5) (set 4) + + + sc5rssh + Reel Spin Shady (Mazooma) (Scorpion 5) (set 1) + + + sc5rssha + Reel Spin Shady (Mazooma) (Scorpion 5) (set 2) + + + sc5sbull + Super Bullseye (Bellfruit) (Scorpion 5) (set 1) + + + sc5sbulla + Super Bullseye (Bellfruit) (Scorpion 5) (set 2) + + + sc5sfts + Shoot For The Stars (Bellfruit) (Scorpion 5) (set 1) + + + sc5sftsa + Shoot For The Stars (Bellfruit) (Scorpion 5) (set 2) + + + sc5sftsb + Shoot For The Stars (Bellfruit) (Scorpion 5) (set 3) + + + sc5sftsc + Shoot For The Stars (Bellfruit) (Scorpion 5) (set 4) + + + sc5sharp + Sharp Shooter (Voodoo) (Scorpion 5) (set 1) + + + sc5sharpa + Sharp Shooter (Voodoo) (Scorpion 5) (set 2) + + + sc5showt + Showtime (Bellfruit) (Scorpion 5) (set 1) + + + sc5showta + Showtime (Bellfruit) (Scorpion 5) (set 2) + + + sc5showtb + Showtime (Bellfruit) (Scorpion 5) (set 3) + + + sc5showtc + Showtime (Bellfruit) (Scorpion 5) (set 4) + + + sc5showtd + Showtime (Bellfruit) (Scorpion 5) (set 5) + + + sc5showte + Showtime (Bellfruit) (Scorpion 5) (set 6) + + + sc5showtf + Showtime (Bellfruit) (Scorpion 5) (set 7) + + + sc5showtg + Showtime (Bellfruit) (Scorpion 5) (set 8) + + + sc5showth + Showtime (Bellfruit) (Scorpion 5) (set 9) + + + sc5showti + Showtime (Bellfruit) (Scorpion 5) (set 10) + + + sc5showtj + Showtime (Bellfruit) (Scorpion 5) (set 11) + + + sc5showtk + Showtime (Bellfruit) (Scorpion 5) (set 12) + + + sc5showtl + Showtime (Bellfruit) (Scorpion 5) (set 13) + + + sc5showtm + Showtime (Bellfruit) (Scorpion 5) (set 14) + + + sc5showtn + Showtime (Bellfruit) (Scorpion 5) (set 15) + + + sc5showto + Showtime (Bellfruit) (Scorpion 5) (set 16) + + + sc5showtp + Showtime (Bellfruit) (Scorpion 5) (set 17) + + + sc5showtq + Showtime (Bellfruit) (Scorpion 5) (set 18) + + + sc5showtr + Showtime (Bellfruit) (Scorpion 5) (set 19) + + + sc5showts + Showtime (Bellfruit) (Scorpion 5) (set 20) + + + sc5sitwi + Spin It To Win It (Bellfruit) (Scorpion 5) (set 1) + + + sc5sitwia + Spin It To Win It (Bellfruit) (Scorpion 5) (set 2) + + + sc5slad + Snakes & Ladders (Bellfruit) (Scorpion 5) (set 1) + + + sc5slada + Snakes & Ladders (Bellfruit) (Scorpion 5) (set 2) + + + sc5sladb + Snakes & Ladders (Bellfruit) (Scorpion 5) (set 3) + + + sc5sladc + Snakes & Ladders (Bellfruit) (Scorpion 5) (set 4) + + + sc5sladd + Snakes & Ladders (Bellfruit) (Scorpion 5) (set 5) + + + sc5slade + Snakes & Ladders (Bellfruit) (Scorpion 5) (set 6) + + + sc5sladf + Snakes & Ladders (Bellfruit) (Scorpion 5) (set 7) + + + sc5sladg + Snakes & Ladders (Bellfruit) (Scorpion 5) (set 8) + + + sc5sleut + Super Sleuth (Mazooma) (Scorpion 5) (set 1) + + + sc5sleuta + Super Sleuth (Mazooma) (Scorpion 5) (set 2) + + + sc5smtm + Show Me The Money (Mazooma) (Scorpion 5) (set 1) + + + sc5smtma + Show Me The Money (Mazooma) (Scorpion 5) (set 2) + + + sc5spice + Spice It Up (Bellfruit) (Scorpion 5) (set 1) + + + sc5spicea + Spice It Up (Bellfruit) (Scorpion 5) (set 3) + + + sc5spiceb + Spice It Up (Bellfruit) (Scorpion 5) (set 2) + + + sc5spicec + Spice It Up (Bellfruit) (Scorpion 5) (set 4) + + + sc5spiced + Spice It Up (Bellfruit) (Scorpion 5) (set 5) + + + sc5spicee + Spice It Up (Bellfruit) (Scorpion 5) (set 6) + + + sc5spnrn + Spinning Around (Mazooma) (Scorpion 5) (set 1) + + + sc5spnrna + Spinning Around (Mazooma) (Scorpion 5) (set 2) + + + sc5srace + Streak Racer (Bellfruit) (Scorpion 5) (set 1) + + + sc5sracea + Streak Racer (Bellfruit) (Scorpion 5) (set 2) + + + sc5srrcl + Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 1) + + + sc5srrcla + Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 2) + + + sc5srrclb + Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 3) + + + sc5srrclc + Snake Rattle 'n' Roll Club (Bellfruit) (Scorpion 5) (set 4) + + + sc5srrqp + Snake Rattle & Roll (Qps) (Scorpion 5) (set 1) + + + sc5srrqpa + Snake Rattle & Roll (Qps) (Scorpion 5) (set 2) + + + sc5sumit + Summit Up (Qps) (Scorpion 5) (set 1) + + + sc5sumita + Summit Up (Qps) (Scorpion 5) (set 2) + + + sc5sus + Suits U Sir (Qps) (Scorpion 5) (set 1) + + + sc5susa + Suits U Sir (Qps) (Scorpion 5) (set 2) + + + sc5susb + Suits U Sir (Qps) (Scorpion 5) (set 3) + + + sc5susc + Suits U Sir (Qps) (Scorpion 5) (set 4) + + + sc5swbak + Switch Back (Mazooma) (Scorpion 5) (set 1) + + + sc5swbaka + Switch Back (Mazooma) (Scorpion 5) (set 2) + + + sc5swywm + Spin When Your Winning (Mazooma) (Scorpion 5) (set 1) + + + sc5swywma + Spin When Your Winning (Mazooma) (Scorpion 5) (set 2) + + + sc5swywmb + Spin When Your Winning (Mazooma) (Scorpion 5) (set 3) + + + sc5swywmc + Spin When Your Winning (Mazooma) (Scorpion 5) (set 4) + + + sc5tbox + Top Box (Mazooma) (Scorpion 5) (set 1) + + + sc5tboxa + Top Box (Mazooma) (Scorpion 5) (set 2) + + + sc5tboxb + Top Box (Mazooma) (Scorpion 5) (set 3) + + + sc5tboxc + Top Box (Mazooma) (Scorpion 5) (set 4) + + + sc5tboxd + Top Box (Mazooma) (Scorpion 5) (set 5) + + + sc5tboxe + Top Box (Mazooma) (Scorpion 5) (set 6) + + + sc5tboxf + Top Box (Mazooma) (Scorpion 5) (set 7) + + + sc5tboxg + Top Box (Mazooma) (Scorpion 5) (set 8) + + + sc5tboxh + Top Box (Mazooma) (Scorpion 5) (set 9) + + + sc5tboxi + Top Box (Mazooma) (Scorpion 5) (set 10) + + + sc5tboxj + Top Box (Mazooma) (Scorpion 5) (set 11) + + + sc5tboxk + Top Box (Mazooma) (Scorpion 5) (set 12) + + + sc5tboxl + Top Box (Mazooma) (Scorpion 5) (set 13) + + + sc5tboxm + Top Box (Mazooma) (Scorpion 5) (set 14) + + + sc5tboxn + Top Box (Mazooma) (Scorpion 5) (set 15) + + + sc5tboxo + Top Box (Mazooma) (Scorpion 5) (set 16) + + + sc5tboxp + Top Box (Mazooma) (Scorpion 5) (set 17) + + + sc5tboxq + Top Box (Mazooma) (Scorpion 5) (set 18) + + + sc5tpsht + Top Of The Shots (Mazooma) (Scorpion 5) (set 1) + + + sc5tpshta + Top Of The Shots (Mazooma) (Scorpion 5) (set 2) + + + sc5tpshtb + Top Of The Shots (Mazooma) (Scorpion 5) (set 3) + + + sc5tpshtc + Top Of The Shots (Mazooma) (Scorpion 5) (set 4) + + + sc5tpshtd + Top Of The Shots (Mazooma) (Scorpion 5) (set 5) + + + sc5trail + Trailblazer (Mazooma) (Scorpion 5) (set 1) + + + sc5traila + Trailblazer (Mazooma) (Scorpion 5) (set 2) + + + sc5tsmp + Trick Shot Multi Player (Bellfruit) (Scorpion 5) (set 1) + + + sc5tsmpa + Trick Shot Multi Player (Bellfruit) (Scorpion 5) (set 2) + + + sc5ttpie + Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 1) + + + sc5ttpiea + Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 2) + + + sc5ttpieb + Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 3) + + + sc5ttpiec + Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 4) + + + sc5ttpied + Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 5) + + + sc5ttpiee + Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 6) + + + sc5ttpief + Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 7) + + + sc5ttpieg + Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 8) + + + sc5ttpieh + Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 9) + + + sc5ttpiei + Take The Piece (Bellfruit) (PR1714) (Scorpion 5) (set 10) + + + sc5typ + Take Your Pick (Bellfruit) (Scorpion 5) (set 1) + + + sc5typa + Take Your Pick (Bellfruit) (Scorpion 5) (set 2) + + + sc5typb + Take Your Pick (Bellfruit) (Scorpion 5) (set 3) + + + sc5typc + Take Your Pick (Bellfruit) (Scorpion 5) (set 4) + + + sc5vamp + Vampire Payer (Qps) (Scorpion 5) (set 1) + + + sc5vampa + Vampire Payer (Qps) (Scorpion 5) (set 2) + + + sc5viper + Viper Active (Bellfruit) (Scorpion 5) (set 1) + + + sc5vipera + Viper Active (Bellfruit) (Scorpion 5) (set 2) + + + sc5vivam + Viva Mexico (Bellfruit) (Scorpion 5) (set 1) + + + sc5vivama + Viva Mexico (Bellfruit) (Scorpion 5) (set 2) + + + sc5viz + Viz (Qps) (Scorpion 5) (set 1) + + + sc5viza + Viz (Qps) (Scorpion 5) (set 2) + + + sc5vizb + Viz (Qps) (Scorpion 5) (set 3) + + + sc5vizc + Viz (Qps) (Scorpion 5) (set 4) + + + sc5wacky + Wacky Racers (Bellfruit) (Scorpion 5) (set 1) + + + sc5wackya + Wacky Racers (Bellfruit) (Scorpion 5) (set 2) + + + sc5wackyb + Wacky Racers (Bellfruit) (Scorpion 5) (set 3) + + + sc5wackyc + Wacky Racers (Bellfruit) (Scorpion 5) (set 4) + + + sc5wca + Win Can Alley (Qps) (Scorpion 5) (set 1) + + + sc5wcaa + Win Can Alley (Qps) (Scorpion 5) (set 2) + + + sc5wcab + Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 1) + + + sc5wcac + Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 1) + + + sc5wcad + Win Can Alley (Qps) (Scorpion 5) (set 3) + + + sc5wcae + Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 2) + + + sc5wcaf + Win Can Alley (Qps) (Scorpion 5) (set 4) + + + sc5wcag + Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 2) + + + sc5wcah + Win Can Alley (Qps) (Scorpion 5) (set 5) + + + sc5wcai + Win Can Alley (Qps) (Scorpion 5) (set 6) + + + sc5wcaj + Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 3) + + + sc5wcak + Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 3) + + + sc5wcal + Win Can Alley (Qps) (Scorpion 5) (set 7) + + + sc5wcam + Win Can Alley (5 pound 10p version) (Qps) (Scorpion 5) (set 4) + + + sc5wcan + Win Can Alley (Qps) (Scorpion 5) (set 8) + + + sc5wcao + Win Can Alley (5 pound 10p Arcade version) (Qps) (Scorpion 5) (set 4) + + + sc5wild + Wild Reels (Mazooma) (Scorpion 5) (set 1) + + + sc5wilda + Wild Reels (Mazooma) (Scorpion 5) (set 2) + + + sc5wldjk + Wild Jackpots (Mazooma) (Scorpion 5) (set 1) + + + sc5wldjka + Wild Jackpots (Mazooma) (Scorpion 5) (set 2) + + + sc5wok + Wok n' Roll (Bellfruit) (Scorpion 5) (set 1) + + + sc5woka + Wok n' Roll (Bellfruit) (Scorpion 5) (set 2) + + + sc5wotw + War Of The Wads (Mazooma) (Scorpion 5) (set 1) + + + sc5wotwa + War Of The Wads (Mazooma) (Scorpion 5) (set 2) + + + sc6dndem + Deal or No Deal Easy Money (Scorpion 6, 9561082) + + + sc6dndema + Deal or No Deal Easy Money (Scorpion 6, 9561082, protocol) + + + sc6dndemb + Deal or No Deal Easy Money (Scorpion 6, 9560933) + + + sc6dndemc + Deal or No Deal Easy Money (Scorpion 6, 9560933, protocol) + + + sc_091 + Safe Cracker (0.91) + + + sc_10 + Safe Cracker (1.0) + + + sc_14 + Safe Cracker (1.4) + + + sc_17 + Safe Cracker (1.7) + + + sc_17n + Safe Cracker (1.7N) + + + sc_18 + Safe Cracker (1.8) + + + sc_18n + Safe Cracker (1.8N) + + + sc_18s2 + Safe Cracker (1.8 German sound) + + + scandal + Scandal Mahjong (Japan 890213) + + + scandalm + Scandal Mahjong (Japan 890217, medal) + + + scatmag2 + Scatter Magic II (10001311, NSW/ACT) + + + scatmag2a + Scatter Magic II (10122511, ASP) + + + scatmag2sa + Scatter Magic II (10102711, South Australia) + + + scatmag3 + Scatter Magic III (0452569, US) + + + scessjoe + Success Joe (World) + + + scfinals + Super Cup Finals (Ver 2.2O 1994/01/13, single PCB) + + + scfinalso + Super Cup Finals (Ver 2.1O 1993/11/19, single PCB) + + + scfinalsoc + Super Cup Finals (Ver 2.1O 1993/11/19, F3 Cartridge) + + + scg05nt + Sega Golf Club Network Pro Tour 2005 (Rev C) (GDX-0010C) + + + scg05ntb + Sega Golf Club Network Pro Tour 2005 (Rev B) (GDX-0010B) + + + scg06nt + Sega Club Golf 2006 Next Tours (Rev A) (GDX-0018A) + + + schamp + Sonic Championship (USA) + + + schaser + Space Chaser (set 1) + + + schasera + Space Chaser (set 2) + + + schaserb + Space Chaser (set 3) + + + schaserc + Space Chaser (set 4) + + + schasercv + Space Chaser (CV version - set 1) + + + schaserm + Space Chaser (Model Racing bootleg) + + + schasrcv + Space Chaser (CV version) + + + scherrym + Super Cherry Master (V5.2) + + + scherrym12 + Super Cherry Master (V1.2) + + + scherrymp + Super Cherry Master Plus (V1.6) + + + scherrymp10u + Super Cherry Master Plus (V1.0U) + + + schery97 + Skill Cherry '97 (Talking ver. sc3.52) + + + schery97a + Skill Cherry '97 (Talking ver. sc3.52c4) + + + schexx + Super Chexx (EM Bubble Hockey) + + + schick + Super Chick + + + schmeisr + Schmeiser Robo (Japan) + + + sci + Special Criminal Investigation (World set 1) + + + scia + Special Criminal Investigation (World set 2) + + + scij + Special Criminal Investigation (Japan) + + + scin + Super Special Criminal Investigation (Negro Torino hack) + + + scion + Scion + + + scionc + Scion (Cinematronics) + + + sciu + Special Criminal Investigation (US) + + + scm_500 + Standard Change-Makers System 500 / 500E + + + scmaster + Super Cherry Master (v1.0) + + + scobra + Super Cobra + + + scobrab + Super Cobra (bootleg, set 1) + + + scobrae + Super Cobra (Stern Electronics) (encrypted, KONATEC XC-103SS CPU) + + + scobrae2 + Super Cobra (encrypted) + + + scobrag + Super Cobra (bootleg, set 2) + + + scobraggi + Super Cobra (bootleg, set 3) + + + scobras + Super Cobra (Stern Electronics) + + + scobrase + Super Cobra (Sega) + + + scontra + Super Contra (set 1) + + + scontraa + Super Contra (set 2) + + + scontraj + Super Contra: Alien no Gyakushuu (Japan) + + + score5 + Score 5 + + + scorpion + Scorpion (set 1) + + + scorpiona + Scorpion (set 2) + + + scorpionb + Scorpion (set 3) + + + scorpionmc + Scorpion (Moon Cresta hardware) + + + scorpnmc + Scorpion (Moon Cresta hardware) + + + scotrsht + Scooter Shooter + + + scptour + Smash Court Pro Tournament (SCP1) + + + scrabble + Scrabble (rev. F) + + + scrabbled + Scrabble (rev. F) (Protocol) + + + scrabbleo + Scrabble (Spanish bootleg of Scramble) + + + scram_tp + Scramble (Pinball) + + + scramb2 + Scramble (bootleg, set 1) + + + scramb3 + Scramble (bootleg, set 2) + + + scramblb + Scramble (bootleg on Galaxian hardware) + + + scramble + Scramble + + + scramblebb + Scramble (bootleg?) + + + scramblebf + Scramble (Karateco, French bootleg) + + + scramblebun + Scramble (unknown bootleg) + + + scrambleo + Scramble (Okapi bootleg) + + + scrambler + Scramble (Reben S.A. Spanish bootleg) + + + scrambles + Scramble (Stern Electronics, set 1) + + + scrambles2 + Scramble (Stern Electronics, set 2) + + + scrambls + Scramble (Stern) + + + scrambp + Impacto (Billport S.A., Spanish bootleg of Scramble) + + + scramce + Scramble (Centromatic S.A., Spanish bootleg) + + + scrammr + Scramble (Model Racing, Italian bootleg) + + + scrampt + Scramble (Petaco S.A., Spanish bootleg) + + + scramrf + Scramble (Recreativos Franco, Spanish bootleg) + + + scratch + Scratch!! Scratch!! + + + screenp1 + Screen Play (Maygay, MV1 Video, ver. 1.9, set 1) + + + screenp1a + Screen Play (Maygay, MV1 Video, ver. 1.9, set 2) + + + screenp2 + Screen Play (Maygay, MV1 Video, ver. 1.9, Isle of Man, set 1) + + + screenp2a + Screen Play (Maygay, MV1 Video, ver. 1.9, Isle of Man, set 2) + + + screenp3 + Screen Play (Maygay, MV1 Video, SA5-082) + + + screenp3a + Screen Play (Maygay, MV1 Video, SA5-083) + + + screenp4 + Screen Play (Maygay, MV1 Video, ver. ?.?) + + + screenpl + Screen Play (Maygay, MV1 Video, ver. 4.0) + + + scregg + Scrambled Egg + + + screwloo + Screw Loose (prototype) + + + scross + Stadium Cross (World) + + + scrossa + Stadium Cross (World, linkable) + + + scrossu + Stadium Cross (US) + + + scrpiond + Scorpion (Jun 15, 1999) + + + scrpionda + Scorpion (Oct 01, 1997) + + + scrpiondb + Scorpion (Dec 24, 1993) + + + scrpn_l1 + Scorpion (L-1) + + + scrpn_t1 + Scorpion (T-1) + + + scrpndx + Scorpion DX + + + scrzy_l1 + Still Crazy + + + sctionza + Section Z (set 2) + + + sctmagce + Scatter Magic - Cash Express (0251026, US) + + + scud + Scud Race / Sega Super GT - Twin/DX (Export) + + + scudau + Scud Race - Twin/DX (Australia) + + + scuddx + Scud Race / Sega Super GT - Deluxe (Export, Revision A) + + + scuddxo + Scud Race / Sega Super GT - Deluxe (Export) + + + scudhamm + Scud Hammer (ver 1.4) + + + scudhamma + Scud Hammer (older version?) + + + scudplus + Scud Race Plus / Sega Super GT Plus - Twin/DX (Export, Revision A) + + + scudplusa + Scud Race Plus / Sega Super GT Plus - Twin/DX (Export) + + + scumimon + Slotters Club: Umi Monogatari + + + scyclone + Space Cyclone (Japan) + + + sderby + Super Derby (Playmark, v.07.03) + + + sderby2 + Super Derby II + + + sderby2s + Super Derby II (satellite board) + + + sderbya + Super Derby (Playmark, v.10.04) + + + sderbys + Super Derby (satellite board) + + + sdfight + SD Fighters (Korea) + + + sdgndmps + SD Gundam Psycho Salamander no Kyoui + + + sdgndmrb + SD Gundam Sangokushi Rainbow Tairiku Senki + + + sdi + SDI - Strategic Defense Initiative (Japan, newer, System 16A, FD1089B 317-0027) + + + sdia + SDI - Strategic Defense Initiative (Japan, old, System 16A, FD1089B 317-0027) + + + sdib + SDI - Strategic Defense Initiative (System 16B, FD1089A 317-0028) + + + sdibl + SDI - Strategic Defense Initiative (bootleg, original hardware) + + + sdibl2 + SDI - Strategic Defense Initiative (bootleg, set 1) + + + sdibl3 + SDI - Strategic Defense Initiative (bootleg, set 2) + + + sdibl4 + SDI - Strategic Defense Initiative (bootleg, set 3) + + + sdibl5 + SDI - Strategic Defense Initiative (bootleg, set 4) + + + sdibl6 + SDI - Strategic Defense Initiative (bootleg, set 5) + + + sdioj + SDI - Strategic Defense Initiative (Japan) + + + sdmg2 + Chaoji Da Manguan II (China, V754C, set 1) + + + sdmg2a + Chaoji Da Manguan II (China, V754C, set 2) + + + sdmg2p + Maque Wangchao / Chaoji Da Manguan 2 - Jiaqiang Ban (China, V100C) + + + sdodgeb + Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu + + + sdodgebh + Super Dodge Ball / Kunio no Nekketsu Toukyuu Densetsu (Secret Character Hack) + + + sdojak + DoDonPachi SaiDaiOuJou & Knuckles (CaveDwellers Hack) + + + sdtennis + Super Doubles Tennis + + + sdungeon + Space Dungeon + + + sdungeona + Space Dungeon (larger roms) + + + sdwx + Sheng Dan Wu Xian + + + seabass + Sea Bass Fishing (JUET 971110 V0.001) + + + seabattl + Sea Battle + + + seadevil + Sea Devil + + + sealdeal + Seal The Deal - Jackpot Carnival (0251029, US) + + + searchar + SAR - Search And Rescue (World) + + + searcharj + SAR - Search And Rescue (Japan version 3) + + + searcharu + SAR - Search And Rescue (US) + + + searchey + Search Eye (English / Korean / Japanese / Italian) + + + searcheya + Search Eye (English / Korean) + + + searchp2 + Search Eye Plus V2.0 + + + searthie + Super Earth Invasion (set 3) + + + searthin + Super Earth Invasion (set 1) + + + searthina + Super Earth Invasion (set 2) + + + seawitch + Seawitch + + + seawld + Sea World (Version 1.6E Dual) + + + seawldd1 + Sea World (Version 1.6R CGA) + + + seawolf + Sea Wolf (set 1) + + + seawolf2 + Sea Wolf II + + + seawolfa + Sea Wolf (set 3) + + + seawolfo + Sea Wolf (set 2) + + + seawolft + Sea Wolf (Tecfri) + + + secolove + Second Love (Japan 861201) + + + secondch + Second Chance + + + secretab + Secret Agent (bootleg) + + + secretag + Secret Agent (World, revision 3) + + + secretagj + Secret Agent (Japan, revision 2) + + + secretagm + Secret Agent (Modular System) + + + sectionz + Section Z (US) + + + sectionza + Section Z (Japan, rev. A) + + + sectrzon + Sector Zone (set 1) + + + sectrzona + Sector Zone (set 2) + + + sectrzont + Sector Zone (bootleg) + + + segajw + Joker's Wild (Rev. B) + + + seganinj + Sega Ninja (315-5102) + + + seganinja + Sega Ninja (315-5113) + + + seganinju + Sega Ninja (not encrypted) + + + seganinu + Sega Ninja (not encrypted) + + + segartv + Sega Race-TV (Export) + + + segawski + Sega Water Ski (Japan, Revision A) + + + seicross + Seicross (set 1) + + + seicrossa + Seicross (set 2) + + + seiha + Seiha (Japan 870725) + + + seiham + Seiha (Japan 870723, medal) + + + sekaikh + Sekai Kaseki Hakken (Japan, SKH1 Ver.B) + + + sekaikha + Sekai Kaseki Hakken (Japan, SKH1 Ver.A) + + + selfeena + Sel Feena + + + seljan + Sel-Jan (Japan) + + + seljan2 + Return Of Sel Jan II (Japan, NM557) + + + seljan2a + Return Of Sel Jan II (Japan, NM508) + + + semibase + MuHanSeungBu (SemiCom Baseball) (Korea) + + + sengekij + Sengeki Striker (Japan) + + + sengekis + Sengeki Striker (Asia) + + + sengekisj + Sengeki Striker (Japan) + + + sengk3eb + Sengoku 3 / Sengoku Densho 2001 (Green Blue, Hack) + + + sengk3fd + Sengoku 3 / Sengoku Densho 2001 (Fully Decrypted) + + + sengk3fs + Sengoku 3 / Sengoku Densho 2001 (Demeanor, Hack) + + + sengok3i + Sengoku 3 / Sengoku Densho 2001 (Infinite Power, Hack) + + + sengokh + Sengoku / Sengoku Denshou (set 2) + + + sengokmj + Sengoku Mahjong (Japan) + + + sengoku + Sengoku / Sengoku Denshou (NGM-017 ~ NGH-017) + + + sengoku2 + Sengoku 2 / Sengoku Denshou 2 + + + sengoku3 + Sengoku 3 / Sengoku Densho 2001 (set 1) + + + sengoku3a + Sengoku 3 / Sengoku Densho 2001 (set 2) + + + sengoku3s + Sengoku 3 / Sengoku Densho 2001 (Evolution 1.0, FCHT hack) + + + sengokuh + Sengoku / Sengoku Denshou (NGH-017, US) + + + sengomjk + Sengoku Mahjong Kurenai Otome-tai (Japan) + + + senjyo + Senjyo + + + senknow + Sen-Know (Japan) + + + senko + Senko no Ronde (Japan, Rev A) (GDL-0030A) + + + senkoo + Senko no Ronde (Japan) (GDL-0030) + + + senkosp + Senko no Ronde Special (Export, Japan) (GDL-0038) + + + senkyu + Senkyu (Japan, newer) + + + senkyua + Senkyu (Japan, earlier) + + + sentetst + Sente Diagnostic Cartridge + + + seoul88 + Seoul 88 Fever + + + sercharu + SAR - Search And Rescue (US) + + + setaroul + The Roulette (Visco) + + + setaroula + Super Ruleta 36 (Spanish hack of The Roulette) + + + setaroulm + The Roulette (Visco, medal) + + + sevenlnd + Seven Land + + + sevilla + Sevilla (2 jackpot points, 81%) + + + sevillaa + Sevilla (1 jackpot point, 77%) + + + sevillab + Sevilla (2 jackpot points, 77%) + + + sevillac + Sevilla (4 jackpot points, 77%) + + + sevillad + Sevilla (8 jackpot points, 77%) + + + sexappl + Sex Appeal (Version 6.02) + + + sextriv + Sex Triv + + + sextriv1 + Sexual Trivia (Version 1.02SB, set 1) + + + sextriv2 + Sexual Trivia (Version 1.02SB, set 2) + + + sexyboom + Sexy Boom + + + sexygal + Sexy Gal (Japan 850501 SXG 1-00) + + + sexyparo + Sexy Parodius (ver JAA) + + + sexyparoa + Sexy Parodius (ver AAA) + + + sf + Street Fighter (US, set 1) + + + sf1 + Street Fighter (World) + + + sf1jp + Street Fighter (Japan) + + + sf1p + Street Fighter (prototype) + + + sf1us + Street Fighter (US) + + + sf2 + Street Fighter II: The World Warrior (World 910522) + + + sf2049 + San Francisco Rush 2049 + + + sf2049se + San Francisco Rush 2049: Special Edition + + + sf2049te + San Francisco Rush 2049: Tournament Edition + + + sf2049tea + San Francisco Rush 2049: Tournament Edition Unlocked + + + sf2acc + Street Fighter II': Champion Edition (Accelerator!, bootleg, set 1) + + + sf2acca + Street Fighter II': Champion Edition (Accelerator!, bootleg, set 2) + + + sf2accp2 + Street Fighter II': Champion Edition (Accelerator Pt.II, bootleg) + + + sf2amf + Street Fighter II': Champion Edition (Alpha Magic-F, bootleg) + + + sf2amf10 + Street Fighter II': Champion Edition (L735 Test Rom, bootleg, set 3) + + + sf2amf11 + Street Fighter II': Champion Edition (L735 Test Rom w/ Mega Co, bootleg) + + + sf2amf12 + Street Fighter II': Champion Edition (L735 Test Rom, bootleg, set ?) + + + sf2amf2 + Street Fighter II': Champion Edition (L735 Test Rom, bootleg, set 1) + + + sf2amf3 + Street Fighter II': Champion Edition (L735 Test Rom, bootleg, set 2) + + + sf2amf4 + Street Fighter II': Champion Edition (Alpha Magic-F, bootleg, set 2) + + + sf2amf5 + Street Fighter II': Champion Edition (Alpha Magic-F, bootleg, set 3) + + + sf2amf6 + Street Fighter II': Champion Edition (Alpha Magic-F, bootleg, set 4) + + + sf2amf7 + Street Fighter II': Champion Edition (Alpha Magic-F, bootleg, set 5) + + + sf2amf8 + Street Fighter II': Champion Edition (Alpha Magic-F, bootleg, set 6) + + + sf2amf9 + Street Fighter II': Champion Edition (Alpha Magic-F, bootleg, set 7) + + + sf2b + Street Fighter II: The World Warrior (bootleg, set 1) + + + sf2b2 + Street Fighter II: The World Warrior (bootleg, set 2) + + + sf2b3 + Street Fighter II: The World Warrior (bootleg, set 3) + + + sf2b4 + Street Fighter II: The World Warrior (bootleg, set 4) + + + sf2bhh + Street Fighter II': Champion Edition (Hung Hsi, bootleg) + + + sf2ce + Street Fighter II': Champion Edition (World 920513) + + + sf2ceb + Street Fighter II': Champion Edition (Playmark bootleg, set 1) + + + sf2ceb2 + Street Fighter II': Champion Edition (bootleg, set 1) + + + sf2ceb3 + Street Fighter II': Champion Edition (bootleg, set 2) + + + sf2ceb4 + Street Fighter II': Champion Edition (Playmark bootleg, set 2) + + + sf2ceb5 + Street Fighter II': Champion Edition (Playmark bootleg, set 3) + + + sf2ceblp + Street Fighter II': Champion Edition (protected bootleg on non-dash board) + + + sf2cebltw + Street Fighter II': Champion Edition ('Taiwan' bootleg with PAL) + + + sf2cebr + Street Fighter II': Champion Edition (Brasil 920313, v1.0, Hack) + + + sf2ceds6 + Street Fighter II': Champion Edition (Dstreet-6, bootleg) + + + sf2ceea + Street Fighter II': Champion Edition (World 920313) + + + sf2ceeab2 + Street Fighter II': Champion Edition (bootleg, World 920313, set 2) + + + sf2ceeabl + Street Fighter II': Champion Edition (bootleg, World 920313, set 1) + + + sf2ceec + Street Fighter II': Champion Edition (World 920803) + + + sf2cej + Street Fighter II' - Champion Edition (Japan 920513) + + + sf2ceja + Street Fighter II': Champion Edition (Japan 920322) + + + sf2cejab2 + Street Fighter II': Champion Edition (bootleg, Japan 920322, set 2) + + + sf2cejabl + Street Fighter II': Champion Edition (bootleg, Japan 920322, set 1) + + + sf2cejb + Street Fighter II': Champion Edition (Japan 920513) + + + sf2cejc + Street Fighter II': Champion Edition (Japan 920803) + + + sf2cems6a + Street Fighter II': Champion Edition (Mstreet-6, bootleg, set 1) + + + sf2cems6b + Street Fighter II': Champion Edition (Mstreet-6, bootleg, set 2) + + + sf2cems6c + Street Fighter II': Champion Edition (Mstreet-6, bootleg, set 3) + + + sf2cet + Street Fighter II': Champion Edition (Taiwan 920313) + + + sf2ceua + Street Fighter II': Champion Edition (USA 920313) + + + sf2ceuab2 + Street Fighter II': Champion Edition (bootleg, USA 920313, set 2) + + + sf2ceuab3 + Street Fighter II': Champion Edition (bootleg, USA 920313, set 3) + + + sf2ceuab4 + Street Fighter II': Champion Edition (bootleg, USA 920313, set 4) + + + sf2ceuab5 + Street Fighter II': Champion Edition (bootleg, USA 920313, set 5) + + + sf2ceuab6 + Street Fighter II': Champion Edition (bootleg, USA 920313, set 6) + + + sf2ceuab7 + Street Fighter II': Champion Edition (bootleg, USA 920313, set 7) + + + sf2ceuab8 + Street Fighter II': Champion Edition (bootleg, USA 920313, set 8) + + + sf2ceuab9 + Street Fighter II': Champion Edition (bootleg, USA 920313, set 9) + + + sf2ceuabl + Street Fighter II': Champion Edition (bootleg, USA 920313, set 1) + + + sf2ceub + Street Fighter II': Champion Edition (USA 920513) + + + sf2ceuc + Street Fighter II': Champion Edition (USA 920803) + + + sf2ceucbl + Street Fighter II': Champion Edition (bootleg, USA 920803) + + + sf2ceupl + Street Fighter II': Champion Edition (Japan 920322, UPL bootleg?) + + + sf2dkot2 + Street Fighter II': Champion Edition (Double K.O. Turbo II, bootleg) + + + sf2dongb + Street Fighter II': Champion Edition (Dongfang Bubai protection, bootleg) + + + sf2ea + Street Fighter II: The World Warrior (World 910204) + + + sf2eb + Street Fighter II: The World Warrior (World 910214) + + + sf2ebbl + Street Fighter II: The World Warrior (TAB Austria, bootleg, set 1) + + + sf2ebbl2 + Street Fighter II: The World Warrior (TAB Austria, bootleg, set 3) + + + sf2ebbl3 + Street Fighter II: The World Warrior (TAB Austria, bootleg, set 4) + + + sf2ed + Street Fighter II: The World Warrior (World 910318) + + + sf2ee + Street Fighter II: The World Warrior (World 910228) + + + sf2ef + Street Fighter II: The World Warrior (World 910411) + + + sf2em + Street Fighter II: The World Warrior (World 910129) + + + sf2en + Street Fighter II: The World Warrior (World 910204, conversion) + + + sf2gm + Street Fighter II': Champion Edition (Golden Magic, Hack) + + + sf2hf + Street Fighter II': Hyper Fighting (World 921209) + + + sf2hfj + Street Fighter II' Turbo: Hyper Fighting (Japan 921209) + + + sf2hfjb + Street Fighter II' Turbo: Hyper Fighting (bootleg, set 1) + + + sf2hfjb2 + Street Fighter II' Turbo: Hyper Fighting (bootleg, set 2) + + + sf2hfsce + Street Fighter II': Hyper Fighting (Sr. SF Champion Edition v1.4, Hack) + + + sf2hfu + Street Fighter II': Hyper Fighting (USA 921209) + + + sf2j + Street Fighter II: The World Warrior (Japan 911210, CPS-B-13) + + + sf2j17 + Street Fighter II: The World Warrior (Japan 911210, CPS-B-17) + + + sf2ja + Street Fighter II: The World Warrior (Japan 910214) + + + sf2jc + Street Fighter II: The World Warrior (Japan 910306) + + + sf2jf + Street Fighter II: The World Warrior (Japan 910411) + + + sf2jh + Street Fighter II: The World Warrior (Japan 910522) + + + sf2jl + Street Fighter II: The World Warrior (Japan 920312) + + + sf2jla + Street Fighter II: The World Warrior (Japan 911210, Rev. L) + + + sf2koryu + Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg) + + + sf2koryu2 + Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg, set 2) + + + sf2koryu3 + Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg, set 3) + + + sf2level + Street Fighter II': Champion Edition (bootleg with level selection) + + + sf2ly + Street Fighter II: The World Warrior (with bosses like Champion Edition, Japan 910522, CPS-B-11) + + + sf2m1 + Street Fighter II': Champion Edition (M1, bootleg) + + + sf2m10 + Street Fighter II': Champion Edition (M10, bootleg) + + + sf2m2 + Street Fighter II': Champion Edition (M2, bootleg) + + + sf2m3 + Street Fighter II': Champion Edition (M3, bootleg) + + + sf2m4 + Street Fighter II': Champion Edition (M4, bootleg) + + + sf2m5 + Street Fighter II': Champion Edition (M5, bootleg) + + + sf2m6 + Street Fighter II': Champion Edition (M6, bootleg) + + + sf2m7 + Street Fighter II': Champion Edition (M7, bootleg) + + + sf2m8 + Street Fighter II': Champion Edition (M8, bootleg) + + + sf2m9 + Street Fighter II': Champion Edition (M9, bootleg) + + + sf2md + Street Fighter II': Champion Edition (Magic Delta, bootleg) + + + sf2mdt + Street Fighter II': Magic Delta Turbo (bootleg, set 1) + + + sf2mdta + Street Fighter II': Magic Delta Turbo (bootleg, set 2) + + + sf2mdtb + Street Fighter II': Magic Delta Turbo (bootleg, set 3) + + + sf2mdtc + Street Fighter II': Magic Delta Turbo (bootleg, set 4) + + + sf2mega + Street Fighter II': Champion Edition (Mega Co, bootleg, set 1) + + + sf2mega2 + Street Fighter II': Champion Edition (Mega Co, bootleg, set 2) + + + sf2mix + Street Fighter II Mix (v1.3) + + + sf2mkot + Street Fighter II': Magic KO Turbo!! - Nightmare Crack + + + sf2prime + Street Fighter II': Prime (Ver 0.3, Hack) + + + sf2qp1 + Street Fighter II: The World Warrior (Quicken Pt-I, bootleg) + + + sf2qp2 + Street Fighter II: The World Warrior (Quicken, bootleg) + + + sf2rb + Street Fighter II': Champion Edition (Rainbow, bootleg, set 1) + + + sf2rb2 + Street Fighter II': Champion Edition (Rainbow, bootleg, set 2) + + + sf2rb3 + Street Fighter II': Champion Edition (Rainbow, bootleg, set 3) + + + sf2rb4 + Street Fighter II': Champion Edition (Rainbow, bootleg, set 4) + + + sf2rb5 + Street Fighter II': Champion Edition (Rainbow, bootleg, set 5) + + + sf2rb6 + Street Fighter II': Champion Edition (Rainbow, bootleg, set 6) + + + sf2re + Street Fighter II': Champion Edition (RE, bootleg) + + + sf2red + Street Fighter II': Champion Edition (Red Wave, bootleg, set 1) + + + sf2red2 + Street Fighter II': Champion Edition (Red Wave, bootleg, set 3) + + + sf2reda + Street Fighter II': Champion Edition (Red Wave, bootleg, set 2) + + + sf2redp2 + Street Fighter II': Champion Edition (Red Wave PtII, bootleg) + + + sf2rk + Street Fighter II: The World Warrior (RK, bootleg) + + + sf2rk2 + Street Fighter II: The World Warrior (RK, bootleg, set 2) + + + sf2rules + Street Fighter II: The World Warrior (bootleg with rules screen) + + + sf2sl73a + Street Fighter II': Champion Edition (Sheng Long v 7.3a) + + + sf2stt + Street Fighter II: The World Warrior (TAB Austria, bootleg, set 2) + + + sf2t + Street Fighter II' - Hyper Fighting (US 921209) + + + sf2thndr + Street Fighter II: The World Warrior (Thunder Edition, bootleg, set 1) + + + sf2thndr2 + Street Fighter II: The World Warrior (Thunder Edition, bootleg, set 2) + + + sf2tj + Street Fighter II' Turbo - Hyper Fighting (Japan 921209) + + + sf2tlona + Street Fighter II': Champion Edition (Tu Long, bootleg, set 1) + + + sf2tlonb + Street Fighter II': Champion Edition (Tu Long, bootleg, set 2) + + + sf2tlonc + Street Fighter II': Champion Edition (Tu Long, bootleg, set 3) + + + sf2ua + Street Fighter II: The World Warrior (USA 910206) + + + sf2ub + Street Fighter II: The World Warrior (USA 910214) + + + sf2uc + Street Fighter II: The World Warrior (USA 910306) + + + sf2ud + Street Fighter II: The World Warrior (USA 910318) + + + sf2ue + Street Fighter II: The World Warrior (USA 910228) + + + sf2uf + Street Fighter II: The World Warrior (USA 910411) + + + sf2ug + Street Fighter II: The World Warrior (USA 910522, Rev. G) + + + sf2uh + Street Fighter II: The World Warrior (USA 910522, Rev. H) + + + sf2ui + Street Fighter II: The World Warrior (USA 910522, Rev. I) + + + sf2uk + Street Fighter II: The World Warrior (USA 911101) + + + sf2um + Street Fighter II: The World Warrior (USA 920312) + + + sf2v004 + Street Fighter II': Champion Edition (V004, bootleg) + + + sf2v0042 + Street Fighter II': Champion Edition (V004, bootleg, set 2) + + + sf2v0043 + Street Fighter II': Champion Edition (V004, bootleg, set 3) + + + sf2yyc + Street Fighter II': Champion Edition (YYC, bootleg) + + + sf2yyc2 + Street Fighter II': Champion Edition (YYC, bootleg, set 2) + + + sf_l1 + Slugfest (L-1) + + + sfa + Street Fighter Alpha: Warriors' Dreams (Europe 950727) + + + sfa2 + Street Fighter Alpha 2 (Europe 960229) + + + sfa2u + Street Fighter Alpha 2 (USA 960430) + + + sfa2uhc + Street Fighter Alpha 2 - Unlock Hidden Characters (Hack By Yumeji) + + + sfa2ultra + Street Fighter Alpha 2 Ultra (Beta) + + + sfa2ur1 + Street Fighter Alpha 2 (USA 960306) + + + sfa3 + Street Fighter Alpha 3 (Europe 980904) + + + sfa3b + Street Fighter Alpha 3 (Brazil 980629) + + + sfa3br + Street Fighter Alpha 3 (050513 Brasil, v2.0, Hack) + + + sfa3ce + Street Fighter Alpha 3: Challenger's Edition + + + sfa3h + Street Fighter Alpha 3 (Hispanic 980904) + + + sfa3hr1 + Street Fighter Alpha 3 (Hispanic 980629) + + + sfa3u + Street Fighter Alpha 3 (USA 980904) + + + sfa3ud + Street Fighter Alpha 3 (USA 980904 Phoenix Edition) (bootleg) + + + sfa3ur1 + Street Fighter Alpha 3 (USA 980629) + + + sfa3us + Street Fighter Alpha 3 (USA 980616, SAMPLE Version) + + + sfa3xl + Street Fighter Alpha 3: Xiang Long Edition (Hack by pipi899, Ver.2009-05-10) + + + sfach + Street Fighter Alpha: Warriors' Dreams (CPS Changer, Publicity USA 950727) + + + sfad + Street Fighter Alpha: Warriors' Dreams (Europe 950727 Phoenix Edition) (bootleg) + + + sfan + Street Fighter (World, pneumatic buttons) + + + sfar1 + Street Fighter Alpha: Warriors' Dreams (Europe 950718) + + + sfar2 + Street Fighter Alpha: Warriors' Dreams (Europe 950627) + + + sfar3 + Street Fighter Alpha: Warriors' Dreams (Europe 950605) + + + sfau + Street Fighter Alpha: Warriors' Dreams (USA 950627) + + + sfaud + Street Fighter Alpha: Warriors' Dreams (USA 950727 Phoenix Edition) (bootleg) + + + sfbonus + Skill Fruit Bonus (Version 1.9R, set 1) + + + sfbonusd1 + Skill Fruit Bonus (Version 1.9R, set 2) + + + sfbonuso + Skill Fruit Bonus (Version 1.7) + + + sfbonuso2 + Skill Fruit Bonus (Version 1.6) + + + sfbonusv1 + Skill Fruit Bonus (Version 1.9R Dual) + + + sfchamp + Super Football Champ (Ver 2.5O) + + + sfchampj + Super Football Champ (Ver 2.4J) + + + sfchampo + Super Football Champ (Ver 2.4O) + + + sfchampu + Super Football Champ (Ver 2.4A) + + + sfex + Street Fighter EX (Europe 961219) + + + sfex2 + Street Fighter EX2 (Europe 980312) + + + sfex2a + Street Fighter EX2 (Asia 980312) + + + sfex2h + Street Fighter EX2 (Hispanic 980312) + + + sfex2j + Street Fighter EX2 (Japan 980312) + + + sfex2p + Street Fighter EX2 Plus (Europe 990611) + + + sfex2pa + Street Fighter EX2 Plus (Asia 990611) + + + sfex2ph + Street Fighter EX2 Plus (Hispanic 990611) + + + sfex2pj + Street Fighter EX2 Plus (Japan 990611) + + + sfex2pu + Street Fighter EX2 Plus (USA 990611) + + + sfex2u + Street Fighter EX2 (USA 980526) + + + sfex2u1 + Street Fighter EX2 (USA 980312) + + + sfexa + Street Fighter EX (Asia 961219) + + + sfexj + Street Fighter EX (Japan 961130) + + + sfexp + Street Fighter EX Plus (USA 970407) + + + sfexpj + Street Fighter EX Plus (Japan 970407) + + + sfexpj1 + Street Fighter EX Plus (Japan 970311) + + + sfexpu1 + Street Fighter EX Plus (USA 970311) + + + sfexu + Street Fighter EX (USA 961219) + + + sfight + Sonic the Fighters (Japan) + + + sfightii + Street Fighter II (pinball, set 1) + + + sfightiia + Street Fighter II (pinball, set 2) + + + sfightiib + Street Fighter II (pinball, set 3) + + + sfiii + Street Fighter III: New Generation (Europe 970204) + + + sfiii2 + Street Fighter III 2nd Impact: Giant Attack (USA 970930) + + + sfiii2h + Street Fighter III 2nd Impact: Giant Attack (Hispanic 970930) + + + sfiii2j + Street Fighter III 2nd Impact: Giant Attack (Japan 970930) + + + sfiii2n + Street Fighter III 2nd Impact: Giant Attack (Asia 970930, NO CD) + + + sfiii3 + Street Fighter III 3rd Strike: Fight for the Future (Europe 990608) + + + sfiii3j + Street Fighter III 3rd Strike: Fight for the Future (Japan 990608) + + + sfiii3jr1 + Street Fighter III 3rd Strike: Fight for the Future (Japan 990512) + + + sfiii3n + Street Fighter III 3rd Strike: Fight for the Future (Japan 990608, NO CD) + + + sfiii3nr1 + Street Fighter III 3rd Strike: Fight for the Future (Japan 990512, NO CD) + + + sfiii3r1 + Street Fighter III 3rd Strike: Fight for the Future (Europe 990512) + + + sfiii3th + Street Fighter III 3rd Strike: Fight for the Future | re:THIRD update + + + sfiii3u + Street Fighter III 3rd Strike: Fight for the Future (USA 990608) + + + sfiii3ur1 + Street Fighter III 3rd Strike: Fight for the Future (USA 990512) + + + sfiii3ws + Street Fighter III 3rd Strike: Fight for the Future (Widescreen 20220908) + + + sfiii4fs + Street Fighter III 3rd Strike: Fight for the Future (4rd Strike 2011-07-17) + + + sfiii4n + Street Fighter III 3rd Strike: Fight for the Future (4rd Arrange Edition 2013) + + + sfiiia + Street Fighter III: New Generation (Asia 970204) + + + sfiiih + Street Fighter III: New Generation (Hispanic 970204) + + + sfiiij + Street Fighter III: New Generation (Japan 970204) + + + sfiiin + Street Fighter III: New Generation (Asia 970204, NO CD, BIOS set 1) + + + sfiiina + Street Fighter III: New Generation (Asia 970204, NO CD, BIOS set 2) + + + sfiiiu + Street Fighter III: New Generation (USA 970204) + + + sfish2 + Sport Fishing 2 (UET 951106 V1.10e) + + + sfish2j + Sport Fishing 2 (J 951201 V1.100) + + + sfj + Street Fighter (Japan) (protected) + + + sfjan + Street Fighter (Japan, pneumatic buttons) + + + sfjbl + Street Fighter (Japan, bootleg) + + + sfkick + Super Free Kick (set 1) + + + sfkicka + Super Free Kick (set 2) + + + sflush + Straight Flush + + + sfootbal + Street Football (11/12/86) + + + sformula + Super Formula (Japan, set 1) + + + sformulaa + Super Formula (Japan, set 2) + + + sfp + Street Fighter (prototype) + + + sfposeid + Sea Fighter Poseidon + + + sfruitb + Super Fruit Bonus (Version 2.5E Dual) + + + sfruitbb1 + Super Fruit Bonus (Version 2.5R, set 1) + + + sfruitbb2 + Super Fruit Bonus (Version 2.0LT, set 1) + + + sfruitbbh + Super Fruit Bonus (Version 2.2B, set 1) + + + sfruitbd1 + Super Fruit Bonus (Version 2.5R, set 2) + + + sfruitbd2 + Super Fruit Bonus (Version 2.0LT, set 2) + + + sfruitbdh + Super Fruit Bonus (Version 2.2B, set 2) + + + sfruitbh + Super Fruit Bonus (Version 2.2EB Dual) + + + sfruitbo + Super Fruit Bonus (Version 2.0) + + + sfruitbo2 + Super Fruit Bonus (Version 1.80XT) + + + sfruitboh + Super Fruit Bonus (Version 2.0B) + + + sfruitbv1 + Super Fruit Bonus (Version 2.5R Dual) + + + sfruitbv2 + Super Fruit Bonus (Version 2.0LT Dual) + + + sfruitbvh + Super Fruit Bonus (Version 2.2B Dual) + + + sfrush + San Francisco Rush + + + sfrushrk + San Francisco Rush: The Rock (boot rom L 1.0, GUTS Oct 6 1997 / MAIN Oct 16 1997) + + + sfrushrkw + San Francisco Rush: The Rock (Wavenet, boot rom L 1.38, GUTS Aug 19 1997 / MAIN Aug 19 1997) + + + sfrushrkwo + San Francisco Rush: The Rock (Wavenet, boot rom L 1.38, GUTS Aug 6 1997 / MAIN Aug 5 1997) + + + sftm + Street Fighter: The Movie (v1.12) + + + sftm110 + Street Fighter: The Movie (v1.10) + + + sftm111 + Street Fighter: The Movie (v1.11) + + + sftmj + Street Fighter - The Movie (v1.12N, Japan) + + + sftmj112 + Street Fighter: The Movie (v1.12N, Japan) + + + sftmj114 + Street Fighter: The Movie (v1.14N, Japan) + + + sftmk112 + Street Fighter: The Movie (v1.12K, Korea) + + + sfua + Street Fighter (US, set 2) (protected) + + + sfw + Street Fighter (World) (protected) + + + sfx + SF-X + + + sfz2a + Street Fighter Zero 2 (Asia 960227) + + + sfz2ad + Street Fighter Zero 2 (Asia 960227 Phoenix Edition) (bootleg) + + + sfz2adl + Street Fighter Zero 2 Alpha: Dragon Level (Hack by pipi899, Ver.2009-04-24) + + + sfz2al + Street Fighter Zero 2 Alpha (Asia 960826) + + + sfz2alb + Street Fighter Zero 2 Alpha (Brazil 960813) + + + sfz2ald + Street Fighter Zero 2 Alpha (Asia 960826 Phoenix Edition) (bootleg) + + + sfz2alh + Street Fighter Zero 2 Alpha (Hispanic 960813) + + + sfz2alj + Street Fighter Zero 2 Alpha (Japan 960805) + + + sfz2alr1 + Street Fighter Zero 2 Alpha (Asia 960805) + + + sfz2b + Street Fighter Zero 2 (Brazil 960531) + + + sfz2br1 + Street Fighter Zero 2 (Brazil 960304) + + + sfz2h + Street Fighter Zero 2 (Hispanic 960304) + + + sfz2j + Street Fighter Zero 2 (Japan 960430) + + + sfz2jd + Street Fighter Zero 2 (Japan 960227 Phoenix Edition) (bootleg) + + + sfz2jr1 + Street Fighter Zero 2 (Japan 960227) + + + sfz2n + Street Fighter Zero 2 (Oceania 960229) + + + sfz3a + Street Fighter Zero 3 (Asia 980904) + + + sfz3ar1 + Street Fighter Zero 3 (Asia 980701) + + + sfz3j + Street Fighter Zero 3 (Japan 980904) + + + sfz3jr1 + Street Fighter Zero 3 (Japan 980727) + + + sfz3jr2 + Street Fighter Zero 3 (Japan 980629) + + + sfz3jr2d + Street Fighter Zero 3 (Japan 980629 Phoenix Edition) (bootleg) + + + sfz3mix + Street Fighter Zero 3 Mix v0.31 + + + sfz3mix13 + Street Fighter Zero 3 Mix v0.13 + + + sfz3te + Street Fighter Zero 3: Training Edition v1.2 (Japan 980629) + + + sfz3ugd + Street Fighter Zero 3 Upper (Japan) (GDL-0002) + + + sfza + Street Fighter Zero (Asia 950627) + + + sfzar1 + Street Fighter Zero (Asia 950605) + + + sfzb + Street Fighter Zero (Brazil 951109) + + + sfzbch + Street Fighter Zero (CPS Changer, Brazil 950727) + + + sfzbr1 + Street Fighter Zero (Brazil 950727) + + + sfzch + Street Fighter Zero (CPS Changer, Japan 951020) + + + sfzcha + Street Fighter Zero (CPS Changer, Japan 040820) + + + sfzh + Street Fighter Zero (Hispanic 950718) + + + sfzhr1 + Street Fighter Zero (Hispanic 950627) + + + sfzj + Street Fighter Zero (Japan 950727) + + + sfzjr1 + Street Fighter Zero (Japan 950627) + + + sfzjr2 + Street Fighter Zero (Japan 950605) + + + sg2j + Star Gladiator 2 (JAPAN 980316) + + + sgaltrop + Sexy Gal Tropical (Japan 850805 SXG T-02) + + + sgalwars + Super Galactic Wars (bootleg of Galaxian) + + + sgdrvsim + Driving Simulator + + + sgemf + Super Gem Fighter: Mini Mix (USA 970904) + + + sgemfa + Super Gem Fighter: Mini Mix (Asia 970904) + + + sgemfd + Super Gem Fighter: Mini Mix (USA 970904 Phoenix Edition) (bootleg) + + + sgemfh + Super Gem Fighter: Mini Mix (Hispanic 970904) + + + sgladiat + Gladiator 1984 + + + sgmast + Super Masters Golf (World?, Floppy Based, FD1094 317-0058-05d?) + + + sgmastc + Jumbo Ozaki Super Masters Golf (World, Floppy Based, FD1094 317-0058-05c) + + + sgmastj + Jumbo Ozaki Super Masters Golf (Japan, Floppy Based, FD1094 317-0058-05b) + + + sgmt1 + Super Game Mega Type 1 + + + sgnascar + NASCAR Arcade (Rev A) + + + sgnascaro + NASCAR Arcade (original) + + + sgsafari + Super Gran Safari (ver. 3.11) + + + sgt24h + Super GT 24h + + + sgtetris + Sega Tetris + + + sgunner + Steel Gunner (Rev B) + + + sgunner2 + Steel Gunner 2 (US) + + + sgunner2j + Steel Gunner 2 (Japan, Rev A) + + + sgunnerj + Steel Gunner (Japan) + + + sgunnr2j + Steel Gunner 2 (Japan) + + + sgyxz + Warriors of Fate ('sgyxz' bootleg) + + + sgz + Shadow Gangs Zero (Kick Demo Ver: 2.0) + + + sh_141 + Shrek v1.41 + + + shabdama + LD Mahjong #4 Shabon-Dama (Japan) + + + shackled + Shackled (US) + + + shadfgtr + Shadow Fighters + + + shadfrce + Shadow Force (World, Version 3) + + + shadfrcej + Shadow Force - Henshin Ninja (Japan, Version 2) + + + shadfrceu + Shadow Force (US, Version 2) + + + shadowld + Shadowland (YD3) + + + shadoww + Shadow Warriors (World, set 1) + + + shadowwa + Shadow Warriors (World, set 2) + + + shadowwm + Shadow Warriors (Modular System) + + + shaktam + Shakatto Tambourine (Rev B) (GDS-0002B) + + + shaktamb + Shakatto Tambourine Cho Powerup Chu (2K1 AUT) (GDS-0016) + + + shaktmsp + Shakatto Tambourine Motto Norinori Shinkyoku Tsuika (2K1 SPR) (GDS-0013) + + + shambros + Shamisen Brothers Vol 1 (V1.01K) + + + shamnmg + Shaman's Magic (10225911, NSW/ACT) + + + shamnmgu + Shaman's Magic (0152647, US) + + + shangha2 + Shanghai II (Japan, set 1) + + + shangha2a + Shanghai II (Japan, set 2) + + + shangha3 + Shanghai III (World) + + + shangha3j + Shanghai III (Japan) + + + shangha3u + Shanghai III (US) + + + shangha3up + Shanghai III (US, prototype) + + + shanghai + Shanghai (World) + + + shanghaij + Shanghai (Japan) + + + shanghss + Shanghai Shoryu Sairin (V2.03J 2000/05/26 12:45:28) + + + shangkid + Shanghai Kid + + + shangon + Super Hang-On (sitdown/upright) (unprotected) + + + shangon1 + Super Hang-On (mini ride-on) (FD1089B 317-0034) + + + shangon2 + Super Hang-On (mini ride-on, Rev A) (FD1089B 317-0034) + + + shangon3 + Super Hang-On (sitdown/upright) (FD1089B 317-0034) + + + shangon3d + Super Hang-On (sitdown/upright) (bootleg of FD1089B 317-0034 set) + + + shangonb + Super Hang-On (bootleg) + + + shangoneh + Super Hang-On (sitdown/upright, unprotected) (Enhanced Edition v2.0.2) + + + shangonho + Super Hang-On (Hang-On conversion, Japan, FD1094 317-0039) + + + shangonle + Limited Edition Hang-On + + + shangonleeh + Limited Edition Hang-On (Enhanced Edition v2.0.2) + + + shangonrb + Super Hang-On (Hang-On conversion, bootleg) + + + shangonrb2 + Super Hang-On (Hang-On conversion, Beta bootleg) + + + shangonro + Super Hang-On (Hang-On conversion, ride-on, Japan, FD1094 317-0038) + + + shangril + Dengen Tenshi Taisen Janshi Shangri-la + + + shangtou + Shanghai Sangokuhai Tougi (Ver 2.01J 2002/01/18 18:26:58) + + + shanhigw + Shanghai - The Great Wall / Shanghai Triple Threat (JUE 950623 V1.005) + + + shaolinb + Shao-lin's Road (set 2) + + + shaolins + Shao-lin's Road (set 1) + + + shaqattq + Shaq Attaq (rev.5) + + + shaqattq2 + Shaq Attaq (rev.2) + + + shark + Shark + + + sharkatt + Shark Attack + + + sharkjaw + Shark JAWS + + + sharkpy + Shark Party (Italy, v1.3) + + + sharkpya + Shark Party (Italy, v1.6) + + + sharkpye + Shark Party (English, Alpha license) + + + sharkt + Shark (Taito) + + + sharkusb + Shark (US Billiards) + + + sharrier + Space Harrier (Rev A, 8751 315-5163A) + + + sharrier1 + Space Harrier (8751 315-5163) + + + shateki + Yataimura Shateki (1-player, Japan, Ver 1.000) + + + shdancbl + Shadow Dancer (bootleg, set 1) + + + shdancbla + Shadow Dancer (bootleg, set 2) + + + shdancer + Shadow Dancer (World) + + + shdancer1 + Shadow Dancer (US) + + + shdancerj + Shadow Dancer (Japan) + + + shdancrb + Shadow Dancer (Rev.B) + + + shdancrj + Shadow Dancer (Japan) + + + shendeng + Pili Shen Deng + + + sheriff + Sheriff + + + shettle + Alone Shettle Crew + + + shfin_l1 + Shuffle Inn (Shuffle) (L-1) + + + shienryu + Shienryu (JUET 961226 V1.000) + + + shikgam2 + Shikigami no Shiro II / The Castle of Shikigami II (GDL-0021) + + + shikiga3 + Shikigami no Shiro III (v2.06J) + + + shikigam + Shikigami no Shiro (V2.03J 2001/08/07 18:11) + + + shikigama + Shikigami no Shiro - internal build (V1.02J 2001/09/27 18:45) + + + shimpacp + Super High Impact (prototype, rev 5.0 09-15-91) + + + shimpact + Super High Impact (rev LA1 09/30/91) + + + shimpactp4 + Super High Impact (prototype, proto 4.0 09/10/91) + + + shimpactp5 + Super High Impact (prototype, proto 5.0 09/15/91) + + + shimpactp6 + Super High Impact (prototype, proto 6.0 09/23/91) + + + shinfz + Shinobi / FZ-2006 (Korean System 16 bootleg) (ISG Selection Master Type 2006) + + + shinobi + Shinobi (set 6, System 16A) (unprotected) + + + shinobi1 + Shinobi (set 1, System 16A) (FD1094 317-0050) + + + shinobi1d + Shinobi (set 1, System 16A) (bootleg of FD1094 317-0050 set) + + + shinobi2 + Shinobi (set 2, System 16B) (FD1094 317-0049) + + + shinobi2d + Shinobi (set 2, System 16B) (bootleg of FD1094 317-0049 set) + + + shinobi3 + Shinobi (set 3, System 16B) (MC-8123B 317-0054) + + + shinobi4 + Shinobi (set 4, System 16B) (MC-8123B 317-0054) + + + shinobi5 + Shinobi (set 5, System 16B) (unprotected) + + + shinobi6 + Shinobi (set 6, System 16B) (unprotected) + + + shinobia + Shinobi (set 2) + + + shinobib + Shinobi (set 3) + + + shinobing + Shinobi Neo Geo (HB, v1.1) + + + shinobl + Shinobi (bootleg) + + + shinoblb + Shinobi (Beta bootleg) + + + shinobld + Shinobi (Datsu bootleg, set 1) + + + shinoblda + Shinobi (Datsu bootleg, set 2) + + + shinobldb + Shinobi (Datsu bootleg, set 3) + + + shinobls + Shinobi (Star bootleg, System 16A) + + + shinygld + Shiny Golds + + + shippumd + Shippu Mahou Daisakusen (Japan) + + + shiryu2 + Strider Hiryu 2 (Japan 991213) + + + shisen + Shisensho - Joshiryo-Hen (Japan, set 1) + + + shisen2 + Shisensho II + + + shisena + Shisensho - Joshiryo-Hen (Japan, set 2) + + + shngmtkb + Shanghai Matekibuyuu (Japan) + + + shngmtkbg + Shanghai Matekibuyuu (VER 1.20G) + + + shock + Shock + + + shocking + Shocking + + + shockingk + Shocking (Korea, set 1) + + + shockingko + Shocking (Korea, set 2) + + + shocktr2 + Shock Troopers - 2nd Squad + + + shocktra + Shock Troopers (set 2) + + + shocktro + Shock Troopers (set 1) + + + shocktroa + Shock Troopers (set 2) + + + shogwarr + Shogun Warriors (World) + + + shogwarrk + Shogun Warriors (Korea?) + + + shogwarru + Shogun Warriors (US) + + + shollow + Satan's Hollow (set 1) + + + shollow2 + Satan's Hollow (set 2) + + + shootaw2 + Shoot Away II + + + shootbul + Shoot the Bull + + + shootgal + Shooting Gallery + + + shootopl + Shootout Pool + + + shootoub + Shoot Out (Korean Bootleg) + + + shootouj + Shoot Out (Japan) + + + shootout + Shoot Out (US) + + + shootoutb + Shoot Out (Korean Bootleg) + + + shootoutj + Shoot Out (Japan) + + + shootpl + Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan, Rev A) + + + shootplm + Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) Version B + + + shootplmp + Shootout Pool Prize (Export) / Shootout Pool The Medal (Japan) Version B (prototype) + + + shoottv + Must Shoot TV (prototype) + + + shors2k1 + Star Horse 2001 (satellite, Rev B) + + + shors2k2 + Star Horse 2002 (sound, Export/Taiwan) + + + shors2k2l + Star Horse 2002 (live) + + + shors2k2m + Star Horse 2002 (main screens) + + + shors2k2s + Star Horse 2002 (sound and backup, Rev A) + + + shorse + Star Horse (satellite) + + + shorsel + Star Horse (live and backup) + + + shorsem + Star Horse (main screens) + + + shorsep + Star Horse Progress (satellite, Rev A) + + + shorsepb + Star Horse Progress (backup data) + + + shorsepl + Star Horse Progress (live, Rev A) + + + shorsepm + Star Horse Progress (main screens, Rev B) + + + shorsepr + Star Horse Progress Returns (satellite) + + + shorseprl + Star Horse Progress Returns (live and voice) + + + shorseprs + Star Horse Progress Returns (sound) + + + shorseprvl + Star Horse Progress Returns (main screen left) + + + shorseprvr + Star Horse Progress Returns (main screen right) + + + shorseps + Star Horse Progress (sound & backup, Rev A) + + + shorthng + Shore Thing (0251088, US) + + + shougi + Shougi + + + shougi2 + Shougi Part II + + + showdown + Showdown (version 5.0) + + + showdown4 + Showdown (version 4.0) + + + showhanc + Wangpai Duijue (China) + + + showhand + Show Hand (Italy) + + + showqn + Show Queen (Konami Endeavour, Russia) + + + shpchamp + Shippe Champion (Japan, ver 1.02) + + + shpeng + Sea Hunter Penguin + + + shrike + Shrike Avenger (prototype) + + + shrknew + Sharkey's Shootout (CPU 2.11, display A2.01, ARM7 sound board) + + + shrky_207 + Sharkey's Shootout (CPU 2.07, display A2.01) + + + shrkyfr + Sharkey's Shootout (CPU 2.11, display F2.01, France) + + + shrkyfr_207 + Sharkey's Shootout (CPU 2.07, display F2.01, France) + + + shrkygr + Sharkey's Shootout (CPU 2.11, display G2.01, Germany) + + + shrkygr_207 + Sharkey's Shootout (CPU 2.07, display G2.01, Germany) + + + shrkyit + Sharkey's Shootout (CPU 2.11, display I2.01, Italy) + + + shrkyit_207 + Sharkey's Shootout (CPU 2.07, display I2.01, Italy) + + + shrkysht + Sharkey's Shootout (CPU 2.11, display A2.01) + + + sht3do + Shootout at Old Tucson (3DO hardware) + + + shtngmst + Shooting Master (8751 315-5159a) + + + shtrider + Shot Rider + + + shtridera + Shot Rider (Sigma license) + + + shtriderb + Shot Rider (bootleg) + + + shtstar + Shooting Star + + + shuffle + Shuffleboard + + + shufshot + Shuffleshot (v1.40) + + + shufshot135 + Shuffleshot (v1.35) + + + shufshot137 + Shuffleshot (v1.37) + + + shufshot138 + Shuffleshot (v1.38) + + + shufshot139 + Shuffleshot (v1.39) + + + shun + Shun + + + shuriboy + Shuriken Boy + + + shuttlei + Shuttle Invader + + + shuuz + Shuuz (version 8.0) + + + shuuz2 + Shuuz (version 7.1) + + + sia2650 + Super Invader Attack (bootleg of The Invaders) + + + sianniv + Space Invaders Anniversary (V2.02J 2003/09/12 20:00) + + + sichuan2 + Sichuan II (bootleg, set 1) + + + sichuan2a + Sichuan II (bootleg, set 2) + + + sichuana + Sichuan II (hack[Q]) (set 2) + + + sicv + Space Invaders (CV Version, larger roms) + + + sicv1 + Space Invaders (CV Version, smaller roms) + + + sidampkr + unknown Sidam poker (vertical) + + + sidampkra + unknown Sidam poker (horizontal) + + + sidearjp + Side Arms - Hyper Dyne (Japan) + + + sidearmr + Side Arms - Hyper Dyne (US) + + + sidearms + Side Arms - Hyper Dyne (World, 861129) + + + sidearmsj + Side Arms - Hyper Dyne (Japan, 861128) + + + sidearmsu + Side Arms - Hyper Dyne (US, 861202) + + + sidearmsur1 + Side Arms - Hyper Dyne (US, 861128) + + + sidebs + Side by Side (Ver 3.0 OK) + + + sidebs2 + Side by Side 2 (Ver 2.6 OK) + + + sidebs2j + Side by Side 2 Evoluzione RR (Ver 3.1 J) + + + sidebs2ja + Side by Side 2 Evoluzione (Ver 2.4 J) + + + sidebs2u + Side by Side 2 (Ver 2.6 A) + + + sidebsj + Side by Side (Ver 2.7 J) + + + sidebsja + Side by Side (Ver 2.6 J) + + + sidebsjb + Side by Side (Ver 2.5 J) + + + sidepckt + Side Pocket (World) + + + sidepcktb + Side Pocket (bootleg) + + + sidepcktb2 + Side Pocket (bootleg, set 2) + + + sidepcktj + Side Pocket (Japan, Cocktail) + + + sidepctb + Side Pocket (bootleg) + + + sidepctj + Side Pocket (Japan) + + + sidetrac + Side Trak + + + sidewndr + Sidewinder + + + sigma21 + 21 (Sigma) + + + sigma2k + Sigma Poker 2000 + + + sigmapkr + Sigma Poker + + + silentd + Silent Dragon (World) + + + silentdj + Silent Dragon (Japan) + + + silentdu + Silent Dragon (US) + + + silgola6 + Silver & Gold (20100721, NSW/ACT) + + + silkrda6 + Silk Road (10176811, ASP) + + + silkrda6u + Silk Road (0152537, US) + + + silkroad + The Legend of Silkroad + + + silkroada + The Legend of Silkroad (larger ROMs) + + + silkworm + Silk Worm (World) + + + silkwormb + Silk Worm (bootleg, set 1) + + + silkwormb2 + Silk Worm (bootleg, set 2) + + + silkwormj + Silk Worm (Japan) + + + silkwormp + Silk Worm (prototype) + + + silkwrm2 + Silk Worm (set 2) + + + silverga + Silver Game + + + silvland + Silver Land (hack of River Patrol) + + + silvmil + Silver Millennium + + + silvslug + Silver Slugger + + + simp_a20 + The Simpsons (2.0) + + + simp_a27 + The Simpsons (2.7) + + + simpbest + Simply the Best (CZ750, v1.0) + + + simpbowl + The Simpsons Bowling (GQ829 UAA) + + + simpnew + The Simpsons Pinball Party (CPU 5.00, display A5.00, ARM7 sound board) + + + simpprtf + The Simpsons Pinball Party (CPU 5.00, display F5.00, France) + + + simpprtf_204 + The Simpsons Pinball Party (CPU 2.04, display F2.01, France) + + + simpprtf_300 + The Simpsons Pinball Party (CPU 3.00, display F3.00, France) + + + simpprtf_400 + The Simpsons Pinball Party (CPU 4.00, display F4.00, France) + + + simpprtg + The Simpsons Pinball Party (CPU 5.00, display G5.00, Germany) + + + simpprtg_400 + The Simpsons Pinball Party (CPU 4.00, display G4.00, Germany) + + + simpprti + The Simpsons Pinball Party (CPU 5.00, display I5.00, Italy) + + + simpprti_204 + The Simpsons Pinball Party (CPU 2.04, display I2.01, Italy) + + + simpprti_300 + The Simpsons Pinball Party (CPU 3.00, display I3.00, Italy) + + + simpprti_400 + The Simpsons Pinball Party (CPU 4.00, display I4.00, Italy) + + + simpprtl + The Simpsons Pinball Party (CPU 5.00, display L5.00, Spain) + + + simpprtl_204 + The Simpsons Pinball Party (CPU 2.04, display L2.01, Spain) + + + simpprtl_300 + The Simpsons Pinball Party (CPU 3.00, display L3.00, Spain) + + + simpprtl_400 + The Simpsons Pinball Party (CPU 4.00, display L4.00, Spain) + + + simpprty + The Simpsons Pinball Party (CPU 5.00, display A5.00) + + + simpprty_204 + The Simpsons Pinball Party (CPU 2.04, display A2.01) + + + simpprty_300 + The Simpsons Pinball Party (CPU 3.00, display A3.00) + + + simpprty_400 + The Simpsons Pinball Party (CPU 4.00, display A4.00) + + + simps2pa + The Simpsons (2 Players alt) + + + simps2pj + The Simpsons (2 Players Japan) + + + simpsn2p + The Simpsons (2 Players) + + + simpsonjr + Simpson Junior (bootleg of J. J. Squawkers) + + + simpsons + The Simpsons (4 Players World, set 1) + + + simpsons2p + The Simpsons (2 Players World, set 1) + + + simpsons2p2 + The Simpsons (2 Players World, set 2) + + + simpsons2p3 + The Simpsons (2 Players World, set 3) + + + simpsons2pa + The Simpsons (2 Players Asia) + + + simpsons2pj + The Simpsons (2 Players Japan) + + + simpsons4pa + The Simpsons (4 Players Asia) + + + simpsons4pe + The Simpsons (4 Players World, set 2) + + + simpsons4pe2 + The Simpsons (4 Players World, set 3) + + + sinbad + Sinbad + + + sinbadn + Sinbad (Norway) + + + sindbadm + Sindbad Mystery + + + sinista1 + Sinistar (prototype version) + + + sinista2 + Sinistar (revision 2) + + + sinistar + Sinistar (revision 3, upright) + + + sinistar2 + Sinistar (revision 2, upright) + + + sinistarc + Sinistar (revision 3, cockpit) + + + sinistarc2 + Sinistar (revision 2, cockpit) + + + sinistarcsm + Sinistar (Cockpit, SynaMax difficulty/titlescreen hack) + + + sinistarp + Sinistar (AMOA-82 prototype) + + + sinistarsm + Sinistar (SynaMax difficulty/titlescreen hack) + + + sinvasn + Space Invasion (Europe) + + + sinvasnb + Space Invasion (bootleg) + + + sinvemag + Super Invaders (Emag bootleg set 1) + + + sinvemag2 + Super Invaders (Emag bootleg set 2) + + + sinvzen + Super Invaders (Zenitone-Microsec) + + + sirio2 + Sirio II (Calfesa S.L. Spanish bootleg of Moon Cresta) + + + sisv + Space Invaders (SV Version rev 4) + + + sisv1 + Space Invaders (SV Version rev 1) + + + sisv2 + Space Invaders (SV Version rev 2) + + + sisv3 + Space Invaders (SV Version rev 3) + + + sitv + Space Invaders (TV Version rev 2) + + + sitv1 + Space Invaders (TV Version rev 1) + + + sjcd2kx3 + Super Joly 2000 - 3x + + + sjryuko + Sukeban Jansi Ryuko (set 2, System 16B, FD1089B 317-5021) + + + sjryuko1 + Sukeban Jansi Ryuko (set 1, System 16A, FD1089B 317-5021) + + + skatebll + Skateball + + + skatebrd + Skate Board (Inder) + + + skatekds + Vs. Skate Kids. (Graphic hack of Super Mario Bros.) + + + skattv + Skat TV + + + skattva + Skat TV (version TS3) + + + skc_090 + Simpsons Kooky Carnival (Redemption) v0.90 New Jersey + + + skc_103 + Simpsons Kooky Carnival (Redemption) v1.03 + + + skc_105 + Simpsons Kooky Carnival (Redemption) v1.05 + + + skeetsht + Skeet Shot + + + skelagon + Skelagon + + + skflight + Skill Flight + + + skichamp + Ski Champ (Japan) + + + skijump + Ski Jump + + + skill98 + Skill '98 (Talking ver. s98-1.33) + + + skillch + Skill Chance (W-7, set 1) + + + skillcha + Skill Chance (W-7, set 2) + + + skilldrp + Skill Drop Georgia (Ver. G1.01S, Oct 1 2002) + + + skilldrpa + Skill Drop Georgia (Ver. G1.0S, Sep 13 2002) + + + skimaxx + Skimaxx + + + skingam2 + The Irem Skins Game (US set 2) + + + skingame + The Irem Skins Game (US set 1) + + + skingame2 + The Irem Skins Game (US set 2) + + + skisuprg + Sega Ski Super G + + + sklflite + Skill Flight (Playmatic) + + + skullfng + Skull Fang (Europe 1.13) + + + skullfnga + Skull Fang - Kuhga Gaiden (Asia 1.13) + + + skullfngj + Skull Fang - Kuhga Gaiden (Japan 1.09) + + + skullxb1 + Skull and Crossbones (rev 1) + + + skullxb2 + Skull and Crossbones (rev 2) + + + skullxb3 + Skull and Crossbones (rev 3) + + + skullxb4 + Skull and Crossbones (rev 4) + + + skullxbo + Skull & Crossbones (rev 5) + + + skullxbo1 + Skull & Crossbones (rev 1) + + + skullxbo2 + Skull & Crossbones (rev 2) + + + skullxbo3 + Skull & Crossbones (rev 3) + + + skullxbo4 + Skull & Crossbones (rev 4) + + + skyadvnj + Sky Adventure (Japan) + + + skyadvnt + Sky Adventure (World) + + + skyadvntj + Sky Adventure (Japan) + + + skyadvntu + Sky Adventure (US) + + + skyadvnu + Sky Adventure (US) + + + skyalert + Sky Alert + + + skyarmy + Sky Army + + + skybase + Sky Base + + + skybump + Sky Bumper + + + skychal + Sky Challenger (J 000406 V1.000) + + + skychut + Sky Chuter + + + skydest + Sky Destroyer (Japan) + + + skydiver + Sky Diver + + + skydnca6 + Sky Dancer (10272711, NSW/ACT) + + + skyfire + Sky Fire + + + skyfox + Sky Fox + + + skykid + Sky Kid (new version) + + + skykidd + Sky Kid (CUS60 version) + + + skykiddo + Sky Kid Deluxe (set 2) + + + skykiddx + Sky Kid Deluxe (set 1) + + + skykiddxo + Sky Kid Deluxe (set 2) + + + skykido + Sky Kid (old version) + + + skykids + Sky Kid (Sipem) + + + skylancr + Sky Lancer + + + skylancre + Sky Lancer (Esco Trading Co license) + + + skylncr + Sky Lancer (Bordun, version U450C) + + + skylove + Sky Love + + + skyraid + Sky Raider + + + skyraidr + Sky Raider (bootleg of UniWar S) + + + skyrobo + Sky Robo + + + skyshark + Sky Shark (US, set 1) + + + skysharka + Sky Shark (US, set 2) + + + skysharkb + Sky Shark (bootleg) + + + skyskipr + Sky Skipper + + + skysmash + Sky Smasher + + + skysoldr + Sky Soldiers (US) + + + skysoldrbl + Sky Soldiers (bootleg) + + + skytargt + Sky Target + + + skywolf + Sky Wolf (set 1) + + + skywolf2 + Sky Wolf (set 2) + + + skywolf3 + Sky Wolf (set 3) + + + sl2007 + Shooting Love 2007 (Japan) + + + slalom03 + Slalom Code 0.3 + + + slamdnk2 + Slam Dunk 2 (ver JAA) + + + slammast + Saturday Night Slam Masters (World 930713) + + + slammastu + Saturday Night Slam Masters (USA 930713) + + + slammasu + Saturday Night Slam Masters (US 930713) + + + slampic + Saturday Night Slam Masters (bootleg with PIC16C57, set 1) + + + slampic2 + Saturday Night Slam Masters (bootleg with PIC16C57, set 2) + + + slapbtjp + Slap Fight (Japan bootleg) + + + slapbtuk + Slap Fight (English bootleg) + + + slapfigh + Slap Fight (A77 set, 8606M PCB) + + + slapfigha + Slap Fight (A76 set, GX-006-A PCB) + + + slapfighb1 + Slap Fight (bootleg set 1) + + + slapfighb2 + Slap Fight (bootleg set 2) + + + slapfighb3 + Slap Fight (bootleg set 3) + + + slapfighm + Slap Fight (Modular System) + + + slapshot + Slap Shot (Ver 3.0 O) + + + slapshotj + Slap Shot (Ver 2.2 J) + + + slapshtr + Slap Shooter + + + slasho + Slashout + + + slashout + Slashout (GDS-0004) + + + slbmania + Silverball Mania + + + sldeluxe + Sweet Liberty Deluxe (AHG1575, US) + + + sleague + Super Major League (US) + + + sleicpin + Sleic Pin Ball + + + sliksh17 + Slick Shot (V1.7) + + + slikshot + Slick Shot (V2.2) + + + slikshot16 + Slick Shot (V1.6) + + + slikshot17 + Slick Shot (V1.7) + + + slimekun + Slime Kun + + + slipstrh + Slipstream (Hispanic) + + + slipstrm + Slip Stream (Brazil 950515) + + + slipstrmh + Slip Stream (Hispanic 950515) + + + slither + Slither (set 1) + + + slithera + Slither (set 2) + + + sliver + Sliver (set 1) + + + slivera + Sliver (set 2) + + + slmdunkj + Slam Dunk (ver JAA 1993 10.8) + + + slmdunkjd + Slam Dunk (ver JAA 1993 10.8) (dual screen with demux adapter) + + + sloco93 + Super Loco 93 (Spanish, set 1) + + + sloco93a + Super Loco 93 (Spanish, set 2) + + + slotcarn + Slot Carnival + + + slotouji + Slot no Oujisama / Slot Prince (Japan, SLO1 Ver. B) + + + slotsnl + Slots (Dutch, Game Card 95-750-368) + + + slotunbl + Slot (unknown bootleg?) + + + slqz2 + Shuang Long Qiang Zhu 2 VS (China, VS203J) + + + slqz2a + Shuang Long Qiang Zhu 2 VS (China, set 2) + + + slqz3 + Shuang Long Qiang Zhu 3 (China, VS107C) + + + slqzsp + Shuang Long Qiang Zhu Tebie Ban (V104CN) + + + slrasslt + Solar Assault (ver UAA) + + + slrassltj + Solar Assault Revised (ver JAA) + + + slrassltj1 + Solar Assault (ver JAA) + + + slspirit + Solite Spirits + + + sltblgp1 + Slots (Belgian Cash, Game Card 95-752-008) + + + sltblgpo + Slots (Belgian Cash, Game Card 95-750-938) + + + sltblgtk + Slots (Belgian Token, Game Card 95-750-943) + + + sltblgtka + Slots (Belgian Token, Game Card 95-750-452) + + + sltpcycl + Pro Cycle Tele Cardioline (Salter Fitness Bike V.1.0, Checksum 02AB) + + + sltpstep + Pro Stepper Tele Cardioline (Salter Fitness Stepper V.1.0, Checksum F208) + + + sluster2 + Super Luster II + + + slvrball632 + Silverball (6.32) + + + slvrball720 + Silverball (7.20) + + + slvrball806 + Silverball (8.01) + + + slvrballbu409 + Silverball Bulova (4.09, set 1) + + + slvrballbu409b + Silverball Bulova (4.09, set 2) + + + slvrwolf + Silver Wolf (0100673V, NSW/ACT) + + + slyspy + Sly Spy (US, revision 4) + + + slyspy2 + Sly Spy (US, revision 2) + + + slyspy3 + Sly Spy (US, revision 3) + + + sm_ngacc + Nudge Accumulator (Summit Coin) + + + sm_ultng + Ultimate Nudge (Summit Coin) + + + sman_102ef + Spider-Man v1.02 (English,French) + + + sman_130ef + Spider-Man v1.30 (English,French) + + + sman_130ei + Spider-Man v1.30 (English,Italian) + + + sman_130es + Spider-Man v1.30 (English,Spanish) + + + sman_130gf + Spider-Man v1.30 (German,French) + + + sman_140e + Spider-Man v1.40 + + + sman_140ef + Spider-Man v1.40 (English,French) + + + sman_140ei + Spider-Man v1.40 (English,Italian) + + + sman_140es + Spider-Man v1.40 (English,Spanish) + + + sman_140gf + Spider-Man v1.40 (German,French) + + + sman_142e + Spider-Man v1.42 + + + sman_160e + Spider-Man v1.60 + + + sman_160ef + Spider-Man v1.60 (English,French) + + + sman_160ei + Spider-Man v1.60 (English,Italian) + + + sman_160es + Spider-Man v1.60 (English,Spanish) + + + sman_160gf + Spider-Man v1.60 (German,French) + + + sman_170e + Spider-Man v1.70 + + + sman_170ef + Spider-Man v1.70 (English,French) + + + sman_170ei + Spider-Man v1.70 (English,Italian) + + + sman_170es + Spider-Man v1.70 (English,Spanish) + + + sman_170gf + Spider-Man v1.70 (German,French) + + + sman_190e + Spider-Man v1.90 + + + sman_190ef + Spider-Man v1.90 (English,French) + + + sman_190ei + Spider-Man v1.90 (English,Italian) + + + sman_190es + Spider-Man v1.90 (English,Spanish) + + + sman_190gf + Spider-Man v1.90 (German,French) + + + sman_192e + Spider-Man v1.92 + + + sman_192ef + Spider-Man v1.92 (English,French) + + + sman_192ei + Spider-Man v1.92 (English,Italian) + + + sman_192es + Spider-Man v1.92 (English,Spanish) + + + sman_192gf + Spider-Man v1.92 (German,French) + + + sman_200e + Spider-Man v2.00 + + + sman_210e + Spider-Man v2.10 + + + sman_210ei + Spider-Man v2.10 (English,Italian) + + + sman_210es + Spider-Man v2.10 (English,Spanish) + + + sman_210f + Spider-Man v2.10 (French) + + + sman_210gf + Spider-Man v2.10 (German,French) + + + sman_220e + Spider-Man v2.20 + + + sman_230e + Spider-Man v2.30 + + + sman_240 + Spider-Man v2.40 + + + smarinef + Sega Marine Fishing + + + smartoss + Smart Toss 'em / Smartball (Ver 2.0) + + + smash + Smash (bootleg of Crash) + + + smashdrv + Smashing Drive (World) + + + smashdrvb + Smashing Drive (UK) + + + smashdrvs + Smashing Drive (Spain, Portugal) + + + smashtv + Smash T.V. (rev 8.00) + + + smashtv3 + Smash T.V. (rev 3.01) + + + smashtv4 + Smash T.V. (rev 4.00) + + + smashtv5 + Smash T.V. (rev 5.00) + + + smashtv6 + Smash T.V. (rev 6.00) + + + smb3bl + Super Mario Bros. 3 (NES bootleg) + + + smbmush + Super Mario Brothers Mushroom World + + + smbomb + Super Muscle Bomber: The International Blowout (Japan 940831) + + + smbombr1 + Super Muscle Bomber: The International Blowout (Japan 940808) + + + smbp + Super Mario Brothers (pinball, set 1) + + + smbpa + Super Mario Brothers (pinball, set 2) + + + smbpb + Super Mario Brothers (pinball, set 3) + + + smbpc + Super Mario Brothers (pinball, set 4) + + + smcard + Super Magic Card + + + smf + Super Medal Fighters (Japan 970228) + + + smgolf + Vs. Stroke & Match Golf (Men Version, set GF4-2 F) + + + smgolfb + Vs. Stroke & Match Golf (Men Version, set GF4-2 ?) + + + smgolfj + Vs. Stroke & Match Golf (Men Version) (Japan, set GF3 B) + + + smgp + Super Monaco GP (World, Rev B) (FD1094 317-0126a) + + + smgp5 + Super Monaco GP (World) (FD1094 317-0126) + + + smgp5d + Super Monaco GP (World) (bootleg of FD1094 317-0126 set) + + + smgp6 + Super Monaco GP (World, Rev A) (FD1094 317-0126a) + + + smgp6d + Super Monaco GP (World, Rev A) (bootleg of FD1094 317-0126a set) + + + smgpd + Super Monaco GP (World, Rev B) (bootleg of FD1094 317-0126a set) + + + smgpj + Super Monaco GP (Japan, Rev B) (FD1094 317-0124a) + + + smgpja + Super Monaco GP (Japan, Rev A) (FD1094 317-0124a) + + + smgpjd + Super Monaco GP (Japan, Rev B) (bootleg of FD1094 317-0124a set) + + + smgpu + Super Monaco GP (US, Rev C) (FD1094 317-0125a) + + + smgpu1 + Super Monaco GP (US, Rev B) (FD1094 317-0125a) + + + smgpu1d + Super Monaco GP (US, Rev B) (bootleg of FD1094 317-0125a set) + + + smgpu2 + Super Monaco GP (US, Rev A) (FD1094 317-0125a) + + + smgpu2d + Super Monaco GP (US, Rev A) (bootleg of FD1094 317-0125a set) + + + smgpud + Super Monaco GP (US, Rev C) (bootleg of FD1094 317-0125a set) + + + smiconk + Space Micon Kit + + + sminiboy + Super Mini-Boy + + + smissw + Super Miss World + + + smleague + Super Major League (U 960108 V1.000) + + + smlg99 + World Series 99 / Super Major League 99 + + + smman + Six Million Dollar Man + + + smooncrs + Super Moon Cresta (Gremlin, bootleg) + + + smoto13 + Super Rider (v1.3) + + + smoto16 + Super Moto (Italy, v1.6) + + + smoto20 + Super Rider (Italy, v2.0) + + + smotor + Super Motor (prototype) + + + sms4in1 + 4-in-1 (version SWS1-052587) + + + sms4in1a + 4-in-1 (version SWS1-110984) + + + smshilo + HI-LO Double Up Joker Poker + + + smsjoker + Joker Poker With Hi-Lo Double-Up + + + smssgame + Super Game (Sega Master System Multi-game bootleg, 01 Final Bubble Bobble) + + + smssgamea + Super Game (Sega Master System Multi-game bootleg, 01 Tri Formation) + + + smtma6 + Show Me The Money (10001911, NSW/ACT) + + + smtma6q + Show Me The Money (10015711, Queensland) + + + snake + Snake Machine + + + snakepit + Snake Pit + + + snakepita + Snake Pit (9/14/84) + + + snakjack + Snacks'n Jaxson + + + snapjack + Snap Jack + + + snapper + Snapper (Korea) + + + snapshot + Snap Shot (20115211, ASP) + + + sncwgltd + Sonic Wings Limited (Japan) + + + snes4sl + SNES 4 Slot arcade switcher + + + snes4sln + SNES 4 Slot arcade switcher (NBA Jam) + + + sngkace + Sengoku Ace (Japan, set 1) + + + sngkacea + Sengoku Ace (Japan, set 2) + + + snlad + Snake & Ladders + + + snookr10 + Snooker 10 (Ver 1.11) + + + snowbalt + Snow Board Championship (set 2) + + + snowboar + Snow Board Championship (Version 2.1) + + + snowboara + Snow Board Championship (Version 2.0) + + + snowbro2 + Snow Bros. 2 - With New Elves / Otenki Paradise (Hanafram) + + + snowbro2b + Snow Bros. 2 - With New Elves / Otenki Paradise (bootleg, set 1) + + + snowbro2b2 + Snow Bros. 2 - With New Elves / Otenki Paradise (bootleg, set 2) + + + snowbro2b3 + Snow Bros. 2 - With New Elves / Otenki Paradise (bootleg, set 3) + + + snowbro2ny + Snow Bros. 2 - With New Elves / Otenki Paradise (Nyanko) + + + snowbro3 + Snow Brothers 3 - Magical Adventure + + + snowbroa + Snow Bros. - Nick & Tom (set 2) + + + snowbrob + Snow Bros. - Nick & Tom (set 3) + + + snowbroj + Snow Bros. - Nick & Tom (Japan) + + + snowbros + Snow Bros. - Nick & Tom (set 1) + + + snowbrosa + Snow Bros. - Nick & Tom (set 2) + + + snowbrosb + Snow Bros. - Nick & Tom (set 3) + + + snowbrosc + Snow Bros. - Nick & Tom (set 4) + + + snowbrosd + Snow Bros. - Nick & Tom (Dooyong license) + + + snowbrosj + Snow Bros. - Nick & Tom (Japan) + + + snowbroswb + Snow Bros. - Nick & Tom (The Winter Bobble hardware bootleg) + + + snowbwar + Snowball War - WakuWaku Yukigassen + + + snowcat + Snow Cat (0100405V, NSW/ACT) + + + snspares + Strikes n' Spares (rev.6) + + + snspares1 + Strikes n' Spares (rev.1) + + + snspares2 + Strikes n' Spares (rev.2) + + + socbrawl + Soccer Brawl (NGM-031) + + + socbrawlh + Soccer Brawl (NGH-031) + + + soccer + Atari Soccer + + + soccer10 + Soccer 10 (ver. 16.44) + + + soccernw + Soccer New (Italian) + + + soccerss + Soccer Superstars (ver EAC) + + + soccerssa + Soccer Superstars (ver AAA) + + + soccerssj + Soccer Superstars (ver JAC) + + + soccerssja + Soccer Superstars (ver JAA) + + + soccerssu + Soccer Superstars (ver UAC) + + + soccrrmt + Soccer (Ramtek) + + + socrking + Soccer Kings + + + socrkinga + Soccer Kings (alternate set) + + + socrkingg + Soccer Kings (German speech) + + + socrkingi + Soccer Kings (Italian speech) + + + sogeki + Sogeki (ver JAA) + + + sokoban + Sokoban LE + + + sokonuke + Sokonuke Taisen Game (Japan) + + + sokyugrt + Soukyugurentai / Terra Diver (JUET 960821 V1.000) + + + solar_l2 + Solar Fire (L-2) + + + solarfox + Solar Fox (upright) + + + solaride + Solar Ride + + + solarq + Solar Quest (rev 10 8 81) + + + solarwap + Solar Wars (Sonic) + + + solarwar + Solar War + + + soldam + Soldam + + + soldamj + Soldam (Japan) + + + soldivid + Sol Divide - The Sword Of Darkness + + + soldividk + Sol Divide - The Sword Of Darkness (Korea) + + + solfight + Solar Fight (bootleg of Ozma Wars) + + + solfigtr + Solitary Fighter (World) + + + solitaire + Solitaire (version 2.5) + + + solomon + Solomon's Key (US) + + + solomonc + Solomon no Kagi (T-Chi) + + + solomonj + Solomon no Kagi (Japan) + + + solomonjx + Solomon no Kagi X (Japan) + + + solrwarr + Solar-Warrior (US) + + + solvalou + Solvalou (SV1, Japan) + + + sonic + SegaSonic The Hedgehog (Japan, rev. C) + + + sonic2mb + Sonic The Hedgehog 2 (bootleg of Mega Drive version) + + + sonic3mb + Sonic The Hedgehog 3 (bootleg of Mega Drive version) + + + sonicbom + Sonic Boom (FD1094 317-0053) + + + sonicbomd + Sonic Boom (bootleg of FD1094 317-0053 set) + + + soniccar + Waku Waku Sonic Patrol Car + + + sonicfgt + SegaSonic Cosmo Fighter (World) + + + sonicfgtj + SegaSonic Cosmo Fighter (Japan) + + + sonicp + SegaSonic The Hedgehog (Japan, prototype) + + + sonicpop + SegaSonic Popcorn Shop (Rev B) + + + sonicwi + Sonic Wings (Japan) + + + sonicwi2 + Aero Fighters 2 / Sonic Wings 2 + + + sonicwi3 + Aero Fighters 3 / Sonic Wings 3 + + + sonikfig + Sonik Fighter (version 02, encrypted) + + + sonofphx + Son of Phoenix (bootleg of Repulse) + + + sonoth + Something For Nothing (Russian) + + + sonson + Son Son + + + sonsonj + Son Son (Japan) + + + sonstwar + Star Wars (Sonic, set 1) + + + sonstwr2 + Star Wars (Sonic, set 2) + + + sopranof + The Sopranos (CPU 5.00, display F5.00, France) + + + sopranof_107 + The Sopranos (CPU 1.07, display F1.00, France) + + + sopranof_300 + The Sopranos (CPU 3.00, display F3.00, France) + + + sopranof_400 + The Sopranos (CPU 4.00, display F4.00, France) + + + sopranog + The Sopranos (CPU 5.00, display G5.00, Germany) + + + sopranog_107 + The Sopranos (CPU 1.07, display G1.00, Germany) + + + sopranog_300 + The Sopranos (CPU 3.00, display G3.00, Germany) + + + sopranog_400 + The Sopranos (CPU 4.00, display G4.00, Germany) + + + sopranoi + The Sopranos (CPU 5.00, display I5.00, Italy) + + + sopranoi_107 + The Sopranos (CPU 1.07, display I1.00, Italy) + + + sopranoi_300 + The Sopranos (CPU 3.00, display I3.00, Italy) + + + sopranoi_400 + The Sopranos (CPU 4.00, display I4.00, Italy) + + + sopranol + The Sopranos (CPU 5.00, display L5.00, Spain) + + + sopranol_107 + The Sopranos (CPU 1.07, display L1.00, Spain) + + + sopranol_300 + The Sopranos (CPU 3.00, display L3.00, Spain) + + + sopranol_400 + The Sopranos (CPU 4.00, display L4.00, Spain) + + + sopranos + The Sopranos (CPU 5.00, display A5.00) + + + sopranos_204 + The Sopranos (CPU 2.04, display A2.00) + + + sopranos_300 + The Sopranos (CPU 3.00, display A3.00) + + + sopranos_400 + The Sopranos (CPU 4.00, display A4.00) + + + sorbit + Super Orbit + + + sorcr_l1 + Sorcerer (L-1) + + + sorcr_l2 + Sorcerer (L-2) + + + sos + SOS Game + + + sosterm + S.O.S. + + + sothello + Super Othello + + + sotsugyo + Sotsugyo Shousho (Japan) + + + sotsugyok + Jor-eop Jeungmyeongseo (Korea) + + + soukobdx + Souko Ban Deluxe (Japan, SB1) + + + soulcl2a + Soul Calibur II (SC22 Ver. A) + + + soulcl2b + Soul Calibur II (SC21 Ver. A) + + + soulcl2w + Soul Calibur II (SC23 world version) + + + soulclb2 + Soul Calibur II (SC23 Ver. A) + + + soulclb3 + Soul Calibur III: Arcade Edition (SC31001-NA-A key, NA-B disc) + + + soulclb3a + Soul Calibur III: Arcade Edition (SC31002-NA-A key, NA-B disc) + + + soulclb3b + Soul Calibur III: Arcade Edition (SC31002-NA-A key, NA-A disc) + + + soulclbr + Soul Calibur (World, SOC12/VER.A2) + + + soulclbrab + Soul Calibur (Asia, SOC14/VER.B) + + + soulclbrac + Soul Calibur (Asia, SOC14/VER.C) + + + soulclbrja2 + Soul Calibur (Japan, SOC11/VER.A2) + + + soulclbrjb + Soul Calibur (Japan, SOC11/VER.B) + + + soulclbrjc + Soul Calibur (Japan, SOC11/VER.C) + + + soulclbrub + Soul Calibur (US, SOC13/VER.B) + + + soulclbruc + Soul Calibur (US, SOC13/VER.C) + + + souledga + Soul Edge (SO3-VER.A) + + + souledgb + Soul Edge (SO1-VER.A) + + + souledge + Soul Edge Ver. II (Asia, SO4/VER.C) + + + souledgea + Soul Edge (World, SO2/VER.A) + + + souledgeja + Soul Edge (Japan, SO1/VER.A) + + + souledgeua + Soul Edge (US, SO3/VER.A) + + + souledgeuc + Soul Edge Ver. II (US, SO3/VER.C) + + + soulsurf + Soul Surfer (Rev A) + + + soutenry + Soutenryu (V2.07J 2000/12/14 11:13:02) + + + sp_atw + Around The World In Eighty Days (Crystal) (sp.ACE?) + + + sp_beau + Beau Peep (Ace) (sp.ACE) (set 1) + + + sp_beau2 + Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 1) + + + sp_beau2a + Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 2) + + + sp_beau2b + Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 3) + + + sp_beau2c + Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 4) + + + sp_beau2d + Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 5) + + + sp_beau2e + Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 6) + + + sp_beau2f + Further Adventures Of Beau Peep (Ace) (sp.ACE) (set 7) + + + sp_beaua + Beau Peep (Ace) (sp.ACE) (set 2) + + + sp_beaub + Beau Peep (Ace) (sp.ACE) (set 3) + + + sp_beauc + Beau Peep (Ace) (sp.ACE) (set 4) + + + sp_beaud + Beau Peep (Ace) (sp.ACE) (set 5) + + + sp_beaue + Beau Peep (Ace) (sp.ACE) (set 6) + + + sp_beauf + Beau Peep (Ace) (sp.ACE) (set 7) + + + sp_beaug + Beau Peep (Ace) (sp.ACE) (set 8) + + + sp_beauh + Beau Peep (Ace) (sp.ACE) (set 9) + + + sp_bigbd + Big Break Deluxe Club (Ace) (sp.ACE) (set 1) + + + sp_bigbda + Big Break Deluxe Club (Ace) (sp.ACE) (set 2) + + + sp_brkbk + Break The Bank (Ace) (sp.ACE) (set 1) + + + sp_brkbka + Break The Bank (Ace) (sp.ACE) (set 2) + + + sp_brkbkb + Break The Bank (Ace) (sp.ACE) (set 3) + + + sp_brkbkc + Break The Bank (Ace) (sp.ACE) (set 4) + + + sp_brkbkd + Break The Bank (Ace) (sp.ACE) (set 5) + + + sp_camel + Camelot (Ace) (sp.ACE) (set 1) + + + sp_camela + Camelot (Ace) (sp.ACE) (set 2) + + + sp_camelb + Camelot (Ace) (sp.ACE) (set 3) + + + sp_camelc + Camelot (Ace) (sp.ACE) (set 4) + + + sp_cameld + Camelot (Ace) (sp.ACE) (set 5) + + + sp_camele + Camelot (Ace) (sp.ACE) (set 6) + + + sp_camelf + Camelot (Ace) (sp.ACE) (set 7) + + + sp_camelg + Camelot (Ace) (sp.ACE) (set 8) + + + sp_camelh + Camelot (Ace) (sp.ACE) (set 9) + + + sp_cameli + Camelot (Ace) (sp.ACE) (set 10) + + + sp_camelj + Camelot (Ace) (sp.ACE) (set 11) + + + sp_camelk + Camelot (Ace) (sp.ACE) (set 12) + + + sp_camell + Camelot (Ace) (sp.ACE) (set 13) + + + sp_camelm + Camelot (Ace) (sp.ACE) (set 14) + + + sp_cameln + Camelot (Ace) (sp.ACE) (set 15) + + + sp_camelo + Camelot (Ace) (sp.ACE) (set 16) + + + sp_carry + Carry On (Pcp) (sp.ACE) (set 1) + + + sp_carrya + Carry On (Pcp) (sp.ACE) (set 2) + + + sp_cbowl + Cash Bowl (Ace) (sp.ACE) (set 1) + + + sp_cbowla + Cash Bowl (Ace) (sp.ACE) (set 2) + + + sp_cbowlb + Cash Bowl (Ace) (sp.ACE) (set 3) + + + sp_cbowlc + Cash Bowl (Ace) (sp.ACE) (set 4) + + + sp_cbowld + Cash Bowl (Ace) (sp.ACE) (set 5) + + + sp_cbowle + Cash Bowl (Ace) (sp.ACE) (set 6) + + + sp_cbowlf + Cash Bowl (Ace) (sp.ACE) (set 7) + + + sp_cbowlg + Cash Bowl (Ace) (sp.ACE) (set 8) + + + sp_cbowlh + Cash Bowl (Ace) (sp.ACE) (set 9) + + + sp_cbowli + Cash Bowl (Ace) (sp.ACE) (set 10) + + + sp_cbowlj + Cash Bowl (Ace) (sp.ACE) (set 11) + + + sp_cbowlk + Cash Bowl (Ace) (sp.ACE) (set 12) + + + sp_cbowll + Cash Bowl (Ace) (sp.ACE) (set 13) + + + sp_cbowlm + Cash Bowl (Ace) (sp.ACE) (set 14) + + + sp_cbowln + Cash Bowl (Ace) (sp.ACE) (set 15) + + + sp_cbowlo + Cash Bowl (Ace) (sp.ACE) (set 16) + + + sp_cbowlp + Cash Bowl (Ace) (sp.ACE) (set 17) + + + sp_cbowlq + Cash Bowl (Ace) (sp.ACE) (set 18) + + + sp_cbowlr + Cash Bowl (Ace) (sp.ACE) (set 19) + + + sp_cbowls + Cash Bowl (Ace) (sp.ACE) (set 20) + + + sp_cbowlt + Cash Bowl (Ace) (sp.ACE) (set 21) + + + sp_cbowlu + Cash Bowl (Ace) (sp.ACE) (set 22) + + + sp_clbna + Club National (Ace) (sp.ACE) (set 1) + + + sp_clbnaa + Club National (Ace) (sp.ACE) (set 2) + + + sp_coder + Code Red (Ace) (sp.ACE) (set 1) + + + sp_codera + Code Red (Ace) (sp.ACE) (set 2) + + + sp_coderb + Code Red (Ace) (sp.ACE) (set 3) + + + sp_coderc + Code Red (Ace) (sp.ACE) (set 4) + + + sp_coderd + Code Red (Ace) (sp.ACE) (set 5) + + + sp_codere + Code Red (Ace) (sp.ACE) (set 6) + + + sp_coderf + Code Red (Ace) (sp.ACE) (set 7) + + + sp_coderg + Code Red (Ace) (sp.ACE) (set 8) + + + sp_cpal + Caesars Palace (Ace) (sp.ACE?) + + + sp_crime + Crime Watch (Ace) (sp.ACE) (set 1) + + + sp_crimea + Crime Watch (Ace) (sp.ACE) (set 2) + + + sp_crimeb + Crime Watch (Ace) (sp.ACE) (set 3) + + + sp_crimec + Crime Watch (Ace) (sp.ACE) (set 4) + + + sp_crimed + Crime Watch (Ace) (sp.ACE) (set 5) + + + sp_crimee + Crime Watch (Ace) (sp.ACE) (set 6) + + + sp_crimef + Crime Watch (Ace) (sp.ACE) (set 7) + + + sp_crimeg + Crime Watch (Ace) (sp.ACE) (set 8) + + + sp_crimeh + Crime Watch (Ace) (sp.ACE) (set 9) + + + sp_criss + Criss Cross Cash (Ace) (sp.ACE) (set 1) + + + sp_crissa + Criss Cross Cash (Ace) (sp.ACE) (set 2) + + + sp_crissb + Criss Cross Cash (Ace) (sp.ACE) (set 3) + + + sp_crissc + Criss Cross Cash (Ace) (sp.ACE) (set 4) + + + sp_crissd + Criss Cross Cash (Ace) (sp.ACE) (set 5) + + + sp_crisse + Criss Cross Cash (Ace) (sp.ACE) (set 6) + + + sp_crissf + Criss Cross Cash (Ace) (sp.ACE) (set 7) + + + sp_crissg + Criss Cross Cash (Ace) (sp.ACE) (set 8) + + + sp_crun + Cash Run (Crystal) (sp.ACE?) (set 1) + + + sp_cruna + Cash Run (Crystal) (sp.ACE?) (set 2) + + + sp_crunb + Cash Run (Crystal) (sp.ACE?) (set 3) + + + sp_daytr + Daytripper (Ace) (sp.ACE) (set 1) + + + sp_daytra + Daytripper (Ace) (sp.ACE) (set 2) + + + sp_daytrb + Daytripper (Ace) (sp.ACE) (set 3) + + + sp_daytrc + Daytripper (Ace) (sp.ACE) (set 4) + + + sp_donky + Donkey Derby (Ace) (sp.ACE) (set 1) + + + sp_donkya + Donkey Derby (Ace) (sp.ACE) (set 2) + + + sp_donkyb + Donkey Derby (Ace) (sp.ACE) (set 3) + + + sp_donkyc + Donkey Derby (Ace) (sp.ACE) (set 4) + + + sp_donkyd + Donkey Derby (Ace) (sp.ACE) (set 5) + + + sp_donkye + Donkey Derby (Ace) (sp.ACE) (set 6) + + + sp_donkyf + Donkey Derby (Ace) (sp.ACE) (set 7) + + + sp_donkyg + Donkey Derby (Ace) (sp.ACE) (set 8) + + + sp_dyour + Double Your Money (Ace) (sp.ACE) + + + sp_emmrd + Emmerdale (Ace) (sp.ACE) (set 1) + + + sp_emmrda + Emmerdale (Ace) (sp.ACE) (set 2) + + + sp_emmrdb + Emmerdale (Ace) (sp.ACE) (set 3) + + + sp_emmrdc + Emmerdale (Ace) (sp.ACE) (set 4) + + + sp_emmrdd + Emmerdale (Ace) (sp.ACE) (set 5) + + + sp_emmrde + Emmerdale (Ace) (sp.ACE) (set 6) + + + sp_emmrdf + Emmerdale (Ace) (sp.ACE) (set 7) + + + sp_emmrdg + Emmerdale (Ace) (sp.ACE) (set 8) + + + sp_emmrdh + Emmerdale (Ace) (sp.ACE) (set 9) + + + sp_emmrdi + Emmerdale (Ace) (sp.ACE) (set 10) + + + sp_emmrdj + Emmerdale (Ace) (sp.ACE) (set 11) + + + sp_emmrdk + Emmerdale (Ace) (sp.ACE) (set 12) + + + sp_emmrdn + Emmerdale (Ace) (sp.ACE) (set 15) + + + sp_emmrdo + Emmerdale (Ace) (sp.ACE) (set 16) + + + sp_festi + Festival (Spanish) (Ace) (sp.ACE) + + + sp_five + Fiver Fever (Crystal) (sp.ACE?) (set 1) + + + sp_fivea + Fiver Fever (Crystal) (sp.ACE?) (set 2) + + + sp_front + Final Frontier (Bwb) (sp.ACE) + + + sp_ghost + Ghost Trapper (Ace) (sp.ACE) (set 1) + + + sp_ghosta + Ghost Trapper (Ace) (sp.ACE) (set 2) + + + sp_ghostb + Ghost Trapper (Ace) (sp.ACE) (set 3) + + + sp_ghostc + Ghost Trapper (Ace) (sp.ACE) (set 4) + + + sp_ghostd + Ghost Trapper (Ace) (sp.ACE) (set 5) + + + sp_ghoste + Ghost Trapper (Ace) (sp.ACE) (set 6) + + + sp_ghostf + Ghost Trapper (Ace) (sp.ACE) (set 7) + + + sp_ghostg + Ghost Trapper (Ace) (sp.ACE) (set 8) + + + sp_ghosth + Ghost Trapper (Ace) (sp.ACE) (set 9) + + + sp_ghosti + Ghost Trapper (Ace) (sp.ACE) (set 10) + + + sp_ghostj + Ghost Trapper (Ace) (sp.ACE) (set 11) + + + sp_ghostk + Ghost Trapper (Ace) (sp.ACE) (set 12) + + + sp_ghostl + Ghost Trapper (Ace) (sp.ACE) (set 13) + + + sp_ghostm + Ghost Trapper (Ace) (sp.ACE) (set 14) + + + sp_ghostn + Ghost Trapper (Ace) (sp.ACE) (set 15) + + + sp_ghosto + Ghost Trapper (Ace) (sp.ACE) (set 16) + + + sp_ghostp + Ghost Trapper (Ace) (sp.ACE) (set 17) + + + sp_ghostq + Ghost Trapper (Ace) (sp.ACE) (set 18) + + + sp_ghostr + Ghost Trapper (Ace) (sp.ACE) (set 19) + + + sp_ghosts + Ghost Trapper (Ace) (sp.ACE) (set 20) + + + sp_globe + Globe Trotter (Ace) (sp.ACE) (set 1) + + + sp_globea + Globe Trotter (Ace) (sp.ACE) (set 2) + + + sp_globeb + Globe Trotter (Ace) (sp.ACE) (set 3) + + + sp_globec + Globe Trotter (Ace) (sp.ACE) (set 4) + + + sp_globed + Globe Trotter (Ace) (sp.ACE) (set 5) + + + sp_globee + Globe Trotter (Ace) (sp.ACE) (set 6) + + + sp_globef + Globe Trotter (Ace) (sp.ACE) (set 7) + + + sp_globeg + Globe Trotter (Ace) (sp.ACE) (set 8) + + + sp_gnat + Grand National (Ace) (sp.ACE) (set 1) + + + sp_gnata + Grand National (Ace) (sp.ACE) (set 2) + + + sp_gnatb + Grand National (Ace) (sp.ACE) (set 3) + + + sp_gnatc + Grand National (Ace) (sp.ACE) (set 4) + + + sp_gnatd + Grand National (Ace) (sp.ACE) (set 5) + + + sp_gnate + Grand National (Ace) (sp.ACE) (set 6) + + + sp_gnatf + Grand National (Ace) (sp.ACE) (set 7) + + + sp_gnatg + Grand National (Ace) (sp.ACE) (set 8) + + + sp_gnath + Grand National (Ace) (sp.ACE) (set 9) + + + sp_gnati + Grand National (Ace) (sp.ACE) (set 10) + + + sp_gnatj + Grand National (Ace) (sp.ACE) (set 11) + + + sp_gnatk + Grand National (Ace) (sp.ACE) (set 12) + + + sp_gnatl + Grand National (Ace) (sp.ACE) (set 13) + + + sp_gnatm + Grand National (Ace) (sp.ACE) (set 14) + + + sp_gnatn + Grand National (Ace) (sp.ACE) (set 15) + + + sp_gnato + Grand National (Ace) (sp.ACE) (set 16) + + + sp_gol + Gol (Spanish) (Ace) (sp.ACE) + + + sp_golda + Golden Arrow Club (Ace) (sp.ACE) (set 1) + + + sp_goldaa + Golden Arrow Club (Ace) (sp.ACE) (set 2) + + + sp_goldm + Golden Mile (Ace) (sp.ACE) (set 1) + + + sp_goldm0 + Golden Mile (Ace) (sp.ACE) (set 28) + + + sp_goldm1 + Golden Mile (Ace) (sp.ACE) (set 29) + + + sp_goldm2 + Golden Mile (Ace) (sp.ACE) (set 30) + + + sp_goldm3 + Golden Mile (Ace) (sp.ACE) (set 31) + + + sp_goldma + Golden Mile (Ace) (sp.ACE) (set 2) + + + sp_goldmb + Golden Mile (Ace) (sp.ACE) (set 3) + + + sp_goldmc + Golden Mile (Ace) (sp.ACE) (set 4) + + + sp_goldmd + Golden Mile (Ace) (sp.ACE) (set 5) + + + sp_goldme + Golden Mile (Ace) (sp.ACE) (set 6) + + + sp_goldmf + Golden Mile (Ace) (sp.ACE) (set 7) + + + sp_goldmg + Golden Mile (Ace) (sp.ACE) (set 8) + + + sp_goldmh + Golden Mile (Ace) (sp.ACE) (set 9) + + + sp_goldmi + Golden Mile (Ace) (sp.ACE) (set 10) + + + sp_goldmj + Golden Mile (Ace) (sp.ACE) (set 11) + + + sp_goldmk + Golden Mile (Ace) (sp.ACE) (set 12) + + + sp_goldml + Golden Mile (Ace) (sp.ACE) (set 13) + + + sp_goldmm + Golden Mile (Ace) (sp.ACE) (set 14) + + + sp_goldmn + Golden Mile (Ace) (sp.ACE) (set 15) + + + sp_goldmo + Golden Mile (Ace) (sp.ACE) (set 16) + + + sp_goldmp + Golden Mile (Ace) (sp.ACE) (set 17) + + + sp_goldmq + Golden Mile (Ace) (sp.ACE) (set 18) + + + sp_goldmr + Golden Mile (Ace) (sp.ACE) (set 19) + + + sp_goldms + Golden Mile (Ace) (sp.ACE) (set 20) + + + sp_goldmt + Golden Mile (Ace) (sp.ACE) (set 21) + + + sp_goldmu + Golden Mile (Ace) (sp.ACE) (set 22) + + + sp_goldmv + Golden Mile (Ace) (sp.ACE) (set 23) + + + sp_goldmw + Golden Mile (Ace) (sp.ACE) (set 24) + + + sp_goldmx + Golden Mile (Ace) (sp.ACE) (set 25) + + + sp_goldmy + Golden Mile (Ace) (sp.ACE) (set 26) + + + sp_goldmz + Golden Mile (Ace) (sp.ACE) (set 27) + + + sp_golds + Golden Streak (Ace) (sp.ACE) (set 1) + + + sp_goldsa + Golden Streak (Ace) (sp.ACE) (set 2) + + + sp_goldsb + Golden Streak (Ace) (sp.ACE) (set 3) + + + sp_goldsc + Golden Streak (Ace) (sp.ACE) (set 4) + + + sp_goldsd + Golden Streak (Ace) (sp.ACE) (set 5) + + + sp_goldse + Golden Streak (Ace) (sp.ACE) (set 6) + + + sp_goldsf + Golden Streak (Ace) (sp.ACE) (set 7) + + + sp_goldsg + Golden Streak (Ace) (sp.ACE) (set 8) + + + sp_goldsh + Golden Streak (Ace) (sp.ACE) (set 9) + + + sp_goldt + Golden Streak (Golden Touch) (Ace) (sp.ACE) + + + sp_gprix + Grand Prix (Ace) (sp.ACE) (set 1) + + + sp_gprixa + Grand Prix (Ace) (sp.ACE) (set 2) + + + sp_gprixb + Grand Prix (Ace) (sp.ACE) (set 3) + + + sp_gprixc + Grand Prix (Ace) (sp.ACE) (set 4) + + + sp_gprixd + Grand Prix (Ace) (sp.ACE) (set 5) + + + sp_gprixe + Grand Prix (Ace) (sp.ACE) (set 6) + + + sp_gprixf + Grand Prix (Ace) (sp.ACE) (set 7) + + + sp_gprixg + Grand Prix (Ace) (sp.ACE) (set 8) + + + sp_gprixh + Grand Prix (Ace) (sp.ACE) (set 9) + + + sp_here + Here We Go (Ace) (sp.ACE) (set 1) + + + sp_herea + Here We Go (Ace) (sp.ACE) (set 2) + + + sp_hereb + Here We Go (Ace) (sp.ACE) (set 3) + + + sp_herec + Here We Go (Ace) (sp.ACE) (set 4) + + + sp_hered + Here We Go (Ace) (sp.ACE) (set 5) + + + sp_heree + Here We Go (Ace) (sp.ACE) (set 6) + + + sp_heref + Here We Go (Ace) (sp.ACE) (set 7) + + + sp_hereg + Here We Go (Ace) (sp.ACE) (set 8) + + + sp_hideh + Hi De Hi (Ace) (sp.ACE) (set 1) + + + sp_hideha + Hi De Hi (Ace) (sp.ACE) (set 2) + + + sp_hidehb + Hi De Hi (Ace) (sp.ACE) (set 3) + + + sp_hidehc + Hi De Hi (Ace) (sp.ACE) (set 4) + + + sp_hidehd + Hi De Hi (Ace) (sp.ACE) (set 5) + + + sp_hidehe + Hi De Hi (Ace) (sp.ACE) (set 6) + + + sp_hidehf + Hi De Hi (Ace) (sp.ACE) (set 7) + + + sp_hidehg + Hi De Hi (Ace) (sp.ACE) (set 8) + + + sp_hidehh + Hi De Hi (Ace) (sp.ACE) (set 9) + + + sp_hidehi + Hi De Hi (Ace) (sp.ACE) (set 10) + + + sp_hidehj + Hi De Hi (Ace) (sp.ACE) (set 11) + + + sp_hidehk + Hi De Hi (Ace) (sp.ACE) (set 12) + + + sp_hidehl + Hi De Hi (Ace) (sp.ACE) (set 13) + + + sp_hidehm + Hi De Hi (Ace) (sp.ACE) (set 14) + + + sp_hidehn + Hi De Hi (Ace) (sp.ACE) (set 15) + + + sp_hideho + Hi De Hi (Ace) (sp.ACE) (set 16) + + + sp_hidehp + Hi De Hi (Ace) (sp.ACE) (set 17) + + + sp_hifly + Hi Flyer (Ace) (sp.ACE) (set 1) + + + sp_hiflya + Hi Flyer (Ace) (sp.ACE) (set 2) + + + sp_hiflyb + Hi Flyer (Ace) (sp.ACE) (set 3) + + + sp_hiflyc + Hi Flyer (Ace) (sp.ACE) (set 4) + + + sp_hiflyd + Hi Flyer (Ace) (sp.ACE) (set 5) + + + sp_hiflye + Hi Flyer (Ace) (sp.ACE) (set 6) + + + sp_hiflyf + Hi Flyer (Ace) (sp.ACE) (set 7) + + + sp_hiflyg + Hi Flyer (Ace) (sp.ACE) (set 8) + + + sp_hiflyh + Hi Flyer (Ace) (sp.ACE) (set 9) + + + sp_hiflyi + Hi Flyer (Ace) (sp.ACE) (set 10) + + + sp_hiflyj + Hi Flyer (Ace) (sp.ACE) (set 11) + + + sp_hiflyk + Hi Flyer (Ace) (sp.ACE) (set 12) + + + sp_hiflyl + Hi Flyer (Ace) (sp.ACE) (set 13) + + + sp_hiflym + Hi Flyer (Ace) (sp.ACE) (set 14) + + + sp_hiflyn + Hi Flyer (Ace) (sp.ACE) (set 15) + + + sp_hiflyo + Hi Flyer (Ace) (sp.ACE) (set 16) + + + sp_hiflyp + Hi Flyer (Ace) (sp.ACE) (set 17) + + + sp_holid + Holiday Club (Ace) (sp.ACE) (set 1) + + + sp_holida + Holiday Club (Ace) (sp.ACE) (set 2) + + + sp_juras + Jurassic Trail (Ace) (sp.ACE) + + + sp_lotto + Lotto (Spanish) (Ace) (sp.ACE) + + + sp_magmo + Magic Money (Ace) (sp.ACE) (set 1) + + + sp_magmoa + Magic Money (Ace) (sp.ACE) (set 2) + + + sp_magmob + Magic Money (Ace) (sp.ACE) (set 3) + + + sp_magmoc + Magic Money (Ace) (sp.ACE) (set 4) + + + sp_magmod + Magic Money (Ace) (sp.ACE) (set 5) + + + sp_megmo + Mega Money (Ace) (sp.ACE) (set 1) + + + sp_megmoa + Mega Money (Ace) (sp.ACE) (set 2) + + + sp_megmob + Mega Money (Ace) (sp.ACE) (set 3) + + + sp_megmoc + Mega Money (Ace) (sp.ACE) (set 4) + + + sp_megmod + Mega Money (Ace) (sp.ACE) (set 5) + + + sp_megmoe + Mega Money (Ace) (sp.ACE) (set 6) + + + sp_megmof + Mega Money (Ace) (sp.ACE) (set 7) + + + sp_megmog + Mega Money (Ace) (sp.ACE) (set 8) + + + sp_monma + Money Magic (Ace) (sp.ACE) (set 1) + + + sp_monmaa + Money Magic (Ace) (sp.ACE) (set 2) + + + sp_monmab + Money Magic (Ace) (sp.ACE) (set 3) + + + sp_monmac + Money Magic (Ace) (sp.ACE) (set 4) + + + sp_monmad + Money Magic (Ace) (sp.ACE) (set 5) + + + sp_monmo + Money Mountain (Ace) (sp.ACE) (set 1) + + + sp_monmoa + Money Mountain (Ace) (sp.ACE) (set 2) + + + sp_monmob + Money Mountain (Ace) (sp.ACE) (set 3) + + + sp_monmoc + Money Mountain (Ace) (sp.ACE) (set 4) + + + sp_monmod + Money Mountain (Ace) (sp.ACE) (set 5) + + + sp_monmoe + Money Mountain (Ace) (sp.ACE) (set 6) + + + sp_monmof + Money Mountain (Ace) (sp.ACE) (set 7) + + + sp_monmog + Money Mountain (Ace) (sp.ACE) (set 8) + + + sp_nudex + Nudge Explosion (Ace) (sp.ACE) (set 1) + + + sp_nudexa + Nudge Explosion (Ace) (sp.ACE) (set 2) + + + sp_onbox + On The Box (Ace) (sp.ACE) (set 1) + + + sp_onboxa + On The Box (Ace) (sp.ACE) (set 2) + + + sp_onboxb + On The Box (Ace) (sp.ACE) (set 3) + + + sp_onboxc + On The Box (Ace) (sp.ACE) (set 4) + + + sp_onboxd + On The Box (Ace) (sp.ACE) (set 5) + + + sp_onboxe + On The Box (Ace) (sp.ACE) (set 6) + + + sp_onboxf + On The Box (Ace) (sp.ACE) (set 7) + + + sp_onboxg + On The Box (Ace) (sp.ACE) (set 8) + + + sp_onboxh + On The Box (Ace) (sp.ACE) (set 9) + + + sp_onboxi + On The Box (Ace) (sp.ACE) (set 10) + + + sp_onboxj + On The Box (Ace) (sp.ACE) (set 11) + + + sp_onboxk + On The Box (Ace) (sp.ACE) (set 12) + + + sp_onboxl + On The Box (Ace) (sp.ACE) (set 13) + + + sp_onboxm + On The Box (Ace) (sp.ACE) (set 14) + + + sp_onboxn + On The Box (Ace) (sp.ACE) (set 15) + + + sp_openb + Open The Box (Ace) (sp.ACE) (set 1) + + + sp_openba + Open The Box (Ace) (sp.ACE) (set 2) + + + sp_openbb + Open The Box (Ace) (sp.ACE) (set 3) + + + sp_openbc + Open The Box (Ace) (sp.ACE) (set 4) + + + sp_openbd + Open The Box (Ace) (sp.ACE) (set 5) + + + sp_openbe + Open The Box (Ace) (sp.ACE) (set 6) + + + sp_openbf + Open The Box (Ace) (sp.ACE) (set 7) + + + sp_openbg + Open The Box (Ace) (sp.ACE) (set 8) + + + sp_openbh + Open The Box (Ace) (sp.ACE) (set 9) + + + sp_openbi + Open The Box (Ace) (sp.ACE) (set 10) + + + sp_payrs + Payrise (Ace) (sp.ACE) (set 1) + + + sp_payrsa + Payrise (Ace) (sp.ACE) (set 2) + + + sp_payrsb + Payrise (Ace) (sp.ACE) (set 3) + + + sp_payrsc + Payrise (Ace) (sp.ACE) (set 4) + + + sp_payrsd + Payrise (Ace) (sp.ACE) (set 5) + + + sp_payrse + Payrise (Ace) (sp.ACE) (set 6) + + + sp_payrsf + Payrise (Ace) (sp.ACE) (set 7) + + + sp_payrsg + Payrise (Ace) (sp.ACE) (set 8) + + + sp_payrsh + Payrise (Ace) (sp.ACE) (set 9) + + + sp_piste + On The Piste (Ace) (sp.ACE) (set 1) + + + sp_pistea + On The Piste (Ace) (sp.ACE) (set 2) + + + sp_pisteb + On The Piste (Ace) (sp.ACE) (set 3) + + + sp_pistec + On The Piste (Ace) (sp.ACE) (set 4) + + + sp_pisted + On The Piste (Ace) (sp.ACE) (set 5) + + + sp_pistee + On The Piste (Ace) (sp.ACE) (set 6) + + + sp_pistef + On The Piste (Ace) (sp.ACE) (set 7) + + + sp_pisteg + On The Piste (Ace) (sp.ACE) (set 8) + + + sp_pisteh + On The Piste (Ace) (sp.ACE) (set 9) + + + sp_pistei + On The Piste (Ace) (sp.ACE) (set 10) + + + sp_pistej + On The Piste (Ace) (sp.ACE) (set 11) + + + sp_pistek + On The Piste (Ace) (sp.ACE) (set 12) + + + sp_pistel + On The Piste (Ace) (sp.ACE) (set 13) + + + sp_pistem + On The Piste (Ace) (sp.ACE) (set 14) + + + sp_pisten + On The Piste (Ace) (sp.ACE) (set 15) + + + sp_pisteo + On The Piste (Ace) (sp.ACE) (set 16) + + + sp_pistep + On The Piste (Ace) (sp.ACE) (set 17) + + + sp_playa + Play It Again (Ace) (sp.ACE) (set 1) + + + sp_playaa + Play It Again (Ace) (sp.ACE) (set 2) + + + sp_playab + Play It Again (Ace) (sp.ACE) (set 3) + + + sp_playac + Play It Again (Ace) (sp.ACE) (set 4) + + + sp_playad + Play It Again (Ace) (sp.ACE) (set 5) + + + sp_playae + Play It Again (Ace) (sp.ACE) (set 6) + + + sp_playaf + Play It Again (Ace) (sp.ACE) (set 7) + + + sp_playag + Play It Again (Ace) (sp.ACE) (set 8) + + + sp_playah + Play It Again (Ace) (sp.ACE) (set 9) + + + sp_playai + Play It Again (Ace) (sp.ACE) (set 10) + + + sp_pound + Pound For Pound (Ace) (sp.ACE) (set 1) + + + sp_pounda + Pound For Pound (Ace) (sp.ACE) (set 2) + + + sp_poundb + Pound For Pound (Ace) (sp.ACE) (set 3) + + + sp_poundbwb + Pound For Pound (Ace/Bwb) (sp.ACE) (set 1) + + + sp_poundbwba + Pound For Pound (Ace/Bwb) (sp.ACE) (set 2) + + + sp_poundbwbb + Pound For Pound (Ace/Bwb) (sp.ACE) (set 3) + + + sp_poundbwbc + Pound For Pound (Ace/Bwb) (sp.ACE) (set 4) + + + sp_poundbwbd + Pound For Pound (Ace/Bwb) (sp.ACE) (set 5) + + + sp_poundbwbe + Pound For Pound (Ace/Bwb) (sp.ACE) (set 6) + + + sp_poundbwbf + Pound For Pound (Ace/Bwb) (sp.ACE) (set 7) + + + sp_poundbwbg + Pound For Pound (Ace/Bwb) (sp.ACE) (set 8) + + + sp_poundc + Pound For Pound (Ace) (sp.ACE) (set 4) + + + sp_poundd + Pound For Pound (Ace) (sp.ACE) (set 5) + + + sp_pounde + Pound For Pound (Ace) (sp.ACE) (set 6) + + + sp_poundf + Pound For Pound (Ace) (sp.ACE) (set 7) + + + sp_poundg + Pound For Pound (Ace) (sp.ACE) (set 8) + + + sp_poundh + Pound For Pound (Ace) (sp.ACE) (set 9) + + + sp_poundi + Pound For Pound (Ace) (sp.ACE) (set 10) + + + sp_poundj + Pound For Pound (Ace) (sp.ACE) (set 11) + + + sp_poundk + Pound For Pound (Ace) (sp.ACE) (set 12) + + + sp_poundl + Pound For Pound (Ace) (sp.ACE) (set 13) + + + sp_poundm + Pound For Pound (Ace) (sp.ACE) (set 14) + + + sp_poundn + Pound For Pound (Ace) (sp.ACE) (set 15) + + + sp_poundo + Pound For Pound (Ace) (sp.ACE) (set 16) + + + sp_poundp + Pound For Pound (Ace) (sp.ACE) (set 17) + + + sp_przna + Prize National (Ace) (sp.ACE) (set 1) + + + sp_prznaa + Prize National (Ace) (sp.ACE) (set 2) + + + sp_prznab + Prize National (Ace) (sp.ACE) (set 3) + + + sp_prznac + Prize National (Ace) (sp.ACE) (set 4) + + + sp_prznad + Prize National (Ace) (sp.ACE) (set 5) + + + sp_prznae + Prize National (Ace) (sp.ACE) (set 6) + + + sp_prznaf + Prize National (Ace) (sp.ACE) (set 7) + + + sp_prznag + Prize National (Ace) (sp.ACE) (set 8) + + + sp_road + Road To Hell (Ace) (sp.ACE) + + + sp_roof + Thru' The Roof (Ace) (sp.ACE) (set 1) + + + sp_roofa + Thru' The Roof (Ace) (sp.ACE) (set 2) + + + sp_skylm + The Sky's The Limit Club (Ace) (sp.ACE) (set 1) + + + sp_skylma + The Sky's The Limit Club (Ace) (sp.ACE) (set 2) + + + sp_spell + Spellbound (Ace) (sp.ACE) (set 1) + + + sp_spella + Spellbound (Ace) (sp.ACE) (set 2) + + + sp_spellb + Spellbound (Ace) (sp.ACE) (set 3) + + + sp_spellc + Spellbound (Ace) (sp.ACE) (set 4) + + + sp_spelld + Spellbound (Ace) (sp.ACE) (set 5) + + + sp_spelle + Spellbound (Ace) (sp.ACE) (set 6) + + + sp_spellf + Spellbound (Ace) (sp.ACE) (set 7) + + + sp_spellg + Spellbound (Ace) (sp.ACE) (set 8) + + + sp_spelli + Spellbound (Ace) (sp.ACE) (set 10) + + + sp_spellj + Spellbound (Ace) (sp.ACE) (set 11) + + + sp_swop + Swop Shop (Ace) (sp.ACE) (set 1) + + + sp_swopa + Swop Shop (Ace) (sp.ACE) (set 2) + + + sp_swopb + Swop Shop (Ace) (sp.ACE) (set 3) + + + sp_swopc + Swop Shop (Ace) (sp.ACE) (set 4) + + + sp_swopd + Swop Shop (Ace) (sp.ACE) (set 5) + + + sp_swope + Swop Shop (Ace) (sp.ACE) (set 6) + + + sp_swopf + Swop Shop (Ace) (sp.ACE) (set 7) + + + sp_swopg + Swop Shop (Ace) (sp.ACE) (set 8) + + + sp_timem + Time Machine (Ace) (sp.ACE) (set 1) + + + sp_timema + Time Machine (Ace) (sp.ACE) (set 2) + + + sp_timemb + Time Machine (Ace) (sp.ACE) (set 3) + + + sp_timemc + Time Machine (Ace) (sp.ACE) (set 4) + + + sp_timemd + Time Machine (Ace) (sp.ACE) (set 5) + + + sp_timeme + Time Machine (Ace) (sp.ACE) (set 6) + + + sp_timemf + Time Machine (Ace) (sp.ACE) (set 7) + + + sp_timemg + Time Machine (Ace) (sp.ACE) (set 8) + + + sp_timemh + Time Machine (Ace) (sp.ACE) (set 9) + + + sp_timemi + Time Machine (Ace) (sp.ACE) (set 10) + + + sp_timemj + Time Machine (Ace) (sp.ACE) (set 11) + + + sp_timemk + Time Machine (Ace) (sp.ACE) (set 12) + + + sp_tkpik + Take Your Pick (Ace) (sp.ACE) (set 1) + + + sp_tkpika + Take Your Pick (Ace) (sp.ACE) (set 2) + + + sp_tkpikb + Take Your Pick (Ace) (sp.ACE) (set 3) + + + sp_tkpikc + Take Your Pick (Ace) (sp.ACE) (set 4) + + + sp_tkpikd + Take Your Pick (Ace) (sp.ACE) (set 5) + + + sp_tkpike + Take Your Pick (Ace) (sp.ACE) (set 6) + + + sp_tkpikf + Take Your Pick (Ace) (sp.ACE) (set 7) + + + sp_tz + Twilight Zone (Ace) (sp.ACE) (set 1) + + + sp_tza + Twilight Zone (Ace) (sp.ACE) (set 2) + + + sp_tzb + Twilight Zone (Ace) (sp.ACE) (set 3) + + + sp_tzbwb + Twilight Zone (Ace/Bwb) (sp.ACE) + + + sp_tzc + Twilight Zone (Ace) (sp.ACE) (set 4) + + + sp_tzd + Twilight Zone (Ace) (sp.ACE) (set 5) + + + sp_tze + Twilight Zone (Ace) (sp.ACE) (set 6) + + + sp_tzf + Twilight Zone (Ace) (sp.ACE) (set 7) + + + sp_tzfe + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 1) + + + sp_tzfea + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 2) + + + sp_tzfeb + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 3) + + + sp_tzfec + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 4) + + + sp_tzfed + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 5) + + + sp_tzfee + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 6) + + + sp_tzfef + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 7) + + + sp_tzfeg + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 8) + + + sp_tzfeh + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 9) + + + sp_tzfei + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 10) + + + sp_tzfej + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 11) + + + sp_tzfek + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 12) + + + sp_tzfel + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 13) + + + sp_tzfem + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 14) + + + sp_tzfen + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 15) + + + sp_tzfeo + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 16) + + + sp_tzfep + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 17) + + + sp_tzfeq + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 18) + + + sp_tzfer + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 19) + + + sp_tzfes + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 20) + + + sp_tzfet + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 21) + + + sp_tzfeu + Twilight Zone - Further Encounters (Ace) (sp.ACE) (set 22) + + + sp_tzg + Twilight Zone (Ace) (sp.ACE) (set 8) + + + sp_tzh + Twilight Zone (Ace) (sp.ACE) (set 9) + + + sp_woolp + Woolpack (Ace) (sp.ACE) (set 1) + + + sp_woolpa + Woolpack (Ace) (sp.ACE) (set 2) + + + sp_woolpb + Woolpack (Ace) (sp.ACE) (set 3) + + + sp_woolpc + Woolpack (Ace) (sp.ACE) (set 4) + + + sp_woolpd + Woolpack (Ace) (sp.ACE) (set 5) + + + sp_woolpe + Woolpack (Ace) (sp.ACE) (set 6) + + + sp_woolpf + Woolpack (Ace) (sp.ACE) (set 7) + + + sp_woolpg + Woolpack (Ace) (sp.ACE) (set 8) + + + sp_woolph + Woolpack (Ace) (sp.ACE) (set 9) + + + sp_woolpi + Woolpack (Ace) (sp.ACE) (set 10) + + + sp_woolpj + Woolpack (Ace) (sp.ACE) (set 11) + + + sp_woolpk + Woolpack (Ace) (sp.ACE) (set 12) + + + sp_woolpl + Woolpack (Ace) (sp.ACE) (set 13) + + + sp_woolpm + Woolpack (Ace) (sp.ACE) (set 14) + + + sp_woolpn + Woolpack (Ace) (sp.ACE) (set 15) + + + sp_woolpo + Woolpack (Ace) (sp.ACE) (set 16) + + + sp_zigzg + Zig Zag (Ace) (sp.ACE) (set 1) + + + sp_zigzga + Zig Zag (Ace) (sp.ACE) (set 2) + + + sp_zigzgb + Zig Zag (Ace) (sp.ACE) (set 3) + + + sp_zigzgc + Zig Zag (Ace) (sp.ACE) (set 4) + + + sp_zigzgd + Zig Zag (Ace) (sp.ACE) (set 5) + + + sp_zigzge + Zig Zag (Ace) (sp.ACE) (set 6) + + + sp_zigzgf + Zig Zag (Ace) (sp.ACE) (set 7) + + + sp_zigzgg + Zig Zag (Ace) (sp.ACE) (set 8) + + + sp_zigzgh + Zig Zag (Ace) (sp.ACE) (set 9) + + + sp_zigzgi + Zig Zag (Ace) (sp.ACE) (set 10) + + + sp_zigzgj + Zig Zag (Ace) (sp.ACE) (set 11) + + + sp_zigzgk + Zig Zag (Ace) (sp.ACE) (set 12) + + + sp_zigzgl + Zig Zag (Ace) (sp.ACE) (set 13) + + + sp_zigzgm + Zig Zag (Ace) (sp.ACE) (set 14) + + + spacbat2 + Space Battle (bootleg set 2) + + + spacbatt + Space Battle (bootleg set 1) + + + spacbeam + Space Beam + + + spacduel + Space Duel (version 2) + + + spacduel0 + Space Duel (prototype) + + + spacduel1 + Space Duel (version 1) + + + spacea91 + Space Ace (DL2 Conversion) (US v1.3) + + + spacea91_13e + Space Ace (DL2 Conversion) (Europe v1.3) + + + spaceace + Space Ace (US Rev. A3) + + + spaceacea + Space Ace (US Rev. A) + + + spaceacea2 + Space Ace (US Rev. A2) + + + spaceaceeuro + Space Ace (European) + + + spaceat2 + Space Attack II (bootleg of Super Invaders) + + + spaceatt + Space Attack (bootleg of Space Invaders) + + + spaceatt2k + Space Attack (bootleg of Space Invaders, 2k roms) + + + spaceattbp + Space Attack (bootleg of Space Invaders, bproms) + + + spacebrd + Space Bird (bootleg) + + + spacecho + Space Echo (set 1) + + + spacecho2 + Space Echo (set 2) + + + spacecom + Space Combat (bootleg of Space Invaders) + + + spacecr + Space Cruiser + + + spacecty + Space City + + + spacedem + Space Demon + + + spacedx + Space Invaders DX (US, v2.1) + + + spacedxj + Space Invaders DX (Japan, v2.1) + + + spacedxo + Space Invaders DX (Japan, v2.0) + + + spacefb + Space Firebird (rev. 04-u) + + + spacefba + Space Firebird (rev. 02-a) + + + spacefbb + Space Firebird (bootleg) + + + spacefbe + Space Firebird (rev. 03-e set 1) + + + spacefbe2 + Space Firebird (rev. 03-e set 2) + + + spacefbg + Space Firebird (Gremlin) + + + spacefev + Space Fever (new version) + + + spacefevo + Space Fever (old version) + + + spacefevo2 + Space Fever (older version) + + + spacefrt + Space Fortress (CVS) + + + spaceftr + Space Fortress (Zaccaria) + + + spaceg + Space Guerrilla + + + spacegun + Space Gun (World) + + + spacegunj + Space Gun (Japan) + + + spacegunu + Space Gun (US) + + + spacehaw + Space Hawks + + + spaceint + Space Intruder + + + spaceintj + Space Intruder (Japan) + + + spaceinv + Space Invaders + + + spacejam + Space Jam (CPU 3.00, display A3.00) + + + spacejam_200 + Space Jam (CPU 2.00, display A2.00) + + + spacejmf + Space Jam (CPU 3.00, display F3.00, France) + + + spacejmg + Space Jam (CPU 3.00, display G3.00, Germany) + + + spacejmi + Space Jam (CPU 3.00, display I3.00, Italy) + + + spacelnc + Space Launcher + + + spacempr + Space Empire (bootleg) + + + spaceod + Space Odyssey (version 2) + + + spaceod2 + Space Odyssey (version 1) + + + spaceph + Space Phantoms (bootleg of Ozma Wars) + + + spacepir + Space Pirates (v2.2) + + + spacepir_14 + Space Pirates (v1.4) + + + spaceplt + Space Pilot (set 1) + + + spaceplta + Space Pilot (set 2) + + + spacerng + Space Ranger + + + spaceshp + Space Ship + + + spaceskr + Space Seeker + + + spacetrk + Space Trek (upright) + + + spacetrkc + Space Trek (cocktail) + + + spacewar + Space Wars + + + spacewin + Scacco Matto / Space Win + + + spacewr3 + Space War Part 3 + + + spacezap + Space Zap (Midway) + + + spacfura + Space Fury (revision A) + + + spacfury + Space Fury (revision C) + + + spacfurya + Space Fury (revision A) + + + spacfuryb + Space Fury (revision B) + + + spacfurybl + Advisor (Italian bootleg of Space Fury) + + + spacian2 + T.T Spacian Part-2 + + + spacmiss + Space Missile - Space Fighting Game + + + spactrai + Space Train + + + spacwalk + Space Walk + + + spain82 + Spain '82 + + + spang + Super Pang (World 900914) + + + spangbl + Super Pang (World 900914, bootleg, set 1) + + + spangbl2 + Super Pang (World 900914, bootleg, set 2) + + + spangj + Super Pang (Japan 901023) + + + sparkman + Spark Man (v2.0, set 1) + + + sparkmana + Spark Man (v2.0, set 2) + + + sparkz + Sparkz (prototype) + + + spartanx + Spartan X (Japan) + + + spartanxtec + Spartan X (Tecfri hardware bootleg) + + + spatter + Spatter (315-5096) + + + spattera + Spatter (315-5099) + + + spawn + Spawn: In the Demon's Hand (Rev B) + + + spbactn + Super Pinball Action (US) + + + spbactnj + Super Pinball Action (Japan) + + + spbactnp + Super Pinball Action (US, prototype, dual screen) + + + spcdrag + Space Dragon (bootleg of Moon Cresta) + + + spcebttl + Space Battle (Space Invaders bootleg) + + + spceking + Space King + + + spcenctr + Space Encounters + + + spcewarl + Space War (Leijac Corporation) + + + spcewarla + Space War (Leisure and Allied) + + + spcewars + Space War (Sanritsu) + + + spcforc2 + Space Force (set 2) + + + spcforce + Space Force (set 1) + + + spcfrcii + Special Forces II + + + spcgambl + Space Gambler + + + spcinv95 + Space Invaders '95: The Attack Of Lunar Loonies (Ver 2.5O 1995/06/14) + + + spcinv95u + Space Invaders '95: The Attack Of Lunar Loonies (Ver 2.5A 1995/06/14) + + + spcinvdj + Space Invaders DX (Ver 2.6J 1994/09/14) (F3 Version) + + + spcking2 + Space King 2 + + + spclaser + Space Laser + + + spclforc + Special Forces - Kung Fu Commando + + + spcliner + Space Liner + + + spclorda + Space Lords (alternate) + + + spclords + Space Lords (rev C) + + + spclordsa + Space Lords (rev A) + + + spclordsb + Space Lords (rev B) + + + spclordsg + Space Lords (rev A, German) + + + spcmission + Space Mission (SegaSA / Sonic, Spanish bootleg of Scramble) + + + spcnv95u + Space Invaders '95 - Attack Of The Lunar Loonies (US) + + + spcpnthr + Space Panther + + + spcpokan + Space Pokan + + + spcpoker + Space Poker + + + spcpostn + Space Position (Japan) + + + spcrider + Space Riders + + + spcrocks + Space Rocks (Spanish clone of Asteroids) + + + spcship + Space Ship (Pinball) + + + spctbird + Space Thunderbird + + + spcteam + Space Team + + + spctrain + Space Train (Pinball) + + + spctraino + Space Train (Pinball, old hardware) + + + spctrek + Space Trek (Video Game S.A., Spanish bootleg of Scramble) + + + spcwarp + Space Warp? (Cosmos conversion on Galaxian hardware) + + + spdamjes + Sport Damjes 1 + + + spdball + Speed Ball - Contest at Neonworld (prototype) + + + spdbuggy + Speed Buggy + + + spdcoin + Speed Coin (prototype) + + + spdheat + Super Dead Heat (World) + + + spdheatj + Super Dead Heat (Japan) + + + spdodgeb + Super Dodge Ball (US) + + + speakesy + Speakeasy + + + speakesy4p + Speakeasy 4 Player + + + speakhlp + Speak & Help + + + speakres + Speak & Rescue + + + speakresb + Speak & Rescue (bootleg) + + + spec2k + Spectrum 2000 (vertical, Korea) + + + spec2kh + Spectrum 2000 (horizontal, buggy) (Europe) + + + speccies + Speccies 2 + + + specd9 + Special Dream 9 (v1.0.5G) + + + specforc + Special Force + + + specfrce + Special Forces Elite Training (v01.02.00) + + + specfrceo + Special Forces Elite Training (v01.01.01) + + + spectar + Spectar (revision 3) + + + spectar1 + Spectar (revision 1?) + + + spectarrf + Spectar (revision 2, bootleg) + + + spectra + Spectra IV + + + spectrm + Spectrum + + + spectrm4 + Spectrum (ver 4) + + + speedatk + Speed Attack! (Japan) + + + speedbal + Speed Ball (set 1) + + + speedbala + Speed Ball (set 2) + + + speedbsk + Speed Basketball + + + speeddrp + Speed Drop (Ver. 1.06, Sep 3 2003) + + + speeddrv + Speed Driver + + + speedfrk + Speed Freak + + + speedmst + Speed Master (Ver. V1.0, Apr 29 2004) + + + speedmsta + Speed Master (Ver. V1.0, May 23 2003) + + + speedmstb + Speed Master (Ver. V1.0, Apr 28 2004) + + + speedrcr + Speed Racer + + + speedrs + Speed Race (Seletron / Olympia) + + + speedspn + Speed Spin + + + speedup + Speed Up (version 2.20) + + + speedup10 + Speed Up (version 1.00) + + + speedup12 + Speed Up (version 1.20) + + + speedway + Speedway (set 1) + + + speedwaya + Speedway (set 2) + + + speglsht + Super Eagle Shot + + + spellbnd + Spellbound + + + spelnkrj + Spelunker (Japan) + + + spelunk2 + Spelunker II - 23 no Kagi (Japan) + + + spelunkr + Spelunker + + + spelunkrj + Spelunker (Japan) + + + spetrix + Super Petrix (ver. 1P) + + + spf2t + Super Puzzle Fighter II Turbo (Europe 960529) + + + spf2ta + Super Puzzle Fighter II Turbo (Asia 960529) + + + spf2tb + Super Puzzle Fighter II Turbo (Boss Hack)(USA 960620) + + + spf2tcb + Super Puzzle Fighter II Turbo (Color Blind Hack, v1.1) + + + spf2td + Super Puzzle Fighter II Turbo (USA 960620 Phoenix Edition) (bootleg) + + + spf2th + Super Puzzle Fighter II Turbo (Hispanic 960531) + + + spf2tu + Super Puzzle Fighter II Turbo (USA 960620) + + + spf2xj + Super Puzzle Fighter II X (Japan 960531) + + + spf2xjd + Super Puzzle Fighter II X (Japan 960531 Phoenix Edition) (bootleg) + + + spf2xpri + Super Puzzle Fighter 2 X': Balance Patch (Hack) + + + spfghmk2 + Space Fighter Mark II (set 1) + + + spfghmk22 + Space Fighter Mark II (set 2) + + + spgcarn + Spring Carnival (10000311, NSW/ACT) + + + spgcarnjc + Spring Carnival - Jackpot Carnival (10032721, Queensland) + + + spgcarnq + Spring Carnival (10008011, Queensland) + + + spgfest + Spring Festival (20262311, Queensland) + + + spgfestnz + Spring Festival (20267211, New Zealand) + + + sphinxii + Sphinx II (Atronic) + + + sphinxiir + Sphinx II (Russia) (Atronic) + + + spicaadv + Spica Adventure (v2.03J) + + + spiceup + Spice It Up (Konami Endeavour, Russia) + + + spider + Spider (Buena Vision, without nudity) + + + spidermi + Spiderman (FMV Demo) + + + spidermn + The Amazing Spider-Man + + + spidern + Spider (Buena Vision, with nudity) + + + spiders + Spiders (set 1) + + + spiders2 + Spiders (set 2) + + + spiders3 + Spiders (set 3) + + + spidey + Spider-Man: The Videogame (US) + + + spideyj + Spider-Man: The Videogame (World) + + + spidman + Spider-Man: The Videogame (World) + + + spidmanj + Spider-Man: The Videogame (Japan) + + + spidmanu + Spider-Man: The Videogame (US, Rev A) + + + spielbud + Spiel Bude (German) + + + spiero + Super Pierrot (Japan) + + + spikeofe + Spikeout Final Edition (Export) + + + spikeout + Spikeout (Export, Revision C) + + + spiker + Spiker (6/9/86) + + + spikera + Spiker (5/5/86) + + + spikerb + Spiker (earliest?) + + + spikes91 + 1991 Spikes (Italian bootleg, set 1) + + + spikes91b + 1991 Spikes (Italian bootleg, set 2) + + + spinfev + Spin Fever + + + spinkick + Hec's Spinkick + + + spinlbrj + Spinal Breakers (Japan) + + + spinlbrk + Spinal Breakers (World) + + + spinlbrkj + Spinal Breakers (Japan) + + + spinlbrku + Spinal Breakers (US) + + + spinlbrkup + Spinal Breakers (US, prototype) + + + spinlbru + Spinal Breakers (US) + + + spinmast + Spin Master / Miracle Adventure + + + spinner + Spinner + + + spirit + Spirit + + + spirit76 + Spirit of 76 + + + spirulo + Super Pirulo + + + spitboss + Super Pit Boss (9221-02A) + + + spk100 + Super Poker (v100) + + + spk102u + Super Poker (v102U) + + + spk102ua + Super Poker (v102UA) + + + spk114it + Super Poker (v114IT) + + + spk115it + Super Poker (v115IT) + + + spk116it + Super Poker (v116IT) + + + spk116itmx + Super Poker (v116IT-MX) + + + spk120in + Super Poker (v120IN) + + + spk130 + Super Poker (v130) + + + spk200 + Super Poker (v200) + + + spk200ua + Super Poker (v200UA) + + + spk201ua + Super Poker (v201UA) + + + spk203us + Super Poker (v203US) + + + spk205us + Super Poker (v205US) + + + spk306us + Super Poker (v306US) + + + spkrbtl + Spikers Battle (GDS-0005) + + + spkrform + Super Poker (V100xD03) / Formosa + + + splash + Splash! (Ver. 1.2 World) + + + splash10 + Splash! (Ver. 1.0 World) + + + splashms + Splash (Modular System) + + + splat + Splat! + + + splatter + Splatter House (World, new version (SH3)) + + + splatter2 + Splatter House (World, old version (SH2)) + + + splatterj + Splatter House (Japan, SH1) + + + splmastr + Spell Master (Russia) (Atronic) + + + splndrbt + Splendor Blast (set 1) + + + splndrbt2 + Splendor Blast II + + + splndrbta + Splendor Blast (set 2) + + + splndrbtb + Splendor Blast (set 3) + + + spltsecp + Split Second (Pinball) + + + spnchotj + Super Punch-Out!! (Japan) + + + spnchout + Super Punch-Out!! (Rev B) + + + spnchouta + Super Punch-Out!! (Rev A) + + + spnchoutj + Super Punch-Out!! (Japan) + + + spongbob + SpongeBob SquarePants Ticket Boom + + + spooky + Spooky Night 2nd Edition (Version 2.0.4) + + + spookyi + Spooky (Italian speech) + + + spookyo + Spooky Night (Version 1.0.1) + + + spookyp + Spooky + + + spool3 + Super Pool III (English) + + + spool3i + Super Pool III (I-Vics) + + + spool99 + Super Pool 99 (Version 0.36) + + + spool99a + Super Pool 99 (Version 0.33) + + + spool99b + Super Pool 99 (Version 0.31) + + + spool99c + Super Pool 99 (Version 0.26) + + + sport2k + Sport 2000 + + + sportmem + Sport Memory + + + spotty + Spotty (Ver. 2.0.2) + + + sprbreak + Spring Break + + + sprbreaka + Spring Break (alternate set) + + + sprbreakf + Spring Break (French) + + + sprbreakg + Spring Break (German) + + + sprbreaks + Spring Break (single ball game) + + + sprcros2 + Super Cross II (Japan, set 1) + + + sprcros2a + Super Cross II (Japan, set 2) + + + sprglbpg + Super Glob (Pac-Man hardware, German bootleg) + + + sprglobp + Super Glob (Pac-Man hardware) + + + sprglobp2 + Super Glob (Pac-Man hardware, bootleg) + + + springbd + Springboard (bootleg of Circus) + + + springer + Springer + + + sprint1 + Sprint 1 + + + sprint2 + Sprint 2 (set 1) + + + sprint2a + Sprint 2 (set 2) + + + sprint2bl + Sprint 2 (bootleg) + + + sprint2h + Sprint 2 (color kit, Italy) + + + sprint4 + Sprint 4 (Rev 03) + + + sprint4a + Sprint 4 (Rev 02, set 1) + + + sprint4b + Sprint 4 (Rev 02, set 2) + + + sprint8 + Sprint 8 + + + sprint8a + Sprint 8 (play tag & chase) + + + sprk_090 + South Park (CPU 0.90, display A0.90) + + + sprk_096 + South Park (CPU 0.96, display A1.01) + + + sprk_103 + South Park (CPU 1.03, display A1.01) + + + sprpuzzle + Super Puzzle (Sang Ho Soft) + + + sprtauth + Sports Authority Challenge (Rev 3) + + + sprtauth1 + Sports Authority (Rev 1) + + + sprtdart + Sport Darts T.V. + + + sprtjam + Sports Jam (GDS-0003) + + + sprtmtch + Sports Match + + + sprtshot + Sports Shooting USA + + + spset005 + S-Plus SET005 Set chip + + + spset015 + S-Plus SET015 Set chip + + + spset026 + S-Plus SET026 Set chip + + + spss4240 + S-Plus (SS4240) Coral Reef + + + spstn_l5 + Space Station (L-5) + + + sptrekct + Space Trek (cocktail) + + + spuzbobl + Super Puzzle Bobble (V2.05O 1999/2/24 18:00) + + + spuzboblj + Super Puzzle Bobble (V2.04J 1999/2/17 02:10) + + + spy + S.P.Y. - Special Project Y (World ver. N) + + + spyhnt2a + Spy Hunter 2 (rev 1) + + + spyhunt + Spy Hunter + + + spyhunt2 + Spy Hunter II (rev 2) + + + spyhunt2a + Spy Hunter II (rev 1) + + + spyhuntp + Spy Hunter (Playtronic license) + + + spyhuntpr + Spy Hunter (Spain, Recreativos Franco S.A., Tecfri PCB) + + + spyhuntr + Spy Hunter (Pinball) + + + spyhuntsp + Spy Hunter (Spain, Recreativos Franco S.A., Bally Midway license) + + + spyu + S.P.Y. - Special Project Y (US ver. M) + + + sqbert + Faster, Harder, More Challenging Q*bert (prototype) + + + sqij + SQIJ! + + + sqix + Super Qix (World/Japan, V1.2) + + + sqixb1 + Super Qix (bootleg of V1.0, 8031 MCU) + + + sqixb2 + Super Qix (bootleg, No MCU) + + + sqixbl + Super Qix (bootleg) + + + sqixr0 + Super Qix (World/Japan, V1.0) + + + sqixr1 + Super Qix (World/Japan, V1.1) + + + sqixu + Super Qix (US) + + + squaitsa + Squash (Itisa) + + + squash + Squash (ver. 1.0, checksum 015aef61) + + + squeenb + Super Queen Bee (Ver. 101) + + + squizchs + Seishun-Quiz Colorful High School (CHS1 Ver.A) + + + sraider + Space Raider + + + srally2 + Sega Rally 2 (Export) + + + srally2dx + Sega Rally 2 Deluxe (Export) + + + srally2p + Sega Rally 2 (prototype, 29 Dec 1997) + + + srally2pa + Sega Rally 2 (prototype, 8 Dec 1997) + + + srallyc + Sega Rally Championship - Twin/DX (Revision C) + + + srallycb + Sega Rally Championship - Twin/DX (Revision B) + + + srallycc + Sega Rally Championship - Twin/DX (Revision A) + + + srallycdx + Sega Rally Championship - DX (Revision A) + + + srallycdxa + Sega Rally Championship - DX + + + sranger + Super Ranger (v2.0) + + + srangerb + Super Ranger (older, bootleg) + + + srangern + Super Ranger (older, NOVA license) + + + srangero + Super Ranger (older) + + + srangerw + Super Ranger (older, WDK license) + + + srdarwin + SRD: Super Real Darwin (World) + + + srdarwinb + SRD: Super Real Darwin (Japan, bootleg) + + + srdarwinj + SRD: Super Real Darwin (Japan) + + + srdarwnj + Super Real Darwin (Japan) + + + srdchamp + Super Road Champions + + + srdmissn + S.R.D. Mission + + + srmagic + Super Real Magic (V6.3) + + + srmdb + Sunset Riders (scrambled bootleg of Mega Drive version) + + + srmp1 + Super Real Mahjong Part 1 (Japan) + + + srmp2 + Super Real Mahjong Part 2 (Japan) + + + srmp3 + Super Real Mahjong Part 3 (Japan) + + + srmp4 + Super Real Mahjong PIV (Japan) + + + srmp4o + Super Real Mahjong PIV (Japan, older set) + + + srmp5 + Super Real Mahjong P5 + + + srmp6 + Super Real Mahjong P6 (Japan) + + + srmp7 + Super Real Mahjong P7 (Japan) + + + srmvs + Super Real Mahjong VS (Rev A) + + + srmvsa + Super Real Mahjong VS + + + srockbwl + Super Rock and Bowl (V1.1) + + + srollnd + Super Roller (v7.0) + + + srssf2mb + Sunset Riders / Super Street Fighter II - The New Challengers (scrambled bootleg of Mega Drive versions) + + + srumbler + The Speed Rumbler (set 1) + + + srumbler2 + The Speed Rumbler (set 2) + + + srumbler3 + The Speed Rumbler (set 3) + + + srumblr2 + The Speed Rumbler (set 2) + + + sryudens + Mahjong Seiryu Densetsu (Japan, NM502) + + + ss2001 + Super Shanghai 2001 + + + ss2005 + Super Shanghai 2005 (Japan, Rev A) (GDL-0031A) + + + ss2005o + Super Shanghai 2005 (Japan) (GDL-0031) + + + ss5spfd + Samurai Shodown V Special / Samurai Spirits Zero Special (Fully Decrypted) + + + ss_01 + Scared Stiff (D0.1R with sound rev.25) + + + ss_03 + Scared Stiff (0.3) + + + ss_11 + Scared Stiff (1.1) + + + ss_12 + Scared Stiff (1.2) + + + ss_14 + Scared Stiff (1.4) + + + ss_15 + Scared Stiff (1.5) + + + ssanchan + Sanrin San Chan (Japan, 315-5096) + + + ssanguoj + Shizhan Sanguo Ji Jiaqiang Ban (Version 8.9 980413) + + + sscandal + Seishun Scandal (315-5132, Japan) + + + sscope + Silent Scope (ver UAD, Ver 1.33) + + + sscope2 + Silent Scope 2 : Dark Silhouette (ver UAD, Ver 1.03) + + + sscope2a + Silent Scope 2 : Innocent Sweeper (ver AAD, Ver 1.03) + + + sscope2ab + Silent Scope 2 : Innocent Sweeper (ver AAB, Ver 1.01) + + + sscope2abvd1 + Silent Scope 2 : Innocent Sweeper (ver AAB, Ver 1.01, GN715 Voodoo 1 video board) + + + sscope2ac + Silent Scope 2 : Innocent Sweeper (ver AAC, Ver 1.02) + + + sscope2acvd1 + Silent Scope 2 : Innocent Sweeper (ver AAC, Ver 1.02, GN715 Voodoo 1 video board) + + + sscope2avd1 + Silent Scope 2 : Innocent Sweeper (ver AAD, Ver 1.03, GN715 Voodoo 1 video board) + + + sscope2e + Silent Scope 2 : Fatal Judgement (ver EAD, Ver 1.03) + + + sscope2eb + Silent Scope 2 : Fatal Judgement (ver EAB, Ver 1.01) + + + sscope2ebvd1 + Silent Scope 2 : Fatal Judgement (ver EAB, Ver 1.01, GN715 Voodoo 1 video board) + + + sscope2ec + Silent Scope 2 : Fatal Judgement (ver EAC, Ver 1.02) + + + sscope2ecvd1 + Silent Scope 2 : Fatal Judgement (ver EAC, Ver 1.02, GN715 Voodoo 1 video board) + + + sscope2evd1 + Silent Scope 2 : Fatal Judgement (ver EAD, Ver 1.03, GN715 Voodoo 1 video board) + + + sscope2j + Silent Scope 2 : Innocent Sweeper (ver JAD, Ver 1.03) + + + sscope2jb + Silent Scope 2 : Innocent Sweeper (ver JAB, Ver 1.01) + + + sscope2jbvd1 + Silent Scope 2 : Innocent Sweeper (ver JAB, Ver 1.01, GN715 Voodoo 1 video board) + + + sscope2jc + Silent Scope 2 : Innocent Sweeper (ver JAC, Ver 1.02) + + + sscope2jcvd1 + Silent Scope 2 : Innocent Sweeper (ver JAC, Ver 1.02, GN715 Voodoo 1 video board) + + + sscope2jvd1 + Silent Scope 2 : Innocent Sweeper (ver JAD, Ver 1.03, GN715 Voodoo 1 video board) + + + sscope2ub + Silent Scope 2 : Dark Silhouette (ver UAB, Ver 1.01) + + + sscope2ubvd1 + Silent Scope 2 : Dark Silhouette (ver UAB, Ver 1.01, GN715 Voodoo 1 video board) + + + sscope2uc + Silent Scope 2 : Dark Silhouette (ver UAC, Ver 1.02) + + + sscope2ucvd1 + Silent Scope 2 : Dark Silhouette (ver UAC, Ver 1.02, GN715 Voodoo 1 video board) + + + sscope2vd1 + Silent Scope 2 : Dark Silhouette (ver UAD, Ver 1.03, GN715 Voodoo 1 video board) + + + sscopea + Silent Scope (ver AAD, Ver 1.33) + + + sscopeaa + Silent Scope (ver AAA, Ver 1.00) + + + sscopeab + Silent Scope (ver AAB, Ver 1.20) + + + sscopeac + Silent Scope (ver AAC, Ver 1.30) + + + sscopeacvd2 + Silent Scope (ver AAC, Ver 1.30, GQ871 Voodoo 2 video board) + + + sscopeavd2 + Silent Scope (ver AAD, Ver 1.33, GQ871 Voodoo 2 video board) + + + sscopee + Silent Scope (ver EAD, Ver 1.33) + + + sscopeea + Silent Scope (ver EAA, Ver 1.00) + + + sscopeeb + Silent Scope (ver EAB, Ver 1.20) + + + sscopeec + Silent Scope (ver EAC, Ver 1.30) + + + sscopeecvd2 + Silent Scope (ver EAC, Ver 1.30, GQ871 Voodoo 2 video board) + + + sscopeevd2 + Silent Scope (ver EAD, Ver 1.33, GQ871 Voodoo 2 video board) + + + sscopefh + Silent Scope Fortune Hunter (ver EAA) + + + sscopeja + Silent Scope (ver JAA, Ver 1.00) + + + sscopejb + Silent Scope (ver JAB, Ver 1.20) + + + sscopeua + Silent Scope (ver UAA, Ver 1.00) + + + sscopeub + Silent Scope (ver UAB, Ver 1.20) + + + sscopeuc + Silent Scope (ver UAC, Ver 1.30) + + + sscopeucvd2 + Silent Scope (ver UAC, Ver 1.30, GQ871 Voodoo 2 video board) + + + sscopevd2 + Silent Scope (ver UAD, Ver 1.33, GQ871 Voodoo 2 video board) + + + sscopex + Silent Scope EX (ver UAA) + + + sscs + San Se Caishen (Version 0502) + + + ssf2 + Super Street Fighter II: The New Challengers (World 931005) + + + ssf2a + Super Street Fighter II: The New Challengers (Asia 931005) + + + ssf2ar1 + Super Street Fighter II: The New Challengers (Asia 930914) + + + ssf2d + Super Street Fighter II: The New Challengers (World 930911 Phoenix Edition) (bootleg) + + + ssf2h + Super Street Fighter II: The New Challengers (Hispanic 930911) + + + ssf2j + Super Street Fighter II: The New Challengers (Japan 931005) + + + ssf2jr1 + Super Street Fighter II: The New Challengers (Japan 930911) + + + ssf2jr2 + Super Street Fighter II: The New Challengers (Japan 930910) + + + ssf2mdb + Super Street Fighter II - The New Challengers (scrambled bootleg of Mega Drive version) + + + ssf2r1 + Super Street Fighter II: The New Challengers (World 930911) + + + ssf2t + Super Street Fighter II Turbo (World 940223) + + + ssf2ta + Super Street Fighter II Turbo (Asia 940223) + + + ssf2tad + Super Street Fighter II Turbo (Asia 940223 Phoenix Edition) (bootleg) + + + ssf2tb + Super Street Fighter II: The Tournament Battle (World 931119) + + + ssf2tba + Super Street Fighter II: The Tournament Battle (Asia 931005) + + + ssf2tbd + Super Street Fighter II: The Tournament Battle (World 931119 Phoenix Edition) (bootleg) + + + ssf2tbh + Super Street Fighter II: The Tournament Battle (Hispanic 931005) + + + ssf2tbj + Super Street Fighter II: The Tournament Battle (Japan 931005) + + + ssf2tbj1 + Super Street Fighter II: The Tournament Battle (Japan 930911) + + + ssf2tbr1 + Super Street Fighter II: The Tournament Battle (World 930911) + + + ssf2tbu + Super Street Fighter II: The Tournament Battle (USA 930911) + + + ssf2td + Super Street Fighter II Turbo (World 940223 Phoenix Edition) (bootleg) + + + ssf2tdf + Super Street Fighter II Turbo (Difficulty Fix, Hack) + + + ssf2th + Super Street Fighter II Turbo (Hispanic 940223) + + + ssf2tnl + Super Street Fighter II Turbo New Legacy v0.9 (Beta) (Hack by Born2SPD) + + + ssf2tu + Super Street Fighter II Turbo (USA 940323) + + + ssf2tur1 + Super Street Fighter II Turbo (USA 940223) + + + ssf2u + Super Street Fighter II: The New Challengers (USA 930911) + + + ssf2ud + Super Street Fighter II: The New Challengers (USA 930911 Phoenix Edition) (bootleg) + + + ssf2us2 + Super Street Fighter II: The New Challengers Super 2 (USA 930911) + + + ssf2xj + Super Street Fighter II X: Grand Master Challenge (Japan 940311) + + + ssf2xjr1 + Super Street Fighter II X: Grand Master Challenge (Japan 940223) + + + ssf2xjr1d + Super Street Fighter II X: Grand Master Challenge (Japan 940223 Phoenix Edition) (bootleg) + + + ssf2xjr1r + Super Street Fighter II X: Grand Master Challenge (Japan 940223 rent version) + + + ssf2xjr1trn + Super Street Fighter II X: GMC Trainer (Japan 940223) + + + ssfindo + See See Find Out + + + sshangha + Super Shanghai Dragon's Eye (World) + + + sshanghab + Super Shanghai Dragon's Eye (World, bootleg) + + + sshanghaj + Super Shanghai Dragon's Eye (Japan) + + + sshanghak + Super Shanghai Dragon's Eye (Korea) + + + sshanghb + Super Shanghai Dragon's Eye (World, bootleg) + + + ssho2emb + Samurai Shodown II / Shin Samurai Spirits - Haohmaru Jigokuhen (Move Modeasy Special Attacks V4, Hack) + + + sshootep + Sharpshooter (Game Plan) + + + sshooter + Sharpshooter (Rev 1.9) + + + sshooter11 + Sharpshooter (Rev 1.1) + + + sshooter12 + Sharpshooter (Rev 1.2) + + + sshooter17 + Sharpshooter (Rev 1.7) + + + sshootr2 + Sharp Shooter II + + + sshot + Super Shot (set 1) + + + sshot137 + Shuffleshot (v1.37) + + + sshota + Super Shot (set 2) + + + sshtl_l3 + Space Shuttle (L-3) + + + sshtl_l7 + Space Shuttle (L-7) + + + sshtlzac + Space Shuttle (Zaccaria) + + + sshuttle + Space Shuttle (Taito) (set 1) + + + sshuttle1 + Space Shuttle (Taito) (set 2) + + + ssi + Super Space Invaders '91 (World, revised code, Rev 1) + + + ssia + Super Space Invaders '91 (World, revised code) + + + ssib + Super Space Invaders '91 (World, earlier code base) + + + ssideki + Super Sidekicks / Tokuten Ou + + + ssideki2 + Super Sidekicks 2 - The World Championship / Tokuten Ou 2 - Real Fight Football (NGM-061 ~ NGH-061) + + + ssideki3 + Super Sidekicks 3 - The Next Glory / Tokuten Ou 3 - Eikou e no Chousen + + + ssideki4 + The Ultimate 11 - The SNK Football Championship / Tokuten Ou - Honoo no Libero + + + ssingles + Swinging Singles (US) + + + ssipkr24 + SSI Poker (v2.4) + + + ssipkr30 + SSI Poker (v3.0) + + + ssipkr40 + SSI Poker (v4.0) + + + ssjkrpkr + Southern Systems Joker Poker + + + sslam + Super Slam (set 1) + + + sslama + Super Slam (set 2) + + + sslamb + Super Slam (set 3) + + + ssmissin + S.S. Mission + + + ssoldier + Superior Soldiers (US) + + + ssonicbr + SegaSonic Bros. (prototype, hack) + + + ssozumo + Syusse Oozumou (Japan) + + + sspac2k1 + Super Space 2001 + + + sspacaho + Space Attack / Head On + + + sspacat2 + Space Attack (upright, older) + + + sspacatc + Space Attack (cocktail) + + + sspaceat + Space Attack (upright set 1) + + + sspaceat2 + Space Attack (upright set 2) + + + sspaceat3 + Space Attack (upright set 3) + + + sspaceatc + Space Attack (cocktail) + + + sspanic + Same Same Panic + + + sspeedr + Super Speed Race + + + sspiritj + Scramble Spirits (Japan, Floppy DS3-5000-02-REV-A Based) + + + sspirits + Scramble Spirits (World, Floppy Based) + + + sspirtfc + Scramble Spirits (World, Floppy Based, FD1094 317-0058-02c) + + + sspring1 + Super Sprint (German, rev 1) + + + ssprint + Super Sprint (rev 4) + + + ssprint1 + Super Sprint (rev 1) + + + ssprint3 + Super Sprint (rev 3) + + + ssprintf + Super Sprint (French) + + + ssprintg + Super Sprint (German, rev 2) + + + ssprintg1 + Super Sprint (German, rev 1) + + + ssprints + Super Sprint (Spanish) + + + ssrdrabd + Sunset Riders (Asia 2 Players ver. ABD) + + + ssrdrebc + Sunset Riders (World 2 Players ver. EBC) + + + ssrdrebd + Sunset Riders (World 2 Players ver. EBD) + + + ssrdrjbd + Sunset Riders (Japan 2 Players ver. JBD) + + + ssrdruac + Sunset Riders (US 4 Players ver. UAC) + + + ssrdrubc + Sunset Riders (US 2 Players ver. UBC) + + + ssrdruda + Sunset Riders (US 4 Players ver. UDA) + + + ssriders + Sunset Riders (4 Players ver EAC) + + + ssriders2 + Sunset Riders 2 (bootleg 4 Players ver ADD) + + + ssridersabd + Sunset Riders (2 Players ver ABD) + + + ssridersadd + Sunset Riders (4 Players ver ADD) + + + ssridersb + Sunset Riders (bootleg 4 Players ver ADD) + + + ssriderseaa + Sunset Riders (4 Players ver EAA) + + + ssridersebc + Sunset Riders (2 Players ver EBC) + + + ssridersebd + Sunset Riders (2 Players ver EBD) + + + ssridershs + Sunset Riders (Hack Series) + + + ssridersjac + Sunset Riders (4 Players ver JAC) + + + ssridersjad + Sunset Riders (4 Players ver JAD) + + + ssridersjbd + Sunset Riders (2 Players ver JBD) + + + ssridersuab + Sunset Riders (4 Players ver UAB) + + + ssridersuac + Sunset Riders (4 Players ver UAC) + + + ssridersubc + Sunset Riders (2 Players ver UBC) + + + ssridersuda + Sunset Riders (4 Players ver UDA) + + + ssrj + Super Speed Race Junior (Japan) + + + sss + Steep Slope Sliders (JUET 981110 V1.000) + + + sst + Supersonic + + + sstar + Super Star + + + sstar97 + Super Star 97 / Ming Xing 97 (version V153B) + + + sstarbtl + Super Star Battle + + + sstarcrs + Super Star Crest + + + sstingry + Super Stingray (Japan) + + + sstrangr + Space Stranger + + + sstrangr2 + Space Stranger 2 + + + sstrike + Super Strike Bowling (V1) + + + sstriker + Sorcer Striker + + + sstrikerk + Sorcer Striker (Korea) + + + sstrkfgt + Sega Strike Fighter (Rev A) + + + sstrkfgta + Sega Strike Fighter (Rev A, no training mode) + + + sstrngr2 + Space Stranger 2 + + + ssvc_a26 + Secret Service (2.6) + + + ssvc_a42 + Secret Service (4.2 alternate sound) + + + ssvc_b26 + Secret Service (2.6 alternate sound) + + + ssvc_e40 + Secret Service (4.0, Europe) + + + st_ohla + Oh La La (Stella) + + + st_sam + SAM III Test Fixture + + + st_sam4 + SAM IV Test Fixture + + + st_vulkn + Vulkan (Stella) + + + stactics + Space Tactics + + + stadhero + Stadium Hero (Japan) + + + stadhr96 + Stadium Hero '96 (Europe, EAJ, Tuning license) + + + stadhr96j + Stadium Hero '96 (Japan, EAD) + + + stadhr96j2 + Stadium Hero '96 (Japan?, EAE) + + + stadhr96k + Stadium Hero '96 (Korea, Dream Island license) + + + stadhr96u + Stadium Hero '96 (USA, EAH) + + + stagger1 + Stagger I (Japan) + + + stakwin + Stakes Winner / Stakes Winner - GI Kinzen Seiha e no Michi + + + stakwin2 + Stakes Winner 2 + + + stakwindev + Stakes Winner / Stakes Winner - GI Kinzen Seiha e no Michi (early development board) + + + stankatk + Super Tank Attack (prototype rev. 1.12) + + + star100 + Ming Xing 100 (Star 100) + + + staraudi + Star Audition + + + starblad + Starblade (ST2, World) + + + starbladj + Starblade (ST1, Japan) + + + starcas + Star Castle (version 3) + + + starcas1 + Star Castle (older) + + + starcasc + Star Castle (cocktail) + + + starcase + Star Castle (Mottoeis) + + + starcasp + Star Castle (prototype) + + + starcrus + Star Cruiser + + + stardrft + Star Drifter (20150811, NSW/ACT) + + + stardrftu + Star Drifter (0451341, US) + + + starfght + Star Fighter + + + starfgmc + Starfighter (bootleg of Moon Cresta) + + + starfigh + Star Fighter (v1) + + + starfir2 + Star Fire 2 + + + starfira + Star Fire (set 2) + + + starfire + Star Fire (set 1) + + + starfirea + Star Fire (set 2) + + + starfirp + Star Fire + + + starfirpa + Star Fire (alternate set) + + + starforc + Star Force + + + starforca + Star Force (encrypted, set 2) + + + starforcb + Star Force (encrypted, bootleg) + + + starforce + Star Force (encrypted, set 1) + + + starfore + Star Force (encrypted) + + + stargate + Stargate + + + stargatp + Stargate (pinball, rev.5) + + + stargatp0 + Stargate (pinball) + + + stargatp1 + Stargate (pinball, rev.1) + + + stargatp2 + Stargate (pinball, rev.2) + + + stargatp3 + Stargate (pinball, rev.3) + + + stargatp4 + Stargate (pinball, rev.4) + + + starglad + Star Gladiator Episode I: Final Crusade (USA 960627) + + + stargladj + Star Gladiator Episode I: Final Crusade (Japan 960627) + + + stargld2 + Star Gladiator 2: Nightmare of Bilstein (Japan 980316) + + + stargod + Star God + + + stargoda + Star God (alternate sound) + + + stargodb + Star God (variable replay score) + + + stargrds + Star Guards + + + stargzr + Stargazer + + + starhawk + Starhawk + + + starjack + Star Jacker (Sega) + + + starjacks + Star Jacker (Stern Electronics) + + + starjacs + Star Jacker (Stern) + + + starlstr + Vs. Star Luster + + + starqst + Star Quest (10009511, NSW/ACT) + + + starrace + Star Race + + + starridr + Star Rider (REV 1) + + + starridrp3 + Star Rider (PROTO 3) + + + starrkr + Star Raker + + + stars + Stars + + + starseek + Doki Doki Idol Star Seeker (GDL-0005) + + + starshot + Star Shooter + + + starshp1 + Starship 1 + + + starshpp + Starship 1 (prototype?) + + + starsldr + Star Soldier: Vanishing Earth + + + starspnr + Starspinner (Dutch/Nederlands) + + + starswep + Star Sweep (World, STP2/VER.A) + + + starswepj + Star Sweep (Japan, STP1/VER.A) + + + startrek + Star Trek + + + startrep + Star Trek (Pinball) + + + startrgn + Star Trigon (Japan, STT1 Ver.A) + + + startrip + Star Trip + + + startrkd + Star Trek (bootleg of Defender) + + + startrks + Star Trek (Head On hardware) + + + startrp + Starship Troopers (CPU 2.01, display A2.00) + + + startrp2 + Starship Troopers (CPU 2.00, display A2.00) + + + starw + Star Wars (bootleg of Galaxy Wars, set 1) + + + starw1 + Star Wars (bootleg of Galaxy Wars, set 2) + + + starwar1 + Star Wars (rev 1) + + + starwarr + Star Warrior + + + starwars + Star Wars (set 1) + + + starwars1 + Star Wars (set 2) + + + starwarso + Star Wars (set 3) + + + starzan + Super Tarzan (Italy, V100I) + + + statriv2 + Triv Two + + + statriv2v + Triv Two (Vertical) + + + statriv4 + Triv Four + + + statriv5se + Triv Five Special Edition + + + statsymb + Status Symbols (0251147, US) + + + statusbj + Status Black Jack (V1.0c) + + + stbsub + Treasure Bonus (Subsino, v1.6) + + + stcc + Sega Touring Car Championship (newer) + + + stcca + Sega Touring Car Championship (Revision A) + + + stccb + Sega Touring Car Championship (Revision B) + + + stcco + Sega Touring Car Championship + + + stdragon + Saint Dragon (set 1) + + + stdragona + Saint Dragon (set 2) + + + stdragonb + Saint Dragon (bootleg) + + + stealsee + Steal See + + + steaser + Strip Teaser (Italy, Ver. 1.22) + + + steelta1 + Steel Talons (rev 1) + + + steeltag + Steel Talons (German, rev 2) + + + steeltal + Steel Talons (rev 2) + + + steeltal1 + Steel Talons (rev 1) + + + steeltalg + Steel Talons (German, rev 2) + + + steeltalp + Steel Talons (prototype) + + + steeltap + Steel Talons (prototype) + + + steelwkr + Steel Worker + + + steeplec + Steeplechase + + + stellcas + Stellar Castle (Elettronolo) + + + stellecu + Stelle e Cubi (Italy) + + + step3 + Stepping 3 Superior + + + stepchmp + Step Champ (GQ930 VER. JA) + + + stepstag + Stepping Stage Special + + + stera + Steraranger (bootleg of Moon Cresta) + + + stest + Speed Test + + + stfight + Street Fight (Germany) + + + stfighta + Street Fight (bootleg?) + + + stfightgb + Street Fight (Germany - Benelux) + + + stg + Strike Gunner S.T.G + + + stinger + Stinger + + + stinger2 + Stinger (prototype?) + + + stingray + Stingray + + + stisub + Super Treasure Island (Italy, v1.6) + + + stk_sprs + Strikes and Spares + + + stkclmns + Stack Columns (World) + + + stkclmnsj + Stack Columns (Japan) + + + stlforce + Steel Force + + + stlwr_l2 + Stellar Wars (L-2) + + + stmblade + Storm Blade (US) + + + stmbladej + Storm Blade (Japan) + + + stocker + Stocker (3/19/85) + + + stoffy + Super Toffy + + + stoffyu + Super Toffy (Unico license) + + + stompin + Stompin' (4/4/86) + + + stompina + Stompin' (prototype?) + + + stoneage + Stoneage (bootleg of Caveman Ninja) + + + stoneba2 + Stone Ball (2 Players) + + + stonebal + Stone Ball (4 Players, v1-20 13/12/1994) + + + stonebal2 + Stone Ball (2 Players, v1-20 7/11/1994) + + + stonebal2o + Stone Ball (2 Players, v1-20 21/10/1994) + + + stop + Stop + + + storm + Storm + + + storming + Storming Party / Riku Kai Kuu Saizensen (set 1) + + + storminga + Storming Party / Riku Kai Kuu Saizensen (set 2) + + + strahl + Koutetsu Yousai Strahl (World) + + + strahla + Koutetsu Yousai Strahl (Japan set 2) + + + strahlj + Koutetsu Yousai Strahl (Japan set 1) + + + strahlja + Koutetsu Yousai Strahl (Japan set 2) + + + strahljbl + Koutetsu Yousai Strahl (Japan, bootleg) + + + strain + Super Train (Ver. 1.9) + + + strapids + Shooting the Rapids + + + stratab + Strata Bowling (V3) + + + stratab1 + Strata Bowling (V1) + + + stratabs + Strata Bowling (V1 4T, Super Strike Bowling type PCB) + + + stratgys + Strategy X (Stern Electronics) + + + stratgyx + Strategy X + + + stratof + Raiga - Strato Fighter (US) + + + stratvox + Stratovox (set 1) + + + stratvoxa + Stratovox (set 2) + + + stratvoxb + Stratovox (bootleg) + + + strax_p7 + Star Trax (domestic prototype) + + + streakng + Streaking (set 1) + + + streaknga + Streaking (set 2) + + + streetg + Street Games (Revision 4) + + + streetg2 + Street Games II (Revision 7C) + + + streetg2r5 + Street Games II (Revision 5) + + + streetgr3 + Street Games (Revision 3) + + + streets1 + Street Smart (US version 1) + + + streetsj + Street Smart (Japan version 1) + + + streetsm + Street Smart (US version 2) + + + streetsm1 + Street Smart (US version 1) + + + streetsmj + Street Smart (Japan version 1) + + + streetsmw + Street Smart (World version 1) + + + streetsmwbl + Street Smart (bootleg of World version 1) + + + streetsw + Street Smart (World version 1) + + + stress + Stress Busters (J 981020 V1.000) + + + strfbomb + Strafe Bomb (bootleg of Scramble) + + + strfight + Star Fighter (bootleg of Astro Fighter) + + + strgchmp + Steering Champ (GQ710 97/12/18 VER. UAA) + + + strhoop + Street Hoop / Street Slam / Dunk Dream (DEM-004 ~ DEH-004) + + + strider + Strider (USA, B-Board 89624B-2) + + + strider2 + Strider 2 (Europe 991213) + + + strider2a + Strider 2 (Asia 991213) + + + strider2u + Strider 2 (USA 991213) + + + striderfix + Strider (USA, B-Board 89624B-2)(Graphic and music fixes, Hack) + + + striderj + Strider Hiryu (Japan) + + + striderjr + Strider Hiryu (Japan Resale Ver.) + + + striderua + Strider (USA, B-Board 89624B-3) + + + strideruc + Strider (USA, B-Board 90629B-3, buggy Street Fighter II conversion) + + + stridr2a + Strider 2 (ASIA 991213) + + + stridrja + Strider Hiryu (Japan set 2) + + + stridrua + Strider (US set 2) + + + strik_l4 + Strike Master (L-4) (Shuffle) + + + strike + Strike + + + striker + Striker (Pinball) + + + strikext + Striker Xtreme (CPU 1.02, display A1.03) + + + strikext_100 + Striker Xtreme (CPU 1.00, display A1.03) + + + striv + Super Triv (English questions) + + + strivf + Super Triv (French questions) + + + strker + Striker + + + strkfgtr + Strike Fighter (World) + + + strkfgtrj + Strike Fighter (Japan) + + + strkforc + Strike Force (rev 1 02/25/91) + + + strknew + Striker Xtreme (CPU 1.02, display A1.03, ARM7 sound board) + + + strkzn + Strike Zone (Purple Star) + + + strkzone + Strike Zone Baseball + + + strlink + Strong Link (Ukraine, V. 43.48) + + + strlinka + Strong Link (Ukraine, V. 43.45) + + + strlt_l1 + Star Light (L-1) + + + strngsci + Strange Science (Rev C) + + + strngscia + Strange Science (Rev A) + + + strngscig + Strange Science (German, Rev A) + + + strnskil + Strength & Skill + + + strongx + Strong X + + + strsphnx + Star's Phoenix (Italian speech) + + + strsphnxf + Star's Phoenix (French speech) + + + strtdriv + Street Drivin' (prototype) + + + strtheat + Street Heat (set 1, newer?) + + + strtheata + Street Heat (set 2, older?) + + + strvmstr + Super Trivia Master + + + strxt_fr + Striker Xtreme (CPU 1.02, display F1.03, France) + + + strxt_gr + Striker Xtreme (CPU 1.03, display G1.03, Germany) + + + strxt_it + Striker Xtreme (CPU 1.02, display I1.03, Italy) + + + strxt_it_101 + Striker Xtreme (CPU 1.01, display I1.03, Italy) + + + strxt_sp + Striker Xtreme (CPU 1.02, display L1.03, Spain) + + + strxt_uk + Striker Xtreme (CPU 1.01, display A1.03, UK) + + + sttng_g7 + Star Trek: The Next Generation (LG-7) + + + sttng_l1 + Star Trek: The Next Generation (LX-1) + + + sttng_l2 + Star Trek: The Next Generation (LX-2) + + + sttng_l3 + Star Trek: The Next Generation (LX-3) + + + sttng_l5 + Star Trek: The Next Generation (LX-5) + + + sttng_l7 + Star Trek: The Next Generation (LX-7) + + + sttng_p4 + Star Trek: The Next Generation (P-4) + + + sttng_p5 + Star Trek: The Next Generation (P-5) + + + sttng_p8 + Star Trek: The Next Generation (P-8) + + + sttng_s7 + Star Trek: The Next Generation (LX-7) SP1 + + + sttng_x7 + Star Trek: The Next Generation (LX-7 Special) + + + stunrn2e + S.T.U.N. Runner (rev 2, Europe) + + + stunrn3e + S.T.U.N. Runner (rev 3, Europe) + + + stunrun + S.T.U.N. Runner (rev 6) + + + stunrun0 + S.T.U.N. Runner (rev 0) + + + stunrun2 + S.T.U.N. Runner (rev 2) + + + stunrun2e + S.T.U.N. Runner (rev 2, Europe) + + + stunrun3 + S.T.U.N. Runner (rev 3) + + + stunrun3e + S.T.U.N. Runner (rev 3, Europe) + + + stunrun4 + S.T.U.N. Runner (rev 4) + + + stunrun5 + S.T.U.N. Runner (rev 5) + + + stunrune + S.T.U.N. Runner (rev 5, Europe) + + + stunrunj + S.T.U.N. Runner (rev 7, Japan) + + + stunrunp + S.T.U.N. Runner (upright prototype) + + + stuntair + Stunt Air + + + stuntcyc + Stunt Cycle + + + stwr_101 + Star Wars (USA 1.01, display A1.02) + + + stwr_101g + Star Wars (German 1.01, display G1.02) + + + stwr_102 + Star Wars (USA 1.02, display A1.05) + + + stwr_102e + Star Wars (England 1.02, display A1.05) + + + stwr_103 + Star Wars (USA 1.03, display A1.05) + + + stwr_103_a104 + Star Wars (USA 1.03, display A1.04) + + + stwr_104 + Star Wars (USA 1.04, display A1.05) + + + stwr_106 + Star Wars (Unofficial 1.06, display A1.05) + + + stwr_106_a046 + Star Wars (Unofficial 1.06, display A0.46) + + + stwr_106_s105 + Star Wars (Unofficial 1.06, display S1.05) + + + styphp + Stunt Typhoon Plus (Ver 2.04 J) + + + sub + Submarine (Sigma) + + + subhunt + Sub Hunter (Gremlin / Taito) + + + subhuntr + Sub Hunter (Model Racing) + + + submar + Submarine (Midway) + + + subroc3d + Subroc-3D + + + subs + Subs + + + sucasino + Super Casino + + + suchie2 + Idol Janshi Suchie-Pai II (ver 1.1) + + + suchie2o + Idol Janshi Suchie-Pai II (ver 1.0) + + + suchie3 + Idol Janshi Suchie-Pai 3 (Japan) + + + suchiesp + Idol Janshi Suchie-Pai Special (Japan) + + + sugorotc + Sugorotic JAPAN (STJ1 Ver.C) + + + sugorotca + Sugorotic JAPAN (STJ1 Ver.A) + + + suhosong + Su Ho Seong (Korea) + + + suikoenb + Suiko Enbu / Outlaws of the Lost Dynasty (JUETL 950314 V2.001) + + + sukuinuf + Quiz and Variety Suku Suku Inufuku 2 (IN2 Ver. A) + + + sultanw + Sultan's Wish (Konami Endeavour, Russia) + + + sumospin + Sumo Spins (0200606V, NSW/ACT) + + + sunaq + SunA Quiz 6000 Academy (940620-6) + + + sundance + Sundance + + + sunmonbb + Sun & Moon - Bank Buster (0153028, US) + + + sunmoon + Sun & Moon (0251303, US) + + + sunmoona + Sun & Moon (0151303, US) + + + sunqndol + Sun Queen - Dollar Storm (0451327, US) + + + sunsetbl + Sunset Riders (bootleg 4 Players ver. ADD) + + + sup8race + Super 8 Race + + + supbtime + Super Burger Time (World, set 1) + + + supbtimea + Super Burger Time (World, set 2) + + + supbtimej + Super Burger Time (Japan) + + + supbtimj + Super Burger Time (Japan) + + + supcrash + Super Crash (bootleg of Head On) + + + supdrapo + Super Draw Poker (set 1) + + + supdrapoa + Super Draw Poker (set 2) + + + supdrapob + Super Draw Poker (bootleg) + + + supduck + Super Duck + + + super21 + Super Twenty One + + + super21p + Super 21 + + + super555 + Super 555 (English version V1.5) + + + super7 + Super Seven + + + super70s + Super 70's (V100US) + + + super9 + Super Nove (Playmark, Lire currency) + + + super97 + Super 97 (Ver. 1.00) + + + super972 + Super 97-2 (Witch Bonus) + + + super98 + Super 98 (3-hands, ICP-1) + + + super9a + Super Nove (Playmark, Euro currency) + + + superabc + Super ABC (Pac-Man multigame kit, Sep. 03 1999) + + + superabco + Super ABC (Pac-Man multigame kit, Mar. 08 1999) + + + superb2k + Super Butterfly 2000 + + + superbar + Super Bar + + + superbik + Superbike + + + superbikg + Superbike (Galaxian hardware) + + + superbon + Agent Super Bond (Super Cobra conversion, encrypted) + + + superbona + Agent Super Bond (Super Cobra conversion, not encrypted) + + + superbug + Super Bug + + + superbwl + Super Bowl (Version 16.03B) + + + superchs + Super Chase - Criminal Termination (World) + + + superchsj + Super Chase - Criminal Termination (Japan) + + + superchsp + Super Chase - Criminal Termination (1992/10/26 20:24:29 CHASE 3 VER 1.1, prototype) + + + superchsp2 + Super Chase - Criminal Termination (1992/01/18 18:29:18 CHASE 3 VER 1.3O, prototype) + + + superchsu + Super Chase - Criminal Termination (US) + + + supercrd + Super Card (v417, encrypted) + + + superdbl + Super Double (French) + + + superdbz + Super Dragon Ball Z (DB1 Ver. B) + + + superdix + Super Dixieland (Bingo) + + + superdq + Super Don Quix-ote (Long Scenes) + + + superdqa + Super Don Quix-ote (Short Scenes, Alt) + + + superdqs + Super Don Quix-ote (Short Scenes) + + + supereld + Super El Dorado (Ver. 1.04H) + + + superg + Super Galaxians (hack of 'Galaxian (Namco set 2)') + + + supergm3 + Super Game III + + + supergs + Super Galaxians (Silver Systems) + + + supergx + Super GX + + + superinv + Super Invaders (bootleg set 1) + + + superkds + Super Kids / Jiu Nan Xiao Yingxiong (S019CN) + + + superman + Superman (World) + + + supermanj + Superman (Japan) + + + supermanu + Superman (US) + + + supermap + Superman (Pinball) + + + superpac + Super Pac-Man + + + superpacm + Super Pac-Man (Midway) + + + superpcm + Super Pac-Man (Midway) + + + superqix + Super Qix (set 1) + + + supershp + Super Ship + + + superspy + The Super Spy (NGM-011 ~ NGH-011) + + + superten + Super Ten V8.3 + + + supertnk + Super Tank + + + supertr + Super Triv Quiz I + + + supertr2 + Super Triv II + + + supertr3 + Super Triv III + + + superwng + Super Wing + + + superx + Super-X (NTC) + + + superxm + Super-X (Mitchell) + + + supgoal + Nerae! Super Goal (J 981218 V1.000) + + + supinvsion + Super Invasion (Electromar, Spanish) + + + supjolly + Super Jolly + + + suplup + Super Lup Lup Puzzle / Zhuan Zhuan Puzzle (version 4.0 / 990518) + + + supmodel + Super Model + + + supmodl2 + Super Model II + + + supnudg2 + Super Nudger II - P173 (Version 5.21) + + + suprball + Super Ball (Version 1.3) + + + suprbowl + Super Bowl + + + suprglob + Super Glob + + + suprgolf + Super Crowns Golf (World) + + + suprgolfj + Super Crowns Golf (Japan, set 1) + + + suprgolfja + Super Crowns Golf (Japan, set 2) + + + suprheli + Super Heli (bootleg of Super Cobra) + + + suprleag + Super League (FD1094 317-0045) + + + suprloco + Super Locomotive (Rev.A) + + + suprlocoo + Super Locomotive + + + suprmatk + Super Missile Attack (for rev 1) + + + suprmatkd + Super Missile Attack (not encrypted) + + + suprmous + Super Mouse + + + suprmrio + Vs. Super Mario Bros. (set SM4-4 E) + + + suprmrioa + Vs. Super Mario Bros. (set ?, harder) + + + suprmriobl + Vs. Super Mario Bros. (bootleg with Z80, set 1) + + + suprmriobl2 + Vs. Super Mario Bros. (bootleg with Z80, set 2) + + + suprnova + Super Nova (Game Plan) + + + suprpick + Super Picker + + + suprpokr + Super Poker (Version 10.19S) + + + suprpokra + Super Poker (Version 10.15S) + + + suprpokrb + Super Poker (Version 10.10) + + + suprpool + Super Pool (ver. 1.2) + + + suprridr + Super Rider + + + suprslam + From TV Animation Slam Dunk - Super Slams + + + suprstar + Super Stars + + + suprtrio + Super Trio + + + supst834 + Super Stars (v834, encrypted) + + + supst839 + Super Stars (v839, encrypted) + + + supstarf + Super Star (Recreativos Franco, set 1) + + + supstarfa + Super Star (Recreativos Franco, set 2) + + + supxevs + Vs. Super Xevious + + + suratk + Surprise Attack (World ver. K) + + + suratka + Surprise Attack (Asia ver. L) + + + suratkj + Surprise Attack (Japan ver. M) + + + sureshop + Sure Shot (Pinball) + + + sureshot + Sure Shot + + + surfnsaf + Surf'n Safari + + + surfplnt + Surf Planet (version 4.1) + + + surfplnt20 + Surf Planet (version 2.0) + + + surfplnt30 + Surf Planet (version 3.0) + + + surfplnt40 + Surf Planet (version 4.0) + + + surpr5 + Surprise 5 (Ver. 1.19) + + + surpratk + Surprise Attack (Japan ver. M) + + + survarts + Survival Arts (World) + + + survartsj + Survival Arts (Japan) + + + survartsu + Survival Arts (USA) + + + survival + Survival + + + susanita + Susanita + + + sushibar + Sushi Bar / Toretore! Sushi + + + sushimar + Itazura Daisuki! Sushimaru Kun + + + susume + Susume! Taisen Puzzle-Dama (GV027 Japan 1.20) + + + sutapper + Tapper (Suntory) + + + sutjarod + Sutjaro Haeyo Deluxe (Korea) + + + suzuk8h2 + Suzuka 8 Hours 2 (World, Rev B) + + + suzuk8h2j + Suzuka 8 Hours 2 (Japan, Rev B) + + + suzuk8hj + Suzuka 8 Hours (Japan) + + + suzuka8h + Suzuka 8 Hours (World, Rev C) + + + suzuka8hj + Suzuka 8 Hours (Japan, Rev B) + + + suzume + Watashiha Suzumechan (Japan) + + + sv1pf434 + Sovereign (1PF434A3) Fantasy + + + svc + SNK vs. Capcom - SVC Chaos (NGM-2690 ~ NGH-2690) + + + svcboot + SNK vs. Capcom - SVC Chaos (bootleg) + + + svcfd + SNK vs. Capcom - SVC Chaos (Fully Decrypted) + + + svcpcb + SNK vs. Capcom - SVC Chaos (JAMMA PCB, NEO-MVH MVO PCB) + + + svcpcba + SNK vs. Capcom - SVC Chaos (JAMMA PCB, NEO-MVH MVOB PCB) + + + svcplus + SNK vs. Capcom - SVC Chaos Plus (bootleg set 1) + + + svcplusa + SNK vs. Capcom - SVC Chaos Plus (bootleg set 2) + + + svcsplse + SNK vs. Capcom - SVC Chaos Super Plus (Enhanced, Hack) + + + svcsplus + SNK vs. Capcom - SVC Chaos Super Plus (bootleg) + + + svf + Super Visual Football: European Sega Cup (Rev A) + + + svfo + Super Visual Football: European Sega Cup + + + svg + S.V.G. - Spectral vs Generation / Sheng Mo Shiji (M68k label V200) (ARM label V200, ROM 10/11/05 S.V.G V201) + + + svghk + S.V.G. - Spectral vs Generation / Sheng Mo Shiji (M68k label V101HK) (ARM label V101HK, ROM 06/20/05 S.V.G V100) + + + svgpcb + S.V.G. - Spectral vs Generation / Sheng Mo Shiji (M68k label V100JP) (ARM label V100JP, ROM 05/12/05 S.V.G V100) (Japan, JAMMA PCB) + + + svgtw + S.V.G. - Spectral vs Generation / Sheng Mo Shiji (M68k label V101TW) (ARM label V101TW, ROM 06/20/05 S.V.G V100) + + + svolley + Super Volleyball (Japan) + + + svolleybl + Super Volleyball (bootleg) + + + svolleyk + Super Volleyball (Korea) + + + svolleyu + Super Volleyball (US, Data East license) + + + svolleyua + Super Volleyball (US) + + + svolly91 + Super Volley '91 (Japan) + + + svs + Super Visual Soccer: Sega Cup (US, Rev A) + + + swa + Star Wars Arcade (US) + + + swaj + Star Wars Arcade (Japan) + + + swarm + Swarm (bootleg?) + + + swat + SWAT (315-5048) + + + swatpolc + SWAT Police + + + swcourt + Super World Court (World) + + + swcourtb + Super World Court (World, bootleg) + + + swcourtj + Super World Court (Japan) + + + swe1pb + Pinball 2000: Star Wars Episode 1 + + + sweetgal + Sweet Gal (Japan 850510 SWG 1-02) + + + sweethrt + Sweetheart + + + sweetl + Sweet Life (041220 World) + + + sweetl2 + Sweet Life 2 (071217 Russia) + + + sweetl2_10 + Sweet Life 2 (110311 Entertainment B) + + + sweetl2_11 + Sweet Life 2 (140526 Entertainment B) + + + sweetl2_12 + Sweet Life 2 (110411 Entertainment C) + + + sweetl2_2 + Sweet Life 2 (080320 World) + + + sweetl2_2a + Sweet Life 2 (bootleg, 080320, banking address hack set 1) + + + sweetl2_2b + Sweet Life 2 (bootleg, 080320, banking address hack set 2) + + + sweetl2_2c + Sweet Life 2 (bootleg, 080320, VIDEO GAME-1 MD01) + + + sweetl2_2d + Sweet Life 2 (bootleg, 080320, LOTTOGAME (I)) + + + sweetl2_3 + Sweet Life 2 (090525 Lottery) + + + sweetl2_4 + Sweet Life 2 (090812 Entertainment) + + + sweetl2_5 + Sweet Life 2 (100408 Entertainment X) + + + sweetl2_6 + Sweet Life 2 (101209 Entertainment N) + + + sweetl2_7 + Sweet Life 2 (110111 Entertainment A) + + + sweetl2_8 + Sweet Life 2 (110124 Entertainment A) + + + sweetl2_9 + Sweet Life 2 (110204 Entertainment A) + + + sweetl_2 + Sweet Life (070412 Russia) + + + sweetl_3 + Sweet Life (090720 Entertainment) + + + sweetla + Sweet Life (bootleg, 041220, backdoor) + + + sweetlb + Sweet Life (bootleg, 041220, banking address hack, changed version text) + + + sweetld4 + Sweet Land 4 Bright (ver 2004.9.29) + + + sweetlnd + Sweet Land + + + swh2ld + Sweethearts II - Lucky Devil (10119811, NSW/ACT) + + + swhr2 + Sweethearts II (0200465V, NSW/ACT) + + + swhr2a + Sweethearts II (0200004V, NSW/ACT) + + + swhr2a6 + Sweethearts II (0151183, US) + + + swhr2q + Sweethearts II (0100860V, Queensland) + + + swhr2u + Sweethearts II (PHG0742-02, US) + + + swhr2v + Sweethearts II (01J01986, Venezuela) + + + swimmer + Swimmer (set 1) + + + swimmera + Swimmer (set 2) + + + swimmerb + Swimmer (set 3) + + + swinggal + Swing Gal (Japan 871221) + + + swingin + Swingin In The Green (Russian) + + + swipeout + Space Wipeout + + + swisspkr + Swiss Poker ('50 SG-.10', V2.5) + + + swracer + Star Wars: Racer Arcade + + + swrds_l1 + Swords of Fury (L-1) + + + swrds_l2 + Swords of Fury (L-2) + + + swrds_lg2 + Swords of Fury (LG-2) Germany + + + sws + Super World Stadium (Japan) + + + sws2000 + Super World Stadium 2000 (Japan, SS01/VER.A) + + + sws2001 + Super World Stadium 2001 (Japan, SS11/VER.A) + + + sws92 + Super World Stadium '92 (Japan) + + + sws92g + Super World Stadium '92 Gekitouban (Japan) + + + sws93 + Super World Stadium '93 (Japan) + + + sws95 + Super World Stadium '95 (Japan) + + + sws96 + Super World Stadium '96 (Japan) + + + sws97 + Super World Stadium '97 (Japan) + + + sws98 + Super World Stadium '98 (Japan, SS81/VER.A) + + + sws99 + Super World Stadium '99 (Japan, SS91/VER.A3) + + + swtht2nz + Sweethearts II (1VXFC5461, New Zealand) + + + swtril30 + Star Wars Trilogy (CPU 3.00, display A3.00) + + + swtril41 + Star Wars Trilogy (CPU 4.01, display A4.00) + + + swtril43 + Star Wars Trilogy (CPU 4.03, display A4.00) + + + swtrilgy + Star Wars Trilogy Arcade (Export, Revision A) + + + swtrilgya + Star Wars Trilogy Arcade (Export) + + + swtrilgyp + Star Wars Trilogy Arcade (location test, 16.09.98) + + + sxevious + Super Xevious + + + sxeviousj + Super Xevious (Japan) + + + sxyreac2 + Pachinko Sexy Reaction 2 (Japan) + + + sxyreact + Pachinko Sexy Reaction (Japan) + + + sydh + Shayu Daheng (V104CN) + + + sys1test + System 1 Test prom + + + syscheck + Neo System Check (ver 1.0b) + + + syutnori + Super Yutnori (bootleg of Major Poker) + + + syvalion + Syvalion (Japan) + + + syvalionp + Syvalion (World, prototype) + + + syvalionu + Syvalion (US, PS2 Taito Legends 2) + + + syvalionw + Syvalion (World, PS2 Taito Legends 2) + + + szaxxon + Super Zaxxon (315-5013) + + + szone_l2 + Strike Zone (Shuffle) (L-2) + + + szone_l5 + Strike Zone (Shuffle) (L-5) + + + t2_l2 + Terminator 2: Judgment Day (L-2) + + + t2_l3 + Terminator 2: Judgment Day (L-3) + + + t2_l4 + Terminator 2: Judgment Day (L-4) + + + t2_l6 + Terminator 2: Judgment Day (L-6) + + + t2_l8 + Terminator 2: Judgment Day (L-8) + + + t2_p2f + Terminator 2: Judgment Day (P-2F) Profanity + + + t3new + Terminator 3: Rise of the Machines (CPU 4.00, display A4.00, ARM7 sound board) + + + tabpkr + Royal Poker V 1.85 + + + tacscan + Tac/Scan + + + tactcan2 + Tactician (set 2) + + + tactcian + Tactician (set 1) + + + tactcian2 + Tactician (set 2) + + + taf_h4 + The Addams Family (H-4) + + + taf_l1 + The Addams Family (L-1) + + + taf_l2 + The Addams Family (L-2) + + + taf_l3 + The Addams Family (L-3) + + + taf_l4 + The Addams Family (L-4) + + + taf_l5 + The Addams Family (L-5) + + + taf_l6 + The Addams Family (L-6) + + + taf_l7 + The Addams Family (Prototype L-5) (L-7) + + + taf_p2 + The Addams Family (Prototype) (P-2) + + + tafg_h3 + The Addams Family Special Collectors Edition (H-3) + + + tafg_la2 + The Addams Family Special Collectors Edition (LA-2) + + + tafg_la3 + The Addams Family Special Collectors Edition (LA-3) + + + tafg_lx3 + The Addams Family Special Collectors Edition Gold (LX-3) + + + tagteam + Tag Team Wrestling + + + tagteamp + Tag-Team Wrestling + + + tagteamp2 + Tag-Team Wrestling (rev.2) + + + tagteampg + Tag-Team Wrestling (German) + + + tahitim + Tahiti Magic (10238911, NSW/ACT) + + + tahjong + Tahjong Yakitori (ver. 2-1) + + + taiko10 + Taiko no Tatsujin 10 (T101001-NA-A) + + + taiko11 + Taiko no Tatsujin 11 (T111001-NA-A) + + + taiko2 + Taiko no Tatsujin 2 (Japan, TK21 Ver.C) + + + taiko3 + Taiko no Tatsujin 3 (Japan, TK31 Ver.A) + + + taiko4 + Taiko no Tatsujin 4 (Japan, TK41 Ver.A) + + + taiko5 + Taiko no Tatsujin 5 (Japan, TK51 Ver.A) + + + taiko6 + Taiko no Tatsujin 6 (Japan, TK61 Ver.A) + + + taiko7 + Taiko no Tatsujin 7 (TK71-NA-A) + + + taiko8 + Taiko no Tatsujin 8 (TK8100-1-NA-A) + + + taiko9 + Taiko no Tatsujin 9 (TK91001-NA-A) + + + taikort + Taiko no Tatsujin RT: Nippon no Kokoro (Japan, TKN1 Ver.A) + + + tail2nos + Tail to Nose - Great Championship / Super Formula + + + tail2nosa + Tail to Nose - Great Championship + + + tailg + Tailgunner + + + tairyodk + Tairyo-Daiko 337 Byoshi + + + taitest + Taito Test Fixture + + + taiwanmb + Taiwan Mahjong (Japan 881208) + + + tajmah + Tajmahal (Russia) (Atronic) + + + take5 + Take 5 + + + takefive + Take Five + + + takeoff + Take Off (bootleg of The End) + + + takoron + Noukone Puzzle Takoron (Japan) (GDL-0042) + + + talbot + Talbot + + + tangramq + Tangram Q + + + tangtang + Tang Tang (ver. 0526, 26/05/2000) + + + tank + Tank/Tank Cocktail + + + tank8 + Tank 8 (set 1) + + + tank8a + Tank 8 (set 2) + + + tank8b + Tank 8 (set 3) + + + tank8c + Tank 8 (set 4) + + + tank8d + Tank 8 (set 5) + + + tankbatl + Tank Battle (prototype rev. 4/21/92) + + + tankbatt + Tank Battalion + + + tankbattb + Tank Battalion (bootleg) + + + tankbust + Tank Busters + + + tankfrce + Tank Force (US, 2 Players) + + + tankfrce4 + Tank Force (US, 4 Players) + + + tankfrceb + Tank Force (bootleg) + + + tankfrcej + Tank Force (Japan) + + + tankfrcj + Tank Force (Japan) + + + tankii + Tank II + + + tantr + Puzzle & Action: Tant-R (Japan) + + + tantrbl + Puzzle & Action: Tant-R (Japan) (bootleg set 1) + + + tantrbl2 + Puzzle & Action: Tant-R (Japan) (bootleg set 2) + + + tantrbl3 + Puzzle & Action: Tant-R (Japan) (bootleg set 3) + + + tantrbl4 + Puzzle & Action: Tant-R (Japan) (bootleg set 4) + + + tantrkor + Puzzle & Action: Tant-R (Korea) + + + taotaida + Tao Taido (set 2) + + + taotaido + Tao Taido (2 button version) + + + taotaido3 + Tao Taido (2/3 button version) + + + taotaidoa + Tao Taido (6 button version) + + + tapatune + Tap a Tune + + + tapper + Tapper (Budweiser, 1/27/84) + + + tappera + Tapper (Budweiser, 1/12/84) + + + tapperb + Tapper (Budweiser, 12/9/83) + + + tapperg + Tapper (Budweiser, 1/27/84 - Alternate graphics) + + + targ + Targ + + + targc + Targ (cocktail?) + + + targeth + Target Hits (ver 1.1, Checksum 5152) + + + targeth10 + Target Hits (ver 1.0, Checksum FBCB) + + + targetha + Target Hits (ver 1.1, Checksum 86E1) + + + tarzan + Tarzan Chuang Tian Guan (China, V109C, set 2) + + + tarzan103m + Tarzan (V103M) + + + tarzan202fa + Tarzan (V202FA) + + + tarzana + Tarzan (V107) + + + tarzanb + Tarzan Chuang Tian Guan (China, V110) + + + tarzanc + Tarzan Chuang Tian Guan (China, V109C, set 1) + + + tatacot + Tatacot (JA 951128 V1.000) + + + tattack + Time Attacker + + + tattass + Tattoo Assassins (US prototype, Mar 14 1995) + + + tattassa + Tattoo Assassins (Asia prototype, Mar 14 1995) + + + taurs_l1 + Taurus (Shuffle) (L-1) + + + taxi_l3 + Taxi (Marilyn) (L-3) + + + taxi_l4 + Taxi (Lola) (L-4) + + + taxi_lg1 + Taxi (Marilyn) (L-1) Germany + + + taxi_lu1 + Taxi (Marilyn) (LU-1) + + + taxi_p5 + Taxi (P-5) + + + taxidriv + Taxi Driver + + + taxidrvr + Taxi Driver + + + tazmani2 + Tazz-Mania (set 2, alt hardware) + + + tazmani3 + Tazz-Mania (Arfyc / Rodmar bootleg) + + + tazmania + Tazz-Mania (set 1) + + + tazmaniet + Tazz-Mania - El Trompa (U.R.V. BBCPE bootleg) + + + tazzmang + Tazz-Mania (bootleg on Galaxian hardware) + + + tazzmang2 + Tazz-Mania (bootleg on Galaxian hardware with Starfield) + + + tbasebal + Taikyoku Base Ball + + + tbeastw2 + Transformers Beast Wars II + + + tblkkuzu + The Block Kuzushi (Japan) + + + tblkkuzug + The Block Kuzushi (VER 1.10G) + + + tbonusal + Treasure Bonus (American Alpha, Ver. 1.6) + + + tbowl + Tecmo Bowl (World, set 1) + + + tbowla + Tecmo Bowl (World, set 2) + + + tbowlj + Tecmo Bowl (Japan) + + + tbowlp + Tecmo Bowl (World, prototype?) + + + tbyahhoo + Twin Bee Yahhoo! (ver JAA) + + + tceptor + Thunder Ceptor + + + tceptor2 + 3-D Thunder Ceptor II + + + tcfboxa + Triforce Firmware Update For Compact Flash Box (4.01) (GDT-0022A) + + + tcl + Taiwan Chess Legend + + + tcobra2 + Twin Cobra II (Ver 2.1O 1995/11/30) + + + tcobra2u + Twin Cobra II (Ver 2.1A 1995/11/30) + + + tdawg_l1 + Top Dawg (Shuffle) (L-1) + + + tdbingo + Trio de Bingo + + + tdfever + TouchDown Fever (US) + + + tdfever2 + TouchDown Fever 2 + + + tdfever2b + TouchDown Fever 2 (bootleg) + + + tdfeverj + TouchDown Fever (Japan) + + + tdoboon + Taihou de Doboon + + + tdpgal + Triple Draw Poker + + + tdragon + Thunder Dragon (8th Jan. 1992, unprotected) + + + tdragon1 + Thunder Dragon (4th Jun. 1991, protected) + + + tdragon2 + Thunder Dragon 2 (9th Nov. 1993) + + + tdragon2a + Thunder Dragon 2 (1st Oct. 1993) + + + tdragon3h + Thunder Dragon 3 (bootleg of Thunder Dragon 2) + + + tdragonb + Thunder Dragon (bootleg with Raiden sounds, encrypted) + + + tdragonb2 + Thunder Dragon (bootleg with reduced sound system) + + + tdragonb3 + Thunder Dragon (bootleg with Raiden sounds, unencrypted) + + + tduno + Touch de Uno! / Unou Nouryoku Check Machine (Japan) + + + tduno2 + Touch de Uno! 2 (Japan) + + + te0144 + Puzzle Bobble (Italian gambling game) + + + teamht + Team Hat Trick (11/16/84) + + + teamqb + John Elway's Team Quarterback (rev 3) + + + teamqb2 + John Elway's Team Quarterback (rev 2) + + + techbowl + Technical Bowling (J 971212 V1.000) + + + technodr + Techno Drive (Japan, TH1/VER.B) + + + techromn + Tech Romancer (Europe 980914) + + + techromna + Tech Romancer (Asia 980914) + + + techromnu + Tech Romancer (USA 980914) + + + tecnodar + Tecnodarts + + + tecnodargr + Tecnodarts (Recreativos G.R. license) + + + teddybb + TeddyBoy Blues (315-5115, New Ver.) + + + teddybbo + TeddyBoy Blues (315-5115, Old Ver.) + + + teddybboa + TeddyBoy Blues (315-5111, Old Ver.) + + + teddybbobl + TeddyBoy Blues (Old Ver. bootleg) + + + teedoff + Tee'd Off (World) + + + teedoffj + Tee'd Off (Japan) + + + teedoffp + Tee'd Off (pinball, rev.3) + + + teedoffp0 + Tee'd Off (pinball) + + + teedoffp1 + Tee'd Off (pinball, rev.1) + + + teetert + Teeter Torture (prototype) + + + tehkanwc + Tehkan World Cup (set 1) + + + tehkanwcb + Tehkan World Cup (set 2, bootleg?) + + + tehkanwcc + Tehkan World Cup (set 3, bootleg) + + + tehkanwcd + Tehkan World Cup (set 4, earlier) + + + tehkanwch + Tehkan World Cup (1986 year hack) + + + tekipaki + Teki Paki + + + tekipakit + Teki Paki (location test) + + + tekken + Tekken (World, TE2/VER.C) + + + tekken2 + Tekken 2 Ver.B (World, TES2/VER.D) + + + tekken2a + Tekken 2 (World, TES2/VER.A) + + + tekken2b + Tekken 2 Ver.B (World, TES2/VER.B) + + + tekken2jb + Tekken 2 Ver.B (Japan, TES1/VER.B) + + + tekken2jc + Tekken 2 Ver.B (Japan, TES1/VER.C) + + + tekken2ua + Tekken 2 (US, TES3/VER.A) + + + tekken2ub + Tekken 2 Ver.B (US, TES3/VER.B) + + + tekken2ud + Tekken 2 Ver.B (US, TES3/VER.D) + + + tekken3 + Tekken 3 (World, TET2/VER.E1) + + + tekken3a + Tekken 3 (World, TET2/VER.A) + + + tekken3b + Tekken 3 (World, TET2/VER.B) + + + tekken3c + Tekken 3 (World, TET2/VER.C) + + + tekken3d + Tekken 3 (World, TET2/VER.D) + + + tekken3ja + Tekken 3 (Japan, TET1/VER.A) + + + tekken3je1 + Tekken 3 (Japan, TET1/VER.E1) + + + tekken3ua + Tekken 3 (US, TET3/VER.A) + + + tekken3ud + Tekken 3 (US, TET3/VER.D) + + + tekken4 + Tekken 4 (TEF3 Ver. C) + + + tekken4a + Tekken 4 (TEF2 Ver. A) + + + tekken4b + Tekken 4 (TEF1 Ver. A) + + + tekken4c + Tekken 4 (TEF1 Ver. C) + + + tekken51 + Tekken 5.1 (TE51 Ver. B) + + + tekken51b + Tekken 5.1 (TE53 Ver. B) + + + tekken5d + Tekken 5 Dark Resurrection (TED1 Ver. A) + + + tekkena + Tekken (TE2-VER.B) + + + tekkenac + Tekken (Asia, TE4/VER.C) + + + tekkenb + Tekken (World, TE2/VER.B) + + + tekkenbs + Tekken Battle Scratch + + + tekkencw + Tekken Card World + + + tekkenjb + Tekken (Japan, TE1/VER.B) + + + tekkentt + Tekken Tag Tournament (TEG3-VER.B) + + + tektagt + Tekken Tag Tournament (World, TEG2/VER.C1, set 1) + + + tektagtc1a + Tekken Tag Tournament (World, TEG2/VER.C1, set 2) + + + tektagtja3 + Tekken Tag Tournament (Japan, TEG1/VER.A3) + + + tektagtjb + Tekken Tag Tournament (Japan, TEG1/VER.B) + + + tektagtjc1 + Tekken Tag Tournament (Japan, TEG1/VER.C1) + + + tektagtub + Tekken Tag Tournament (US, TEG3/VER.B) + + + tektagtuc1 + Tekken Tag Tournament (US, TEG3/VER.C1) + + + teljan + Tel Jan + + + telmahjn + Telephone Mahjong (Japan 890111) + + + telpacfl + TelePachi Fever Lion (V1.0) + + + tempall + Tempest All Levels + + + temped + TempEd + + + tempest + Tempest (rev 3, Revised Hardware) + + + tempest1 + Tempest (rev 1) + + + tempest1r + Tempest (rev 1, Revised Hardware) + + + tempest2 + Tempest (rev 2) + + + tempest3 + Tempest (rev 3) + + + temptube + Tempest Tubes + + + temptwst + Tempest Twisted + + + tenballs + Ten Balls (Ver 1.05) + + + tengai + Tengai (World) + + + tengaibl + Tengai (bootleg) + + + tengaij + Sengoku Blade: Sengoku Ace Episode II (Japan) / Tengai (World) + + + tenkai + Mahjong Tenkaigen (Japan) + + + tenkai2b + Mahjong Tenkaigen Part 2 (bootleg) + + + tenkaibb + Mahjong Tenkaigen (Japan bootleg b) + + + tenkaicb + Mahjong Tenkaigen (Japan bootleg c) + + + tenkaie + Mahjong Tenkaigen (Japan set 2) + + + tenkomor + Tenkomori Shooting (World, TKM2/VER.A1) + + + tenkomorja1 + Tenkomori Shooting (Japan, TKM1/VER.A1) + + + tenpindx + Ten Pin Deluxe + + + tenspot + Ten Spot + + + tenstrikc + Ten Strike Classic + + + tenthdeg + Tenth Degree (prototype) + + + tenup + Ten Up + + + teot + The Eye of Typhoon (HB, Beta 7 Version) + + + teplus2j + Tetris Plus 2 (Japan) + + + teqsun + Tequila Sunrise (1VXFC613, NSW) + + + terabrst + Teraburst (1998/07/17 ver UEL) + + + terabrsta + Teraburst (1998/07/17 ver HEL) + + + terabrstaa + Teraburst (1998/02/25 ver HAA) + + + terabrstj + Teraburst (1998/07/17 ver JEL) + + + terabrstja + Teraburst (1998/02/25 ver JAA) + + + terabrstua + Teraburst (1998/02/25 ver UAA) + + + term2 + Terminator 2 - Judgment Day (rev LA4 08/03/92) + + + term2la1 + Terminator 2 - Judgment Day (rev LA1 11/01/91) + + + term2la2 + Terminator 2 - Judgment Day (rev LA2 12/09/91) + + + term2la3 + Terminator 2 - Judgment Day (rev LA3 03/27/92) + + + term2lg1 + Terminator 2 - Judgment Day (German, rev LG1 11/04/91) + + + term2pa2 + Terminator 2 - Judgment Day (prototype, rev PA2 10/18/91) + + + term3 + Terminator 3: Rise of the Machines (CPU 4.00, display A4.00) + + + term3_205 + Terminator 3: Rise of the Machines (CPU 2.05, display A2.01) + + + term3_301 + Terminator 3: Rise of the Machines (CPU 3.01, display A3.00) + + + term3f + Terminator 3: Rise of the Machines (CPU 4.00, display F4.00, France) + + + term3f_205 + Terminator 3: Rise of the Machines (CPU 2.05, display F2.01, France) + + + term3f_301 + Terminator 3: Rise of the Machines (CPU 3.01, display F3.00, France) + + + term3g + Terminator 3: Rise of the Machines (CPU 4.00, display G4.00, Germany) + + + term3g_301 + Terminator 3: Rise of the Machines (CPU 3.01, display G3.00, Germany) + + + term3i + Terminator 3: Rise of the Machines (CPU 4.00, display I4.00, Italy) + + + term3i_205 + Terminator 3: Rise of the Machines (CPU 2.05, display I2.01, Italy) + + + term3i_301 + Terminator 3: Rise of the Machines (CPU 3.01, display I3.00, Italy) + + + term3l + Terminator 3: Rise of the Machines (CPU 4.00, display L4.00, Spain) + + + term3l_205 + Terminator 3: Rise of the Machines (CPU 2.05, display L2.01, Spain) + + + term3l_301 + Terminator 3: Rise of the Machines (CPU 3.01, display L3.00, Spain) + + + terracra + Terra Cresta (YM2203) + + + terracrb + Terra Cresta (YM3526 set 2) + + + terracre + Terra Cresta (YM3526 set 1) + + + terracrea + Terra Cresta (YM3526 set 3) + + + terracren + Terra Cresta (YM2203) + + + terracreo + Terra Cresta (YM3526 set 2) + + + terraf + Terra Force + + + terrafb + Terra Force (Japan, bootleg set 2) + + + terrafj + Terra Force (Japan) + + + terrafjb + Terra Force (Japan, bootleg with additional Z80) + + + terrafu + Terra Force (US) + + + terrafua + Terra Force (US, alternate sound) + + + terrlake + Terrific Lake + + + tesorone + Tesorone Dell'Isola (Italy, v2.41) + + + tesorone230 + Tesorone Dell'Isola (Italy, v2.30) + + + tesorone240 + Tesorone Dell'Isola (Italy, v2.40) + + + test240p + 240p Test Suite (v1.0) + + + tetfight + Tetris Fighters + + + tetgiano + Tetris Giant / Tetris Dekaris (MDA-C0076) + + + tetgiant + Tetris Giant / Tetris Dekaris (Ver.2.000) + + + tetkiwam + Tetris Kiwamemichi (Japan) (GDL-0020) + + + tetrbx + Tetris / Bloxeed (Korean System 16 bootleg) (ISG Selection Master Type 2006) + + + tetris + Tetris (set 4, Japan, System 16A) (FD1094 317-0093) + + + tetris1 + Tetris (set 1, Japan, System 16B) (FD1094 317-0091) + + + tetris1d + Tetris (set 1, Japan, System 16B) (bootleg of FD1094 317-0091 set) + + + tetris2 + Tetris (set 2, Japan, System 16B) (FD1094 317-0092) + + + tetris2d + Tetris (set 2, Japan, System 16B) (bootleg of FD1094 317-0092 set) + + + tetris3 + Tetris (set 3, Japan, System 16A) (FD1094 317-0093a) + + + tetris3d + Tetris (set 3, Japan, System 16A) (bootleg of FD1094 317-0093a set) + + + tetrisa + Tetris (Sega Set 2) + + + tetrisbl + Tetris (bootleg) + + + tetrisd + Tetris (set 4, Japan, System 16A) (bootleg of FD1094 317-0093 set) + + + tetriskr + Tetris (Korean bootleg of Mirrorsoft PC-XT Tetris) + + + tetrisp + Tetris Plus (ver 1.0) + + + tetrisp2 + Tetris Plus 2 (World, V2.8) + + + tetrisp2a + Tetris Plus 2 (World, V2.7) + + + tetrisp2j + Tetris Plus 2 (Japan, V2.2) + + + tetrisp2ja + Tetris Plus 2 (Japan, V2.1) + + + tetrisse + Tetris (Japan, System E) + + + tetrist + Tetris (Japan, Taito B-System, Nastar Conversion Kit) + + + tetrista + Tetris (Japan, Taito B-System, Master of Weapon Conversion Kit) + + + tetristh + Tetris (Japan, rev 1, Taito H-System) + + + tetrsark + Tetris (D.R. Korea, set 1, encrypted) + + + tetrsark2 + Tetris (D.R. Korea, set 2) + + + texasrls + Texas Reels (Ver. 2.00) + + + tf95_12 + WPC 95 Test Fixture (1.2) + + + tfa_13 + WPC Test Fixture: Alphanumeric (1.3) + + + tfdmd_l3 + WPC Test Fixture: DMD (L-3) + + + tfight + Title Fight + + + tfrceac + Thunder Force AC + + + tfrceacb + Thunder Force AC (bootleg) + + + tfrceacj + Thunder Force AC (Japan) + + + tfrceacjpb + Thunder Force AC (Japan, prototype, bootleg) + + + tfs_12 + WPC Test Fixture: Security (1.2) + + + tftc_104s + Tales From the Crypt (USA 1.04, display L1.03) + + + tftc_200 + Tales From the Crypt (USA 2.00, display A2.00) + + + tftc_300 + Tales From the Crypt (USA 3.00, display A3.00) + + + tftc_302 + Tales From the Crypt (Dutch 3.02, display A3.01) + + + tftc_303 + Tales From the Crypt (USA 3.03, display A3.01) + + + tfupdate + Triforce DIMM Updater (3.17) (GDT-0011) + + + tgm2 + Tetris: The Absolute - The Grand Master 2 + + + tgm2p + Tetris: The Absolute - The Grand Master 2 Plus + + + tgmj + Tetris: The Grand Master (Japan 980710) + + + tgtbal96 + Target Ball '96 + + + tgtball + Target Ball + + + tgtballa + Target Ball + + + tgtballn + Target Ball (with nudity) + + + tgtpanic + Target Panic + + + thaiprnc + Thai Princess (10119321, NSW/ACT) + + + thaiprnca + Thai Princess (30127721, ASP) + + + tharierj + Task Force Harrier (Japan) + + + tharrier + Task Force Harrier + + + tharrierb + Task Force Harrier (Lettering bootleg) + + + tharrieru + Task Force Harrier (US) + + + thayers + Thayer's Quest (set 1) + + + thayersa + Thayer's Quest (set 2) + + + the26thz + The 26th Z (Japan, location test) + + + theboat + The Boat + + + thecastle + The Castle + + + thedealr + The Dealer (Visco) + + + thedeep + The Deep (Japan) + + + thedrink + The Drink + + + theend + The End + + + theends + The End (Stern Electronics) + + + theendss + The End (SegaSA / Sonic) + + + thegames + The Games + + + theglad + The Gladiator / Shen Jian Fu Mo Lu / Shen Jian Fengyun (M68k label V101) (ARM label V107, ROM 06/06/03 SHEN JIAN V107) + + + theglad100 + The Gladiator / Shen Jian Fu Mo Lu / Shen Jian Fengyun (M68k label V100) (ARM label V100, ROM 01/16/03 SHEN JIAN) + + + theglad101 + The Gladiator / Shen Jian Fu Mo Lu / Shen Jian Fengyun (M68k label V100) (ARM label V101, ROM 03/13/03 SHEN JIAN) + + + theglad104 + The Gladiator / Shen Jian Fu Mo Lu / Shen Jian Fengyun (M68k label V100) (ARM label V104, ROM 04/02/03 SHEN JIAN V104) + + + thegladpcb + Tougenkyou - Road of the Sword (M68k label V100) (ARM label V101, ROM 03/13/03 SHEN JIAN) (Japan, JAMMA PCB) + + + thegladpcba + Tougenkyou - Road of the Sword (M68k label V100) (ARM label V100, ROM 02/25/03 SHEN JIAN) (Japan, JAMMA PCB) + + + theglob + The Glob + + + theglob2 + The Glob (earlier) + + + theglob3 + The Glob (set 3) + + + theglobme + The Glob (Pac-Man hardware, Magic Electronics) + + + theglobp + The Glob (Pac-Man hardware, set 1) + + + theglobpa + The Glob (Pac-Man hardware, set 2) + + + theglobpb + The Glob (Pac-Man hardware, bootleg) + + + thegrid + The Grid (version 1.2) + + + thegrida + The Grid (version 1.1) + + + thegridb + The Grid (version 1.01) + + + thehand + The Hand + + + thehole + The Hole (bootleg of The Pit) + + + thehustj + The Hustler (Japan version J) + + + thehustl + The Hustler (Japan, version M) + + + thehustlj + The Hustler (Japan, version J) + + + themj + The Mah-jong (Japan, set 1) + + + themj2 + The Mah-jong (Japan, set 2) + + + thenanpa + The Nanpa (Japan) + + + thepit + The Pit + + + thepitj + The Pit (Japan) + + + thepitm + The Pit (bootleg on Moon Quasar hardware) + + + thepitu1 + The Pit (US set 1) + + + thepitu2 + The Pit (US set 2) + + + thepitu3 + The Pit (US set 3) + + + theportr + The Porter (bootleg of Port Man) + + + thequest + The Quest (NSW, Australia) + + + theraid + The Raid + + + theraida + The Raid (alternate set) + + + therock + The Rock + + + theroes + Thunder Heroes (set 1) + + + theroesa + Thunder Heroes (set 2) + + + thetogyu + The Togyu (315-5065, Japan) + + + thief + Thief + + + thndblst + Thunder Blaster (Japan) + + + thndbolt + Thunderbolt + + + thnderxj + Thunder Cross (Japan) + + + thndfoxj + Thunder Fox (Japan) + + + thndfoxu + Thunder Fox (US) + + + thndh + Thunder Heart (0200333V, NSW/ACT) + + + thndha + Thunder Heart (0200334V, NSW/ACT) + + + thndrbld + Thunder Blade (upright) (FD1094 317-0056) + + + thndrbld1 + Thunder Blade (deluxe/standing) (unprotected) + + + thndrbldd + Thunder Blade (upright) (bootleg of FD1094 317-0056 set) + + + thndrhrt + Thunder Heart (10173811, NSW/ACT) + + + thndrman + Thunder Man + + + thndrx2 + Thunder Cross II (World) + + + thndrx2a + Thunder Cross II (Asia) + + + thndrx2j + Thunder Cross II (Japan) + + + thndzone + Thunder Zone (World, Rev 1) + + + thndzone4 + Thunder Zone (World 4 Players) + + + thndzonea + Thunder Zone (World) + + + thndzonej + Thunder Zone (Japan) + + + thoop + Thunder Hoop (ver. 1, checksum 02a09f7d) + + + thoop2 + TH Strikes Back (Non North America, Version 1.0, Checksum 020E0867) + + + thoop2a + TH Strikes Back (Non North America, Version 1.0, Checksum 020EB356) + + + thor + Thor (0200319V, NSW/ACT) + + + thrdwrld + Third World + + + threeds + Three Ds - Three Dealers Casino House (set 1) + + + threedsa + Three Ds - Three Dealers Casino House (set 2) + + + thrild2 + Thrill Drive 2 (ver EBB) + + + thrild2a + Thrill Drive 2 (ver AAA) + + + thrild2c + Thrill Drive 2 (ver EAA) + + + thrild2j + Thrill Drive 2 (ver JAA) + + + thrild3j + Thrill Drive 3 (D44:J:A:A:20050316) + + + thrilld + Thrill Drive (UDE) + + + thrillda + Thrill Drive (ACE) + + + thrilldab + Thrill Drive (ABE) + + + thrilldb + Thrill Drive (UDB) + + + thrilldba + Thrill Drive (ACB) + + + thrilldbab + Thrill Drive (ABB) + + + thrilldbe + Thrill Drive (EDB) + + + thrilldbj + Thrill Drive (JCB) + + + thrilldbja + Thrill Drive (JAB) + + + thrillde + Thrill Drive (EDE) + + + thrilldgej + Thrill Drive (ver GE713JAB) + + + thrilldgeu + Thrill Drive (ver GE713UFB) + + + thrilldgke + Thrill Drive (ver GK713EAB) + + + thrilldgkee + Thrill Drive (ver GK713EEB) + + + thrilldgkk + Thrill Drive (ver GK713K*B) + + + thrilldgmj + Thrill Drive (ver GM713JAB) + + + thrilldgnj + Thrill Drive (ver GN713JAB) + + + thrilldgpj + Thrill Drive (ver GP713JAB) + + + thrilldj + Thrill Drive (JCE) + + + thrilldja + Thrill Drive (JAE) + + + thund_p1 + Thunderball (P-1) + + + thund_p2 + Thunderball (P-2) + + + thund_p3 + Thunderball (P-3) + + + thunderh + Operation Thunder Hurricane (ver EAA) + + + thunderhu + Operation Thunder Hurricane (ver UAA) + + + thunderj + ThunderJaws (rev 3) + + + thunderja + ThunderJaws (rev 2) + + + thunderl + Thunder & Lightning (set 1) + + + thunderla + Thunder & Lightning (set 2) + + + thunderlbl + Thunder & Lightning (bootleg with Tetris sound, set 1) + + + thunderlbl2 + Thunder & Lightning (bootleg with Tetris sound, set 2) + + + thunderx + Thunder Cross (set 1) + + + thunderxa + Thunder Cross (set 2) + + + thunderxb + Thunder Cross (set 3) + + + thunderxj + Thunder Cross (Japan) + + + thundfox + Thunder Fox (World, rev 1) + + + thundfoxj + Thunder Fox (Japan, rev 1) + + + thundfoxu + Thunder Fox (US, rev 1) + + + thundhrt + Thunder Heart (13XF528902, US) + + + thunt + Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E) + + + thuntk + Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K) + + + tickee + Tickee Tickats + + + tictac + Tic Tac Trivia (6221-23, U5-0C, 07/07/86) + + + tictaca + Tic Tac Trivia (6221-23, U5-0C, 02/11/86) + + + tictacuk + Tic Tac Trivia (6221-25, U5-0E, 05/08/86, UK) + + + tictacv + Tic Tac Trivia (6221-22, U5-0, Vertical) + + + tierras100hz + Tierras Salvajes (100Hz display) + + + tigerh + Tiger-Heli (US) + + + tigerh2 + Tiger Heli (Japan set 1) + + + tigerhb1 + Tiger-Heli (bootleg set 1) + + + tigerhb2 + Tiger-Heli (bootleg set 2) + + + tigerhb3 + Tiger-Heli (bootleg set 3) + + + tigerhb4 + Tiger-Heli (bootleg set 4) + + + tigerhj + Tiger-Heli (Japan) + + + tigeroad + Tiger Road (US) + + + tigeroadb + Tiger Road (US bootleg) + + + tigeroadb2 + Tiger Road (US bootleg, set 2) + + + tigeroadu + Tiger Road (US, Romstar license) + + + tigerrag + Tiger Rag + + + tigerslt + Tiger (slot) + + + tighook + Tiger Hook (Version 2.1E Dual) + + + tighookc1 + Tiger Hook (Version 2.1R, set 1) + + + tighookc2 + Tiger Hook (Version 2.0LT, set 1) + + + tighookd1 + Tiger Hook (Version 2.1R, set 2) + + + tighookd2 + Tiger Hook (Version 2.0LT, set 2) + + + tighooko + Tiger Hook (Version 1.7XT) + + + tighooko2 + Tiger Hook (Version 1.7) + + + tighookv1 + Tiger Hook (Version 2.1R Dual) + + + tighookv2 + Tiger Hook (Version 2.0LT Dual) + + + tigress + Tigress (20230111, NSW/ACT) + + + tigressa + Tigress (20243811, ASP) + + + tikitalk + Tiki Talk (10239111, NSW/ACT) + + + tiktorch + Tiki Torch (0151003, US) + + + tiktorchnz + Tiki Torch (10124011, New Zealand) + + + timber + Timber + + + timbwolf + Timber Wolf (0154013, US) + + + time2000 + Time 2000 + + + timecris + Time Crisis (World, TS2 Ver.B) + + + timecrisa + Time Crisis (World, TS2 Ver.A) + + + timecrs2 + Time Crisis II (US, TSS3 Ver. B) + + + timecrs2v1b + Time Crisis II (Japan, TSS1 Ver. B) + + + timecrs2v2b + Time Crisis II (World, TSS2 Ver. B) + + + timecrs2v4a + Time Crisis II (World, TSS4 Ver. A) + + + timecrs2v5a + Time Crisis II (US, TSS5 Ver. A) + + + timecrs3 + Time Crisis 3 (TST1) + + + timecrs3e + Time Crisis 3 (TST2 Ver. A) + + + timecrs3u + Time Crisis 3 (TST3 Ver. A) + + + timecrs4 + Time Crisis 4 (World, TSF1002-NA-A) + + + timecrs4j + Time Crisis 4 (Japan, TSF1001-NA-A) + + + timecrsa + Time Crisis (Rev. TS2 Ver.A) + + + timefgtr + Time Fighter (Time Pilot conversion on Galaxian hardware) + + + timek131 + Time Killers (v1.31) + + + timekill + Time Killers (v1.32) + + + timekill100 + Time Killers (v1.00) + + + timekill120 + Time Killers (v1.20, alternate ROM board) + + + timekill121 + Time Killers (v1.21) + + + timekill121a + Time Killers (v1.21, alternate ROM board) + + + timekill131 + Time Killers (v1.31) + + + timekill132i + Time Killers (v1.32I) + + + timelimt + Time Limit + + + timeline + Time Line + + + timeplt + Time Pilot + + + timeplta + Time Pilot (Atari) + + + timepltc + Time Pilot (Centuri) + + + timescan + Time Scanner (set 2, System 16B) + + + timescan1 + Time Scanner (set 1, System 16A, FD1089B 317-0024) + + + timescan3 + Time Scanner (set 3, Japan, System 16B) (FD1089B 317-0024) + + + timescanbl + Time Scanner (bootleg) + + + timesol1 + Time Soldiers (US Rev 1) + + + timesold + Time Soldiers (US Rev 3) + + + timesold1 + Time Soldiers (US Rev 1) + + + timesup + Time's UP! (HB) + + + timesupd + Time's UP! (HB, Demo) + + + timetrv + Time Traveler + + + timetrv2 + Time Traveler (Japan) + + + timetunl + Time Tunnel + + + timscanr + Time Scanner + + + tinkerbl + Tinker Bell + + + tinklpit + Tinkle Pit (Japan) + + + tinstar + The Tin Star (A10, 4 PCB version) + + + tinstara + The Tin Star (TS, 5 PCB version) + + + tinv2650 + The Invaders + + + tiptop + Tip Top (3 board stack) + + + tisland + Treasure Island + + + tisub + Treasure Island (Subsino, set 1) + + + tisuba + Treasure Island (Subsino, set 2) + + + tisubb + Treasure Island (American Alpha, v3.0N) + + + titan + Titan (set 1) + + + titan1 + Titan (set 2) + + + titanic + Titanic (coin dropper, CPU 1.01, display A1.01) + + + titanpac + Titan (hack of Pac-Man) + + + titlef + Title Fight (World) + + + titlefj + Title Fight (Japan) + + + titlefu + Title Fight (US) + + + tjsb + Tian Jiang Shen Bing (China, V137C) + + + tjumpman + Tobikose! Jumpman + + + tkdensha + Toukidenshou - Angel Eyes (VER. 960427) + + + tkdensho + Toukidenshou - Angel Eyes (VER. 960614) + + + tkdenshoa + Toukidenshou - Angel Eyes (VER. 960427) + + + tkmmpzdm + Tokimeki Memorial Taisen Puzzle-dama (ver JAB) + + + tknight + Tecmo Knight (US) + + + tkoboxng + Vs. T.K.O. Boxing + + + tm + Touchmaster (v3.00 Euro) + + + tm2k + Touchmaster 2000 Plus (v4.63 Standard) + + + tm2ka + Touchmaster 2000 (v4.02 Standard) + + + tm2kb + Touchmaster 2000 (v4.00 Standard) + + + tm2kspeval + Touchmaster 2000 (v4.XX3 Spanish Evaluation) + + + tm3k + Touchmaster 3000 (v5.02 Standard) + + + tm3ka + Touchmaster 3000 (v5.01 Standard) + + + tm3keval + Touchmaster 3000 (v5.XX Standard AMOA Evaluation) + + + tm3ksp + Touchmaster 3000 (v5.02 Spanish) + + + tm4k + Touchmaster 4000 (v6.03 Standard) + + + tm4ka + Touchmaster 4000 (v6.02 Standard) + + + tm4kb + Touchmaster 4000 (v6.01 Standard) + + + tm4kca + Touchmaster 4000 (v6.02 California) + + + tm4kmn + Touchmaster 4000 (v6.01 Minnesota) + + + tm4knj + Touchmaster 4000 (v6.03 New Jersey) + + + tm4kuk + Touchmaster 4000 (v6.02 England) + + + tm5k + Touchmaster 5000 (v7.10 Standard) + + + tm5ka + Touchmaster 5000 (v7.01 Standard) + + + tm5kca + Touchmaster 5000 (v7.10 California) + + + tm5kmn + Touchmaster 5000 (v7.10 Minnesota) + + + tm5kuk + Touchmaster 5000 (v7.11 U.K.) + + + tm7k + Touchmaster 7000 (v8.04 Standard) + + + tm7ka + Touchmaster 7000 (v8.00 Standard) + + + tm7kde + Touchmaster 7000 (v8.04 Germany) + + + tm7keval + Touchmaster 7000 (v8.1X ASI Standard Evaluation) + + + tm7kmn + Touchmaster 7000 (v8.04 Minnesota) + + + tm7kmna + Touchmaster 7000 (v8.00 Minnesota) + + + tm7knj + Touchmaster 7000 (v8.05 New Jersey) + + + tm8k + Touchmaster 8000 (v9.04 Standard) + + + tm8k902 + Touchmaster 8000 (v9.02 Standard) + + + tmac_a18 + Time Machine (1.8) + + + tmac_a24 + Time Machine (2.4) + + + tmac_g18 + Time Machine (1.8, Germany) + + + tmachzac + Time Machine (Zaccaria) + + + tmachzacf + Time Machine (Zaccaria, French speech) + + + tmachzacg + Time Machine (Zaccaria, German speech) + + + tmachzaci + Time Machine (Zaccaria, Italian speech) + + + tmacltd2 + Time Machine (LTD, 2 players) + + + tmacltd4 + Time Machine (LTD, 4 players) + + + tmdo + Touchmaster (v2.2-01 Standard) + + + tmek + T-MEK (v5.1, The Warlords) + + + tmek20 + T-MEK (v2.0, prototype) + + + tmek44 + T-MEK (v4.4) + + + tmek45 + T-MEK (v4.5) + + + tmek51p + T-MEK (v5.1, prototype) + + + tmekprot + T-MEK (prototype) + + + tmfnt_l5 + Time Fantasy (L-5) + + + tmht + Teenage Mutant Hero Turtles (UK 4 Players, version F) + + + tmht22pe + Teenage Mutant Hero Turtles - Turtles in Time (2 Players ver EBA) + + + tmht24pe + Teenage Mutant Hero Turtles - Turtles in Time (4 Players ver EAA) + + + tmht2p + Teenage Mutant Hero Turtles (UK 2 Players, version U) + + + tmht2pa + Teenage Mutant Hero Turtles (UK 2 Players, version ?) + + + tmhta + Teenage Mutant Hero Turtles (UK 4 Players, version S) + + + tmhtb + Teenage Mutant Hero Turtles (UK 4 Players, version ?) + + + tmmjprd + Tokimeki Mahjong Paradise - Dear My Love + + + tmnt + Teenage Mutant Ninja Turtles (World 4 Players, version X) + + + tmnt2 + Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver UAA) + + + tmnt22p + Teenage Mutant Ninja Turtles - Turtles in Time (US 2 Players ver. UDA) + + + tmnt22pu + Teenage Mutant Ninja Turtles - Turtles in Time (2 Players ver UDA) + + + tmnt24pu + Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver UEA) + + + tmnt2a + Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver ADA) + + + tmnt2o + Teenage Mutant Ninja Turtles - Turtles in Time (4 Players ver OAA) + + + tmnt2pj + Teenage Mutant Ninja Turtles (Japan 2 Players, version 1) + + + tmnt2po + Teenage Mutant Ninja Turtles (Oceania 2 Players, version ?) + + + tmnt_101 + Teenage Mutant Ninja Turtles (1.01) + + + tmnt_103 + Teenage Mutant Ninja Turtles (1.03) + + + tmnt_104 + Teenage Mutant Ninja Turtles (USA 1.04, display A1.04) + + + tmnt_104g + Teenage Mutant Ninja Turtles (Germany 1.04, display A1.04) + + + tmnt_a07 + Teenage Mutant Ninja Turtles (A 0.7 VUK prototype) + + + tmnta + Teenage Mutant Ninja Turtles (Asia 4 Players, version ?) + + + tmnti + Teenage Mutant Ninja Turtles (FMV Demo) + + + tmntia + Teenage Mutant Ninja Turtles (FMV Demo, alt) + + + tmntj + Teenage Mutant Ninja Turtles (Japan 4 Players, version 2) + + + tmntmwb + Teenage Mutant Ninja Turtles - Mutant Warriors (SNES bootleg) + + + tmntu + Teenage Mutant Ninja Turtles (US 4 Players, version R) + + + tmntua + Teenage Mutant Ninja Turtles (US 4 Players, version N) + + + tmntub + Teenage Mutant Ninja Turtles (US 4 Players, version J) + + + tmntuc + Teenage Mutant Ninja Turtles (US 4 Players, version H) + + + tmntucbl + Teenage Mutant Ninja Turtles (bootleg, US 4 Players, version H) + + + tmosh + Tokimeki Memorial Oshiete Your Heart (GQ673 JAA) + + + tmoshs + Tokimeki Memorial Oshiete Your Heart Seal Version (GE755 JAA) + + + tmoshsp + Tokimeki Memorial Oshiete Your Heart Seal Version Plus (GE756 JAB) + + + tmoshspa + Tokimeki Memorial Oshiete Your Heart Seal Version Plus (GE756 JAA) + + + tmpdoki + Tokimeki Mahjong Paradise - Doki Doki Hen + + + tmspoker + unknown TMS9980 poker game + + + tmwrp_l2 + Time Warp (Williams, L-2) + + + tmwrp_l3 + Time Warp (Williams, L-3) + + + tmwrp_t2 + Time Warp (Williams, T-2) + + + tndrcade + Thundercade / Twin Formation + + + tndrcadej + Tokusyu Butai U.A.G. (Japan) + + + tndrcadj + Tokusyu Butai U.A.G. (Japan) + + + tnexspce + The Next Space + + + tnextspc + The Next Space (set 1) + + + tnextspc2 + The Next Space (set 2) + + + tnextspcj + The Next Space (Japan) + + + tnk3 + T.N.K III (US) + + + tnk3b + T.A.N.K (bootleg, 8-way joystick) + + + tnk3j + T.A.N.K (Japan) + + + tnzs + The NewZealand Story (World, new version) (P0-043A PCB) + + + tnzs2 + The NewZealand Story (World, old version) (P0-041A PCB) + + + tnzsb + The NewZealand Story (World, new version) (P0-043A PCB) + + + tnzsj + The NewZealand Story (Japan, new version) (P0-043A PCB) + + + tnzsjo + The NewZealand Story (Japan, old version) (P0-041A PCB) + + + tnzso + The NewZealand Story (World, old version) (P0-041A PCB) + + + tnzsoa + The NewZealand Story (World, unknown version) (P0-041A PCB) + + + tnzsop + The NewZealand Story (World, prototype) (P0-041-1 PCB) + + + tnzsuo + The NewZealand Story (US, old version) (P0-041A PCB) + + + todruaga + The Tower of Druaga (New Ver.) + + + todruagao + The Tower of Druaga (Old Ver.) + + + todruagas + The Tower of Druaga (Sidam) + + + todruago + Tower of Druaga (Old Ver.) + + + toffy + Toffy + + + togenkyo + Tougenkyou (Japan 890418) + + + toggle + Toggle (prototype) + + + toki + Toki (World, set 1) + + + tokia + Toki (World, set 2) + + + tokib + Toki (Datsu bootleg) + + + tokibr + Toki (Portuguese-BR Translation v1.07, Hack) + + + tokij + JuJu Densetsu (Japan) + + + tokimbsj + Tokimeki Bishoujo (Japan) + + + tokims + Toki (Modular System) + + + tokio + Tokio / Scramble Formation (newer) + + + tokiob + Tokio / Scramble Formation (bootleg) + + + tokioo + Tokio / Scramble Formation (older) + + + tokiou + Tokio / Scramble Formation (US) + + + tokip + Toki (US, prototype?) + + + tokisens + Toki no Senshi - Chrono Soldier (MC-8123, 317-0040) + + + tokisensa + Toki no Senshi - Chrono Soldier (prototype?) + + + tokiu + Toki (US, set 1) + + + tokiua + Toki (US, set 2) + + + tokkae + Taisen Tokkae-dama (ver JAA) + + + tokyobus + Tokyo Bus Guide (Japan, Rev A) + + + tokyocop + Tokyo Cop (US, dedicated version) + + + tokyocopi + Tokyo Cop (Italy) + + + tokyocopk + Tokyo Cop (US, kit version) + + + tokyogal + Tokyo Gal Zukan (Japan) + + + tokyowar + Tokyo Wars (World, TW2 Ver.A) + + + tokyowarj + Tokyo Wars (Japan, TW1 Ver.A) + + + toledo + Toledo (2 jackpot points, 87%) + + + toledoa + Toledo (2 jackpot points, 83%) + + + toledob + Toledo (1 jackpot point, 79%) + + + tom_06 + Theatre Of Magic (0.6a) + + + tom_10f + Theatre Of Magic (1.0 French) + + + tom_12 + Theatre Of Magic (1.2X) + + + tom_12a + Theatre Of Magic (1.2A) + + + tom_13 + Theatre Of Magic (1.3X) + + + tom_14h + Theatre Of Magic (1.4H) + + + tomagic + Tom Tom Magic + + + tomahaw5 + Tomahawk 777 (Revision 5) + + + tomahawk + Tomahawk 777 (rev 5) + + + tomahawk1 + Tomahawk 777 (rev 1) + + + tomcat + TomCat (prototype) + + + tomcatsw + TomCat (Star Wars hardware, prototype) + + + tomsadvs + Tom's Adventures + + + tomy_102 + The Who's Tommy Pinball Wizard (USA 1.02, display A3.00) + + + tomy_102be + The Who's Tommy Pinball Wizard (Belgium 1.02, display A1.02) + + + tomy_201h + The Who's Tommy Pinball Wizard (Dutch 2.01, display A2.00) + + + tomy_300h + The Who's Tommy Pinball Wizard (Dutch 3.00, display A3.00) + + + tomy_301g + The Who's Tommy Pinball Wizard (German 3.01, display G3.00) + + + tomy_400 + The Who's Tommy Pinball Wizard (USA 4.00, display A4.00) + + + tondemo + Tondemo Crisis (Japan) + + + tongzi + Tong Zi Maque + + + tonpuu + Ton Puu Mahjong Version 2.0 RX (Japan) + + + tonton + Waku Waku Doubutsu Land TonTon (Japan) + + + tontonb + Tonton (Japan) + + + tonypok + Poker Master (Tony-Poker V3.A, hack?) + + + toobin + Toobin' (rev 3) + + + toobin1 + Toobin' (rev 1) + + + toobin2 + Toobin' (rev 2) + + + toobin2e + Toobin' (Europe, rev 2) + + + toobine + Toobin' (Europe, rev 3) + + + toobing + Toobin' (German, rev 3) + + + top21 + Top XXI (Version 1.2) + + + top7 + Top-7 (V8.8, set 1) + + + top7a + Top-7 (V8.8, set 2) + + + topaz + Topaz (Inder) + + + topaz_l1 + Topaz (Shuffle) (L-1) + + + topbana + Top Banana (0100550V, NSW/ACT) + + + topbladv + Top Blade V + + + topdrive + Top Driving (version 1.1) + + + topgame + Top Game Laser L10 (Bingo) + + + topgamet + Top Game Turbo (Bingo) + + + topgear + Top Gear (4VXFC969, New Zealand) + + + topgun + Vs. Top Gun + + + topgunbl + Top Gunner (bootleg, Rotary Joystick) + + + topgunnr + Top Gunner (Exidy) + + + topgunr + Top Gunner (US, 8-way Joystick) + + + tophuntr + Top Hunter - Roddy & Cathy (NGM-046) + + + tophuntrh + Top Hunter - Roddy & Cathy (NGH-046) + + + topland + Top Landing (World) + + + toplandj + Top Landing (Japan) + + + toppin + Top Pin + + + toppyrap + Toppy & Rappy + + + topracer + Top Racer (with MB8841 + MB8842, 1984) + + + topracera + Top Racer (with MB8841 + MB8842, 1983) + + + topracern + Top Racer (no MB8841 + MB8842) + + + toprdice + Touch of Paradice (20007511, NSW/ACT) + + + toprollr + Top Roller + + + topsecex + Top Secret (Exidy) (version 1.0) + + + topsecrt + Top Secret (Japan, old revision) + + + topsecrt2 + Top Secret (Japan, revision B) + + + topshoot + Top Shooter + + + topshta6 + Top Shot (30123211, NSW/ACT) + + + topskatr + Top Skater (Export, Revision A) + + + topskatrj + Top Skater (Japan) + + + topskatru + Top Skater (USA, Revision A) + + + topskatruo + Top Skater (USA) + + + topsound + Top Sound (French) + + + topspedu + Top Speed (US) + + + topspeed + Top Speed (World, rev 1) + + + topspeedu + Top Speed (US) + + + toptcash + Top T. Cash + + + toramich + Tora e no Michi (Japan) + + + torarech + Torarechattano - AV Kantoku Hen (Japan) + + + toratora + Tora Tora (prototype?) + + + toratorab + Tora Tora (set 2) + + + torch + Torch + + + torgods + Torch of the Gods (10000411, NSW/ACT) + + + torgodsa + Torch of the Gods (20210211, ASP) + + + toride2g + Toride II Adauchi Gaiden + + + toride2gg + Toride II Adauchi Gaiden (German) + + + toride2gk + Toride II Bok Su Oi Jeon Adauchi Gaiden (Korea) + + + toride2j + Toride II (Japan, revision K) + + + toride2ji + Toride II (Japan, revision I) + + + tornado1 + Tornado (bootleg of Defender, set 1) + + + tornado2 + Tornado (bootleg of Defender, set 2) + + + tornbase + Tornado Baseball / Ball Park + + + torp_a16 + Torpedo Alley (1.6) + + + torp_e21 + Torpedo Alley (2.1, Europe) + + + tortufam + Tortuga Family (Italian) + + + torus + Torus + + + toryumon + Toryumon + + + toryumondx + Toryumon DX + + + totan_04 + Tales Of The Arabian Nights (0.4) + + + totan_12 + Tales Of The Arabian Nights (1.2) + + + totan_13 + Tales Of The Arabian Nights (1.3) + + + totan_14 + Tales Of The Arabian Nights (1.4) + + + totc + Treasure of the Caribbean + + + totcarn + Total Carnage (rev LA1 03/10/92) + + + totcarnp + Total Carnage (prototype, rev 1.0 01-25-92) + + + totcarnp1 + Total Carnage (prototype, proto v 1.0 01/25/92) + + + totcarnp2 + Total Carnage (prototype, proto v 2.0 02/10/92) + + + totd + The Typing of the Dead (Rev A) + + + totdo + The Typing of the Dead + + + totem + Totem + + + totlvica + Total Vice (ver AAB) + + + totlvice + Total Vice (ver EBA) + + + totlvicj + Total Vice (ver JAD) + + + totlvicu + Total Vice (ver UAC) + + + totmejan + Tottemo E Jong + + + toto + Come Back Toto + + + touchdn + Touchdown + + + toucheme + Touche Me (set 1) + + + touchemea + Touche Me (set 2, harder) + + + touchgo + Touch and Go (World) + + + touchgoe + Touch and Go (earlier revision) + + + touchgok + Touch and Go (Korea, unprotected) + + + touchgon + Touch and Go (Non North America) + + + toukon3 + Shin Nihon Pro Wrestling Toukon Retsuden 3 Arcade Edition (Japan, TR1/VER.A) + + + toukon4 + Shin Nihon Pro Wrestling Toukon Retsuden 4 Arcade Edition (Japan, TRF1 Ver.A) + + + tour4000 + Tour 4000 + + + tour4010 + Tour 4010 + + + toureiff + Torre Eiffel + + + tourpgum + unknown Paradise Automatique / TourVisión bowling themed poker game with gum prizes (France) + + + toursol + Tournament Solitaire (V1.06, 08/03/95) + + + toursol1 + Tournament Solitaire (V1.04, 06/22/95) + + + tourtab2 + Tournament Table (set 2) + + + tourtabl + Tournament Table (set 1) + + + touryuu + Touryuumon (V1.1)? + + + toutango + Toucan Tango (0100782V, NSW/ACT) + + + toutangonl + Toucan Tango (0301388V, Holland) + + + toutrun + Turbo Out Run (Out Run upgrade) (FD1094 317-0118) + + + toutrun1 + Turbo Out Run (deluxe cockpit) (FD1094 317-0109) + + + toutrun2 + Turbo Out Run (cockpit) (FD1094 317-0106) + + + toutrun2d + Turbo Out Run (cockpit) (bootleg of FD1094 317-0106 set) + + + toutrun3 + Turbo Out Run (cockpit) (FD1094 317-0107) + + + toutrun3d + Turbo Out Run (cockpit) (bootleg of FD1094 317-0107 set) + + + toutrund + Turbo Out Run (Out Run upgrade) (bootleg of FD1094 317-0118 set) + + + toutrunj + Turbo Out Run (Japan, Out Run upgrade) (FD1094 317-0117) + + + toutrunj1 + Turbo Out Run (Japan, cockpit) (FD1094 317-0101) + + + toutrunj1d + Turbo Out Run (Japan, cockpit) (bootleg of FD1094 317-0101 set) + + + toutrunjd + Turbo Out Run (Japan, Out Run upgrade) (bootleg of FD1094 317-0117 set) + + + toyfight + Toy Fighter + + + toyland + Toy Land Adventure + + + toypop + Toypop + + + toyshop + Toy Shop + + + toysmarch + Toy's March (E00:J:A:A:2005011602) + + + toysmarch2 + Toy's March 2 (F00:J:A:A:2005110400) + + + tp2m32 + Tetris Plus 2 (ver 1.0, MegaSystem 32 Version) + + + tp84 + Time Pilot '84 (set 1) + + + tp84a + Time Pilot '84 (set 2) + + + tp84b + Time Pilot '84 (set 3) + + + tpgolf + Top Player's Golf (NGM-003 ~ NGH-003) + + + tpkboram + PK Turbo + + + tpkborama + PK Turbo (Ver 2.3B2, encrypted) + + + tpkg2 + PK Turbo Great 2 + + + tpoker2 + Turbo Poker 2 + + + tqst + Treasure Quest + + + tqstp + Treasure Quest (Protocol) + + + trackflc + Track and Field (Centuri) + + + trackfld + Track & Field + + + trackfldc + Track & Field (Centuri) + + + trackfldnz + Track & Field (NZ bootleg?) + + + trackfldu + Track & Field (Centuri, unencrypted) + + + trailblz + Trail Blazer + + + trailer + Trailer + + + trally + Thrash Rally (ALM-003 ~ ALH-003) + + + tranqgun + Tranquillizer Gun + + + transfrm + Transformer + + + travrusa + Traverse USA / Zippy Race + + + travrusab + Traverse USA (bootleg, set 1) + + + travrusab2 + Traverse USA (bootleg, set 2) + + + trbwtchs + Trouble Witches AC (v1.00J) + + + trckydoc + Tricky Doc (set 1) + + + trckydoca + Tricky Doc (set 2) + + + treacity + Treasure City (Ver. 208) + + + treacity202 + Treasure City (Ver. 202) + + + treahunt + Treasure Hunt + + + treamary + Treasure Mary + + + trebltop + Treble Top (39-360-070) + + + trebol + Trebol + + + trek_110 + Star Trek 25th Anniversary (USA 1.10, display A1.06) + + + trek_110_a027 + Star Trek 25th Anniversary (USA 1.10, display A0.27) + + + trek_117 + Star Trek 25th Anniversary (USA 1.17, display A1.09) + + + trek_120 + Star Trek 25th Anniversary (USA 1.20, display A1.06) + + + trek_200 + Star Trek 25th Anniversary (USA 2.00, display A1.09) + + + trek_201 + Star Trek 25th Anniversary (USA 2.01, display A1.09) + + + trgheart + Trigger Heart Exelica Ver.A (Japan) (GDL-0036A) + + + trghearto + Trigger Heart Exelica (Japan) (GDL-0036) + + + tricksht + Trick Shooter + + + tricktrp + Trick Trap (World?) + + + trident + Trident + + + tridento + Trident (Older set) + + + trigon + Trigon (Japan) + + + trikitri + Triki Triki (bootleg of Lover Boy) + + + triothep + Trio The Punch - Never Forget Me... (World) + + + triothepj + Trio The Punch - Never Forget Me... (Japan) + + + tripdraw + Tripple Draw (V3.1 s) + + + tripfev + Triple Fever (V108US) + + + tripfev105us + Triple Fever (V105US) + + + tripfev107us + Triple Fever (V107US) + + + tripjack + Triple Jack (V1.6G) + + + tripjok + Triple Joker (Bingo) + + + triplay + Chicago Cubs' Triple Play + + + triplaya + Chicago Cubs' Triple Play (alternate set) + + + triplayg + Chicago Cubs' Triple Play (German) + + + triplep + Triple Punch (set 1) + + + triplepa + Triple Punch (set 2) + + + triplew1 + Mahjong Triple Wars (Japan) + + + triplew2 + Mahjong Triple Wars 2 (Japan) + + + triplfun + Triple Fun + + + triplfunk + Sum-eoitneun Deongdalireul Chat-ara! + + + triplhnt + Triple Hunt + + + tripool + Tri-Pool: 3-In-One (Casino Tech) + + + tripoola + Tri-Pool: 3-In-One (Coastal Games) + + + tripplay + Triple Play (M0000230, Spanish) + + + tripslot + Triple Slot (V200VE) + + + trisport + Tri-Sports + + + tritreat + Triple Treat (0201692V, NSW/ACT) + + + trivia + Trivia (Rev B) + + + triviabb + Trivial Pursuit (Baby Boomer Edition) (3/20/85) + + + triviaes + Trivial Pursuit (Volumen III, Spanish, Maibesa license) + + + triviaes2 + Trivial Pursuit (Volumen II, Spanish, Maibesa license) + + + triviaes4 + Trivial Pursuit (Volumen IV, Spanish, Maibesa hardware) + + + triviaes5 + Trivial Pursuit (Volumen V, Spanish, Maibesa hardware) + + + triviag1 + Trivial Pursuit (Think Tank - Genus Edition) (2/12/85) + + + triviag1a + Trivial Pursuit (Think Tank - Genus Edition) (12/14/84) + + + triviag2 + Trivial Pursuit (Genus II Edition) (3/22/85) + + + trivialp + Trivial Pursuit (New Edition) (prod. 1D) + + + trivialpd + Trivial Pursuit (New Edition) (prod. 1D) (Protocol) + + + trivialpo + Trivial Pursuit + + + triviaqz + Professor Trivia (set 1) + + + triviaqz2 + Professor Trivia (set 2) + + + triviasp + Trivial Pursuit (All Star Sports Edition) + + + triviayp + Trivial Pursuit (Young Players Edition) (3/29/85) + + + trivquiz + Triv Quiz + + + trivrus + Trivia R Us (v1.07) + + + trizeal + Trizeal (Japan) (GDL-0026) + + + trizn_l1 + Tri Zone (L-1) + + + trizn_t1 + Tri Zone (T-1) + + + trktreat + Trick or Treat (7XF5183H04, US) + + + troangel + Tropical Angel + + + trocana + Trocana + + + trog + Trog (rev LA5 3/29/91) + + + trog3 + Trog (rev LA3 2/14/91) + + + trog3a + Trog (rev LA3 2/10/91) + + + trog4 + Trog (rev LA4 3/11/91) + + + trogp + Trog (prototype, rev 4.00 07-27-90) + + + trogpa4 + Trog (prototype, rev 4.00 7/27/90) + + + trogpa5 + Trog (prototype, rev PA5-PAC 8/28/90) + + + trogpa6 + Trog (prototype, rev PA6-PAC 9/09/90) + + + trojan + Trojan (US set 1) + + + trojana + Trojan (US set 2) + + + trojanb + Trojan (bootleg) + + + trojanj + Tatakai no Banka (Japan) + + + trojanjo + Tatakai no Banka (Japan, old ver.) + + + trojanlt + Trojan (location test) + + + trojanr + Trojan (Romstar, set 1) + + + trojanra + Trojan (Romstar, set 2) + + + trojhors + Trojan Horse (01J00851, NSW/ACT) + + + tron + Tron (8/9) + + + tron2 + Tron (6/25) + + + tron3 + Tron (6/17) + + + tron4 + Tron (6/15) + + + tron5 + Tron (5/12) + + + tronfp + Tron (freeplay) + + + tronger + Tron (Germany) + + + troopy + Troopy (bootleg of Mr. Kougar) + + + tropchnc + Tropical Chance + + + tropfrt + Tropical Fruits (V. 24-06.00 Rev. 4.0) + + + trophyh + Trophy Hunting - Bear & Moose V1.00 + + + trophyht + Trophy Hunting - Bear & Moose V1.00 (location test) + + + trpdlght + Tropical Delight (0100269V, NSW/ACT) + + + trpdlghtu + Tropical Delight (PHG0625-02, US) + + + trsking + Treasure King (0152570, US) + + + trstar + Top Ranking Stars (Ver 2.1O 1993/05/21) (New Version) + + + trstar2k + Triple Star 2000 + + + trstarj + Top Ranking Stars (Ver 2.1J 1993/05/21) (New Version) + + + trstaro + Top Ranking Stars (Ver 2.1O 1993/05/21) (Old Version) + + + trstaroj + Top Ranking Stars (Ver 2.1J 1993/05/21) (Old Version) + + + trstrove + Treasure Trove (01J00161, NSW/ACT) + + + truckk + Truck Kyosokyoku (US?, TKK2/VER.A) + + + trucksp2 + Truck Stop (P-2) + + + trucksp3 + Truck Stop (P-3) + + + truco + Truco-Tron + + + trucocl + Truco Clemente + + + truxton + Truxton (Europe, US) / Tatsujin (Japan) + + + truxton2 + Truxton II / Tatsujin Oh + + + trvchlng + Trivia Challenge + + + trvgns + Trivia Genius + + + trvhang + Trivia Hangup (question set 1) + + + trvhanga + Trivia Hangup (question set 2) + + + trvmadns + Trivia Madness - Series A Question set + + + trvmadnsa + Trivia Madness - Series B Question set + + + trvmstr + Trivia Master (set 1) + + + trvmstra + Trivia Master (set 2) + + + trvmstrb + Trivia Master (set 3) + + + trvmstrc + Trivia Master (set 4) + + + trvmstrd + Trivia Master (set 5) + + + trvquest + Trivia Quest + + + trvwz + Trivia ? Whiz (6221-00) + + + trvwz2 + Trivia ? Whiz Edition 2 (6221-05) + + + trvwz2a + Trivia ? Whiz Edition 2 (6221-05, Alt Sex trivia) + + + trvwz3 + Trivia ? Whiz Edition 3 (6221-05, U5-0D) + + + trvwz3a + Trivia ? Whiz Edition 3 (6221-05, U5-0C) + + + trvwz3b + Trivia ? Whiz Edition 3 (6221-05, with Sex trivia III) + + + trvwz3v + Trivia ? Whiz Edition 3 (6221-04, U5-0E, Vertical) + + + trvwz4 + Trivia ? Whiz Edition 4 (6221-10, U5-0A) + + + trvwz4v + Trivia ? Whiz Edition 4 (6221-13, U5-0B, Vertical) + + + trvwz4va + Trivia ? Whiz Edition 4 (6221-13, U5-0B, Vertical, Alt Sex trivia) + + + trvwza + Trivia ? Whiz (6221-00, with Sex trivia) + + + trvwzb + Trivia ? Whiz (6221-00, Alt Gen trivia) + + + trvwzv + Trivia ? Whiz (6221-02, Vertical) + + + tryout + Pro Baseball Skill Tryout (Japan) + + + ts2 + Battle Arena Toshinden 2 (Europe 951124) + + + ts2j + Battle Arena Toshinden 2 (Japan 951124) + + + ts2ja + Battle Arena Toshinden 2 (Japan 951124, 32Mb mask ROMs) + + + ts2u + Battle Arena Toshinden 2 (USA 951124) + + + ts2ua + Battle Arena Toshinden 2 (USA 951124, 32Mb mask ROMs) + + + ts_la2 + The Shadow (LA-2) + + + ts_la4 + The Shadow (LA-4) + + + ts_lf4 + The Shadow (LF-4) French + + + ts_lf6 + The Shadow (LF-6) French + + + ts_lh6 + The Shadow (LH-6) + + + ts_lm6 + The Shadow (LM-6) Mild + + + ts_lx4 + The Shadow (LX-4) + + + ts_lx5 + The Shadow (LX-5) + + + ts_pa1 + The Shadow (PA-1) + + + tsamura2 + Samurai Nihon-ichi (set 2) + + + tsamurai + Samurai Nihon-Ichi (rev 1) + + + tsamuraia + Samurai Nihon-Ichi + + + tsamuraih + Samurai Nihon-Ichi (bootleg, harder) + + + tsarevna + Tsarevna (v1.29) + + + tsarevnaa + Tsarevna (v1.31) + + + tsclass + Trap Shoot Classic (v1.0 21-mar-1997) + + + tshingen + Shingen Samurai-Fighter (Japan, English) + + + tshingena + Takeda Shingen (Japan, Japanese) + + + tshingna + Shingen Samurai-Fighter (Japan, English) + + + tshoot + Turkey Shoot (prototype) + + + tsptr_l1 + Transporter the Rescue (LA-1) + + + tsptr_l3 + Transporter the Rescue (L-3) + + + tst_galx + Galaxian Test ROM + + + tst_invd + Space Invaders Test ROM + + + tstrike + Thunder Strike (set 1) + + + tstrikea + Thunder Strike (set 2, older) + + + tstrk_l1 + Triple Strike (Shuffle) (L-1) + + + tsukande + Tsukande Toru Chicchi + + + tsupenta + Tsurikko Penta + + + tsurugi + Tsurugi (ver EAB) + + + tsurugij + Tsurugi (ver JAC) + + + tsururin + Tsururin Kun + + + tsuwaku + Tsuugakuro no Yuuwaku (Japan) + + + tt_game + unknown Toptronic pinball game + + + ttactoe + Tic Tac Toe (Sundance bootleg of New Lucky 8 Lines) + + + ttblock + T.T Block + + + ttchamp + Table Tennis Champions + + + ttchampa + Table Tennis Champions (Palencia Elektronik license) + + + ttfitter + T.T Fitter (Japan) + + + ttmahjng + T.T Mahjong + + + tts_l1 + Tic-Tac-Strike (Shuffle) (L-1) + + + tts_l2 + Tic-Tac-Strike (Shuffle) (L-2) + + + ttsracec + T.T. Speed Race CL + + + ttt_10 + Ticket Tac Toe (1.0) + + + tturf + Tough Turf (set 2, Japan) (8751 317-0104) + + + tturfbl + Tough Turf (Datsu bootleg) + + + tturfu + Tough Turf (set 1, US) (8751 317-0099) + + + tubeit + Tube-It + + + tubep + Tube Panic + + + tubepb + Tube Panic (bootleg) + + + tugboat + Tugboat + + + tumbleb + Tumble Pop (bootleg) + + + tumbleb2 + Tumble Pop (bootleg with PIC) + + + tumblep + Tumble Pop (World) + + + tumblep2 + Tumble Pop (bootleg set 2) + + + tumblepb + Tumble Pop (bootleg set 1) + + + tumblepba + Tumble Pop (Playmark bootleg) + + + tumblepj + Tumble Pop (Japan) + + + tunhunt + Tunnel Hunt + + + tunhuntc + Tunnel Hunt (Centuri) + + + tuningrc + Gaelco Championship Tuning Race + + + turbo + Turbo (program 1513-1515) + + + turboa + Turbo (encrypted, program 1262-1264) + + + turbob + Turbo (encrypted, program 1363-1365 rev C) + + + turbobl + Indianapolis (bootleg of Turbo) + + + turboc + Turbo (encrypted, program 1363-1365 rev B) + + + turbod + Turbo (encrypted, program 1363-1365 rev A) + + + turboe + Turbo (encrypted, program 1363-1365) + + + turbofrc + Turbo Force (World, set 1) + + + turbofrco + Turbo Force (World, set 2) + + + turbofrcu + Turbo Force (US, set 1) + + + turbofrcua + Turbo Force (US, set 2) + + + turbosub + Turbo Sub (prototype rev. TSCA) + + + turbosubb8 + Turbo Sub (prototype rev. TSB8) + + + turbosubc5 + Turbo Sub (prototype rev. TSC5) + + + turbosubc5s + Turbo Sub (prototype rev. TSC5*) + + + turbosubc6 + Turbo Sub (prototype rev. TSC6) + + + turbosubc7 + Turbo Sub (prototype rev. TSC7) + + + turbosubc8 + Turbo Sub (prototype rev. TSC8) + + + turbotag + Turbo Tag (prototype) + + + turfmast + Neo Turf Masters / Big Tournament Golf + + + turfwld3 + GI Turf Wild 3 + + + turkhunt + Turkey Hunting USA V1.00 + + + turpin + Turpin + + + turpinnv + Turpin (Novatronic bootleg) + + + turpins + Turpin (bootleg on Super Cobra hardware) + + + turrett + Turret Tower + + + turtles + Turtles + + + turtreas + Turtle Treasure (10234711, NSW/ACT) + + + turtreasa + Turtle Treasure (10239811, ASP) + + + turtship + Turtle Ship (North America) + + + turtshipj + Turtle Ship (Japan) + + + turtshipk + Turtle Ship (Korea) + + + turtshipkn + Turtle Ship (Korea, 88/9) + + + turtshipko + Turtle Ship (Korea, older) + + + tutankhm + Tutankham + + + tutankhms + Tutankham (Stern Electronics) + + + tutankst + Tutankham (Stern) + + + tutstomb + Tut's Tomb + + + tv21 + T.V. 21 + + + tv21_3 + T.V. 21 III + + + tvcapcom + Tatsunoko Vs Capcom : Cross Generation of Heroes + + + tvdenwad + Terebi Denwa Doraemon + + + tvdenwam + Terebi Denwa Super Mario World + + + tvdenwat + Terebi Denwa Thomas the Tank Engine and Friends + + + tvgm8080 + TV Game 8080 + + + tvpoker + T.V. Poker + + + twcup90 + Tecmo World Cup '90 (World set 1) + + + twcup90a + Tecmo World Cup '90 (Europe set 1) + + + twcup90b + Tecmo World Cup '90 (Europe set 2) + + + twcup90b1 + Euro League (Italian hack of Tecmo World Cup '90, set 1) + + + twcup90b2 + Worldcup '90 (hack) + + + twcup90b3 + Euro League (Italian hack of Tecmo World Cup '90, set 3) + + + twcup90b4 + World Cup '90 (hack, alt) + + + twcup90ba + Euro League (Italian hack of Tecmo World Cup '90, set 2) + + + twcup90bb + World Cup '90 (European hack, different title) + + + twcup90c + Tecmo World Cup '90 (Europe set 3) + + + twcup90t + Tecmo World Cup '90 (trackball set 1) + + + twcup94 + Tecmo World Cup '94 (set 1) + + + twcup94a + Tecmo World Cup '94 (set 2) + + + twcup94b + Tecmo World Cup '94 (set 3) + + + twcup98 + Tecmo World Cup '98 (JUET 980410 V1.000) + + + twcupmil + Tecmo World Cup Millennium (Japan) + + + twinactn + Twin Action + + + twinadv + Twin Adventure (World) + + + twinadvk + Twin Adventure (Korea) + + + twinbee + TwinBee (ROM version) + + + twinbeeb + TwinBee (Bubble System) + + + twinbrat + Twin Brats (set 1) + + + twinbrata + Twin Brats (set 2) + + + twinbratb + Twin Brats (set 3) + + + twinbskt + Twin Basket + + + twincobr + Twin Cobra (World) + + + twincobrm + Twin Cobra (Modular System) + + + twincobru + Twin Cobra (US) + + + twincobu + Twin Cobra (US) + + + twineag2 + Twin Eagle II - The Rescue Mission + + + twineagl + Twin Eagle - Revenge Joe's Brother + + + twinfalc + Twin Falcons + + + twinhawk + Twin Hawk (World) + + + twinhawku + Twin Hawk (US) + + + twinhwku + Twin Hawk (US) + + + twinkle + Twinkle (set 1) + + + twinklea + Twinkle (set 2) + + + twinktmb + Twinkle Tale (bootleg of Mega Drive version) + + + twinqix + Twin Qix (Ver 1.0A 1995/01/17, prototype) + + + twinqixjh + Twin Qix Japan (Ver 1.0A 1995/01/17) (Hack) + + + twins + Twins (newer) + + + twinsa + Twins (older) + + + twinsed1 + Twins (Electronic Devices license, older) + + + twinsed2 + Twins (Electronic Devices license, newer) + + + twinspri + Twinkle Star Sprites + + + twinsqua + Twin Squash + + + twocrude + Two Crude (US FT revision 1) + + + twocrudea + Two Crude (US FT version) + + + twotiger + Two Tigers (dedicated) + + + twotigerc + Two Tigers (Tron conversion) + + + twotigra + Two Tigers (dedicated) + + + twrshaft + Tower & Shaft + + + tws96 + Tecmo World Soccer '96 + + + twsoc96 + Tecmo World Soccer '96 + + + twsoc98 + Tecmo World Soccer '98 (JUET 980410 V1.000) + + + twst_300 + Twister (CPU 3.00, display A3.01) + + + twst_404 + Twister (CPU 4.04, display A4.00) + + + twst_405 + Twister (CPU 4.05, display A4.00) + + + tx1 + TX-1 (World) + + + tx1jb + TX-1 (Japan rev. B) + + + tx1jc + TX-1 (Japan rev. C) + + + txsector + TX-Sector + + + txsectorf + TX-Sector (French) + + + txsectorg + TX-Sector (German) + + + tygn + Te Yi Gong Neng (China, V632C) + + + tylagoon + Typhoon Lagoon (Atronic) + + + tylz + Tylz (prototype) + + + typhoon + Typhoon + + + tz_92 + Twilight Zone (9.2) + + + tz_94ch + Twilight Zone (9.4CH) + + + tz_94h + Twilight Zone (9.4H) + + + tz_h7 + Twilight Zone (H-7) + + + tz_h8 + Twilight Zone (H-8) + + + tz_ifpa + Twilight Zone (IFPA rules) + + + tz_l1 + Twilight Zone (L-1) + + + tz_l2 + Twilight Zone (L-2) + + + tz_l3 + Twilight Zone (L-3) + + + tz_l4 + Twilight Zone (L-4) + + + tz_l5 + Twilight Zone (L-5) + + + tz_p3 + Twilight Zone (P-3) + + + tz_p4 + Twilight Zone (P-4) + + + tz_pa1 + Twilight Zone (PA-1) + + + uballoon + Ultra Balloon + + + uboat65 + U-boat 65 + + + uccops + Undercover Cops (World) + + + uccopsar + Undercover Cops - Alpha Renewal Version (World) + + + uccopsaru + Undercover Cops - Alpha Renewal Version (US) + + + uccopsj + Undercover Cops (Japan) + + + uccopsu + Undercover Cops (US) + + + uchuuai + Mahjong Uchuu yori Ai wo komete (Japan) + + + ucytokyu + Uchuu Tokkyuu Medalian + + + uecology + Ultimate Ecology (Japan 931203) + + + ufo21 + UFO Catcher 21 + + + ufo7 + UFO Catcher 7 + + + ufo800 + UFO Catcher 800 + + + ufo_x + UFO-X + + + ufoalac + UFO À La Carte + + + ufomini + UFO Catcher Mini + + + uforobot + UFO Robot (Ver 1.0 Rev A) + + + ufosensb + Ufo Senshi Yohko Chan (not encrypted) + + + ufosensi + Ufo Senshi Yohko Chan (MC-8123, 317-0064) + + + ufosensib + Ufo Senshi Yohko Chan (bootleg, not encrypted) + + + ujlnow + Um Jammer Lammy NOW! (Japan, UL1/VER.A) + + + ukiyobox + Ukiyo Box (Japan, v1.3.7) + + + ultarctc + Ultimate Arctic Thunder + + + ultarctcup + Ultimate Arctic Thunder Update CD ver 1.950 (5/3/04) + + + ultennis + Ultimate Tennis + + + ultennisj + Ultimate Tennis (v 1.4, Japan) + + + ultracin + Waku Waku Ultraman Racing + + + ultrainv + Ultra Invaders + + + ultraman + Ultraman (Japan) + + + ultramhm + Ultra Maru-hi Mahjong (Japan) + + + ultratnk + Ultra Tank + + + ultrax + Ultra X Weapons / Ultra Keibitai + + + ultraxg + Ultra X Weapons / Ultra Keibitai (Gamest review build) + + + ultrchmp + Se Gye Hweng Dan Ultra Champion (Korea) + + + ultrchmph + Cheng Ba Shi Jie - Chao Shi Kong Guan Jun (Taiwan) + + + umanclub + Ultraman Club - Tatakae! Ultraman Kyoudai!! + + + umipoker + Umi de Poker / Marine Paradise (Japan, newer) + + + umipokera + Umi de Poker / Marine Paradise (Japan, older) + + + umk3 + Ultimate Mortal Kombat 3 (rev 1.2) + + + umk3p + Ultimate Mortal Kombat 3 Plus (Hack, Beta 2) + + + umk3r10 + Ultimate Mortal Kombat 3 (rev 1.0) + + + umk3r11 + Ultimate Mortal Kombat 3 (rev 1.1) + + + umk3te + Ultimate Mortal Kombat 3 Tournament Edition (hack, V2.0.042/August 2018) + + + umk3uk + Ultimate Mortal Kombat 3 Uk (FBNeo, Ver. 2021-07-20) + + + unclepoo + Uncle Poo + + + undefeat + Under Defeat (Japan) (GDL-0035) + + + undoukai + The Undoukai (Japan) + + + undrfire + Under Fire (World) + + + undrfirej + Under Fire (Japan) + + + undrfireu + Under Fire (US) + + + undrfirj + Under Fire (Japan) + + + undrfiru + Under Fire (US) + + + unicornd + Unicorn Dreaming (0100791V, NSW/ACT) + + + unicornda + Unicorn Dreaming (0100813V, NSW/ACT) + + + unicorndnz + Unicorn Dreaming (0101228V, New Zealand) + + + unicorndu + Unicorn Dreaming (BHG1584, US) + + + uniwars + UniWar S + + + uniwarsa + UniWar S (bootleg) + + + unk820501 + unknown Cirsa slot machine on 820501 A PCB + + + unk960606 + unknown 960606-5 based machine (set 1) + + + unk960606b + unknown 960606-5 based machine (set 2) + + + unkanyw + unknown AnyWorks / Sega medal game BIOS + + + unkbel + unknown Belatra slot machine + + + unkboram + unknown Boram poker game + + + unkbpmed + unknown Banpresto medal game + + + unkch1 + New Cherry Gold '99 (bootleg of Super Cherry Master) (set 1) + + + unkch2 + Super Cherry Gold (bootleg of Super Cherry Master) + + + unkch3 + New Cherry Gold '99 (bootleg of Super Cherry Master) (set 2) + + + unkch4 + Grand Cherry Master (bootleg of Super Cherry Master) + + + unkct + unknown Cointek game + + + unkfr004 + unknown game on FR004 hardware (set 1) + + + unkfr004a + unknown game on FR004 hardware (set 2) + + + unkfr004b + unknown game on FR004 hardware (set 3) + + + unkfr004c + unknown game on FR004 hardware (set 4) + + + unkfr009 + unknown game on FR009 hardware + + + unkgolf + unknown golf game + + + unkh8gam + unknown H8 Italian gambling game + + + unkhockey + unknown Sega air hockey game + + + unkhorse + unknown Japanese horse gambling game + + + unkhpslt + unknown Hobby Play slot machine + + + unkitpkr + unknown Italian poker game + + + unkkonmd + unknown Konami medal game (game code GS662) + + + unkljfpk + unknown LJF Corporation poker game + + + unkpacg + unknown 'Pac-Man' gambling game (set 1) + + + unkpacga + Pucman + + + unkpacgb + unknown 'Pac-Man' gambling game (set 2) + + + unkpacgc + Coco Louco + + + unkpacgd + unknown 'Pac Man with cars' gambling game + + + unkpmc + unknown PMC game + + + unkpoker + unknown 1980 poker game + + + unksig + unknown 'Space Invaders' gambling game (encrypted, set 1) + + + unksiga + unknown 'Space Invaders' gambling game (encrypted, set 2) + + + unksigb + unknown 'Space Invaders' gambling game (unencrypted) + + + unksmk + unknown SMK game + + + unktax + unknown TAX game + + + unktop + unknown Top game + + + unkts + unknown game on TrueSys hardware + + + unkzilec + unknown Zilec game on Blue Print hardware + + + unomedal + UNO the Medal + + + unsquad + U.N. Squadron (USA) + + + untoucha + Untouchable (Ver. 2.10) + + + uopoko + Puzzle Uo Poko (World) + + + uopokoj + Puzzle Uo Poko (Japan) + + + upndown + Up'n Down (315-5030) + + + upndownu + Up'n Down (not encrypted) + + + upscope + Up Scope + + + upyoural + Up Your Alley + + + urachamu + Urachacha Mudaeri (Korea) + + + urashima + Otogizoushi Urashima Mahjong (Japan) + + + usafootb + U.S.A. Football (R06u) + + + usafootba + U.S.A. Football (R01u) + + + usafootf + U.S.A. Football (P08, redemption) + + + usagi + Usagi (V2.02J 2001/10/02 12:41:19) + + + usagiol + Usagi: Yasei no Topai Online (v2.04J) + + + usagiym + Usagi - Yamashiro Mahjong Hen (Japan) (GDL-0022) + + + usclssic + U.S. Classic + + + usg182 + Games V18.2 + + + usg185 + Games V18.5 + + + usg187c + Games V18.7C + + + usg211c + Games V21.1C + + + usg251 + Games V25.1 + + + usg252 + Games V25.4X + + + usg32 + Super Duper Casino (California V3.2) + + + usg82 + Super Ten V8.2 + + + usg83 + Super Ten V8.3 + + + usg83x + Super Ten V8.3X + + + usgames + Games V25.4X + + + usvsthem + Us vs. Them + + + utoukond + Ultra Toukon Densetsu (Japan) + + + v0bowl + unknown VRender0+ bowling game + + + v1 + V.1 + + + v4addlad + Adders and Ladders (v2.1) (MPU4 Video) + + + v4addlad20 + Adders and Ladders (v2.0) (MPU4 Video) + + + v4addladd + Adders and Ladders (v2.1d) (MPU4 Video) + + + v4barqs2 + Barquest 2 (v0.3) (MPU4 Video) + + + v4barqst + Barquest (v2.6) (MPU4 Video) + + + v4barqstd + Barquest (v2.6d) (MPU4 Video) + + + v4big40 + Big 40 Poker (BWB) (Arcade Standard) (set 1) (MPU4 Video) + + + v4big40a + Big 40 Poker (BWB) (Arcade Standard) (set 2) (MPU4 Video) + + + v4big40b + Big 40 Poker (BWB) (Arcade Standard) (set 3) (MPU4 Video) + + + v4big40c + Big 40 Poker (BWB) (Arcade Standard) (set 4) (MPU4 Video) + + + v4big40d + Big 40 Poker (BWB) (Arcade Data) (set 1) (MPU4 Video) + + + v4big40e + Big 40 Poker (BWB) (Arcade Data) (set 2) (MPU4 Video) + + + v4big40f + Big 40 Poker (BWB) (S_Site Data + %-Key + OCDM) (MPU4 Video) + + + v4big40g + Big 40 Poker (BWB) (S_Site Standard) (set 1) (MPU4 Video) + + + v4big40h + Big 40 Poker (BWB) (S_Site Standard) (set 2) (MPU4 Video) + + + v4big40i + Big 40 Poker (BWB) (S_Site Data + %-Key) (set 1) (MPU4 Video) + + + v4big40j + Big 40 Poker (BWB) (S_Site Data + %-Key) (set 2) (MPU4 Video) + + + v4big40k + Big 40 Poker (BWB) (S_Site Data) (MPU4 Video) + + + v4bigfrt + Big Fruits (v2.0?) (set 1) (MPU4 Video) + + + v4bigfrta + Big Fruits (v2.0?) (set 2) (MPU4 Video) + + + v4bigfrtb + Big Fruits (v2.0?) (set 3) (MPU4 Video) + + + v4bigfrtc + Big Fruits (v2.0?) (% Key) (MPU4 Video) + + + v4blox + Blox (SJM BLOX, 50p/20p Play, Version 2.0) (MPU4 Video) + + + v4bloxd + Blox (SJM BLOX, 50p/20p Play, Version 2.0) (Datapak) (MPU4 Video) + + + v4bubbnk + Bubbly Bonk (v4.0?) (20p Fixed, Cash+Token) (MPU4 Video) + + + v4bubbnka + Bubbly Bonk (v4.0?) (20p Fixed, All - Cash) (MPU4 Video) + + + v4bubbnkb + Bubbly Bonk (v4.0?) (20p Fixed, Cash+Token, Datapak, % Key) (MPU4 Video) + + + v4bubbnkc + Bubbly Bonk (v4.0?) (20p Fixed, Cash+Token, Datapak) (MPU4 Video) + + + v4bubbnkd + Bubbly Bonk (v4.0?) (20p Fixed, Cash+Token, % Key) (MPU4 Video) + + + v4bulblx + Bullion Blox (BWB) (BV_50___.2__) (MPU4 Video) + + + v4bulblxa + Bullion Blox (BWB) (Datapak) (BV_50___.2__) (MPU4 Video) + + + v4bulblxb + Bullion Blox (BWB) (BV_1P___.2__) (MPU4 Video) + + + v4bulblxc + Bullion Blox (BWB) (Datapak) (BV_1P___.2__) (MPU4 Video) + + + v4bulblxd + Bullion Blox (BWB) (BVM_____.1__) (MPU4 Video) + + + v4cmaze + The Crystal Maze (v1.3) (MPU4 Video) + + + v4cmaze2 + The New Crystal Maze Featuring Ocean Zone (v2.2) (MPU4 Video) + + + v4cmaze2_amld + The New Crystal Maze Featuring Ocean Zone (v0.1, AMLD) (MPU4 Video) + + + v4cmaze2b + The New Crystal Maze Featuring Ocean Zone (v2.0) (MPU4 Video) + + + v4cmaze2c + The New Crystal Maze Featuring Ocean Zone (v?.?) (MPU4 Video) + + + v4cmaze2d + The New Crystal Maze Featuring Ocean Zone (v2.2, Datapak) (MPU4 Video) + + + v4cmaze3 + The Crystal Maze Team Challenge (v0.9) (MPU4 Video) + + + v4cmaze3_amld + The Crystal Maze Team Challenge (v1.2, AMLD) (MPU4 Video) + + + v4cmaze3b + The Crystal Maze Team Challenge (v0.8) (MPU4 Video) + + + v4cmaze3c + The Crystal Maze Team Challenge (v0.6) (MPU4 Video) + + + v4cmaze3d + The Crystal Maze Team Challenge (v0.9, Datapak) (MPU4 Video) + + + v4cmaze_amld + The Crystal Maze (v0.1, AMLD) (MPU4 Video) + + + v4cmazeb + The Crystal Maze (v1.2) (MPU4 Video) + + + v4cmazec + The Crystal Maze (v1.3 alt) (MPU4 Video) + + + v4cmazed + The Crystal Maze (v1.1) (MPU4 Video) + + + v4cmazedat + The Crystal Maze (v1.3, Datapak) (MPU4 Video) + + + v4cshinf + Cash Inferno (BWB) (Release 4, 20p Fixed, Cash+Token) (set 1) (MPU4 Video) + + + v4cshinf3 + Cash Inferno (BWB) (Release 3) (set 1) (MPU4 Video) + + + v4cshinf3a + Cash Inferno (BWB) (Release 3) (set 2) (MPU4 Video) + + + v4cshinfa + Cash Inferno (BWB) (Release 4, 5p Fixed, All - Cash) (MPU4 Video) + + + v4cshinfb + Cash Inferno (BWB) (Release 4, 10p Fixed, Cash+Token) (MPU4 Video) + + + v4cshinfd + Cash Inferno (BWB) (Release 4, 20p Fixed, Cash+Token) (set 2) (MPU4 Video) + + + v4cshinfe + Cash Inferno (BWB) (Release 4, 20p Fixed, Cash+Token, Datapak) (set 1) (MPU4 Video) + + + v4cshinff + Cash Inferno (BWB) (Release 4, 20p Fixed, Cash+Token, Showcase, Datapak) (MPU4 Video) + + + v4cshinfg + Cash Inferno (BWB) (Release 4, 20p Fixed, Cash+Token) (set 3) (MPU4 Video) + + + v4cshinfh + Cash Inferno (BWB) (Release 4, 20p Fixed, Cash+Token, Showcase) (MPU4 Video) + + + v4cshinfi + Cash Inferno (BWB) (Release 4, 20p Fixed, Cash+Token, Datapak, % Key) (MPU4 Video) + + + v4cshinfj + Cash Inferno (BWB) (Release 4, 20p Fixed, Cash+Token, Showcase, Datapak, % Key) (MPU4 Video) + + + v4cshinfk + Cash Inferno (BWB) (Release 4, 20p Fixed, Cash+Token, Datapak) (set 2) (MPU4 Video) + + + v4cshinfl + Cash Inferno (BWB) (Release 4, 20p Fixed, Cash+Token, % Key) (MPU4 Video) + + + v4cshinfm + Cash Inferno (BWB) (Release 4, 20p Switchable 20p/10p/5p, Cash+Token) (set 1) (MPU4 Video) + + + v4cshinfn + Cash Inferno (BWB) (Release 4, 20p Switchable 20p/10p/5p, Cash+Token, Showcase) (MPU4 Video) + + + v4cshinfo + Cash Inferno (BWB) (Release 4, 20p Switchable 20p/10p/5p, Cash+Token, Datapak, % Key) (MPU4 Video) + + + v4cshinfp + Cash Inferno (BWB) (Release 4, 20p Switchable 20p/10p/5p, Cash+Token, Datapak) (set 1) (MPU4 Video) + + + v4cshinfq + Cash Inferno (BWB) (Release 4, 20p Switchable 20p/10p/5p, Cash+Token, % Key) (MPU4 Video) + + + v4cshinfr + Cash Inferno (BWB) (Release 4, 20p Switchable 20p/10p/5p, Cash+Token) (set 2) (MPU4 Video) + + + v4cshinfs + Cash Inferno (BWB) (Release 4, 20p Switchable 20p/10p/5p, Cash+Token, Datapak) (set 2) (MPU4 Video) + + + v4cshinfu + Cash Inferno (BWB) (Release 4, 20p Switchable 20p/10p/5p, All - Cash) (MPU4 Video) + + + v4cshinfw + Cash Inferno (BWB) (Release 4, 20p Switchable 20p/10p/5p, All - Cash, Datapak) (MPU4 Video) + + + v4cybcas + Cyber Casino (Nova, German) (MPU4 Video) + + + v4dbltak + Double Take (BWB) (Release 4, Arcade Standard, 20p/25p Stake Key, £5/£10/£15 Prize Key) (MPU4 Video) + + + v4dbltaka + Double Take (BWB) (Release 4, Arcade Data, 20p/25p Stake Key, £5/£10/£15 Prize Key) (MPU4 Video) + + + v4dbltakb + Double Take (BWB) (Release 4, S_Site Data, 20p/25p Stake Key, £5/£10/£15 Prize Key, % Key) (MPU4 Video) + + + v4dealem + Deal 'Em (MPU4 Conversion Kit, v7.0) + + + v4eyedwn + Eyes Down (v1.3) (MPU4 Video) + + + v4eyedwnd + Eyes Down (v1.3, Datapak) (MPU4 Video) + + + v4frfact + Fruit Factory (BWB) (set 1) (MPU4 Video) + + + v4frfacta + Fruit Factory (BWB) (set 2) (MPU4 Video) + + + v4frfactb + Fruit Factory (BWB) (set 3) (MPU4 Video) + + + v4frfactc + Fruit Factory (BWB) (set 4) (MPU4 Video) + + + v4frfactd + Fruit Factory (BWB) (set 5) (MPU4 Video) + + + v4frfacte + Fruit Factory (BWB) (set 6) (MPU4 Video) + + + v4frfactf + Fruit Factory (BWB) (set 7) (MPU4 Video) + + + v4gldrsh + Gold Rush (BWB) (Release 8, 20p Fixed, All - Cash) (set 1) (MPU4 Video) + + + v4gldrsh3 + Gold Rush (BWB) (Release 3, 20p Fixed, Cash+Token) (MPU4 Video) + + + v4gldrsha + Gold Rush (BWB) (Release 8, 20p Fixed, Cash+Token) (set 1) (MPU4 Video) + + + v4gldrshb + Gold Rush (BWB) (Release 8, 20p Fixed, Cash+Token) (Showcase) (set 1) (MPU4 Video) + + + v4gldrshc + Gold Rush (BWB) (Release 8, 20p Fixed, Cash+Token) (Datapak) (set 1) (MPU4 Video) + + + v4gldrshd + Gold Rush (BWB) (Release 8, 20p Fixed, Cash+Token) (Datapak) (set 2) (MPU4 Video) + + + v4gldrshe + Gold Rush (BWB) (Release 8, 20p Fixed, Cash+Token) (Showcase) (Datapak) (set 1) (MPU4 Video) + + + v4gldrshf + Gold Rush (BWB) (Release 8, 20p Fixed, Cash+Token) (set 2) (MPU4 Video) + + + v4gldrshg + Gold Rush (BWB) (Release 8, 20p Fixed, Cash+Token) (Showcase) (set 2) (MPU4 Video) + + + v4gldrshh + Gold Rush (BWB) (Release 8, 20p Fixed, Cash+Token) (MPU4 Video) + + + v4gldrshi + Gold Rush (BWB) (Release 8, 20p Fixed, Cash+Token) (Datapak) (MPU4 Video) + + + v4gldrshj + Gold Rush (BWB) (Release 8, 20p Fixed, Cash+Token) (Showcase) (Datapak) (set 2) (MPU4 Video) + + + v4gldrshk + Gold Rush (BWB) (Release 8, 20p Fixed, All - Cash) (Datapak) (MPU4 Video) + + + v4gldrshl + Gold Rush (BWB) (Release 8, 25p Fixed, All - Cash) (MPU4 Video) + + + v4gldrshm + Gold Rush (BWB) (Release 8, 25p Fixed, All - Cash) (Datapak) (MPU4 Video) + + + v4gldrshn + Gold Rush (BWB) (Release 8, Switchable 20p/25p, All - Cash) (MPU4 Video) + + + v4gldrsho + Gold Rush (BWB) (Release 8, Switchable 20p/25p, All - Cash) (Datapak) (MPU4 Video) + + + v4gldrshp + Gold Rush (BWB) (Release 8, Switchable 20p/10p/5p, Cash+Token) (MPU4 Video) + + + v4gldrshq + Gold Rush (BWB) (Release 8, Switchable 20p/10p/5p, Cash+Token) (Showcase) (MPU4 Video) + + + v4gldrshr + Gold Rush (BWB) (Release 8, Switchable 20p/10p/5p, Cash+Token) (Datapak) (MPU4 Video) + + + v4gldrshs + Gold Rush (BWB) (Release 8, Switchable 20p/10p/5p, Cash+Token) (Showcase) (Datapak) (MPU4 Video) + + + v4gldrsht + Gold Rush (BWB) (Release 8, 20p Fixed, All - Cash) (set 2) (MPU4 Video) + + + v4gldrshu + Gold Rush (BWB) (Release 8, Switchable 20p/10p/5p, All - Cash) (MPU4 Video) + + + v4mate + The Mating Game (v0.4) (MPU4 Video) + + + v4mated + The Mating Game (v0.4, Datapak) (MPU4 Video) + + + v4mazbel + Mazooma Belle (v2.5 DY, S/Site, Cash+Token, Datapak, % Key) (MPU4 Video) + + + v4mazbel15 + Mazooma Belle (v1.5, Arcade, Cash+Token) (set 1) (MPU4 Video) + + + v4mazbel15a + Mazooma Belle (v1.5 DY, Arcade, Cash+Token, % Key) (MPU4 Video) + + + v4mdice + Miami Dice (BWB) (Release 8, S/Site Standard, 25p-£10 Cash - Fixed) (set 1) (MPU4 Video) + + + v4mdice5 + Miami Dice (BWB) (Release 5, Arcade Showcase, 20p-£8 Token - Fixed) (MPU4 Video) + + + v4mdice6 + Miami Dice (BWB) (Release 6, Arcade Standard, 20p-£8 Token - Fixed) (MPU4 Video) + + + v4mdicea + Miami Dice (BWB) (Release 8, Arcade Standard, 5p-£4 Cash - Fixed) (MPU4 Video) + + + v4mdiceb + Miami Dice (BWB) (Release 8, Arcade Standard, 10p-£4 Cash - Fixed) (MPU4 Video) + + + v4mdicec + Miami Dice (BWB) (Release 8, Arcade Standard, 10p-£8 Token - Fixed) (MPU4 Video) + + + v4mdiced + Miami Dice (BWB) (Release 8, Arcade Standard, 20p-£4 Cash - Fixed) (MPU4 Video) + + + v4mdicee + Miami Dice (BWB) (Release 8, S/Site Standard, 20p-£4 Cash - Fixed) (MPU4 Video) + + + v4mdicef + Miami Dice (BWB) (Release 8, Arcade Standard, 20p-£8 Token - Fixed) (set 1) (MPU4 Video) + + + v4mdiceg + Miami Dice (BWB) (Release 8, Arcade Showcase, 20p-£8 Token - Fixed) (set 3) (MPU4 Video) + + + v4mdiceger + Miami Dice (Nova, German) (MPU4 Video) + + + v4mdiceh + Miami Dice (BWB) (Release 8, Arcade Standard, 20p-£8 Token - Fixed) (set 2) (MPU4 Video) + + + v4mdicei + Miami Dice (BWB) (Release 8, S/Site Standard, 20p-£8 Token - Fixed) (set 1) (MPU4 Video) + + + v4mdicej + Miami Dice (BWB) (Release 8, S/Site Standard, 20p-£8 Token - Fixed) (set 2) (MPU4 Video) + + + v4mdicek + Miami Dice (BWB) (Release 8, S/Site Showcase, 20p-£8 Token - Fixed) (set 5) (MPU4 Video) + + + v4mdicel + Miami Dice (BWB) (Release 8, S/Site Standard, 20p-£8 Token - Fixed) (set 3) (MPU4 Video) + + + v4mdicem + Miami Dice (BWB) (Release 8, S/Site Standard, 20p-£8 Token - Fixed) (set 4) (MPU4 Video) + + + v4mdicen + Miami Dice (BWB) (Release 8, Arcade Standard, 20p-£10 Cash - Fixed) (set 1) (MPU4 Video) + + + v4mdiceo + Miami Dice (BWB) (Release 8, Arcade Standard, 20p-£10 Cash - Fixed) (set 2) (MPU4 Video) + + + v4mdicep + Miami Dice (BWB) (Release 8, S/Site Standard, 20p-£10 Cash - Fixed) (set 1) (MPU4 Video) + + + v4mdiceq + Miami Dice (BWB) (Release 8, S/Site Standard, 20p-£10 Cash - Fixed) (set 2) (MPU4 Video) + + + v4mdicer + Miami Dice (BWB) (Release 8, S/Site Standard, 20p-£10 Cash - Fixed) (set 3) (MPU4 Video) + + + v4mdices + Miami Dice (BWB) (Release 8, Arcade Standard, 25p-£10 Cash - Fixed) (set 1) (MPU4 Video) + + + v4mdicet + Miami Dice (BWB) (Release 8, Arcade Standard, 25p-£10 Cash - Fixed) (set 2) (MPU4 Video) + + + v4mdiceu + Miami Dice (BWB) (Release 8, S/Site Standard, 25p-£10 Cash - Fixed) (set 2) (MPU4 Video) + + + v4mdicev + Miami Dice (BWB) (Release 8, S/Site Standard, 25p-£10 Cash - Fixed) (set 3) (MPU4 Video) + + + v4mdicew + Miami Dice (BWB) (Release 8, Arcade Standard, 20p-£8 Cash - Fixed) (MPU4 Video) + + + v4megbuk + Megabucks Poker (BWB) (set 1) (MPU4 Video) + + + v4megbuka + Megabucks Poker (BWB) (set 2) (MPU4 Video) + + + v4megbukb + Megabucks Poker (BWB) (set 3) (MPU4 Video) + + + v4megbukc + Megabucks Poker (BWB) (set 4) (MPU4 Video) + + + v4missis + Mississippi Lady (Nova, German) (MPU4 Video) + + + v4monte + Monte Carlo Or Bust (BWB) (Release D, S/Site Standard, 20p Switchable, £8 All Cash) (MPU4 Video) + + + v4monte5 + Monte Carlo Or Bust (BWB) (Release 5, S/Site Standard, 20p Fixed, £8 All Cash) (MPU4 Video) + + + v4monte5a + Monte Carlo Or Bust (BWB) (Release 5, Arcade Special, 20p Fixed, Cash and Tokens) (MPU4 Video) + + + v4monte5b + Monte Carlo Or Bust (BWB) (Release 5, Arcade Special, 20p Switchable, Cash and Tokens) (MPU4 Video) + + + v4monte9 + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 20p Fixed, £8 All Cash) (MPU4 Video) + + + v4monte9a + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 20p Switchable, £8 All Cash) (MPU4 Video) + + + v4monte9b + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 20p Switchable, Cash and Tokens) (set 2) (MPU4 Video) + + + v4monte9c + Monte Carlo Or Bust (BWB) (Release 9, Arcade Special, Options 4 Cabinet, 20p Switchable, Cash and Tokens) (set 1) (MPU4 Video) + + + v4monte9d + Monte Carlo Or Bust (BWB) (Release 9, Arcade Special, Options 4 Cabinet, 20p Switchable, Cash and Tokens) (set 2) (MPU4 Video) + + + v4monte9e + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 20p Switchable, Cash and Tokens) (set 1) (MPU4 Video) + + + v4monte9f + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 20p Switchable, £10 All Cash) (set 1) (MPU4 Video) + + + v4monte9g + Monte Carlo Or Bust (BWB) (Release 9, Arcade Special, Options 4 Cabinet, 20p Fixed, Cash and Tokens) (set 2) (MPU4 Video) + + + v4monte9h + Monte Carlo Or Bust (BWB) (Release 9, Arcade Special, Options 4 Cabinet, 20p Fixed, Cash and Tokens) (set 1) (MPU4 Video) + + + v4monte9i + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 20p Fixed, Cash and Tokens) (set 2) (MPU4 Video) + + + v4monte9j + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 20p Fixed, £10 All Cash) (set 1) (MPU4 Video) + + + v4monte9k + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 20p Fixed, £10 All Cash) (set 2) (MPU4 Video) + + + v4monte9l + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 25p Fixed, £10 All Cash) (set 1) (MPU4 Video) + + + v4monte9m + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 25p Fixed, £10 All Cash) (set 2) (MPU4 Video) + + + v4monte9n + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 20p Switchable, £10 All Cash) (set 2) (MPU4 Video) + + + v4monte9o + Monte Carlo Or Bust (BWB) (Release 9, S/Site Standard, Options 4 Cabinet, 20p Fixed, Cash and Tokens) (set 1) (MPU4 Video) + + + v4montea + Monte Carlo Or Bust (BWB) (Release D, S/Site Standard, 20p Switchable, £10 All Cash) (MPU4 Video) + + + v4monteaa + Monte Carlo Or Bust (BWB) (Release ?, set 17) (MPU4 Video) + + + v4monteab + Monte Carlo Or Bust (BWB) (Release ?, set 18) (MPU4 Video) + + + v4monteac + Monte Carlo Or Bust (BWB) (Release ?, set 19) (MPU4 Video) + + + v4montead + Monte Carlo Or Bust (BWB) (Release ?, set 20) (MPU4 Video) + + + v4monteae + Monte Carlo Or Bust (BWB) (Release ?, set 21) (MPU4 Video) + + + v4monteaf + Monte Carlo Or Bust (BWB) (Release ?, set 22) (MPU4 Video) + + + v4monteag + Monte Carlo Or Bust (BWB) (Release ?, set 23) (MPU4 Video) + + + v4monteah + Monte Carlo Or Bust (BWB) (Release ?, set 24) (MPU4 Video) + + + v4monteai + Monte Carlo Or Bust (BWB) (Release ?, set 25) (MPU4 Video) + + + v4monteaj + Monte Carlo Or Bust (BWB) (Release ?, set 26) (MPU4 Video) + + + v4monteak + Monte Carlo Or Bust (BWB) (Release ?, set 27) (MPU4 Video) + + + v4monteal + Monte Carlo Or Bust (BWB) (Release ?, set 28) (MPU4 Video) + + + v4monteam + Monte Carlo Or Bust (BWB) (Release ?, set 29) (MPU4 Video) + + + v4montean + Monte Carlo Or Bust (BWB) (Release ?, set 30) (MPU4 Video) + + + v4monteao + Monte Carlo Or Bust (BWB) (Release ?, set 31) (MPU4 Video) + + + v4monteb + Monte Carlo Or Bust (BWB) (Release B, S/Site Standard, 20p Fixed, £8 All Cash) (MPU4 Video) + + + v4monteba + Monte Carlo Or Bust (BWB) (Release B, Arcade Special, 20p Fixed, Cash and Tokens) (MPU4 Video) + + + v4montebb + Monte Carlo Or Bust (BWB) (Release B, Arcade Special, 20p Switchable, Cash and Tokens) (MPU4 Video) + + + v4montec + Monte Carlo Or Bust (BWB) (Release D, Arcade Special, 20p Fixed, Cash and Tokens) (MPU4 Video) + + + v4monted + Monte Carlo Or Bust (BWB) (Release D, S/Site Standard, 20p Fixed, £10 All Cash) (MPU4 Video) + + + v4montee + Monte Carlo Or Bust (BWB) (Release D, S/Site Standard, 20p Switchable, Cash and Tokens) (MPU4 Video) + + + v4monteg + Monte Carlo Or Bust (BWB) (Release D, S/Site Standard, 25p Fixed, £10 All Cash) (MPU4 Video) + + + v4monteger + Monte Carlo Or Bust (BWB) (German) (MPU4 Video) + + + v4montek + Monte Carlo Or Bust (BWB) (Release ?, set 1) (MPU4 Video) + + + v4montel + Monte Carlo Or Bust (BWB) (Release ?, set 2) (MPU4 Video) + + + v4montem + Monte Carlo Or Bust (BWB) (Release ?, set 3) (MPU4 Video) + + + v4monten + Monte Carlo Or Bust (BWB) (Release ?, set 4) (MPU4 Video) + + + v4monteo + Monte Carlo Or Bust (BWB) (Release ?, set 5) (MPU4 Video) + + + v4montep + Monte Carlo Or Bust (BWB) (Release ?, set 6) (MPU4 Video) + + + v4monteq + Monte Carlo Or Bust (BWB) (Release ?, set 7) (MPU4 Video) + + + v4monter + Monte Carlo Or Bust (BWB) (Release ?, set 8) (MPU4 Video) + + + v4montes + Monte Carlo Or Bust (BWB) (Release ?, set 9) (MPU4 Video) + + + v4montet + Monte Carlo Or Bust (BWB) (Release ?, set 10) (MPU4 Video) + + + v4monteu + Monte Carlo Or Bust (BWB) (Release ?, set 11) (MPU4 Video) + + + v4montev + Monte Carlo Or Bust (BWB) (Release ?, set 12) (MPU4 Video) + + + v4montew + Monte Carlo Or Bust (BWB) (Release ?, set 13) (MPU4 Video) + + + v4montex + Monte Carlo Or Bust (BWB) (Release ?, set 14) (MPU4 Video) + + + v4montey + Monte Carlo Or Bust (BWB) (Release ?, set 15) (MPU4 Video) + + + v4montez + Monte Carlo Or Bust (BWB) (Release ?, set 16) (MPU4 Video) + + + v4montezz + Monte Carlo Or Bust (BWB) (Release ?, set 32) (MPU4 Video) + + + v4opt3 + Option 3 (v1.0) (MPU4 Video) + + + v4opt3d + Option 3 (v1.0) (Datapak) (MPU4 Video) + + + v4ovrmn3 + Over Moon Pt3 (BWB) (20p Fixed, Cash+Token) (MPU4 Video) + + + v4ovrmn3a + Over Moon Pt3 (BWB) (20p Fixed, Cash+Token, Datapak, % Key) (MPU4 Video) + + + v4ovrmn3b + Over Moon Pt3 (BWB) (20p Fixed, Cash+Token, Datapak) (MPU4 Video) + + + v4ovrmn3c + Over Moon Pt3 (BWB) (20p Fixed, Cash+Token, % Key) (MPU4 Video) + + + v4ovrmn3d + Over Moon Pt3 (BWB) (20p Fixed, All - Cash) (MPU4 Video) + + + v4picdil + Piccadilly Night (Nova, German) (set 1) (MPU4 Video) + + + v4picdila + Piccadilly Night (Nova, German) (set 2) (MPU4 Video) + + + v4picdilz + Piccadilly Night (Nova, German) (set 3) (MPU4 Video) + + + v4psi + Prize Space Invaders (BWB IN2, £20, 50p/30p Play, 20" Version 1.1) (MPU4 Video) + + + v4psi14 + Prize Space Invaders (BWB IN2, £20, 50p/30p Play, 14" Version 1.1, set 1) (MPU4 Video) + + + v4psi14a + Prize Space Invaders (BWB IN2, £20, 50p/30p Play, 14" Version 1.1, set 2) (MPU4 Video) + + + v4psibc + Prize Space Invaders (BWB INV1, 50p/30p Play, Version 1.2) (MPU4 Video) + + + v4psibcd + Prize Space Invaders (BWB INV1, 50p/30p Play, Version 1.2) (Datapak) (MPU4 Video) + + + v4psid + Prize Space Invaders (BWB IN2, £20, 50p/30p Play, 20" Version 1.1) (Datapak) (MPU4 Video) + + + v4pztet + Prize Tetris (BWB) (MPU4 Video) + + + v4pzteta + Prize Tetris (BWB) (Datapak) (MPU4 Video) + + + v4pztetb + Prize Tetris (BWB) (Showcase) (MPU4 Video) + + + v4pztetc + Prize Tetris (BWB) (Showcase) (Datapak) (MPU4 Video) + + + v4quidgr + Ten Quid Grid (v1.2) (MPU4 Video) + + + v4quidgr2 + Ten Quid Grid (v2.4) (MPU4 Video) + + + v4quidgr2d + Ten Quid Grid (v2.4, Datapak) (MPU4 Video) + + + v4quidgrd + Ten Quid Grid (v1.2, Datapak) (MPU4 Video) + + + v4redhtp + Red Hot Poker (Release 3, 20p Fixed, Cash+Token) (set 1) (MPU4 Video) + + + v4redhtp2 + Red Hot Poker (Release 2, 1993 copyright, 5p Fixed, Cash+Token) (set 1) (MPU4 Video) + + + v4redhtp2a + Red Hot Poker (Release 2, 1993 copryight, 5p Fixed, Cash+Token) (set 2) (MPU4 Video) + + + v4redhtp2b + Red Hot Poker (Release 2, 1993 copryight, 5p Fixed, Cash+Token, Datapak, % Key) (set 1) (MPU4 Video) + + + v4redhtp2c + Red Hot Poker (Release 2, 1993 copryight, 5p Fixed, Cash+Token, Datapak) (set 1) (MPU4 Video) + + + v4redhtp2d + Red Hot Poker (Release 2, 1993 copryight, 5p Fixed, Cash+Token, % Key) (set 1) (MPU4 Video) + + + v4redhtp2e + Red Hot Poker (Release 2, 1993 copryight, 5p Fixed, Cash+Token, Datapak, % Key) (set 2) (MPU4 Video) + + + v4redhtp2f + Red Hot Poker (Release 2, 1993 copryight, 5p Fixed, Cash+Token, Datapak) (set 2) (MPU4 Video) + + + v4redhtp2g + Red Hot Poker (Release 2, 1993 copryight, 5p Fixed, Cash+Token, % Key) (set 2) (MPU4 Video) + + + v4redhtp2z + Red Hot Poker (Release 2, 1992 copyright, 20p Fixed, Cash+Token) (MPU4 Video) + + + v4redhtpa + Red Hot Poker (Release 3, 20p Switchable to 10p, All - Cash) (MPU4 Video) + + + v4redhtpaa + Red Hot Poker (Release 3, 20p Switchable to 10p, Cash+Token, % Key) (set 2) (MPU4 Video) + + + v4redhtpab + Red Hot Poker (Release 3, 10p Fxed, All-Cash) (MPU4 Video) + + + v4redhtparc + Red Hot Poker (Arcade, Cash+Tokens, 1993 Awards, 20p Fixed, Version 1.9) (MPU4 Video) + + + v4redhtpb + Red Hot Poker (Release 3, 10p Fixed, Cash+Token) (set 1) (MPU4 Video) + + + v4redhtpc + Red Hot Poker (Release 3, 10p Fixed, Cash+Token, Datapak) (set 1, % Key) (MPU4 Video) + + + v4redhtpd + Red Hot Poker (Release 3, 10p Fixed, Cash+Token, Datapak) (set 1) (MPU4 Video) + + + v4redhtpe + Red Hot Poker (Release 3, 10p Fixed, Cash+Token, % Key) (set 1) (MPU4 Video) + + + v4redhtpf + Red Hot Poker (Release 3, 10p Fixed, Cash+Token, Datapak) (set 2) (MPU4 Video) + + + v4redhtpg + Red Hot Poker (Release 3, 10p Fixed, Cash+Token) (set 2) (MPU4 Video) + + + v4redhtph + Red Hot Poker (Release 3, 10p Fixed, Cash+Token, Datapak) (set 2, % Key) (MPU4 Video) + + + v4redhtpi + Red Hot Poker (Release 3, 10p Fixed, Cash+Token, Datapak) (set 3) (MPU4 Video) + + + v4redhtpj + Red Hot Poker (Release 3, 10p Fixed, Cash+Token, % Key) (set 2) (MPU4 Video) + + + v4redhtpk + Red Hot Poker (Release 3, 20p Fixed, Cash+Token) (set 2) (MPU4 Video) + + + v4redhtpl + Red Hot Poker (Release 3, 20p Fixed, Cash+Token, Datapak, % Key) (set 1) (MPU4 Video) + + + v4redhtpm + Red Hot Poker (Release 3, 20p Fixed, Cash+Token, Datapak) (set 1) (MPU4 Video) + + + v4redhtpn + Red Hot Poker (Release 3, 20p Fixed, Cash+Token, % Key) (set 1) (MPU4 Video) + + + v4redhtpo + Red Hot Poker (Release 3, 20p Fixed, Cash+Token, Datapak) (set 2) (MPU4 Video) + + + v4redhtpp + Red Hot Poker (Release 3, 20p Fixed, Cash+Token, Datapak, % Key) (set 2) (MPU4 Video) + + + v4redhtpq + Red Hot Poker (Release 3, 20p Fixed, Cash+Token, Datapak) (set 3) (MPU4 Video) + + + v4redhtpr + Red Hot Poker (Release 3, 20p Fixed, Cash+Token, % Key) (set 2) (MPU4 Video) + + + v4redhtps + Red Hot Poker (Release 3, 20p Switchable to 10p, Cash+Token) (set 1) (MPU4 Video) + + + v4redhtpt + Red Hot Poker (Release 3, 20p Switchable to 10p, Cash+Token, Datapak, % Key) (set 1) (MPU4 Video) + + + v4redhtpu + Red Hot Poker (Release 3, 20p Switchable to 10p, Cash+Token, Datapak) (set 1) (MPU4 Video) + + + v4redhtpunk + Red Hot Poker (unknown release) (MPU4 Video) + + + v4redhtpv + Red Hot Poker (Release 3, 20p Switchable to 10p, Cash+Token, % Key) (set 1) (MPU4 Video) + + + v4redhtpw + Red Hot Poker (Release 3, 20p Switchable to 10p, Cash+Token, Datapak) (set 2) (MPU4 Video) + + + v4redhtpx + Red Hot Poker (Release 3, 20p Switchable to 10p, Cash+Token) (set 2) (MPU4 Video) + + + v4redhtpy + Red Hot Poker (Release 3, 20p Switchable to 10p, Cash+Token, Datapak, % Key) (set 2) (MPU4 Video) + + + v4redhtpz + Red Hot Poker (Release 3, 20p Switchable to 10p, Cash+Token, Datapak) (set 3) (MPU4 Video) + + + v4rencas + Reno Casino (BWB) (set 1) (MPU4 Video) + + + v4rencasa + Reno Casino (BWB) (set 2) (MPU4 Video) + + + v4rencasb + Reno Casino (BWB) (set 3) (MPU4 Video) + + + v4rencasc + Reno Casino (BWB) (set 4) (MPU4 Video) + + + v4rencasd + Reno Casino (BWB) (set 5) (MPU4 Video) + + + v4rencase + Reno Casino (BWB) (set 6) (MPU4 Video) + + + v4rencasf + Reno Casino (BWB) (set 7) (MPU4 Video) + + + v4rencasg + Reno Casino (BWB) (set 8) (MPU4 Video) + + + v4rencash + Reno Casino (BWB) (set 9) (MPU4 Video) + + + v4rencasi + Reno Casino (BWB) (set 10) (MPU4 Video) + + + v4reno + Reno Reels (Release A, 20p Fixed, All - Cash) (set 1) (MPU4 Video) + + + v4reno5 + Reno Reels (Release 5) (MPU4 Video) + + + v4reno7 + Reno Reels (Release 7) (MPU4 Video) + + + v4reno8 + Reno Reels (Release 8, 20p Fixed, Cash+Token) (MPU4 Video) + + + v4renoa + Reno Reels (Release A, 20p Fixed, All - Cash) (set 2) (MPU4 Video) + + + v4renob + Reno Reels (Release A, 20p Switchable 20p/10p/5p, All - Cash) (MPU4 Video) + + + v4renoc + Reno Reels (Release A, 20p Fixed, Cash+Token) (Datapak) (set 1) (MPU4 Video) + + + v4renod + Reno Reels (Release A, 20p Fixed, Cash+Token) (Showcase) (set 1) (MPU4 Video) + + + v4renoe + Reno Reels (Release A, 20p Fixed, Cash+Token) (set 1) (MPU4 Video) + + + v4renof + Reno Reels (Release A, 20p Fixed, Cash+Token) (Showcase) (set 1) (Datapak) (MPU4 Video) + + + v4renog + Reno Reels (Release A, 20p Fixed, Cash+Token) (Datapak) (set 2) (MPU4 Video) + + + v4renoh + Reno Reels (Release A, 20p Fixed, Cash+Token) (Showcase) (set 2) (MPU4 Video) + + + v4renoi + Reno Reels (Release A, 20p Fixed, Cash+Token) (set 2) (MPU4 Video) + + + v4renoj + Reno Reels (Release A, 20p Fixed, Cash+Token) (Showcase) (set 2) (Datapak) (MPU4 Video) + + + v4renok + Reno Reels (Release A, 20p Fixed, Cash+Token) (Datapak) (set 3) (MPU4 Video) + + + v4renol + Reno Reels (Release A, 20p Fixed, Cash+Token) (set 3) (MPU4 Video) + + + v4renom + Reno Reels (Release A, 20p Fixed, All - Cash) (Datapak) (MPU4 Video) + + + v4renon + Reno Reels (Release A, 25p Fixed, All - Cash) (Datapak) (MPU4 Video) + + + v4renoo + Reno Reels (Release A, 25p Fixed, All - Cash) (MPU4 Video) + + + v4renop + Reno Reels (Release A, 20p Switchable 20p/25p, All - Cash) (Datapak) (MPU4 Video) + + + v4renoq + Reno Reels (Release A, 20p Switchable 20p/25p, All - Cash) (MPU4 Video) + + + v4renor + Reno Reels (Release A, 20p Switchable 20p/10p/5p, Cash+Token) (Showcase) (set 1) (MPU4 Video) + + + v4renos + Reno Reels (Release A, 20p Switchable 20p/10p/5p, Cash+Token) (set 1) (MPU4 Video) + + + v4renot + Reno Reels (Release A, 20p Switchable 20p/10p/5p, Cash+Token) (Showcase) (set 2) (MPU4 Video) + + + v4renou + Reno Reels (Release A, 20p Switchable 20p/10p/5p, Cash+Token) (set 2) (MPU4 Video) + + + v4rhmaz + Red Hot Mazooma Belle (BWB) (Version 1.4, Cash+Token, 1993 Awards, 10p Fixed) (MPU4 Video) + + + v4rhmaza + Red Hot Mazooma Belle (BWB) (Version 1.4 DY, Cash+Token, 1993 Awards, 10p Fixed, Datapak, % Key) (MPU4 Video) + + + v4rhmazb + Red Hot Mazooma Belle (BWB) (Version 1.4 D, Cash+Token, 1993 Awards, 10p Fixed, Datapak) (MPU4 Video) + + + v4rhmazc + Red Hot Mazooma Belle (BWB) (Version 1.4, Cash+Token, 1993 Awards, 20p Fixed) (MPU4 Video) + + + v4rhmazd + Red Hot Mazooma Belle (BWB) (Version 1.4 DY, Cash+Token, 1993 Awards, 20p Fixed, Datapak, % Key) (set 1) (MPU4 Video) + + + v4rhmaze + Red Hot Mazooma Belle (BWB) (Version 1.4 DY, Cash+Token, 1993 Awards, 20p Fixed, Datapak, % Key) (set 2) (MPU4 Video) + + + v4rhmazf + Red Hot Mazooma Belle (BWB) (Version 1.4 D, Cash+Token, 1993 Awards, 20p Fixed, Datapak) (MPU4 Video) + + + v4rhmazg + Red Hot Mazooma Belle (BWB) (Version 1.4, Cash+Token, 1993 Awards, 20p Switchable to 10p) (MPU4 Video) + + + v4rhmazh + Red Hot Mazooma Belle (BWB) (Version 1.4 DY, Cash+Token, 1993 Awards, 20p Switchable to 10p, Datapak, % Key) (MPU4 Video) + + + v4rhmazi + Red Hot Mazooma Belle (BWB) (Version 1.4 D, Cash+Token, 1993 Awards, 20p Switchable to 10p, Datapak) (MPU4 Video) + + + v4rhmazj + Red Hot Mazooma Belle (BWB) (Version 1.4 Y, Cash+Token, 1993 Awards, 20p Switchable to 10p, % Key) (MPU4 Video) + + + v4rhmazk + Red Hot Mazooma Belle (BWB) (Version 1.4 C, Cash+Token, 1993 Awards, 20p Switchable to 10p) (MPU4 Video) + + + v4shpwnd + Shop Window (v2.0) (Release 2, 20p Fixed, Cash + Special BWB Token) (set 1) (MPU4 Video) + + + v4shpwnda + Shop Window (v2.0) (Release 2, 10p Fixed, Cash + Special BWB Token) (MPU4 Video) + + + v4shpwndb + Shop Window (v2.0) (Release 2, 10p Fixed, Cash + Special BWB Token, Datapak, % Key) (MPU4 Video) + + + v4shpwndc + Shop Window (v2.0) (Release 2, 10p Fixed, Cash + Special BWB Token, Datapak) (MPU4 Video) + + + v4shpwndd + Shop Window (v2.0) (Release 2, 10p Fixed, Cash + Special BWB Token, % Key) (MPU4 Video) + + + v4shpwnde + Shop Window (v2.0) (Release 2, 20p Fixed, Cash + Special BWB Token, Datapak, % Key) (MPU4 Video) + + + v4shpwndf + Shop Window (v2.0) (Release 2, 20p Fixed, Cash + Special BWB Token, Datapak) (set 1) (MPU4 Video) + + + v4shpwndg + Shop Window (v2.0) (Release 2, 20p Fixed, Cash + Special BWB Token, % Key) (MPU4 Video) + + + v4shpwndh + Shop Window (v2.0) (Release 2, 20p Fixed, Cash + Special BWB Token, Datapak) (set 2) (MPU4 Video) + + + v4shpwndi + Shop Window (v2.0) (Release 2, 20p Fixed, Cash + Special BWB Token) (set 2) (MPU4 Video) + + + v4shpwndj + Shop Window (v2.0) (Release 2, 20p Switchable to 10p, Cash + Special BWB Token) (MPU4 Video) + + + v4shpwndk + Shop Window (v2.0) (Release 2, 20p Switchable to 10p, Cash + Special BWB Token, Datapak, % Key) (MPU4 Video) + + + v4shpwndl + Shop Window (v2.0) (Release 2, 20p Switchable to 10p, Cash + Special BWB Token, Datapak) (MPU4 Video) + + + v4shpwndm + Shop Window (v2.0) (Release 2, 20p Switchable to 10p, Cash + Special BWB Token, % Key) (MPU4 Video) + + + v4sixx + £6-X (BWB) (Release 3, 20p Fixed, Cash+Token) (set 1) (MPU4 Video) + + + v4sixxa + £6-X (BWB) (Release 3, 20p Fixed, Cash+Token) (set 2) (MPU4 Video) + + + v4sixxb + £6-X (BWB) (Release 3, 20p Fixed, Cash+Token, Datapak) (set 1) (MPU4 Video) + + + v4sixxc + £6-X (BWB) (Release 3, 20p Fixed, Cash+Token, % Key) (MPU4 Video) + + + v4sixxd + £6-X (BWB) (Release 3, 20p Fixed, Cash+Token, Datapak) (set 2) (MPU4 Video) + + + v4sixxe + £6-X (BWB) (Release 3, 20p Fixed, Cash+Token) (set 3) (MPU4 Video) + + + v4sixxf + £6-X (BWB) (Release 3, 20p Fixed, Cash+Token, Datapak, % Key) (MPU4 Video) + + + v4sixxg + £6-X (BWB) (Release 3, 20p Switchable to 10p, Cash+Token) (MPU4 Video) + + + v4sixxh + £6-X (BWB) (Release 3, 20p Switchable to 10p, Cash+Token, Datapak, % Key) (MPU4 Video) + + + v4sixxi + £6-X (BWB) (Release 3, 20p Switchable to 10p, Cash+Token, Datapak) (MPU4 Video) + + + v4sixxj + £6-X (BWB) (Release 3, 20p Switchable to 10p, Cash+Token, % Key) (MPU4 Video) + + + v4sixxk + £6-X (BWB) (Release 3, 20p Fixed, All - Cash) (MPU4 Video) + + + v4sixxl + £6-X (BWB) (Release 3, 20p Switchable to 10p, All - Cash) (MPU4 Video) + + + v4sixxm + £6-X (BWB) (Release 3, 20p Switchable to 10p, All - Cash, Datapak) (MPU4 Video) + + + v4sklcsh + Skill Cash (v1.1) (MPU4 Video) + + + v4skltrk + Skill Trek (v1.1) (MPU4 Video, set 1) + + + v4skltrka + Skill Trek (v1.1) (MPU4 Video, set 2) + + + v4strike + Strike it Lucky (v0.5) (MPU4 Video) + + + v4strike2 + Strike it Lucky (v0.53) (MPU4 Video) + + + v4strike2d + Strike it Lucky (v0.53, Datapak) (MPU4 Video) + + + v4striked + Strike it Lucky (v0.5, Datapak) (MPU4 Video) + + + v4sunbst + Sunburst (BWB) (Version 1.4, Cash+Token, 1993 Awards, 10p Fixed) (MPU4 Video) + + + v4sunbsta + Sunburst (BWB) (Version 1.4 DY, Cash+Token, 1993 Awards, 10p Fixed, % Key) (MPU4 Video) + + + v4sunbstb + Sunburst (BWB) (Version 1.4 D, Cash + Token, 1993 Awards, 10p Fixed) (MPU4 Video) + + + v4sunbstc + Sunburst (BWB) (Version 1.4 Y, Cash+Token, 1993 Awards, 10p Fixed) (MPU4 Video) + + + v4sunbstd + Sunburst (BWB) (Version 1.4, Cash+Token, 1993 Awards, 20p Fixed) (set 1) (MPU4 Video) + + + v4sunbste + Sunburst (BWB) (Version 1.4 DY, Cash+Token, 1993 Awards, 20p Fixed, % Key) (set 1) (MPU4 Video) + + + v4sunbstf + Sunburst (BWB) (Version 1.4 DY, Cash+Token, 1993 Awards, 20p Fixed, % Key) (set 2) (MPU4 Video) + + + v4sunbstg + Sunburst (BWB) (Version 1.4 D, Cash+Token, 1993 Awards, 20p Fixed) (set 1) (MPU4 Video) + + + v4sunbsth + Sunburst (BWB) (Version 1.4 D, Cash+Token, 1993 Awards, 20p Fixed) (set 2) (MPU4 Video) + + + v4sunbsti + Sunburst (BWB) (Version 1.4 Y, Cash+Token, 1993 Awards, 20p Fixed, % Key) (MPU4 Video) + + + v4sunbstj + Sunburst (BWB) (Version 1.4 D, Cash+Token, 1993 Awards, 20p Fixed) (MPU4 Video) + + + v4sunbstk + Sunburst (BWB) (Version 1.4, Cash+Token, 1993 Awards, 20p Fixed) (set 2) (MPU4 Video) + + + v4sunbstl + Sunburst (BWB) (Version 1.4, Cash+Token, 1993 Awards, 20p Switchable to 10p) (set 1) (MPU4 Video) + + + v4sunbstm + Sunburst (BWB) (Version 1.4, Cash+Token, 1993 Awards, 20p Switchable to 10p) (set 2) (MPU4 Video) + + + v4sunbstn + Sunburst (BWB) (Version 1.4 DY, Cash+Token, 1993 Awards, 20p Switchable to 10p, % Key) (MPU4 Video) + + + v4sunbsto + Sunburst (BWB) (Version 1.4 D, Cash+Token, 1993 Awards, 20p Switchable to 10p (MPU4 Video) + + + v4sunbstp + Sunburst (BWB) (Version 1.4 D, Cash+Token, 1993 Awards, 20p Switchable to 10p) (MPU4 Video) + + + v4sunbstq + Sunburst (BWB) (Version 1.4 Y, Cash+Token, 1993 Awards, 20p Switchable to 10p, % Key) (MPU4 Video) + + + v4sunbstr + Sunburst (BWB) (Version 1.4 C, 1993 Awards, 10p Fixed) (MPU4 Video) + + + v4sunbsts + Sunburst (BWB) (Version 1.4 C, 1993 Awards, 20p Fixed) (MPU4 Video) + + + v4sunbstt + Sunburst (BWB) (Version 1.4 C, 1993 Awards, 20p Switchable to 10p) (MPU4 Video) + + + v4sunbstu + Sunburst (BWB) (Version 1.4 IC, 1993 Awards, 20p Switchable to 10p) (MPU4 Video) + + + v4tetrs + Tetris Payout (BWB TET1 Version 2.2, set 1) (MPU4 Video) + + + v4tetrs1 + Tetris Payout (BWB TET1 Version 2.2, set 2) (MPU4 Video) + + + v4timebn + Time Bandit (BWB) (Release 1, 20p Fixed, Cash + Tokens) (set 1) (MPU4 Video) + + + v4timebna + Time Bandit (BWB) (Release 1, 20p Fixed, Cash + Tokens) (set 2) (MPU4 Video) + + + v4timebnb + Time Bandit (BWB) (Release 1, 20p Fixed, Cash + Tokens) (Datapak) (set 1) (MPU4 Video) + + + v4timebnc + Time Bandit (BWB) (Release 1, 20p Fixed, Cash + Tokens) (set 3) (MPU4 Video) + + + v4timebnd + Time Bandit (BWB) (Release 1, 20p Fixed, Cash + Tokens) (Datapak) (set 2) (MPU4 Video) + + + v4timebne + Time Bandit (BWB) (Release 1, 20p Fixed, Cash + Tokens) (Datapak) (set 3) (MPU4 Video) + + + v4tmach + Time Machine (v2.0) (Issue 3 Questions) (MPU4 Video) + + + v4tmach1 + Time Machine (v2.0) (Issue 1 Questions) (MPU4 Video) + + + v4tmach1d + Time Machine (v2.0) (Issue 1 Questions) (Datapak) (MPU4 Video) + + + v4tmach2 + Time Machine (v2.0) (Issue 2 Questions) (MPU4 Video) + + + v4tmach2d + Time Machine (v2.0) (Issue 2 Questions) (Datapak) (MPU4 Video) + + + v4tmachd + Time Machine (v2.0) (Issue 3 Questions) (Datapak) (MPU4 Video) + + + v4turnov + Turnover (v2.3) (MPU4 Video) + + + v4turnova + Turnover (v2.33) (MPU4 Video) + + + v4turnovc + Turnover (v2.3O) (MPU4 Video) + + + v4turnovd + Turnover (v?.?) (MPU4 Video) + + + v4vgpok + Vegas Poker (prototype, release 2) (MPU4 Video) + + + v4wize + Wize Move (v1.3) (MPU4 Video) + + + v4wizeb + Wize Move (v1.33) (MPU4 Video) + + + v4wizec + Wize Move (v1.3d3) (Datapak) (MPU4 Video) + + + v4wized + Wize Move (v1.3d) (Datapak) (MPU4 Video) + + + v4wizen + Wize Move (v?.?) (MPU4 Video) + + + v4wizeo + Wize Move (v1.2) (MPU4 Video) + + + valkyrie + Valkyrie no Densetsu (Japan) + + + valtric + Valtric + + + vamphalf + Vamf x1/2 (Europe, version 1.1.0908) + + + vamphalfk + Vamp x1/2 (Korea, version 1.1.0908) + + + vamphalfr1 + Vamf x1/2 (Europe, version 1.0.0903) + + + vampire + Vampire (prototype?) + + + vampj + Vampire: The Night Warriors (Japan 940705) + + + vampja + Vampire: The Night Warriors (Japan 940705 alt) + + + vampjr1 + Vampire: The Night Warriors (Japan 940630) + + + vandyjal + Vandyke (Jaleco, Set 1) + + + vandyke + Vandyke (Japan) + + + vandykeb + Vandyke (bootleg with PIC16c57) + + + vandykejal + Vandyke (Jaleco, set 1) + + + vandykejal2 + Vandyke (Jaleco, set 2) + + + vangrd2 + Vanguard II + + + vangrdce + Vanguard (Centuri) + + + vanguard + Vanguard (SNK) + + + vanguardc + Vanguard (Centuri) + + + vanguardg + Vanguard (Germany) + + + vanguardj + Vanguard (Japan) + + + vanilla + Mahjong Vanilla Syndrome (Japan) + + + vanvan + Van-Van Car + + + vanvanb + Van-Van Car (Karateco, set 2) + + + vanvank + Van-Van Car (Karateco, set 1) + + + vaportra + Vapor Trail - Hyper Offence Formation (World revision 1) + + + vaportra3 + Vapor Trail - Hyper Offence Formation (World revision 3?) + + + vaportrau + Vapor Trail - Hyper Offence Formation (US) + + + vaportru + Vapor Trail - Hyper Offence Formation (US) + + + vaportrx + Vapor TRX (GUTS Jul 2 1998 / MAIN Jul 18 1998) + + + vaportrxp + Vapor TRX (GUTS Apr 10 1998 / MAIN Apr 10 1998) + + + varth + Varth: Operation Thunderstorm (World 920714) + + + varthb + Varth: Operation Thunderstorm (bootleg, set 1) + + + varthb2 + Varth: Operation Thunderstorm (bootleg, set 2) + + + varthb3 + Varth: Operation Thunderstorm (bootleg, set 3) + + + varthj + Varth: Operation Thunderstorm (Japan 920714) + + + varthjr + Varth: Operation Thunderstorm (Japan Resale Ver. 920714) + + + varthr1 + Varth: Operation Thunderstorm (World 920612) + + + varthu + Varth: Operation Thunderstorm (USA 920612) + + + vasara + Vasara + + + vasara2 + Vasara 2 (set 1) + + + vasara2a + Vasara 2 (set 2) + + + vastar + Vastar (set 1) + + + vastar2 + Vastar (set 2) + + + vastar3 + Vastar (set 3) + + + vastar4 + Vastar (set 4) + + + vathlete + Virtua Athletics / Virtua Athlete (GDS-0019) + + + vathletep + Virtua Athletics / Virtua Athlete (prototype) + + + vautour + Vautour (bootleg of Phoenix) (8085A CPU) + + + vautourz + Vautour (bootleg of Phoenix) (Z80 CPU) + + + vautourza + Vautour (bootleg of Phoenix) (Z80 CPU, single PROM) + + + vball + U.S. Championship V'ball (US) + + + vball2pj + U.S. Championship V'ball (Japan) + + + vball2pjb + U.S. Championship V'ball (bootleg of Japan set) + + + vballb + U.S. Championship V'ball (bootleg of US set) + + + vblokbrk + VS Block Breaker (Europe) + + + vblokbrka + VS Block Breaker (Asia) + + + vbowl + Virtua Bowling (World, V101XCM) + + + vbowlhk + Virtua Bowling (Hong Kong, V101HJS) + + + vbowlj + Virtua Bowling (Japan, V100JCM) + + + vbrakout + Vector Breakout [h] + + + vcarn + Video Carnival 1999 / Super Royal Card (Version 0.11) + + + vcircle + Vicious Circle (prototype) + + + vcombat + Virtual Combat + + + vcop + Virtua Cop (Revision B) + + + vcop2 + Virtua Cop 2 + + + vcop3 + Virtua Cop 3 (Rev B) (GDX-0003B) + + + vcop3a + Virtua Cop 3 (Rev A) (GDX-0003A) + + + vcopa + Virtua Cop (Revision A) + + + vector + Vector + + + vega + Vega + + + vegas + Vegas + + + vegasfst + Royal Vegas Joker Card (fast deal) + + + vegasfte + Royal Vegas Joker Card (fast deal, English gfx) + + + vegasgp + Vegas (Game Plan) + + + vegasmil + Royal Vegas Joker Card (fast deal, Mile) + + + vegasslw + Royal Vegas Joker Card (slow deal) + + + vegast + Vegas (Taito) + + + vendet2p + Vendetta (World 2 Players ver. W) + + + vendetao + Vendetta (World 4 Players ver. R) + + + vendetas + Vendetta (Asia 2 Players ver. U) + + + vendetta + Vendetta (World, 4 Players, ver. T) + + + vendetta2pd + Vendetta (Asia, 2 Players, ver. D) + + + vendetta2peba + Vendetta (World, 2 Players, ver. EB-A?) + + + vendetta2pp + Crime Fighters 2 (Japan, 2 Players, ver. P) + + + vendetta2pu + Vendetta (Asia, 2 Players, ver. U) + + + vendetta2pun + Vendetta (World, 2 Players, ver. ?) + + + vendetta2pw + Vendetta (World, 2 Players, ver. W) + + + vendettan + Crime Fighters 2 (Japan, 4 Players, ver. N) + + + vendettar + Vendetta (US, 4 Players, ver. R) + + + vendettaun + Vendetta (World, 4 Players, ver. ?) + + + vendettaz + Vendetta (Asia, 4 Players, ver. Z) + + + vendettj + Crime Fighters 2 (Japan 2 Players ver. P) + + + vendtaso + Vendetta (Asia 2 Players ver. D) + + + venetian + Venetian Nights (1J008911, NSW/ACT) + + + venice + Venice (0151355, US) + + + venicea5 + Venice (02J02056, Venezuela) + + + venom + Venom & Spider-Man - Separation Anxiety (SNES bootleg) + + + venteta + Venteta + + + venture + Venture (version 5 set 1) + + + venture2 + Venture (version 5 set 2) + + + venture4 + Venture (version 4) + + + venture5a + Venture (version 5 set 2) + + + venture5b + Venture (version 5 set 2, bootleg) + + + venus + Venus (bootleg of Gyruss) + + + verbena + Verbena (bootleg of Carnival) + + + version4 + Version 4 (Version 4.3R CGA) + + + version4d2 + Version 4 (Version 4.3E CGA) + + + version4d3 + Version 4 (Version 4.3LT CGA) + + + version4o + Version 4 (Version 4.2R CGA) + + + version4v + Version 4 (Version 4.3R Dual) + + + version4v2 + Version 4 (Version 4.3E Dual) + + + version4v3 + Version 4 (Version 4.3LT Dual) + + + vf + Virtua Fighter + + + vf2 + Virtua Fighter 2 (Version 2.1) + + + vf2a + Virtua Fighter 2 (Revision A) + + + vf2b + Virtua Fighter 2 (Revision B) + + + vf2o + Virtua Fighter 2 + + + vf3 + Virtua Fighter 3 (Japan, Revision D) + + + vf3a + Virtua Fighter 3 (Japan, Revision A) + + + vf3c + Virtua Fighter 3 (Japan, Revision C) + + + vf3tb + Virtua Fighter 3 Team Battle (Japan) + + + vf4 + Virtua Fighter 4 Version C (GDS-0012C) + + + vf4b + Virtua Fighter 4 (Rev B) (GDS-0012B) + + + vf4cart + Virtua Fighter 4 (World) + + + vf4evo + Virtua Fighter 4: Evolution (Version B) (Japan) (GDS-0024C) + + + vf4evoa + Virtua Fighter 4: Evolution (Japan) (GDS-0024A) + + + vf4evob + Virtua Fighter 4: Evolution (Version B) (Japan) (GDS-0024B) + + + vf4evoct + Virtua Fighter 4: Evolution (World) + + + vf4o + Virtua Fighter 4 (GDS-0012) + + + vf4tuned + Virtua Fighter 4: Final Tuned (Ver. B) (GDS-0036F) + + + vf4tuneda + Virtua Fighter 4: Final Tuned (Rev A) (GDS-0036A) + + + vf4tunedd + Virtua Fighter 4: Final Tuned (Ver. A) (GDS-0036D) + + + vf5 + Virtua Fighter 5 (Export) + + + vfive + V-Five (Japan) + + + vfkids + Virtua Fighter Kids (JUET 960319 V0.000) + + + vformula + Virtua Formula + + + vfremix + Virtua Fighter Remix (JUETBKAL 950428 V1.000) + + + vfurlong + Net@Select: Horse Racing - Victory Furlong + + + vgoalsca + V Goal Soccer (alt) + + + vgoalsoc + V Goal Soccer (Europe) + + + vgoalsoca + V Goal Soccer (US/Japan/Korea) + + + vhunt2 + Vampire Hunter 2: Darkstalkers Revenge (Japan 970929) + + + vhunt2d + Vampire Hunter 2: Darkstalkers Revenge (Japan 970913 Phoenix Edition) (bootleg) + + + vhunt2r1 + Vampire Hunter 2: Darkstalkers Revenge (Japan 970913) + + + vhuntj + Vampire Hunter: Darkstalkers' Revenge (Japan 950316) + + + vhuntjr1 + Vampire Hunter: Darkstalkers' Revenge (Japan 950307) + + + vhuntjr1s + Vampire Hunter: Darkstalkers' Revenge (Japan 950307 stop version) + + + vhuntjr2 + Vampire Hunter: Darkstalkers' Revenge (Japan 950302) + + + vicshoot + Victory Shoot + + + victlap + Ace Driver: Victory Lap (World, ADV2 Ver.B) + + + victlapa + Ace Driver: Victory Lap (World, ADV2) + + + victlapj + Ace Driver: Victory Lap (Japan, ADV1 Ver.C) + + + victlapw + Ace Driver - Victory Lap (Rev. ADV2, World) + + + victnine + Victorious Nine + + + victor21 + Victor 21 + + + victor5 + Victor 5 + + + victor5a + G.E.A. + + + victor6 + Victor 6 (v2.3N) + + + victor6a + Victor 6 (v2.3) + + + victor6b + Victor 6 (v1.2) + + + victorba + Victor Banana + + + victory + Victory + + + victoryc + Victory (Comsoft) + + + victorycb + Victory (Comsoft) (bootleg) + + + victoryp + Victory (Pinball) + + + victorypf + Victory (Pinball, French) + + + victorypg + Victory (Pinball, German) + + + victroad + Victory Road + + + videight + Video Eight + + + video21 + Video 21 + + + videocba + Video Cordoba + + + videodad + Video Dado + + + videomat + Videomat (Polish bootleg) + + + videopin + Video Pinball (16 PROMs version) + + + videopina + Video Pinball (4 ROMs version) + + + videopkr + Video Poker + + + videtrna + Videotron Poker (normal controls) + + + videtron + Videotron Poker (cards selector, set 1) + + + videtron2 + Videotron Poker (cards selector, set 2) + + + vidvince + Video Vince and the Game Factory (prototype) + + + viewpoin + Viewpoint + + + viewpoinp + Viewpoint (prototype) + + + vigilant + Vigilante (World, Rev E) + + + vigilanta + Vigilante (World, Rev A) + + + vigilantb + Vigilante (US, Rev B) + + + vigilantbl + Vigilante (bootleg) + + + vigilantc + Vigilante (World, Rev C) + + + vigilantd + Vigilante (Japan, Rev D) + + + vigilantg + Vigilante (US, Rev G) + + + vigilanto + Vigilante (US) + + + vigilntj + Vigilante (Japan) + + + vigilntu + Vigilante (US) + + + viking + Viking + + + vikingt + Viking Treasure + + + vikngkng + Viking King + + + vimana + Vimana (World, rev A) + + + vimana1 + Vimana (old set) + + + vimanaj + Vimana (Japan) + + + vimanan + Vimana (World) + + + vindc2r1 + Vindicators Part II (rev 1) + + + vindc2r2 + Vindicators Part II (rev 2) + + + vindctr2 + Vindicators Part II (rev 3) + + + vindctr2r1 + Vindicators Part II (rev 1) + + + vindctr2r2 + Vindicators Part II (rev 2) + + + vindice3 + Vindicators (Europe, rev 3) + + + vindice4 + Vindicators (Europe, rev 4) + + + vindict1 + Vindicators (rev 1) + + + vindict2 + Vindicators (rev 2) + + + vindict4 + Vindicators (rev 4) + + + vindicte + Vindicators (Europe, rev 5) + + + vindictg + Vindicators (German, rev 1) + + + vindictr + Vindicators (rev 5) + + + vindictr1 + Vindicators (rev 1) + + + vindictr2 + Vindicators (rev 2) + + + vindictr4 + Vindicators (rev 4) + + + vindictre + Vindicators (Europe, rev 5) + + + vindictre3 + Vindicators (Europe, rev 3) + + + vindictre4 + Vindicators (Europe, rev 4) + + + vindictrg + Vindicators (German, rev 1) + + + viofight + Violence Fight (World) + + + viofightj + Violence Fight (Japan) + + + viofightu + Violence Fight (US) + + + viostorm + Violent Storm (ver EAC) + + + viostorma + Violent Storm (ver AAC) + + + viostormab + Violent Storm (ver AAB) + + + viostormabbl + Violent Storm (ver AAB, bootleg) + + + viostormeb + Violent Storm (ver EAB) + + + viostormj + Violent Storm (ver JAC) + + + viostormu + Violent Storm (ver UAC) + + + viostormub + Violent Storm (ver UAB) + + + viostormubbl + Violent Storm (ver UAB, bootleg) + + + viostrma + Violent Storm (Asia ver AAC) + + + viostrmj + Violent Storm (Japan ver JAC) + + + viostrmu + Violent Storm (US ver UAB) + + + vip2000 + unknown 'VIP 2000' game (set 1) + + + vip2000a + unknown 'VIP 2000' game (set 2) + + + vip2000b + unknown 'VIP 2000' game (set 3) + + + vipclub + Vip Club - Maru-hi Ippatsu Kaihou (Japan 880310) + + + viper + Viper (rev 3) + + + viperp + Viper (Pinball) + + + viprp1 + Viper Phase 1 (New Version, World) + + + viprp1h + Viper Phase 1 (New Version, Holland) + + + viprp1hk + Viper Phase 1 (Hong Kong) + + + viprp1j + Viper Phase 1 (New Version, Japan) + + + viprp1k + Viper Phase 1 (New Version, Korea) + + + viprp1oj + Viper Phase 1 (Japan) + + + viprp1ot + Viper Phase 1 (Germany) + + + viprp1pt + Viper Phase 1 (New Version, Portugal) + + + viprp1s + Viper Phase 1 (New Version, Switzerland) + + + viprp1t + Viper Phase 1 (New Version, Germany) + + + viprp1u + Viper Phase 1 (New Version, US set 1) + + + viprp1ua + Viper Phase 1 (New Version, US set 2) + + + viprsega + Viper Night Drivin' (CPU 2.01, display A2.01) + + + viprsega_102 + Viper Night Drivin' (CPU 1.02, display A1.00) + + + virnba + Virtua NBA (USA) + + + virnbao + Virtua NBA + + + virnbap + Virtua NBA (prototype) + + + virnbapa + Virtua NBA (prototype, 15.11) + + + virtpool + Virtual Pool + + + vitaminc + Mahjong Vitamin C (Japan) + + + vivdolls + Vivid Dolls + + + vjdash + VJ Dash (ver 1.0) + + + vjdasha + VJ Dash (Ver 1.2) + + + vjslap + VJ: Visual & Music Slap + + + vlcno_1a + Volcano (Sound Only set 3) + + + vlcno_1b + Volcano (Sound Only set 2) + + + vlcno_1c + Volcano (Sound Only set 1) + + + vlcno_ax + Volcano + + + vlcunk + unknown VLC multigame + + + vliner + V-Liner (v0.7a) + + + vliner53 + V-Liner (v0.53) + + + vliner54 + V-Liner (v0.54) + + + vliner6e + V-Liner (v0.6e) + + + vliner7e + V-Liner (v0.7e) + + + vmahjong + Virtual Mahjong (J 961214 V1.000) + + + vmetal + Varia Metal + + + vmetaln + Varia Metal (New Ways Trading Co.) + + + vnight + Vampire Night (VPN3 Ver. B) + + + voleybal + Volley + + + volfied + Volfied (World, rev 1) + + + volfiedj + Volfied (Japan, rev 1) + + + volfiedjo + Volfied (Japan) + + + volfiedo + Volfied (World) + + + volfiedu + Volfied (US, rev 1) + + + volfieduo + Volfied (US) + + + vollyrmt + Volly (Ramtek) + + + voltan + Voltan Escapes Cosmic Doom + + + von + Cyber Troopers Virtual-On - Twin (Export) + + + von2 + Virtual On 2: Oratorio Tangram (Japan, Revision B) + + + von254g + Virtual On 2: Oratorio Tangram (Japan, ver 5.4g) + + + von2a + Virtual On 2: Oratorio Tangram (Japan, Revision A) + + + von2o + Virtual On 2: Oratorio Tangram (Japan) + + + vonj + Cyber Troopers Virtual-On - Twin (Japan, Revision B) + + + vonot + Virtual On Oratorio Tangram M.S.B.S. ver5.66 2000 Edition + + + vonr + Cyber Troopers Virtual-On - Relay (Japan) + + + vonu + Cyber Troopers Virtual-On - Twin (USA, Revision B) + + + vortex + Vortex + + + vortexp + Vortex (Pinball) + + + voyager + Star Trek: Voyager + + + voyagers + Star Trek: Voyager (stand-up version 1.002) + + + vpoker + Videotronics Draw Poker + + + vpool + Video Pool (bootleg on Moon Cresta hardware) + + + vr + Virtua Racing + + + vrkon_l1 + Varkon (L-1) + + + vrnwrld + Verne's World + + + vroulet + Vegas Roulette + + + vs10yard + Vs 10-Yard Fight (World, 11/05/84) + + + vs10yardj + Vs 10-Yard Fight (Japan) + + + vs10yardu + Vs 10-Yard Fight (US, Taito license) + + + vs2 + Virtua Striker 2 (Step 2.0, Export, USA) + + + vs2002ex + Virtua Striker 2002 (Export) (GDT-0002) + + + vs2002j + Virtua Striker 2002 (Japan) (GDT-0001) + + + vs2002t3 + Virtua Striker 2002 (Type 3) (GDT-0012) + + + vs215 + Virtua Striker 2 (Step 1.5, Export, USA) + + + vs215o + Virtua Striker 2 (Step 1.5, Japan, test/debug?) + + + vs298 + Virtua Striker 2 '98 (Step 2.0, Japan) + + + vs29815 + Virtua Striker 2 '98 (Step 1.5, Japan) + + + vs299 + Virtua Striker 2 '99 (Export, USA) + + + vs29915 + Virtua Striker 2 '99.1 (Step 1.5, Export, USA, Revision B) + + + vs29915a + Virtua Striker 2 '99 (Step 1.5, Export, USA) + + + vs29915j + Virtua Striker 2 '99.1 (Step 1.5, Japan, Revision B) + + + vs299a + Virtua Striker 2 '99 (Export, USA, Revision A) + + + vs299j + Virtua Striker 2 '99.1 (Japan, Revision B) + + + vs2_2k + Virtua Striker 2 Ver. 2000 (Rev C) + + + vs2_2ko + Virtua Striker 2 Ver. 2000 + + + vs2v991 + Virtua Striker 2 '99.1 (Export, USA, Revision B) + + + vs4 + Virtua Striker 4 (Export, Rev A) (GDT-0015A) + + + vs42006 + Virtua Striker 4 Ver.2006 (Japan, Rev D) (GDT-0020D) + + + vs42006b + Virtua Striker 4 Ver.2006 (Japan, Rev B) (GDT-0020B) + + + vs42k6ex + Virtua Striker 4 Ver.2006 (Export) (GDT-0021) + + + vs4e + Virtua Striker 4 (Asia, Rev B) (GDT-0014B) + + + vs4eo + Virtua Striker 4 (Asia) (GDT-0014) + + + vs4j + Virtua Striker 4 (Japan, Rev E) (GDT-0013E) + + + vs4jc + Virtua Striker 4 (Japan, Rev C) (GDT-0013C) + + + vs4o + Virtua Striker 4 (Export) (GDT-0015) + + + vsav + Vampire Savior: The Lord of Vampire (Europe 970519) + + + vsav2 + Vampire Savior 2: The Lord of Vampire (Japan 970913) + + + vsav2d + Vampire Savior 2: The Lord of Vampire (Japan 970913 Phoenix Edition) (bootleg) + + + vsava + Vampire Savior: The Lord of Vampire (Asia 970519) + + + vsavb + Vampire Savior: The Lord of Vampire (Brazil 970519) + + + vsavd + Vampire Savior: The Lord of Vampire (Europe 970519 Phoenix Edition) (bootleg) + + + vsavh + Vampire Savior: The Lord of Vampire (Hispanic 970519) + + + vsavj + Vampire Savior: The Lord of Vampire (Japan 970519) + + + vsavu + Vampire Savior: The Lord of Vampire (USA 970519) + + + vsbattlecity + VS. Battle City + + + vsbbalja + Vs. BaseBall (Japan set 2) + + + vsbbaljb + Vs. BaseBall (Japan set 3) + + + vsbball + Vs. Baseball (US, set BA E-1) + + + vsbballj + Vs. Baseball (Japan, set BA A-3) + + + vsbballja + Vs. Baseball (Japan, set BA A-2) + + + vsbballjb + Vs. Baseball (Japan, set BA A-1) + + + vscaptfl + Vs. Super Captain Flag (Japan) + + + vscastlevania + VS. Castlevania + + + vsclucluland + VS. Clu Clu Land + + + vscompmj + VS Computer Mahjong + + + vsdrmario + VS. Dr. Mario + + + vsduckhunt + VS. Duck Hunt + + + vsexcitebike + VS. Excitebike + + + vsfdf + Vs. Freedom Force + + + vsfreedomforce + VS. Freedom Force + + + vsfrombelow + VS. From Below (HB, v0.10) + + + vsgongf + VS Gong Fight + + + vsgoonies + VS. Goonies, The + + + vsgradius + VS. Gradius + + + vsgradus + Vs. Gradius (US, set GR E) + + + vsgshoe + Vs. Gumshoe (set GM5) + + + vsgumshoe + VS. Gumshoe + + + vshogansalley + VS. Hogan's Alley + + + vshoot + J-League Soccer V-Shoot (Japan) + + + vsiceclimber + VS. Ice Climber + + + vsmachrider + VS. Mach Rider + + + vsmahjng + Vs. Mahjong (Japan) + + + vsmightybomjack + VS. Mighty Bomb Jack + + + vsmjtria + VS Mahjong Triangle + + + vsnetscr + Versus Net Soccer (ver EAD) + + + vsnetscra + Versus Net Soccer (ver AAA) + + + vsnetscreb + Versus Net Soccer (ver EAB) + + + vsnetscrj + Versus Net Soccer (ver JAB) + + + vsnetscru + Versus Net Soccer (ver UAB) + + + vsninjajkun + VS. Ninja Jajamaru-kun + + + vspinbal + Vs. Pinball (US, set PN4 E-1) + + + vspinbalj + Vs. Pinball (Japan, set PN3 B) + + + vspinball + VS. Pinball + + + vspinblj + Vs. Pinball (Japan) + + + vsplatoon + VS. Platoon + + + vsraidbbay + VS. Raid on Bungling Bay + + + vsrbibbal + VS. Atari RBI Baseball + + + vsskykid + Vs. Super SkyKid + + + vsslalom + Vs. Slalom + + + vssmb + VS. Super Mario Bros + + + vssmgolf + VS. Stroke & Match Golf + + + vssmgolfla + VS. Stroke & Match Golf Ladies + + + vssoccer + Vs. Soccer (set SC4-2 A) + + + vssoccera + Vs. Soccer (set SC4-3 ?) + + + vsstarluster + VS. Star Luster + + + vssuperskykid + VS. Super Sky Kid + + + vssuperxevious + VS. Super Xevious - Gump no Nazo + + + vstennis + Vs. Tennis (Japan/USA, set TE A-3) + + + vstennisa + Vs. Tennis (Japan/USA, set 2) + + + vstennisb + Vs. Tennis (Japan/USA, set 3) + + + vstetris + Vs. Tetris + + + vstkoboxing + VS. TKO Boxing + + + vstopgun + VS. Top Gun + + + vstrik3 + Virtua Striker 3 (GDS-0006) + + + vstrik3c + Virtua Striker 3 (World, Rev B) + + + vstrik3co + Virtua Striker 3 (World) + + + vstriker + Virtua Striker (Revision A) + + + vstrikero + Virtua Striker + + + vsyard + 10 Yard Fight (Vs. version World, 11-05-84) + + + vsyard2 + 10 Yard Fight (Vs. version Japan, set 2) + + + vtenis2c + Virtua Tennis 2 / Power Smash 2 (Rev A) + + + vtennis + Virtua Tennis / Power Smash + + + vtennis2 + Virtua Tennis 2 / Power Smash 2 (Rev A) (GDS-0015A) + + + vtennis3 + Virtua Tennis 3 (Japan) + + + vtennisg + Virtua Tennis / Power Smash (GDS-0011) + + + vueloesp + Vuelo Espacial (Spanish bootleg of UniWar S) + + + vulcan + Vulcan Venture (new) + + + vulcana + Vulcan Venture (old) + + + vulcanb + Vulcan Venture (older) + + + vulgus + Vulgus (set 1) + + + vulgus2 + Vulgus (set 2) + + + vulgusa + Vulgus (set 2) + + + vulgusj + Vulgus (Japan?) + + + wackadoo + Wack-A-Doodle-Doo (redemption, CPU 1.00, display A1.01) + + + wacko + Wacko + + + wackygtr + Wacky Gator (US) + + + wafrica + Wild Africa (AHG1535, US) + + + waidrive + WaiWai Drive + + + waijockey + Wai Wai Jockey + + + wakuw7jq + Waku Waku 7 (Enhanced, Hack) + + + wakuwak7 + Waku Waku 7 + + + wakuwak7bh + Waku Waku 7 (Boss Hack) + + + walkyria + Walkyria + + + wallc + Wall Crash (set 1) + + + wallca + Wall Crash (set 2) + + + wallst + Wall Street + + + wamazon + Wild Amazon (0200507V, NSW/ACT) + + + wamazona + Wild Amazon (0200285V, NSW/ACT) + + + wamazonv + Wild Amazon (01J01996, Venezuela) + + + wanganmd + Wangan Midnight (WMN1 Ver. A) + + + wanganmr + Wangan Midnight R (WMR1 Ver. A) + + + wangmid + Wangan Midnight Maximum Tune (Export, Rev B) (GDX-0009B) + + + wangmid2 + Wangan Midnight Maximum Tune 2 (Export, Rev A) (GDX-0016A) + + + wangmid2j + Wangan Midnight Maximum Tune 2 (Japan) (GDX-0015) + + + wangmid2ja + Wangan Midnight Maximum Tune 2 (Japan, Rev A) (GDX-0015A) + + + wangmid2o + Wangan Midnight Maximum Tune 2 (Export) (GDX-0016) + + + wangmidj + Wangan Midnight Maximum Tune (Japan, Rev B) (GDX-0008B) + + + wanpakup + Wanpaku Pirates (Japan, ver 1.00) + + + wanpunch + Wanikko Punch (Japan, ver 1.20) + + + wanted + Wanted + + + wantouch + Wantouchable + + + wantsega + Wanted (Sega) + + + war3cb + War III Cherry Best + + + warahana + Warai no Hana Tenshi (Japan) + + + warcadia + Waga Seishun no Arcadia + + + wardner + Wardner (World) + + + wardnerb + Wardner (World, bootleg) + + + wardnerj + Wardner no Mori (Japan) + + + wardnerjb + Wardner no Mori (Japan, bootleg) + + + warfa + War: Final Assault (EPROM 1.9 Mar 25 1999, GUTS 1.3 Apr 20 1999, GAME Apr 20 1999) + + + warfaa + War: Final Assault (EPROM 1.6 Jan 14 1999, GUTS 1.1 Mar 16 1999, GAME Mar 16 1999) + + + warfab + War: Final Assault (EPROM 1.3 Apr 7 1999, GUTS 1.3 Apr 7 1999, GAME Apr 7 1999) + + + warfac + War: Final Assault (EPROM 1.91 Apr 13 1999, GUTS 1.3 Apr 7 1999, GAME Apr 7 1999) + + + wargods + War Gods (HD 10/09/1996 - Dual Resolution) + + + wargodsa + War Gods (HD 08/15/1996) + + + wargodsb + War Gods (HD 12/11/1995) + + + warlords + Warlords + + + warofbug + War of the Bugs or Monsterous Manouvers in a Mushroom Maze + + + warofbugg + War of the Bugs or Monsterous Manouvers in a Mushroom Maze (German) + + + warofbugu + War of the Bugs or Monsterous Manouvers in a Mushroom Maze (US) + + + warp1 + Warp-1 (Japan) + + + warp1bl + Warp-1 (Japan, bootleg) + + + warp1t + Warp-1 (Japan, Taito license) + + + warpsped + Warp Speed (prototype) + + + warpwar2 + Warp Warp (Rock-ola set 2) + + + warpwarp + Warp & Warp + + + warpwarpr + Warp Warp (Rock-Ola set 1) + + + warpwarpr2 + Warp Warp (Rock-Ola set 2) + + + warpwarr + Warp Warp (Rock-ola set 1) + + + warrior + Warrior + + + warriorb + Warrior Blade - Rastan Saga Episode III (Japan) + + + warzard + Warzard (Japan 961121) + + + warzardr1 + Warzard (Japan 961023) + + + wasafari + Wanpaku Safari (J 981109 V1.000) + + + waterski + Water Ski + + + waterwld + Waterworld (rev.3) + + + waterwld2 + Waterworld (rev.2) + + + watrball + Water Balls + + + waverunr + Wave Runner (Japan, Revision A) + + + waveshrk + Wave Shark (UAB, USA v1.04) + + + wavybug + Wavy Bug + + + wb3 + Wonder Boy III - Monster Lair (set 6, World, System 16B) (8751 317-0098) + + + wb31 + Wonder Boy III - Monster Lair (set 1, Japan, System 16A) (FD1094 317-0084) + + + wb31d + Wonder Boy III - Monster Lair (set 1, Japan, System 16A) (bootleg of FD1094 317-0084 set) + + + wb32 + Wonder Boy III - Monster Lair (set 2, Japan, System 16B) (FD1094 317-0085) + + + wb32d + Wonder Boy III - Monster Lair (set 2, Japan, System 16B) (bootleg of FD1094 317-0085 set) + + + wb33 + Wonder Boy III - Monster Lair (set 3, World, System 16B) (FD1094 317-0089) + + + wb33d + Wonder Boy III - Monster Lair (set 3, World, System 16B) (bootleg of FD1094 317-0089 set) + + + wb34 + Wonder Boy III - Monster Lair (set 4, Japan, System 16B) (FD1094 317-0087) + + + wb34d + Wonder Boy III - Monster Lair (set 4, Japan, System 16B) (bootleg of FD1094 317-0087 set) + + + wb35 + Wonder Boy III - Monster Lair (set 5, Japan, System 16A) (FD1089A 317-0086) + + + wb35d + Wonder Boy III - Monster Lair (set 5, Japan, System 16A) (bootleg of FD1089A 317-0086 set) + + + wb3a + Wonder Boy III - Monster Lair (set 2) + + + wb3bbl + Wonder Boy III - Monster Lair (bootleg) + + + wb3bble + Wonder Boy III - Monster Lair (encrypted bootleg) + + + wb3bl + Wonder Boy III - Monster Lair (bootleg) + + + wbbc97 + Beach Festival World Championship 1997 + + + wbdeluxe + Wonder Boy Deluxe + + + wbeachvl + World Beach Volley (set 1, PIC16C57 audio CPU) + + + wbeachvl2 + World Beach Volley (set 2) + + + wbeachvl3 + World Beach Volley (set 3) + + + wbeachvla + World Beach Volley (set 1, S87C751 audio CPU) + + + wbingo06 + Win Bingo 2006 + + + wbml + Wonder Boy: Monster Land (Japan New Ver., MC-8123, 317-0043) + + + wbmlb + Wonder Boy: Monster Land (English bootleg set 1) + + + wbmlb2 + Wonder Boy: Monster Land (English bootleg set 4) + + + wbmlbg + Wonder Boy: Monster Land (English bootleg set 2) + + + wbmlbge + Wonder Boy: Monster Land (English bootleg set 3) + + + wbmld + Wonder Boy: Monster Land (decrypted bootleg of Japan New Ver., MC-8123, 317-0043) + + + wbmlh + Wonder Boy: Monster Land (English, difficulty hack) + + + wbmljb + Wonder Boy: Monster Land (Japan bootleg) + + + wbmljo + Wonder Boy: Monster Land (Japan Old Ver., MC-8123, 317-0043) + + + wbmljod + Wonder Boy: Monster Land (decrypted bootleg of Japan Old Ver., MC-8123, 317-0043) + + + wbmlvc + Wonder Boy: Monster Land (English, Virtual Console) + + + wbmlvcd + Wonder Boy: Monster Land (decrypted bootleg of English, Virtual Console release) + + + wboy + Wonder Boy (set 1, 315-5177) + + + wboy2 + Wonder Boy (set 2, 315-5178) + + + wboy2u + Wonder Boy (set 2, not encrypted) + + + wboy3 + Wonder Boy (set 3, 315-5135) + + + wboy4 + Wonder Boy (315-5162, 4-D Warriors Conversion) + + + wboy5 + Wonder Boy (set 5, bootleg) + + + wboy6 + Wonder Boy (set 6, 315-5179) + + + wboyblt + Wonder Boy (Tecfri bootleg) + + + wboyo + Wonder Boy (set 2, 315-5135) + + + wboysys2 + Wonder Boy (system 2, set 1, 315-5177) + + + wboysys2a + Wonder Boy (system 2, set 2, 315-5176) + + + wboyu + Wonder Boy (prototype?) + + + wboyub + Wonder Boy (US bootleg) + + + wc90 + Tecmo World Cup '90 (set 1) + + + wc90a + Tecmo World Cup '90 (set 2) + + + wc90b + Euro League + + + wc90t + Tecmo World Cup '90 (trackball) + + + wcat + Wild Cat + + + wcat3 + Wild Cat 3 + + + wcat3a + Wild Cat 3 (CMV4 hardware) + + + wcatcher + Mahjong Wakuwaku Catcher (Japan) + + + wcbowl + World Class Bowling (v1.66) + + + wcbowl10 + World Class Bowling (v1.0) + + + wcbowl11 + World Class Bowling (v1.1) + + + wcbowl12 + World Class Bowling (v1.2) + + + wcbowl13 + World Class Bowling (v1.3) + + + wcbowl130 + World Class Bowling Tournament (v1.30) + + + wcbowl13j + World Class Bowling (v1.3J, Japan) + + + wcbowl14 + World Class Bowling (v1.4) + + + wcbowl140 + World Class Bowling Tournament (v1.40) + + + wcbowl15 + World Class Bowling (v1.5) + + + wcbowl16 + World Class Bowling (v1.6) + + + wcbowl161 + World Class Bowling (v1.61) + + + wcbowl165 + World Class Bowling (v1.65) + + + wcbowldx + World Class Bowling Deluxe (v2.00) + + + wcbwl12 + World Class Bowling (v1.2) + + + wcbwl161 + World Class Bowling (v1.61) + + + wcbwl165 + World Class Bowling (v1.65) + + + wccf116 + World Club Champion Football Serie A 2001-2002 Ver.2 (Japan) (CDP-10001C) + + + wccf1dup + World Club Champion Football Serie A 2001-2002 DIMM FIRM Ver.3.03 (CDP-10003) + + + wccf212e + World Club Champion Football Serie A 2002-2003 Ver.2.12 (Italy) (CDV-10002) + + + wccf234j + World Club Champion Football Serie A 2002-2003 Ver.2.34 (Japan) (CDV-10008) + + + wccf2chk + World Club Champion Football Serie A 2002-2003 Drive Checker (CDV-10007) + + + wccf310j + World Club Champion Football European Clubs 2004-2005 (Asia) (CDV-10013) + + + wccf322e + World Club Champion Football European Clubs 2004-2005 Ver.3.22 (Export) (CDV-10015P) + + + wccf331e + World Club Champion Football European Clubs 2004-2005 Ver.1.1 (Export) (CDV-10015) + + + wccf331j + World Club Champion Football European Clubs 2004-2005 Ver.1.1 (Japan) (CDV-10020) + + + wccf341j + World Club Champion Football European Clubs 2004-2005 Ver.1.2 (Japan) (CDV-10021) + + + wccf400j + World Club Champion Football European Clubs 2005-2006 (Japan) (CDV-10025) + + + wccf420e + World Club Champion Football European Clubs 2005-2006 (Export) (CDV-10027) + + + wcherry + Win Cherry (ver 0.16 - 19990219) + + + wcircus + Wonder Circus (Japan, v1.1.1) + + + wcombat + World Combat (ver AAD:B) + + + wcombatj + World Combat (ver JAA) + + + wcombatk + World Combat (ver KBC:B) + + + wcombatu + World Combat / Warzaid (ver UCD:B) + + + wcougar + Wild Cougar (0100167V, NSW/ACT) + + + wcougaru + Wild Cougar (AHG1531, US) + + + wcougarua + Wild Cougar (NHG0296-07, US) + + + wcougarub + Wild Cougar (NHG0296-04, US) + + + wcougaruc + Wild Cougar (NHG0296-99, US) + + + wcougarud + Wild Cougar (NHG0632-07, US) + + + wcougpp + Wild Cougar - Power Pay (30214211, ASP) + + + wcoyote + Wild Coyote (AHG1515, US) + + + wcs_l1 + World Cup Soccer (Lx-1) + + + wcs_l2 + World Cup Soccer (Lx-2) + + + wcs_la2 + World Cup Soccer (La-2) + + + wcs_p2 + World Cup Soccer (Pa-2) + + + wcs_p3 + World Cup Soccer (Px-3) + + + wcsoccer + World Challenge Soccer (rev.1, set 1) + + + wcsoccer1a + World Challenge Soccer (rev.1, set 2) + + + wcup + World Cup (Ver 1.5) + + + wcup14 + World Cup (Ver 1.4) + + + wcup90 + World Cup 90 + + + wcvol95 + World Cup Volley '95 (Asia v1.0) + + + wcvol95j + World Cup Volley '95 (Japan v1.0) + + + wcvol95x + World Cup Volley '95 Extra Version (Asia v2.0B) + + + wd_03r + Who Dunnit (0.3 R) + + + wd_048r + Who Dunnit (0.48 R) + + + wd_10f + Who Dunnit (1.0 French) + + + wd_10g + Who Dunnit (1.0 Germany) + + + wd_10r + Who Dunnit (1.0 R) + + + wd_11 + Who Dunnit (1.1) + + + wd_12 + Who Dunnit (1.2) + + + wd_12g + Who Dunnit (1.2 Germany) + + + wdun + Who Dunnit (Russian) + + + wecleman + WEC Le Mans 24 (v2.01) + + + weclemana + WEC Le Mans 24 (v2.00) + + + weclemanb + WEC Le Mans 24 (v2.00, hack) + + + weclemanc + WEC Le Mans 24 (v1.26) + + + weddingr + Wedding Rhapsody (GX624 JAA) + + + welltris + Welltris (World?, 2 players) + + + welltrisj + Welltris (Japan, 2 players) + + + werewild + Werewolf Wild (10288711, NSW/ACT) + + + werewildq + Werewolf Wild (20290711, Queensland) + + + westdrm + Western Dream + + + westdrmg + Western Dream Gold + + + westgun2 + Western Gun Part II + + + weststry + West Story (bootleg of Blood Bros., set 1) + + + weststrya + West Story (bootleg of Blood Bros., set 2) + + + westvent + Western Venture (Ver. AA.02.D) + + + wexpresb + Western Express (bootleg set 1) + + + wexpresc + Western Express (bootleg set 2) + + + wexpress + Western Express (Japan, rev 4) + + + wexpressb1 + Western Express (bootleg set 1) + + + wexpressb2 + Western Express (bootleg set 2) + + + wexpressb3 + Western Express (bootleg set 3) + + + wfishing + Wanpaku Fishing + + + wfortuna + Wheel Of Fortune (alternate) + + + wfortune + Wheel Of Fortune (set 1) + + + wfortunea + Wheel Of Fortune (set 2) + + + wg3dh + Wayne Gretzky's 3D Hockey (ver 1.3) + + + wg3dhfe + Wayne Gretzky's 3D Hockey Fatality Edition (prototype) + + + wgorilla + Wild Gorilla - Power Pay (20279811, NSW/ACT) + + + wgp + World Grand Prix (World) + + + wgp2 + World Grand Prix 2 (Japan) + + + wgpj + World Grand Prix (Japan) + + + wgpjoy + World Grand Prix (joystick version) (Japan, set 1) + + + wgpjoya + World Grand Prix (joystick version) (Japan, set 2) + + + wgpu + World Grand Prix (US) + + + wh1 + World Heroes (ALM-005) + + + wh1h + World Heroes (ALH-005) + + + wh1ha + World Heroes (set 3) + + + wh2 + World Heroes 2 (ALM-006 ~ ALH-006) + + + wh2es + World Heroes 2 (Easy Special Attacks, Hack) + + + wh2h + World Heroes 2 (ALH-006) + + + wh2j + World Heroes 2 Jet (ADM-007 ~ ADH-007) + + + wh2ja + World Heroes 2 Jet (ADM-007) + + + wh2jes + World Heroes 2 Jet (Easy Special Attacks, Hack) + + + whalecsh + Whales of Cash (20155711, ASP) + + + whalecshu + Whales of Cash (0451311, US) + + + whalecshua + Whales of Cash (0451346, US) + + + wheelfir + Wheels & Fire + + + wheelrun + Wheels Runner + + + wheelsii + Wheels II + + + wheregld + Where's The Gold (10124811, NSW/ACT) + + + whereglda + Where's The Gold (20177111, ASP) + + + wheregldb + Where's The Gold (10177111, ASP) + + + wheregldq + Where's The Gold (20184811, Queensland) + + + wheregldsp + Where's The Gold (10124811, NSW/ACT, Show Program) + + + whirl_l2 + Whirlwind (LU-2) + + + whirl_l3 + Whirlwind (LA-3) + + + whirl_lg1 + Whirlwind (LG-1) + + + whirl_lg2 + Whirlwind (LG-2) + + + whirl_lg3 + Whirlwind (LG-3) + + + whiterus + White Russia (Konami Endeavour, Russia) + + + whizquiz + Whiz Quiz + + + whizz + Whizz + + + whodunit + Who Dunit (version 9.0) + + + whodunit8 + Who Dunit (version 8.0) + + + whoopee + Pipi & Bibis / Whoopee!! (Teki Paki hardware) + + + whp + World Heroes Perfect + + + whpjq + World Heroes Perfect (Enhanced, Hack) + + + whtforce + White Force + + + whtwater + White Water (0151075, US) + + + wiggie + Wiggie Waggie + + + wikwin + Wicked Winnings (0100553V, NSW/ACT) + + + wikwin2 + Wicked Winnings II - Power Pay (10214011, NSW/ACT) + + + wildbill + Wild Bill (0100297V, NSW/ACT) + + + wildfang + Wild Fang / Tecmo Knight (World?) + + + wildfangh + Wild Fang (1991 year hack) + + + wildfangs + Wild Fang (Japan) + + + wildfyre + Wildfyre + + + wildone + Wild One (4VXEC5357, New Zealand) + + + wildpkr + Wild Poker (ver. D 1.01) + + + wildplt + Wild Pilot + + + willow + Willow (World) + + + willowbr + Willow (hack, Portuguese-BR Translation, v1.06) + + + willowj + Willow (Japan) + + + willowje + Willow (Japan, English) + + + willowu + Willow (USA) + + + willowuo + Willow (USA Old Ver.) + + + wilytowr + Wily Tower + + + winbid + Winning Bid (English) + + + winbidr + Winning Bid (Russian) + + + winbingo + Win Win Bingo (Ver. GM.03.3, Feb 23 2006) + + + winbingoa + Win Win Bingo (Ver. GM.05.1, May 11 2006) + + + windheat + Winding Heat (EAA, Euro v2.11) + + + windheata + Winding Heat (AAA, Asia v2.11) + + + windheatj + Winding Heat (JAA, Japan v2.11) + + + windheatu + Winding Heat (UBC, USA v2.22) + + + windjamr + Windjammer (021216) + + + wingforc + Wing Force (Japan, prototype) + + + wingoly + Wings over Olympus (10176511, ASP) + + + wingolyu + Wings over Olympus (0252529, US) + + + wingwar + Wing War (World) + + + wingwar360 + Wing War R360 (US) + + + wingwarj + Wing War (Japan) + + + wingwaru + Wing War (US) + + + wink + Wink (set 1) + + + winka + Wink (set 2) + + + winner + Winner + + + winner81 + Winners Circle (81, 28*28 PCB) + + + winner81b + Winners Circle (81, 18*22 PCB) + + + winner82 + Winners Circle (82) + + + winrun + Winning Run (World) (89/06/06, Ver.09) + + + winrun91 + Winning Run '91 (Japan) (1991/03/05, Main Ver 1.0, Sub Ver 1.0) + + + winrungp + Winning Run Suzuka Grand Prix (Japan) (89/12/03, Ver.02) + + + winspike + Winning Spike (ver EAA) + + + winspikea + Winning Spike (ver AAA) + + + winspikej + Winning Spike (ver JAA) + + + wintbob + The Winter Bobble (bootleg of Snow Bros.) + + + winterht + Winter Heat (JUET 971012 V1.000) + + + wipeormt + Wipeout (Ramtek) + + + wipeout + Wipeout (rev.2, set 1) + + + wipeout2a + Wipeout (rev.2, set 2) + + + wiping + Wiping + + + wiseguy + Wise Guy + + + witch + Witch + + + witchb + Witch (with ranking) + + + witchcrd + Witch Card (Video Klein CPU box, set 1) + + + witchcrda + Witch Card (Spanish, witch game, set 1) + + + witchcrdb + Witch Card (Spanish, witch game, set 2) + + + witchcrdc + Witch Card (English, no witch game) + + + witchcrdd + Witch Card (German, WC3050, set 1 ) + + + witchcrde + Witch Card (Video Klein CPU box, set 2) + + + witchcrdf + Witch Card (English, witch game, lamps) + + + witchcrdg + Witch Card (Falcon, enhanced sound) + + + witchcrdh + Witch Card (German, WC3050, set 2 ) + + + witchcrdi + Witch Card (German, WC3050, 27-4-94) + + + witchcrdj + Witch Card (ICP-1, encrypted) + + + witchgme + Witch Game (Video Klein, set 1) + + + witchgmea + Witch Game (Video Klein, set 2) + + + witchjol + Jolli Witch (Export, 6T/12T ver 1.57D) + + + witchryl + Witch Royal (Export version 2.1) + + + witchs + Witch (Sega license) + + + witchstar + Witch Star + + + wits + Wit's (Japan) + + + wivernwg + Wivern Wings + + + wiz + Wiz + + + wizard + Wizard (Ver 1.0) + + + wizdfire + Wizard Fire (Over Sea v2.1) + + + wizdfireu + Wizard Fire (US v1.1) + + + wizt + Wiz (Taito, set 1) + + + wizta + Wiz (Taito, set 2) + + + wizwarz + Wiz Warz (prototype) + + + wizways + Wizard Ways (0200396V, NSW/ACT) + + + wizzquiz + Wizz Quiz (Konami version) + + + wizzquiza + Wizz Quiz (version 4) + + + wjammers + Windjammers / Flying Power Disc + + + wlcc + Wanli Changcheng (China, V638C) + + + wldafr + Wild Africa - Millioniser (0351083, US) + + + wldangel + Wild Angels (0100337V, NSW/ACT) + + + wldangelu + Wild Angels (QHG0477-04, US) + + + wldarrow + Wild Arrow (color, Standard V4.8) + + + wldcata6 + Wild Cats (10237511, NSW/ACT) + + + wldcata6a + Wild Cats (20258111, ASP) + + + wldcourt + Pro Tennis World Court (Japan) + + + wldcp_l1 + World Cup (L-1) + + + wldfruit + Wild Fruit (V208US) + + + wldgoos + Wild Goose (20131911, NSW/ACT) + + + wldgoosa + Wild Goose (10155911, ASP) + + + wldgunsb + Wild Guns (SNES bootleg) + + + wldkicks + World Kicks (World, WK2 Ver.A) + + + wldkicksj + World Kicks (Japan, WK1 Ver.A) + + + wldkickspj + World Kicks PCB (Japan, WKC1 Ver.A) + + + wldkickspw + World Kicks PCB (World, WKC2 Ver.A) + + + wldkicksu + World Kicks (US, WK3 Ver.A) + + + wldpanda + Wild Panda (20218411, NSW/ACT) + + + wldpandaa + Wild Panda (20225011, ASP) + + + wldpanth + Wild Panthers - Lil' Lucy (0651310, US) + + + wldrider + Wild Riders + + + wldstall + Wild Stallion (10230811, NSW/ACT) + + + wldstrek + Wild Streak (Russian) + + + wldtexas + Wild Texas + + + wldwitch + Wild Witch (Export, 6T/12T ver 1.84A) + + + wldwitcha + Wild Witch (Export, 6T/12T ver 1.57-SP) + + + wldwitchb + Wild Witch (Export, 6T/12T ver 1.57-TE) + + + wldwitchc + Wild Witch (Export, 6T/12T ver 1.62A) + + + wldwitchd + Wild Witch (Export, 6T/12T ver 1.62B) + + + wldwitche + Wild Witch (Export, 6T/12T ver 1.62A-F) + + + wldwitchf + Wild Witch (Export, 6T/12T ver 1.62A alt) + + + wldwitchg + Wild Witch (Export, 6T/12T ver 1.62B alt) + + + wldwitchh + Wild Witch (Export, 6T/12T ver 1.65A) + + + wldwitchi + Wild Witch (Export, 6T/12T ver 1.65A-S) + + + wldwitchj + Wild Witch (Export, 6T/12T ver 1.65A-S alt) + + + wldwitchk + Wild Witch (Export, 6T/12T ver 1.65A-N) + + + wldwitchl + Wild Witch (Export, 6T/12T ver 1.70A beta) + + + wldwitchm + Wild Witch (Export, 6T/12T ver 1.70A) + + + wldwitchn + Wild Witch (Export, 6T/12T ver 1.70A alt) + + + wldwitcho + Wild Witch (Export, 6T/12T ver 1.74A-SP-BELG) + + + wldwitchp + Wild Witch (Export, 6T/12T ver 1.74A) + + + wldwitchq + Wild Witch (Export, 6T/12T ver 1.74A alt) + + + wldwitchr + Wild Witch (Export, 6B/12B ver 1.75A-E English) + + + wldwitchs + Wild Witch (Export, 6T/12T ver 1.76A) + + + wldwitcht + Wild Witch (Export, 6T/12T ver 1.77A) + + + wldwitchu + Wild Witch (Export, 6T/12T ver 1.79A) + + + wldwitchv + Wild Witch (Export, 6T/12T ver 1.83A) + + + wlstar + Wonder League Star - Sok-Magicball Fighting (Korea) + + + wmatch + Water Match (315-5064) + + + wmg + Williams Multigame + + + wms + WMS SetUp/Clear Chips (set 1) + + + wmsa + WMS SetUp/Clear Chips (set 2) + + + wmsb + WMS SetUp/Clear Chips (set 3) + + + wmsboom + Boom (Russian) + + + wmstopb + Top Banana (Russian) + + + wndrmomo + Wonder Momo + + + wndrplnt + Wonder Planet (Japan) + + + wnpost + Winning Post (RHG0418-04, US) + + + wof + Warriors of Fate (World 921031) + + + wof1v3 + Tenchi wo Kurau II: Sekiheki no Tatakai (1v3, Hack) + + + wof1v3p + Tenchi wo Kurau II: Sekiheki no Tatakai (1v3 Plus, Hack) + + + wof3js + Sangokushi II: San Jian Sheng (Chinese bootleg, set 1) + + + wof3jsa + Sangokushi II: San Jian Sheng (Chinese bootleg, set 2) + + + wof3sj + Sangokushi II: San Sheng Jian (Chinese bootleg, set 1) + + + wof3sja + Sangokushi II: San Sheng Jian (Chinese bootleg, set 2) + + + wof_100a + Wheel of Fortune v1.0 + + + wof_200a + Wheel of Fortune v2.0 + + + wof_200f + Wheel of Fortune v2.0 (French) + + + wof_200g + Wheel of Fortune v2.0 (German) + + + wof_200i + Wheel of Fortune v2.0 (Italian) + + + wof_300a + Wheel of Fortune v3.0 + + + wof_300f + Wheel of Fortune v3.0 (French) + + + wof_300g + Wheel of Fortune v3.0 (German) + + + wof_300i + Wheel of Fortune v3.0 (Italian) + + + wof_300l + Wheel of Fortune v3.0 (Spanish) + + + wof_400a + Wheel of Fortune v4.0 + + + wof_400f + Wheel of Fortune v4.0 (French) + + + wof_400g + Wheel of Fortune v4.0 (German) + + + wof_400i + Wheel of Fortune v4.0 (Italian) + + + wof_400l + Wheel of Fortune v4.0 (Spanish) + + + wof_500a + Wheel of Fortune v5.0 + + + wof_500f + Wheel of Fortune v5.0 (French) + + + wof_500g + Wheel of Fortune v5.0 (German) + + + wof_500i + Wheel of Fortune v5.0 (Italian) + + + wof_500l + Wheel of Fortune v5.0 (Spanish) + + + wof_v11 + Wheel of Fortune (P517 V11, English) + + + wof_v16 + Wheel of Fortune (P517 V16, English) + + + wofa + Sangokushi II (Asia 921005) + + + wofabl + Sangokushi II (bootleg) + + + wofabla + Sangokushi II (bootleg, set 2) + + + wofah + Sangokushi II (Asia 921005, hack, set 1) + + + wofaha + Sangokushi II (Asia 921005, hack, set 2) + + + wofahb + Sangokushi II (Asia 921005, hack, set 3) + + + wofc + Sangokushi II (hack, Chinese Translation) + + + wofch + Tenchi wo Kurau II: Sekiheki no Tatakai (CPS Changer, Japan 921031) + + + wofchdx + Sangokushi III Gaiden: Kakou-On's Revenge DX (hack) + + + wofchp + Tenchi wo Kurau II: Sekiheki no Tatakai (PS/SS Version, Hack) + + + wofdr + Tenchi wo Kurau II: Sekiheki no Tatakai (Master, Hack) + + + wofdr20 + Tenchi wo Kurau II: Sekiheki no Tatakai (Master 2020, Hack) + + + wofh + Sangokushi II: Sanguo Yingxiong Zhuan (Chinese bootleg, set 1) + + + wofha + Sangokushi II: Sanguo Yingxiong Zhuan (Chinese bootleg, set 2) + + + wofhfh + Huo Feng Huang (Chinese bootleg of Sangokushi II) + + + wofigt + Wheel of Fortune (IGT) + + + wofj + Tenchi wo Kurau II: Sekiheki no Tatakai (Japan 921031) + + + wofjh + Tenchi wo Kurau II: Sekiheki no Tatakai (hack, Japan 921031) + + + wofkm3 + Tenchi wo Kurau II: Sekiheki no Tatakai (Subject 3, Hack) + + + wofmws + Tenchi wo Kurau II: Sekiheki no Tatakai (3M Warriors, Hack) + + + wofmz1v3 + Tenchi wo Kurau II: Sekiheki no Tatakai (Cavalry 1v3, Hack) + + + wofpic + Warriors of Fate (bootleg with PIC16C57) + + + wofr1 + Warriors of Fate (World 921002) + + + wofr1bl + Warriors of Fate (bootleg) + + + wofsc + Tenchi wo Kurau II: Sekiheki no Tatakai (Switchable Character, Hack) + + + wofsgzb + Sanguo Zhengba (Chinese bootleg of Sangokushi II) + + + wofsj + Sangokushi II: Sheng Jian Sanguo (Chinese bootleg, set 1) + + + wofsja + Sangokushi II: Sheng Jian Sanguo (Chinese bootleg, set 2) + + + wofsjb + Sangokushi II: Sheng Jian Sanguo (Chinese bootleg, set 3) + + + wofsm + Tenchi wo Kurau II: Sekiheki no Tatakai (3M, Hack) + + + wofu + Warriors of Fate (USA 921031) + + + wofwjq + Tenchi wo Kurau II: Sekiheki no Tatakai (Warriors Enhanced, Hack) + + + wofwp + Tenchi wo Kurau II: Sekiheki no Tatakai (Warriors Plus, Hack) + + + wofzl + Tenchi wo Kurau II: Sekiheki no Tatakai (Wolf Warriors, Hack) + + + wolffang + Wolf Fang -Kuhga 2001- (Japan) + + + wolfman + Wolf Man + + + wolfpack + Wolf Pack (prototype) + + + wonder3 + Wonder 3 (Japan 910520) + + + wondl96 + Wonder League '96 (Korea) + + + wondstck + Wonder Stick (set 1) + + + wondstcka + Wonder Stick (set 2, censored) + + + wontame + Won! Tertainment Happy Channel (Ver.1.00E 2008/02/21) + + + wontmuch + Won!Tertainment Music Channel (v1.00) + + + woodpeca + Woodpecker (set 2) + + + woodpeck + Woodpecker (set 1) + + + worldadv + World Adventure + + + worldc94 + World Cup '94 + + + worlddef + World Defender + + + worldwar + World Wars (World?) + + + wotw + War of the Worlds + + + wotwc + War of the Worlds (color) + + + wow + Wizard of Wor + + + wowg + Wizard of Wor (with German language ROM) + + + wownfant + WOW New Fantasia (Explicit) + + + wownfanta + WOW New Fantasia + + + wpksoc + World PK Soccer + + + wpksocv2 + World PK Soccer V2 (ver 1.1) + + + wpt_103a + World Poker Tour v1.03 + + + wpt_105a + World Poker Tour v1.05 + + + wpt_106a + World Poker Tour v1.06 + + + wpt_106f + World Poker Tour v1.06 (French) + + + wpt_106g + World Poker Tour v1.06 (German) + + + wpt_106i + World Poker Tour v1.06 (Italian) + + + wpt_106l + World Poker Tour v1.06 (Spanish) + + + wpt_108a + World Poker Tour v1.08 + + + wpt_108f + World Poker Tour v1.08 (French) + + + wpt_108g + World Poker Tour v1.08 (German) + + + wpt_108i + World Poker Tour v1.08 (Italian) + + + wpt_108l + World Poker Tour v1.08 (Spanish) + + + wpt_109a + World Poker Tour v1.09 + + + wpt_109f + World Poker Tour v1.09 (French) + + + wpt_109f2 + World Poker Tour v1.09 (French)(alt) + + + wpt_109g + World Poker Tour v1.09 (German) + + + wpt_109i + World Poker Tour v1.09 (Italian) + + + wpt_109l + World Poker Tour v1.09 (Spanish) + + + wpt_111a + World Poker Tour v1.11 + + + wpt_111af + World Poker Tour v1.11 (English,French) + + + wpt_111ai + World Poker Tour v1.11 (English,Italian) + + + wpt_111al + World Poker Tour v1.11 (English,Spanish) + + + wpt_111f + World Poker Tour v1.11 (French) + + + wpt_111g + World Poker Tour v1.11 (German) + + + wpt_111gf + World Poker Tour v1.11 (German,French) + + + wpt_111i + World Poker Tour v1.11 (Italian) + + + wpt_111l + World Poker Tour v1.11 (Spanish) + + + wpt_112a + World Poker Tour v1.12 + + + wpt_112af + World Poker Tour v1.12 (English,French) + + + wpt_112ai + World Poker Tour v1.12 (English,Italian) + + + wpt_112al + World Poker Tour v1.12 (English,Spanish) + + + wpt_112f + World Poker Tour v1.12 (French) + + + wpt_112g + World Poker Tour v1.12 (German) + + + wpt_112gf + World Poker Tour v1.12 (German,French) + + + wpt_112i + World Poker Tour v1.12 (Italian) + + + wpt_112l + World Poker Tour v1.12 (Spanish) + + + wpt_1400 + World Poker Tour v14.00 + + + wpt_1400af + World Poker Tour v14.00 (English,French) + + + wpt_1400ai + World Poker Tour v14.00 (English,Italian) + + + wpt_1400al + World Poker Tour v14.00 (English,Spanish) + + + wpt_1400f + World Poker Tour v14.00 (French) + + + wpt_1400g + World Poker Tour v14.00 (German) + + + wpt_1400gf + World Poker Tour v14.00 (German,French) + + + wpt_1400i + World Poker Tour v14.00 (Italian) + + + wpt_1400l + World Poker Tour v14.00 (Spanish) + + + wrally + World Rally (version 1.0, checksum 0E56) + + + wrally2 + World Rally 2: Twin Racing (mask ROM version) + + + wrally2a + World Rally 2: Twin Racing (EPROM version) + + + wrallya + World Rally (version 1.0, checksum 3873) + + + wrallyat + World Rally (US, version 1.0, checksum 2CC1) + + + wrallyata + World Rally (US, version 1.0, checksum 75A5) + + + wrallyb + World Rally (version 1.0, checksum 8AA2) + + + wrallyc + World Rally (version 1.0, checksum E586) + + + wrecking + Vs. Wrecking Crew + + + wrestwar + Wrestle War (set 3, World) (8751 317-0103) + + + wrestwar1 + Wrestle War (set 1, Japan) (FD1094 317-0090) + + + wrestwar1d + Wrestle War (set 1, Japan) (bootleg of FD1094 317-0090 set) + + + wrestwar2 + Wrestle War (set 2, World) (FD1094 317-0102) + + + wrestwar2d + Wrestle War (set 2, World) (bootleg of FD1094 317-0102 set) + + + wrldtour + Al's Garage Band Goes On A World Tour (R01c) + + + wrldtour2 + Al's Garage Band Goes On A World Tour (R02b) + + + wrldtour3 + Al's Garage Band Goes On A World Tour (R06a) + + + wrlok_l3 + Warlok (L-3) + + + wrofaero + War of Aero - Project MEIOU + + + wrungp + Wave Runner GP + + + wrungpo + Wave Runner GP (USA, Rev A) + + + ws + Pro Yakyuu World Stadium (Japan) + + + ws89 + Pro Yakyuu World Stadium '89 (Japan) + + + ws90 + Pro Yakyuu World Stadium '90 (Japan) + + + wsbbgd + World Series Baseball / Super Major League (GDS-0010) + + + wschamp + Wing Shooting Championship V2.00 + + + wschampa + Wing Shooting Championship V1.01 + + + wschampb + Wing Shooting Championship V1.00 + + + wseries + World Series: The Season (rev 1) + + + wseries0 + World Series: The Season (rev 0) + + + wsf + World Soccer Finals (rev 4) + + + wsf3 + World Soccer Finals (rev 3) + + + wsjr + Who Shot Johnny Rock? (v1.6) + + + wsjr_15 + Who Shot Johnny Rock? (v1.5) + + + wsports + Winter Sports + + + wstrike + Witch Strike (Export, 6T/12T ver 1.01A) + + + wstrikea + Witch Strike (Export, 6T/12T ver 1.01B) + + + wswe + World Soccer Winning Eleven Arcade Game Style + + + wswe2k3 + World Soccer Winning Eleven Arcade Game 2003 + + + wtchjack + Witch Jack (Export, 6T/12T ver 0.87-89) + + + wtchjacka + Witch Jack (Export, 6T/12T ver 0.87-88) + + + wtchjackb + Witch Jack (Export, 6T/12T ver 0.87) + + + wtchjackc + Witch Jack (Export, 6T/12T ver 0.70S) + + + wtchjackd + Witch Jack (Export, 6T/12T ver 0.70P) + + + wtchjacke + Witch Jack (Export, 6T/12T ver 0.65) + + + wtchjackf + Witch Jack (Export, 6T/12T ver 0.64) + + + wtchjackg + Witch Jack (Export, 6T/12T ver 0.62) + + + wtchjackh + Witch Jack (Export, 6T/12T ver 0.40T) + + + wtchjacki + Witch Jack (Export, 6T/12T ver 0.40) + + + wtchjackj + Witch Jackpot (Export, 6T/12T ver 0.25) + + + wtennis + World Tennis + + + wtepee + Wild Tepee - Power Pay (20230211, NSW/ACT) + + + wthing + Wild Thing (0101158V, NSW/ACT) + + + wthinga + Wild Thing (0201176V, NSW/ACT) + + + wtiger + White Tiger (4XF5139I08, US) + + + wtigerc + White Tiger Classic (0200954V, NSW/ACT) + + + wtigernz + White Tiger (3VXFC5342, New Zealand) + + + wtrnymph + Water-Nymph (Ver. 1.4) + + + wulybuly + Wully Bully + + + wupndown + Witch Up & Down (Export, 6T/12T ver 1.02) + + + wupndowna + Witch Up & Down (Export, 6T/12T ver 0.99, set 1) + + + wupndownb + Witch Up & Down (Export, 6T/12T ver 0.99, set 2) + + + wupndownc + Witch Up & Down (Export, 6T/12T ver 0.99, set 3) + + + wupndownd + Witch Up & Down (Export, 6T/12T ver 0.99T) + + + ww3 + WW III + + + ww_l2 + White Water (L-2) + + + ww_l3 + White Water (L-3) + + + ww_l4 + White Water (L-4) + + + ww_l5 + White Water (L-5) + + + ww_lh5 + White Water (LH-5) + + + ww_lh6 + White Water (LH-6) + + + ww_p6 + White Water (P-6) + + + ww_p8 + White Water (P-8) + + + wwallyj + Wally wo Sagase! (rev B, Japan, 2 players) (FD1094 317-0197B) + + + wwallyja + Wally wo Sagase! (rev A, Japan, 2 players) (FD1094 317-0197A) + + + wwallyja3p + Wally wo Sagase! (rev A, Japan, 3 players) (FD1094 317-0198A) + + + wwallyjad + Wally wo Sagase! (rev A, Japan) (bootleg of FD1094 317-0197A set) + + + wwallyjd + Wally wo Sagase! (rev B, Japan) (bootleg of FD1094 317-0197B set) + + + wwanpanm + Waku Waku Anpanman (Rev A) + + + wwanpanmo + Waku Waku Anpanman + + + wwaratah + Wild Waratah (10215911, NSW/ACT) + + + wwaratahsp + Wild Waratah (10215911, NSW/ACT, Show Program) + + + wways + Wild Ways (10106911, NSW/ACT) + + + wwaysa + Wild Ways (10130111, ASP) + + + wwdash + Wan Wan Dash (Japan, ver 1.01) + + + wwester1 + Wild Western (set 2) + + + wwestern + Wild Western (set 1) + + + wwestern1 + Wild Western (set 2) + + + wwfmanac + WWF: Wrestlemania (Acid Clown Edition 2020.12.02 SP2) + + + wwfmania + WWF: Wrestlemania (rev 1.30 08/10/95) + + + wwfmaniab + WWF: Wrestlemania (rev 1.20 08/02/95) + + + wwfmaniac + WWF: Wrestlemania (rev 1.1 07/11/95) + + + wwfmaniap + WWF: Wrestlemania (proto 2.01 06/07/95) + + + wwfr_103 + WWF Royal Rumble (USA 1.03, display A1.01) + + + wwfr_103f + WWF Royal Rumble (French 1.03, display F1.01) + + + wwfr_106 + WWF Royal Rumble (USA 1.06, display A1.02) + + + wwfroyal + WWF Royal Rumble + + + wwfsstar + WWF Superstars (Europe) + + + wwfsstarb + WWF Superstars (bootleg) + + + wwfsstarb2 + WWF Superstars (bootleg with 2xYM2203) + + + wwfsstarc + WWF Superstars (Canada) + + + wwfsstarj + WWF Superstars (Japan) + + + wwfsstaru4 + WWF Superstars (US revision 4) + + + wwfsstaru6 + WWF Superstars (US revision 6) + + + wwfsstaru7 + WWF Superstars (US revision 7) + + + wwfwfest + WWF WrestleFest (World) + + + wwfwfestj + WWF WrestleFest (Japan) + + + wwfwfestk + WWF WrestleFest (Korea) + + + wwfwfestu + WWF WrestleFest (US, rev 2) + + + wwfwfestu1 + WWF WrestleFest (US) + + + wwfwfestub + WWF WrestleFest (US bootleg) + + + wwfwfsta + WWF WrestleFest (US Tecmo) + + + wwfwfstj + WWF WrestleFest (Japan) + + + wwitch + Wicked Witch (Ver. AA.01.A) + + + wwjgtin + Wai Wai Jockey Gate-In! + + + wwmarine + Waku Waku Marine + + + wwmspot + Winner's Wheel - Magical Spot + + + wyvernf0 + Wyvern F-0 (Rev 1) + + + wyvernf0a + Wyvern F-0 + + + wyvernwg + Wyvern Wings (set 1) + + + wyvernwga + Wyvern Wings (set 2) + + + wzwaysll + Wizard Ways - Lady Luck (20139121, NSW/ACT) + + + x180 + unknown Yuvo Joy Stand game (set 1) + + + x180ii + unknown Yuvo Joy Stand game (set 2) + + + x2222 + X2222 (final debug?) + + + x2222o + X2222 (5-level prototype) + + + x5jokers + X Five Jokers (Version 1.12) + + + x80wc + X80 - War Command (ManilaMatic bootleg of Missile Command) + + + xday2 + X-Day 2 (Japan) + + + xeno + Xeno Crisis (Neo Geo MVS) + + + xenocrisis + Xeno Crisis (HB) + + + xenon + Xenon + + + xenonf + Xenon (French) + + + xenophob + Xenophobe + + + xevi3dg + Xevious 3D/G (World, XV32/VER.B) + + + xevi3dga + Xevious 3D/G (World, XV32/VER.A) + + + xevi3dgj + Xevious 3D/G (Japan, XV31/VER.A) + + + xevios + Xevios + + + xevious + Xevious (Namco) + + + xeviousa + Xevious (Atari, harder) + + + xeviousb + Xevious (Atari) + + + xeviousc + Xevious (Atari, Namco PCB) + + + xeviousng + Xevious - Neo Geo Conversion (HB) + + + xexex + Xexex (ver EAA) + + + xexexa + Xexex (ver AAA) + + + xexexj + Xexex (ver JAA) + + + xfiles + The X-Files + + + xfiles2 + X-Files (CPU 2.04, display A2.01) + + + xfiles20 + X-Files (CPU 2.00, display A2.00) + + + xfilesk + The X-Files (Censored, Korea) + + + xfilesp + X-Files (CPU 3.03, display A3.00) + + + xfilespf + X-Files (CPU 3.03, display F3.00, France) + + + xforce + X Force + + + xiaoao + Xiao Ao Jiang Hu (China, Ver. 1.00) + + + xiistag + XII Stag (V2.01J 2002/6/26 22:27) + + + xmcota + X-Men: Children of the Atom (Europe 950331) + + + xmcotaa + X-Men: Children of the Atom (Asia 950105) + + + xmcotaar1 + X-Men: Children of the Atom (Asia 941219) + + + xmcotaar2 + X-Men: Children of the Atom (Asia 941217) + + + xmcotab + X-Men: Children of the Atom (Brazil 950331) + + + xmcotabh + X-Men: Children of the Atom (Boss Hack) + + + xmcotah + X-Men: Children of the Atom (Hispanic 950331) + + + xmcotahr1 + X-Men: Children of the Atom (Hispanic 950105) + + + xmcotaj + X-Men: Children of the Atom (Japan 950105) + + + xmcotaj1 + X-Men: Children of the Atom (Japan 941222) + + + xmcotaj2 + X-Men: Children of the Atom (Japan 941219) + + + xmcotaj3 + X-Men: Children of the Atom (Japan 941217) + + + xmcotajr + X-Men: Children of the Atom (Japan 941208 rent version) + + + xmcotar1 + X-Men: Children of the Atom (Europe 950105) + + + xmcotar1d + X-Men: Children of the Atom (Europe 950105 Phoenix Edition) (bootleg) + + + xmcotau + X-Men: Children of the Atom (USA 950105) + + + xmen + X-Men (4 Players ver EBA) + + + xmen2p + X-Men (World 2 Players) + + + xmen2pa + X-Men (2 Players ver AAA) + + + xmen2pe + X-Men (2 Players ver EAA) + + + xmen2pj + X-Men (2 Players ver JAA) + + + xmen2pu + X-Men (2 Players ver UAB) + + + xmen6p + X-Men (6 Players ver ECB) + + + xmen6pu + X-Men (6 Players ver UCB) + + + xmena + X-Men (4 Players ver AEA) + + + xmenaa + X-Men (4 Players ver ADA) + + + xmenabl + X-Men (4 Players ver AEA, bootleg) + + + xmenj + X-Men (4 Players ver JBA) + + + xmenja + X-Men (4 Players ver JEA) + + + xmenu + X-Men (4 Players ver UBB) + + + xmenua + X-Men (4 Players ver UEB) + + + xmultipl + X Multiply (World, M81 hardware) + + + xmultiplm72 + X Multiply (Japan, M72 hardware) + + + xmvsf + X-Men Vs. Street Fighter (Europe 961004) + + + xmvsfa + X-Men Vs. Street Fighter (Asia 961023) + + + xmvsfar1 + X-Men Vs. Street Fighter (Asia 961004) + + + xmvsfar2 + X-Men Vs. Street Fighter (Asia 960919) + + + xmvsfar3 + X-Men Vs. Street Fighter (Asia 960910) + + + xmvsfb + X-Men Vs. Street Fighter (Brazil 961023) + + + xmvsfcph + X-Men Vs. Street Fighter (Coop, Hack) + + + xmvsfem + X-Men Vs. Street Fighter (Easy Moves, Hack) + + + xmvsfh + X-Men Vs. Street Fighter (Hispanic 961004) + + + xmvsfj + X-Men Vs. Street Fighter (Japan 970113) + + + xmvsfjr1 + X-Men Vs. Street Fighter (Japan 961023) + + + xmvsfjr2 + X-Men Vs. Street Fighter (Japan 961004) + + + xmvsfjr3 + X-Men Vs. Street Fighter (Japan 960910) + + + xmvsfjr4 + X-Men Vs. Street Fighter (Japan 960909) + + + xmvsfr1 + X-Men Vs. Street Fighter (Europe 960910) + + + xmvsfu + X-Men Vs. Street Fighter (USA 961023) + + + xmvsfu1d + X-Men Vs. Street Fighter (USA 961004 Phoenix Edition) (bootleg) + + + xmvsfur1 + X-Men Vs. Street Fighter (USA 961004) + + + xmvsfur2 + X-Men Vs. Street Fighter (USA 960910) + + + xorworld + Xor World (prototype) + + + xplan + X-Plan (Ver. 101) + + + xrally + Xtreme Rally / Off Beat Racer! + + + xreel + X-Reel + + + xsandos + X's & O's + + + xsedae + X Se Dae Quiz (Korea) + + + xsleena + Xain'd Sleena (World) + + + xsleenab + Xain'd Sleena (bootleg, set 1) + + + xsleenaba + Xain'd Sleena (bootleg, bugfixed) + + + xsleenabb + Xain'd Sleena (bootleg, set 2) + + + xsleenaj + Xain'd Sleena (Japan) + + + xtheball + X the Ball + + + xtom3d + X Tom 3D + + + xtrain + X-Train (Ver. 1.3) + + + xtrial + Xtrial Racing (ver JAB) + + + xtrmhnt2 + Extreme Hunting 2 + + + xtrmhunt + Extreme Hunting + + + xxmissio + XX Mission + + + xybots + Xybots (rev 2) + + + xybots0 + Xybots (rev 0) + + + xybots1 + Xybots (rev 1) + + + xybotsf + Xybots (French, rev 3) + + + xybotsg + Xybots (German, rev 3) + + + xyddz + Xiaoyao Dou Dizhu + + + xymg + Xingyun Man Guan (China, V651C) + + + xyonix + Xyonix + + + yachtmn + Yachtsman + + + yakyuken + The Yakyuken (bootleg) + + + yamagchi + Go Go Mr. Yamaguchi / Yuke Yuke Yamaguchi-kun + + + yamato + Yamato (set 1) + + + yamato2 + Yamato (World?) + + + yamatoa + Yamato (set 2) + + + yamatou + Yamato (US) + + + yamyam + Yam! Yam!? + + + yamyamk + Yam! Yam! (Korea) + + + yanchamr + Kaiketsu Yanchamaru (Japan) + + + yankeedo + Yankee DO! + + + yard + 10 Yard Fight (Japan) + + + yarunara + Mahjong Yarunara (Japan) + + + yattrmnp + Yatterman Plus (J 981006 V1.000) + + + yellowcbb + Yellow Cab (bootleg) + + + yellowcbj + Yellow Cab (Japan) + + + yesnoj + Yes/No Sinri Tokimeki Chart + + + yiear + Yie Ar Kung-Fu (version I) + + + yiear2 + Yie Ar Kung-Fu (version G) + + + yieartf + Yie Ar Kung-Fu (bootleg GX361 conversion) + + + yizhix + Yizhi Xiangqi + + + ymcapsul + Yu-Gi-Oh Monster Capsule + + + yokaidko + Yokai Douchuuki (Japan old version) + + + yorijori + Yori Jori Kuk Kuk + + + yosakdoa + Yosaku To Donbei (set 2) + + + yosakdon + Yosaku to Donbei (set 1) + + + yosakdona + Yosaku to Donbei (set 2) + + + yosimotm + Mahjong Yoshimoto Gekijou (Japan, medal) + + + yosimoto + Mahjong Yoshimoto Gekijou (Japan) + + + youjyudn + Youjyuden (Japan) + + + youkai + Youkai VS Uchuujin + + + youkaidk + Yokai Douchuuki (Japan new version) + + + youkaidk1 + Youkai Douchuuki (Japan, old version (YD1)) + + + youkaidk2 + Youkai Douchuuki (Japan, new version (YD2, Rev B)) + + + youma + Youma Ninpou Chou (Japan) + + + youma2 + Youma Ninpou Chou (Japan, alt) + + + youmab + Youma Ninpou Chou (Game Electronics bootleg, set 1) + + + youmab2 + Youma Ninpou Chou (Game Electronics bootleg, set 2) + + + yoyoshkn + Yo-Yo Shuriken (HB) + + + yoyospel + YoYo Spell (prototype) + + + yujan + Yu-Jan + + + yujogs + Yujo Gattai Shishigami-o + + + yuka + Yu-Ka + + + yukiwo + Yukiwo (World, prototype) + + + yukon + Yukon (version 2.0) + + + yukon1 + Yukon (version 1.0) + + + yukongl5 + Yukon Gold (03J00191, NSW/ACT) + + + yukongld + Yukon Gold (Russian) + + + yumefuda + Yumefuda + + + yutnori + Puzzle Yutnori (Korea) + + + yuyugogo + Yuuyu no Quiz de GO!GO! (Japan) + + + yuyuhaku + The Battle of Yu Yu Hakusho: Shitou! Ankoku Bujutsukai! + + + yyhm + Yuanyang Hudie Meng (Version 8.8A 2005-09-25) + + + zankor + Zankor (TMS5200 Italian speech) + + + zankor2i + Zankor (TMS5220 Italian speech) + + + zaryavos + Zarya Vostoka + + + zarza + Zarza (set 1) + + + zarza1 + Zarza (set 2) + + + zarzon + Zarzon + + + zaviga + Zaviga + + + zavigaj + Zaviga (Japan) + + + zaxxon + Zaxxon (set 1, rev D) + + + zaxxon2 + Zaxxon (set 2, unknown rev) + + + zaxxon3 + Zaxxon (set 3, unknown rev) + + + zaxxonb + Jackson + + + zaxxonj + Zaxxon (Japan) + + + zdrum + Zooty Drum + + + zedblade + Zed Blade / Operation Ragnarok + + + zekepeak + Zeke's Peak + + + zektor + Zektor (revision B) + + + zelos + Zelos (Japan, main unit) + + + zelost + Zelos (Japan, terminal) + + + zenponta + Zenigata Ponta (Japan, ver 1.02) + + + zephy + Zephy (set 1) + + + zephya + Zephy (set 2) + + + zero + Zero (bootleg of Defender, set 1) + + + zero2 + Zero (bootleg of Defender, set 2) + + + zerofxz + Oriental Legend ZERO (Hack) + + + zerogu2 + Zero Gunner 2 + + + zerogun + Zero Gunner (Export, Model 2B) + + + zeroguna + Zero Gunner (Export, Model 2A) + + + zerogunaj + Zero Gunner (Japan, Model 2A) + + + zerogunj + Zero Gunner (Japan, Model 2B) + + + zerohour + Zero Hour (set 1) + + + zerohoura + Zero Hour (set 2) + + + zerohouri + Zero Hour (bootleg) + + + zeropnt + Zero Point (set 1) + + + zeropnt2 + Zero Point 2 + + + zeropnta + Zero Point (set 2) + + + zeropntj + Zero Point (Japan) + + + zeroteam + Zero Team USA (US) + + + zeroteama + Zero Team (Japan?, earlier?, set 1) + + + zeroteamb + Zero Team (Japan?, later batteryless) + + + zeroteamc + Zero Team (Taiwan) + + + zeroteamd + Zero Team (Korea) + + + zeroteame + Zero Team (Japan?, earlier?, set 2) + + + zeroteams + Zero Team Selection + + + zeroteamsr + Zero Team Suicide Revival Kit + + + zerotime + Zero Time (Petaco S.A.) + + + zerotimea + Zero Time (Spanish bootleg, set 1) + + + zerotimeb + Zero Time (Spanish bootleg, set 2) + + + zerotimed + Zero Time (Datamat) + + + zerotimemc + Zero Time (Marti Colls) + + + zerotm2k + Zero Team 2000 + + + zerotrgt + Zero Target (World, CW) + + + zerotrgta + Zero Target (World, CT) + + + zerowing + Zero Wing (2P set) + + + zerowing1 + Zero Wing (1P set) + + + zerowingw + Zero Wing (2P set, Williams license) + + + zerozone + Zero Zone + + + zgundm + Mobile Suit Z-Gundam: A.E.U.G. vs Titans (ZGA1 Ver. A) + + + zgundmdx + Mobile Suit Z-Gundam: A.E.U.G. vs Titans DX (ZDX1 Ver. A) + + + zhongguo + Zhongguo Chu Da D (V102C) + + + zigzag + Zig Zag (Galaxian hardware, set 1) + + + zigzag2 + Zig Zag (Galaxian hardware, set 2) + + + zigzagb + Zig Zag (bootleg Dig Dug conversion on Galaxian hardware, set 1) + + + zigzagb2 + Zig Zag (bootleg Dig Dug conversion on Galaxian hardware, set 2) + + + zingzip + Zing Zing Zip (World) / Zhen Zhen Ji Pao (China?) + + + zingzipbl + Zing Zing Zip (bootleg) + + + zintrckb + Zintrick / Oshidashi Zentrix (bootleg of CD version) + + + zintrkcd + Zintrick / Oshidashi Zentrix (Neo CD conversion) + + + zipzap + Zip & Zap (Explicit) + + + zipzapa + Zip & Zap (Less Explicit) + + + zira + Zira + + + znpwfv + Zen Nippon Pro-Wres Featuring Virtua (J 971123 V1.000) + + + znpwfvt + All Japan Pro-Wrestling Featuring Virtua (T 971123 V1.000) + + + zoar + Zoar + + + zodiack + Zodiack + + + zoidiexp + Zoids Infinity EX Plus (ver. 2.10) + + + zoids + Zoids + + + zoidsinf + Zoids Infinity + + + zokumahj + Zoku Mahjong Housoukyoku (Japan) + + + zokuoten + Zoku Otenamihaiken (V2.05J 2003/05/12 18:00) + + + zokuotena + Zoku Otenamihaiken (V2.03J 2001/02/16 16:00) + + + zolapac + Super Zola Pac Gal + + + zombraid + Zombie Raid (9/28/95, US) + + + zombraidp + Zombie Raid (9/28/95, US, prototype PCB) + + + zombraidpj + Zombie Raid (9/28/95, Japan, prototype PCB) + + + zombrvn + Zombie Revenge (Rev A) + + + zombrvne + Zombie Revenge (Export) + + + zombrvno + Zombie Revenge + + + zoo + Zoo (Ver. ZO.02.D, Aug 27 2004) + + + zoofari + Zoofari + + + zookeep + Zoo Keeper (set 1) + + + zookeep2 + Zoo Keeper (set 2) + + + zookeep3 + Zoo Keeper (set 3) + + + zookeepbl + Zoo Keeper (bootleg) + + + zoom909 + Zoom 909 + + + zoomania + Zoomania (Version 10.04, set 1) + + + zoomaniaa + Zoomania (Version 10.04, set 2) + + + zooo + Zooo (V2.01JA 2004/04/13 12:00) + + + zorroa6 + Zorro (30130611, NSW/ACT) + + + zorroa6a + Zorro (20167511, ASP) + + + zorroa6u + Zorro (0151372, US) + + + zortonbr + Zorton Brothers / Los Justicieros (v1.01) + + + zortonbr_100 + Zorton Brothers / Los Justicieros (v1.00) + + + zteam1v4 + Zero Team USA (1v4, Hack) + + + zteamdr + Zero Team USA (Providence, Hack) + + + zteamdw + Zero Team USA (Warriors, Hack) + + + zteamem + Zero Team USA (Nightmare, Hack) + + + zteaml6 + Zero Team USA (Camper, Hack) + + + zteammm + Zero Team USA (Incubus, Hack) + + + zteampls + Zero Team USA (Plus, Hack) + + + zteamwh + Zero Team USA (Question Mark, Hack) + + + zteamwxp + Zero Team USA (Infinite Cannon, Hack) + + + zteamym + Zero Team USA (Devil, Hack) + + + zteamymp + Zero Team USA (Devil Plus, Hack) + + + zteamys + Zero Team USA (God, Hack) + + + zteamzs + Zero Team USA (God of War, Hack) + + + zunkyou + Zunzunkyou no Yabou (Japan) + + + zunou + Touch De Zunou (Japan, Rev A) + + + zupapa + Zupapa! + + + zupapah8 + Zupapa (Italian gambling game) + + + zwackery + Zwackery + + + zzblock + Zun Zun Block + + + zzyzzyx2 + Zzyzzyxx (set 2) + + + zzyzzyxx + Zzyzzyxx (set 1) + + + zzyzzyxx2 + Zzyzzyxx (set 2) + diff --git a/resources/mameres.py b/resources/mameres.py new file mode 100755 index 0000000000..927bdb5444 --- /dev/null +++ b/resources/mameres.py @@ -0,0 +1,104 @@ +#!/usr/bin/env python3 +""" +Utility to parse a MAME compatible DAT file and produce the EmulationStation's resource files: +* mamebioses.xml - list of BIOS romsets +* mamedevices.xml - list of MAME device-type romsets +* mamenames.xml - list of MAME compatible romsets, with their description + +Any parameter given is considered a DAT file and parsed. +The order of the DAT file is significant for the 'mamenames.xml' output, since the first description of a romset takes precendence. + +Format notes: + - The files must be in XML format, older DAT format files are not supported + - (upstream) MAME uses 'machine' as main element for a romset, with 'isbios' and 'isdevice' attributes used to mark it as a BIOS/device + - MAME2003 and FBNeo don't have the concept of 'devices', they use 'isbios' or 'runnable=no' attributes to mark a BIOS romset + +""" +from xml.sax.saxutils import escape +from datetime import datetime,timezone +import xml.etree.ElementTree as et +import sys +import os + +games = {} +bioses = [] +devices = [] + +files = [] + +if len(sys.argv) < 2: + print(f"Dat files missing, please add some.\nUsage: {sys.argv[0]} .. ", file=sys.stderr) + sys.exit(1) + +for dat in sys.argv[1:]: + print(f"Reading file '{dat}'") + if not os.path.isfile(dat): + print(f"File {dat} not found, skipping", file=sys.stderr) + continue + + try: + xml = et.parse(dat) + files.append(os.path.basename(dat)) + except Exception: + print(f"File {dat} cannot be parsed as XML!", file=sys.stderr) + continue + + """ + FBNeo and older MAME dat files use 'game' as main element + """ + for game in xml.findall('.//game'): + if ('runnable' in game.attrib and game.attrib['runnable'] == "no") or \ + ('isbios' in game.attrib and game.attrib['isbios'] == "yes"): + bioses.append(game.attrib['name']) + continue + + name = game.attrib['name'] + desc = escape(game.find('description').text) + if name not in games: + games[name] = desc + + """ + Mame DAT file use 'machine' as main element + """ + for game in xml.findall('.//machine'): + if ('isbios' in game.attrib and game.attrib['isbios'] == "yes"): + bioses.append(game.attrib['name']) + continue + + if ('isdevice' in game.attrib and game.attrib['isdevice'] == "yes"): + # Don't add the device unless it has at least one ROM file + if len(game.findall('./rom')) > 0: + devices.append(game.attrib['name']) + continue + + name = game.attrib['name'] + desc = escape(game.find('description').text) + if name not in games: + games[name] = desc + +print(f"Found {len(games)} games, {len(sorted(set(bioses)))} BIOSes and {len(sorted(set(devices)))} devices") +ident_info = f"" + +if len(games) > 0: + with open('mamenames.xml', 'w') as f: + print(ident_info,file=f) + for game in sorted(games): + print(f"\n\t{game}\n\t{games[game]}\n", file=f) +else: + print("No games found, skipped writing 'mamenames.xml'", file=sys.stderr) + +if len(bioses) > 0: + with open('mamebioses.xml', 'w') as f: + print(ident_info,file=f) + for dev in sorted(set(bioses)): + print(f"{dev}", file=f) +else: + print("No BIOSes found, skipped writing 'mamebioses.xml'", file=sys.stderr) + +if len(devices) > 0: + with open('mamedevices.xml', 'w') as f: + print(ident_info,file=f) + for bios in sorted(set(devices)): + print(f"{bios}", file=f) +else: + print("No devices found, skipped writing 'mamedevices.xml'", file=sys.stderr) diff --git a/resources/off.svg b/resources/off.svg new file mode 100644 index 0000000000..5dacfb38a4 --- /dev/null +++ b/resources/off.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/resources/on.svg b/resources/on.svg new file mode 100644 index 0000000000..ab4d5d9d5a --- /dev/null +++ b/resources/on.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/data/resources/opensans_hebrew_condensed_light.ttf b/resources/opensans_hebrew_condensed_light.ttf similarity index 100% rename from data/resources/opensans_hebrew_condensed_light.ttf rename to resources/opensans_hebrew_condensed_light.ttf diff --git a/data/resources/opensans_hebrew_condensed_regular.ttf b/resources/opensans_hebrew_condensed_regular.ttf similarity index 100% rename from data/resources/opensans_hebrew_condensed_regular.ttf rename to resources/opensans_hebrew_condensed_regular.ttf diff --git a/resources/option_arrow.svg b/resources/option_arrow.svg new file mode 100644 index 0000000000..3027a4bc9b --- /dev/null +++ b/resources/option_arrow.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/resources/scroll_gradient.png b/resources/scroll_gradient.png similarity index 100% rename from data/resources/scroll_gradient.png rename to resources/scroll_gradient.png diff --git a/resources/slider_knob.svg b/resources/slider_knob.svg new file mode 100644 index 0000000000..6600ecb6c3 --- /dev/null +++ b/resources/slider_knob.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/splash.svg b/resources/splash.svg new file mode 100644 index 0000000000..b15cdec4e2 --- /dev/null +++ b/resources/splash.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/star_filled.svg b/resources/star_filled.svg new file mode 100644 index 0000000000..0be43f7911 --- /dev/null +++ b/resources/star_filled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/resources/star_unfilled.svg b/resources/star_unfilled.svg new file mode 100644 index 0000000000..9d3a2f7370 --- /dev/null +++ b/resources/star_unfilled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/data/resources/textinput_ninepatch.png b/resources/textinput_ninepatch.png similarity index 100% rename from data/resources/textinput_ninepatch.png rename to resources/textinput_ninepatch.png diff --git a/data/resources/textinput_ninepatch_active.png b/resources/textinput_ninepatch_active.png similarity index 100% rename from data/resources/textinput_ninepatch_active.png rename to resources/textinput_ninepatch_active.png diff --git a/data/resources/window_icon_256.png b/resources/window_icon_256.png similarity index 100% rename from data/resources/window_icon_256.png rename to resources/window_icon_256.png