<!-- TITLE: Sparkade --> <!-- SUBTITLE: SparkCC Video Games --> # Cocktail Cabinet The Cocktail Cabinet is a [Space Invaders II](https://en.wikipedia.org/wiki/Space_Invaders_Part_II) cabinet that was rescued from a roadside rubbish pickup. The original internals were removed and replaced with a [Raspberry Pi 3](https://en.wikipedia.org/wiki/Raspberry_Pi#Generations_of_released_models) running [RetroPie](https://retropie.org.uk/). ## Button Mappings P1 & P2 controllers are laid out as follows: `Y X L` `B A R` `Coin`: __Select__ ## Navigation * Return to menu: `P1` + `P2` + `Coin` * Retroarch config: `Select` + `X` ## Configuration ### Overscan The LCD monitor in the cocktail cabinet is larger than the hole cut in the cabinet top. The decision was made to preserve the historical integrity of the top by _not_ significantly modifying it. To accommodate this configuration overscan was tweaked such that the underlying Operating System only uses the portion of the screen which is visible. Information on tweaking overscan for Retropie is [here](https://github.com/RetroPie/RetroPie-Setup/wiki/Overscan) and for the underlying Raspbian OS is [here](https://www.raspberrypi.org/documentation/configuration/config-txt/video.md). ### Mirroring The cocktail cabinet screen is oriented in _portrait_ mode with P1 and P2 at opposite ends of the screen. Some games support simultaneous multiplayer in this configuration. However most simultaneous multiplayer games are designed for _landscape_ mode with P1 and P2 at the same end of the screen. For these games we use the [`cocktail-cabinet` shader](https://github.com/libretro/glsl-shaders/blob/master/misc/cocktail-cabinet.glsl) to mirror the screen so that each player gets their own _landscape_ screen. Guides which were followed to set this up are [here](https://www.reddit.com/r/RetroPie/comments/97x016/tutorial_split_screen_cocktail_mode_on_retropie/) and [here](https://www.reddit.com/r/RetroPie/comments/3uqjhu/guide_mirrored_cocktail_shader_with_parameter/). ### RetroArch [RetroArch](https://www.retroarch.com/) is the interface which presents the various underlying emulators used by the cocktail cabinet (primarily [MAME](https://www.mamedev.org/). #### Core Config RetroArch uses a standard _"core"_ config for all games: * Ensure that _Quick Menu_ -> _Overrides_ -> _Save Configuration on Exit_ is always set to `OFF`. Otherwise any changes made will be automatically applied to all games. * Save a core configuration change via _Quick Menu_ -> _Overrides_ -> _Save Core Overrides_. **Only do this if you are 100% certain of what you are doing**. #### Game-Specific Config RetroArch allows for a _"game"_ config to be defined which overrides the _"core"_ config _for that game only_: * To save shader config: _Quick Menu_ -> _Shaders_ -> _Save Game Preset_. * To save other config: _Quick Menu_ -> _Overrides_ -> _Save Game Overrides_.